summaryrefslogtreecommitdiffstats
path: root/lld/test/ELF/arm-gnu-ifunc.s
Commit message (Collapse)AuthorAgeFilesLines
* [ELF] Rename .plt to .iplt and decrease EM_PPC{,64} alignment of .glink to 4Fangrui Song2019-12-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | GNU ld creates the synthetic section .iplt, and has a built-in linker script that assigns .iplt to the output section .plt . There is no output section named .iplt . Making .iplt an output section actually has a benefit that makes the tricky toolchain feature stand out. Symbolizers don't have to deal with mixed PLT entries (e.g. llvm-objdump -d incorrectly annotates such jump targets). On EM_PPC{,64}, .glink contains a PLT resolver and a series of jump instructions. The 4-byte entry size makes it unnecessary to have an alignment of 16. Mark ppc32-gnu-ifunc.s and ppc32-gnu-ifunc-nonpreemptable.s as `XFAIL: *`. They test IPLT on EM_PPC, which never works. Reviewed By: peter.smith Differential Revision: https://reviews.llvm.org/D71520
* [ELF][ARM] Allow PT_LOAD to have overlapping p_offset ranges on EM_ARMFangrui Song2019-08-271-25/+25
| | | | | | | | | | | | Port the D64906 technique to ARM. It deletes 3 alignments at PT_LOAD boundaries for the default case: the size of an arm binary decreases by at most 12kb. Reviewed By: grimar Differential Revision: https://reviews.llvm.org/D66749 llvm-svn: 370049
* [ARM][test] Improve testsFangrui Song2019-07-221-17/+17
| | | | | | | Delete trailing 2>&1 that is not piped to another command. Add --no-show-raw-insn to objdump -d commands. llvm-svn: 366676
* [llvm-objdump] Print newlines before and after "Disassembly of section ...:"Fangrui Song2019-05-011-0/+3
| | | | | | | | | | | This improves readability and the behavior is consistent with GNU objdump. The new test test/tools/llvm-objdump/X86/disassemble-section-name.s checks we print newlines before and after "Disassembly of section ...:" Differential Revision: https://reviews.llvm.org/D61127 llvm-svn: 359668
* [test] Change llvm-readobj -long-option to --long-option or well-known short ↵Fangrui Song2019-05-011-1/+1
| | | | | | | | | | | | options. NFC Also change some options that have different semantics (cause confusion) in llvm-readelf mode: -s => -S -t => --symbols -sd => --section-data llvm-svn: 359651
* ELF: Set sh_info on RelaIplt to point to the IgotPlt output section.Peter Collingbourne2019-01-281-1/+4
| | | | | | | | | | | Previously we were setting it to the GotPlt output section, which is incorrect on ARM where this section is in .got. In static binaries this can lead to sh_info being set to -1 (because there is no .got.plt) which results in various tools rejecting the output file. Differential Revision: https://reviews.llvm.org/D57274 llvm-svn: 352413
* [ELF] Move `// REQUIRES:` line to the topFangrui Song2018-06-261-1/+1
| | | | llvm-svn: 335676
* [ELF] Optimize Arm PLT sequencesPeter Smith2017-12-181-21/+20
| | | | | | | | | | | | | | A more efficient PLT sequence can be used when the distance between the .plt and the end of the .plt.got is less than 128 Megabytes, which is frequently true. We fall back to the old sequence when the offset is larger than 128 Megabytes. This gives us an alternative to forcing the longer entries with --long-plt as we gracefully fall back to it as needed. See ELF for the ARM Architecture Appendix A for details of the PLT sequence. Differential Revision: https://reviews.llvm.org/D41246 llvm-svn: 320987
* Remove trailing whitespace.Rui Ueyama2017-12-121-1/+1
| | | | llvm-svn: 320520
* [ELF] Add local mapping symbols to ARM PLT entriesPeter Smith2017-01-251-11/+14
| | | | | | | | | | | | | Mapping symbols allow a mapping symbol aware disassembler to correctly disassemble the PLT when the code immediately prior to the PLT is Thumb. To implement this we add a function to add symbols with local binding to be defined in SyntheticSymbols. Differential Revision: https://reviews.llvm.org/D28956 llvm-svn: 293044
* [ELF] ifunc implementation using synthetic sectionsPeter Smith2016-12-081-74/+80
| | | | | | | | | | | | | | | | | This change introduces new synthetic sections IpltSection, IgotPltSection that represent the ifunc entries that would previously have been put in the PltSection and the GotPltSection. The separation makes sure that the R_*_IRELATIVE relocations are placed after the non R_*_IRELATIVE relocations, which permits ifunc resolvers to know that the .got.plt slots will be initialized prior to the resolver being called. A secondary benefit is that for ARM we can move the IgotPltSection and its dynamic relocations to the .got and .rel.dyn as the ARM glibc expects all the R_*_IRELATIVE relocations to be in the .rel.dyn Differential revision: https://reviews.llvm.org/D27406 llvm-svn: 289045
* Remove string table offsets from tests.Rui Ueyama2016-11-011-1/+1
| | | | | | <N> where "foo (<N>)" is the offset of string "foo" in the string table. llvm-svn: 285751
* Set entry address to 0x0 if no _start symbolEugene Leviant2016-09-081-1/+1
| | | | | | Differential revision: https://reviews.llvm.org/D23925 llvm-svn: 280912
* Initial support for ARM in lld.Peter Smith2016-06-071-0/+131
Add support for an ARM Target and the initial set of relocations and PLT entries that are necessary for an ARM only hello world to link. This has been tested against an ARM only sysroot from the 4.2.0 CodeSourcery Lite release. Tests have been added to test/ELF for the support that has been implemented. Main limitations: - No Thumb support - Relocations incomplete - No C++ exceptions support - No TLS support - No range extension or interworking veneer (thunk) support - No Build Attribute support - No Big-endian support The deprecated relocations R_ARM_PLT32 and R_ARM_PC24 have been implemented as these are used by the 4.2.0 CodeSourcery Lite release. llvm-svn: 271993
OpenPOWER on IntegriCloud