- Nov 25, 2016
-
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D27098 llvm-svn: 287914
-
George Rimar authored
This is important for cases like: .sdata : { *(.got.plt .got) ... } That was not supported before as there was no way to get access to synthetic sections from script. More details on review page. Differential revision: https://reviews.llvm.org/D27040 llvm-svn: 287913
-
- Nov 24, 2016
-
-
Rui Ueyama authored
llvm-svn: 287901
-
Rui Ueyama authored
This patch changes the error message from too many errors emitted, stopping now to too many errors emitted, stopping now (use -error-limit=0 to see all errors) Thanks for Sean for the suggestion! llvm-svn: 287900
-
Rui Ueyama authored
Differential Revision: https://reviews.llvm.org/D27065 llvm-svn: 287899
-
Rafael Espindola authored
llvm-svn: 287895
-
Peter Smith authored
The .ARM.exidx table has an entry for each function with the first entry giving the start address of the function, the table is sorted in ascending order of function address. Given a PC value, the unwinder will search the table for the entry that contains the PC value. If the table entry happens to be the last, the range of the addresses that the final unwinding table describes will extend to the end of the address space. To prevent an incorrect address outside the address range of the program matching the last entry we follow ld.bfd's example and add a sentinel EXIDX_CANTUNWIND entry at the end of the table. This gives the final real table entry an upper bound. In addition the llvm libunwind unwinder currently depends on the presence of a sentinel entry (PR31091). Differential revision: https://reviews.llvm.org/D26977 llvm-svn: 287869
-
George Rimar authored
llvm-svn: 287860
-
Rui Ueyama authored
llvm-svn: 287850
-
Rui Ueyama authored
HasError was always true if ErrorCount > 0, so we can use ErrorCount instead. llvm-svn: 287849
-
- Nov 23, 2016
-
-
Rui Ueyama authored
Previously, if a symbol specified by -e or ENTRY() is not found, we didn't set entry point address. That is incompatible with GNU because GNU linkers set the first address of .text to entry. This patch implement that behavior. llvm-svn: 287836
-
Simon Atanasyan authored
Offset between beginning of a .got section and _gp symbols used in MIPS GOT relocations calculations. Usually the expression looks like VA + Offset - GP, where VA is the .got section address, Offset - offset of the GOT entry, GP - offset between .got and _gp. Also there two "magic" symbols _gp_disp and __gnu_local_gp which hold the offset mentioned above. These symbols might be referenced by MIPS relocations. Now the linker always defines _gp symbol and uses hardcoded value for its initialization. So offset between .got and _gp is 0x7ff0. The _gp_disp and __gnu_local_gp defined if required and initialized by 0x7ff0. In fact that is not correct because _gp symbol might be defined by a linker script and holds arbitrary value. In that case we need to use this value in relocation calculation and initialize _gp_disp and __gnu_local_gp properly. The patch fixes the problem and completes fixing the bug #30311. https://llvm.org/bugs/show_bug.cgi?id=30311 Differential revision: https://reviews.llvm.org/D27036 llvm-svn: 287832
-
Rui Ueyama authored
llvm-svn: 287830
-
Rui Ueyama authored
They are essentially the same in this context, so I prefer the one that doesn't need `Twine::`. llvm-svn: 287814
-
Rafael Espindola authored
Looks like we have no 32 bit bot that builds with mips support. llvm-svn: 287799
-
Rui Ueyama authored
llvm-svn: 287797
-
Rui Ueyama authored
llvm-svn: 287794
-
Rui Ueyama authored
This is in the context of https://llvm.org/bugs/show_bug.cgi?id=31109. When LLD prints out errors for relocations, it tends to print out extremely large number of errors (like millions) because it would print out one error per relocation. This patch makes LLD bail out if it prints out more than 20 errors. You can configure the limitation using -error-limit argument. -error-limit=0 means no limit. I chose the flag name because Clang has the same feature as -ferror-limit. "f" doesn't make sense to us, so I omitted it. Differential Revision: https://reviews.llvm.org/D26981 llvm-svn: 287789
-
Rui Ueyama authored
r287727 was not a change that broke buildbots; the other change (r287726) that I made to LLVM broke them. llvm-svn: 287788
-
Rui Ueyama authored
We have different functions to stringize objects to construct error messages. For InputFile, we have getFilename, and for InputSection, we have getName. You had to memorize them. I think this is the case where the function overloading comes in handy. This patch defines toString() functions that are overloaded for all these types, so that you just call it in error(). Differential Revision: https://reviews.llvm.org/D27030 llvm-svn: 287787
-
Ed Maste authored
Align to the large page size (known as a superpage or huge page). FreeBSD automatically promotes large, superpage-aligned allocations. Differential Revision: https://reviews.llvm.org/D27042 llvm-svn: 287782
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D26970 llvm-svn: 287753
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D26980 llvm-svn: 287751
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D26914 llvm-svn: 287750
-
Rui Ueyama authored
So that we have less number of overloaded functions. llvm-svn: 287745
-
Rui Ueyama authored
llvm-svn: 287742
-
Rui Ueyama authored
There are two ways to set symbol versions. One way is to use symbol definition file, and the other is to embed version names to symbol names. In the latter way, symbol name is in the form of `foo@version1` where `foo` is a real name and `version1` is a version. We were parsing symbol names in insert(). That seems unnecessarily too early. We can do it later after we resolve all symbols. Doing it lazily is a good thing because it makes code easier to read (because now we have a separate pass to parse symbol names). Also it could slightly improve performance because if two identical symbols have versions, we now parse them only once. llvm-svn: 287741
-
Simon Atanasyan authored
For now MipsGotSection class is not ready for concurrent access from multiple threads. The problem is in the getPageEntryOffset method. It changes state of MipsGotSection object and might be called from different threads at the same time. So turn Threads off for this target. It's a temporary solution. The patch fixes MipsGotSection::getPageEntryOffset is almost ready. Differential revision: https://reviews.llvm.org/D27035 llvm-svn: 287740
-
Simon Atanasyan authored
llvm-svn: 287738
-
Rui Ueyama authored
Previously, we stored offsets in string tables to symbols, so you needed to pass a string table to get a symbol name. This patch stores const char pointers instead to eliminate the need to pass a string table. llvm-svn: 287737
-
Rui Ueyama authored
It broke buildbots. llvm-svn: 287730
-
Rui Ueyama authored
llvm-svn: 287727
-
Rui Ueyama authored
llvm-svn: 287714
-
- Nov 22, 2016
-
-
Rui Ueyama authored
Fixes PR31126. llvm-svn: 287711
-
Rafael Espindola authored
llvm-svn: 287701
-
Davide Italiano authored
Now that lld switched to lib/LTO, which always calls setDataLayout(), we don't need this check anymore. Thanks to Peter for pointing out! llvm-svn: 287699
-
Rui Ueyama authored
llvm-svn: 287692
-
Rui Ueyama authored
We cannot have MipsRldMap class and In<ELFT>::MipsRldMap. Renamed the class. llvm-svn: 287683
-
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
-
Eugene Leviant authored
Differential revision: https://reviews.llvm.org/D26958 llvm-svn: 287675
-