Fix a number of PowerPC linker bugs

Alan Modra amodra@bigpond.net.au
Wed Mar 16 02:34:00 GMT 2005


Fixes a number of powerpc hiccups.

o  We were allocating too many program headers.
   ppc_elf_additional_program_headers added one for .interp, but that's
   already done in generic ELF code.  Two other bugs in this function
   made its .sbss2 handling ineffective too.  .sbss2 isn't SEC_LOAD,
   and section sizes aren't set when this function is called.
o  Section memory wasn't being allocated for R_PPC_EMB_SDAI16 and
   R_PPC_EMB_SDA2I16, which would have caused segfaults.  Both 2.14 and
   2.15 had this bug, so apparently no one uses these relocs.  At least,
   no one bothered to report a problem.
o  I noticed that .got1 and .got2 appeared twice in the default Linux
   linker scripts.  Fixed by the elf32ppclinux.sh change.
o  The PowerPC Embedded ABI says "Sections .sdata2 and .sbss2 shall not
   appear in a shared object file."  We create a zero sized .sdata2 due
   to the silly way _SDA2_BASE_ is defined.  So hide .sdata2 and .sbss2
   linker created input sections in .sdata and .sbss output sections.
o  Altivec clashes with BookE, with mfvrsave using the same spr as
   mfusprg0.

I'll probably cure the FIXME I added here on mainline, but won't do so
on the 2.16 branch.

bfd/
	* elf32-ppc.c (ppc_elf_create_linker_section): Set SEC_LINKER_CREATED
	on section.  Correct comment, and add FIXME.
	(ppc_elf_additional_program_headers): Don't bump header count for
	interp.  Test SEC_ALLOC, not SEC_LOAD, and don't test size.
	(ppc_elf_size_dynamic_sections): Don't strip sdata and sdata2, but
	do allocate memory if they need it.
opcodes/
	* ppc-dis.c (powerpc_dialect): Don't set PPC_OPCODE_ALTIVEC when
	BOOKE.
ld/
	* emulparams/elf32ppclinux.sh (OTHER_READWRITE_SECTION): Delete.
	(OTHER_RELRO_SECTIONS): Set this instead.
ld/testsuite/
	* ld-powerpc/tlsexe32.d: Update.
	* ld-powerpc/tlsexe32.g: Update.
	* ld-powerpc/tlsexe32.r: Update.
	* ld-powerpc/tlsexe32.t: Update.
	* ld-powerpc/tlsso32.d: Update.
	* ld-powerpc/tlsso32.g: Update.
	* ld-powerpc/tlsso32.r: Update.
	* ld-powerpc/tlsso32.t: Update.

Index: bfd/elf32-ppc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-ppc.c,v
retrieving revision 1.136
diff -u -p -r1.136 elf32-ppc.c
--- bfd/elf32-ppc.c	20 Feb 2005 14:59:06 -0000	1.136
+++ bfd/elf32-ppc.c	16 Mar 2005 00:04:47 -0000
@@ -2606,15 +2606,16 @@ ppc_elf_create_linker_section (bfd *abfd
   const char *sym_name;
   bfd_vma sym_offset;
 
-  /* Both of these sections are (technically) created by the user
-     putting data in them, so they shouldn't be marked
-     SEC_LINKER_CREATED.
-
-     The linker creates them so it has somewhere to attach their
-     respective symbols. In fact, if they were empty it would
-     be OK to leave the symbol set to 0 (or any random number), because
-     the appropriate register should never be used.  */
-  flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY;
+  /* The linker creates these sections so it has somewhere to attach
+     their respective symbols.  Startup code (crt1.o) uses these symbols
+     to initialize a register pointing to the section.  If the output
+     sections corresponding to these input sections were empty it would
+     be OK to set the symbol to 0 (or any random number), because the
+     associated register should never be used.
+     FIXME: Setting a symbol this way is silly.  The symbols ought to 
+     be set the same way other backends set gp.  */
+  flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+	   | SEC_LINKER_CREATED);
   sym_offset = 32768;
 
   switch (which)
@@ -2711,27 +2712,21 @@ ppc_elf_create_linker_section (bfd *abfd
   return lsect;
 }
 
