Prefer object over notype symbols when disassembling
authorAlan Modra <amodra@gmail.com>
Tue, 17 Dec 2019 08:36:02 +0000 (19:06 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 17 Dec 2019 10:13:00 +0000 (20:43 +1030)
Changing objdump disassembly output like this always requires some
testsuite changes, with the avr and x64_64 changes simply due to
picking up better symbols, the whole point of the patch.

The mips changes are due to mips-sgi-irix changing STT_NOTYPE symbols
to STT_OBJECT, which objdump now chooses in preference to script
symbols.  The problem is that objdump looks at the first symbol in the
section being disassembled, and if object type, just dumps out bytes
rather than disassembling.  This results in new failures:

FAIL: JAL overflow 2
FAIL: undefined weak symbol overflow
FAIL: undefined weak symbol overflow (n32)
FAIL: undefined weak symbol overflow (n64)

So for mips-sgi-irix function symbols really do need to be function
type.  I fixed a few more than just the required minimum to avoid the
above test fails.

binutils/
* objdump.c (compare_section): New static var.
(compare_symbols): Sort by current section only.  Don't access
symbol name out of bounds when checking for file symbols.
Sort section symbols and object symbols.
(find_symbol_for_address): Remove bogus debugging and section
symbol test.
(disassemble_data): Move symbol sort from here..
(disassemble_section): ..to here.  Set compare_section.
ld/
* testsuite/ld-avr/lds-mega.d: Adjust symbols to suit objdump change.
* testsuite/ld-avr/lds-tiny.d: Likewise.
* testsuite/ld-x86-64/load2.d: Likewise.
* testsuite/ld-mips-elf/compact-eh1.s: Give function symbols
function type.
* testsuite/ld-mips-elf/compact-eh1a.s: Likewise.
* testsuite/ld-mips-elf/compact-eh1b.s: Likewise.
* testsuite/ld-mips-elf/compact-eh2.s: Likewise.
* testsuite/ld-mips-elf/compact-eh3.s: Likewise.
* testsuite/ld-mips-elf/compact-eh3a.s: Likewise.
* testsuite/ld-mips-elf/eh-frame5.s: Likewise.
* testsuite/ld-mips-elf/ehdr_start-new.s: Likewise.
* testsuite/ld-mips-elf/ehdr_start-o32.s: Likewise.
* testsuite/ld-mips-elf/emit-relocs-1a.s: Likewise.
* testsuite/ld-mips-elf/jaloverflow-2.s: Likewise.
* testsuite/ld-mips-elf/jaloverflow.s: Likewise.
* testsuite/ld-mips-elf/mips16-call-global-1.s: Likewise.
* testsuite/ld-mips-elf/mips16-intermix-1.s: Likewise.
* testsuite/ld-mips-elf/mips16-pic-1b.s: Likewise.
* testsuite/ld-mips-elf/mips16-pic-4c.s: Likewise.
* testsuite/ld-mips-elf/no-shared-1-n64.s: Likewise.
* testsuite/ld-mips-elf/no-shared-1-o32.s: Likewise.
* testsuite/ld-mips-elf/pic-and-nonpic-1b-micromips.s: Likewise.
* testsuite/ld-mips-elf/pic-and-nonpic-1b.s: Likewise.
* testsuite/ld-mips-elf/pic-and-nonpic-2a.s: Likewise.
* testsuite/ld-mips-elf/pic-and-nonpic-3b.s: Likewise.
* testsuite/ld-mips-elf/pic-and-nonpic-4b.s: Likewise.
* testsuite/ld-mips-elf/pic-and-nonpic-5a.s: Likewise.
* testsuite/ld-mips-elf/pic-and-nonpic-6-n32c.s: Likewise.
* testsuite/ld-mips-elf/pic-and-nonpic-6-n64c.s: Likewise.
* testsuite/ld-mips-elf/pic-and-nonpic-6-o32c.s: Likewise.
* testsuite/ld-mips-elf/pie.s: Likewise.
* testsuite/ld-mips-elf/relax-jalr.s: Likewise.
* testsuite/ld-mips-elf/reloc-1a.s: Likewise.
* testsuite/ld-mips-elf/reloc-2a.s: Likewise.
* testsuite/ld-mips-elf/reloc-4.s: Likewise.
* testsuite/ld-mips-elf/reloc-5.s: Likewise.
* testsuite/ld-mips-elf/reloc-6b.s: Likewise.
* testsuite/ld-mips-elf/textrel-1.s: Likewise.
* testsuite/ld-mips-elf/undefweak-overflow.s: Likewise.
* testsuite/ld-mips-elf/undefweak-overflow.d: Adjust.

43 files changed:
binutils/ChangeLog
binutils/objdump.c
ld/ChangeLog
ld/testsuite/ld-avr/lds-mega.d
ld/testsuite/ld-avr/lds-tiny.d
ld/testsuite/ld-mips-elf/compact-eh1.s
ld/testsuite/ld-mips-elf/compact-eh1a.s
ld/testsuite/ld-mips-elf/compact-eh1b.s
ld/testsuite/ld-mips-elf/compact-eh2.s
ld/testsuite/ld-mips-elf/compact-eh3.s
ld/testsuite/ld-mips-elf/compact-eh3a.s
ld/testsuite/ld-mips-elf/eh-frame5.s
ld/testsuite/ld-mips-elf/ehdr_start-new.s
ld/testsuite/ld-mips-elf/ehdr_start-o32.s
ld/testsuite/ld-mips-elf/emit-relocs-1a.s
ld/testsuite/ld-mips-elf/jaloverflow-2.s
ld/testsuite/ld-mips-elf/jaloverflow.s
ld/testsuite/ld-mips-elf/mips16-call-global-1.s
ld/testsuite/ld-mips-elf/mips16-intermix-1.s
ld/testsuite/ld-mips-elf/mips16-pic-1b.s
ld/testsuite/ld-mips-elf/mips16-pic-4c.s
ld/testsuite/ld-mips-elf/no-shared-1-n64.s
ld/testsuite/ld-mips-elf/no-shared-1-o32.s
ld/testsuite/ld-mips-elf/pic-and-nonpic-1b-micromips.s
ld/testsuite/ld-mips-elf/pic-and-nonpic-1b.s
ld/testsuite/ld-mips-elf/pic-and-nonpic-2a.s
ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.s
ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.s
ld/testsuite/ld-mips-elf/pic-and-nonpic-5a.s
ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32c.s
ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64c.s
ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32c.s
ld/testsuite/ld-mips-elf/pie.s
ld/testsuite/ld-mips-elf/relax-jalr.s
ld/testsuite/ld-mips-elf/reloc-1a.s
ld/testsuite/ld-mips-elf/reloc-2a.s
ld/testsuite/ld-mips-elf/reloc-4.s
ld/testsuite/ld-mips-elf/reloc-5.s
ld/testsuite/ld-mips-elf/reloc-6b.s
ld/testsuite/ld-mips-elf/textrel-1.s
ld/testsuite/ld-mips-elf/undefweak-overflow.d
ld/testsuite/ld-mips-elf/undefweak-overflow.s
ld/testsuite/ld-x86-64/load2.d

index b8ae470f836f86c8fb1c60e8a188984f24a504f3..d6dbbf3cd1b4d57633e464369622578e353b8a52 100644 (file)
@@ -1,3 +1,14 @@
+2019-12-17  Alan Modra  <amodra@gmail.com>
+
+       * objdump.c (compare_section): New static var.
+       (compare_symbols): Sort by current section only.  Don't access
+       symbol name out of bounds when checking for file symbols.
+       Sort section symbols and object symbols.
+       (find_symbol_for_address): Remove bogus debugging and section
+       symbol test.
+       (disassemble_data): Move symbol sort from here..
+       (disassemble_section): ..to here.  Set compare_section.
+
 2019-12-17  Alan Modra  <amodra@gmail.com>
 
        * testsuite/binutils-all/objcopy.exp: Remove tic80 support.
index c10136edc3141ab40079dc58445fcb7c21e6bb08..3cc7aec1873763a783054e2ea98f65323db0d7bd 100644 (file)
@@ -803,6 +803,8 @@ remove_useless_symbols (asymbol **symbols, long count)
   return out_ptr - symbols;
 }
 
