X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FLinkerInternals.h;h=3f7653f71235cc12f195b904c663c173387ecb68;hb=7e8e629fd62984ffcef028242c7da63f5f4bcc0c;hp=804b92bf71d83c8dfe4d27b9d47573c834468f40;hpb=2203c0cef25db52714de9bb33a5f3cde2d18b0f3;p=ghc-hetmet.git diff --git a/ghc/rts/LinkerInternals.h b/ghc/rts/LinkerInternals.h index 804b92b..3f7653f 100644 --- a/ghc/rts/LinkerInternals.h +++ b/ghc/rts/LinkerInternals.h @@ -1,5 +1,4 @@ /* ----------------------------------------------------------------------------- - * $Id: LinkerInternals.h,v 1.7 2003/10/08 09:42:35 wolfgang Exp $ * * (c) The GHC Team, 2000 * @@ -37,6 +36,18 @@ typedef } ProddableBlock; +/* 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; +#endif + /* Top-level structure for an object module. One of these is allocated * for each object file in use. */ @@ -54,7 +65,7 @@ typedef struct _ObjectCode { int n_symbols; /* ptr to malloc'd lump of memory holding the obj file */ - void* image; + char* image; /* The section-kind entries for this object module. Linked list. */ @@ -71,14 +82,14 @@ typedef struct _ObjectCode { outside one of these is an error in the linker. */ ProddableBlock* proddables; -#ifdef ia64_TARGET_ARCH +#ifdef ia64_HOST_ARCH /* Procedure Linkage Table for this object */ void *plt; unsigned int pltIndex; #endif -#ifdef darwin_TARGET_OS - char* jump_islands; +#ifdef powerpc_HOST_ARCH + ppcJumpIsland *jump_islands; unsigned long island_start_symbol; unsigned long n_islands; #endif