commit | 83d7f113365f284a9729a020cce26f4cac07007f | [log] [tgz] |
---|---|---|
author | Fangrui Song <maskray@google.com> | Tue Aug 06 16:57:54 2019 +0000 |
committer | Fangrui Song <maskray@google.com> | Tue Aug 06 16:57:54 2019 +0000 |
tree | 1d9fa5858e12bd0804eb7ebcf1e7304c22502c1d | |
parent | cface38cc30fb37c6915d6ff40ae65e0f3a9187b [diff] |
[ELF][PPC] Don't relax ifunc toc-indirect accesses to toc-relative Fixes PR42759. ``` // If ifunc is taken address in -fPIC code, it may have a toc entry .section .toc,"aw",@progbits .quad ifunc // ifunc may be defined as STT_GNU_IFUNC in another object file .type ifunc, %gnu_indirect_function ``` If ifunc is non-preemptable (e.g. when linking an executable), the toc entry will be relocated by R_PPC64_IRELATIVE. R_*_IRELATIVE represents the symbolic value of a non-preemptable ifunc (not associated with a canonical PLT) in a writable location. It has an unknown value at link time, so we cannot apply toc-indirect to toc-relative relaxation. Reviewed By: luporl, sfertile Differential Revision: https://reviews.llvm.org/D65755 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@368057 91177308-0d34-0410-b5e6-96231b3b80d8
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.