aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-10-21[LLD] [COFF] Fix use of uninitialized memory since SVN r375390HEADmasterMartin Storsjo
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375400 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-21[LLD] [COFF] Use the local dwarf code instead of Symbolizer for resolving ↵Martin Storsjo
code locations. NFC. As we now have code that parses the dwarf info for variable locations, we can use that instead of relying on the higher level Symbolizer library, reducing the previous two different dwarf codepaths into one. Differential Revision: https://reviews.llvm.org/D69198 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375391 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-21[LLD] Move duplicated dwarf parsing code to the Common library. NFC.Martin Storsjo
Differential Revision: https://reviews.llvm.org/D69197 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375390 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-20[LLD][ELF] - Update tests after yaml2obj tool update.George Rimar
yaml2obj doesn't create .symtab by default anymore. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375360 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-19Move endian constant from Host.h to SwapByteOrder.h, prune includeReid Kleckner
Works on this dependency chain: ArrayRef.h -> Hashing.h -> --CUT-- Host.h -> StringMap.h / StringRef.h ArrayRef is very popular, but Host.h is rarely needed. Move the IsBigEndianHost constant to SwapByteOrder.h. Clients of that header are more likely to need it. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375316 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-18[WebAssembly] Allow multivalue signatures in object filesThomas Lively
Summary: Also changes the wasm YAML format to reflect the possibility of having multiple return types and to put the returns after the params for consistency with the binary encoding. Reviewers: aheejin, sbc100 Subscribers: dschuff, jgravelle-google, hiraditya, sunfish, arphaman, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D69156 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375283 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-18[lld][coff] Add missing dependency to fix build.Michael Liao
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375238 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-18[LLD] [COFF] Try to report source locations for duplicate symbolsMartin Storsjo
This fixes the second part of PR42407. For files with dwarf debug info, it manually loads and iterates .debug_info to find the declared location of variables, to allow reporting them. (This matches the corresponding code in the ELF linker.) For functions, it uses the existing getFileLineDwarf which uses LLVMSymbolizer for translating addresses to file lines. In object files with codeview debug info, only the source location of duplicate functions is printed. (And even there, only for the first input file. The getFileLineCodeView function requires the object file to be fully loaded and initialized to properly resolve source locations, but duplicate symbols are reported at a stage when the second object file isn't fully loaded yet.) Differential Revision: https://reviews.llvm.org/D68975 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375218 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-18Update release notesRui Ueyama
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375206 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-17[lld][test] Speculative fix for lld+windows failuresJordan Rupprecht
This updates some more places using `%T` to use `%/T` for path normalization. If this does not work, this and r375126 should be reverted together. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375131 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-17[lld][test] Fix use of escape character in an lld test on WindowsJordan Rupprecht
Summary: Glob support was improved to accept `\` as an escape character in r375051, but reverted as r375052 due to a failure in this test on Windows. The reason this failure seems Windows specific is because the path separator `\` is currently being relied on to be interpreted literally instead of as an escape character. Per documentation on linker input section wildcard patterns, this seems to be a bug in lld accepting `\` as a literal instead of an escape character. For example: ``` SECTIONS{ .foo :{ /path/to/foo.o(.foo) }} # OK: standard UNIX path SECTIONS{ .foo :{ C:/path/to/foo.o(.foo) }} # OK: windows accepts slashes in either direction SECTIONS{ .foo :{ C:\\path\\to\\foo.o(.foo) }} # OK: escape character used to match a literal \ SECTIONS{ .foo :{ C:\path\to\foo.o(.foo) }} # BAD: this actually matches the path C:pathtofoo.o(.foo) ``` This avoids the problem in the test by using `%/T` in place of `%T` to normalize the path separator to `/`, which windows should also accept. This patch just fixes the test, and glob support will be be relanded separately. For a sample buildbot error, see: http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/11578/steps/stage%201%20check/logs/stdio Reviewers: evgeny777, ruiu, MaskRay, espindola Reviewed By: ruiu, MaskRay Subscribers: emaste, arichardson, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D69074 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375126 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-17[LLD][ELF] - Update test cases after llvm-readobj output format change.George Rimar
The change was: SHT_GNU_verdef { -> VersionDefinitions [ SHT_GNU_verneed { -> VersionRequirements [ Version symbols [ -> VersionSymbols [ EH_FRAME Header [ -> EHFrameHeader { git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375096 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-17[lld][WebAssebmly] Preserve custom import attributes with LTOSam Clegg
Undefined symbols in WebAssembly can come with custom `import-module` and `import-field` attributes. However when reading symbols from bitcode object files during LTO those curtom attributes are not available. Once we compile the LTO object and read in the symbol table from the object file we have access to these custom attributes. In this case, when undefined symbols are added and a symbol already exists in the SymbolTable we can't simple return it, we may need to update the symbol's attributes. Fixes: PR43211 Differential Revision: https://reviews.llvm.org/D68959 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375081 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-17[lld][WebAssembly] Fix for weak references to data symbols in archivesSam Clegg
Fix a bug where were not handling relocations against weakly undefined data symbol. Add a test for this case. Also ensure that the weak references to data symbols are not pulled in from archive files by default (but are if `-u <name>` is added to the command line). Fixes: PR43696 Differential Revision: https://reviews.llvm.org/D69073 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375077 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-15[WebAssembly] Elide data segments for .bss sectionsThomas Lively
Summary: WebAssembly memories are zero-initialized, so when module does not import its memory initializing .bss sections is guaranteed to be a no-op. To reduce binary size and initialization time, .bss sections are simply not emitted into the final binary unless the memory is imported. Reviewers: sbc100 Subscribers: dschuff, jgravelle-google, aheejin, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68965 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374940 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-15[lld][WebAssembly] Fix static linking of -fPIC code with external undefined dataJames Clarke
Reviewers: ruiu, sbc100 Reviewed By: sbc100 Subscribers: dschuff, jgravelle-google, aheejin, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68991 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374913 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-15[lld] Check for branch range overflows.Sid Manning
Differential Revision: https://reviews.llvm.org/D68875 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374891 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-15[LLD] [COFF] Update a leftover comment after SVN r374869. NFC.Martin Storsjo
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374874 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-15[LLD] [COFF] Fix -Wmissing-field-initializers warnings. NFC.Martin Storsjo
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374873 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-15[LLD] [COFF] Wrap file location pair<StringRef,int> in Optional<>. NFC.Martin Storsjo
This makes use of it slightly clearer, and makes it match the same construct in the lld ELF linker. Differential Revision: https://reviews.llvm.org/D68935 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374869 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-14[llvm-objdump] Adjust spacing and field width for --section-headersJordan Rupprecht
Summary: - Expand the "Name" column past 13 characters when any of the section names are longer. Current behavior is a staggard output instead of a nice table if a single name is longer. - Only print the required number of hex chars for addresses (i.e. 8 characters for 32-bit, 16 characters for 64-bit) - Fix trailing spaces Reviewers: grimar, jhenderson, espindola Reviewed By: grimar Subscribers: emaste, sbc100, arichardson, aheejin, seiya, llvm-commits, MaskRay Tags: #llvm Differential Revision: https://reviews.llvm.org/D68730 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374795 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-11[LLD][ELF] - Update test cases after llvm-readobj change.George Rimar
https://reviews.llvm.org/D68704 changed the output format. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374542 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10Change test case so that it accepts backslashes in file path, in the case ↵Amy Huang
that the test runs on Windows git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374473 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10[PDB] Fix bug when using multiple PCH header objects with the same name.Zachary Turner
A common pattern in Windows is to have all your precompiled headers use an object named stdafx.obj. If you've got a project with many different static libs, you might use a separate PCH for each one of these. During the final link step, a file from A might reference the PCH object from A, but it will have the same name (stdafx.obj) as any other PCH from another project. The only difference will be the path. For example, A might be A/stdafx.obj while B is B/stdafx.obj. The existing algorithm checks only the filename that was passed on the command line (or stored in archive), but this is insufficient in the case where relative paths are used, because depending on the command line object file / library order, it might find the wrong PCH object first resulting in a signature mismatch. The fix here is to simply check whether the absolute path of the PCH object (which is stored in the input obj file for the file that references the PCH) *ends with* the full relative path of whatever is specified on the command line (or is in the archive). Differential Revision: https://reviews.llvm.org/D66431 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374442 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10[LLD][ELF] Fix stale comments about doing ICFRussell Gallop
Differential Revision: https://reviews.llvm.org/D68396 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374362 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10Make nullptr check more robustRui Ueyama
The only condition that isecLoc becomes null is Out::bufferStart == nullptr, isec->getParent()->offset == 0, and isec->outSecOff == 0. We can check the first condition only once. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374332 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10[lld] getErrPlace(): don't perform arithmetics on maybe-null pointerRoman Lebedev
isecLoc there can be null, but at the same time isec->getSize() may be non-null. It is UB to offset a nullptr.The most straight-forward fix here appears to perform casts+normal integral arithmetics. FAIL: lld :: ELF/invalid/invalid-relocation-aarch64.test (1158 of 2217) ******************** TEST 'lld :: ELF/invalid/invalid-relocation-aarch64.test' FAILED ******************** Script: -- : 'RUN: at line 2'; /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/bin/yaml2obj /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/test/ELF/invalid/invalid-relocation-aarch64.test -o /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/tools/lld/test/ELF/invalid/Output/invalid-relocation-aarch64.test.tmp.o : 'RUN: at line 3'; not /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/bin/ld.lld /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/tools/lld/test/ELF/invalid/Output/invalid-relocation-aarch64.test.tmp.o -o /dev/null 2>&1 | /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/bin/FileCheck /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/test/ELF/invalid/invalid-relocation-aarch64.test -- Exit Code: 1 Command Output (stderr): -- /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/test/ELF/invalid/invalid-relocation-aarch64.test:4:10: error: CHECK: expected string not found in input # CHECK: error: unknown relocation (1024) against symbol foo ^ <stdin>:1:1: note: scanning from here /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/ELF/Target.cpp:100:41: runtime error: applying non-zero offset 24 to null pointer ^ <stdin>:1:118: note: possible intended match here /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/ELF/Target.cpp:100:41: runtime error: applying non-zero offset 24 to null pointer ^ -- ******************** Testing: 0.. 10.. 20.. 30.. 40.. 50. FAIL: lld :: ELF/invalid/invalid-relocation-x64.test (1270 of 2217) ******************** TEST 'lld :: ELF/invalid/invalid-relocation-x64.test' FAILED ******************** Script: -- : 'RUN: at line 2'; /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/bin/yaml2obj /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/test/ELF/invalid/invalid-relocation-x64.test -o /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/tools/lld/test/ELF/invalid/Output/invalid-relocation-x64.test.tmp1.o : 'RUN: at line 3'; echo ".global foo; foo:" > /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/tools/lld/test/ELF/invalid/Output/invalid-relocation-x64.test.tmp2.s : 'RUN: at line 4'; /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/bin/llvm-mc /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/tools/lld/test/ELF/invalid/Output/invalid-relocation-x64.test.tmp2.s -o /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/tools/lld/test/ELF/invalid/Output/invalid-relocation-x64.test.tmp2.o -filetype=obj -triple x86_64-pc-linux : 'RUN: at line 5'; not /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/bin/ld.lld /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/tools/lld/test/ELF/invalid/Output/invalid-relocation-x64.test.tmp1.o /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/tools/lld/test/ELF/invalid/Output/invalid-relocation-x64.test.tmp2.o -o /dev/null 2>&1 | /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/bin/FileCheck /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/test/ELF/invalid/invalid-relocation-x64.test -- Exit Code: 1 Command Output (stderr): -- /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/test/ELF/invalid/invalid-relocation-x64.test:6:10: error: CHECK: expected string not found in input # CHECK: error: unknown relocation (152) against symbol foo ^ <stdin>:1:1: note: scanning from here /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/ELF/Target.cpp:100:41: runtime error: applying non-zero offset 24 to null pointer ^ <stdin>:1:118: note: possible intended match here /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm-project/lld/ELF/Target.cpp:100:41: runtime error: applying non-zero offset 24 to null pointer ^ -- ******************** Testing: 0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. Testing Time: 20.73s ******************** Failing Tests (2): lld :: ELF/invalid/invalid-relocation-aarch64.test lld :: ELF/invalid/invalid-relocation-x64.test git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374329 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10[COFF] Wrap definitions in namespace lld { namespace coff {. NFCFangrui Song
Similar to D67323, but for COFF. Many lld/COFF/ files already use `namespace lld { namespace coff {`. Only a few need changing. Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D68772 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374314 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10Use error instead of fatal to report usage errorsRui Ueyama
Differential Revision: https://reviews.llvm.org/D68768 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374297 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10[LLD] [MinGW] Look for other library patterns with -lMartin Storsjo
GNU ld looks for a number of other patterns than just lib<name>.dll.a and lib<name>.a. GNU ld does support linking directly against a DLL without using an import library. If that's the only match for a -l argument, point out that the user needs to use an import library, instead of leaving the user with a puzzling message about the -l argument not being found at all. Also convert an existing case of fatal() into error(). Differential Revision: https://reviews.llvm.org/D68689 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374292 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10[LLD] [MinGW] Add a testcase for -l:name style library options. NFC.Martin Storsjo
Differential Revision: https://reviews.llvm.org/D68688 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374291 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10Improve error message for bad SHF_MERGE sectionsRui Ueyama
This patch adds a section name to error messages. Differential Revision: https://reviews.llvm.org/D68758 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374290 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10[WebAssembly] Wrap definitions in namespace lld { namespace wasm {. NFCFangrui Song
Similar to D68323, but for wasm. Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D68759 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374279 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10[lld][WebAssembly] Refactor markLive.cpp. NFCSam Clegg
This pattern matches the ELF implementation add if also useful as part of a planned change where running `mark` more than once is needed. Differential Revision: https://reviews.llvm.org/D68749 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374275 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-10dummy comment typo fix commit to cycle the botsNico Weber
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374270 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-09Unify the two CRC implementationsHans Wennborg
David added the JamCRC implementation in r246590. More recently, Eugene added a CRC-32 implementation in r357901, which falls back to zlib's crc32 function if present. These checksums are essentially the same, so having multiple implementations seems unnecessary. This replaces the CRC-32 implementation with the simpler one from JamCRC, and implements the JamCRC interface in terms of CRC-32 since this means it can use zlib's implementation when available, saving a few bytes and potentially making it faster. JamCRC took an ArrayRef<char> argument, and CRC-32 took a StringRef. This patch changes it to ArrayRef<uint8_t> which I think is the best choice, and simplifies a few of the callers nicely. Differential revision: https://reviews.llvm.org/D68570 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374148 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-09Use lld-link instead of llvm-dlltool to create an implibRui Ueyama
Suggested by Martin Storsjö. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374142 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-09[lld] Don't create hints-section if Hint/Name Table is emptyRui Ueyama
Fixes assert in addLinkerModuleCoffGroup() when using by-ordinal imports only. Patch by Stefan Schmidt. Differential revision: https://reviews.llvm.org/D68352 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374140 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-08[lld][Hexagon] Support PLT relocation R_HEX_B15_PCREL_X/R_HEX_B9_PCREL_XSid Manning
These are sometimes generated by tail call optimizations. Differential Revision: https://reviews.llvm.org/D66542 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374052 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-08Use /dev/null for tests that we do not need outputsRui Ueyama
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374023 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-08Report error if -export-dynamic is used with -rRui Ueyama
The combination of the two flags doesn't make sense. And other linkers seem to just ignore --export-dynamic if --relocatable is given, but we probably should report it as an error to let users know that is an invalid combination. Fixes https://bugs.llvm.org/show_bug.cgi?id=43552 Differential Revision: https://reviews.llvm.org/D68441 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374022 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-07[ELF][MIPS] De-template writeValue. NFCFangrui Song
Depends on D68561. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@373886 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-07[ELF] Wrap things in `namespace lld { namespace elf {`, NFCFangrui Song
This makes it clear `ELF/**/*.cpp` files define things in the `lld::elf` namespace and simplifies `elf::foo` to `foo`. Reviewed By: atanasyan, grimar, ruiu Differential Revision: https://reviews.llvm.org/D68323 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@373885 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-07[ELF][MIPS] Use lld::elf::{read,write}* instead of ↵Fangrui Song
llvm::support::endian::{read,write}* This allows us to delete `using namespace llvm::support::endian` and simplify D68323. This change adds runtime config->endianness check but the overhead should be negligible. Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D68561 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@373884 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-04[LLD] [COFF] Always demangle the __imp_ prefix to __declspec(dllimport)Martin Storsjo
Differential Revision: https://reviews.llvm.org/D68017 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@373781 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-04Revert r371732: "lld-link: Fix tests that do not run on macOS after r371729."Martin Storsjo
This commit should be reverted along with r371729. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@373713 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-04[ELF] Use union-find set and doubly linked list in Call-Chain Clustering ↵Fangrui Song
(C³) heuristic Before, SecToClusters[*] was used to track the belonged cluster. During a merge (From -> Into), every element of From has to be updated. Use a union-find set to speed up this use case. Also, replace `std::vector<int> Sections;` with a doubly-linked pointers: int Next, Prev; Reviewed By: Bigcheese Differential Revision: https://reviews.llvm.org/D46228 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@373708 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-04[MinGW] Add --reproduce optionRui Ueyama
Differential Revision: https://reviews.llvm.org/D68382 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@373705 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-04Add /reproduce option to lld/COFFRui Ueyama
This patch adds /reproduce:<path> option to lld/COFF. This is an lld-specific option, so we can name it freely. I chose /reproduce over other names (e.g. /lldlinkrepro) for consistency with other lld ports. Differential Revision: https://reviews.llvm.org/D68381 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@373704 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-04Revert r371729: lld-link: Make /linkrepro: take a filename, not a directory.Rui Ueyama
This reverts commit r371729 because /linkrepro option also exists in Microsoft link.exe and their linker takes not a filename but a directory name as an argument for /linkrepro. Differential Revision: https://reviews.llvm.org/D68378 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@373703 91177308-0d34-0410-b5e6-96231b3b80d8