+static const asection *compare_section;
+
 /* Sort symbols into value order.  */
 
 static int
@@ -814,8 +816,7 @@ compare_symbols (const void *ap, const void *bp)
   const char *bn;
   size_t anl;
   size_t bnl;
-  bfd_boolean af;
-  bfd_boolean bf;
+  bfd_boolean as, af, bs, bf;
   flagword aflags;
   flagword bflags;
 
@@ -824,10 +825,16 @@ compare_symbols (const void *ap, const void *bp)
   else if (bfd_asymbol_value (a) < bfd_asymbol_value (b))
     return -1;
 
-  if (a->section > b->section)
-    return 1;
-  else if (a->section < b->section)
+  /* Prefer symbols from the section currently being disassembled.
+     Don't sort symbols from other sections by section, since there
+     isn't much reason to prefer one section over another otherwise.
+     See sym_ok comment for why we compare by section name.  */
+  as = strcmp (compare_section->name, a->section->name) == 0;
+  bs = strcmp (compare_section->name, b->section->name) == 0;
+  if (as && !bs)
     return -1;
+  if (!as && bs)
+    return 1;
 
   an = bfd_asymbol_name (a);
   bn = bfd_asymbol_name (b);
@@ -853,7 +860,8 @@ compare_symbols (const void *ap, const void *bp)
 
 #define file_symbol(s, sn, snl)                        \
   (((s)->flags & BSF_FILE) != 0                        \
-   || ((sn)[(snl) - 2] == '.'                  \
+   || ((snl) > 2                               \
+       && (sn)[(snl) - 2] == '.'               \
        && ((sn)[(snl) - 1] == 'o'              \
           || (sn)[(snl) - 1] == 'a')))
 
@@ -865,8 +873,8 @@ compare_symbols (const void *ap, const void *bp)
   if (! af && bf)
     return -1;
 
-  /* Try to sort global symbols before local symbols before function
-     symbols before debugging symbols.  */
+  /* Sort function and object symbols before global symbols before
+     local symbols before section symbols before debugging symbols.  */
 
   aflags = a->flags;
   bflags = b->flags;
@@ -878,6 +886,13 @@ compare_symbols (const void *ap, const void *bp)
       else
        return -1;
     }
