Dynamic section symbols, ignored output sections

Alan Modra amodra@bigpond.net.au
Tue Oct 17 16:02:00 GMT 2006


On Thu, Oct 12, 2006 at 01:13:41PM +0930, Alan Modra wrote:
> a) Detecting a symbol assignment in a linker script should result in the
>    section alignment and vma being honoured.
> b) All the ELF backends will need changes so that removed output section
>    syms are never used when emitting relocs.  At the same time, we may
>    as well just use one section sym for all relocs (or two for targets
>    that might want to relocate the data segment separately from the text
>    segment).
> c) _bfd_fix_excluded_sec_syms should be changed to not create absolute
>    syms.

This patch does all of the above, plus adjusts the ld testsuite for
the changes.  A number of ELF targets will now use no dynamic section
symbols while others will just use one (or two when TLS is involved).
I started looking at FRV, and decided to leave the dyn sym change to a
target maintainer because it seemed likely to me that I'd break
something..  I also won't commit the S+core patch included here until
I get the OK from Mei Ligang;  It changes elf32-score.c to use the
zero index symbol on dynamic relocations rather than use section
symbols.  This is desirable on a new target as it should speed ld.so
slightly, but of course the dynamic linker support needs to be
available.


bfd/
	* elf-bfd.h (struct elf_link_hash_table): Reorder.  Add
	text_index_section and data_index_section.
	(struct elf_backend_data): Add elf_backend_init_index_section.
	(_bfd_elf_init_1_index_section): Declare.
	(_bfd_elf_init_2_index_sections): Declare.
	* elfxx-target.h (elf_backend_init_index_section): Define.
	(elfNN_bed): Init new field.
	* elflink.c (_bfd_elf_link_omit_section_dynsym): Keep first tls
	section and text_index_section plus data_index_section.
	(_bfd_elf_link_renumber_dynsyms): Clear dynindx on omitted sections.
	(_bfd_elf_init_1_index_section): New function.
	(_bfd_elf_init_2_index_sections): New function.
	(bfd_elf_size_dynsym_hash_dynstr): Call elf_backend_init_index_section.
	(elf_link_input_bfd): When emitting relocs, use text_index_section
	and data_index_section for removed sections.
	* elf-m10300.c (elf_backend_omit_section_dynsym): Define.
	* elf32-i386.c: Likewise.
	* elf32-m32r.c: Likewise.
	* elf32-sh.c: Likewise.
	* elf32-xstormy16.c: Likewise.
	* elf32-xtensa.c: Likewise.
	* elf64-alpha.c: Likewise.
	* elf64-hppa.c: Likewise.
	* elf64-mmix.c: Likewise.
	* elf64-sh64.c: Likewise.
	* elfxx-ia64.c: Likewise.
	* elf32-score.c: Likewise.  Formatting.
	(score_elf_create_dynamic_relocation): Remove code copied from mips.
	Don't use section syms in dynamic relocs.  Remove unused param.
	(score_elf_final_link_relocate): Remove unused param.
	* elf32-arm.c (elf32_arm_final_link_relocate): Use text_index_section
	and data_index_section sym for relocs against sections with no dynamic
	section sym.
	(elf_backend_init_index_section): Define.
	* elf32-cris.c: Similarly.
	* elf32-hppa.c: Similarly.
	* elf32-i370.c: Similarly.
	* elf32-m68k.c: Similarly.
	* elf32-mips.c: Similarly.
	* elf32-ppc.c: Similarly.
	* elf32-s390.c: Similarly.
	* elf32-sparc.c: Similarly.
	* elf32-vax.c: Similarly.
	* elf64-mips.c: Similarly.
	* elf64-ppc.c: Similarly.
	* elf64-s390.c: Similarly.
	* elf64-sparc.c: Similarly.
	* elf64-x86-64.c: Similarly.
	* elfn32-mips.c: Similarly.
	* elfxx-mips.c: Similarly.
	* elfxx-sparc.c: Similarly.
	* linker.c (fix_syms): Base symbols in removed sections on
	previous section in preference to using absolute section.

ld/
	* ldlang.c (strip_excluded_output_sections): Do strip sections
	that define syms, but don't ignore them.
	* ld.texinfo (Output Section Discarding): Revise.
	* emultempl/armcoff.em (gld${EMULATION_NAME}_finish): Always call
	finish_default.

ld/testsuite/
	* ld-arm/mixed-app.sym, ld-cris/ldsym1.d, ld-cris/libdso-12.d,
	ld-cris/v32-ba-1.d, ld-elf/orphan.d, ld-elf/orphan2.d,
	ld-i386/tlsbin.rd, ld-i386/tlsbindesc.rd, ld-i386/tlsdesc.rd,
	ld-i386/tlsdesc.sd, ld-i386/tlsgdesc.rd, ld-i386/tlsnopic.rd,
	ld-i386/tlspic.rd, ld-ia64/tlspic.rd, ld-mips-elf/eh-frame1-n32.d,
	ld-mips-elf/eh-frame1-n64.d, ld-mips-elf/eh-frame2-n32.d,
	ld-mips-elf/eh-frame2-n64.d, ld-mips-elf/mips-elf.exp,
	ld-mips-elf/rel32-n32.d, ld-mips-elf/rel32-o32.d, ld-mips-elf/rel64.d,
	ld-mips-elf/tls-multi-got-1.got, ld-mips-elf/tls-multi-got-1.r,
	ld-mips-elf/tlsdyn-o32-1.d, ld-mips-elf/tlsdyn-o32-1.got,
	ld-mips-elf/tlsdyn-o32-2.d, ld-mips-elf/tlsdyn-o32-2.got,
	ld-mips-elf/tlsdyn-o32-3.d, ld-mips-elf/tlsdyn-o32-3.got,
	ld-mips-elf/tlsdyn-o32.d, ld-mips-elf/tlsdyn-o32.got,
	ld-mips-elf/tlslib-o32-hidden.got, ld-mips-elf/tlslib-o32-ver.got,
	ld-mips-elf/tlslib-o32.got, ld-mmix/bpo-10.d, ld-powerpc/tlsso.g,
	ld-powerpc/tlsso.r, ld-powerpc/tlsso32.d, ld-powerpc/tlsso32.g,
	ld-powerpc/tlsso32.r, ld-powerpc/tlstocso.g, ld-powerpc/tlstocso.r,
	ld-s390/tlspic.rd, ld-s390/tlspic_64.rd, ld-scripts/empty-address-1.d,
	ld-scripts/empty-address-3c.d, ld-scripts/empty-orphan.t,
	ld-sh/shared-1.d, ld-sh/tlspic-2.d, ld-sparc/tlssunbin32.rd,
	ld-sparc/tlssunbin64.rd, ld-sparc/tlssunpic32.rd,
	ld-sparc/tlssunpic64.rd, ld-x86-64/tlsdesc.pd, ld-x86-64/tlsdesc.rd,
	ld-x86-64/tlspic.rd: Update for section sym changes.

Index: bfd/elf-bfd.h
===================================================================
RCS file: /cvs/src/src/bfd/elf-bfd.h,v
retrieving revision 1.215
diff -u -p -r1.215 elf-bfd.h
--- bfd/elf-bfd.h	3 Oct 2006 13:15:39 -0000	1.215
+++ bfd/elf-bfd.h	16 Oct 2006 23:43:38 -0000
@@ -345,6 +345,10 @@ struct elf_link_hash_table
      when linking against or generating a shared object.  */
   bfd_boolean dynamic_sections_created;
 
+  /* True if this target has relocatable executables, so needs dynamic
+     section symbols.  */
+  bfd_boolean is_relocatable_executable;
+
   /* The BFD used to hold special sections created by the linker.
      This will be the first BFD found which requires these sections to
      be created.  */
@@ -378,6 +382,12 @@ struct elf_link_hash_table
      included in the link.  */
   struct bfd_link_needed_list *needed;
 
+  /* Sections in the output bfd that provides a section symbol
+     to be used by relocations emitted against local symbols.
+     Most targets will not use data_index_section.  */
+  asection *text_index_section;
+  asection *data_index_section;
+
   /* The _GLOBAL_OFFSET_TABLE_ symbol.  */
   struct elf_link_hash_entry *hgot;
 
@@ -406,10 +416,6 @@ struct elf_link_hash_table
 
   /* A linked list of BFD's loaded in the link.  */
   struct elf_link_loaded_list *loaded;
-
-  /* True if this target has relocatable executables, so needs dynamic
-     section symbols.  */
-  bfd_boolean is_relocatable_executable;
 };
 
 /* Look up an entry in an ELF linker hash table.  */
@@ -766,6 +772,11 @@ struct elf_backend_data
   bfd_boolean (*elf_backend_size_dynamic_sections)
     (bfd *output_bfd, struct bfd_link_info *info);
 
+  /* Set TEXT_INDEX_SECTION and DATA_INDEX_SECTION, the output sections
+     we keep to use as a base for relocs and symbols.  */
+  void (*elf_backend_init_index_section)
+    (bfd *output_bfd, struct bfd_link_info *info);
+
   /* The RELOCATE_SECTION function is called by the ELF backend linker
      to handle the relocations for a section.
 
@@ -1697,6 +1708,10 @@ extern bfd_boolean _bfd_elf_create_got_s
   (bfd *, struct bfd_link_info *);
 extern struct elf_link_hash_entry *_bfd_elf_define_linkage_sym
   (bfd *, struct bfd_link_info *, asection *, const char *);
+extern void _bfd_elf_init_1_index_section
+  (bfd *, struct bfd_link_info *);
+extern void _bfd_elf_init_2_index_sections
+  (bfd *, struct bfd_link_info *);
 
 extern bfd_boolean _bfd_elfcore_make_pseudosection
   (bfd *, char *, size_t, ufile_ptr);
Index: bfd/elfxx-target.h
===================================================================
RCS file: /cvs/src/src/bfd/elfxx-target.h,v
retrieving revision 1.98
diff -u -p -r1.98 elfxx-target.h
--- bfd/elfxx-target.h	28 Sep 2006 13:27:31 -0000	1.98
+++ bfd/elfxx-target.h	16 Oct 2006 23:44:51 -0000
@@ -381,6 +381,10 @@
 #ifndef elf_backend_size_dynamic_sections
 #define elf_backend_size_dynamic_sections 0
 #endif
+#ifndef elf_backend_init_index_section
+#define elf_backend_init_index_section \
+ ((void (*) (bfd *, struct bfd_link_info *)) bfd_void)
+#endif
 #ifndef elf_backend_relocate_section
 #define elf_backend_relocate_section	0
 #endif
@@ -603,6 +607,7 @@ static struct elf_backend_data elfNN_bed
   elf_backend_adjust_dynamic_symbol,
   elf_backend_always_size_sections,
   elf_backend_size_dynamic_sections,
+  elf_backend_init_index_section,
   elf_backend_relocate_section,
   elf_backend_finish_dynamic_symbol,
   elf_backend_finish_dynamic_sections,
Index: bfd/elflink.c
===================================================================
RCS file: /cvs/src/src/bfd/elflink.c,v
retrieving revision 1.233
diff -u -p -r1.233 elflink.c
--- bfd/elflink.c	2 Oct 2006 22:52:19 -0000	1.233
+++ bfd/elflink.c	16 Oct 2006 23:44:39 -0000
@@ -712,6 +712,8 @@ _bfd_elf_link_omit_section_dynsym (bfd *
 				   struct bfd_link_info *info,
 				   asection *p)
 {
+  struct elf_link_hash_table *htab;
+
   switch (elf_section_data (p)->this_hdr.sh_type)
     {
     case SHT_PROGBITS:
@@ -719,15 +721,21 @@ _bfd_elf_link_omit_section_dynsym (bfd *
       /* If sh_type is yet undecided, assume it could be
 	 SHT_PROGBITS/SHT_NOBITS.  */
     case SHT_NULL:
