diff options
author | Nick Clifton <nickc@redhat.com> | 2018-03-23 12:20:03 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2018-03-23 12:20:03 +0000 |
commit | 8fd75781892c7458702f72b3b9cb1927609716de (patch) | |
tree | 369c0f6703cb70a23747787aa20dd1cea653cbc8 | |
parent | f6c4d4b152a985f355cd1552ce01c99a589c936f (diff) | |
download | gdb-8fd75781892c7458702f72b3b9cb1927609716de.zip gdb-8fd75781892c7458702f72b3b9cb1927609716de.tar.gz gdb-8fd75781892c7458702f72b3b9cb1927609716de.tar.bz2 |
Improve readelf's selection of a file start symbol when displaying a gnu build attribute.
* readelf.c (get_symbol_for_build_attribute): Skip ARM mapping
symbols.
(print_gnu_build_attribute_description): If no file start symbol
could be found, look for one two bytes into the file.
* testsuite/binutils-all/note-4-64.s: Set the address of the file
start symbol to two bytes into the file.
* testsuite/binutils-all/note-4-32.s: Likewise.
-rw-r--r-- | binutils/ChangeLog | 10 | ||||
-rw-r--r-- | binutils/readelf.c | 13 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/note-4-32.d | 18 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/note-4-32.s | 4 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/note-4-64.s | 4 |
5 files changed, 36 insertions, 13 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index cb4e3be..eb17a42 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,13 @@ +2018-03-23 Nick Clifton <nickc@redhat.com> + + * readelf.c (get_symbol_for_build_attribute): Skip ARM mapping + symbols. + (print_gnu_build_attribute_description): If no file start symbol + could be found, look for one two bytes into the file. + * testsuite/binutils-all/note-4-64.s: Set the address of the file + start symbol to two bytes into the file. + * testsuite/binutils-all/note-4-32.s: Likewise. + 2018-03-21 H.J. Lu <hongjiu.lu@intel.com> * readelf.c (process_dynamic_section): Also dump DF_1_KMOD, diff --git a/binutils/readelf.c b/binutils/readelf.c index d0bd679..80075c2 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -17502,6 +17502,13 @@ get_symbol_for_build_attribute (Filedata * filedata, if (strtab[sym->st_name] == 0) continue; + /* The AArch64 and ARM architectures define mapping symbols + (eg $d, $x, $t) which we want to ignore. */ + if (strtab[sym->st_name] == '$' + && strtab[sym->st_name + 1] != 0 + && strtab[sym->st_name + 2] == 0) + continue; + if (is_open_attr) { /* For OPEN attributes we prefer GLOBAL over LOCAL symbols @@ -17630,6 +17637,12 @@ print_gnu_build_attribute_description (Elf_Internal_Note * pnote, name = NULL; sym = get_symbol_for_build_attribute (filedata, start, is_open_attr, & name); + /* As of version 5 of the annobin plugin, filename symbols are biased by 2 + in order to avoid them being confused with the start address of the + first function in the file... */ + if (sym == NULL && is_open_attr) + sym = get_symbol_for_build_attribute (filedata, start + 2, is_open_attr, + & name); if (end == 0 && sym != NULL && sym->st_size > 0) end = start + sym->st_size; diff --git a/binutils/testsuite/binutils-all/note-4-32.d b/binutils/testsuite/binutils-all/note-4-32.d index 567af90..6c9e98e 100644 --- a/binutils/testsuite/binutils-all/note-4-32.d +++ b/binutils/testsuite/binutils-all/note-4-32.d @@ -7,13 +7,13 @@ #... Displaying notes found in: .gnu.build.attributes [ ]+Owner[ ]+Data size[ ]+Description -[ ]+GA\$<version>3p3[ ]+0x00000008[ ]+OPEN[ ]+Applies to region from 0x100 to 0x110 \(note_4.s\) -[ ]+GA\$<tool>gcc 7.2.1 20170915[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x100 to 0x110 -[ ]+GA\*GOW:0x700[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x100 to 0x110 -[ ]+GA\*<stack prot>off[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x100 to 0x110 -[ ]+GA\*FORTIFY:0xff[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x100 to 0x110 -[ ]+GA\*<PIC>PIC[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x100 to 0x110 -[ ]+GA\!<short enum>false[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x100 to 0x110 -[ ]+GA\*<ABI>0x[0-9a-f]+[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x100 to 0x110 -[ ]+GA\*<stack prot>strong[ ]+0x00000008[ ]+func[ ]+Applies to region from 0x108 to 0x10c.* +[ ]+GA\$<version>3p3[ ]+0x00000008[ ]+OPEN[ ]+Applies to region from 0x10. to 0x110 \(note_4.s\) +[ ]+GA\$<tool>gcc 7.2.1 20170915[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x10. to 0x110 +[ ]+GA\*GOW:0x700[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x10. to 0x110 +[ ]+GA\*<stack prot>off[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x10. to 0x110 +[ ]+GA\*FORTIFY:0xff[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x10. to 0x110 +[ ]+GA\*<PIC>PIC[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x10. to 0x110 +[ ]+GA\!<short enum>false[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x10. to 0x110 +[ ]+GA\*<ABI>0x[0-9a-f]+[ ]+0x00000000[ ]+OPEN[ ]+Applies to region from 0x10. to 0x110 +[ ]+GA\*<stack prot>strong[ ]+0x00000008[ ]+func[ ]+Applies to region from 0x10. to 0x10c.* #... diff --git a/binutils/testsuite/binutils-all/note-4-32.s b/binutils/testsuite/binutils-all/note-4-32.s index 09c5652..20d9e7b 100644 --- a/binutils/testsuite/binutils-all/note-4-32.s +++ b/binutils/testsuite/binutils-all/note-4-32.s @@ -1,6 +1,6 @@ .text .org 0x100 -note_4.s: + .equiv note_4.s, . + 2 .dc.l 0 .dc.l 0 @@ -18,7 +18,7 @@ note_4.s_end: .dc.l 8 .dc.l 0x100 .asciz "GA$3p3" - .dc.l note_4.s + .dc.l note_4.s - 2 .dc.l note_4.s_end .dc.l 23 diff --git a/binutils/testsuite/binutils-all/note-4-64.s b/binutils/testsuite/binutils-all/note-4-64.s index 4f53298..1901682 100644 --- a/binutils/testsuite/binutils-all/note-4-64.s +++ b/binutils/testsuite/binutils-all/note-4-64.s @@ -1,6 +1,6 @@ .text .org 0x100 -note_4.s: + .equiv note_4.s, . + 2 .dc.l 0 .dc.l 0 .dc.l 0 @@ -22,7 +22,7 @@ note_4.s_end: .dc.l 16 .dc.l 0x100 .asciz "GA$3p3" - .8byte note_4.s + .8byte note_4.s - 2 .8byte note_4.s_end .dc.l 23 |