[LLD] [COFF] Fix symbol names for import thunks (#160694) · llvm/llvm-project@d1e2f89 (original) (raw)
1
1
`# REQUIRES: x86
`
2
2
`# RUN: llvm-mc -triple=x86_64-windows-msvc %s -filetype=obj -o %t.obj
`
3
``
`-
RUN: lld-link -out:%t.exe -entry:main %t.obj -debug:dwarf
`
``
3
`+
RUN: lld-link -machine:x64 -def:%S/Inputs/library.def -implib:%t.lib
`
``
4
`+
RUN: lld-link -out:%t.exe -entry:main %t.obj %t.lib -debug:dwarf
`
4
5
`# RUN: llvm-readobj --string-table %t.exe | FileCheck %s
`
``
6
`+
RUN: llvm-nm %t.exe | FileCheck %s --check-prefix=SYMBOLS
`
``
7
+
``
8
`+
Note, for this test to have the intended test coverage, the imported symbol
`
``
9
`+
"function" needs to be such that the symbol name itself is <= 8 chars, while
`
``
10
`+
"_imp"+name is >8 chars.
`
5
11
``
6
12
`# CHECK: StringTable {
`
7
``
`-
CHECK-NEXT: Length: 87
`
``
13
`+
CHECK-NEXT: Length: 102
`
8
14
`# CHECK-NEXT: [ 4] .debug_abbrev
`
9
15
`# CHECK-NEXT: [ 12] .debug_line
`
10
16
`# CHECK-NEXT: [ 1e] long_name_symbolz
`
11
17
`# CHECK-NEXT: [ 30] .debug_abbrez
`
12
``
`-
CHECK-NEXT: [ 3e] __impl_long_name_symbolA
`
``
18
`+
CHECK-NEXT: [ 3e] __imp_function
`
``
19
`+
CHECK-NEXT: [ 4d] __impl_long_name_symbolA
`
13
20
`# CHECK-NEXT: }
`
14
21
``
``
22
`+
SYMBOLS: 140001000 N .debug_abbrez
`
``
23
`+
SYMBOLS-NEXT: 140002070 R __imp_function
`
``
24
`+
SYMBOLS-NEXT: 140001000 t __impl_long_name_symbolA
`
``
25
`+
SYMBOLS-NEXT: 140001010 T function
`
``
26
`+
SYMBOLS-NEXT: 140001000 t long_name_symbolA
`
``
27
`+
SYMBOLS-NEXT: 140001000 t long_name_symbolz
`
``
28
`+
SYMBOLS-NEXT: 140001000 T main
`
``
29
`+
SYMBOLS-NEXT: 140001000 t name_symbolA
`
15
30
``
16
31
`.global main
`
17
32
`.text
`
`@@ -21,6 +36,7 @@ long_name_symbolA:
`
21
36
`__impl_long_name_symbolA:
`
22
37
`name_symbolA:
`
23
38
`.debug_abbrez:
`
``
39
`+
call function
`
24
40
`ret
`
25
41
``
26
42
`.section .debug_abbrev,"dr"
`