| // REQUIRES: x86 |
| // RUN: split-file %s %t.dir |
| // RUN: llvm-lib -machine:amd64 -out:%t.lib -def:%t.dir/lib.def |
| // RUN: llvm-mc -filetype=obj -triple=x86_64-windows %t.dir/main.s -o %t.main.obj |
| |
| // RUN: lld-link -out:%t.exe %t.main.obj -wholearchive:%t.lib -entry:entry -subsystem:console |
| // RUN: llvm-readobj --coff-imports %t.exe | FileCheck %s |
| |
| // As LLD usually doesn't use the header/trailer object files from import |
| // libraries, but instead synthesizes those structures, we end up with two |
| // import directory entries if we force those objects to be included. |
| |
| // CHECK: Import { |
| // CHECK-NEXT: Name: lib.dll |
| // CHECK-NEXT: ImportLookupTableRVA: 0x2050 |
| // CHECK-NEXT: ImportAddressTableRVA: 0x2068 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: Import { |
| // CHECK-NEXT: Name: lib.dll |
| // CHECK-NEXT: ImportLookupTableRVA: 0x2058 |
| // CHECK-NEXT: ImportAddressTableRVA: 0x2070 |
| // CHECK-NEXT: Symbol: func (0) |
| // CHECK-NEXT: } |
| |
| |
| #--- main.s |
| .global entry |
| entry: |
| call func |
| ret |
| |
| #--- lib.def |
| LIBRARY lib.dll |
| EXPORTS |
| func |