- Jan 10, 2017
-
-
Rafael Espindola authored
This actually simplifies the code a bit as now all local symbols are handled uniformly. This should fix the build of www/webkit2-gtk3. llvm-svn: 291569
-
- Jan 09, 2017
-
-
Meador Inge authored
This patch allows for linker scripts to assign a new value to a symbol that is already defined (either in an object file or the linker script itself). llvm-svn: 291459
-
Rui Ueyama authored
Previously, files added using INCLUDE directive weren't added to reproduce archives. In this patch, I defined a function to open a file and use that from Driver and LinkerScript. llvm-svn: 291413
-
- Jan 05, 2017
-
-
Rafael Espindola authored
After Mark's patch I was wondering what was the rationale for the ELF spec requiring us to merge only sections with matching flags and types. I tried emailing https://groups.google.com/forum/#!forum/generic-abi, but looks like my emails are not being posted (the list is probably moderated). I emailed Cary Coutant instead. Cary pointed out that the section was a late addition and didn't got the scrutiny it deserved. Given that and the problems found by implementing the letter of the standard, I propose changing lld to merge all sections with the same name and issue errors if the types or some critical flags are different. This should allow an unmodified firefox linked with lld to run. This also merges some code with the linkerscript path. llvm-svn: 291107
-
- Dec 23, 2016
-
-
Rui Ueyama authored
We managed new MemoryBuffers in different ways in LinkerScript.cpp and Driver.cpp. With this patch, they are managed in the same way. llvm-svn: 290411
-
- Dec 22, 2016
-
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D27194 llvm-svn: 290339
-
- Dec 21, 2016
-
-
George Rimar authored
From https://sourceware.org/binutils/docs/ld/File-Commands.html: The file will be searched for in the current directory, and in any directory specified with the -L option. Patch done by Alexander Richardson. Differential revision: https://reviews.llvm.org/D27831 llvm-svn: 290247
-
Rui Ueyama authored
DefinedSynthetic is not created for a real ELF object, so it doesn't have to be a template function. It has a virtual st_value, which is either 32 bit or 64 bit, but we can simply use 64 bit. llvm-svn: 290241
-
George Rimar authored
It was revealed by D27831. If we have linkerscript that includes another one that sets OUTPUT for example: RUN: echo "INCLUDE \"foo.script\"" > %t.script RUN: echo "OUTPUT(\"%t.out\")" > %T/foo.script then we do: void ScriptParser::readInclude() { ... std::unique_ptr<MemoryBuffer> &MB = *MBOrErr; tokenize(MB->getMemBufferRef()); OwningMBs.push_back(std::move(MB)); } void ScriptParser::readOutput() { ... Config->OutputFile = unquote(Tok); ... } Problem is that OwningMBs are destroyed after script parser do its job. So all Toks are dead and Config->OutputFile points to destroyed data. Patch suggests to save all included scripts into using string Saver. Differential revision: https://reviews.llvm.org/D27987 llvm-svn: 290238
-
- Dec 19, 2016
-
-
Rafael Espindola authored
This handles all the corner cases if setting a section address: - If the address is too low, we cannot allocate the program headers. - If the load address is lowered, we have to do that before finalize This also shares some code with the linker script since it was already hitting similar cases. This is used by the freebsd boot loader. It is not clear if we need to support this with a non binary output, but it is not as bad as I was expecting. llvm-svn: 290136
-
Rafael Espindola authored
llvm-svn: 290115
-
- Dec 18, 2016
-
-
Rui Ueyama authored
I thought for a while about how to remove it, but it looks like we can just copy the file for now. Of course I'm not happy about that, but it's just less than 50 lines of code, and we already have duplicate code in Error.h and some other places. I want to solve them all at once later. Differential Revision: https://reviews.llvm.org/D27819 llvm-svn: 290062
-
- Dec 16, 2016
-
-
Rui Ueyama authored
Fixes http://llvm.org/PR31129 Patch by Alexander Richardson! Differential Revision: https://reviews.llvm.org/D27848 llvm-svn: 289968
-
- Dec 15, 2016
-
-
George Rimar authored
llvm-svn: 289823
-
George Rimar authored
PR31335 shows that we do that in next case: SECTIONS { .text 0x2000 : {. = 0x100 ; *(.text) } } though documentations says that "If . is used inside a section description however, it refers to the byte offset from the start of that section, not an absolute address. " looks does not work as documented in bfd (as mentioned in comments for PR31335). Until we find out the expected behavior was suggested at least not to 'crash', what we do after trying to generate huge file. Differential revision: https://reviews.llvm.org/D27712 llvm-svn: 289782
-
- Dec 09, 2016
-
-
Rafael Espindola authored
llvm-svn: 289224
-
Meador Inge authored
The current implementation of the output section data store commands can only handle integer literals, but it should really handle arbitrary expressions [1]. This commit fixes that. [1] https://sourceware.org/binutils/docs-2.27/ld/Output-Section-Data.html#Output-Section-Data Differential Revision: https://reviews.llvm.org/D27561 llvm-svn: 289152
-
- Dec 08, 2016
-
-
Rui Ueyama authored
llvm-svn: 289084
-
Rafael Espindola authored
The feature is documented as ----------------------------- The format of the dynamic list is the same as the version node without scope and node name. See *note VERSION:: for more information. -------------------------------- And indeed qt uses a dynamic list with an 'extern "C++"' in it. With this patch we support that The change to gc-sections-shared makes us match bfd. Just because we kept bar doesn't mean it has to be in the dynamic symbol table. The changes to invalid-dynamic-list.test and reproduce.s are because of the new parser. The changes to version-script.s are the only case where we change behavior with regards to bfd, but I would like to see a mix of --version-script and --dynamic-list used in the wild before complicating the code. llvm-svn: 289082
-
Rafael Espindola authored
It is used by Qt. llvm-svn: 289074
-
Rafael Espindola authored
Thanks to George Rimar for pointing it out. llvm-svn: 289020
-
- Dec 06, 2016
-
-
George Rimar authored
Minor patch to fix PR31288 OpenBSD commit: https://github.com/openbsd/src/commit/d39116912b9536bd77326260dc5c6e593fd4ee24 Differential revision: https://reviews.llvm.org/D27458 llvm-svn: 288832
-
- Dec 05, 2016
-
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D27335 llvm-svn: 288678
-
- Dec 01, 2016
-
-
Rui Ueyama authored
This patch also renames currentLocation getCurrentLocation. llvm-svn: 288308
-
- Nov 29, 2016
-
-
George Rimar authored
This change continues what was started by D27040 Now all allocatable synthetics should be available from script side. Differential revision: https://reviews.llvm.org/D27131 llvm-svn: 288150
-
- Nov 28, 2016
-
-
George Rimar authored
Previously Config->SingleRoRx was set in createFiles() and used HasSections. This change moves it to readConfigs at place of common flags handling, and adds logic that sets this flag separatelly from ScriptParser if SECTIONS present. llvm-svn: 288021
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D27108 llvm-svn: 288019
-
- Nov 27, 2016
-
-
Rafael Espindola authored
Unfortunatelly some scripts look like kernphys = ... . = .... and the expectation in that every orphan section is after the assignment. llvm-svn: 287996
-
Rafael Espindola authored
This is an horrible special case, but seems to match bfd's behaviour and is important for avoiding placing an orphan section before the expected start of the file. llvm-svn: 287994
-
- Nov 26, 2016
-
-
Rafael Espindola authored
This matches the behaviour of bfd ld. Using 0 was causing problems with strip, which would remove these sections. llvm-svn: 287969
-
- Nov 25, 2016
-
-
Rui Ueyama authored
llvm-svn: 287944
-
- Nov 24, 2016
-
-
Rui Ueyama authored
HasError was always true if ErrorCount > 0, so we can use ErrorCount instead. llvm-svn: 287849
-
- Nov 22, 2016
-
-
Meador Inge authored
GNU LD allows `ASSERT` commands to be in output section descriptions. Note that LD also mandates that `ASSERT` commands in this context must end with a semicolon. llvm-svn: 287677
-
- Nov 21, 2016
-
-
Rafael Espindola authored
Config->MaxPageSize is what we use for the segment alignment, so that is the one that we have to use for placing the header. llvm-svn: 287569
-
Rafael Espindola authored
If the linker script has SECTIONS, the address computation is now always done in LinkerScript::assignAddresses, like for any other section. Before fixHeaders would do a tentative computation that assignAddresses would sometimes override. This patch also splits the cases where assignAddresses needs to add the headers to the first PT_LOAD and the address computation. The net effect is that we no longer create an empty page for no reason in the included test case, which matches bfd behavior. llvm-svn: 287565
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D26795 llvm-svn: 287547
-
Rui Ueyama authored
This patch rearranges code a bit to make it easy to explain. llvm-svn: 287515
-
Rui Ueyama authored
llvm-svn: 287514
-
Rui Ueyama authored
Previously, we set (uintptr_t)-1 to InputSectionBase::OutSec to record that a section has already been set to be assigned to some output section by linker scripts. Later, we restored nullptr to the pointer to use the field for the original purpose. That overloading is not very easy to understand. This patch adds a bit flag for that purpose, so that we don't need to piggyback the flag on an unrelated pointer. llvm-svn: 287508
-
- Nov 19, 2016
-
-
Rui Ueyama authored
llvm-svn: 287456
-