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]

Use .reginfo rather than .MIPS.options in n32 linker scripts


At the moment, gas and ld disagree on whether .reginfo or .MIPS.options
is the canonical choice for n32.  gas generates .reginfo, but the linker
script handles .MIPS.options.  This means that .reginfo is usually
placed as an orphan for n32 binaries.

I think the reason for this is that both gas and ld originally
used .MIPS.options:

    http://sourceware.org/ml/binutils/2001-09/msg00251.html

but gas was later changed to follow IRIX:

    http://sourceware.org/ml/binutils/2002-05/msg00194.html

Because the orphan code does something sensible, it wouldn't have
been obvious that the linker scripts were then out of sync.

This patch introduces an elf64bmip-defs.sh script, mimicking
elf32bmipn32-defs.sh.  The latter now uses .reginfo and the former uses
.MIPS.options.  This needed some changes to the testsuite, such as to
avoid new warnings about moving "." backwards.  (In the affected tests,
.reginfo would be placed as an orphan before the patch.  After the patch,
.reginfo is placed at the script's usual start address, which is 0x10000000
for n32 executables.  The tests used -Ttext arguments smaller than
0x10000000.)

Patch tested on mips{,64}{,el}-{elf,linux-gnu} and mips-sgi-irix6.5.
It fixes ld-elf/orphan2 failures on mips64{,el}-linux-gnu.
OK to install?

Richard


ld/
	* Makefile.am (eelf64bmip.c): Depend on emulparams/elf64bmip-defs.sh.
	(eelf64btsmip.c, eelf64ltsmip.c): Likewise.
	* Makefile.in: Regenerate.
	* emulparams/elf32bmipn32-defs.sh (INITIAL_READONLY_SECTIONS): Include
	.reginfo rather than .MIPS.options.
	* emulparams/elf64bmip-defs.sh: New file.
	* emulparams/elf64bmip.sh: Include it.
	(COMMONPAGESIZE): Delete.
	* emulparams/elf64btsmip.sh: As for elf64bmip.sh.

ld/testsuite/
	* ld-mips-elf/branch-misc-1.d: Set the start address to 0x20000000.
	* ld-mips-elf/jalbal.d: Likewise 0x200000a0.
	* ld-mips-elf/jaloverflow-2.d: Likewise 0x20000000.
	* ld-mips-elf/reloc-3-n32.d: Likewise.
	* ld-mips-elf/reloc-3.d: Likewise.
	* ld-mips-elf/textrel-1.d: Don't require a specific file offset for
	.dynamic.

Index: ld/Makefile.am
===================================================================
RCS file: /cvs/src/src/ld/Makefile.am,v
retrieving revision 1.222
diff -u -p -r1.222 Makefile.am
--- ld/Makefile.am	5 Oct 2006 01:06:13 -0000	1.222
+++ ld/Makefile.am	16 Oct 2006 19:26:03 -0000
@@ -912,6 +912,7 @@ eelf64_sparc_fbsd.c: $(srcdir)/emulparam
   $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf64_sparc_fbsd "$(tdir_elf64_sparc_fbsd)"
 eelf64bmip.c: $(srcdir)/emulparams/elf64bmip.sh \
+  $(srcdir)/emulparams/elf64bmip-defs.sh \
   $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \
   $(srcdir)/emultempl/irix.em $(srcdir)/emultempl/mipself.em \
   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -926,11 +927,12 @@ emmo.c: $(srcdir)/emulparams/mmo.sh $(sr
   $(srcdir)/scripttempl/mmo.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} mmo "$(tdir_mmo)"
 eelf64btsmip.c: $(srcdir)/emulparams/elf64btsmip.sh \
+  $(srcdir)/emulparams/elf64bmip-defs.sh \
   $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \
   $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf64btsmip "$(tdir_elf64btsmip)"
 eelf64ltsmip.c: $(srcdir)/emulparams/elf64ltsmip.sh \
-  $(srcdir)/emulparams/elf64btsmip.sh \
+  $(srcdir)/emulparams/elf64btsmip.sh $(srcdir)/emulparams/elf64bmip-defs.sh \
   $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \
   $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf64ltsmip "$(tdir_elf64ltsmip)"
