[binutils-gdb] bfd: avoid elf-attrs.c for ELF-attributes-free targets
Jan Beulich via Binutils-cvs <[email protected]>
| Newsgroups | gmane.comp.gnu.binutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=32249500c73e611a23025d199fdd77c407ef68de commit 32249500c73e611a23025d199fdd77c407ef68de Author: Jan Beulich <[email protected]> Date: Fri Mar 13 07:51:24 2026 +0100 bfd: avoid elf-attrs.c for ELF-attributes-free targets It is wasteful to build this file when it's not actually used. Limit it to targets actually using ELF attributes and introduce a compiler define (paralleling OBJ_MAYBE_ELF, as having similar purpose) to guard internal function decls and to provide stubs for exported functions. Diff: --- bfd/configure | 140 +++++++++++++++++++++++++++++------------------------ bfd/configure.ac | 140 +++++++++++++++++++++++++++++------------------------ bfd/elf-bfd.h | 36 +++++++++++--- bfd/elf.c | 8 +++ bfd/elflink.c | 7 ++- bfd/elfxx-target.h | 5 ++ 6 files changed, 201 insertions(+), 135 deletions(-) diff --git a/bfd/configure b/bfd/configure index 0312b36e3c1..ccaf53b0914 100755 --- a/bfd/configure +++ b/bfd/configure @@ -15828,15 +15828,28 @@ selarchs="$f" # Target backend .o files. tb= -elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-eh-frame.lo - elf-properties.lo elf-sframe.lo dwarf1.lo dwarf2.lo" +elf="elf.lo elflink.lo elf-strtab.lo elf-eh-frame.lo elf-properties.lo + elf-sframe.lo dwarf1.lo dwarf2.lo" coffgen="coffgen.lo dwarf2.lo" coff="cofflink.lo $coffgen" ecoff="ecofflink.lo $coffgen" xcoff="xcofflink.lo $coffgen" +elf32_aarch64="elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo elf-attrs.lo" +elf64_aarch64="elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo elf-attrs.lo" +elf_arc="elf32-arc.lo elf32.lo elf-attrs.lo" +elf_arm="elf32-arm.lo elf32.lo elf-attrs.lo elf-vxworks.lo" +elf_csky="elf32-csky.lo elf32.lo elf-attrs.lo" +elf32_mips="elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo elf-attrs.lo" +elfn32_mips="elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo elf-attrs.lo" +elf64_mips="elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo elf-attrs.lo" +elf32_powerpc="elf32-ppc.lo elf-vxworks.lo elf32.lo elf-attrs.lo" +elf64_powerpc="elf64-ppc.lo elf64-gen.lo elf64.lo elf-attrs.lo" +elf32_riscv="elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo elf-attrs.lo" +elf64_riscv="elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo elf-attrs.lo" +elf_tic6x="elf32-tic6x.lo elf32.lo elf-attrs.lo" elfxx_x86="elfxx-x86.lo elf-ifunc.lo elf-solaris2.lo elf-vxworks.lo" -elfxx_sparc="elfxx-sparc.lo elf-solaris2.lo elf-vxworks.lo $elf" +elfxx_sparc="elfxx-sparc.lo elf-solaris2.lo elf-vxworks.lo elf-attrs.lo $elf" for vec in $selvecs do target_size=32 @@ -15844,10 +15857,10 @@ do # This list is alphabetized to make it easy to compare # with the two vector lists in targets.c. For the same reason, # use one entry per line, even though this leads to long lines. - aarch64_elf32_be_vec) tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; - aarch64_elf32_le_vec) tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; - aarch64_elf64_be_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; - aarch64_elf64_le_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; + aarch64_elf32_be_vec) tb="$tb $elf32_aarch64 $elf"; target_size=64 ;; + aarch64_elf32_le_vec) tb="$tb $elf32_aarch64 $elf"; target_size=64 ;; + aarch64_elf64_be_vec) tb="$tb $elf64_aarch64 $elf"; target_size=64 ;; + aarch64_elf64_le_vec) tb="$tb $elf64_aarch64 $elf"; target_size=64 ;; aarch64_mach_o_vec) tb="$tb mach-o-aarch64.lo"; target_size=64 ;; aarch64_pei_le_vec) tb="$tb pei-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;; aarch64_pe_le_vec) tb="$tb pe-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;; @@ -15862,14 +15875,14 @@ do aout0_be_vec) tb="$tb aout0.lo aout32.lo" ;; aout64_vec) tb="$tb demo64.lo aout64.lo"; target_size=64 ;; aout_vec) tb="$tb host-aout.lo aout32.lo" ;; - arc_elf32_be_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;; - arc_elf32_le_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;; - arm_elf32_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_fdpic_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_fdpic_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_vxworks_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_vxworks_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; + arc_elf32_be_vec) tb="$tb $elf_arc $elf" ;; + arc_elf32_le_vec) tb="$tb $elf_arc $elf" ;; + arm_elf32_be_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_le_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_fdpic_be_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_fdpic_le_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_vxworks_be_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_vxworks_le_vec) tb="$tb $elf_arm $elf" ;; arm_pe_be_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;; arm_pe_le_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;; arm_pe_wince_be_vec) tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;; @@ -15887,8 +15900,8 @@ do cris_elf32_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;; cris_elf32_us_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;; crx_elf32_vec) tb="$tb elf32-crx.lo elf32.lo $elf" ;; - csky_elf32_be_vec) tb="$tb elf32-csky.lo elf32.lo $elf" ;; - csky_elf32_le_vec) tb="$tb elf32-csky.lo elf32.lo $elf" ;; + csky_elf32_be_vec) tb="$tb $elf_csky $elf" ;; + csky_elf32_le_vec) tb="$tb $elf_csky $elf" ;; d10v_elf32_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;; d30v_elf32_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;; dlx_elf32_be_vec) tb="$tb elf32-dlx.lo elf32.lo $elf" ;; @@ -15940,8 +15953,8 @@ do kvx_elf64_vec) tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa"; target_size=64 ;; lm32_elf32_vec) tb="$tb elf32-lm32.lo elf32.lo $elf" ;; lm32_elf32_fdpic_vec) tb="$tb elf32-lm32.lo elf32.lo $elf" ;; - loongarch_elf32_vec) tb="$tb elf32-loongarch.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf" ;; - loongarch_elf64_vec) tb="$tb elf64-loongarch.lo elf64.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf"; target_size=64 ;; + loongarch_elf32_vec) tb="$tb elf32-loongarch.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo elf-attrs.lo $elf" ;; + loongarch_elf64_vec) tb="$tb elf64-loongarch.lo elf64.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo elf-attrs.lo $elf"; target_size=64 ;; loongarch64_pei_vec) tb="$tb pei-loongarch64.lo pe-loongarch64igen.lo $coff"; target_size=64 ;; m32c_elf32_vec) tb="$tb elf32-m32c.lo elf32.lo $elf" ;; m32r_elf32_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; @@ -15950,7 +15963,7 @@ do m32r_elf32_linux_le_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; m68hc11_elf32_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;; m68hc12_elf32_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;; - m68k_elf32_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;; + m68k_elf32_vec) tb="$tb elf32-m68k.lo elf32.lo elf-attrs.lo $elf" ;; s12z_elf32_vec) tb="$tb elf32-s12z.lo elf32.lo $elf" ;; mach_o_be_vec) tb="$tb mach-o.lo dwarf2.lo" ;; mach_o_le_vec) tb="$tb mach-o.lo dwarf2.lo" ;; @@ -15969,34 +15982,34 @@ do mips_ecoff_be_vec) tb="$tb coff-mips.lo ecoff.lo $ecoff" ;; mips_ecoff_le_vec) tb="$tb coff-mips.lo ecoff.lo $ecoff" ;; mips_ecoff_bele_vec) tb="$tb coff-mips.lo ecoff.lo $ecoff" ;; - mips_elf32_be_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_le_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_n_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_n_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_ntrad_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_ntrad_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_ntradfbsd_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_ntradfbsd_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_trad_be_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_trad_le_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_tradfbsd_be_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_tradfbsd_le_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_vxworks_be_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_vxworks_le_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf64_be_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_le_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_trad_be_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_trad_le_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_tradfbsd_be_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_tradfbsd_le_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; + mips_elf32_be_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_le_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_n_be_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_n_le_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_ntrad_be_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_ntrad_le_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_ntradfbsd_be_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_ntradfbsd_le_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_trad_be_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_trad_le_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_tradfbsd_be_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_tradfbsd_le_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_vxworks_be_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_vxworks_le_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf64_be_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_le_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_trad_be_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_trad_le_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_tradfbsd_be_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_tradfbsd_le_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; mmix_elf64_vec) tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;; mmix_mmo_vec) tb="$tb mmo.lo" target_size=64 ;; mn10200_elf32_vec) tb="$tb elf-m10200.lo elf32.lo $elf" ;; mn10300_elf32_vec) tb="$tb elf-m10300.lo elf32.lo $elf" ;; moxie_elf32_be_vec) tb="$tb elf32-moxie.lo elf32.lo $elf" ;; moxie_elf32_le_vec) tb="$tb elf32-moxie.lo elf32.lo $elf" ;; - msp430_elf32_vec) tb="$tb elf32-msp430.lo elf32.lo $elf" ;; - msp430_elf32_ti_vec) tb="$tb elf32-msp430.lo elf32.lo $elf" ;; + msp430_elf32_vec) tb="$tb elf32-msp430.lo elf32.lo elf-attrs.lo $elf" ;; + msp430_elf32_ti_vec) tb="$tb elf32-msp430.lo elf32.lo elf-attrs.lo $elf" ;; mt_elf32_vec) tb="$tb elf32-mt.lo elf32.lo $elf" ;; nds32_elf32_be_vec) tb="$tb elf32-nds32.lo elf32.lo $elf" ;; nds32_elf32_le_vec) tb="$tb elf32-nds32.lo elf32.lo $elf" ;; @@ -16013,20 +16026,20 @@ do pj_elf32_vec) tb="$tb elf32-pj.lo elf32.lo $elf" ;; pj_elf32_le_vec) tb="$tb elf32-pj.lo elf32.lo $elf" ;; powerpc_boot_vec) tb="$tb ppcboot.lo" ;; - powerpc_elf32_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; - powerpc_elf32_le_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; - powerpc_elf32_fbsd_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; - powerpc_elf32_vxworks_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; - powerpc_elf64_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;; - powerpc_elf64_le_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; - powerpc_elf64_fbsd_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; - powerpc_elf64_fbsd_le_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; + powerpc_elf32_vec) tb="$tb $elf32_powerpc $elf" ;; + powerpc_elf32_le_vec) tb="$tb $elf32_powerpc $elf" ;; + powerpc_elf32_fbsd_vec) tb="$tb $elf32_powerpc $elf" ;; + powerpc_elf32_vxworks_vec) tb="$tb $elf32_powerpc $elf" ;; + powerpc_elf64_vec) tb="$tb $elf64_powerpc $elf"; target_size=64 ;; + powerpc_elf64_le_vec) tb="$tb $elf64_powerpc $elf"; target_size=64 ;; + powerpc_elf64_fbsd_vec) tb="$tb $elf64_powerpc $elf"; target_size=64 ;; + powerpc_elf64_fbsd_le_vec) tb="$tb $elf64_powerpc $elf"; target_size=64 ;; powerpc_xcoff_vec) tb="$tb coff-rs6000.lo $xcoff" ;; pru_elf32_vec) tb="$tb elf32-pru.lo elf32.lo $elf" ;; - riscv_elf32_vec) tb="$tb elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf" ;; - riscv_elf64_vec) tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; - riscv_elf32_be_vec) tb="$tb elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf" ;; - riscv_elf64_be_vec) tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; + riscv_elf32_vec) tb="$tb $elf32_riscv $elf" ;; + riscv_elf64_vec) tb="$tb $elf64_riscv $elf"; target_size=64 ;; + riscv_elf32_be_vec) tb="$tb $elf32_riscv $elf" ;; + riscv_elf64_be_vec) tb="$tb $elf64_riscv $elf"; target_size=64 ;; riscv64_pei_vec) tb="$tb pei-riscv64.lo pe-riscv64igen.lo $coff"; target_size=64 ;; rl78_elf32_vec) tb="$tb elf32-rl78.lo elf32.lo $elf" ;; rs6000_xcoff64_vec) tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;; @@ -16036,8 +16049,8 @@ do rx_elf32_be_ns_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; rx_elf32_le_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; rx_elf32_linux_le_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; - s390_elf32_vec) tb="$tb elf32-s390.lo elf32.lo $elf" ;; - s390_elf64_vec) tb="$tb elf64-s390.lo elf64.lo $elf"; target_size=64 ;; + s390_elf32_vec) tb="$tb elf32-s390.lo elf32.lo elf-attrs.lo $elf" ;; + s390_elf64_vec) tb="$tb elf64-s390.lo elf64.lo elf-attrs.lo $elf"; target_size=64 ;; score_elf32_be_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;; score_elf32_le_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;; sh_coff_vec) tb="$tb coff-sh.lo $coff" ;; @@ -16077,12 +16090,12 @@ do tic54x_coff1_beh_vec) tb="$tb coff-tic54x.lo $coffgen" ;; tic54x_coff2_vec) tb="$tb coff-tic54x.lo $coffgen" ;; tic54x_coff2_beh_vec) tb="$tb coff-tic54x.lo $coffgen" ;; - tic6x_elf32_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_c6000_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_c6000_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_linux_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_linux_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; + tic6x_elf32_be_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_le_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_c6000_be_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_c6000_le_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_linux_be_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_linux_le_vec) tb="$tb $elf_tic6x $elf" ;; tilegx_elf32_be_vec) tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;; tilegx_elf32_le_vec) tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;; tilegx_elf64_be_vec) tb="$tb elf64-tilegx.lo elfxx-tilegx.lo elf64.lo $elf" ; target_size=64 ;; @@ -16178,7 +16191,7 @@ if test x${all_targets} = xtrue ; then esac done assocvecs=$f - TDEFINES="$TDEFINES -DOBJ_MAYBE_ELF" + TDEFINES="$TDEFINES -DOBJ_MAYBE_ELF -DOBJ_MAYBE_ELF_ATTRIBUTES" else # all_targets is true # Only set these if they will be nonempty, for the clever echo. havevecs= @@ -16193,6 +16206,7 @@ else # all_targets is true for i in $bfd_backends ; do case "$i" in elf.*) TDEFINES="$TDEFINES -DOBJ_MAYBE_ELF" ;; + elf-attrs.*) TDEFINES="$TDEFINES -DOBJ_MAYBE_ELF_ATTRIBUTES" ;; esac done fi # all_targets is true diff --git a/bfd/configure.ac b/bfd/configure.ac index f1477bca81b..877ba4a64f2 100644 --- a/bfd/configure.ac +++ b/bfd/configure.ac @@ -369,15 +369,28 @@ selarchs="$f" # Target backend .o files. tb= -elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-eh-frame.lo - elf-properties.lo elf-sframe.lo dwarf1.lo dwarf2.lo" +elf="elf.lo elflink.lo elf-strtab.lo elf-eh-frame.lo elf-properties.lo + elf-sframe.lo dwarf1.lo dwarf2.lo" coffgen="coffgen.lo dwarf2.lo" coff="cofflink.lo $coffgen" ecoff="ecofflink.lo $coffgen" xcoff="xcofflink.lo $coffgen" +elf32_aarch64="elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo elf-attrs.lo" +elf64_aarch64="elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo elf-attrs.lo" +elf_arc="elf32-arc.lo elf32.lo elf-attrs.lo" +elf_arm="elf32-arm.lo elf32.lo elf-attrs.lo elf-vxworks.lo" +elf_csky="elf32-csky.lo elf32.lo elf-attrs.lo" +elf32_mips="elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo elf-attrs.lo" +elfn32_mips="elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo elf-attrs.lo" +elf64_mips="elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo elf-attrs.lo" +elf32_powerpc="elf32-ppc.lo elf-vxworks.lo elf32.lo elf-attrs.lo" +elf64_powerpc="elf64-ppc.lo elf64-gen.lo elf64.lo elf-attrs.lo" +elf32_riscv="elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo elf-attrs.lo" +elf64_riscv="elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo elf-attrs.lo" +elf_tic6x="elf32-tic6x.lo elf32.lo elf-attrs.lo" elfxx_x86="elfxx-x86.lo elf-ifunc.lo elf-solaris2.lo elf-vxworks.lo" -elfxx_sparc="elfxx-sparc.lo elf-solaris2.lo elf-vxworks.lo $elf" +elfxx_sparc="elfxx-sparc.lo elf-solaris2.lo elf-vxworks.lo elf-attrs.lo $elf" for vec in $selvecs do target_size=32 @@ -385,10 +398,10 @@ do # This list is alphabetized to make it easy to compare # with the two vector lists in targets.c. For the same reason, # use one entry per line, even though this leads to long lines. - aarch64_elf32_be_vec) tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; - aarch64_elf32_le_vec) tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; - aarch64_elf64_be_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; - aarch64_elf64_le_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; + aarch64_elf32_be_vec) tb="$tb $elf32_aarch64 $elf"; target_size=64 ;; + aarch64_elf32_le_vec) tb="$tb $elf32_aarch64 $elf"; target_size=64 ;; + aarch64_elf64_be_vec) tb="$tb $elf64_aarch64 $elf"; target_size=64 ;; + aarch64_elf64_le_vec) tb="$tb $elf64_aarch64 $elf"; target_size=64 ;; aarch64_mach_o_vec) tb="$tb mach-o-aarch64.lo"; target_size=64 ;; aarch64_pei_le_vec) tb="$tb pei-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;; aarch64_pe_le_vec) tb="$tb pe-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;; @@ -403,14 +416,14 @@ do aout0_be_vec) tb="$tb aout0.lo aout32.lo" ;; aout64_vec) tb="$tb demo64.lo aout64.lo"; target_size=64 ;; aout_vec) tb="$tb host-aout.lo aout32.lo" ;; - arc_elf32_be_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;; - arc_elf32_le_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;; - arm_elf32_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_fdpic_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_fdpic_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_vxworks_be_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; - arm_elf32_vxworks_le_vec) tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;; + arc_elf32_be_vec) tb="$tb $elf_arc $elf" ;; + arc_elf32_le_vec) tb="$tb $elf_arc $elf" ;; + arm_elf32_be_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_le_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_fdpic_be_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_fdpic_le_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_vxworks_be_vec) tb="$tb $elf_arm $elf" ;; + arm_elf32_vxworks_le_vec) tb="$tb $elf_arm $elf" ;; arm_pe_be_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;; arm_pe_le_vec) tb="$tb pe-arm.lo peigen.lo $coff" ;; arm_pe_wince_be_vec) tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;; @@ -428,8 +441,8 @@ do cris_elf32_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;; cris_elf32_us_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;; crx_elf32_vec) tb="$tb elf32-crx.lo elf32.lo $elf" ;; - csky_elf32_be_vec) tb="$tb elf32-csky.lo elf32.lo $elf" ;; - csky_elf32_le_vec) tb="$tb elf32-csky.lo elf32.lo $elf" ;; + csky_elf32_be_vec) tb="$tb $elf_csky $elf" ;; + csky_elf32_le_vec) tb="$tb $elf_csky $elf" ;; d10v_elf32_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;; d30v_elf32_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;; dlx_elf32_be_vec) tb="$tb elf32-dlx.lo elf32.lo $elf" ;; @@ -481,8 +494,8 @@ do kvx_elf64_vec) tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa"; target_size=64 ;; lm32_elf32_vec) tb="$tb elf32-lm32.lo elf32.lo $elf" ;; lm32_elf32_fdpic_vec) tb="$tb elf32-lm32.lo elf32.lo $elf" ;; - loongarch_elf32_vec) tb="$tb elf32-loongarch.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf" ;; - loongarch_elf64_vec) tb="$tb elf64-loongarch.lo elf64.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf"; target_size=64 ;; + loongarch_elf32_vec) tb="$tb elf32-loongarch.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo elf-attrs.lo $elf" ;; + loongarch_elf64_vec) tb="$tb elf64-loongarch.lo elf64.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo elf-attrs.lo $elf"; target_size=64 ;; loongarch64_pei_vec) tb="$tb pei-loongarch64.lo pe-loongarch64igen.lo $coff"; target_size=64 ;; m32c_elf32_vec) tb="$tb elf32-m32c.lo elf32.lo $elf" ;; m32r_elf32_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; @@ -491,7 +504,7 @@ do m32r_elf32_linux_le_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;; m68hc11_elf32_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;; m68hc12_elf32_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;; - m68k_elf32_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;; + m68k_elf32_vec) tb="$tb elf32-m68k.lo elf32.lo elf-attrs.lo $elf" ;; s12z_elf32_vec) tb="$tb elf32-s12z.lo elf32.lo $elf" ;; mach_o_be_vec) tb="$tb mach-o.lo dwarf2.lo" ;; mach_o_le_vec) tb="$tb mach-o.lo dwarf2.lo" ;; @@ -510,34 +523,34 @@ do mips_ecoff_be_vec) tb="$tb coff-mips.lo ecoff.lo $ecoff" ;; mips_ecoff_le_vec) tb="$tb coff-mips.lo ecoff.lo $ecoff" ;; mips_ecoff_bele_vec) tb="$tb coff-mips.lo ecoff.lo $ecoff" ;; - mips_elf32_be_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_le_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_n_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_n_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_ntrad_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_ntrad_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_ntradfbsd_be_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_ntradfbsd_le_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf32_trad_be_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_trad_le_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_tradfbsd_be_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_tradfbsd_le_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_vxworks_be_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf32_vxworks_le_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff" ;; - mips_elf64_be_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_le_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_trad_be_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_trad_le_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_tradfbsd_be_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; - mips_elf64_tradfbsd_le_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf $ecoff"; target_size=64 ;; + mips_elf32_be_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_le_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_n_be_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_n_le_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_ntrad_be_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_ntrad_le_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_ntradfbsd_be_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_ntradfbsd_le_vec) tb="$tb $elfn32_mips $elf $ecoff"; target_size=64 ;; + mips_elf32_trad_be_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_trad_le_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_tradfbsd_be_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_tradfbsd_le_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_vxworks_be_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf32_vxworks_le_vec) tb="$tb $elf32_mips $elf $ecoff" ;; + mips_elf64_be_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_le_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_trad_be_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_trad_le_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_tradfbsd_be_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; + mips_elf64_tradfbsd_le_vec) tb="$tb $elf64_mips $elf $ecoff"; target_size=64 ;; mmix_elf64_vec) tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;; mmix_mmo_vec) tb="$tb mmo.lo" target_size=64 ;; mn10200_elf32_vec) tb="$tb elf-m10200.lo elf32.lo $elf" ;; mn10300_elf32_vec) tb="$tb elf-m10300.lo elf32.lo $elf" ;; moxie_elf32_be_vec) tb="$tb elf32-moxie.lo elf32.lo $elf" ;; moxie_elf32_le_vec) tb="$tb elf32-moxie.lo elf32.lo $elf" ;; - msp430_elf32_vec) tb="$tb elf32-msp430.lo elf32.lo $elf" ;; - msp430_elf32_ti_vec) tb="$tb elf32-msp430.lo elf32.lo $elf" ;; + msp430_elf32_vec) tb="$tb elf32-msp430.lo elf32.lo elf-attrs.lo $elf" ;; + msp430_elf32_ti_vec) tb="$tb elf32-msp430.lo elf32.lo elf-attrs.lo $elf" ;; mt_elf32_vec) tb="$tb elf32-mt.lo elf32.lo $elf" ;; nds32_elf32_be_vec) tb="$tb elf32-nds32.lo elf32.lo $elf" ;; nds32_elf32_le_vec) tb="$tb elf32-nds32.lo elf32.lo $elf" ;; @@ -554,20 +567,20 @@ do pj_elf32_vec) tb="$tb elf32-pj.lo elf32.lo $elf" ;; pj_elf32_le_vec) tb="$tb elf32-pj.lo elf32.lo $elf" ;; powerpc_boot_vec) tb="$tb ppcboot.lo" ;; - powerpc_elf32_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; - powerpc_elf32_le_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; - powerpc_elf32_fbsd_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; - powerpc_elf32_vxworks_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; - powerpc_elf64_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;; - powerpc_elf64_le_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; - powerpc_elf64_fbsd_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; - powerpc_elf64_fbsd_le_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; + powerpc_elf32_vec) tb="$tb $elf32_powerpc $elf" ;; + powerpc_elf32_le_vec) tb="$tb $elf32_powerpc $elf" ;; + powerpc_elf32_fbsd_vec) tb="$tb $elf32_powerpc $elf" ;; + powerpc_elf32_vxworks_vec) tb="$tb $elf32_powerpc $elf" ;; + powerpc_elf64_vec) tb="$tb $elf64_powerpc $elf"; target_size=64 ;; + powerpc_elf64_le_vec) tb="$tb $elf64_powerpc $elf"; target_size=64 ;; + powerpc_elf64_fbsd_vec) tb="$tb $elf64_powerpc $elf"; target_size=64 ;; + powerpc_elf64_fbsd_le_vec) tb="$tb $elf64_powerpc $elf"; target_size=64 ;; powerpc_xcoff_vec) tb="$tb coff-rs6000.lo $xcoff" ;; pru_elf32_vec) tb="$tb elf32-pru.lo elf32.lo $elf" ;; - riscv_elf32_vec) tb="$tb elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf" ;; - riscv_elf64_vec) tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; - riscv_elf32_be_vec) tb="$tb elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf" ;; - riscv_elf64_be_vec) tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;; + riscv_elf32_vec) tb="$tb $elf32_riscv $elf" ;; + riscv_elf64_vec) tb="$tb $elf64_riscv $elf"; target_size=64 ;; + riscv_elf32_be_vec) tb="$tb $elf32_riscv $elf" ;; + riscv_elf64_be_vec) tb="$tb $elf64_riscv $elf"; target_size=64 ;; riscv64_pei_vec) tb="$tb pei-riscv64.lo pe-riscv64igen.lo $coff"; target_size=64 ;; rl78_elf32_vec) tb="$tb elf32-rl78.lo elf32.lo $elf" ;; rs6000_xcoff64_vec) tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;; @@ -577,8 +590,8 @@ do rx_elf32_be_ns_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; rx_elf32_le_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; rx_elf32_linux_le_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; - s390_elf32_vec) tb="$tb elf32-s390.lo elf32.lo $elf" ;; - s390_elf64_vec) tb="$tb elf64-s390.lo elf64.lo $elf"; target_size=64 ;; + s390_elf32_vec) tb="$tb elf32-s390.lo elf32.lo elf-attrs.lo $elf" ;; + s390_elf64_vec) tb="$tb elf64-s390.lo elf64.lo elf-attrs.lo $elf"; target_size=64 ;; score_elf32_be_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;; score_elf32_le_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;; sh_coff_vec) tb="$tb coff-sh.lo $coff" ;; @@ -618,12 +631,12 @@ do tic54x_coff1_beh_vec) tb="$tb coff-tic54x.lo $coffgen" ;; tic54x_coff2_vec) tb="$tb coff-tic54x.lo $coffgen" ;; tic54x_coff2_beh_vec) tb="$tb coff-tic54x.lo $coffgen" ;; - tic6x_elf32_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_c6000_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_c6000_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_linux_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; - tic6x_elf32_linux_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; + tic6x_elf32_be_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_le_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_c6000_be_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_c6000_le_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_linux_be_vec) tb="$tb $elf_tic6x $elf" ;; + tic6x_elf32_linux_le_vec) tb="$tb $elf_tic6x $elf" ;; tilegx_elf32_be_vec) tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;; tilegx_elf32_le_vec) tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;; tilegx_elf64_be_vec) tb="$tb elf64-tilegx.lo elfxx-tilegx.lo elf64.lo $elf" ; target_size=64 ;; @@ -719,7 +732,7 @@ if test x${all_targets} = xtrue ; then esac done assocvecs=$f - TDEFINES="$TDEFINES -DOBJ_MAYBE_ELF" + TDEFINES="$TDEFINES -DOBJ_MAYBE_ELF -DOBJ_MAYBE_ELF_ATTRIBUTES" else # all_targets is true # Only set these if they will be nonempty, for the clever echo. havevecs= @@ -734,6 +747,7 @@ else # all_targets is true for i in $bfd_backends ; do case "$i" in elf.*) TDEFINES="$TDEFINES -DOBJ_MAYBE_ELF" ;; + elf-attrs.*) TDEFINES="$TDEFINES -DOBJ_MAYBE_ELF_ATTRIBUTES" ;; esac done fi # all_targets is true diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 837fbefa6a2..58db4eb81b0 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -3174,10 +3174,6 @@ extern bfd *_bfd_elf64_bfd_from_remote_memory int (*target_read_memory) (bfd_vma, bfd_byte *, bfd_size_type)) ATTRIBUTE_HIDDEN; -extern obj_attr_version_t _bfd_obj_attrs_version_dec (uint8_t) - ATTRIBUTE_HIDDEN; -extern uint8_t _bfd_obj_attrs_version_enc (obj_attr_version_t) - ATTRIBUTE_HIDDEN; extern bfd_vma bfd_elf_obj_attr_size (bfd *); extern void bfd_elf_set_obj_attr_contents (bfd *, bfd_byte *, bfd_vma); extern obj_attribute * @@ -3196,27 +3192,51 @@ extern obj_attribute *bfd_elf_add_obj_attr_int_string #define bfd_elf_add_proc_attr_int_string(BFD, TAG, INTVAL, STRVAL) \ bfd_elf_add_obj_attr_int_string ((BFD), OBJ_ATTR_PROC, (TAG), \ (INTVAL), (STRVAL)) +extern int bfd_elf_obj_attrs_arg_type + (bfd *, obj_attr_vendor_t, obj_attr_tag_t); +extern bfd *_bfd_elf_link_setup_object_attributes + (struct bfd_link_info *) ATTRIBUTE_HIDDEN; + +#ifdef OBJ_MAYBE_ELF_ATTRIBUTES +extern obj_attr_version_t _bfd_obj_attrs_version_dec (uint8_t) + ATTRIBUTE_HIDDEN; +extern uint8_t _bfd_obj_attrs_version_enc (obj_attr_version_t) + ATTRIBUTE_HIDDEN; extern bool _bfd_elf_write_section_object_attributes (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN; extern char *_bfd_elf_attr_strdup (bfd *, const char *) ATTRIBUTE_HIDDEN; extern void _bfd_elf_copy_obj_attributes (bfd *, bfd *) ATTRIBUTE_HIDDEN; -extern int bfd_elf_obj_attrs_arg_type - (bfd *, obj_attr_vendor_t, obj_attr_tag_t); extern void _bfd_elf_parse_attributes (bfd *, Elf_Internal_Shdr *) ATTRIBUTE_HIDDEN; extern void _bfd_elf_cleanup_object_attributes (bfd *) ATTRIBUTE_HIDDEN; -extern bfd *_bfd_elf_link_setup_object_attributes - (struct bfd_link_info *) ATTRIBUTE_HIDDEN; extern bool _bfd_elf_merge_object_attributes (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN; extern bool _bfd_elf_merge_unknown_attribute_low (bfd *, bfd *, int) ATTRIBUTE_HIDDEN; extern bool _bfd_elf_merge_unknown_attribute_list (bfd *, bfd *) ATTRIBUTE_HIDDEN; + +#else /* !OBJ_MAYBE_ELF_ATTRIBUTES */ + +static inline bool _bfd_elf_write_section_object_attributes + (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info ATTRIBUTE_UNUSED) +{ return true; } +static inline void _bfd_elf_copy_obj_attributes + (bfd *ibfd ATTRIBUTE_UNUSED, bfd *obfd ATTRIBUTE_UNUSED) +{} +static inline void _bfd_elf_parse_attributes + (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Shdr *hdr ATTRIBUTE_UNUSED) +{} +static inline void _bfd_elf_cleanup_object_attributes + (bfd *abfd ATTRIBUTE_UNUSED) +{} + +#endif /* OBJ_MAYBE_ELF_ATTRIBUTES */ + extern Elf_Internal_Shdr *_bfd_elf_single_rel_hdr (asection *sec); extern bool _bfd_elf_read_notes diff --git a/bfd/elf.c b/bfd/elf.c index a8e1834b8f2..5f02188b4b5 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -14209,3 +14209,11 @@ _bfd_elf_link_munmap_section_contents (asection *sec ATTRIBUTE_UNUSED) } #endif } + +#ifndef OBJ_MAYBE_ELF_ATTRIBUTES + +bfd *_bfd_elf_link_setup_object_attributes + (struct bfd_link_info *info ATTRIBUTE_UNUSED) +{ return NULL; } + +#endif /* !OBJ_MAYBE_ELF_ATTRIBUTES */ diff --git a/bfd/elflink.c b/bfd/elflink.c index 60c1ccb6c8d..70a1cd107aa 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -12706,11 +12706,14 @@ _bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) sections from the link, and set the contents of the output section. */ sections_removed = false; +#ifdef OBJ_MAYBE_ELF_ATTRIBUTES const char *obj_attrs_section = get_elf_backend_data (abfd)->obj_attrs_section; +#endif for (o = abfd->sections; o != NULL; o = o->next) { bool remove_section = false; +#ifdef OBJ_MAYBE_ELF_ATTRIBUTES if ((obj_attrs_section && strcmp (o->name, obj_attrs_section) == 0) || strcmp (o->name, ".gnu.attributes") == 0) { @@ -12739,7 +12742,9 @@ _bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) else remove_section = true; } - else if ((o->flags & SEC_GROUP) != 0 && o->size == 0) + else +#endif /* OBJ_MAYBE_ELF_ATTRIBUTES */ + if ((o->flags & SEC_GROUP) != 0 && o->size == 0) { /* Remove empty group section from linker output. */ remove_section = true; diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h index 672daeccb04..124be5ed0c4 100644 --- a/bfd/elfxx-target.h +++ b/bfd/elfxx-target.h @@ -554,12 +554,17 @@ #ifndef elf_backend_default_obj_attr_version #define elf_backend_default_obj_attr_version OBJ_ATTR_V1 #endif +#ifdef OBJ_MAYBE_ELF_ATTRIBUTES #ifndef elf_backend_obj_attrs_version_dec #define elf_backend_obj_attrs_version_dec _bfd_obj_attrs_version_dec #endif #ifndef elf_backend_obj_attrs_version_enc #define elf_backend_obj_attrs_version_enc _bfd_obj_attrs_version_enc #endif +#else /* OBJ_MAYBE_ELF_ATTRIBUTES */ +#define elf_backend_obj_attrs_version_dec NULL +#define elf_backend_obj_attrs_version_enc NULL +#endif /* OBJ_MAYBE_ELF_ATTRIBUTES */ #ifndef elf_backend_obj_attr_v2_known_subsections #define elf_backend_obj_attr_v2_known_subsections NULL #endif