X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=include%2Fbfdlink.h;h=6a02a3c43bfa747c0905178726e6e6e5f17c8e7f;hb=69efdff130b843838e791065335b44d5f91f7075;hp=bf44dee82572992e4f34fa4df3119efacd299e78;hpb=4f9d22a0b15a371db7df4b41c1633fde25932ff1;p=deliverable%2Fbinutils-gdb.git diff --git a/include/bfdlink.h b/include/bfdlink.h index bf44dee825..6a02a3c43b 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -1,7 +1,5 @@ /* bfdlink.h -- header file for BFD link routines - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 - Free Software Foundation, Inc. + Copyright (C) 1993-2015 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. @@ -93,8 +91,14 @@ struct bfd_link_hash_entry /* Type of this entry. */ ENUM_BITFIELD (bfd_link_hash_type) type : 8; + /* Symbol is referenced in a normal object file, as distict from a LTO + IR object file. */ unsigned int non_ir_ref : 1; + /* Symbol is a built-in define. These will be overridden by PROVIDE + in a linker script. */ + unsigned int linker_def : 1; + /* A union of information depending upon the type. */ union { @@ -169,6 +173,8 @@ struct 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; + /* Function to free the hash table on closing BFD. */ + void (*hash_table_free) (bfd *); /* The type of the link hash table. */ enum bfd_link_hash_table_type type; }; @@ -188,6 +194,12 @@ extern struct bfd_link_hash_entry *bfd_wrapped_link_hash_lookup (bfd *, struct bfd_link_info *, const char *, bfd_boolean, bfd_boolean, bfd_boolean); +/* If H is a wrapped symbol, ie. the symbol name starts with "__wrap_" + and the remainder is found in wrap_hash, return the real symbol. */ + +extern struct bfd_link_hash_entry *unwrap_hash_lookup + (struct bfd_link_info *, bfd *, struct bfd_link_hash_entry *); + /* Traverse a link hash table. */ extern void bfd_link_hash_traverse (struct bfd_link_hash_table *, @@ -286,8 +298,8 @@ struct bfd_link_info callback. */ unsigned int notice_all: 1; - /* TRUE if we are loading LTO outputs. */ - unsigned int loading_lto_outputs: 1; + /* TRUE if the LTO plugin is active. */ + unsigned int lto_plugin_active: 1; /* TRUE if global symbols in discarded sections should be stripped. */ unsigned int strip_discarded: 1; @@ -408,6 +420,9 @@ struct bfd_link_info /* TRUE if the linker script contained an explicit PHDRS command. */ unsigned int user_phdrs: 1; + /* TRUE if BND prefix in PLT entries is always generated. */ + unsigned int bndplt: 1; + /* 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. */ @@ -465,13 +480,10 @@ struct bfd_link_info bfd *output_bfd; /* The list of input BFD's involved in the link. These are chained - together via the link_next field. */ + together via the link.next field. */ bfd *input_bfds; bfd **input_bfds_tail; - /* Non-NULL if .note.gnu.build-id section should be created. */ - char *emit_note_gnu_build_id; - /* If a symbol should be created for each input BFD, this is section where those symbols should be placed. It must be a section in the output BFD. It may be NULL, in which case no such symbols @@ -634,15 +646,14 @@ struct bfd_link_callbacks (struct bfd_link_info *, const char *name, bfd *abfd, asection *section, bfd_vma address); /* A function which is called when a symbol in notice_hash is - defined or referenced. H is the symbol. ABFD, SECTION and - ADDRESS are the (new) value of the symbol. If SECTION is - bfd_und_section, this is a reference. FLAGS are the symbol - BSF_* flags. STRING is the name of the symbol to indirect to if - the sym is indirect, or the warning string if a warning sym. */ + defined or referenced. H is the symbol, INH the indirect symbol + if applicable. ABFD, SECTION and ADDRESS are the (new) value of + the symbol. If SECTION is bfd_und_section, this is a reference. + FLAGS are the symbol BSF_* flags. */ bfd_boolean (*notice) (struct bfd_link_info *, struct bfd_link_hash_entry *h, - bfd *abfd, asection *section, bfd_vma address, flagword flags, - const char *string); + struct bfd_link_hash_entry *inh, + bfd *abfd, asection *section, bfd_vma address, flagword flags); /* Error or warning link info message. */ void (*einfo) (const char *fmt, ...);