X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=symbol.h;h=fadb8a4238d203d1f02d2701425c06c4c9f10a38;hp=63eda03352fc5a4b5ea88846aa11f0f8dc7ab06d;hb=HEAD;hpb=c2caacfdc844e2f8b5d05b0699fbacc04b4ce8ea diff --git a/symbol.h b/symbol.h index 63eda03..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 // @@ -31,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 @@ -45,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__