From 0ab2a4fa16e38d4f6ab48ff4aefa3643edcc810c Mon Sep 17 00:00:00 2001 From: Olaf Seibert Date: Fri, 28 May 2021 22:11:34 +0200 Subject: [PATCH] Add consistency checking for symbol flags while also adding some consistency. All listings now list . (dot) as defined so they need updating. --- assemble.c | 4 +- assemble_aux.c | 15 +- extree.c | 14 +- macros.c | 2 +- symbols.c | 234 ++++++++++++++++++++++-------- symbols.h | 2 + tests/2.11BSD-m11-code.lst.ok | 2 +- tests/2.11BSD-m11-debug.lst.ok | 2 +- tests/2.11BSD-m11-errs.lst.ok | 2 +- tests/2.11BSD-m11-exec.lst.ok | 2 +- tests/2.11BSD-m11-expr.lst.ok | 2 +- tests/2.11BSD-m11-fltg.lst.ok | 2 +- tests/2.11BSD-m11-getl.lst.ok | 2 +- tests/2.11BSD-m11-lout.lst.ok | 2 +- tests/2.11BSD-m11-mac.lst.ok | 2 +- tests/2.11BSD-m11-macro.lst.ok | 2 +- tests/2.11BSD-m11-misc.lst.ok | 2 +- tests/2.11BSD-m11-often.lst.ok | 2 +- tests/2.11BSD-m11-pst.lst.ok | 2 +- tests/2.11BSD-m11-srch.lst.ok | 2 +- tests/2.11BSD-m11-syscalls.lst.ok | 2 +- tests/2.11BSD-m11-xlat.lst.ok | 2 +- tests/2.11BSD-m11-xpcor.lst.ok | 2 +- tests/test-asciz.lst.ok | 2 +- tests/test-backpatch.lst.ok | 2 +- tests/test-blkb.lst.ok | 2 +- tests/test-bsl-mac-arg.lst.ok | 2 +- tests/test-cis.lst.ok | 2 +- tests/test-complex-reloc.lst.ok | 2 +- tests/test-enabl-ama.lst.ok | 2 +- tests/test-enabl-lcm.lst.ok | 2 +- tests/test-endm.lst.ok | 2 +- tests/test-float.lst.ok | 2 +- tests/test-gbl.lst.ok | 2 +- tests/test-if.lst.ok | 2 +- tests/test-impword.lst.ok | 2 +- tests/test-include.lst.ok | 2 +- tests/test-jmp.lst.ok | 2 +- tests/test-listing.lst.ok | 2 +- tests/test-locals.lst.ok | 2 +- tests/test-macro-comma.lst.ok | 2 +- tests/test-mcall-file.lst.ok | 2 +- tests/test-opcodes.lst.ok | 2 +- tests/test-operands.lst.ok | 2 +- tests/test-prec.lst.ok | 2 +- tests/test-psect.lst.ok | 2 +- tests/test-rad50.lst.ok | 2 +- tests/test-reloc.lst.ok | 2 +- tests/test-rept.lst.ok | 2 +- tests/test-ua-pl.lst.ok | 2 +- tests/test-undef.lst.ok | 2 +- tests/test-word-comma.lst.ok | 2 +- 52 files changed, 235 insertions(+), 128 deletions(-) diff --git a/assemble.c b/assemble.c index a5cda58..c98ad96 100644 --- a/assemble.c +++ b/assemble.c @@ -194,7 +194,7 @@ static int assemble( if (!express_sym_offset(value, &symb, &offset)) { report(stack->top, "Illegal ORG (for relocatable section)\n"); - } else if ((symb->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) { + } else if (SYM_IS_IMPORTED(symb)) { report(stack->top, "Can't ORG to external location\n"); } else if (symb->flags & SYMBOLFLAG_UNDEFINED) { report(stack->top, "Can't ORG to undefined sym\n"); @@ -1040,7 +1040,7 @@ static int assemble( sect->size = 0; sect->type = SECTION_USER; sections[sector++] = sect; - sectsym = add_sym(label, 0, 0, sect, §ion_st); + sectsym = add_sym(label, 0, SYMBOLFLAG_DEFINITION, sect, §ion_st); /* page 6-41 table 6-5 */ if (op->value == P_PSECT) { diff --git a/assemble_aux.c b/assemble_aux.c index aa7b0ae..1d92a0c 100644 --- a/assemble_aux.c +++ b/assemble_aux.c @@ -332,7 +332,7 @@ int complex_tree( return 0; } - if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) { + if (SYM_IS_IMPORTED(sym)) { text_complex_global(tx, sym->label); } else { text_complex_psect(tx, sym->section->sector, sym->value); @@ -490,7 +490,7 @@ void mode_extension( value. */ } } else if (express_sym_offset(value, &sym, &offset)) { - if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) { + if (SYM_IS_IMPORTED(sym)) { /* Reference to a global symbol. */ /* Global symbol plus offset */ if (mode->rel) @@ -635,7 +635,7 @@ void store_value( } else if (!express_sym_offset(value, &sym, &offset)) { store_complex(stack->top, tr, size, value); } else { - if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) { + if (SYM_IS_IMPORTED(sym)) { store_global_offset_word(stack->top, tr, size, sym->value + offset, sym->label); } else if (sym->section != current_pc->section) { store_psect_offset_word(stack->top, tr, size, sym->value + offset, sym->section->label); @@ -765,11 +765,10 @@ void write_globals( while (sym) { if ((sym->flags & SYMBOLFLAG_GLOBAL) && sym->section == psect) { gsd_global(&gsd, sym->label, - (sym-> - flags & SYMBOLFLAG_DEFINITION ? GLOBAL_DEF : 0) | ((sym-> - flags & SYMBOLFLAG_WEAK) ? - GLOBAL_WEAK : 0) - | ((sym->section->flags & PSECT_REL) ? GLOBAL_REL : 0) | 0100, + ((sym->flags & SYMBOLFLAG_DEFINITION) ? GLOBAL_DEF : 0) | + ((sym->flags & SYMBOLFLAG_WEAK) ? GLOBAL_WEAK : 0) | + ((sym->section->flags & PSECT_REL) ? GLOBAL_REL : 0) | + 0100, /* Looks undefined, but add it in anyway */ sym->value); } diff --git a/extree.c b/extree.c index dee77ed..224ad29 100644 --- a/extree.c +++ b/extree.c @@ -282,25 +282,25 @@ EX_TREE *evaluate( /* Change some symbols to "undefined" */ if (flags & EVALUATE_DEFINEDNESS) { - int change = 0; + int is_undefined = 0; /* I'd prefer this behavior, but MACRO.SAV is a bit too primitive. */ #if 0 /* A temporary symbol defined later is "undefined." */ if (!(sym->flags & PERMANENT) && sym->stmtno > stmtno) - change = 1; + is_undefined = 1; #endif /* A global symbol with no assignment is "undefined." */ /* Go figure. */ - if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) - change = 1; + if (SYM_IS_IMPORTED(sym)) + is_undefined = 1; /* A symbol marked as undefined is undefined */ if (sym->flags & SYMBOLFLAG_UNDEFINED) - change = 1; + is_undefined = 1; - if (change) { + if (is_undefined) { res = new_temp_sym(tp->data.symbol->label, tp->data.symbol->section, tp->data.symbol->value); res->type = EX_UNDEFINED_SYM; @@ -310,7 +310,7 @@ EX_TREE *evaluate( /* Turn defined absolute symbol to a literal */ if (!(sym->section->flags & PSECT_REL) - && (sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) != SYMBOLFLAG_GLOBAL + && !SYM_IS_IMPORTED(sym) && sym->section->type != SECTION_REGISTER) { res = new_ex_lit(sym->value); break; diff --git a/macros.c b/macros.c index c97f75f..58ca443 100644 --- a/macros.c +++ b/macros.c @@ -584,7 +584,7 @@ MACRO *new_macro( { MACRO *mac = memcheck(malloc(sizeof(MACRO))); - mac->sym.flags = 0; + mac->sym.flags = SYMBOLFLAG_DEFINITION; mac->sym.label = label; mac->sym.stmtno = stmtno; mac->sym.next = NULL; diff --git a/symbols.c b/symbols.c index 18d92be..a00907b 100644 --- a/symbols.c +++ b/symbols.c @@ -33,6 +33,96 @@ SYMBOL_TABLE implicit_st; /* The symbols which may be implicit globals */ void list_section(SECTION *sec); +static void +dump_sym(SYMBOL *sym) +{ + report(NULL, "'%s': %06o, stmt %d, flags %o:%s%s%s%s%s%s\n", + sym->label, + sym->value, + sym->stmtno, + sym->flags, + ((sym->flags & SYMBOLFLAG_PERMANENT)? " PERMANENT" : ""), + ((sym->flags & SYMBOLFLAG_GLOBAL)? " GLOBAL" : ""), + ((sym->flags & SYMBOLFLAG_WEAK)? " WEAK" : ""), + ((sym->flags & SYMBOLFLAG_DEFINITION)? " DEFINITION" : ""), + ((sym->flags & SYMBOLFLAG_UNDEFINED)? " UNDEFINED" : ""), + ((sym->flags & SYMBOLFLAG_LOCAL)? " LOCAL" : ""), + ((sym->flags & SYMBOLFLAG_IMPLICIT_GLOBAL)? " IMPLICIT_GLOBAL" : "")); +} + +void +check_sym_invariants(SYMBOL *sym, char *file, int line) +{ + int dump = 0; + + if (sym->section == &instruction_section) { + /* The instructions use the flags field differently */ + if ((sym->flags & ~OC_MASK) != 0) { + report(NULL, "%s %d: Instruction symbol %s has wrong flags\n", file, line, sym->label); + dump_sym(sym); + } + return; + } + + /* + * A symbol is GLOBAL if it appears in the object file's symbol table. + * It can be either exported (if defined) or imported (if not defined). + * + * A common test like this + * + * if ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) + * + * tests if a symbol is imported. + */ + + switch (sym->flags & (SYMBOLFLAG_PERMANENT|SYMBOLFLAG_GLOBAL|SYMBOLFLAG_DEFINITION|SYMBOLFLAG_UNDEFINED)) { + /* A DEFINITION can independently be PERMANENT and/or GLOBAL */ + case SYMBOLFLAG_PERMANENT|SYMBOLFLAG_GLOBAL|SYMBOLFLAG_DEFINITION: + case SYMBOLFLAG_GLOBAL|SYMBOLFLAG_DEFINITION: + case SYMBOLFLAG_PERMANENT| SYMBOLFLAG_DEFINITION: + case SYMBOLFLAG_DEFINITION: + break; + /* A GLOBAL can also be undefined, but then it's still usable */ + case SYMBOLFLAG_GLOBAL: + break; + /* A truly UNDEFINED symbol is an error to use */ + /* (this seems logically equivalent to all of these flags cleared) */ + case SYMBOLFLAG_UNDEFINED: + break; + default: + report(NULL, "%s %d: Symbol %s definedness is inconsistent\n", file, line, sym->label); + dump++; + } + + if ( (sym->flags & SYMBOLFLAG_IMPLICIT_GLOBAL) && + !(sym->flags & SYMBOLFLAG_GLOBAL)) { + report(NULL, "%s %d: Symbol %s globalness is inconsistent\n", file, line, sym->label); + dump++; + } + + if ( (sym->flags & SYMBOLFLAG_LOCAL) && + (sym->flags & SYMBOLFLAG_GLOBAL)) { + report(NULL, "%s %d: Symbol %s is local and global\n", file, line, sym->label); + dump++; + } + + if ( (sym->flags & SYMBOLFLAG_PERMANENT) && + !(sym->flags & SYMBOLFLAG_DEFINITION)) { + report(NULL, "%s %d: Symbol %s is permanent without definition\n", file, line, sym->label); + dump++; + } + + if ( (sym->flags & SYMBOLFLAG_WEAK) && + !(sym->flags & SYMBOLFLAG_GLOBAL)) { + report(NULL, "%s %d: Symbol %s weak/global is inconsistent\n", file, line, sym->label); + dump++; + } + + if (dump) { + dump_sym(sym); + } +} + /* hash_name hashes a name into a value from 0-HASH_SIZE */ int hash_name( @@ -91,6 +181,7 @@ void free_sym( SYMBOL *sym) { if (sym->label) { + check_sym_invariants(sym, __FILE__, __LINE__); free(sym->label); sym->label = NULL; } @@ -107,6 +198,7 @@ void remove_sym( *symp; int hash; + check_sym_invariants(sym, __FILE__, __LINE__); hash = hash_name(sym->label); prevp = &table->hash[hash]; while (symp = *prevp, symp != NULL && symp != sym) @@ -131,6 +223,9 @@ SYMBOL *lookup_sym( while (sym && strcmp(sym->label, label) != 0) sym = sym->next; + if (sym) { + check_sym_invariants(sym, __FILE__, __LINE__); + } return sym; } @@ -176,6 +271,7 @@ void add_table( sym->next = table->hash[hash]; table->hash[hash] = sym; + check_sym_invariants(sym, __FILE__, __LINE__); } /* add_sym - used throughout to add or update symbols in a symbol @@ -204,6 +300,8 @@ SYMBOL *add_sym( sym = lookup_sym(label, table); if (sym != NULL) { // A symbol registered as "undefined" can be changed. + // + check_sym_invariants(sym, __FILE__, __LINE__); if ((sym->flags & SYMBOLFLAG_UNDEFINED) && !(flags & SYMBOLFLAG_UNDEFINED)) { sym->flags &= ~(SYMBOLFLAG_PERMANENT | SYMBOLFLAG_UNDEFINED); @@ -215,6 +313,7 @@ SYMBOL *add_sym( /* Check for compatible definition */ else if (sym->section == section && sym->value == value) { sym->flags |= flags; /* Merge flags quietly */ + check_sym_invariants(sym, __FILE__, __LINE__); return sym; /* 's okay */ } @@ -223,6 +322,7 @@ SYMBOL *add_sym( sym->value = value; sym->flags |= flags; sym->section = section; + check_sym_invariants(sym, __FILE__, __LINE__); return sym; } @@ -245,73 +345,78 @@ SYMBOL *add_sym( void add_symbols( SECTION *current_section) { - current_pc = add_sym(".", 0, 0, current_section, &symbol_st); + current_pc = add_sym(".", 0, SYMBOLFLAG_DEFINITION, current_section, &symbol_st); - reg_sym[0] = add_sym("R0", 0, 0, ®ister_section, &system_st); - reg_sym[1] = add_sym("R1", 1, 0, ®ister_section, &system_st); - reg_sym[2] = add_sym("R2", 2, 0, ®ister_section, &system_st); - reg_sym[3] = add_sym("R3", 3, 0, ®ister_section, &system_st); - reg_sym[4] = add_sym("R4", 4, 0, ®ister_section, &system_st); - reg_sym[5] = add_sym("R5", 5, 0, ®ister_section, &system_st); - reg_sym[6] = add_sym("SP", 6, 0, ®ister_section, &system_st); - reg_sym[7] = add_sym("PC", 7, 0, ®ister_section, &system_st); +#define S (SYMBOLFLAG_PERMANENT | SYMBOLFLAG_DEFINITION) + + reg_sym[0] = add_sym("R0", 0, S, ®ister_section, &system_st); + reg_sym[1] = add_sym("R1", 1, S, ®ister_section, &system_st); + reg_sym[2] = add_sym("R2", 2, S, ®ister_section, &system_st); + reg_sym[3] = add_sym("R3", 3, S, ®ister_section, &system_st); + reg_sym[4] = add_sym("R4", 4, S, ®ister_section, &system_st); + reg_sym[5] = add_sym("R5", 5, S, ®ister_section, &system_st); + reg_sym[6] = add_sym("SP", 6, S, ®ister_section, &system_st); + reg_sym[7] = add_sym("PC", 7, S, ®ister_section, &system_st); //JH: symbols longer than current SYMMAX will be truncated. SYMMAX=6 is minimum! - add_sym(".ASCII", P_ASCII, 0, &pseudo_section, &system_st); - add_sym(".ASCIZ", P_ASCIZ, 0, &pseudo_section, &system_st); - add_sym(".ASECT", P_ASECT, 0, &pseudo_section, &system_st); - add_sym(".BLKB", P_BLKB, 0, &pseudo_section, &system_st); - add_sym(".BLKW", P_BLKW, 0, &pseudo_section, &system_st); - add_sym(".BYTE", P_BYTE, 0, &pseudo_section, &system_st); - add_sym(".CSECT", P_CSECT, 0, &pseudo_section, &system_st); - add_sym(".DSABL", P_DSABL, 0, &pseudo_section, &system_st); - add_sym(".ENABL", P_ENABL, 0, &pseudo_section, &system_st); - add_sym(".END", P_END, 0, &pseudo_section, &system_st); - add_sym(".ENDC", P_ENDC, 0, &pseudo_section, &system_st); - add_sym(".ENDM", P_ENDM, 0, &pseudo_section, &system_st); - add_sym(".ENDR", P_ENDR, 0, &pseudo_section, &system_st); - add_sym(".EOT", P_EOT, 0, &pseudo_section, &system_st); - add_sym(".ERROR", P_ERROR, 0, &pseudo_section, &system_st); - add_sym(".EVEN", P_EVEN, 0, &pseudo_section, &system_st); - add_sym(".FLT2", P_FLT2, 0, &pseudo_section, &system_st); - add_sym(".FLT4", P_FLT4, 0, &pseudo_section, &system_st); - add_sym(".GLOBL", P_GLOBL, 0, &pseudo_section, &system_st); - add_sym(".IDENT", P_IDENT, 0, &pseudo_section, &system_st); - add_sym(".IF", P_IF, 0, &pseudo_section, &system_st); - add_sym(".IFDF", P_IFDF, 0, &pseudo_section, &system_st); - add_sym(".IFNDF", P_IFDF, 0, &pseudo_section, &system_st); - add_sym(".IFF", P_IFF, 0, &pseudo_section, &system_st); - add_sym(".IFT", P_IFT, 0, &pseudo_section, &system_st); - add_sym(".IFTF", P_IFTF, 0, &pseudo_section, &system_st); - add_sym(".IIF", P_IIF, 0, &pseudo_section, &system_st); - add_sym(".INCLUDE", P_INCLUDE, 0, &pseudo_section, &system_st); - add_sym(".IRP", P_IRP, 0, &pseudo_section, &system_st); - add_sym(".IRPC", P_IRPC, 0, &pseudo_section, &system_st); - add_sym(".LIBRARY", P_LIBRARY, 0, &pseudo_section, &system_st); - add_sym(".LIMIT", P_LIMIT, 0, &pseudo_section, &system_st); - add_sym(".LIST", P_LIST, 0, &pseudo_section, &system_st); - add_sym(".MCALL", P_MCALL, 0, &pseudo_section, &system_st); - add_sym(".MEXIT", P_MEXIT, 0, &pseudo_section, &system_st); - add_sym(".NARG", P_NARG, 0, &pseudo_section, &system_st); - add_sym(".NCHR", P_NCHR, 0, &pseudo_section, &system_st); - add_sym(".NLIST", P_NLIST, 0, &pseudo_section, &system_st); - add_sym(".NTYPE", P_NTYPE, 0, &pseudo_section, &system_st); - add_sym(".ODD", P_ODD, 0, &pseudo_section, &system_st); - add_sym(".PACKED", P_PACKED, 0, &pseudo_section, &system_st); - add_sym(".PAGE", P_PAGE, 0, &pseudo_section, &system_st); - add_sym(".PRINT", P_PRINT, 0, &pseudo_section, &system_st); - add_sym(".PSECT", P_PSECT, 0, &pseudo_section, &system_st); - add_sym(".RADIX", P_RADIX, 0, &pseudo_section, &system_st); - add_sym(".RAD50", P_RAD50, 0, &pseudo_section, &system_st); - add_sym(".REM", P_REM, 0, &pseudo_section, &system_st); - add_sym(".REPT", P_REPT, 0, &pseudo_section, &system_st); - add_sym(".RESTORE", P_RESTORE, 0, &pseudo_section, &system_st); - add_sym(".SAVE", P_SAVE, 0, &pseudo_section, &system_st); - add_sym(".SBTTL", P_SBTTL, 0, &pseudo_section, &system_st); - add_sym(".TITLE", P_TITLE, 0, &pseudo_section, &system_st); - add_sym(".WORD", P_WORD, 0, &pseudo_section, &system_st); - add_sym(".MACRO", P_MACRO, 0, &pseudo_section, &system_st); - add_sym(".WEAK", P_WEAK, 0, &pseudo_section, &system_st); + + add_sym(".ASCII", P_ASCII, S, &pseudo_section, &system_st); + add_sym(".ASCIZ", P_ASCIZ, S, &pseudo_section, &system_st); + add_sym(".ASECT", P_ASECT, S, &pseudo_section, &system_st); + add_sym(".BLKB", P_BLKB, S, &pseudo_section, &system_st); + add_sym(".BLKW", P_BLKW, S, &pseudo_section, &system_st); + add_sym(".BYTE", P_BYTE, S, &pseudo_section, &system_st); + add_sym(".CSECT", P_CSECT, S, &pseudo_section, &system_st); + add_sym(".DSABL", P_DSABL, S, &pseudo_section, &system_st); + add_sym(".ENABL", P_ENABL, S, &pseudo_section, &system_st); + add_sym(".END", P_END, S, &pseudo_section, &system_st); + add_sym(".ENDC", P_ENDC, S, &pseudo_section, &system_st); + add_sym(".ENDM", P_ENDM, S, &pseudo_section, &system_st); + add_sym(".ENDR", P_ENDR, S, &pseudo_section, &system_st); + add_sym(".EOT", P_EOT, S, &pseudo_section, &system_st); + add_sym(".ERROR", P_ERROR, S, &pseudo_section, &system_st); + add_sym(".EVEN", P_EVEN, S, &pseudo_section, &system_st); + add_sym(".FLT2", P_FLT2, S, &pseudo_section, &system_st); + add_sym(".FLT4", P_FLT4, S, &pseudo_section, &system_st); + add_sym(".GLOBL", P_GLOBL, S, &pseudo_section, &system_st); + add_sym(".IDENT", P_IDENT, S, &pseudo_section, &system_st); + add_sym(".IF", P_IF, S, &pseudo_section, &system_st); + add_sym(".IFDF", P_IFDF, S, &pseudo_section, &system_st); + add_sym(".IFNDF", P_IFDF, S, &pseudo_section, &system_st); + add_sym(".IFF", P_IFF, S, &pseudo_section, &system_st); + add_sym(".IFT", P_IFT, S, &pseudo_section, &system_st); + add_sym(".IFTF", P_IFTF, S, &pseudo_section, &system_st); + add_sym(".IIF", P_IIF, S, &pseudo_section, &system_st); + add_sym(".INCLUDE", P_INCLUDE, S, &pseudo_section, &system_st); + add_sym(".IRP", P_IRP, S, &pseudo_section, &system_st); + add_sym(".IRPC", P_IRPC, S, &pseudo_section, &system_st); + add_sym(".LIBRARY", P_LIBRARY, S, &pseudo_section, &system_st); + add_sym(".LIMIT", P_LIMIT, S, &pseudo_section, &system_st); + add_sym(".LIST", P_LIST, S, &pseudo_section, &system_st); + add_sym(".MCALL", P_MCALL, S, &pseudo_section, &system_st); + add_sym(".MEXIT", P_MEXIT, S, &pseudo_section, &system_st); + add_sym(".NARG", P_NARG, S, &pseudo_section, &system_st); + add_sym(".NCHR", P_NCHR, S, &pseudo_section, &system_st); + add_sym(".NLIST", P_NLIST, S, &pseudo_section, &system_st); + add_sym(".NTYPE", P_NTYPE, S, &pseudo_section, &system_st); + add_sym(".ODD", P_ODD, S, &pseudo_section, &system_st); + add_sym(".PACKED", P_PACKED, S, &pseudo_section, &system_st); + add_sym(".PAGE", P_PAGE, S, &pseudo_section, &system_st); + add_sym(".PRINT", P_PRINT, S, &pseudo_section, &system_st); + add_sym(".PSECT", P_PSECT, S, &pseudo_section, &system_st); + add_sym(".RADIX", P_RADIX, S, &pseudo_section, &system_st); + add_sym(".RAD50", P_RAD50, S, &pseudo_section, &system_st); + add_sym(".REM", P_REM, S, &pseudo_section, &system_st); + add_sym(".REPT", P_REPT, S, &pseudo_section, &system_st); + add_sym(".RESTORE", P_RESTORE, S, &pseudo_section, &system_st); + add_sym(".SAVE", P_SAVE, S, &pseudo_section, &system_st); + add_sym(".SBTTL", P_SBTTL, S, &pseudo_section, &system_st); + add_sym(".TITLE", P_TITLE, S, &pseudo_section, &system_st); + add_sym(".WORD", P_WORD, S, &pseudo_section, &system_st); + add_sym(".MACRO", P_MACRO, S, &pseudo_section, &system_st); + add_sym(".WEAK", P_WEAK, S, &pseudo_section, &system_st); + +#undef S add_sym("ADC", I_ADC, OC_1GEN, &instruction_section, &system_st); add_sym("ADCB", I_ADCB, OC_1GEN, &instruction_section, &system_st); @@ -630,6 +735,7 @@ void list_symbol_table( int i; for (i = line; i < nsyms; i += nlines) { sym = symbols[i]; + check_sym_invariants(sym, __FILE__, __LINE__); fprintf(lstfile,"%-*s", longest_symbol, sym->label); fprintf(lstfile,"%c", (sym->section->flags & PSECT_REL) ? ' ' : '='); diff --git a/symbols.h b/symbols.h index afcdd7b..94b4909 100644 --- a/symbols.h +++ b/symbols.h @@ -25,6 +25,8 @@ typedef struct section { unsigned sector; /* Used for complex relocation, and naught else */ } SECTION; +#define SYM_IS_IMPORTED(sym) ((sym->flags & (SYMBOLFLAG_GLOBAL | SYMBOLFLAG_DEFINITION)) == SYMBOLFLAG_GLOBAL) + /* Symbol table entries */ typedef struct symbol { diff --git a/tests/2.11BSD-m11-code.lst.ok b/tests/2.11BSD-m11-code.lst.ok index f92a12a..ee7215a 100644 --- a/tests/2.11BSD-m11-code.lst.ok +++ b/tests/2.11BSD-m11-code.lst.ok @@ -1232,7 +1232,7 @@ Symbol table $TIMDF= 000007 4$6 001322R L 002 CLCLOC= ****** G LBLFLG= 000002 RLDTMP 000024R 008 -. ******R 002 40$9 002014R L 002 CLCNAM= ****** G LF = 000012 ROLUPD= ****** G +. 002056R 002 40$9 002014R L 002 CLCNAM= ****** G LF = 000012 ROLUPD= ****** G ..Z = ****** G 5$3 000464R L 002 CLCSEC= ****** G LIMIT 000210RG 002 RSX11D= 000000 1$0 000164R L 002 6$3 000542R L 002 CNTTBL= ****** G LOCDMP 001512R 002 SAVREG= ****** G 1$1 000214R L 002 7$5 001216R L 002 CODROL= ****** G LSYROL= ****** G SECROL= ****** G diff --git a/tests/2.11BSD-m11-debug.lst.ok b/tests/2.11BSD-m11-debug.lst.ok index 1b6235f..531f0d1 100644 --- a/tests/2.11BSD-m11-debug.lst.ok +++ b/tests/2.11BSD-m11-debug.lst.ok @@ -626,7 +626,7 @@ Symbol table $TIMDF= 000007 ..ZBUF 000204RG 006 DDD 000042R 002 LF = 000012 SDEBUG 000000RG 002 $WRITE= ****** G 1$0 000022R L 002 DEBUG = 000000 MK.SYM= 000001 SPACE = 000040 -. ******R 006 100$1 000074R L 002 DNC = ****** G NDEBUG 000100RG 002 TAB = 000011 +. 000404R 006 100$1 000074R L 002 DNC = ****** G NDEBUG 000100RG 002 TAB = 000011 ..N 000000R 006 2$0 000032R L 002 FF = 000014 PDPV45= 000000 VT = 000013 ..S 000004R 006 BPMB = 000020 FT.ID = 000001 RSX11D= 000000 X40 = 000000 ..Z 000002RG 006 CR = 000015 FT.UNX= 000001 SAVREG= ****** G XX.FLG= ****** G diff --git a/tests/2.11BSD-m11-errs.lst.ok b/tests/2.11BSD-m11-errs.lst.ok index 7705447..6a6dc56 100644 --- a/tests/2.11BSD-m11-errs.lst.ok +++ b/tests/2.11BSD-m11-errs.lst.ok @@ -1202,7 +1202,7 @@ Symbol table $TIMDF= 000007 ERN19 000674RG 003 ERN35 001570RG 003 ERN50 002360RG 003 ERN8 000216RG 003 -. ******R 003 ERN2 000033RG 003 ERN36 001624RG 003 ERN51 002403RG 003 ERN80 003010RG 003 +. 003066R 003 ERN2 000033RG 003 ERN36 001624RG 003 ERN51 002403RG 003 ERN80 003010RG 003 BPMB = 000020 ERN20 000744RG 003 ERN37 001651RG 003 ERN52 002422RG 003 ERN81 003044RG 003 CR = 000015 ERN22 001007RG 003 ERN38 001703RG 003 ERN53 002445RG 003 ERN9 000247RG 003 DEBUG = 000000 ERN23 001044RG 003 ERN39 001733RG 003 ERN54 002472RG 003 ERN90 002173RG 003 diff --git a/tests/2.11BSD-m11-exec.lst.ok b/tests/2.11BSD-m11-exec.lst.ok index 0c520ef..40d4992 100644 --- a/tests/2.11BSD-m11-exec.lst.ok +++ b/tests/2.11BSD-m11-exec.lst.ok @@ -4607,7 +4607,7 @@ $WRBFP 000302RG 006 7$26 001702R L 002 ENDP2 = ****** G $WRCNT 000304RG 006 7$29 002046R L 002 ERN45 = ****** G PROP2 = ****** G $WRITE = ****** G 7$32 002644R L 002 ERN55 = ****** G PROSW = ****** G $WRSYS = ****** G 7$44 004546R L 002 ERR.A = ****** G PSAROL = ****** G -. ******R 002 8$2 000534R L 002 ERR.BY = ****** G PSDFLT = ****** G +. 004576R 002 8$2 000534R L 002 ERR.BY = ****** G PSDFLT = ****** G ..Z = ****** G 8$35 003210R L 002 ERR.XX = ****** G PSTROL = ****** G ..ZBUF = ****** G 8$40 004072R L 002 ERRBTS = ****** G PUTKB = ****** G 1$1 000330R L 002 8$45 004574R L 002 ERRCNT = ****** G PUTKBL = ****** G diff --git a/tests/2.11BSD-m11-expr.lst.ok b/tests/2.11BSD-m11-expr.lst.ok index 81b8197..b8c5b20 100644 --- a/tests/2.11BSD-m11-expr.lst.ok +++ b/tests/2.11BSD-m11-expr.lst.ok @@ -1702,7 +1702,7 @@ Symbol table $TIMDF = 000007 ABSERX 001236R 002 ERN1 = ****** G PDPV45 = 000000 -. ******R 002 ABSEXP 001142RG 002 ERN2 = ****** G PSTROL = ****** G +. 003150R 002 ABSEXP 001142RG 002 ERN2 = ****** G PSTROL = ****** G ..Z = ****** G ABSTRM 001134RG 002 ERN3 = ****** G R50DOT = ****** G ..ZBUF = ****** G ABSTST 001146RG 002 ERN4 = ****** G R50GCH 002616R 002 1$0 000034R L 002 B.IDF = 000001 ERN5 = ****** G R50PRC 002662R 002 diff --git a/tests/2.11BSD-m11-fltg.lst.ok b/tests/2.11BSD-m11-fltg.lst.ok index 73a211f..80986d4 100644 --- a/tests/2.11BSD-m11-fltg.lst.ok +++ b/tests/2.11BSD-m11-fltg.lst.ok @@ -959,7 +959,7 @@ Symbol table $TIMDF = 000007 32768$3 000400R L 002 EDMASK = ****** G FLTG2W 000122R 002 FT.UNX = 000001 -. ******R 002 32768$4 000650R L 002 ERN10 = ****** G FLTG3 000360R 002 GETCHR = ****** G +. 001232R 002 32768$4 000650R L 002 ERN10 = ****** G FLTG3 000360R 002 GETCHR = ****** G ..Z = ****** G 32768$5 001026R L 002 ERN11 = ****** G FLTG4W 000116R 002 GETNB = ****** G ..ZBUF = ****** G 33$3 000442R L 002 ERN9 = ****** G FLTG5 000550R 002 LF = 000012 1$2 000150R L 002 4$5 000664R L 002 ERR.A = ****** G FLTGAD 001144R 002 MK.SYM = 000001 diff --git a/tests/2.11BSD-m11-getl.lst.ok b/tests/2.11BSD-m11-getl.lst.ok index e469b7b..46d13e2 100644 --- a/tests/2.11BSD-m11-getl.lst.ok +++ b/tests/2.11BSD-m11-getl.lst.ok @@ -1543,7 +1543,7 @@ Symbol table $TIMDF = 000007 BSSFLG = 000004 ED.LSB = ****** G IFNDF 001016RG 002 MK.SYM = 000001 -. ******R 002 CATTRS = 000170 EDMASK = ****** G IFNE 001016RG 002 MODE = ****** G +. 002036R 002 CATTRS = 000170 EDMASK = ****** G IFNE 001016RG 002 MODE = ****** G ..Z = ****** G CDRSAV = ****** G ENDC 001122RG 002 IFNZ 001016RG 002 MSBMRP = ****** G ..ZBUF = ****** G CH.ADD = 000053 ENDCX 001140R 002 IFOER1 001254R 002 OVRFLG = 000020 1$10 001766R L 002 CH.AND = 000046 ENDFLG 000000RG 009 IFOERR 001174R 002 PAGEXT 000010RG 009 diff --git a/tests/2.11BSD-m11-lout.lst.ok b/tests/2.11BSD-m11-lout.lst.ok index 8c5d214..ac0328d 100644 --- a/tests/2.11BSD-m11-lout.lst.ok +++ b/tests/2.11BSD-m11-lout.lst.ok @@ -2549,7 +2549,7 @@ Symbol table $TIMDF = 000007 CH.ADD = 000053 ERR.T = 010000 G MX.ON = 066307 -. ******R 006 CH.AND = 000046 ERR.U = 020000 G MX.PUT 003720R 002 +. 000062R 006 CH.AND = 000046 ERR.U = 020000 G MX.PUT 003720R 002 ..Z = ****** G CH.BSL = 000134 ERR.XX 000002RG 010 MX.PXX 000036R 006 ..ZBUF = ****** G CH.COL = 000072 ERR.Z = 040000 G MX.SYM 000037RG 006 1$10 001464R L 002 CH.COM = 000054 ERRBTS 000000RG 010 MX.TMP 000060R 006 diff --git a/tests/2.11BSD-m11-mac.lst.ok b/tests/2.11BSD-m11-mac.lst.ok index 6fd5b52..7463176 100644 --- a/tests/2.11BSD-m11-mac.lst.ok +++ b/tests/2.11BSD-m11-mac.lst.ok @@ -2217,7 +2217,7 @@ Symbol table $TIMDF = 000007 44$31 004774R L 002 ERN31 = ****** G MSBARG 000010R 008 -. ******R 004 5$17 002450R L 002 ERN54 = ****** G MSBBLK 000002R 008 +. 000002R 004 5$17 002450R L 002 ERN54 = ****** G MSBBLK 000002R 008 ..Z = ****** G 5$31 005052R L 002 ERN56 = ****** G MSBCNT 000012R 008 ..ZBUF = ****** G 6$17 002454R L 002 ERN57 = ****** G MSBEND 000020R 008 1$10 001336R L 002 61$17 002510R L 002 ERN60 = ****** G MSBMRP 000016RG 008 diff --git a/tests/2.11BSD-m11-macro.lst.ok b/tests/2.11BSD-m11-macro.lst.ok index e732adc..45664e0 100644 --- a/tests/2.11BSD-m11-macro.lst.ok +++ b/tests/2.11BSD-m11-macro.lst.ok @@ -1278,7 +1278,7 @@ Symbol table $TIMDF= 000007 CH.MUL= 000052 ENDFLG= ****** G LET.R = 000122 ROLBAS 000000R 018 -. ******R 002 CH.PCT= 000045 ENDLIN= ****** G LET.Z = 000132 ROLUPD= ****** G +. 000262R 002 CH.PCT= 000045 ENDLIN= ****** G LET.Z = 000132 ROLUPD= ****** G 2$0 000006R L 002 CH.QM = 000077 ENDP1 000110RG 002 LF = 000012 RSX11D= 000000 3$1 000062R L 002 CH.QTM= 000042 ENDP1C= ****** G LSYROL= 000010 G SAVREG= ****** G 31$2 000134R L 002 CH.RAB= 000076 ENDP2 000162RG 002 M.IDF = 000007 SCAN = ****** G diff --git a/tests/2.11BSD-m11-misc.lst.ok b/tests/2.11BSD-m11-misc.lst.ok index bf56529..fa99fd6 100644 --- a/tests/2.11BSD-m11-misc.lst.ok +++ b/tests/2.11BSD-m11-misc.lst.ok @@ -1190,7 +1190,7 @@ Symbol table $TIMDF = 000007 4$3 000360R L 002 CH.SMC = 000073 ERR.XX = ****** G PDPV45 = 000000 -. ******R 002 4$4 000504R L 002 CH.SUB = 000055 ERRBTS = ****** G R50UNP 000150RG 002 +. 001062R 002 4$4 000504R L 002 CH.SUB = 000055 ERRBTS = ****** G R50UNP 000150RG 002 ..Z = ****** G 5$3 000364R L 002 CH.UAR = 000136 ERRREF = ****** G RSX11D = 000000 ..ZBUF = ****** G 5$4 000510R L 002 CH.XCL = 000047 FF = 000014 SAVREG 000754RG 002 1$0 000072R L 002 9$5 000566R L 002 CHRPNT 000000RG 008 FT.ID = 000001 SDEBUG = ****** G diff --git a/tests/2.11BSD-m11-often.lst.ok b/tests/2.11BSD-m11-often.lst.ok index e425a6c..5b523c8 100644 --- a/tests/2.11BSD-m11-often.lst.ok +++ b/tests/2.11BSD-m11-often.lst.ok @@ -697,7 +697,7 @@ Symbol table $TIMDF= 000007 CHRPNT= ****** G GLBFLG= 000100 MACDFN= ****** G SHRFLG= 000001 -. ******R 002 CR = 000015 INSFLG= 000002 MDFFLG= 000004 SPACE = 000040 +. 000156R 002 CR = 000015 INSFLG= 000002 MDFFLG= 000004 SPACE = 000040 1$0 000004R L 002 CRADIX= ****** G IO.TTY= ****** G MK.SYM= 000001 TAB = 000011 1$1 000030R L 002 DEBUG = 000000 IOFTBL= ****** G OBJSEC= ****** G TITLE = ****** G 1$2 000120R L 002 DEFFLG= 000010 LBLFLG= 000002 OVRFLG= 000020 U.FLAG= ****** G diff --git a/tests/2.11BSD-m11-pst.lst.ok b/tests/2.11BSD-m11-pst.lst.ok index 6913f1e..1cd20ea 100644 --- a/tests/2.11BSD-m11-pst.lst.ok +++ b/tests/2.11BSD-m11-pst.lst.ok @@ -3022,7 +3022,7 @@ Symbol table $TIMDF= 000007 DSABL = ****** G IFL = ****** G NCHR = ****** G PDPV45= 000000 -. ******R 002 ENABL = ****** G IFLE = ****** G NLIST = ****** G PRINT = ****** G +. 000000R 002 ENABL = ****** G IFLE = ****** G NLIST = ****** G PRINT = ****** G AAAA = 000001 END = ****** G IFLT = ****** G NTYPE = ****** G PSECT = ****** G ASCII = ****** G ENDC = ****** G IFNDF = ****** G ODD = ****** G RAD50 = ****** G ASCIZ = ****** G ENDM = ****** G IFNE = ****** G OPCERR= ****** G RADIX = ****** G diff --git a/tests/2.11BSD-m11-srch.lst.ok b/tests/2.11BSD-m11-srch.lst.ok index 4a32263..612dd2d 100644 --- a/tests/2.11BSD-m11-srch.lst.ok +++ b/tests/2.11BSD-m11-srch.lst.ok @@ -947,7 +947,7 @@ $BRKAD= ****** G 2$5 000556R L 002 CR = 000015 ROLND $BRKSY= ****** G 2$6 000762R L 002 DEBUG = 000000 ROLPNT 000006R 006 SYMBOT 000014RG 006 $SBRK = ****** GX 3$1 000232R L 002 DUMROL= ****** G ROLUPD 000010RG 006 SYMHP = ****** G $TIMDF= 000007 3$4 000432R L 002 ED.REG= ****** G RSX11D= 000000 SYMLP = ****** G -. ******R 002 3$6 001004R L 002 EDMASK= ****** G SAVREG= ****** G SYMOVF= ****** G +. 001150R 002 3$6 001004R L 002 EDMASK= ****** G SAVREG= ****** G SYMOVF= ****** G 1$0 000004R L 002 30$6 001052R L 002 FF = 000014 SCAN 000334RG 002 SYMROL= ****** G 1$1 000162R L 002 4$5 000562R L 002 FT.ID = 000001 SCANC 000320RG 002 TAB = 000011 1$2 000300R L 002 5$1 000242R L 002 FT.UNX= 000001 SCANF 000340R 002 UPBOMB 000002RG 006 diff --git a/tests/2.11BSD-m11-syscalls.lst.ok b/tests/2.11BSD-m11-syscalls.lst.ok index 022e772..f6115ce 100644 --- a/tests/2.11BSD-m11-syscalls.lst.ok +++ b/tests/2.11BSD-m11-syscalls.lst.ok @@ -461,7 +461,7 @@ Symbol table -$CLOSE= 104406 G $EXIT = 104401 G $OPEN = 104405 G $SEEK = 104423 G . ******R 001 +$CLOSE= 104406 G $EXIT = 104401 G $OPEN = 104405 G $SEEK = 104423 G . 000000R 001 $CREAT= 104410 G $FORK = 104402 G $READ = 104403 G $WAIT = 104524 G DEBUG = 000001 $EXECV= 104413 G $GETTO= 104564 G $SBRK = 104505 G $WRITE= 104404 G diff --git a/tests/2.11BSD-m11-xlat.lst.ok b/tests/2.11BSD-m11-xlat.lst.ok index 8d8f74f..d241939 100644 --- a/tests/2.11BSD-m11-xlat.lst.ok +++ b/tests/2.11BSD-m11-xlat.lst.ok @@ -2973,7 +2973,7 @@ Symbol table $TIMDF = 000007 32776$6 002016R L 002 CT.EOL = 000000 LET.D = 000104 -. ******R 002 32777$6 002066R L 002 CT.LC = 000100 LET.E = 000105 +. 006240R 002 32777$6 002066R L 002 CT.LC = 000100 LET.E = 000105 ..Z = ****** G 33$2 000364R L 002 CT.NUM = 000020 LET.F = 000106 ..ZBUF = ****** G 4$1 000274R L 002 CT.PC = 000271 LET.G = 000107 1$0 000040R L 002 4$11 002756R L 002 CT.PCX = 000010 LET.O = 000117 diff --git a/tests/2.11BSD-m11-xpcor.lst.ok b/tests/2.11BSD-m11-xpcor.lst.ok index 3d29167..040d4c9 100644 --- a/tests/2.11BSD-m11-xpcor.lst.ok +++ b/tests/2.11BSD-m11-xpcor.lst.ok @@ -461,7 +461,7 @@ Symbol table -. ******R 001 DEBUG = 000001 INICOR= 005670 G +. 013560R 001 DEBUG = 000001 INICOR= 005670 G Program sections: diff --git a/tests/test-asciz.lst.ok b/tests/test-asciz.lst.ok index 0518914..213bf6f 100644 --- a/tests/test-asciz.lst.ok +++ b/tests/test-asciz.lst.ok @@ -49,7 +49,7 @@ test-asciz.mac:22: ***ERROR Invalid expression in .WORD Symbol table -. ******R 001 .ASCIZ 000076R 001 CR = 000015 LF = 000012 SOH = 000001 +. 000104R 001 .ASCIZ 000076R 001 CR = 000015 LF = 000012 SOH = 000001 Program sections: diff --git a/tests/test-backpatch.lst.ok b/tests/test-backpatch.lst.ok index ec39441..630bd0f 100644 --- a/tests/test-backpatch.lst.ok +++ b/tests/test-backpatch.lst.ok @@ -20,7 +20,7 @@ Symbol table -. ******R 002 LABEL 000000R 002 +. 000054R 002 LABEL 000000R 002 Program sections: diff --git a/tests/test-blkb.lst.ok b/tests/test-blkb.lst.ok index 0892c31..9b22400 100644 --- a/tests/test-blkb.lst.ok +++ b/tests/test-blkb.lst.ok @@ -32,7 +32,7 @@ test-blkb.mac:25: ***ERROR .ODD must not have an argument Symbol table -. ******R 001 LABEL 000000R 001 LABEL2 000154R 001 +. 000325R 001 LABEL 000000R 001 LABEL2 000154R 001 Program sections: diff --git a/tests/test-bsl-mac-arg.lst.ok b/tests/test-bsl-mac-arg.lst.ok index bc1d96a..bbeb02b 100644 --- a/tests/test-bsl-mac-arg.lst.ok +++ b/tests/test-bsl-mac-arg.lst.ok @@ -40,7 +40,7 @@ test-bsl-mac-arg.mac:23: ***ERROR Constant value required Symbol table -. ******R 001 FOO = 000002 SIZE = 000010 +. 000076R 001 FOO = 000002 SIZE = 000010 Program sections: diff --git a/tests/test-cis.lst.ok b/tests/test-cis.lst.ok index 859bec8..9603ee1 100644 --- a/tests/test-cis.lst.ok +++ b/tests/test-cis.lst.ok @@ -82,7 +82,7 @@ Symbol table -. ******R 001 L1 000366R 001 S2 000356R 001 +. 000400R 001 L1 000366R 001 S2 000356R 001 D1 000362R 001 S1 000352R 001 T1 000372R 001 diff --git a/tests/test-complex-reloc.lst.ok b/tests/test-complex-reloc.lst.ok index 2bd0a77..9c3cb87 100644 --- a/tests/test-complex-reloc.lst.ok +++ b/tests/test-complex-reloc.lst.ok @@ -17,7 +17,7 @@ Symbol table -. ******R 001 IE.ITS= ****** GX IE.MON= ****** GX SPACE 000006R 001 +. 000030R 001 IE.ITS= ****** GX IE.MON= ****** GX SPACE 000006R 001 Program sections: diff --git a/tests/test-enabl-ama.lst.ok b/tests/test-enabl-ama.lst.ok index 190bc78..f058ce8 100644 --- a/tests/test-enabl-ama.lst.ok +++ b/tests/test-enabl-ama.lst.ok @@ -14,7 +14,7 @@ Symbol table -. ******R 002 Y 000000R 002 +. 000006R 002 Y 000000R 002 Program sections: diff --git a/tests/test-enabl-lcm.lst.ok b/tests/test-enabl-lcm.lst.ok index 839e84c..02dc674 100644 --- a/tests/test-enabl-lcm.lst.ok +++ b/tests/test-enabl-lcm.lst.ok @@ -35,7 +35,7 @@ Symbol table -. ******R 001 +. 000010R 001 Program sections: diff --git a/tests/test-endm.lst.ok b/tests/test-endm.lst.ok index 9ddb7d9..44bb6d6 100644 --- a/tests/test-endm.lst.ok +++ b/tests/test-endm.lst.ok @@ -90,7 +90,7 @@ test-endm.mac:45: ***ERROR No conditional block active Symbol table -. ******R 001 M8 = ****** GX +. 000020R 001 M8 = ****** GX Program sections: diff --git a/tests/test-float.lst.ok b/tests/test-float.lst.ok index c0b3904..9c640bc 100644 --- a/tests/test-float.lst.ok +++ b/tests/test-float.lst.ok @@ -200,7 +200,7 @@ test-float.mac:140: ***ERROR Junk at end of line ('5 ; bad: junk') Symbol table -. ******R 001 AC0 =%000000 E3 = 000003 +. 000640R 001 AC0 =%000000 E3 = 000003 A = 000001 AC1 =%000001 F2 =%000002 diff --git a/tests/test-gbl.lst.ok b/tests/test-gbl.lst.ok index a9dbaf8..e4a0c75 100644 --- a/tests/test-gbl.lst.ok +++ b/tests/test-gbl.lst.ok @@ -17,7 +17,7 @@ test-gbl.mac:11: ***ERROR Invalid expression (complex relocation) Symbol table -. ******R 001 LAB1 = ****** GX LAB2 = ****** +. 000010R 001 LAB1 = ****** GX LAB2 = ****** Program sections: diff --git a/tests/test-if.lst.ok b/tests/test-if.lst.ok index 81d0732..7acb0f3 100644 --- a/tests/test-if.lst.ok +++ b/tests/test-if.lst.ok @@ -153,7 +153,7 @@ test-if.mac:143: ***ERROR Bad .IF expression Symbol table -. ******R 001 DEFD2 = 000003 LAB2 000037R 001 ONE = 000001 +. 000045R 001 DEFD2 = 000003 LAB2 000037R 001 ONE = 000001 DEFD = 000002 LAB1 000036R 001 MIN1 = 177777 ZERO = 000000 diff --git a/tests/test-impword.lst.ok b/tests/test-impword.lst.ok index 255dd48..43cb0ef 100644 --- a/tests/test-impword.lst.ok +++ b/tests/test-impword.lst.ok @@ -17,7 +17,7 @@ test-impword.mac:10: ***ERROR Invalid expression in .WORD Symbol table -. ******R 001 MACRO = ****** GX START 000000R 001 +. 000020R 001 MACRO = ****** GX START 000000R 001 Program sections: diff --git a/tests/test-include.lst.ok b/tests/test-include.lst.ok index a5b0dc0..0407d4e 100644 --- a/tests/test-include.lst.ok +++ b/tests/test-include.lst.ok @@ -58,7 +58,7 @@ test-include.mac:21: ***ERROR Unable to find .INCLUDE file "does-not-exist.mac" Symbol table -. ******R 001 .INCLU 000012R 001 INCL.M= ****** GX +. 000014R 001 .INCLU 000012R 001 INCL.M= ****** GX Program sections: diff --git a/tests/test-jmp.lst.ok b/tests/test-jmp.lst.ok index ccac89e..260bb78 100644 --- a/tests/test-jmp.lst.ok +++ b/tests/test-jmp.lst.ok @@ -108,7 +108,7 @@ test-jmp.mac:86: ***ERROR Invalid addressing mode (register expected) Symbol table -. ******R 003 REIGHT 000010R 003 RZERO 000000R 003 THIRD 000116R 001 +. 000012R 003 REIGHT 000010R 003 RZERO 000000R 003 THIRD 000116R 001 EIGHT = 000010 002 RFOUR 000004R 003 SECND 000046R 001 THREE = 000003 FOUR = 000004 002 RSIX 000006R 003 SIX = 000006 002 TWO = 000002 002 LABEL 000166R 001 RTWO 000002R 003 START 000000R 001 ZERO = 000000 002 diff --git a/tests/test-listing.lst.ok b/tests/test-listing.lst.ok index d6f4641..5bf0ca8 100644 --- a/tests/test-listing.lst.ok +++ b/tests/test-listing.lst.ok @@ -17,7 +17,7 @@ Symbol table -. ******R 001 +. 000000R 001 Program sections: diff --git a/tests/test-locals.lst.ok b/tests/test-locals.lst.ok index 4ca4df7..0f1826e 100644 --- a/tests/test-locals.lst.ok +++ b/tests/test-locals.lst.ok @@ -47,7 +47,7 @@ Symbol table -. ******R 001 12345$1 000006R L 001 3$3 000022R L 001 4$5 000050R L 001 LAB4 000026R 001 +. 000052R 001 12345$1 000006R L 001 3$3 000022R L 001 4$5 000050R L 001 LAB4 000026R 001 1$0 000002R L 001 12345$2 000012R L 001 3$4 000034R L 001 LAB1 000000R 001 LAB5 000044R 001 1$3 000016R L 001 2$3 000020R L 001 3$5 000046R L 001 LAB2A 000004R 001 1$4 000030R L 001 2$4 000032R L 001 4$3 000024R L 001 LAB2B 000010R 001 diff --git a/tests/test-macro-comma.lst.ok b/tests/test-macro-comma.lst.ok index b793014..4ef9eba 100644 --- a/tests/test-macro-comma.lst.ok +++ b/tests/test-macro-comma.lst.ok @@ -54,7 +54,7 @@ Symbol table -. ******R 001 LABEL = 000003 START 000000R 001 +. 000000R 001 LABEL = 000003 START 000000R 001 Program sections: diff --git a/tests/test-mcall-file.lst.ok b/tests/test-mcall-file.lst.ok index 3fa9750..0c1ef5d 100644 --- a/tests/test-mcall-file.lst.ok +++ b/tests/test-mcall-file.lst.ok @@ -25,7 +25,7 @@ Symbol table -. ******R 001 +. 000051R 001 Program sections: diff --git a/tests/test-opcodes.lst.ok b/tests/test-opcodes.lst.ok index 43049c6..f4001d7 100644 --- a/tests/test-opcodes.lst.ok +++ b/tests/test-opcodes.lst.ok @@ -295,7 +295,7 @@ Symbol table -. ******R 001 AC1 =%000001 AC5 =%000005 +. 000656R 001 AC1 =%000001 AC5 =%000005 Program sections: diff --git a/tests/test-operands.lst.ok b/tests/test-operands.lst.ok index 7f410d7..b04e8b2 100644 --- a/tests/test-operands.lst.ok +++ b/tests/test-operands.lst.ok @@ -252,7 +252,7 @@ test-operands.mac:130: ***ERROR Invalid expression (complex relocation) Symbol table -. ******R 001 AC1 =%000001 AC5 =%000005 +. 000356R 001 AC1 =%000001 AC5 =%000005 Program sections: diff --git a/tests/test-prec.lst.ok b/tests/test-prec.lst.ok index 18eb79b..ba762f2 100644 --- a/tests/test-prec.lst.ok +++ b/tests/test-prec.lst.ok @@ -127,7 +127,7 @@ test-prec.mac:100: ***ERROR Invalid expression in .WORD Symbol table $ = ****** GX .1 = ****** GX .3 = ****** GX FIVE = 000005 -. ******R 001 .2 = ****** GX A 000030R 001 NAME = ****** G +. 000164R 001 .2 = ****** GX A 000030R 001 NAME = ****** G Program sections: diff --git a/tests/test-psect.lst.ok b/tests/test-psect.lst.ok index dc843ef..346e19c 100644 --- a/tests/test-psect.lst.ok +++ b/tests/test-psect.lst.ok @@ -15,7 +15,7 @@ Symbol table -. ******R 002 +. 000000R 002 Program sections: diff --git a/tests/test-rad50.lst.ok b/tests/test-rad50.lst.ok index 50775bc..d1c6f20 100644 --- a/tests/test-rad50.lst.ok +++ b/tests/test-rad50.lst.ok @@ -38,7 +38,7 @@ test-rad50.mac:25: ***ERROR invalid character value 37777777777 Symbol table -. ******R 001 CHR1 = 000001 CHR2 = 000002 CHR3 = 000003 +. 000030R 001 CHR1 = 000001 CHR2 = 000002 CHR3 = 000003 Program sections: diff --git a/tests/test-reloc.lst.ok b/tests/test-reloc.lst.ok index 4dde81f..6c697d0 100644 --- a/tests/test-reloc.lst.ok +++ b/tests/test-reloc.lst.ok @@ -79,7 +79,7 @@ Symbol table -. = ****** X = 001234 Y 000002R 002 +. = 001030 X = 001234 Y 000002R 002 Program sections: diff --git a/tests/test-rept.lst.ok b/tests/test-rept.lst.ok index 0aadbdf..9b70ad2 100644 --- a/tests/test-rept.lst.ok +++ b/tests/test-rept.lst.ok @@ -30,7 +30,7 @@ test-rept.mac:22: ***ERROR No repeat block active Symbol table -. ******R 001 +. 000016R 001 Program sections: diff --git a/tests/test-ua-pl.lst.ok b/tests/test-ua-pl.lst.ok index e578c43..5902bba 100644 --- a/tests/test-ua-pl.lst.ok +++ b/tests/test-ua-pl.lst.ok @@ -24,7 +24,7 @@ Symbol table -. ******R 003 +. 000010R 003 Program sections: diff --git a/tests/test-undef.lst.ok b/tests/test-undef.lst.ok index 02c0e07..f6310fe 100644 --- a/tests/test-undef.lst.ok +++ b/tests/test-undef.lst.ok @@ -5,7 +5,7 @@ test-undef.mac:1: ***ERROR MACRO .TTYOU not found Symbol table -. ******R 001 +. 000000R 001 Program sections: diff --git a/tests/test-word-comma.lst.ok b/tests/test-word-comma.lst.ok index 0fd7923..eceef7c 100644 --- a/tests/test-word-comma.lst.ok +++ b/tests/test-word-comma.lst.ok @@ -15,7 +15,7 @@ Symbol table -. ******R 001 START 000000R 001 +. 000056R 001 START 000000R 001 Program sections: