diff options
author | Nick Clifton <nickc@redhat.com> | 2018-07-06 13:52:59 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2018-07-06 13:52:59 +0100 |
commit | d20e98ab59ea49d3f90bf05ac7b16c0d3588ce41 (patch) | |
tree | 3c3d366162599ad1b96b6f7a8013392794097d31 /binutils | |
parent | 2e48456f0236d39b6de98feb7168f56cef155912 (diff) | |
download | binutils-d20e98ab59ea49d3f90bf05ac7b16c0d3588ce41.zip binutils-d20e98ab59ea49d3f90bf05ac7b16c0d3588ce41.tar.gz binutils-d20e98ab59ea49d3f90bf05ac7b16c0d3588ce41.tar.bz2 |
Stop readelf from reporting gaps in the gnu build notes if the gap crosses a section boundary.
* readelf.c (same_section): New function.
(print_gnu_build_attribute_description): Do not complain about
gaps that cross a section boundary.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 6 | ||||
-rw-r--r-- | binutils/readelf.c | 24 |
2 files changed, 28 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 8b37aae..a9e0d68 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2018-07-06 Nick Clifton <nickc@redhat.com> + + * readelf.c (same_section): New function. + (print_gnu_build_attribute_description): Do not complain about + gaps that cross a section boundary. + 2018-07-05 Nick Clifton <nickc@redhat.com> * po/bg.po: Updated Bulgarian translation. diff --git a/binutils/readelf.c b/binutils/readelf.c index 1b50ba7..88fb356 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -17705,6 +17705,20 @@ get_symbol_for_build_attribute (Filedata * filedata, return saved_sym; } +/* Returns true iff addr1 and addr2 are in the same section. */ + +static bfd_boolean +same_section (Filedata * filedata, unsigned long addr1, unsigned long addr2) +{ + Elf_Internal_Shdr * a1; + Elf_Internal_Shdr * a2; + + a1 = find_section_by_address (filedata, addr1); + a2 = find_section_by_address (filedata, addr2); + + return a1 == a2 && a1 != NULL; +} + static bfd_boolean print_gnu_build_attribute_description (Elf_Internal_Note * pnote, Filedata * filedata) @@ -17786,8 +17800,14 @@ print_gnu_build_attribute_description (Elf_Internal_Note * pnote, if (is_open_attr) { - /* FIXME: Need to properly allow for section alignment. 16 is just the alignment used on x86_64. */ - if (global_end > 0 && start > BFD_ALIGN (global_end, 16)) + /* FIXME: Need to properly allow for section alignment. + 16 is just the alignment used on x86_64. */ + if (global_end > 0 + && start > BFD_ALIGN (global_end, 16) + /* Build notes are not guaranteed to be organised in order of + increasing address, but we should find the all of the notes + for one section in the same place. */ + && same_section (filedata, start, global_end)) warn (_("Gap in build notes detected from %#lx to %#lx\n"), global_end + 1, start - 1); |