ref: 73396166aaca4542fc1708d6febd0a959e05df88
parent: e4f5df1306c4eb09de57728f9756b951b41565aa
parent: 4c5d5c708591fa878fcba297172da2d51579f908
author: Eldred Habert <eldredhabert0@gmail.com>
date: Tue Oct 13 06:42:05 EDT 2020
Merge pull request #605 from NieDzejkob/invalid-labels Don't consider difference of invalid labels constant
--- a/include/asm/symbol.h
+++ b/include/asm/symbol.h
@@ -125,7 +125,6 @@
struct Symbol *sym_AddMacro(char const *symName, int32_t defLineNo, char *body, size_t size);
struct Symbol *sym_Ref(char const *symName);
struct Symbol *sym_AddString(char const *symName, char const *value);
-uint32_t sym_GetDefinedValue(char const *s);
void sym_Purge(char const *symName);
void sym_Init(void);
--- a/src/asm/rpn.c
+++ b/src/asm/rpn.c
@@ -309,7 +309,9 @@
if (!sym1 || !sym || sym1->type != SYM_LABEL || sym->type != SYM_LABEL)
return false;
- return sym_GetSection(sym1) == sym_GetSection(sym);
+ struct Section const *section1 = sym_GetSection(sym1);
+ struct Section const *section2 = sym_GetSection(sym);
+ return section1 && (section1 == section2);
}
static bool isDiffConstant(struct Expression const *src1,
--- a/src/asm/symbol.c
+++ b/src/asm/symbol.c
@@ -322,23 +322,6 @@
return 0;
}
-/*
- * Return a defined symbols value... aborts if not defined yet
- */
-uint32_t sym_GetDefinedValue(char const *s)
-{
- struct Symbol const *sym = sym_FindSymbol(s);
-
- if (sym == NULL || !sym_IsDefined(sym))
- error("'%s' not defined\n", s);
- else if (!sym_IsNumeric(sym))
- error("'%s' is a macro or string symbol\n", s);
- else
- return sym_GetValue(sym);
-
- return 0;
-}
-
char const *sym_GetCurrentSymbolScope(void)
{
return labelScope;
--- /dev/null
+++ b/test/asm/use-label-outside-section.asm
@@ -1,0 +1,3 @@
+lab:
+ PRINTV lab-lab
+ PRINTT "\n"
--- /dev/null
+++ b/test/asm/use-label-outside-section.err
@@ -1,0 +1,5 @@
+ERROR: use-label-outside-section.asm(1):
+ Label "lab" created outside of a SECTION
+ERROR: use-label-outside-section.asm(2):
+ Expected constant expression: 'lab' is not constant at assembly time
+error: Assembly aborted (2 errors)!
--- /dev/null
+++ b/test/asm/use-label-outside-section.out
@@ -1,0 +1,1 @@
+$0