mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Allow purging exported symbols
This commit is contained in:
@@ -101,7 +101,7 @@ uint32_t sym_GetConstantValue(char const *s);
|
|||||||
struct sSymbol *sym_FindSymbol(char const *tzName);
|
struct sSymbol *sym_FindSymbol(char const *tzName);
|
||||||
char *sym_GetStringValue(struct sSymbol const *sym);
|
char *sym_GetStringValue(struct sSymbol const *sym);
|
||||||
struct sSymbol *sym_AddMacro(char const *tzSym, int32_t nDefLineNo);
|
struct sSymbol *sym_AddMacro(char const *tzSym, int32_t nDefLineNo);
|
||||||
void sym_Ref(char const *tzSym);
|
struct sSymbol *sym_Ref(char const *tzSym);
|
||||||
struct sSymbol *sym_AddString(char const *tzSym, char const *tzValue);
|
struct sSymbol *sym_AddString(char const *tzSym, char const *tzValue);
|
||||||
uint32_t sym_GetDefinedValue(char const *s);
|
uint32_t sym_GetDefinedValue(char const *s);
|
||||||
void sym_Purge(char const *tzName);
|
void sym_Purge(char const *tzName);
|
||||||
|
|||||||
@@ -500,9 +500,13 @@ struct sSymbol *sym_AddReloc(char const *tzSym)
|
|||||||
*/
|
*/
|
||||||
void sym_Export(char const *tzSym)
|
void sym_Export(char const *tzSym)
|
||||||
{
|
{
|
||||||
sym_Ref(tzSym);
|
|
||||||
struct sSymbol *nsym = sym_FindSymbol(tzSym);
|
struct sSymbol *nsym = sym_FindSymbol(tzSym);
|
||||||
|
|
||||||
|
/* If the symbol doesn't exist, create a ref that can be purged */
|
||||||
|
if (!nsym) {
|
||||||
|
nsym = sym_Ref(tzSym);
|
||||||
|
nsym->isReferenced = false;
|
||||||
|
}
|
||||||
nsym->isExported = true;
|
nsym->isExported = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -531,7 +535,7 @@ struct sSymbol *sym_AddMacro(char const *tzSym, int32_t nDefLineNo)
|
|||||||
* Flag that a symbol is referenced in an RPN expression
|
* Flag that a symbol is referenced in an RPN expression
|
||||||
* and create it if it doesn't exist yet
|
* and create it if it doesn't exist yet
|
||||||
*/
|
*/
|
||||||
void sym_Ref(char const *tzSym)
|
struct sSymbol *sym_Ref(char const *tzSym)
|
||||||
{
|
{
|
||||||
struct sSymbol *nsym = sym_FindSymbol(tzSym);
|
struct sSymbol *nsym = sym_FindSymbol(tzSym);
|
||||||
|
|
||||||
@@ -551,6 +555,8 @@ void sym_Ref(char const *tzSym)
|
|||||||
nsym->type = SYM_REF;
|
nsym->type = SYM_REF;
|
||||||
}
|
}
|
||||||
nsym->isReferenced = true;
|
nsym->isReferenced = true;
|
||||||
|
|
||||||
|
return nsym;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user