[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"

`