Merge pull request #605 from NieDzejkob/invalid-labels

Don't consider difference of invalid labels constant
This commit is contained in:
Eldred Habert
2020-10-13 10:42:05 +02:00
committed by GitHub
6 changed files with 12 additions and 19 deletions

View File

@@ -125,7 +125,6 @@ struct Symbol *sym_FindSymbol(char const *symName);
struct Symbol *sym_AddMacro(char const *symName, int32_t defLineNo, char *body, size_t size); 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_Ref(char const *symName);
struct Symbol *sym_AddString(char const *symName, char const *value); 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_Purge(char const *symName);
void sym_Init(void); void sym_Init(void);

View File

@@ -309,7 +309,9 @@ bool rpn_IsDiffConstant(struct Expression const *src, struct Symbol const *sym)
if (!sym1 || !sym || sym1->type != SYM_LABEL || sym->type != SYM_LABEL) if (!sym1 || !sym || sym1->type != SYM_LABEL || sym->type != SYM_LABEL)
return false; 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, static bool isDiffConstant(struct Expression const *src1,

View File

@@ -322,23 +322,6 @@ uint32_t sym_GetConstantValue(char const *s)
return 0; 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) char const *sym_GetCurrentSymbolScope(void)
{ {
return labelScope; return labelScope;

View File

@@ -0,0 +1,3 @@
lab:
PRINTV lab-lab
PRINTT "\n"

View File

@@ -0,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)!

View File

@@ -0,0 +1 @@
$0