aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-10-02Fix a link in the lld 9.0 release notesrelease_90Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@373512 91177308-0d34-0410-b5e6-96231b3b80d8
2019-09-07Fix release notes for the MinGW frontendMartin Storsjo
No --wrap or --emit-relocs options have been added there (only in the ELF linker). git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@371301 91177308-0d34-0410-b5e6-96231b3b80d8
2019-09-06Merging r371013:Hans Wennborg
------------------------------------------------------------------------ r371013 | ruiu | 2019-09-05 07:30:24 +0200 (Thu, 05 Sep 2019) | 13 lines Align output segments correctly Previously, segments were aligned according to their first section's alignment requirements. That was not correct, but segments are also aligned to a page boundary, and a page boundary is usually much larger than a section alignment requirement, so no one noticed this bug before. Now, lld has --nmagic option which sets maxPageSize to 1 to effectively disable page alignment, which reveals the issue. Fixes https://bugs.llvm.org/show_bug.cgi?id=43212 Differential Revision: https://reviews.llvm.org/D67152 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@371197 91177308-0d34-0410-b5e6-96231b3b80d8
2019-09-06Merging r369828:Hans Wennborg
------------------------------------------------------------------------ r369828 | maskray | 2019-08-24 02:41:15 +0200 (Sat, 24 Aug 2019) | 18 lines [ELF] Align the first section of a PT_LOAD even if its type is SHT_NOBITS Reported at https://reviews.llvm.org/D64930#1642223 If the only section of a PT_LOAD is a SHT_NOBITS section (e.g. .bss), we may not align its sh_offset. p_offset of the PT_LOAD will be set to sh_offset, and we will get p_offset!=p_vaddr (mod p_align). If such executable is mapped by the Linux kernel, it will segfault. After D64906, this may happen the non-linker script case. The linker script case has had this issue for a long time. This was fixed by rL321657 (but the test linkerscript/nobits-offset.s failed to test a SHT_NOBITS section), but broken by rL345154. Reviewed By: peter.smith Differential Revision: https://reviews.llvm.org/D66658 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@371196 91177308-0d34-0410-b5e6-96231b3b80d8
2019-09-05ReleaseNotes tweaksHans Wennborg
git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@371037 91177308-0d34-0410-b5e6-96231b3b80d8
2019-09-05Update ReleaseNotes for lld 9.0.Rui Ueyama
git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@371034 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-29ReleaseNotes: remove in-progress warning, remove empty sectionsHans Wennborg
git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@370364 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-29Merging r369184:Hans Wennborg
------------------------------------------------------------------------ r369184 | maskray | 2019-08-17 08:28:03 +0200 (Sat, 17 Aug 2019) | 9 lines [ELF][PPC] Fix getRelExpr for R_PPC64_REL16_HI Fixes https://github.com/ClangBuiltLinux/linux/issues/640 R_PPC64_REL16_HI was incorrectly computed as an R_ABS relocation. rLLD368964 made it a linker failure. Change it to use R_PC to fix the failures. Add ppc64-reloc-rel.s for these R_PPC64_REL* tests. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@370313 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-29Merging r368964:Hans Wennborg
------------------------------------------------------------------------ r368964 | maskray | 2019-08-15 07:22:23 +0200 (Thu, 15 Aug 2019) | 11 lines [ELF][PPC] Improve error message for unknown relocations Like rLLD354040. Previously, for unrecognized relocation types, in -no-pie mode: foo.o: unrecognized reloc 256 In -pie/-shared mode: error: can't create dynamic relocation R_PPC_xxx against symbol: yyy in readonly segment ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@370312 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-26Merging r366447:Hans Wennborg
------------------------------------------------------------------------ r366447 | jdevlieghere | 2019-07-18 17:17:42 +0200 (Thu, 18 Jul 2019) | 19 lines [CMake] Don't set Python_ADDITIONAL_VERSIONS Until recently, Python_ADDITIONAL_VERSIONS was used to limit LLVM's Python support to 2.7. Now that both LLVM and LLDB both support Python 3, there's no longer a need to put an arbitrary limit on this. However, instead of removing the variable, r365692 expanded the list, which has the (presumably unintentional) side-effect of expression preference for Python 3. Instead, as Michal proposed in the original code review, we should just not set the list at all, and let CMake pick whatever Python interpreter you have in your path. This patch removes the Python_ADDITIONAL_VERSIONS variable in llvm, clang and lld. I've also updated the docs with the default behavior and how to force a different Python version to be used. Differential revision: https://reviews.llvm.org/D64894 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@369901 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-26Merging r369694:Hans Wennborg
------------------------------------------------------------------------ r369694 | akhuang | 2019-08-22 21:40:07 +0200 (Thu, 22 Aug 2019) | 1 line [COFF] Add libcall symbols to the link when LTO is being used ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@369883 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-26Merging r366836:Hans Wennborg
------------------------------------------------------------------------ r366836 | nico | 2019-07-23 21:00:01 +0200 (Tue, 23 Jul 2019) | 24 lines ld.lld: Demangle symbols from archives in diagnostics This ports r366573 from COFF to ELF. There are now to toString(Archive::Symbol), one doing MSVC demangling in COFF and one doing Itanium demangling in ELF, so rename these two to toCOFFString() and to toELFString() to not get a duplicate symbol. Nothing ever passes a raw Archive::Symbol to CHECK(), so these not being part of the normal toString() machinery seems ok. There are two code paths in the ELF linker that emits this type of diagnostic: 1. The "normal" one in InputFiles.cpp. This is covered by the tweaked test. 2. An additional one that's only used for libcalls if there's at least one bitcode in the link, and if the libcall symbol is lazy, and lazily loaded from an archive (i.e. not from a lazy .o file). (This code path was added in r339301.) Since all libcall names so far are C symbols and never mangled, the change there is not observable and hence not covered by tests. Differential Revision: https://reviews.llvm.org/D65095 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@369882 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-26Merging r366573:Hans Wennborg
------------------------------------------------------------------------ r366573 | nico | 2019-07-19 15:29:10 +0200 (Fri, 19 Jul 2019) | 6 lines lld-link: Demangle symbols from archives in diagnostics Also add test coverage for thin archives (which are the only way I could come up with to test at least some of the diagnostic changes). Differential Revision: https://reviews.llvm.org/D64927 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@369881 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-23Mention r363078 in the lld release notes.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@369753 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-23Merging r369445:Hans Wennborg
------------------------------------------------------------------------ r369445 | mstorsjo | 2019-08-20 23:08:14 +0200 (Tue, 20 Aug 2019) | 9 lines [COFF] Check errorCount before committing the output file This avoids producing an output file if errors appeared late in the linking process (e.g. while fixing relocations, or as in the test, while checking for multiple resources). If an output file is produced, build tools might not retry building it on rebuilds, even if a previous build failed due to the error return code. Differential Revision: https://reviews.llvm.org/D66491 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@369752 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-23Merging r368145:Hans Wennborg
------------------------------------------------------------------------ r368145 | ruiu | 2019-08-07 12:16:21 +0200 (Wed, 07 Aug 2019) | 3 lines Handle /align option. Differential Revision: https://reviews.llvm.org/D65736 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@369743 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-09[docs][mips] 9.0 Release notesHans Wennborg
By Simon Atanasyan! Differential revision: https://reviews.llvm.org/D65830 git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@368412 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-08Merging r368041:Hans Wennborg
------------------------------------------------------------------------ r368041 | psmith | 2019-08-06 16:13:38 +0200 (Tue, 06 Aug 2019) | 16 lines [ELF][ARM] Fix /DISCARD/ of section with .ARM.exidx section The combineEhSections runs, by design, before processSectionCommands so that input exception sections like .ARM.exidx and .eh_frame are not assigned to OutputSections. Unfortunately if /DISCARD/ removes InputSections that have associated .ARM.exidx sections without discarding the .ARM.exidx synthetic section then we will end up crashing when trying to sort the InputSections in ascending address order. We fix this by filtering out the sections that have been discarded prior to processing the InputSections in finalizeContents(). fixes pr42890 Differential Revision: https://reviews.llvm.org/D65759 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@368270 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-07Merging r368078:Hans Wennborg
------------------------------------------------------------------------ r368078 | quantum | 2019-08-06 22:09:04 +0200 (Tue, 06 Aug 2019) | 18 lines [WebAssembly] Fix null pointer in createInitTLSFunction Summary: `createSyntheticSymbols`, which creates `WasmSym::InitTLS`, is only called when `!config->relocatable`, but this condition is not checked when calling `createInitTLSFunction`. This diff checks `!config->relocatable` before calling `createInitTLSFunction`. Fixes https://github.com/emscripten-core/emscripten/issues/9155. Reviewers: tlively, aheejin, kripken, sbc100 Subscribers: dschuff, jgravelle-google, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65785 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@368137 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-07Merging r367837:Hans Wennborg
------------------------------------------------------------------------ r367837 | mstorsjo | 2019-08-05 13:57:06 +0200 (Mon, 05 Aug 2019) | 10 lines [MinGW] Add an lld specific option for requesting to delay load libraries With GNU tools, delayload is handled completely differently. (One creates a specific delayload import library using dlltool and then links against it instead of the normal import library.) Instead of requiring using -Xlink=-delayload:lib.dll, we can provide an lld specific option for this. Differential Revision: https://reviews.llvm.org/D65728 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@368134 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-06Merging r367836:Hans Wennborg
------------------------------------------------------------------------ r367836 | mstorsjo | 2019-08-05 13:57:00 +0200 (Mon, 05 Aug 2019) | 17 lines [COFF] Omit automatically imported symbols from the symbol table These symbols actually point to the symbol's IAT entry, which obviously is different from the symbol itself (which is imported from a different module and doesn't exist in the current one). Omitting this symbol helps gdb inspect automatically imported symbols, see https://sourceware.org/bugzilla/show_bug.cgi?id=24574 for discussion on the matter. Surprisingly, those extra symbols don't seem to be an issue for gdb when the sources have been built with clang, only with gcc. The actual logic in gdb that this depends on still is unknown, but omitting these symbols from the symbol table is the right thing to do in any case. Differential Revision: https://reviews.llvm.org/D65727 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@367986 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-05Merge r367599 - [COFF] Fix wholearchive with thin archives (PR42388, D65565)Hans Wennborg
git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@367806 91177308-0d34-0410-b5e6-96231b3b80d8
2019-08-01Update release notes for things I've done since the last releaseMartin Storsjo
git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@367611 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-23Merging r366780 and r366784:Hans Wennborg
------------------------------------------------------------------------ r366780 | mstorsjo | 2019-07-23 08:38:04 +0200 (Tue, 23 Jul 2019) | 21 lines [COFF] Unbreak sorting of mingw comdat .tls sections after SVN r363457 Code built for mingw with -fdata-sections will store each TLS variable in a comdat section, named .tls$$<varname>. Normal TLS variables are stored in sections named .tls$ with a trailing dollar, which are sorted after a starter marker (in a later linked object file) in a section named ".tls" (with no dollar suffix), before an ending marker in a section named ".tls$ZZZ". The mingw comdat section suffix stripping introduced in SVN r363457 broke sorting of such tls sections, ending up sorting the stripped .tls$$<varname> sections (stripped to ".tls") before the start marker in the section named ".tls". We could add exceptions to the section name suffix stripping for .tls (and .CRT, where suffixes always should be honored), but the more conservative option is probably the reverse; to only apply the stripping for the normal sections where sorting shouldn't have any effect. Differential Revision: https://reviews.llvm.org/D65018 ------------------------------------------------------------------------ ------------------------------------------------------------------------ r366784 | mstorsjo | 2019-07-23 09:28:23 +0200 (Tue, 23 Jul 2019) | 4 lines [test] Fix the test from the previous commit when run on windows. NFC. Apparently the escaped dollar sign didn't work the same way in "echo -e" on windows buildbots. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@366816 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-22Merging r366445:Hans Wennborg
------------------------------------------------------------------------ r366445 | maskray | 2019-07-18 17:07:42 +0200 (Thu, 18 Jul 2019) | 3 lines [ELF][PPC] Delete ppc64-dynamic-relocations.s I forgot to delete it in r366424. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@366756 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-22Merging r366504:Hans Wennborg
------------------------------------------------------------------------ r366504 | tlively | 2019-07-18 23:50:24 +0200 (Thu, 18 Jul 2019) | 15 lines [WebAssembly] Use passive segments by default when memory is shared Summary: This change makes it so that passing --shared-memory is all a user needs to do to get proper multithreaded code. This default can still be explicitly overridden for any reason using --passive-segments and --active-segments. Reviewers: sbc100, quantum Subscribers: dschuff, jgravelle-google, aheejin, sunfish, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64950 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@366709 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-22Merging r366500:Hans Wennborg
------------------------------------------------------------------------ r366500 | quantum | 2019-07-18 23:18:24 +0200 (Thu, 18 Jul 2019) | 13 lines [WebAssembly] fix bug in finding .tdata segment Summary: Fix bug in `wasm-ld`'s `Writer::createInitTLSFunction` that only finds `.tdata` if it's the first section. Reviewers: tlively, aheejin, sbc100 Reviewed By: sbc100 Subscribers: dschuff, jgravelle-google, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64947 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@366707 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-18Creating release_90 branch off revision 366426Hans Wennborg
git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_90@366428 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-18[ELF][PPC] Refactor some ppc64 testsFangrui Song
Merge ppc64-dynamic-relocations.s into ppc64-plt-stub.s Add ppc64-tls-ie.s: covers ppc64-initial-exec-tls.s and ppc64-tls-ie-le.s Add ppc64-tls-gd.s: covers ppc64-general-dynamic-tls.s, ppc64-gd-to-ie.s, ppc64-tls-gd-le.s, and ppc64-tls-gd-le-small.s git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366424 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-18[lld] Fix vs-diagnostics-version-script test. NFC.Chris Jackson
Removed unnecessary llvm-mc call. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366418 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-18Fixup r366333 (require x86 in test)Diana Picus
Seems to be required for the other added tests too. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366416 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-18[DWARF][RISCV] Add support for RISC-V relocations needed for debug infoAlex Bradbury
When code relaxation is enabled many RISC-V fixups are not resolved but instead relocations are emitted. This happens even for DWARF debug sections. Therefore, to properly support the parsing of DWARF debug info we need to be able to resolve RISC-V relocations. This patch adds: * Support for RISC-V relocations in RelocationResolver * DWARF support for two relocations per object file offset * DWARF changes to support relocations in more DIE fields The two relocations per offset change is needed because some RISC-V relocations (used for label differences) come in pairs. Relocations can also be emitted for DWARF fields where relocations were not yet evaluated. Adding relocation support for some of these fields is essencial. On the other hand, LLVM currently emits RISC-V relocations for fixups that could be safely evaluated, since they can never be affected by code relaxations. This patch also adds relocation support for the fields affected by those extraneous relocations (the DWARF unit entry Length, and the DWARF debug line entry TotalLength and PrologueLength), for testing purposes. Differential Revision: https://reviews.llvm.org/D62062 Patch by Luís Marques. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366402 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-18[ELF][test] Merge/rename some basic*.s testsFangrui Song
basic64be.s is a big-endian powerpc64 test that just duplicates what basic-ppc64.s does. Extend basic-ppc64.s to add big-endian tests. Delete basic64be.s Rename basic32.s to basic-i386.s git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366401 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-17[lld][WebAssembly] Fix handling of comdat functions in init array.Sam Clegg
When hidden symbols are discarded by comdat rules we still want to create a local defined symbol, otherwise `Symbol::isDiscarded()` relies on begin able to check `getChunk->discarded`. This is a followup on rL362769. The comdat.ll test was previously GC'ing the `__wasm_call_ctors` functions so `do_init` was not actually being included in the link. Once that function was included in triggered the crash bug that this change addresses. Fixes: https://github.com/emscripten-core/emscripten/issues/8981 Differential Revision: https://reviews.llvm.org/D64872 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366358 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-17[lld] Add Visual Studio compatible diagnosticsChris Jackson
Summary: Add a --vs-diagnostics flag that alters the format of diagnostic output to enable source hyperlinks in Visual Studio. Differential Revision: https://reviews.llvm.org/D58484 Reviewed by: ruiu git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366333 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-17[ELF] Delete redundant pageAlign at PT_GNU_RELRO boundaries after D58892Fangrui Song
Summary: After D58892 split the RW PT_LOAD on the PT_GNU_RELRO boundary, the new layout is: PT_LOAD(PT_GNU_RELRO(.data.rel.ro .bss.rel.ro)) PT_LOAD(.data. .bss) The two pageAlign() calls at PT_GNU_RELRO boundaries are redundant due to the existence of PT_LOAD. Reviewers: grimar, peter.smith, ruiu, espindola Reviewed By: ruiu Subscribers: sfertile, atanasyan, emaste, arichardson, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64854 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366307 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16Add REQUIRES: x86 to safeseh-no.s test for x86Reid Kleckner
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366273 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16[WebAssembly] Implement thread-local storage (local-exec model)Guanzhong Chen
Summary: Thread local variables are placed inside a `.tdata` segment. Their symbols are offsets from the start of the segment. The address of a thread local variable is computed as `__tls_base` + the offset from the start of the segment. `.tdata` segment is a passive segment and `memory.init` is used once per thread to initialize the thread local storage. `__tls_base` is a wasm global. Since each thread has its own wasm instance, it is effectively thread local. Currently, `__tls_base` must be initialized at thread startup, and so cannot be used with dynamic libraries. `__tls_base` is to be initialized with a new linker-synthesized function, `__wasm_init_tls`, which takes as an argument a block of memory to use as the storage for thread locals. It then initializes the block of memory and sets `__tls_base`. As `__wasm_init_tls` will handle the memory initialization, the memory does not have to be zeroed. To help allocating memory for thread-local storage, a new compiler intrinsic is introduced: `__builtin_wasm_tls_size()`. This instrinsic function returns the size of the thread-local storage for the current function. The expected usage is to run something like the following upon thread startup: __wasm_init_tls(malloc(__builtin_wasm_tls_size())); Reviewers: tlively, aheejin, kripken, sbc100 Subscribers: dschuff, jgravelle-google, hiraditya, sunfish, jfb, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D64537 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366272 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16Mark new test as requiring an x86 backend for LTO native object generationReid Kleckner
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366245 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16Fix linkrepro.test after safeseh:no changeReid Kleckner
Add the @feat.00 flag to the input. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366244 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16[COFF] Implement /safeseh:no and check @feat.00 flags by defaultReid Kleckner
Summary: Fixes PR41828. Before this, LLD always emitted SafeSEH chunks and defined __safe_se_handler_table & size. Now, /safeseh:no leaves those undefined. Additionally, we were checking for the safeseh @feat.00 flag in two places: once to emit errors, and once during safeseh table construction. The error was set up to be off by default, but safeseh is supposed to be on by default. I combined the two checks, so now LLD emits an error if an input object lacks @feat.00 and safeseh is enabled. This caused the majority of 32-bit LLD tests to fail, since many test input object files lack @feat.00 symbols. I explicitly added -safeseh:no to those tests to preserve behavior. Finally, LLD no longer sets IMAGE_DLL_CHARACTERISTICS_NO_SEH if any input file wasn't compiled for safeseh. Reviewers: mstorsjo, ruiu, thakis Reviewed By: ruiu, thakis Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D63570 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366238 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16[COFF] Rename variale references in comments after VariableName -> ↵Fangrui Song
variableName change git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366193 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16[WebAssembly] Rename variale references in comments after VariableName -> ↵Fangrui Song
variableName change git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366192 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16[NFC][test] Fix for riscv tests.Puyan Lotfi
Following tests need updating for: https://reviews.llvm.org/D55277 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366183 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16[ELF] Fix variable names in comments after VariableName -> variableName changeFangrui Song
Also fix some typos. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366181 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16Fix parameter name comments using clang-tidy. NFC.Rui Ueyama
This patch applies clang-tidy's bugprone-argument-comment tool to LLVM, clang and lld source trees. Here is how I created this patch: $ git clone https://github.com/llvm/llvm-project.git $ cd llvm-project $ mkdir build $ cd build $ cmake -GNinja -DCMAKE_BUILD_TYPE=Debug \ -DLLVM_ENABLE_PROJECTS='clang;lld;clang-tools-extra' \ -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DLLVM_ENABLE_LLD=On \ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ../llvm $ ninja $ parallel clang-tidy -checks='-*,bugprone-argument-comment' \ -config='{CheckOptions: [{key: StrictMode, value: 1}]}' -fix \ ::: ../llvm/lib/**/*.{cpp,h} ../clang/lib/**/*.{cpp,h} ../lld/**/*.{cpp,h} git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366177 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-16Re-land "[DebugInfo] Move function from line table to the prologue (NFC)"Jonas Devlieghere
In LLDB, when parsing type units, we don't need to parse the whole line table. Instead, we only need to parse the "support files" from the line table prologue. To make that possible, this patch moves the respective functions from the LineTable into the Prologue. Because I don't think users of the LineTable should have to know that these files come from the Prologue, I've left the original methods in place, and made them redirect to the LineTable. Differential revision: https://reviews.llvm.org/D64774 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366164 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-15[WebAssembly] Rename except_ref type to exnrefHeejin Ahn
Summary: We agreed to rename `except_ref` to `exnref` for consistency with other reference types in https://github.com/WebAssembly/exception-handling/issues/79. This also renames WebAssemblyInstrExceptRef.td to WebAssemblyInstrRef.td in order to use the file for other reference types in future. Reviewers: dschuff Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64703 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366145 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-15Reland "[COFF] Add null check in case of symbols defined in LTO blobs"Reid Kleckner
This reverts r365990 (git commit 1a6053ebc61cb0b8146f5ca27b74859a9a91e0a3) The test no longer depends on the Visual C++ libraries. I confirmed that the crash still reproduces with the new test case if I remove the null check. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366095 91177308-0d34-0410-b5e6-96231b3b80d8
2019-07-15[LLD][ELF] - Minor simplification. NFC.George Rimar
This removes a call to `object::getSymbol<ELFT>`. We used this function in a next way: it was given an array of symbols and index and returned either a symbol at the index given or a error. This function was removed in D64631. (rL366052, but was reverted because of LLD compilation error that I didn't know about). It does not make much sense to keep this function on LLVM side only for LLD, because having only a list of symbols and the index it is not able to produce a valueable error message about context anyways. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@366057 91177308-0d34-0410-b5e6-96231b3b80d8