This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


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

Re: powerpc TLS support


Tweaks.  Mostly because some of the TLS tests I concocted for powerpc
have an invalid LD access to a TLS variable in a shared lib, and this
is the best we can do with such invalid LD relocs.

include/elf/ChangeLog
	* ppc64.h (IS_PPC64_TLS_RELOC): Rename from IS_TLS_RELOC.

bfd/ChangeLog
	* elf32-ppc.c (ppc_elf_relocate_section): Remove unnecessary test.
	* elf64-ppc.c (ppc64_elf_tls_optimize): Decrement tlsld_got.refcount
	on invalid LD relocs.
	(allocate_dynrelocs): Invalid LD relocs don't use tlsld_got entry.
	(ppc64_elf_relocate_section): Unify new handling of LD relocs and
	tlsld_got entry.  Use IS_PPC64_TLS_RELOC.

ld/testsuite/ChangeLog
	* ld-powerpc/tlsexe.d: Update for changed handling of invalid LD
	relocs.
	* ld-powerpc/tlsexe.g: Likewise.
	* ld-powerpc/tlsexe.r: Likewise.
	* ld-powerpc/tlsexe.t: Likewise.

Index: bfd/elf32-ppc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-ppc.c,v
retrieving revision 1.65
diff -u -p -w -r1.65 elf32-ppc.c
--- bfd/elf32-ppc.c	18 Feb 2003 06:06:17 -0000	1.65
+++ bfd/elf32-ppc.c	18 Feb 2003 07:00:56 -0000
@@ -4554,8 +4554,7 @@ ppc_elf_relocate_section (output_bfd, in
 
 	    indx = 0;
 	    if (tls_type == (TLS_TLS | TLS_LD)
-		&& ((tls_mask & TLS_LD) == 0
-		    || h == NULL
+		&& (h == NULL
 		    || !(h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC)))
 	      offp = &htab->tlsld_got.offset;
 	    else if (h != NULL)
Index: bfd/elf64-ppc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-ppc.c,v
retrieving revision 1.87
diff -u -p -w -r1.87 elf64-ppc.c
--- bfd/elf64-ppc.c	17 Feb 2003 22:57:54 -0000	1.87
+++ bfd/elf64-ppc.c	18 Feb 2003 07:01:00 -0000
@@ -5238,10 +5238,10 @@ ppc64_elf_tls_optimize (obfd, info)
 		    /* These relocs should never be against a symbol
 		       defined in a shared lib.  Leave them alone if
 		       that turns out to be the case.  */
+		    htab->tlsld_got.refcount -= 1;
 		    if (!is_local)
 		      continue;
 
-		    htab->tlsld_got.refcount -= 1;
 		    /* LD -> LE */
 		    tls_set = 0;
 		    tls_clear = TLS_LD;
@@ -5559,7 +5559,8 @@ allocate_dynrelocs (h, inf)
 	      return FALSE;
 	  }
 
-	if ((gent->tls_type & TLS_LD) != 0)
+	if ((gent->tls_type & TLS_LD) != 0
+	    && !(h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC))
 	  {
 	    gent->got.offset = htab->tlsld_got.offset;
 	    continue;
@@ -5567,7 +5568,8 @@ allocate_dynrelocs (h, inf)
 
 	s = htab->sgot;
 	gent->got.offset = s->_raw_size;
-	s->_raw_size += (gent->tls_type & eh->tls_mask & TLS_GD) ? 16 : 8;
+	s->_raw_size
+	  += (gent->tls_type & eh->tls_mask & (TLS_GD | TLS_LD)) ? 16 : 8;
 	dyn = htab->elf.dynamic_sections_created;
 	if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h))
 	  htab->srelgot->_raw_size