+  if ((aflags & BSF_SECTION_SYM) != (bflags & BSF_SECTION_SYM))
+    {
+      if ((aflags & BSF_SECTION_SYM) != 0)
+       return 1;
+      else
+       return -1;
+    }
   if ((aflags & BSF_FUNCTION) != (bflags & BSF_FUNCTION))
     {
       if ((aflags & BSF_FUNCTION) != 0)
@@ -885,6 +900,13 @@ compare_symbols (const void *ap, const void *bp)
       else
        return 1;
     }
+  if ((aflags & BSF_OBJECT) != (bflags & BSF_OBJECT))
+    {
+      if ((aflags & BSF_OBJECT) != 0)
+       return -1;
+      else
+       return 1;
+    }
   if ((aflags & BSF_LOCAL) != (bflags & BSF_LOCAL))
     {
       if ((aflags & BSF_LOCAL) != 0)
@@ -1102,14 +1124,11 @@ find_symbol_for_address (bfd_vma vma,
 
   /* The symbol we want is now in min, the low end of the range we
      were searching.  If there are several symbols with the same
-     value, we want the first (non-section/non-debugging) one.  */
+     value, we want the first one.  */
   thisplace = min;
   while (thisplace > 0
         && (bfd_asymbol_value (sorted_syms[thisplace])
-            == bfd_asymbol_value (sorted_syms[thisplace - 1]))
-        && ((sorted_syms[thisplace - 1]->flags
-             & (BSF_SECTION_SYM | BSF_DEBUGGING)) == 0)
-        )
+            == bfd_asymbol_value (sorted_syms[thisplace - 1])))
     --thisplace;
 
   /* Prefer a symbol in the current section if we have multple symbols
@@ -2389,6 +2408,10 @@ disassemble_section (bfd *abfd, asection *section, void *inf)
   pinfo->buffer_length = datasize;
   pinfo->section = section;
 
+  /* Sort the symbols into value and section order.  */
+  compare_section = section;
+  qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols);
+
   /* Skip over the relocs belonging to addresses below the
      start address.  */
   while (rel_pp < rel_ppend
@@ -2632,9 +2655,6 @@ disassemble_data (bfd *abfd)
       ++sorted_symcount;
     }
 
-  /* Sort the symbols into section and symbol order.  */
-  qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols);
-
   init_disassemble_info (&disasm_info, stdout, (fprintf_ftype) fprintf);
 
   disasm_info.application_data = (void *) &aux;
