commit | e318e9101dd4ba971e71e6daf81dd2c1537fd1a7 | [log] [tgz] |
---|---|---|
author | Fangrui Song <i@maskray.me> | Sun Mar 24 14:07:09 2024 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Sun Mar 24 14:13:47 2024 -0700 |
tree | 58095cae20b87c36d8edb929a47012071b4549f4 | |
parent | f2d3e7b6202a91b31290eb1789a85fadbf4d6a81 [diff] |
[ELF] Merge relaIplt into relaDyn `relaIplt` was added so that IRELATIVE relocations are placed at the end of .rela.dyn (since https://reviews.llvm.org/D65651) or .rela.plt (--pack-dyn-relocs=android[+relr]). Unfortunately, handling `relaIplt` requires special cases all over the code base. We can extend partitionRels/computeRels to partition both RELATIVE and IRELATIVE relocations, rendering `relaIplt` unneeded. The change allows IRELATIVE relocations in the DT_ANDROID_REL[A] table (untested?!), which may be processed before other types of relocations. This seems acceptable for Bionic's DEFINE_IFUNC_FOR use cases. In addition, this change simplies changing .rel[a].dyn to a compact relocation format (CREL). SHF_INFO_LINK is removed from .rel[a].dyn with IRELATIVE relocations. (See https://reviews.llvm.org/D89828). GitOrigin-RevId: 18a49f03aa2b6bfeb073648b9eb75277a2386fc4
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.
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
.