This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [gold][aarch64]: Erratum 843419 optimized fix
- From: Andrew Pinski <pinskia at gmail dot com>
- To: Han Shen <shenhan at google dot com>
- Cc: binutils <binutils at sourceware dot org>, Cary Coutant <ccoutant at gmail dot com>, Luis Lozano <llozano at google dot com>
- Date: Fri, 15 Jul 2016 22:42:57 -0700
- Subject: Re: [gold][aarch64]: Erratum 843419 optimized fix
- Authentication-results: sourceware.org; auth=none
- References: <CACkGtriWCQ=g-0WGY0wuLUp6PZ+sgpFcJz2cEbtSE5RCkdXTmA@mail.gmail.com>
On Thu, Jul 16, 2015 at 2:44 PM, Han Shen <shenhan@google.com> wrote:
> Hi Cary, this is the patch for erratum 843419 fix optimization.
>
> Usually we apply branch-to-stub fix for all erratum. For 843419, under some
> condition, instead of generating jumps, we re-write 'adrp' with 'adr' (only
> applicable if adrp calculation result fits in adr range), thus break such
> erratum sequence and eliminate performance penalty (2-jump/fix).
>
> Test - build on x86_64 platform and aarch64 platform using opt and debug (-O0).
> Pass unit tests. Pass gold local test suite. Pass tests from arm.
>
> Ok for trunk?
Hi,
I am getting an internal error some of the time when linking HHVM :
Erratum 843419 found and fixed at
"../runtime/libhphp_runtime.a(bytecode.cpp.o)", section 10882, offset
0x0000022c.
Erratum 843419 found and fixed at
"../runtime/libhphp_runtime.a(unique-stubs.cpp.o)", section 7040,
offset 0x00000218.
Erratum 843419 found and fixed at
"../runtime/libhphp_runtime.a(bytecode.cpp.o)", section 10882, offset
0x0000022c.
Erratum 843419 found and fixed at
"../runtime/libhphp_runtime.a(unique-stubs.cpp.o)", section 7040,
offset 0x00000218.
/usr/bin/ld.gold: internal error in try_fix_erratum_843419_optimized,
at ../../gold/aarch64.cc:2007
collect2: error: ld returned 1 exit status
Is there anything which you need to debug this issue?
Thanks,
Andrew
>
> gold/ChangeLog
>
> 2015-07-15 Han Shen <shenhan@google.com>
>
> Optimize erratum 843419 fix.
>
> gold/ChangeLog: * aarch64.cc (AArch64_insn_utilities::is_adr): New
> method. (AArch64_insn_utilities::aarch64_adr_encode_imm): New method.
> (AArch64_insn_utilities::aarch64_adrp_decode_imm): New method.
> (E843419_stub): New sub-class of Erratum_stub.
> (AArch64_relobj::try_fix_erratum_843419_optimized): New method.
> (AArch64_relobj::section_needs_reloc_stub_scanning): Try optimized fix.
> (AArch64_relobj::create_erratum_stub): Add 1 argument.
> (Target_aarch64::scan_erratum_843419_span): Pass in adrp insn offset.
>
> --
> Han Shen