/* bfdlink.h -- header file for BFD link routines
- Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+ Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002
Free Software Foundation, Inc.
Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support.
discard_l, /* Discard local temporary symbols. */
discard_all /* Discard all locals. */
};
+
+/* Describes the type of hash table entry structure being used.
+ Different hash table structure have different fields and so
+ support different linking features. */
+enum bfd_link_hash_table_type
+ {
+ bfd_link_generic_hash_table,
+ bfd_link_elf_hash_table
+ };
\f
/* These are the possible types of an entry in the BFD link hash
table. */
struct bfd_link_hash_entry *undefs;
/* Entries are added to the tail of the undefs list. */
struct bfd_link_hash_entry *undefs_tail;
+ /* The type of the ink hash table. */
+ enum bfd_link_hash_table_type type;
};
/* Look up an entry in a link hash table. If FOLLOW is true, this
/* May be used to set DT_FLAGS_1 for ELF. */
bfd_vma flags_1;
- /* true if auto-import thunks for DATA items in pei386 DLLs
+ /* True if auto-import thunks for DATA items in pei386 DLLs
should be generated/linked against. */
boolean pei386_auto_import;
+
+ /* True if non-PLT relocs should be merged into one reloc section
+ and sorted so that relocs against the same symbol come together. */
+ boolean combreloc;
+
+ /* True if executable should not contain copy relocs.
+ Setting this true may result in a non-sharable text segment. */
+ boolean nocopyreloc;
+
+ /* True if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
+ should be created. */
+ boolean eh_frame_hdr;
+
+ /* How many spare .dynamic DT_NULL entries should be added? */
+ unsigned int spare_dynamic_tags;
};
/* This structures holds a set of callback functions. These are
{
bfd_undefined_link_order, /* Undefined. */
bfd_indirect_link_order, /* Built from a section. */
- bfd_fill_link_order, /* Fill with a 16 bit constant. */
bfd_data_link_order, /* Set to explicit data. */
bfd_section_reloc_link_order, /* Relocate against a section. */
bfd_symbol_reloc_link_order /* Relocate against a symbol. */
} indirect;
struct
{
- /* Value to fill with. */
- unsigned int value;
- } fill;
- struct
- {
- /* Data to put into file. The size field gives the number
- of bytes which this field points to. */
+ /* Size of contents, or zero when contents size == size
+ within output section.
+ A non-zero value allows filling of the output section
+ with an arbitrary repeated pattern. */
+ unsigned int size;
+ /* Data to put into file. */
bfd_byte *contents;
} data;
struct