Commit Graph

8 Commits

Author SHA1 Message Date
H.J. Lu 889c2a6796 Add -z noextern-protected-data to ld for ELF/x86
Address of protected data defined in the shared library may be external,
i.e., due to copy relocation.  By default, linker backend checks if
relocations against protected data symbols are valid for building shared
library and issues an error if relocation isn't allowed.  The new option
override linker backend default.  When -z noextern-protected-data is used,
updates on protected data symbols by another module won't be visibile
to the resulting shared library.  This option is specific to ELF/i386
and ELF/x86-64.

bfd/

	PR ld/pr17709
	* elflink.c (_bfd_elf_adjust_dynamic_copy): Check
	info->extern_protected_data when warning copy relocs against
	protected symbols.
	(_bfd_elf_symbol_refs_local_p): Check info->extern_protected_data
	when checking protected non-function symbols.

include/

	PR ld/pr17709
	* bfdlink.h (bfd_link_info): Add extern_protected_data.

ld/

	PR ld/pr17709
	* ld.texinfo: Document "-z noextern-protected-data".
	* ldmain.c (main): Initialize link_info.extern_protected_data
	to -1.
	* lexsup.c (elf_shlib_list_options): Add
	"-z [no]extern-protected-data".
	* emulparams/elf32_x86_64.sh: Source extern_protected_data.sh.
	* emulparams/elf_i386.sh: Likewise.
	* emulparams/elf_i386_be.sh: Likewise.
	* emulparams/elf_i386_chaos.sh: Likewise.
	* emulparams/elf_i386_ldso.sh: Likewise.
	* emulparams/elf_i386_vxworks.sh: Likewise.
	* emulparams/elf_k1om.sh: Likewise.
	* emulparams/elf_l1om.sh: Likewise.
	* emulparams/elf_x86_64.sh: Source extern_protected_data.sh.
	(PARSE_AND_LIST_OPTIONS): Renamed to ...
	(PARSE_AND_LIST_OPTIONS_BNDPLT): This.
	(PARSE_AND_LIST_ARGS_CASE_Z): Renamed to ...
	(PARSE_AND_LIST_ARGS_CASE_Z_BNDPLT): This.
	(PARSE_AND_LIST_OPTIONS): Append $PARSE_AND_LIST_OPTIONS_BNDPLT.
	(PARSE_AND_LIST_ARGS_CASE_Z): Append
	$PARSE_AND_LIST_ARGS_CASE_Z_BNDPLT.
	* emulparams/extern_protected_data.sh: New file.

ld/testsuite/

	PR ld/pr17709
	* ld-i386/i386.exp: Run protected6b.
	* ld-i386/protected6b.d: New file.
	* ld-x86-64/protected6b.d: Likewise.
	* ld-x86-64/x86-64.exp:  Run protected6b.
2015-04-14 04:13:11 -07:00
Alan Modra fb42df5ed9 * emultempl/elf32.em (gld${EMULATION_NAME}_add_options,
gld${EMULATION_NAME}_handle_option, gld${EMULATION_NAME}_list_options):
	Provide --build-id, -z defs, -z muldefs, -z max-page-size,
	-z common-page-size, -z execstack, -z noexecstack for all targets.
	Add help for --exclude-libs.
	(OPTION_LD_GENERATED_UNWIND_INFO,
	OPTION_NO_LD_GENERATED_UNWIND_INFO): Move this..
	(gld${EMULATION_NAME}_handle_option): ..and code handling
	--ld-generated-unwind-info and --no-ld-generated-unwind-info..
	* emulparams/plt_unwind.sh: ..to here.  New file.  Add help.
	* emulparams/elf32_x86_64.sh: Include plt_unwind.sh.
	* emulparams/elf_i386.sh: Likewise.
	* emulparams/elf_i386_chaos.sh: Likewise.
	* emulparams/elf_i386_ldso.sh: Likewise.
	* emulparams/elf_l1om.sh: Likewise.
	* emulparams/elf_x86_64.sh: Likewise.
