diff options
author | Ben Gamari <bgamari.foss@gmail.com> | 2016-11-02 15:02:13 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2016-11-02 15:42:00 -0400 |
commit | 6ea0b4f1a6a0478eeeacb0a7be62e426d4aa58e5 (patch) | |
tree | 337c52b79b06b0b79d554096c9e4aac8ac8d1fe4 /rts/LinkerInternals.h | |
parent | c3446c63d64bdc5c2fa627f345c59e893ba0c176 (diff) | |
download | haskell-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.h | 118 |
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 */ /************************************************* |