X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=ghc%2Frts%2FLinkerInternals.h;h=f1e2677851861488c7bfb3f3be069add9b303da2;hb=153b9cb9b11e05c4edb1b6bc0a7b972660e41f70;hp=2f5fa1760bd4985550f375e64fadd7d0e112d443;hpb=9c5f23d4e31b06a3d6ec8eca7c82934571c348de;p=ghc-hetmet.git diff --git a/ghc/rts/LinkerInternals.h b/ghc/rts/LinkerInternals.h index 2f5fa17..f1e2677 100644 --- a/ghc/rts/LinkerInternals.h +++ b/ghc/rts/LinkerInternals.h @@ -1,5 +1,4 @@ /* ----------------------------------------------------------------------------- - * $Id: LinkerInternals.h,v 1.5 2001/09/04 16:33:04 sewardj 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. */ @@ -70,7 +81,19 @@ typedef struct _ObjectCode { safely be prodded during relocation. Any attempt to prod outside one of these is an error in the linker. */ ProddableBlock* proddables; - + +#ifdef ia64_HOST_ARCH + /* Procedure Linkage Table for this object */ + void *plt; + unsigned int pltIndex; +#endif + +#ifdef powerpc_HOST_ARCH + ppcJumpIsland *jump_islands; + unsigned long island_start_symbol; + unsigned long n_islands; +#endif + } ObjectCode; extern ObjectCode *objects;