break;
case next_sym:
- /* FIXME: There is an implicit assumption here
- that the name of sym is different from
- paux->symbol. */
if (! bfd_is_local_label (abfd, sym))
do_print = false;
break;
}
}
- else
+
+ if (!do_print)
{
const char * name = bfd_asymbol_name (sym);
char * alloc = NULL;
--- /dev/null
+#name: objdump --disassemble= of consecutive same-name functions (1)
+#source: multi1.s
+#source: multi2.s
+#ld: -r
+#objdump: --disassemble=func -wz
+# ECOFF disassembly omits local symbols, for whatever reason.
+#xfail: "alpha*-*-*ecoff" "alpha*-*-osf*"
+
+.*: +file format .*
+
+Disassembly of section .*:
+
+0+ <func>:
+[ ]*[0-9a-f]+: [0-9a-f][0-9a-f].*
+#?[ ]*[0-9a-f]+: [0-9a-f][0-9a-f].*
+#?[ ]*[0-9a-f]+: [0-9a-f][0-9a-f].*
+
+# HPPA 32-bit ELF "ld -r" leaves .text unmerged.
+#?Disassembly of section .*:
+
+0+[0-3][0-9a-f] <func>:
+[ ]*[0-9a-f]+: [0-9a-f][0-9a-f].*
+#pass
--- /dev/null
+#name: objdump --disassemble= of consecutive same-name functions (2)
+#source: multi2.s
+#source: multi1.s
+#ld: -r
+#objdump: --disassemble=func2 -wz
+# ECOFF disassembly omits local symbols, for whatever reason.
+#xfail: "alpha*-*-*ecoff" "alpha*-*-osf*"
+
+.*: +file format .*
+
+Disassembly of section .*:
+
+0+ <func2>:
+[ ]*[0-9a-f]+: [0-9a-f][0-9a-f].*
+#?[ ]*[0-9a-f]+: [0-9a-f][0-9a-f].*
+#?[ ]*[0-9a-f]+: [0-9a-f][0-9a-f].*
+
+# HPPA 32-bit ELF "ld -r" leaves .text unmerged.
+#?Disassembly of section .*:
+
+0+[0-3][0-9a-f] <func2>:
+[ ]*[0-9a-f]+: [0-9a-f][0-9a-f].*
+#pass
--- /dev/null
+ .text
+func:
+ .nop
+
+func2:
+ .nop
--- /dev/null
+ .text
+func2:
+ .nop
+
+func:
+ .nop
test_objdump_d $testarchive bintest2.${obj}
}
+# AIX gas doesn't add local symbols to the symbol table.
+# TI C30 and C54x ld emits various "address .. of tmpdir/dump section `...' is
+# not within region `...'" errors, which look bogus for relocatable linking.
+# alpha-vms doesn't support relocatable linking.
+# i?86-msdos ld generates an executable despite being passed -r.
+# Don't chance other than our own ld improperly handling -r.
+if { ![istarget "*-*-aix*"]
+ && ![istarget "*c30-*-*"]
+ && ![istarget "*c54x-*-*"]
+ && ![istarget "alpha-*-*vms*"]
+ && ![istarget "i?86-*-msdos"]
+ && [file normalize "$LD"] == [file normalize "$objdir/../ld/ld-new"]} then {
+ run_dump_test multi-1
+ run_dump_test multi-2
+}
+
# Test objdump --disassemble=<symbol>
proc test_objdump_d_sym { testfile dumpfile } {
global OBJDUMP