X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=ghc%2Frts%2FLinkerInternals.h;h=0763703a323463878608005ecd51152655f92ac8;hb=aadb64aa5644f2a3ad8a645e2c7a1e72c2f61e53;hp=cfaeaead996ab874b30eeb241370697bb2d84f22;hpb=cb97b80de5d1596117e6c807741cda5a02e0b35d;p=ghc-hetmet.git diff --git a/ghc/rts/LinkerInternals.h b/ghc/rts/LinkerInternals.h index cfaeaea..0763703 100644 --- a/ghc/rts/LinkerInternals.h +++ b/ghc/rts/LinkerInternals.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: LinkerInternals.h,v 1.4 2001/08/29 15:12:21 sewardj Exp $ + * $Id: LinkerInternals.h,v 1.6 2002/06/09 13:37:44 matthewc Exp $ * * (c) The GHC Team, 2000 * @@ -13,13 +13,20 @@ typedef enum { OBJECT_LOADED, OBJECT_RESOLVED } OStatus; the GC for deciding whether or not a pointer on the stack is a code pointer. */ -typedef enum { SECTIONKIND_CODE_OR_RODATA, - SECTIONKIND_RWDATA, - SECTIONKIND_OTHER, - SECTIONKIND_NOINFOAVAIL } +typedef + enum { SECTIONKIND_CODE_OR_RODATA, + SECTIONKIND_RWDATA, + SECTIONKIND_OTHER, + SECTIONKIND_NOINFOAVAIL } SectionKind; -typedef struct { void* start; void* end; SectionKind kind; } +typedef + struct _Section { + void* start; + void* end; + SectionKind kind; + struct _Section* next; + } Section; typedef @@ -49,9 +56,9 @@ typedef struct _ObjectCode { /* ptr to malloc'd lump of memory holding the obj file */ void* image; - /* The section-kind entries for this object module. Dynamically expands. */ - Section* sections; - int n_sections; + /* The section-kind entries for this object module. Linked + list. */ + Section* sections; /* A private hash table for local symbols. */ HashTable* lochash; @@ -63,7 +70,13 @@ 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_TARGET_ARCH + /* Procedure Linkage Table for this object */ + void *plt; + unsigned int pltIndex; +#endif + } ObjectCode; extern ObjectCode *objects;