summaryrefslogtreecommitdiff
path: root/rts/LinkerInternals.h
diff options
context:
space:
mode:
authorBen Gamari <bgamari.foss@gmail.com>2016-11-02 15:02:13 -0400
committerBen Gamari <ben@smart-cactus.org>2016-11-02 15:42:00 -0400
commit6ea0b4f1a6a0478eeeacb0a7be62e426d4aa58e5 (patch)
tree337c52b79b06b0b79d554096c9e4aac8ac8d1fe4 /rts/LinkerInternals.h
parentc3446c63d64bdc5c2fa627f345c59e893ba0c176 (diff)
downloadhaskell-6ea0b4f1a6a0478eeeacb0a7be62e426d4aa58e5.tar.gz
linker: Split PEi386 implementation into new source file
Test Plan: Validate Reviewers: erikd, austin, simonmar Reviewed By: simonmar Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2648
Diffstat (limited to 'rts/LinkerInternals.h')
-rw-r--r--rts/LinkerInternals.h118
1 files changed, 3 insertions, 115 deletions
diff --git a/rts/LinkerInternals.h b/rts/LinkerInternals.h
index 1d5288b310..3b6790b3e8 100644
--- a/rts/LinkerInternals.h
+++ b/rts/LinkerInternals.h
@@ -209,6 +209,7 @@ typedef struct _RtsSymbolInfo {
void exitLinker( void );
void freeObjectCode (ObjectCode *oc);
+SymbolAddr* loadSymbol(SymbolName *lbl, RtsSymbolInfo *pinfo);
void *mmapForLinker (size_t bytes, uint32_t flags, int fd, int offset);
@@ -220,122 +221,9 @@ void addSection (Section *s, SectionKind kind, SectionAlloc alloc,
void* start, StgWord size, StgWord mapped_offset,
void* mapped_start, StgWord mapped_size);
-#if defined(mingw32_HOST_OS)
+HsBool ghciLookupSymbolInfo(HashTable *table,
+ const SymbolName* key, RtsSymbolInfo **result);
-typedef unsigned char UChar;
-typedef unsigned short UInt16;
-typedef short Int16;
-typedef unsigned int UInt32;
-typedef int Int32;
-typedef unsigned long long int UInt64;
-
-
-typedef
-struct {
- UInt16 Machine;
- UInt16 NumberOfSections;
- UInt32 TimeDateStamp;
- UInt32 PointerToSymbolTable;
- UInt32 NumberOfSymbols;
- UInt16 SizeOfOptionalHeader;
- UInt16 Characteristics;
-}
-COFF_header;
-
-#define sizeof_COFF_header 20
-
-/* Section 7.1 PE Specification */
-typedef
-struct {
- UInt16 Sig1;
- UInt16 Sig2;
- UInt16 Version;
- UInt16 Machine;
- UInt32 TimeDateStamp;
- UInt32 SizeOfData;
- UInt16 Ordinal;
- UInt16 Type_NameType_Reserved;
-}
-COFF_import_header;
-
-#define sizeof_COFF_import_Header 20
-
-typedef
-struct {
- UChar Name[8];
- UInt32 VirtualSize;
- UInt32 VirtualAddress;
- UInt32 SizeOfRawData;
- UInt32 PointerToRawData;
- UInt32 PointerToRelocations;
- UInt32 PointerToLinenumbers;
- UInt16 NumberOfRelocations;
- UInt16 NumberOfLineNumbers;
- UInt32 Characteristics;
-}
-COFF_section;
-
-#define sizeof_COFF_section 40
-
-
-typedef
-struct {
- UChar Name[8];
- UInt32 Value;
- Int16 SectionNumber;
- UInt16 Type;
- UChar StorageClass;
- UChar NumberOfAuxSymbols;
-}
-COFF_symbol;
-
-#define sizeof_COFF_symbol 18
-
-
-typedef
-struct {
- UInt32 VirtualAddress;
- UInt32 SymbolTableIndex;
- UInt16 Type;
-}
-COFF_reloc;
-
-#define sizeof_COFF_reloc 10
-
-/* From PE spec doc, section 3.3.2 */
-/* Note use of MYIMAGE_* since IMAGE_* are already defined in
-windows.h -- for the same purpose, but I want to know what I'm
-getting, here. */
-#define MYIMAGE_FILE_RELOCS_STRIPPED 0x0001
-#define MYIMAGE_FILE_EXECUTABLE_IMAGE 0x0002
-#define MYIMAGE_FILE_DLL 0x2000
-#define MYIMAGE_FILE_SYSTEM 0x1000
-#define MYIMAGE_FILE_BYTES_REVERSED_HI 0x8000
-#define MYIMAGE_FILE_BYTES_REVERSED_LO 0x0080
-#define MYIMAGE_FILE_32BIT_MACHINE 0x0100
-
-/* From PE spec doc, section 5.4.2 and 5.4.4 */
-#define MYIMAGE_SYM_CLASS_EXTERNAL 2
-#define MYIMAGE_SYM_CLASS_STATIC 3
-#define MYIMAGE_SYM_UNDEFINED 0
-#define MYIMAGE_SYM_CLASS_SECTION 104
-#define MYIMAGE_SYM_CLASS_WEAK_EXTERNAL 105
-
-/* From PE spec doc, section 3.1 */
-#define MYIMAGE_SCN_CNT_CODE 0x00000020
-#define MYIMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
-#define MYIMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
-#define MYIMAGE_SCN_LNK_COMDAT 0x00001000
-#define MYIMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
-#define MYIMAGE_SCN_LNK_REMOVE 0x00000800
-#define MYIMAGE_SCN_MEM_DISCARDABLE 0x02000000
-
-/* From PE spec doc, section 5.2.1 */
-#define MYIMAGE_REL_I386_DIR32 0x0006
-#define MYIMAGE_REL_I386_DIR32NB 0x0007
-#define MYIMAGE_REL_I386_REL32 0x0014
-
-#endif /* OBJFORMAT_PEi386 */
/*************************************************