For ELF targets, section symbols are required only for relocations. With -ffunction-sections -fdata-sections, there can be many unused section symbols. Sizes of libstdc++.a on Linux/x86-64 in GCC 11 are With unused section symbols : 39411698 bytes Without unused section symbols: 39227002 bytes The unused section symbols in libstdc++.a occupy more than 180 KB. Add BSF_SECTION_SYM_USED to indicate if a section symbol should be included in the symbol table. The BSF_SECTION_SYM_USED should be set if the section symbol is used for relocation or the section symbol is always included in the symbol table. Add keep_unused_section_symbols to bfd_target to indicate if unused section symbols should be kept. If TARGET_KEEP_UNUSED_SECTION_SYMBOLS is defined as FALSE, unused ection symbols will be removed. Tested on Linux/x86. Other ELF backends need to: 1. Define TARGET_KEEP_UNUSED_SECTION_SYMBOLS to FALSE. 2. Mark used section symbols in assembler backend. 3. Remove unused section symbols from expected assembler and linker outputs. bfd/ PR 27109 * aix386-core.c (core_aix386_vec): Initialize keep_unused_section_symbol to TARGET_KEEP_UNUSED_SECTION_SYMBOLS. * aout-target.h (MY (vec)): Likewise. * binary.c (binary_vec): Likewise. * cisco-core.c (core_cisco_be_vec): Likewise. (core_cisco_le_vec): Likewise. * coff-alpha.c (alpha_ecoff_le_vec): Likewise. * coff-i386.c (TARGET_SYM): Likewise. (TARGET_SYM_BIG): Likewise. * coff-ia64.c (TARGET_SYM): Likewise. * coff-mips.c (mips_ecoff_le_vec): Likewise. (mips_ecoff_be_vec): Likewise. (mips_ecoff_bele_vec): Likewise. * coff-rs6000.c (rs6000_xcoff_vec): Likewise. (powerpc_xcoff_vec): Likewise. * coff-sh.c (sh_coff_small_vec): Likewise. (sh_coff_small_le_vec): Likewise. * coff-tic30.c (tic30_coff_vec): Likewise. * coff-tic54x.c (tic54x_coff0_vec): Likewise. (tic54x_coff0_beh_vec): Likewise. (tic54x_coff1_vec): Likewise. (tic54x_coff1_beh_vec): Likewise. (tic54x_coff2_vec): Likewise. (tic54x_coff2_beh_vec): Likewise. * coff-x86_64.c (TARGET_SYM): Likewise. (TARGET_SYM_BIG): Likewise. * coff64-rs6000.c (rs6000_xcoff64_vec): Likewise. (rs6000_xcoff64_aix_vec): Likewise. * coffcode.h (CREATE_BIG_COFF_TARGET_VEC): Likewise. (CREATE_BIGHDR_COFF_TARGET_VEC): Likewise. (CREATE_LITTLE_COFF_TARGET_VEC): Likewise. * elfxx-target.h (TARGET_BIG_SYM): Likewise. (TARGET_LITTLE_SYM): Likewise. * hppabsd-core.c (core_hppabsd_vec): Likewise. * hpux-core.c (core_hpux_vec): Likewise. * i386msdos.c (i386_msdos_vec): Likewise. * ihex.c (ihex_vec): Likewise. * irix-core.c (core_irix_vec): Likewise. * mach-o-target.c (TARGET_NAME): Likewise. * mmo.c (mmix_mmo_vec): Likewise. * netbsd-core.c (core_netbsd_vec): Likewise. * osf-core.c (core_osf_vec): Likewise. * pdp11.c (MY (vec)): Likewise. * pef.c (pef_vec): Likewise. (pef_xlib_vec): Likewise. * plugin.c (plugin_vec): Likewise. * ppcboot.c (powerpc_boot_vec): Likewise. * ptrace-core.c (core_ptrace_vec): Likewise. * sco5-core.c (core_sco5_vec): Likewise. * som.c (hppa_som_vec): Likewise. * srec.c (srec_vec): Likewise. (symbolsrec_vec): Likewise. * tekhex.c (tekhex_vec): Likewise. * trad-core.c (core_trad_vec): Likewise. * verilog.c (verilog_vec): Likewise. * vms-alpha.c (alpha_vms_vec): Likewise. * vms-lib.c (alpha_vms_lib_txt_vec): Likewise. * wasm-module.c (wasm_vec): Likewise. * xsym.c (sym_vec): Likewise. * elf.c (ignore_section_sym): Return TRUE if BSF_SECTION_SYM_USED isn't set. (elf_map_symbols): Don't include ignored section symbols. * elfcode.h (elf_slurp_symbol_table): Also set BSF_SECTION_SYM_USED on STT_SECTION symbols. * elflink.c (bfd_elf_final_link): Generated section symbols only when emitting relocations or reqired. * elfxx-x86.h (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): New. * syms.c (BSF_SECTION_SYM_USED): New. * targets.c (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): New. (bfd_target): Add keep_unused_section_symbols. (bfd_keep_unused_section_symbols): New. * bfd-in2.h: Regenerated. binutils/ PR 27109 * objcopy.c (copy_object): Handle section symbols for non-relocatable inputs. * testsuite/binutils-all/readelf.exp (readelf_test): Check is_elf_unused_section_symbols. * testsuite/binutils-all/readelf.s-64: Updated. * testsuite/binutils-all/readelf.ss: Likewise. * testsuite/binutils-all/readelf.ss-64: Likewise. * testsuite/binutils-all/readelf.s-64-unused: New file. * testsuite/binutils-all/readelf.ss-64-unused: Likewise. * testsuite/binutils-all/readelf.ss-unused: Likewise. * testsuite/lib/binutils-common.exp (is_elf_unused_section_symbols): New proc. gas/ChangeLog: PR 27109 * read.c (s_reloc): Call symbol_mark_used_in_reloc on the section symbol. * subsegs.c (subseg_set_rest): Set BSF_SECTION_SYM_USED if needed. * write.c (adjust_reloc_syms): Call symbol_mark_used_in_reloc on the section symbol. (set_symtab): Don't generate unused section symbols. (maybe_generate_build_notes): Call symbol_mark_used_in_reloc on the section symbol. * config/obj-elf.c (elf_adjust_symtab): Call symbol_mark_used_in_reloc on the group signature symbol. * testsuite/gas/cfi/cfi-label.d: Remove unused section symbols from expected output. * testsuite/gas/elf/elf.exp (run_elf_list_test): Check is_elf_unused_section_symbols. * testsuite/gas/elf/section2.e: Updated. * testsuite/gas/elf/section2.e-unused: New file. * testsuite/gas/elf/symver.d: Remove unused section symbols. * testsuite/gas/i386/ilp32/elf/symver.d: Likewise. * testsuite/gas/i386/ilp32/x86-64-size-1.d: Likewise. * testsuite/gas/i386/ilp32/x86-64-size-3.d: Likewise. * testsuite/gas/i386/ilp32/x86-64-size-5.d: Likewise. * testsuite/gas/i386/ilp32/x86-64-unwind.d: Likewise. * testsuite/gas/i386/size-1.d: Likewise. * testsuite/gas/i386/size-3.d: Likewise. * testsuite/gas/i386/svr4.d: Likewise. * testsuite/gas/i386/x86-64-size-1.d: Likewise. * testsuite/gas/i386/x86-64-size-3.d: Likewise. * testsuite/gas/i386/x86-64-size-5.d: Likewise. * testsuite/gas/i386/x86-64-unwind.d: Likewise. ld/ PR 27109 * testsuite/ld-elf/export-class.sd: Adjust the expected output. * testsuite/ld-elf/loadaddr3b.d: Likewise. * testsuite/ld-i386/ibt-plt-1.d: Likewise. * testsuite/ld-i386/ibt-plt-2a.d: Likewise. * testsuite/ld-i386/ibt-plt-2c.d: Likewise. * testsuite/ld-i386/ibt-plt-3a.d: Likewise. * testsuite/ld-i386/ibt-plt-3c.d: Likewise. * testsuite/ld-i386/pr19636-1d.d: Likewise. * testsuite/ld-i386/pr19636-1l.d: Likewise. * testsuite/ld-i386/pr19636-2c.d: Likewise. * testsuite/ld-ifunc/ifunc-2-i386-now.d: Likewise. * testsuite/ld-ifunc/ifunc-2-local-i386-now.d: Likewise. * testsuite/ld-ifunc/ifunc-2-local-x86-64-now.d: Likewise. * testsuite/ld-ifunc/ifunc-2-x86-64-now.d: Likewise. * testsuite/ld-ifunc/ifunc-21-x86-64.d: Likewise. * testsuite/ld-ifunc/ifunc-22-x86-64.d: Likewise. * testsuite/ld-ifunc/pr17154-i386-now.d: Likewise. * testsuite/ld-ifunc/pr17154-i386.d: Likewise. * testsuite/ld-ifunc/pr17154-x86-64-now.d: Likewise. * testsuite/ld-ifunc/pr17154-x86-64.d: Likewise. * testsuite/ld-x86-64/bnd-branch-1-now.d: Likewise. * testsuite/ld-x86-64/bnd-ifunc-1-now.d: Likewise. * testsuite/ld-x86-64/bnd-ifunc-2-now.d: Likewise. * testsuite/ld-x86-64/bnd-ifunc-2.d: Likewise. * testsuite/ld-x86-64/bnd-plt-1-now.d: Likewise. * testsuite/ld-x86-64/bnd-plt-1.d: Likewise. * testsuite/ld-x86-64/ibt-plt-1-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-1.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2a-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2a.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2c-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2c.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3a-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3a.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3c-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3c.d: Likewise. * testsuite/ld-x86-64/pr19609-4e.d: Likewise. * testsuite/ld-x86-64/pr19609-6a.d: Likewise. * testsuite/ld-x86-64/pr19609-6b.d: Likewise. * testsuite/ld-x86-64/pr19609-7b.d: Likewise. * testsuite/ld-x86-64/pr19609-7d.d: Likewise. * testsuite/ld-x86-64/pr19636-2l.d: Likewise. * testsuite/ld-x86-64/pr20253-1d.d: Likewise. * testsuite/ld-x86-64/pr20253-1h.d: Likewise. * testsuite/ld-x86-64/pr21038b-now.d: Likewise. * testsuite/ld-x86-64/pr21038b.d: Likewise. * testsuite/ld-x86-64/pr21038c-now.d: Likewise. * testsuite/ld-x86-64/pr21038c.d: Likewise. * testsuite/ld-x86-64/pr23854.d: Likewise. * testsuite/ld-x86-64/pr25416-3.d: Likewise. * testsuite/ld-x86-64/pr25416-4.d: Likewise. * testsuite/ld-i386/plt-pic.pd: Likewise. * testsuite/ld-i386/plt-pic2.dd: Likewise. * testsuite/ld-i386/plt.pd: Likewise. * testsuite/ld-i386/plt2.dd: Likewise. * testsuite/ld-i386/tlsbin.rd: Likewise. * testsuite/ld-i386/tlsbin2.rd: Likewise. * testsuite/ld-i386/tlsbindesc.rd: Likewise. * testsuite/ld-i386/tlsdesc.rd: Likewise. * testsuite/ld-i386/tlsgdesc.rd: Likewise. * testsuite/ld-i386/tlsnopic.rd: Likewise. * testsuite/ld-i386/tlspic.rd: Likewise. * testsuite/ld-i386/tlspic2.rd: Likewise. * testsuite/ld-x86-64/mpx3.dd: Likewise. * testsuite/ld-x86-64/mpx3n.dd: Likewise. * testsuite/ld-x86-64/mpx4.dd: Likewise. * testsuite/ld-x86-64/mpx4n.dd: Likewise. * testsuite/ld-x86-64/pe-x86-64-1.od: Likewise. * testsuite/ld-x86-64/pe-x86-64-2.od: Likewise. * testsuite/ld-x86-64/pe-x86-64-3.od: Likewise. * testsuite/ld-x86-64/pe-x86-64-4.od: Likewise. * testsuite/ld-x86-64/plt.pd: Likewise. * testsuite/ld-x86-64/plt2.dd: Likewise. * testsuite/ld-x86-64/tlsbin.rd: Likewise. * testsuite/ld-x86-64/tlsbin2.rd: Likewise. * testsuite/ld-x86-64/tlsbindesc.rd: Likewise. * testsuite/ld-x86-64/tlsdesc.rd: Likewise. * testsuite/ld-x86-64/tlsgdesc.rd: Likewise. * testsuite/ld-x86-64/tlspic.rd: Likewise. * testsuite/ld-x86-64/tlspic2.rd: Likewise. * testsuite/ld-elf/sec64k.exp: Check is_elf_unused_section_symbols.
149 lines
5.2 KiB
Plaintext
149 lines
5.2 KiB
Plaintext
2021-01-07 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR 27109
|
||
* read.c (s_reloc): Call symbol_mark_used_in_reloc on the
|
||
section symbol.
|
||
* subsegs.c (subseg_set_rest): Set BSF_SECTION_SYM_USED if needed.
|
||
* write.c (adjust_reloc_syms): Call symbol_mark_used_in_reloc
|
||
on the section symbol.
|
||
(set_symtab): Don't generate unused section symbols.
|
||
(maybe_generate_build_notes): Call symbol_mark_used_in_reloc
|
||
on the section symbol.
|
||
* config/obj-elf.c (elf_adjust_symtab): Call
|
||
symbol_mark_used_in_reloc on the group signature symbol.
|
||
* testsuite/gas/cfi/cfi-label.d: Remove unused section symbols
|
||
from expected output.
|
||
* testsuite/gas/elf/elf.exp (run_elf_list_test): Check
|
||
is_elf_unused_section_symbols.
|
||
* testsuite/gas/elf/section2.e: Updated.
|
||
* testsuite/gas/elf/section2.e-unused: New file.
|
||
* testsuite/gas/elf/symver.d: Remove unused section symbols.
|
||
* testsuite/gas/i386/ilp32/elf/symver.d: Likewise.
|
||
* testsuite/gas/i386/ilp32/x86-64-size-1.d: Likewise.
|
||
* testsuite/gas/i386/ilp32/x86-64-size-3.d: Likewise.
|
||
* testsuite/gas/i386/ilp32/x86-64-size-5.d: Likewise.
|
||
* testsuite/gas/i386/ilp32/x86-64-unwind.d: Likewise.
|
||
* testsuite/gas/i386/size-1.d: Likewise.
|
||
* testsuite/gas/i386/size-3.d: Likewise.
|
||
* testsuite/gas/i386/svr4.d: Likewise.
|
||
* testsuite/gas/i386/x86-64-size-1.d: Likewise.
|
||
* testsuite/gas/i386/x86-64-size-3.d: Likewise.
|
||
* testsuite/gas/i386/x86-64-size-5.d: Likewise.
|
||
* testsuite/gas/i386/x86-64-unwind.d: Likewise.
|
||
|
||
2021-01-07 Philipp Tomsich <prt@gnu.org>
|
||
|
||
* config/tc-riscv.c (riscv_multi_subset_supports): Added
|
||
INSN_CLASS_ZIHINTPAUSE.
|
||
* testsuite/gas/riscv/pause.d: New testcase. Adding coverage for
|
||
the pause hint instruction.
|
||
* testsuite/gas/riscv/pause.s: Likewise.
|
||
|
||
2021-01-07 Claire Xenia Wolf <claire@symbioticeda.com>
|
||
Jim Wilson <jimw@sifive.com>
|
||
Andrew Waterman <andrew@sifive.com>
|
||
Maxim Blinov <maxim.blinov@embecosm.com>
|
||
Kito Cheng <kito.cheng@sifive.com>
|
||
Nelson Chu <nelson.chu@sifive.com>
|
||
|
||
* config/tc-riscv.c (riscv_multi_subset_supports): Handle INSN_CLASS_ZB*.
|
||
(riscv_get_default_ext_version): Do not check the default_isa_spec when
|
||
the version defined in the riscv_opcodes table is ISA_SPEC_CLASS_DRAFT.
|
||
* testsuite/gas/riscv/bitmanip-insns-32.d: New testcase.
|
||
* testsuite/gas/riscv/bitmanip-insns-64.d: Likewise.
|
||
* testsuite/gas/riscv/bitmanip-insns.s: Likewise.
|
||
|
||
2021-01-06 Alan Modra <amodra@gmail.com>
|
||
|
||
* testsuite/gas/sparc/sparc.exp: Move 64-bit tests inside gas_64_check.
|
||
|
||
2021-01-06 Alan Modra <amodra@gmail.com>
|
||
|
||
* testsuite/gas/macros/app1.d: xfail tic30.
|
||
* testsuite/gas/macros/app2.d: Likewise.
|
||
* testsuite/gas/macros/app3.d: Likewise.
|
||
* testsuite/gas/macros/app4.d: Likewise.
|
||
|
||
2021-01-06 Marcus Comstedt <marcus@mc.pp.se>
|
||
|
||
* doc/as.texi: Add -mlittle-endian and -mbig-endian to docs.
|
||
* doc/c-riscv.texi: Likewise.
|
||
|
||
2021-01-06 Marcus Comstedt <marcus@mc.pp.se>
|
||
|
||
* testsuite/gas/riscv/li32.d: Accept bigriscv in addition
|
||
to littleriscv.
|
||
* testsuite/gas/riscv/li64.d: Likewise.
|
||
* testsuite/gas/riscv/lla32.d: Likewise.
|
||
* testsuite/gas/riscv/lla64.d: Likewise.
|
||
* testsuite/gas/riscv/march-ok-g2.d: Likewise.
|
||
* testsuite/gas/riscv/march-ok-g2_p1.d: Likewise.
|
||
* testsuite/gas/riscv/march-ok-g2p0.d: Likewise.
|
||
* testsuite/gas/riscv/march-ok-i2p0.d: Likewise.
|
||
* testsuite/gas/riscv/march-ok-i2p0m2_a2f2.d: Likewise.
|
||
* testsuite/gas/riscv/march-ok-nse-with-version.d: Likewise.
|
||
* testsuite/gas/riscv/march-ok-two-nse.d: Likewise.
|
||
|
||
2021-01-06 Marcus Comstedt <marcus@mc.pp.se>
|
||
|
||
* config/tc-riscv.c (riscv_target_format): Add elf64-bigriscv and
|
||
elf32-bigriscv.
|
||
(install_insn): Always write instructions as little endian.
|
||
(riscv_make_nops): Likewise.
|
||
(md_convert_frag_branch): Likewise.
|
||
(md_number_to_chars): Write data in target endianness.
|
||
(options, md_longopts): Add -mbig-endian and -mlittle-endian options.
|
||
(md_parse_option): Handle the endian options.
|
||
* config/tc-riscv.h: Only define TARGET_BYTES_BIG_ENDIAN if not
|
||
already defined.
|
||
* configure.tgt: Added riscv64be*, riscv32be*, riscvbe*.
|
||
|
||
2021-01-04 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/26256
|
||
* config/obj-elf.c (obj_elf_change_section): Also filter out
|
||
SHF_LINK_ORDER.
|
||
|
||
2021-01-04 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 27102
|
||
* symbols.c (S_SET_EXTERNAL): Revise section symbol warning
|
||
message and register symbol error message.
|
||
|
||
2021-01-04 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 27101
|
||
* read.c (s_align): Use a large enough type for "align" to hold
|
||
the result of get_absolute_expression.
|
||
|
||
2021-01-01 Nicolas Boulenguez <nicolas@debian.org>
|
||
|
||
* config/tc-i386.c: Correct comment spelling.
|
||
* config/tc-riscv.c: Likewise.
|
||
* config/tc-s390.c: Correct comment grammar.
|
||
* doc/c-i386.texi: Correct spelling.
|
||
* doc/c-s390.texi: Correct grammar.
|
||
|
||
2021-01-01 Alan Modra <amodra@gmail.com>
|
||
|
||
Update year range in copyright notice of all files.
|
||
|
||
2021-01-01 Hans-Peter Nilsson <hp@bitrange.com>
|
||
|
||
* config/tc-mmix.h (md_single_noop_insn): Change to "swym 0".
|
||
|
||
For older changes see ChangeLog-2020
|
||
|
||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|
||
|
||
Local Variables:
|
||
mode: change-log
|
||
left-margin: 8
|
||
fill-column: 74
|
||
version-control: never
|
||
End:
|