llvm-project/llvm
Peter Smith f15e3d856f [AArch64][ELF] Add support for PLT decoding with BTI instructions present
Arm Architecture v8.5a introduces Branch Target Identification (BTI). When
enabled all indirect branches must target a bti instruction of the
appropriate form. As PLT sequences may sometimes be the target of an
indirect branch and PLT[0] always is, a static linker may need to generate
PLT sequences that contain "bti c" as the first instruction. In effect:
bti     c
adrp    x16, page offset to .got.plt
...
Instead of:
adrp    x16, page offset to .got.plt
...
At present the PLT decoding assumes the adrp will always be the first
instruction. This patch adds support for a single "bti c" to prefix it. A
test binary has been uploaded with such a PLT sequence. A forthcoming LLD
patch will make heavy use of the PLT decoding code.

Differential Revision: https://reviews.llvm.org/D62598

llvm-svn: 362523
2019-06-04 16:35:40 +00:00
..
benchmarks
bindings Fix bad go bindings test. 2019-05-31 03:45:11 +00:00
cmake [HWASAN][CMake] Allow instrumenting LLVM/clang 2019-06-04 09:04:53 +00:00
docs Reapply: IR: add optional type to 'byval' function parameters 2019-05-30 18:48:23 +00:00
examples Add a HowToUseLLJIT example project. 2019-05-22 21:38:41 +00:00
include [SelectionDAG][x86] limit post-legalization store merging by type 2019-06-04 15:15:59 +00:00
lib [AArch64][ELF] Add support for PLT decoding with BTI instructions present 2019-06-04 16:35:40 +00:00
projects
resources
runtimes [CMake] Use libtool for runtimes when building for Apple platform 2019-06-02 02:05:01 +00:00
test [AArch64][ELF] Add support for PLT decoding with BTI instructions present 2019-06-04 16:35:40 +00:00
tools [llvm-symbolizer] Flush output on bad input 2019-06-04 15:34:58 +00:00
unittests Make SwitchInstProfUpdateWrapper safer 2019-06-04 09:03:39 +00:00
utils gn build: Merge r362459 2019-06-04 13:42:45 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Unbreak my hasty "unbreak" cmake fix 2019-06-04 11:33:49 +00:00
CODE_OWNERS.TXT
CREDITS.TXT [test commit] Add my name to the CREDITS.TXT 2019-05-27 07:48:28 +00:00
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.