llvm-project/lld
Stefan Pintilie beb52b12cb [PowerPC] Support PCRelative Callees for R_PPC64_REL24 Relocation
The R_PPC64_REL24 is used in function calls when the caller requires a
valid TOC pointer. If the callee shares the same TOC or does not clobber
the TOC pointer then a direct call can be made. If the callee does not
share the TOC a thunk must be added to save the TOC pointer for the caller.

Up until PC Relative was introduced all local calls on medium and large code
models were assumed to share a TOC. This is no longer the case because
if the caller requires a TOC and the callee is PC Relative then the callee
can clobber the TOC even if it is in the same DSO.

This patch is to add support for a TOC caller calling a PC Relative callee that
clobbers the TOC.

Reviewed By: sfertile, MaskRay

Differential Revision: https://reviews.llvm.org/D82950
2020-07-09 09:50:19 -05:00
..
COFF [PDB] Defer public serialization until PDB writing 2020-06-30 11:28:04 -07:00
Common [LLD][ELF][Windows] Allow LLD to overwrite existing output files that are in use 2020-07-03 13:08:56 +01:00
ELF [PowerPC] Support PCRelative Callees for R_PPC64_REL24 Relocation 2020-07-09 09:50:19 -05:00
MachO [lld-macho] Support binding dysyms to any section 2020-07-02 21:21:01 -07:00
MinGW [LLD/MinGW]: Expose --thinlto-cache-dir 2020-05-24 12:30:56 +03:00
cmake/modules lld: Let find_package(LLD) work 2020-05-14 09:59:53 -04:00
docs [ELF] Add -z dead-reloc-in-nonalloc=<section_glob>=<value> 2020-07-08 10:15:16 -07:00
include/lld [lld] As part of using inclusive language within the llvm 2020-06-19 21:50:14 -07:00
lib ld64.lld: Make janky support for tbd files actually work sometimes 2020-07-02 15:31:21 -04:00
test [PowerPC] Support PCRelative Callees for R_PPC64_REL24 Relocation 2020-07-09 09:50:19 -05:00
tools/lld Reland D78837 [lld] Remove special cases from default ld driver mode. 2020-04-29 14:45:44 -07:00
unittests Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
utils Python 2/3 compatibility 2019-03-20 07:42:13 +00:00
wasm [WebAssembly] 64-bit memory limits 2020-07-06 12:40:45 -07:00
.clang-format
.clang-tidy [lld] Add .clang-tidy to customize readability-identifier-naming.{Member,Parameter,Variable}Case => camelBack 2020-03-09 08:26:41 -07:00
.gitignore
CMakeLists.txt lld: Let find_package(LLD) work 2020-05-14 09:59:53 -04:00
CODE_OWNERS.TXT
LICENSE.TXT Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
README.md

README.md

LLVM Linker (lld)

This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.

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

Benchmarking

In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.

It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz

The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.