Index: ld/emulparams/elf32bmipn32-defs.sh
===================================================================
RCS file: /cvs/src/src/ld/emulparams/elf32bmipn32-defs.sh,v
retrieving revision 1.10
diff -u -p -r1.10 elf32bmipn32-defs.sh
--- ld/emulparams/elf32bmipn32-defs.sh	29 Jul 2006 08:48:15 -0000	1.10
+++ ld/emulparams/elf32bmipn32-defs.sh	16 Oct 2006 19:26:03 -0000
@@ -57,7 +57,7 @@ TEXT_START_SYMBOLS='_ftext = . ;'
 DATA_START_SYMBOLS='_fdata = . ;'
 OTHER_BSS_SYMBOLS='_fbss = .;'
 
-INITIAL_READONLY_SECTIONS=".MIPS.options : { *(.MIPS.options) }"
+INITIAL_READONLY_SECTIONS=".reginfo      ${RELOCATING-0} : { *(.reginfo) }"
 # Discard any .MIPS.content* or .MIPS.events* sections.  The linker
 # doesn't know how to adjust them.
 OTHER_SECTIONS="/DISCARD/ : { *(.MIPS.content*) *(.MIPS.events*) }"
Index: ld/emulparams/elf64bmip-defs.sh
===================================================================
RCS file: ld/emulparams/elf64bmip-defs.sh
diff -N ld/emulparams/elf64bmip-defs.sh
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ld/emulparams/elf64bmip-defs.sh	16 Oct 2006 19:26:03 -0000
@@ -0,0 +1,3 @@
+. ${srcdir}/emulparams/elf32bmipn32-defs.sh
+COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
+INITIAL_READONLY_SECTIONS=".MIPS.options : { *(.MIPS.options) }"
Index: ld/emulparams/elf64bmip.sh
===================================================================
RCS file: /cvs/src/src/ld/emulparams/elf64bmip.sh,v
retrieving revision 1.10
diff -u -p -r1.10 elf64bmip.sh
--- ld/emulparams/elf64bmip.sh	12 Jun 2006 11:35:44 -0000	1.10
+++ ld/emulparams/elf64bmip.sh	16 Oct 2006 19:26:03 -0000
@@ -1,9 +1,8 @@
-. ${srcdir}/emulparams/elf32bmipn32-defs.sh
+. ${srcdir}/emulparams/elf64bmip-defs.sh
 OUTPUT_FORMAT="elf64-bigmips"
 BIG_OUTPUT_FORMAT="elf64-bigmips"
 LITTLE_OUTPUT_FORMAT="elf64-littlemips"
 SHLIB_TEXT_START_ADDR=0x3ffffe0000
-COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
 
 # IRIX6 defines these symbols.  0x40 is the size of the ELF header.
 EXECUTABLE_SYMBOLS="
Index: ld/emulparams/elf64btsmip.sh
===================================================================
RCS file: /cvs/src/src/ld/emulparams/elf64btsmip.sh,v
retrieving revision 1.12
diff -u -p -r1.12 elf64btsmip.sh
--- ld/emulparams/elf64btsmip.sh	12 Jun 2006 11:35:44 -0000	1.12
+++ ld/emulparams/elf64btsmip.sh	16 Oct 2006 19:26:03 -0000
@@ -1,11 +1,10 @@
 # If you change this file, please also look at files which source this one:
 # elf64ltsmip.sh
 
-. ${srcdir}/emulparams/elf32bmipn32-defs.sh
+. ${srcdir}/emulparams/elf64bmip-defs.sh
 OUTPUT_FORMAT="elf64-tradbigmips"
 BIG_OUTPUT_FORMAT="elf64-tradbigmips"
 LITTLE_OUTPUT_FORMAT="elf64-tradlittlemips"
-COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
 
 # Magic sections.
 OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
Index: ld/testsuite/ld-mips-elf/branch-misc-1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/branch-misc-1.d,v
retrieving revision 1.2
diff -u -p -r1.2 branch-misc-1.d
--- ld/testsuite/ld-mips-elf/branch-misc-1.d	3 Oct 2002 23:56:24 -0000	1.2
+++ ld/testsuite/ld-mips-elf/branch-misc-1.d	16 Oct 2006 19:26:03 -0000
@@ -1,7 +1,7 @@
 #name: MIPS branch-misc-1
 #source: ../../../gas/testsuite/gas/mips/branch-misc-1.s
 #objdump: --prefix-addresses -tdr --show-raw-insn
-#ld: -Ttext 0x500000 -e 0x500000 -N
+#ld: -Ttext 0x20000000 -e 0x20000000 -N
 
 .*:     file format elf.*mips.*
 
