Reworked and improved the SYMBOLS section. The old syntax (using symbol =

value) is now gone, attributes are used instead. The SYMBOLS section does now
support imports, so the linker config can be used to force symbols (and
therefore module) imports. Evaluation of start address and size for memory
areas has been delayed even further, so it is now possible to use the values
from one memory area in the definition of the next one.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4851 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz
2010-11-12 14:17:35 +00:00
parent a0a0347ecc
commit 5e8252fa36
38 changed files with 460 additions and 334 deletions

View File

@@ -81,8 +81,8 @@ struct Export {
ObjData* Obj; /* Object file that exports the name */
unsigned ImpCount; /* How many imports for this symbol? */
Import* ImpList; /* List of imports for this symbol */
FilePos Pos; /* File position of definition */
ExprNode* Expr; /* Expression (0 if not def'd) */
FilePos Pos; /* File position of definition */
unsigned char Type; /* Type of export */
unsigned char AddrSize; /* Address size of export */
unsigned char ConDes[CD_TYPE_COUNT]; /* Constructor/destructor decls */
@@ -136,6 +136,9 @@ void InsertExport (Export* E);
Export* CreateConstExport (unsigned Name, long Value);
/* Create an export for a literal date */
Export* CreateExprExport (unsigned Name, ExprNode* Expr, unsigned char AddrSize);
/* Create an export for an expression */
Export* CreateMemoryExport (unsigned Name, MemoryArea* Mem, unsigned long Offs);
/* Create an relative export for a memory area offset */