From cddd00895fb45a8dabd91b3c47d15a050c93549b Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 19 Dec 2002 23:05:39 +0000 Subject: [PATCH] * bfdlink.h (struct bfd_link_info): Replace bfd_boolean fields with bit-fields. Rearrange to put all like types together. --- include/ChangeLog | 5 ++ include/bfdlink.h | 132 +++++++++++++++++++++++----------------------- 2 files changed, 71 insertions(+), 66 deletions(-) diff --git a/include/ChangeLog b/include/ChangeLog index 89ab8d845f4..ba9024e2261 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2002-12-20 Alan Modra + + * bfdlink.h (struct bfd_link_info): Replace bfd_boolean fields with + bit-fields. Rearrange to put all like types together. + 2002-11-30 Alan Modra * bfdlink.h: Replace boolean with bfd_boolean. Formatting. diff --git a/include/bfdlink.h b/include/bfdlink.h index 3f2cd382f67..3a5c92b1af7 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -203,47 +203,44 @@ struct bfd_sym_chain struct bfd_link_info { - /* Function callbacks. */ - const struct bfd_link_callbacks *callbacks; - - /* TRUE if BFD should generate a relocateable object file. */ - bfd_boolean relocateable; + /* TRUE if BFD should generate a relocatable object file. */ + unsigned int relocateable: 1; /* TRUE if BFD should generate relocation information in the final executable. */ - bfd_boolean emitrelocations; + unsigned int emitrelocations: 1; /* TRUE if BFD should generate a "task linked" object file, similar to relocatable but also with globals converted to statics. */ - bfd_boolean task_link; + unsigned int task_link: 1; /* TRUE if BFD should generate a shared object. */ - bfd_boolean shared; + unsigned int shared: 1; /* TRUE if BFD should pre-bind symbols in a shared object. */ - bfd_boolean symbolic; + unsigned int symbolic: 1; /* TRUE if BFD should export all symbols in the dynamic symbol table of an executable, rather than only those used. */ - bfd_boolean export_dynamic; + unsigned int export_dynamic: 1; /* TRUE if shared objects should be linked directly, not shared. */ - bfd_boolean static_link; + 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. */ - bfd_boolean traditional_format; + 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. */ - bfd_boolean optimize; + unsigned int optimize: 1; /* TRUE if BFD should generate errors for undefined symbols even if generating a shared object. */ - bfd_boolean no_undefined; + unsigned int no_undefined: 1; /* TRUE if BFD should allow undefined symbols in shared objects even when no_undefined is set to disallow undefined symbols. The net @@ -257,13 +254,36 @@ struct bfd_link_info appropriate for the current architecture. I.E. dynamically select an appropriate memset function. Apparently it is also normal for HPPA shared libraries to have undefined symbols. */ - bfd_boolean allow_shlib_undefined; + unsigned int allow_shlib_undefined: 1; /* TRUE if ok to have multiple definition. */ - bfd_boolean allow_multiple_definition; + unsigned int allow_multiple_definition: 1; /* TRUE if ok to have version with no definition. */ - bfd_boolean allow_undefined_version; + unsigned int allow_undefined_version: 1; + + /* TRUE if symbols should be retained in memory, FALSE if they + should be freed and reread. */ + unsigned int keep_memory: 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 the new ELF dynamic tags are enabled. */ + unsigned int new_dtags: 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 .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 bfd_link_strip strip; @@ -271,24 +291,12 @@ struct bfd_link_info /* Which local symbols to discard. */ enum bfd_link_discard discard; - /* TRUE if symbols should be retained in memory, FALSE if they - should be freed and reread. */ - bfd_boolean keep_memory; - - /* The list of input BFD's involved in the link. These are chained - together via the link_next field. */ - bfd *input_bfds; - - /* 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 - will be created. This is to support CREATE_OBJECT_SYMBOLS in the - linker command language. */ - asection *create_object_symbols_section; + /* Criteria for skipping symbols when detemining + whether to include an object from an archive. */ + enum bfd_link_common_skip_ar_aymbols common_skip_ar_aymbols; - /* List of global symbol names that are starting points for marking - sections against garbage collection. */ - struct bfd_sym_chain *gc_sym_list; + /* Function callbacks. */ + const struct bfd_link_callbacks *callbacks; /* Hash table handled by BFD. */ struct bfd_link_hash_table *hash; @@ -297,10 +305,6 @@ struct bfd_link_info strip_some. */ struct bfd_hash_table *keep_hash; - /* TRUE if every symbol should be reported back via the notice - callback. */ - bfd_boolean notice_all; - /* Hash table of symbols to report back via the notice callback. If this is NULL, and notice_all is FALSE, then no symbols are reported back. */ @@ -310,14 +314,24 @@ struct bfd_link_info option). If this is NULL, no symbols are being wrapped. */ struct bfd_hash_table *wrap_hash; + /* The list of input BFD's involved in the link. These are chained + together via the link_next field. */ + bfd *input_bfds; + + /* 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 + will be created. This is to support CREATE_OBJECT_SYMBOLS in the + linker command language. */ + asection *create_object_symbols_section; + + /* List of global symbol names that are starting points for marking + sections against garbage collection. */ + struct bfd_sym_chain *gc_sym_list; + /* If a base output file is wanted, then this points to it */ PTR base_file; - /* If non-zero, specifies that branches which are problematic for the - MPC860 C0 (or earlier) should be checked for and modified. It gives the - number of bytes that should be checked at the end of each text page. */ - int mpc860c0; - /* The function to call when the executable or shared object is loaded. */ const char *init_function; @@ -326,14 +340,10 @@ struct bfd_link_info unloaded. */ const char *fini_function; - /* TRUE if the new ELF dynamic tags are enabled. */ - bfd_boolean new_dtags; - - /* May be used to set DT_FLAGS for ELF. */ - bfd_vma flags; - - /* May be used to set DT_FLAGS_1 for ELF. */ - bfd_vma flags_1; + /* If non-zero, specifies that branches which are problematic for the + MPC860 C0 (or earlier) should be checked for and modified. It gives the + number of bytes that should be checked at the end of each text page. */ + int mpc860c0; /* Non-zero if auto-import thunks for DATA items in pei386 DLLs should be generated/linked against. Set to 1 if this feature @@ -345,24 +355,14 @@ struct bfd_link_info is explicitly requested by the user, -1 if enabled by default. */ int pei386_runtime_pseudo_reloc; - /* TRUE if non-PLT relocs should be merged into one reloc section - and sorted so that relocs against the same symbol come together. */ - bfd_boolean combreloc; - - /* TRUE if executable should not contain copy relocs. - Setting this true may result in a non-sharable text segment. */ - bfd_boolean nocopyreloc; - - /* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment - should be created. */ - bfd_boolean eh_frame_hdr; - /* How many spare .dynamic DT_NULL entries should be added? */ unsigned int spare_dynamic_tags; - /* Criteria for skipping symbols when detemining - whether to include an object from an archive. */ - enum bfd_link_common_skip_ar_aymbols common_skip_ar_aymbols; + /* May be used to set DT_FLAGS for ELF. */ + bfd_vma flags; + + /* May be used to set DT_FLAGS_1 for ELF. */ + bfd_vma flags_1; }; /* This structures holds a set of callback functions. These are -- 2.30.2