1 /*****************************************************************************/ 2 /* */ 3 /* objdata.h */ 4 /* */ 5 /* Handling object file data for the ar65 archiver */ 6 /* */ 7 /* */ 8 /* */ 9 /* (C) 1998-2011, Ullrich von Bassewitz */ 10 /* Roemerstrasse 52 */ 11 /* D-70794 Filderstadt */ 12 /* EMail: uz@cc65.org */ 13 /* */ 14 /* */ 15 /* This software is provided 'as-is', without any expressed or implied */ 16 /* warranty. In no event will the authors be held liable for any damages */ 17 /* arising from the use of this software. */ 18 /* */ 19 /* Permission is granted to anyone to use this software for any purpose, */ 20 /* including commercial applications, and to alter it and redistribute it */ 21 /* freely, subject to the following restrictions: */ 22 /* */ 23 /* 1. The origin of this software must not be misrepresented; you must not */ 24 /* claim that you wrote the original software. If you use this software */ 25 /* in a product, an acknowledgment in the product documentation would be */ 26 /* appreciated but is not required. */ 27 /* 2. Altered source versions must be plainly marked as such, and must not */ 28 /* be misrepresented as being the original software. */ 29 /* 3. This notice may not be removed or altered from any source */ 30 /* distribution. */ 31 /* */ 32 /*****************************************************************************/ 33 34 35 36 #ifndef OBJDATA_H 37 #define OBJDATA_H 38 39 40 41 /* common */ 42 #include "coll.h" 43 #include "objdefs.h" 44 45 46 47 /*****************************************************************************/ 48 /* Data */ 49 /*****************************************************************************/ 50 51 52 53 /* Values for the Flags field */ 54 #define OBJ_HAVEDATA 0x0001 /* The object data is in the tmp file */ 55 56 57 /* Internal structure holding object file data */ 58 typedef struct ObjData ObjData; 59 struct ObjData { 60 char* Name; /* Module name */ 61 62 /* Index entry */ 63 unsigned Flags; 64 unsigned long MTime; /* Modifiation time of object file */ 65 unsigned long Start; /* Start offset of data in library */ 66 unsigned long Size; /* Size of data in library */ 67 68 /* Object file header */ 69 ObjHeader Header; 70 71 /* Basic data needed for simple checks */ 72 Collection Strings; /* Strings from the object file */ 73 Collection Exports; /* Exports list from object file */ 74 }; 75 76 77 78 /* Collection with all object files */ 79 extern Collection ObjPool; 80 81 82 83 /*****************************************************************************/ 84 /* Code */ 85 /*****************************************************************************/ 86 87 88 89 ObjData* NewObjData (void); 90 /* Allocate a new structure on the heap, insert it into the list, return it */ 91 92 void FreeObjData (ObjData* O); 93 /* Free a complete struct */ 94 95 void ClearObjData (ObjData* O); 96 /* Remove any data stored in O */ 97 98 ObjData* FindObjData (const char* Module); 99 /* Search for the module with the given name and return it. Return NULL if the 100 ** module is not in the list. 101 */ 102 103 void DelObjData (const char* Module); 104 /* Delete the object module from the list */ 105 106 107 108 /* End of objdata.h */ 109 110 #endif 111