- 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
-
- 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
-
- May 15, 2017
-
-
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 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
-
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
-
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
-
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
-
George Rimar authored
When compiling LLD using GCC 7 it reports warnings like: "warning: this statement may fall through [-Wimplicit-fallthrough=]" LLVM has LLVM_FALLTHROUGH macro which can be used to avoid such warnings. Together with D33036 this patch fixes them. Differential revision: https://reviews.llvm.org/D32907 llvm-svn: 302666
-
Rafael Espindola authored
llvm-svn: 302662
-
Rafael Espindola authored
This is just faster and avoids using names. llvm-svn: 302661
-
Zachary Turner authored
Differential Revision: https://reviews.llvm.org/D33016 llvm-svn: 302613
-
- May 09, 2017
-
-
Rui Ueyama authored
Adds support for the ORIGIN and LENGTH linker script built in functions. ORIGIN(memory) Return the origin of the memory region LENGTH(memory) Return the length of the memory region Redo of D29775 for refactored linker script parsing. Patch by Robert Clarke Differential Revision: https://reviews.llvm.org/D32934 llvm-svn: 302564
-
Rafael Espindola authored
This is a bit easier to read and a lot faster in some cases. A version of many-sections.s with linker scripts goes from 0m41.232s to 0m19.575s. llvm-svn: 302528
-
- May 08, 2017
-
-
Rafael Espindola authored
The code following this one already considers every possible insertion point for orphan sections, there is no point in sorting them before. llvm-svn: 302441
-
George Rimar authored
This is PR32437. DF_STATIC_TLS If set in a shared object or executable, this flag instructs the dynamic linker to reject attempts to load this file dynamically. It indicates that the shared object or executable contains code using a static thread-local storage scheme. Implementations need not support any form of thread-local storage. Patch checks if IE/LE relocations were used to check if code uses static model. If so it sets the DF_STATIC_TLS flag. Differential revision: https://reviews.llvm.org/D32354 llvm-svn: 302414
-