X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=symbol.h;h=4a84345aaaa8041fd2e497203da35903dccc8d7c;hp=3dc930f6f94b45629aa9d9764fc9a7c1d5b48dd0;hb=HEAD;hpb=c9541a9d4f01e190ffefc20ce07896c7f04d9557 diff --git a/symbol.h b/symbol.h index 3dc930f..4a84345 100644 --- a/symbol.h +++ b/symbol.h @@ -1,7 +1,7 @@ // -// RMAC - Reboot's Macro Assembler for all Atari computers +// RMAC - Renamed Macro Assembler for all Atari computers // SYMBOL.H - Symbol Handling -// Copyright (C) 199x Landon Dyer, 2011-2017 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2011-2022 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 // Source utilised with the kind permission of Landon Dyer // @@ -17,6 +17,7 @@ LLIST { LLIST * next; uint8_t * line; + int lineno; }; // Symbols @@ -30,11 +31,15 @@ SYM uint16_t sattr; // Attribute bits uint32_t sattre; // Extended attribute bits uint16_t senv; // Enviroment number - uint32_t svalue; // Symbol value + uint64_t svalue; // Symbol value (now 64-bit) uint8_t * sname; // * -> Symbol's print-name LLIST * lineList; // * -> Macro's linked list of lines LLIST * last; // * -> end of macro linked list + uint16_t cfileno; // File the macro is defined in uint32_t uid; // Symbol's unique ID + uint8_t st_type; // stabs debug symbol's "type" field + uint8_t st_other; // stabs debug symbol's "other" field + uint16_t st_desc; // stabs debug symbol's "description" field }; // Exported variables @@ -44,13 +49,20 @@ extern uint32_t firstglobal;// Index of the fist global symbol in an ELF object. // Exported functions SYM * lookup(uint8_t *, int, int); void InitSymbolTable(void); -SYM * NewSymbol(uint8_t *, int, int); +SYM * NewSymbol(const uint8_t *, int, int); void AddToSymbolDeclarationList(SYM *); void ForceUndefinedSymbolsGlobal(void); int symtable(void); -uint32_t sy_assign(uint8_t *, uint8_t *(*)()); -uint32_t sy_assign_ELF(uint8_t *, uint8_t *(*)()); +uint32_t AssignSymbolNos(uint8_t *, uint8_t *(*)()); +uint32_t AssignSymbolNosELF(uint8_t *, uint8_t *(*)()); +void DumpLODSymbols(void); uint8_t * GetSymbolNameByUID(uint32_t); +SYM * NewDebugSymbol(const uint8_t *, uint8_t, uint8_t, uint16_t); +void GenMainFileSym(const char *); +void GenLineNoSym(void); + +// Helper to avoid unnecessary branches: +#define GENLINENOSYM() if (dsym_flag) GenLineNoSym() #endif // __SYMBOL_H__