index 8a38d869b104ecc6f92f42e6e02a7a6e1d307867..417bb151c15b8fdfb61ca810fa85cdbf58c79d7b 100644 (file)
@@ -1,3 +1,47 @@
+2019-12-17  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/ld-avr/lds-mega.d: Adjust symbols to suit objdump change.
+       * testsuite/ld-avr/lds-tiny.d: Likewise.
+       * testsuite/ld-x86-64/load2.d: Likewise.
+       * testsuite/ld-mips-elf/compact-eh1.s: Give function symbols
+       function type.
+       * testsuite/ld-mips-elf/compact-eh1a.s: Likewise.
+       * testsuite/ld-mips-elf/compact-eh1b.s: Likewise.
+       * testsuite/ld-mips-elf/compact-eh2.s: Likewise.
+       * testsuite/ld-mips-elf/compact-eh3.s: Likewise.
+       * testsuite/ld-mips-elf/compact-eh3a.s: Likewise.
+       * testsuite/ld-mips-elf/eh-frame5.s: Likewise.
+       * testsuite/ld-mips-elf/ehdr_start-new.s: Likewise.
+       * testsuite/ld-mips-elf/ehdr_start-o32.s: Likewise.
+       * testsuite/ld-mips-elf/emit-relocs-1a.s: Likewise.
+       * testsuite/ld-mips-elf/jaloverflow-2.s: Likewise.
+       * testsuite/ld-mips-elf/jaloverflow.s: Likewise.
+       * testsuite/ld-mips-elf/mips16-call-global-1.s: Likewise.
+       * testsuite/ld-mips-elf/mips16-intermix-1.s: Likewise.
+       * testsuite/ld-mips-elf/mips16-pic-1b.s: Likewise.
+       * testsuite/ld-mips-elf/mips16-pic-4c.s: Likewise.
+       * testsuite/ld-mips-elf/no-shared-1-n64.s: Likewise.
+       * testsuite/ld-mips-elf/no-shared-1-o32.s: Likewise.
+       * testsuite/ld-mips-elf/pic-and-nonpic-1b-micromips.s: Likewise.
+       * testsuite/ld-mips-elf/pic-and-nonpic-1b.s: Likewise.
+       * testsuite/ld-mips-elf/pic-and-nonpic-2a.s: Likewise.
+       * testsuite/ld-mips-elf/pic-and-nonpic-3b.s: Likewise.
+       * testsuite/ld-mips-elf/pic-and-nonpic-4b.s: Likewise.
+       * testsuite/ld-mips-elf/pic-and-nonpic-5a.s: Likewise.
+       * testsuite/ld-mips-elf/pic-and-nonpic-6-n32c.s: Likewise.
+       * testsuite/ld-mips-elf/pic-and-nonpic-6-n64c.s: Likewise.
+       * testsuite/ld-mips-elf/pic-and-nonpic-6-o32c.s: Likewise.
+       * testsuite/ld-mips-elf/pie.s: Likewise.
+       * testsuite/ld-mips-elf/relax-jalr.s: Likewise.
+       * testsuite/ld-mips-elf/reloc-1a.s: Likewise.
+       * testsuite/ld-mips-elf/reloc-2a.s: Likewise.
+       * testsuite/ld-mips-elf/reloc-4.s: Likewise.
+       * testsuite/ld-mips-elf/reloc-5.s: Likewise.
+       * testsuite/ld-mips-elf/reloc-6b.s: Likewise.
+       * testsuite/ld-mips-elf/textrel-1.s: Likewise.
+       * testsuite/ld-mips-elf/undefweak-overflow.s: Likewise.
+       * testsuite/ld-mips-elf/undefweak-overflow.d: Adjust.
+
 2019-12-17  Alan Modra  <amodra@gmail.com>
 
        * testsuite/ld-elf/pr21233-l.sd: Accept OBJECT for type and
index 078bf73807a553856085f7f56e9a1ecb6129641c..1537b8f7524b77ac72f03ec3bed42880eb08d7b4 100644 (file)
@@ -11,7 +11,7 @@
 Disassembly of section .text:
 
 00000000 <main>:
-   0:  80 91 00 01     lds     r24, 0x0100     ; 0x800100 <_edata>
+   0:  80 91 00 01     lds     r24, 0x0100     ; 0x800100 <myvar1>
    4:  08 2e           mov     r0, r24
    6:  00 0c           add     r0, r0
    8:  99 0b           sbc     r25, r25
index 405546ad0a76b3593290101cdf77b183da72108d..957606f89f82089eba0234052fb62a029bdf2273 100644 (file)
@@ -11,7 +11,7 @@
 Disassembly of section .text:
 
 00000000 <main>:
-   0:  20 a1           lds     r18, 0x40       ; 0x800040 <_edata>
+   0:  20 a1           lds     r18, 0x40       ; 0x800040 <myvar1>
    2:  42 a1           lds     r20, 0x42       ; 0x800042 <myvar2\+0x1>
    4:  53 a1           lds     r21, 0x43       ; 0x800043 <_end>
    6:  08 95           ret
index 941ac8f447dcda561bc7c09eb99af7330f8cf788..81c3008674e457bd5638da7afce4f871301c8056 100644 (file)
@@ -6,6 +6,7 @@
        .cfi_personality_id 0x2
        .cfi_lsda 0x1b,.LLSDA3
        .global main
+       .type   main, @function
 main:
 .LEHB0 = .
        jal     compact1a
index 3f5c7ec08607921ad4e52242c9d13755c6fdc1fd..3b12bfec0072ee145165532cd08196072fb98841 100644 (file)
@@ -1,6 +1,7 @@
        .cfi_sections .eh_frame_entry
        .section .text.compact1a,"ax",@progbits
-       .globl compact1a
+       .globl  compact1a
+       .type   compact1a, @function
        .cfi_startproc
 compact1a:
        sw      $2,16($fp)