+      htab = elf_hash_table (info);
+      if (p == htab->tls_sec)
+	return FALSE;
+
+      if (htab->text_index_section != NULL)
+	return p != htab->text_index_section && p != htab->data_index_section;
+
       if (strcmp (p->name, ".got") == 0
 	  || strcmp (p->name, ".got.plt") == 0
 	  || strcmp (p->name, ".plt") == 0)
 	{
 	  asection *ip;
-	  bfd *dynobj = elf_hash_table (info)->dynobj;
 
-	  if (dynobj != NULL
-	      && (ip = bfd_get_section_by_name (dynobj, p->name)) != NULL
+	  if (htab->dynobj != NULL
+	      && (ip = bfd_get_section_by_name (htab->dynobj, p->name)) != NULL
 	      && (ip->flags & SEC_LINKER_CREATED)
 	      && ip->output_section == p)
 	    return TRUE;
@@ -763,6 +771,8 @@ _bfd_elf_link_renumber_dynsyms (bfd *out
 	    && (p->flags & SEC_ALLOC) != 0
 	    && !(*bed->elf_backend_omit_section_dynsym) (output_bfd, info, p))
 	  elf_section_data (p)->dynindx = ++dynsymcount;
+	else
+	  elf_section_data (p)->dynindx = 0;
     }
   *section_sym_count = dynsymcount;
 
@@ -5932,16 +5942,65 @@ bfd_elf_size_dynamic_sections (bfd *outp
   return TRUE;
 }
 
+/* Find the first non-excluded output section.  We'll use its
+   section symbol for some emitted relocs.  */
+void
+_bfd_elf_init_1_index_section (bfd *output_bfd, struct bfd_link_info *info)
+{
+  asection *s;
+
+  for (s = output_bfd->sections; s != NULL; s = s->next)
+    if ((s->flags & (SEC_EXCLUDE | SEC_ALLOC)) == SEC_ALLOC
+	&& !_bfd_elf_link_omit_section_dynsym (output_bfd, info, s))
+      {
+	elf_hash_table (info)->text_index_section = s;
+	break;
+      }
+}
+
+/* Find two non-excluded output sections, one for code, one for data.
+   We'll use their section symbols for some emitted relocs.  */
+void
+_bfd_elf_init_2_index_sections (bfd *output_bfd, struct bfd_link_info *info)
+{
+  asection *s;
+
+  for (s = output_bfd->sections; s != NULL; s = s->next)
+    if (((s->flags & (SEC_EXCLUDE | SEC_ALLOC | SEC_READONLY))
+	 == (SEC_ALLOC | SEC_READONLY))
+	&& !_bfd_elf_link_omit_section_dynsym (output_bfd, info, s))
+      {
+	elf_hash_table (info)->text_index_section = s;
+	break;
+      }
+
+  for (s = output_bfd->sections; s != NULL; s = s->next)
+    if (((s->flags & (SEC_EXCLUDE | SEC_ALLOC | SEC_READONLY)) == SEC_ALLOC)
+	&& !_bfd_elf_link_omit_section_dynsym (output_bfd, info, s))
+      {
+	elf_hash_table (info)->data_index_section = s;
+	break;
+      }
+
+  if (elf_hash_table (info)->text_index_section == NULL)
+    elf_hash_table (info)->text_index_section
+      = elf_hash_table (info)->data_index_section;
+}
+
 bfd_boolean
 bfd_elf_size_dynsym_hash_dynstr (bfd *output_bfd, struct bfd_link_info *info)
 {
+  const struct elf_backend_data *bed;
+
   if (!is_elf_hash_table (info->hash))
     return TRUE;
 
+  bed = get_elf_backend_data (output_bfd);
+  (*bed->elf_backend_init_index_section) (output_bfd, info);
+
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       bfd *dynobj;
-      const struct elf_backend_data *bed;
       asection *s;
       bfd_size_type dynsymcount;
       unsigned long section_sym_count;
@@ -5980,7 +6039,6 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	 section as we went along in elf_link_add_object_symbols.  */
       s = bfd_get_section_by_name (dynobj, ".dynsym");
       BFD_ASSERT (s != NULL);
-      bed = get_elf_backend_data (output_bfd);
       s->size = dynsymcount * bed->s->sizeof_sym;
 
       if (dynsymcount != 0)
@@ -7769,6 +7827,24 @@ elf_link_input_bfd (struct elf_final_lin
 			  if (!bfd_is_abs_section (osec))
 			    {
 			      r_symndx = osec->target_index;
+			      if (r_symndx == 0)
+				{
+				  struct elf_link_hash_table *htab;
+				  asection *oi;
+
+				  htab = elf_hash_table (finfo->info);
+				  oi = htab->text_index_section;
+				  if ((osec->flags & SEC_READONLY) == 0
+				      && htab->data_index_section != NULL)
+				    oi = htab->data_index_section;
+
+				  if (oi != NULL)
+				    {
+				      irela->r_addend += osec->vma - oi->vma;
+				      r_symndx = oi->target_index;
+				    }
+				}
+
 			      BFD_ASSERT (r_symndx != 0);
 			    }
 			}
Index: bfd/elf-m10300.c
===================================================================
RCS file: /cvs/src/src/bfd/elf-m10300.c,v
retrieving revision 1.76
diff -u -p -r1.76 elf-m10300.c
--- bfd/elf-m10300.c	28 Sep 2006 13:27:32 -0000	1.76
+++ bfd/elf-m10300.c	16 Oct 2006 23:43:41 -0000
@@ -4756,6 +4756,8 @@ _bfd_mn10300_elf_reloc_type_class (const
   _bfd_mn10300_elf_adjust_dynamic_symbol
 #define elf_backend_size_dynamic_sections \
   _bfd_mn10300_elf_size_dynamic_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_finish_dynamic_symbol \
   _bfd_mn10300_elf_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections \
Index: bfd/elf32-i386.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-i386.c,v
retrieving revision 1.166
diff -u -p -r1.166 elf32-i386.c
--- bfd/elf32-i386.c	28 Sep 2006 13:27:32 -0000	1.166
+++ bfd/elf32-i386.c	16 Oct 2006 23:43:53 -0000
@@ -3872,6 +3872,8 @@ elf_i386_hash_symbol (struct elf_link_ha
 #define elf_backend_relocate_section	      elf_i386_relocate_section
 #define elf_backend_size_dynamic_sections     elf_i386_size_dynamic_sections
 #define elf_backend_always_size_sections      elf_i386_always_size_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_plt_sym_val		      elf_i386_plt_sym_val
 #define elf_backend_hash_symbol		      elf_i386_hash_symbol
 
Index: bfd/elf32-m32r.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-m32r.c,v
retrieving revision 1.82
diff -u -p -r1.82 elf32-m32r.c
--- bfd/elf32-m32r.c	28 Sep 2006 13:27:32 -0000	1.82
+++ bfd/elf32-m32r.c	16 Oct 2006 23:43:55 -0000
@@ -4141,6 +4141,8 @@ m32r_elf_reloc_type_class (const Elf_Int
 #define elf_backend_create_dynamic_sections     m32r_elf_create_dynamic_sections
 #define bfd_elf32_bfd_link_hash_table_create    m32r_elf_link_hash_table_create
 #define elf_backend_size_dynamic_sections       m32r_elf_size_dynamic_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_finish_dynamic_sections     m32r_elf_finish_dynamic_sections
 #define elf_backend_adjust_dynamic_symbol       m32r_elf_adjust_dynamic_symbol
 #define elf_backend_finish_dynamic_symbol       m32r_elf_finish_dynamic_symbol
Index: bfd/elf32-sh.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-sh.c,v
retrieving revision 1.143
diff -u -p -r1.143 elf32-sh.c
--- bfd/elf32-sh.c	28 Sep 2006 13:27:32 -0000	1.143
+++ bfd/elf32-sh.c	16 Oct 2006 23:44:08 -0000
@@ -6028,6 +6028,8 @@ sh_elf_plt_sym_val (bfd_vma i, const ase
 					sh_elf_always_size_sections
 #define elf_backend_size_dynamic_sections \
 					sh_elf_size_dynamic_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_finish_dynamic_symbol \
 					sh_elf_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections \
Index: bfd/elf32-xstormy16.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-xstormy16.c,v
retrieving revision 1.35
diff -u -p -r1.35 elf32-xstormy16.c
--- bfd/elf32-xstormy16.c	28 Sep 2006 13:27:33 -0000	1.35
+++ bfd/elf32-xstormy16.c	16 Oct 2006 23:44:09 -0000
@@ -999,6 +999,8 @@ xstormy16_elf_gc_mark_hook (asection *se
 #define elf_backend_check_relocs                xstormy16_elf_check_relocs
 #define elf_backend_always_size_sections \
   xstormy16_elf_always_size_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_finish_dynamic_sections \
   xstormy16_elf_finish_dynamic_sections
 
Index: bfd/elf32-xtensa.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-xtensa.c,v
retrieving revision 1.73
diff -u -p -r1.73 elf32-xtensa.c
--- bfd/elf32-xtensa.c	12 Oct 2006 21:56:18 -0000	1.73
+++ bfd/elf32-xtensa.c	16 Oct 2006 23:44:14 -0000
@@ -9844,6 +9844,8 @@ static const struct bfd_elf_special_sect
 #define elf_backend_reloc_type_class	     elf_xtensa_reloc_type_class
 #define elf_backend_relocate_section	     elf_xtensa_relocate_section
 #define elf_backend_size_dynamic_sections    elf_xtensa_size_dynamic_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_special_sections	     elf_xtensa_special_sections
 #define elf_backend_action_discarded	     elf_xtensa_action_discarded
 
Index: bfd/elf64-alpha.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-alpha.c,v
retrieving revision 1.153
diff -u -p -r1.153 elf64-alpha.c
--- bfd/elf64-alpha.c	16 Sep 2006 18:12:14 -0000	1.153
+++ bfd/elf64-alpha.c	16 Oct 2006 23:44:17 -0000
@@ -5275,6 +5275,8 @@ static const struct elf_size_info alpha_
   elf64_alpha_always_size_sections
 #define elf_backend_size_dynamic_sections \
   elf64_alpha_size_dynamic_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_relocate_section \
   elf64_alpha_relocate_section
 #define elf_backend_finish_dynamic_symbol \
Index: bfd/elf64-hppa.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-hppa.c,v
retrieving revision 1.74
diff -u -p -r1.74 elf64-hppa.c
--- bfd/elf64-hppa.c	16 Sep 2006 18:12:14 -0000	1.74
+++ bfd/elf64-hppa.c	16 Oct 2006 23:44:19 -0000
@@ -2820,6 +2820,8 @@ const struct elf_size_info hppa64_elf_si
 					elf64_hppa_create_dynamic_sections
 #define elf_backend_post_process_headers	elf64_hppa_post_process_headers
 
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_adjust_dynamic_symbol \
 					elf64_hppa_adjust_dynamic_symbol
 
Index: bfd/elf64-mmix.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-mmix.c,v
retrieving revision 1.50
diff -u -p -r1.50 elf64-mmix.c
--- bfd/elf64-mmix.c	28 Sep 2006 13:27:32 -0000	1.50
+++ bfd/elf64-mmix.c	16 Oct 2006 23:44:22 -0000
@@ -2916,6 +2916,8 @@ mmix_elf_relax_section (abfd, sec, link_
 
 #define elf_backend_check_relocs	mmix_elf_check_relocs
 #define elf_backend_symbol_processing	mmix_elf_symbol_processing
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 
 #define bfd_elf64_bfd_is_local_label_name \
 	mmix_elf_is_local_label_name
Index: bfd/elf64-sh64.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-sh64.c,v
retrieving revision 1.69
diff -u -p -r1.69 elf64-sh64.c
--- bfd/elf64-sh64.c	28 Sep 2006 13:27:33 -0000	1.69
+++ bfd/elf64-sh64.c	16 Oct 2006 23:44:30 -0000
@@ -4094,6 +4094,8 @@ static const struct bfd_elf_special_sect
 					sh64_elf64_adjust_dynamic_symbol
 #define elf_backend_size_dynamic_sections \
 					sh64_elf64_size_dynamic_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_finish_dynamic_symbol \
 					sh64_elf64_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections \
Index: bfd/elfxx-ia64.c
===================================================================
RCS file: /cvs/src/src/bfd/elfxx-ia64.c,v
retrieving revision 1.191
diff -u -p -r1.191 elfxx-ia64.c
--- bfd/elfxx-ia64.c	16 Oct 2006 17:21:44 -0000	1.191
+++ bfd/elfxx-ia64.c	16 Oct 2006 23:44:42 -0000
@@ -5762,6 +5762,8 @@ elfNN_hpux_backend_symbol_processing (bf
 	elfNN_ia64_adjust_dynamic_symbol
 #define elf_backend_size_dynamic_sections \
 	elfNN_ia64_size_dynamic_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
 #define elf_backend_relocate_section \
 	elfNN_ia64_relocate_section
 #define elf_backend_finish_dynamic_symbol \
Index: bfd/elf32-score.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-score.c,v
retrieving revision 1.3
diff -u -p -r1.3 elf32-score.c
--- bfd/elf32-score.c	28 Sep 2006 13:27:32 -0000	1.3
+++ bfd/elf32-score.c	16 Oct 2006 23:44:05 -0000
@@ -1184,7 +1184,7 @@ score_elf_create_dynamic_relocation (bfd
 				     struct bfd_link_info *info,
 				     const Elf_Internal_Rela *rel,
 				     struct score_elf_link_hash_entry *h,
-				     asection *sec, bfd_vma symbol,
+				     bfd_vma symbol,
 				     bfd_vma *addendp, asection *input_section)
 {
   Elf_Internal_Rela outrel[3];
@@ -1238,35 +1238,7 @@ score_elf_create_dynamic_relocation (bfd
     }
   else
     {
-      if (sec != NULL && bfd_is_abs_section (sec))
-	indx = 0;
-      else if (sec == NULL || sec->owner == NULL)
-	{
-	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
-	}
-      else
-	{
-	  indx = elf_section_data (sec->output_section)->dynindx;
-	  if (indx == 0)
-	    abort ();
-	}
-
-      /* Instead of generating a relocation using the section
-	 symbol, we may as well make it a fully relative
-	 relocation.  We want to avoid generating relocations to
-	 local symbols because we used to generate them
-	 incorrectly, without adding the original symbol value,
-	 which is mandated by the ABI for section symbols.  In
-	 order to give dynamic loaders and applications time to
-	 phase out the incorrect use, we refrain from emitting
-	 section-relative relocations.  It's not like they're
-	 useful, after all.  This should be a bit more efficient
-	 as well.  */
-      /* ??? Although this behavior is compatible with glibc's ld.so,
-	 the ABI says that relocations against STN_UNDEF should have
-	 a symbol value of 0.  Irix rld honors this, so relocations
-	 against STN_UNDEF have no effect.  */
+      indx = 0;
       defined_p = TRUE;
     }
 
@@ -1868,7 +1840,6 @@ score_elf_final_link_relocate (reloc_how
 			       Elf_Internal_Rela *relocs,
 			       bfd_vma symbol,
 			       struct bfd_link_info *info,
-			       asection *sym_sec,
 			       const char *sym_name ATTRIBUTE_UNUSED,
 			       int sym_flags ATTRIBUTE_UNUSED,
 			       struct score_elf_link_hash_entry *h,
@@ -2029,7 +2000,7 @@ score_elf_final_link_relocate (reloc_how
              to the dynamic linker.  */
 	  value = addend;
 	  if (!score_elf_create_dynamic_relocation (output_bfd, info, rel, h,
-						    sym_sec, symbol, &value,
+						    symbol, &value,
 						    input_section))
 	    return bfd_reloc_undefined;
 	}
@@ -2438,7 +2409,7 @@ _bfd_score_elf_relocate_section (bfd *ou
 
       r = score_elf_final_link_relocate (howto, input_bfd, output_bfd,
                                          input_section, contents, rel, relocs,
-                                         relocation, info, sec, name,
+                                         relocation, info, name,
                                          (h ? ELF_ST_TYPE ((unsigned int)h->root.root.type) :
 					 ELF_ST_TYPE ((unsigned int)sym->st_info)), h, local_sections,
                                          gp_disp_p);
@@ -3825,41 +3796,52 @@ elf32_score_new_section_hook (bfd *abfd,
 #define ELF_MACHINE_CODE                EM_SCORE
 #define ELF_MAXPAGESIZE                 0x8000
 
-#define elf_info_to_howto                             0
-#define elf_info_to_howto_rel                         _bfd_score_info_to_howto
-#define elf_backend_relocate_section                  _bfd_score_elf_relocate_section
-#define elf_backend_check_relocs                      _bfd_score_elf_check_relocs
-#define elf_backend_add_symbol_hook                   _bfd_score_elf_add_symbol_hook
-#define elf_backend_symbol_processing                 _bfd_score_elf_symbol_processing
-#define elf_backend_link_output_symbol_hook           _bfd_score_elf_link_output_symbol_hook
-#define elf_backend_section_from_bfd_section          _bfd_score_elf_section_from_bfd_section
-#define elf_backend_adjust_dynamic_symbol             _bfd_score_elf_adjust_dynamic_symbol
-#define elf_backend_always_size_sections              _bfd_score_elf_always_size_sections
-#define elf_backend_size_dynamic_sections             _bfd_score_elf_size_dynamic_sections
-#define elf_backend_create_dynamic_sections           _bfd_score_elf_create_dynamic_sections
-#define elf_backend_finish_dynamic_symbol             _bfd_score_elf_finish_dynamic_symbol
-#define elf_backend_finish_dynamic_sections           _bfd_score_elf_finish_dynamic_sections
-#define elf_backend_fake_sections                     _bfd_score_elf_fake_sections
-#define elf_backend_section_processing                _bfd_score_elf_section_processing
-#define elf_backend_write_section                     _bfd_score_elf_write_section
-#define elf_backend_copy_indirect_symbol              _bfd_score_elf_copy_indirect_symbol
-#define elf_backend_hide_symbol                       _bfd_score_elf_hide_symbol
-#define elf_backend_discard_info                      _bfd_score_elf_discard_info
-#define elf_backend_ignore_discarded_relocs           _bfd_score_elf_ignore_discarded_relocs
-#define elf_backend_gc_mark_hook                      _bfd_score_elf_gc_mark_hook
-#define elf_backend_grok_prstatus                     _bfd_score_elf_grok_prstatus
-#define elf_backend_grok_psinfo                       _bfd_score_elf_grok_psinfo
-#define elf_backend_can_gc_sections                   1
-#define elf_backend_want_plt_sym                      0
-#define elf_backend_got_header_size                   (4 * SCORE_RESERVED_GOTNO)
-#define elf_backend_plt_header_size                   0
-#define elf_backend_collect                           TRUE
-#define elf_backend_type_change_ok                    TRUE
-
-#define bfd_elf32_bfd_reloc_type_lookup               elf32_score_reloc_type_lookup
-#define bfd_elf32_bfd_link_hash_table_create          elf32_score_link_hash_table_create
-#define bfd_elf32_bfd_print_private_bfd_data          elf32_score_print_private_bfd_data
-#define bfd_elf32_bfd_merge_private_bfd_data          elf32_score_merge_private_bfd_data
-#define bfd_elf32_new_section_hook                    elf32_score_new_section_hook
+#define elf_info_to_howto               0
+#define elf_info_to_howto_rel           _bfd_score_info_to_howto
+#define elf_backend_relocate_section    _bfd_score_elf_relocate_section
+#define elf_backend_check_relocs        _bfd_score_elf_check_relocs
+#define elf_backend_add_symbol_hook     _bfd_score_elf_add_symbol_hook
+#define elf_backend_symbol_processing   _bfd_score_elf_symbol_processing
+#define elf_backend_link_output_symbol_hook \
+  _bfd_score_elf_link_output_symbol_hook
+#define elf_backend_section_from_bfd_section \
+  _bfd_score_elf_section_from_bfd_section
+#define elf_backend_adjust_dynamic_symbol \
+  _bfd_score_elf_adjust_dynamic_symbol
+#define elf_backend_always_size_sections \
+  _bfd_score_elf_always_size_sections
+#define elf_backend_size_dynamic_sections \
+  _bfd_score_elf_size_dynamic_sections
+#define elf_backend_omit_section_dynsym \
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true)
+#define elf_backend_create_dynamic_sections \
+  _bfd_score_elf_create_dynamic_sections
+#define elf_backend_finish_dynamic_symbol \
+  _bfd_score_elf_finish_dynamic_symbol
+#define elf_backend_finish_dynamic_sections \
+  _bfd_score_elf_finish_dynamic_sections
+#define elf_backend_fake_sections         _bfd_score_elf_fake_sections
+#define elf_backend_section_processing    _bfd_score_elf_section_processing
+#define elf_backend_write_section         _bfd_score_elf_write_section
+#define elf_backend_copy_indirect_symbol  _bfd_score_elf_copy_indirect_symbol
+#define elf_backend_hide_symbol           _bfd_score_elf_hide_symbol
+#define elf_backend_discard_info          _bfd_score_elf_discard_info
+#define elf_backend_ignore_discarded_relocs \
+  _bfd_score_elf_ignore_discarded_relocs
+#define elf_backend_gc_mark_hook          _bfd_score_elf_gc_mark_hook
+#define elf_backend_grok_prstatus         _bfd_score_elf_grok_prstatus
+#define elf_backend_grok_psinfo           _bfd_score_elf_grok_psinfo
+#define elf_backend_can_gc_sections       1
+#define elf_backend_want_plt_sym          0
+#define elf_backend_got_header_size       (4 * SCORE_RESERVED_GOTNO)
+#define elf_backend_plt_header_size       0
+#define elf_backend_collect               TRUE
+#define elf_backend_type_change_ok        TRUE
+
+#define bfd_elf32_bfd_reloc_type_lookup      elf32_score_reloc_type_lookup
+#define bfd_elf32_bfd_link_hash_table_create elf32_score_link_hash_table_create
+#define bfd_elf32_bfd_print_private_bfd_data elf32_score_print_private_bfd_data
+#define bfd_elf32_bfd_merge_private_bfd_data elf32_score_merge_private_bfd_data
+#define bfd_elf32_new_section_hook           elf32_score_new_section_hook
 
 #include "elf32-target.h"
Index: bfd/elf32-arm.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-arm.c,v
retrieving revision 1.92
diff -u -p -r1.92 elf32-arm.c
--- bfd/elf32-arm.c	28 Sep 2006 13:27:32 -0000	1.92
+++ bfd/elf32-arm.c	16 Oct 2006 23:43:46 -0000
@@ -3731,6 +3739,8 @@ elf32_arm_final_link_relocate (reloc_how
 		value |= 1;
 	      if (globals->symbian_p)
 		{
+		  asection *osec;
+
 		  /* On Symbian OS, the data segment and text segement
 		     can be relocated independently.  Therefore, we
 		     must indicate the segment to which this
@@ -3738,11 +3748,27 @@ elf32_arm_final_link_relocate (reloc_how
 		     use any symbol in the right segment; we just use
 		     the section symbol as it is convenient.  (We
 		     cannot use the symbol given by "h" directly as it
-		     will not appear in the dynamic symbol table.)  */
+		     will not appear in the dynamic symbol table.)
+
+		     Note that the dynamic linker ignores the section
+		     symbol value, so we don't subtract osec->vma
+		     from the emitted reloc addend.  */
 		  if (sym_sec)
-		    symbol = elf_section_data (sym_sec->output_section)->dynindx;
+		    osec = sym_sec->output_section;
 		  else
-		    symbol = elf_section_data (input_section->output_section)->dynindx;
+		    osec = input_section->output_section;
+		  symbol = elf_section_data (osec)->dynindx;
+		  if (symbol == 0)
+		    {
+		      struct elf_link_hash_table *htab = elf_hash_table (info);
+
+		      if ((osec->flags & SEC_READONLY) == 0
+			  && htab->data_index_section != NULL)
+			osec = htab->data_index_section;
+		      else
+			osec = htab->text_index_section;
+		      symbol = elf_section_data (osec)->dynindx;
+		    }
 		  BFD_ASSERT (symbol != 0);
 		}
 	      else
@@ -9494,6 +9521,7 @@ const struct elf_size_info elf32_arm_siz
 #define elf_backend_finish_dynamic_sections	elf32_arm_finish_dynamic_sections
 #define elf_backend_link_output_symbol_hook	elf32_arm_output_symbol_hook
 #define elf_backend_size_dynamic_sections	elf32_arm_size_dynamic_sections
+#define elf_backend_init_index_section		_bfd_elf_init_2_index_sections
 #define elf_backend_post_process_headers	elf32_arm_post_process_headers
 #define elf_backend_reloc_type_class		elf32_arm_reloc_type_class
 #define elf_backend_object_p			elf32_arm_object_p
Index: bfd/elf32-cris.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-cris.c,v
retrieving revision 1.75
diff -u -p -r1.75 elf32-cris.c
--- bfd/elf32-cris.c	28 Sep 2006 13:27:32 -0000	1.75
+++ bfd/elf32-cris.c	16 Oct 2006 23:43:47 -0000
@@ -1430,11 +1430,12 @@ cris_elf_relocate_section (output_bfd, i
 		}
 	      else
 		{
+		  outrel.r_addend = relocation + rel->r_addend;
+
 		  if (r_type == R_CRIS_32)
 		    {
 		      relocate = TRUE;
 		      outrel.r_info = ELF32_R_INFO (0, R_CRIS_RELATIVE);
-		      outrel.r_addend = relocation + rel->r_addend;
 		    }
 		  else
 		    {
@@ -1451,13 +1452,24 @@ cris_elf_relocate_section (output_bfd, i
 			{
 			  asection *osec;
 
+			  /* We are turning this relocation into one
+			     against a section symbol.  It would be
+			     proper to subtract the symbol's value,
+			     osec->vma, from the emitted reloc addend,
+			     but ld.so expects buggy relocs.  */
 			  osec = sec->output_section;
 			  indx = elf_section_data (osec)->dynindx;
-			  BFD_ASSERT (indx > 0);
+			  if (indx == 0)
+			    {
+			      struct elf_cris_link_hash_table *htab;
+			      htab = elf_cris_hash_table (info);
+			      osec = htab->root.text_index_section;
+			      indx = elf_section_data (osec)->dynindx;
+			    }
+			  BFD_ASSERT (indx != 0);
 			}
 
 		      outrel.r_info = ELF32_R_INFO (indx, r_type);
-		      outrel.r_addend = relocation + rel->r_addend;
 		    }
 		}
 
@@ -3390,6 +3402,7 @@ elf_cris_reloc_type_class (rela)
 	elf_cris_adjust_dynamic_symbol
 #define elf_backend_size_dynamic_sections \
 	elf_cris_size_dynamic_sections
+#define elf_backend_init_index_section		_bfd_elf_init_1_index_section
 #define elf_backend_finish_dynamic_symbol \
 	elf_cris_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections \
Index: bfd/elf32-hppa.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-hppa.c,v
retrieving revision 1.147
diff -u -p -r1.147 elf32-hppa.c
--- bfd/elf32-hppa.c	28 Sep 2006 13:27:32 -0000	1.147
+++ bfd/elf32-hppa.c	16 Oct 2006 23:43:50 -0000
@@ -4024,17 +4024,22 @@ elf32_hppa_relocate_section (bfd *output
 		      && sym_sec->output_section != NULL
 		      && ! bfd_is_abs_section (sym_sec))
 		    {
-		      /* Skip this relocation if the output section has
-			 been discarded.  */
-		      if (bfd_is_abs_section (sym_sec->output_section))
-			break;
+		      asection *osec;
+
+		      osec = sym_sec->output_section;
+		      indx = elf_section_data (osec)->dynindx;
+		      if (indx == 0)
+			{
+			  osec = htab->etab.text_index_section;
+			  indx = elf_section_data (osec)->dynindx;
+			}
+		      BFD_ASSERT (indx != 0);
 
-		      indx = elf_section_data (sym_sec->output_section)->dynindx;
 		      /* We are turning this relocation into one
 			 against a section symbol, so subtract out the
 			 output section's address but not the offset
 			 of the input section in the output section.  */
-		      outrel.r_addend -= sym_sec->output_section->vma;
+		      outrel.r_addend -= osec->vma;
 		    }
 
 		  outrel.r_info = ELF32_R_INFO (indx, r_type);
@@ -4642,6 +4647,7 @@ elf32_hppa_elf_get_symbol_type (Elf_Inte
 #define elf_backend_finish_dynamic_symbol    elf32_hppa_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections  elf32_hppa_finish_dynamic_sections
 #define elf_backend_size_dynamic_sections    elf32_hppa_size_dynamic_sections
+#define elf_backend_init_index_section	     _bfd_elf_init_1_index_section
 #define elf_backend_gc_mark_hook	     elf32_hppa_gc_mark_hook
 #define elf_backend_gc_sweep_hook	     elf32_hppa_gc_sweep_hook
 #define elf_backend_grok_prstatus	     elf32_hppa_grok_prstatus
Index: bfd/elf32-i370.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-i370.c,v
retrieving revision 1.55
diff -u -p -r1.55 elf32-i370.c
--- bfd/elf32-i370.c	16 Sep 2006 18:12:13 -0000	1.55
+++ bfd/elf32-i370.c	16 Oct 2006 23:43:51 -0000
@@ -1290,9 +1290,21 @@ i370_elf_relocate_section (bfd *output_b
 			{
 			  asection *osec;
 
+			  /* We are turning this relocation into one
+			     against a section symbol.  It would be
+			     proper to subtract the symbol's value,
+			     osec->vma, from the emitted reloc addend,
+			     but ld.so expects buggy relocs.  */
 			  osec = sec->output_section;
 			  indx = elf_section_data (osec)->dynindx;
-			  BFD_ASSERT(indx > 0);
+			  if (indx == 0)
+			    {
+			      struct elf_link_hash_table *htab;
+			      htab = elf_hash_table (info);
+			      osec = htab->text_index_section;
+			      indx = elf_section_data (osec)->dynindx;
+			    }
+			  BFD_ASSERT (indx != 0);
 #ifdef DEBUG
 			  if (indx <= 0)
 			    {
@@ -1427,6 +1439,7 @@ i370_elf_post_process_headers (bfd * abf
    link glibc's ld.so without errors.  */
 #define elf_backend_create_dynamic_sections	i370_elf_create_dynamic_sections
 #define elf_backend_size_dynamic_sections	i370_elf_size_dynamic_sections
+#define elf_backend_init_index_section		_bfd_elf_init_1_index_section
 #define elf_backend_finish_dynamic_sections	i370_elf_finish_dynamic_sections
 #define elf_backend_fake_sections		i370_elf_fake_sections
 #define elf_backend_section_from_shdr		i370_elf_section_from_shdr
Index: bfd/elf32-m68k.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-m68k.c,v
retrieving revision 1.92
diff -u -p -r1.92 elf32-m68k.c
--- bfd/elf32-m68k.c	28 Sep 2006 13:27:32 -0000	1.92
+++ bfd/elf32-m68k.c	16 Oct 2006 23:43:59 -0000
@@ -1833,11 +1833,12 @@ elf_m68k_relocate_section (output_bfd, i
 	      else
 		{
 		  /* This symbol is local, or marked to become local.  */
+		  outrel.r_addend = relocation + rel->r_addend;
+
 		  if (r_type == R_68K_32)
 		    {
 		      relocate = TRUE;
 		      outrel.r_info = ELF32_R_INFO (0, R_68K_RELATIVE);
-		      outrel.r_addend = relocation + rel->r_addend;
 		    }
 		  else
 		    {
@@ -1854,13 +1855,24 @@ elf_m68k_relocate_section (output_bfd, i
 			{
 			  asection *osec;
 
+			  /* We are turning this relocation into one
+			     against a section symbol.  It would be
+			     proper to subtract the symbol's value,
+			     osec->vma, from the emitted reloc addend,
+			     but ld.so expects buggy relocs.  */
 			  osec = sec->output_section;
 			  indx = elf_section_data (osec)->dynindx;
-			  BFD_ASSERT (indx > 0);
+			  if (indx == 0)
+			    {
+			      struct elf_link_hash_table *htab;
+			      htab = elf_hash_table (info);
+			      osec = htab->text_index_section;
+			      indx = elf_section_data (osec)->dynindx;
+			    }
+			  BFD_ASSERT (indx != 0);
 			}
 
 		      outrel.r_info = ELF32_R_INFO (indx, r_type);
-		      outrel.r_addend = relocation + rel->r_addend;
 		    }
 		}
 
@@ -2418,6 +2430,7 @@ elf_m68k_plt_sym_val (bfd_vma i, const a
 					elf_m68k_adjust_dynamic_symbol
 #define elf_backend_size_dynamic_sections \
 					elf_m68k_size_dynamic_sections
+#define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section	elf_m68k_relocate_section
 #define elf_backend_finish_dynamic_symbol \
 					elf_m68k_finish_dynamic_symbol
Index: bfd/elf32-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-mips.c,v
retrieving revision 1.191
diff -u -p -r1.191 elf32-mips.c
--- bfd/elf32-mips.c	15 Aug 2006 18:28:47 -0000	1.191
+++ bfd/elf32-mips.c	16 Oct 2006 23:43:59 -0000
@@ -1513,6 +1513,7 @@ static const struct ecoff_debug_swap mip
 					_bfd_mips_elf_always_size_sections
 #define elf_backend_size_dynamic_sections \
 					_bfd_mips_elf_size_dynamic_sections
+#define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section	_bfd_mips_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol \
 					_bfd_mips_elf_finish_dynamic_symbol
Index: bfd/elf32-ppc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-ppc.c,v
retrieving revision 1.204
diff -u -p -r1.204 elf32-ppc.c
--- bfd/elf32-ppc.c	28 Sep 2006 13:27:32 -0000	1.204
+++ bfd/elf32-ppc.c	16 Oct 2006 23:44:01 -0000
@@ -6280,9 +6280,14 @@ ppc_elf_relocate_section (bfd *output_bf
 			     but ld.so expects buggy relocs.  */
 			  osec = sec->output_section;
 			  indx = elf_section_data (osec)->dynindx;
-			  BFD_ASSERT (indx > 0);
+			  if (indx == 0)
+			    {
+			      osec = htab->elf.text_index_section;
+			      indx = elf_section_data (osec)->dynindx;
+			    }
+			  BFD_ASSERT (indx != 0);
 #ifdef DEBUG
-			  if (indx <= 0)
+			  if (indx == 0)
 			    printf ("indx=%ld section=%s flags=%08x name=%s\n",
 				    indx, osec->name, osec->flags,
 				    h->root.root.string);
@@ -7472,6 +7477,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 #define elf_backend_get_sec_type_attr		ppc_elf_get_sec_type_attr
 #define elf_backend_plt_sym_val			ppc_elf_plt_sym_val
 #define elf_backend_action_discarded		ppc_elf_action_discarded
+#define elf_backend_init_index_section		_bfd_elf_init_1_index_section
 
 #include "elf32-target.h"
 
Index: bfd/elf32-s390.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-s390.c,v
retrieving revision 1.87
diff -u -p -r1.87 elf32-s390.c
--- bfd/elf32-s390.c	28 Sep 2006 13:27:32 -0000	1.87
+++ bfd/elf32-s390.c	16 Oct 2006 23:44:02 -0000
@@ -2630,14 +2630,18 @@ elf_s390_relocate_section (output_bfd, i
 
 			  osec = sec->output_section;
 			  sindx = elf_section_data (osec)->dynindx;
-			  BFD_ASSERT (sindx > 0);
+			  if (sindx == 0)
+			    {
+			      osec = htab->elf.text_index_section;
+			      sindx = elf_section_data (osec)->dynindx;
+			    }
+			  BFD_ASSERT (sindx != 0);
 
 			  /* We are turning this relocation into one
 			     against a section symbol, so subtract out
 			     the output section's address but not the
 			     offset of the input section in the output
 			     section.  */
-
 			  outrel.r_addend -= osec->vma;
 			}
 		      outrel.r_info = ELF32_R_INFO (sindx, r_type);
@@ -3542,6 +3546,7 @@ elf_s390_plt_sym_val (bfd_vma i, const a
 #define elf_backend_reloc_type_class	      elf_s390_reloc_type_class
 #define elf_backend_relocate_section	      elf_s390_relocate_section
 #define elf_backend_size_dynamic_sections     elf_s390_size_dynamic_sections
+#define elf_backend_init_index_section	      _bfd_elf_init_1_index_section
 #define elf_backend_reloc_type_class	      elf_s390_reloc_type_class
 #define elf_backend_grok_prstatus	      elf_s390_grok_prstatus
 #define elf_backend_plt_sym_val		      elf_s390_plt_sym_val
Index: bfd/elf32-sparc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-sparc.c,v
retrieving revision 1.85
diff -u -p -r1.85 elf32-sparc.c
--- bfd/elf32-sparc.c	30 May 2006 16:45:31 -0000	1.85
+++ bfd/elf32-sparc.c	16 Oct 2006 23:44:08 -0000
@@ -207,6 +207,7 @@ elf32_sparc_reloc_type_class (const Elf_
 #define elf_backend_gc_mark_hook	_bfd_sparc_elf_gc_mark_hook
 #define elf_backend_gc_sweep_hook       _bfd_sparc_elf_gc_sweep_hook
 #define elf_backend_plt_sym_val		_bfd_sparc_elf_plt_sym_val
+#define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 
 #define elf_backend_can_gc_sections 1
 #define elf_backend_can_refcount 1
Index: bfd/elf32-vax.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-vax.c,v
retrieving revision 1.38
diff -u -p -r1.38 elf32-vax.c
--- bfd/elf32-vax.c	28 Sep 2006 13:27:32 -0000	1.38
+++ bfd/elf32-vax.c	16 Oct 2006 23:44:09 -0000
@@ -1680,9 +1680,21 @@ elf_vax_relocate_section (bfd *output_bf
 			{
 			  asection *osec;
 
+			  /* We are turning this relocation into one
+			     against a section symbol.  It would be
+			     proper to subtract the symbol's value,
+			     osec->vma, from the emitted reloc addend,
+			     but ld.so expects buggy relocs.  */
 			  osec = sec->output_section;
 			  indx = elf_section_data (osec)->dynindx;
-			  BFD_ASSERT (indx > 0);
+			  if (indx == 0)
+			    {
+			      struct elf_link_hash_table *htab;
+			      htab = elf_hash_table (info);
+			      osec = htab->text_index_section;
+			      indx = elf_section_data (osec)->dynindx;
+			    }
+			  BFD_ASSERT (indx != 0);
 			}
 
 		      outrel.r_info = ELF32_R_INFO (indx, r_type);
@@ -2062,6 +2074,7 @@ elf_vax_finish_dynamic_sections (bfd *ou
 					elf_vax_adjust_dynamic_symbol
 #define elf_backend_size_dynamic_sections \
 					elf_vax_size_dynamic_sections
+#define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section	elf_vax_relocate_section
 #define elf_backend_finish_dynamic_symbol \
 					elf_vax_finish_dynamic_symbol
Index: bfd/elf64-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-mips.c,v
retrieving revision 1.76
diff -u -p -r1.76 elf64-mips.c
--- bfd/elf64-mips.c	15 Aug 2006 18:28:48 -0000	1.76
+++ bfd/elf64-mips.c	16 Oct 2006 23:44:20 -0000
@@ -3034,6 +3034,7 @@ const struct elf_size_info mips_elf64_si
 				_bfd_mips_elf_always_size_sections
 #define elf_backend_size_dynamic_sections \
 				_bfd_mips_elf_size_dynamic_sections
+#define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section    _bfd_mips_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol \
 				_bfd_mips_elf_finish_dynamic_symbol
Index: bfd/elf64-ppc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-ppc.c,v
retrieving revision 1.247
diff -u -p -r1.247 elf64-ppc.c
--- bfd/elf64-ppc.c	1 Oct 2006 13:59:21 -0000	1.247
+++ bfd/elf64-ppc.c	16 Oct 2006 23:44:26 -0000
@@ -97,6 +97,7 @@ static bfd_vma opd_entry_value
 #define elf_backend_hide_symbol		      ppc64_elf_hide_symbol
 #define elf_backend_always_size_sections      ppc64_elf_func_desc_adjust
 #define elf_backend_size_dynamic_sections     ppc64_elf_size_dynamic_sections
+#define elf_backend_init_index_section	      _bfd_elf_init_2_index_sections
 #define elf_backend_action_discarded	      ppc64_elf_action_discarded
 #define elf_backend_relocate_section	      ppc64_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol     ppc64_elf_finish_dynamic_symbol
@@ -10840,6 +10841,17 @@ ppc64_elf_relocate_section (bfd *output_
 			  osec = sec->output_section;
 			  indx = elf_section_data (osec)->dynindx;
 
+			  if (indx == 0)
+			    {
+			      if ((osec->flags & SEC_READONLY) == 0
+				  && htab->elf.data_index_section != NULL)
+				osec = htab->elf.data_index_section;
+			      else
+				osec = htab->elf.text_index_section;
+			      indx = elf_section_data (osec)->dynindx;
+			    }
+			  BFD_ASSERT (indx != 0);
+
 			  /* We are turning this relocation into one
 			     against a section symbol, so subtract out
 			     the output section's address but not the
Index: bfd/elf64-s390.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-s390.c,v
retrieving revision 1.87
diff -u -p -r1.87 elf64-s390.c
--- bfd/elf64-s390.c	28 Sep 2006 13:27:32 -0000	1.87
+++ bfd/elf64-s390.c	16 Oct 2006 23:44:29 -0000
@@ -2611,14 +2611,19 @@ elf_s390_relocate_section (output_bfd, i
 
 			  osec = sec->output_section;
 			  sindx = elf_section_data (osec)->dynindx;
-			  BFD_ASSERT (sindx > 0);
+
+			  if (sindx == 0)
+			    {
+			      osec = htab->elf.text_index_section;
+			      sindx = elf_section_data (osec)->dynindx;
+			    }
+			  BFD_ASSERT (sindx != 0);
 
 			  /* We are turning this relocation into one
 			     against a section symbol, so subtract out
 			     the output section's address but not the
 			     offset of the input section in the output
 			     section.  */
-
 			  outrel.r_addend -= osec->vma;
 			}
 		      outrel.r_info = ELF64_R_INFO (sindx, r_type);
@@ -3449,6 +3454,7 @@ const struct elf_size_info s390_elf64_si
 #define elf_backend_reloc_type_class	      elf_s390_reloc_type_class
 #define elf_backend_relocate_section	      elf_s390_relocate_section
 #define elf_backend_size_dynamic_sections     elf_s390_size_dynamic_sections
+#define elf_backend_init_index_section	      _bfd_elf_init_1_index_section
 #define elf_backend_reloc_type_class	      elf_s390_reloc_type_class
 #define elf_backend_plt_sym_val		      elf_s390_plt_sym_val
 
Index: bfd/elf64-sparc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-sparc.c,v
retrieving revision 1.108
diff -u -p -r1.108 elf64-sparc.c
--- bfd/elf64-sparc.c	30 May 2006 16:45:31 -0000	1.108
+++ bfd/elf64-sparc.c	16 Oct 2006 23:44:31 -0000
@@ -889,6 +889,8 @@ const struct elf_size_info elf64_sparc_s
   _bfd_sparc_elf_gc_mark_hook
 #define elf_backend_gc_sweep_hook \
   _bfd_sparc_elf_gc_sweep_hook
+#define elf_backend_init_index_section \
+  _bfd_elf_init_1_index_section
 
 #define elf_backend_can_gc_sections 1
 #define elf_backend_can_refcount 1
Index: bfd/elf64-x86-64.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-x86-64.c,v
retrieving revision 1.126
diff -u -p -r1.126 elf64-x86-64.c
--- bfd/elf64-x86-64.c	29 Sep 2006 13:24:11 -0000	1.126
+++ bfd/elf64-x86-64.c	16 Oct 2006 23:44:34 -0000
@@ -2457,9 +2457,19 @@ elf64_x86_64_relocate_section (bfd *outp
 			{
 			  asection *osec;
 
+			  /* We are turning this relocation into one
+			     against a section symbol.  It would be
+			     proper to subtract the symbol's value,
+			     osec->vma, from the emitted reloc addend,
+			     but ld.so expects buggy relocs.  */
 			  osec = sec->output_section;
 			  sindx = elf_section_data (osec)->dynindx;
-			  BFD_ASSERT (sindx > 0);
+			  if (sindx == 0)
+			    {
+			      asection *oi = htab->elf.text_index_section;
+			      sindx = elf_section_data (oi)->dynindx;
+			    }
+			  BFD_ASSERT (sindx != 0);
 			}
 
 		      outrel.r_info = ELF64_R_INFO (sindx, r_type);
@@ -3657,6 +3667,7 @@ static const struct bfd_elf_special_sect
 #define elf_backend_relocate_section	    elf64_x86_64_relocate_section
 #define elf_backend_size_dynamic_sections   elf64_x86_64_size_dynamic_sections
 #define elf_backend_always_size_sections    elf64_x86_64_always_size_sections
+#define elf_backend_init_index_section	    _bfd_elf_init_1_index_section
 #define elf_backend_plt_sym_val		    elf64_x86_64_plt_sym_val
 #define elf_backend_object_p		    elf64_x86_64_elf_object_p
 #define bfd_elf64_mkobject		    elf64_x86_64_mkobject
Index: bfd/elfn32-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elfn32-mips.c,v
retrieving revision 1.34
diff -u -p -r1.34 elfn32-mips.c
--- bfd/elfn32-mips.c	15 Aug 2006 18:28:48 -0000	1.34
+++ bfd/elfn32-mips.c	16 Oct 2006 23:44:40 -0000
@@ -2301,6 +2301,7 @@ static const struct ecoff_debug_swap mip
 					_bfd_mips_elf_always_size_sections
 #define elf_backend_size_dynamic_sections \
 					_bfd_mips_elf_size_dynamic_sections
+#define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section	_bfd_mips_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol \
 					_bfd_mips_elf_finish_dynamic_symbol
Index: bfd/elfxx-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elfxx-mips.c,v
retrieving revision 1.183
diff -u -p -r1.183 elfxx-mips.c
--- bfd/elfxx-mips.c	28 Sep 2006 13:27:32 -0000	1.183
+++ bfd/elfxx-mips.c	16 Oct 2006 23:44:48 -0000
@@ -4801,6 +4801,11 @@ mips_elf_create_dynamic_relocation (bfd 
 	{
 	  indx = elf_section_data (sec->output_section)->dynindx;
 	  if (indx == 0)
+	    {
+	      asection *osec = htab->root.text_index_section;
+	      indx = elf_section_data (osec)->dynindx;
+	    }
+	  if (indx == 0)
 	    abort ();
 	}
 
Index: bfd/elfxx-sparc.c
===================================================================
RCS file: /cvs/src/src/bfd/elfxx-sparc.c,v
retrieving revision 1.26
diff -u -p -r1.26 elfxx-sparc.c
--- bfd/elfxx-sparc.c	13 Oct 2006 21:03:40 -0000	1.26
+++ bfd/elfxx-sparc.c	16 Oct 2006 23:44:51 -0000
@@ -2864,6 +2864,8 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 		    {
 		      long indx;
 
+		      outrel.r_addend = relocation + rel->r_addend;
+
 		      if (is_plt)
 			sec = htab->splt;
 
@@ -2878,9 +2880,20 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 			{
 			  asection *osec;
 
+			  /* We are turning this relocation into one
+			     against a section symbol.  It would be
+			     proper to subtract the symbol's value,
+			     osec->vma, from the emitted reloc addend,
+			     but ld.so expects buggy relocs.  */
 			  osec = sec->output_section;
 			  indx = elf_section_data (osec)->dynindx;
 
+			  if (indx == 0)
+			    {
+			      osec = htab->elf.text_index_section;
+			      indx = elf_section_data (osec)->dynindx;
+			    }
+
 			  /* FIXME: we really should be able to link non-pic
 			     shared libraries.  */
 			  if (indx == 0)
@@ -2894,8 +2907,8 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 			    }
 			}
 
-		      outrel.r_info = SPARC_ELF_R_INFO (htab, rel, indx, r_type);
-		      outrel.r_addend = relocation + rel->r_addend;
+		      outrel.r_info = SPARC_ELF_R_INFO (htab, rel, indx,
+							r_type);
 		    }
 		}
 
Index: bfd/linker.c
===================================================================
RCS file: /cvs/src/src/bfd/linker.c,v
retrieving revision 1.54
diff -u -p -r1.54 linker.c
--- bfd/linker.c	16 Sep 2006 18:12:14 -0000	1.54
+++ bfd/linker.c	17 Oct 2006 01:52:03 -0000
@@ -3073,7 +3073,7 @@ _bfd_generic_section_already_linked (bfd
   bfd_section_already_linked_table_insert (already_linked_list, sec);
 }
 
-/* Convert symbols in excluded output sections to absolute.  */
+/* Convert symbols in excluded output sections to use a kept section.  */
 
 static bfd_boolean
 fix_syms (struct bfd_link_hash_entry *h, void *data)
@@ -3092,8 +3092,27 @@ fix_syms (struct bfd_link_hash_entry *h,
 	  && (s->output_section->flags & SEC_EXCLUDE) != 0
 	  && bfd_section_removed_from_list (obfd, s->output_section))
 	{
+	  asection *op;
+	  for (op = s->output_section->prev; op != NULL; op = op->prev)
+	    if ((op->flags & SEC_EXCLUDE) == 0
+		&& !bfd_section_removed_from_list (obfd, op))
+	      break;
+	  if (op == NULL)
+	    {
+	      if (s->output_section->prev != NULL)
+		op = s->output_section->prev->next;
+	      else
+		op = s->output_section->owner->sections;
+	      for (; op != NULL; op = op->next)
+		if ((op->flags & SEC_EXCLUDE) == 0
+		    && !bfd_section_removed_from_list (obfd, op))
+		  break;
+	      if (op == NULL)
+		op = bfd_abs_section_ptr;
+	    }
 	  h->u.def.value += s->output_offset + s->output_section->vma;
-	  h->u.def.section = bfd_abs_section_ptr;
+	  h->u.def.value -= op->vma;
+	  h->u.def.section = op;
 	}
     }
 
Index: ld/ldlang.c
===================================================================
RCS file: /cvs/src/src/ld/ldlang.c,v
retrieving revision 1.241
diff -u -p -r1.241 ldlang.c
--- ld/ldlang.c	11 Oct 2006 14:58:19 -0000	1.241
+++ ld/ldlang.c	16 Oct 2006 23:45:21 -0000
@@ -3342,7 +3342,6 @@ strip_excluded_output_sections (void)
 	continue;
 
       exclude = (output_section->rawsize == 0
-		 && !os->section_relative_symbol
 		 && (output_section->flags & SEC_KEEP) == 0
 		 && !bfd_section_removed_from_list (output_bfd,
 						    output_section));
@@ -3372,7 +3371,8 @@ strip_excluded_output_sections (void)
 	{
 	  /* We don't set bfd_section to NULL since bfd_section of the
 	     removed output section statement may still be used.  */
-	  os->ignored = TRUE;
+	  if (!os->section_relative_symbol)
+	    os->ignored = TRUE;
 	  output_section->flags |= SEC_EXCLUDE;
 	  bfd_section_list_remove (output_bfd, output_section);
 	  output_bfd->section_count--;
Index: ld/ld.texinfo
===================================================================
RCS file: /cvs/src/src/ld/ld.texinfo,v
retrieving revision 1.176
diff -u -p -r1.176 ld.texinfo
--- ld/ld.texinfo	27 Sep 2006 04:18:15 -0000	1.176
+++ ld/ld.texinfo	17 Oct 2006 04:21:55 -0000
@@ -3684,21 +3684,23 @@ scripts.
 @cindex discarding sections
 @cindex sections, discarding
 @cindex removing sections
-The linker will not create output section which do not have any
-contents.  This is for convenience when referring to input sections that
-may or may not be present in any of the input files.  For example:
+The linker will not create output sections with no contents.  This is
+for convenience when referring to input sections that may or may not
+be present in any of the input files.  For example:
 @smallexample
 .foo : @{ *(.foo) @}
 @end smallexample
 @noindent
 will only create a @samp{.foo} section in the output file if there is a
-@samp{.foo} section in at least one input file.
-
-If you use anything other than an input section description as an output
-section command, such as a symbol assignment, then the output section
-will always be created, even if there are no matching input sections.
-When a section is discarded, its address (@xref{Output Section Address})
-will also be ignored.
+@samp{.foo} section in at least one input file, and if the input
+sections are not all empty.  Other link script directives that allocate
+space in an output section will also create the output section.
+
+The linker will ignore address assignments (@xref{Output Section Address})
+on discarded output sections, except when the linker script defines
+symbols in the output section.  In that case the linker will obey
+the address assignments, possibly advancing dot and/or current lma
+even though the section is discarded.
 
 @cindex /DISCARD/
 The special output section name @samp{/DISCARD/} may be used to discard
Index: ld/emultempl/armcoff.em
===================================================================
RCS file: /cvs/src/src/ld/emultempl/armcoff.em,v
retrieving revision 1.23
diff -u -p -r1.23 armcoff.em
--- ld/emultempl/armcoff.em	4 Aug 2005 06:22:13 -0000	1.23
+++ ld/emultempl/armcoff.em	16 Oct 2006 23:45:22 -0000
@@ -154,45 +154,46 @@ gld${EMULATION_NAME}_after_open (void)
 static void
 gld${EMULATION_NAME}_finish (void)
 {
-  struct bfd_link_hash_entry * h;
-
-  if (thumb_entry_symbol == NULL)
-    return;
-
-  h = bfd_link_hash_lookup (link_info.hash, thumb_entry_symbol,
-			    FALSE, FALSE, TRUE);
-
-  if (h != (struct bfd_link_hash_entry *) NULL
-      && (h->type == bfd_link_hash_defined
-	  || h->type == bfd_link_hash_defweak)
-      && h->u.def.section->output_section != NULL)
+  if (thumb_entry_symbol != NULL)
     {
-      static char buffer[32];
-      bfd_vma val;
+      struct bfd_link_hash_entry * h;
 
-      /* Special procesing is required for a Thumb entry symbol.  The
-	 bottom bit of its address must be set.  */
-      val = (h->u.def.value
-	     + bfd_get_section_vma (output_bfd,
-				    h->u.def.section->output_section)
-	     + h->u.def.section->output_offset);
-
-      val |= 1;
-
-      /* Now convert this value into a string and store it in entry_symbol
-	 where the lang_finish() function will pick it up.  */
-      buffer[0] = '0';
-      buffer[1] = 'x';
-
-      sprintf_vma (buffer + 2, val);
-
-      if (entry_symbol.name != NULL && entry_from_cmdline)
-	einfo (_("%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"),
-	       thumb_entry_symbol, entry_symbol.name);
-      entry_symbol.name = buffer;
+      h = bfd_link_hash_lookup (link_info.hash, thumb_entry_symbol,
+				FALSE, FALSE, TRUE);
+
+      if (h != (struct bfd_link_hash_entry *) NULL
+	  && (h->type == bfd_link_hash_defined
+	      || h->type == bfd_link_hash_defweak)
+	  && h->u.def.section->output_section != NULL)
+	{
+	  static char buffer[32];
+	  bfd_vma val;
+
+	  /* Special procesing is required for a Thumb entry symbol.  The
+	     bottom bit of its address must be set.  */
+	  val = (h->u.def.value
+		 + bfd_get_section_vma (output_bfd,
+					h->u.def.section->output_section)
+		 + h->u.def.section->output_offset);
+
+	  val |= 1;
+
+	  /* Now convert this value into a string and store it in entry_symbol
+	     where the lang_finish() function will pick it up.  */
+	  buffer[0] = '0';
+	  buffer[1] = 'x';
+
+	  sprintf_vma (buffer + 2, val);
+
+	  if (entry_symbol.name != NULL && entry_from_cmdline)
+	    einfo (_("%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"),
+		   thumb_entry_symbol, entry_symbol.name);
+	  entry_symbol.name = buffer;
+	}
+      else
+	einfo (_("%P: warning: connot find thumb start symbol %s\n"),
+	       thumb_entry_symbol);
     }
-  else
-    einfo (_("%P: warning: connot find thumb start symbol %s\n"), thumb_entry_symbol);
 
   finish_default ();
 }
Index: ld/testsuite/ld-arm/mixed-app.sym
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/mixed-app.sym,v
retrieving revision 1.3
diff -u -p -r1.3 mixed-app.sym
--- ld/testsuite/ld-arm/mixed-app.sym	15 Aug 2005 15:39:44 -0000	1.3
+++ ld/testsuite/ld-arm/mixed-app.sym	16 Oct 2006 23:45:23 -0000
@@ -9,7 +9,7 @@ Symbol table for image:
    ..  ..: 0*[^0]*.*   20    FUNC GLOBAL DEFAULT UND lib_func1
    ..  ..: ........     0  NOTYPE GLOBAL DEFAULT ABS __exidx_start
    ..  ..: ........     0  NOTYPE GLOBAL DEFAULT  11 __data_start
-   ..  ..: ........     0  NOTYPE GLOBAL DEFAULT ABS _stack
+   ..  ..: ........     0  NOTYPE GLOBAL DEFAULT  12 _stack
    ..  ..: ........     0  NOTYPE GLOBAL DEFAULT ABS __end__
    ..  ..: ........     0  NOTYPE GLOBAL DEFAULT ABS __bss_start
    ..  ..: .......0     0    FUNC GLOBAL DEFAULT   8 app_func2
Index: ld/testsuite/ld-cris/ldsym1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/ldsym1.d,v
retrieving revision 1.3
diff -u -p -r1.3 ldsym1.d
--- ld/testsuite/ld-cris/ldsym1.d	4 Nov 2004 15:04:05 -0000	1.3
+++ ld/testsuite/ld-cris/ldsym1.d	16 Oct 2006 23:45:23 -0000
@@ -13,7 +13,7 @@
 
 Disassembly of section \.text:
 
-0+ <__start>:
+0+ <(__start|__Stext)>:
    0:	0f05                	nop 
 
 0+2 <expfn>:
Index: ld/testsuite/ld-cris/libdso-12.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/libdso-12.d,v
retrieving revision 1.6
diff -u -p -r1.6 libdso-12.d
--- ld/testsuite/ld-cris/libdso-12.d	15 Aug 2005 15:39:45 -0000	1.6
+++ ld/testsuite/ld-cris/libdso-12.d	16 Oct 2006 23:45:23 -0000
@@ -12,40 +12,40 @@
 
 DYNAMIC SYMBOL TABLE:
 #...
-0+252 g    DF \.text	0+12 dsofn4
-0+248 g    DF \.text	0+2 expfn
-0+2310 g    DO \.data	0+4 expobj
+0+23e g    DF \.text	0+12 dsofn4
+0+234 g    DF \.text	0+2 expfn
+0+22fc g    DO \.data	0+4 expobj
 #...
-0+24a g    DF \.text	0+8 dsofn3
+0+236 g    DF \.text	0+8 dsofn3
 #...
 0+      D  \*UND\*	0+ dsofn
 #...
 Contents of section \.rela\.got:
- 01d4 0c230000 0a050000 00000000           .*
+ 01c0 f8220000 0a040000 00000000           .*
 Contents of section \.rela\.plt:
- 01e0 04230000 0b030000 00000000 08230000  .*
- 01f0 0b0b0000 00000000                    .*
+ 01cc f0220000 0b020000 00000000 f4220000  .*
+ 01dc 0b0a0000 00000000                    .*
 Contents of section \.plt:
- 01f8 84e20401 7e7a3f7a 04f26ffa bf09b005  .*
- 0208 00000000 00000000 00006f0d 0c000000  .*
- 0218 6ffabf09 b0053f7e 00000000 bf0ed4ff  .*
- 0228 ffffb005 6f0d1000 00006ffa bf09b005  .*
- 0238 3f7e0c00 0000bf0e baffffff b005      .*
+ 01e4 84e20401 7e7a3f7a 04f26ffa bf09b005  .*
+ 01f4 00000000 00000000 00006f0d 0c000000  .*
+ 0204 6ffabf09 b0053f7e 00000000 bf0ed4ff  .*
+ 0214 ffffb005 6f0d1000 00006ffa bf09b005  .*
+ 0224 3f7e0c00 0000bf0e baffffff b005      .*
 Contents of section \.text:
- 0246 b005b005 bfbee2ff ffffb005 7f0da620  .*
- 0256 00005f0d 1400bfbe b6ffffff b0050000  .*
+ 0232 b005b005 bfbee2ff ffffb005 7f0da620  .*
+ 0242 00005f0d 1400bfbe b6ffffff b0050000  .*
 Contents of section \.dynamic:
- 2268 04000000 94000000 05000000 98010000  .*
- 2278 06000000 d8000000 0a000000 3a000000  .*
- 2288 0b000000 10000000 03000000 f8220000  .*
- 2298 02000000 18000000 14000000 07000000  .*
- 22a8 17000000 e0010000 07000000 d4010000  .*
- 22b8 08000000 0c000000 09000000 0c000000  .*
- 22c8 00000000 00000000 00000000 00000000  .*
- 22d8 00000000 00000000 00000000 00000000  .*
- 22e8 00000000 00000000 00000000 00000000  .*
+ 2254 04000000 94000000 05000000 84010000  .*
+ 2264 06000000 d4000000 0a000000 3a000000  .*
+ 2274 0b000000 10000000 03000000 e4220000  .*
+ 2284 02000000 18000000 14000000 07000000  .*
+ 2294 17000000 cc010000 07000000 c0010000  .*
+ 22a4 08000000 0c000000 09000000 0c000000  .*
+ 22b4 00000000 00000000 00000000 00000000  .*
+ 22c4 00000000 00000000 00000000 00000000  .*
+ 22d4 00000000 00000000 00000000 00000000  .*
 Contents of section \.got:
- 22f8 68220000 00000000 00000000 1e020000  .*
- 2308 38020000 00000000                    .*
+ 22e4 54220000 00000000 00000000 0a020000  .*
+ 22f4 24020000 00000000                    .*
 Contents of section \.data:
- 2310 00000000                             .*
+ 22fc 00000000                             .*
Index: ld/testsuite/ld-cris/v32-ba-1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-cris/v32-ba-1.d,v
retrieving revision 1.4
diff -u -p -r1.4 v32-ba-1.d
--- ld/testsuite/ld-cris/v32-ba-1.d	1 Sep 2005 01:47:25 -0000	1.4
+++ ld/testsuite/ld-cris/v32-ba-1.d	16 Oct 2006 23:45:23 -0000
@@ -10,7 +10,7 @@
 
 Disassembly of section \.text:
 
-0+ <a>:
+0+ <(a|__Stext)>:
    0:	bf0e 0800 0000      	ba 8 <b>
    6:	5e82                	moveq 30,r8
 
Index: ld/testsuite/ld-elf/orphan.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-elf/orphan.d,v
retrieving revision 1.2
diff -u -p -r1.2 orphan.d
--- ld/testsuite/ld-elf/orphan.d	24 Oct 2005 23:06:19 -0000	1.2
+++ ld/testsuite/ld-elf/orphan.d	16 Oct 2006 23:45:23 -0000
@@ -4,6 +4,7 @@
 
 #...
   \[[ 0-9]+\] \.(text|notbad)[ \t]+PROGBITS[ \t0-9a-f]+AX?.*
+#...
   \[[ 0-9]+\] \.(text|notbad)[ \t]+PROGBITS[ \t0-9a-f]+AX?.*
   \[[ 0-9]+\] \.data[ \t]+PROGBITS[ \t0-9a-f]+WA.*
 #...
Index: ld/testsuite/ld-elf/orphan2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-elf/orphan2.d,v
retrieving revision 1.3
diff -u -p -r1.3 orphan2.d
--- ld/testsuite/ld-elf/orphan2.d	19 Dec 2005 15:07:28 -0000	1.3
+++ ld/testsuite/ld-elf/orphan2.d	16 Oct 2006 23:45:23 -0000
@@ -4,5 +4,6 @@
 
 #...
   \[[ 0-9]+\] \.text[ \t]+PROGBITS[ \t0-9a-f]+AX?.*
+#...
   \[[ 0-9]+\] \.modinfo[ \t]+PROGBITS[ \t0-9a-f]+A.*
 #pass
Index: ld/testsuite/ld-i386/tlsbin.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsbin.rd,v
retrieving revision 1.10
diff -u -p -r1.10 tlsbin.rd
--- ld/testsuite/ld-i386/tlsbin.rd	2 Jun 2006 00:31:59 -0000	1.10
+++ ld/testsuite/ld-i386/tlsbin.rd	16 Oct 2006 23:45:24 -0000
@@ -70,7 +70,7 @@ Relocation section '.rel.plt' at offset 
  Offset +Info +Type +Sym.Value  Sym. Name
 [0-9a-f ]+R_386_JUMP_SLOT +[0-9a-f]+ +___tls_get_addr
 
-Symbol table '.dynsym' contains 13 entries:
+Symbol table '.dynsym' contains [0-9]+ 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
Index: ld/testsuite/ld-i386/tlsbindesc.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsbindesc.rd,v
retrieving revision 1.4
diff -u -p -r1.4 tlsbindesc.rd
--- ld/testsuite/ld-i386/tlsbindesc.rd	2 Jun 2006 00:31:59 -0000	1.4
+++ ld/testsuite/ld-i386/tlsbindesc.rd	16 Oct 2006 23:45:24 -0000
@@ -64,7 +64,7 @@ Relocation section '.rel.dyn' at offset 
 0+804a0fc  00000825 R_386_TLS_TPOFF32 0+ +sG1
 0+804a100  00000b0e R_386_TLS_TPOFF +0+ +sG8
 
-Symbol table '.dynsym' contains 12 entries:
+Symbol table '.dynsym' contains [0-9]+ 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
Index: ld/testsuite/ld-i386/tlsdesc.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsdesc.rd,v
retrieving revision 1.4
diff -u -p -r1.4 tlsdesc.rd
--- ld/testsuite/ld-i386/tlsdesc.rd	2 Jun 2006 00:31:59 -0000	1.4
+++ ld/testsuite/ld-i386/tlsdesc.rd	16 Oct 2006 23:45:24 -0000
@@ -49,41 +49,38 @@ Program Headers:
 
 Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
  Offset +Info +Type +Sym.Value +Sym. Name
-[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
-[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
-[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
-[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
-[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
-[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
-[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
-[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
-[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
-[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
-[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
-[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
-[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
-[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
-[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
-[0-9a-f]+ +0+50e R_386_TLS_TPOFF   0+8   sg3
-[0-9a-f]+ +0+625 R_386_TLS_TPOFF32 0+c   sg4
-[0-9a-f]+ +0+60e R_386_TLS_TPOFF   0+c   sg4
-[0-9a-f]+ +0+70e R_386_TLS_TPOFF   0+10   sg5
-[0-9a-f]+ +0+b25 R_386_TLS_TPOFF32 0+4   sg2
+[0-9a-f ]+R_386_TLS_TPOFF32
+[0-9a-f ]+R_386_TLS_TPOFF *
+[0-9a-f ]+R_386_TLS_TPOFF32
+[0-9a-f ]+R_386_TLS_TPOFF *
+[0-9a-f ]+R_386_TLS_TPOFF *
+[0-9a-f ]+R_386_TLS_TPOFF *
+[0-9a-f ]+R_386_TLS_TPOFF32
+[0-9a-f ]+R_386_TLS_TPOFF32
+[0-9a-f ]+R_386_TLS_TPOFF *
+[0-9a-f ]+R_386_TLS_TPOFF32
+[0-9a-f ]+R_386_TLS_TPOFF *
+[0-9a-f ]+R_386_TLS_TPOFF *
+[0-9a-f ]+R_386_TLS_TPOFF *
+[0-9a-f ]+R_386_TLS_TPOFF *
+[0-9a-f ]+R_386_TLS_TPOFF32
+[0-9a-f ]+R_386_TLS_TPOFF   0+8   sg3
+[0-9a-f ]+R_386_TLS_TPOFF32 0+c   sg4
+[0-9a-f ]+R_386_TLS_TPOFF   0+c   sg4
+[0-9a-f ]+R_386_TLS_TPOFF   0+10   sg5
+[0-9a-f ]+R_386_TLS_TPOFF32 0+4   sg2
 
 Relocation section '.rel.plt' at offset 0x[0-9a-f]+ contains 5 entries:
  Offset     Info    Type            Sym.Value  Sym. Name
-[0-9a-f]+ +0+829 R_386_TLS_DESC * 0+   sg1
-[0-9a-f]+ +0+29 R_386_TLS_DESC *
-[0-9a-f]+ +0+29 R_386_TLS_DESC *
-[0-9a-f]+ +0+29 R_386_TLS_DESC *
-[0-9a-f]+ +0+29 R_386_TLS_DESC *
+[0-9a-f ]+R_386_TLS_DESC * 0+   sg1
+[0-9a-f ]+R_386_TLS_DESC *
+[0-9a-f ]+R_386_TLS_DESC *
+[0-9a-f ]+R_386_TLS_DESC *
+[0-9a-f ]+R_386_TLS_DESC *
 
-Symbol table '.dynsym' contains 16 entries:
+Symbol table '.dynsym' contains [0-9]+ 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 +6 *
- +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +7 *
- +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +8 *
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +7 sg8
  +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +7 sg3
  +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +7 sg4
Index: ld/testsuite/ld-i386/tlsdesc.sd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsdesc.sd,v
retrieving revision 1.1
diff -u -p -r1.1 tlsdesc.sd
--- ld/testsuite/ld-i386/tlsdesc.sd	18 Jan 2006 21:07:49 -0000	1.1
+++ ld/testsuite/ld-i386/tlsdesc.sd	16 Oct 2006 23:45:24 -0000
@@ -14,7 +14,7 @@ Contents of section \.got:
  [0-9a-f]+ 6c000000 b4ffffff 4c000000 68000000  .*
  [0-9a-f]+ 50000000 70000000 00000000 bcffffff  .*
 Contents of section \.got\.plt:
- [0-9a-f]+ ec150000 00000000 00000000 00000000  .*
+ [0-9a-f]+ b0150000 00000000 00000000 00000000  .*
  [0-9a-f]+ 20000000 00000000 60000000 00000000  .*
  [0-9a-f]+ 00000000 00000000 00000000 00000000  .*
  [0-9a-f]+ 40000000 +.*
Index: ld/testsuite/ld-i386/tlsgdesc.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsgdesc.rd,v
retrieving revision 1.2
diff -u -p -r1.2 tlsgdesc.rd
--- ld/testsuite/ld-i386/tlsgdesc.rd	2 Jun 2006 00:31:59 -0000	1.2
+++ ld/testsuite/ld-i386/tlsgdesc.rd	16 Oct 2006 23:45:24 -0000
@@ -45,25 +45,24 @@ Program Headers:
 
 Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 8 entries:
  Offset +Info +Type +Sym.Value +Sym. Name
-[0-9a-f]+ +0+225 R_386_TLS_TPOFF32 0+   sG3
-[0-9a-f]+ +0+30e R_386_TLS_TPOFF   0+   sG5
-[0-9a-f]+ +0+423 R_386_TLS_DTPMOD3 0+   sG2
-[0-9a-f]+ +0+424 R_386_TLS_DTPOFF3 0+   sG2
-[0-9a-f]+ +0+50e R_386_TLS_TPOFF   0+   sG4
-[0-9a-f]+ +0+725 R_386_TLS_TPOFF32 0+   sG6
-[0-9a-f]+ +0+923 R_386_TLS_DTPMOD3 0+   sG1
-[0-9a-f]+ +0+924 R_386_TLS_DTPOFF3 0+   sG1
+[0-9a-f ]+R_386_TLS_TPOFF32 0+   sG3
+[0-9a-f ]+R_386_TLS_TPOFF   0+   sG5
+[0-9a-f ]+R_386_TLS_DTPMOD3 0+   sG2
+[0-9a-f ]+R_386_TLS_DTPOFF3 0+   sG2
+[0-9a-f ]+R_386_TLS_TPOFF   0+   sG4
+[0-9a-f ]+R_386_TLS_TPOFF32 0+   sG6
+[0-9a-f ]+R_386_TLS_DTPMOD3 0+   sG1
+[0-9a-f ]+R_386_TLS_DTPOFF3 0+   sG1
 
 Relocation section '.rel.plt' at offset 0x[0-9a-f]+ contains 3 entries:
  Offset     Info    Type            Sym.Value  Sym. Name
-[0-9a-f]+  0+c07 R_386_JUMP_SLOT   0+   ___tls_get_addr
-[0-9a-f]+  0+929 R_386_TLS_DESC    0+   sG1
-[0-9a-f]+  0+429 R_386_TLS_DESC    0+   sG2
+[0-9a-f ]+R_386_JUMP_SLOT   0+   ___tls_get_addr
+[0-9a-f ]+R_386_TLS_DESC    0+   sG1
+[0-9a-f ]+R_386_TLS_DESC    0+   sG2
 
-Symbol table '.dynsym' contains 13 entries:
+Symbol table '.dynsym' contains [0-9]+ 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 *
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG3
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG5
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sG2
Index: ld/testsuite/ld-i386/tlsnopic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlsnopic.rd,v
retrieving revision 1.11
diff -u -p -r1.11 tlsnopic.rd
--- ld/testsuite/ld-i386/tlsnopic.rd	2 Jun 2006 00:31:59 -0000	1.11
+++ ld/testsuite/ld-i386/tlsnopic.rd	16 Oct 2006 23:45:24 -0000
@@ -69,11 +69,9 @@ Relocation section '.rel.dyn' at offset 
 [0-9a-f ]+R_386_TLS_TPOFF   0+   sg2
 
 
-Symbol table '.dynsym' contains 12 entries:
+Symbol table '.dynsym' contains [0-9]+ 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 *
- +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +6 *
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sg3
  +[0-9]+: 0+ +0 TLS +GLOBAL DEFAULT  UND sg4
  +[0-9]+: 0+1000 +0 FUNC +GLOBAL DEFAULT +5 fn3
Index: ld/testsuite/ld-i386/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-i386/tlspic.rd,v
retrieving revision 1.10
diff -u -p -r1.10 tlspic.rd
--- ld/testsuite/ld-i386/tlspic.rd	2 Jun 2006 00:31:59 -0000	1.10
+++ ld/testsuite/ld-i386/tlspic.rd	16 Oct 2006 23:45:24 -0000
@@ -81,12 +81,9 @@ Relocation section '.rel.plt' at offset 
  Offset +Info +Type +Sym.Value +Sym. Name
 [0-9a-f ]+R_386_JUMP_SLOT   0+   ___tls_get_addr
 
-Symbol table '.dynsym' contains 17 entries:
+Symbol table '.dynsym' contains [0-9]+ 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 *
- +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +8 *
- +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +9 *
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8
  +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3
  +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4
Index: ld/testsuite/ld-ia64/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-ia64/tlspic.rd,v
retrieving revision 1.12
diff -u -p -r1.12 tlspic.rd
--- ld/testsuite/ld-ia64/tlspic.rd	2 Jun 2006 00:31:59 -0000	1.12
+++ ld/testsuite/ld-ia64/tlspic.rd	16 Oct 2006 23:45:24 -0000
@@ -59,11 +59,6 @@ Relocation section '.rela.IA_64.pltoff' 
 Symbol table '.dynsym' contains [0-9]+ entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
 .* NOTYPE +LOCAL +DEFAULT +UND *
-.* SECTION LOCAL +DEFAULT +7 *
-.* SECTION LOCAL +DEFAULT +8 *
-.* SECTION LOCAL +DEFAULT +10 *
-.* SECTION LOCAL +DEFAULT +11 *
-.* SECTION LOCAL +DEFAULT +14 *
 .* TLS +GLOBAL DEFAULT +10 sg8
 .* TLS +GLOBAL DEFAULT +10 sg3
 .* TLS +GLOBAL DEFAULT +10 sg4
Index: ld/testsuite/ld-mips-elf/eh-frame1-n32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/eh-frame1-n32.d,v
retrieving revision 1.1
diff -u -p -r1.1 eh-frame1-n32.d
--- ld/testsuite/ld-mips-elf/eh-frame1-n32.d	16 Nov 2004 10:16:30 -0000	1.1
+++ ld/testsuite/ld-mips-elf/eh-frame1-n32.d	16 Oct 2006 23:45:24 -0000
@@ -7,19 +7,19 @@
 
 Relocation section '\.rel\.dyn' .*:
  *Offset .*
-00000000  00000000 R_MIPS_NONE *
+00000000  [0-9a-f]+ R_MIPS_NONE *
 # Initial PCs for the FDEs attached to CIE 0xbc
-000300dc  00000003 R_MIPS_REL32 *
-000300f0  00000003 R_MIPS_REL32 *
+000300dc  [0-9a-f]+ R_MIPS_REL32 *
+000300f0  [0-9a-f]+ R_MIPS_REL32 *
 # Likewise CIE 0x220
-00030240  00000003 R_MIPS_REL32 *
-00030254  00000003 R_MIPS_REL32 *
-0003008b  00000503 R_MIPS_REL32      00000000   foo
-000300d0  00000503 R_MIPS_REL32      00000000   foo
-0003010e  00000503 R_MIPS_REL32      00000000   foo
-000301ef  00000503 R_MIPS_REL32      00000000   foo
-00030234  00000503 R_MIPS_REL32      00000000   foo
-00030272  00000503 R_MIPS_REL32      00000000   foo
+00030240  [0-9a-f]+ R_MIPS_REL32 *
+00030254  [0-9a-f]+ R_MIPS_REL32 *
+0003008b  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+000300d0  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+0003010e  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+000301ef  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+00030234  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+00030272  [0-9a-f]+ R_MIPS_REL32      00000000   foo
 #...
 The section \.eh_frame contains:
 
Index: ld/testsuite/ld-mips-elf/eh-frame1-n64.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/eh-frame1-n64.d,v
retrieving revision 1.1
diff -u -p -r1.1 eh-frame1-n64.d
--- ld/testsuite/ld-mips-elf/eh-frame1-n64.d	16 Nov 2004 10:16:30 -0000	1.1
+++ ld/testsuite/ld-mips-elf/eh-frame1-n64.d	16 Oct 2006 23:45:24 -0000
@@ -7,39 +7,39 @@
 
 Relocation section '\.rel\.dyn' .*:
  *Offset .*
-000000000000  000000000000 R_MIPS_NONE *
+000000000000  [0-9a-f]+ R_MIPS_NONE *
  *Type2: R_MIPS_NONE *
  *Type3: R_MIPS_NONE *
 # Initial PCs for the FDEs attached to CIE 0x120
-000000030148  000000001203 R_MIPS_REL32 *
+000000030148  [0-9a-f]+ R_MIPS_REL32 *
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-000000030168  000000001203 R_MIPS_REL32 *
+000000030168  [0-9a-f]+ R_MIPS_REL32 *
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
 # Likewise CIE 0x340
-000000030368  000000001203 R_MIPS_REL32 *
+000000030368  [0-9a-f]+ R_MIPS_REL32 *
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-000000030388  000000001203 R_MIPS_REL32 *
+000000030388  [0-9a-f]+ R_MIPS_REL32 *
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-0000000300cb  000500001203 R_MIPS_REL32      0000000000000000 foo
+0000000300cb  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-000000030138  000500001203 R_MIPS_REL32      0000000000000000 foo
+000000030138  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-000000030192  000500001203 R_MIPS_REL32      0000000000000000 foo
+000000030192  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-0000000302eb  000500001203 R_MIPS_REL32      0000000000000000 foo
+0000000302eb  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-000000030358  000500001203 R_MIPS_REL32      0000000000000000 foo
+000000030358  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-0000000303b2  000500001203 R_MIPS_REL32      0000000000000000 foo
+0000000303b2  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
 #...
Index: ld/testsuite/ld-mips-elf/eh-frame2-n32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/eh-frame2-n32.d,v
retrieving revision 1.1
diff -u -p -r1.1 eh-frame2-n32.d
--- ld/testsuite/ld-mips-elf/eh-frame2-n32.d	17 Jan 2005 17:44:41 -0000	1.1
+++ ld/testsuite/ld-mips-elf/eh-frame2-n32.d	16 Oct 2006 23:45:24 -0000
@@ -7,19 +7,19 @@
 
 Relocation section '\.rel\.dyn' .*:
  *Offset .*
-00000000  00000000 R_MIPS_NONE *
+00000000  [0-9a-f]+ R_MIPS_NONE *
 # Initial PCs for the FDEs attached to CIE 0xb8
-000300d8  00000003 R_MIPS_REL32 *
-000300ec  00000003 R_MIPS_REL32 *
+000300d8  [0-9a-f]+ R_MIPS_REL32 *
+000300ec  [0-9a-f]+ R_MIPS_REL32 *
 # Likewise CIE 0x218
-00030238  00000003 R_MIPS_REL32 *
-0003024c  00000003 R_MIPS_REL32 *
-0003008b  00000503 R_MIPS_REL32      00000000   foo
-000300cc  00000503 R_MIPS_REL32      00000000   foo
-0003010a  00000503 R_MIPS_REL32      00000000   foo
-000301eb  00000503 R_MIPS_REL32      00000000   foo
-0003022c  00000503 R_MIPS_REL32      00000000   foo
-0003026a  00000503 R_MIPS_REL32      00000000   foo
+00030238  [0-9a-f]+ R_MIPS_REL32 *
+0003024c  [0-9a-f]+ R_MIPS_REL32 *
+0003008b  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+000300cc  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+0003010a  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+000301eb  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+0003022c  [0-9a-f]+ R_MIPS_REL32      00000000   foo
+0003026a  [0-9a-f]+ R_MIPS_REL32      00000000   foo
 #...
 The section \.eh_frame contains:
 
Index: ld/testsuite/ld-mips-elf/eh-frame2-n64.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/eh-frame2-n64.d,v
retrieving revision 1.1
diff -u -p -r1.1 eh-frame2-n64.d
--- ld/testsuite/ld-mips-elf/eh-frame2-n64.d	17 Jan 2005 17:44:41 -0000	1.1
+++ ld/testsuite/ld-mips-elf/eh-frame2-n64.d	16 Oct 2006 23:45:24 -0000
@@ -7,39 +7,39 @@
 
 Relocation section '\.rel\.dyn' .*:
  *Offset .*
-000000000000  000000000000 R_MIPS_NONE *
+000000000000  [0-9a-f]+ R_MIPS_NONE *
  *Type2: R_MIPS_NONE *
  *Type3: R_MIPS_NONE *
 # Initial PCs for the FDEs attached to CIE 0x118
-000000030140  000000001203 R_MIPS_REL32 *
+000000030140  [0-9a-f]+ R_MIPS_REL32 *
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-000000030160  000000001203 R_MIPS_REL32 *
+000000030160  [0-9a-f]+ R_MIPS_REL32 *
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
 # Likewise CIE 0x330
-000000030358  000000001203 R_MIPS_REL32 *
+000000030358  [0-9a-f]+ R_MIPS_REL32 *
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-000000030378  000000001203 R_MIPS_REL32 *
+000000030378  [0-9a-f]+ R_MIPS_REL32 *
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-0000000300cb  000500001203 R_MIPS_REL32      0000000000000000 foo
+0000000300cb  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-000000030130  000500001203 R_MIPS_REL32      0000000000000000 foo
+000000030130  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-00000003018a  000500001203 R_MIPS_REL32      0000000000000000 foo
+00000003018a  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-0000000302e3  000500001203 R_MIPS_REL32      0000000000000000 foo
+0000000302e3  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-000000030348  000500001203 R_MIPS_REL32      0000000000000000 foo
+000000030348  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
-0000000303a2  000500001203 R_MIPS_REL32      0000000000000000 foo
+0000000303a2  [0-9a-f]+ R_MIPS_REL32      0000000000000000 foo
  *Type2: R_MIPS_64 *
  *Type3: R_MIPS_NONE *
 #...
Index: ld/testsuite/ld-mips-elf/mips-elf.exp
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/mips-elf.exp,v
retrieving revision 1.39
diff -u -p -r1.39 mips-elf.exp
--- ld/testsuite/ld-mips-elf/mips-elf.exp	18 Sep 2006 18:21:42 -0000	1.39
+++ ld/testsuite/ld-mips-elf/mips-elf.exp	16 Oct 2006 23:45:24 -0000
@@ -147,14 +147,13 @@ run_dump_test "hash1c"
 
 if {[istarget mips*-*-linux*]} {
      # The number of symbols that are always included in the symbol table
-     # for these tests.  The 5 are:
+     # for these tests.  The 4 are:
      #
      #     the null symbol entry
      #     the .MIPS.stubs section symbol
-     #     the .text section symbol
      #     _gp
      #     _GLOBAL_OFFSET_TABLE_
-     set base_syms 5
+     set base_syms 4
      foreach dynsym { 7fff 8000 fff0 10000 2fe80 } {
 	 run_ld_link_tests \
 	     [list [list \
Index: ld/testsuite/ld-mips-elf/rel32-n32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/rel32-n32.d,v
retrieving revision 1.8
diff -u -p -r1.8 rel32-n32.d
--- ld/testsuite/ld-mips-elf/rel32-n32.d	4 Feb 2006 08:28:29 -0000	1.8
+++ ld/testsuite/ld-mips-elf/rel32-n32.d	16 Oct 2006 23:45:24 -0000
@@ -6,10 +6,10 @@
 
 Relocation section '.rel.dyn' at offset .* contains 2 entries:
  Offset     Info    Type            Sym.Value  Sym. Name
-00000000  00000000 R_MIPS_NONE      
-000002d0  00000003 R_MIPS_REL32     
+[0-9a-f ]+R_MIPS_NONE      
+[0-9a-f ]+R_MIPS_REL32     
 
 Hex dump of section '.text':
-  0x000002c0 00000000 00000000 00000000 00000000 ................
-  0x000002d0 000002d0 00000000 00000000 00000000 ................
-  0x000002e0 00000000 00000000 00000000 00000000 ................
+  0x000002b0 00000000 00000000 00000000 00000000 ................
+  0x000002c0 000002c0 00000000 00000000 00000000 ................
+  0x000002d0 00000000 00000000 00000000 00000000 ................
Index: ld/testsuite/ld-mips-elf/rel32-o32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/rel32-o32.d,v
retrieving revision 1.7
diff -u -p -r1.7 rel32-o32.d
--- ld/testsuite/ld-mips-elf/rel32-o32.d	4 Feb 2006 08:28:29 -0000	1.7
+++ ld/testsuite/ld-mips-elf/rel32-o32.d	16 Oct 2006 23:45:24 -0000
@@ -6,10 +6,10 @@
 
 Relocation section '.rel.dyn' at offset .* contains 2 entries:
  Offset     Info    Type            Sym.Value  Sym. Name
-00000000  00000000 R_MIPS_NONE      
-000002f0  00000003 R_MIPS_REL32     
+[0-9a-f ]+R_MIPS_NONE      
+[0-9a-f ]+R_MIPS_REL32     
 
 Hex dump of section '.text':
+  0x000002c0 00000000 00000000 00000000 00000000 ................
+  0x000002d0 000002d0 00000000 00000000 00000000 ................
   0x000002e0 00000000 00000000 00000000 00000000 ................
-  0x000002f0 000002f0 00000000 00000000 00000000 ................
-  0x00000300 00000000 00000000 00000000 00000000 ................
Index: ld/testsuite/ld-mips-elf/rel64.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/rel64.d,v
retrieving revision 1.7
diff -u -p -r1.7 rel64.d
--- ld/testsuite/ld-mips-elf/rel64.d	4 Feb 2006 08:28:29 -0000	1.7
+++ ld/testsuite/ld-mips-elf/rel64.d	16 Oct 2006 23:45:24 -0000
@@ -6,14 +6,14 @@
 
 Relocation section '.rel.dyn' at offset .* contains 2 entries:
   Offset          Info           Type           Sym. Value    Sym. Name
-000000000000  000000000000 R_MIPS_NONE      
-                    Type2: R_MIPS_NONE      
-                    Type3: R_MIPS_NONE      
-000000000450  000000001203 R_MIPS_REL32     
-                    Type2: R_MIPS_64        
-                    Type3: R_MIPS_NONE      
+[0-9a-f ]+R_MIPS_NONE      
+ +Type2: R_MIPS_NONE      
+ +Type3: R_MIPS_NONE      
+[0-9a-f ]+R_MIPS_REL32     
+ +Type2: R_MIPS_64        
+ +Type3: R_MIPS_NONE      
 
 Hex dump of section '.text':
-  0x00000440 00000000 00000000 00000000 00000000 ................
-  0x00000450 00000000 00000450 00000000 00000000 ................
-  0x00000460 00000000 00000000 00000000 00000000 ................
+  0x00000430 00000000 00000000 00000000 00000000 ................
+  0x00000440 00000000 00000440 00000000 00000000 ................
+  0x00000450 00000000 00000000 00000000 00000000 ................
Index: ld/testsuite/ld-mips-elf/tls-multi-got-1.got
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tls-multi-got-1.got,v
retrieving revision 1.3
diff -u -p -r1.3 tls-multi-got-1.got
--- ld/testsuite/ld-mips-elf/tls-multi-got-1.got	5 Jul 2006 16:01:38 -0000	1.3
+++ ld/testsuite/ld-mips-elf/tls-multi-got-1.got	16 Oct 2006 23:45:24 -0000
@@ -4,17 +4,17 @@
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-001495d0 R_MIPS_TLS_DTPMOD32  \*ABS\*
-0013f948 R_MIPS_TLS_DTPMOD32  \*ABS\*
-001495dc R_MIPS_TLS_DTPMOD32  tlsvar_gd
-001495e0 R_MIPS_TLS_DTPREL32  tlsvar_gd
-0013f954 R_MIPS_TLS_DTPMOD32  tlsvar_gd
-0013f958 R_MIPS_TLS_DTPREL32  tlsvar_gd
-001495d8 R_MIPS_TLS_TPREL32  tlsvar_ie
-0013f950 R_MIPS_TLS_TPREL32  tlsvar_ie
-00143f7c R_MIPS_REL32      sym_1_9526
+001495c0 R_MIPS_TLS_DTPMOD32  \*ABS\*
+0013f938 R_MIPS_TLS_DTPMOD32  \*ABS\*
+001495cc R_MIPS_TLS_DTPMOD32  tlsvar_gd
+001495d0 R_MIPS_TLS_DTPREL32  tlsvar_gd
+0013f944 R_MIPS_TLS_DTPMOD32  tlsvar_gd
+0013f948 R_MIPS_TLS_DTPREL32  tlsvar_gd
+001495c8 R_MIPS_TLS_TPREL32  tlsvar_ie
+0013f940 R_MIPS_TLS_TPREL32  tlsvar_ie
+00143f6c R_MIPS_REL32      sym_1_9526
 #...
-00139bd0 R_MIPS_REL32      sym_2_8654
+00139bc0 R_MIPS_REL32      sym_2_8654
 00000000 R_MIPS_NONE       \*ABS\*
 00000000 R_MIPS_NONE       \*ABS\*
 00000000 R_MIPS_NONE       \*ABS\*
@@ -40,19 +40,19 @@ OFFSET   TYPE              VALUE 
 
 
 Contents of section .got:
- 122420 00000000 80000000 00000000 00000000  ................
- 122430 00000000 00000000 00000000 00000000  ................
- 122440 00000000 00000000 00000000 00000000  ................
- 122450 00000000 000d8048 000d66a4 000d2054  .......H..f... T
+ 122410 00000000 80000000 00000000 00000000  .*
+ 122420 00000000 00000000 00000000 00000000  .*
+ 122430 00000000 00000000 00000000 00000000  .*
+ 122440 00000000 000d8038 000d6694 000d2044  .*
 #...
- 13f930 00000000 00000000 00000000 00000000  ................
- 13f940 00000000 00000000 00000000 00000000  ................
- 13f950 00000000 00000000 00000000 00000000  ................
- 13f960 80000000 00000000 00000000 00000000  ................
+ 13f920 00000000 00000000 00000000 00000000  .*
+ 13f930 00000000 00000000 00000000 00000000  .*
+ 13f940 00000000 00000000 00000000 00000000  .*
+ 13f950 80000000 00000000 00000000 00000000  .*
 #...
- 1495a0 00000000 00000000 00000000 00000000  ................
- 1495b0 00000000 00000000 00000000 00000000  ................
- 1495c0 00000000 00000000 00000000 00000000  ................
- 1495d0 00000000 00000000 00000000 00000000  ................
- 1495e0 00000000                             ....            
+ 149590 00000000 00000000 00000000 00000000  .*
+ 1495a0 00000000 00000000 00000000 00000000  .*
+ 1495b0 00000000 00000000 00000000 00000000  .*
+ 1495c0 00000000 00000000 00000000 00000000  .*
+ 1495d0 00000000                             .*
 #pass
Index: ld/testsuite/ld-mips-elf/tls-multi-got-1.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tls-multi-got-1.r,v
retrieving revision 1.3
diff -u -p -r1.3 tls-multi-got-1.r
--- ld/testsuite/ld-mips-elf/tls-multi-got-1.r	5 Jul 2006 16:01:38 -0000	1.3
+++ ld/testsuite/ld-mips-elf/tls-multi-got-1.r	16 Oct 2006 23:45:24 -0000
@@ -2,60 +2,39 @@
 Dynamic section at offset 0xec contains 19 entries:
   Tag        Type                         Name/Value
  0x00000004 \(HASH\)                       0x1ac
- 0x00000005 \(STRTAB\)                     0x71db8
- 0x00000006 \(SYMTAB\)                     0x23ad8
+ 0x00000005 \(STRTAB\).*
+ 0x00000006 \(SYMTAB\).*
  0x0000000a \(STRSZ\)                      220091 \(bytes\)
  0x0000000b \(SYMENT\)                     16 \(bytes\)
  0x00000015 \(DEBUG\)                      0x0
- 0x00000003 \(PLTGOT\)                     0x122420
- 0x00000011 \(REL\)                        0xa7974
+ 0x00000003 \(PLTGOT\)                     0x122410
+ 0x00000011 \(REL\)                        0xa7960
  0x00000012 \(RELSZ\)                      160072 \(bytes\)
  0x00000013 \(RELENT\)                     8 \(bytes\)
  0x70000001 \(MIPS_RLD_VERSION\)           1
  0x70000005 \(MIPS_FLAGS\)                 NOTPOT
  0x70000006 \(MIPS_BASE_ADDRESS\)          0
  0x7000000a \(MIPS_LOCAL_GOTNO\)           13
- 0x70000011 \(MIPS_SYMTABNO\)              20014
+ 0x70000011 \(MIPS_SYMTABNO\)              20013
  0x70000012 \(MIPS_UNREFEXTNO\)            11
- 0x70000013 \(MIPS_GOTSYM\)                0xe
+ 0x70000013 \(MIPS_GOTSYM\)                0xd
  0x0000001e \(FLAGS\)                      STATIC_TLS
  0x00000000 \(NULL\)                       0x0
 
 Relocation section '\.rel\.dyn' at offset 0x[0-9a-f]+ contains 20031 entries:
  Offset     Info    Type            Sym.Value  Sym. Name
-00000000  00000000 R_MIPS_NONE      
-001495d0  00000026 R_MIPS_TLS_DTPMOD
-0013f948  00000026 R_MIPS_TLS_DTPMOD
-001495dc  00000626 R_MIPS_TLS_DTPMOD 00000000   tlsvar_gd
-001495e0  00000627 R_MIPS_TLS_DTPREL 00000000   tlsvar_gd
-0013f954  00000626 R_MIPS_TLS_DTPMOD 00000000   tlsvar_gd
-0013f958  00000627 R_MIPS_TLS_DTPREL 00000000   tlsvar_gd
-001495d8  00000b2f R_MIPS_TLS_TPREL3 00000004   tlsvar_ie
-0013f950  00000b2f R_MIPS_TLS_TPREL3 00000004   tlsvar_ie
-00143f7c  00000e03 R_MIPS_REL32      000d8048   sym_1_9526
-00143768  00000f03 R_MIPS_REL32      000d66a4   sym_1_7885
+[0-9a-f ]+R_MIPS_NONE      
+[0-9a-f ]+R_MIPS_TLS_DTPMOD
+[0-9a-f ]+R_MIPS_TLS_DTPMOD
+[0-9a-f ]+R_MIPS_TLS_DTPMOD 00000000   tlsvar_gd
+[0-9a-f ]+R_MIPS_TLS_DTPREL 00000000   tlsvar_gd
+[0-9a-f ]+R_MIPS_TLS_DTPMOD 00000000   tlsvar_gd
+[0-9a-f ]+R_MIPS_TLS_DTPREL 00000000   tlsvar_gd
+[0-9a-f ]+R_MIPS_TLS_TPREL3 00000004   tlsvar_ie
+[0-9a-f ]+R_MIPS_TLS_TPREL3 00000004   tlsvar_ie
+[0-9a-f ]+R_MIPS_REL32      000d8038   sym_1_9526
+[0-9a-f ]+R_MIPS_REL32      000d6694   sym_1_7885
+#...
+[0-9a-f ]+R_MIPS_REL32      000cf2a4   sym_1_0465
+[0-9a-f ]+R_MIPS_REL32      000e0ee8   sym_2_8654
 #...
-0014070c  004e2c03 R_MIPS_REL32      000cf2b4   sym_1_0465
-00139bd0  004e2d03 R_MIPS_REL32      000e0ef8   sym_2_8654
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
-00000000  00000000 R_MIPS_NONE      
Index: ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d,v
retrieving revision 1.2
diff -u -p -r1.2 tlsdyn-o32-1.d
--- ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d	4 Feb 2006 08:28:29 -0000	1.2
+++ ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d	16 Oct 2006 23:45:25 -0000
@@ -5,7 +5,7 @@ Disassembly of section .text:
 
 .* <__start>:
   .*:	3c1c0fc0 	lui	gp,0xfc0
-  .*:	279c7b70 	addiu	gp,gp,31600
+  .*:	279c7ba0 	addiu	gp,gp,31648
   .*:	0399e021 	addu	gp,gp,t9
   .*:	27bdfff0 	addiu	sp,sp,-16
   .*:	afbe0008 	sw	s8,8\(sp\)
@@ -55,7 +55,7 @@ Disassembly of section .text:
 
 .* <other>:
   .*:	3c1c0fc0 	lui	gp,0xfc0
-  .*:	279c7ab0 	addiu	gp,gp,31408
+  .*:	279c7ae0 	addiu	gp,gp,31456
   .*:	0399e021 	addu	gp,gp,t9
   .*:	27bdfff0 	addiu	sp,sp,-16
   .*:	afbe0008 	sw	s8,8\(sp\)
Index: ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got,v
retrieving revision 1.2
diff -u -p -r1.2 tlsdyn-o32-1.got
--- ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got	4 Feb 2006 08:28:29 -0000	1.2
+++ ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got	16 Oct 2006 23:45:25 -0000
@@ -4,16 +4,16 @@
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-10000044 R_MIPS_TLS_DTPMOD32  tlsbin_gd
-10000048 R_MIPS_TLS_DTPREL32  tlsbin_gd
-10000038 R_MIPS_TLS_DTPMOD32  tlsvar_gd
-1000003c R_MIPS_TLS_DTPREL32  tlsvar_gd
-10000040 R_MIPS_TLS_TPREL32  tlsvar_ie
-1000004c R_MIPS_TLS_TPREL32  tlsbin_ie
+10000054 R_MIPS_TLS_DTPMOD32  tlsbin_gd
+10000058 R_MIPS_TLS_DTPREL32  tlsbin_gd
+10000048 R_MIPS_TLS_DTPMOD32  tlsvar_gd
+1000004c R_MIPS_TLS_DTPREL32  tlsvar_gd
+10000050 R_MIPS_TLS_TPREL32  tlsvar_ie
+1000005c R_MIPS_TLS_TPREL32  tlsbin_ie
 
 
 Contents of section .got:
- 10000010 00000000 80000000 00000000 00000000  ................
- 10000020 00000000 00000000 00000000 0040053c  .............@..
- 10000030 00000001 00000000 00000000 00000000  ................
- 10000040 00000000 00000000 00000000 00000000  ................
+ 10000020 00000000 80000000 00000000 00000000  ................
+ 10000030 00000000 00000000 00000000 0040051c  .............@..
+ 10000040 00000001 00000000 00000000 00000000  ................
+ 10000050 00000000 00000000 00000000 00000000  ................
Index: ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d,v
retrieving revision 1.2
diff -u -p -r1.2 tlsdyn-o32-2.d
--- ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d	4 Feb 2006 08:28:29 -0000	1.2
+++ ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d	16 Oct 2006 23:45:25 -0000
@@ -5,7 +5,7 @@ Disassembly of section .text:
 
 .* <__start>:
   .*:	3c1c0fc0 	lui	gp,0xfc0
-  .*:	279c7b70 	addiu	gp,gp,31600
+  .*:	279c7ba0 	addiu	gp,gp,31648
   .*:	0399e021 	addu	gp,gp,t9
   .*:	27bdfff0 	addiu	sp,sp,-16
   .*:	afbe0008 	sw	s8,8\(sp\)
@@ -55,7 +55,7 @@ Disassembly of section .text:
 
 .* <other>:
   .*:	3c1c0fc0 	lui	gp,0xfc0
-  .*:	279c7ab0 	addiu	gp,gp,31408
+  .*:	279c7ae0 	addiu	gp,gp,31456
   .*:	0399e021 	addu	gp,gp,t9
   .*:	27bdfff0 	addiu	sp,sp,-16
   .*:	afbe0008 	sw	s8,8\(sp\)
Index: ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got,v
retrieving revision 1.2
diff -u -p -r1.2 tlsdyn-o32-2.got
--- ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got	4 Feb 2006 08:28:29 -0000	1.2
+++ ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got	16 Oct 2006 23:45:25 -0000
@@ -4,17 +4,17 @@
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-10000048 R_MIPS_TLS_DTPMOD32  tlsbin_gd
-1000004c R_MIPS_TLS_DTPREL32  tlsbin_gd
-1000003c R_MIPS_TLS_DTPMOD32  tlsvar_gd
-10000040 R_MIPS_TLS_DTPREL32  tlsvar_gd
-10000044 R_MIPS_TLS_TPREL32  tlsvar_ie
-10000050 R_MIPS_TLS_TPREL32  tlsbin_ie
+10000058 R_MIPS_TLS_DTPMOD32  tlsbin_gd
+1000005c R_MIPS_TLS_DTPREL32  tlsbin_gd
+1000004c R_MIPS_TLS_DTPMOD32  tlsvar_gd
+10000050 R_MIPS_TLS_DTPREL32  tlsvar_gd
+10000054 R_MIPS_TLS_TPREL32  tlsvar_ie
+10000060 R_MIPS_TLS_TPREL32  tlsbin_ie
 
 
 Contents of section .got:
- 10000010 00000000 80000000 00000000 00000000  ................
- 10000020 00000000 00000000 00000000 00000000  ................
- 10000030 0040053c 00000001 00000000 00000000  .@.<............
- 10000040 00000000 00000000 00000000 00000000  ................
- 10000050 00000000 00000000 00000000 00000000  ................
+ 10000020 00000000 80000000 00000000 00000000  .*
+ 10000030 00000000 00000000 00000000 00000000  .*
+ 10000040 0040051c 00000001 00000000 00000000  .*
+ 10000050 00000000 00000000 00000000 00000000  .*
+ 10000060 00000000 00000000 00000000 00000000  .*
Index: ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d,v
retrieving revision 1.2
diff -u -p -r1.2 tlsdyn-o32-3.d
--- ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d	4 Feb 2006 08:28:29 -0000	1.2
+++ ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d	16 Oct 2006 23:45:25 -0000
@@ -5,7 +5,7 @@ Disassembly of section .text:
 
 .* <other>:
   .*:	3c1c0fc0 	lui	gp,0xfc0
-  .*:	279c7b70 	addiu	gp,gp,31600
+  .*:	279c7ba0 	addiu	gp,gp,31648
   .*:	0399e021 	addu	gp,gp,t9
   .*:	27bdfff0 	addiu	sp,sp,-16
   .*:	afbe0008 	sw	s8,8\(sp\)
@@ -51,7 +51,7 @@ Disassembly of section .text:
 
 .* <__start>:
   .*:	3c1c0fc0 	lui	gp,0xfc0
-  .*:	279c7ac0 	addiu	gp,gp,31424
+  .*:	279c7af0 	addiu	gp,gp,31472
   .*:	0399e021 	addu	gp,gp,t9
   .*:	27bdfff0 	addiu	sp,sp,-16
   .*:	afbe0008 	sw	s8,8\(sp\)
Index: ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got,v
retrieving revision 1.2
diff -u -p -r1.2 tlsdyn-o32-3.got
--- ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got	4 Feb 2006 08:28:29 -0000	1.2
+++ ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got	16 Oct 2006 23:45:25 -0000
@@ -4,17 +4,17 @@
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-10000048 R_MIPS_TLS_DTPMOD32  tlsbin_gd
-1000004c R_MIPS_TLS_DTPREL32  tlsbin_gd
-1000003c R_MIPS_TLS_DTPMOD32  tlsvar_gd
-10000040 R_MIPS_TLS_DTPREL32  tlsvar_gd
-10000044 R_MIPS_TLS_TPREL32  tlsvar_ie
-10000050 R_MIPS_TLS_TPREL32  tlsbin_ie
+10000058 R_MIPS_TLS_DTPMOD32  tlsbin_gd
+1000005c R_MIPS_TLS_DTPREL32  tlsbin_gd
+1000004c R_MIPS_TLS_DTPMOD32  tlsvar_gd
+10000050 R_MIPS_TLS_DTPREL32  tlsvar_gd
+10000054 R_MIPS_TLS_TPREL32  tlsvar_ie
+10000060 R_MIPS_TLS_TPREL32  tlsbin_ie
 
 
 Contents of section .got:
- 10000010 00000000 80000000 00000000 00000000  ................
- 10000020 00000000 00000000 00000000 00000000  ................
- 10000030 004005ec 00000001 00000000 00000000  .@..............
- 10000040 00000000 00000000 00000000 00000000  ................
+ 10000020 00000000 80000000 00000000 00000000  ................
+ 10000030 00000000 00000000 00000000 00000000  ................
+ 10000040 004005cc 00000001 00000000 00000000  .@..............
  10000050 00000000 00000000 00000000 00000000  ................
+ 10000060 00000000 00000000 00000000 00000000  ................
Index: ld/testsuite/ld-mips-elf/tlsdyn-o32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlsdyn-o32.d,v
retrieving revision 1.2
diff -u -p -r1.2 tlsdyn-o32.d
--- ld/testsuite/ld-mips-elf/tlsdyn-o32.d	4 Feb 2006 08:28:29 -0000	1.2
+++ ld/testsuite/ld-mips-elf/tlsdyn-o32.d	16 Oct 2006 23:45:25 -0000
@@ -5,7 +5,7 @@ Disassembly of section .text:
 
 .* <__start>:
   .*:	3c1c0fc0 	lui	gp,0xfc0
-  .*:	279c7bb0 	addiu	gp,gp,31664
+  .*:	279c7bc0 	addiu	gp,gp,31680
   .*:	0399e021 	addu	gp,gp,t9
   .*:	27bdfff0 	addiu	sp,sp,-16
   .*:	afbe0008 	sw	s8,8\(sp\)
Index: ld/testsuite/ld-mips-elf/tlsdyn-o32.got
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlsdyn-o32.got,v
retrieving revision 1.2
diff -u -p -r1.2 tlsdyn-o32.got
--- ld/testsuite/ld-mips-elf/tlsdyn-o32.got	4 Feb 2006 08:28:29 -0000	1.2
+++ ld/testsuite/ld-mips-elf/tlsdyn-o32.got	16 Oct 2006 23:45:25 -0000
@@ -4,16 +4,16 @@ tmpdir/tls-dynamic-o32:     file format 
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-10000038 R_MIPS_TLS_DTPMOD32  tlsbin_gd
-1000003c R_MIPS_TLS_DTPREL32  tlsbin_gd
-10000048 R_MIPS_TLS_DTPMOD32  tlsvar_gd
-1000004c R_MIPS_TLS_DTPREL32  tlsvar_gd
-10000044 R_MIPS_TLS_TPREL32  tlsbin_ie
-10000040 R_MIPS_TLS_TPREL32  tlsvar_ie
+10000048 R_MIPS_TLS_DTPMOD32  tlsbin_gd
+1000004c R_MIPS_TLS_DTPREL32  tlsbin_gd
+10000058 R_MIPS_TLS_DTPMOD32  tlsvar_gd
+1000005c R_MIPS_TLS_DTPREL32  tlsvar_gd
+10000054 R_MIPS_TLS_TPREL32  tlsbin_ie
+10000050 R_MIPS_TLS_TPREL32  tlsvar_ie
 
 
 Contents of section .got:
- 10000010 00000000 80000000 00000000 00000000  ................
- 10000020 00000000 00000000 00000000 004004fc  ................
- 10000030 00000001 00000000 00000000 00000000  ................
- 10000040 00000000 00000000 00000000 00000000  ................
+ 10000020 00000000 80000000 00000000 00000000  ................
+ 10000030 00000000 00000000 00000000 004004fc  ................
+ 10000040 00000001 00000000 00000000 00000000  ................
+ 10000050 00000000 00000000 00000000 00000000  ................
Index: ld/testsuite/ld-mips-elf/tlslib-o32-hidden.got
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlslib-o32-hidden.got,v
retrieving revision 1.2
diff -u -p -r1.2 tlslib-o32-hidden.got
--- ld/testsuite/ld-mips-elf/tlslib-o32-hidden.got	4 Feb 2006 08:28:29 -0000	1.2
+++ ld/testsuite/ld-mips-elf/tlslib-o32-hidden.got	16 Oct 2006 23:45:25 -0000
@@ -4,13 +4,13 @@
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-000403fc R_MIPS_TLS_DTPMOD32  \*ABS\*
-000403f4 R_MIPS_TLS_DTPMOD32  \*ABS\*
-000403f0 R_MIPS_TLS_TPREL32  \*ABS\*
+000403cc R_MIPS_TLS_DTPMOD32  \*ABS\*
+000403c4 R_MIPS_TLS_DTPMOD32  \*ABS\*
+000403c0 R_MIPS_TLS_TPREL32  \*ABS\*
 
 
 Contents of section .got:
- 403d0 00000000 80000000 00000000 00000000  ................
- 403e0 00000000 00000000 00000000 000003a0  ................
- 403f0 00000008 00000000 00000000 00000000  ................
- 40400 ffff8004                             ....            
+ 403a0 00000000 80000000 00000000 00000000  ................
+ 403b0 00000000 00000000 00000000 00000370  ................
+ 403c0 00000008 00000000 00000000 00000000  ................
+ 403d0 ffff8004                             ....            
Index: ld/testsuite/ld-mips-elf/tlslib-o32-ver.got
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlslib-o32-ver.got,v
retrieving revision 1.3
diff -u -p -r1.3 tlslib-o32-ver.got
--- ld/testsuite/ld-mips-elf/tlslib-o32-ver.got	13 Jul 2006 10:58:47 -0000	1.3
+++ ld/testsuite/ld-mips-elf/tlslib-o32-ver.got	16 Oct 2006 23:45:25 -0000
@@ -4,14 +4,14 @@
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-00040544 R_MIPS_TLS_DTPMOD32  \*ABS\*
-0004054c R_MIPS_TLS_DTPMOD32  tlsvar_gd
-00040550 R_MIPS_TLS_DTPREL32  tlsvar_gd
-00040540 R_MIPS_TLS_TPREL32  tlsvar_ie
+00040514 R_MIPS_TLS_DTPMOD32  \*ABS\*
+0004051c R_MIPS_TLS_DTPMOD32  tlsvar_gd
+00040520 R_MIPS_TLS_DTPREL32  tlsvar_gd
+00040510 R_MIPS_TLS_TPREL32  tlsvar_ie
 
 
 Contents of section .got:
- 40520 00000000 80000000 00000000 00000000  ................
- 40530 00000000 00000000 00000000 000004f0  ................
- 40540 00000000 00000000 00000000 00000000  ................
- 40550 00000000                             ....            
+ 404f0 00000000 80000000 00000000 00000000  ................
+ 40500 00000000 00000000 00000000 000004c0  ................
+ 40510 00000000 00000000 00000000 00000000  ................
+ 40520 00000000                             ....            
Index: ld/testsuite/ld-mips-elf/tlslib-o32.got
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/tlslib-o32.got,v
retrieving revision 1.3
diff -u -p -r1.3 tlslib-o32.got
--- ld/testsuite/ld-mips-elf/tlslib-o32.got	13 Jul 2006 10:58:47 -0000	1.3
+++ ld/testsuite/ld-mips-elf/tlslib-o32.got	16 Oct 2006 23:45:25 -0000
@@ -4,14 +4,14 @@ tmpdir/tlslib-o32.so:     file format el
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
 00000000 R_MIPS_NONE       \*ABS\*
-000404a4 R_MIPS_TLS_DTPMOD32  \*ABS\*
-000404ac R_MIPS_TLS_DTPMOD32  tlsvar_gd
-000404b0 R_MIPS_TLS_DTPREL32  tlsvar_gd
-000404a0 R_MIPS_TLS_TPREL32  tlsvar_ie
+00040474 R_MIPS_TLS_DTPMOD32  \*ABS\*
+0004047c R_MIPS_TLS_DTPMOD32  tlsvar_gd
+00040480 R_MIPS_TLS_DTPREL32  tlsvar_gd
+00040470 R_MIPS_TLS_TPREL32  tlsvar_ie
 
 
 Contents of section .got:
- 40480 00000000 80000000 00000000 00000000  ................
- 40490 00000000 00000000 00000000 00000450  ................
- 404a0 00000000 00000000 00000000 00000000  ................
- 404b0 00000000                             ....            
+ 40450 00000000 80000000 00000000 00000000  ................
+ 40460 00000000 00000000 00000000 00000420  ................
+ 40470 00000000 00000000 00000000 00000000  ................
+ 40480 00000000                             ....            
Index: ld/testsuite/ld-mmix/bpo-10.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mmix/bpo-10.d,v
retrieving revision 1.10
diff -u -p -r1.10 bpo-10.d
--- ld/testsuite/ld-mmix/bpo-10.d	2 Jun 2006 00:32:00 -0000	1.10
+++ ld/testsuite/ld-mmix/bpo-10.d	16 Oct 2006 23:45:25 -0000
@@ -16,7 +16,7 @@ SYMBOL TABLE:
 2000000000000000 g       \*ABS\*	0+ __bss_start
 2000000000000000 g       \*ABS\*	0+ _edata
 2000000000000000 g       \*ABS\*	0+ _end
-0+4 g       \*ABS\*	0+ _start\.
+0+4 g       \.init	0+ _start\.
 
 Contents of section \.init:
  0000 e37704a6                             .*
Index: ld/testsuite/ld-powerpc/tlsso.g
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso.g,v
retrieving revision 1.6
diff -u -p -r1.6 tlsso.g
--- ld/testsuite/ld-powerpc/tlsso.g	10 Jul 2006 21:40:25 -0000	1.6
+++ ld/testsuite/ld-powerpc/tlsso.g	16 Oct 2006 23:45:25 -0000
@@ -7,7 +7,7 @@
 .*: +file format elf64-powerpc
 
 Contents of section \.got:
-.* 00000000 000187b8 00000000 00000000  .*
+.* 00000000 00018780 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000000  .*
Index: ld/testsuite/ld-powerpc/tlsso.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso.r,v
retrieving revision 1.17
diff -u -p -r1.17 tlsso.r
--- ld/testsuite/ld-powerpc/tlsso.r	10 Jul 2006 21:40:25 -0000	1.17
+++ ld/testsuite/ld-powerpc/tlsso.r	16 Oct 2006 23:45:25 -0000
@@ -49,9 +49,9 @@ Relocation section '\.rela\.dyn' at offs
 [0-9a-f ]+R_PPC64_TPREL16 +0+60 le0 \+ 0
 [0-9a-f ]+R_PPC64_TPREL16_HA +0+68 le1 \+ 0
 [0-9a-f ]+R_PPC64_TPREL16_LO +0+68 le1 \+ 0
-[0-9a-f ]+R_PPC64_TPREL16_DS +0+10630 \.tdata \+ 28
-[0-9a-f ]+R_PPC64_TPREL16_HA +0+10630 \.tdata \+ 30
-[0-9a-f ]+R_PPC64_TPREL16_LO +0+10630 \.tdata \+ 30
+[0-9a-f ]+R_PPC64_TPREL16_DS +0+105f8 \.tdata \+ 28
+[0-9a-f ]+R_PPC64_TPREL16_HA +0+105f8 \.tdata \+ 30
+[0-9a-f ]+R_PPC64_TPREL16_LO +0+105f8 \.tdata \+ 30
 [0-9a-f ]+R_PPC64_DTPMOD64 +0+
 [0-9a-f ]+R_PPC64_DTPMOD64 +0+
 [0-9a-f ]+R_PPC64_DTPREL64 +0+
@@ -72,8 +72,6 @@ Symbol table '\.dynsym' contains .* entr
 .* NOTYPE +LOCAL +DEFAULT +UND 
 .* SECTION LOCAL +DEFAULT +6 
 .* SECTION LOCAL +DEFAULT +7 
-.* SECTION LOCAL +DEFAULT +8 
-.* SECTION LOCAL +DEFAULT +9 
 .* TLS +GLOBAL DEFAULT +UND gd
 .* TLS +GLOBAL DEFAULT +8 le0
 .* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr
Index: ld/testsuite/ld-powerpc/tlsso32.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.d,v
retrieving revision 1.13
diff -u -p -r1.13 tlsso32.d
--- ld/testsuite/ld-powerpc/tlsso32.d	10 Jul 2006 21:40:25 -0000	1.13
+++ ld/testsuite/ld-powerpc/tlsso32.d	16 Oct 2006 23:45:25 -0000
@@ -42,5 +42,5 @@ Disassembly of section \.got:
 .* <\.got>:
 	\.\.\.
 .*:	4e 80 00 21 	blrl
-.*:	00 01 04 00 	.*
+.*:	00 01 03 ec 	.*
 	\.\.\.
Index: ld/testsuite/ld-powerpc/tlsso32.g
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.g,v
retrieving revision 1.9
diff -u -p -r1.9 tlsso32.g
--- ld/testsuite/ld-powerpc/tlsso32.g	10 Jul 2006 21:40:25 -0000	1.9
+++ ld/testsuite/ld-powerpc/tlsso32.g	16 Oct 2006 23:45:25 -0000
@@ -9,5 +9,5 @@
 Contents of section \.got:
 .* 00000000 00000000 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000000  .*
-.* 00000000 4e800021 00010400 00000000  .*
+.* 00000000 4e800021 000103ec 00000000  .*
 .* 00000000                             .*
Index: ld/testsuite/ld-powerpc/tlsso32.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlsso32.r,v
retrieving revision 1.17
diff -u -p -r1.17 tlsso32.r
--- ld/testsuite/ld-powerpc/tlsso32.r	10 Jul 2006 21:40:25 -0000	1.17
+++ ld/testsuite/ld-powerpc/tlsso32.r	16 Oct 2006 23:45:25 -0000
@@ -52,9 +52,9 @@ Relocation section '\.rela\.dyn' at offs
 [0-9a-f ]+R_PPC_TPREL16 +0+30 +le0 \+ 0
 [0-9a-f ]+R_PPC_TPREL16_HA +0+34 +le1 \+ 0
 [0-9a-f ]+R_PPC_TPREL16_LO +0+34 +le1 \+ 0
-[0-9a-f ]+R_PPC_TPREL16 +0+103e4 +\.tdata \+ 103f8
-[0-9a-f ]+R_PPC_TPREL16_HA +0+103e4 +\.tdata \+ 103fc
-[0-9a-f ]+R_PPC_TPREL16_LO +0+103e4 +\.tdata \+ 103fc
+[0-9a-f ]+R_PPC_TPREL16 +0+103d0 +\.tdata \+ 103e4
+[0-9a-f ]+R_PPC_TPREL16_HA +0+103d0 +\.tdata \+ 103e8
+[0-9a-f ]+R_PPC_TPREL16_LO +0+103d0 +\.tdata \+ 103e8
 [0-9a-f ]+R_PPC_DTPMOD32 +0+
 [0-9a-f ]+R_PPC_DTPREL32 +0+
 [0-9a-f ]+R_PPC_DTPMOD32 +0+
@@ -73,7 +73,6 @@ Symbol table '\.dynsym' contains [0-9]+ 
 .* NOTYPE +LOCAL +DEFAULT +UND 
 .* SECTION LOCAL +DEFAULT +6 
 .* SECTION LOCAL +DEFAULT +7 
-.* SECTION LOCAL +DEFAULT +8 
 .* TLS +GLOBAL DEFAULT +UND gd
 .* TLS +GLOBAL DEFAULT +8 le0
 .* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr
Index: ld/testsuite/ld-powerpc/tlstocso.g
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlstocso.g,v
retrieving revision 1.7
diff -u -p -r1.7 tlstocso.g
--- ld/testsuite/ld-powerpc/tlstocso.g	10 Jul 2006 21:40:25 -0000	1.7
+++ ld/testsuite/ld-powerpc/tlstocso.g	16 Oct 2006 23:45:25 -0000
@@ -7,7 +7,7 @@
 .*: +file format elf64-powerpc
 
 Contents of section \.got:
-.* 00000000 00018700 00000000 00000000  .*
+.* 00000000 000186c8 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000000  .*
 .* 00000000 00000000 00000000 00000000  .*
Index: ld/testsuite/ld-powerpc/tlstocso.r
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-powerpc/tlstocso.r,v
retrieving revision 1.17
diff -u -p -r1.17 tlstocso.r
--- ld/testsuite/ld-powerpc/tlstocso.r	2 Jun 2006 07:53:30 -0000	1.17
+++ ld/testsuite/ld-powerpc/tlstocso.r	16 Oct 2006 23:45:25 -0000
@@ -67,8 +67,6 @@ Symbol table '\.dynsym' contains [0-9]+ 
 .* NOTYPE +LOCAL +DEFAULT +UND 
 .* SECTION LOCAL +DEFAULT +6 
 .* SECTION LOCAL +DEFAULT +7 
-.* SECTION LOCAL +DEFAULT +8 
-.* SECTION LOCAL +DEFAULT +9 
 .* TLS +GLOBAL DEFAULT +UND gd
 .* TLS +GLOBAL DEFAULT +8 le0
 .* NOTYPE +GLOBAL DEFAULT +UND __tls_get_addr
Index: ld/testsuite/ld-s390/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-s390/tlspic.rd,v
retrieving revision 1.9
diff -u -p -r1.9 tlspic.rd
--- ld/testsuite/ld-s390/tlspic.rd	2 Jun 2006 00:32:00 -0000	1.9
+++ ld/testsuite/ld-s390/tlspic.rd	16 Oct 2006 23:45:25 -0000
@@ -73,7 +73,6 @@ Symbol table '.dynsym' contains [0-9]+ e
 .* NOTYPE  LOCAL  DEFAULT  UND 
 .* SECTION LOCAL  DEFAULT +7 
 .* SECTION LOCAL  DEFAULT +8 
-.* SECTION LOCAL  DEFAULT +9 
 .* TLS +GLOBAL DEFAULT +8 sg8
 .* TLS +GLOBAL DEFAULT +8 sg3
 .* TLS +GLOBAL DEFAULT +8 sg4
Index: ld/testsuite/ld-s390/tlspic_64.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-s390/tlspic_64.rd,v
retrieving revision 1.8
diff -u -p -r1.8 tlspic_64.rd
--- ld/testsuite/ld-s390/tlspic_64.rd	2 Jun 2006 07:53:30 -0000	1.8
+++ ld/testsuite/ld-s390/tlspic_64.rd	16 Oct 2006 23:45:25 -0000
@@ -73,7 +73,6 @@ Symbol table '.dynsym' contains [0-9]+ e
 .* NOTYPE  LOCAL  DEFAULT  UND 
 .* SECTION LOCAL  DEFAULT +7 
 .* SECTION LOCAL  DEFAULT +8 
-.* SECTION LOCAL  DEFAULT +9 
 .* TLS +GLOBAL DEFAULT +8 sg8
 .* TLS +GLOBAL DEFAULT +8 sg3
 .* TLS +GLOBAL DEFAULT +8 sg4
Index: ld/testsuite/ld-scripts/empty-address-1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-scripts/empty-address-1.d,v
retrieving revision 1.1
diff -u -p -r1.1 empty-address-1.d
--- ld/testsuite/ld-scripts/empty-address-1.d	27 Sep 2006 04:18:16 -0000	1.1
+++ ld/testsuite/ld-scripts/empty-address-1.d	16 Oct 2006 23:45:25 -0000
@@ -4,5 +4,5 @@
 0+0 T _start
 #...
 0+2000000 A __data_end
-0+2000000 D __data_start
+0+2000000 [ADT] __data_start
 #pass
Index: ld/testsuite/ld-scripts/empty-address-3c.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-scripts/empty-address-3c.d,v
retrieving revision 1.1
diff -u -p -r1.1 empty-address-3c.d
--- ld/testsuite/ld-scripts/empty-address-3c.d	27 Sep 2006 04:18:16 -0000	1.1
+++ ld/testsuite/ld-scripts/empty-address-3c.d	16 Oct 2006 23:45:25 -0000
@@ -6,5 +6,5 @@
 #...
 0+1010 A __data_end
 #...
-0+1010 D __data_start
+0+1010 [ADT] __data_start
 #pass
Index: ld/testsuite/ld-scripts/empty-orphan.t
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-scripts/empty-orphan.t,v
retrieving revision 1.2
diff -u -p -r1.2 empty-orphan.t
--- ld/testsuite/ld-scripts/empty-orphan.t	19 May 2006 06:10:03 -0000	1.2
+++ ld/testsuite/ld-scripts/empty-orphan.t	16 Oct 2006 23:45:25 -0000
@@ -17,6 +17,6 @@ SECTIONS
    .text : { *(.text) } > text_mem : text_phdr
    .data : { *(.data) } > data_mem : data_phdr
    .bss : { *(.bss) } > data_mem : data_phdr
-   /DISCARD/ : { *(.reginfo) }
+   /DISCARD/ : { *(.reginfo) *(.glue*) }
    /* .orphan_data is an orphan */
 }
Index: ld/testsuite/ld-sh/shared-1.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sh/shared-1.d,v
retrieving revision 1.9
diff -u -p -r1.9 shared-1.d
--- ld/testsuite/ld-sh/shared-1.d	15 Aug 2005 15:39:48 -0000	1.9
+++ ld/testsuite/ld-sh/shared-1.d	16 Oct 2006 23:45:25 -0000
@@ -13,10 +13,10 @@
 
 Relocation section '\.rela\.text' at offset 0x[0-9a-f]+ contains 1 entries:
 .*
-000001b0  000000a5 R_SH_RELATIVE +000001b4
+0000019c +[0-9a-f]+ R_SH_RELATIVE +000001a0
 
 Hex dump of section '\.rela\.text':
-  0x0000019c          000001b4 000000a5 000001b0 .*
+  0x00000188          000001a0 000000a5 0000019c .*
 
 Hex dump of section '\.text':
-  0x000001a8          000001b4 00090009 00090009 .*
+  0x00000194          000001a0 00090009 00090009 .*
Index: ld/testsuite/ld-sh/tlspic-2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sh/tlspic-2.d,v
retrieving revision 1.11
diff -u -p -r1.11 tlspic-2.d
--- ld/testsuite/ld-sh/tlspic-2.d	29 Sep 2006 12:37:28 -0000	1.11
+++ ld/testsuite/ld-sh/tlspic-2.d	16 Oct 2006 23:45:25 -0000
@@ -68,10 +68,6 @@ Relocation section '\.rela\.plt' at offs
 Symbol table '\.dynsym' contains [0-9]+ entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
 .* NOTYPE +LOCAL +DEFAULT  UND *
-.* SECTION LOCAL  DEFAULT +7 *
-.* SECTION LOCAL  DEFAULT +8 *
-.* SECTION LOCAL  DEFAULT +9 *
-.* SECTION LOCAL  DEFAULT +11 *
 .* NOTYPE  GLOBAL DEFAULT  UND __tls_get_addr
 .* TLS +GLOBAL DEFAULT +8 sg1
 #...
Index: ld/testsuite/ld-sparc/tlssunbin32.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sparc/tlssunbin32.rd,v
retrieving revision 1.8
diff -u -p -r1.8 tlssunbin32.rd
--- ld/testsuite/ld-sparc/tlssunbin32.rd	2 Jun 2006 00:32:00 -0000	1.8
+++ ld/testsuite/ld-sparc/tlssunbin32.rd	16 Oct 2006 23:45:25 -0000
@@ -88,7 +88,7 @@ Symbol table '.symtab' contains 64 entri
 .* TLS +LOCAL +DEFAULT +8 bl7
 .* TLS +LOCAL +DEFAULT +8 bl8
 .* OBJECT +LOCAL +HIDDEN +9 _DYNAMIC
-.* OBJECT +LOCAL +HIDDEN +ABS _PROCEDURE_LINKAGE_TABLE_
+.* OBJECT +LOCAL +HIDDEN +10 _PROCEDURE_LINKAGE_TABLE_
 .* OBJECT +LOCAL +HIDDEN +10 _GLOBAL_OFFSET_TABLE_
 .* TLS +GLOBAL DEFAULT +7 sg8
 .* TLS +GLOBAL DEFAULT +8 bg8
Index: ld/testsuite/ld-sparc/tlssunbin64.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sparc/tlssunbin64.rd,v
retrieving revision 1.5
diff -u -p -r1.5 tlssunbin64.rd
--- ld/testsuite/ld-sparc/tlssunbin64.rd	2 Jun 2006 00:32:00 -0000	1.5
+++ ld/testsuite/ld-sparc/tlssunbin64.rd	16 Oct 2006 23:45:25 -0000
@@ -88,7 +88,7 @@ Symbol table '.symtab' contains 64 entri
 .* TLS +LOCAL +DEFAULT +8 bl7
 .* TLS +LOCAL +DEFAULT +8 bl8
 .* OBJECT +LOCAL +HIDDEN +9 _DYNAMIC
-.* OBJECT +LOCAL +HIDDEN +ABS _PROCEDURE_LINKAGE_TABLE_
+.* OBJECT +LOCAL +HIDDEN +10 _PROCEDURE_LINKAGE_TABLE_
 .* OBJECT +LOCAL +HIDDEN +10 _GLOBAL_OFFSET_TABLE_
 .* TLS +GLOBAL DEFAULT +7 sg8
 .* TLS +GLOBAL DEFAULT +8 bg8
Index: ld/testsuite/ld-sparc/tlssunpic32.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sparc/tlssunpic32.rd,v
retrieving revision 1.7
diff -u -p -r1.7 tlssunpic32.rd
--- ld/testsuite/ld-sparc/tlssunpic32.rd	2 Jun 2006 00:32:00 -0000	1.7
+++ ld/testsuite/ld-sparc/tlssunpic32.rd	16 Oct 2006 23:45:26 -0000
@@ -64,7 +64,6 @@ Symbol table '.dynsym' contains [0-9]+ e
 .* NOTYPE +LOCAL +DEFAULT +UND *
 .* SECTION LOCAL +DEFAULT +6 *
 .* SECTION LOCAL +DEFAULT +7 *
-.* SECTION LOCAL +DEFAULT +8 *
 .* SECTION LOCAL +DEFAULT +10 *
 .* TLS +GLOBAL DEFAULT +7 sg8
 .* TLS +GLOBAL DEFAULT +7 sg3
Index: ld/testsuite/ld-sparc/tlssunpic64.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-sparc/tlssunpic64.rd,v
retrieving revision 1.4
diff -u -p -r1.4 tlssunpic64.rd
--- ld/testsuite/ld-sparc/tlssunpic64.rd	2 Jun 2006 00:32:00 -0000	1.4
+++ ld/testsuite/ld-sparc/tlssunpic64.rd	16 Oct 2006 23:45:26 -0000
@@ -64,7 +64,6 @@ Symbol table '.dynsym' contains [0-9]+ e
 .* NOTYPE +LOCAL +DEFAULT +UND *
 .* SECTION LOCAL +DEFAULT +6 *
 .* SECTION LOCAL +DEFAULT +7 *
-.* SECTION LOCAL +DEFAULT +8 *
 .* SECTION LOCAL +DEFAULT +10 *
 .* TLS +GLOBAL DEFAULT +7 sg8
 .* TLS +GLOBAL DEFAULT +7 sg3
Index: ld/testsuite/ld-x86-64/tlsdesc.pd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-x86-64/tlsdesc.pd,v
retrieving revision 1.3
diff -u -p -r1.3 tlsdesc.pd
--- ld/testsuite/ld-x86-64/tlsdesc.pd	30 Jun 2006 14:16:13 -0000	1.3
+++ ld/testsuite/ld-x86-64/tlsdesc.pd	16 Oct 2006 23:45:26 -0000
@@ -9,12 +9,12 @@
 
 Disassembly of section .plt:
 
-0000000000000470 <.*@plt-0x10>:
- 470:	ff 35 e2 0e 20 00    	pushq  2100962\(%rip\)        # 201358 <_GLOBAL_OFFSET_TABLE_\+0x8>
- 476:	ff 25 e4 0e 20 00    	jmpq   \*2100964\(%rip\)        # 201360 <_GLOBAL_OFFSET_TABLE_\+0x10>
- 47c:	0f 1f 40 00          	nopl   0x0\(%rax\)
-0000000000000480 <.*@plt>:
- 480:	ff 35 d2 0e 20 00    	pushq  2100946\(%rip\)        # 201358 <_GLOBAL_OFFSET_TABLE_\+0x8>
- 486:	ff 25 bc 0e 20 00    	jmpq   \*2100924\(%rip\)        # 201348 <_DYNAMIC\+0x190>
- 48c:	0f 1f 40 00          	nopl   0x0\(%rax\)
+[0-9a-f]+ <.*@plt-0x10>:
+ [0-9a-f]+:	ff 35 .. .. 20 00    	pushq  .*\(%rip\)        # 201358 <_GLOBAL_OFFSET_TABLE_\+0x8>
+ [0-9a-f]+:	ff 25 .. .. 20 00    	jmpq   \*.*\(%rip\)        # 201360 <_GLOBAL_OFFSET_TABLE_\+0x10>
+ [0-9a-f]+:	0f 1f 40 00          	nopl   0x0\(%rax\)
+[0-9a-f]+ <.*@plt>:
+ [0-9a-f]+:	ff 35 .. .. 20 00    	pushq  .*\(%rip\)        # 201358 <_GLOBAL_OFFSET_TABLE_\+0x8>
+ [0-9a-f]+:	ff 25 .. .. 20 00    	jmpq   \*.*\(%rip\)        # 201348 <_DYNAMIC\+0x190>
+ [0-9a-f]+:	0f 1f 40 00          	nopl   0x0\(%rax\)
 
Index: ld/testsuite/ld-x86-64/tlsdesc.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-x86-64/tlsdesc.rd,v
retrieving revision 1.5
diff -u -p -r1.5 tlsdesc.rd
--- ld/testsuite/ld-x86-64/tlsdesc.rd	2 Jun 2006 00:32:00 -0000	1.5
+++ ld/testsuite/ld-x86-64/tlsdesc.rd	16 Oct 2006 23:45:26 -0000
@@ -15,7 +15,7 @@ Section Headers:
   \[ 3\] .dynstr +.*
   \[ 4\] .rela.dyn +.*
   \[ 5\] .rela.plt +.*
-  \[ 6\] .plt +PROGBITS +0+470 0+470 0+20 10 +AX +0 +0 +4
+  \[ 6\] .plt +PROGBITS +0+450 0+450 0+20 10 +AX +0 +0 +4
   \[ 7\] .text +PROGBITS +0+1000 0+1000 0+154 00 +AX +0 +0 4096
   \[ 8\] .tdata +PROGBITS +0+201154 0+1154 0+60 00 WAT +0 +0 +1
   \[ 9\] .tbss +NOBITS +0+2011b4 0+11b4 0+20 00 WAT +0 +0 +1
@@ -59,7 +59,7 @@ Dynamic section at offset 0x[0-9a-f]+ co
  0x[0-9a-f]+ +\(PLTRELSZ\).*
  0x[0-9a-f]+ +\(PLTREL\).*
  0x[0-9a-f]+ +\(JMPREL\).*
- 0x[0-9a-f]+ +\(TLSDESC_PLT\) +0x480
+ 0x[0-9a-f]+ +\(TLSDESC_PLT\) +0x460
  0x[0-9a-f]+ +\(TLSDESC_GOT\) +0x201348
  0x[0-9a-f]+ +\(RELA\).*
  0x[0-9a-f]+ +\(RELASZ\).*
@@ -69,29 +69,28 @@ Dynamic section at offset 0x[0-9a-f]+ co
 
 Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 8 entries:
  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
-0+201308  0+12 R_X86_64_TPOFF64 +0+24
-0+201310  0+12 R_X86_64_TPOFF64 +0+30
-0+201318  0+12 R_X86_64_TPOFF64 +0+64
-0+201328  0+12 R_X86_64_TPOFF64 +0+50
-0+201330  0+12 R_X86_64_TPOFF64 +0+70
-0+201340  0+12 R_X86_64_TPOFF64 +0+44
-0+201320  0+700000012 R_X86_64_TPOFF64 +0+10 sg5 \+ 0
-0+201338  0+b00000012 R_X86_64_TPOFF64 +0+4 sg2 \+ 0
+0+201308  [0-9a-f]+ R_X86_64_TPOFF64 +0+24
+0+201310  [0-9a-f]+ R_X86_64_TPOFF64 +0+30
+0+201318  [0-9a-f]+ R_X86_64_TPOFF64 +0+64
+0+201328  [0-9a-f]+ R_X86_64_TPOFF64 +0+50
+0+201330  [0-9a-f]+ R_X86_64_TPOFF64 +0+70
+0+201340  [0-9a-f]+ R_X86_64_TPOFF64 +0+44
+0+201320  [0-9a-f]+ R_X86_64_TPOFF64 +0+10 sg5 \+ 0
+0+201338  [0-9a-f]+ R_X86_64_TPOFF64 +0+4 sg2 \+ 0
 
 Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 5 entries:
  +Offset +Info +Type +Symbol's Value  Symbol's Name \+ Addend
-0+201398  0+800000024 R_X86_64_TLSDESC +0+ sg1 \+ 0
-0+201368  0+24 R_X86_64_TLSDESC +0+20
-0+2013a8  0+24 R_X86_64_TLSDESC +0+40
-0+201378  0+24 R_X86_64_TLSDESC +0+60
-0+201388  0+24 R_X86_64_TLSDESC +0+
+0+201398  [0-9a-f]+ R_X86_64_TLSDESC +0+ sg1 \+ 0
+0+201368  [0-9a-f]+ R_X86_64_TLSDESC +0+20
+0+2013a8  [0-9a-f]+ R_X86_64_TLSDESC +0+40
+0+201378  [0-9a-f]+ R_X86_64_TLSDESC +0+60
+0+201388  [0-9a-f]+ R_X86_64_TLSDESC +0+
 
-Symbol table '.dynsym' contains 16 entries:
+Symbol table '.dynsym' contains [0-9]+ 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 *
  +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +8 *
- +[0-9]+: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +9 *
  +[0-9]+: 0+1c +0 TLS +GLOBAL DEFAULT +8 sg8
  +[0-9]+: 0+8 +0 TLS +GLOBAL DEFAULT +8 sg3
  +[0-9]+: 0+c +0 TLS +GLOBAL DEFAULT +8 sg4
Index: ld/testsuite/ld-x86-64/tlspic.rd
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-x86-64/tlspic.rd,v
retrieving revision 1.11
diff -u -p -r1.11 tlspic.rd
--- ld/testsuite/ld-x86-64/tlspic.rd	2 Jun 2006 00:32:00 -0000	1.11
+++ ld/testsuite/ld-x86-64/tlspic.rd	16 Oct 2006 23:45:26 -0000
@@ -74,7 +74,6 @@ Symbol table '.dynsym' contains [0-9]+ e
 .* NOTYPE  LOCAL  DEFAULT  UND *
 .* SECTION LOCAL  DEFAULT +7 *
 .* SECTION LOCAL  DEFAULT +8 *
-.* SECTION LOCAL  DEFAULT +9 *
 .* TLS +GLOBAL DEFAULT +8 sg8
 .* TLS +GLOBAL DEFAULT +8 sg3
 .* TLS +GLOBAL DEFAULT +8 sg4

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre



More information about the Binutils mailing list