summaryrefslogtreecommitdiffstats
path: root/lld/test/COFF
diff options
context:
space:
mode:
Diffstat (limited to 'lld/test/COFF')
-rw-r--r--lld/test/COFF/autoimport-arm-data.s3
-rw-r--r--lld/test/COFF/autoimport-arm64-data.s3
-rw-r--r--lld/test/COFF/autoimport-gnu-implib.s3
-rw-r--r--lld/test/COFF/autoimport-handler-func.s36
-rw-r--r--lld/test/COFF/autoimport-warn.s3
-rw-r--r--lld/test/COFF/autoimport-x86.s3
6 files changed, 51 insertions, 0 deletions
diff --git a/lld/test/COFF/autoimport-arm-data.s b/lld/test/COFF/autoimport-arm-data.s
index 74604aa5c823..82c66f0989d4 100644
--- a/lld/test/COFF/autoimport-arm-data.s
+++ b/lld/test/COFF/autoimport-arm-data.s
@@ -34,6 +34,9 @@
.thumb
main:
bx lr
+ .global _pei386_runtime_relocator
+_pei386_runtime_relocator:
+ bx lr
.data
ptr:
.long variable
diff --git a/lld/test/COFF/autoimport-arm64-data.s b/lld/test/COFF/autoimport-arm64-data.s
index fa3654be3a71..b49bd4f89c97 100644
--- a/lld/test/COFF/autoimport-arm64-data.s
+++ b/lld/test/COFF/autoimport-arm64-data.s
@@ -34,6 +34,9 @@
.text
main:
ret
+ .global _pei386_runtime_relocator
+_pei386_runtime_relocator:
+ ret
.data
ptr:
.quad variable
diff --git a/lld/test/COFF/autoimport-gnu-implib.s b/lld/test/COFF/autoimport-gnu-implib.s
index d7d4ed626e83..d9dc9d7a38fd 100644
--- a/lld/test/COFF/autoimport-gnu-implib.s
+++ b/lld/test/COFF/autoimport-gnu-implib.s
@@ -28,4 +28,7 @@
main:
movl data(%rip), %eax
ret
+ .global _pei386_runtime_relocator
+_pei386_runtime_relocator:
+ ret
.data
diff --git a/lld/test/COFF/autoimport-handler-func.s b/lld/test/COFF/autoimport-handler-func.s
new file mode 100644
index 000000000000..02d040bfa274
--- /dev/null
+++ b/lld/test/COFF/autoimport-handler-func.s
@@ -0,0 +1,36 @@
+# REQUIRES: x86
+# RUN: split-file %s %t.dir
+
+# RUN: llvm-dlltool -m i386:x86-64 -d %t.dir/lib.def -D lib.dll -l %t.dir/lib.lib
+
+# RUN: llvm-mc -triple=x86_64-windows-gnu %t.dir/main.s -filetype=obj -o %t.dir/main.obj
+# RUN: llvm-mc -triple=x86_64-windows-gnu %t.dir/func.s -filetype=obj -o %t.dir/func.obj
+# RUN: env LLD_IN_TEST=1 not lld-link -lldmingw -out:%t.dir/main.exe -entry:main %t.dir/main.obj %t.dir/lib.lib 2>&1 | FileCheck %s --check-prefix=ERR
+
+# RUN: lld-link -lldmingw -out:%t.dir/main.exe -entry:main %t.dir/main.obj %t.dir/func.obj %t.dir/lib.lib 2>&1 | FileCheck %s --check-prefix=NOERR --allow-empty
+
+# ERR: error: output image has runtime pseudo relocations, but the function _pei386_runtime_relocator is missing; it is needed for fixing the relocations at runtime
+
+# NOERR-NOT: error
+
+#--- main.s
+ .global main
+ .text
+main:
+ ret
+
+ .data
+ .long 1
+ .quad variable
+ .long 2
+
+#--- func.s
+ .global _pei386_runtime_relocator
+ .text
+_pei386_runtime_relocator:
+ ret
+
+#--- lib.def
+EXPORTS
+variable DATA
+
diff --git a/lld/test/COFF/autoimport-warn.s b/lld/test/COFF/autoimport-warn.s
index 9c363ed30f24..eead0fed861f 100644
--- a/lld/test/COFF/autoimport-warn.s
+++ b/lld/test/COFF/autoimport-warn.s
@@ -18,6 +18,9 @@ main:
movl variable2(%rip), %ecx
addl %ecx, %eax
ret
+ .global _pei386_runtime_relocator
+_pei386_runtime_relocator:
+ ret
.section .rdata$.refptr.variable1,"dr",discard,.refptr.variable1
.global .refptr.variable1
diff --git a/lld/test/COFF/autoimport-x86.s b/lld/test/COFF/autoimport-x86.s
index fa36f10e9ca9..5d7c9c2c3fa5 100644
--- a/lld/test/COFF/autoimport-x86.s
+++ b/lld/test/COFF/autoimport-x86.s
@@ -56,6 +56,9 @@
main:
movl variable(%rip), %eax
ret
+ .global _pei386_runtime_relocator
+_pei386_runtime_relocator:
+ ret
.data
ptr:
.quad variable