- Jun 06, 2017
-
-
Peter Smith authored
In preparation for inserting Thunks into InputSectionDescription::Sections extract the loop that finds InputSections that may have calls that need Thunks. This isn't much benefit now but this will be useful when we have to extract the InputSectionDescriptions::Sections from the script. Differential Revision: https://reviews.llvm.org/D33834 llvm-svn: 304783
-
Peter Smith authored
In preparation for inserting Thunks into InputSectionDescriptions this simple change associates added Thunks with a vector of InputSections instead of an OutputSection. As of now we are just using OutputSection::Sections. Differential Revision: https://reviews.llvm.org/D33832 llvm-svn: 304782
-
George Rimar authored
That addresses port commit comments for https://reviews.llvm.org/D33646 llvm-svn: 304777
-
George Rimar authored
Previously LLD would fail for case when there are multiple comdats and -r. That happened because it merged all ".group" (SHT_GROUP) sections into single output, producing broken result. Such sections may have similar name, alignment and flags and other properties. We need to produce separate output section for each such input one. Differential revision: https://reviews.llvm.org/D33643 llvm-svn: 304769
-
Rafael Espindola authored
This moves clearOutputSections and OutputSectionCommands creation as early as possible without changing other code. llvm-svn: 304751
-
- Jun 05, 2017
-
-
Petr Hosek authored
Traditionally, it has been defined in crtbegin.o, which is typically provided by libgcc or as part of the C library on some systems. However, but there's no principled reason for it to be there. We optionaly define this symbol, which can be used on platforms that don't provide __dso_handle in crtbegin.o or which don't use crtbegin.o at all. Differential Revision: https://reviews.llvm.org/D33856 llvm-svn: 304732
-
Dmitry Mikulin authored
procedural optimizations to prevent dropping symbols and allow the linker to process re-directs. PR33145: --wrap doesn't work with lto. Differential Revision: https://reviews.llvm.org/D33621 llvm-svn: 304719
-
George Rimar authored
This is PR33289. Previously LLD leaved section naming as is and that lead to wrong result, because we decompress sections when using -r, and hence should remove ".z" prefix. Differential revision: https://reviews.llvm.org/D33885 llvm-svn: 304711
-
Peter Smith authored
This change alters the sorting for OutputSections with the SHF_LINK_ORDER flag in OutputSection::finalize() to use the InputSectionDescription representation and not the OutputSection::Sections representation. Differential revision: https://reviews.llvm.org/D33772 llvm-svn: 304700
-
- Jun 03, 2017
-
-
Rafael Espindola authored
This allows moving clearOutputSections a bit earlier. llvm-svn: 304654
-
- Jun 02, 2017
-
-
George Rimar authored
Spec says: (http://www.sco.com/developers/gabi/latest/ch4.sheader.html) sh_info This member holds extra information, whose interpretation depends on the section type. If the sh_flags field for this section header includes the attribute SHF_INFO_LINK, then this member represents a section header table index. SHF_INFO_LINK The sh_info field of this section header holds a section header table index. Since sh_info for SHT_REL[A] sections should contain the section header index of the section to which the relocation applies, this is consistent with spec to put this flag. Behavior matches both bfd and gold as well. Differential revision: https://reviews.llvm.org/D33763 llvm-svn: 304531
-
Rafael Espindola authored
This allows us to remove the PageAlign field. It will also allow moving fabricateDefaultCommands earlier. llvm-svn: 304513
-
Rafael Espindola authored
llvm-svn: 304511
-
- Jun 01, 2017
-
-
Rafael Espindola authored
This removes a call to getCmd and allows us to move clearOutputSections earlier. llvm-svn: 304439
-
Rafael Espindola authored
This is probably the correct location for it: next to fabricateDefaultCommands. If we don't have a linker script, we fabricate one. If we have one, we patch it. llvm-svn: 304436
-
Rafael Espindola authored
Now it is as early as it can go: just before synchronize. We now have to move synchronize earlier too. llvm-svn: 304434
-
Rafael Espindola authored
I don't have a testcase in mind, but there is no reason to have the linker script out of sync during a -r link. llvm-svn: 304433
-
Rafael Espindola authored
Also needed to move clearOutputSections earlier. llvm-svn: 304420
-
Rafael Espindola authored
This is needed to move clearOutputSections earlier. llvm-svn: 304419
-
George Rimar authored
This is PR33243. R_GOTONLY_PC_FROM_END was not in a list of link time constant expressions and that was a result of confusiing messages like PR shows: /usr/bin/ld.lld: error: /usr/lib/go/src/runtime/alg.go:47: can't create dynamic relocation R_386_GOTPC against local symbol in readonly segment defined in /tmp/nice/go-link-597453838/go.o Though in reality we just should not have try to create a dynamic relocation for this case at all. Patch fixes the issue. Differential revision: https://reviews.llvm.org/D33717 llvm-svn: 304393
-
George Rimar authored
This is PR33239, previously we segfault on given testcase. Differential revision: https://reviews.llvm.org/D33713 llvm-svn: 304392
-
Rafael Espindola authored
We were looking up sections by name during expression evaluation. By keeping track of forward declarations we can do the lookup during script parsing. Doing the lookup earlier will be more efficient when assignAddresses is run twice and removes two uses of OutputSections. llvm-svn: 304381
-
Rafael Espindola authored
The sections are ordered, so we can just use the first one when looking for the lowest address. llvm-svn: 304369
-
Rafael Espindola authored
llvm-svn: 304368
-
- May 31, 2017
-
-
Rafael Espindola authored
Another step into merging the linker script and non linker script code paths. llvm-svn: 304339
-
Rafael Espindola authored
Before InputSectionBase had an OutputSection pointer, but that was not always valid. For example, if it was a merge section one actually had to look at MergeSec->OutSec. This was brittle and caused bugs like the one fixed by r304260. We now have a single Parent pointer that points to an OutputSection for InputSection, but to a SyntheticSection for merge sections and .eh_frame. This makes it impossible to accidentally access an invalid OutSec. llvm-svn: 304338
-
Rafael Espindola authored
llvm-svn: 304334
-
Rafael Espindola authored
llvm-svn: 304330
-
Rafael Espindola authored
llvm-svn: 304328
-
Rafael Espindola authored
We would crash if a SHF_LINK_ORDER section pointed to a non InputSection section. Since those sections are not merged in order, SHF_LINK_ORDER is pretty meaningless and we can error on that case. llvm-svn: 304327
-
Peter Smith authored
This change converts the writing of the .ARM.exidx sentinel section to use the InputSectionDescriptions instead of OutputSection::Sections this is in preparation for the retirement of OutputSection::Sections. Differential Revision: https://reviews.llvm.org/D33500 llvm-svn: 304289
-
Rafael Espindola authored
This happens when attempting to link shared libraries using exceptions on MIPS. It requires -z notext because clang generates R_MIPS_64 relocations inside .eh_frame. The crash happened because for EhInputSection the OutSec member is null. Patch by Alexander Richardson! llvm-svn: 304260
-
- May 30, 2017
-
-
Rafael Espindola authored
By the time we get here all live sections should have been combined into InputSections. llvm-svn: 304243
-
Rafael Espindola authored
llvm-svn: 304240
-
Peter Smith authored
When there is a linker script with .ARM.exidx in the SECTIONS command we must add the .ARM.exidx sentinel section to the InputSectionDescriptions as well as to OutputSection::Sections. Differential Revision: https://reviews.llvm.org/D33496 llvm-svn: 304206
-
George Rimar authored
llvm-svn: 304197
-
George Rimar authored
I found that during visual inspection of code while wrote different patch. Script in testcase probably have nothing common with real life, but we segfault currently using it. If output section is known NOBITS, there is no need to create writers threads for doing nothing or proccess any filler logic that is useless here. We can just early return, that is what this patch do. DIfferential revision: https://reviews.llvm.org/D33646 llvm-svn: 304192
-
Petr Hosek authored
InputSections may contain MergeInputSection members which trigger a segmentation fault when trying to cast them to InputSection. Differential Revision: https://reviews.llvm.org/D33628 llvm-svn: 304189
-
Petr Hosek authored
While the following expression is handled fine: PROVIDE_HIDDEN(newsym = oldsym + address); The following expression triggers an error because the expression is evaluated as absolute: PROVIDE_HIDDEN(newsym = ALIGN(oldsym, CONSTANT(MAXPAGESIZE)) + address); To avoid this error, we use late evaluation for ALIGN by making the alignment an attribute of the expression itself. Differential Revision: https://reviews.llvm.org/D33629 llvm-svn: 304185
-
Rafael Espindola authored
llvm-svn: 304182
-