X-Git-Url: https://oss.titaniummirror.com/gitweb?p=msp430-binutils.git;a=blobdiff_plain;f=include%2Fcoff%2Fxcoff.h;fp=include%2Fcoff%2Fxcoff.h;h=3318e55d0e35082033b442f5718da1afc24860b7;hp=7c1eef53acabcf076dad7aacc7231af4eed15fe6;hb=d5da4f291af551c0b8b79e1d4a9b173d60e5c10e;hpb=7b5ea4fcdf2819e070665ab5610f8b48e3867c10 diff --git a/include/coff/xcoff.h b/include/coff/xcoff.h index 7c1eef5..3318e55 100644 --- a/include/coff/xcoff.h +++ b/include/coff/xcoff.h @@ -1,7 +1,7 @@ /* Internal format of XCOFF object file data structures for BFD. - Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005 - Free Software Foundation, Inc. + Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, + 2009 Free Software Foundation, Inc. Written by Ian Lance Taylor , Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -214,6 +214,8 @@ struct internal_ldsym #define L_ENTRY (0x20) /* Exported symbol. */ #define L_EXPORT (0x10) +/* Weak symbol. */ +#define L_WEAK (0x08) /* The ldrel structure. This is used to represent a reloc in the .loader section. */ @@ -291,11 +293,12 @@ struct xcoff_link_hash_entry #define XCOFF_LDREL 0x00000008 /* Symbol is the entry point. */ #define XCOFF_ENTRY 0x00000010 -/* Symbol is called; this is, it appears in a R_BR reloc. */ +/* Symbol is for a function and is the target of a relocation. + The relocation may or may not be a branch-type relocation. */ #define XCOFF_CALLED 0x00000020 /* Symbol needs the TOC entry filled in. */ #define XCOFF_SET_TOC 0x00000040 -/* Symbol is explicitly imported. */ +/* Symbol is implicitly or explicitly imported. */ #define XCOFF_IMPORT 0x00000080 /* Symbol is explicitly exported. */ #define XCOFF_EXPORT 0x00000100 @@ -315,6 +318,10 @@ struct xcoff_link_hash_entry #define XCOFF_SYSCALL32 0x00008000 /* Symbol is an imported 64 bit syscall. */ #define XCOFF_SYSCALL64 0x00010000 +/* Symbol was not explicitly defined by the time it was marked. */ +#define XCOFF_WAS_UNDEFINED 0x00020000 +/* We have assigned an output XCOFF entry to this symbol. */ +#define XCOFF_ALLOCATED 0x00040000 /* The XCOFF linker hash table. */ @@ -326,64 +333,9 @@ struct xcoff_link_hash_entry #define XCOFF_SPECIAL_SECTION_END 4 #define XCOFF_SPECIAL_SECTION_END2 5 -struct xcoff_link_hash_table -{ - struct bfd_link_hash_table root; - - /* The .debug string hash table. We need to compute this while - reading the input files, so that we know how large the .debug - section will be before we assign section positions. */ - struct bfd_strtab_hash *debug_strtab; - - /* The .debug section we will use for the final output. */ - asection *debug_section; - - /* The .loader section we will use for the final output. */ - asection *loader_section; - - /* A count of non TOC relative relocs which will need to be - allocated in the .loader section. */ - size_t ldrel_count; - - /* The .loader section header. */ - struct internal_ldhdr ldhdr; - - /* The .gl section we use to hold global linkage code. */ - asection *linkage_section; - - /* The .tc section we use to hold toc entries we build for global - linkage code. */ - asection *toc_section; - - /* The .ds section we use to hold function descriptors which we - create for exported symbols. */ - asection *descriptor_section; - - /* The list of import files. */ - struct xcoff_import_file *imports; - - /* Required alignment of sections within the output file. */ - unsigned long file_align; - - /* Whether the .text section must be read-only. */ - bfd_boolean textro; - - /* Whether garbage collection was done. */ - bfd_boolean gc; - - /* A linked list of symbols for which we have size information. */ - struct xcoff_link_size_list - { - struct xcoff_link_size_list *next; - struct xcoff_link_hash_entry *h; - bfd_size_type size; - } - *size_list; - - /* Magic sections: _text, _etext, _data, _edata, _end, end. */ - asection *special_sections[XCOFF_NUMBER_OF_SPECIAL_SECTIONS]; -}; - +/* These flags indicate which of -bexpall and -bexpfull are in effect. */ +#define XCOFF_EXPALL 1 +#define XCOFF_EXPFULL 2 /* This structure is used to pass information through xcoff_link_hash_traverse. */ @@ -399,8 +351,8 @@ struct xcoff_loader_info /* Link information structure. */ struct bfd_link_info *info; - /* Whether all defined symbols should be exported. */ - bfd_boolean export_defineds; + /* A mask of XCOFF_EXPALL and XCOFF_EXPFULL flags. */ + unsigned int auto_export_flags; /* Number of ldsym structures. */ size_t ldsym_count; @@ -636,4 +588,8 @@ struct xcoff_ar_hdr_big #define arch_xhdr_big(bfd) \ ((struct xcoff_ar_hdr_big *) arch_eltdata (bfd)->arch_header) +/* True if symbols of class CLASS are external. */ +#define EXTERN_SYM_P(CLASS) \ + ((CLASS) == C_EXT || (CLASS) == C_AIX_WEAKEXT) + #endif /* _INTERNAL_XCOFF_H */