https://sourceware.org/bugzilla/show_bug.cgi?id=20765

--- Comment #6 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by Cary Coutant <ccout...@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e0feb133429709603eeeb382c1ebb6edd0a886aa

commit e0feb133429709603eeeb382c1ebb6edd0a886aa
Author: Cary Coutant <ccout...@gmail.com>
Date:   Thu Nov 30 13:44:28 2017 -0800

    Fix problem where erratum stubs are not always applied.

    I checked over the results of applying --fix-cortex-a53-843419 to
    a very large program (gitit) with two stub tables and thousands
    of erratum fixes. I noticed that all the erratum_stubs were being
    created but about 1/3 of them were being skipped over by
    fix_errata_and_relocate_erratum_stubs(). By skipped over I mean
    no branch relocation or adrp -> adr transformation was applied to
    the erratum address, leaving the erratum_stub unreachable, and
    with a branch with a 0 immediate.

    The root cause of the skipped over erratum_stubs is
    Erratum_stub::invalidate_erratum_stub() that is used to set
    relobj_ to NULL when an erratum_stub has been processed.
    Unfortunately relobj_ is used in operator<() so altering relobj
    makes the results from erratum_stubs_.lower_bound() as used in
    find_erratum_stubs_for_input_section() unreliable.

    2017-11-30  Peter Smith  <peter.sm...@linaro.org>
            Cary Coutant  <ccout...@gmail.com>

    gold/
        PR gold/20765
        * aarch64.cc (Erratum_stub::invalidate_erratum_stub): Use erratum_insn_
        instead of relobj_ to invalidate the stub.
        (Erratum_stub::is_invalidated_erratum_stub): Likewise.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to