@@ -11,18 +11,18 @@ Disassembly of section \.text:
 	\.\.\.
 	\.\.\.
 	\.\.\.
-0+50003c <[^>]*> 0411fff0 	bal	0+500000 <[^>]*>
-0+500040 <[^>]*> 00000000 	nop
-0+500044 <[^>]*> 0411fff3 	bal	0+500014 <[^>]*>
-0+500048 <[^>]*> 00000000 	nop
-0+50004c <[^>]*> 0411fff6 	bal	0+500028 <[^>]*>
-0+500050 <[^>]*> 00000000 	nop
-0+500054 <[^>]*> 0411000a 	bal	0+500080 <[^>]*>
-0+500058 <[^>]*> 00000000 	nop
-0+50005c <[^>]*> 0411000d 	bal	0+500094 <[^>]*>
-0+500060 <[^>]*> 00000000 	nop
-0+500064 <[^>]*> 04110010 	bal	0+5000a8 <[^>]*>
-0+500068 <[^>]*> 00000000 	nop
+0*2000003c <[^>]*> 0411fff0 	bal	0*20000000 <[^>]*>
+0*20000040 <[^>]*> 00000000 	nop
+0*20000044 <[^>]*> 0411fff3 	bal	0*20000014 <[^>]*>
+0*20000048 <[^>]*> 00000000 	nop
+0*2000004c <[^>]*> 0411fff6 	bal	0*20000028 <[^>]*>
+0*20000050 <[^>]*> 00000000 	nop
+0*20000054 <[^>]*> 0411000a 	bal	0*20000080 <[^>]*>
+0*20000058 <[^>]*> 00000000 	nop
+0*2000005c <[^>]*> 0411000d 	bal	0*20000094 <[^>]*>
+0*20000060 <[^>]*> 00000000 	nop
+0*20000064 <[^>]*> 04110010 	bal	0*200000a8 <[^>]*>
+0*20000068 <[^>]*> 00000000 	nop
 	\.\.\.
 	\.\.\.
 	\.\.\.
Index: ld/testsuite/ld-mips-elf/jalbal.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/jalbal.d,v
retrieving revision 1.2
diff -u -p -r1.2 jalbal.d
--- ld/testsuite/ld-mips-elf/jalbal.d	31 Jan 2005 22:00:59 -0000	1.2
+++ ld/testsuite/ld-mips-elf/jalbal.d	16 Oct 2006 19:26:03 -0000
@@ -1,7 +1,7 @@
 #name: jal to bal
 #source: jalbal.s
 #as: -EB -n32 -march=rm9000
-#ld: -EB -e s1 -Ttext 0x100000a0
+#ld: -EB -e s1 -Ttext 0x200000a0
 #objdump: -d
 
 .*file format elf.*mips.*
@@ -9,16 +9,16 @@
 Disassembly of section \.text:
 
 .* <s1>:
-.*	0c00802a 	jal	.*100200a8 <s3>
+.*	0c00802a 	jal	.*200200a8 <s3>
 .*	00000000 	nop
-.*	04117fff 	bal	.*100200a8 <s3>
+.*	04117fff 	bal	.*200200a8 <s3>
 
 .* <s2>:
 .*	\.\.\.
 
 .* <s3>:
-.*	04118000 	bal	.*100000ac <s2>
+.*	04118000 	bal	.*200000ac <s2>
 .*	00000000 	nop
-.*	0c00002b 	jal	.*100000ac <s2>
+.*	0c00002b 	jal	.*200000ac <s2>
 .*	00000000 	nop
 .*	\.\.\.
Index: ld/testsuite/ld-mips-elf/jaloverflow-2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/jaloverflow-2.d,v
retrieving revision 1.1
diff -u -p -r1.1 jaloverflow-2.d
--- ld/testsuite/ld-mips-elf/jaloverflow-2.d	14 Dec 2004 09:48:20 -0000	1.1
+++ ld/testsuite/ld-mips-elf/jaloverflow-2.d	16 Oct 2006 19:26:03 -0000
@@ -1,8 +1,8 @@
 #name: JAL overflow 2
 #source: jaloverflow-2.s
 #as:
-#ld: -Ttext=0x10000000 -e start
+#ld: -Ttext=0x20000000 -e start
 #objdump: -dr
 #...