index e96289a81e9ef218a472a33648ad576dad01b5cd..1aabe5f906abe7fadccb6215e324cd59c985b587 100644 (file)
@@ -1,6 +1,7 @@
        .cfi_sections .eh_frame_entry
        .section        .text.compact1b,"ax",@progbits
        .globl  compact1b
+       .type   compact1b, @function
        .cfi_startproc
 compact1b:
        lw      $31,44($sp)
index b899e563c3473ba99439f633abe712c998563359..234297b7be5608e77090fb241edb68ed35c5f385 100644 (file)
@@ -6,6 +6,7 @@
        .cfi_personality_id 0x2
        .cfi_lsda 0x1b,.LLSDA3
        .global main
+       .type   main, @function
 main:
 .LEHB0 = .
        move    $4,$2
index 2bcf5ca6c30eb388f807052d325aa061642a745a..9ee7558dc9605eb74ea6bbc071ea58d8e2060e88 100644 (file)
@@ -6,6 +6,7 @@
        .cfi_personality_id 0x2
        .cfi_lsda 0x1b,.LLSDA3
        .global main
+       .type   main, @function
 main:
 .LEHB0 = .
        move    $4,$2
index 3780cf23e3762ab416e97e4be2d2b9a3c66e0abd..a1276ab575df6aab678058ef336e1c9e10fb510f 100644 (file)
@@ -1,6 +1,7 @@
        .cfi_sections .eh_frame_entry
        .section        .text.compact3a,"ax",@progbits
        .globl  compact3a
+       .type   compact3a, @function
        .cfi_startproc
 compact3a:
        lw      $31,44($sp)
index 741a021685dbb822583a7263d4545f201a8bb4df..cf5a11c37aba81dee47ec2774760ed014e452a55 100644 (file)
@@ -2,6 +2,7 @@
        .cfi_personality 0x0,local_pers
        .cfi_lsda 0x0,LSDA
        .ent    f1
+       .type   f1, @function
 f1:
        nop
        .end    f1
@@ -11,6 +12,7 @@ f1:
        .cfi_personality 0x0,hidden_pers
        .cfi_lsda 0x0,LSDA
        .ent    f2
+       .type   f2, @function
 f2:
        nop
        .end    f2
@@ -20,6 +22,7 @@ f2:
        .cfi_personality 0x0,global_pers
        .cfi_lsda 0x0,LSDA
        .ent    f3
+       .type   f3, @function
 f3:
        nop
        .end    f3
@@ -29,6 +32,7 @@ f3:
        .cfi_personality 0x0,extern_pers
        .cfi_lsda 0x0,LSDA
        .ent    f4
+       .type   f4, @function
 f4:
        nop
        .end    f4
@@ -38,6 +42,7 @@ f4:
        .cfi_personality 0x80,local_indirect_ptr
        .cfi_lsda 0x0,LSDA
        .ent    f5
+       .type   f5, @function
 f5:
        nop
        .end    f5
@@ -47,6 +52,7 @@ f5:
        .cfi_personality 0x80,hidden_indirect_ptr
        .cfi_lsda 0x0,LSDA
        .ent    f6
+       .type   f6, @function
 f6:
        nop
        .end    f6
@@ -56,6 +62,7 @@ f6:
        .cfi_personality 0x80,global_indirect_ptr
        .cfi_lsda 0x0,LSDA
        .ent    f7
+       .type   f7, @function
 f7:
        nop
        .end    f7
@@ -65,6 +72,7 @@ f7:
        .cfi_personality 0x80,extern_indirect_ptr
        .cfi_lsda 0x0,LSDA
        .ent    f8
+       .type   f8, @function
 f8:
        nop
        .end    f8
@@ -72,6 +80,7 @@ f8:
 
 
        .ent    local_pers
+       .type   local_pers, @function
 local_pers:
        nop
        .end    local_pers
@@ -79,12 +88,14 @@ local_pers:
        .globl  hidden_pers
        .hidden hidden_pers
        .ent    hidden_pers
+       .type   hidden_pers, @function
 hidden_pers:
        nop
        .end    hidden_pers
 
        .globl  global_pers
        .ent    global_pers
+       .type   global_pers, @function
 global_pers:
        nop
        .end    global_pers
index 5ee00dc4addb5732d676bb4125380fc3bb866f9a..ccf20db024a98cd0fb6e235258d31f922a14b662 100644 (file)
@@ -2,6 +2,7 @@
        .text
        .weak   __ehdr_start
        .globl  __start
+       .type   __start, @function
        .ent    __start
        .frame  $29, 0, $31
        .mask   0x00000000, 0
index 09734473fa39989ad95fc12353cd067140bf94a1..60a5854b9b8f10b92daea188466e9a83f7812052 100644 (file)
@@ -2,6 +2,7 @@
        .text
        .weak   __ehdr_start
        .globl  __start
