[PATCH v2 2/5] bfd: avoid elf-attrs.c for ELF-attributes-free targets
Jan Beulich
jbeulich@suse.com
Mon Mar 2 07:42:08 GMT 2026
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.
---
Why exactly does _bfd_elf_write_section_object_attributes() have an "info"
parameter?
Instead of the change to _bfd_elf_final_link() it may be neater to have
the #else in elf-bfd.h be #elif, just that I couldn't spot anything which
would identify we're building libbfd (and not one of its consumers).
---
v2: Drop now unnecessary stubs from bfd/elf.c, requiring a change to
_bfd_elf_final_link(). Re-base.
--- 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
--- 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
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -14209,3 +14209,11 @@ _bfd_elf_link_munmap_section_contents (a
}
#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 */
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -3174,10 +3174,6 @@ extern bfd *_bfd_elf64_bfd_from_remote_m
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_at
#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
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -12704,11 +12704,14 @@ _bfd_elf_final_link (bfd *abfd, struct b
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)
{
@@ -12737,7 +12740,9 @@ _bfd_elf_final_link (bfd *abfd, struct b
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;
--- 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
More information about the Binutils
mailing list