-0*10000000:	0c000000.*
+0*20000000:	0c000000.*
 #pass
Index: ld/testsuite/ld-mips-elf/reloc-3-n32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/reloc-3-n32.d,v
retrieving revision 1.1
diff -u -p -r1.1 reloc-3-n32.d
--- ld/testsuite/ld-mips-elf/reloc-3-n32.d	18 Sep 2006 18:21:42 -0000	1.1
+++ ld/testsuite/ld-mips-elf/reloc-3-n32.d	16 Oct 2006 19:26:03 -0000
@@ -2,7 +2,7 @@
 #source: ../../../gas/testsuite/gas/mips/elf-rel6.s
 #as: -march=mips64 -mabi=n32 -EB
 #objdump: --prefix-addresses -tdr --show-raw-insn
-#ld: -Ttext 0x500000 -e 0x500000 -N -melf32btsmipn32
+#ld: -Ttext 0x20000000 -e 0x20000000 -N -melf32btsmipn32
 
 
 .*:     file format elf.*mips.*
@@ -10,9 +10,9 @@
 #...
 
 Disassembly of section \.text:
-0+500000 <[^>]*> f010 8352 	lb	v0,-32750\(v1\)
-0+500004 <[^>]*> f010 8353 	lb	v0,-32749\(v1\)
-0+500008 <[^>]*> f252 8346 	lb	v0,-28090\(v1\)
-0+50000c <[^>]*> 6500      	nop
-0+50000e <[^>]*> 6500      	nop
+0*20000000 <[^>]*> f010 8352 	lb	v0,-32750\(v1\)
+0*20000004 <[^>]*> f010 8353 	lb	v0,-32749\(v1\)
+0*20000008 <[^>]*> f252 8346 	lb	v0,-28090\(v1\)
+0*2000000c <[^>]*> 6500      	nop
+0*2000000e <[^>]*> 6500      	nop
 #pass
Index: ld/testsuite/ld-mips-elf/reloc-3.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/reloc-3.d,v
retrieving revision 1.1
diff -u -p -r1.1 reloc-3.d
--- ld/testsuite/ld-mips-elf/reloc-3.d	18 Sep 2006 18:21:42 -0000	1.1
+++ ld/testsuite/ld-mips-elf/reloc-3.d	16 Oct 2006 19:26:03 -0000
@@ -1,16 +1,16 @@
 #name: R_MIPS16_GPREL reloc
 #source: ../../../gas/testsuite/gas/mips/elf-rel6.s
 #objdump: --prefix-addresses -tdr --show-raw-insn
-#ld: -Ttext 0x500000 -e 0x500000 -N
+#ld: -Ttext 0x20000000 -e 0x20000000 -N
 
 .*:     file format elf.*mips.*
 
 #...
 
 Disassembly of section \.text:
-0+500000 <[^>]*> f010 8352 	lb	v0,-32750\(v1\)
-0+500004 <[^>]*> f010 8353 	lb	v0,-32749\(v1\)
-0+500008 <[^>]*> f252 8346 	lb	v0,-28090\(v1\)
-0+50000c <[^>]*> 6500      	nop
-0+50000e <[^>]*> 6500      	nop
+0*20000000 <[^>]*> f010 8352 	lb	v0,-32750\(v1\)
+0*20000004 <[^>]*> f010 8353 	lb	v0,-32749\(v1\)
+0*20000008 <[^>]*> f252 8346 	lb	v0,-28090\(v1\)
+0*2000000c <[^>]*> 6500      	nop
+0*2000000e <[^>]*> 6500      	nop
 #pass
Index: ld/testsuite/ld-mips-elf/textrel-1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/textrel-1.d,v
retrieving revision 1.2
diff -u -p -r1.2 textrel-1.d
--- ld/testsuite/ld-mips-elf/textrel-1.d	22 May 2006 15:06:23 -0000	1.2
+++ ld/testsuite/ld-mips-elf/textrel-1.d	16 Oct 2006 19:26:03 -0000
@@ -4,7 +4,7 @@
 #ld: -shared -melf32btsmipn32
 #readelf: -d
 
-Dynamic section at offset 0xb4 contains 18 entries:
+Dynamic section at offset .* contains 18 entries:
   Tag        Type                         Name/Value
  0x00000004 \(HASH\)                       0x[0-9a-f]*
  0x00000005 \(STRTAB\)                     0x[0-9a-f]*


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