/* bfdlink.h -- header file for BFD link routines
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
bfd_link_hash_warning /* Like indirect, but warn if referenced. */
};
-enum bfd_link_common_skip_ar_aymbols
+enum bfd_link_common_skip_ar_symbols
{
bfd_link_common_skip_none,
bfd_link_common_skip_text,
bfd_link_common_skip_all
};
+struct bfd_link_hash_common_entry
+ {
+ unsigned int alignment_power; /* Alignment. */
+ asection *section; /* Symbol section. */
+ };
+
/* The linking routines use a hash table which uses this structure for
its elements. */
directly because we don't want to increase the size of
the union; this structure is a major space user in the
linker. */
- struct bfd_link_hash_common_entry
- {
- unsigned int alignment_power; /* Alignment. */
- asection *section; /* Symbol section. */
- } *p;
+ struct bfd_link_hash_common_entry *p;
bfd_size_type size; /* Common symbol size. */
} c;
} u;
{
/* The hash table itself. */
struct bfd_hash_table table;
- /* The back end which created this hash table. This indicates the
- type of the entries in the hash table, which is sometimes
- important information when linking object files of different
- types together. */
- const bfd_target *creator;
/* A linked list of undefined and common symbols, linked through the
next field in the bfd_link_hash_entry structure. */
struct bfd_link_hash_entry *undefs;
extern void bfd_link_repair_undef_list
(struct bfd_link_hash_table *table);
+/* Read symbols and cache symbol pointer array in outsymbols. */
+extern bfd_boolean bfd_generic_link_read_symbols (bfd *);
+
struct bfd_sym_chain
{
struct bfd_sym_chain *next;
/* TRUE if we should warn when adding a DT_TEXTREL to a shared object. */
unsigned int warn_shared_textrel: 1;
+ /* TRUE if we should warn alternate ELF machine code. */
+ unsigned int warn_alternate_em: 1;
+
/* TRUE if unreferenced sections should be removed. */
unsigned int gc_sections: 1;
--dynamic-list command line options. */
unsigned int dynamic: 1;
+ /* Non-NULL if .note.gnu.build-id section should be created. */
+ char *emit_note_gnu_build_id;
+
/* What to do with unresolved symbols in an object file.
When producing executables the default is GENERATE_ERROR.
When producing shared libraries the default is IGNORE. The
/* Which local symbols to discard. */
enum bfd_link_discard discard;
- /* Criteria for skipping symbols when detemining
+ /* Criteria for skipping symbols when determining
whether to include an object from an archive. */
- enum bfd_link_common_skip_ar_aymbols common_skip_ar_aymbols;
+ enum bfd_link_common_skip_ar_symbols common_skip_ar_symbols;
/* Char that may appear as the first char of a symbol, but should be
skipped (like symbol_leading_char) when looking up symbols in
wrap_hash. Used by PowerPC Linux for 'dot' symbols. */
char wrap_char;
+ /* Separator between archive and filename in linker script filespecs. */
+ char path_separator;
+
/* Function callbacks. */
const struct bfd_link_callbacks *callbacks;
option). If this is NULL, no symbols are being wrapped. */
struct bfd_hash_table *wrap_hash;
+ /* The output BFD. */
+ bfd *output_bfd;
+
/* The list of input BFD's involved in the link. These are chained
together via the link_next field. */
bfd *input_bfds;
/* A function which is called when a relocation is attempted against
an undefined symbol. NAME is the symbol which is undefined.
ABFD, SECTION and ADDRESS identify the location from which the
- reference is made. FATAL indicates whether an undefined symbol is
+ reference is made. IS_FATAL indicates whether an undefined symbol is
a fatal error or not. In some cases SECTION may be NULL. */
bfd_boolean (*undefined_symbol)
(struct bfd_link_info *, const char *name, bfd *abfd,
- asection *section, bfd_vma address, bfd_boolean fatal);
+ asection *section, bfd_vma address, bfd_boolean is_fatal);
/* A function which is called when a reloc overflow occurs. ENTRY is
the link hash table entry for the symbol the reloc is against.
NAME is the name of the local symbol or section the reloc is
struct bfd_elf_version_expr *next;
/* Glob pattern. */
const char *pattern;
- /* NULL for a glob pattern, otherwise a straight symbol. */
- const char *symbol;
+ /* Set if pattern is not a glob. */
+ unsigned int literal : 1;
/* Defined by ".symver". */
unsigned int symver : 1;
/* Defined by version script. */