| # REQUIRES: x86 |
| # Verify that the lld can handle .lib files and emit .idata sections. |
| # |
| # RUN: lld-link /out:%t.exe /entry:main /subsystem:console \ |
| # RUN: %p/Inputs/hello64.obj %p/Inputs/std64.lib |
| # RUN: llvm-objdump -d %t.exe | FileCheck --check-prefix=TEXT %s |
| # RUN: llvm-readobj --coff-imports %t.exe | FileCheck -check-prefix=IMPORT %s |
| |
| # RUN: lld-link /out:%t.exe /entry:main /subsystem:console \ |
| # RUN: %p/Inputs/hello64.obj %p/Inputs/std64.lib /include:ExitProcess |
| # RUN: llvm-objdump -d %t.exe | FileCheck --check-prefix=TEXT %s |
| # RUN: llvm-readobj --coff-imports %t.exe | FileCheck -check-prefix=IMPORT %s |
| |
| TEXT: Disassembly of section .text: |
| TEXT-EMPTY: |
| TEXT-NEXT: <.text>: |
| TEXT-NEXT: subq $40, %rsp |
| TEXT-NEXT: movq $0, %rcx |
| TEXT-NEXT: leaq 8180(%rip), %rdx |
| TEXT-NEXT: leaq 8167(%rip), %r8 |
| TEXT-NEXT: movl $0, %r9d |
| TEXT-NEXT: callq 0x140001060 |
| TEXT-NEXT: movl $0, %ecx |
| TEXT-NEXT: callq 0x140001040 |
| TEXT-NEXT: callq 0x140001050 |
| TEXT: jmpq *4098(%rip) |
| TEXT: jmpq *4090(%rip) |
| TEXT: jmpq *4082(%rip) |
| |
| IMPORT: Import { |
| IMPORT-NEXT: Name: std64.dll |
| IMPORT-NEXT: ImportLookupTableRVA: 0x2028 |
| IMPORT-NEXT: ImportAddressTableRVA: 0x2048 |
| IMPORT-NEXT: Symbol: ExitProcess (0) |
| IMPORT-NEXT: Symbol: (50) |
| IMPORT-NEXT: Symbol: MessageBoxA (1) |
| IMPORT-NEXT: } |
| |
| # RUN: lld-link /out:%t.exe /entry:main /subsystem:console /merge:.rdata=.text \ |
| # RUN: %p/Inputs/hello64.obj %p/Inputs/std64.lib /include:ExitProcess |
| # RUN: llvm-readobj --coff-imports %t.exe | FileCheck -check-prefix=MERGE %s |
| |
| MERGE: Import { |
| MERGE-NEXT: Name: std64.dll |
| MERGE-NEXT: ImportLookupTableRVA: 0x1090 |
| MERGE-NEXT: ImportAddressTableRVA: 0x10B0 |
| MERGE-NEXT: Symbol: ExitProcess (0) |
| MERGE-NEXT: Symbol: (50) |
| MERGE-NEXT: Symbol: MessageBoxA (1) |
| MERGE-NEXT: } |