@@ -6961,26 +6963,6 @@ ppc64_elf_relocate_section (output_bfd, 
     ppc_howto_init ();
 
   htab = ppc_hash_table (info);
-  if ((htab->tlsld_got.offset & 1) == 0)
-    {
-      if (info->shared)
-	{
-	  outrel.r_offset = (htab->sgot->output_section->vma
-			     + htab->sgot->output_offset
-			     + htab->tlsld_got.offset);
-	  outrel.r_info = ELF64_R_INFO (0, R_PPC64_DTPMOD64);
-	  outrel.r_addend = 0;
-
-	  loc = htab->srelgot->contents;
-	  loc += htab->srelgot->reloc_count++ * sizeof (Elf64_External_Rela);
-	  bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc);
-	}
-      else
-	bfd_put_64 (output_bfd, (bfd_vma) 1,
-		    htab->sgot->contents + htab->tlsld_got.offset);
-
-      htab->tlsld_got.offset |= 1;
-    }
   local_got_ents = elf_local_got_ents (input_bfd);
   TOCstart = elf_gp (output_bfd);
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
@@ -7087,7 +7069,7 @@ ppc64_elf_relocate_section (output_bfd, 
 	 for the final instruction stream.  */
       tls_mask = 0;
       tls_gd = 0;
-      if (IS_TLS_RELOC (r_type))
+      if (IS_PPC64_TLS_RELOC (r_type))
 	{
 	  if (h != NULL)
 	    tls_mask = ((struct ppc_link_hash_entry *) h)->tls_mask;
@@ -7565,31 +7547,21 @@ ppc64_elf_relocate_section (output_bfd, 
 	  {
 	    /* Relocation is to the entry for this symbol in the global
 	       offset table.  */
-	    struct got_entry *ent;
+	    bfd_vma *offp;
 	    bfd_vma off;
-	    unsigned long indx;
+	    unsigned long indx = 0;
 
 	    if (htab->sgot == NULL)
 	      abort ();
 
-	    if (h != NULL)
-	      ent = h->got.glist;
+	    if (tls_type == (TLS_TLS | TLS_LD)
+		&& (h == NULL
+		    || !(h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC)))
+	      offp = &htab->tlsld_got.offset;
 	    else
 	      {
-		if (local_got_ents == NULL)
-		  abort ();
-		ent = local_got_ents[r_symndx];
-	      }
-
-	    for (; ent != NULL; ent = ent->next)
-	      if (ent->addend == rel->r_addend
-		  && ent->tls_type == tls_type)
-		break;
-	    if (ent == NULL)
-	      abort ();
+		struct got_entry *ent;
 
-	    off = ent->got.offset;
-	    indx = 0;
 	    if (h != NULL)
 	      {
 		bfd_boolean dyn = htab->elf.dynamic_sections_created;
@@ -7611,11 +7583,28 @@ ppc64_elf_relocate_section (output_bfd, 
 		    indx = h->dynindx;
 		    unresolved_reloc = FALSE;
 		  }
+		    ent = h->got.glist;
+		  }
+		else
+		  {
+		    if (local_got_ents == NULL)
+		      abort ();
+		    ent = local_got_ents[r_symndx];
+		  }
+
+		for (; ent != NULL; ent = ent->next)
+		  if (ent->addend == rel->r_addend
+		      && ent->tls_type == tls_type)
+		    break;
+		if (ent == NULL)
+		  abort ();
+		offp = &ent->got.offset;
 	      }
 
 	    /* The offset must always be a multiple of 8.  We use the
 	       least significant bit to record whether we have already
 	       processed this entry.  */
+	    off = *offp;
 	    if ((off & 1) != 0)
 	      off &= ~1;
 	    else
@@ -7623,23 +7612,28 @@ ppc64_elf_relocate_section (output_bfd, 
 		/* Generate relocs for the dynamic linker, except in
 		   the case of TLSLD where we'll use one entry per
 		   module.  */
-		if ((info->shared || indx != 0)
-		    && tls_type != (TLS_TLS | TLS_LD))
+		*offp = off | 1;
+		if (info->shared || indx != 0)
 		  {
 		    outrel.r_offset = (htab->sgot->output_section->vma
 				       + htab->sgot->output_offset
 				       + off);
-		    if (tls_type == (TLS_TLS | TLS_GD))
+		    if (tls_type & (TLS_LD | TLS_GD))
 		      {
 			outrel.r_info = ELF64_R_INFO (indx, R_PPC64_DTPMOD64);
 			outrel.r_addend = 0;
+			if (tls_type == (TLS_TLS | TLS_GD))
+			  {
 			loc = htab->srelgot->contents;
 			loc += (htab->srelgot->reloc_count++
 				* sizeof (Elf64_External_Rela));
-			bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc);
-			outrel.r_info = ELF64_R_INFO (indx, R_PPC64_DTPREL64);
+			    bfd_elf64_swap_reloca_out (output_bfd,
+						       &outrel, loc);
+			    outrel.r_info
+			      = ELF64_R_INFO (indx, R_PPC64_DTPREL64);
 			outrel.r_offset += 8;
 		      }
+		      }
 		    else if (tls_type == (TLS_TLS | TLS_DTPREL))
 		      outrel.r_info = ELF64_R_INFO (indx, R_PPC64_DTPREL64);
 		    else if (tls_type == (TLS_TLS | TLS_TPREL))
@@ -7659,10 +7653,9 @@ ppc64_elf_relocate_section (output_bfd, 
 
 		/* Init the .got section contents if we're not
 		   emitting a reloc.  */
-		if (!(info->shared || indx != 0)
-		    && tls_type != (TLS_TLS | TLS_LD))
+		else
 		  {
-		    relocation += ent->addend;
+		    relocation += rel->r_addend;
 		    if (tls_type != 0)
 		      {
 			relocation -= htab->tls_sec->vma + DTP_OFFSET;
@@ -7676,10 +7669,11 @@ ppc64_elf_relocate_section (output_bfd, 
 				    htab->sgot->contents + off + 8);
 			relocation = 1;
 		      }
+		    else if (tls_type == (TLS_TLS | TLS_LD))
+		      relocation = 1;
 		    bfd_put_64 (output_bfd, relocation,
 				htab->sgot->contents + off);
 		  }
-		ent->got.offset |= 1;
 	      }
 
 	    if (off >= (bfd_vma) -2)
Index: ld/testsuite/ld-powerpc/tlsexe.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe.d,v
retrieving revision 1.2
diff -u -p -r1.2 tlsexe.d
--- ld/testsuite/ld-powerpc/tlsexe.d	9 Feb 2003 04:37:04 -0000	1.2
+++ ld/testsuite/ld-powerpc/tlsexe.d	18 Feb 2003 07:48:55 -0000
@@ -8,61 +8,61 @@
 
 Disassembly of section \.text:
 
-0+10000390 <_start-0x1c>:
-    10000390:	3d 82 00 00 	addis	r12,r2,0
-    10000394:	f8 41 00 28 	std	r2,40\(r1\)
-    10000398:	e9 6c 80 48 	ld	r11,-32696\(r12\)
-    1000039c:	e8 4c 80 50 	ld	r2,-32688\(r12\)
-    100003a0:	7d 69 03 a6 	mtctr	r11
-    100003a4:	e9 6c 80 58 	ld	r11,-32680\(r12\)
-    100003a8:	4e 80 04 20 	bctr
+.* <_start-0x1c>:
+.*	3d 82 00 00 	addis	r12,r2,0
+.*	f8 41 00 28 	std	r2,40\(r1\)
+.*	e9 6c 80 48 	ld	r11,-32696\(r12\)
+.*	e8 4c 80 50 	ld	r2,-32688\(r12\)
+.*	7d 69 03 a6 	mtctr	r11
+.*	e9 6c 80 58 	ld	r11,-32680\(r12\)
+.*	4e 80 04 20 	bctr
 
-0+100003ac <_start>:
-    100003ac:	e8 62 80 20 	ld	r3,-32736\(r2\)
-    100003b0:	60 00 00 00 	nop
-    100003b4:	7c 63 6a 14 	add	r3,r3,r13
-    100003b8:	38 62 80 08 	addi	r3,r2,-32760
-    100003bc:	4b ff ff d5 	bl	10000390 <le1\+0x10000328>
-    100003c0:	e8 41 00 28 	ld	r2,40\(r1\)
-    100003c4:	3c 6d 00 00 	addis	r3,r13,0
-    100003c8:	60 00 00 00 	nop
-    100003cc:	38 63 90 38 	addi	r3,r3,-28616
-    100003d0:	3c 6d 00 00 	addis	r3,r13,0
-    100003d4:	60 00 00 00 	nop
-    100003d8:	38 63 10 00 	addi	r3,r3,4096
-    100003dc:	39 23 80 40 	addi	r9,r3,-32704
-    100003e0:	3d 23 00 00 	addis	r9,r3,0
-    100003e4:	81 49 80 48 	lwz	r10,-32696\(r9\)
-    100003e8:	e9 22 80 28 	ld	r9,-32728\(r2\)
-    100003ec:	7d 49 18 2a 	ldx	r10,r9,r3
-    100003f0:	3d 2d 00 00 	addis	r9,r13,0
-    100003f4:	a1 49 90 58 	lhz	r10,-28584\(r9\)
-    100003f8:	89 4d 90 60 	lbz	r10,-28576\(r13\)
-    100003fc:	3d 2d 00 00 	addis	r9,r13,0
-    10000400:	99 49 90 68 	stb	r10,-28568\(r9\)
-    10000404:	3c 6d 00 00 	addis	r3,r13,0
-    10000408:	60 00 00 00 	nop
-    1000040c:	38 63 90 00 	addi	r3,r3,-28672
-    10000410:	3c 6d 00 00 	addis	r3,r13,0
-    10000414:	60 00 00 00 	nop
-    10000418:	38 63 10 00 	addi	r3,r3,4096
-    1000041c:	f9 43 80 08 	std	r10,-32760\(r3\)
-    10000420:	3d 23 00 00 	addis	r9,r3,0
-    10000424:	91 49 80 10 	stw	r10,-32752\(r9\)
-    10000428:	e9 22 80 18 	ld	r9,-32744\(r2\)
-    1000042c:	7d 49 19 2a 	stdx	r10,r9,r3
-    10000430:	3d 2d 00 00 	addis	r9,r13,0
-    10000434:	b1 49 90 58 	sth	r10,-28584\(r9\)
-    10000438:	e9 4d 90 2a 	lwa	r10,-28632\(r13\)
-    1000043c:	3d 2d 00 00 	addis	r9,r13,0
-    10000440:	a9 49 90 30 	lha	r10,-28624\(r9\)
-    10000444:	e8 41 00 28 	ld	r2,40\(r1\)
-    10000448:	3d 82 00 00 	addis	r12,r2,0
-    1000044c:	e9 6c 80 30 	ld	r11,-32720\(r12\)
-    10000450:	e8 4c 80 38 	ld	r2,-32712\(r12\)
-    10000454:	7d 69 03 a6 	mtctr	r11
-    10000458:	e9 6c 80 40 	ld	r11,-32704\(r12\)
-    1000045c:	4e 80 04 20 	bctr
-    10000460:	60 00 00 00 	nop
-    10000464:	38 00 00 00 	li	r0,0
-    10000468:	4b ff ff dc 	b	10000444 <_start\+0x98>
+.* <_start>:
+.*	e8 62 80 10 	ld	r3,-32752\(r2\)
+.*	60 00 00 00 	nop
+.*	7c 63 6a 14 	add	r3,r3,r13
+.*	38 62 80 18 	addi	r3,r2,-32744
+.*	4b ff ff d5 	bl	.*
+.*	e8 41 00 28 	ld	r2,40\(r1\)
+.*	3c 6d 00 00 	addis	r3,r13,0
+.*	60 00 00 00 	nop
+.*	38 63 90 38 	addi	r3,r3,-28616
+.*	3c 6d 00 00 	addis	r3,r13,0
+.*	60 00 00 00 	nop
+.*	38 63 10 00 	addi	r3,r3,4096
+.*	39 23 80 40 	addi	r9,r3,-32704
+.*	3d 23 00 00 	addis	r9,r3,0
+.*	81 49 80 48 	lwz	r10,-32696\(r9\)
+.*	e9 22 80 28 	ld	r9,-32728\(r2\)
+.*	7d 49 18 2a 	ldx	r10,r9,r3
+.*	3d 2d 00 00 	addis	r9,r13,0
+.*	a1 49 90 58 	lhz	r10,-28584\(r9\)
+.*	89 4d 90 60 	lbz	r10,-28576\(r13\)
+.*	3d 2d 00 00 	addis	r9,r13,0
+.*	99 49 90 68 	stb	r10,-28568\(r9\)
+.*	3c 6d 00 00 	addis	r3,r13,0
+.*	60 00 00 00 	nop
+.*	38 63 90 00 	addi	r3,r3,-28672
+.*	3c 6d 00 00 	addis	r3,r13,0
+.*	60 00 00 00 	nop
+.*	38 63 10 00 	addi	r3,r3,4096
+.*	f9 43 80 08 	std	r10,-32760\(r3\)
+.*	3d 23 00 00 	addis	r9,r3,0
+.*	91 49 80 10 	stw	r10,-32752\(r9\)
+.*	e9 22 80 08 	ld	r9,-32760\(r2\)
+.*	7d 49 19 2a 	stdx	r10,r9,r3
+.*	3d 2d 00 00 	addis	r9,r13,0
+.*	b1 49 90 58 	sth	r10,-28584\(r9\)
+.*	e9 4d 90 2a 	lwa	r10,-28632\(r13\)
+.*	3d 2d 00 00 	addis	r9,r13,0
+.*	a9 49 90 30 	lha	r10,-28624\(r9\)
+.*	e8 41 00 28 	ld	r2,40\(r1\)
+.*	3d 82 00 00 	addis	r12,r2,0
+.*	e9 6c 80 30 	ld	r11,-32720\(r12\)
+.*	e8 4c 80 38 	ld	r2,-32712\(r12\)
+.*	7d 69 03 a6 	mtctr	r11
+.*	e9 6c 80 40 	ld	r11,-32704\(r12\)
+.*	4e 80 04 20 	bctr
+.*	60 00 00 00 	nop
+.*	38 00 00 00 	li	r0,0
+.*	4b ff ff dc 	b	.*
Index: ld/testsuite/ld-powerpc/tlsexe.g
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe.g,v
retrieving revision 1.3
diff -u -p -r1.3 tlsexe.g
--- ld/testsuite/ld-powerpc/tlsexe.g	17 Feb 2003 22:49:53 -0000	1.3
+++ ld/testsuite/ld-powerpc/tlsexe.g	18 Feb 2003 07:48:55 -0000
@@ -7,6 +7,6 @@
 .*: +file format elf64-powerpc
 
 Contents of section \.got:
- 100105f8 00000000 100185f8 00000000 00000001  .*
- 10010608 00000000 00000000 ffffffff ffff8018  .*
- 10010618 00000000 00000000 00000000 00000000  .*
+ 10010610 00000000 10018610 ffffffff ffff8018  .*
+ 10010620 00000000 00000000 00000000 00000000  .*
+ 10010630 00000000 00000000 00000000 00000000  .*
Index: ld/testsuite/ld-powerpc/tlsexe.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe.r,v
retrieving revision 1.2
diff -u -p -r1.2 tlsexe.r
--- ld/testsuite/ld-powerpc/tlsexe.r	9 Feb 2003 04:37:04 -0000	1.2
+++ ld/testsuite/ld-powerpc/tlsexe.r	18 Feb 2003 07:48:55 -0000
@@ -14,27 +14,27 @@ Section Headers:
  +\[ 2\] \.hash +HASH +0+100001a8 0+1a8 0+40 04 +A +3 +0 +8
  +\[ 3\] \.dynsym +DYNSYM +0+100001e8 0+1e8 0+108 18 +A +4 +1 +8
  +\[ 4\] \.dynstr +STRTAB +0+100002f0 0+2f0 0+51 0+ +A +0 +0 +1
- +\[ 5\] \.rela\.dyn +RELA +0+10000348 0+348 0+30 18 +A +3 +0 +8
- +\[ 6\] \.rela\.plt +RELA +0+10000378 0+378 0+18 18 +A +3 +11 +8
- +\[ 7\] \.text +PROGBITS +0+10000390 0+390 0+dc 0+ +AX +0 +0 +4
- +\[ 8\] \.data +PROGBITS +0+10010470 0+470 0+ 0+ +WA +0 +0 +1
- +\[ 9\] \.branch_lt +PROGBITS +0+10010470 0+470 0+ 0+ +WA +0 +0 +8
- +\[10\] \.tdata +PROGBITS +0+10010470 0+470 0+38 0+ WAT +0 +0 +8
- +\[11\] \.tbss +NOBITS +0+100104a8 0+4a8 0+38 0+ WAT +0 +0 +8
- +\[12\] \.dynamic +DYNAMIC +0+100104a8 0+4a8 0+150 10 +WA +4 +0 +8
- +\[13\] \.ctors +PROGBITS +0+100105f8 0+628 0+ 0+ +W +0 +0 +1
- +\[14\] \.dtors +PROGBITS +0+100105f8 0+628 0+ 0+ +W +0 +0 +1
- +\[15\] \.got +PROGBITS +0+100105f8 0+5f8 0+30 08 +WA +0 +0 +8
- +\[16\] \.sbss +PROGBITS +0+10010628 0+628 0+ 0+ +W +0 +0 +1
- +\[17\] \.plt +NOBITS +0+10010628 0+628 0+30 18 +WA +0 +0 +8
- +\[18\] \.bss +NOBITS +0+10010658 0+628 0+ 0+ +WA +0 +0 +1
- +\[19\] \.shstrtab +STRTAB +0+ 0+628 0+98 0+ +0 +0 +1
- +\[20\] \.symtab +SYMTAB +0+ 0+c40 0+450 18 +21 +1d +8
- +\[21\] \.strtab +STRTAB +0+ 0+1090 0+8c 0+ +0 +0 +1
+ +\[ 5\] \.rela\.dyn +RELA +0+10000348 0+348 0+48 18 +A +3 +0 +8
+ +\[ 6\] \.rela\.plt +RELA +0+10000390 0+390 0+18 18 +A +3 +11 +8
+ +\[ 7\] \.text +PROGBITS +0+100003a8 0+3a8 0+dc 0+ +AX +0 +0 +4
+ +\[ 8\] \.data +PROGBITS +0+10010488 0+488 0+ 0+ +WA +0 +0 +1
+ +\[ 9\] \.branch_lt +PROGBITS +0+10010488 0+488 0+ 0+ +WA +0 +0 +8
+ +\[10\] \.tdata +PROGBITS +0+10010488 0+488 0+38 0+ WAT +0 +0 +8
+ +\[11\] \.tbss +NOBITS +0+100104c0 0+4c0 0+38 0+ WAT +0 +0 +8
+ +\[12\] \.dynamic +DYNAMIC +0+100104c0 0+4c0 0+150 10 +WA +4 +0 +8
+ +\[13\] \.ctors +PROGBITS +0+10010610 0+640 0+ 0+ +W +0 +0 +1
+ +\[14\] \.dtors +PROGBITS +0+10010610 0+640 0+ 0+ +W +0 +0 +1
+ +\[15\] \.got +PROGBITS +0+10010610 0+610 0+30 08 +WA +0 +0 +8
+ +\[16\] \.sbss +PROGBITS +0+10010640 0+640 0+ 0+ +W +0 +0 +1
+ +\[17\] \.plt +NOBITS +0+10010640 0+640 0+30 18 +WA +0 +0 +8
+ +\[18\] \.bss +NOBITS +0+10010670 0+640 0+ 0+ +WA +0 +0 +1
+ +\[19\] \.shstrtab +STRTAB +0+ 0+640 0+98 0+ +0 +0 +1
+ +\[20\] \.symtab +SYMTAB +0+ 0+c58 0+450 18 +21 +1d +8
+ +\[21\] \.strtab +STRTAB +0+ 0+10a8 0+8c 0+ +0 +0 +1
 #...
 
 Elf file type is EXEC \(Executable file\)
-Entry point 0x100003ac
+Entry point 0x100003c4
 There are 6 program headers.*
 
 Program Headers:
@@ -42,10 +42,10 @@ Program Headers:
  +PHDR +0x0+40 0x0+10000040 0x0+10000040 0x0+150 0x0+150 R E 0x8
  +INTERP +0x0+190 0x0+10000190 0x0+10000190 0x0+11 0x0+11 R +0x1
  +\[Requesting program interpreter: .*\]
- +LOAD +0x0+ 0x0+10000000 0x0+10000000 0x0+46c 0x0+46c R E 0x10000
- +LOAD +0x0+470 0x0+10010470 0x0+10010470 0x0+1b8 0x0+1e8 RW +0x10000
- +DYNAMIC +0x0+4a8 0x0+100104a8 0x0+100104a8 0x0+150 0x0+150 RW +0x8
- +TLS +0x0+470 0x0+10010470 0x0+10010470 0x0+38 0x0+70 R +0x8
+ +LOAD +0x0+ 0x0+10000000 0x0+10000000 0x0+484 0x0+484 R E 0x10000
+ +LOAD +0x0+488 0x0+10010488 0x0+10010488 0x0+1b8 0x0+1e8 RW +0x10000
+ +DYNAMIC +0x0+4c0 0x0+100104c0 0x0+100104c0 0x0+150 0x0+150 RW +0x8
+ +TLS +0x0+488 0x0+10010488 0x0+10010488 0x0+38 0x0+70 R +0x8
 
  Section to Segment mapping:
  +Segment Sections\.\.\.
@@ -56,28 +56,29 @@ Program Headers:
  +04 +\.tbss \.dynamic 
  +05 +\.tdata \.tbss 
 
-Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
+Relocation section '\.rela\.dyn' at offset .* contains 3 entries:
  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
-0+10010618 +0+200000049 R_PPC64_TPREL64 +0+ gd \+ 0
-0+10010620 +0+70000004e R_PPC64_DTPREL64 +0+50 ld2 \+ 0
+0+10010620 +0+200000049 R_PPC64_TPREL64 +0+ gd \+ 0
+0+10010628 +0+500000044 R_PPC64_DTPMOD64 +0+ ld \+ 0
+0+10010638 +0+70000004e R_PPC64_DTPREL64 +0+50 ld2 \+ 0
 
 Relocation section '\.rela\.plt' at offset .* contains 1 entries:
  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
-0+10010640 +0+300000015 R_PPC64_JMP_SLOT +0+ __tls_get_addr \+ 0
+0+10010658 +0+300000015 R_PPC64_JMP_SLOT +0+ __tls_get_addr \+ 0
 
 Symbol table '\.dynsym' contains 11 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
  +0: 0+ +0 NOTYPE +LOCAL +DEFAULT +UND 
- +1: 0+100104a8 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +1: 0+100104c0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
  +2: 0+ +0 TLS +GLOBAL DEFAULT +UND gd
  +3: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr
  +4: 0+ +0 FUNC +GLOBAL DEFAULT +UND \.__tls_get_addr
  +5: 0+ +0 TLS +GLOBAL DEFAULT +UND ld
- +6: 0+10010658 +0 NOTYPE +GLOBAL DEFAULT +ABS __end
+ +6: 0+10010670 +0 NOTYPE +GLOBAL DEFAULT +ABS __end
  +7: 0+50 +0 TLS +GLOBAL DEFAULT +11 ld2
- +8: 0+10010628 +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
- +9: 0+10010628 +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +10: 0+10010658 +0 NOTYPE +GLOBAL DEFAULT +ABS _end
+ +8: 0+10010640 +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
+ +9: 0+10010640 +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
+ +10: 0+10010670 +0 NOTYPE +GLOBAL DEFAULT +ABS _end
 
 Symbol table '\.symtab' contains 46 entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
@@ -87,19 +88,19 @@ Symbol table '\.symtab' contains 46 entr
  +3: 0+100001e8 +0 SECTION LOCAL +DEFAULT +3 
  +4: 0+100002f0 +0 SECTION LOCAL +DEFAULT +4 
  +5: 0+10000348 +0 SECTION LOCAL +DEFAULT +5 
- +6: 0+10000378 +0 SECTION LOCAL +DEFAULT +6 
- +7: 0+10000390 +0 SECTION LOCAL +DEFAULT +7 
- +8: 0+10010470 +0 SECTION LOCAL +DEFAULT +8 
- +9: 0+10010470 +0 SECTION LOCAL +DEFAULT +9 
- +10: 0+10010470 +0 SECTION LOCAL +DEFAULT +10 
- +11: 0+100104a8 +0 SECTION LOCAL +DEFAULT +11 
- +12: 0+100104a8 +0 SECTION LOCAL +DEFAULT +12 
- +13: 0+100105f8 +0 SECTION LOCAL +DEFAULT +13 
- +14: 0+100105f8 +0 SECTION LOCAL +DEFAULT +14 
- +15: 0+100105f8 +0 SECTION LOCAL +DEFAULT +15 
- +16: 0+10010628 +0 SECTION LOCAL +DEFAULT +16 
- +17: 0+10010628 +0 SECTION LOCAL +DEFAULT +17 
- +18: 0+10010658 +0 SECTION LOCAL +DEFAULT +18 
+ +6: 0+10000390 +0 SECTION LOCAL +DEFAULT +6 
+ +7: 0+100003a8 +0 SECTION LOCAL +DEFAULT +7 
+ +8: 0+10010488 +0 SECTION LOCAL +DEFAULT +8 
+ +9: 0+10010488 +0 SECTION LOCAL +DEFAULT +9 
+ +10: 0+10010488 +0 SECTION LOCAL +DEFAULT +10 
+ +11: 0+100104c0 +0 SECTION LOCAL +DEFAULT +11 
+ +12: 0+100104c0 +0 SECTION LOCAL +DEFAULT +12 
+ +13: 0+10010610 +0 SECTION LOCAL +DEFAULT +13 
+ +14: 0+10010610 +0 SECTION LOCAL +DEFAULT +14 
+ +15: 0+10010610 +0 SECTION LOCAL +DEFAULT +15 
+ +16: 0+10010640 +0 SECTION LOCAL +DEFAULT +16 
+ +17: 0+10010640 +0 SECTION LOCAL +DEFAULT +17 
+ +18: 0+10010670 +0 SECTION LOCAL +DEFAULT +18 
  +19: 0+ +0 SECTION LOCAL +DEFAULT +19 
  +20: 0+ +0 SECTION LOCAL +DEFAULT +20 
  +21: 0+ +0 SECTION LOCAL +DEFAULT +21 
@@ -110,7 +111,7 @@ Symbol table '\.symtab' contains 46 entr
  +26: 0+20 +0 TLS +LOCAL +DEFAULT +10 ie4
  +27: 0+28 +0 TLS +LOCAL +DEFAULT +10 le4
  +28: 0+30 +0 TLS +LOCAL +DEFAULT +10 le5
- +29: 0+100104a8 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
+ +29: 0+100104c0 +0 OBJECT +GLOBAL DEFAULT +ABS _DYNAMIC
  +30: 0+ +0 TLS +GLOBAL DEFAULT +UND gd
  +31: 0+60 +0 TLS +GLOBAL DEFAULT +11 le0
  +32: 0+ +0 NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr
@@ -118,12 +119,12 @@ Symbol table '\.symtab' contains 46 entr
  +34: 0+40 +0 TLS +GLOBAL DEFAULT +11 ld0
  +35: 0+68 +0 TLS +GLOBAL DEFAULT +11 le1
  +36: 0+ +0 TLS +GLOBAL DEFAULT +UND ld
- +37: 0+100003ac +0 NOTYPE +GLOBAL DEFAULT +7 _start
- +38: 0+10010658 +0 NOTYPE +GLOBAL DEFAULT +ABS __end
+ +37: 0+100003c4 +0 NOTYPE +GLOBAL DEFAULT +7 _start
+ +38: 0+10010670 +0 NOTYPE +GLOBAL DEFAULT +ABS __end
  +39: 0+50 +0 TLS +GLOBAL DEFAULT +11 ld2
  +40: 0+48 +0 TLS +GLOBAL DEFAULT +11 ld1
- +41: 0+10010628 +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
- +42: 0+10010628 +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
- +43: 0+10010658 +0 NOTYPE +GLOBAL DEFAULT +ABS _end
+ +41: 0+10010640 +0 NOTYPE +GLOBAL DEFAULT +ABS __bss_start
+ +42: 0+10010640 +0 NOTYPE +GLOBAL DEFAULT +ABS _edata
+ +43: 0+10010670 +0 NOTYPE +GLOBAL DEFAULT +ABS _end
  +44: 0+38 +0 TLS +GLOBAL DEFAULT +11 gd0
  +45: 0+58 +0 TLS +GLOBAL DEFAULT +11 ie0
Index: ld/testsuite/ld-powerpc/tlsexe.t
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsexe.t,v
retrieving revision 1.2
diff -u -p -r1.2 tlsexe.t
--- ld/testsuite/ld-powerpc/tlsexe.t	9 Feb 2003 04:37:04 -0000	1.2
+++ ld/testsuite/ld-powerpc/tlsexe.t	18 Feb 2003 07:48:55 -0000
@@ -7,7 +7,7 @@
 .*: +file format elf64-powerpc
 
 Contents of section \.tdata:
- 10010470 12345678 9abcdef0 23456789 abcdef01  .*
- 10010480 3456789a bcdef012 456789ab cdef0123  .*
- 10010490 56789abc def01234 6789abcd ef012345  .*
- 100104a0 789abcde f0123456                    .*
+ .* 12345678 9abcdef0 23456789 abcdef01  .*
+ .* 3456789a bcdef012 456789ab cdef0123  .*
+ .* 56789abc def01234 6789abcd ef012345  .*
+ .* 789abcde f0123456                    .*

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


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