mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-03-07 13:39:43 +08:00
The BFD configure option, --enable-elf-stt-common, can't be to used to verify STT_COMMON implementation with the normal binutils build. Instead, this patch removes it from BFD. It adds --elf-stt-common=[no|yes] to ELF assembler/objcopy and adds -z common/-z nocommon to ld. A configure option, --enable-elf-stt-common, is added to gas to specify whether ELF assembler should generate common symbols with the STT_COMMON type by default. Since BSF_KEEP_G is never used, it is renamed to BSF_ELF_COMMON for ELF common symbols. bfd/ PR ld/19645 * bfd.c (bfd): Change flags to 20 bits. (BFD_CONVERT_ELF_COMMON): New. (BFD_USE_ELF_STT_COMMON): Likewise. (BFD_FLAGS_SAVED): Add BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON. (BFD_FLAGS_FOR_BFD_USE_MASK): Likewise. * configure.ac: Remove --enable-elf-stt-common. * elf.c (swap_out_syms): Choose STT_COMMON or STT_OBJECT for common symbol depending on BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON. * elfcode.h (elf_slurp_symbol_table): Set BSF_ELF_COMMON for STT_COMMON. * elflink.c (bfd_elf_link_mark_dynamic_symbol): Also check STT_COMMON. (elf_link_convert_common_type): New function. (elf_link_output_extsym): Choose STT_COMMON or STT_OBJECT for common symbol depending on BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON. Set sym.st_info after sym.st_shndx. * elfxx-target.h (TARGET_BIG_SYM): Add BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON to object_flags. (TARGET_LITTLE_SYM): Likewise. * syms.c (BSF_KEEP_G): Renamed to ... (BSF_ELF_COMMON): This. * bfd-in2.h: Regenerated. * config.in: Likewise. * configure: Likewise. binutils/ PR ld/19645 * NEWS: Mention --elf-stt-common= for objcopy. * doc/binutils.texi: Document --elf-stt-common= for objcopy. * objcopy.c (do_elf_stt_common): New. (command_line_switch): Add OPTION_ELF_STT_COMMON. (copy_options): Add --elf-stt-common=. (copy_usage): Add --elf-stt-common=. (copy_object): Also check do_elf_stt_common for ELF targets. (copy_file): Handle do_elf_stt_common. (copy_main): Handle OPTION_ELF_STT_COMMON. * readelf.c (apply_relocations): Support STT_COMMON. * testsuite/binutils-all/common-1.s: New file. * testsuite/binutils-all/common-1a.d: Likewise. * testsuite/binutils-all/common-1b.d: Likewise. * testsuite/binutils-all/common-1c.d: Likewise. * testsuite/binutils-all/common-1d.d: Likewise. * testsuite/binutils-all/common-1e.d: Likewise. * testsuite/binutils-all/common-1f.d: Likewise. * testsuite/binutils-all/common-2.s: Likewise. * testsuite/binutils-all/common-2a.d: Likewise. * testsuite/binutils-all/common-2b.d: Likewise. * testsuite/binutils-all/common-2c.d: Likewise. * testsuite/binutils-all/common-2d.d: Likewise. * testsuite/binutils-all/common-2e.d: Likewise. * testsuite/binutils-all/common-2f.d: Likewise. * testsuite/binutils-all/objcopy.exp (objcopy_test_elf_common_symbols): New proc. Run objcopy_test_elf_common_symbols for ELF targets gas/ PR ld/19645 * NEWS: Mention --enable-elf-stt-common and --elf-stt-common= for ELF assemblers. * as.c (flag_use_elf_stt_common): New. (show_usage): Add --elf-stt-common=. (option_values): Add OPTION_ELF_STT_COMMON. (std_longopts): Add --elf-stt-common=. (parse_args): Handle --elf-stt-common=. * as.h (flag_use_elf_stt_common): New. * config.in: Regenerated. * configure: Likewise. * configure.ac: Add --enable-elf-stt-common and define DEFAULT_GENERATE_ELF_STT_COMMON. * gas/write.c (write_object_file): Set BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON if flag_use_elf_stt_common is set. * doc/as.texinfo: Document --elf-stt-common=. * testsuite/gas/elf/common3.s: New file. * testsuite/gas/elf/common3a.d: Likewise. * testsuite/gas/elf/common3b.d: Likewise. * testsuite/gas/elf/common4.s: Likewise. * testsuite/gas/elf/common4a.d: Likewise. * testsuite/gas/elf/common4b.d: Likewise. * testsuite/gas/i386/dw2-compress-3b.d: Likewise. * testsuite/gas/i386/dw2-compressed-3b.d: Likewise. * testsuite/gas/elf/elf.exp: Run common3a, common3b, common4a and common4b. * testsuite/gas/i386/dw2-compress-3.d: Renamed to ... * testsuite/gas/i386/dw2-compress-3a.d: This. Pass --elf-stt-common=no to as. * testsuite/gas/i386/dw2-compressed-3.d: Renamed to ... * testsuite/gas/i386/dw2-compressed-3a.d: This. Pass --elf-stt-common=no to as. * testsuite/gas/i386/i386.exp: Run dw2-compress-3a, dw2-compress-3b, dw2-compressed-3a and dw2-compressed-3b instead of dw2-compress-3 and dw2-compressed-3. include/ PR ld/19645 * bfdlink.h (bfd_link_elf_stt_common): New enum. (bfd_link_info): Add elf_stt_common. ld/ PR ld/19645 * NEWS: Mention -z common/-z nocommon for ELF targets. * emultempl/elf32.em (gld${EMULATION_NAME}_handle_option): Handle -z common and -z nocommon. * ld.texinfo: Document -z common/-z nocommon. * lexsup.c (elf_shlib_list_options): Add -z common/-z nocommon. * testsuite/ld-elf/tls_common.exp: Test --elf-stt-common=no and --elf-stt-common=yes with assembler. * testsuite/ld-elfcomm/common-1.s: New file. * testsuite/ld-elfcomm/common-1a.d: Likewise. * testsuite/ld-elfcomm/common-1b.d: Likewise. * testsuite/ld-elfcomm/common-1c.d: Likewise. * testsuite/ld-elfcomm/common-1d.d: Likewise. * testsuite/ld-elfcomm/common-1e.d: Likewise. * testsuite/ld-elfcomm/common-1f.d: Likewise. * testsuite/ld-elfcomm/common-2.s: Likewise. * testsuite/ld-elfcomm/common-2a.d: Likewise. * testsuite/ld-elfcomm/common-2b.d: Likewise. * testsuite/ld-elfcomm/common-2c.d: Likewise. * testsuite/ld-elfcomm/common-2d.d: Likewise. * testsuite/ld-elfcomm/common-2e.d: Likewise. * testsuite/ld-elfcomm/common-2f.d: Likewise. * testsuite/ld-elfcomm/common-3a.rd: Likewise. * testsuite/ld-elfcomm/common-3b.rd: Likewise. * testsuite/ld-i386/pr19645.d: Likewise. * testsuite/ld-i386/pr19645.s: Likewise. * testsuite/ld-x86-64/largecomm-1.s: Likewise. * testsuite/ld-x86-64/largecomm-1a.d: Likewise. * testsuite/ld-x86-64/largecomm-1b.d: Likewise. * testsuite/ld-x86-64/largecomm-1c.d: Likewise. * testsuite/ld-x86-64/largecomm-1d.d: Likewise. * testsuite/ld-x86-64/largecomm-1e.d: Likewise. * testsuite/ld-x86-64/largecomm-1f.d: Likewise. * testsuite/ld-x86-64/pr19645.d: Likewise. * testsuite/ld-x86-64/pr19645.s: Likewise. * testsuite/ld-elfcomm/elfcomm.exp: Test --elf-stt-common=yes with assembler. (assembler_generates_commons): Removed. Run -z common/-z nocommon tests. Run *.d tests. * testsuite/ld-i386/i386.exp: Run pr19645. * testsuite/ld-x86-64/x86-64.exp: Likewise. * testsuite/ld-x86-64/dwarfreloc.exp: Test --elf-stt-common with assembler. Test STT_COMMON with readelf. |
||
---|---|---|
.. | ||
abs-iamcu.d | ||
abs.d | ||
abs.s | ||
alloc.d | ||
alloc.s | ||
alloc.t | ||
branch1.d | ||
branch1.s | ||
call1.d | ||
call1.s | ||
call2.d | ||
call2.s | ||
call3.s | ||
call3a.d | ||
call3b.d | ||
call3c.d | ||
call3d.d | ||
call3e.d | ||
call3f.d | ||
call3g.d | ||
call3h.d | ||
combreloc.d | ||
combreloc.s | ||
compressed1.d | ||
compressed1.s | ||
copyreloc-lib.c | ||
copyreloc-main1.rd | ||
copyreloc-main2.rd | ||
copyreloc-main.out | ||
copyreloc-main.S | ||
discarded1.d | ||
discarded1.s | ||
discarded1.t | ||
dummy.c | ||
dummy.s | ||
emit-relocs-nacl.rd | ||
emit-relocs.rd | ||
emit-relocs.s | ||
export-class.exp | ||
foo.s | ||
got1.dd | ||
got1.out | ||
got1a.S | ||
got1b.c | ||
got1c.c | ||
got1d.S | ||
hidden1.d | ||
hidden1.s | ||
hidden2.d | ||
hidden2.s | ||
hidden3.d | ||
hidden3.s | ||
i386-export-class.rd | ||
i386-export-class.xd | ||
i386.exp | ||
iamcu-1.d | ||
iamcu-2.d | ||
iamcu-3.d | ||
iamcu-4.d | ||
jmp1.d | ||
jmp1.s | ||
jmp2.d | ||
jmp2.s | ||
lea1.s | ||
lea1a.d | ||
lea1b.d | ||
lea1c.d | ||
lea1d.d | ||
lea1e.d | ||
lea1f.d | ||
load1-nacl.d | ||
load1.d | ||
load1.s | ||
load2.d | ||
load2.s | ||
load3.d | ||
load3.s | ||
load4.s | ||
load4a.d | ||
load4b.d | ||
load5.s | ||
load5a.d | ||
load5b.d | ||
load6.d | ||
load6.s | ||
mov1.s | ||
mov1a.d | ||
mov1b.d | ||
mov2.s | ||
mov2a.d | ||
mov2b.d | ||
mov3.d | ||
mov3.s | ||
nogot1.d | ||
nogot1.s | ||
nogot2.d | ||
nogot2.s | ||
pcrel8.d | ||
pcrel8.s | ||
pcrel16.d | ||
pcrel16.s | ||
pcrel16abs.d | ||
pcrel16abs.s | ||
plt-lib.c | ||
plt-main1.c | ||
plt-main1.rd | ||
plt-main2.c | ||
plt-main2.rd | ||
plt-main3.c | ||
plt-main3.rd | ||
plt-main4.c | ||
plt-main4.rd | ||
plt-main5.c | ||
plt-main.out | ||
plt-main.rd | ||
plt-nacl.pd | ||
plt-pic-nacl.pd | ||
plt-pic.pd | ||
plt-pic.s | ||
plt.pd | ||
plt.s | ||
pltgot-1.d | ||
pltgot-1.s | ||
pltgot-2.d | ||
pltlib.s | ||
pr12570a.d | ||
pr12570a.s | ||
pr12570b.d | ||
pr12570b.s | ||
pr12627.d | ||
pr12627.s | ||
pr12627.t | ||
pr12718.d | ||
pr12718.s | ||
pr12921.d | ||
pr12921.s | ||
pr13302.d | ||
pr13302.s | ||
pr14215.d | ||
pr14215.s | ||
pr17057.d | ||
pr17057.s | ||
pr17306a.s | ||
pr17306b.s | ||
pr17689.out | ||
pr17689.rd | ||
pr17689a.c | ||
pr17689a.t | ||
pr17689b.S | ||
pr17689now.rd | ||
pr17689ver.rd | ||
pr17709-nacl.rd | ||
pr17709.rd | ||
pr17709a.s | ||
pr17709b.s | ||
pr17827.rd | ||
pr17935-1.d | ||
pr17935-1.s | ||
pr17935-2.d | ||
pr17935-2.s | ||
pr18801.d | ||
pr18801.s | ||
pr18815.d | ||
pr18815.s | ||
pr18900.out | ||
pr18900a.c | ||
pr18900a.rd | ||
pr18900b.c | ||
pr18900b.rd | ||
pr18900c.c | ||
pr19031.out | ||
pr19031a.c | ||
pr19031b.S | ||
pr19031c.c | ||
pr19175.d | ||
pr19175.s | ||
pr19175.t | ||
pr19319.dd | ||
pr19319a.S | ||
pr19319b.S | ||
pr19615.d | ||
pr19615.s | ||
pr19636-1.s | ||
pr19636-1a.d | ||
pr19636-1b.d | ||
pr19636-1c.d | ||
pr19636-1d-nacl.d | ||
pr19636-1d.d | ||
pr19636-1e.d | ||
pr19636-1f.d | ||
pr19636-1g.d | ||
pr19636-1h.d | ||
pr19636-1i.d | ||
pr19636-2.s | ||
pr19636-2a.d | ||
pr19636-2b.d | ||
pr19636-2c-nacl.d | ||
pr19636-2c.d | ||
pr19636-2d-nacl.d | ||
pr19636-2d.d | ||
pr19636-2e-nacl.d | ||
pr19636-2e.d | ||
pr19636-3.s | ||
pr19636-3a.d | ||
pr19636-3b.d | ||
pr19636-3c.d | ||
pr19636-3d.d | ||
pr19636-3e.d | ||
pr19636-3f.d | ||
pr19636-3g.d | ||
pr19636-4.s | ||
pr19636-4a.d | ||
pr19636-4b.d | ||
pr19636-4c.d | ||
pr19636-4d.d | ||
pr19645.d | ||
pr19645.s | ||
pr19704.out | ||
pr19704a.c | ||
pr19704b.c | ||
protected1.d | ||
protected1.s | ||
protected2.d | ||
protected2.s | ||
protected3.d | ||
protected3.s | ||
protected4.d | ||
protected4.s | ||
protected5.d | ||
protected5.s | ||
protected6.s | ||
protected6a.d | ||
protected6b.d | ||
reloc.d | ||
reloc.s | ||
start.s | ||
tlsbin-nacl.rd | ||
tlsbin.dd | ||
tlsbin.rd | ||
tlsbin.s | ||
tlsbin.sd | ||
tlsbin.td | ||
tlsbindesc-nacl.rd | ||
tlsbindesc.dd | ||
tlsbindesc.rd | ||
tlsbindesc.s | ||
tlsbindesc.sd | ||
tlsbindesc.td | ||
tlsbinpic.s | ||
tlsdesc-nacl.rd | ||
tlsdesc.dd | ||
tlsdesc.rd | ||
tlsdesc.s | ||
tlsdesc.sd | ||
tlsdesc.td | ||
tlsg.s | ||
tlsg.sd | ||
tlsgd1.dd | ||
tlsgd1.s | ||
tlsgd2.d | ||
tlsgd2.s | ||
tlsgdesc-nacl.rd | ||
tlsgdesc.dd | ||
tlsgdesc.rd | ||
tlsgdesc.s | ||
tlsie1.dd | ||
tlsie1.s | ||
tlsie2.d | ||
tlsie2.s | ||
tlsie3.d | ||
tlsie3.s | ||
tlsie4.d | ||
tlsie4.s | ||
tlsie5.d | ||
tlsie5.s | ||
tlsindntpoff.dd | ||
tlsindntpoff.s | ||
tlsld1.dd | ||
tlsld1.s | ||
tlslib.s | ||
tlsnopic1.s | ||
tlsnopic2.s | ||
tlsnopic-nacl.rd | ||
tlsnopic.dd | ||
tlsnopic.rd | ||
tlsnopic.sd | ||
tlspic1.s | ||
tlspic2.s | ||
tlspic-nacl.rd | ||
tlspic.dd | ||
tlspic.rd | ||
tlspic.sd | ||
tlspic.td | ||
tlspie1.d | ||
tlspie1.s | ||
tlspie2.d | ||
tlspie2.s | ||
vxworks1-lib.dd | ||
vxworks1-lib.nd | ||
vxworks1-lib.rd | ||
vxworks1-lib.s | ||
vxworks1-lib.td | ||
vxworks1-static.d | ||
vxworks1.dd | ||
vxworks1.ld | ||
vxworks1.rd | ||
vxworks1.s | ||
vxworks2-static.sd | ||
vxworks2.s | ||
vxworks2.sd | ||
warn1.d | ||
warn1.s | ||
zero.s |