ref: 6579120d9efb986ef38eee1c85539618aa09d00a
parent: 84cd9f2db9bea744d99b2afc2c89d480732c3e23
author: ISSOtm <[email protected]>
date: Fri Mar 27 08:30:41 EDT 2020
Simplify symbol-writing logic
--- a/src/asm/output.c
+++ b/src/asm/output.c
@@ -195,42 +195,15 @@
*/
static void writesymbol(struct sSymbol const *pSym, FILE *f)
{
- uint32_t type;
- uint32_t offset;
- int32_t sectid;
-
- if (!sym_IsDefined(pSym))
- type = SYMTYPE_IMPORT;
- else if (pSym->isExported)
- type = SYMTYPE_EXPORT;
- else
- type = SYMTYPE_LOCAL;
-
- switch (type) {
- case SYMTYPE_LOCAL:
- offset = pSym->nValue;
- sectid = getsectid(pSym->pSection);
- break;
- case SYMTYPE_IMPORT:
- offset = 0;
- sectid = -1;
- break;
- case SYMTYPE_EXPORT:
- offset = pSym->nValue;
- sectid = pSym->type == SYM_LABEL ? getsectid(pSym->pSection)
- : -1;
- break;
- }
-
fputstring(pSym->tzName, f);
- fputc(type, f);
-
- if (type != SYMTYPE_IMPORT) {
+ if (!sym_IsDefined(pSym)) {
+ fputc(SYMTYPE_IMPORT, f);
+ } else {
+ fputc(pSym->isExported ? SYMTYPE_EXPORT : SYMTYPE_LOCAL, f);
fputstring(pSym->tzFileName, f);
fputlong(pSym->nFileLine, f);
-
- fputlong(sectid, f);
- fputlong(offset, f);
+ fputlong(pSym->pSection ? getsectid(pSym->pSection) : -1, f);
+ fputlong(pSym->nValue, f);
}
}