diff --git a/include/asm/rpn.h b/include/asm/rpn.h index 7d8f6d74..9025c305 100644 --- a/include/asm/rpn.h +++ b/include/asm/rpn.h @@ -42,8 +42,8 @@ void rpn_HIGH(struct Expression *expr, const struct Expression *src); void rpn_LOW(struct Expression *expr, const struct Expression *src); void rpn_UNNEG(struct Expression *expr, const struct Expression *src); void rpn_UNNOT(struct Expression *expr, const struct Expression *src); -void rpn_BankSymbol(struct Expression *expr, char *tzSym); -void rpn_BankSection(struct Expression *expr, char *tzSectionName); +void rpn_BankSymbol(struct Expression *expr, char const *tzSym); +void rpn_BankSection(struct Expression *expr, char const *tzSectionName); void rpn_BankSelf(struct Expression *expr); void rpn_Init(struct Expression *expr); void rpn_Free(struct Expression *expr); diff --git a/include/asm/symbol.h b/include/asm/symbol.h index 259cfbbd..366cf58a 100644 --- a/include/asm/symbol.h +++ b/include/asm/symbol.h @@ -59,10 +59,14 @@ static inline bool sym_IsNumeric(struct sSymbol const *sym) || sym->type == SYM_SET; } +static inline bool sym_IsLabel(struct sSymbol const *sym) +{ + return sym->type == SYM_LABEL || sym->type == SYM_REF; +} + static inline bool sym_IsLocal(struct sSymbol const *sym) { - return (sym->type == SYM_LABEL || sym->type == SYM_REF) - && strchr(sym->tzName, '.'); + return sym_IsLabel(sym) && strchr(sym->tzName, '.'); } static inline bool sym_IsExported(struct sSymbol const *sym) diff --git a/src/asm/rpn.c b/src/asm/rpn.c index d3bf665a..24e549c3 100644 --- a/src/asm/rpn.c +++ b/src/asm/rpn.c @@ -165,7 +165,7 @@ void rpn_BankSelf(struct Expression *expr) } } -void rpn_BankSymbol(struct Expression *expr, char *tzSym) +void rpn_BankSymbol(struct Expression *expr, char const *tzSym) { struct sSymbol const *sym = sym_FindSymbol(tzSym); @@ -176,7 +176,7 @@ void rpn_BankSymbol(struct Expression *expr, char *tzSym) } rpn_Init(expr); - if (sym && sym_IsConstant(sym)) { + if (sym && !sym_IsLabel(sym)) { yyerror("BANK argument must be a relocatable identifier"); } else { sym_Ref(tzSym); @@ -198,7 +198,7 @@ void rpn_BankSymbol(struct Expression *expr, char *tzSym) } } -void rpn_BankSection(struct Expression *expr, char *tzSectionName) +void rpn_BankSection(struct Expression *expr, char const *tzSectionName) { rpn_Init(expr);