summaryrefslogtreecommitdiffstats
path: root/lld/test
Commit message (Collapse)AuthorAgeFilesLines
...
* [PPC64] Optimize redundant instructions in global access sequences.Sean Fertile2018-09-207-6/+365
| | | | | | | | | | | | | | | | | | | The access sequence for global variables in the medium and large code models use 2 instructions to add an offset to the toc-pointer. If the offset fits whithin 16-bits then the instruction that sets the high 16 bits is redundant. This patch adds the --toc-optimize option, (on by default) and enables rewriting of 2 instruction global variable accesses into 1 when the offset from the TOC-pointer to the variable (or .got entry) fits in 16 signed bits. eg addis %r3, %r2, 0 --> nop addi %r3, %r3, -0x8000 --> addi %r3, %r2, -0x8000 This rewriting can be disabled with the --no-toc-optimize flag Differential Revision: https://reviews.llvm.org/D49237 llvm-svn: 342602
* [COFF] Add support for delay loading DLLs for ARM64Martin Storsjo2018-09-181-0/+91
| | | | | | Differential Revision: https://reviews.llvm.org/D52190 llvm-svn: 342447
* [ELF] Set Out::TlsPhdr earlier for encoding packed reloc tablesRyan Prichard2018-09-182-0/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: For --pack-dyn-relocs=android, finalizeSections calls LinkerScript::assignAddresses and AndroidPackedRelocationSection::updateAllocSize in a loop, where assignAddresses lays out the ELF image, then updateAllocSize determines the size of the Android packed relocation table by encoding it. Encoding the table requires knowing the values of relocation addends. To get the addend of a TLS relocation, updateAllocSize can call getSymVA on a TLS symbol before setPhdrs has initialized Out::TlsPhdr, producing an error: <file> has an STT_TLS symbol but doesn't have an SHF_TLS section Fix the problem by initializing Out::TlsPhdr immediately after the program headers are created. The segment's p_vaddr field isn't initialized until setPhdrs, so use FirstSec->Addr, which is what setPhdrs would use. FirstSec will typically refer to the .tdata or .tbss output section, whose (tentative) address was computed by assignAddresses. Android currently avoids this problem because it uses emutls and doesn't support ELF TLS. This problem doesn't apply to --pack-dyn-relocs=relr because SHR_RELR only handles relative relocations without explicit addends or info. Fixes https://bugs.llvm.org/show_bug.cgi?id=37841. Reviewers: ruiu, pcc, chh, javed.absar, espindola Subscribers: emaste, arichardson, llvm-commits, srhines Differential Revision: https://reviews.llvm.org/D51671 llvm-svn: 342432
* [PPC64] Support relaxing R_PPC64_TLSGD16 in TlsGdtoLe relaxation.Sean Fertile2018-09-171-0/+61
| | | | | | | | | | A General-dynamic tls access can be written using a R_PPC64_TLSGD16 relocation if the target got entry is within 16 bits of the TOC-base. This patch adds support for R_PPC64_TLSGD16 by relaxing it the same as a R_PPC64_GOT_TLSGD16_LO. Differential Revision: https://reviews.llvm.org/D52055 llvm-svn: 342411
* lld-link: Also demangle undefined dllimported symbols.Nico Weber2018-09-171-2/+2
| | | | | | | | | dllimported symbols go through an import stub that's called __imp_ followed by the name the stub points to. Make that work. Differential Revision: https://reviews.llvm.org/D52145 llvm-svn: 342401
* lld-link: Set PDB GUID to hash of PDB contents instead of to a random byte ↵Nico Weber2018-09-151-6/+45
| | | | | | | | | | | | | | | | | | | | | | | sequence. Previously, lld-link would use a random byte sequence as the PDB GUID. Instead, use a hash of the PDB file contents. To not disturb llvm-pdbutil pdb2yaml, the hash generation is an opt-in feature on InfoStreamBuilder and ldb/COFF/PDB.cpp always sets it. Since writing the PDB computes this ID which also goes in the exe, the PDB writing code now must be called before writeBuildId(). writeBuildId() for that reason is no longer included in the "Code Layout" timer. Since the PDB GUID is now a function of the PDB contents, the PDB Age is always set to 1. There was a long comment above loadExistingBuildId (now gone) about how not changing the GUID and only incrementing the age was important, but according to the discussion in PR35914 that comment was incorrect. Differential Revision: https://reviews.llvm.org/D51956 llvm-svn: 342334
* lld-link: print demangled symbol names for "undefined symbol" diagnosticsNico Weber2018-09-152-6/+6
| | | | | | | | | | | | | | | | | For this, add a few toString() calls when printing the "undefined symbol" diagnostics; toString() already does demangling on Windows hosts. Also make lld::demangleMSVC() (called by toString(Symbol*)) call LLVM's microsoftDemangle() instead of UnDecorateSymbolName() so that it works on non-Windows hosts – this makes both updating tests easier and provides a better user experience for people doing cross-links. This doesn't yet do the right thing for symbols starting with __imp_, but that can be improved in a follow-up. Differential Revision: https://reviews.llvm.org/D52104 llvm-svn: 342332
* [COFF] Provide __CTOR_LIST__ and __DTOR_LIST__ symbols for MinGWMartin Storsjo2018-09-149-42/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MinGW uses these kind of list terminator symbols for traversing the constructor/destructor lists. These list terminators are actual pointers entries in the lists, with the values 0 and (uintptr_t)-1 (instead of just symbols pointing to the start/end of the list). (This mechanism exists in both the mingw-w64 crt startup code and in libgcc; normally the mingw-w64 one is used, but a DLL build of libgcc uses the libgcc one. Therefore it's not trivial to change the mechanism without lots of cross-project synchronization and potentially invalidating some combinations of old/new versions of them.) When mingw-w64 has been used with lld so far, the CRT startup object files have so far provided these symbols, ending up with different, incompatible builds of the CRT startup object files depending on whether binutils or lld are going to be used. In order to avoid the need of different configuration of the CRT startup object files depending on what linker to be used, provide these symbols in lld instead. (Mingw-w64 checks at build time whether the linker provides these symbols or not.) This unifies this particular detail between the two linkers. This does disallow the use of the very latest lld with older versions of mingw-w64 (the configure check for the list was added recently; earlier it simply checked whether the CRT was built with gcc or clang), and requires rebuilding the mingw-w64 CRT. But the number of users of lld+mingw still is low enough that such a change should be tolerable, and unifies this aspect of the toolchains, easing interoperability between the toolchains for the future. The actual test for this feature is added in ctors_dtors_priority.s, but a number of other tests that checked absolute output addresses are updated. Differential Revision: https://reviews.llvm.org/D52053 llvm-svn: 342294
* lld: add -z interpose supportEd Maste2018-09-141-3/+3
| | | | | | | | | | | -z interpose sets the DF_1_INTERPOSE flag, marking the object as an interposer. Via FreeBSD PR 230604, linking Valgrind with lld failed. Differential Revision: https://reviews.llvm.org/D52094 llvm-svn: 342239
* [COFF] Allow embedded directives to be separated by null bytesMartin Storsjo2018-09-141-0/+46
| | | | | | | | | | | | The PE spec says that they will be separated by spaces, but link.exe handles it just fine if they are separated by null bytes as well. This adds tests to the lld repo, with the actual functional change in LLVM in SVN r342204. Differential Revision: https://reviews.llvm.org/D52014 llvm-svn: 342206
* COFF: Add support for /force:multiple optionRui Ueyama2018-09-131-0/+45
| | | | | | | | | | | Patch by Thomas Roughton. This patch adds support for linking with multiple definitions to LLD's COFF driver, in line with link.exe's /force:multiple option. Differential Revision: https://reviews.llvm.org/D50598 llvm-svn: 342191
* lld-link: For nonexisting inputs, omit follow-on diagnosticsNico Weber2018-09-131-0/+5
| | | | | | | | | | | | | | | | For lld-link missing.obj, lld-link currently prints: lld-link: error: could not open foo.obj: No such file or directory lld-link: warning: /machine is not specified. x64 is assumed lld-link: error: subsystem must be defined The 2nd and 3rd diagnostics are consequences of the input not existing and are not interesting. If input files are missing, the best thing we can do is point that out and then return. Differential Revision: https://reviews.llvm.org/D51981 llvm-svn: 342158
* [ELF] Guard --fix-cortex-a53-843419 against --just-symsPeter Smith2018-09-131-0/+22
| | | | | | | | | | | | | | If --just-syms is used the mapping symbols from the ELF file will be absolute symbols with no section. The code to process mapping symbols in --fix-cortex-a53-843419 assumes that these symbols have a defining section so a crash will result when --just-syms is used. The simple fix is to not process the symbol when it doesn't have a section. Fixes PR37971 Differential Revision: https://reviews.llvm.org/D52038 llvm-svn: 342146
* Add missing REQUIRES x86 to test/COFF/icf-safe.sAzharuddin Mohammed2018-09-131-0/+1
| | | | | | | | | | | | Reviewers: ruiu, pcc Reviewed By: ruiu Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D51764 llvm-svn: 342145
* [PDB] Emit old fpo data to the PDB file.Zachary Turner2018-09-121-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | r342003 added support for emitting FPO data from the DEBUG_S_FRAMEDATA subsection of the .debug$S section to the PDB file. However, that is not the end of the story. FPO can end up in two different destinations in a PDB, each corresponding to a different FPO data source. The case handled by r342003 involves copying data from the DEBUG_S_FRAMEDATA subsection of the .debug$S section to the "New FPO" stream in the PDB, which is then referred to by the DBI stream. The case handled by this patch involves copying records from the .debug$F section of an object file to the "FPO" stream (or perhaps more aptly, the "Old FPO" stream) in the PDB file, which is also referred to by the DBI stream. The formats are largely similar, and the difference is mostly only visible in masm generated object files, such as some of the low-level CRT object files like memcpy. MASM doesn't appear to support writing the DEBUG_S_FRAMEDATA subsection, and instead just writes these records to the .debug$F section. Although clang-cl does not emit a .debug$F section ever, lld still needs to support it so we have good debugging for CRT functions. Differential Revision: https://reviews.llvm.org/D51958 llvm-svn: 342080
* [ELF] Revert "Also demote lazy symbols."Chih-Hung Hsieh2018-09-112-0/+20
| | | | | | | | | This reverts commit https://reviews.llvm.org/rL330869 for a regression to link Android dex2oatds. Differential Revision: https://reviews.llvm.org/D51892 llvm-svn: 342007
* [PDB] Write FPO Data to the PDB.Zachary Turner2018-09-112-1/+463
| | | | llvm-svn: 342003
* [codeview] Decode and dump FP regs from S_FRAMEPROC recordsReid Kleckner2018-09-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: There are two registers encoded in the S_FRAMEPROC flags: one for locals and one for parameters. The encoding is described by the ExpandEncodedBasePointerReg function in cvinfo.h. Two bits are used to indicate one of four possible values: 0: no register - Used when there are no variables. 1: SP / standard - Variables are stored relative to the standard SP for the ISA. 2: FP - Variables are addressed relative to the ISA frame pointer, i.e. EBP on x86. If realignment is required, parameters use this. If a dynamic alloca is used, locals will be EBP relative. 3: Alternative - Variables are stored relative to some alternative third callee-saved register. This is required to address highly aligned locals when there are dynamic stack adjustments. In this case, both the incoming SP saved in the standard FP and the current SP are at some dynamic offset from the locals. LLVM uses ESI in this case, MSVC uses EBX. Most of the changes in this patch are to pass around the CPU so that we can decode these into real, named architectural registers. Subscribers: hiraditya Differential Revision: https://reviews.llvm.org/D51894 llvm-svn: 341999
* [ELF] Don't emit .relr.dyn section if there are no relocsPetr Hosek2018-09-101-0/+11
| | | | | | | | This resolves PR38875. Differential Revision: https://reviews.llvm.org/D51834 llvm-svn: 341870
* [MinGW] Hook up the --require-defined option to -include:Martin Storsjo2018-09-101-0/+3
| | | | | | Differential Revision: https://reviews.llvm.org/D51840 llvm-svn: 341846
* [LLD][COFF] Cleanup error messages / add more coverage testsAlexandre Ganea2018-09-106-3/+434
| | | | | | | | | | | | - Log the reason for a PDB or precompiled-OBJ load failure - Properly handle out-of-date PDB or precompiled-OBJ signature by displaying a corresponding error - Slightly change behavior on PDB failure: any subsequent load attempt from another OBJ would result in the same error message being logged - Slightly change behavior on PDB failure: retry with filename only if previous error was ENOENT ("no such file or directory") - Tests: a. for native PDB errors; b. cover all the cases above Differential Revision: https://reviews.llvm.org/D51559 llvm-svn: 341825
* [ELF] Check if LinkSec is nullptr when initializing SHF_LINK_ORDER sectionsFangrui Song2018-09-071-0/+16
| | | | | | | | | | | | | | Summary: This protects lld from a null pointer dereference when a faulty input file has such invalid sh_link fields. Reviewers: ruiu, espindola Reviewed By: ruiu Subscribers: emaste, arichardson, llvm-commits Differential Revision: https://reviews.llvm.org/D51743 llvm-svn: 341611
* [COFF] don't mark lazy symbols as used in regular objectsBob Haarman2018-09-061-2/+10
| | | | | | | | | | | | | | | | | | Summary: r338767 updated the COFF and wasm linker SymbolTable code to be strutured more like the ELF linker's. That inadvertedly changed the behavior of the COFF linker so that lazy symbols would be marked as used in regular objects. This change adds an overload of the insert() function, similar to the ELF linker, which does not perform that marking. Reviewers: ruiu, rnk, hans Subscribers: aheejin, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D51720 llvm-svn: 341585
* lld-link: Write an empty "repro" debug directory entry if /Brepro is passedNico Weber2018-09-051-0/+51
| | | | | | | | | | | If the coff timestamp is set to a hash, like lld-link does if /Brepro is passed, the coff spec suggests that a IMAGE_DEBUG_TYPE_REPRO entry is in the debug directory. This lets lld-link write such a section. Fixes PR38429, see bug for details. Differential Revision: https://reviews.llvm.org/D51652 llvm-svn: 341486
* [COFF] Allow exporting all symbols from system libraries specfied with ↵Martin Storsjo2018-09-041-0/+12
| | | | | | | | | | | | | | | -wholearchive: When building a shared libc++.dll, it pulls in libc++abi.a statically with the --wholearchive flag. If such a build is done with --export-all-symbols, it's reasonable to assume that everything from that library also should be exported with the same rules as normal local object files, even though we normally avoid autoexporting things from libc++abi.a in other cases when linking a DLL (user code). Differential Revision: https://reviews.llvm.org/D51529 llvm-svn: 341403
* [LLD] Add test missed from r341206. NFC.Ben Dunbobbin2018-08-311-0/+9
| | | | llvm-svn: 341207
* [LLD] Check too large offsets into merge sections earlierBen Dunbobbin2018-08-312-2/+2
| | | | | | | | | | | | | | | | | This patch moves the checking for too large offsets into merge sections earlier. Without this change the large offset generated in the added test-case will cause an assert (as it happens to be a value reserved as a "tombstone" in the DenseMap implementation) when OffsetMap is queried in getSectionPiece(). To simplify the code and avoid future mistakes I have refactored so that there is only one function that looks up offsets in the OffsetMap. Differential Revision: https://reviews.llvm.org/D51180 llvm-svn: 341206
* [COFF] When doing automatic dll imports, replace whole .refptr.<var> chunks ↵Martin Storsjo2018-08-311-0/+65
| | | | | | | | | | | | | | | | | | | | with __imp_<var> After fixing up the runtime pseudo relocation, the .refptr.<var> will be a plain pointer with the same value as the IAT entry itself. To save a little binary size and reduce the number of runtime pseudo relocations, redirect references to the IAT entry (via the __imp_<var> symbol) itself and discard the .refptr.<var> chunk (as long as the same section chunk doesn't contain anything else than the single pointer). As there are now cases for both setting the Live variable to true and false externally, remove the accessors and setters and just make the variable public instead. Differential Revision: https://reviews.llvm.org/D51456 llvm-svn: 341175
* [PPC64] Improve a test ppc64_entry_point.sFangrui Song2018-08-311-8/+7
| | | | | | | Rename to ppc64-entry-point.s Deduplicate .text dump of little-endian big-endian llvm-svn: 341153
* Import lit.llvm after rLLD341134Fangrui Song2018-08-311-1/+1
| | | | llvm-svn: 341150
* [PPC64] Improve a test ppc64-toc-rel.sFangrui Song2018-08-312-20/+12
| | | | | | | Deduplicate dump of .text .data for little-endian and big-endian Fix a RELOCS-NE check line typo llvm-svn: 341148
* [PPC64] Remove unused -z notext from a testFangrui Song2018-08-301-2/+2
| | | | llvm-svn: 341139
* Remove LIT_SITE_CFG_IN_FOOTER, lldNico Weber2018-08-301-1/+2
| | | | | | | | | | It's always replaced with the same (short) static string, so just put that there directly. No intended behavior change. https://reviews.llvm.org/D51357 llvm-svn: 341134
* [COFF] Skip exporting artificial symbols when exporting all symbolsMartin Storsjo2018-08-301-0/+3
| | | | | | Differential Revision: https://reviews.llvm.org/D51457 llvm-svn: 341017
* [test] Adjust a test to use CHECK-NEXT instead of CHECK-NOT. NFC.Martin Storsjo2018-08-301-6/+5
| | | | | | | | | | | Since the order and placement of the non-wanted elements might not be obvious, it feels more straightforward to hardcode the whole list with -NEXT elements (and checking for the end of the output with CHECK-EMPTY) instead of adding CHECK-NOT lines at the right places where the unwanted elements would appear if they erroneously were to included. llvm-svn: 341016
* ELF: Don't examine values of linker script symbols during ICF.Peter Collingbourne2018-08-291-0/+11
| | | | | | | | | These symbols are declared early with the same value, so they otherwise appear identical to ICF. Differential Revision: https://reviews.llvm.org/D51376 llvm-svn: 340998
* [CMake] Add an lld-test-depends targetMartin Storsjo2018-08-291-0/+3
| | | | | | | | | This builds all dependencies of lld-test/check-lld, without running the tests. This matches llvm-test-depends and clang-test-depends. Differential Revision: https://reviews.llvm.org/D51439 llvm-svn: 340943
* [COFF] Merge the .ctors, .dtors and .CRT sections into .rdata for MinGWMartin Storsjo2018-08-291-10/+14
| | | | | | | | | | | | | | | | | There's no point in keeping them as separate sections. This differs from GNU ld, which places .ctors and .dtors content in .text (implemented by a built-in linker script). But since the content only is pointers, there's no need to have it executable. GNU ld also leaves .CRT separate as its own standalone section. MSVC merges .CRT into .rdata similarly, with a directive embedded in an object file in msvcrt.lib or libcmt.lib. Differential Revision: https://reviews.llvm.org/D51414 llvm-svn: 340940
* Always add a .note.GNU-stack section if -r.Rui Ueyama2018-08-296-16/+30
| | | | | | | | | | | | With this patch, lld creates a .note.GNU_stack and adds that to an output file if it is creating a re-linkable object file (i.e. if -r is given). If we don't do this, and if you use GNU linkers as a final linker, they create an executable whose stack area is executable, which is considered pretty bad these days. Differential Revision: https://reviews.llvm.org/D51400 llvm-svn: 340902
* [ELF] Change llvm-objdump -D to -d for check lines that only inspect text ↵Fangrui Song2018-08-299-17/+17
| | | | | | | | | | | | sections Reviewers: ruiu, sfertile, syzaara, espindola Subscribers: emaste, nemanjai, arichardson, kbarton, llvm-commits Differential Revision: https://reviews.llvm.org/D51389 llvm-svn: 340890
* [PPC64] Fix DQ-form instruction handling and emit error for misalignment.Sean Fertile2018-08-283-0/+84
| | | | | | | | | | | | | Relanding r340564, original commit message: Fixes the handling of *_DS relocations used on DQ-form instructions where we were overwriting some of the extended opcode bits. Also adds an alignment check so that the user will receive a diagnostic error if the value we are writing is not properly aligned. Differential Revision: https://reviews.llvm.org/D51124 llvm-svn: 340832
* [LLD][ELD] - Do not reject INFO output section type when used with a start ↵George Rimar2018-08-281-0/+9
| | | | | | | | | | | | | | | | | | | | address. This is https://bugs.llvm.org/show_bug.cgi?id=38625 LLD accept this: ".stack (INFO) : {", but not this: ".stack address_expression (INFO) :" The patch fixes it. Differential revision: https://reviews.llvm.org/D51027 llvm-svn: 340804
* [LLF][ELF] - Support -z global.George Rimar2018-08-281-2/+3
| | | | | | | | -z global is a flag used on Android (see D49198). Differential revision: https://reviews.llvm.org/D49374 llvm-svn: 340802
* [ELF][HEXAGON] Add R_HEX_11/10/9_X supportSid Manning2018-08-271-0/+15
| | | | | | Differential Revision: https://reviews.llvm.org/D51225 llvm-svn: 340739
* Handle identifying AMDGPU bitcode filesMatt Arsenault2018-08-272-0/+24
| | | | llvm-svn: 340738
* [COFF] Support MinGW automatic dllimport of dataMartin Storsjo2018-08-276-0/+194
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Normally, in order to reference exported data symbols from a different DLL, the declarations need to have the dllimport attribute, in order to use the __imp_<var> symbol (which contains an address to the actual variable) instead of the variable itself directly. This isn't an issue in the same way for functions, since any reference to the function without the dllimport attribute will end up as a reference to a thunk which loads the actual target function from the import address table (IAT). GNU ld, in MinGW environments, supports automatically importing data symbols from DLLs, even if the references didn't have the appropriate dllimport attribute. Since the PE/COFF format doesn't support the kind of relocations that this would require, the MinGW's CRT startup code has an custom framework of their own for manually fixing the missing relocations once module is loaded and the target addresses in the IAT are known. For this to work, the linker (originall in GNU ld) creates a list of remaining references needing fixup, which the runtime processes on startup before handing over control to user code. While this feature is rather controversial, it's one of the main features allowing unix style libraries to be used on windows without any extra porting effort. Some sort of automatic fixing of data imports is also necessary for the itanium C++ ABI on windows (as clang implements it right now) for importing vtable pointers in certain cases, see D43184 for some discussion on that. The runtime pseudo relocation handler supports 8/16/32/64 bit addresses, either PC relative references (like IMAGE_REL_*_REL32*) or absolute references (IMAGE_REL_AMD64_ADDR32, IMAGE_REL_AMD64_ADDR32, IMAGE_REL_I386_DIR32). On linking, the relocation is handled as a relocation against the corresponding IAT slot. For the absolute references, a normal base relocation is created, to update the embedded address in case the image is loaded at a different address. The list of runtime pseudo relocations contains the RVA of the imported symbol (the IAT slot), the RVA of the location the relocation should be applied to, and a size of the memory location. When the relocations are fixed at runtime, the difference between the actual IAT slot value and the IAT slot address is added to the reference, doing the right thing for both absolute and relative references. With this patch alone, things work fine for i386 binaries, and mostly for x86_64 binaries, with feature parity with GNU ld. Despite this, there are a few gotchas: - References to data from within code works fine on both x86 architectures, since their relocations consist of plain 32 or 64 bit absolute/relative references. On ARM and AArch64, references to data doesn't consist of a plain 32 or 64 bit embedded address or offset in the code. On ARMNT, it's usually a MOVW+MOVT instruction pair represented by a IMAGE_REL_ARM_MOV32T relocation, each instruction containing 16 bit of the target address), on AArch64, it's usually an ADRP+ADD/LDR/STR instruction pair with an even more complex encoding, storing a PC relative address (with a range of +/- 4 GB). This could theoretically be remedied by extending the runtime pseudo relocation handler with new relocation types, to support these instruction encodings. This isn't an issue for GCC/GNU ld since they don't support windows on ARMNT/AArch64. - For x86_64, if references in code are encoded as 32 bit PC relative offsets, the runtime relocation will fail if the target turns out to be out of range for a 32 bit offset. - Fixing up the relocations at runtime requires making sections writable if necessary, with the VirtualProtect function. In Windows Store/UWP apps, this function is forbidden. These limitations are addressed by a few later patches in lld and llvm. Differential Revision: https://reviews.llvm.org/D50917 llvm-svn: 340726
* [COFF] Check the instructions in ARM MOV32T relocationsMartin Storsjo2018-08-271-0/+92
| | | | | | | | | | For this relocation, which applies to two consecutive instructions, it's plausible that the second instruction might not actually be the right one. Differential Revision: https://reviews.llvm.org/D50998 llvm-svn: 340715
* [ELF][HEXAGON] Add R_HEX_B13_PCREL relocation supportSid Manning2018-08-251-0/+4
| | | | | | Differential Revision: https://reviews.llvm.org/D51166 llvm-svn: 340693
* [ELF][HEXAGON] Add R_HEX_B9_PCREL and R_HEX_B9_PCREL_X relocation supportSid Manning2018-08-251-0/+8
| | | | | | Differential Revision: https://reviews.llvm.org/D51045 llvm-svn: 340692
* Modify tests to show PLT entry labelsJoel Galenson2018-08-2410-5/+59
| | | | llvm-svn: 340616
OpenPOWER on IntegriCloud