+       .type   __start, @function
        .ent    __start
        .frame  $29, 0, $31
        .mask   0x00000000, 0
index 35c3a6f84d907def7abb5cf3c456c91daaa04a45..c8fd7d6151eae2ccc17194b44726f977b25b3151 100644 (file)
@@ -1,6 +1,7 @@
        .text
        .align  4
        .globl  _start
+       .type   _start, @function
 _start:
        jr      $31
 
index 71acf296ea5ea16da850c0818159d3034b67d5a6..48ede45a483492d0f641f00c128038997a612311 100644 (file)
@@ -2,6 +2,7 @@
 # overflowing
 
        .globl  start
+       .type   start, @function
        .weak   foo
 start:
        jal     foo
index 4dd98b80f89dc2b201c96f3139721e6a5ca5cf19..e6de2e08c3272fb379c0e73f7577bcfbcf4d85ef 100644 (file)
@@ -1,6 +1,7 @@
 # This file gets linked to start at 0xffffff0, so the call is an overflow.
        .text
        .global start
+       .type   start, @function
        .set    noreorder
 start:
        nop
index 4c6d0a43aae4ab74d4162c76be1400dc16f8b3c8..485e77c31ef80999610080a555b95e8496655d13 100644 (file)
@@ -1,6 +1,7 @@
        .set    mips16
 
        .globl  __start
+       .type   __start, @function
        .ent    __start
        .align  4
 __start:
index c596619c9493e8b77e4db1faa7d861fb2d752ca2..56527ea217b726a81e4878b7ef2d2e0783b41e76 100644 (file)
@@ -1,6 +1,7 @@
        .text
        .align  2
        .globl  __start
+       .type   __start, @function
        .set    nomips16
        .ent    __start
 __start:
index 9a17072f2e4632120a2a156443a96434c2b607be..1fc03c40eb714f563ff144cfffc3aac4f88b4594 100644 (file)
@@ -12,6 +12,7 @@
        callpic used21,mips16
 
        .globl  __start
+       .type   __start, @function
        .ent    __start
        .set    nomips16
 __start:
index 338d378d75693c165a1ac4e288143052e3bb2af1..985a7f150d574dbd36f689041923569e452c6581 100644 (file)
@@ -7,6 +7,7 @@
 
        .section .mips16.call.f2, "ax", @progbits
        .ent    __call
+       .type   __call, @function
 __call:
        la      $25,f2
        jr      $25
@@ -18,6 +19,7 @@ __call:
 
        .section .mips16.call.fp.f3, "ax", @progbits
        .ent    __call_fp
+       .type   __call_fp, @function
 __call_fp:
        la      $25,f3
        jr      $25
index 8eedf12157b7c2ec9dc3a4364ca33d385587179b..c63b8c879c40eb1c2de01366860000ac2baf1058 100644 (file)
@@ -1,6 +1,7 @@
        .abicalls
        .text
        .globl  __start
+       .type   __start, @function
        .ent    __start
 __start:
        lui     $2,%hi(__gnu_local_gp)
index f00fc4ba91542a81dc0faba77c9e32164c2679fe..80be39bf36a9eb6612d5e996bcfb1390e0c4f2b9 100644 (file)
@@ -1,6 +1,7 @@
        .abicalls
        .text
        .globl  __start
+       .type   __start, @function
        .ent    __start
 __start:
        lui     $2,%hi(__gnu_local_gp)
index 1eff3093c8b039c16408026ccb28eb5c818e419e..abd015689123912f973af9af6cb78eec5babc26f 100644 (file)
@@ -1,6 +1,7 @@
        .abicalls
        .option pic0
        .global __start
+       .type   __start, @function
        .set    micromips
        .ent    __start
 __start:
index 5739fef104df32dfb9afbb1cf4315f4685955150..2615f24a2242894279f45904d462488e013fb052 100644 (file)
@@ -1,6 +1,7 @@
        .abicalls
        .option pic0
        .global __start
+       .type   __start, @function
        .ent    __start
 __start:
        jal     f1
index 45a490f945a81fd06545bf0dd98df773da328668..f360b0eb2df9f5dc240862243f0f6e4c552cff62 100644 (file)
@@ -1,6 +1,7 @@
        .abicalls
        .option pic0
        .global __start
+       .type   __start, @function
        .ent    __start
 __start:
        jal     foo
index 571c774cdf7d578f2f2e08b8e512a122bfe14b0f..2a9ad89dee62783e22ee3248fa172bdebf6d2cc4 100644 (file)
@@ -1,6 +1,7 @@
        .abicalls
        .option pic0
        .global __start
+       .type   __start, @function
        .ent    __start
 __start:
        jal     foo
@@ -8,6 +9,7 @@ __start:
        .end    __start
 
        .global ext
