diff options
author | Peter Smith <peter.smith@linaro.org> | 2019-09-16 09:38:38 +0000 |
---|---|---|
committer | Peter Smith <peter.smith@linaro.org> | 2019-09-16 09:38:38 +0000 |
commit | ea99ce5e9b49cf7164355009435a29897934182b (patch) | |
tree | b84fd0d099469f04b4cd83bf75a0ad6988d2f943 /lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py | |
parent | ad7a7cea89717daf6b56f35e4bc0b95afe0498a2 (diff) | |
download | bcm5719-llvm-ea99ce5e9b49cf7164355009435a29897934182b.tar.gz bcm5719-llvm-ea99ce5e9b49cf7164355009435a29897934182b.zip |
[ELF][ARM] Implement --fix-cortex-a8 to fix erratum 657417
The --fix-cortex-a8 option implements a linker workaround for the
coretex-a8 erratum 657417. A summary of the erratum conditions is:
- A 32-bit Thumb-2 branch instruction B.w, Bcc.w, BL, BLX spans two
4KiB regions.
- The destination of the branch is to the first 4KiB region.
- The instruction before the branch is a 32-bit Thumb-2 non-branch
instruction.
The linker fix is to redirect the branch to a patch not in the first
4KiB region. The patch forwards the branch on to its target.
The cortex-a8, is an old CPU, with the first implementation of this
workaround in ld.bfd appearing in 2009. The cortex-a8 has been used in
early Android Phones and there are some critical applications that still
need to run on a cortex-a8 that have the erratum. The patch is applied
roughly 10 times on LLD and 20 on Clang when they are built with
--fix-cortex-a8 on an Arm system.
The formal erratum description is avaliable in the ARM Core Cortex-A8
(AT400/AT401) Errata Notice document. This is available from Arm on
request but it seems to be findable via a web search.
Differential Revision: https://reviews.llvm.org/D67284
llvm-svn: 371965
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/breakpoint/TestBreakpointAPI.py')
0 files changed, 0 insertions, 0 deletions