diff options
author | Alan Modra <amodra@gmail.com> | 2005-01-06 09:03:56 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2005-01-06 09:03:56 +0000 |
commit | 4c52953f842d38d197bc283e1f6b635bd8050bf2 (patch) | |
tree | 3e9b190ee384249d65717aac1b224be93799cacf /ld/emultempl/ppc64elf.em | |
parent | f03d65b4138164e8fd48ac0c1aa8cfcb34aebfc5 (diff) | |
download | gdb-4c52953f842d38d197bc283e1f6b635bd8050bf2.zip gdb-4c52953f842d38d197bc283e1f6b635bd8050bf2.tar.gz gdb-4c52953f842d38d197bc283e1f6b635bd8050bf2.tar.bz2 |
bfd/
* elf64-ppc.c (struct ppc_link_hash_table): Add no_multi_toc and
multi_toc_needed.
(has_toc_reloc, makes_toc_func_call, call_check_in_progress): Define.
(ppc64_elf_check_relocs): Update references to has_gp_reloc.
(ppc64_elf_setup_section_lists): Add no_multi_toc parm, set htab bit.
(ppc64_elf_next_toc_section): Heed no_multi_toc.
(ppc64_elf_reinit_toc): Set multi_toc_needed.
(toc_adjusting_stub_needed): Rewrite.
(ppc64_elf_next_input_section): Use multi_toc_needed to shortcut
toc tests. Adjust for toc_adjusting_stub_needed changes.
(ppc64_elf_size_stubs): Update references to has_gp_reloc.
* elf64-ppc.h (ppc64_elf_setup_section_lists): Update prototype.
* section.c: Expand comment on backend bits.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
ld/
* emultempl/ppc64elf.em (no_multi_toc): New var.
(gld${EMULATION_NAME}_finish): Pass to ppc64_elf_setup_section_lists.
(OPTION_NO_MULTI_TOC): Define.
(PARSE_AND_LIST_LONGOPTS): Add --no-multi-toc support.
(PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Likewise.
Diffstat (limited to 'ld/emultempl/ppc64elf.em')
-rw-r--r-- | ld/emultempl/ppc64elf.em | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em index 3713fd3..338e090 100644 --- a/ld/emultempl/ppc64elf.em +++ b/ld/emultempl/ppc64elf.em @@ -52,6 +52,9 @@ static int no_opd_opt = 0; /* Whether to run toc optimization. */ static int no_toc_opt = 0; +/* Whether to allow multiple toc sections. */ +static int no_multi_toc = 0; + /* Whether to emit symbols for stubs. */ static int emit_stub_syms = 0; @@ -337,7 +340,8 @@ gld${EMULATION_NAME}_finish (void) stubs. */ if (stub_file != NULL && !link_info.relocatable) { - int ret = ppc64_elf_setup_section_lists (output_bfd, &link_info); + int ret = ppc64_elf_setup_section_lists (output_bfd, &link_info, + no_multi_toc); if (ret != 0) { if (ret < 0) @@ -484,7 +488,8 @@ PARSE_AND_LIST_PROLOGUE=' #define OPTION_NO_TLS_OPT (OPTION_NO_DOTSYMS + 1) #define OPTION_NO_OPD_OPT (OPTION_NO_TLS_OPT + 1) #define OPTION_NO_TOC_OPT (OPTION_NO_OPD_OPT + 1) -#define OPTION_NON_OVERLAPPING_OPD (OPTION_NO_TOC_OPT + 1) +#define OPTION_NO_MULTI_TOC (OPTION_NO_TOC_OPT + 1) +#define OPTION_NON_OVERLAPPING_OPD (OPTION_NO_MULTI_TOC + 1) ' PARSE_AND_LIST_LONGOPTS=' @@ -495,6 +500,7 @@ PARSE_AND_LIST_LONGOPTS=' { "no-tls-optimize", no_argument, NULL, OPTION_NO_TLS_OPT }, { "no-opd-optimize", no_argument, NULL, OPTION_NO_OPD_OPT }, { "no-toc-optimize", no_argument, NULL, OPTION_NO_TOC_OPT }, + { "no-multi-toc", no_argument, NULL, OPTION_NO_MULTI_TOC }, { "non-overlapping-opd", no_argument, NULL, OPTION_NON_OVERLAPPING_OPD }, ' @@ -530,6 +536,9 @@ PARSE_AND_LIST_OPTIONS=' --no-toc-optimize Don'\''t optimize the TOC section.\n" )); fprintf (file, _("\ + --no-multi-toc Disallow automatic multiple toc sections.\n" + )); + fprintf (file, _("\ --non-overlapping-opd Canonicalize .opd, so that there are no overlapping\n\ .opd entries.\n" )); @@ -569,6 +578,10 @@ PARSE_AND_LIST_ARGS_CASES=' no_toc_opt = 1; break; + case OPTION_NO_MULTI_TOC: + no_multi_toc = 1; + break; + case OPTION_NON_OVERLAPPING_OPD: non_overlapping_opd = 1; break; |