commit | b5e2fcfbc071c0fb511b4704e461b79c3f39ae42 | [log] [tgz] |
---|---|---|
author | Fangrui Song <i@maskray.me> | Tue Dec 12 10:14:36 2023 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Dec 12 10:15:57 2023 -0800 |
tree | 0c1cc1dd4f462a65408394355ab654eb3f366fee | |
parent | ab66ac20552a59ca9b8773fde8e93f868c06b276 [diff] |
[ELF] Don't create copy relocation/canonical PLT entry for a defined symbol (#75095) Copy relocations and canonical PLT entries are for symbols defined in a DSO. Currently we create them even for a `Defined`, possibly leading to an output that won't work at run-time (e.g. R_X86_64_JUMP_SLOT referencing a null symbol). ``` % cat a.s .globl _start, main .type main, @function _start: main: ret .rodata .quad main % clang -fuse-ld=lld -pie -nostdlib a.s % readelf -Wr a.out Relocation section '.rela.plt' at offset 0x290 contains 1 entry: Offset Info Type Symbol's Value Symbol's Name + Addend 00000000000033b8 0000000000000007 R_X86_64_JUMP_SLOT 12b0 ``` Report an error instead for the default `-z text` mode. GNU ld reports an error in `-z text` mode as well. GitOrigin-RevId: 42e4967140e345923a43f809ba69be57200f46ae
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
.