2011-07-14 02:38:43 +00:00
Alan Modra 88bba78dc4 PR 4515
* genscripts.sh: Delete all references to NONPAGED_TEXT_START_ADDR.
	* ldint.texinfo: Likewise.
	* emulparams/armaoutb.sh (NONPAGED_TEXT_START_ADDRESS): Delete.
	* emulparams/armaoutl.sh: Likewise.
	* emulparams/arcelf.sh (NONPAGED_TEXT_START_ADDR): Delete.
	* emulparams/bfin.sh: Likewise
	* emulparams/crisaout.sh: Likewise
	* emulparams/elf32_sparc.sh: Likewise
	* emulparams/elf32am33lin.sh: Likewise
	* emulparams/elf32b4300.sh: Likewise
	* emulparams/elf32bmip.sh: Likewise
	* emulparams/elf32mcore.sh: Likewise
	* emulparams/elf32xtensa.sh: Likewise
	* emulparams/elf64_s390.sh: Likewise
	* emulparams/elf64_sparc.sh: Likewise
	* emulparams/elf64alpha.sh: Likewise
	* emulparams/elf_i386.sh: Likewise
	* emulparams/elf_i386_be.sh: Likewise
	* emulparams/elf_i386_chaos.sh: Likewise
	* emulparams/elf_i386_ldso.sh: Likewise
	* emulparams/elf_i386_vxworks.sh: Likewise
	* emulparams/elf_s390.sh: Likewise
	* emulparams/elf_x86_64.sh: Likewise
	* emulparams/i386aout.sh: Likewise
	* emulparams/i386moss.sh: Likewise
	* emulparams/i386msdos.sh: Likewise
	* emulparams/i386nto.sh: Likewise
	* emulparams/i386nw.sh: Likewise
	* emulparams/m68kaout.sh: Likewise
	* emulparams/m68kelf.sh: Likewise
	* emulparams/ppcnw.sh: Likewise
	* emulparams/sun4.sh: Likewise
	* emulparams/tic80coff.sh: Likewise
	* emulparams/vaxnbsd.sh: Likewise
	* emulparams/armnbsd.sh (NONPAGED_TEXT_START_ADDR): Delete.
	(TEXT_START_ADDR): Set for -n, -N.
	* emulparams/coff_sparc.sh: Likewise
	* emulparams/elf32vax.sh: Likewise
	* emulparams/i386bsd.sh: Likewise
	* emulparams/i386go32.sh: Likewise
	* emulparams/i386linux.sh: Likewise
	* emulparams/i386lynx.sh: Likewise
	* emulparams/i386mach.sh: Likewise
	* emulparams/m68k4knbsd.sh: Likewise
	* emulparams/m68klinux.sh: Likewise
	* emulparams/m68knbsd.sh: Likewise
	* emulparams/ns32knbsd.sh: Likewise
	* emulparams/pc532macha.sh: Likewise
	* emulparams/ppclynx.sh: Likewise
	* emulparams/scoreelf.sh: Likewise
	* emulparams/sparcaout.sh: Likewise
	* emulparams/sparclinux.sh: Likewise
	* emulparams/sun3.sh: Likewise
	* emulparams/vsta.sh: Likewise
2007-08-09 11:02:24 +00:00
H.J. Lu 24718e3ba5 bfd/
2006-05-30  H.J. Lu  <hongjiu.lu@intel.com>

	* bfd.c (bfd_emul_get_maxpagesize): New.
	(bfd_elf_set_pagesize): Likewise.
	(bfd_emul_set_maxpagesize): Likewise.
	(bfd_emul_get_commonpagesize): Likewise.
	(bfd_emul_set_commonpagesize): Likewise.
	* bfd-in2.h: Regenerated.

	* elf-bfd.h (elf_backend_data): Add commonpagesize.
	(xvec_get_elf_backend_data): New.
	(get_elf_backend_data): Use xvec_get_elf_backend_data.

	* elf32-arm.c (elf32_arm_vxworks_bed): Remove const.
	* elfxx-target.h (elfNN_bed): Likewise.

	* elf32-arm.c (ELF_COMMONPAGESIZE): Defined.
	* elf32-mips.c (ELF_COMMONPAGESIZE): Likewise.
	* elf32-ppc.c (ELF_COMMONPAGESIZE): Likewise.
	* elf32-sh.c (ELF_COMMONPAGESIZE): Likewise.
	* elf32-sh64.c (ELF_COMMONPAGESIZE): Likewise.
	* elf32-sparc.c (ELF_COMMONPAGESIZE): Likewise.
	* elf64-alpha.c (ELF_COMMONPAGESIZE): Likewise.
	* elf64-ppc.c (ELF_COMMONPAGESIZE): Likewise.
	* elf64-sparc.c (ELF_COMMONPAGESIZE): Likewise.
	* elf64-x86-64.c (ELF_COMMONPAGESIZE): Likewise.
	* elfn32-mips.c (ELF_COMMONPAGESIZE): Likewise.
	* elfxx-ia64.c (ELF_COMMONPAGESIZE): Likewise.

	* elfxx-target.h (ELF_COMMONPAGESIZE): Define if not defined.
	(elfNN_bed): Initialize commonpagesize with ELF_COMMONPAGESIZE.

	* targets.c (bfd_find_target): Support NULL abfd.

