2009-02-24 Joseph Myers <joseph@codesourcery.com>
authorDaniel Jacobowitz <drow@false.org>
Tue, 24 Feb 2009 22:43:10 +0000 (22:43 +0000)
committerDaniel Jacobowitz <drow@false.org>
Tue, 24 Feb 2009 22:43:10 +0000 (22:43 +0000)
bfd/
* elf32-arm.c (PREV_SEC): Update comment.
(group_sections): Rename argument to stubs_always_after_branch.
Reverse the list and place stubs at the end of input sections.
Undefine NEXT_SEC.
(elf32_arm_size_stubs): Update to use stubs_always_after_branch.

ld/
* ld.texinfo (ARM): Document changed meaning of --stub-group-size.
* emultempl/armelf.em (hook_in_stub): Insert after the input section.
(elf32_arm_add_stub_section): Update comment.
(PARSE_AND_LIST_OPTIONS): Update help for --stub-group-size.

2009-02-24  Daniel Jacobowitz  <dan@codesourcery.com>

ld/testsuite/
* ld-arm/arm-elf.exp (armeabitests): Update duplicate test names.
Use normal output files for big-endian.
* ld-arm/farcall-arm-arm-be.d, ld-arm/farcall-thumb-arm-be.d: Delete.
* 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-be8.d,
ld-arm/farcall-thumb-arm-blx-pic-veneer.d,
ld-arm/farcall-thumb-arm-blx.d, ld-arm/farcall-thumb-arm-short.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/farcall-thumb-thumb.d, ld-arm/thumb2-bl-as-thumb1-bad.d,
ld-arm/thumb2-bl-bad.d: Update for moved stubs.

31 files changed:
bfd/ChangeLog
bfd/elf32-arm.c
ld/ChangeLog
ld/emultempl/armelf.em
ld/ld.texinfo
ld/testsuite/ChangeLog
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/farcall-arm-arm-be.d [deleted file]
ld/testsuite/ld-arm/farcall-arm-arm-be8.d
ld/testsuite/ld-arm/farcall-arm-arm-pic-veneer.d
ld/testsuite/ld-arm/farcall-arm-arm.d
ld/testsuite/ld-arm/farcall-arm-thumb-blx-pic-veneer.d
ld/testsuite/ld-arm/farcall-arm-thumb-blx.d
ld/testsuite/ld-arm/farcall-arm-thumb-pic-veneer.d
ld/testsuite/ld-arm/farcall-arm-thumb.d
ld/testsuite/ld-arm/farcall-group-size2.d
ld/testsuite/ld-arm/farcall-group.d
ld/testsuite/ld-arm/farcall-mix.d
ld/testsuite/ld-arm/farcall-mix2.d
ld/testsuite/ld-arm/farcall-thumb-arm-be.d [deleted file]
ld/testsuite/ld-arm/farcall-thumb-arm-be8.d
ld/testsuite/ld-arm/farcall-thumb-arm-blx-pic-veneer.d
ld/testsuite/ld-arm/farcall-thumb-arm-blx.d
ld/testsuite/ld-arm/farcall-thumb-arm-short.d
ld/testsuite/ld-arm/farcall-thumb-arm.d
ld/testsuite/ld-arm/farcall-thumb-thumb-blx-pic-veneer.d
ld/testsuite/ld-arm/farcall-thumb-thumb-blx.d
ld/testsuite/ld-arm/farcall-thumb-thumb-m.d
ld/testsuite/ld-arm/farcall-thumb-thumb.d
ld/testsuite/ld-arm/thumb2-bl-as-thumb1-bad.d
ld/testsuite/ld-arm/thumb2-bl-bad.d

index c9c186462554088648cd13c3099ffff27e70bde8..f40acec1a6ba7b7d6d75a25c4b40d2ed189e3b8c 100644 (file)
@@ -1,3 +1,11 @@
+2009-02-24  Joseph Myers  <joseph@codesourcery.com>
+
+       * elf32-arm.c (PREV_SEC): Update comment.
+       (group_sections): Rename argument to stubs_always_after_branch.
+       Reverse the list and place stubs at the end of input sections.
+       Undefine NEXT_SEC.
+       (elf32_arm_size_stubs): Update to use stubs_always_after_branch.
+
 2009-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * elf32-arm.c (arm_build_one_stub): Initialize stub_reloc_offset.
index 9f4911c41dacdb2bdd47f9ec53d31e03e85d2bd3..842432233b53b9355a7bfdf61458aafeaa6947ab 100644 (file)
@@ -3417,7 +3417,7 @@ elf32_arm_next_input_section (struct bfd_link_info *info,
          /* Steal the link_sec pointer for our list.  */
 #define PREV_SEC(sec) (htab->stub_group[(sec)->id].link_sec)
          /* This happens to make the list in reverse order,
-            which is what we want.  */
+            which we reverse later.  */
          PREV_SEC (isec) = *list;
          *list = isec;
        }
