ARM long branch stub fixes

Daniel Jacobowitz drow@false.org
Tue Jun 24 23:02:00 GMT 2008


This patch corrects two bugs in ARM stubs I discovered.  One was an
incorrect offset (+20 instead of +16) for the v4t stubs; this caused
lots of arm-none-eabi/arm-sim/-mthumb tests to time out.  The other
was use of 'b.n .' instead of 'bx r6'; if you write 'b r6' you'll get
the former, and it's easy to miss that there's a relocation on the
instruction.

While I was staring at stubs, I added a local symbol in front of each
one.  This makes disassembly more intelligible but required a massive
testsuite update.

I tried to use the same naming scheme as bfd's other set of
ARM-to-Thumb stubs, which really should be obsoleted by the new
mechanism - a cleanup for another day.

Any comments on this patch?  Otherwise I'll check it in soon.

-- 
Daniel Jacobowitz
CodeSourcery

2008-06-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* elf32-arm.c (STUB_ENTRY_NAME): Define.
	(arm_thumb_thumb_long_branch_stub): Use bx instead of b.n.
	(arm_pic_long_branch_stub): Mention R_ARM_REL32 instead of
	R_ARM_ABS32.
	(struct elf32_arm_stub_hash_entry): Add output_name.
	(arm_build_one_stub): Move offsets into the offset argument
	of _bfd_final_link_relocate.  Correct offset for
	arm_thumb_arm_v4t_stub_long_branch.
	(elf32_arm_size_stubs): Set stub_entry->output_name.
	(elf32_arm_ouput_plt_map_sym): Rename to elf32_arm_output_map_sym.
	Update all callers.
	(elf32_arm_output_stub_sym): New.
	(arm_map_one_stub): Correct formatting.  Use elf32_arm_output_stub_sym.

2008-06-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* ld-arm/farcall-arm-arm-be8.d, ld-arm/farcall-arm-arm-pic-veneer.d,
	ld-arm/farcall-arm-arm.d, ld-arm/farcall-arm-thumb-blx-pic-veneer.d,
	ld-arm/farcall-arm-thumb-blx.d, ld-arm/farcall-arm-thumb-pic-veneer.d,
	ld-arm/farcall-arm-thumb.d, ld-arm/farcall-group-size2.d,
	ld-arm/farcall-group.d, ld-arm/farcall-mix.d, ld-arm/farcall-mix2.d,
	ld-arm/farcall-thumb-arm-blx-pic-veneer.d,
	ld-arm/farcall-thumb-arm-blx.d, ld-arm/farcall-thumb-arm.d,
	ld-arm/farcall-thumb-thumb-blx-pic-veneer.d,
	ld-arm/farcall-thumb-thumb-blx.d, ld-arm/farcall-thumb-thumb-m.d,
	ld-arm/thumb2-bl-as-thumb1-bad.d, ld-arm/thumb2-bl-bad.d: Update for
	stub symbols and stub corrections.

Index: bfd/elf32-arm.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-arm.c,v
retrieving revision 1.148
diff -u -p -r1.148 elf32-arm.c
--- bfd/elf32-arm.c	9 Jun 2008 15:19:52 -0000	1.148
+++ bfd/elf32-arm.c	24 Jun 2008 22:01:04 -0000
@@ -1898,6 +1898,8 @@ typedef unsigned short int insn16;
 #define ARM_BX_GLUE_SECTION_NAME ".v4_bx"
 #define ARM_BX_GLUE_ENTRY_NAME   "__bx_r%d"
 
+#define STUB_ENTRY_NAME   "__%s_veneer"
+
 /* The name of the dynamic interpreter.  This is put in the .interp
    section.  */
 #define ELF_DYNAMIC_INTERPRETER     "/usr/lib/ld.so.1"
