- Feb 23, 2017
-
-
Rafael Espindola authored
With the current design an InputSection is basically anything that goes directly in a OutputSection. That includes plain input section but also synthetic sections, so this should probably not be a template. llvm-svn: 295993
-
Rui Ueyama authored
If -z stack-size is given, we need to add PT_GNU_STACK even if -z execstack is not given. llvm-svn: 295945
-
George Rimar authored
Thanks to Rui Ueyama for suggestion. llvm-svn: 295943
-
Rui Ueyama authored
llvm-svn: 295942
-
Rui Ueyama authored
llvm-svn: 295941
-
Rui Ueyama authored
llvm-svn: 295939
-
Rui Ueyama authored
llvm-svn: 295938
-
Rui Ueyama authored
We have InputSection, MergeInputSection and EhInputSection, so isa<MergeInputSection> is equivalent to !isa<InputSection> && !isa< EhInputSection>. llvm-svn: 295937
-
Petr Hosek authored
We shouldn't report an error for R_*_NONE relocs since we're emitting them when writing relocations to discarded sections. Differential Revision: https://reviews.llvm.org/D30279 llvm-svn: 295936
-
Rafael Espindola authored
llvm-svn: 295932
-
Rafael Espindola authored
llvm-svn: 295929
-
Rui Ueyama authored
This shouldn't change the meaning of the code. llvm-svn: 295927
-
Rafael Espindola authored
llvm-svn: 295925
-
Rafael Espindola authored
Now that InputSectionBase is not a template there is no reason to have the two. llvm-svn: 295924
-
Rafael Espindola authored
Removing this template is not a big win by itself, but opens the way for removing more templates. llvm-svn: 295923
-
Rafael Espindola authored
llvm-svn: 295909
-
- Feb 22, 2017
-
-
Rui Ueyama authored
llvm-svn: 295876
-
George Rimar authored
* Added comment. * Pass std::string copy instead using move semantic. llvm-svn: 295817
-
Rui Ueyama authored
LLD is a multi-threaded program. errs() or outs() are not guaranteed to be thread-safe (they are actually not). LLD's message(), log() or error() are thread-safe. We should use them. llvm-svn: 295787
-
- Feb 21, 2017
-
-
Petr Hosek authored
This change exposes the symbol table insert method and uses it to insert the linkerscript defined symbols directly into the symbol table to avoid unnecessarily pulling the object out of an archive. Differential Revision: https://reviews.llvm.org/D30224 llvm-svn: 295780
-
Rui Ueyama authored
This option disable creating copy relocations. ld.bfd and ld.gold have the same option. llvm-svn: 295772
-
George Rimar authored
Patch fixes PR32024. Sections that were not marked as Live has null output section. Previously we tried to access that field and segfaulted. Differential revision: https://reviews.llvm.org/D30188 llvm-svn: 295727
-
George Rimar authored
Previously we evaluated the values of LMA incorrectly for next cases: .text : AT(ADDR(.text) - 0xffffffff80000000) { ... } .data : AT(ADDR(.data) - 0xffffffff80000000) { ... } .init.begin : AT(ADDR(.init.begin) - 0xffffffff80000000) { ... } Reason was that we evaluated offset when VA was not assigned. For case above we ended up with 3 loads that has similar LMA and it was incorrect. That is critical for linux kernel. Patch updates the offset after VA calculation. That fixes the issue. Differential revision: https://reviews.llvm.org/D30163 llvm-svn: 295722
-
George Rimar authored
Previously LLD would error out just "ld.lld: error: unable to move location counter backward" What does not really reveal the place of issue, Patch adds location to the output. Differential revision: https://reviews.llvm.org/D30187 llvm-svn: 295720
-
George Rimar authored
Previously ASSERT we implemented returned expression value. Ex: . = ASSERT(0x100); would set Dot value to 0x100 Form of assert when it is assigned to Dot was implemented for compatibility with very old GNU ld which required it. Some scripts in the wild, including linux kernel scripts use such ASSERTs at the end for doing different checks. Currently we fail with "unable to move location counter backward" for such scripts. Patch changes ASSERT to return location counter value to fix that. Differential revision: https://reviews.llvm.org/D30171 llvm-svn: 295703
-
- Feb 20, 2017
-
-
Peter Smith authored
This change moves the SymbolBodies with isLocal() == true before the global symbols then calculating NumLocals rather than assuming all locals are added before globals and the first NumLocals have isLocal() == true. This permits Thunks to be moved after the pass that adds global symbols from synthetics to the symbol table. Differential revision: https://reviews.llvm.org/D30085 llvm-svn: 295650
-
Rui Ueyama authored
llvm-svn: 295633
-
Rui Ueyama authored
llvm-svn: 295632
-
- Feb 19, 2017
-
-
Rui Ueyama authored
llvm-svn: 295622
-
- Feb 17, 2017
-
-
George Rimar authored
Previously LLD crashed on on provided testcases because "/DISCARD/" was not supported. Patch implements that. After this I think there is no known issues with --emit-relocs implementation required for linux kernel linking. Differential revision: https://reviews.llvm.org/D29273 llvm-svn: 295488
-
Rafael Espindola authored
Before it would never print anything. Thanks to George Rimar for pointing it out. llvm-svn: 295485
-
George Rimar authored
I splitted it from D29273. Since we plan to make relocatable sections as dependent for target ones for --emit-relocs implementation, this change is required to support .eh_frame case. EhInputSection inherets from InputSectionBase and not from InputSection. So for case when it has relocation section, it should be able to access DependentSections vector. This case is real for Linux kernel. Differential revision: https://reviews.llvm.org/D30084 llvm-svn: 295483
-
Rafael Espindola authored
This is a small difference I noticed to gold and bfd. When given --print-gc-sections, we print sections a linkerscript marks DISCARD. The other linkers don't. llvm-svn: 295467
-
Rafael Espindola authored
This case should be possible to handle, but it is hard: * In order to create program headers correctly, we have to scan the sections in the order they are in the file. * To find that order, we have to "execute" the linker script. * The linker script can contain SIZEOF_HEADERS. So to support this we have to start with a guess of how many headers we need (3), run the linker script and try to create the program headers. If it turns out we need more headers, we run the script again with a larger SIZEOF_HEADERS. Also, running the linker script depends on knowing the size of the sections, so we have to finalize them. But creating the program headers can change the value stored in some sections, so we have to split size finalization and content finalization. Looks like the last part is also needed for range extension thunks, so we might support this at some point. For now just report an error instead of producing broken files. llvm-svn: 295458
-
Rafael Espindola authored
We were only checking when the assignment was inside a section. llvm-svn: 295454
-
Rafael Espindola authored
llvm-svn: 295448
-
Rui Ueyama authored
The previous name caused a little confusion because the function not only returns aliases but a given symbol itself too. llvm-svn: 295408
-
Rui Ueyama authored
llvm-svn: 295388
-
Rafael Espindola authored
Without this we would produce two relocation sections pointing to the same section, which gnu tools reject. This fixes pr31986. The implementation of -r/--emit-reloc is getting fairly complicated. But lets get the test passing before trying to refactor it. llvm-svn: 295385
-
- Feb 16, 2017
-
-
Rafael Espindola authored
I cannot reproduce the issue locally, but for some reason some bots want to instantiate this from the header. llvm-svn: 295365
-