+       .type   ext, @function
        .ent    ext
 ext:
        lui     $gp,%hi(__gnu_local_gp)
index 7e25bf48bf4a569ce957af1508c622de2592bf4f..863a01b02cc7b73f01ef90c32503b37c4d601f74 100644 (file)
@@ -1,6 +1,7 @@
        .abicalls
        .option pic0
        .global __start
+       .type   __start, @function
        .ent    __start
 __start:
        lui     $2,%hi(obj1)
index 7452f5e8e3ae838999337f55994655ae2ed9645c..e85655fbe1a6b005da0763fd5d064323ba582fc8 100644 (file)
@@ -1,6 +1,7 @@
        .abicalls
        .option pic0
        .global __start
+       .type   __start, @function
        .ent    __start
 __start:
        lui     $2,%hi(foo)
index 578626a18caff6369a26edde4e091b0dfda97acc..3d5660c2ade64af2e1ad98de96ee76de6d967dfe 100644 (file)
@@ -2,6 +2,7 @@
        .option pic0
        .set    noreorder
        .global __start
+       .type   __start, @function
        .ent    __start
 __start:
        jal     f1
index 578626a18caff6369a26edde4e091b0dfda97acc..3d5660c2ade64af2e1ad98de96ee76de6d967dfe 100644 (file)
@@ -2,6 +2,7 @@
        .option pic0
        .set    noreorder
        .global __start
+       .type   __start, @function
        .ent    __start
 __start:
        jal     f1
index 578626a18caff6369a26edde4e091b0dfda97acc..3d5660c2ade64af2e1ad98de96ee76de6d967dfe 100644 (file)
@@ -2,6 +2,7 @@
        .option pic0
        .set    noreorder
        .global __start
+       .type   __start, @function
        .ent    __start
 __start:
        jal     f1
index c7f2b206b9f7d1a9849aba59d6db938e8d6d63bd..442de015006b57dfbaf333601609e13b689edb96 100644 (file)
@@ -1,5 +1,6 @@
        .abicalls
        .global __start
+       .type   __start, @function
        .ent    __start
 __start:
        jr $31
index ba7ea1a04ddd2fe4a9bb5237ea7d4702f55565f4..b8478faef027273e6a96e976232e0e6df30e1dc7 100644 (file)
@@ -1,6 +1,7 @@
-.globl __start
+ .globl __start
+ .type __start, @function
        .space 8
-.ent __start
+ .ent __start
 __start:
 .Lstart:
        .space 16
@@ -9,7 +10,7 @@ __start:
         jal __start
        .space 64
        jal .Lstart
-.end __start
+ .end __start
 
 # make objdump print ...
        .space 8
index 5fcd4bb18c5e5da2f503194126a5de5fe8e6aa3b..2d1c9f1f52abc7dffafaa4e0bc4430512a2aae6a 100644 (file)
@@ -1,4 +1,5 @@
        .globl  _start
+       .type   _start, @function
        .globl  sdg
        .set    noreorder
        .ent    tstarta
index 0ea830a9dae1ab4df5fd7f74f3d0bca86e3fc34f..570b7248233dd0d6e91e77b617271bc09c192a80 100644 (file)
@@ -1,4 +1,5 @@
        .globl  _start
+       .type   _start, @function
        .globl  sdg
        .set    noreorder
        .ent    tstarta
index 061fa80715237091540feb79198338564357b306..d379e059630103d698e8d1f0f14bc7358d8fb1dd 100644 (file)
@@ -1,5 +1,6 @@
        .text
        .globl  _start
+       .type   _start, @function
 _start:
         li.d    $f2,1.10000000000000000000e0
 
index a4b31b7fa037bf9db86abdc33b2b0486fc97a30f..25c722a549ef01c2db577e2005e80d8948af7a56 100644 (file)
@@ -1,5 +1,6 @@
        .text
        .globl  _start
+       .type   _start, @function
 _start:
         lw     $2, %gp_rel(i)($28)
 
index ae4e9bcf8a9dc05abfd3313b3b0854252706d83b..e75060e1510ed0461ec21dca64287c55a4a88ea7 100644 (file)
@@ -1,4 +1,5 @@
        .globl  __start .text
+       .type   __start, @function
        .globl  gs .text
 __start:
 gs:
index f6b4a6a70dfe3d9434e3164af8b8a6a00f23bf1d..43143f7c934e0e8a8cf06987930401b7c836a0f0 100644 (file)
@@ -1,4 +1,5 @@
         .globl foo
+       .type foo, @function
 foo:
         .cfi_startproc
         nop
index bbed9970dffe39d1469d18f5681328c1a4dda86f..72fcc65cb70dfb4480c1286e3fd4c3c138405b02 100644 (file)
@@ -3,38 +3,38 @@
 #ld: -Ttext=0x20000000 -e start
 #objdump: -dr --show-raw-insn
 #...