@@ -2024,8 +2026,8 @@ static const bfd_vma arm_thumb_thumb_lon
   {
     0x4e02b540,         /* push {r6, lr} */
                         /* ldr  r6, [pc, #8] */
-    0xe7fe46fe,         /* mov  lr, pc */
-                        /* b.n  r6 */
+    0x473046fe,         /* mov  lr, pc */
+                        /* bx   r6 */
     0xbf00bd40,         /* pop  {r6, pc} */
                         /* nop */
     0x00000000,         /* dcd  R_ARM_ABS32(X) */
@@ -2046,7 +2048,7 @@ static const bfd_vma arm_pic_long_branch
   {
     0xe59fc000,         /* ldr   r12, [pc] */
     0xe08ff00c,         /* add   pc, pc, ip */
-    0x00000000,         /* dcd   R_ARM_ABS32(X) */
+    0x00000000,         /* dcd   R_ARM_REL32(X) */
   };
 
 /* Section name for stubs is the associated section name plus this
@@ -2090,6 +2092,11 @@ struct elf32_arm_stub_hash_entry
   /* Where this stub is being called from, or, in the case of combined
      stub sections, the first input section in the group.  */
   asection *id_sec;
+
+  /* The name for the local symbol at the start of this stub.  The
+     stub name in the hash table has to be unique; this does not, so
+     it can be friendlier.  */
+  char *output_name;
 };
 
 /* Used to build a map of a section.  This is required for mixed-endian
@@ -3111,32 +3118,30 @@ arm_build_one_stub (struct bfd_hash_entr
     {
     case arm_stub_long_branch:
       _bfd_final_link_relocate (elf32_arm_howto_from_type (R_ARM_ABS32),
-				stub_bfd, stub_sec, stub_sec->contents + 4,
-				stub_entry->stub_offset, sym_value, 0);
+				stub_bfd, stub_sec, stub_sec->contents,
+				stub_entry->stub_offset + 4, sym_value, 0);
       break;
     case arm_thumb_v4t_stub_long_branch:
       _bfd_final_link_relocate (elf32_arm_howto_from_type (R_ARM_ABS32),
-				stub_bfd, stub_sec, stub_sec->contents + 8,
-				stub_entry->stub_offset, sym_value, 0);
+				stub_bfd, stub_sec, stub_sec->contents,
+				stub_entry->stub_offset + 8, sym_value, 0);
       break;
     case arm_thumb_thumb_stub_long_branch:
       _bfd_final_link_relocate (elf32_arm_howto_from_type (R_ARM_ABS32),
-				stub_bfd, stub_sec, stub_sec->contents + 12,
-				stub_entry->stub_offset, sym_value, 0);
+				stub_bfd, stub_sec, stub_sec->contents,
+				stub_entry->stub_offset + 12, sym_value, 0);
       break;
     case arm_thumb_arm_v4t_stub_long_branch:
       _bfd_final_link_relocate (elf32_arm_howto_from_type (R_ARM_ABS32),
-				stub_bfd, stub_sec, stub_sec->contents + 20,
-				stub_entry->stub_offset, sym_value, 0);
+				stub_bfd, stub_sec, stub_sec->contents,
+				stub_entry->stub_offset + 16, sym_value, 0);
       break;
     case arm_stub_pic_long_branch:
       /* We want the value relative to the address 8 bytes from the
 	 start of the stub.  */
-      sym_value -= stub_addr + 8;
-
-      _bfd_final_link_relocate (elf32_arm_howto_from_type (R_ARM_ABS32),
-				stub_bfd, stub_sec, stub_sec->contents + 8,
-				stub_entry->stub_offset, sym_value, 0);
+      _bfd_final_link_relocate (elf32_arm_howto_from_type (R_ARM_REL32),
+				stub_bfd, stub_sec, stub_sec->contents,
+				stub_entry->stub_offset + 8, sym_value, 0);
       break;
     default:
       break;
@@ -3484,6 +3489,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 		  bfd_vma sym_value;
 		  bfd_vma destination;
 		  struct elf32_arm_link_hash_entry *hash;
+		  const char *sym_name;
 		  char *stub_name;
 		  const asection *id_sec;
 		  unsigned char st_type;
@@ -3511,6 +3517,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 		  sym_value = 0;
 		  destination = 0;
 		  hash = NULL;
+		  sym_name = NULL;
 		  if (r_indx < symtab_hdr->sh_info)
 		    {
 		      /* It's a local symbol.  */
@@ -3539,6 +3546,10 @@ elf32_arm_size_stubs (bfd *output_bfd,
 				     + sym_sec->output_offset
 				     + sym_sec->output_section->vma);
 		      st_type = ELF_ST_TYPE (sym->st_info);
+		      sym_name
+			= bfd_elf_string_from_elf_section (input_bfd,
+							   symtab_hdr->sh_link,
+							   sym->st_name);
 		    }
 		  else
 		    {
@@ -3576,6 +3587,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 			  goto error_ret_free_internal;
 			}
 		      st_type = ELF_ST_TYPE (hash->root.type);
+		      sym_name = hash->root.root.root.string;
 		    }
 
 		  /* Determine what (if any) linker stub is needed.  */
@@ -3614,6 +3626,33 @@ elf32_arm_size_stubs (bfd *output_bfd,
 		  stub_entry->stub_type = stub_type;
 		  stub_entry->h = hash;
 		  stub_entry->st_type = st_type;
+
+		  if (sym_name == NULL)
+		    sym_name = "unnamed";
+		  stub_entry->output_name
+		    = bfd_alloc (htab->stub_bfd,
+				 sizeof (THUMB2ARM_GLUE_ENTRY_NAME)
+				 + strlen (sym_name));
+		  if (stub_entry->output_name == NULL)
+		    {
+		      free (stub_name);
+		      goto error_ret_free_internal;
+		    }
+
+		  /* For historical reasons, use the existing names for
+		     ARM-to-Thumb and Thumb-to-ARM stubs.  */
+		  if (r_type == (unsigned int) R_ARM_THM_CALL
+		      && st_type != STT_ARM_TFUNC)
+		    sprintf (stub_entry->output_name, THUMB2ARM_GLUE_ENTRY_NAME,
+			     sym_name);
+		  else if (r_type == (unsigned int) R_ARM_CALL
+			   && st_type == STT_ARM_TFUNC)
+		    sprintf (stub_entry->output_name, ARM2THUMB_GLUE_ENTRY_NAME,
+			     sym_name);
+		  else
+		    sprintf (stub_entry->output_name, STUB_ENTRY_NAME,
+			     sym_name);
+
 		  stub_changed = TRUE;
 		}
 
@@ -11030,12 +11069,12 @@ enum map_symbol_type
 };
 
 
-/* Output a single PLT mapping symbol.  */
+/* Output a single mapping symbol.  */
 
 static bfd_boolean
