This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ELF ld -r scripts


On Sat, Oct 13, 2018 at 11:41:18PM +1030, Alan Modra wrote:
> "ld -r" generally should not combine object file sections with
> different names.  For example, "ld -r" should not combine ".text",
> ".text.hot" and ".text.cold" into an output ".text" section.  An
> exception needs to be made for linker created sections, for example,
> branch trampoline sections that might be created even for ld -r.
> 
> "ld -r" also should not define symbols in linker scripts.  Any
> definitions are likely to conflict with those defined at final link.
> 
> A MEMORY spec is also not needed for ld -r.
> 
> 	* Makefile.am (eelf32btsmip_fbsd.c, eelf32btsmipn32_fbsd.c),
> 	(eelf32epiphany.c, eelf32epiphany_4x4.c, eelf32ltsmip_fbsd.c),
> 	(eelf32ltsmipn32_fbsd.c, eelf32xc16x.c, eelf32xc16xl.c),
> 	(eelf32xc16xs.c, emcorepe.c, enios2elf.c, enios2linux.c),
> 	(eelf64btsmip_fbsd.c, eelf64ltsmip_fbsd.c): Correct dependencies.
> 	* Makefile.in: Regenerate.
> 	* emulparams/aarch64cloudabi.sh, * emulparams/aarch64fbsd.sh,
> 	* emulparams/aarch64linux.sh, * emulparams/aarch64linux32.sh,
> 	* emulparams/arc-nps.sh, * emulparams/elf32_spu.sh,
> 	* emulparams/elf32_tic6x_le.sh, * emulparams/elf32bmip.sh,
> 	* emulparams/elf32btsmipn32.sh, * emulparams/elf32lr5900n32.sh,
> 	* emulparams/elf32mep.sh, * emulparams/elf32metag.sh,
> 	* emulparams/elf64btsmip.sh, * emulparams/shelf_vxworks.sh,
> 	* emulparams/shlelf_fd.sh, * scripttempl/DWARF.sc,
> 	* scripttempl/alpha.sc, * scripttempl/alphavms.sc,
> 	* scripttempl/arclinux.sc, * scripttempl/armbpabi.sc,
> 	* scripttempl/avr.sc, * scripttempl/dlx.sc, * scripttempl/elf.sc,
> 	* scripttempl/elf32cr16.sc, * scripttempl/elf32cr16c.sc,
> 	* scripttempl/elf32crx.sc, * scripttempl/elf32msp430.sc,
> 	* scripttempl/elf32msp430_3.sc, * scripttempl/elf32xc16x.sc,
> 	* scripttempl/elf32xc16xl.sc, * scripttempl/elf32xc16xs.sc,
> 	* scripttempl/elf64hppa.sc, * scripttempl/elf_chaos.sc,
> 	* scripttempl/elfarc.sc, * scripttempl/elfarcv2.sc,
> 	* scripttempl/elfd10v.sc, * scripttempl/elfd30v.sc,
> 	* scripttempl/elfm68hc11.sc, * scripttempl/elfm68hc12.sc,
> 	* scripttempl/elfm9s12z.sc, * scripttempl/elfmicroblaze.sc,
> 	* scripttempl/elfxgate.sc, * scripttempl/elfxtensa.sc,
> 	* scripttempl/epiphany_4x4.sc, * scripttempl/ft32.sc,
> 	* scripttempl/hppaelf.sc, * scripttempl/ia64vms.sc,
> 	* scripttempl/ip2k.sc, * scripttempl/iq2000.sc,
> 	* scripttempl/mep.sc, * scripttempl/mmo.sc,
> 	* scripttempl/nds32elf.sc, * scripttempl/pru.sc,
> 	* scripttempl/sh.sc, * scripttempl/v850.sc,
> 	* scripttempl/v850_rh850.sc, * scripttempl/visium.sc,
> 	* scripttempl/xstormy16.sc: Condition various parts of scripts on
> 	${RELOCATABLE} in order to prevent ld -r merging sections or
> 	defining symbols.  Remove MEMORY and VERSION definitions from
> 	ld -r scripts too.
> 	* testsuite/ld-elf/group2.d, * testsuite/ld-elf/group4.d,
> 	* testsuite/ld-elf/group5.d, * testsuite/ld-elf/group6.d,
> 	* testsuite/ld-elf/group7.d, * testsuite/ld-elf/group8a.d,
> 	* testsuite/ld-elf/group8b.d, * testsuite/ld-elf/group9a.d,
> 	* testsuite/ld-elf/group9b.d, * testsuite/ld-elf/pr17550a.d,
> 	* testsuite/ld-elf/pr17550b.d,
> 	* testsuite/ld-elf/pr17550d.d: Don't xfail cr16 and crx.
> 	* testsuite/ld-elf/init-fini-arrays.d,
> 	* testsuite/ld-elf/pr22677.d: Likewise, and dont' xfail mep.
> 
...
> diff --git a/ld/scripttempl/elf32xc16x.sc b/ld/scripttempl/elf32xc16x.sc
> index 3a2c7b5405..4c7cc36927 100644
> --- a/ld/scripttempl/elf32xc16x.sc
> +++ b/ld/scripttempl/elf32xc16x.sc
> @@ -13,7 +13,10 @@ cat <<EOF
>  
>  OUTPUT_FORMAT("${OUTPUT_FORMAT}")
>  OUTPUT_ARCH(${ARCH})
> -${RELOCATING+ENTRY ("_start")}
> +EOF
> +
> +test -n "${RELOCATING}" && cat <<EOF
> +ENTRY ("_start")
>  MEMORY
>  {
>  
> @@ -28,6 +31,9 @@ MEMORY
>  	ldata  : o =0x4000 ,l = 0x0200
>  }
>  
> +ELF
^^^^^^^^ Typo.
> +
> +cat <<EOF
>  SECTIONS
>  {
>  .init :


I checked in this patch to fix the typo.


H.J.
---
	* scripttempl/elf32xc16x.sc: Fix a typo.
---
 ld/ChangeLog                 | 4 ++++
 ld/scripttempl/elf32xc16x.sc | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index 75c9c7d11d..f032451407 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2018-12-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* scripttempl/elf32xc16x.sc: Fix a typo.
+
 2018-12-07  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/23958
diff --git a/ld/scripttempl/elf32xc16x.sc b/ld/scripttempl/elf32xc16x.sc
index 4c7cc36927..baf7b15968 100644
--- a/ld/scripttempl/elf32xc16x.sc
+++ b/ld/scripttempl/elf32xc16x.sc
@@ -31,7 +31,7 @@ MEMORY
 	ldata  : o =0x4000 ,l = 0x0200
 }
 
-ELF
+EOF
 
 cat <<EOF
 SECTIONS
-- 
2.19.2


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]