[gold][aarch64]: Erratum 843419 optimized fix
Han Shen
shenhan@google.com
Thu Jul 16 21:44:00 GMT 2015
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?
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gold-erratum-843419-opt.patch
Type: text/x-patch
Size: 10353 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20150716/c2bb70b4/attachment.bin>
More information about the Binutils
mailing list