-elf32_arm_ouput_plt_map_sym (output_arch_syminfo *osi,
-			     enum map_symbol_type type,
-			     bfd_vma offset)
+elf32_arm_output_map_sym (output_arch_syminfo *osi,
+			  enum map_symbol_type type,
+			  bfd_vma offset)
 {
   static const char *names[3] = {"$a", "$t", "$d"};
   struct elf32_arm_link_hash_table *htab;
@@ -11083,20 +11122,20 @@ elf32_arm_output_plt_map (struct elf_lin
   addr = h->plt.offset;
   if (htab->symbian_p)
     {
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_ARM, addr))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_DATA, addr + 4))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 4))
 	return FALSE;
     }
   else if (htab->vxworks_p)
     {
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_ARM, addr))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_DATA, addr + 8))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 8))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_ARM, addr + 12))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr + 12))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_DATA, addr + 20))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 20))
 	return FALSE;
     }
   else
@@ -11109,13 +11148,13 @@ elf32_arm_output_plt_map (struct elf_lin
 
       if (thumb_refs > 0)
 	{
-	  if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_THUMB, addr - 4))
+	  if (!elf32_arm_output_map_sym (osi, ARM_MAP_THUMB, addr - 4))
 	    return FALSE;
 	}
 #ifdef FOUR_WORD_PLT
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_ARM, addr))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_DATA, addr + 12))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 12))
 	return FALSE;
 #else
       /* A three-word PLT with no Thumb thunk contains only Arm code,
@@ -11123,7 +11162,7 @@ elf32_arm_output_plt_map (struct elf_lin
 	 entries with thumb thunks.  */
       if (thumb_refs > 0 || addr == 20)
 	{
-	  if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_ARM, addr))
+	  if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
 	    return FALSE;
 	}
 #endif
@@ -11132,6 +11171,27 @@ elf32_arm_output_plt_map (struct elf_lin
   return TRUE;
 }
 
+/* Output a single local symbol for a generated stub.  */
+
+static bfd_boolean
+elf32_arm_output_stub_sym (output_arch_syminfo *osi, const char *name,
+			   bfd_vma offset, bfd_vma size)
+{
+  struct elf32_arm_link_hash_table *htab;
+  Elf_Internal_Sym sym;
+
+  htab = elf32_arm_hash_table (osi->info);
+  sym.st_value = osi->sec->output_section->vma
+		 + osi->sec->output_offset
+		 + offset;
+  sym.st_size = size;
+  sym.st_other = 0;
+  sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
+  sym.st_shndx = osi->sec_shndx;
+  if (!osi->func (osi->finfo, name, &sym, osi->sec, NULL))
+    return FALSE;
+  return TRUE;
+}
 
 static bfd_boolean
 arm_map_one_stub (struct bfd_hash_entry *gen_entry,
@@ -11142,6 +11202,7 @@ arm_map_one_stub (struct bfd_hash_entry 
   struct elf32_arm_link_hash_table *htab;
   asection *stub_sec;
   bfd_vma addr;
+  char *stub_name;
 
   /* Massage our args to the form they really have.  */
   stub_entry = (struct elf32_arm_stub_hash_entry *) gen_entry;
@@ -11153,48 +11214,60 @@ arm_map_one_stub (struct bfd_hash_entry 
   stub_sec = stub_entry->stub_sec;
 
   /* Ensure this stub is attached to the current section being
-     processed */
+     processed.  */
   if (stub_sec != osi->sec)
     return TRUE;
 
-  addr = (bfd_vma)stub_entry->stub_offset;
+  addr = (bfd_vma) stub_entry->stub_offset;
+  stub_name = stub_entry->output_name;
 
-  switch(stub_entry->stub_type) {
+  switch (stub_entry->stub_type)
+    {
     case arm_stub_long_branch:
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_ARM, addr))
+      if (!elf32_arm_output_stub_sym (osi, stub_name, addr, 8))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_DATA, addr + 4))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
+	return FALSE;
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 4))
 	return FALSE;
       break;
     case arm_thumb_v4t_stub_long_branch:
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_ARM, addr))
+      if (!elf32_arm_output_stub_sym (osi, stub_name, addr, 12))
+	return FALSE;
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_DATA, addr + 8))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 8))
 	return FALSE;
       break;
     case arm_thumb_thumb_stub_long_branch:
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_THUMB, addr))
+      if (!elf32_arm_output_stub_sym (osi, stub_name, addr + 1, 16))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_DATA, addr + 12))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_THUMB, addr))
+	return FALSE;
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 12))
 	return FALSE;
       break;
     case arm_thumb_arm_v4t_stub_long_branch:
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_THUMB, addr))
+      if (!elf32_arm_output_stub_sym (osi, stub_name, addr + 1, 20))
+	return FALSE;
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_THUMB, addr))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_ARM, addr + 8))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr + 8))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_DATA, addr + 16))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 16))
 	return FALSE;
       break;
     case arm_stub_pic_long_branch:
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_ARM, addr))
+      if (!elf32_arm_output_stub_sym (osi, stub_name, addr, 12))
+	return FALSE;
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
 	return FALSE;
-      if (!elf32_arm_ouput_plt_map_sym (osi, ARM_MAP_DATA, addr + 8))
+      if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 8))
 	return FALSE;
       break;
     default:
       BFD_FAIL ();
-  }
+    }
 
   return TRUE;
 }
