[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gold/20765] [2.27 Regression] gold internal error in fix_errata on
From: |
cvs-commit at gcc dot gnu.org |
Subject: |
[Bug gold/20765] [2.27 Regression] gold internal error in fix_errata on aarch64-linux-gnu |
Date: |
Thu, 30 Nov 2017 23:17:42 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=20765
--- Comment #8 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot
gnu.org> ---
The binutils-2_29-branch branch has been updated by Cary Coutant
<address@hidden>:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c2fd86f2bdfa2f565cf6da6530f1bfb65824e2d3
commit c2fd86f2bdfa2f565cf6da6530f1bfb65824e2d3
Author: Cary Coutant <address@hidden>
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 <address@hidden>
Cary Coutant <address@hidden>
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.