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.
This commit is contained in:
Nick Clifton 2018-03-23 12:20:03 +00:00
parent f6c4d4b152
commit 8fd7578189
5 changed files with 36 additions and 13 deletions

View File

@ -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,

View File

@ -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;

View File

@ -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.*
#...

View File

@ -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

View File

@ -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