@@ -11240,8 +11313,8 @@ elf32_arm_output_arch_local_syms (bfd *o
 
       for (offset = 0; offset < htab->arm_glue_size; offset += size)
 	{
-	  elf32_arm_ouput_plt_map_sym (&osi, ARM_MAP_ARM, offset);
-	  elf32_arm_ouput_plt_map_sym (&osi, ARM_MAP_DATA, offset + size - 4);
+	  elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, offset);
+	  elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, offset + size - 4);
 	}
     }
 
@@ -11257,8 +11330,8 @@ elf32_arm_output_arch_local_syms (bfd *o
 
       for (offset = 0; offset < htab->thumb_glue_size; offset += size)
 	{
-	  elf32_arm_ouput_plt_map_sym (&osi, ARM_MAP_THUMB, offset);
-	  elf32_arm_ouput_plt_map_sym (&osi, ARM_MAP_ARM, offset + 4);
+	  elf32_arm_output_map_sym (&osi, ARM_MAP_THUMB, offset);
+	  elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, offset + 4);
 	}
     }
 
@@ -11271,7 +11344,7 @@ elf32_arm_output_arch_local_syms (bfd *o
       osi.sec_shndx = _bfd_elf_section_from_bfd_section
 	  (output_bfd, osi.sec->output_section);
 
-      elf32_arm_ouput_plt_map_sym (&osi, ARM_MAP_ARM, 0);
+      elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0);
     }
 
   /* Long calls stubs. */
@@ -11308,18 +11381,18 @@ elf32_arm_output_arch_local_syms (bfd *o
       /* VxWorks shared libraries have no PLT header.  */
       if (!info->shared)
 	{
-	  if (!elf32_arm_ouput_plt_map_sym (&osi, ARM_MAP_ARM, 0))
+	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
 	    return FALSE;
-	  if (!elf32_arm_ouput_plt_map_sym (&osi, ARM_MAP_DATA, 12))
+	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 12))
 	    return FALSE;
 	}
     }
   else if (!htab->symbian_p)
     {
-      if (!elf32_arm_ouput_plt_map_sym (&osi, ARM_MAP_ARM, 0))
+      if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
 	return FALSE;
 #ifndef FOUR_WORD_PLT
-      if (!elf32_arm_ouput_plt_map_sym (&osi, ARM_MAP_DATA, 16))
+      if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 16))
 	return FALSE;
 #endif
     }
Index: ld/testsuite/ld-arm/farcall-arm-arm-be8.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-arm-arm-be8.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-arm-arm-be8.d
--- ld/testsuite/ld-arm/farcall-arm-arm-be8.d	15 May 2008 17:00:15 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-arm-arm-be8.d	24 Jun 2008 22:01:04 -0000
@@ -2,7 +2,7 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x8>:
+00001000 <__bar_veneer>:
     1000:	04f01fe5 	.*
     1004:	02001020 	.word	0x02001020
 
Index: ld/testsuite/ld-arm/farcall-arm-arm-pic-veneer.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-arm-arm-pic-veneer.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-arm-arm-pic-veneer.d
--- ld/testsuite/ld-arm/farcall-arm-arm-pic-veneer.d	15 May 2008 17:00:15 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-arm-arm-pic-veneer.d	24 Jun 2008 22:01:04 -0000
@@ -2,14 +2,14 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x10>:
-    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <_start-0x8>
+00001000 <__bar_veneer>:
+    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <__bar_veneer\+0x8>
     1004:	e08ff00c 	add	pc, pc, ip
     1008:	02000018 	.word	0x02000018
     100c:	00000000 	.word	0x00000000
 
 00001010 <_start>:
-    1010:	ebfffffa 	bl	1000 <_start-0x10>
+    1010:	ebfffffa 	bl	1000 <__bar_veneer>
 Disassembly of section .foo:
 
 02001020 <bar>:
Index: ld/testsuite/ld-arm/farcall-arm-arm.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-arm-arm.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-arm-arm.d
--- ld/testsuite/ld-arm/farcall-arm-arm.d	15 May 2008 17:00:15 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-arm-arm.d	24 Jun 2008 22:01:04 -0000
@@ -2,12 +2,12 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x8>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x4>
+00001000 <__bar_veneer>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar_veneer\+0x4>
     1004:	02001020 	.word	0x02001020
 
 00001008 <_start>:
-    1008:	ebfffffc 	bl	1000 <_start-0x8>
+    1008:	ebfffffc 	bl	1000 <__bar_veneer>
 Disassembly of section .foo:
 
 02001020 <bar>:
Index: ld/testsuite/ld-arm/farcall-arm-thumb-blx-pic-veneer.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-arm-thumb-blx-pic-veneer.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-arm-thumb-blx-pic-veneer.d
--- ld/testsuite/ld-arm/farcall-arm-thumb-blx-pic-veneer.d	15 May 2008 17:00:15 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-arm-thumb-blx-pic-veneer.d	24 Jun 2008 22:01:04 -0000
@@ -2,14 +2,14 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x10>:
-    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <_start-0x8>
+00001000 <__bar_from_arm>:
+    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <__bar_from_arm\+0x8>
     1004:	e08ff00c 	add	pc, pc, ip
     1008:	0200000d 	.word	0x0200000d
     100c:	00000000 	.word	0x00000000
 
 00001010 <_start>:
