aboutsummaryrefslogtreecommitdiff
path: root/ld/lexsup.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2001-04-13 00:34:36 +0000
committerJakub Jelinek <jakub@redhat.com>2001-04-13 00:34:36 +0000
commitf5fa8ca231d47662321addbfbde105e2bed0be07 (patch)
treef7627630ea5563084aff4b9d1cfe756113ee8a85 /ld/lexsup.c
parent6c98e688d5bbc670851c9e092c132a565eb67519 (diff)
downloadgdb-f5fa8ca231d47662321addbfbde105e2bed0be07.zip
gdb-f5fa8ca231d47662321addbfbde105e2bed0be07.tar.gz
gdb-f5fa8ca231d47662321addbfbde105e2bed0be07.tar.bz2
bfd/
* libbfd-in.h (_bfd_merge_section): New. (_bfd_write_merged_section): New. (_bfd_merged_section_offset): New. * libbfd.h: Rebuilt. * linker.c (_bfd_generic_link_output_symbols): Handle discard_sec_merge. * aoutx.h (aout_link_write_symbols): Likewise. * pdp11.c (aout_link_write_symbols): Likewise. * elflink.h (elf_link_add_object_symbols): Call _bfd_merge_section. (elf_bfd_final_link): Adjust global symbols pointing into SEC_MERGE sections. (elf_link_sec_merge_syms): New. (elf_link_input_bfd): Call _bfd_merged_section_offset and _bfd_write_merged_section. Handle discard_sec_merge. * elf-bfd.h (struct elf_link_hash_table): Add merge_info field. (struct bfd_elf_section_data): Likewise. * elf.c (_bfd_elf_make_section_from_shdr): Set SEC_MERGE and SEC_STRINGS section flags and entsize from their ELF counterparts. (_bfd_elf_link_hash_table_init): Initialize merge_info. (elf_fake_sections): Set SHF_MERGE, SHF_STRINGS and sh_entsize from their BFD counterparts. * merge.c: New file. * Makefile.am: Add strtab.lo. * Makefile.in: Rebuilt. include/ * bfdlink.h (bfd_link_discard): Add discard_sec_merge. gas/ * config/obj-elf.c (obj_elf_change_section): Add entsize argument, handle SHF_MERGE and SHF_STRINGS. (obj_elf_parse_section_letters): Set SHF_MERGE and SHF_STRINGS. (obj_elf_section): Allow additional argument specifying entity size. * write.c (adjust_reloc_syms): Keep relocations against local symbols in SEC_MERGE sections. ld/ * ldmain.c (main): Default to discard_sec_merge. * lexsup.c (OPTION_DISCARD_NONE): Define. (ld_options): Add --discard-none. (parse_args): Handle OPTION_DISCARD_NONE. * ldlang.c (wild_doit): SEC_MERGE should be set in the output section only if SEC_MERGE and SEC_STRINGS flags and entsize of all its input sections match.
Diffstat (limited to 'ld/lexsup.c')
-rw-r--r--ld/lexsup.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/ld/lexsup.c b/ld/lexsup.c
index 3664a85..0d931b1 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
@@ -129,6 +129,7 @@ int parsing_defsym = 0;
#define OPTION_UNIQUE (OPTION_SECTION_START + 1)
#define OPTION_TARGET_HELP (OPTION_UNIQUE + 1)
#define OPTION_ALLOW_SHLIB_UNDEFINED (OPTION_TARGET_HELP + 1)
+#define OPTION_DISCARD_NONE (OPTION_ALLOW_SHLIB_UNDEFINED + 1)
/* The long options. This structure is used for both the option
parsing and the help text. */
@@ -248,7 +249,9 @@ static const struct ld_option ld_options[] =
{ {"discard-all", no_argument, NULL, 'x'},
'x', NULL, N_("Discard all local symbols"), TWO_DASHES },
{ {"discard-locals", no_argument, NULL, 'X'},
- 'X', NULL, N_("Discard temporary local symbols"), TWO_DASHES },
+ 'X', NULL, N_("Discard temporary local symbols (default)"), TWO_DASHES },
+ { {"discard-none", no_argument, NULL, OPTION_DISCARD_NONE},
+ '\0', NULL, N_("Don't discard any local symbols"), TWO_DASHES },
{ {"trace-symbol", required_argument, NULL, 'y'},
'y', N_("SYMBOL"), N_("Trace mentions of SYMBOL"), TWO_DASHES },
{ {NULL, required_argument, NULL, '\0'},
@@ -1044,6 +1047,9 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
case OPTION_WRAP:
add_wrap (optarg);
break;
+ case OPTION_DISCARD_NONE:
+ link_info.discard = discard_none;
+ break;
case 'X':
link_info.discard = discard_l;
break;