public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
@ 2004-10-29  4:37 Hans-Peter Nilsson
  2004-10-29  5:38 ` Alan Modra
  2004-11-02  5:46 ` Hans-Peter Nilsson
  0 siblings, 2 replies; 16+ messages in thread
From: Hans-Peter Nilsson @ 2004-10-29  4:37 UTC (permalink / raw)
  To: binutils

A long time ago, in
<URL:http://sources.redhat.com/ml/binutils/2003-04/msg00117.html>,
I suggested a patch to make the visibility of
_GLOBAL_OFFSET_TABLE_ target-selectable through a bfd hook, with
the intent on making it hidden, but keeping it visible to avoid
breaking something obscure somewhere.  Alan Modra thought it'd
be just as good to make it *always* hidden.  Here's the patch
for that and the testsuite adjustments for i686-pc-linux-gnu
(built and tested there).  If that's still ok, I'll adjust the
rest of the testsuite.

Ok to commit?

bfd:
	* elflink.c (_bfd_elf_create_got_section): Hide _GLOBAL_OFFSET_SYMBOL.

ld/testsuite:
	* ld-i386/tlsbin.rd: Adjust for hidden _GLOBAL_OFFSET_TABLE_.
	* ld-i386/tlsnopic.rd, ld-i386/tlspic.rd: Ditto.