-    1010:	ebfffffa 	bl	1000 <_start-0x10>
+    1010:	ebfffffa 	bl	1000 <__bar_from_arm>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/farcall-arm-thumb-blx.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-arm-thumb-blx.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-arm-thumb-blx.d
--- ld/testsuite/ld-arm/farcall-arm-thumb-blx.d	15 May 2008 17:00:15 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-arm-thumb-blx.d	24 Jun 2008 22:01:04 -0000
@@ -2,12 +2,12 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x8>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x4>
+00001000 <__bar_from_arm>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar_from_arm\+0x4>
     1004:	02001015 	.word	0x02001015
 
 00001008 <_start>:
-    1008:	ebfffffc 	bl	1000 <_start-0x8>
+    1008:	ebfffffc 	bl	1000 <__bar_from_arm>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/farcall-arm-thumb-pic-veneer.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-arm-thumb-pic-veneer.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-arm-thumb-pic-veneer.d
--- ld/testsuite/ld-arm/farcall-arm-thumb-pic-veneer.d	15 May 2008 17:00:15 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-arm-thumb-pic-veneer.d	24 Jun 2008 22:01:04 -0000
@@ -2,14 +2,14 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x10>:
-    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <_start-0x8>
+00001000 <__bar_from_arm>:
+    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <__bar_from_arm\+0x8>
     1004:	e08ff00c 	add	pc, pc, ip
     1008:	0200000d 	.word	0x0200000d
     100c:	00000000 	.word	0x00000000
 
 00001010 <_start>:
-    1010:	ebfffffa 	bl	1000 <_start-0x10>
+    1010:	ebfffffa 	bl	1000 <__bar_from_arm>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/farcall-arm-thumb.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-arm-thumb.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-arm-thumb.d
--- ld/testsuite/ld-arm/farcall-arm-thumb.d	15 May 2008 17:00:15 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-arm-thumb.d	24 Jun 2008 22:01:04 -0000
@@ -2,14 +2,14 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x10>:
-    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <_start-0x8>
+00001000 <__bar_from_arm>:
+    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <__bar_from_arm\+0x8>
     1004:	e12fff1c 	bx	ip
     1008:	02001015 	.word	0x02001015
     100c:	00000000 	.word	0x00000000
 
 00001010 <_start>:
-    1010:	ebfffffa 	bl	1000 <_start-0x10>
+    1010:	ebfffffa 	bl	1000 <__bar_from_arm>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/farcall-group-size2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-group-size2.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-group-size2.d
--- ld/testsuite/ld-arm/farcall-group-size2.d	23 May 2008 14:16:16 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-group-size2.d	24 Jun 2008 22:01:04 -0000
@@ -3,31 +3,35 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x18>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x14>
+00001000 <__bar2_veneer>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar2_veneer\+0x4>
     1004:	02003024 	.word	0x02003024
