; RUN: llvm-dlltool -m i386:x86-64 --input-def %s --output-lib %t.a ; RUN: llvm-nm %t.a | FileCheck %s ; RUN: llvm-readobj %t.a | FileCheck -check-prefix=ARCH %s ; RUN: llvm-readobj --symbols %t.a | FileCheck -check-prefix=SYMBOLS %s LIBRARY test.dll EXPORTS TestFunction==AltTestFunction ; When creating an import library, the DLL internal function name of ; the implementation of a function isn't visible at all. ImpLibName = Implementation ; A different import library name and implementation name can be mixed ; with exposing it via a different name in the DLL than in code. ImpLibName2 = Implementation2 == AltTestFunction2 ; The fact that a DLL export entry is a forward to a different DLL doesn't ; matter for the import library ImpLibName3 = kernel32.Sleep ; CHECK: U AltTestFunction ; CHECK-NEXT: W TestFunction ; CHECK: U __imp_AltTestFunction ; CHECK-NEXT: W __imp_TestFunction ; CHECK: T ImpLibName ; CHECK-NEXT: T __imp_ImpLibName ; CHECK: U AltTestFunction2 ; CHECK-NEXT: W ImpLibName2 ; CHECK: U __imp_AltTestFunction2 ; CHECK-NEXT: W __imp_ImpLibName2 ; CHECK: T ImpLibName3 ; CHECK-NEXT: T __imp_ImpLibName3 ; ARCH-NOT: unknown arch ; SYMBOLS: Symbol { ; SYMBOLS: Name: TestFunction ; SYMBOLS-NEXT: Value: 0 ; SYMBOLS-NEXT: Section: IMAGE_SYM_UNDEFINED (0) ; SYMBOLS-NEXT: BaseType: Null (0x0) ; SYMBOLS-NEXT: ComplexType: Null (0x0) ; SYMBOLS-NEXT: StorageClass: WeakExternal (0x69) ; SYMBOLS-NEXT: AuxSymbolCount: 1 ; SYMBOLS-NEXT: AuxWeakExternal { ; SYMBOLS-NEXT: Linked: AltTestFunction (2) ; SYMBOLS-NEXT: Search: Alias (0x3) ; SYMBOLS-NEXT: } ; SYMBOLS-NEXT: }