ld/

2006-05-30  H.J. Lu  <hongjiu.lu@intel.com>

	* emulparams/arcelf.sh (MAXPAGESIZE): Changed to
	"CONSTANT (MAXPAGESIZE)".
	* emulparams/armelf_nbsd.sh: Likewise.
	* emulparams/armelf_vxworks.sh: Likewise.
	* emulparams/armnto.sh: Likewise.
	* emulparams/armsymbian.sh: Likewise.
	* emulparams/crislinux.sh: Likewise.
	* emulparams/elf32_i860.sh: Likewise.
	* emulparams/elf32_i960.sh: Likewise.
	* emulparams/elf32am33lin.sh: Likewise.
	* emulparams/elf32bfinfd.sh: Likewise.
	* emulparams/elf32bmipn32-defs.sh: Likewise.
	* emulparams/elf32frvfd.sh: Likewise.
	* emulparams/elf32i370.sh: Likewise.
	* emulparams/elf32lppcnto.sh: Likewise.
	* emulparams/elf32mcore.sh: Likewise.
	* emulparams/elf32openrisc.sh: Likewise.
	* emulparams/elf32ppcnto.sh: Likewise.
	* emulparams/elf32ppcwindiss.sh: Likewise.
	* emulparams/elf32vax.sh: Likewise.
	* emulparams/elf32xc16x.sh: Likewise.
	* emulparams/elf32xc16xl.sh: Likewise.
	* emulparams/elf32xc16xs.sh: Likewise.
	* emulparams/elf64_aix.sh: Likewise.
	* emulparams/elf64hppa.sh: Likewise.
	* emulparams/elf64mmix.sh: Likewise.
	* emulparams/elf_i386_be.sh: Likewise.
	* emulparams/elf_i386_chaos.sh: Likewise.
	* emulparams/elf_i386_ldso.sh: Likewise.
	* emulparams/hppa64linux.sh: Likewise.
	* emulparams/hppalinux.sh: Likewise.
	* emulparams/hppaobsd.sh: Likewise.
	* emulparams/i386lynx.sh: Likewise.
	* emulparams/i386moss.sh: Likewise.
	* emulparams/i386nto.sh: Likewise.
	* emulparams/i386nw.sh: Likewise.
	* emulparams/m32relf_linux.sh: Likewise.
	* emulparams/m68kpsos.sh: Likewise.
	* emulparams/or32elf.sh: Likewise.
	* emulparams/pjelf.sh: Likewise.
	* emulparams/pjlelf.sh: Likewise.
	* emulparams/ppclynx.sh: Likewise.
	* emulparams/ppcnw.sh: Likewise.
	* emulparams/shelf32_nbsd.sh : Likewise.
	* emulparams/shelf_nbsd.sh: Likewise.
	* emulparams/shelf_nto.sh: Likewise.
	* emulparams/shlelf_nto.sh: Likewise.
	* emulparams/xtensa-config.sh: Likewise.

	* emulparams/armelf_linux.sh (MAXPAGESIZE): Changed to
	"CONSTANT (MAXPAGESIZE)".
	(COMMONPAGESIZE): Changed to "CONSTANT (COMMONPAGESIZE)".
	* emulparams/elf32_sparc.sh: Likewise.
	* emulparams/elf32bmip.sh: Likewise.
	* emulparams/elf32ppccommon.sh: Likewise.
	* emulparams/elf64_ia64.sh: Likewise.
	* emulparams/elf64_s390.sh: Likewise.
	* emulparams/elf64_sparc.sh: Likewise.
	* emulparams/elf64alpha.sh: Likewise.
	* emulparams/elf64ppc.sh: Likewise.
	* emulparams/elf_i386.sh: Likewise.
	* emulparams/elf_i386_vxworks.sh: Likewise.
	* emulparams/elf_s390.sh: Likewise.
	* emulparams/elf_x86_64.sh: Likewise.
	* emulparams/shlelf32_linux.sh: Likewise.
	* emulparams/shlelf_linux.sh: Likewise.

	* emulparams/elf32bmipn32.sh (COMMONPAGESIZE): Changed to
	"CONSTANT (COMMONPAGESIZE)".
	* emulparams/elf32btsmipn32.sh: Likewise.

	* emultempl/elf32.em (gld${EMULATION_NAME}_handle_option): Add
	"-z max-page-size=" and "-z common-page-size=".
	(gld${EMULATION_NAME}_list_options): Likewise.

	* ld.h (ld_config_type): Add maxpagesize and commonpagesize.

	* ld.texinfo: Document "-z max-page-size=" and
	"-z common-page-size=".

	* ldexp.c (exp_print_token): Handle CONSTANT.
	(fold_name): Likewise.
	* ldgram.y: Likewise.
	* ldlex.l: Likewise.

	* ldmain.c (main): Initiliaze config.maxpagesize and
	config.commonpagesize. Call bfd_emul_set_maxpagesize if
	config.maxpagesize isn't 0. Call bfd_emul_set_commonpagesize if
	config.commonpagesize config.maxpagesize isn't 0.
