svn commit: r338007 - in vendor/lld/dist-release_70: COFF ELF docs test/COFF test/COFF/Inputs test/ELF test/ELF/lto test/mach-o test/wasm/lto
Dimitry Andric
dim at FreeBSD.org
Sat Aug 18 08:27:29 UTC 2018
Author: dim
Date: Sat Aug 18 08:27:24 2018
New Revision: 338007
URL: https://svnweb.freebsd.org/changeset/base/338007
Log:
Vendor import of lld release_70 branch r339999:
https://llvm.org/svn/llvm-project/lld/branches/release_70@339999
Added:
vendor/lld/dist-release_70/test/COFF/Inputs/common-replacement.s (contents, props changed)
vendor/lld/dist-release_70/test/COFF/common-replacement.s (contents, props changed)
Modified:
vendor/lld/dist-release_70/COFF/Driver.cpp
vendor/lld/dist-release_70/ELF/SyntheticSections.cpp
vendor/lld/dist-release_70/docs/ReleaseNotes.rst
vendor/lld/dist-release_70/test/ELF/lto/cache.ll
vendor/lld/dist-release_70/test/ELF/x86-64-reloc-error2.s
vendor/lld/dist-release_70/test/mach-o/dependency_info.yaml
vendor/lld/dist-release_70/test/wasm/lto/cache.ll
Modified: vendor/lld/dist-release_70/COFF/Driver.cpp
==============================================================================
--- vendor/lld/dist-release_70/COFF/Driver.cpp Sat Aug 18 08:27:21 2018 (r338006)
+++ vendor/lld/dist-release_70/COFF/Driver.cpp Sat Aug 18 08:27:24 2018 (r338007)
@@ -1551,11 +1551,11 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr
continue;
}
+ // If the symbol isn't common, it must have been replaced with a regular
+ // symbol, which will carry its own alignment.
auto *DC = dyn_cast<DefinedCommon>(Sym);
- if (!DC) {
- warn("/aligncomm symbol " + Name + " of wrong kind");
+ if (!DC)
continue;
- }
CommonChunk *C = DC->getChunk();
C->Alignment = std::max(C->Alignment, Alignment);
Modified: vendor/lld/dist-release_70/ELF/SyntheticSections.cpp
==============================================================================
--- vendor/lld/dist-release_70/ELF/SyntheticSections.cpp Sat Aug 18 08:27:21 2018 (r338006)
+++ vendor/lld/dist-release_70/ELF/SyntheticSections.cpp Sat Aug 18 08:27:24 2018 (r338007)
@@ -2929,8 +2929,10 @@ void elf::mergeSections() {
// We do not want to handle sections that are not alive, so just remove
// them instead of trying to merge.
- if (!MS->Live)
+ if (!MS->Live) {
+ S = nullptr;
continue;
+ }
StringRef OutsecName = getOutputSectionName(MS);
uint32_t Alignment = std::max<uint32_t>(MS->Alignment, MS->Entsize);
Modified: vendor/lld/dist-release_70/docs/ReleaseNotes.rst
==============================================================================
--- vendor/lld/dist-release_70/docs/ReleaseNotes.rst Sat Aug 18 08:27:21 2018 (r338006)
+++ vendor/lld/dist-release_70/docs/ReleaseNotes.rst Sat Aug 18 08:27:24 2018 (r338007)
@@ -29,7 +29,13 @@ ELF Improvements
COFF Improvements
-----------------
-* Item 1.
+* Improved correctness of exporting mangled stdcall symbols.
+
+* Completed support for ARM64 relocations.
+
+* Added support for outputting PDB debug info for MinGW targets.
+
+* Improved compatibility of output binaries with GNU binutils objcopy/strip.
MachO Improvements
------------------
Added: vendor/lld/dist-release_70/test/COFF/Inputs/common-replacement.s
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/lld/dist-release_70/test/COFF/Inputs/common-replacement.s Sat Aug 18 08:27:24 2018 (r338007)
@@ -0,0 +1,5 @@
+ .globl foo
+ .data
+ .p2align 2, 0
+foo:
+ .long 42
Added: vendor/lld/dist-release_70/test/COFF/common-replacement.s
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/lld/dist-release_70/test/COFF/common-replacement.s Sat Aug 18 08:27:24 2018 (r338007)
@@ -0,0 +1,35 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple=x86_64-windows-gnu %s -filetype=obj -o %t1.obj
+# RUN: llvm-mc -triple=x86_64-windows-gnu %S/Inputs/common-replacement.s -filetype=obj -o %t2.obj
+
+# RUN: lld-link -lldmingw -entry:main %t1.obj %t2.obj -out:%t.exe -verbose 2>&1 \
+# RUN: | FileCheck -check-prefix VERBOSE %s
+# RUN: llvm-readobj -s %t.exe | FileCheck -check-prefix SECTIONS %s
+
+# VERBOSE: -aligncomm:"foo",2
+
+# As long as the .comm symbol is replaced with actual data, RawDataSize
+# below should be nonzero.
+
+# SECTIONS: Name: .data (2E 64 61 74 61 00 00 00)
+# SECTIONS-NEXT: VirtualSize: 0x8
+# SECTIONS-NEXT: VirtualAddress: 0x2000
+# SECTIONS-NEXT: RawDataSize: 512
+
+
+ .text
+ .def main;
+ .scl 2;
+ .type 32;
+ .endef
+ .globl main
+ .p2align 4, 0x90
+main:
+ movl foo(%rip), %eax
+ retq
+
+# This produces an aligncomm directive, but when linking in
+# Inputs/common-replacement.s, this symbol is replaced by a normal defined
+# symbol instead.
+ .comm foo, 4, 2
Modified: vendor/lld/dist-release_70/test/ELF/lto/cache.ll
==============================================================================
--- vendor/lld/dist-release_70/test/ELF/lto/cache.ll Sat Aug 18 08:27:21 2018 (r338006)
+++ vendor/lld/dist-release_70/test/ELF/lto/cache.ll Sat Aug 18 08:27:24 2018 (r338007)
@@ -13,7 +13,7 @@
; RUN: ls %t.cache | count 4
; Create a file of size 64KB.
-; RUN: "%python" -c "print(' ' * 65536)" > %t.cache/llvmcache-foo
+; RUN: %python -c "print(' ' * 65536)" > %t.cache/llvmcache-foo
; This should leave the file in place.
; RUN: ld.lld --thinlto-cache-dir=%t.cache --thinlto-cache-policy cache_size_bytes=128k:prune_interval=0s -o %t3 %t2.o %t.o
Modified: vendor/lld/dist-release_70/test/ELF/x86-64-reloc-error2.s
==============================================================================
--- vendor/lld/dist-release_70/test/ELF/x86-64-reloc-error2.s Sat Aug 18 08:27:21 2018 (r338006)
+++ vendor/lld/dist-release_70/test/ELF/x86-64-reloc-error2.s Sat Aug 18 08:27:24 2018 (r338007)
@@ -1,14 +1,18 @@
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-# RUN: not ld.lld %t.o -o /dev/null 2>&1 | FileCheck %s
+# RUN: not ld.lld --entry=func --gc-sections %t.o -o /dev/null 2>&1 | FileCheck %s
## Check we are able to find a function symbol that encloses
## a given location when reporting error messages.
# CHECK: {{.*}}.o:(function func): relocation R_X86_64_32S out of range: -281474974609408 is not in [-2147483648, 2147483647]
+# This mergeable section will be garbage collected. We had a crash issue in that case. Test it.
+.section .rodata.str1,"aMS", at progbits,1
+.asciz "a"
+
.section .text.func, "ax", %progbits
.globl func
.type func, at function
-.size func, 0x10
func:
- movq func - 0x1000000000000, %rdx
+ movq $func - 0x1000000000000, %rdx
+.size func, .-func
Modified: vendor/lld/dist-release_70/test/mach-o/dependency_info.yaml
==============================================================================
--- vendor/lld/dist-release_70/test/mach-o/dependency_info.yaml Sat Aug 18 08:27:21 2018 (r338006)
+++ vendor/lld/dist-release_70/test/mach-o/dependency_info.yaml Sat Aug 18 08:27:24 2018 (r338007)
@@ -9,7 +9,7 @@
# RUN: -F/Custom/Frameworks \
# RUN: -framework Bar \
# RUN: -framework Foo
-# RUN: '%python' %p/Inputs/DependencyDump.py %t.info | FileCheck %s
+# RUN: %python %p/Inputs/DependencyDump.py %t.info | FileCheck %s
# CHECK: linker-vers: lld
Modified: vendor/lld/dist-release_70/test/wasm/lto/cache.ll
==============================================================================
--- vendor/lld/dist-release_70/test/wasm/lto/cache.ll Sat Aug 18 08:27:21 2018 (r338006)
+++ vendor/lld/dist-release_70/test/wasm/lto/cache.ll Sat Aug 18 08:27:24 2018 (r338007)
@@ -11,7 +11,7 @@
; RUN: ls %t.cache | count 4
; Create a file of size 64KB.
-; RUN: "%python" -c "print(' ' * 65536)" > %t.cache/llvmcache-foo
+; RUN: %python -c "print(' ' * 65536)" > %t.cache/llvmcache-foo
; This should leave the file in place.
; RUN: wasm-ld --thinlto-cache-dir=%t.cache --thinlto-cache-policy cache_size_bytes=128k:prune_interval=0s -o %t.wasm %t2.o %t.o
More information about the svn-src-vendor
mailing list