mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-22 19:22:05 +00:00
Allow references to be overridden by constant symbols
RGBLINK is capable of handling it now. Though it'd be ideal for RGBASM to directly catch it. Fixes #496.
This commit is contained in:
@@ -293,23 +293,17 @@ struct sSymbol *sym_FindMacro(char const *s)
|
|||||||
* hasn't already been defined or referenced in a context that would
|
* hasn't already been defined or referenced in a context that would
|
||||||
* require that it be relocatable
|
* require that it be relocatable
|
||||||
*/
|
*/
|
||||||
static struct sSymbol *createNonrelocSymbol(char const *tzSym)
|
static struct sSymbol *createNonrelocSymbol(char const *symbolName)
|
||||||
{
|
{
|
||||||
struct sSymbol *nsym = findsymbol(tzSym, NULL);
|
struct sSymbol *symbol = findsymbol(symbolName, NULL);
|
||||||
|
|
||||||
if (nsym != NULL) {
|
if (!symbol)
|
||||||
if (sym_IsDefined(nsym)) {
|
symbol = createsymbol(symbolName);
|
||||||
yyerror("'%s' already defined at %s(%u)",
|
else if (sym_IsDefined(symbol))
|
||||||
tzSym, nsym->tzFileName, nsym->nFileLine);
|
yyerror("'%s' already defined at %s(%u)", symbolName,
|
||||||
} else {
|
symbol->tzFileName, symbol->nFileLine);
|
||||||
yyerror("'%s' referenced as label at %s(%u)",
|
|
||||||
tzSym, nsym->tzFileName, nsym->nFileLine);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
nsym = createsymbol(tzSym);
|
|
||||||
}
|
|
||||||
|
|
||||||
return nsym;
|
return symbol;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
4
test/asm/ref-override.asm
Normal file
4
test/asm/ref-override.asm
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
SECTION "Test", ROM0[0]
|
||||||
|
db CONSTANT
|
||||||
|
|
||||||
|
CONSTANT equ 42
|
||||||
0
test/asm/ref-override.err
Normal file
0
test/asm/ref-override.err
Normal file
0
test/asm/ref-override.out
Normal file
0
test/asm/ref-override.out
Normal file
1
test/asm/ref-override.out.bin
Normal file
1
test/asm/ref-override.out.bin
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*
|
||||||
Reference in New Issue
Block a user