summaryrefslogtreecommitdiff
path: root/rts/linker/JitObjectCoff.c
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-05-23 15:55:30 -0400
committerGHC GitLab CI <ghc-ci@gitlab-haskell.org>2022-05-23 23:05:26 -0400
commitf390cfc51ca93ef883a454308942ca3f8497ae31 (patch)
treeafbe6f3d48d7facd80a47b388a90066d4ddcb91b /rts/linker/JitObjectCoff.c
parent1ca1efdc8758458a28414f6d00c679b8f9a6bd0a (diff)
downloadhaskell-wip/gdb-jit-object.tar.gz
(cherry picked from commit 07c9532947a623a065d43ef5f69e530ca762f986)
Diffstat (limited to 'rts/linker/JitObjectCoff.c')
-rw-r--r--rts/linker/JitObjectCoff.c47
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;
-}
-