- May 17, 2017
-
-
George Rimar authored
Nothing special here, just detemplates code that became possible to detemplate after recent commits in a straghtforward way. Differential revision: https://reviews.llvm.org/D33234 llvm-svn: 303237
-
Rui Ueyama authored
llvm-svn: 303226
-
Rui Ueyama authored
Summary: Previously, the garbage collector (enabled by default or by explicitly passing /opt:ref) did not kill dllimported symbols. As a result, dllimported symbols could be added to resulting executables' dllimport list even if no one was actually using them. This patch implements dllexported symbol garbage collection. Just like COMDAT sections, dllimported symbols now have Live bits to manage their liveness, and MarkLive marks reachable dllimported symbols. Fixes https://bugs.llvm.org/show_bug.cgi?id=32950 Reviewers: pcc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D33264 llvm-svn: 303225
-
- May 16, 2017
-
-
George Rimar authored
llvm-svn: 303164
-
George Rimar authored
llvm-svn: 303155
-
George Rimar authored
Follow up for r303150. llvm-svn: 303153
-
George Rimar authored
SymbolTableBaseSection was introduced. Detemplation of SymbolTableSection should allow to detemplate more things. Differential revision: https://reviews.llvm.org/D33124 llvm-svn: 303150
-
George Rimar authored
Switch to llvm::to_integer() everywhere in LLD instead of StringRef::getAsInteger() because API of latter is confusing. It returns true on error and false otherwise what makes reading the code incomfortable. Differential revision: https://reviews.llvm.org/D33187 llvm-svn: 303149
-
Rui Ueyama authored
llvm-svn: 303135
-
- May 15, 2017
-
-
Rafael Espindola authored
They are too slow otherwise. We track the issue in pr32942. llvm-svn: 303097
-
Peter Collingbourne authored
We should only ever expect this function to return a regular InputSection; I would not expect a function definition to be in a MergeInputSection or EhInputSection. We were previously crashing in writeTo if this function returned a section that was not an InputSection because we do not set OutSec for such sections. This can happen in practice if a function is defined in an empty section which shares its offset-in-file with a MergeInputSection, as in the provided test case. A better fix for this bug would be to fix the DWARFUnit::collectAddressRanges() interface to provide section information (see D33183), but this at least fixes the crash. Differential Revision: https://reviews.llvm.org/D33176 llvm-svn: 303089
-
Peter Collingbourne authored
Fixes PR33032. Differential Revision: https://reviews.llvm.org/D33175 llvm-svn: 303088
-
- May 14, 2017
-
-
Peter Collingbourne authored
This reorganisation prevents us from cluttering up the top-level lib directory with more driver libraries such as llvm-dlltool (see D29892). llvm-svn: 302995
-
- May 12, 2017
-
-
George Rimar authored
llvm-svn: 302921
-
Rafael Espindola authored
We used to place orphans by just using compareSectionsNonScript. Then we noticed that since linker scripts can use another order, we should first try match the section to a given PT_LOAD. But there is nothing special about PT_LOAD. The same issue can show up for PT_GNU_RELRO for example. In general, we have to search for the most similar section and put the orphan next to it. Most similar being defined as how long they follow the same code path in compareSecitonsNonScript. That is what this patch does. We now compute a rank for each output section, with a bit for each branch in what was compareSectionsNonScript. With this findOrphanPos is now fully general and orphan placement can be optimized by placing every section with the same rank at once. The included testcase is a variation of many-sections.s that uses allocatable sections to avoid the fast path in the existing code. Without threads it goes form 46 seconds to 0.9 seconds. llvm-svn: 302903
-
George Rimar authored
This reverts changes introduced in r302414 "[ELF] - Set DF_STATIC_TLS flag for i386 target." Because DF_STATIC_TLS does not look to be used by glibc or anything else. llvm-svn: 302884
-
George Rimar authored
Both gold and bfd restrict that one: ld.bfd: test.o: relocation R_X86_64_TPOFF32 against `var' can not be used when making a shared object; recompile with -fPIC ld.gold: error: test.o: unsupported reloc 23 against global symbol var What looks reasonable because it is 32 bit one. Patch do the same. Differential revision: https://reviews.llvm.org/D33100 llvm-svn: 302881
-
Rafael Espindola authored
llvm-svn: 302849
-
Rafael Espindola authored
llvm-svn: 302848
-
Rafael Espindola authored
llvm-svn: 302847
-
Rafael Espindola authored
llvm-svn: 302846
-
Rafael Espindola authored
This is a bit hackish, but allows for a lot of followup cleanups. llvm-svn: 302845
-
Rafael Espindola authored
llvm-svn: 302843
-
Rafael Espindola authored
llvm-svn: 302832
-
- May 11, 2017
-
-
Rafael Espindola authored
llvm-svn: 302828
-
Rafael Espindola authored
llvm-svn: 302826
-
George Rimar authored
Testcase itself depends on .text section location, which was orphan earlier. Suggested by Rafael Espíndola llvm-svn: 302792
-
Zachary Turner authored
Differential Revision: https://reviews.llvm.org/D33024 llvm-svn: 302748
-
- May 10, 2017
-
-
Rui Ueyama authored
llvm-svn: 302719
-
Rui Ueyama authored
So that it is clear that the function is a wrapper for for_each_n. llvm-svn: 302718
-
Rafael Espindola authored
This improves many-sections.s with a linker script from 22s to 0.9s. llvm-svn: 302708
-
Rafael Espindola authored
We now always use getCmd. I will optimize it in a followup commit. llvm-svn: 302706
-
Zachary Turner authored
llvm-svn: 302697
-
Rui Ueyama authored
Previously we were not printing out the type of the incompatible section which made it difficult to determine what the problem was. The error message format has been change to the following: error: section type mismatch for .shstrtab >>> <internal>:(.shstrtab): SHT_STRTAB >>> output section .shstrtab: Unknown Patch by Alexander Richardson. Differential Revision: https://reviews.llvm.org/D32488 llvm-svn: 302694
-
Hans Wennborg authored
llvm-svn: 302690
-
Petr Hosek authored
This behavior differs from the semantics implemented by GNU linkers which only define this symbol iff ELF headers are in the memory mapped segment. Differential Revision: https://reviews.llvm.org/D33019 llvm-svn: 302687
-
Rafael Espindola authored
We used to inherit from it, but don't need it anymore. llvm-svn: 302675
-
Rafael Espindola authored
llvm-svn: 302672
-
Rafael Espindola authored
llvm-svn: 302671
-
George Rimar authored
This is PR32664. Issue was revealed by linux kernel script which was: SECTIONS { . = (0xffffffff80000000 + ALIGN(0x1000000, 0x200000)); phys_startup_64 = ABSOLUTE(startup_64 - 0xffffffff80000000); .text : AT(ADDR(.text) - 0xffffffff80000000) { ..... *(.head.text) Where startup_64 is in .head.text. At the place of assignment to phys_startup_64 we can not calculate absolute value for startup_64 because .text section has no VA assigned. Two patches were prepared earlier to address this: D32173 and D32174. And in comments for D32173 was suggested not try to support this case, but error out. Differential revision: https://reviews.llvm.org/D32793 llvm-svn: 302668
-