Line 1... |
Line 1... |
/* bfdlink.h -- header file for BFD link routines
|
/* bfdlink.h -- header file for BFD link routines
|
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
2003, 2004, 2005, 2006, 2007, 2008 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.
|
Written by Steve Chamberlain and Ian Lance Taylor, 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 73... |
Line 73... |
bfd_link_common_skip_text,
|
bfd_link_common_skip_text,
|
bfd_link_common_skip_data,
|
bfd_link_common_skip_data,
|
bfd_link_common_skip_all
|
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
|
/* The linking routines use a hash table which uses this structure for
|
its elements. */
|
its elements. */
|
|
|
struct bfd_link_hash_entry
|
struct bfd_link_hash_entry
|
{
|
{
|
Line 141... |
Line 147... |
section and the alignment. The alignment is stored as a
|
section and the alignment. The alignment is stored as a
|
power of two. We don't store all the information
|
power of two. We don't store all the information
|
directly because we don't want to increase the size of
|
directly because we don't want to increase the size of
|
the union; this structure is a major space user in the
|
the union; this structure is a major space user in the
|
linker. */
|
linker. */
|
struct bfd_link_hash_common_entry
|
struct bfd_link_hash_common_entry *p;
|
{
|
|
unsigned int alignment_power; /* Alignment. */
|
|
asection *section; /* Symbol section. */
|
|
} *p;
|
|
bfd_size_type size; /* Common symbol size. */
|
bfd_size_type size; /* Common symbol size. */
|
} c;
|
} c;
|
} u;
|
} u;
|
};
|
};
|
|
|
Line 196... |
Line 198... |
|
|
/* Remove symbols from the undefs list that don't belong there. */
|
/* Remove symbols from the undefs list that don't belong there. */
|
extern void bfd_link_repair_undef_list
|
extern void bfd_link_repair_undef_list
|
(struct bfd_link_hash_table *table);
|
(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
|
{
|
{
|
struct bfd_sym_chain *next;
|
struct bfd_sym_chain *next;
|
const char *name;
|
const char *name;
|
};
|
};
|
Line 317... |
Line 322... |
unsigned int relro: 1;
|
unsigned int relro: 1;
|
|
|
/* TRUE if we should warn when adding a DT_TEXTREL to a shared object. */
|
/* TRUE if we should warn when adding a DT_TEXTREL to a shared object. */
|
unsigned int warn_shared_textrel: 1;
|
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. */
|
/* TRUE if unreferenced sections should be removed. */
|
unsigned int gc_sections: 1;
|
unsigned int gc_sections: 1;
|
|
|
/* TRUE if user shoudl be informed of removed unreferenced sections. */
|
/* TRUE if user shoudl be informed of removed unreferenced sections. */
|
unsigned int print_gc_sections: 1;
|
unsigned int print_gc_sections: 1;
|
Line 370... |
Line 378... |
/* Char that may appear as the first char of a symbol, but should be
|
/* Char that may appear as the first char of a symbol, but should be
|
skipped (like symbol_leading_char) when looking up symbols in
|
skipped (like symbol_leading_char) when looking up symbols in
|
wrap_hash. Used by PowerPC Linux for 'dot' symbols. */
|
wrap_hash. Used by PowerPC Linux for 'dot' symbols. */
|
char wrap_char;
|
char wrap_char;
|
|
|
|
/* Separator between archive and filename in linker script filespecs. */
|
|
char path_separator;
|
|
|
/* Function callbacks. */
|
/* Function callbacks. */
|
const struct bfd_link_callbacks *callbacks;
|
const struct bfd_link_callbacks *callbacks;
|
|
|
/* Hash table handled by BFD. */
|
/* Hash table handled by BFD. */
|
struct bfd_link_hash_table *hash;
|
struct bfd_link_hash_table *hash;
|
Line 699... |
Line 710... |
{
|
{
|
/* Next glob pattern for this version. */
|
/* Next glob pattern for this version. */
|
struct bfd_elf_version_expr *next;
|
struct bfd_elf_version_expr *next;
|
/* Glob pattern. */
|
/* Glob pattern. */
|
const char *pattern;
|
const char *pattern;
|
/* NULL for a glob pattern, otherwise a straight symbol. */
|
/* Set if pattern is not a glob. */
|
const char *symbol;
|
unsigned int literal : 1;
|
/* Defined by ".symver". */
|
/* Defined by ".symver". */
|
unsigned int symver : 1;
|
unsigned int symver : 1;
|
/* Defined by version script. */
|
/* Defined by version script. */
|
unsigned int script : 1;
|
unsigned int script : 1;
|
/* Pattern type. */
|
/* Pattern type. */
|