58 lines · plain
1; RUN: llvm-dlltool -m i386:x86-64 --input-def %s --output-lib %t.a2; RUN: llvm-nm %t.a | FileCheck %s3; RUN: llvm-readobj %t.a | FileCheck -check-prefix=ARCH %s4; RUN: llvm-readobj --symbols %t.a | FileCheck -check-prefix=SYMBOLS %s5 6LIBRARY test.dll7EXPORTS8AltTestFunction9AltTestFunction210AltTestData11TestFunction==AltTestFunction12TestData DATA == AltTestData13; When creating an import library, the DLL internal function name of14; the implementation of a function isn't visible at all.15ImpLibName = Implementation16; A different import library name and implementation name can be mixed17; with exposing it via a different name in the DLL than in code.18ImpLibName2 = Implementation2 == AltTestFunction219; The fact that a DLL export entry is a forward to a different DLL doesn't20; matter for the import library21ImpLibName3 = kernel32.Sleep22 23; CHECK: T AltTestFunction24; CHECK-NEXT: T __imp_AltTestFunction25; CHECK: T AltTestFunction226; CHECK-NEXT: T __imp_AltTestFunction227; CHECK: T ImpLibName28; CHECK-NEXT: T __imp_ImpLibName29; CHECK: T ImpLibName330; CHECK-NEXT: T __imp_ImpLibName331; CHECK: U AltTestFunction32; CHECK-NEXT: W TestFunction33; CHECK: U __imp_AltTestFunction34; CHECK-NEXT: W __imp_TestFunction35; CHECK-NOT: W TestData36; CHECK: U __imp_AltTestData37; CHECK-NEXT: W __imp_TestData38; CHECK: U AltTestFunction239; CHECK-NEXT: W ImpLibName240; CHECK: U __imp_AltTestFunction241; CHECK-NEXT: W __imp_ImpLibName242 43; ARCH-NOT: unknown arch44 45; SYMBOLS: Symbol {46; SYMBOLS: Name: TestFunction47; SYMBOLS-NEXT: Value: 048; SYMBOLS-NEXT: Section: IMAGE_SYM_UNDEFINED (0)49; SYMBOLS-NEXT: BaseType: Null (0x0)50; SYMBOLS-NEXT: ComplexType: Null (0x0)51; SYMBOLS-NEXT: StorageClass: WeakExternal (0x69)52; SYMBOLS-NEXT: AuxSymbolCount: 153; SYMBOLS-NEXT: AuxWeakExternal {54; SYMBOLS-NEXT: Linked: AltTestFunction (2)55; SYMBOLS-NEXT: Search: Alias (0x3)56; SYMBOLS-NEXT: }57; SYMBOLS-NEXT: }58