From a6d3df7ac9ec97bd53816c6f61e8b006542e9cf8 Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 3 Mar 2021 10:59:51 +0100 Subject: [PATCH] Put all local symbols in object/sym/map files (#774) * Store all the local symbols in object files, not only the ones that need linker patches. This generates better map/sym files, and thus allows for better debugging as well. * Add comments explaining the ->src and the (void)arg; --- src/asm/output.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/asm/output.c b/src/asm/output.c index 89cef353..3ba24671 100644 --- a/src/asm/output.c +++ b/src/asm/output.c @@ -469,10 +469,12 @@ static void writeFileStackNode(struct FileStackNode const *node, FILE *f) } } -static void registerExportedSymbol(struct Symbol *symbol, void *arg) +static void registerUnregisteredSymbol(struct Symbol *symbol, void *arg) { - (void)arg; - if (sym_IsExported(symbol) && symbol->ID == -1) { + (void)arg; // sym_ForEach requires a void* parameter, but we are not using it. + + // Check for symbol->src, to skip any auto generated symbol from rgbasm + if (symbol->src && symbol->ID == -1) { registerSymbol(symbol); } } @@ -491,8 +493,8 @@ void out_WriteObject(void) if (!f) err(1, "Couldn't write file '%s'", tzObjectname); - /* Also write exported symbols that weren't written above */ - sym_ForEach(registerExportedSymbol, NULL); + /* Also write symbols that weren't written above */ + sym_ForEach(registerUnregisteredSymbol, NULL); fprintf(f, RGBDS_OBJECT_VERSION_STRING, RGBDS_OBJECT_VERSION_NUMBER); putlong(RGBDS_OBJECT_REV, f);