- May 11, 2017
-
-
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
-
George Rimar authored
Previously it was impossible to use linkerscript with --compress-debug-sections because of assert failture: Assertion failed: isFinalized(), file C:\llvm\lib\MC\StringTableBuilder.cpp, line 64 Patch fixes the issue llvm-svn: 302413
-
- May 05, 2017
-
-
Rafael Espindola authored
We can set SectionIndex tentatively as we process the linker script instead of looking it repeatedly. In general we should try to have as few name lookups as possible. llvm-svn: 302299
-
Rafael Espindola authored
This feels a bit hackish, but I think it is still an improvement. The way a tls address is computed in the various architectures is not that different. For example, for local dynamic we need the base of the tls (R_TLSLD or R_TLSLD_PC), and the offset of that particular symbol (R_ABS). Given the similarity, we can just use the expressions instead of having two additional target hooks. llvm-svn: 302279
-
Rui Ueyama authored
llvm-svn: 302273
-
Rafael Espindola authored
LazyObjectFile might turn out to be a BitcodeFile, so we need OffsetInArchive. llvm-svn: 302242
-
Rafael Espindola authored
The test ELF/lto/thin-archivecollision.ll was not testing what it wanted to test. It needs two archive members with the same name, but different offsets. Without this we could remove all references of OffsetInArchive and all tests would still pass. Fixing the test showed that the --whole-archive case was broken, which this patch fixes. llvm-svn: 302241
-
Rafael Espindola authored
It is needed for creating an unique identifier for ThinLTO. This fixes pr32931. llvm-svn: 302235
-
George Rimar authored
Previously we accepted --defsym=foo=value only. Reported by Sean Silva. llvm-svn: 302227
-
- May 04, 2017
-
-
Rafael Espindola authored
In the non linker script case we would try very early to find out if we could allocate the headers. Failing to do that would add extra alignment to the first ro section, since we would set PageAlign thinking it was the first section in the PT_LOAD. In the linker script case the header allocation must be done in the end, causing some duplication. We now tentatively add the headers to the first PT_LOAD and if it turns out they don't fit, remove them. With this we only need to allocate the headers in one place in the code. llvm-svn: 302186
-
Rafael Espindola authored
llvm-svn: 302155
-
Rafael Espindola authored
We were correctly computing the size contribution of a .tbss input section (it is none), but we were incorrectly considering the alignment of the output section: it was advancing Dot instead of ThreadBssOffset. As far as I can tell this was always wrong in our linkerscript implementation, but that became more visible now that the code is shared with the non linker script case. llvm-svn: 302107
-
Rui Ueyama authored
llvm-svn: 302090
-
- May 03, 2017
-
-
Rui Ueyama authored
It seems virtually everyone who tries to do LTO build with Clang and LLD was hit by a mistake to forget using llvm-ar command to create archive files. I wasn't an exception. Since this is an annoying common issue, it is probably better to handle that gracefully rather than reporting an error and tell the user to redo build with different configuration. Differential Revision: https://reviews.llvm.org/D32721 llvm-svn: 302083
-
Peter Collingbourne authored
It doesn't matter what binding we store in a non-UsedInRegularObj undefined symbol because we should reset it when we see a real undefined symbol in a combined LTO object. The fact that we weren't doing so before is a bug (PR32899) which is now fixed. llvm-svn: 302067
-
Rafael Espindola authored
We were ignoring strong undefined symbols if they followed weak ones. Fixes pr32899. llvm-svn: 302065
-
Peter Smith authored
The --section-start <name>=<address> needs to be translated into equivalent linker script commands. There are a couple of problems with the existing implementation: - The --section-start with the lowest address is assumed to be at the start of the map. This assumption is incorrect, we have to iterate through the SectionStartMap to find the lowest address. - The addresses in --section-start were being over-aligned when the sections were marked as PageAlign. This is inconsistent with the use of SectionStartMap in fixHeaders(), and can cause problems when the PageAlign causes an "unable to move location counter backward" error when the --section-start with PageAlign is aligned to an address higher than the next --section-start. The ld.bfd and ld.gold seem to be more consistent with this approach but this is not a well specified area. This change fixes the problems above and also corrects a typo in which fabricateDefaultCommands() is called with the wrong parameter, it should be called with AllocateHeader not Config->MaxPageSize. Differential Revision: https://reviews.llvm.org/D32749 llvm-svn: 302007
-
Rui Ueyama authored
llvm-svn: 301982
-
Joel Jones authored
llvm-svn: 301979
-
- May 02, 2017
-
-
Rui Ueyama authored
llvm-svn: 301975
-
Rafael Espindola authored
This reverts commit r301964. It broke the build. llvm-svn: 301969
-
Joel Jones authored
llvm-svn: 301964
-