ld/testsuite/

2006-05-30  H.J. Lu  <hongjiu.lu@intel.com>

	* ld-elf/binutils.exp: New file.
	* ld-elf/commonpage1.d: Likewise.
	* ld-elf/maxpage1.d: Likewise.
	* ld-elf/maxpage1.s: Likewise.
2006-05-30 16:45:32 +00:00
Nick Clifton b4477fa895 Install new elf_chaos.sc script. 2002-05-27 17:52:56 +00:00
H.J. Lu 484593416a 2001-11-27 H.J. Lu <hjl@gnu.org>
* emulparams/elf_i386.sh (NO_SMALL_DATA): Set to yes.
	* emulparams/elf_i386_be.sh (NO_SMALL_DATA): Likewise.
	* emulparams/elf_i386_chaos.sh (NO_SMALL_DATA): Likewise.
	* emulparams/elf_i386_ldso.sh (NO_SMALL_DATA): Likewise.
	* emulparams/elf_x86_64.sh (NO_SMALL_DATA): Likewise.
	* emulparams/m68kelf.sh (NO_SMALL_DATA): Likewise.
	* emulparams/elf32_sparc.sh (NO_SMALL_DATA): Likewise.
	* emulparams/elf64_sparc.sh (NO_SMALL_DATA): Likewise.

	* scripttempl/elf.sc (SBSS): New. Define if ${NO_SMALL_DATA}
	is not empty.
	(SDATA): Likewise.
	(REL_SDATA): Likewise.
	(REL_SBSS): Likewise.
	(REL_SDATA2): Likewise.
	(REL_SBSS2): Likewise.
	(SBSS2): Define if ${NO_SMALL_DATA} is not empty.
	(SDATA2): Likewise.
2001-11-27 19:06:07 +00:00
Alan Modra 563e308f24 * ld.texinfo: Document that fill values now use the four least
significant bytes.
	* emulparams/elf32fr30.sh (NOP): Update.
	* emulparams/elf32mcore.sh: Likewise.
	* emulparams/elf64_s390.sh: Likewise.
	* emulparams/elf_i386.sh: Likewise.
	* emulparams/elf_i386_be.sh: Likewise.
	* emulparams/elf_i386_chaos.sh: Likewise.
	* emulparams/elf_i386_ldso.sh: Likewise.
	* emulparams/elf_s390.sh: Likewise.
	* emulparams/elf_x86_64.sh: Likewise.
	* emulparams/i386moss.sh: Likewise.
	* emulparams/i386nw.sh: Likewise.
	* emulparams/m68kelf.sh: Likewise.
	* scripttempl/elf.sc: Update NOP comment.
	* scripttempl/elfi370.sc: Likewise.
	* scripttempl/elfm68hc11.sc: Likewise.
	* scripttempl/elfm68hc12.sc: Likewise.
	* scripttempl/nw.sc: Likewise.
2001-08-17 09:51:08 +00:00
Nick Clifton 59ff2774bb Add support for *-storm-chaos target 2000-11-02 23:03:24 +00:00