- Dec 16, 2017
-
-
Sam Clegg authored
This bug was introduced in: https://reviews.llvm.org/D41304. Add a test for this case. Differential Revision: https://reviews.llvm.org/D41309 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320872 91177308-0d34-0410-b5e6-96231b3b80d8
-
Martin Storsjo authored
The COFF linker automatically sets the IMAGE_DLL_CHARACTERISTICS_NO_SEH when suitable, similarly to link.exe. Differential Revision: https://reviews.llvm.org/D41275 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320861 91177308-0d34-0410-b5e6-96231b3b80d8
-
Martin Storsjo authored
This seems to match how link.exe sets it. Differential Revision: https://reviews.llvm.org/D41252 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320860 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rui Ueyama authored
We add dynamic section entries both in the ctor of the class and DynamicSection::finalizeContents(). Some entries need to be added early in the ctor because they add strings to .dynstr. Other entries were intended to be added in finalizeContents(). However, some entries are added in the ctor even though they don't add strings. This patch fix the issue. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320851 91177308-0d34-0410-b5e6-96231b3b80d8
-
Sam Clegg authored
Since imports are undefined symbols we know we can find all of them my looking at the symbol table alone. (i.e. imports cannot be have local binding). This will be strictly faster and also allows us to to remove a method from Symbol class Differential Revision: https://reviews.llvm.org/D41304 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320847 91177308-0d34-0410-b5e6-96231b3b80d8
-
- Dec 15, 2017
-
-
Peter Smith authored
We only need to exceed 128 Megabytes to provoke the generation of a range extension thunk. This brings the file size down to just over 128 Megabytes. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320821 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320818 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
I noticed that the continue this patch deletes was not tested. Trying to add a test I realized that we never put a VER_NDX_LOCAL symbol in the dynamic symbol table. There doesn't seem to be any reason for a linker to use VER_NDX_LOCAL for a defined shared symbol. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320817 91177308-0d34-0410-b5e6-96231b3b80d8
-
Peter Smith authored
The ARM.exidx section contains a table of 8-byte entries with the first word of each entry an offset to the function it describes and the second word instructions for unwinding if an exception is thrown from that function. The SHF_LINK_ORDER processing will order the table in ascending order of the functions described by the exception table entries. As the address range of an exception table entry is terminated by the next table entry, it is possible to merge consecutive table entries that have identical unwind instructions. For this implementation we define a table entry to be identical if: - Both entries are the special EXIDX_CANTUNWIND. - Both entries have the same inline unwind instructions. We do not attempt to establish if table entries that are references to .ARM.extab sections are identical. This implementation works at a granularity of a single .ARM.exidx InputSection. If all entries in the InputSection are identical to the previous table entry we can remove the InputSection. A more sophisticated but more complex implementation would rewrite InputSection contents so that duplicates within a .ARM.exidx InputSection can be merged. Differential Revision: https://reviews.llvm.org/D40967 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320803 91177308-0d34-0410-b5e6-96231b3b80d8
-
Peter Smith authored
Forgot to svn add the additional test for the commit. Adding with this one. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320802 91177308-0d34-0410-b5e6-96231b3b80d8
-
Peter Smith authored
Forward declare InputSectionDescription as struct not class. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320801 91177308-0d34-0410-b5e6-96231b3b80d8
-
Peter Smith authored
This patch provides the mechanism to fix instances of the instruction sequence that may trigger the cortex-a53 843419 erratum. The fix is provided by an alternative instruction sequence to remove one of the erratum conditions. To reach this alternative instruction sequence we replace the original instruction with a branch to the alternative sequence. The alternative sequence is responsible for branching back to the original. As there is only erratum to fix the implementation is specific to AArch64 and the specific erratum conditions. It should be generalizable to other targets and erratum if needed. Differential Revision: https://reviews.llvm.org/D36749 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320800 91177308-0d34-0410-b5e6-96231b3b80d8
-
Shoaib Meenai authored
Windows paths have colons in them, so the regex will fail there. Just match for any character; the rest of the message will restrict the match to the path anyway. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320793 91177308-0d34-0410-b5e6-96231b3b80d8
-
Shoaib Meenai authored
Locally imported symbols are a very surprising linker feature. link.exe warns for them, and we should warn too. Differential Revision: https://reviews.llvm.org/D41269 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320792 91177308-0d34-0410-b5e6-96231b3b80d8
-
Sam Clegg authored
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320777 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rui Ueyama authored
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320773 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rui Ueyama authored
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320772 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rui Ueyama authored
Specifically, libwidevinecdm.so in Chrome has such bad symbol. It seems the BFD linker handles them as local symbols, so instead of inserting them to the symbol table, we should skip them too. Differential Revision: https://reviews.llvm.org/D41257 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320770 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rui Ueyama authored
Patch by Chen-Pang He. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320754 91177308-0d34-0410-b5e6-96231b3b80d8
-
Sam Clegg authored
Subscribers: aheejin, llvm-commits Differential Revision: https://reviews.llvm.org/D41255 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320741 91177308-0d34-0410-b5e6-96231b3b80d8
-
Hans Wennborg authored
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320738 91177308-0d34-0410-b5e6-96231b3b80d8
-
Zachary Turner authored
This adds the /DEBUG:GHASH option to LLD which will look for the existence of .debug$H sections in linker inputs and use them to accelerate type merging. The clang-cl side has already been added, so this completes the work necessary to begin experimenting with this feature. Differential Revision: https://reviews.llvm.org/D40980 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320719 91177308-0d34-0410-b5e6-96231b3b80d8
-
- Dec 14, 2017
-
-
Martin Storsjo authored
This is similar to what was added in SVN r277838 for 24 bit branch instructions. Differential Revision: https://reviews.llvm.org/D41163 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320677 91177308-0d34-0410-b5e6-96231b3b80d8
-
Martin Storsjo authored
This works for linking the output from the MSVC compiler. The pdata entries for arm64 seem to be 8 bytes in the same (or at least similar) form to arm. Differential Revision: https://reviews.llvm.org/D41160 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320676 91177308-0d34-0410-b5e6-96231b3b80d8
-
Igor Kudrin authored
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320671 91177308-0d34-0410-b5e6-96231b3b80d8
-
Igor Kudrin authored
We might crash in 'ARMExidxSentinelSection::writeTo()' because it expected the sentinel entry to be put in the same 'InputSectionDescription' as the last real entry. This assumption fails if the last output section command for .ARM.exidx is anything but an input section description, because in this case 'OutputSection::addSection()' creates a new 'InputSectionDescription'. Differential Revision: https://reviews.llvm.org/D41105 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320668 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
We would fail an assert if a shared library had a local symbol after sh_info. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320667 91177308-0d34-0410-b5e6-96231b3b80d8
-
Sam Clegg authored
See: https://reviews.llvm.org/D41202 Differential Revision: https://reviews.llvm.org/D41210 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320662 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
It is currently in InputSectionBase. Only InputSections are used in ICF, so Repl should be move to InputSection to clear the class hierarchy or, like this patch does, to SectionBase for convenience. The convenience of having it on the base class is that we can just access the replacement without having to first check if it is an InputSection. It is a bit less code and a bit faster as some of this code is very hot. I got up to 1.77% improvement in clang-gdb-index and no regressions according to lnt. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320654 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rui Ueyama authored
Differential Revision: https://reviews.llvm.org/D41204 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320652 91177308-0d34-0410-b5e6-96231b3b80d8
-
Sam Clegg authored
Without this the LLVM_BUILD_LLVM_DYLIB+DLLVM_LINK_LLVM_DYLIB build break. Also remove unneeded lldCore from wasm/CMakeLists.txt Differential Revision: https://reviews.llvm.org/D41194 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320610 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
Having a SectionBase method check Repl is inconsistent with how we handle other section information. For example, if a section is replaced, Sec->Live is false and it is natural for Sec->getOutputSection() to be null. It is the symbol that is moved to the replacement section. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320599 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
If a section has been replaced (Sec != Sec->Repl) it is not Live. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320597 91177308-0d34-0410-b5e6-96231b3b80d8
-
- Dec 13, 2017
-
-
Rafael Espindola authored
Before we had no tests for the use of Repl in getSymVA. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320544 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
This runs before ICF, so Sec->Repl == Sec. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320543 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320542 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rafael Espindola authored
It is constructed with a kind of Regular and will dyn_cast to InputSection, but is declared to be an InputSectionBase. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320539 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rui Ueyama authored
Differential Revision: https://reviews.llvm.org/D41127 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320526 91177308-0d34-0410-b5e6-96231b3b80d8
-
Rui Ueyama authored
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320520 91177308-0d34-0410-b5e6-96231b3b80d8
-
Martin Storsjo authored
The linker refuses using -dynamicbase:no on these architectures. Stop passing -dynamicbase (which just reinforces the lld-link default) for simplicity. Differential Revision: https://reviews.llvm.org/D41052 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@320518 91177308-0d34-0410-b5e6-96231b3b80d8
-