diff options
author | Ben Gamari <ben@smart-cactus.org> | 2022-05-23 15:55:30 -0400 |
---|---|---|
committer | GHC GitLab CI <ghc-ci@gitlab-haskell.org> | 2022-05-23 23:05:26 -0400 |
commit | f390cfc51ca93ef883a454308942ca3f8497ae31 (patch) | |
tree | afbe6f3d48d7facd80a47b388a90066d4ddcb91b /rts/linker/JitObjectCoff.c | |
parent | 1ca1efdc8758458a28414f6d00c679b8f9a6bd0a (diff) | |
download | haskell-wip/gdb-jit-object.tar.gz |
(cherry picked from commit 07c9532947a623a065d43ef5f69e530ca762f986)
Diffstat (limited to 'rts/linker/JitObjectCoff.c')
-rw-r--r-- | rts/linker/JitObjectCoff.c | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/rts/linker/JitObjectCoff.c b/rts/linker/JitObjectCoff.c deleted file mode 100644 index 77ce9fecc9..0000000000 --- a/rts/linker/JitObjectCoff.c +++ /dev/null @@ -1,47 +0,0 @@ -#include "BufferBuilder.h" -#include "JitObject.h" -#include "LinkerInternals.h" -#include "RtsUtils.h" - -struct BufferBuilder build_jit_object(ObjectCode *oc) -{ - struct BufferBuilder bb = buffer_builder_new(4096); - - // COFF header - buffer_builder_uint16(&bb, IMAGE_FILE_MACHINE_AMD64); - buffer_builder_uint16(&bb, 1); // NumberOfSections - buffer_builder_uint32(&bb, 0); // TimeDateStamp - uint32_t *ptr_to_symbol_table = buffer_builder_uint32(&bb, 0); // PointerToSymbolTable - buffer_builder_uint32(&bb, n_syms); // NumberOfSymbols - buffer_builder_uint16(&bb, 0); // SizeOfOptionalHeader - buffer_builder_uint16(&bb, 0); // Characteristics - - // Sections - buffer_builder_push(&bb, ".text\0\0\0", 8); // Name - buffer_builder_uint32(&bb, sect_sz); // VirtualSize - buffer_builder_uint32(&bb, sect_base); // VirtualAddress - buffer_builder_uint32(&bb, 0); // SizeOfRawData - buffer_builder_uint32(&bb, 0); // PointerToRawData - buffer_builder_uint32(&bb, 0); // PointerToRelocations - buffer_builder_uint32(&bb, 0); // PointerToLinenumbers - buffer_builder_uint16(&bb, 0); // NumberOfRelocations - buffer_builder_uint16(&bb, 0); // NumberOfLinenumbers - buffer_builder_uint32(&bb, 0); // Characteristics - - struct BufferBuilder strings = buffer_builder_new(4096); - for (int i=0; i < oc->n_symbols; i++) { - Symbol_t *sym = &oc->symbols[i]; - size_t offset = buffer_builder_filled_size(&strings); - buffer_builder_push(&strings, sym->name, strlen(sym->name)); - buffer_builder_uint32(&bb, 0); - buffer_builder_uint32(&bb, offset); // RawName index - buffer_builder_uint32(&bb, value); // Value - buffer_builder_uint16(&bb, 1); // SectionNumber - buffer_builder_uint8(&bb, 0x20); // StorageClass - buffer_builder_uint8(&bb, 0); // NumberOfAuxSymbols - } - - buffer_builder_append(&bb, strings); - return bb; -} - |