-    1008:	e59fc000 	ldr	ip, \[pc, #0\]	; 1010 <_start-0x8>
+00001008 <__bar_from_arm>:
+    1008:	e59fc000 	ldr	ip, \[pc, #0\]	; 1010 <__bar_from_arm\+0x8>
     100c:	e12fff1c 	bx	ip
     1010:	02003021 	.word	0x02003021
     1014:	00000000 	.word	0x00000000
 
 00001018 <_start>:
-    1018:	ebfffffa 	bl	1008 <_start-0x10>
-    101c:	ebfffff7 	bl	1000 <_start-0x18>
-    1020:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1024 <_start\+0xc>
+    1018:	ebfffffa 	bl	1008 <__bar_from_arm>
+    101c:	ebfffff7 	bl	1000 <__bar2_veneer>
+00001020 <__bar3_veneer>:
+    1020:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1024 <__bar3_veneer\+0x4>
     1024:	02003028 	.word	0x02003028
-    1028:	e59fc000 	ldr	ip, \[pc, #0\]	; 1030 <_start\+0x18>
+00001028 <__bar5_from_arm>:
+    1028:	e59fc000 	ldr	ip, \[pc, #0\]	; 1030 <__bar5_from_arm\+0x8>
     102c:	e12fff1c 	bx	ip
     1030:	0200302f 	.word	0x0200302f
-    1034:	e59fc000 	ldr	ip, \[pc, #0\]	; 103c <_start\+0x24>
+00001034 <__bar4_from_arm>:
+    1034:	e59fc000 	ldr	ip, \[pc, #0\]	; 103c <__bar4_from_arm\+0x8>
     1038:	e12fff1c 	bx	ip
     103c:	0200302d 	.word	0x0200302d
 	...
 
 00001048 <myfunc>:
-    1048:	ebfffff4 	bl	1020 <_start\+0x8>
-    104c:	ebfffff8 	bl	1034 <_start\+0x1c>
-    1050:	ebfffff4 	bl	1028 <_start\+0x10>
+    1048:	ebfffff4 	bl	1020 <__bar3_veneer>
+    104c:	ebfffff8 	bl	1034 <__bar4_from_arm>
+    1050:	ebfffff4 	bl	1028 <__bar5_from_arm>
 Disassembly of section .foo:
 
 02003020 <bar>:
Index: ld/testsuite/ld-arm/farcall-group.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-group.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-group.d
--- ld/testsuite/ld-arm/farcall-group.d	23 May 2008 14:16:16 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-group.d	24 Jun 2008 22:01:04 -0000
@@ -3,30 +3,34 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x40>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x3c>
+00001000 <__bar2_veneer>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar2_veneer\+0x4>
     1004:	02003024 	.word	0x02003024
-    1008:	e59fc000 	ldr	ip, \[pc, #0\]	; 1010 <_start-0x30>
+00001008 <__bar_from_arm>:
+    1008:	e59fc000 	ldr	ip, \[pc, #0\]	; 1010 <__bar_from_arm\+0x8>
     100c:	e12fff1c 	bx	ip
     1010:	02003021 	.word	0x02003021
-    1014:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1018 <_start-0x28>
+00001014 <__bar3_veneer>:
+    1014:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1018 <__bar3_veneer\+0x4>
     1018:	02003028 	.word	0x02003028
-    101c:	e59fc000 	ldr	ip, \[pc, #0\]	; 1024 <_start-0x1c>
+0000101c <__bar4_from_arm>:
+    101c:	e59fc000 	ldr	ip, \[pc, #0\]	; 1024 <__bar4_from_arm\+0x8>
     1020:	e12fff1c 	bx	ip
     1024:	0200302d 	.word	0x0200302d
-    1028:	e59fc000 	ldr	ip, \[pc, #0\]	; 1030 <_start-0x10>
+00001028 <__bar5_from_arm>:
+    1028:	e59fc000 	ldr	ip, \[pc, #0\]	; 1030 <__bar5_from_arm\+0x8>
     102c:	e12fff1c 	bx	ip
     1030:	0200302f 	.word	0x0200302f
 	...
 
 00001040 <_start>:
-    1040:	ebfffff0 	bl	1008 <_start-0x38>
-    1044:	ebffffed 	bl	1000 <_start-0x40>
+    1040:	ebfffff0 	bl	1008 <__bar_from_arm>
+    1044:	ebffffed 	bl	1000 <__bar2_veneer>
 
 00001048 <myfunc>:
-    1048:	ebfffff1 	bl	1014 <_start-0x2c>
-    104c:	ebfffff2 	bl	101c <_start-0x24>
-    1050:	ebfffff4 	bl	1028 <_start-0x18>
+    1048:	ebfffff1 	bl	1014 <__bar3_veneer>
+    104c:	ebfffff2 	bl	101c <__bar4_from_arm>
+    1050:	ebfffff4 	bl	1028 <__bar5_from_arm>
 Disassembly of section .foo:
 
 02003020 <bar>:
Index: ld/testsuite/ld-arm/farcall-mix.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-mix.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-mix.d
--- ld/testsuite/ld-arm/farcall-mix.d	23 May 2008 14:16:16 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-mix.d	24 Jun 2008 22:01:04 -0000
@@ -3,28 +3,32 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x40>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x3c>
+00001000 <__bar2_veneer>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar2_veneer\+0x4>
     1004:	02002024 	.word	0x02002024
-    1008:	e59fc000 	ldr	ip, \[pc, #0\]	; 1010 <_start-0x30>
+00001008 <__bar_from_arm>:
+    1008:	e59fc000 	ldr	ip, \[pc, #0\]	; 1010 <__bar_from_arm\+0x8>
     100c:	e12fff1c 	bx	ip
     1010:	02002021 	.word	0x02002021
-    1014:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1018 <_start-0x28>
+00001014 <__bar3_veneer>:
+    1014:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1018 <__bar3_veneer\+0x4>
     1018:	02002028 	.word	0x02002028
-    101c:	e59fc000 	ldr	ip, \[pc, #0\]	; 1024 <_start-0x1c>
+0000101c <__bar4_from_arm>:
+    101c:	e59fc000 	ldr	ip, \[pc, #0\]	; 1024 <__bar4_from_arm\+0x8>
     1020:	e12fff1c 	bx	ip
     1024:	0200202d 	.word	0x0200202d
-    1028:	e59fc000 	ldr	ip, \[pc, #0\]	; 1030 <_start-0x10>
+00001028 <__bar5_from_arm>:
+    1028:	e59fc000 	ldr	ip, \[pc, #0\]	; 1030 <__bar5_from_arm\+0x8>
     102c:	e12fff1c 	bx	ip
     1030:	0200202f 	.word	0x0200202f
 	...
 
 00001040 <_start>:
-    1040:	ebfffff0 	bl	1008 <_start-0x38>
-    1044:	ebffffed 	bl	1000 <_start-0x40>
-    1048:	ebfffff1 	bl	1014 <_start-0x2c>
-    104c:	ebfffff2 	bl	101c <_start-0x24>
-    1050:	ebfffff4 	bl	1028 <_start-0x18>
+    1040:	ebfffff0 	bl	1008 <__bar_from_arm>
+    1044:	ebffffed 	bl	1000 <__bar2_veneer>
+    1048:	ebfffff1 	bl	1014 <__bar3_veneer>
+    104c:	ebfffff2 	bl	101c <__bar4_from_arm>
+    1050:	ebfffff4 	bl	1028 <__bar5_from_arm>
 Disassembly of section .foo:
 
 02002020 <bar>:
Index: ld/testsuite/ld-arm/farcall-mix2.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-mix2.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-mix2.d
--- ld/testsuite/ld-arm/farcall-mix2.d	23 May 2008 14:16:16 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-mix2.d	24 Jun 2008 22:01:04 -0000
@@ -3,32 +3,35 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x18>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x14>
+00001000 <__bar2_veneer>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar2_veneer\+0x4>
     1004:	02003024 	.word	0x02003024
-    1008:	e59fc000 	ldr	ip, \[pc, #0\]	; 1010 <_start-0x8>
+00001008 <__bar_from_arm>:
+    1008:	e59fc000 	ldr	ip, \[pc, #0\]	; 1010 <__bar_from_arm\+0x8>
     100c:	e12fff1c 	bx	ip
     1010:	02003021 	.word	0x02003021
     1014:	00000000 	.word	0x00000000
 
 00001018 <_start>:
-    1018:	ebfffffa 	bl	1008 <_start-0x10>
-    101c:	ebfffff7 	bl	1000 <_start-0x18>
+    1018:	ebfffffa 	bl	1008 <__bar_from_arm>
+    101c:	ebfffff7 	bl	1000 <__bar2_veneer>
 Disassembly of section .mytext:
 
-00002000 <.mytext>:
-    2000:	e59fc000 	ldr	ip, \[pc, #0\]	; 2008 <__exidx_end\+0xfe8>
+00002000 <__bar5_from_arm>:
+    2000:	e59fc000 	ldr	ip, \[pc, #0\]	; 2008 <__bar5_from_arm\+0x8>
     2004:	e12fff1c 	bx	ip
     2008:	0200302f 	.word	0x0200302f
-    200c:	e51ff004 	ldr	pc, \[pc, #-4\]	; 2010 <__exidx_end\+0xff0>
+0000200c <__bar3_veneer>:
+    200c:	e51ff004 	ldr	pc, \[pc, #-4\]	; 2010 <__bar3_veneer\+0x4>
     2010:	02003028 	.word	0x02003028
-    2014:	e59fc000 	ldr	ip, \[pc, #0\]	; 201c <__exidx_end\+0xffc>
+00002014 <__bar4_from_arm>:
+    2014:	e59fc000 	ldr	ip, \[pc, #0\]	; 201c <__bar4_from_arm\+0x8>
     2018:	e12fff1c 	bx	ip
     201c:	0200302d 	.word	0x0200302d
 	...
-    2028:	ebfffff7 	bl	200c <__exidx_end\+0xfec>
-    202c:	ebfffff8 	bl	2014 <__exidx_end\+0xff4>
-    2030:	ebfffff2 	bl	2000 <__exidx_end\+0xfe0>
+    2028:	ebfffff7 	bl	200c <__bar3_veneer>
+    202c:	ebfffff8 	bl	2014 <__bar4_from_arm>
+    2030:	ebfffff2 	bl	2000 <__bar5_from_arm>
 Disassembly of section .foo:
 
 02003020 <bar>:
Index: ld/testsuite/ld-arm/farcall-thumb-arm-blx-pic-veneer.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-thumb-arm-blx-pic-veneer.d,v
retrieving revision 1.2
diff -u -p -r1.2 farcall-thumb-arm-blx-pic-veneer.d
--- ld/testsuite/ld-arm/farcall-thumb-arm-blx-pic-veneer.d	23 May 2008 13:53:27 -0000	1.2
+++ ld/testsuite/ld-arm/farcall-thumb-arm-blx-pic-veneer.d	24 Jun 2008 22:01:04 -0000
@@ -2,14 +2,14 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x10>:
-    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <_start-0x8>
+00001000 <__bar_from_thumb>:
+    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <__bar_from_thumb\+0x8>
     1004:	e08ff00c 	add	pc, pc, ip
     1008:	0200000c 	.word	0x0200000c
     100c:	00000000 	.word	0x00000000
 
 00001010 <_start>:
-    1010:	f7ff eff6 	blx	1000 <_start-0x10>
+    1010:	f7ff eff6 	blx	1000 <__bar_from_thumb>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/farcall-thumb-arm-blx.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-thumb-arm-blx.d,v
retrieving revision 1.2
diff -u -p -r1.2 farcall-thumb-arm-blx.d
--- ld/testsuite/ld-arm/farcall-thumb-arm-blx.d	23 May 2008 13:53:27 -0000	1.2
+++ ld/testsuite/ld-arm/farcall-thumb-arm-blx.d	24 Jun 2008 22:01:04 -0000
@@ -2,12 +2,12 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x8>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x4>
+00001000 <__bar_from_thumb>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar_from_thumb\+0x4>
     1004:	02001014 	.word	0x02001014
 
 00001008 <_start>:
-    1008:	f7ff effa 	blx	1000 <_start-0x8>
+    1008:	f7ff effa 	blx	1000 <__bar_from_thumb>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/farcall-thumb-arm.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-thumb-arm.d,v
retrieving revision 1.3
diff -u -p -r1.3 farcall-thumb-arm.d
--- ld/testsuite/ld-arm/farcall-thumb-arm.d	9 Jun 2008 14:53:13 -0000	1.3
+++ ld/testsuite/ld-arm/farcall-thumb-arm.d	24 Jun 2008 22:01:04 -0000
@@ -2,17 +2,18 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x18>:
+00001000 <__bar_from_thumb>:
     1000:	b540      	push	{r6, lr}
-    1002:	4e03      	ldr	r6, \[pc, #12\]	\(1010 <_start-0x8>\)
+    1002:	4e03      	ldr	r6, \[pc, #12\]	\(1010 <__bar_from_thumb\+0x10>\)
     1004:	46fe      	mov	lr, pc
     1006:	4730      	bx	r6
     1008:	e8bd4040 	pop	{r6, lr}
     100c:	e12fff1e 	bx	lr
-	...
+    1010:	02001014 	.word	0x02001014
+    1014:	00000000 	.word	0x00000000
 
 00001018 <_start>:
-    1018:	f7ff fff2 	bl	1000 <_start-0x18>
+    1018:	f7ff fff2 	bl	1000 <__bar_from_thumb>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/farcall-thumb-thumb-blx-pic-veneer.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-thumb-thumb-blx-pic-veneer.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-thumb-thumb-blx-pic-veneer.d
--- ld/testsuite/ld-arm/farcall-thumb-thumb-blx-pic-veneer.d	15 May 2008 17:00:15 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-thumb-thumb-blx-pic-veneer.d	24 Jun 2008 22:01:04 -0000
@@ -2,14 +2,14 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x10>:
-    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <_start-0x8>
+00001000 <__bar_veneer>:
+    1000:	e59fc000 	ldr	ip, \[pc, #0\]	; 1008 <__bar_veneer\+0x8>
     1004:	e08ff00c 	add	pc, pc, ip
     1008:	0200000d 	.word	0x0200000d
     100c:	00000000 	.word	0x00000000
 
 00001010 <_start>:
-    1010:	f7ff eff6 	blx	1000 <_start-0x10>
+    1010:	f7ff eff6 	blx	1000 <__bar_veneer>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/farcall-thumb-thumb-blx.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-thumb-thumb-blx.d,v
retrieving revision 1.1
diff -u -p -r1.1 farcall-thumb-thumb-blx.d
--- ld/testsuite/ld-arm/farcall-thumb-thumb-blx.d	15 May 2008 17:00:15 -0000	1.1
+++ ld/testsuite/ld-arm/farcall-thumb-thumb-blx.d	24 Jun 2008 22:01:04 -0000
@@ -2,12 +2,12 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x8>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x4>
+00001000 <__bar_veneer>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar_veneer\+0x4>
     1004:	02001015 	.word	0x02001015
 
 00001008 <_start>:
-    1008:	f7ff effa 	blx	1000 <_start-0x8>
+    1008:	f7ff effa 	blx	1000 <__bar_veneer>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/farcall-thumb-thumb-m.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/farcall-thumb-thumb-m.d,v
retrieving revision 1.2
diff -u -p -r1.2 farcall-thumb-thumb-m.d
--- ld/testsuite/ld-arm/farcall-thumb-thumb-m.d	9 Jun 2008 14:53:13 -0000	1.2
+++ ld/testsuite/ld-arm/farcall-thumb-thumb-m.d	24 Jun 2008 22:01:04 -0000
@@ -2,17 +2,17 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x10>:
+00001000 <__bar_veneer>:
     1000:	b540      	push	{r6, lr}
-    1002:	4e02      	ldr	r6, \[pc, #8\]	\(100c <_start-0x4>\)
+    1002:	4e02      	ldr	r6, \[pc, #8\]	\(100c <__bar_veneer\+0xc>\)
     1004:	46fe      	mov	lr, pc
-    1006:	e7fe      	b.n	1006 <_start-0xa>
+    1006:	4730      	bx	r6
     1008:	bd40      	pop	{r6, pc}
     100a:	bf00      	nop
     100c:	02001015 	.word	0x02001015
 
 00001010 <_start>:
-    1010:	f7ff fff6 	bl	1000 <_start-0x10>
+    1010:	f7ff fff6 	bl	1000 <__bar_veneer>
 Disassembly of section .foo:
 
 02001014 <bar>:
Index: ld/testsuite/ld-arm/thumb2-bl-as-thumb1-bad.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/thumb2-bl-as-thumb1-bad.d,v
retrieving revision 1.3
diff -u -p -r1.3 thumb2-bl-as-thumb1-bad.d
--- ld/testsuite/ld-arm/thumb2-bl-as-thumb1-bad.d	15 May 2008 17:00:15 -0000	1.3
+++ ld/testsuite/ld-arm/thumb2-bl-as-thumb1-bad.d	24 Jun 2008 22:01:04 -0000
@@ -2,12 +2,12 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x8>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x4>
+00001000 <__bar_veneer>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar_veneer\+0x4>
     1004:	0040100d 	.word	0x0040100d
 
 00001008 <_start>:
-    1008:	f7ff effa 	blx	1000 <_start-0x8>
+    1008:	f7ff effa 	blx	1000 <__bar_veneer>
 Disassembly of section .foo:
 
 0040100c <bar>:
Index: ld/testsuite/ld-arm/thumb2-bl-bad.d
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/thumb2-bl-bad.d,v
retrieving revision 1.3
diff -u -p -r1.3 thumb2-bl-bad.d
--- ld/testsuite/ld-arm/thumb2-bl-bad.d	15 May 2008 17:00:15 -0000	1.3
+++ ld/testsuite/ld-arm/thumb2-bl-bad.d	24 Jun 2008 22:01:04 -0000
@@ -2,12 +2,12 @@
 
 Disassembly of section .text:
 
-00001000 <_start-0x8>:
-    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <_start-0x4>
+00001000 <__bar_veneer>:
+    1000:	e51ff004 	ldr	pc, \[pc, #-4\]	; 1004 <__bar_veneer\+0x4>
     1004:	0100100d 	.word	0x0100100d
 
 00001008 <_start>:
-    1008:	f7ff effa 	blx	1000 <_start-0x8>
+    1008:	f7ff effa 	blx	1000 <__bar_veneer>
 Disassembly of section .foo:
 
 0100100c <bar>:



More information about the Binutils mailing list