Index: elflink.c
===================================================================
RCS file: /cvs/src/src/bfd/elflink.c,v
retrieving revision 1.115
diff -u -p -r1.115 elflink.c
--- elflink.c	26 Oct 2004 13:46:00 -0000	1.115
+++ elflink.c	29 Oct 2004 04:11:33 -0000
@@ -88,6 +88,7 @@ _bfd_elf_create_got_section (bfd *abfd, 
       h = (struct elf_link_hash_entry *) bh;
       h->def_regular = 1;
       h->type = STT_OBJECT;
+      h->other = STV_HIDDEN;
 
       if (! info->executable
 	  && ! bfd_elf_link_record_dynamic_symbol (info, h))

cvs diff: Diffing .
Index: tlsbin.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsbin.rd,v
retrieving revision 1.3
diff -u -p -r1.3 tlsbin.rd
--- tlsbin.rd	22 Sep 2004 07:24:13 -0000	1.3
+++ tlsbin.rd	29 Oct 2004 04:07:51 -0000
@@ -66,13 +66,13 @@ Relocation section '.rel.dyn' at offset 
 0+804a114  0000060e R_386_TLS_TPOFF +0+ +sG4
 0+804a118  00000825 R_386_TLS_TPOFF32 0+ +sG6
 0+804a11c  00000925 R_386_TLS_TPOFF32 0+ +sG1
-0+804a120  00000d0e R_386_TLS_TPOFF +0+ +sG8
+0+804a120  00000c0e R_386_TLS_TPOFF +0+ +sG8
 
-Relocation section '.rel.plt' at offset 0x30c contains 1 entries:
+Relocation section '.rel.plt' at offset 0x[0-9a-f]+ contains 1 entries:
  Offset +Info +Type +Sym.Value  Sym. Name
-0+804a130  00000e07 R_386_JUMP_SLOT +[0-9a-f]+ +___tls_get_addr
+0+804a130  00000d07 R_386_JUMP_SLOT +[0-9a-f]+ +___tls_get_addr
 
-Symbol table '.dynsym' contains 15 entries:
+Symbol table '.dynsym' contains 14 entries:
  +Num: +Value  Size Type +Bind +Vis +Ndx Name
  +[0-9]+: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND *
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG3
@@ -85,7 +85,6 @@ Symbol table '.dynsym' contains 15 entri
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG6
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG1
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG8
  +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT  UND ___tls_get_addr
@@ -158,7 +157,7 @@ Symbol table '.symtab' contains 75 entri
  +[0-9]+: 00000014 +0 TLS +GLOBAL DEFAULT +9 sg6
  +[0-9]+: 00000018 +0 TLS +GLOBAL DEFAULT +9 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL HIDDEN   13 _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 00000044 +0 TLS +GLOBAL HIDDEN +9 sh2
  +[0-9]+: 00000054 +0 TLS +GLOBAL HIDDEN +9 sh6
Index: tlsnopic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsnopic.rd,v
retrieving revision 1.4
diff -u -p -r1.4 tlsnopic.rd
--- tlsnopic.rd	22 Sep 2004 07:24:13 -0000	1.4
+++ tlsnopic.rd	29 Oct 2004 04:07:52 -0000
@@ -72,7 +72,7 @@ Relocation section '.rel.dyn' at offset 
 0+208c  0+d0e R_386_TLS_TPOFF   0+   sg2
 
 
-Symbol table '.dynsym' contains 17 entries:
+Symbol table '.dynsym' contains 16 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 +5 *
@@ -89,7 +89,6 @@ Symbol table '.dynsym' contains 17 entri
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sg2
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: 0+2098 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
 
 Symbol table '.symtab' contains 36 entries:
@@ -118,6 +117,7 @@ Symbol table '.symtab' contains 36 entri
  +[0-9]+: 0+1c +0 TLS +LOCAL  HIDDEN +6 sh3
  +[0-9]+: 0+20 +0 TLS +LOCAL  HIDDEN +6 sh4
  +[0-9]+: 0+14 +0 TLS +LOCAL  HIDDEN +6 sh1
+ +[0-9]+: 0+2098 +0 OBJECT  LOCAL  HIDDEN  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: 0+18 +0 TLS +LOCAL  HIDDEN +6 sh2
  +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sg3
@@ -128,5 +128,4 @@ Symbol table '.symtab' contains 36 entri
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sg2
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: 0+2098 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
Index: tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlspic.rd,v
retrieving revision 1.3
diff -u -p -r1.3 tlspic.rd
--- tlspic.rd	22 Sep 2004 07:24:13 -0000	1.3
+++ tlspic.rd	29 Oct 2004 04:07:52 -0000
@@ -81,9 +81,9 @@ Relocation section '.rel.dyn' at offset 
 
 Relocation section '.rel.plt' at offset 0x[0-9a-f]+ contains 1 entries:
  Offset     Info    Type            Sym.Value  Sym. Name
-[0-9a-f]+  0+1407 R_386_JUMP_SLOT   0+   ___tls_get_addr
+[0-9a-f]+  0+1307 R_386_JUMP_SLOT   0+   ___tls_get_addr
 
-Symbol table '.dynsym' contains 21 entries:
+Symbol table '.dynsym' contains 20 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 +7 *
@@ -103,7 +103,6 @@ Symbol table '.dynsym' contains 21 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND ___tls_get_addr
 
@@ -149,6 +148,7 @@ Symbol table '.symtab' contains 57 entri
  +[0-9]+: 0+74 +0 TLS +LOCAL  HIDDEN +9 sH6
  +[0-9]+: 0+7c +0 TLS +LOCAL  HIDDEN +9 sH8
  +[0-9]+: 0+40 +0 TLS +LOCAL  HIDDEN +8 sh1
+ +[0-9]+: [0-9a-f]+ +0 OBJECT  LOCAL  HIDDEN  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: 0+44 +0 TLS +LOCAL  HIDDEN +8 sh2
  +[0-9]+: 0+54 +0 TLS +LOCAL  HIDDEN +8 sh6
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8
@@ -163,6 +163,5 @@ Symbol table '.symtab' contains 57 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND ___tls_get_addr

brgds, H-P

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2004-10-29  4:37 [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_ Hans-Peter Nilsson
@ 2004-10-29  5:38 ` Alan Modra
  2004-10-29 11:46   ` Hans-Peter Nilsson
  2005-01-05 13:19   ` Eric Botcazou
  2004-11-02  5:46 ` Hans-Peter Nilsson
  1 sibling, 2 replies; 16+ messages in thread
From: Alan Modra @ 2004-10-29  5:38 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: binutils

On Fri, Oct 29, 2004 at 06:37:12AM +0200, Hans-Peter Nilsson wrote:
> A long time ago, in
> <URL:http://sources.redhat.com/ml/binutils/2003-04/msg00117.html>,
> I suggested a patch to make the visibility of
> _GLOBAL_OFFSET_TABLE_ target-selectable through a bfd hook, with
> the intent on making it hidden, but keeping it visible to avoid
> breaking something obscure somewhere.  Alan Modra thought it'd
> be just as good to make it *always* hidden.  Here's the patch

Jakub's changes to decrease the number of emitted sections symbols
might interact badly with this change.  It might be a good idea to
test this on sparc before you go ahead.  The problem is that if
_GLOBAL_OFFSET_TABLE_ is hidden any relocs against it will be
reduced to the .got section symbol, which may no longer be dynamic.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2004-10-29  5:38 ` Alan Modra
@ 2004-10-29 11:46   ` Hans-Peter Nilsson
  2004-10-29 14:57     ` Alan Modra
  2005-01-05 13:19   ` Eric Botcazou
  1 sibling, 1 reply; 16+ messages in thread
From: Hans-Peter Nilsson @ 2004-10-29 11:46 UTC (permalink / raw)
  To: amodra; +Cc: hans-peter.nilsson, binutils

> Date: Fri, 29 Oct 2004 15:08:48 +0930
> From: Alan Modra <amodra@bigpond.net.au>

> On Fri, Oct 29, 2004 at 06:37:12AM +0200, Hans-Peter Nilsson wrote:
> > A long time ago, in
> > <URL:http://sources.redhat.com/ml/binutils/2003-04/msg00117.html>,
> > I suggested a patch to make the visibility of
> > _GLOBAL_OFFSET_TABLE_ target-selectable through a bfd hook, with
> > the intent on making it hidden, but keeping it visible to avoid
> > breaking something obscure somewhere.  Alan Modra thought it'd
> > be just as good to make it *always* hidden.  Here's the patch
> 
> Jakub's changes to decrease the number of emitted sections symbols
> might interact badly with this change.  It might be a good idea to
> test this on sparc before you go ahead.  The problem is that if
> _GLOBAL_OFFSET_TABLE_ is hidden any relocs against it will be
> reduced to the .got section symbol, which may no longer be dynamic.

*Without* the patch, I see this failure:

FAIL: TLS -fno-pic -shared

In ld.log:
/home/hp/binutils/obj/ld/ld-new: BFD 2.15.94 20041029 assertion fail /home/hp/binutils/src/bfd/elf32-sparc.c:2485
/home/hp/binutils/obj/ld/ld-new: tmpdir/tlssunnopic32.o: probably compiled without -fPIC?
/home/hp/binutils/obj/ld/ld-new: final link failed: Bad value

*With* the patch applied and testsuite adjusted similar to i386,
there are no regressions for sparc-unknown-linux-gnu, cross from
i686-pc-linux-gnu.  (I.e. the failure remains the same.)

Any other tests needed (besides running and adjusting testsuites
for other targets mentioning _GLOBAL_OFFSET_TABLE_ in their
testsuites)?

brgds, H-P

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2004-10-29 11:46   ` Hans-Peter Nilsson
@ 2004-10-29 14:57     ` Alan Modra
  2004-10-30 16:17       ` Hans-Peter Nilsson
  0 siblings, 1 reply; 16+ messages in thread
From: Alan Modra @ 2004-10-29 14:57 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: binutils

On Fri, Oct 29, 2004 at 01:45:52PM +0200, Hans-Peter Nilsson wrote:
> *Without* the patch, I see this failure:
> FAIL: TLS -fno-pic -shared

Known problem.

> *With* the patch applied and testsuite adjusted similar to i386,
> there are no regressions for sparc-unknown-linux-gnu, cross from
> i686-pc-linux-gnu.  (I.e. the failure remains the same.)

Hmm, OK.

> Any other tests needed (besides running and adjusting testsuites
> for other targets mentioning _GLOBAL_OFFSET_TABLE_ in their
> testsuites)?

It would be a good idea to compile glibc and run the glibc testsuite.
Pick a target that uses _GLOBAL_OFFSET_TABLE_ in dl-machine.h.  If
that goes without a hitch, then feel free to commit.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2004-10-29 14:57     ` Alan Modra
@ 2004-10-30 16:17       ` Hans-Peter Nilsson
  0 siblings, 0 replies; 16+ messages in thread
From: Hans-Peter Nilsson @ 2004-10-30 16:17 UTC (permalink / raw)
  To: amodra; +Cc: hans-peter.nilsson, binutils

> Date: Sat, 30 Oct 2004 00:20:51 +0930
> From: Alan Modra <amodra@bigpond.net.au>

> It would be a good idea to compile glibc and run the glibc testsuite.
> Pick a target that uses _GLOBAL_OFFSET_TABLE_ in dl-machine.h.  If
> that goes without a hitch, then feel free to commit.

Lucky me, the x86 port has that, though most of the fun seems to
be spoiled; it's declaration is already hidden.  See elf_machine_dynamic:
  extern const Elf32_Addr _GLOBAL_OFFSET_TABLE_[] attribute_hidden;

Unfortunately, I can't get a baseline with unpatched results;
glibc testing fails with current (as of this writing) HEAD of
binutils and glibc.  Testing with installed binutils works.
Testing on i686-pc-linux-gnu FC2, with PATH-prefixed prefix (and
--enable-add-ons --without-cvs), where binutils and
/lib/libgcc_s.so.1, is installed, yields:

gcc -nostdlib -nostartfiles -o /home/hp/glibc/obj/rt/tst-timer4  -Wl,-dynamic-linker=/tmp/glibcprefix/lib/ld-linux.so.2   -Wl,-z,\
combreloc -Wl,-z,relro /home/hp/glibc/obj/csu/crt1.o /home/hp/glibc/obj/csu/crti.o `gcc --print-file-name=crtbegin.o` /home/hp/gl\
ibc/obj/rt/tst-timer4.o /home/hp/glibc/obj/rt/librt.so /home/hp/glibc/obj/nptl/libpthread_nonshared.a /home/hp/glibc/obj/nptl/lib\
pthread.so  -Wl,-rpath-link=/home/hp/glibc/obj:/home/hp/glibc/obj/math:/home/hp/glibc/obj/elf:/home/hp/glibc/obj/dlfcn:/home/hp/g\
libc/obj/nss:/home/hp/glibc/obj/nis:/home/hp/glibc/obj/rt:/home/hp/glibc/obj/resolv:/home/hp/glibc/obj/crypt:/home/hp/glibc/obj/n\
ptl /home/hp/glibc/obj/libc.so.6 /home/hp/glibc/obj/libc_nonshared.a -lgcc -Wl,--as-needed -lgcc_s -Wl,--no-as-needed `gcc --prin\
t-file-name=crtend.o` /home/hp/glibc/obj/csu/crtn.o
GCONV_PATH=/home/hp/glibc/obj/iconvdata LC_ALL=C   /home/hp/glibc/obj/elf/ld-linux.so.2 --library-path /home/hp/glibc/obj:/home/h\
p/glibc/obj/math:/home/hp/glibc/obj/elf:/home/hp/glibc/obj/dlfcn:/home/hp/glibc/obj/nss:/home/hp/glibc/obj/nis:/home/hp/glibc/obj\
/rt:/home/hp/glibc/obj/resolv:/home/hp/glibc/obj/crypt:/home/hp/glibc/obj/nptl /home/hp/glibc/obj/rt/tst-timer4  > /home/hp/glibc\
/obj/rt/tst-timer4.out
make[3]: *** [/home/hp/glibc/obj/rt/tst-timer4.out] Error 1

I guess I just have to wait until HEAD of binutils stabilizes wrt. glibc testing.
Or investigate and fix the bug myself.

This isn't the first glibc test, so I doubt it's just a goof in
my framework, though glibc could do with a howto-testing item in
the FAQ.  I also stumbled on --with-binutils which could be
helpful.

brgds, H-P

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2004-10-29  4:37 [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_ Hans-Peter Nilsson
  2004-10-29  5:38 ` Alan Modra
@ 2004-11-02  5:46 ` Hans-Peter Nilsson
  1 sibling, 0 replies; 16+ messages in thread
From: Hans-Peter Nilsson @ 2004-11-02  5:46 UTC (permalink / raw)
  To: binutils

The _GLOBAL_OFFSET_TABLE_ hiding patch was approved off-list by
Alan (might have been a missing reply-all).  I built and tested
i686-pc-linux-gnu (FC2) native and cross to the following
targets based on presence of a ld/testsuite/ld-ARCH directory:

arm-unknown-linux-gnu
frv-unknown-linux-gnu
mips64-unknown-linux-gnu
sh64-unknown-linux-gnu
sparc-unknown-linux-gnu
sparc64-unknown-linux-gnu
alpha-linux-gnu
cris-axis-elf
ia64-linux-gnu
mips-linux-gnu
powerpc64-linux-gnu
s390-linux-gnu
sh4-linux-gnu
sh64-linux-gnu
x86_64-linux-gnu

Of these, I adjusted the testsuites where the _GLOBAL_OFFSET_TABLE_ change
introduced a regression.  For example, for alpha-linux-gnu, where TLS
tests presently FAIL, I did not adjust anything, though comparing to other
targets, I'd expect some adjustment to be necessary.  The testsuite
adjustment was committed as obvious.

	* ld-cris/expdyn1.d, ld-cris/expdyn5.d, ld-cris/expdyn6.d,
	ld-cris/expdyn7.d, ld-cris/gotplt1.d, ld-cris/gotplt2.d,
	ld-cris/gotplt3.d, ld-cris/hiddef1.d, ld-cris/libdso-2.d,
	ld-cris/locref1.d, ld-cris/locref2.d, ld-cris/weakref2.d,
	ld-i386/tlsbin.rd, ld-i386/tlsnopic.rd, ld-i386/tlspic.rd,
	ld-ia64/tlsbin.dd, ld-ia64/tlsbin.rd, ld-ia64/tlspic.dd,
	ld-ia64/tlspic.rd, ld-powerpc/tlsexe32.d, ld-powerpc/tlsexe32.g,
	ld-powerpc/tlsexe32.r, ld-powerpc/tlsexe32.t,
	ld-powerpc/tlsso32.d, ld-powerpc/tlsso32.g, ld-powerpc/tlsso32.r,
	ld-powerpc/tlsso32.t, ld-s390/tlsbin.dd, ld-s390/tlsbin.rd,
	ld-s390/tlspic.rd, ld-sparc/tlssunbin32.rd,
	ld-sparc/tlssunpic32.rd, ld-x86-64/tlsbin.rd, ld-x86-64/tlspic.dd,
	ld-x86-64/tlspic.rd: Adjust for hidden _GLOBAL_OFFSET_TABLE_.

Index: ld-cris/expdyn1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/expdyn1.d,v
retrieving revision 1.3
diff -u -p -r1.3 expdyn1.d
--- ld-cris/expdyn1.d	21 Aug 2004 12:51:40 -0000	1.3
+++ ld-cris/expdyn1.d	2 Nov 2004 04:37:49 -0000
@@ -9,6 +9,6 @@
 
 DYNAMIC SYMBOL TABLE:
 #...
-00080206 g    DF .text	00000002 expfn
+00080... g    DF .text	00000002 expfn
 00082... g    DO .data	00000000 expobj
 #pass
Index: ld-cris/expdyn5.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/expdyn5.d,v
retrieving revision 1.2
diff -u -p -r1.2 expdyn5.d
--- ld-cris/expdyn5.d	21 Aug 2004 12:51:40 -0000	1.2
+++ ld-cris/expdyn5.d	2 Nov 2004 04:37:49 -0000
@@ -9,5 +9,5 @@
 
 .*:     file format elf32-cris
 Contents of section \.got:
- 82288 20220800 00000000 00000000 06020800  .*
- 82298 9c220800                             .*
+ 82268 00220800 00000000 00000000 dc010800  .*
+ 82278 7c220800                             .*
Index: ld-cris/expdyn6.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/expdyn6.d,v
retrieving revision 1.2
diff -u -p -r1.2 expdyn6.d
--- ld-cris/expdyn6.d	21 Aug 2004 12:51:40 -0000	1.2
+++ ld-cris/expdyn6.d	2 Nov 2004 04:37:49 -0000
@@ -9,5 +9,5 @@
 
 .*:     file format elf32-cris
 Contents of section \.got:
- 822e8 80220800 00000000 00000000 00000000  .*
- 822f8 4e020800 00230800                    .*
+ 822c8 60220800 00000000 00000000 00000000  .*
+ 822d8 24020800 e0220800                    .*
Index: ld-cris/expdyn7.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/expdyn7.d,v
retrieving revision 1.2
diff -u -p -r1.2 expdyn7.d
--- ld-cris/expdyn7.d	21 Aug 2004 12:51:41 -0000	1.2
+++ ld-cris/expdyn7.d	2 Nov 2004 04:37:49 -0000
@@ -9,5 +9,5 @@
 
 .*:     file format elf32-cris
 Contents of section \.got:
- 822e8 80220800 00000000 00000000 04230800  .*
- 822f8 4b020800 00230800                    .*
+ 822c8 60220800 00000000 00000000 e4220800  .*
+ 822d8 21020800 e0220800                    .*
Index: ld-cris/gotplt1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/gotplt1.d,v
retrieving revision 1.1
diff -u -p -r1.1 gotplt1.d
--- ld-cris/gotplt1.d	22 Mar 2004 04:06:06 -0000	1.1
+++ ld-cris/gotplt1.d	2 Nov 2004 04:37:49 -0000
@@ -19,30 +19,30 @@
 
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
-000822d4 R_CRIS_JUMP_SLOT  dsofn
+000822b4 R_CRIS_JUMP_SLOT  dsofn
 
 Contents of section .*
 #...
 Contents of section \.rela\.plt:
- 801d8 d4220800 0b060000 00000000           .*
+ 801ac b4220800 0b050000 00000000           .*
 Contents of section \.plt:
- 801e4 fce17e7e 7f0dcc22 0800307a 7f0dd022  .*
- 801f4 08003009 7f0dd422 08003009 3f7e0000  .*
- 80204 00002ffe d8ffffff                    .*
+ 801b8 fce17e7e 7f0dac22 0800307a 7f0db022  .*
+ 801c8 08003009 7f0db422 08003009 3f7e0000  .*
+ 801d8 00002ffe d8ffffff                    .*
 Contents of section \.text:
- 8020c 5f1d0c00 30096f1d 0c000000 30090000  .*
- 8021c 6f0d1000 0000611a 6f2ef801 08000000  .*
- 8022c 6f3e64df ffff0000                    .*
+ 801e0 5f1d0c00 30096f1d 0c000000 30090000  .*
+ 801f0 6f0d1000 0000611a 6f2ecc01 08000000  .*
+ 80200 6f3e58df ffff0000                    .*
 Contents of section \.dynamic:
- 82240 01000000 01000000 04000000 e4000800  .*
- 82250 05000000 84010800 06000000 14010800  .*
- 82260 0a000000 51000000 0b000000 10000000  .*
- 82270 15000000 00000000 03000000 c8220800  .*
- 82280 02000000 0c000000 14000000 07000000  .*
- 82290 17000000 d8010800 00000000 00000000  .*
- 822a0 00000000 00000000 00000000 00000000  .*
- 822b0 00000000 00000000 00000000 00000000  .*
- 822c0 00000000 00000000                    .*
+ 82220 01000000 01000000 04000000 e4000800  .*
+ 82230 05000000 70010800 06000000 10010800  .*
+ 82240 0a000000 3b000000 0b000000 10000000  .*
+ 82250 15000000 00000000 03000000 a8220800  .*
+ 82260 02000000 0c000000 14000000 07000000  .*
+ 82270 17000000 ac010800 00000000 00000000  .*
+ 82280 00000000 00000000 00000000 00000000  .*
+ 82290 00000000 00000000 00000000 00000000  .*
+ 822a0 00000000 00000000                    .*
 Contents of section \.got:
- 822c8 40220800 00000000 00000000 00020800  .*
- 822d8 f8010800                             .*
+ 822a8 20220800 00000000 00000000 d4010800  .*
+ 822b8 cc010800                             .*
Index: ld-cris/gotplt2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/gotplt2.d,v
retrieving revision 1.2
diff -u -p -r1.2 gotplt2.d
--- ld-cris/gotplt2.d	21 Aug 2004 12:51:41 -0000	1.2
+++ ld-cris/gotplt2.d	2 Nov 2004 04:37:49 -0000
@@ -16,22 +16,22 @@
 
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
-000022bc R_CRIS_GLOB_DAT   dsofn
+0000227c R_CRIS_GLOB_DAT   dsofn
 
 Contents of section .*
 #...
 Contents of section \.rela\.got:
- 01f8 bc220000 0a0c0000 00000000           .*
+ 01cc 7c220000 0a0b0000 00000000           .*
 Contents of section \.text:
- 0204 5f1d0c00 30096f1d 0c000000 30090000  .*
- 0214 6f0d0c00 0000611a 6f3e6cdf ffff0000  .*
+ 01d8 5f1d0c00 30096f1d 0c000000 30090000  .*
+ 01e8 6f0d0c00 0000611a 6f3e80df ffff0000  .*
 Contents of section \.dynamic:
- 2240 04000000 94000000 05000000 ac010000  .*
- 2250 06000000 dc000000 0a000000 49000000  .*
- 2260 0b000000 10000000 07000000 f8010000  .*
- 2270 08000000 0c000000 09000000 0c000000  .*
- 2280 00000000 00000000 00000000 00000000  .*
- 2290 00000000 00000000 00000000 00000000  .*
- 22a0 00000000 00000000 00000000 00000000  .*
+ 2200 04000000 94000000 05000000 98010000  .*
+ 2210 06000000 d8000000 0a000000 33000000  .*
+ 2220 0b000000 10000000 07000000 cc010000  .*
+ 2230 08000000 0c000000 09000000 0c000000  .*
+ 2240 00000000 00000000 00000000 00000000  .*
+ 2250 00000000 00000000 00000000 00000000  .*
+ 2260 00000000 00000000 00000000 00000000  .*
 Contents of section \.got:
- 22b0 40220000 00000000 00000000 00000000  .*
+ 2270 00220000 00000000 00000000 00000000  .*
Index: ld-cris/gotplt3.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/gotplt3.d,v
retrieving revision 1.2
diff -u -p -r1.2 gotplt3.d
--- ld-cris/gotplt3.d	21 Aug 2004 12:51:41 -0000	1.2
+++ ld-cris/gotplt3.d	2 Nov 2004 04:37:49 -0000
@@ -13,23 +13,23 @@
 
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
-000022bc R_CRIS_GLOB_DAT   dsofn
+0000227c R_CRIS_GLOB_DAT   dsofn
 
 Contents of section .*
 #...
 Contents of section \.rela\.got:
- 01f8 bc220000 0a0c0000 00000000           .*
+ 01cc 7c220000 0a0b0000 00000000           .*
 Contents of section \.text:
- 0204 5f1d0c00 30096f1d 0c000000 30090000  .*
- 0214 6f0d0c00 0000611a 6f3e6cdf ffff0000  .*
- 0224 0f050000                             .*
+ 01d8 5f1d0c00 30096f1d 0c000000 30090000  .*
+ 01e8 6f0d0c00 0000611a 6f3e80df ffff0000  .*
+ 01f8 0f050000                             .*
 Contents of section \.dynamic:
- 2240 04000000 94000000 05000000 ac010000  .*
- 2250 06000000 dc000000 0a000000 49000000  .*
- 2260 0b000000 10000000 07000000 f8010000  .*
- 2270 08000000 0c000000 09000000 0c000000  .*
- 2280 00000000 00000000 00000000 00000000  .*
- 2290 00000000 00000000 00000000 00000000  .*
- 22a0 00000000 00000000 00000000 00000000  .*
+ 2200 04000000 94000000 05000000 98010000  .*
+ 2210 06000000 d8000000 0a000000 33000000  .*
+ 2220 0b000000 10000000 07000000 cc010000  .*
+ 2230 08000000 0c000000 09000000 0c000000  .*
+ 2240 00000000 00000000 00000000 00000000  .*
+ 2250 00000000 00000000 00000000 00000000  .*
+ 2260 00000000 00000000 00000000 00000000  .*
 Contents of section \.got:
- 22b0 40220000 00000000 00000000 00000000  .*
+ 2270 00220000 00000000 00000000 00000000  .*
Index: ld-cris/hiddef1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/hiddef1.d,v
retrieving revision 1.1
diff -u -p -r1.1 hiddef1.d
--- ld-cris/hiddef1.d	7 Sep 2004 18:32:26 -0000	1.1
+++ ld-cris/hiddef1.d	2 Nov 2004 04:37:49 -0000
@@ -22,7 +22,7 @@ Relocation section '\.rela\.dyn' at offs
 #...
 [0-9a-f]+  0+c R_CRIS_RELATIVE                              [0-9a-f]+
 #...
-Symbol table '\.dynsym' contains 10 entries:
+Symbol table '\.dynsym' contains 9 entries:
 #...
 Symbol table '\.symtab' contains 21 entries:
 #pass
Index: ld-cris/libdso-2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/libdso-2.d,v
retrieving revision 1.3
diff -u -p -r1.3 libdso-2.d
--- ld-cris/libdso-2.d	21 Aug 2004 12:51:41 -0000	1.3
+++ ld-cris/libdso-2.d	2 Nov 2004 04:37:49 -0000
@@ -60,7 +60,7 @@ Symbol table '\.symtab' contains 23 entr
     15: 0+21a0     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
     16: 0+2238     0 NOTYPE  LOCAL  DEFAULT  ABS __bss_start
     17: 0+2238     0 NOTYPE  LOCAL  DEFAULT  ABS _edata
-    18: 0+2228     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+    18: 0+2228     0 OBJECT  LOCAL  HIDDEN  ABS _GLOBAL_OFFSET_TABLE_
     19: 0+2240     0 NOTYPE  LOCAL  DEFAULT  ABS _end
     20: 0+184     0 FUNC    LOCAL  DEFAULT    7 dsofn
     21: 0+     0 OBJECT  GLOBAL DEFAULT  ABS TST1
Index: ld-cris/locref1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/locref1.d,v
retrieving revision 1.2
diff -u -p -r1.2 locref1.d
--- ld-cris/locref1.d	21 Aug 2004 12:51:41 -0000	1.2
+++ ld-cris/locref1.d	2 Nov 2004 04:37:49 -0000
@@ -14,7 +14,7 @@ SYMBOL TABLE:
 0+80076 g     F \.text	0+2 expfn
 0+820ac g     O \.data	0+ expobj
 #...
-0+820a0 g     O \.got	0+ _GLOBAL_OFFSET_TABLE_
+0+820a0 g     O \.got	0+ \.hidden _GLOBAL_OFFSET_TABLE_
 #...
 Disassembly of section \.text:
 #...
Index: ld-cris/locref2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/locref2.d,v
retrieving revision 1.1
diff -u -p -r1.1 locref2.d
--- ld-cris/locref2.d	18 Jun 2003 04:11:13 -0000	1.1
+++ ld-cris/locref2.d	2 Nov 2004 04:37:49 -0000
@@ -14,7 +14,7 @@ SYMBOL TABLE:
 0+  w      \*UND\*	0+ expfn
 0+  w      \*UND\*	0+ expobj
 #...
-0+820a0 g     O \.got	0+ _GLOBAL_OFFSET_TABLE_
+0+820a0 g     O \.got	0+ \.hidden _GLOBAL_OFFSET_TABLE_
 #...
 Disassembly of section \.text:
 #...
Index: ld-cris/weakref2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/weakref2.d,v
retrieving revision 1.1
diff -u -p -r1.1 weakref2.d
--- ld-cris/weakref2.d	7 Nov 2002 13:25:48 -0000	1.1
+++ ld-cris/weakref2.d	2 Nov 2004 04:37:49 -0000
@@ -7,4 +7,4 @@
 
 .*:     file format elf32-cris
 Contents of section \.got:
- 82248 e0210800 00000000 00000000 00000000  .*
+ 82208 a0210800 00000000 00000000 00000000  .*
Index: ld-i386/tlsbin.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsbin.rd,v
retrieving revision 1.3
diff -u -p -r1.3 tlsbin.rd
--- ld-i386/tlsbin.rd	22 Sep 2004 07:24:13 -0000	1.3
+++ ld-i386/tlsbin.rd	2 Nov 2004 04:37:49 -0000
@@ -66,13 +66,13 @@ Relocation section '.rel.dyn' at offset 
 0+804a114  0000060e R_386_TLS_TPOFF +0+ +sG4
 0+804a118  00000825 R_386_TLS_TPOFF32 0+ +sG6
 0+804a11c  00000925 R_386_TLS_TPOFF32 0+ +sG1
-0+804a120  00000d0e R_386_TLS_TPOFF +0+ +sG8
+0+804a120  00000c0e R_386_TLS_TPOFF +0+ +sG8
 
-Relocation section '.rel.plt' at offset 0x30c contains 1 entries:
+Relocation section '.rel.plt' at offset 0x[0-9a-f]+ contains 1 entries:
  Offset +Info +Type +Sym.Value  Sym. Name
-0+804a130  00000e07 R_386_JUMP_SLOT +[0-9a-f]+ +___tls_get_addr
+0+804a130  00000d07 R_386_JUMP_SLOT +[0-9a-f]+ +___tls_get_addr
 
-Symbol table '.dynsym' contains 15 entries:
+Symbol table '.dynsym' contains 14 entries:
  +Num: +Value  Size Type +Bind +Vis +Ndx Name
  +[0-9]+: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND *
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG3
@@ -85,7 +85,6 @@ Symbol table '.dynsym' contains 15 entri
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG6
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG1
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG8
  +[0-9]+: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT  UND ___tls_get_addr
@@ -158,7 +157,7 @@ Symbol table '.symtab' contains 75 entri
  +[0-9]+: 00000014 +0 TLS +GLOBAL DEFAULT +9 sg6
  +[0-9]+: 00000018 +0 TLS +GLOBAL DEFAULT +9 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL HIDDEN   13 _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 00000044 +0 TLS +GLOBAL HIDDEN +9 sh2
  +[0-9]+: 00000054 +0 TLS +GLOBAL HIDDEN +9 sh6
Index: ld-i386/tlsnopic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsnopic.rd,v
retrieving revision 1.4
diff -u -p -r1.4 tlsnopic.rd
--- ld-i386/tlsnopic.rd	22 Sep 2004 07:24:13 -0000	1.4
+++ ld-i386/tlsnopic.rd	2 Nov 2004 04:37:49 -0000
@@ -72,7 +72,7 @@ Relocation section '.rel.dyn' at offset 
 0+208c  0+d0e R_386_TLS_TPOFF   0+   sg2
 
 
-Symbol table '.dynsym' contains 17 entries:
+Symbol table '.dynsym' contains 16 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 +5 *
@@ -89,7 +89,6 @@ Symbol table '.dynsym' contains 17 entri
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sg2
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: 0+2098 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
 
 Symbol table '.symtab' contains 36 entries:
@@ -118,6 +117,7 @@ Symbol table '.symtab' contains 36 entri
  +[0-9]+: 0+1c +0 TLS +LOCAL  HIDDEN +6 sh3
  +[0-9]+: 0+20 +0 TLS +LOCAL  HIDDEN +6 sh4
  +[0-9]+: 0+14 +0 TLS +LOCAL  HIDDEN +6 sh1
+ +[0-9]+: 0+2098 +0 OBJECT  LOCAL  HIDDEN  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: 0+18 +0 TLS +LOCAL  HIDDEN +6 sh2
  +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sg3
@@ -128,5 +128,4 @@ Symbol table '.symtab' contains 36 entri
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sg2
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: 0+2098 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
Index: ld-i386/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlspic.rd,v
retrieving revision 1.3
diff -u -p -r1.3 tlspic.rd
--- ld-i386/tlspic.rd	22 Sep 2004 07:24:13 -0000	1.3
+++ ld-i386/tlspic.rd	2 Nov 2004 04:37:49 -0000
@@ -81,9 +81,9 @@ Relocation section '.rel.dyn' at offset 
 
 Relocation section '.rel.plt' at offset 0x[0-9a-f]+ contains 1 entries:
  Offset     Info    Type            Sym.Value  Sym. Name
-[0-9a-f]+  0+1407 R_386_JUMP_SLOT   0+   ___tls_get_addr
+[0-9a-f]+  0+1307 R_386_JUMP_SLOT   0+   ___tls_get_addr
 
-Symbol table '.dynsym' contains 21 entries:
+Symbol table '.dynsym' contains 20 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 +7 *
@@ -103,7 +103,6 @@ Symbol table '.dynsym' contains 21 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND ___tls_get_addr
 
@@ -149,6 +148,7 @@ Symbol table '.symtab' contains 57 entri
  +[0-9]+: 0+74 +0 TLS +LOCAL  HIDDEN +9 sH6
  +[0-9]+: 0+7c +0 TLS +LOCAL  HIDDEN +9 sH8
  +[0-9]+: 0+40 +0 TLS +LOCAL  HIDDEN +8 sh1
+ +[0-9]+: [0-9a-f]+ +0 OBJECT  LOCAL  HIDDEN  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: 0+44 +0 TLS +LOCAL  HIDDEN +8 sh2
  +[0-9]+: 0+54 +0 TLS +LOCAL  HIDDEN +8 sh6
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8
@@ -163,6 +163,5 @@ Symbol table '.symtab' contains 57 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND ___tls_get_addr
Index: ld-ia64/tlsbin.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-ia64/tlsbin.dd,v
retrieving revision 1.3
diff -u -p -r1.3 tlsbin.dd
--- ld-ia64/tlsbin.dd	30 Sep 2003 18:03:54 -0000	1.3
+++ ld-ia64/tlsbin.dd	2 Nov 2004 04:37:49 -0000
@@ -18,25 +18,25 @@ Disassembly of section .text:
 40+101c:	81 0a 00 90[ 	]+addl r15=40,r1;;
 40+1020:	19 18 01 1c 18 10[ 	]+\[MMB\][ 	]+ld8 r35=\[r14\]
 40+1026:	40 02 3c 30 20 00[ 	]+ld8 r36=\[r15\]
-40+102c:	e8 f3 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
+40+102c:	c8 f3 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
 40+1030:	0d 70 c0 02 00 24[ 	]+\[MFI\][ 	]+addl r14=48,r1
 40+1036:	00 00 00 02 00 e0[ 	]+nop.f 0x0
 40+103c:	01 0c 00 90[ 	]+addl r15=64,r1;;
 40+1040:	19 18 01 1c 18 10[ 	]+\[MMB\][ 	]+ld8 r35=\[r14\]
 40+1046:	40 02 3c 30 20 00[ 	]+ld8 r36=\[r15\]
-40+104c:	c8 f3 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
+40+104c:	a8 f3 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
 40+1050:	0d 70 c0 02 00 24[ 	]+\[MFI\][ 	]+addl r14=48,r1
 40+1056:	00 00 00 02 00 80[ 	]+nop.f 0x0
 40+105c:	14 02 00 90[ 	]+mov r36=33;;
 40+1060:	1d 18 01 1c 18 10[ 	]+\[MFB\][ 	]+ld8 r35=\[r14\]
 40+1066:	00 00 00 02 00 00[ 	]+nop.f 0x0
-40+106c:	a8 f3 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
+40+106c:	88 f3 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
 40+1070:	0d 70 c0 02 00 24[ 	]+\[MFI\][ 	]+addl r14=48,r1
 40+1076:	00 00 00 02 00 80[ 	]+nop.f 0x0
 40+107c:	04 00 00 84[ 	]+mov r36=r0;;
 40+1080:	1d 18 01 1c 18 10[ 	]+\[MFB\][ 	]+ld8 r35=\[r14\]
 40+1086:	00 00 00 02 00 00[ 	]+nop.f 0x0
-40+108c:	88 f3 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
+40+108c:	68 f3 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
 40+1090:	0b 10 00 10 00 21[ 	]+\[MMI\][ 	]+mov r2=r8;;
 40+1096:	e0 00 0a 00 48 e0[ 	]+addl r14=64,r2
 40+109c:	61 14 00 90[ 	]+addl r15=70,r2;;
Index: ld-ia64/tlsbin.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-ia64/tlsbin.rd,v
retrieving revision 1.4
diff -u -p -r1.4 tlsbin.rd
--- ld-ia64/tlsbin.rd	11 May 2004 17:08:36 -0000	1.4
+++ ld-ia64/tlsbin.rd	2 Nov 2004 04:37:49 -0000
@@ -59,7 +59,7 @@ Relocation section '.rela.IA_64.pltoff' 
  +Offset +Info +Type +Symbol's Value  Symbol's Name \+ Addend
 60+2050  0+300000081 R_IA64_IPLTLSB +0+ __tls_get_addr \+ 0
 
-Symbol table '.dynsym' contains 9 entries:
+Symbol table '.dynsym' contains 8 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
  +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND *
  +1: 60+11d0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
@@ -68,8 +68,7 @@ Symbol table '.dynsym' contains 9 entrie
  +4: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
  +5: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1
  +6: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +7: 60+2000 +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
- +8: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
+ +7: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
 
 Symbol table '.symtab' contains 72 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
@@ -138,7 +137,7 @@ Symbol table '.symtab' contains 72 entri
  +62: 0+14 +0 TLS +GLOBAL DEFAULT +11 sg6
  +63: 0+18 +0 TLS +GLOBAL DEFAULT +11 sg7
  +64: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +65: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
+ +65: [0-9a-f]+ +0 OBJECT +GLOBAL HIDDEN +15 _GLOBAL_OFFSET_TABLE_
  +66: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
  +67: 0+44 +0 TLS +GLOBAL HIDDEN +11 sh2
  +68: 0+54 +0 TLS +GLOBAL HIDDEN +11 sh6
Index: ld-ia64/tlspic.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-ia64/tlspic.dd,v
retrieving revision 1.4
diff -u -p -r1.4 tlspic.dd
--- ld-ia64/tlspic.dd	11 May 2004 17:08:36 -0000	1.4
+++ ld-ia64/tlspic.dd	2 Nov 2004 04:37:49 -0000
@@ -18,25 +18,25 @@ Disassembly of section .text:
  +101c:	01 0a 00 90[ 	]+addl r15=32,r1;;
  +1020:	19 18 01 1c 18 10[ 	]+\[MMB\] +ld8 r35=\[r14\]
  +1026:	40 02 3c 30 20 00[ 	]+ld8 r36=\[r15\]
- +102c:	88 f5 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
+ +102c:	68 f5 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
  +1030:	0d 70 c0 02 00 24[ 	]+\[MFI\] +addl r14=48,r1
  +1036:	00 00 00 02 00 e0[ 	]+nop.f 0x0
  +103c:	01 0c 00 90[ 	]+addl r15=64,r1;;
  +1040:	19 18 01 1c 18 10[ 	]+\[MMB\] +ld8 r35=\[r14\]
  +1046:	40 02 3c 30 20 00[ 	]+ld8 r36=\[r15\]
- +104c:	68 f5 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
+ +104c:	48 f5 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
  +1050:	0d 70 c0 02 00 24[ 	]+\[MFI\] +addl r14=48,r1
  +1056:	00 00 00 02 00 80[ 	]+nop.f 0x0
  +105c:	14 02 00 90[ 	]+mov r36=33;;
  +1060:	1d 18 01 1c 18 10[ 	]+\[MFB\] +ld8 r35=\[r14\]
  +1066:	00 00 00 02 00 00[ 	]+nop.f 0x0
- +106c:	48 f5 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
+ +106c:	28 f5 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
  +1070:	0d 70 c0 02 00 24[ 	]+\[MFI\] +addl r14=48,r1
  +1076:	00 00 00 02 00 80[ 	]+nop.f 0x0
  +107c:	04 00 00 84[ 	]+mov r36=r0;;
  +1080:	1d 18 01 1c 18 10[ 	]+\[MFB\] +ld8 r35=\[r14\]
  +1086:	00 00 00 02 00 00[ 	]+nop.f 0x0
- +108c:	28 f5 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
+ +108c:	08 f5 ff 58[ 	]+br.call.sptk.many b0=[0-9a-f]+ <.*>;;
  +1090:	0b 10 00 10 00 21[ 	]+\[MMI\] +mov r2=r8;;
  +1096:	e0 00 0a 00 48 e0[ 	]+addl r14=64,r2
  +109c:	21 16 00 90[ 	]+addl r15=98,r2;;
Index: ld-ia64/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-ia64/tlspic.rd,v
retrieving revision 1.5
diff -u -p -r1.5 tlspic.rd
--- ld-ia64/tlspic.rd	11 May 2004 17:08:36 -0000	1.5
+++ ld-ia64/tlspic.rd	2 Nov 2004 04:37:49 -0000
@@ -59,7 +59,7 @@ Relocation section '.rela.IA_64.pltoff' 
  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
 0+[0-9a-f]+ +0+e00000081 R_IA64_IPLTLSB +0+ __tls_get_addr \+ 0
 
-Symbol table '.dynsym' contains 24 entries:
+Symbol table '.dynsym' contains 23 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 +7 *
@@ -83,7 +83,6 @@ Symbol table '.dynsym' contains 24 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +10 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +10 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +[0-9]+: 0+12000 +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
 
 Symbol table '.symtab' contains 60 entries:
@@ -131,6 +130,7 @@ Symbol table '.symtab' contains 60 entri
  +[0-9]+: 0+74 +0 TLS +LOCAL +HIDDEN +11 sH6
  +[0-9]+: 0+7c +0 TLS +LOCAL +HIDDEN +11 sH8
  +[0-9]+: 0+40 +0 TLS +LOCAL +HIDDEN +10 sh1
+ +[0-9]+: 0+12000 +0 OBJECT +LOCAL +HIDDEN +ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: 0+44 +0 TLS +LOCAL +HIDDEN +10 sh2
  +[0-9]+: 0+54 +0 TLS +LOCAL +HIDDEN +10 sh6
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +10 sg8
@@ -146,5 +146,4 @@ Symbol table '.symtab' contains 60 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +10 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +10 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +[0-9]+: 0+12000 +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
Index: ld-powerpc/tlsexe32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe32.d,v
retrieving revision 1.5
diff -u -p -r1.5 tlsexe32.d
--- ld-powerpc/tlsexe32.d	24 Apr 2004 12:41:02 -0000	1.5
+++ ld-powerpc/tlsexe32.d	2 Nov 2004 04:37:49 -0000
@@ -8,38 +8,39 @@
 
 Disassembly of section \.text:
 
-0180028c <_start>:
- 180028c:	80 7f 00 0c 	lwz     r3,12\(r31\)
- 1800290:	7c 63 12 14 	add     r3,r3,r2
- 1800294:	38 7f 00 10 	addi    r3,r31,16
- 1800298:	48 01 01 85 	bl      181041c .*
- 180029c:	3c 62 00 00 	addis   r3,r2,0
- 18002a0:	38 63 90 1c 	addi    r3,r3,-28644
+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 10 00 	addi    r3,r3,4096
- 18002ac:	39 23 80 20 	addi    r9,r3,-32736
- 18002b0:	3d 23 00 00 	addis   r9,r3,0
- 18002b4:	81 49 80 24 	lwz     r10,-32732\(r9\)
- 18002b8:	3d 22 00 00 	addis   r9,r2,0
- 18002bc:	a1 49 90 2c 	lhz     r10,-28628\(r9\)
- 18002c0:	89 42 90 30 	lbz     r10,-28624\(r2\)
- 18002c4:	3d 22 00 00 	addis   r9,r2,0
- 18002c8:	99 49 90 34 	stb     r10,-28620\(r9\)
- 18002cc:	3c 62 00 00 	addis   r3,r2,0
- 18002d0:	38 63 90 00 	addi    r3,r3,-28672
- 18002d4:	3c 62 00 00 	addis   r3,r2,0
- 18002d8:	38 63 10 00 	addi    r3,r3,4096
- 18002dc:	91 43 80 04 	stw     r10,-32764\(r3\)
- 18002e0:	3d 23 00 00 	addis   r9,r3,0
- 18002e4:	91 49 80 08 	stw     r10,-32760\(r9\)
- 18002e8:	3d 22 00 00 	addis   r9,r2,0
- 18002ec:	b1 49 90 2c 	sth     r10,-28628\(r9\)
- 18002f0:	a1 42 90 14 	lhz     r10,-28652\(r2\)
- 18002f4:	3d 22 00 00 	addis   r9,r2,0
- 18002f8:	a9 49 90 18 	lha     r10,-28648\(r9\)
+ 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\)
 Disassembly of section \.got:
 
-018103b8 <\.got>:
- 18103b8:	4e 80 00 21 	blrl
- 18103bc:	01 81 03 18 	\.long 0x1810318
+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     .*
 	\.\.\.
Index: ld-powerpc/tlsexe32.g
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe32.g,v
retrieving revision 1.1
diff -u -p -r1.1 tlsexe32.g
--- ld-powerpc/tlsexe32.g	18 Feb 2003 06:11:32 -0000	1.1
+++ ld-powerpc/tlsexe32.g	2 Nov 2004 04:37:49 -0000
@@ -7,5 +7,5 @@
 .*: +file format elf32-powerpc
 
 Contents of section \.got:
- 18103b8 4e800021 01810318 00000000 00000000  .*
- 18103c8 00000000 00000000 00000000           .*
+ 1810390 4e800021 018102f0 00000000 00000000  .*
+ 18103a0 00000000 00000000 00000000           .*
Index: ld-powerpc/tlsexe32.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe32.r,v
retrieving revision 1.4
diff -u -p -r1.4 tlsexe32.r
--- ld-powerpc/tlsexe32.r	22 Sep 2004 07:24:13 -0000	1.4
+++ ld-powerpc/tlsexe32.r	2 Nov 2004 04:37:50 -0000
@@ -16,15 +16,15 @@ Section Headers:
  +\[ 4\] \.dynstr +.*
  +\[ 5\] \.rela\.dyn +.*
  +\[ 6\] \.rela\.plt +.*
- +\[ 7\] \.text +PROGBITS +0180028c 00028c 000070 00 +AX +0 +0 +1
+ +\[ 7\] \.text +PROGBITS +01800264 000264 000070 00 +AX +0 +0 +1
  +\[ 8\] \.sdata2 +PROGBITS +.*
- +\[ 9\] \.tdata +PROGBITS +018102fc 0002fc 00001c 00 WAT +0 +0 +4
- +\[10\] \.tbss +NOBITS +01810318 000318 00001c 00 WAT +0 +0 +4
- +\[11\] \.dynamic +DYNAMIC +01810318 000318 0000a0 08 +WA +4 +0 +4
- +\[12\] \.data +PROGBITS +018103b8 0003b8 000000 00 +WA +0 +0 +1
- +\[13\] \.got +PROGBITS +018103b8 0003b8 00001c 04 WAX +0 +0 +4
- +\[14\] \.sdata +PROGBITS +018103d4 0003d4 000000 00 +WA +0 +0 +4
- +\[15\] \.sbss +NOBITS +018103d4 0003d4 000000 00 +WA +0 +0 +1
+ +\[ 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
  +\[16\] \.plt +NOBITS +.*
  +\[17\] \.bss +NOBITS +.*
  +\[18\] \.shstrtab +STRTAB +.*
@@ -33,7 +33,7 @@ Section Headers:
 #...
 
 Elf file type is EXEC \(Executable file\)
-Entry point 0x180028c
+Entry point 0x1800264
 There are 6 program headers, starting at offset 52
 
 Program Headers:
@@ -41,10 +41,10 @@ Program Headers:
  +PHDR +0x000034 0x01800034 0x01800034 0x000e0 0x000e0 R E 0x4
  +INTERP +0x000114 0x01800114 0x01800114 0x00011 0x00011 R +0x1
  +\[Requesting program interpreter: .*\]
- +LOAD +0x000000 0x01800000 0x01800000 0x002fc 0x002fc R E 0x10000
- +LOAD +0x0002fc 0x018102fc 0x018102fc 0x000d8 0x0012c RWE 0x10000
- +DYNAMIC +0x000318 0x01810318 0x01810318 0x000a0 0x000a0 RW +0x4
- +TLS +0x0002fc 0x018102fc 0x018102fc 0x0001c 0x00038 R +0x4
+ +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
 
  Section to Segment mapping:
  +Segment Sections\.\.\.
@@ -55,27 +55,26 @@ Program Headers:
  +04 +\.dynamic 
  +05 +\.tdata \.tbss 
 
-Relocation section '\.rela\.dyn' at offset 0x268 contains 2 entries:
+Relocation section '\.rela\.dyn' at offset 0x240 contains 2 entries:
  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
-018103c8 +00000249 R_PPC_TPREL32 +00000000 +gd \+ 0
-018103cc +00000444 R_PPC_DTPMOD32 +00000000 +ld \+ 0
+018103a0 +00000249 R_PPC_TPREL32 +00000000 +gd \+ 0
+018103a4 +00000444 R_PPC_DTPMOD32 +00000000 +ld \+ 0
 
-Relocation section '\.rela\.plt' at offset 0x280 contains 1 entries:
+Relocation section '\.rela\.plt' at offset 0x258 contains 1 entries:
  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
-0181041c +00000315 R_PPC_JMP_SLOT +0181041c +__tls_get_addr \+ 0
+018103f4 +00000315 R_PPC_JMP_SLOT +018103f4 +__tls_get_addr \+ 0
 
-Symbol table '\.dynsym' contains 10 entries:
+Symbol table '\.dynsym' contains 9 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
  +0: 00000000 +0 NOTYPE +LOCAL +DEFAULT +UND 
- +1: 01810318 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +1: 018102f0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
  +2: 00000000 +0 TLS +GLOBAL DEFAULT +UND gd
- +3: 0181041c +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr
+ +3: 018103f4 +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr
  +4: 00000000 +0 TLS +GLOBAL DEFAULT +UND ld
- +5: 01810428 +0 NOTYPE +GLOBAL DEFAULT +ABS __end
- +6: 018103d4 +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
- +7: 018103d4 +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +8: 018103bc +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
- +9: 01810428 +0 NOTYPE +GLOBAL DEFAULT +ABS _end
+ +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
 
 Symbol table '\.symtab' contains 47 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
@@ -86,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: 0180028c +0 SECTION LOCAL +DEFAULT +7 
+ +7: 01800264 +0 SECTION LOCAL +DEFAULT +7 
  +8: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +8 
- +9: 018102fc +0 SECTION LOCAL +DEFAULT +9 
- +10: 01810318 +0 SECTION LOCAL +DEFAULT +10 
- +11: 01810318 +0 SECTION LOCAL +DEFAULT +11 
- +12: 018103b8 +0 SECTION LOCAL +DEFAULT +12 
- +13: 018103b8 +0 SECTION LOCAL +DEFAULT +13 
- +14: 018103d4 +0 SECTION LOCAL +DEFAULT +14 
- +15: 018103d4 +0 SECTION LOCAL +DEFAULT +15 
+ +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 
  +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 
@@ -107,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: 01810318 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +28: 018102f0 +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
@@ -121,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: 018103bc +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
+ +42: 01810394 +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-powerpc/tlsexe32.t
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe32.t,v
retrieving revision 1.1
diff -u -p -r1.1 tlsexe32.t
--- ld-powerpc/tlsexe32.t	18 Feb 2003 06:11:32 -0000	1.1
+++ ld-powerpc/tlsexe32.t	2 Nov 2004 04:37:50 -0000
@@ -7,5 +7,5 @@
 .*: +file format elf32-powerpc
 
 Contents of section \.tdata:
- 18102fc 12345678 23456789 3456789a 456789ab  .*
- 181030c 56789abc 6789abcd 789abcde           .*
+ 18102d4 12345678 23456789 3456789a 456789ab  .*
+ 18102e4 56789abc 6789abcd 789abcde           .*
Index: ld-powerpc/tlsso32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.d,v
retrieving revision 1.6
diff -u -p -r1.6 tlsso32.d
--- ld-powerpc/tlsso32.d	11 May 2004 17:08:36 -0000	1.6
+++ ld-powerpc/tlsso32.d	2 Nov 2004 04:37:50 -0000
@@ -8,38 +8,38 @@
 
 Disassembly of section \.text:
 
-0+498 <_start>:
- 498:	38 7f 00 1c 	addi    r3,r31,28
- 49c:	48 00 00 01 	bl      49c .*
- 4a0:	38 7f 00 0c 	addi    r3,r31,12
- 4a4:	48 00 00 01 	bl      4a4 .*
- 4a8:	38 7f 00 24 	addi    r3,r31,36
- 4ac:	48 01 01 95 	bl      10640 .*
- 4b0:	38 7f 00 0c 	addi    r3,r31,12
- 4b4:	48 01 01 8d 	bl      10640 .*
- 4b8:	39 23 80 20 	addi    r9,r3,-32736
- 4bc:	3d 23 00 00 	addis   r9,r3,0
- 4c0:	81 49 80 24 	lwz     r10,-32732\(r9\)
- 4c4:	81 3f 00 2c 	lwz     r9,44\(r31\)
- 4c8:	7d 49 12 2e 	lhzx    r10,r9,r2
- 4cc:	89 42 00 00 	lbz     r10,0\(r2\)
- 4d0:	3d 22 00 00 	addis   r9,r2,0
- 4d4:	99 49 00 00 	stb     r10,0\(r9\)
- 4d8:	38 7e 00 14 	addi    r3,r30,20
- 4dc:	48 00 00 01 	bl      4dc .*
- 4e0:	38 7e 00 0c 	addi    r3,r30,12
- 4e4:	48 00 00 01 	bl      4e4 .*
- 4e8:	91 43 80 04 	stw     r10,-32764\(r3\)
- 4ec:	3d 23 00 00 	addis   r9,r3,0
- 4f0:	91 49 80 08 	stw     r10,-32760\(r9\)
- 4f4:	81 3e 00 2c 	lwz     r9,44\(r30\)
- 4f8:	7d 49 13 2e 	sthx    r10,r9,r2
- 4fc:	a1 42 00 00 	lhz     r10,0\(r2\)
- 500:	3d 22 00 00 	addis   r9,r2,0
- 504:	a9 49 00 00 	lha     r10,0\(r9\)
+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\)
 Disassembly of section \.got:
 
-000105c4 <\.got>:
-   105c4:	4e 80 00 21 	blrl
-   105c8:	00 01 05 24 	\.long 0x10524
+00010598 <\.got>:
+   10598:	4e 80 00 21 	blrl
+   1059c:	00 01 04 f8 	\.long 0x104f8
 	\.\.\.
Index: ld-powerpc/tlsso32.g
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.g,v
retrieving revision 1.2
diff -u -p -r1.2 tlsso32.g
--- ld-powerpc/tlsso32.g	11 May 2004 17:08:36 -0000	1.2
+++ ld-powerpc/tlsso32.g	2 Nov 2004 04:37:50 -0000
@@ -7,7 +7,7 @@
 .*: +file format elf32-powerpc
 
 Contents of section \.got:
- 105c4 4e800021 00010524 00000000 00000000  .*
- 105d4 00000000 00000000 00000000 00000000  .*
- 105e4 00000000 00000000 00000000 00000000  .*
- 105f4 00000000                             .*
+ 10598 4e800021 000104f8 00000000 00000000  .*
+ 105a8 00000000 00000000 00000000 00000000  .*
+ 105b8 00000000 00000000 00000000 00000000  .*
+ 105c8 00000000                             .*
Index: ld-powerpc/tlsso32.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.r,v
retrieving revision 1.6
diff -u -p -r1.6 tlsso32.r
--- ld-powerpc/tlsso32.r	1 Oct 2004 02:19:04 -0000	1.6
+++ ld-powerpc/tlsso32.r	2 Nov 2004 04:37:50 -0000
@@ -14,12 +14,12 @@ Section Headers:
  +\[ 3\] \.dynstr +.*
  +\[ 4\] \.rela\.dyn +.*
  +\[ 5\] \.rela\.plt +.*
- +\[ 6\] \.text +PROGBITS +0+498 0+498 0+70 0+ +AX +0 +0 +1
- +\[ 7\] \.tdata +PROGBITS +0+10508 0+508 0+1c 0+ WAT +0 +0 +4
- +\[ 8\] \.tbss +NOBITS +0+10524 0+524 0+1c 0+ WAT +0 +0 +4
- +\[ 9\] \.dynamic +DYNAMIC +0+10524 0+524 0+a0 08 +WA +3 +0 +4
- +\[10\] \.data +PROGBITS +0+105c4 0+5c4 0+ 0+ +WA +0 +0 +1
- +\[11\] \.got +PROGBITS +0+105c4 0+5c4 0+34 04 WAX +0 +0 +4
+ +\[ 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 +.*
@@ -36,10 +36,10 @@ There are 4 program headers.*
 
 Program Headers:
  +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
- +LOAD +0x0+ 0x0+ 0x0+ 0x0+508 0x0+508 R E 0x10000
- +LOAD +0x0+508 0x0+10508 0x0+10508 0x0+f0 0x0+144 RWE 0x10000
- +DYNAMIC +0x0+524 0x0+10524 0x0+10524 0x0+a0 0x0+a0 RW +0x4
- +TLS +0x0+508 0x0+10508 0x0+10508 0x0+1c 0x0+38 R +0x4
+ +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
 
  Section to Segment mapping:
  +Segment Sections\.\.\.
@@ -50,41 +50,41 @@ 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+49c +0+c0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
-0+4a4 +0+c0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
-0+4dc +0+c0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
-0+4e4 +0+c0a R_PPC_REL24 +0+ +__tls_get_addr \+ 0
-0+4ce +0+b45 R_PPC_TPREL16 +0+30 +le0 \+ 0
-0+4d2 +0+e48 R_PPC_TPREL16_HA +0+34 +le1 \+ 0
-0+4d6 +0+e46 R_PPC_TPREL16_LO +0+34 +le1 \+ 0
-0+4fe +0+245 R_PPC_TPREL16 +0+10508 +\.tdata \+ 1051c
-0+502 +0+248 R_PPC_TPREL16_HA +0+10508 +\.tdata \+ 10520
-0+506 +0+246 R_PPC_TPREL16_LO +0+10508 +\.tdata \+ 10520
-0+105d4 +0+44 R_PPC_DTPMOD32 +0+
-0+105dc +0+44 R_PPC_DTPMOD32 +0+
-0+105e0 +0+4e R_PPC_DTPREL32 +0+
-0+105e4 +0+a44 R_PPC_DTPMOD32 +0+ +gd \+ 0
-0+105e8 +0+a4e R_PPC_DTPREL32 +0+ +gd \+ 0
-0+105ec +0+1944 R_PPC_DTPMOD32 +0+1c +gd0 \+ 0
-0+105f0 +0+194e R_PPC_DTPREL32 +0+1c +gd0 \+ 0
-0+105f4 +0+1a49 R_PPC_TPREL32 +0+2c +ie0 \+ 0
+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
 
 Relocation section '\.rela\.plt' at offset 0x[0-9a-f]+ contains 1 entries:
  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
-0+10640 +0+c15 R_PPC_JMP_SLOT +0+ +__tls_get_addr \+ 0
+0+10614 +0+c15 R_PPC_JMP_SLOT +0+ +__tls_get_addr \+ 0
 
-Symbol table '\.dynsym' contains 28 entries:
+Symbol table '\.dynsym' contains 27 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
  +[0-9]+: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND 
- +[0-9]+: 0+498 +0 SECTION LOCAL +DEFAULT +6 
- +[0-9]+: 0+10508 +0 SECTION LOCAL +DEFAULT +7 
- +[0-9]+: 0+10524 +0 SECTION LOCAL +DEFAULT +8 
- +[0-9]+: 0+105c4 +0 SECTION LOCAL +DEFAULT +10 
- +[0-9]+: 0+105f8 +0 SECTION LOCAL +DEFAULT +12 
- +[0-9]+: 0+105f8 +0 SECTION LOCAL +DEFAULT +13 
- +[0-9]+: 0+105f8 +0 SECTION LOCAL +DEFAULT +14 
- +[0-9]+: 0+1064c +0 SECTION LOCAL +DEFAULT +16 
- +[0-9]+: 0+10524 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +[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+ +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
@@ -98,7 +98,6 @@ Symbol table '\.dynsym' contains 28 entr
  +[0-9]+: 0+24 +0 TLS +GLOBAL DEFAULT +8 ld1
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +[0-9]+: 0+105c8 +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 gd0
  +[0-9]+: 0+2c +0 TLS +GLOBAL DEFAULT +8 ie0
@@ -112,17 +111,17 @@ 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+498 +0 SECTION LOCAL +DEFAULT +6 
- +[0-9]+: 0+10508 +0 SECTION LOCAL +DEFAULT +7 
- +[0-9]+: 0+10524 +0 SECTION LOCAL +DEFAULT +8 
+ +[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-9a-f]+ +0 SECTION LOCAL +DEFAULT +9 
- +[0-9]+: 0+105c4 +0 SECTION LOCAL +DEFAULT +10 
+ +[0-9]+: 0+10598 +0 SECTION LOCAL +DEFAULT +10 
  +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +11 
- +[0-9]+: 0+105f8 +0 SECTION LOCAL +DEFAULT +12 
- +[0-9]+: 0+105f8 +0 SECTION LOCAL +DEFAULT +13 
- +[0-9]+: 0+105f8 +0 SECTION LOCAL +DEFAULT +14 
+ +[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+1064c +0 SECTION LOCAL +DEFAULT +16 
+ +[0-9]+: 0+10620 +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 
@@ -133,7 +132,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+10524 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +[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+ +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
@@ -147,7 +147,6 @@ Symbol table '\.symtab' contains 46 entr
  +[0-9]+: 0+24 +0 TLS +GLOBAL DEFAULT +8 ld1
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +[0-9]+: 0+105c8 +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 gd0
  +[0-9]+: 0+2c +0 TLS +GLOBAL DEFAULT +8 ie0
Index: ld-powerpc/tlsso32.t
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.t,v
retrieving revision 1.2
diff -u -p -r1.2 tlsso32.t
--- ld-powerpc/tlsso32.t	11 May 2004 17:08:36 -0000	1.2
+++ ld-powerpc/tlsso32.t	2 Nov 2004 04:37:50 -0000
@@ -7,5 +7,5 @@
 .*: +file format elf32-powerpc
 
 Contents of section \.tdata:
- 10508 12345678 23456789 3456789a 456789ab  .*
- 10518 56789abc 6789abcd 789abcde           .*
+ 104dc 12345678 23456789 3456789a 456789ab  .*
+ 104ec 56789abc 6789abcd 789abcde           .*
Index: ld-s390/tlsbin.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-s390/tlsbin.dd,v
retrieving revision 1.2
diff -u -p -r1.2 tlsbin.dd
--- ld-s390/tlsbin.dd	11 May 2004 17:08:35 -0000	1.2
+++ ld-s390/tlsbin.dd	2 Nov 2004 04:37:50 -0000
@@ -151,7 +151,7 @@ Disassembly of section .text:
   +[0-9a-f]+:	90 6e f0 18       	stm	%r6,%r14,24\(%r15\)
   +[0-9a-f]+:	a7 d5 00 0c       	bras	%r13,[0-9a-f]+ <_start\+0x1c>
 # sG6@indntpoff
-  +[0-9a-f]+:	00 40 15 e4       	.long	0x004015e4
+  +[0-9a-f]+:	00 40 15 a4       	.long	0x004015a4
 # bg6@indntpoff
   +[0-9a-f]+:	ff ff ff d4       	.long	0xffffffd4
 # bl6@indntpoff
Index: ld-s390/tlsbin.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-s390/tlsbin.rd,v
retrieving revision 1.3
diff -u -p -r1.3 tlsbin.rd
--- ld-s390/tlsbin.rd	22 Sep 2004 07:24:14 -0000	1.3
+++ ld-s390/tlsbin.rd	2 Nov 2004 04:37:50 -0000
@@ -18,10 +18,10 @@ Section Headers:
   \[ 6\] .rela.plt +.*
   \[ 7\] .plt +.*
   \[ 8\] .text +PROGBITS +.*
-  \[ 9\] .tdata +PROGBITS +0+4014c0 0+4c0 0+60 00 WAT +0 +0 +32
-  \[10\] .tbss +NOBITS +0+401520 0+520 0+40 00 WAT +0 +0 +1
-  \[11\] .dynamic +DYNAMIC +0+401520 0+520 0+a0 08 +WA +4 +0 +4
-  \[12\] .got +PROGBITS +0+4015c0 0+5c0 0+2c 04 +WA +0 +0 +4
+  \[ 9\] .tdata +PROGBITS +0+401480 0+480 0+60 00 WAT +0 +0 +32
+  \[10\] .tbss +NOBITS +0+4014e0 0+4e0 0+40 00 WAT +0 +0 +1
+  \[11\] .dynamic +DYNAMIC +0+4014e0 0+4e0 0+a0 08 +WA +4 +0 +4
+  \[12\] .got +PROGBITS +0+401580 0+580 0+2c 04 +WA +0 +0 +4
   \[13\] .data +.*
   \[14\] .bss +.*
   \[15\] .shstrtab +.*
@@ -42,9 +42,9 @@ Program Headers:
   INTERP +0x0+f4 0x0+4000f4 0x0+4000f4 0x0+11 0x0+11 R +0x1
 .*Requesting program interpreter.*
   LOAD +0x0+ 0x0+400000 0x0+400000 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x1000
-  LOAD +0x0+4c0 0x0+4014c0 0x0+4014c0 0x0+12c 0x0+12c RW  0x1000
-  DYNAMIC +0x0+520 0x0+401520 0x0+401520 0x0+a0 0x0+a0 RW  0x4
-  TLS +0x0+4c0 0x0+4014c0 0x0+4014c0 0x0+60 0x0+a0 R +0x20
+  LOAD +0x0+480 0x0+401480 0x0+401480 0x0+12c 0x0+12c RW  0x1000
+  DYNAMIC +0x0+4e0 0x0+4014e0 0x0+4014e0 0x0+a0 0x0+a0 RW  0x4
+  TLS +0x0+480 0x0+401480 0x0+401480 0x0+60 0x0+a0 R +0x20
 
  Section to Segment mapping:
   Segment Sections...
@@ -55,7 +55,7 @@ Program Headers:
    04 +.dynamic *
    05 +.tdata .tbss *
 
-Relocation section '.rela.dyn' at offset 0x268 contains 4 entries:
+Relocation section '.rela.dyn' at offset 0x23c contains 4 entries:
  Offset +Info +Type +Sym.Value  Sym. Name \+ Addend
 [0-9a-f]+  0+138 R_390_TLS_TPOFF +0+ +sG3 \+ 0
 [0-9a-f]+  0+338 R_390_TLS_TPOFF +0+ +sG2 \+ 0
@@ -64,9 +64,9 @@ Relocation section '.rela.dyn' at offset
 
 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 1 entries:
  Offset +Info +Type +Sym.Value  Sym. Name \+ Addend
-[0-9a-f]+  0+40b R_390_JMP_SLOT +0+40+2c4 +__tls_get_offset \+ 0
+[0-9a-f]+  0+40b R_390_JMP_SLOT +0+40+298 +__tls_get_offset \+ 0
 
-Symbol table '.dynsym' contains 11 entries:
+Symbol table '.dynsym' contains 10 entries:
  +Num: +Value  Size Type +Bind +Vis +Ndx Name
  +[0-9]+: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND 
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG3
@@ -77,7 +77,6 @@ Symbol table '.dynsym' contains 11 entri
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG6
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG1
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
 
 Symbol table '.symtab' contains 70 entries:
@@ -145,7 +144,7 @@ Symbol table '.symtab' contains 70 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL HIDDEN   12 _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 0+44 +0 TLS +GLOBAL HIDDEN +9 sh2
  +[0-9]+: 0+54 +0 TLS +GLOBAL HIDDEN +9 sh6
Index: ld-s390/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-s390/tlspic.rd,v
retrieving revision 1.3
diff -u -p -r1.3 tlspic.rd
--- ld-s390/tlspic.rd	22 Sep 2004 07:24:14 -0000	1.3
+++ ld-s390/tlspic.rd	2 Nov 2004 04:37:50 -0000
@@ -17,10 +17,10 @@ Section Headers:
   \[ 5\] .rela.plt +.*
   \[ 6\] .plt +.*
   \[ 7\] .text +PROGBITS +.*
-  \[ 8\] .tdata +PROGBITS +0+1600 0+600 0+60 00 WAT  0 +0 32
-  \[ 9\] .tbss +NOBITS +0+1660 0+660 0+20 00 WAT  0 +0  1
-  \[10\] .dynamic +DYNAMIC +0+1660 0+660 0+98 08  WA  3 +0  4
-  \[11\] .got +PROGBITS +0+16f8 0+6f8 0+58 04  WA  0 +0  4
+  \[ 8\] .tdata +PROGBITS +0+15c0 0+5c0 0+60 00 WAT  0 +0 32
+  \[ 9\] .tbss +NOBITS +0+1620 0+620 0+20 00 WAT  0 +0  1
+  \[10\] .dynamic +DYNAMIC +0+1620 0+620 0+98 08  WA  3 +0  4
+  \[11\] .got +PROGBITS +0+16b8 0+6b8 0+58 04  WA  0 +0  4
   \[12\] .data +.*
   \[13\] .bss +.*
   \[14\] .shstrtab +.*
@@ -38,9 +38,9 @@ There are 4 program headers, starting at
 Program Headers:
   Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz  Flg Align
   LOAD +0x0+ 0x0+ 0x0+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x1000
-  LOAD +0x0+600 0x0+1600 0x0+1600 0x00150 0x00150 RW  0x1000
-  DYNAMIC +0x0+660 0x0+1660 0x0+1660 0x0+98 0x0+98 RW  0x4
-  TLS +0x0+600 0x0+1600 0x0+1600 0x0+60 0x0+80 R +0x20
+  LOAD +0x0+5c0 0x0+15c0 0x0+15c0 0x00150 0x00150 RW  0x1000
+  DYNAMIC +0x0+620 0x0+1620 0x0+1620 0x0+98 0x0+98 RW  0x4
+  TLS +0x0+5c0 0x0+15c0 0x0+15c0 0x0+60 0x0+80 R +0x20
 
  Section to Segment mapping:
   Segment Sections...
@@ -70,7 +70,7 @@ Relocation section '.rela.plt' at offset
  Offset +Info +Type +Sym.Value  Sym. Name \+ Addend
 [0-9a-f]+  0+b0b R_390_JMP_SLOT +0+ +__tls_get_offset \+ 0
 
-Symbol table '.dynsym' contains 21 entries:
+Symbol table '.dynsym' contains 20 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 +7 
@@ -91,7 +91,6 @@ Symbol table '.dynsym' contains 21 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
 
 Symbol table '.symtab' contains 56 entries:
@@ -135,6 +134,7 @@ Symbol table '.symtab' contains 56 entri
  +[0-9]+: 0+74 +0 TLS +LOCAL  HIDDEN +9 sH6
  +[0-9]+: 0+7c +0 TLS +LOCAL  HIDDEN +9 sH8
  +[0-9]+: 0+40 +0 TLS +LOCAL  HIDDEN +8 sh1
+ +[0-9]+: [0-9a-f]+ +0 OBJECT  LOCAL  HIDDEN  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: 0+44 +0 TLS +LOCAL  HIDDEN +8 sh2
  +[0-9]+: 0+54 +0 TLS +LOCAL  HIDDEN +8 sh6
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8
@@ -150,5 +150,4 @@ Symbol table '.symtab' contains 56 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
Index: ld-sparc/tlssunbin32.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sparc/tlssunbin32.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlssunbin32.rd
--- ld-sparc/tlssunbin32.rd	1 Jul 2004 16:24:51 -0000	1.2
+++ ld-sparc/tlssunbin32.rd	2 Nov 2004 04:37:50 -0000
@@ -98,37 +98,37 @@ Symbol table '.symtab' contains 70 entri
  +30: 0+1094 +0 TLS +LOCAL +DEFAULT +8 bl6
  +31: 0+1098 +0 TLS +LOCAL +DEFAULT +8 bl7
  +32: 0+109c +0 TLS +LOCAL +DEFAULT +8 bl8
- +33: 0+23278 +0 OBJECT +LOCAL +HIDDEN +10 _GLOBAL_OFFSET_TABLE_
- +34: 0+101c +0 TLS +GLOBAL DEFAULT +7 sg8
- +35: 0+107c +0 TLS +GLOBAL DEFAULT +8 bg8
- +36: 0+1074 +0 TLS +GLOBAL DEFAULT +8 bg6
- +37: 0+ +0 TLS +GLOBAL DEFAULT +UND sG5
- +38: 0+1068 +0 TLS +GLOBAL DEFAULT +8 bg3
- +39: 0+231f8 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
- +40: 0+1008 +0 TLS +GLOBAL DEFAULT +7 sg3
- +41: 0+1048 +0 TLS +GLOBAL HIDDEN +7 sh3
- +42: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2
- +43: 0+100c +0 TLS +GLOBAL DEFAULT +7 sg4
- +44: 0+1010 +0 TLS +GLOBAL DEFAULT +7 sg5
- +45: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
- +46: 0+1070 +0 TLS +GLOBAL DEFAULT +8 bg5
- +47: 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr
- +48: 0+1058 +0 TLS +GLOBAL HIDDEN +7 sh7
- +49: 0+105c +0 TLS +GLOBAL HIDDEN +7 sh8
- +50: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1
- +51: 0+12000 +0 FUNC +GLOBAL DEFAULT +6 _start
- +52: 0+104c +0 TLS +GLOBAL HIDDEN +7 sh4
- +53: 0+1078 +0 TLS +GLOBAL DEFAULT +8 bg7
- +54: 0+1050 +0 TLS +GLOBAL HIDDEN +7 sh5
- +55: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
- +56: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6
- +57: 0+11008 +0 FUNC +GLOBAL DEFAULT +6 fn2
- +58: 0+1004 +0 TLS +GLOBAL DEFAULT +7 sg2
- +59: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1
- +60: 0+1040 +0 TLS +GLOBAL HIDDEN +7 sh1
- +61: 0+1014 +0 TLS +GLOBAL DEFAULT +7 sg6
- +62: 0+1018 +0 TLS +GLOBAL DEFAULT +7 sg7
- +63: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
+ +33: 0+101c +0 TLS +GLOBAL DEFAULT +7 sg8
+ +34: 0+107c +0 TLS +GLOBAL DEFAULT +8 bg8
+ +35: 0+1074 +0 TLS +GLOBAL DEFAULT +8 bg6
+ +36: 0+ +0 TLS +GLOBAL DEFAULT +UND sG5
+ +37: 0+1068 +0 TLS +GLOBAL DEFAULT +8 bg3
+ +38: 0+231f8 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +39: 0+1008 +0 TLS +GLOBAL DEFAULT +7 sg3
+ +40: 0+1048 +0 TLS +GLOBAL HIDDEN +7 sh3
+ +41: 0+ +0 TLS +GLOBAL DEFAULT +UND sG2
+ +42: 0+100c +0 TLS +GLOBAL DEFAULT +7 sg4
+ +43: 0+1010 +0 TLS +GLOBAL DEFAULT +7 sg5
+ +44: [0-9a-f]+ +0 OBJECT +GLOBAL DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
+ +45: 0+1070 +0 TLS +GLOBAL DEFAULT +8 bg5
+ +46: 0+ +0 FUNC +GLOBAL DEFAULT +UND __tls_get_addr
+ +47: 0+1058 +0 TLS +GLOBAL HIDDEN +7 sh7
+ +48: 0+105c +0 TLS +GLOBAL HIDDEN +7 sh8
+ +49: 0+ +0 TLS +GLOBAL DEFAULT +7 sg1
+ +50: 0+12000 +0 FUNC +GLOBAL DEFAULT +6 _start
+ +51: 0+104c +0 TLS +GLOBAL HIDDEN +7 sh4
+ +52: 0+1078 +0 TLS +GLOBAL DEFAULT +8 bg7
+ +53: 0+1050 +0 TLS +GLOBAL HIDDEN +7 sh5
+ +54: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
+ +55: 0+ +0 TLS +GLOBAL DEFAULT +UND sG6
+ +56: 0+11008 +0 FUNC +GLOBAL DEFAULT +6 fn2
+ +57: 0+1004 +0 TLS +GLOBAL DEFAULT +7 sg2
+ +58: 0+ +0 TLS +GLOBAL DEFAULT +UND sG1
+ +59: 0+1040 +0 TLS +GLOBAL HIDDEN +7 sh1
+ +60: 0+1014 +0 TLS +GLOBAL DEFAULT +7 sg6
+ +61: 0+1018 +0 TLS +GLOBAL DEFAULT +7 sg7
+ +62: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
+ +63: 0+23278 +0 OBJECT +GLOBAL +HIDDEN +10 _GLOBAL_OFFSET_TABLE_
  +64: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
  +65: 0+1044 +0 TLS +GLOBAL HIDDEN +7 sh2
  +66: 0+1054 +0 TLS +GLOBAL HIDDEN +7 sh6
Index: ld-sparc/tlssunpic32.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sparc/tlssunpic32.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlssunpic32.rd
--- ld-sparc/tlssunpic32.rd	1 Jul 2004 16:24:51 -0000	1.2
+++ ld-sparc/tlssunpic32.rd	2 Nov 2004 04:37:50 -0000
@@ -61,7 +61,7 @@ Relocation section '.rela.plt' at offset
  Offset +Info +Type +Sym. Value +Symbol's Name \+ Addend
 0+12174 +0+c15 R_SPARC_JMP_SLOT +0+ +__tls_get_addr \+ 0
 
-Symbol table '.dynsym' contains 22 entries:
+Symbol table '.dynsym' contains 21 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
  +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND *
  +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL +DEFAULT +6 *
@@ -83,7 +83,6 @@ Symbol table '.dynsym' contains 22 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +7 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +7 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +[0-9]+: 0+120f8 +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
 
 Symbol table '.symtab' contains 57 entries:
@@ -127,6 +126,7 @@ Symbol table '.symtab' contains 57 entri
  +[0-9]+: 0+74 +0 TLS +LOCAL +HIDDEN +8 sH6
  +[0-9]+: 0+7c +0 TLS +LOCAL +HIDDEN +8 sH8
  +[0-9]+: 0+40 +0 TLS +LOCAL +HIDDEN +7 sh1
+ +[0-9]+: 0+120f8 +0 OBJECT +LOCAL  HIDDEN +ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: 0+44 +0 TLS +LOCAL +HIDDEN +7 sh2
  +[0-9]+: 0+54 +0 TLS +LOCAL +HIDDEN +7 sh6
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +7 sg8
@@ -143,5 +143,4 @@ Symbol table '.symtab' contains 57 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +7 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +7 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +[0-9]+: 0+120f8 +0 OBJECT +GLOBAL DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE +GLOBAL DEFAULT +ABS _end
Index: ld-x86-64/tlsbin.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-x86-64/tlsbin.rd,v
retrieving revision 1.3
diff -u -p -r1.3 tlsbin.rd
--- ld-x86-64/tlsbin.rd	22 Sep 2004 07:24:14 -0000	1.3
+++ ld-x86-64/tlsbin.rd	2 Nov 2004 04:37:50 -0000
@@ -56,18 +56,18 @@ Program Headers:
    04 +.dynamic *
    05 +.tdata .tbss *
 
-Relocation section '.rela.dyn' at offset 0x358 contains 4 entries:
+Relocation section '.rela.dyn' at offset 0x328 contains 4 entries:
  +Offset +Info +Type +Symbol's Value  Symbol's Name \+ Addend
 0+5013d0  0+100000012 R_X86_64_TPOFF64 +0+ sG5 \+ 0
 0+5013d8  0+300000012 R_X86_64_TPOFF64 +0+ sG2 \+ 0
 0+5013e0  0+600000012 R_X86_64_TPOFF64 +0+ sG6 \+ 0
 0+5013e8  0+700000012 R_X86_64_TPOFF64 +0+ sG1 \+ 0
 
-Relocation section '.rela.plt' at offset 0x3b8 contains 1 entries:
+Relocation section '.rela.plt' at offset 0x388 contains 1 entries:
  +Offset +Info +Type +Symbol's Value  Symbol's Name \+ Addend
 0+[0-9a-f]+  0+400000007 R_X86_64_JUMP_SLOT +0+[0-9a-f]+ __tls_get_addr \+ 0
 
-Symbol table '.dynsym' contains 11 entries:
+Symbol table '.dynsym' contains 10 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
  +[0-9]+: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND *
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG5
@@ -78,7 +78,6 @@ Symbol table '.dynsym' contains 11 entri
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG6
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG1
  +[0-9]+: 0+[0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: 0+5013f0 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: 0+[0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
 
 Symbol table '.symtab' contains 71 entries:
@@ -147,7 +146,7 @@ Symbol table '.symtab' contains 71 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: 0+5013f0 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +[0-9]+: 0+5013f0 +0 OBJECT  GLOBAL HIDDEN   13 _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
  +[0-9]+: 0+44 +0 TLS +GLOBAL HIDDEN +9 sh2
  +[0-9]+: 0+54 +0 TLS +GLOBAL HIDDEN +9 sh6
Index: ld-x86-64/tlspic.dd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-x86-64/tlspic.dd,v
retrieving revision 1.3
diff -u -p -r1.3 tlspic.dd
--- ld-x86-64/tlspic.dd	11 May 2004 17:08:36 -0000	1.3
+++ ld-x86-64/tlspic.dd	2 Nov 2004 04:37:50 -0000
@@ -22,7 +22,7 @@ Disassembly of section .text:
 #				-> R_X86_64_DTPMOD64	sg1
  +1010:	66[ 	]+data16
  +1011:	66[ 	]+data16
- +1012:	48 e8 88 f5 ff ff[ 	]+rex64 callq  [0-9a-f]+ <.*>
+ +1012:	48 e8 58 f5 ff ff[ 	]+rex64 callq  [0-9a-f]+ <.*>
 #				-> R_X86_64_JUMP_SLOT	__tls_get_addr
  +1018:	90[ 	]+nop *
  +1019:	90[ 	]+nop *
@@ -43,7 +43,7 @@ Disassembly of section .text:
 #				-> R_X86_64_DTPMOD64	[0 0x2000000000000000]
  +1038:	66[ 	]+data16
  +1039:	66[ 	]+data16
- +103a:	48 e8 60 f5 ff ff[ 	]+rex64 callq  [0-9a-f]+ <.*>
+ +103a:	48 e8 30 f5 ff ff[ 	]+rex64 callq  [0-9a-f]+ <.*>
 #				-> R_X86_64_JUMP_SLOT	__tls_get_addr
  +1040:	90[ 	]+nop *
  +1041:	90[ 	]+nop *
@@ -64,7 +64,7 @@ Disassembly of section .text:
 #				-> R_X86_64_DTPMOD64	[0 0x4000000000000000]
  +1060:	66[ 	]+data16
  +1061:	66[ 	]+data16
- +1062:	48 e8 38 f5 ff ff[ 	]+rex64 callq  [0-9a-f]+ <.*>
+ +1062:	48 e8 08 f5 ff ff[ 	]+rex64 callq  [0-9a-f]+ <.*>
 #				-> R_X86_64_JUMP_SLOT	__tls_get_addr
  +1068:	90[ 	]+nop *
  +1069:	90[ 	]+nop *
@@ -85,7 +85,7 @@ Disassembly of section .text:
 #				-> R_X86_64_DTPMOD64	[0 0x6000000000000000]
  +1088:	66[ 	]+data16
  +1089:	66[ 	]+data16
- +108a:	48 e8 10 f5 ff ff[ 	]+rex64 callq  [0-9a-f]+ <.*>
+ +108a:	48 e8 e0 f4 ff ff[ 	]+rex64 callq  [0-9a-f]+ <.*>
 #				-> R_X86_64_JUMP_SLOT	__tls_get_addr
  +1090:	90[ 	]+nop *
  +1091:	90[ 	]+nop *
@@ -103,7 +103,7 @@ Disassembly of section .text:
 #  LD
  +10a8:	48 8d 3d b1 02 10 00[ 	]+lea    1049265\(%rip\),%rdi +# 101360 <.*>
 #				-> R_X86_64_DTPMOD64	[0 0x000000000000000]
- +10af:	e8 ec f4 ff ff[ 	]+callq  [0-9a-f]+ <.*>
+ +10af:	e8 bc f4 ff ff[ 	]+callq  [0-9a-f]+ <.*>
 #				-> R_X86_64_JUMP_SLOT	__tls_get_addr
  +10b4:	90[ 	]+nop *
  +10b5:	90[ 	]+nop *
@@ -118,7 +118,7 @@ Disassembly of section .text:
 #  LD against hidden and local variables
  +10ca:	48 8d 3d 8f 02 10 00[ 	]+lea    1049231\(%rip\),%rdi +# 101360 <.*>
 #				-> R_X86_64_DTPMOD64	[0 0x000000000000000]
- +10d1:	e8 ca f4 ff ff[ 	]+callq  [0-9a-f]+ <.*>
+ +10d1:	e8 9a f4 ff ff[ 	]+callq  [0-9a-f]+ <.*>
 #				-> R_X86_64_JUMP_SLOT	__tls_get_addr
  +10d6:	90[ 	]+nop *
  +10d7:	90[ 	]+nop *
@@ -133,7 +133,7 @@ Disassembly of section .text:
 #  LD against hidden but not local variables
  +10ec:	48 8d 3d 6d 02 10 00[ 	]+lea    1049197\(%rip\),%rdi +# 101360 <.*>
 #				-> R_X86_64_DTPMOD64	[0 0x000000000000000]
- +10f3:	e8 a8 f4 ff ff[ 	]+callq  [0-9a-f]+ <.*>
+ +10f3:	e8 78 f4 ff ff[ 	]+callq  [0-9a-f]+ <.*>
 #				-> R_X86_64_JUMP_SLOT	__tls_get_addr
  +10f8:	90[ 	]+nop *
  +10f9:	90[ 	]+nop *
Index: ld-x86-64/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-x86-64/tlspic.rd,v
retrieving revision 1.3
diff -u -p -r1.3 tlspic.rd
--- ld-x86-64/tlspic.rd	22 Sep 2004 07:24:14 -0000	1.3
+++ ld-x86-64/tlspic.rd	2 Nov 2004 04:37:50 -0000
@@ -71,7 +71,7 @@ Relocation section '.rela.plt' at offset
  +Offset +Info +Type +Symbol's Value  Symbol's Name \+ Addend
 0+[0-9a-f]+  0+b00000007 R_X86_64_JUMP_SLOT +0+ __tls_get_addr \+ 0
 
-Symbol table '.dynsym' contains 21 entries:
+Symbol table '.dynsym' contains 20 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 +7 *
@@ -92,7 +92,6 @@ Symbol table '.dynsym' contains 21 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: 0+1013d0 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
 
 Symbol table '.symtab' contains 57 entries:
@@ -137,6 +136,7 @@ Symbol table '.symtab' contains 57 entri
  +[0-9]+: 0+74 +0 TLS +LOCAL  HIDDEN +9 sH6
  +[0-9]+: 0+7c +0 TLS +LOCAL  HIDDEN +9 sH8
  +[0-9]+: 0+40 +0 TLS +LOCAL  HIDDEN +8 sh1
+ +[0-9]+: 0+1013d0 +0 OBJECT  LOCAL  HIDDEN  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: 0+44 +0 TLS +LOCAL  HIDDEN +8 sh2
  +[0-9]+: 0+54 +0 TLS +LOCAL  HIDDEN +8 sh6
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8
@@ -152,5 +152,4 @@ Symbol table '.symtab' contains 57 entri
  +[0-9]+: 0+14 +0 TLS +GLOBAL DEFAULT +8 sg6
  +[0-9]+: 0+18 +0 TLS +GLOBAL DEFAULT +8 sg7
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
- +[0-9]+: 0+1013d0 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
  +[0-9]+: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end

brgds, H-P

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2004-10-29  5:38 ` Alan Modra
  2004-10-29 11:46   ` Hans-Peter Nilsson
@ 2005-01-05 13:19   ` Eric Botcazou
  2005-01-05 13:48     ` Hans-Peter Nilsson
  1 sibling, 1 reply; 16+ messages in thread
From: Eric Botcazou @ 2005-01-05 13:19 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils, Hans-Peter Nilsson

> > A long time ago, in
> > <URL:http://sources.redhat.com/ml/binutils/2003-04/msg00117.html>,
> > I suggested a patch to make the visibility of
> > _GLOBAL_OFFSET_TABLE_ target-selectable through a bfd hook, with
> > the intent on making it hidden, but keeping it visible to avoid
> > breaking something obscure somewhere.  Alan Modra thought it'd
> > be just as good to make it *always* hidden.  Here's the patch
>
> Jakub's changes to decrease the number of emitted sections symbols
> might interact badly with this change.  It might be a good idea to
> test this on sparc before you go ahead.  The problem is that if
> _GLOBAL_OFFSET_TABLE_ is hidden any relocs against it will be
> reduced to the .got section symbol, which may no longer be dynamic.

That's exactly what I'm seeing on SPARC/Solaris and SPARC/Linux.  HP's patch 
has introduced

FAIL: vers2
FAIL: vers26b1
FAIL: vers26b2
FAIL: vers26b3

in the ld testsuite because of this problem:
http://sources.redhat.com/ml/binutils/2004-10/msg00029.html
http://sources.redhat.com/ml/binutils/2004-11/msg00159.html

What's the best approach to fix this?

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2005-01-05 13:19   ` Eric Botcazou
@ 2005-01-05 13:48     ` Hans-Peter Nilsson
  2005-01-05 13:58       ` Jakub Jelinek
  0 siblings, 1 reply; 16+ messages in thread
From: Hans-Peter Nilsson @ 2005-01-05 13:48 UTC (permalink / raw)
  To: ebotcazou; +Cc: amodra, binutils, hans-peter.nilsson

> From: Eric Botcazou <ebotcazou@libertysurf.fr>
> Date: Wed, 5 Jan 2005 14:18:11 +0100

> HP's patch 
> has introduced
> 
> FAIL: vers2
> FAIL: vers26b1
> FAIL: vers26b2
> FAIL: vers26b3
> 
> in the ld testsuite because of this problem:
> http://sources.redhat.com/ml/binutils/2004-10/msg00029.html
> http://sources.redhat.com/ml/binutils/2004-11/msg00159.html

Sorry.  I wash my hands; those tests are only run if there's a
gcc (as in "native"), so not run in the cross-test I did, where
FWIW there were no regressions (and test-results weren't clean
anyway).  IMHO the main relocation situations (certainly this
one) should be covered by assembler tests as well to ease
testing of general changes such as this one.

> What's the best approach to fix this?

I'd suggest going back to the orignal patch; make it a bfd hook,
but defaulting to hidden and override it to default visibility
for SPARC.

brgds, H-P

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2005-01-05 13:48     ` Hans-Peter Nilsson
@ 2005-01-05 13:58       ` Jakub Jelinek
  2005-01-05 14:32         ` Hans-Peter Nilsson
  2005-01-06 21:59         ` Eric Botcazou
  0 siblings, 2 replies; 16+ messages in thread
From: Jakub Jelinek @ 2005-01-05 13:58 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: ebotcazou, amodra, binutils

On Wed, Jan 05, 2005 at 02:47:32PM +0100, Hans-Peter Nilsson wrote:
> Sorry.  I wash my hands; those tests are only run if there's a
> gcc (as in "native"), so not run in the cross-test I did, where
> FWIW there were no regressions (and test-results weren't clean
> anyway).  IMHO the main relocation situations (certainly this
> one) should be covered by assembler tests as well to ease
> testing of general changes such as this one.
> 
> > What's the best approach to fix this?
> 
> I'd suggest going back to the orignal patch; make it a bfd hook,
> but defaulting to hidden and override it to default visibility
> for SPARC.

Actually, I think it would be better if it was hidden on all arches,
but SPARC (and other backends that need it) would either unconditionally
or only when needed emitted the STB_LOCAL _GLOBAL_OFFSET_TABLE_ into
.dynsym even when it is not exported.  Another alternative would be
to special case dynamic relocations against _GLOBAL_OFFSET_TABLE_,
so that they would be against symbol 0 instead of .got or
_GLOBAL_OFFSET_TABLE_ symbol.

	Jakub

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2005-01-05 13:58       ` Jakub Jelinek
@ 2005-01-05 14:32         ` Hans-Peter Nilsson
  2005-01-06 21:59         ` Eric Botcazou
  1 sibling, 0 replies; 16+ messages in thread
From: Hans-Peter Nilsson @ 2005-01-05 14:32 UTC (permalink / raw)
  To: jakub; +Cc: hans-peter.nilsson, ebotcazou, amodra, binutils

> Date: Wed, 5 Jan 2005 14:57:50 +0100
> From: Jakub Jelinek <jakub@redhat.com>

> Actually, I think it would be better if it was hidden on all arches,
> but SPARC (and other backends that need it) would either unconditionally
> or only when needed emitted the STB_LOCAL _GLOBAL_OFFSET_TABLE_ into
> .dynsym even when it is not exported.  Another alternative would be
> to special case dynamic relocations against _GLOBAL_OFFSET_TABLE_,
> so that they would be against symbol 0 instead of .got or
> _GLOBAL_OFFSET_TABLE_ symbol.

Ok.  Sounds like you've got it covered or that Eric is jumping
on it.  If you'd rather have me fix it, please tell.  (After
all, I caused this regression.)

brgds, H-P

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2005-01-05 13:58       ` Jakub Jelinek
  2005-01-05 14:32         ` Hans-Peter Nilsson
@ 2005-01-06 21:59         ` Eric Botcazou
  2005-01-07 13:12           ` Eric Botcazou
  2005-01-09  7:21           ` Alan Modra
  1 sibling, 2 replies; 16+ messages in thread
From: Eric Botcazou @ 2005-01-06 21:59 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Hans-Peter Nilsson, amodra, binutils

[-- Attachment #1: Type: text/plain, Size: 3070 bytes --]

> Actually, I think it would be better if it was hidden on all arches,
> but SPARC (and other backends that need it) would either unconditionally
> or only when needed emitted the STB_LOCAL _GLOBAL_OFFSET_TABLE_ into
> .dynsym even when it is not exported.  Another alternative would be
> to special case dynamic relocations against _GLOBAL_OFFSET_TABLE_,
> so that they would be against symbol 0 instead of .got or
> _GLOBAL_OFFSET_TABLE_ symbol.

It turned out that it's not a little breakage: you basically cannot create 
shared libraries with global data anymore!  This was exacerbated by HP's 
patch, but the problem had actually been introduced by your May 2004 patch 
that hides the .got section: it can be reproduced with

 local:
  *;

in the linker script prior to HP's patch.


I've attached a patch that unhides .got on the SPARC (bfd_sparc_got-4.diff).  
Tested on sparc64-sun-solaris2.9 and sparc-sun-solaris2.8, it is sufficient 
to cure the problem.


	* elf32-sparc.c (elf32_sparc_omit_section_dynsym): New function.
	(elf_backend_omit_section_dynsym): Define to it.
	* elf64-sparc.c (sparc64_elf_omit_section_dynsym): New function.
	(elf_backend_omit_section_dynsym): Define to it.	


I've also tried to implement your first suggestion, that is to emit _G_O_T_ 
as a local symbol in .dynsym unconditionally (bfd_sparc_got-5.diff).  Seems 
to work too, tested on sparc64-sun-solaris2.9 and sparc-sun-solaris2.8, but 
far more invasive.


	* elf-bfd.h (struct elf_link_local_dynamic_entry): New 'input_section' field.
	(bfd_elf_link_create_local_dynamic_entry): Declare.
	* elflink.c (bfd_elf_link_create_local_dynamic_entry): New function
	extracted from...
	(bfd_elf_link_record_local_dynamic_symbol): ...here.  Invoke it to
	create the local dynamic symbol and set input_section to NULL.
	(bfd_elf_final_link): For a local dynamic symbol, piggyback on input_section
	if the ELF section is undefined.
	* elf32-sparc.c (elf32_sparc_link_hash_table_create): Use bfd_zmalloc to
	zero the structure.
	(create_got_section): Use BFD_ASSERT instead of abort.  Create a local
	dynamic symbol for _GLOBAL_OFFSET_TABLE_.
	(elf32_sparc_relocate_section): In a shared object, use the index of the
	local dynamic symbol for relocations against _GLOBAL_OFFSET_TABLE_.
	* elf64-sparc.c (struct sparc64_elf_link_hash_table): New 'sgot' and
	'srelgot' fields.
	(create_got_section): New function.
	(sparc64_elf_create_dynamic_sections): Likewise.
	(sparc64_elf_check_relocs): Invoke create_got_section instead of
	_bfd_elf_create_got_section.  Use the sgot and srelgot shortcuts.
	(sparc64_elf_size_dynamic_sections): Use the srelgot shortcut.
	(sparc64_elf_relocate_section): In a shared object, use the index of the
	local dynamic symbol for relocations against _GLOBAL_OFFSET_TABLE_.
	Use the sgot and srelgot shortcuts.
	(sparc64_elf_finish_dynamic_symbol): Use the sgot and srelgot shortcuts.
	(sparc64_elf_finish_dynamic_sections): Use the sgot shortcut.
	(elf_backend_create_dynamic_sections): Define to
	sparc64_elf_create_dynamic_sections.


-- 
Eric Botcazou

[-- Attachment #2: bfd_sparc_got-4.diff --]
[-- Type: text/x-diff, Size: 3730 bytes --]

Index: elf32-sparc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-sparc.c,v
retrieving revision 1.76
diff -u -p -r1.76 elf32-sparc.c
--- elf32-sparc.c	21 Oct 2004 15:28:25 -0000	1.76
+++ elf32-sparc.c	6 Jan 2005 12:15:42 -0000
@@ -39,6 +39,8 @@ static bfd_boolean allocate_dynrelocs
   PARAMS ((struct elf_link_hash_entry *, PTR));
 static bfd_boolean readonly_dynrelocs
   PARAMS ((struct elf_link_hash_entry *, PTR));
+static bfd_boolean elf32_sparc_omit_section_dynsym
+  PARAMS ((bfd *, struct bfd_link_info *, asection *));
 static bfd_boolean elf32_sparc_size_dynamic_sections
   PARAMS ((bfd *, struct bfd_link_info *));
 static bfd_boolean elf32_sparc_new_section_hook
@@ -1814,6 +1816,23 @@ readonly_dynrelocs (h, inf)
   return TRUE;
 }
 
+/* Return true if the dynamic symbol for a given section should be
+   omitted when creating a shared library.  */
+
+static bfd_boolean
+elf32_sparc_omit_section_dynsym (bfd *output_bfd,
+				 struct bfd_link_info *info,
+				 asection *p)
+{
+  /* We keep the .got section symbol so that explicit relocations
+     against the _GLOBAL_OFFSET_TABLE_ symbol emitted in PIC mode
+     can be turned into relocations against the .got symbol.  */
+  if (strcmp (p->name, ".got") == 0)
+    return FALSE;
+
+  return _bfd_elf_link_omit_section_dynsym (output_bfd, info, p);
+}
+
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -3448,6 +3467,7 @@ elf32_sparc_plt_sym_val (bfd_vma i ATTRI
 #define elf_backend_check_relocs	elf32_sparc_check_relocs
 #define elf_backend_adjust_dynamic_symbol \
 					elf32_sparc_adjust_dynamic_symbol
+#define elf_backend_omit_section_dynsym	elf32_sparc_omit_section_dynsym
 #define elf_backend_size_dynamic_sections \
 					elf32_sparc_size_dynamic_sections
 #define elf_backend_relocate_section	elf32_sparc_relocate_section
Index: elf64-sparc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-sparc.c,v
retrieving revision 1.98
diff -u -p -r1.98 elf64-sparc.c
--- elf64-sparc.c	5 Jan 2005 15:24:56 -0000	1.98
+++ elf64-sparc.c	6 Jan 2005 12:15:43 -0000
@@ -56,6 +56,8 @@ static bfd_boolean sparc64_elf_check_rel
 	   const Elf_Internal_Rela *));
 static bfd_boolean sparc64_elf_adjust_dynamic_symbol
   PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
+static bfd_boolean sparc64_elf_omit_section_dynsym
+  PARAMS ((bfd *, struct bfd_link_info *, asection *));
 static bfd_boolean sparc64_elf_size_dynamic_sections
   PARAMS ((bfd *, struct bfd_link_info *));
 static int sparc64_elf_get_symbol_type
@@ -1760,6 +1762,23 @@ sparc64_elf_adjust_dynamic_symbol (info,
   return TRUE;
 }
 
+/* Return true if the dynamic symbol for a given section should be
+   omitted when creating a shared library.  */
+
+static bfd_boolean
+sparc64_elf_omit_section_dynsym (bfd *output_bfd,
+				 struct bfd_link_info *info,
+				 asection *p)
+{
+  /* We keep the .got section symbol so that explicit relocations
+     against the _GLOBAL_OFFSET_TABLE_ symbol emitted in PIC mode
+     can be turned into relocations against the .got symbol.  */
+  if (strcmp (p->name, ".got") == 0)
+    return FALSE;
+
+  return _bfd_elf_link_omit_section_dynsym (output_bfd, info, p);
+}
+
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -3198,6 +3217,8 @@ const struct elf_size_info sparc64_elf_s
   sparc64_elf_check_relocs
 #define elf_backend_adjust_dynamic_symbol \
   sparc64_elf_adjust_dynamic_symbol
+#define elf_backend_omit_section_dynsym \
+  sparc64_elf_omit_section_dynsym
 #define elf_backend_size_dynamic_sections \
   sparc64_elf_size_dynamic_sections
 #define elf_backend_relocate_section \

[-- Attachment #3: bfd_sparc_got-5.diff --]
[-- Type: text/x-diff, Size: 20978 bytes --]

Index: elf-bfd.h
===================================================================
RCS file: /cvs/src/src/bfd/elf-bfd.h,v
retrieving revision 1.166
diff -c -p -r1.166 elf-bfd.h
*** elf-bfd.h	10 Dec 2004 14:04:56 -0000	1.166
--- elf-bfd.h	6 Jan 2005 17:30:50 -0000
*************** struct elf_link_local_dynamic_entry
*** 245,250 ****
--- 245,254 ----
    /* The index of the local symbol being copied.  */
    long input_indx;
  
+   /* The section this symbol came from.  Note that it need be set
+      only if the section index of the input symbol is SHN_UNDEF.  */
+   asection *input_section;
+ 
    /* The index in the outgoing dynamic symbol table.  */
    long dynindx;
  
*************** extern bfd_boolean _bfd_elf_add_dynamic_
*** 1712,1717 ****
--- 1716,1725 ----
  extern bfd_boolean bfd_elf_link_record_dynamic_symbol
    (struct bfd_link_info *, struct elf_link_hash_entry *);
  
+ extern struct elf_link_local_dynamic_entry *
+   bfd_elf_link_create_local_dynamic_entry
+     (struct bfd_link_info *, bfd *, const char *, Elf_Internal_Sym *);
+ 
  extern int bfd_elf_link_record_local_dynamic_symbol
    (struct bfd_link_info *, bfd *, long);
  
Index: elf32-sparc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-sparc.c,v
retrieving revision 1.76
diff -c -p -r1.76 elf32-sparc.c
*** elf32-sparc.c	21 Oct 2004 15:28:25 -0000	1.76
--- elf32-sparc.c	6 Jan 2005 17:30:51 -0000
*************** elf32_sparc_link_hash_table_create (abfd
*** 693,699 ****
    struct elf32_sparc_link_hash_table *ret;
    bfd_size_type amt = sizeof (struct elf32_sparc_link_hash_table);
  
!   ret = (struct elf32_sparc_link_hash_table *) bfd_malloc (amt);
    if (ret == NULL)
      return NULL;
  
--- 693,699 ----
    struct elf32_sparc_link_hash_table *ret;
    bfd_size_type amt = sizeof (struct elf32_sparc_link_hash_table);
  
!   ret = (struct elf32_sparc_link_hash_table *) bfd_zmalloc (amt);
    if (ret == NULL)
      return NULL;
  
*************** elf32_sparc_link_hash_table_create (abfd
*** 703,717 ****
        return NULL;
      }
  
-   ret->sgot = NULL;
-   ret->srelgot = NULL;
-   ret->splt = NULL;
-   ret->srelplt = NULL;
-   ret->sdynbss = NULL;
-   ret->srelbss = NULL;
-   ret->tls_ldm_got.refcount = 0;
-   ret->sym_sec.abfd = NULL;
- 
    return &ret->elf.root;
  }
  
--- 703,708 ----
*************** create_got_section (dynobj, info)
*** 724,743 ****
       struct bfd_link_info *info;
  {
    struct elf32_sparc_link_hash_table *htab;
  
    if (! _bfd_elf_create_got_section (dynobj, info))
      return FALSE;
  
    htab = elf32_sparc_hash_table (info);
    htab->sgot = bfd_get_section_by_name (dynobj, ".got");
!   if (!htab->sgot)
!     abort ();
  
    htab->srelgot = bfd_make_section (dynobj, ".rela.got");
    if (htab->srelgot == NULL
        || ! bfd_set_section_flags (dynobj, htab->srelgot,
! 				  (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
! 				   | SEC_IN_MEMORY | SEC_LINKER_CREATED
  				   | SEC_READONLY))
        || ! bfd_set_section_alignment (dynobj, htab->srelgot, 2))
      return FALSE;
--- 715,752 ----
       struct bfd_link_info *info;
  {
    struct elf32_sparc_link_hash_table *htab;
+   struct elf_link_local_dynamic_entry *entry;
+   Elf_Internal_Sym sym;
  
    if (! _bfd_elf_create_got_section (dynobj, info))
      return FALSE;
  
    htab = elf32_sparc_hash_table (info);
    htab->sgot = bfd_get_section_by_name (dynobj, ".got");
!   BFD_ASSERT (htab->sgot != NULL);
! 
!   /* Make sure _GLOBAL_OFFSET_TABLE_ is in the dynamic symbol table.
!      We need this because we emit explicit relocations against it
!      in PIC mode.  */
!   memset (&sym, 0, sizeof (sym));
!   sym.st_info = ELF_ST_TYPE (STT_OBJECT);
!   sym.st_other = STV_HIDDEN;
!   sym.st_shndx = SHN_UNDEF;
!   entry = bfd_elf_link_create_local_dynamic_entry (info, dynobj,
! 						   "_GLOBAL_OFFSET_TABLE_",
! 						   &sym);
!   entry->input_bfd = NULL;
!   entry->input_indx = 0;
!   entry->input_section = htab->sgot;
  
    htab->srelgot = bfd_make_section (dynobj, ".rela.got");
    if (htab->srelgot == NULL
        || ! bfd_set_section_flags (dynobj, htab->srelgot,
! 				  (SEC_ALLOC
! 				   | SEC_LOAD
! 				   | SEC_HAS_CONTENTS
! 				   | SEC_IN_MEMORY
! 				   | SEC_LINKER_CREATED
  				   | SEC_READONLY))
        || ! bfd_set_section_alignment (dynobj, htab->srelgot, 2))
      return FALSE;
*************** elf32_sparc_relocate_section (output_bfd
*** 2450,2455 ****
--- 2459,2472 ----
  		  outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
  		  outrel.r_addend = rel->r_addend;
  		}
+ 	      else if (h == elf_hash_table (info)->hgot)
+ 	        {
+ 		  long dynindx
+ 		    = _bfd_elf_link_lookup_local_dynindx (info, NULL, 0);
+ 		  BFD_ASSERT (dynindx != -1);
+ 		  outrel.r_info = ELF32_R_INFO (dynindx, r_type);
+ 		  outrel.r_addend = rel->r_addend;
+ 		}
  	      else
  		{
  		  if (r_type == R_SPARC_32)
Index: elf64-sparc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-sparc.c,v
retrieving revision 1.98
diff -c -p -r1.98 elf64-sparc.c
*** elf64-sparc.c	5 Jan 2005 15:24:56 -0000	1.98
--- elf64-sparc.c	6 Jan 2005 17:30:53 -0000
***************
*** 36,41 ****
--- 36,45 ----
  
  static struct bfd_link_hash_table * sparc64_elf_bfd_link_hash_table_create
    PARAMS ((bfd *));
+ static bfd_boolean create_got_section
+   PARAMS ((bfd *, struct bfd_link_info *));
+ static bfd_boolean sparc64_elf_create_dynamic_sections
+   PARAMS ((bfd *, struct bfd_link_info *));
  static bfd_reloc_status_type init_insn_reloc
    PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *,
  	   bfd *, bfd_vma *, bfd_vma *));
*************** struct sparc64_elf_link_hash_table
*** 736,741 ****
--- 740,749 ----
  {
    struct elf_link_hash_table root;
  
+   /* Short-cuts to get to dynamic linker sections.  */
+   asection *sgot;
+   asection *srelgot;
+ 
    struct sparc64_elf_app_reg app_regs [4];
  };
  
*************** sparc64_elf_bfd_link_hash_table_create (
*** 766,771 ****
--- 774,847 ----
  
    return &ret->root.root;
  }
+ 
+ /* Create .got and .rela.got sections in DYNOBJ and set up
+    shortcuts to them in our hash table.  */
+ 
+ static bfd_boolean
+ create_got_section (dynobj, info)
+      bfd *dynobj;
+      struct bfd_link_info *info;
+ {
+   struct sparc64_elf_link_hash_table *htab;
+   struct elf_link_local_dynamic_entry *entry;
+   Elf_Internal_Sym sym;
+ 
+   if (! _bfd_elf_create_got_section (dynobj, info))
+     return FALSE;
+ 
+   htab = sparc64_elf_hash_table (info);
+   htab->sgot = bfd_get_section_by_name (dynobj, ".got");
+   BFD_ASSERT (htab->sgot != NULL);
+ 
+   /* Make sure _GLOBAL_OFFSET_TABLE_ is in the dynamic symbol table.
+      We need this because we emit explicit relocations against it
+      in PIC mode.  */
+   memset (&sym, 0, sizeof (sym));
+   sym.st_info = ELF_ST_TYPE (STT_OBJECT);
+   sym.st_other = STV_HIDDEN;
+   sym.st_shndx = SHN_UNDEF;
+   entry = bfd_elf_link_create_local_dynamic_entry (info, dynobj,
+ 						   "_GLOBAL_OFFSET_TABLE_",
+ 						   &sym);
+   entry->input_bfd = NULL;
+   entry->input_indx = 0;
+   entry->input_section = htab->sgot;
+ 
+   htab->srelgot = bfd_make_section (dynobj, ".rela.got");
+   if (htab->srelgot == NULL
+       || ! bfd_set_section_flags (dynobj, htab->srelgot,
+ 				  (SEC_ALLOC
+ 				   | SEC_LOAD
+ 				   | SEC_HAS_CONTENTS
+ 				   | SEC_IN_MEMORY
+ 				   | SEC_LINKER_CREATED
+ 				   | SEC_READONLY))
+       || ! bfd_set_section_alignment (dynobj, htab->srelgot, 3))
+     return FALSE;
+   return TRUE;
+ }
+ 
+ /* Create .plt, .rela.plt, .got, .rela.got, .dynbss, and
+    .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
+    hash table.  */
+ 
+ static bfd_boolean
+ sparc64_elf_create_dynamic_sections (dynobj, info)
+      bfd *dynobj;
+      struct bfd_link_info *info;
+ {
+   struct sparc64_elf_link_hash_table *htab;
+ 
+   htab = sparc64_elf_hash_table (info);
+   if (!htab->sgot && !create_got_section (dynobj, info))
+     return FALSE;
+ 
+   if (!_bfd_elf_create_dynamic_sections (dynobj, info))
+     return FALSE;
+ 
+   return TRUE;
+ }
  \f
  /* Utility for performing the standard initial work of an instruction
     relocation.
*************** sparc64_elf_check_relocs (abfd, info, se
*** 1135,1169 ****
  
  	  if (dynobj == NULL)
  	    {
! 	      /* Create the .got section.  */
  	      elf_hash_table (info)->dynobj = dynobj = abfd;
! 	      if (! _bfd_elf_create_got_section (dynobj, info))
  		return FALSE;
  	    }
  
  	  if (sgot == NULL)
  	    {
! 	      sgot = bfd_get_section_by_name (dynobj, ".got");
  	      BFD_ASSERT (sgot != NULL);
  	    }
  
  	  if (srelgot == NULL && (h != NULL || info->shared))
  	    {
! 	      srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
! 	      if (srelgot == NULL)
! 		{
! 		  srelgot = bfd_make_section (dynobj, ".rela.got");
! 		  if (srelgot == NULL
! 		      || ! bfd_set_section_flags (dynobj, srelgot,
! 						  (SEC_ALLOC
! 						   | SEC_LOAD
! 						   | SEC_HAS_CONTENTS
! 						   | SEC_IN_MEMORY
! 						   | SEC_LINKER_CREATED
! 						   | SEC_READONLY))
! 		      || ! bfd_set_section_alignment (dynobj, srelgot, 3))
! 		    return FALSE;
! 		}
  	    }
  
  	  if (h != NULL)
--- 1211,1232 ----
  
  	  if (dynobj == NULL)
  	    {
! 	      /* Create the .got and .rela.got sections.  */
  	      elf_hash_table (info)->dynobj = dynobj = abfd;
! 	      if (! create_got_section (dynobj, info))
  		return FALSE;
  	    }
  
  	  if (sgot == NULL)
  	    {
! 	      sgot = sparc64_elf_hash_table (info)->sgot;
  	      BFD_ASSERT (sgot != NULL);
  	    }
  
  	  if (srelgot == NULL && (h != NULL || info->shared))
  	    {
! 	      srelgot = sparc64_elf_hash_table (info)->srelgot;
! 	      BFD_ASSERT (srelgot != NULL);
  	    }
  
  	  if (h != NULL)
*************** sparc64_elf_size_dynamic_sections (outpu
*** 1792,1798 ****
           not actually use these entries.  Reset the size of .rela.got,
           which will cause it to get stripped from the output file
           below.  */
!       s = bfd_get_section_by_name (dynobj, ".rela.got");
        if (s != NULL)
  	s->size = 0;
      }
--- 1855,1861 ----
           not actually use these entries.  Reset the size of .rela.got,
           which will cause it to get stripped from the output file
           below.  */
!       s = sparc64_elf_hash_table (info)->srelgot;
        if (s != NULL)
  	s->size = 0;
      }
*************** sparc64_elf_relocate_section (output_bfd
*** 2229,2234 ****
--- 2292,2309 ----
  							   r_type));
  		    outrel.r_addend = rel->r_addend;
  		  }
