Line 1... |
Line 1... |
/* Internal format of XCOFF object file data structures for BFD.
|
/* Internal format of XCOFF object file data structures for BFD.
|
|
|
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005
|
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005,
|
Free Software Foundation, Inc.
|
2009 Free Software Foundation, Inc.
|
Written by Ian Lance Taylor <ian@cygnus.com>, Cygnus Support.
|
Written by Ian Lance Taylor <ian@cygnus.com>, Cygnus Support.
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
|
|
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
Line 212... |
Line 212... |
#define L_IMPORT (0x40)
|
#define L_IMPORT (0x40)
|
/* Entry point. */
|
/* Entry point. */
|
#define L_ENTRY (0x20)
|
#define L_ENTRY (0x20)
|
/* Exported symbol. */
|
/* Exported symbol. */
|
#define L_EXPORT (0x10)
|
#define L_EXPORT (0x10)
|
|
/* Weak symbol. */
|
|
#define L_WEAK (0x08)
|
|
|
/* The ldrel structure. This is used to represent a reloc in the
|
/* The ldrel structure. This is used to represent a reloc in the
|
.loader section. */
|
.loader section. */
|
|
|
struct internal_ldrel
|
struct internal_ldrel
|
Line 289... |
Line 291... |
#define XCOFF_DEF_DYNAMIC 0x00000004
|
#define XCOFF_DEF_DYNAMIC 0x00000004
|
/* Symbol is used in a reloc being copied into the .loader section. */
|
/* Symbol is used in a reloc being copied into the .loader section. */
|
#define XCOFF_LDREL 0x00000008
|
#define XCOFF_LDREL 0x00000008
|
/* Symbol is the entry point. */
|
/* Symbol is the entry point. */
|
#define XCOFF_ENTRY 0x00000010
|
#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
|
#define XCOFF_CALLED 0x00000020
|
/* Symbol needs the TOC entry filled in. */
|
/* Symbol needs the TOC entry filled in. */
|
#define XCOFF_SET_TOC 0x00000040
|
#define XCOFF_SET_TOC 0x00000040
|
/* Symbol is explicitly imported. */
|
/* Symbol is implicitly or explicitly imported. */
|
#define XCOFF_IMPORT 0x00000080
|
#define XCOFF_IMPORT 0x00000080
|
/* Symbol is explicitly exported. */
|
/* Symbol is explicitly exported. */
|
#define XCOFF_EXPORT 0x00000100
|
#define XCOFF_EXPORT 0x00000100
|
/* Symbol has been processed by xcoff_build_ldsyms. */
|
/* Symbol has been processed by xcoff_build_ldsyms. */
|
#define XCOFF_BUILT_LDSYM 0x00000200
|
#define XCOFF_BUILT_LDSYM 0x00000200
|
Line 313... |
Line 316... |
#define XCOFF_RTINIT 0x00004000
|
#define XCOFF_RTINIT 0x00004000
|
/* Symbol is an imported 32 bit syscall. */
|
/* Symbol is an imported 32 bit syscall. */
|
#define XCOFF_SYSCALL32 0x00008000
|
#define XCOFF_SYSCALL32 0x00008000
|
/* Symbol is an imported 64 bit syscall. */
|
/* Symbol is an imported 64 bit syscall. */
|
#define XCOFF_SYSCALL64 0x00010000
|
#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. */
|
/* The XCOFF linker hash table. */
|
|
|
#define XCOFF_NUMBER_OF_SPECIAL_SECTIONS 6
|
#define XCOFF_NUMBER_OF_SPECIAL_SECTIONS 6
|
#define XCOFF_SPECIAL_SECTION_TEXT 0
|
#define XCOFF_SPECIAL_SECTION_TEXT 0
|
Line 324... |
Line 331... |
#define XCOFF_SPECIAL_SECTION_DATA 2
|
#define XCOFF_SPECIAL_SECTION_DATA 2
|
#define XCOFF_SPECIAL_SECTION_EDATA 3
|
#define XCOFF_SPECIAL_SECTION_EDATA 3
|
#define XCOFF_SPECIAL_SECTION_END 4
|
#define XCOFF_SPECIAL_SECTION_END 4
|
#define XCOFF_SPECIAL_SECTION_END2 5
|
#define XCOFF_SPECIAL_SECTION_END2 5
|
|
|
struct xcoff_link_hash_table
|
/* These flags indicate which of -bexpall and -bexpfull are in effect. */
|
{
|
#define XCOFF_EXPALL 1
|
struct bfd_link_hash_table root;
|
#define XCOFF_EXPFULL 2
|
|
|
/* 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];
|
|
};
|
|
|
|
|
|
/* This structure is used to pass information through
|
/* This structure is used to pass information through
|
xcoff_link_hash_traverse. */
|
xcoff_link_hash_traverse. */
|
|
|
struct xcoff_loader_info
|
struct xcoff_loader_info
|
Line 397... |
Line 349... |
bfd *output_bfd;
|
bfd *output_bfd;
|
|
|
/* Link information structure. */
|
/* Link information structure. */
|
struct bfd_link_info *info;
|
struct bfd_link_info *info;
|
|
|
/* Whether all defined symbols should be exported. */
|
/* A mask of XCOFF_EXPALL and XCOFF_EXPFULL flags. */
|
bfd_boolean export_defineds;
|
unsigned int auto_export_flags;
|
|
|
/* Number of ldsym structures. */
|
/* Number of ldsym structures. */
|
size_t ldsym_count;
|
size_t ldsym_count;
|
|
|
/* Size of string table. */
|
/* Size of string table. */
|
Line 634... |
Line 586... |
#define arch_xhdr(bfd) \
|
#define arch_xhdr(bfd) \
|
((struct xcoff_ar_hdr *) arch_eltdata (bfd)->arch_header)
|
((struct xcoff_ar_hdr *) arch_eltdata (bfd)->arch_header)
|
#define arch_xhdr_big(bfd) \
|
#define arch_xhdr_big(bfd) \
|
((struct xcoff_ar_hdr_big *) arch_eltdata (bfd)->arch_header)
|
((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 */
|
#endif /* _INTERNAL_XCOFF_H */
|
|
|
No newline at end of file
|
No newline at end of file
|