-/* If we have a non-zero sized .sbss2 or .PPC.EMB.sbss0 sections, we
+/* If we have .sbss2 or .PPC.EMB.sbss0 output sections, we
    need to bump up the number of section headers.  */
 
 static int
 ppc_elf_additional_program_headers (bfd *abfd)
 {
   asection *s;
-  int ret;
-
-  ret = 0;
-
-  s = bfd_get_section_by_name (abfd, ".interp");
-  if (s != NULL)
-    ++ret;
+  int ret = 0;
 
   s = bfd_get_section_by_name (abfd, ".sbss2");
-  if (s != NULL && (s->flags & SEC_LOAD) != 0 && s->size > 0)
+  if (s != NULL && (s->flags & SEC_ALLOC) != 0)
     ++ret;
 
   s = bfd_get_section_by_name (abfd, ".PPC.EMB.sbss0");
-  if (s != NULL && (s->flags & SEC_LOAD) != 0 && s->size > 0)
+  if (s != NULL && (s->flags & SEC_ALLOC) != 0)
     ++ret;
 
   return ret;
@@ -3394,13 +3389,20 @@ ppc_elf_size_dynamic_sections (bfd *outp
 	continue;
 
       if (s == htab->plt
-	  || s == htab->got
-	  || (htab->sdata != NULL && s == htab->sdata->section)
-	  || (htab->sdata2 != NULL && s == htab->sdata2->section))
+	  || s == htab->got)
 	{
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
+      else if ((htab->sdata != NULL && s == htab->sdata->section)
+	       || (htab->sdata2 != NULL && s == htab->sdata2->section))
+	{
+	  if (s->size == 0)
+	    /* Don't strip these sections.  We need them because they
+	       define _SDA_BASE_ and _SDA2_BASE_.  crt1.o makes a
+	       reference to _SDA_BASE_ to set up r13.  */
+	    continue;
+	}
       else if (strncmp (bfd_get_section_name (dynobj, s), ".rela", 5) == 0)
 	{
 	  if (s->size == 0)
Index: opcodes/ppc-dis.c
===================================================================
RCS file: /cvs/src/src/opcodes/ppc-dis.c,v
retrieving revision 1.16
diff -u -p -r1.16 ppc-dis.c
--- opcodes/ppc-dis.c	16 Mar 2004 00:58:41 -0000	1.16
+++ opcodes/ppc-dis.c	15 Mar 2005 23:29:50 -0000
@@ -44,7 +44,7 @@ struct dis_private {
 static int
 powerpc_dialect (struct disassemble_info *info)
 {
-  int dialect = PPC_OPCODE_PPC | PPC_OPCODE_ALTIVEC;
+  int dialect = PPC_OPCODE_PPC;
 
   if (BFD_DEFAULT_TARGET_SIZE == 64)
     dialect |= PPC_OPCODE_64;
@@ -55,25 +55,17 @@ powerpc_dialect (struct disassemble_info
   else if ((info->mach == bfd_mach_ppc_e500)
 	   || (info->disassembler_options
 	       && strstr (info->disassembler_options, "e500") != NULL))
-    {
-      dialect |= PPC_OPCODE_BOOKE
-	| PPC_OPCODE_SPE | PPC_OPCODE_ISEL
-	| PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
-	| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK
-	| PPC_OPCODE_RFMCI;
-      /* efs* and AltiVec conflict.  */
-      dialect &= ~PPC_OPCODE_ALTIVEC;
-    }
+    dialect |= (PPC_OPCODE_BOOKE
+		| PPC_OPCODE_SPE | PPC_OPCODE_ISEL
+		| PPC_OPCODE_EFS | PPC_OPCODE_BRLOCK
+		| PPC_OPCODE_PMR | PPC_OPCODE_CACHELCK
+		| PPC_OPCODE_RFMCI);
   else if (info->disassembler_options
 	   && strstr (info->disassembler_options, "efs") != NULL)
-    {
-      dialect |= PPC_OPCODE_EFS;
-      /* efs* and AltiVec conflict.  */
-      dialect &= ~PPC_OPCODE_ALTIVEC;
-    }
+    dialect |= PPC_OPCODE_EFS;
   else
     dialect |= (PPC_OPCODE_403 | PPC_OPCODE_601 | PPC_OPCODE_CLASSIC
-		| PPC_OPCODE_COMMON);
+		| PPC_OPCODE_COMMON | PPC_OPCODE_ALTIVEC);
 
   if (info->disassembler_options
       && strstr (info->disassembler_options, "power4") != NULL)
Index: ld/emulparams/elf32ppclinux.sh
===================================================================
RCS file: /cvs/src/src/ld/emulparams/elf32ppclinux.sh,v
retrieving revision 1.6
diff -u -p -r1.6 elf32ppclinux.sh
--- ld/emulparams/elf32ppclinux.sh	30 Sep 2002 04:23:40 -0000	1.6
+++ ld/emulparams/elf32ppclinux.sh	15 Mar 2005 23:29:38 -0000
@@ -3,6 +3,6 @@ TEXT_START_ADDR=0x10000000
 unset EXECUTABLE_SYMBOLS
 unset OTHER_BSS_END_SYMBOLS
 test -z "${RELOCATING}" || OTHER_SECTIONS="/DISCARD/	: { *(.fixup) }"
-OTHER_READWRITE_SECTIONS="
+OTHER_RELRO_SECTIONS="
   .got1         ${RELOCATING-0} : { *(.got1) }
   .got2         ${RELOCATING-0} : { *(.got2) }"
Index: ld/scripttempl/elf.sc
===================================================================
RCS file: /cvs/src/src/ld/scripttempl/elf.sc,v
retrieving revision 1.50
diff -u -p -r1.50 elf.sc
--- ld/scripttempl/elf.sc	26 Oct 2004 18:41:52 -0000	1.50
+++ ld/scripttempl/elf.sc	16 Mar 2005 01:14:19 -0000
@@ -120,6 +120,7 @@ if test -z "${NO_SMALL_DATA}"; then
   {
     ${RELOCATING+PROVIDE (__sbss_start = .);}
     ${RELOCATING+PROVIDE (___sbss_start = .);}
+    ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
     *(.dynsbss)
     *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
     *(.scommon)
@@ -133,6 +134,7 @@ if test -z "${NO_SMALL_DATA}"; then
   .sdata        ${RELOCATING-0} : 
   {
     ${RELOCATING+${SDATA_START_SYMBOLS}}
+    ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
     *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
   }"
   SDATA2=".sdata2       ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }"
@@ -383,8 +385,6 @@ cat <<EOF
   ${RELOCATING+${OTHER_GOT_SYMBOLS}}
   ${NO_SMALL_DATA-${GOT}}
   ${OTHER_GOT_SECTIONS}
-  ${CREATE_SHLIB+${SDATA2}}
-  ${CREATE_SHLIB+${SBSS2}}
   ${SDATA}
   ${OTHER_SDATA_SECTIONS}
   ${RELOCATING+_edata = .;}
Index: ld/testsuite/ld-powerpc/tlsexe32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe32.d,v
retrieving revision 1.6
diff -u -p -r1.6 tlsexe32.d
--- ld/testsuite/ld-powerpc/tlsexe32.d	2 Nov 2004 05:40:05 -0000	1.6
+++ ld/testsuite/ld-powerpc/tlsexe32.d	16 Mar 2005 01:32:46 -0000
@@ -8,39 +8,39 @@
 
 Disassembly of section \.text:
 
-01800264 <_start>:
- 1800264:	80 7f 00 0c 	lwz     r3,12\(r31\)
- 1800268:	7c 63 12 14 	add     r3,r3,r2
- 180026c:	38 7f 00 10 	addi    r3,r31,16
- 1800270:	48 01 01 85 	bl      18103f4 .*
- 1800274:	3c 62 00 00 	addis   r3,r2,0
- 1800278:	38 63 90 1c 	addi    r3,r3,-28644
- 180027c:	3c 62 00 00 	addis   r3,r2,0
- 1800280:	38 63 10 00 	addi    r3,r3,4096
- 1800284:	39 23 80 20 	addi    r9,r3,-32736
- 1800288:	3d 23 00 00 	addis   r9,r3,0
- 180028c:	81 49 80 24 	lwz     r10,-32732\(r9\)
- 1800290:	3d 22 00 00 	addis   r9,r2,0
- 1800294:	a1 49 90 2c 	lhz     r10,-28628\(r9\)
- 1800298:	89 42 90 30 	lbz     r10,-28624\(r2\)
- 180029c:	3d 22 00 00 	addis   r9,r2,0
- 18002a0:	99 49 90 34 	stb     r10,-28620\(r9\)
- 18002a4:	3c 62 00 00 	addis   r3,r2,0
- 18002a8:	38 63 90 00 	addi    r3,r3,-28672
- 18002ac:	3c 62 00 00 	addis   r3,r2,0
- 18002b0:	38 63 10 00 	addi    r3,r3,4096
- 18002b4:	91 43 80 04 	stw     r10,-32764\(r3\)
- 18002b8:	3d 23 00 00 	addis   r9,r3,0
- 18002bc:	91 49 80 08 	stw     r10,-32760\(r9\)
- 18002c0:	3d 22 00 00 	addis   r9,r2,0
- 18002c4:	b1 49 90 2c 	sth     r10,-28628\(r9\)
- 18002c8:	a1 42 90 14 	lhz     r10,-28652\(r2\)
- 18002cc:	3d 22 00 00 	addis   r9,r2,0
- 18002d0:	a9 49 90 18 	lha     r10,-28648\(r9\)
+.* <_start>:
+.*:	80 7f 00 0c 	lwz     r3,12\(r31\)
+.*:	7c 63 12 14 	add     r3,r3,r2
+.*:	38 7f 00 10 	addi    r3,r31,16
+.*:	48 01 01 85 	bl      .*<__tls_get_addr@plt>
+.*:	3c 62 00 00 	addis   r3,r2,0
+.*:	38 63 90 1c 	addi    r3,r3,-28644
+.*:	3c 62 00 00 	addis   r3,r2,0
+.*:	38 63 10 00 	addi    r3,r3,4096
+.*:	39 23 80 20 	addi    r9,r3,-32736
+.*:	3d 23 00 00 	addis   r9,r3,0
+.*:	81 49 80 24 	lwz     r10,-32732\(r9\)
+.*:	3d 22 00 00 	addis   r9,r2,0
+.*:	a1 49 90 2c 	lhz     r10,-28628\(r9\)
+.*:	89 42 90 30 	lbz     r10,-28624\(r2\)
+.*:	3d 22 00 00 	addis   r9,r2,0
+.*:	99 49 90 34 	stb     r10,-28620\(r9\)
+.*:	3c 62 00 00 	addis   r3,r2,0
+.*:	38 63 90 00 	addi    r3,r3,-28672
+.*:	3c 62 00 00 	addis   r3,r2,0
+.*:	38 63 10 00 	addi    r3,r3,4096
+.*:	91 43 80 04 	stw     r10,-32764\(r3\)
+.*:	3d 23 00 00 	addis   r9,r3,0
+.*:	91 49 80 08 	stw     r10,-32760\(r9\)
+.*:	3d 22 00 00 	addis   r9,r2,0
+.*:	b1 49 90 2c 	sth     r10,-28628\(r9\)
+.*:	a1 42 90 14 	lhz     r10,-28652\(r2\)
+.*:	3d 22 00 00 	addis   r9,r2,0
+.*:	a9 49 90 18 	lha     r10,-28648\(r9\)
 Disassembly of section \.got:
 
-01810390 <_GLOBAL_OFFSET_TABLE_-0x4>:
- 1810390:	4e 80 00 21 	blrl
-01810394 <_GLOBAL_OFFSET_TABLE_>:
- 1810394:	01 81 02 f0 00 00 00 00 00 00 00 00 00 00 00 00     .*
+.* <_GLOBAL_OFFSET_TABLE_-0x4>:
+.*:	4e 80 00 21 	blrl
+.* <_GLOBAL_OFFSET_TABLE_>:
+.*:	01 81 02 d0 00 00 00 00 00 00 00 00 00 00 00 00     .*
 	\.\.\.
Index: ld/testsuite/ld-powerpc/tlsexe32.g
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe32.g,v
retrieving revision 1.2
diff -u -p -r1.2 tlsexe32.g
--- ld/testsuite/ld-powerpc/tlsexe32.g	2 Nov 2004 05:40:05 -0000	1.2
+++ ld/testsuite/ld-powerpc/tlsexe32.g	16 Mar 2005 01:32:46 -0000
@@ -7,5 +7,5 @@
 .*: +file format elf32-powerpc
 
 Contents of section \.got:
- 1810390 4e800021 018102f0 00000000 00000000  .*
- 18103a0 00000000 00000000 00000000           .*
+.* 4e800021 018102d0 00000000 00000000  .*
+.* 00000000 00000000 00000000           .*
Index: ld/testsuite/ld-powerpc/tlsexe32.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe32.r,v
retrieving revision 1.5
diff -u -p -r1.5 tlsexe32.r
--- ld/testsuite/ld-powerpc/tlsexe32.r	2 Nov 2004 05:40:05 -0000	1.5
+++ ld/testsuite/ld-powerpc/tlsexe32.r	16 Mar 2005 01:32:46 -0000
@@ -16,15 +16,15 @@ Section Headers:
  +\[ 4\] \.dynstr +.*
  +\[ 5\] \.rela\.dyn +.*
  +\[ 6\] \.rela\.plt +.*
- +\[ 7\] \.text +PROGBITS +01800264 000264 000070 00 +AX +0 +0 +1
+ +\[ 7\] \.text +PROGBITS +01800244 000244 000070 00 +AX +0 +0 +1
  +\[ 8\] \.sdata2 +PROGBITS +.*
- +\[ 9\] \.tdata +PROGBITS +018102d4 0002d4 00001c 00 WAT +0 +0 +4
- +\[10\] \.tbss +NOBITS +018102f0 0002f0 00001c 00 WAT +0 +0 +4
- +\[11\] \.dynamic +DYNAMIC +018102f0 0002f0 0000a0 08 +WA +4 +0 +4
- +\[12\] \.data +PROGBITS +01810390 000390 000000 00 +WA +0 +0 +1
- +\[13\] \.got +PROGBITS +01810390 000390 00001c 04 WAX +0 +0 +4
- +\[14\] \.sdata +PROGBITS +018103ac 0003ac 000000 00 +WA +0 +0 +4
- +\[15\] \.sbss +NOBITS +018103ac 0003ac 000000 00 +WA +0 +0 +1
+ +\[ 9\] \.tdata +PROGBITS +018102b4 0002b4 00001c 00 WAT +0 +0 +4
+ +\[10\] \.tbss +NOBITS +018102d0 0002d0 00001c 00 WAT +0 +0 +4
+ +\[11\] \.dynamic +DYNAMIC +018102d0 0002d0 0000a0 08 +WA +4 +0 +4
+ +\[12\] \.data +PROGBITS +01810370 000370 000000 00 +WA +0 +0 +1
+ +\[13\] \.got +PROGBITS +01810370 000370 00001c 04 WAX +0 +0 +4
+ +\[14\] \.sdata +PROGBITS +0181038c 00038c 000000 00 +WA +0 +0 +4
+ +\[15\] \.sbss +NOBITS +0181038c 00038c 000000 00 +WA +0 +0 +1
  +\[16\] \.plt +NOBITS +.*
  +\[17\] \.bss +NOBITS +.*
  +\[18\] \.shstrtab +STRTAB +.*
@@ -33,18 +33,18 @@ Section Headers:
 #...
 
 Elf file type is EXEC \(Executable file\)
-Entry point 0x1800264
+Entry point 0x1800244
 There are 6 program headers, starting at offset 52
 
 Program Headers:
  +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
- +PHDR +0x000034 0x01800034 0x01800034 0x000e0 0x000e0 R E 0x4
- +INTERP +0x000114 0x01800114 0x01800114 0x00011 0x00011 R +0x1
+ +PHDR +0x000034 0x01800034 0x01800034 0x000c0 0x000c0 R E 0x4
+ +INTERP +0x0000f4 0x018000f4 0x018000f4 0x00011 0x00011 R +0x1
  +\[Requesting program interpreter: .*\]
- +LOAD +0x000000 0x01800000 0x01800000 0x002d4 0x002d4 R E 0x10000
- +LOAD +0x0002d4 0x018102d4 0x018102d4 0x000d8 0x0012c RWE 0x10000
- +DYNAMIC +0x0002f0 0x018102f0 0x018102f0 0x000a0 0x000a0 RW +0x4
- +TLS +0x0002d4 0x018102d4 0x018102d4 0x0001c 0x00038 R +0x4
+ +LOAD +0x000000 0x01800000 0x01800000 0x002b4 0x002b4 R E 0x10000
+ +LOAD +0x0002b4 0x018102b4 0x018102b4 0x000d8 0x0012c RWE 0x10000
+ +DYNAMIC +0x0002d0 0x018102d0 0x018102d0 0x000a0 0x000a0 RW +0x4
+ +TLS +0x0002b4 0x018102b4 0x018102b4 0x0001c 0x00038 R +0x4
 
  Section to Segment mapping:
  +Segment Sections\.\.\.
@@ -55,26 +55,26 @@ Program Headers:
  +04 +\.dynamic 
  +05 +\.tdata \.tbss 
 
-Relocation section '\.rela\.dyn' at offset 0x240 contains 2 entries:
+Relocation section '\.rela\.dyn' at offset 0x220 contains 2 entries:
  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
-018103a0 +00000249 R_PPC_TPREL32 +00000000 +gd \+ 0
-018103a4 +00000444 R_PPC_DTPMOD32 +00000000 +ld \+ 0
+01810380 +00000249 R_PPC_TPREL32 +00000000 +gd \+ 0
+01810384 +00000444 R_PPC_DTPMOD32 +00000000 +ld \+ 0
 
-Relocation section '\.rela\.plt' at offset 0x258 contains 1 entries:
+Relocation section '\.rela\.plt' at offset 0x238 contains 1 entries:
  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
-018103f4 +00000315 R_PPC_JMP_SLOT +018103f4 +__tls_get_addr \+ 0
+018103d4 +00000315 R_PPC_JMP_SLOT +018103d4 +__tls_get_addr \+ 0
 
 Symbol table '\.dynsym' contains 9 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
  +0: 00000000 +0 NOTYPE +LOCAL +DEFAULT +UND 
- +1: 018102f0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +1: 018102d0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
  +2: 00000000 +0 TLS +GLOBAL DEFAULT +UND gd
- +3: 018103f4 +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr
+ +3: 018103d4 +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr
  +4: 00000000 +0 TLS +GLOBAL DEFAULT +UND ld
- +5: 01810400 +0 NOTYPE +GLOBAL DEFAULT +ABS __end
- +6: 018103ac +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
- +7: 018103ac +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +8: 01810400 +0 NOTYPE +GLOBAL DEFAULT +ABS _end
+ +5: 018103e0 +0 NOTYPE +GLOBAL DEFAULT +ABS __end
+ +6: 0181038c +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
+ +7: 0181038c +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
+ +8: 018103e0 +0 NOTYPE +GLOBAL DEFAULT +ABS _end
 
 Symbol table '\.symtab' contains 47 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
@@ -85,15 +85,15 @@ Symbol table '\.symtab' contains 47 entr
  +4: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 
  +5: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 
  +6: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 
- +7: 01800264 +0 SECTION LOCAL +DEFAULT +7 
+ +7: 01800244 +0 SECTION LOCAL +DEFAULT +7 
  +8: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 
- +9: 018102d4 +0 SECTION LOCAL +DEFAULT +9 
- +10: 018102f0 +0 SECTION LOCAL +DEFAULT +10 
- +11: 018102f0 +0 SECTION LOCAL +DEFAULT +11 
- +12: 01810390 +0 SECTION LOCAL +DEFAULT +12 
- +13: 01810390 +0 SECTION LOCAL +DEFAULT +13 
- +14: 018103ac +0 SECTION LOCAL +DEFAULT +14 
- +15: 018103ac +0 SECTION LOCAL +DEFAULT +15 
+ +9: 018102b4 +0 SECTION LOCAL +DEFAULT +9 
+ +10: 018102d0 +0 SECTION LOCAL +DEFAULT +10 
+ +11: 018102d0 +0 SECTION LOCAL +DEFAULT +11 
+ +12: 01810370 +0 SECTION LOCAL +DEFAULT +12 
+ +13: 01810370 +0 SECTION LOCAL +DEFAULT +13 
+ +14: 0181038c +0 SECTION LOCAL +DEFAULT +14 
+ +15: 0181038c +0 SECTION LOCAL +DEFAULT +15 
  +16: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +16 
  +17: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +17 
  +18: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +18 
@@ -106,7 +106,7 @@ Symbol table '\.symtab' contains 47 entr
  +25: 00000010 +0 TLS +LOCAL +DEFAULT +9 ie4
  +26: 00000014 +0 TLS +LOCAL +DEFAULT +9 le4
  +27: 00000018 +0 TLS +LOCAL +DEFAULT +9 le5
- +28: 018102f0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +28: 018102d0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
  +29: 00000000 +0 TLS +GLOBAL DEFAULT +UND gd
  +30: 00000030 +0 TLS +GLOBAL DEFAULT +10 le0
  +31: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr
@@ -120,7 +120,7 @@ Symbol table '\.symtab' contains 47 entr
  +39: 00000024 +0 TLS +GLOBAL DEFAULT +10 ld1
  +40: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
  +41: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +42: 01810394 +0 OBJECT +GLOBAL +HIDDEN +13 _GLOBAL_OFFSET_TABLE_
+ +42: 01810374 +0 OBJECT +GLOBAL +HIDDEN +13 _GLOBAL_OFFSET_TABLE_
  +43: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
  +44: 0000001c +0 TLS +GLOBAL DEFAULT +10 gd0
  +45: 0000002c +0 TLS +GLOBAL DEFAULT +10 ie0
Index: ld/testsuite/ld-powerpc/tlsexe32.t
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe32.t,v
retrieving revision 1.2
diff -u -p -r1.2 tlsexe32.t
--- ld/testsuite/ld-powerpc/tlsexe32.t	2 Nov 2004 05:40:05 -0000	1.2
+++ ld/testsuite/ld-powerpc/tlsexe32.t	16 Mar 2005 01:32:46 -0000
@@ -7,5 +7,5 @@
 .*: +file format elf32-powerpc
 
 Contents of section \.tdata:
- 18102d4 12345678 23456789 3456789a 456789ab  .*
- 18102e4 56789abc 6789abcd 789abcde           .*
+.* 12345678 23456789 3456789a 456789ab  .*
+.* 56789abc 6789abcd 789abcde           .*
Index: ld/testsuite/ld-powerpc/tlsso32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.d,v
retrieving revision 1.7
diff -u -p -r1.7 tlsso32.d
--- ld/testsuite/ld-powerpc/tlsso32.d	2 Nov 2004 05:40:05 -0000	1.7
+++ ld/testsuite/ld-powerpc/tlsso32.d	16 Mar 2005 01:32:46 -0000
@@ -8,38 +8,38 @@
 
 Disassembly of section \.text:
 
-0+46c <_start>:
- 46c:	38 7f 00 1c 	addi    r3,r31,28
- 470:	48 00 00 01 	bl      470 .*
- 474:	38 7f 00 0c 	addi    r3,r31,12
- 478:	48 00 00 01 	bl      478 .*
- 47c:	38 7f 00 24 	addi    r3,r31,36
- 480:	48 01 01 95 	bl      10614 .*
- 484:	38 7f 00 0c 	addi    r3,r31,12
- 488:	48 01 01 8d 	bl      10614 .*
- 48c:	39 23 80 20 	addi    r9,r3,-32736
- 490:	3d 23 00 00 	addis   r9,r3,0
- 494:	81 49 80 24 	lwz     r10,-32732\(r9\)
- 498:	81 3f 00 2c 	lwz     r9,44\(r31\)
- 49c:	7d 49 12 2e 	lhzx    r10,r9,r2
- 4a0:	89 42 00 00 	lbz     r10,0\(r2\)
- 4a4:	3d 22 00 00 	addis   r9,r2,0
- 4a8:	99 49 00 00 	stb     r10,0\(r9\)
- 4ac:	38 7e 00 14 	addi    r3,r30,20
- 4b0:	48 00 00 01 	bl      4b0 .*
- 4b4:	38 7e 00 0c 	addi    r3,r30,12
- 4b8:	48 00 00 01 	bl      4b8 .*
- 4bc:	91 43 80 04 	stw     r10,-32764\(r3\)
- 4c0:	3d 23 00 00 	addis   r9,r3,0
- 4c4:	91 49 80 08 	stw     r10,-32760\(r9\)
- 4c8:	81 3e 00 2c 	lwz     r9,44\(r30\)
- 4cc:	7d 49 13 2e 	sthx    r10,r9,r2
- 4d0:	a1 42 00 00 	lhz     r10,0\(r2\)
- 4d4:	3d 22 00 00 	addis   r9,r2,0
- 4d8:	a9 49 00 00 	lha     r10,0\(r9\)
+.* <_start>:
+.*:	38 7f 00 1c 	addi    r3,r31,28
+.*:	48 00 00 01 	bl      .*
+.*:	38 7f 00 0c 	addi    r3,r31,12
+.*:	48 00 00 01 	bl      .*
+.*:	38 7f 00 24 	addi    r3,r31,36
+.*:	48 01 01 95 	bl      .*<__tls_get_addr@plt>
+.*:	38 7f 00 0c 	addi    r3,r31,12
+.*:	48 01 01 8d 	bl      .*<__tls_get_addr@plt>
+.*:	39 23 80 20 	addi    r9,r3,-32736
+.*:	3d 23 00 00 	addis   r9,r3,0
+.*:	81 49 80 24 	lwz     r10,-32732\(r9\)
+.*:	81 3f 00 2c 	lwz     r9,44\(r31\)
+.*:	7d 49 12 2e 	lhzx    r10,r9,r2
+.*:	89 42 00 00 	lbz     r10,0\(r2\)
+.*:	3d 22 00 00 	addis   r9,r2,0
+.*:	99 49 00 00 	stb     r10,0\(r9\)
+.*:	38 7e 00 14 	addi    r3,r30,20
+.*:	48 00 00 01 	bl      .*
+.*:	38 7e 00 0c 	addi    r3,r30,12
+.*:	48 00 00 01 	bl      .*
+.*:	91 43 80 04 	stw     r10,-32764\(r3\)
+.*:	3d 23 00 00 	addis   r9,r3,0
+.*:	91 49 80 08 	stw     r10,-32760\(r9\)
+.*:	81 3e 00 2c 	lwz     r9,44\(r30\)
+.*:	7d 49 13 2e 	sthx    r10,r9,r2
+.*:	a1 42 00 00 	lhz     r10,0\(r2\)
+.*:	3d 22 00 00 	addis   r9,r2,0
+.*:	a9 49 00 00 	lha     r10,0\(r9\)
 Disassembly of section \.got:
 
-00010598 <\.got>:
-   10598:	4e 80 00 21 	blrl
-   1059c:	00 01 04 f8 	\.long 0x104f8
+.* <\.got>:
+.*:	4e 80 00 21 	blrl
+.*:	00 01 04 e4 	.*
 	\.\.\.
Index: ld/testsuite/ld-powerpc/tlsso32.g
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.g,v
retrieving revision 1.3
diff -u -p -r1.3 tlsso32.g
--- ld/testsuite/ld-powerpc/tlsso32.g	2 Nov 2004 05:40:05 -0000	1.3
+++ ld/testsuite/ld-powerpc/tlsso32.g	16 Mar 2005 01:32:46 -0000
@@ -7,7 +7,7 @@
 .*: +file format elf32-powerpc
 
 Contents of section \.got:
- 10598 4e800021 000104f8 00000000 00000000  .*
- 105a8 00000000 00000000 00000000 00000000  .*
- 105b8 00000000 00000000 00000000 00000000  .*
- 105c8 00000000                             .*
+.* 4e800021 000104e4 00000000 00000000  .*
+.* 00000000 00000000 00000000 00000000  .*
+.* 00000000 00000000 00000000 00000000  .*
+.* 00000000                             .*
Index: ld/testsuite/ld-powerpc/tlsso32.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.r,v
retrieving revision 1.7
diff -u -p -r1.7 tlsso32.r
--- ld/testsuite/ld-powerpc/tlsso32.r	2 Nov 2004 05:40:05 -0000	1.7
+++ ld/testsuite/ld-powerpc/tlsso32.r	16 Mar 2005 01:32:46 -0000
@@ -4,7 +4,7 @@
 #readelf: -WSsrl
 #target: powerpc*-*-*
 
-There are 20 section headers.*
+There are 19 section headers.*
 
 Section Headers:
  +\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
@@ -14,20 +14,19 @@ Section Headers:
  +\[ 3\] \.dynstr +.*
  +\[ 4\] \.rela\.dyn +.*
  +\[ 5\] \.rela\.plt +.*
- +\[ 6\] \.text +PROGBITS +0+46c 0+46c 0+70 0+ +AX +0 +0 +1
- +\[ 7\] \.tdata +PROGBITS +0+104dc 0+4dc 0+1c 0+ WAT +0 +0 +4
- +\[ 8\] \.tbss +NOBITS +0+104f8 0+4f8 0+1c 0+ WAT +0 +0 +4
- +\[ 9\] \.dynamic +DYNAMIC +0+104f8 0+4f8 0+a0 08 +WA +3 +0 +4
- +\[10\] \.data +PROGBITS +0+10598 0+598 0+ 0+ +WA +0 +0 +1
- +\[11\] \.got +PROGBITS +0+10598 0+598 0+34 04 WAX +0 +0 +4
- +\[12\] \.sdata2 +.*
- +\[13\] \.sdata +.*
- +\[14\] \.sbss +.*
- +\[15\] \.plt +.*
- +\[16\] \.bss +.*
- +\[17\] \.shstrtab +.*
- +\[18\] \.symtab +.*
- +\[19\] \.strtab +.*
+ +\[ 6\] \.text +PROGBITS +0+458 0+458 0+70 0+ +AX +0 +0 +1
+ +\[ 7\] \.tdata +PROGBITS +0+104c8 0+4c8 0+1c 0+ WAT +0 +0 +4
+ +\[ 8\] \.tbss +NOBITS +0+104e4 0+4e4 0+1c 0+ WAT +0 +0 +4
+ +\[ 9\] \.dynamic +DYNAMIC +0+104e4 0+4e4 0+a0 08 +WA +3 +0 +4
+ +\[10\] \.data +PROGBITS +0+10584 0+584 0+ 0+ +WA +0 +0 +1
+ +\[11\] \.got +PROGBITS +0+10584 0+584 0+34 04 WAX +0 +0 +4
+ +\[12\] \.sdata +.*
+ +\[13\] \.sbss +.*
+ +\[14\] \.plt +.*
+ +\[15\] \.bss +.*
+ +\[16\] \.shstrtab +.*
+ +\[17\] \.symtab +.*
+ +\[18\] \.strtab +.*
 #...
 
 Elf file type is DYN \(Shared object file\)
@@ -36,10 +35,10 @@ There are 4 program headers.*
 
 Program Headers:
  +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
- +LOAD +0x0+ 0x0+ 0x0+ 0x0+4dc 0x0+4dc R E 0x10000
- +LOAD +0x0+4dc 0x0+104dc 0x0+104dc 0x0+f0 0x0+144 RWE 0x10000
- +DYNAMIC +0x0+4f8 0x0+104f8 0x0+104f8 0x0+a0 0x0+a0 RW +0x4
- +TLS +0x0+4dc 0x0+104dc 0x0+104dc 0x0+1c 0x0+38 R +0x4
+ +LOAD +0x0+ 0x0+ 0x0+ 0x0+4c8 0x0+4c8 R E 0x10000
+ +LOAD +0x0+4c8 0x0+104c8 0x0+104c8 0x0+f0 0x0+144 RWE 0x10000
+ +DYNAMIC +0x0+4e4 0x0+104e4 0x0+104e4 0x0+a0 0x0+a0 RW +0x4
+ +TLS +0x0+4c8 0x0+104c8 0x0+104c8 0x0+1c 0x0+38 R +0x4
 
  Section to Segment mapping:
  +Segment Sections\.\.\.
@@ -50,41 +49,40 @@ Program Headers:
 
 Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 18 entries:
  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
-0+470 +0+c0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
-0+478 +0+c0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
-0+4b0 +0+c0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
-0+4b8 +0+c0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
-0+4a2 +0+b45 R_PPC_TPREL16 +0+30 +le0 \+ 0
-0+4a6 +0+e48 R_PPC_TPREL16_HA +0+34 +le1 \+ 0
-0+4aa +0+e46 R_PPC_TPREL16_LO +0+34 +le1 \+ 0
-0+4d2 +0+245 R_PPC_TPREL16 +0+104dc +\.tdata \+ 104f0
-0+4d6 +0+248 R_PPC_TPREL16_HA +0+104dc +\.tdata \+ 104f4
-0+4da +0+246 R_PPC_TPREL16_LO +0+104dc +\.tdata \+ 104f4
-0+105a8 +0+44 R_PPC_DTPMOD32 +0+
-0+105b0 +0+44 R_PPC_DTPMOD32 +0+
-0+105b4 +0+4e R_PPC_DTPREL32 +0+
-0+105b8 +0+a44 R_PPC_DTPMOD32 +0+ +gd \+ 0
-0+105bc +0+a4e R_PPC_DTPREL32 +0+ +gd \+ 0
-0+105c0 +0+1844 R_PPC_DTPMOD32 +0+1c +gd0 \+ 0
-0+105c4 +0+184e R_PPC_DTPREL32 +0+1c +gd0 \+ 0
-0+105c8 +0+1949 R_PPC_TPREL32 +0+2c +ie0 \+ 0
+0+45c +0+b0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
+0+464 +0+b0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
+0+49c +0+b0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
+0+4a4 +0+b0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
+0+48e +0+a45 R_PPC_TPREL16 +0+30 +le0 \+ 0
+0+492 +0+d48 R_PPC_TPREL16_HA +0+34 +le1 \+ 0
+0+496 +0+d46 R_PPC_TPREL16_LO +0+34 +le1 \+ 0
+0+4be +0+245 R_PPC_TPREL16 +0+104c8 +\.tdata \+ 104dc
+0+4c2 +0+248 R_PPC_TPREL16_HA +0+104c8 +\.tdata \+ 104e0
+0+4c6 +0+246 R_PPC_TPREL16_LO +0+104c8 +\.tdata \+ 104e0
+0+10594 +0+44 R_PPC_DTPMOD32 +0+
+0+1059c +0+44 R_PPC_DTPMOD32 +0+
+0+105a0 +0+4e R_PPC_DTPREL32 +0+
+0+105a4 +0+944 R_PPC_DTPMOD32 +0+ +gd \+ 0
+0+105a8 +0+94e R_PPC_DTPREL32 +0+ +gd \+ 0
+0+105ac +0+1744 R_PPC_DTPMOD32 +0+1c +gd0 \+ 0
+0+105b0 +0+174e R_PPC_DTPREL32 +0+1c +gd0 \+ 0
+0+105b4 +0+1849 R_PPC_TPREL32 +0+2c +ie0 \+ 0
 
 Relocation section '\.rela\.plt' at offset 0x[0-9a-f]+ contains 1 entries:
  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
-0+10614 +0+c15 R_PPC_JMP_SLOT +0+ +__tls_get_addr \+ 0
+0+10600 +0+b15 R_PPC_JMP_SLOT +0+ +__tls_get_addr \+ 0
 
-Symbol table '\.dynsym' contains 27 entries:
+Symbol table '\.dynsym' contains 26 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
  +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND 
- +[0-9]+: 0+46c +0 SECTION LOCAL +DEFAULT +6 
- +[0-9]+: 0+104dc +0 SECTION LOCAL +DEFAULT +7 
- +[0-9]+: 0+104f8 +0 SECTION LOCAL +DEFAULT +8 
- +[0-9]+: 0+10598 +0 SECTION LOCAL +DEFAULT +10 
- +[0-9]+: 0+105cc +0 SECTION LOCAL +DEFAULT +12 
- +[0-9]+: 0+105cc +0 SECTION LOCAL +DEFAULT +13 
- +[0-9]+: 0+105cc +0 SECTION LOCAL +DEFAULT +14 
- +[0-9]+: 0+10620 +0 SECTION LOCAL +DEFAULT +16 
- +[0-9]+: 0+104f8 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +[0-9]+: 0+458 +0 SECTION LOCAL +DEFAULT +6 
+ +[0-9]+: 0+104c8 +0 SECTION LOCAL +DEFAULT +7 
+ +[0-9]+: 0+104e4 +0 SECTION LOCAL +DEFAULT +8 
+ +[0-9]+: 0+10584 +0 SECTION LOCAL +DEFAULT +10 
+ +[0-9]+: 0+105b8 +0 SECTION LOCAL +DEFAULT +12 
+ +[0-9]+: 0+105b8 +0 SECTION LOCAL +DEFAULT +13 
+ +[0-9]+: 0+1060c +0 SECTION LOCAL +DEFAULT +15 
+ +[0-9]+: 0+104e4 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND gd
  +[0-9]+: 0+30 +0 TLS +GLOBAL DEFAULT +8 le0
  +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr
@@ -93,7 +91,7 @@ Symbol table '\.dynsym' contains 27 entr
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND ld
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +6 _start
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __end
- +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +13 _SDA_BASE_
+ +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +12 _SDA_BASE_
  +[0-9]+: 0+28 +0 TLS +GLOBAL DEFAULT +8 ld2
  +[0-9]+: 0+24 +0 TLS +GLOBAL DEFAULT +8 ld1
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
@@ -103,7 +101,7 @@ Symbol table '\.dynsym' contains 27 entr
  +[0-9]+: 0+2c +0 TLS +GLOBAL DEFAULT +8 ie0
  +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +12 _SDA2_BASE_
 
-Symbol table '\.symtab' contains 46 entries:
+Symbol table '\.symtab' contains 45 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
  +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND 
  +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +1 
@@ -111,20 +109,19 @@ Symbol table '\.symtab' contains 46 entr
  +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +3 
  +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +4 
  +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +5 
- +[0-9]+: 0+46c +0 SECTION LOCAL +DEFAULT +6 
- +[0-9]+: 0+104dc +0 SECTION LOCAL +DEFAULT +7 
- +[0-9]+: 0+104f8 +0 SECTION LOCAL +DEFAULT +8 
+ +[0-9]+: 0+458 +0 SECTION LOCAL +DEFAULT +6 
+ +[0-9]+: 0+104c8 +0 SECTION LOCAL +DEFAULT +7 
+ +[0-9]+: 0+104e4 +0 SECTION LOCAL +DEFAULT +8 
  +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 
- +[0-9]+: 0+10598 +0 SECTION LOCAL +DEFAULT +10 
+ +[0-9]+: 0+10584 +0 SECTION LOCAL +DEFAULT +10 
  +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 
- +[0-9]+: 0+105cc +0 SECTION LOCAL +DEFAULT +12 
- +[0-9]+: 0+105cc +0 SECTION LOCAL +DEFAULT +13 
- +[0-9]+: 0+105cc +0 SECTION LOCAL +DEFAULT +14 
- +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +15 
- +[0-9]+: 0+10620 +0 SECTION LOCAL +DEFAULT +16 
+ +[0-9]+: 0+105b8 +0 SECTION LOCAL +DEFAULT +12 
+ +[0-9]+: 0+105b8 +0 SECTION LOCAL +DEFAULT +13 
+ +[0-9]+: 0+105b8 +0 SECTION LOCAL +DEFAULT +14 
+ +[0-9]+: 0+1060c +0 SECTION LOCAL +DEFAULT +15 
+ +[0-9]+: 0+ +0 SECTION LOCAL +DEFAULT +16 
  +[0-9]+: 0+ +0 SECTION LOCAL +DEFAULT +17 
  +[0-9]+: 0+ +0 SECTION LOCAL +DEFAULT +18 
- +[0-9]+: 0+ +0 SECTION LOCAL +DEFAULT +19 
  +[0-9]+: 0+ +0 TLS +LOCAL +DEFAULT +7 gd4
  +[0-9]+: 0+4 +0 TLS +LOCAL +DEFAULT +7 ld4
  +[0-9]+: 0+8 +0 TLS +LOCAL +DEFAULT +7 ld5
@@ -132,8 +129,8 @@ Symbol table '\.symtab' contains 46 entr
  +[0-9]+: 0+10 +0 TLS +LOCAL +DEFAULT +7 ie4
  +[0-9]+: 0+14 +0 TLS +LOCAL +DEFAULT +7 le4
  +[0-9]+: 0+18 +0 TLS +LOCAL +DEFAULT +7 le5
- +[0-9]+: 0+1059c +0 OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_
- +[0-9]+: 0+104f8 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +[0-9]+: 0+10588 +0 OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_
+ +[0-9]+: 0+104e4 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND gd
  +[0-9]+: 0+30 +0 TLS +GLOBAL DEFAULT +8 le0
  +[0-9]+: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr
@@ -142,7 +139,7 @@ Symbol table '\.symtab' contains 46 entr
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT +UND ld
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +6 _start
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __end
- +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +13 _SDA_BASE_
+ +[0-9]+: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +12 _SDA_BASE_
  +[0-9]+: 0+28 +0 TLS +GLOBAL DEFAULT +8 ld2
  +[0-9]+: 0+24 +0 TLS +GLOBAL DEFAULT +8 ld1
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
Index: ld/testsuite/ld-powerpc/tlsso32.t
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.t,v
retrieving revision 1.3
diff -u -p -r1.3 tlsso32.t
--- ld/testsuite/ld-powerpc/tlsso32.t	2 Nov 2004 05:40:05 -0000	1.3
+++ ld/testsuite/ld-powerpc/tlsso32.t	16 Mar 2005 01:32:46 -0000
@@ -7,5 +7,5 @@
 .*: +file format elf32-powerpc
 
 Contents of section \.tdata:
- 104dc 12345678 23456789 3456789a 456789ab  .*
- 104ec 56789abc 6789abcd 789abcde           .*
+.* 12345678 23456789 3456789a 456789ab  .*
+.* 56789abc 6789abcd 789abcde           .*

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre



More information about the Binutils mailing list