+ 		else if (h == elf_hash_table (info)->hgot)
+ 	          {
+ 		    long dynindx
+ 		      = _bfd_elf_link_lookup_local_dynindx (info, NULL, 0);
+ 		    BFD_ASSERT (dynindx != -1);
+ 		    outrel.r_info
+ 		      = ELF64_R_INFO (dynindx,
+ 				      ELF64_R_TYPE_INFO (
+ 					ELF64_R_TYPE_DATA (rel->r_info),
+ 							   r_type));
+ 		    outrel.r_addend = rel->r_addend;
+ 		  }
  		else
  		  {
  		    outrel.r_addend = relocation + rel->r_addend;
*************** sparc64_elf_relocate_section (output_bfd
*** 2305,2311 ****
  	     offset table.  */
  	  if (sgot == NULL)
  	    {
! 	      sgot = bfd_get_section_by_name (dynobj, ".got");
  	      BFD_ASSERT (sgot != NULL);
  	    }
  
--- 2380,2386 ----
  	     offset table.  */
  	  if (sgot == NULL)
  	    {
! 	      sgot = sparc64_elf_hash_table (info)->sgot;
  	      BFD_ASSERT (sgot != NULL);
  	    }
  
*************** sparc64_elf_relocate_section (output_bfd
*** 2379,2385 ****
  
  		      /* We need to generate a R_SPARC_RELATIVE reloc
  			 for the dynamic linker.  */
! 		      s = bfd_get_section_by_name(dynobj, ".rela.got");
  		      BFD_ASSERT (s != NULL);
  
  		      outrel.r_offset = (sgot->output_section->vma
--- 2454,2460 ----
  
  		      /* We need to generate a R_SPARC_RELATIVE reloc
  			 for the dynamic linker.  */
! 		      s = sparc64_elf_hash_table (info)->srelgot;
  		      BFD_ASSERT (s != NULL);
  
  		      outrel.r_offset = (sgot->output_section->vma
*************** sparc64_elf_finish_dynamic_symbol (outpu
*** 2760,2767 ****
  
        /* This symbol has an entry in the GOT.  Set it up.  */
  
!       sgot = bfd_get_section_by_name (dynobj, ".got");
!       srela = bfd_get_section_by_name (dynobj, ".rela.got");
        BFD_ASSERT (sgot != NULL && srela != NULL);
  
        rela.r_offset = (sgot->output_section->vma
--- 2835,2842 ----
  
        /* This symbol has an entry in the GOT.  Set it up.  */
  
!       sgot = sparc64_elf_hash_table (info)->sgot;
!       srela = sparc64_elf_hash_table (info)->srelgot;
        BFD_ASSERT (sgot != NULL && srela != NULL);
  
        rela.r_offset = (sgot->output_section->vma
*************** sparc64_elf_finish_dynamic_sections (out
*** 2909,2915 ****
  
    /* Set the first entry in the global offset table to the address of
       the dynamic section.  */
!   sgot = bfd_get_section_by_name (dynobj, ".got");
    BFD_ASSERT (sgot != NULL);
    if (sgot->size > 0)
      {
--- 2984,2990 ----
  
    /* Set the first entry in the global offset table to the address of
       the dynamic section.  */
!   sgot = sparc64_elf_hash_table (info)->sgot;
    BFD_ASSERT (sgot != NULL);
    if (sgot->size > 0)
      {
*************** const struct elf_size_info sparc64_elf_s
*** 3187,3193 ****
    sparc64_elf_new_section_hook
  
  #define elf_backend_create_dynamic_sections \
!   _bfd_elf_create_dynamic_sections
  #define elf_backend_add_symbol_hook \
    sparc64_elf_add_symbol_hook
  #define elf_backend_get_symbol_type \
--- 3262,3268 ----
    sparc64_elf_new_section_hook
  
  #define elf_backend_create_dynamic_sections \
!   sparc64_elf_create_dynamic_sections
  #define elf_backend_add_symbol_hook \
    sparc64_elf_add_symbol_hook
  #define elf_backend_get_symbol_type \
Index: elflink.c
===================================================================
RCS file: /cvs/src/src/bfd/elflink.c,v
retrieving revision 1.122
diff -c -p -r1.122 elflink.c
*** elflink.c	22 Dec 2004 03:59:26 -0000	1.122
--- elflink.c	6 Jan 2005 17:30:57 -0000
*************** bfd_elf_record_link_assignment (bfd *out
*** 488,493 ****
--- 488,536 ----
    return TRUE;
  }
  
+ /* Create a new local dynamic entry for the specified symbol.
+    Return the entry on success or NULL on failure.  */
+ 
+ struct elf_link_local_dynamic_entry *
+ bfd_elf_link_create_local_dynamic_entry (struct bfd_link_info *info,
+ 					 bfd *input_bfd,
+ 					 const char *name,
+ 					 Elf_Internal_Sym *sym)
+ {
+   struct elf_link_local_dynamic_entry *entry;
+   struct elf_link_hash_table *eht;
+   bfd_size_type dynstr_index;
+ 
+   entry = bfd_alloc (input_bfd, sizeof (*entry));
+   if (entry == NULL)
+     return NULL;
+ 
+   eht = elf_hash_table (info);
+   if (eht->dynstr == NULL)
+     {
+       /* Create a strtab to hold the dynamic symbol names.  */
+       eht->dynstr = _bfd_elf_strtab_init ();
+       if (eht->dynstr == NULL)
+ 	return NULL;
+     }
+ 
+   dynstr_index = _bfd_elf_strtab_add (eht->dynstr, name, FALSE);
+   if (dynstr_index == (bfd_size_type) -1)
+     return NULL;
+ 
+   entry->next = eht->dynlocal;
+   eht->dynlocal = entry;
+   eht->dynsymcount++;
+ 
+   /* Whatever binding the symbol had before, it's now local.  */
+   memcpy (&entry->isym, sym, sizeof (*sym));
+   entry->isym.st_name = dynstr_index;
+   entry->isym.st_info
+     = ELF_ST_INFO (STB_LOCAL, ELF_ST_TYPE (entry->isym.st_info));
+ 
+   return entry;
+ }
+ 
  /* Record a new local dynamic symbol.  Returns 0 on failure, 1 on
     success, and 2 on a failure caused by attempting to record a symbol
     in a discarded section, eg. a discarded link-once section symbol.  */
*************** bfd_elf_link_record_local_dynamic_symbol
*** 497,508 ****
  					  bfd *input_bfd,
  					  long input_indx)
  {
-   bfd_size_type amt;
    struct elf_link_local_dynamic_entry *entry;
-   struct elf_link_hash_table *eht;
-   struct elf_strtab_hash *dynstr;
-   unsigned long dynstr_index;
    char *name;
    Elf_External_Sym_Shndx eshndx;
    char esym[sizeof (Elf64_External_Sym)];
  
--- 540,548 ----
  					  bfd *input_bfd,
  					  long input_indx)
  {
    struct elf_link_local_dynamic_entry *entry;
    char *name;
+   Elf_Internal_Sym isym;
    Elf_External_Sym_Shndx eshndx;
    char esym[sizeof (Elf64_External_Sym)];
  
*************** bfd_elf_link_record_local_dynamic_symbol
*** 514,578 ****
      if (entry->input_bfd == input_bfd && entry->input_indx == input_indx)
        return 1;
  
-   amt = sizeof (*entry);
-   entry = bfd_alloc (input_bfd, amt);
-   if (entry == NULL)
-     return 0;
- 
    /* Go find the symbol, so that we can find it's name.  */
    if (!bfd_elf_get_elf_syms (input_bfd, &elf_tdata (input_bfd)->symtab_hdr,
! 			     1, input_indx, &entry->isym, esym, &eshndx))
!     {
!       bfd_release (input_bfd, entry);
!       return 0;
!     }
  
!   if (entry->isym.st_shndx != SHN_UNDEF
!       && (entry->isym.st_shndx < SHN_LORESERVE
! 	  || entry->isym.st_shndx > SHN_HIRESERVE))
      {
        asection *s;
  
!       s = bfd_section_from_elf_index (input_bfd, entry->isym.st_shndx);
        if (s == NULL || bfd_is_abs_section (s->output_section))
! 	{
! 	  /* We can still bfd_release here as nothing has done another
! 	     bfd_alloc.  We can't do this later in this function.  */
! 	  bfd_release (input_bfd, entry);
! 	  return 2;
! 	}
      }
  
    name = (bfd_elf_string_from_elf_section
  	  (input_bfd, elf_tdata (input_bfd)->symtab_hdr.sh_link,
! 	   entry->isym.st_name));
  
!   dynstr = elf_hash_table (info)->dynstr;
!   if (dynstr == NULL)
!     {
!       /* Create a strtab to hold the dynamic symbol names.  */
!       elf_hash_table (info)->dynstr = dynstr = _bfd_elf_strtab_init ();
!       if (dynstr == NULL)
! 	return 0;
!     }
! 
!   dynstr_index = _bfd_elf_strtab_add (dynstr, name, FALSE);
!   if (dynstr_index == (unsigned long) -1)
      return 0;
-   entry->isym.st_name = dynstr_index;
- 
-   eht = elf_hash_table (info);
  
-   entry->next = eht->dynlocal;
-   eht->dynlocal = entry;
    entry->input_bfd = input_bfd;
    entry->input_indx = input_indx;
!   eht->dynsymcount++;
! 
!   /* Whatever binding the symbol had before, it's now local.  */
!   entry->isym.st_info
!     = ELF_ST_INFO (STB_LOCAL, ELF_ST_TYPE (entry->isym.st_info));
! 
    /* The dynindx will be set at the end of size_dynamic_sections.  */
  
    return 1;
--- 554,587 ----
      if (entry->input_bfd == input_bfd && entry->input_indx == input_indx)
        return 1;
  
    /* Go find the symbol, so that we can find it's name.  */
    if (!bfd_elf_get_elf_syms (input_bfd, &elf_tdata (input_bfd)->symtab_hdr,
! 			     1, input_indx, &isym, esym, &eshndx))
!     return 0;
  
!   if (isym.st_shndx != SHN_UNDEF
!       && (isym.st_shndx < SHN_LORESERVE
! 	  || isym.st_shndx > SHN_HIRESERVE))
      {
        asection *s;
  
!       s = bfd_section_from_elf_index (input_bfd, isym.st_shndx);
        if (s == NULL || bfd_is_abs_section (s->output_section))
! 	return 2;
      }
  
    name = (bfd_elf_string_from_elf_section
  	  (input_bfd, elf_tdata (input_bfd)->symtab_hdr.sh_link,
! 	   isym.st_name));
  
!   entry = bfd_elf_link_create_local_dynamic_entry (info, input_bfd, name,
! 						   &isym);
!   if (!entry)
      return 0;
  
    entry->input_bfd = input_bfd;
    entry->input_indx = input_indx;
!   entry->input_section = NULL;
    /* The dynindx will be set at the end of size_dynamic_sections.  */
  
    return 1;
*************** bfd_elf_final_link (bfd *abfd, struct bf
*** 8065,8071 ****
  	  struct elf_link_local_dynamic_entry *e;
  	  for (e = elf_hash_table (info)->dynlocal; e ; e = e->next)
  	    {
! 	      asection *s;
  	      bfd_byte *dest;
  
  	      sym.st_size = e->isym.st_size;
--- 8074,8080 ----
  	  struct elf_link_local_dynamic_entry *e;
  	  for (e = elf_hash_table (info)->dynlocal; e ; e = e->next)
  	    {
! 	      asection *s = NULL;
  	      bfd_byte *dest;
  
  	      sym.st_size = e->isym.st_size;
*************** bfd_elf_final_link (bfd *abfd, struct bf
*** 8079,8088 ****
  	      if (e->isym.st_shndx != SHN_UNDEF
  		  && (e->isym.st_shndx < SHN_LORESERVE
  		      || e->isym.st_shndx > SHN_HIRESERVE))
! 		{
! 		  s = bfd_section_from_elf_index (e->input_bfd,
! 						  e->isym.st_shndx);
  
  		  sym.st_shndx =
  		    elf_section_data (s->output_section)->this_idx;
  		  sym.st_value = (s->output_section->vma
--- 8088,8101 ----
  	      if (e->isym.st_shndx != SHN_UNDEF
  		  && (e->isym.st_shndx < SHN_LORESERVE
  		      || e->isym.st_shndx > SHN_HIRESERVE))
! 		s = bfd_section_from_elf_index (e->input_bfd,
! 						e->isym.st_shndx);
! 	      else if (e->isym.st_shndx == SHN_UNDEF
! 		       && e->input_section)
! 		s = e->input_section;
  
+ 	      if (s)
+ 	        {
  		  sym.st_shndx =
  		    elf_section_data (s->output_section)->this_idx;
  		  sym.st_value = (s->output_section->vma

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2005-01-06 21:59         ` Eric Botcazou
@ 2005-01-07 13:12           ` Eric Botcazou
  2005-01-09  7:21           ` Alan Modra
  1 sibling, 0 replies; 16+ messages in thread
From: Eric Botcazou @ 2005-01-07 13:12 UTC (permalink / raw)
  To: binutils; +Cc: Jakub Jelinek, Hans-Peter Nilsson, amodra

> 	* elf-bfd.h (struct elf_link_local_dynamic_entry): New 'input_section'
> field. (bfd_elf_link_create_local_dynamic_entry): Declare.
> 	* elflink.c (bfd_elf_link_create_local_dynamic_entry): New function
> 	extracted from...
> 	(bfd_elf_link_record_local_dynamic_symbol): ...here.  Invoke it to
> 	create the local dynamic symbol and set input_section to NULL.
> 	(bfd_elf_final_link): For a local dynamic symbol, piggyback on
> input_section if the ELF section is undefined.
> 	* elf32-sparc.c (elf32_sparc_link_hash_table_create): Use bfd_zmalloc to
> 	zero the structure.
> 	(create_got_section): Use BFD_ASSERT instead of abort.  Create a local
> 	dynamic symbol for _GLOBAL_OFFSET_TABLE_.
> 	(elf32_sparc_relocate_section): In a shared object, use the index of the
> 	local dynamic symbol for relocations against _GLOBAL_OFFSET_TABLE_.
> 	* elf64-sparc.c (struct sparc64_elf_link_hash_table): New 'sgot' and
> 	'srelgot' fields.
> 	(create_got_section): New function.
> 	(sparc64_elf_create_dynamic_sections): Likewise.
> 	(sparc64_elf_check_relocs): Invoke create_got_section instead of
> 	_bfd_elf_create_got_section.  Use the sgot and srelgot shortcuts.
> 	(sparc64_elf_size_dynamic_sections): Use the srelgot shortcut.
> 	(sparc64_elf_relocate_section): In a shared object, use the index of the
> 	local dynamic symbol for relocations against _GLOBAL_OFFSET_TABLE_.
> 	Use the sgot and srelgot shortcuts.
> 	(sparc64_elf_finish_dynamic_symbol): Use the sgot and srelgot shortcuts.
> 	(sparc64_elf_finish_dynamic_sections): Use the sgot shortcut.
> 	(elf_backend_create_dynamic_sections): Define to
> 	sparc64_elf_create_dynamic_sections.

FWIW this one has completed a full testing cycle against GCC 4.0.0pre on 
sparc64-sun-solaris2.9 and sparc-sun-solaris2.8.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2005-01-06 21:59         ` Eric Botcazou
  2005-01-07 13:12           ` Eric Botcazou
@ 2005-01-09  7:21           ` Alan Modra
  2005-01-09  9:56             ` Eric Botcazou
  2005-01-09 10:01             ` Jakub Jelinek
  1 sibling, 2 replies; 16+ messages in thread
From: Alan Modra @ 2005-01-09  7:21 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: Jakub Jelinek, Hans-Peter Nilsson, binutils

On Thu, Jan 06, 2005 at 10:53:30PM +0100, Eric Botcazou wrote:
> 	* elf32-sparc.c (elf32_sparc_omit_section_dynsym): New function.
> 	(elf_backend_omit_section_dynsym): Define to it.
> 	* elf64-sparc.c (sparc64_elf_omit_section_dynsym): New function.
> 	(elf_backend_omit_section_dynsym): Define to it.	

I prefer this one.  Mostly because it restores old behaviour with
respect to got relocs.  Also, at some stage I might change selected
backends over to use just one section symbol (or the zero sym) for
dynamic relocs.  If you're using a local G_O_T sym, I'll probably
assume the sparc backend wants it that way for some arcane reason..

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2005-01-09  7:21           ` Alan Modra
@ 2005-01-09  9:56             ` Eric Botcazou
  2005-01-09 10:03               ` Jakub Jelinek
  2005-01-09 10:01             ` Jakub Jelinek
  1 sibling, 1 reply; 16+ messages in thread
From: Eric Botcazou @ 2005-01-09  9:56 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils, Jakub Jelinek, Hans-Peter Nilsson

[-- Attachment #1: Type: text/plain, Size: 1409 bytes --]

> I prefer this one.  Mostly because it restores old behaviour with
> respect to got relocs.  Also, at some stage I might change selected
> backends over to use just one section symbol (or the zero sym) for
> dynamic relocs.  If you're using a local G_O_T sym, I'll probably
> assume the sparc backend wants it that way for some arcane reason..

Fine with me, installed.

May I install the cleanup part of the discarded patch though?  The rationale 
for the SPARC 64-bit changes is to make the 64-bit code more similar to the 
32-bit code.


2005-01-09  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* elf32-sparc.c (elf32_sparc_link_hash_table_create): Use bfd_zmalloc
	to zero the structure.
	(create_got_section): Use BFD_ASSERT instead of abort.
	* elf64-sparc.c (struct sparc64_elf_link_hash_table): New 'sgot' and
	'srelgot' fields.
	(create_got_section): New function.
	(sparc64_elf_create_dynamic_sections): Likewise.
	(sparc64_elf_check_relocs): Invoke create_got_section instead of
	_bfd_elf_create_got_section.  Use the sgot and srelgot shortcuts.
	(sparc64_elf_size_dynamic_sections): Use the srelgot shortcut.
	(sparc64_elf_relocate_section): Use the sgot and srelgot shortcuts.
	(sparc64_elf_finish_dynamic_symbol): Likewise.
	(sparc64_elf_finish_dynamic_sections): Use the sgot shortcut.
	(elf_backend_create_dynamic_sections): Define to
	sparc64_elf_create_dynamic_sections.


-- 
Eric Botcazou

[-- Attachment #2: bfd_sparc_cleanup.diff --]
[-- Type: text/x-diff, Size: 7657 bytes --]

Index: elf32-sparc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-sparc.c,v
retrieving revision 1.77
diff -u -p -r1.77 elf32-sparc.c
--- elf32-sparc.c	9 Jan 2005 09:26:55 -0000	1.77
+++ elf32-sparc.c	9 Jan 2005 09:42:06 -0000
@@ -695,7 +695,7 @@ elf32_sparc_link_hash_table_create (abfd
   struct elf32_sparc_link_hash_table *ret;
   bfd_size_type amt = sizeof (struct elf32_sparc_link_hash_table);
 
-  ret = (struct elf32_sparc_link_hash_table *) bfd_malloc (amt);
+  ret = (struct elf32_sparc_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
     return NULL;
 
@@ -705,15 +705,6 @@ elf32_sparc_link_hash_table_create (abfd
       return NULL;
     }
 
-  ret->sgot = NULL;
-  ret->srelgot = NULL;
-  ret->splt = NULL;
-  ret->srelplt = NULL;
-  ret->sdynbss = NULL;
-  ret->srelbss = NULL;
-  ret->tls_ldm_got.refcount = 0;
-  ret->sym_sec.abfd = NULL;
-
   return &ret->elf.root;
 }
 
@@ -732,15 +723,16 @@ create_got_section (dynobj, info)
 
   htab = elf32_sparc_hash_table (info);
   htab->sgot = bfd_get_section_by_name (dynobj, ".got");
-  if (!htab->sgot)
-    abort ();
+  BFD_ASSERT (htab->sgot != NULL);
 
   htab->srelgot = bfd_make_section (dynobj, ".rela.got");
   if (htab->srelgot == NULL
-      || ! bfd_set_section_flags (dynobj, htab->srelgot,
-				  (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
-				   | SEC_IN_MEMORY | SEC_LINKER_CREATED
-				   | SEC_READONLY))
+      || ! bfd_set_section_flags (dynobj, htab->srelgot, SEC_ALLOC
+							 | SEC_LOAD
+							 | SEC_HAS_CONTENTS
+							 | SEC_IN_MEMORY
+							 | SEC_LINKER_CREATED
+							 | SEC_READONLY)
       || ! bfd_set_section_alignment (dynobj, htab->srelgot, 2))
     return FALSE;
   return TRUE;
Index: elf64-sparc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-sparc.c,v
retrieving revision 1.99
diff -u -p -r1.99 elf64-sparc.c
--- elf64-sparc.c	9 Jan 2005 09:26:55 -0000	1.99
+++ elf64-sparc.c	9 Jan 2005 09:42:07 -0000
@@ -36,6 +36,10 @@
 
 static struct bfd_link_hash_table * sparc64_elf_bfd_link_hash_table_create
   PARAMS ((bfd *));
+static bfd_boolean create_got_section
+  PARAMS ((bfd *, struct bfd_link_info *));
+static bfd_boolean sparc64_elf_create_dynamic_sections
+  PARAMS ((bfd *, struct bfd_link_info *));
 static bfd_reloc_status_type init_insn_reloc
   PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *,
 	   bfd *, bfd_vma *, bfd_vma *));
@@ -738,6 +742,10 @@ struct sparc64_elf_link_hash_table
 {
   struct elf_link_hash_table root;
 
+  /* Short-cuts to get to dynamic linker sections.  */
+  asection *sgot;
+  asection *srelgot;
+
   struct sparc64_elf_app_reg app_regs [4];
 };
 
@@ -768,6 +776,57 @@ sparc64_elf_bfd_link_hash_table_create (
 
   return &ret->root.root;
 }
+
+/* Create .got and .rela.got sections in DYNOBJ and set up
+   shortcuts to them in our hash table.  */
+
+static bfd_boolean
+create_got_section (dynobj, info)
+     bfd *dynobj;
+     struct bfd_link_info *info;
+{
+  struct sparc64_elf_link_hash_table *htab;
+
+  if (! _bfd_elf_create_got_section (dynobj, info))
+    return FALSE;
+
+  htab = sparc64_elf_hash_table (info);
+  htab->sgot = bfd_get_section_by_name (dynobj, ".got");
+  BFD_ASSERT (htab->sgot != NULL);
+
+  htab->srelgot = bfd_make_section (dynobj, ".rela.got");
+  if (htab->srelgot == NULL
+      || ! bfd_set_section_flags (dynobj, htab->srelgot, SEC_ALLOC
+							 | SEC_LOAD
+							 | SEC_HAS_CONTENTS
+							 | SEC_IN_MEMORY
+							 | SEC_LINKER_CREATED
+							 | SEC_READONLY)
+      || ! bfd_set_section_alignment (dynobj, htab->srelgot, 3))
+    return FALSE;
+  return TRUE;
+}
+
+/* Create .plt, .rela.plt, .got, .rela.got, .dynbss, and
+   .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
+   hash table.  */
+
+static bfd_boolean
+sparc64_elf_create_dynamic_sections (dynobj, info)
+     bfd *dynobj;
+     struct bfd_link_info *info;
+{
+  struct sparc64_elf_link_hash_table *htab;
+
+  htab = sparc64_elf_hash_table (info);
+  if (!htab->sgot && !create_got_section (dynobj, info))
+    return FALSE;
+
+  if (!_bfd_elf_create_dynamic_sections (dynobj, info))
+    return FALSE;
+
+  return TRUE;
+}
 \f
 /* Utility for performing the standard initial work of an instruction
    relocation.
@@ -1137,35 +1196,22 @@ sparc64_elf_check_relocs (abfd, info, se
 
 	  if (dynobj == NULL)
 	    {
-	      /* Create the .got section.  */
+	      /* Create the .got and .rela.got sections.  */
 	      elf_hash_table (info)->dynobj = dynobj = abfd;
-	      if (! _bfd_elf_create_got_section (dynobj, info))
+	      if (! create_got_section (dynobj, info))
 		return FALSE;
 	    }
 
 	  if (sgot == NULL)
 	    {
-	      sgot = bfd_get_section_by_name (dynobj, ".got");
+	      sgot = sparc64_elf_hash_table (info)->sgot;
 	      BFD_ASSERT (sgot != NULL);
 	    }
 
 	  if (srelgot == NULL && (h != NULL || info->shared))
 	    {
-	      srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
-	      if (srelgot == NULL)
-		{
-		  srelgot = bfd_make_section (dynobj, ".rela.got");
-		  if (srelgot == NULL
-		      || ! bfd_set_section_flags (dynobj, srelgot,
-						  (SEC_ALLOC
-						   | SEC_LOAD
-						   | SEC_HAS_CONTENTS
-						   | SEC_IN_MEMORY
-						   | SEC_LINKER_CREATED
-						   | SEC_READONLY))
-		      || ! bfd_set_section_alignment (dynobj, srelgot, 3))
-		    return FALSE;
-		}
+	      srelgot = sparc64_elf_hash_table (info)->srelgot;
+	      BFD_ASSERT (srelgot != NULL);
 	    }
 
 	  if (h != NULL)
@@ -1811,7 +1857,7 @@ sparc64_elf_size_dynamic_sections (outpu
          not actually use these entries.  Reset the size of .rela.got,
          which will cause it to get stripped from the output file
          below.  */
-      s = bfd_get_section_by_name (dynobj, ".rela.got");
+      s = sparc64_elf_hash_table (info)->srelgot;
       if (s != NULL)
 	s->size = 0;
     }
@@ -2324,7 +2370,7 @@ sparc64_elf_relocate_section (output_bfd
 	     offset table.  */
 	  if (sgot == NULL)
 	    {
-	      sgot = bfd_get_section_by_name (dynobj, ".got");
+	      sgot = sparc64_elf_hash_table (info)->sgot;
 	      BFD_ASSERT (sgot != NULL);
 	    }
 
@@ -2398,7 +2444,7 @@ sparc64_elf_relocate_section (output_bfd
 
 		      /* We need to generate a R_SPARC_RELATIVE reloc
 			 for the dynamic linker.  */
-		      s = bfd_get_section_by_name(dynobj, ".rela.got");
+		      s = sparc64_elf_hash_table (info)->srelgot;
 		      BFD_ASSERT (s != NULL);
 
 		      outrel.r_offset = (sgot->output_section->vma
@@ -2779,8 +2825,8 @@ sparc64_elf_finish_dynamic_symbol (outpu
 
       /* This symbol has an entry in the GOT.  Set it up.  */
 
-      sgot = bfd_get_section_by_name (dynobj, ".got");
-      srela = bfd_get_section_by_name (dynobj, ".rela.got");
+      sgot = sparc64_elf_hash_table (info)->sgot;
+      srela = sparc64_elf_hash_table (info)->srelgot;
       BFD_ASSERT (sgot != NULL && srela != NULL);
 
       rela.r_offset = (sgot->output_section->vma
@@ -2928,7 +2974,7 @@ sparc64_elf_finish_dynamic_sections (out
 
   /* Set the first entry in the global offset table to the address of
      the dynamic section.  */
-  sgot = bfd_get_section_by_name (dynobj, ".got");
+  sgot = sparc64_elf_hash_table (info)->sgot;
   BFD_ASSERT (sgot != NULL);
   if (sgot->size > 0)
     {
@@ -3206,7 +3252,7 @@ const struct elf_size_info sparc64_elf_s
   sparc64_elf_new_section_hook
 
 #define elf_backend_create_dynamic_sections \
-  _bfd_elf_create_dynamic_sections
+  sparc64_elf_create_dynamic_sections
 #define elf_backend_add_symbol_hook \
   sparc64_elf_add_symbol_hook
 #define elf_backend_get_symbol_type \

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2005-01-09  7:21           ` Alan Modra
  2005-01-09  9:56             ` Eric Botcazou
@ 2005-01-09 10:01             ` Jakub Jelinek
  1 sibling, 0 replies; 16+ messages in thread
From: Jakub Jelinek @ 2005-01-09 10:01 UTC (permalink / raw)
  To: Eric Botcazou, Hans-Peter Nilsson, binutils

On Sun, Jan 09, 2005 at 05:51:28PM +1030, Alan Modra wrote:
> On Thu, Jan 06, 2005 at 10:53:30PM +0100, Eric Botcazou wrote:
> > 	* elf32-sparc.c (elf32_sparc_omit_section_dynsym): New function.
> > 	(elf_backend_omit_section_dynsym): Define to it.
> > 	* elf64-sparc.c (sparc64_elf_omit_section_dynsym): New function.
> > 	(elf_backend_omit_section_dynsym): Define to it.	
> 
> I prefer this one.  Mostly because it restores old behaviour with
> respect to got relocs.  Also, at some stage I might change selected
> backends over to use just one section symbol (or the zero sym) for
> dynamic relocs.  If you're using a local G_O_T sym, I'll probably
> assume the sparc backend wants it that way for some arcane reason..

Yeah, after looking at both patches this one looks better.

	Jakub

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_
  2005-01-09  9:56             ` Eric Botcazou
@ 2005-01-09 10:03               ` Jakub Jelinek
  0 siblings, 0 replies; 16+ messages in thread
From: Jakub Jelinek @ 2005-01-09 10:03 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: Alan Modra, binutils, Hans-Peter Nilsson

On Sun, Jan 09, 2005 at 10:55:58AM +0100, Eric Botcazou wrote:
> May I install the cleanup part of the discarded patch though?  The rationale 
> for the SPARC 64-bit changes is to make the 64-bit code more similar to the 
> 32-bit code.

> 2005-01-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
> 
> 	* elf32-sparc.c (elf32_sparc_link_hash_table_create): Use bfd_zmalloc
> 	to zero the structure.
> 	(create_got_section): Use BFD_ASSERT instead of abort.
> 	* elf64-sparc.c (struct sparc64_elf_link_hash_table): New 'sgot' and
> 	'srelgot' fields.
> 	(create_got_section): New function.
> 	(sparc64_elf_create_dynamic_sections): Likewise.
> 	(sparc64_elf_check_relocs): Invoke create_got_section instead of
> 	_bfd_elf_create_got_section.  Use the sgot and srelgot shortcuts.
> 	(sparc64_elf_size_dynamic_sections): Use the srelgot shortcut.
> 	(sparc64_elf_relocate_section): Use the sgot and srelgot shortcuts.
> 	(sparc64_elf_finish_dynamic_symbol): Likewise.
> 	(sparc64_elf_finish_dynamic_sections): Use the sgot shortcut.
> 	(elf_backend_create_dynamic_sections): Define to
> 	sparc64_elf_create_dynamic_sections.

Yes, please.

	Jakub

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2005-01-09 10:03 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-29  4:37 [RFA:] elflink.c: Hide _GLOBAL_OFFSET_TABLE_ Hans-Peter Nilsson
2004-10-29  5:38 ` Alan Modra
2004-10-29 11:46   ` Hans-Peter Nilsson
2004-10-29 14:57     ` Alan Modra
2004-10-30 16:17       ` Hans-Peter Nilsson
2005-01-05 13:19   ` Eric Botcazou
2005-01-05 13:48     ` Hans-Peter Nilsson
2005-01-05 13:58       ` Jakub Jelinek
2005-01-05 14:32         ` Hans-Peter Nilsson
2005-01-06 21:59         ` Eric Botcazou
2005-01-07 13:12           ` Eric Botcazou
2005-01-09  7:21           ` Alan Modra
2005-01-09  9:56             ` Eric Botcazou
2005-01-09 10:03               ` Jakub Jelinek
2005-01-09 10:01             ` Jakub Jelinek
2004-11-02  5:46 ` Hans-Peter Nilsson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).