summaryrefslogtreecommitdiff
path: root/rts/linker/JitObjectCoff.c
diff options
context:
space:
mode:
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;
-}
-