[project @ 2005-01-28 12:55:17 by simonmar]
[ghc-hetmet.git] / ghc / rts / LinkerInternals.h
index 2f5fa17..f1e2677 100644 (file)
@@ -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;