diff options
author | wolfgang.thaller@gmx.net <unknown> | 2007-04-12 21:45:15 +0000 |
---|---|---|
committer | wolfgang.thaller@gmx.net <unknown> | 2007-04-12 21:45:15 +0000 |
commit | c8a127499b885a7547825fffc21fe8bbcad2bf97 (patch) | |
tree | b1d3e157767e1e42bd5c81a954646ce72fb21310 /rts/LinkerInternals.h | |
parent | d2fdf91ce20bc64a4d486df8d195b6b05b000db9 (diff) | |
download | haskell-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.h | 25 |
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; |