2 // RMAC - Renamed Macro Assembler for all Atari computers
3 // SYMBOL.H - Symbol Handling
4 // Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends
5 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
6 // Source utilised with the kind permission of Landon Dyer
15 #define LLIST struct _llist
24 #define SYM struct _sym
27 SYM * snext; // * -> Next symbol on hash-chain
28 SYM * sorder; // * -> Next sym in order of reference
29 SYM * sdecl; // * -> Next sym in order of declaration
30 uint8_t stype; // Symbol type
31 uint16_t sattr; // Attribute bits
32 uint32_t sattre; // Extended attribute bits
33 uint16_t senv; // Enviroment number
34 uint64_t svalue; // Symbol value (now 64-bit)
35 uint8_t * sname; // * -> Symbol's print-name
36 LLIST * lineList; // * -> Macro's linked list of lines
37 LLIST * last; // * -> end of macro linked list
38 uint16_t cfileno; // File the macro is defined in
39 uint32_t uid; // Symbol's unique ID
44 extern uint32_t firstglobal;// Index of the fist global symbol in an ELF object.
47 SYM * lookup(uint8_t *, int, int);
48 void InitSymbolTable(void);
49 SYM * NewSymbol(uint8_t *, int, int);
50 void AddToSymbolDeclarationList(SYM *);
51 void ForceUndefinedSymbolsGlobal(void);
53 uint32_t sy_assign(uint8_t *, uint8_t *(*)());
54 uint32_t sy_assign_ELF(uint8_t *, uint8_t *(*)());
55 void DumpLODSymbols(void);
56 uint8_t * GetSymbolNameByUID(uint32_t);
58 #endif // __SYMBOL_H__