This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Commit: Add support for v3 binary annotation patches
- From: Christophe Lyon <christophe dot lyon at linaro dot org>
- To: Nick Clifton <nickc at redhat dot com>
- Cc: binutils <binutils at sourceware dot org>
- Date: Wed, 3 Jan 2018 13:04:57 +0100
- Subject: Re: Commit: Add support for v3 binary annotation patches
- Authentication-results: sourceware.org; auth=none
- References: <87tvw3ck3y.fsf@redhat.com>
Hi Nick,
On 3 January 2018 at 11:28, Nick Clifton <nickc@redhat.com> wrote:
> Hi Guys,
>
> I am checking in the attached patch which updates the binutils
> support for version 3 binary annotation notes. (Version 3 adds
> an end address to the ranges covered by the notes, so that it
> is possible to detect gaps in the coverage).
>
> This patch also stops the note merging feature of objcopy from
> executing if the notes have relocations against them. This makes the
> code simpler, and prevents the problems with architectures which have
> unusual relocation management issues.
>
> Tested with lots of different architectures and no regressions.
>
It seems this patch breaks the build on arm targets when configuring
with --enable-64-bit-bfd=no
../../binutils/objcopy.c: In function 'merge_gnu_build_notes':
../../binutils/objcopy.c:2067:4: error: large integer implicitly
truncated to unsigned type [-Werror=overflow]
end = 0x7ffffffffffffffUL;
^
../../binutils/objcopy.c:2086:8: error: large integer implicitly
truncated to unsigned type [-Werror=overflow]
end = 0x7ffffffffffffffUL;
Christophe
> Cheers
> Nick
>
> binutils/ChangeLog
> 2018-01-03 Nick Clifton <nickc@redhat.com>
>
> * objcopy.c (objcopy_internal_note): New structure.
> (gap_exists): New function.
> (is_open_note): New function.
> (is_func_note): New function.
> (is_64bit): New function.
> (merge_gnu_build_notes): Handle v3 notes. Do not merge
> if there are relocations against the notes.
> * readelf.c (get_note_type): Use short names for build attribute
> notes.
> (print_symbol_for_build_attribute): Rename to
> get_symbol_for_build_attribute. Returns the found symbol rather
> than printing it.
> (print_gnu_build_attribute_description): Maintain address ranges
> for function notes as well as global notes. Handle v3 notes.
> (print_gnu_build_attribute_name): Use more space for printing the
> name in wide mode.
> * testsuite/binutils-all/note-2-32.s: Use .dc.l instead of .word.
> Eliminate symbol references in order to remove the need for
> relocations.
> * testsuite/binutils-all/note-2-64.s: Likewise.
> * testsuite/binutils-all/note-3-32.s: Add a size to the note_1
> symbol.
> * testsuite/binutils-all/note-3-64.s: Likewise.
> * testsuite/binutils-all/mips/mips-note-2r-n32.d: Update expected
> output.
> * testsuite/binutils-all/mips/mips-note-2r-n64.d: Likewise.
> * testsuite/binutils-all/mips/mips-note-2r.d: Likewise.
> * testsuite/binutils-all/note-2-32.d: Likewise.
> * testsuite/binutils-all/note-2-64.d: Likewise.
> * testsuite/binutils-all/note-3-32.d: Likewise.
> * testsuite/binutils-all/note-3-64.d: Likewise.
> * testsuite/binutils-all/note-4-64.s: New test. Checks v3 notes.
> * testsuite/binutils-all/note-4-32.s: New test.
> * testsuite/binutils-all/note-4-64.d: New test result file.
> * testsuite/binutils-all/note-4-32.d: New test result file.
>