old-cross-binutils/ld/emultempl
H.J. Lu b8871f357f Properly implement STT_COMMON
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.
2016-02-26 05:01:34 -08:00
..
aarch64elf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
aix.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
alphaelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
arclinux.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
armcoff.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
armelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
astring.sed
avrelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
beos.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
bfin.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
cr16elf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
crxelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
elf-generic.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
elf32.em Properly implement STT_COMMON 2016-02-26 05:01:34 -08:00
epiphanyelf_4x4.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
genelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
generic.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
gld960.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
gld960c.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
hppaelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
ia64elf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
irix.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
linux.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
lnk960.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
m68hc1xelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
m68kcoff.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
m68kelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
metagelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
mipself.em MIPS/LD: Convert ELF linker emulation option macros to an enum 2016-01-04 23:35:03 +00:00
mmix-elfnmmo.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
mmixelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
mmo.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
msp430.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
nds32elf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
needrelax.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
netbsd.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
nios2elf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
ostring.sed
pe.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
pep.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
ppc32elf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
ppc64elf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
README Copyright update for binutils 2016-01-01 23:00:01 +10:30
rxelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
scoreelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
sh64elf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
solaris2.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
spu_icache.o_c Regenerate spu overlay and icache manager files 2014-11-04 22:36:13 +10:30
spu_icache.S bfd/ 2009-03-17 12:46:19 +00:00
spu_ovl.o_c Regenerate spu overlay and icache manager files 2014-11-04 22:36:13 +10:30
spu_ovl.S Copyright update for binutils 2016-01-01 23:00:01 +10:30
spuelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
sunos.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
tic6xdsbt.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
ticoff.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
v850elf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
vanilla.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
vms.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
vxworks.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
xtensaelf.em Copyright update for binutils 2016-01-01 23:00:01 +10:30
z80.em Copyright update for binutils 2016-01-01 23:00:01 +10:30

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

The files in this directory are sourced by genscripts.sh, after
setting some variables to substitute in, to produce
C source files that contain jump tables for each emulation.

Copyright (C) 2012-2016 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.