summaryrefslogtreecommitdiff
path: root/binutils/objdump.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2017-09-30 08:20:08 +0930
committerAlan Modra <amodra@gmail.com>2017-09-30 12:01:43 +0930
commit8b5b25295998e10723bd51d127c87249a779f628 (patch)
tree34da82fbfc96b10db142db972e19d84c4256bcb7 /binutils/objdump.c
parent1755697b1df1286cbee20dc487d656025964a7a9 (diff)
PR21978, objdump does not display line numbers in certain cases
Same line but different file ought to display file and line. PR 21978 * objdump.c: Formatting. (show_line): Reset prev_line when function name changes.
Diffstat (limited to 'binutils/objdump.c')
-rw-r--r--binutils/objdump.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 3c5defabf7..3b2c7a3878 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -1484,8 +1484,8 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset)
return;
if (! bfd_find_nearest_line_discriminator (abfd, section, syms, addr_offset,
- &filename, &functionname,
- &linenumber, &discriminator))
+ &filename, &functionname,
+ &linenumber, &discriminator))
return;
if (filename != NULL && *filename == '\0')
@@ -1537,16 +1537,22 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset)
if (functionname != NULL
&& (prev_functionname == NULL
|| strcmp (functionname, prev_functionname) != 0))
- printf ("%s():\n", functionname);
- if (linenumber > 0 && (linenumber != prev_line ||
- (discriminator != prev_discriminator)))
- {
- if (discriminator > 0)
- printf ("%s:%u (discriminator %u)\n", filename == NULL ? "???" : filename,
- linenumber, discriminator);
- else
- printf ("%s:%u\n", filename == NULL ? "???" : filename, linenumber);
- }
+ {
+ printf ("%s():\n", functionname);
+ prev_line = -1;
+ }
+ if (linenumber > 0
+ && (linenumber != prev_line
+ || discriminator != prev_discriminator))
+ {
+ if (discriminator > 0)
+ printf ("%s:%u (discriminator %u)\n",
+ filename == NULL ? "???" : filename,
+ linenumber, discriminator);
+ else
+ printf ("%s:%u\n", filename == NULL ? "???" : filename,
+ linenumber);
+ }
if (unwind_inlines)
{
const char *filename2;