-[0-9a-f]+ <_ftext>:
-[ 0-9a-f]+:    d85fffff        beqzc   v0,20000000 <_ftext>
+[0-9a-f]+ <start>:
+[ 0-9a-f]+:    d85fffff        beqzc   v0,20000000 <start>
 [ 0-9a-f]+:    00000000        nop
-[ 0-9a-f]+:    f85ffffd        bnezc   v0,20000000 <_ftext>
-[ 0-9a-f]+:    ec4ffffd        lwpc    v0,20000000 <_ftext>
-[ 0-9a-f]+:    ec5bfffe        ldpc    v0,20000000 <_ftext>
-[ 0-9a-f]+:    cbfffffa        bc      20000000 <_ftext>
-[ 0-9a-f]+:    1000fff9        b       20000000 <_ftext>
+[ 0-9a-f]+:    f85ffffd        bnezc   v0,20000000 <start>
+[ 0-9a-f]+:    ec4ffffd        lwpc    v0,20000000 <start>
+[ 0-9a-f]+:    ec5bfffe        ldpc    v0,20000000 <start>
+[ 0-9a-f]+:    cbfffffa        bc      20000000 <start>
+[ 0-9a-f]+:    1000fff9        b       20000000 <start>
 [ 0-9a-f]+:    00000000        nop
-[ 0-9a-f]+:    0411fff7        bal     20000000 <_ftext>
+[ 0-9a-f]+:    0411fff7        bal     20000000 <start>
 [ 0-9a-f]+:    3c......        lui     a0,0x....
-[ 0-9a-f]+:    0c000000        jal     20000000 <_ftext>
+[ 0-9a-f]+:    0c000000        jal     20000000 <start>
 [ 0-9a-f]+:    00000000        nop
-[ 0-9a-f]+:    08000000        j       20000000 <_ftext>
+[ 0-9a-f]+:    08000000        j       20000000 <start>
 [ 0-9a-f]+:    00000000        nop
 
 [0-9a-f]+ <micro>:
-[ 0-9a-f]+:    8e63            beqz    a0,20000000 <_ftext>
+[ 0-9a-f]+:    8e63            beqz    a0,20000000 <start>
 [ 0-9a-f]+:    0c00            nop
-[ 0-9a-f]+:    cfe1            b       20000000 <_ftext>
+[ 0-9a-f]+:    cfe1            b       20000000 <start>
 [ 0-9a-f]+:    0c00            nop
-[ 0-9a-f]+:    9400 ffde       b       20000000 <_ftext>
+[ 0-9a-f]+:    9400 ffde       b       20000000 <start>
 [ 0-9a-f]+:    0c00            nop
-[ 0-9a-f]+:    4060 ffdb       bal     20000000 <_ftext>
+[ 0-9a-f]+:    4060 ffdb       bal     20000000 <start>
 [ 0-9a-f]+:    0000 0000       nop
-[ 0-9a-f]+:    f400 0000       jal     20000000 <_ftext>
+[ 0-9a-f]+:    f400 0000       jal     20000000 <start>
 [ 0-9a-f]+:    0000 0000       nop
-[ 0-9a-f]+:    d400 0000       j       20000000 <_ftext>
+[ 0-9a-f]+:    d400 0000       j       20000000 <start>
 [ 0-9a-f]+:    0c00            nop
 
 [0-9a-f]+ <mips16>:
-[ 0-9a-f]+:    f7df 1010       b       20000000 <_ftext>
-[ 0-9a-f]+:    1800 0000       jal     20000000 <_ftext>
+[ 0-9a-f]+:    f7df 1010       b       20000000 <start>
+[ 0-9a-f]+:    1800 0000       jal     20000000 <start>
 [ 0-9a-f]+:    6500            nop
 #pass
index d439d7c7c734de4ba5251d153e6e939154a32406..a8370ac6a5730adf7fc3e621fa9081951139f0f8 100644 (file)
@@ -3,6 +3,7 @@
 
        .module mips64r6
        .globl  start
+       .type   start, @function
        .weak   foo
 start:
        .set noreorder
index f76ba9d55f27945b82eb4cdd1300d248b5386a4b..0ae721c816739c8fa1c1e57bf42ff34e1a7c8603 100644 (file)
@@ -14,5 +14,5 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    -0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <foo>
 [      ]*[a-f0-9]+:    4c 8d 1d ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%r11        # [a-f0-9]+ <bar>
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__start_my_section>
-[      ]*[a-f0-9]+:    4c 8d 1d ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%r11        # [a-f0-9]+ <__stop_my_section>
+[      ]*[a-f0-9]+:    4c 8d 1d ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%r11        # [a-f0-9]+ <(__stop_my_section|pad)>
 #pass