summaryrefslogtreecommitdiff
path: root/rts/LinkerInternals.h
diff options
context:
space:
mode:
authorwolfgang.thaller@gmx.net <unknown>2007-04-12 21:45:15 +0000
committerwolfgang.thaller@gmx.net <unknown>2007-04-12 21:45:15 +0000
commitc8a127499b885a7547825fffc21fe8bbcad2bf97 (patch)
treeb1d3e157767e1e42bd5c81a954646ce72fb21310 /rts/LinkerInternals.h
parentd2fdf91ce20bc64a4d486df8d195b6b05b000db9 (diff)
downloadhaskell-c8a127499b885a7547825fffc21fe8bbcad2bf97.tar.gz
Darwin/x86_64 linker support
Initial support for loading x86_64 Mach-O files
Diffstat (limited to 'rts/LinkerInternals.h')
-rw-r--r--rts/LinkerInternals.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/rts/LinkerInternals.h b/rts/LinkerInternals.h
index 07d6334c7f..f081e62894 100644
--- a/rts/LinkerInternals.h
+++ b/rts/LinkerInternals.h
@@ -42,14 +42,19 @@ typedef
/* Jump Islands are sniplets of machine code required for relative
* address relocations on the PowerPC.
*/
-#ifdef powerpc_HOST_ARCH
typedef struct {
- short lis_r12, hi_addr;
- short ori_r12_r12, lo_addr;
- long mtctr_r12;
- long bctr;
-} ppcJumpIsland;
+#ifdef powerpc_HOST_ARCH
+ struct {
+ short lis_r12, hi_addr;
+ short ori_r12_r12, lo_addr;
+ long mtctr_r12;
+ long bctr;
+ } jumpIsland;
+#elif x86_64_TARGET_ARCH
+ uint64_t addr;
+ uint8_t jumpIsland[6];
#endif
+} SymbolExtra;
/* Top-level structure for an object module. One of these is allocated
* for each object file in use.
@@ -97,10 +102,10 @@ typedef struct _ObjectCode {
unsigned int pltIndex;
#endif
-#ifdef powerpc_HOST_ARCH
- ppcJumpIsland *jump_islands;
- unsigned long island_start_symbol;
- unsigned long n_islands;
+#if powerpc_HOST_ARCH || x86_64_HOST_ARCH
+ SymbolExtra *symbol_extras;
+ unsigned long first_symbol_extra;
+ unsigned long n_symbol_extras;
#endif
} ObjectCode;