From 05aecedb60692c2052041d98a218c5bdcac53407 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 15 Jul 2011 02:36:36 +0000 Subject: [PATCH] include/ * bfdlink.h (struct bfd_link_info): Use ENUM_BITFIELD for strip, discard, common_skip_ar_symbols, unresolved_syms_in_objects, and unresolved_syms_in_shared_libs fields. Move emit_note_gnu_build_id out of bitfields. Reorder bitfields. bfd/ * configure.in: Bump version. * configure: Regenerate. --- bfd/ChangeLog | 5 ++ bfd/configure | 2 +- bfd/configure.in | 2 +- include/ChangeLog | 12 +++- include/bfdlink.h | 188 +++++++++++++++++++++++++++--------------------------- 5 files changed, 110 insertions(+), 99 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index cec63cd..2540c65 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2011-07-15 Alan Modra + + * configure.in: Bump version. + * configure: Regenerate. + 2011-07-14 Alan Modra * linker.c (_bfd_generic_section_already_linked): Set l_flags. diff --git a/bfd/configure b/bfd/configure index 32e9c98..36103a6 100755 --- a/bfd/configure +++ b/bfd/configure @@ -3988,7 +3988,7 @@ fi # Define the identity of the package. PACKAGE=bfd - VERSION=2.21.52 + VERSION=2.21.53 cat >>confdefs.h <<_ACEOF diff --git a/bfd/configure.in b/bfd/configure.in index 3dfa34e..d966e31 100644 --- a/bfd/configure.in +++ b/bfd/configure.in @@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c]) AC_CANONICAL_TARGET AC_ISC_POSIX -AM_INIT_AUTOMAKE(bfd, 2.21.52) +AM_INIT_AUTOMAKE(bfd, 2.21.53) dnl These must be called before LT_INIT, because it may want dnl to call AC_CHECK_PROG. diff --git a/include/ChangeLog b/include/ChangeLog index 7a4f83f..2252587 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,7 +1,13 @@ +2011-07-15 Alan Modra + + * bfdlink.h (struct bfd_link_info): Use ENUM_BITFIELD for strip, + discard, common_skip_ar_symbols, unresolved_syms_in_objects, and + unresolved_syms_in_shared_libs fields. Move emit_note_gnu_build_id + out of bitfields. Reorder bitfields. + 2011-07-13 Sriraman Tallam - - * plugin-api.h - (ld_plugin_section): New struct. + + * plugin-api.h (ld_plugin_section): New struct. (ld_plugin_get_section_count): New typedef. (ld_plugin_get_section_type): New typedef. (ld_plugin_get_section_name): New typedef. diff --git a/include/bfdlink.h b/include/bfdlink.h index 0e583be..71b1e25 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -251,110 +251,91 @@ struct bfd_elf_dynamic_list; struct bfd_link_info { - /* TRUE if BFD should generate a relocatable object file. */ - unsigned int relocatable: 1; + /* TRUE if BFD should generate a shared object (or a pie). */ + unsigned int shared: 1; - /* TRUE if BFD should generate relocation information in the final - executable. */ - unsigned int emitrelocations: 1; + /* TRUE if generating an executable, position independent or not. */ + unsigned int executable : 1; - /* TRUE if BFD should generate a "task linked" object file, - similar to relocatable but also with globals converted to - statics. */ - unsigned int task_link: 1; + /* TRUE if generating a position independent executable. */ + unsigned int pie: 1; - /* TRUE if BFD should generate a shared object. */ - unsigned int shared: 1; + /* TRUE if BFD should generate a relocatable object file. */ + unsigned int relocatable: 1; /* TRUE if BFD should pre-bind symbols in a shared object. */ unsigned int symbolic: 1; + /* TRUE if executable should not contain copy relocs. + Setting this true may result in a non-sharable text segment. */ + unsigned int nocopyreloc: 1; + /* TRUE if BFD should export all symbols in the dynamic symbol table of an executable, rather than only those used. */ unsigned int export_dynamic: 1; - /* TRUE if shared objects should be linked directly, not shared. */ - unsigned int static_link: 1; - - /* TRUE if the output file should be in a traditional format. This - is equivalent to the setting of the BFD_TRADITIONAL_FORMAT flag - on the output file, but may be checked when reading the input - files. */ - unsigned int traditional_format: 1; - - /* TRUE if we want to produced optimized output files. This might - need much more time and therefore must be explicitly selected. */ - unsigned int optimize: 1; - - /* TRUE if ok to have multiple definition. */ - unsigned int allow_multiple_definition: 1; - - /* TRUE if ok to have version with no definition. */ - unsigned int allow_undefined_version: 1; - /* TRUE if a default symbol version should be created and used for exported symbols. */ unsigned int create_default_symver: 1; - /* TRUE if a default symbol version should be created and used for - imported symbols. */ - unsigned int default_imported_symver: 1; - - /* TRUE if symbols should be retained in memory, FALSE if they - should be freed and reread. */ - unsigned int keep_memory: 1; + /* TRUE if unreferenced sections should be removed. */ + unsigned int gc_sections: 1; /* TRUE if every symbol should be reported back via the notice callback. */ unsigned int notice_all: 1; - /* TRUE if executable should not contain copy relocs. - Setting this true may result in a non-sharable text segment. */ - unsigned int nocopyreloc: 1; + /* TRUE if we are loading LTO outputs. */ + unsigned int loading_lto_outputs: 1; - /* TRUE if the new ELF dynamic tags are enabled. */ - unsigned int new_dtags: 1; + /* TRUE if global symbols in discarded sections should be stripped. */ + unsigned int strip_discarded: 1; - /* TRUE if non-PLT relocs should be merged into one reloc section - and sorted so that relocs against the same symbol come together. */ - unsigned int combreloc: 1; + /* TRUE if all data symbols should be dynamic. */ + unsigned int dynamic_data: 1; - /* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment - should be created. */ - unsigned int eh_frame_hdr: 1; + /* Which symbols to strip. */ + ENUM_BITFIELD (bfd_link_strip) strip : 2; - /* TRUE if global symbols in discarded sections should be stripped. */ - unsigned int strip_discarded: 1; + /* Which local symbols to discard. */ + ENUM_BITFIELD (bfd_link_discard) discard : 2; - /* TRUE if generating a position independent executable. */ - unsigned int pie: 1; + /* Criteria for skipping symbols when determining + whether to include an object from an archive. */ + ENUM_BITFIELD (bfd_link_common_skip_ar_symbols) common_skip_ar_symbols : 2; - /* TRUE if generating an executable, position independent or not. */ - unsigned int executable : 1; + /* 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 + assumption with shared libraries is that the reference will be + resolved at load/execution time. */ + ENUM_BITFIELD (report_method) unresolved_syms_in_objects : 2; - /* TRUE if PT_GNU_STACK segment should be created with PF_R|PF_W|PF_X - flags. */ - unsigned int execstack: 1; + /* What to do with unresolved symbols in a shared library. + The same defaults apply. */ + ENUM_BITFIELD (report_method) unresolved_syms_in_shared_libs : 2; - /* TRUE if PT_GNU_STACK segment should be created with PF_R|PF_W - flags. */ - unsigned int noexecstack: 1; + /* TRUE if shared objects should be linked directly, not shared. */ + unsigned int static_link: 1; + + /* TRUE if symbols should be retained in memory, FALSE if they + should be freed and reread. */ + unsigned int keep_memory: 1; + + /* TRUE if BFD should generate relocation information in the final + executable. */ + unsigned int emitrelocations: 1; /* TRUE if PT_GNU_RELRO segment should be created. */ unsigned int relro: 1; + /* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment + should be created. */ + unsigned int eh_frame_hdr: 1; + /* 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; - - /* TRUE if user shoudl be informed of removed unreferenced sections. */ - unsigned int print_gc_sections: 1; - /* TRUE if .hash section should be created. */ unsigned int emit_hash: 1; @@ -366,43 +347,59 @@ struct bfd_link_info caching ELF symbol buffer. */ unsigned int reduce_memory_overheads: 1; - /* TRUE if all data symbols should be dynamic. */ - unsigned int dynamic_data: 1; + /* TRUE if the output file should be in a traditional format. This + is equivalent to the setting of the BFD_TRADITIONAL_FORMAT flag + on the output file, but may be checked when reading the input + files. */ + unsigned int traditional_format: 1; - /* TRUE if some symbols have to be dynamic, controlled by - --dynamic-list command line options. */ - unsigned int dynamic: 1; + /* TRUE if non-PLT relocs should be merged into one reloc section + and sorted so that relocs against the same symbol come together. */ + unsigned int combreloc: 1; + + /* TRUE if a default symbol version should be created and used for + imported symbols. */ + unsigned int default_imported_symver: 1; + + /* TRUE if the new ELF dynamic tags are enabled. */ + unsigned int new_dtags: 1; /* FALSE if .eh_frame unwind info should be generated for PLT and other linker created sections, TRUE if it should be omitted. */ unsigned int no_ld_generated_unwind_info: 1; - /* TRUE if we are loading LTO outputs. */ - unsigned int loading_lto_outputs: 1; + /* TRUE if BFD should generate a "task linked" object file, + similar to relocatable but also with globals converted to + statics. */ + unsigned int task_link: 1; - /* Non-NULL if .note.gnu.build-id section should be created. */ - char *emit_note_gnu_build_id; + /* TRUE if ok to have multiple definition. */ + unsigned int allow_multiple_definition: 1; - /* 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 - assumption with shared libraries is that the reference will be - resolved at load/execution time. */ - enum report_method unresolved_syms_in_objects; + /* TRUE if ok to have version with no definition. */ + unsigned int allow_undefined_version: 1; - /* What to do with unresolved symbols in a shared library. - The same defaults apply. */ - enum report_method unresolved_syms_in_shared_libs; + /* TRUE if some symbols have to be dynamic, controlled by + --dynamic-list command line options. */ + unsigned int dynamic: 1; - /* Which symbols to strip. */ - enum bfd_link_strip strip; + /* TRUE if PT_GNU_STACK segment should be created with PF_R|PF_W|PF_X + flags. */ + unsigned int execstack: 1; - /* Which local symbols to discard. */ - enum bfd_link_discard discard; + /* TRUE if PT_GNU_STACK segment should be created with PF_R|PF_W + flags. */ + unsigned int noexecstack: 1; - /* Criteria for skipping symbols when determining - whether to include an object from an archive. */ - enum bfd_link_common_skip_ar_symbols common_skip_ar_symbols; + /* TRUE if we want to produced optimized output files. This might + need much more time and therefore must be explicitly selected. */ + unsigned int optimize: 1; + + /* TRUE if user should be informed of removed unreferenced sections. */ + unsigned int print_gc_sections: 1; + + /* TRUE if we should warn alternate ELF machine code. */ + unsigned int warn_alternate_em: 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 @@ -439,6 +436,9 @@ struct bfd_link_info 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 -- 2.7.4