]> git.sur5r.net Git - cc65/blobdiff - src/ld65/exports.h
Better handling of imports in the ExprNode structure.
[cc65] / src / ld65 / exports.h
index 97a6eea6325b16be56c2803f65bde83649667f86..170f80978fa7b57cffdc9512f520f90d68733432 100644 (file)
@@ -6,10 +6,10 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 1998-2003 Ullrich von Bassewitz                                       */
-/*               Römerstrasse 52                                             */
-/*               D-70794 Filderstadt                                         */
-/* EMail:        uz@cc65.org                                                 */
+/* (C) 1998-2010, Ullrich von Bassewitz                                      */
+/*                Roemerstrasse 52                                           */
+/*                D-70794 Filderstadt                                        */
+/* EMail:         uz@cc65.org                                                */
 /*                                                                           */
 /*                                                                           */
 /* This software is provided 'as-is', without any expressed or implied       */
@@ -46,8 +46,9 @@
 #include "filepos.h"
 
 /* ld65 */
-#include "objdata.h"
 #include "config.h"
+#include "memarea.h"
+#include "objdata.h"
 
 
 
@@ -66,7 +67,7 @@ struct Import {
     struct Export*     Exp;            /* Matching export for this import */
     unsigned            Name;          /* Name if not in table */
     unsigned char       Flags;          /* Generic flags */
-    unsigned char      Type;           /* Type of import */
+    unsigned char      AddrSize;       /* Address size of import */
 };
 
 
@@ -83,6 +84,7 @@ struct Export {
     FilePos            Pos;            /* File position of definition */
     ExprNode*                  Expr;           /* Expression (0 if not def'd) */
     unsigned char      Type;           /* Type of export */
+    unsigned char       AddrSize;       /* Address size of export */
     unsigned char      ConDes[CD_TYPE_COUNT];  /* Constructor/destructor decls */
 };
 
@@ -113,8 +115,11 @@ void FreeImport (Import* I);
 Import* ReadImport (FILE* F, ObjData* Obj);
 /* Read an import from a file and insert it into the table */
 
-void InsertImport (Import* I);
-/* Insert an import into the table */
+Import* GenImport (unsigned Name, unsigned char AddrSize);
+/* Generate a new import with the given name and address size and return it */
+
+Import* InsertImport (Import* I);
+/* Insert an import into the table, return I */
 
 void FreeExport (Export* E);
 /* Free an export. NOTE: This won't remove the export from the exports table,
@@ -131,7 +136,7 @@ void InsertExport (Export* E);
 Export* CreateConstExport (unsigned Name, long Value);
 /* Create an export for a literal date */
 
-Export* CreateMemoryExport (unsigned Name, Memory* Mem, unsigned long Offs);
+Export* CreateMemoryExport (unsigned Name, MemoryArea* Mem, unsigned long Offs);
 /* Create an relative export for a memory area offset */
 
 Export* CreateSegmentExport (unsigned Name, Segment* Seg, unsigned long Offs);
@@ -157,8 +162,13 @@ int IsConstExport (const Export* E);
 long GetExportVal (const Export* E);
 /* Get the value of this export */
 
-void CheckExports (ExpCheckFunc F, void* Data);
-/* Check if there are any unresolved symbols. On unresolved symbols, F is
+void CheckExports (void);
+/* Setup the list of all exports and check for export/import symbol type
+ * mismatches.
+ */
+
+void CheckUnresolvedImports (ExpCheckFunc F, void* Data);
+/* Check if there are any unresolved imports. On unresolved imports, F is
  * called (see the comments on ExpCheckFunc in the data section).
  */