diff options
author | Alan Modra <amodra@gmail.com> | 2017-09-30 08:20:08 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-09-30 12:01:43 +0930 |
commit | 8b5b25295998e10723bd51d127c87249a779f628 (patch) | |
tree | 34da82fbfc96b10db142db972e19d84c4256bcb7 /binutils/objdump.c | |
parent | 1755697b1df1286cbee20dc487d656025964a7a9 (diff) | |
download | fsf-binutils-gdb-8b5b25295998e10723bd51d127c87249a779f628.zip fsf-binutils-gdb-8b5b25295998e10723bd51d127c87249a779f628.tar.gz fsf-binutils-gdb-8b5b25295998e10723bd51d127c87249a779f628.tar.bz2 |
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.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c index 3c5defa..3b2c7a3 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; |