@@ -3426,7 +3426,7 @@ elf32_arm_next_input_section (struct bfd_link_info *info,
 
 /* See whether we can group stub sections together.  Grouping stub
    sections may result in fewer stubs.  More importantly, we need to
-   put all .init* and .fini* stubs at the beginning of the .init or
+   put all .init* and .fini* stubs at the end of the .init or
    .fini output sections respectively, because glibc splits the
    _init and _fini functions into multiple parts.  Putting a stub in
    the middle of a function is not a good idea.  */
@@ -3434,66 +3434,86 @@ elf32_arm_next_input_section (struct bfd_link_info *info,
 static void
 group_sections (struct elf32_arm_link_hash_table *htab,
                bfd_size_type stub_group_size,
-               bfd_boolean stubs_always_before_branch)
+               bfd_boolean stubs_always_after_branch)
 {
-  asection **list = htab->input_list + htab->top_index;
+  asection **list = htab->input_list;
 
   do
     {
       asection *tail = *list;
+      asection *head;
+      asection *tp;
 
       if (tail == bfd_abs_section_ptr)
        continue;
 
-      while (tail != NULL)
+      /* Reverse the list: we must avoid placing stubs at the
+        beginning of the section because the beginning of the text
+        section may be required for an interrupt vector in bare metal
+        code.  */
+#define NEXT_SEC PREV_SEC
+      head = tail;
+      tp = NULL;
+      for (;;)
+       {
+         asection *h = PREV_SEC (head);
+         NEXT_SEC (head) = tp;
+         if (h == NULL)
+           break;
+         tp = head;
+         head = h;
+       }
+
+      while (head != NULL)
        {
          asection *curr;
-         asection *prev;
+         asection *next;
          bfd_size_type total;
 
-         curr = tail;
-         total = tail->size;
-         while ((prev = PREV_SEC (curr)) != NULL
-                && ((total += curr->output_offset - prev->output_offset)
+         curr = head;
+         total = head->size;
+         while ((next = NEXT_SEC (curr)) != NULL
+                && ((total += next->output_offset - curr->output_offset)
                     < stub_group_size))
-           curr = prev;
+           curr = next;
 
-         /* OK, the size from the start of CURR to the end is less
+         /* OK, the size from the start to the start of CURR is less
             than stub_group_size and thus can be handled by one stub
-            section.  (Or the tail section is itself larger than
+            section.  (Or the head section is itself larger than
             stub_group_size, in which case we may be toast.)
             We should really be keeping track of the total size of
             stubs added here, as stubs contribute to the final output
             section size.  */
          do
            {
-             prev = PREV_SEC (tail);
+             next = NEXT_SEC (head);
              /* Set up this stub group.  */
-             htab->stub_group[tail->id].link_sec = curr;
+             htab->stub_group[head->id].link_sec = curr;
            }
-         while (tail != curr && (tail = prev) != NULL);
+         while (head != curr && (head = next) != NULL);
 
          /* But wait, there's more!  Input sections up to stub_group_size
-            bytes before the stub section can be handled by it too.  */
-         if (!stubs_always_before_branch)
+            bytes after the stub section can be handled by it too.  */
+         if (!stubs_always_after_branch)
            {
              total = 0;
-             while (prev != NULL
-                    && ((total += tail->output_offset - prev->output_offset)
+             while (next != NULL
+                    && ((total += next->output_offset - head->output_offset)
                         < stub_group_size))
                {
-                 tail = prev;
-                 prev = PREV_SEC (tail);
-                 htab->stub_group[tail->id].link_sec = curr;
+                 head = next;
+                 next = NEXT_SEC (head);
+                 htab->stub_group[head->id].link_sec = curr;
                }
            }
-         tail = prev;
+         head = next;
        }
     }
-  while (list-- != htab->input_list);
+  while (list++ != htab->input_list + htab->top_index);
 
   free (htab->input_list);
 #undef PREV_SEC
+#undef NEXT_SEC
 }
 
 /* Determine and set the size of the stub section for a final link.
@@ -3511,7 +3531,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
                      void (*layout_sections_again) (void))
 {
   bfd_size_type stub_group_size;
-  bfd_boolean stubs_always_before_branch;
+  bfd_boolean stubs_always_after_branch;
   bfd_boolean stub_changed = 0;
   struct elf32_arm_link_hash_table *htab = elf32_arm_hash_table (info);
 
@@ -3524,7 +3544,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
   htab->stub_bfd = stub_bfd;
   htab->add_stub_section = add_stub_section;
   htab->layout_sections_again = layout_sections_again;
-  stubs_always_before_branch = group_size < 0;
+  stubs_always_after_branch = group_size < 0;
   if (group_size < 0)
     stub_group_size = -group_size;
   else
@@ -3544,7 +3564,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
       stub_group_size = 4170000;
     }
 
-  group_sections (htab, stub_group_size, stubs_always_before_branch);
+  group_sections (htab, stub_group_size, stubs_always_after_branch);
 
   while (1)
     {
index f61f2ce95833e1e6a845e2c7b57d00be3e3514bf..2e0068d216b7f3c405e3605d141ec95e9bb866ab 100644 (file)
@@ -1,3 +1,10 @@
+2009-02-24  Joseph Myers  <joseph@codesourcery.com>
+
+       * ld.texinfo (ARM): Document changed meaning of --stub-group-size.
+       * emultempl/armelf.em (hook_in_stub): Insert after the input section.
+       (elf32_arm_add_stub_section): Update comment.
+       (PARSE_AND_LIST_OPTIONS): Update help for --stub-group-size.
+
 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
 
        * ld.texinfo (Options): Correct typos in example.  Recommend
index 6c55b37777ebff61196c4e9ccd6669621692b521..31ad3e8dae7ea5726590db12325e9b7f8418be85 100644 (file)
@@ -213,9 +213,9 @@ hook_in_stub (struct hook_stub_info *info, lang_statement_union_type **lp)
          if (l->input_section.section == info->input_section)
            {
              /* We've found our section.  Insert the stub immediately
-                before its associated input section.  */
-             *lp = info->add.head;
-             *(info->add.tail) = l;
+                after its associated input section.  */
+             *(info->add.tail) = l->header.next;
+             l->header.next = info->add.head;
              return TRUE;
            }
          break;
@@ -244,7 +244,7 @@ hook_in_stub (struct hook_stub_info *info, lang_statement_union_type **lp)
 /* Call-back for elf32_arm_size_stubs.  */
 
 /* Create a new stub section, and arrange for it to be linked
-   immediately before INPUT_SECTION.  */
+   immediately after INPUT_SECTION.  */
 
 static asection *
 elf32_arm_add_stub_section (const char *stub_sec_name,
@@ -541,7 +541,7 @@ PARSE_AND_LIST_OPTIONS='
   fprintf (file, _("\
    --stub-group-size=N   Maximum size of a group of input sections that can be\n\
                            handled by one stub section.  A negative value\n\
-                           locates all stubs before their branches (with a\n\
+                           locates all stubs after their branches (with a\n\
                            group size of -N), while a positive value allows\n\
                            two groups of input sections, one before, and one\n\
                            after each stub section.  Values of +/-1 indicate\n\
index e35775d48c60060c3d1b2a5c32a77ac8321925b3..fc5f1daaf937dd758ebd211135998ee8f9b13bc4 100644 (file)
@@ -5826,7 +5826,7 @@ where they should be placed.
 
 The value of @samp{N}, the parameter to the
 @option{--stub-group-size=} option controls where the stub groups are
-placed.  If it is negative then all stubs are placed before the first
+placed.  If it is negative then all stubs are placed after the first
 branch that needs them.  If it is positive then the stubs can be
 placed either before or after the branches that need them.  If the
 value of @samp{N} is 1 (either +1 or -1) then the linker will choose
index 775166c358cba0edb99f011ed059df592edff24e..cdbc267bb84ec6c148ac9dd12d3f15472666eb62 100644 (file)
@@ -1,3 +1,22 @@
+2009-02-24  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * ld-arm/arm-elf.exp (armeabitests): Update duplicate test names.
+       Use normal output files for big-endian.
+       * ld-arm/farcall-arm-arm-be.d, ld-arm/farcall-thumb-arm-be.d: Delete.
+       * 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-be8.d,
+       ld-arm/farcall-thumb-arm-blx-pic-veneer.d,
+       ld-arm/farcall-thumb-arm-blx.d, ld-arm/farcall-thumb-arm-short.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/farcall-thumb-thumb.d, ld-arm/thumb2-bl-as-thumb1-bad.d,
+       ld-arm/thumb2-bl-bad.d: Update for moved stubs.
+
 2009-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * ld-arm/arm-elf.exp (armeabitests): Run new tests.  Correct BE8 output
index 2e32aea31377f8c671d95f14c743b04023103595..da63b40d1b42d809a4c72cbf8e6bd9e7a3fa0ec2 100644 (file)
@@ -198,7 +198,7 @@ if { ![istarget "arm*-*-*eabi"] } {
        {"Thumb-2-as-Thumb-1 BL" "-Ttext 0x1000 --section-start .foo=0x100100c" "" {thumb2-bl-as-thumb1-bad.s}
            {{objdump -d thumb2-bl-as-thumb1-bad-noeabi.d}}
            "thumb2-bl-as-thumb1-bad"}
-       {"Thumb-2 BL" "-Ttext 0x1000 --section-start .foo=0x100100c" "" {thumb2-bl-bad.s}
+       {"Thumb-2 BL bad" "-Ttext 0x1000 --section-start .foo=0x100100c" "" {thumb2-bl-bad.s}
            {{objdump -d thumb2-bl-bad-noeabi.d}}
            "thumb2-bl-bad"}
     }
@@ -268,7 +268,7 @@ set armeabitests {
      {{objdump -d farcall-arm-arm-be8.d}}
      "farcall-arm-arm-be8"}
     {"ARM-ARM farcall (BE)" "-Ttext 0x1000 --section-start .foo=0x2001020 -EB" "-EB" {farcall-arm-arm.s}
-     {{objdump -d farcall-arm-arm-be.d}}
+     {{objdump -d farcall-arm-arm.d}}
      "farcall-arm-arm-be"}
 
     {"ARM-Thumb farcall" "-Ttext 0x1000 --section-start .foo=0x2001014" "" {farcall-arm-thumb.s}
@@ -304,7 +304,7 @@ set armeabitests {
      {{objdump -d farcall-thumb-arm-be8.d}}
      "farcall-thumb-arm-be8"}
     {"Thumb-ARM farcall (BE)" "-Ttext 0x1000 --section-start .foo=0x2001014 -EB" "-W -EB" {farcall-thumb-arm.s}
-     {{objdump -d farcall-thumb-arm-be.d}}
+     {{objdump -d farcall-thumb-arm.d}}
      "farcall-thumb-arm-be"}
     {"Thumb-ARM (short) call" "-Ttext 0x1000 --section-start .foo=0x0002014" "-W" {farcall-thumb-arm-short.s}
      {{objdump -d farcall-thumb-arm-short.d}}
diff --git a/ld/testsuite/ld-arm/farcall-arm-arm-be.d b/ld/testsuite/ld-arm/farcall-arm-arm-be.d
deleted file mode 100644 (file)
index e4c8ca3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-.*:     file format .*
-
-Disassembly of section .text:
-
-00001000 <__bar_veneer>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar_veneer\+0x4>
-    1004:      02001020        .word   0x02001020
-
-00001008 <_start>:
-    1008:      ebfffffc        bl      1000 <__bar_veneer>
-Disassembly of section .foo:
-
-02001020 <bar>:
- 2001020:      e12fff1e        bx      lr
index 72bbff8d0aeed7487962e78d31ad3df78aeb8c86..cf3aa0792a3884f3b41d0e969f5c64f4ed0d6114 100644 (file)
@@ -2,12 +2,13 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_veneer>:
-    1000:      04f01fe5        ldr     pc, \[pc, #-4\] ; 1004 <__bar_veneer\+0x4>
-    1004:      02001020        .word   0x02001020
+00001000 <_start>:
+    1000:      000000eb        bl      1008 <__bar_veneer>
+    1004:      00000000        andeq   r0, r0, r0
 
-00001008 <_start>:
-    1008:      fcffffeb        bl      1000 <__bar_veneer>
+00001008 <__bar_veneer>:
+    1008:      04f01fe5        ldr     pc, \[pc, #-4\] ; 100c <__bar_veneer\+0x4>
+    100c:      02001020        .word   0x02001020
 Disassembly of section .foo:
 
 02001020 <bar>:
index 39fb5c89ce6ea51f69a7e97b3c84e7f8a4d10793..f5ff227527ee0aac4a9457a9ea7e9791ee08b23c 100644 (file)
@@ -2,14 +2,15 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_veneer>:
-    1000:      e59fc000        ldr     ip, \[pc, #0\]  ; 1008 <__bar_veneer\+0x8>
-    1004:      e08ff00c        add     pc, pc, ip
-    1008:      02000014        .word   0x02000014
-    100c:      00000000        .word   0x00000000
+00001000 <_start>:
+    1000:      eb000000        bl      1008 <__bar_veneer>
+    1004:      00000000        andeq   r0, r0, r0
 
-00001010 <_start>:
-    1010:      ebfffffa        bl      1000 <__bar_veneer>
+00001008 <__bar_veneer>:
+    1008:      e59fc000        ldr     ip, \[pc, #0\]  ; 1010 <__bar_veneer\+0x8>
+    100c:      e08ff00c        add     pc, pc, ip
+    1010:      0200000c        .word   0x0200000c
+    1014:      00000000        .word   0x00000000
 Disassembly of section .foo:
 
 02001020 <bar>:
index e4c8ca39ea8da887f080baeb5bd0025656ea8b83..7ee6d66c59895988908359ec7b0b2f485383ad0b 100644 (file)
@@ -2,12 +2,13 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_veneer>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar_veneer\+0x4>
-    1004:      02001020        .word   0x02001020
+00001000 <_start>:
+    1000:      eb000000        bl      1008 <__bar_veneer>
+    1004:      00000000        andeq   r0, r0, r0
 
-00001008 <_start>:
-    1008:      ebfffffc        bl      1000 <__bar_veneer>
+00001008 <__bar_veneer>:
+    1008:      e51ff004        ldr     pc, \[pc, #-4\] ; 100c <__bar_veneer\+0x4>
+    100c:      02001020        .word   0x02001020
 Disassembly of section .foo:
 
 02001020 <bar>:
index ede0c84e4314499ba48032d714998e82f187be49..15c2274cb7ff298e127b257cb6cfe527c8d8eb2b 100644 (file)
@@ -2,14 +2,15 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_from_arm>:
-    1000:      e59fc000        ldr     ip, \[pc, #0\]  ; 1008 <__bar_from_arm\+0x8>
-    1004:      e08ff00c        add     pc, pc, ip
-    1008:      02000009        .word   0x02000009
-    100c:      00000000        .word   0x00000000
+00001000 <_start>:
+    1000:      eb000000        bl      1008 <__bar_from_arm>
+    1004:      00000000        andeq   r0, r0, r0
 
-00001010 <_start>:
-    1010:      ebfffffa        bl      1000 <__bar_from_arm>
+00001008 <__bar_from_arm>:
+    1008:      e59fc000        ldr     ip, \[pc, #0\]  ; 1010 <__bar_from_arm\+0x8>
+    100c:      e08ff00c        add     pc, pc, ip
+    1010:      02000001        .word   0x02000001
+    1014:      00000000        .word   0x00000000
 Disassembly of section .foo:
 
 02001014 <bar>:
index d67387c6084aa964dd95808808a0dc040da86ee8..993a028651a2f80ece31dc2bdbd16cbe35a3524a 100644 (file)
@@ -2,12 +2,13 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_from_arm>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar_from_arm\+0x4>
-    1004:      02001015        .word   0x02001015
+00001000 <_start>:
+    1000:      eb000000        bl      1008 <__bar_from_arm>
+    1004:      00000000        andeq   r0, r0, r0
 
-00001008 <_start>:
-    1008:      ebfffffc        bl      1000 <__bar_from_arm>
+00001008 <__bar_from_arm>:
+    1008:      e51ff004        ldr     pc, \[pc, #-4\] ; 100c <__bar_from_arm\+0x4>
+    100c:      02001015        .word   0x02001015
 Disassembly of section .foo:
 
 02001014 <bar>:
index ede0c84e4314499ba48032d714998e82f187be49..15c2274cb7ff298e127b257cb6cfe527c8d8eb2b 100644 (file)
@@ -2,14 +2,15 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_from_arm>:
-    1000:      e59fc000        ldr     ip, \[pc, #0\]  ; 1008 <__bar_from_arm\+0x8>
-    1004:      e08ff00c        add     pc, pc, ip
-    1008:      02000009        .word   0x02000009
-    100c:      00000000        .word   0x00000000
+00001000 <_start>:
+    1000:      eb000000        bl      1008 <__bar_from_arm>
+    1004:      00000000        andeq   r0, r0, r0
 
-00001010 <_start>:
-    1010:      ebfffffa        bl      1000 <__bar_from_arm>
+00001008 <__bar_from_arm>:
+    1008:      e59fc000        ldr     ip, \[pc, #0\]  ; 1010 <__bar_from_arm\+0x8>
+    100c:      e08ff00c        add     pc, pc, ip
+    1010:      02000001        .word   0x02000001
+    1014:      00000000        .word   0x00000000
 Disassembly of section .foo:
 
 02001014 <bar>:
index d7519a00f8ee57f6d745ad6d74547d4a433f6610..8291be334b6b3ccfcaf795a738d70d946ca5b839 100644 (file)
@@ -2,14 +2,15 @@
 
 Disassembly of section .text:
 
-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
+00001000 <_start>:
+    1000:      eb000000        bl      1008 <__bar_from_arm>
+    1004:      00000000        andeq   r0, r0, r0
 
-00001010 <_start>:
-    1010:      ebfffffa        bl      1000 <__bar_from_arm>
+00001008 <__bar_from_arm>:
+    1008:      e59fc000        ldr     ip, \[pc, #0\]  ; 1010 <__bar_from_arm\+0x8>
+    100c:      e12fff1c        bx      ip
+    1010:      02001015        .word   0x02001015
+    1014:      00000000        .word   0x00000000
 Disassembly of section .foo:
 
 02001014 <bar>:
index bab6c6885dcfaad94bc0864eeeaad3c60dae0195..d49887f0a60822a1cb2db8caecde7dc761623441 100644 (file)
@@ -3,35 +3,35 @@
 
 Disassembly of section .text:
 
-00001000 <__bar2_veneer>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar2_veneer\+0x4>
-    1004:      02003024        .word   0x02003024
-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 <__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
-00001028 <__bar5_from_arm>:
-    1028:      e59fc000        ldr     ip, \[pc, #0\]  ; 1030 <__bar5_from_arm\+0x8>
-    102c:      e12fff1c        bx      ip
-    1030:      0200302f        .word   0x0200302f
-00001034 <__bar4_from_arm>:
-    1034:      e59fc000        ldr     ip, \[pc, #0\]  ; 103c <__bar4_from_arm\+0x8>
-    1038:      e12fff1c        bx      ip
-    103c:      0200302d        .word   0x0200302d
+00001000 <_start>:
+    1000:      eb000002        bl      1010 <__bar_from_arm>
+    1004:      ebffffff        bl      1008 <__bar2_veneer>
+00001008 <__bar2_veneer>:
+    1008:      e51ff004        ldr     pc, \[pc, #-4\] ; 100c <__bar2_veneer\+0x4>
+    100c:      02003024        .word   0x02003024
+00001010 <__bar_from_arm>:
+    1010:      e59fc000        ldr     ip, \[pc, #0\]  ; 1018 <__bar_from_arm\+0x8>
+    1014:      e12fff1c        bx      ip
+    1018:      02003021        .word   0x02003021
+    101c:      00000000        .word   0x00000000
+00001020 <myfunc>:
+    1020:      eb000002        bl      1030 <__bar3_veneer>
+    1024:      eb000006        bl      1044 <__bar4_from_arm>
+    1028:      eb000002        bl      1038 <__bar5_from_arm>
+    102c:      00000000        andeq   r0, r0, r0
+00001030 <__bar3_veneer>:
+    1030:      e51ff004        ldr     pc, \[pc, #-4\] ; 1034 <__bar3_veneer\+0x4>
+    1034:      02003028        .word   0x02003028
+00001038 <__bar5_from_arm>:
+    1038:      e59fc000        ldr     ip, \[pc, #0\]  ; 1040 <__bar5_from_arm\+0x8>
+    103c:      e12fff1c        bx      ip
+    1040:      0200302f        .word   0x0200302f
+00001044 <__bar4_from_arm>:
+    1044:      e59fc000        ldr     ip, \[pc, #0\]  ; 104c <__bar4_from_arm\+0x8>
+    1048:      e12fff1c        bx      ip
+    104c:      0200302d        .word   0x0200302d
        ...
 
-00001048 <myfunc>:
-    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 95ebfb3f161448fb3c5dd91b55eb0661aa8174c1..f7ff972dfef8a306ad4f9f20c4365367748d11d3 100644 (file)
@@ -3,34 +3,35 @@
 
 Disassembly of section .text:
 
-00001000 <__bar2_veneer>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar2_veneer\+0x4>
-    1004:      02003024        .word   0x02003024
-00001008 <__bar_from_arm>:
-    1008:      e59fc000        ldr     ip, \[pc, #0\]  ; 1010 <__bar_from_arm\+0x8>
-    100c:      e12fff1c        bx      ip
-    1010:      02003021        .word   0x02003021
-00001014 <__bar3_veneer>:
-    1014:      e51ff004        ldr     pc, \[pc, #-4\] ; 1018 <__bar3_veneer\+0x4>
-    1018:      02003028        .word   0x02003028
-0000101c <__bar4_from_arm>:
-    101c:      e59fc000        ldr     ip, \[pc, #0\]  ; 1024 <__bar4_from_arm\+0x8>
-    1020:      e12fff1c        bx      ip
-    1024:      0200302d        .word   0x0200302d
-00001028 <__bar5_from_arm>:
-    1028:      e59fc000        ldr     ip, \[pc, #0\]  ; 1030 <__bar5_from_arm\+0x8>
-    102c:      e12fff1c        bx      ip
-    1030:      0200302f        .word   0x0200302f
+00001000 <_start>:
+    1000:      eb000007        bl      1024 <__bar_from_arm>
+    1004:      eb00000c        bl      103c <__bar2_veneer>
+
+00001008 <myfunc>:
+    1008:      eb00000d        bl      1044 <__bar3_veneer>
+    100c:      eb000007        bl      1030 <__bar4_from_arm>
+    1010:      eb000000        bl      1018 <__bar5_from_arm>
+    1014:      00000000        andeq   r0, r0, r0
+
+00001018 <__bar5_from_arm>:
+    1018:      e59fc000        ldr     ip, \[pc, #0\]  ; 1020 <__bar5_from_arm\+0x8>
+    101c:      e12fff1c        bx      ip
+    1020:      0200302f        .word   0x0200302f
+00001024 <__bar_from_arm>:
+    1024:      e59fc000        ldr     ip, \[pc, #0\]  ; 102c <__bar_from_arm\+0x8>
+    1028:      e12fff1c        bx      ip
+    102c:      02003021        .word   0x02003021
+00001030 <__bar4_from_arm>:
+    1030:      e59fc000        ldr     ip, \[pc, #0\]  ; 1038 <__bar4_from_arm\+0x8>
+    1034:      e12fff1c        bx      ip
+    1038:      0200302d        .word   0x0200302d
+0000103c <__bar2_veneer>:
+    103c:      e51ff004        ldr     pc, \[pc, #-4\] ; 1040 <__bar2_veneer\+0x4>
+    1040:      02003024        .word   0x02003024
+00001044 <__bar3_veneer>:
+    1044:      e51ff004        ldr     pc, \[pc, #-4\] ; 1048 <__bar3_veneer\+0x4>
+    1048:      02003028        .word   0x02003028
        ...
-
-00001040 <_start>:
-    1040:      ebfffff0        bl      1008 <__bar_from_arm>
-    1044:      ebffffed        bl      1000 <__bar2_veneer>
-
-00001048 <myfunc>:
-    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 1880ae8604d472a6500d25df52fd3b272f1f7671..7b1a6c6209f558f8d6d3092806ef6a121efece95 100644 (file)
@@ -3,32 +3,33 @@
 
 Disassembly of section .text:
 
-00001000 <__bar2_veneer>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar2_veneer\+0x4>
-    1004:      02002024        .word   0x02002024
-00001008 <__bar_from_arm>:
-    1008:      e59fc000        ldr     ip, \[pc, #0\]  ; 1010 <__bar_from_arm\+0x8>
-    100c:      e12fff1c        bx      ip
-    1010:      02002021        .word   0x02002021
-00001014 <__bar3_veneer>:
-    1014:      e51ff004        ldr     pc, \[pc, #-4\] ; 1018 <__bar3_veneer\+0x4>
-    1018:      02002028        .word   0x02002028
-0000101c <__bar4_from_arm>:
-    101c:      e59fc000        ldr     ip, \[pc, #0\]  ; 1024 <__bar4_from_arm\+0x8>
-    1020:      e12fff1c        bx      ip
-    1024:      0200202d        .word   0x0200202d
-00001028 <__bar5_from_arm>:
-    1028:      e59fc000        ldr     ip, \[pc, #0\]  ; 1030 <__bar5_from_arm\+0x8>
-    102c:      e12fff1c        bx      ip
-    1030:      0200202f        .word   0x0200202f
+00001000 <_start>:
+    1000:      eb000004        bl      1018 <__bar_from_arm>
+    1004:      eb000006        bl      1024 <__bar2_veneer>
+    1008:      eb00000a        bl      1038 <__bar3_veneer>
+    100c:      eb00000b        bl      1040 <__bar4_from_arm>
+    1010:      eb000005        bl      102c <__bar5_from_arm>
+    1014:      00000000        andeq   r0, r0, r0
+
+00001018 <__bar_from_arm>:
+    1018:      e59fc000        ldr     ip, \[pc, #0\]  ; 1020 <__bar_from_arm\+0x8>
+    101c:      e12fff1c        bx      ip
+    1020:      02002021        .word   0x02002021
+00001024 <__bar2_veneer>:
+    1024:      e51ff004        ldr     pc, \[pc, #-4\] ; 1028 <__bar2_veneer\+0x4>
+    1028:      02002024        .word   0x02002024
+0000102c <__bar5_from_arm>:
+    102c:      e59fc000        ldr     ip, \[pc, #0\]  ; 1034 <__bar5_from_arm\+0x8>
+    1030:      e12fff1c        bx      ip
+    1034:      0200202f        .word   0x0200202f
+00001038 <__bar3_veneer>:
+    1038:      e51ff004        ldr     pc, \[pc, #-4\] ; 103c <__bar3_veneer\+0x4>
+    103c:      02002028        .word   0x02002028
+00001040 <__bar4_from_arm>:
+    1040:      e59fc000        ldr     ip, \[pc, #0\]  ; 1048 <__bar4_from_arm\+0x8>
+    1044:      e12fff1c        bx      ip
+    1048:      0200202d        .word   0x0200202d
        ...
-
-00001040 <_start>:
-    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 0af302785872c9d9e84ba6379ebd895ba77d3e0c..c3e775bbd18196aeb91fa7593c2a72fd02529be9 100644 (file)
@@ -3,35 +3,37 @@
 
 Disassembly of section .text:
 
-00001000 <__bar2_veneer>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar2_veneer\+0x4>
-    1004:      02003024        .word   0x02003024
+00001000 <_start>:
+    1000:      eb000000        bl      1008 <__bar_from_arm>
+    1004:      eb000002        bl      1014 <__bar2_veneer>
+
 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 <__bar_from_arm>
-    101c:      ebfffff7        bl      1000 <__bar2_veneer>
+00001014 <__bar2_veneer>:
+    1014:      e51ff004        ldr     pc, \[pc, #-4\] ; 1018 <__bar2_veneer\+0x4>
+    1018:      02003024        .word   0x02003024
+    101c:      00000000        .word   0x00000000
 Disassembly of section .mytext:
 
-00002000 <__bar5_from_arm>:
-    2000:      e59fc000        ldr     ip, \[pc, #0\]  ; 2008 <__bar5_from_arm\+0x8>
-    2004:      e12fff1c        bx      ip
-    2008:      0200302f        .word   0x0200302f
-0000200c <__bar3_veneer>:
-    200c:      e51ff004        ldr     pc, \[pc, #-4\] ; 2010 <__bar3_veneer\+0x4>
-    2010:      02003028        .word   0x02003028
-00002014 <__bar4_from_arm>:
-    2014:      e59fc000        ldr     ip, \[pc, #0\]  ; 201c <__bar4_from_arm\+0x8>
-    2018:      e12fff1c        bx      ip
-    201c:      0200302d        .word   0x0200302d
+00002000 <__bar5_from_arm-0x10>:
+    2000:      eb000005        bl      201c <__bar3_veneer>
+    2004:      eb000006        bl      2024 <__bar4_from_arm>
+    2008:      eb000000        bl      2010 <__bar5_from_arm>
+    200c:      00000000        andeq   r0, r0, r0
+00002010 <__bar5_from_arm>:
+    2010:      e59fc000        ldr     ip, \[pc, #0\]  ; 2018 <__bar5_from_arm\+0x8>
+    2014:      e12fff1c        bx      ip
+    2018:      0200302f        .word   0x0200302f
+0000201c <__bar3_veneer>:
+    201c:      e51ff004        ldr     pc, \[pc, #-4\] ; 2020 <__bar3_veneer\+0x4>
+    2020:      02003028        .word   0x02003028
+00002024 <__bar4_from_arm>:
+    2024:      e59fc000        ldr     ip, \[pc, #0\]  ; 202c <__bar4_from_arm\+0x8>
+    2028:      e12fff1c        bx      ip
+    202c:      0200302d        .word   0x0200302d
        ...
-    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>:
diff --git a/ld/testsuite/ld-arm/farcall-thumb-arm-be.d b/ld/testsuite/ld-arm/farcall-thumb-arm-be.d
deleted file mode 100644 (file)
index d7d2b04..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-.*:     file format .*
-
-Disassembly of section .text:
-
-00001000 <__bar_from_thumb>:
-    1000:      4778            bx      pc
-    1002:      46c0            nop.*
-    1004:      e51ff004        ldr     pc, \[pc, #-4\] ; 1008 <__bar_from_thumb\+0x8>
-    1008:      02001014        .word   0x02001014
-    100c:      00000000        .word   0x00000000
-
-00001010 <_start>:
-    1010:      f7ff fff6       bl      1000 <__bar_from_thumb>
-Disassembly of section .foo:
-
-02001014 <bar>:
- 2001014:      e12fff1e        bx      lr
index 8aeb8052448925382f7265a628abff279938f4df..c7d68e022f560398e5a35f10a6b2d06850f10120 100644 (file)
@@ -2,15 +2,17 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_from_thumb>:
-    1000:      7847            bx      pc
-    1002:      c046            nop.*
-    1004:      04f01fe5        ldr     pc, \[pc, #-4\] ; 1008 <__bar_from_thumb\+0x8>
-    1008:      02001014        .word   0x02001014
-    100c:      00000000        .word   0x00000000
+00001000 <_start>:
+    1000:      00f0 02f8       bl      1008 <__bar_from_thumb>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
 
-00001010 <_start>:
-    1010:      fff7 f6ff       bl      1000 <__bar_from_thumb>
+00001008 <__bar_from_thumb>:
+    1008:      7847            bx      pc
+    100a:      c046            nop.*
+    100c:      04f01fe5        ldr     pc, \[pc, #-4\] ; 1010 <__bar_from_thumb\+0x8>
+    1010:      02001014        .word   0x02001014
+    1014:      00000000        .word   0x00000000
 Disassembly of section .foo:
 
 02001014 <bar>:
index c824c5f0f821fc534534c69f2f852ae0c4aca8a5..b2ec457b32da22321114a86f02b45fcd31450104 100644 (file)
@@ -2,14 +2,16 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_from_thumb>:
-    1000:      e59fc000        ldr     ip, \[pc, #0\]  ; 1008 <__bar_from_thumb\+0x8>
-    1004:      e08ff00c        add     pc, pc, ip
-    1008:      02000008        .word   0x02000008
-    100c:      00000000        .word   0x00000000
+00001000 <_start>:
+    1000:      f000 e802       blx     1008 <__bar_from_thumb>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
 
-00001010 <_start>:
-    1010:      f7ff eff6       blx     1000 <__bar_from_thumb>
+00001008 <__bar_from_thumb>:
+    1008:      e59fc000        ldr     ip, \[pc, #0\]  ; 1010 <__bar_from_thumb\+0x8>
+    100c:      e08ff00c        add     pc, pc, ip
+    1010:      02000000        .word   0x02000000
+    1014:      00000000        .word   0x00000000
 Disassembly of section .foo:
 
 02001014 <bar>:
index 21cf73609896e16dd19de862f4341fc1f0c5870a..9f70091fa06ae89014d1b6f5739d797eca5c0e35 100644 (file)
@@ -2,12 +2,14 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_from_thumb>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar_from_thumb\+0x4>
-    1004:      02001014        .word   0x02001014
+00001000 <_start>:
+    1000:      f000 e802       blx     1008 <__bar_from_thumb>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
 
-00001008 <_start>:
-    1008:      f7ff effa       blx     1000 <__bar_from_thumb>
+00001008 <__bar_from_thumb>:
+    1008:      e51ff004        ldr     pc, \[pc, #-4\] ; 100c <__bar_from_thumb\+0x4>
+    100c:      02001014        .word   0x02001014
 Disassembly of section .foo:
 
 02001014 <bar>:
index 2e7a17a3c11cccaeae021076224811a07e67967d..ed235d3b02a1cc09f0fa0d906f13cf3fd04e7f36 100644 (file)
@@ -2,12 +2,15 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_from_thumb>:
-    1000:      4778            bx      pc
-    1002:      46c0            nop                     \(mov r8, r8\)
-    1004:      ea000402        b       2014 <bar>
-00001008 <_start>:
-    1008:      f7ff fffa       bl      1000 <__bar_from_thumb>
+00001000 <_start>:
+    1000:      f000 f802       bl      1008 <__bar_from_thumb>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
+
+00001008 <__bar_from_thumb>:
+    1008:      4778            bx      pc
+    100a:      46c0            nop                     \(mov r8, r8\)
+    100c:      ea000400        b       2014 <bar>
 Disassembly of section .foo:
 
 00002014 <bar>:
index dc02e25faf55bab8a130378e3a16241b05ada373..25ee1f4fce11f8365f91d0eefb4e9aba7c158a95 100644 (file)
@@ -2,15 +2,17 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_from_thumb>:
-    1000:      4778            bx      pc
-    1002:      46c0            nop                     \(mov r8, r8\)
-    1004:      e51ff004        ldr     pc, \[pc, #-4\] ; 1008 <__bar_from_thumb\+0x8>
-    1008:      02001014        .word   0x02001014
-    100c:      00000000        .word   0x00000000
+00001000 <_start>:
+    1000:      f000 f802       bl      1008 <__bar_from_thumb>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
 
-00001010 <_start>:
-    1010:      f7ff fff6       bl      1000 <__bar_from_thumb>
+00001008 <__bar_from_thumb>:
+    1008:      4778            bx      pc
+    100a:      46c0            nop                     \(mov r8, r8\)
+    100c:      e51ff004        ldr     pc, \[pc, #-4\] ; 1010 <__bar_from_thumb\+0x8>
+    1010:      02001014        .word   0x02001014
+    1014:      00000000        .word   0x00000000
 Disassembly of section .foo:
 
 02001014 <bar>:
index b6e337169fd808ee6a3f2b0e1fdb1982c550c60a..d5bc3b1d44144fa9d2d11d186e95ea2a15d8ed94 100644 (file)
@@ -2,14 +2,16 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_veneer>:
-    1000:      e59fc000        ldr     ip, \[pc, #0\]  ; 1008 <__bar_veneer\+0x8>
-    1004:      e08ff00c        add     pc, pc, ip
-    1008:      02000009        .word   0x02000009
-    100c:      00000000        .word   0x00000000
+00001000 <_start>:
+    1000:      f000 e802       blx     1008 <__bar_veneer>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
 
-00001010 <_start>:
-    1010:      f7ff eff6       blx     1000 <__bar_veneer>
+00001008 <__bar_veneer>:
+    1008:      e59fc000        ldr     ip, \[pc, #0\]  ; 1010 <__bar_veneer\+0x8>
+    100c:      e08ff00c        add     pc, pc, ip
+    1010:      02000001        .word   0x02000001
+    1014:      00000000        .word   0x00000000
 Disassembly of section .foo:
 
 02001014 <bar>:
index f8e9836857d6a0028589d1d68d241d7f103e414e..5e9ac5a0feb877aca851edfaaadddf980d5cff7c 100644 (file)
@@ -2,12 +2,14 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_veneer>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar_veneer\+0x4>
-    1004:      02001015        .word   0x02001015
+00001000 <_start>:
+    1000:      f000 e802       blx     1008 <__bar_veneer>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
 
-00001008 <_start>:
-    1008:      f7ff effa       blx     1000 <__bar_veneer>
+00001008 <__bar_veneer>:
+    1008:      e51ff004        ldr     pc, \[pc, #-4\] ; 100c <__bar_veneer\+0x4>
+    100c:      02001015        .word   0x02001015
 Disassembly of section .foo:
 
 02001014 <bar>:
index c7a0db7d773f962e19b29dc80b66744a9e17d6b2..c98f00a2904e23cc42d6d39f92c2212751949154 100644 (file)
@@ -2,17 +2,19 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_veneer>:
-    1000:      b401            push    {r0}
-    1002:      4802            ldr     r0, \[pc, #8\]  \(100c <__bar_veneer\+0xc>\)
-    1004:      4684            mov     ip, r0
-    1006:      bc01            pop     {r0}
-    1008:      4760            bx      ip
-    100a:      bf00            nop
-    100c:      02001015        .word   0x02001015
+00001000 <_start>:
+    1000:      f000 f802       bl      1008 <__bar_veneer>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
 
-00001010 <_start>:
-    1010:      f7ff fff6       bl      1000 <__bar_veneer>
+00001008 <__bar_veneer>:
+    1008:      b401            push    {r0}
+    100a:      4802            ldr     r0, \[pc, #8\]  \(1014 <__bar_veneer\+0xc>\)
+    100c:      4684            mov     ip, r0
+    100e:      bc01            pop     {r0}
+    1010:      4760            bx      ip
+    1012:      bf00            nop
+    1014:      02001015        .word   0x02001015
 Disassembly of section .foo:
 
 02001014 <bar>:
index c7a0db7d773f962e19b29dc80b66744a9e17d6b2..c98f00a2904e23cc42d6d39f92c2212751949154 100644 (file)
@@ -2,17 +2,19 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_veneer>:
-    1000:      b401            push    {r0}
-    1002:      4802            ldr     r0, \[pc, #8\]  \(100c <__bar_veneer\+0xc>\)
-    1004:      4684            mov     ip, r0
-    1006:      bc01            pop     {r0}
-    1008:      4760            bx      ip
-    100a:      bf00            nop
-    100c:      02001015        .word   0x02001015
+00001000 <_start>:
+    1000:      f000 f802       bl      1008 <__bar_veneer>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
 
-00001010 <_start>:
-    1010:      f7ff fff6       bl      1000 <__bar_veneer>
+00001008 <__bar_veneer>:
+    1008:      b401            push    {r0}
+    100a:      4802            ldr     r0, \[pc, #8\]  \(1014 <__bar_veneer\+0xc>\)
+    100c:      4684            mov     ip, r0
+    100e:      bc01            pop     {r0}
+    1010:      4760            bx      ip
+    1012:      bf00            nop
+    1014:      02001015        .word   0x02001015
 Disassembly of section .foo:
 
 02001014 <bar>:
index 12674f91b100b029cc94c2f8b538d401db441d2a..04eb99149d91dcf976781362ca20a03c8d1bed4b 100644 (file)
@@ -2,12 +2,15 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_veneer>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar_veneer\+0x4>
-    1004:      0100100d        .word   0x0100100d
+00001000 <_start>:
+    1000:      f000 e802       blx     1008 <__bar_veneer>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
+
+00001008 <__bar_veneer>:
+    1008:      e51ff004        ldr     pc, \[pc, #-4\] ; 100c <__bar_veneer\+0x4>
+    100c:      0100100d        .word   0x0100100d
 
-00001008 <_start>:
-    1008:      f7ff effa       blx     1000 <__bar_veneer>
 Disassembly of section .foo:
 
 0100100c <bar>:
index 12674f91b100b029cc94c2f8b538d401db441d2a..89c7a550768d72a9397f63a507963a3352b1b571 100644 (file)
@@ -2,12 +2,14 @@
 
 Disassembly of section .text:
 
-00001000 <__bar_veneer>:
-    1000:      e51ff004        ldr     pc, \[pc, #-4\] ; 1004 <__bar_veneer\+0x4>
-    1004:      0100100d        .word   0x0100100d
+00001000 <_start>:
+    1000:      f000 e802       blx     1008 <__bar_veneer>
+    1004:      0000            lsls    r0, r0, #0
+       \.\.\.
 
-00001008 <_start>:
-    1008:      f7ff effa       blx     1000 <__bar_veneer>
+00001008 <__bar_veneer>:
+    1008:      e51ff004        ldr     pc, \[pc, #-4\] ; 100c <__bar_veneer\+0x4>
+    100c:      0100100d        .word   0x0100100d
 Disassembly of section .foo:
 
 0100100c <bar>: