[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