brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.4 KiB · 3f3ab36 Raw
187 lines · plain
1Make a DLL that exports a few functions, then make a DLL with PDBs that imports2them. Check that the __imp_ pointer and the generated thunks appear in the3publics stream.4 5RUN: yaml2obj %p/Inputs/export.yaml -o %t1.obj6RUN: lld-link /out:%t1.dll /dll %t1.obj /implib:%t1.lib \7RUN:   /export:exportfn1 /export:exportfn28RUN: yaml2obj %p/Inputs/import.yaml -o %t2.obj9RUN: lld-link /out:%t2.exe /pdb:%t2.pdb /pdbaltpath:test.pdb \10RUN:   /debug /entry:main %t2.obj %t1.lib11RUN: llvm-pdbutil dump %t2.pdb -all | FileCheck %s12 13CHECK:                             Streams14CHECK-NEXT: ============================================================15CHECK-LABEL:   Stream 10 ( 256 bytes): [Module "Import:pdb-publics-import.test.tmp1.dll"]16 17CHECK:                         Module Stats18CHECK-NEXT: ============================================================19CHECK-NEXT: Mod 0000 | `{{.*}}pdb-publics-import.test.tmp2.obj`:20CHECK-NEXT:   Mod 0 (debug info not present): [{{.*}}pdb-publics-import.test.tmp2.obj]21CHECK-NEXT: Mod 0001 | `pdb-publics-import.test.tmp1.dll`:22CHECK-NEXT:   Mod 1 (debug info not present): [pdb-publics-import.test.tmp1.dll]23CHECK-NEXT: Mod 0002 | `Import:pdb-publics-import.test.tmp1.dll`:24CHECK-NEXT:   Stream 10, 256 bytes25 26CHECK:                           Modules27CHECK-NEXT: ============================================================28CHECK-NEXT:   Mod 0000 | `{{.*}}pdb-publics-import.test.tmp2.obj`:29CHECK-NEXT:   SC[.text]  | mod = 0, 0001:0000, size = 8, data crc = 0, reloc crc = 030CHECK-NEXT:           IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_EXECUTE |31CHECK-NEXT:           IMAGE_SCN_MEM_READ32CHECK-NEXT:   Obj: `{{.*}}pdb-publics-import.test.tmp2.obj`:33CHECK-NEXT:   debug stream: 65535, # files: 0, has ec info: false34CHECK-NEXT:   pdb file ni: 0 ``, src file ni: 0 ``35CHECK-NEXT: Mod 0001 | `pdb-publics-import.test.tmp1.dll`:36CHECK-NEXT: SC[???]  | mod = 65535, 65535:0000, size = -1, data crc = 0, reloc crc = 037CHECK-NEXT:         none38CHECK-NEXT: Obj: `{{.*}}pdb-publics-import.test.tmp1.lib`:39CHECK-NEXT: debug stream: 65535, # files: 0, has ec info: false40CHECK-NEXT: pdb file ni: 0 ``, src file ni: 0 ``41CHECK-NEXT: Mod 0002 | `Import:pdb-publics-import.test.tmp1.dll`:42CHECK-NEXT: SC[.text]  | mod = 2, 0001:0032, size = 6, data crc = 0, reloc crc = 043CHECK-NEXT:         IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ44CHECK-NEXT: Obj: `{{.*}}pdb-publics-import.test.tmp1.lib`:45CHECK-NEXT: debug stream: 10, # files: 0, has ec info: false46CHECK-NEXT: pdb file ni: 0 ``, src file ni: 0 ``47CHECK-NEXT: Mod 0003 | `* Linker *`:48CHECK-NEXT: SC[???]  | mod = 65535, 65535:0000, size = -1, data crc = 0, reloc crc = 049CHECK-NEXT:         none50CHECK-NEXT: Obj: ``:51CHECK-NEXT: debug stream: 11, # files: 0, has ec info: false52CHECK-NEXT: pdb file ni: 1 `{{.*}}pdb-publics-import.test.tmp2.pdb`, src file ni: 0 ``53 54CHECK:                             Public Symbols55CHECK-NEXT: ============================================================56CHECK-NEXT:    Records57CHECK-NEXT:      112 | S_PUB32 [size = 20] `main`58CHECK-NEXT:            flags = function, addr = 0001:000059CHECK-NEXT:       64 | S_PUB32 [size = 24] `exportfn1`60CHECK-NEXT:            flags = function, addr = 0001:001661CHECK-NEXT:       88 | S_PUB32 [size = 24] `exportfn2`62CHECK-NEXT:            flags = function, addr = 0001:003263CHECK-NEXT:       32 | S_PUB32 [size = 32] `__imp_exportfn2`64CHECK-NEXT:            flags = none, addr = 0002:013665CHECK-NEXT:        0 | S_PUB32 [size = 32] `__imp_exportfn1`66CHECK-NEXT:            flags = none, addr = 0002:012867 68CHECK:                           Symbols69CHECK-NEXT: ============================================================70CHECK-NEXT:   Mod 0000 | `{{.*}}pdb-publics-import.test.tmp2.obj`:71CHECK-NEXT:   Error loading module stream 0.  The specified stream could not be loaded. Module stream not present72CHECK-NEXT: Mod 0001 | `pdb-publics-import.test.tmp1.dll`:73CHECK-NEXT: Error loading module stream 1.  The specified stream could not be loaded. Module stream not present74CHECK-NEXT: Mod 0002 | `Import:pdb-publics-import.test.tmp1.dll`:75CHECK-NEXT:      4 | S_OBJNAME [size = 44] sig=0, `pdb-publics-import.test.tmp1.dll`76CHECK-NEXT:     48 | S_COMPILE3 [size = 40]77CHECK-NEXT:          machine = intel x86-x64, Ver = LLVM Linker, language = link78CHECK-NEXT:          frontend = 0.0.0.0, backend = 14.10.25019.079CHECK-NEXT:          flags = none80CHECK-NEXT:     88 | S_THUNK32 [size = 36] `exportfn1`81CHECK-NEXT:          parent = 0, end = 124, next = 082CHECK-NEXT:          kind = thunk, size = 6, addr = 0001:001683CHECK-NEXT:    124 | S_END [size = 4]84CHECK-NEXT:    128 | S_OBJNAME [size = 44] sig=0, `pdb-publics-import.test.tmp1.dll`85CHECK-NEXT:    172 | S_COMPILE3 [size = 40]86CHECK-NEXT:          machine = intel x86-x64, Ver = LLVM Linker, language = link87CHECK-NEXT:          frontend = 0.0.0.0, backend = 14.10.25019.088CHECK-NEXT:          flags = none89CHECK-NEXT:    212 | S_THUNK32 [size = 36] `exportfn2`90CHECK-NEXT:          parent = 0, end = 248, next = 091CHECK-NEXT:          kind = thunk, size = 6, addr = 0001:003292CHECK-NEXT:    248 | S_END [size = 4]93CHECK-NEXT: Mod 0003 | `* Linker *`:94CHECK-NEXT:      4 | S_OBJNAME [size = 20] sig=0, `* Linker *`95CHECK-NEXT:     24 | S_COMPILE3 [size = 40]96CHECK-NEXT:          machine = intel x86-x64, Ver = LLVM Linker, language = link97CHECK-NEXT:          frontend = 0.0.0.0, backend = 14.10.25019.098CHECK-NEXT:          flags = none99CHECK-NEXT:     64 | S_ENVBLOCK [size = {{[0-9]+}}]100CHECK:  {{[0-9]+}} | S_SECTION [size = 28] `.text`101CHECK-NEXT:          length = 38, alignment = 12, rva = 4096, section # = 1102CHECK-NEXT:          characteristics =103CHECK-NEXT:            code104CHECK-NEXT:            execute permissions105CHECK-NEXT:            read permissions106CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 24] `.text`107CHECK-NEXT:          length = 8, addr = 0001:0000108CHECK-NEXT:          characteristics =109CHECK-NEXT:            code110CHECK-NEXT:            execute permissions111CHECK-NEXT:            read permissions112CHECK-NEXT: {{[0-9]+}} | S_SECTION [size = 28] `.rdata`113CHECK-NEXT:          length = 209, alignment = 12, rva = 8192, section # = 2114CHECK-NEXT:          characteristics =115CHECK-NEXT:            initialized data116CHECK-NEXT:            read permissions117CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$2`118CHECK-NEXT:          length = 40, addr = 0002:0064119CHECK-NEXT:          characteristics =120CHECK-NEXT:            initialized data121CHECK-NEXT:            read permissions122CHECK-NEXT:            write permissions123CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$4`124CHECK-NEXT:          length = 24, addr = 0002:0104125CHECK-NEXT:          characteristics =126CHECK-NEXT:            initialized data127CHECK-NEXT:            read permissions128CHECK-NEXT:            write permissions129CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$5`130CHECK-NEXT:          length = 24, addr = 0002:0128131CHECK-NEXT:          characteristics =132CHECK-NEXT:            initialized data133CHECK-NEXT:            read permissions134CHECK-NEXT:            write permissions135CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$6`136CHECK-NEXT:          length = 24, addr = 0002:0152137CHECK-NEXT:          characteristics =138CHECK-NEXT:            initialized data139CHECK-NEXT:            read permissions140CHECK-NEXT:            write permissions141CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$7`142CHECK-NEXT:          length = 33, addr = 0002:0176143CHECK-NEXT:          characteristics =144CHECK-NEXT:            initialized data145CHECK-NEXT:            read permissions146CHECK-NEXT:            write permissions147 148CHECK:                         Section Contributions149CHECK-NEXT: ============================================================150    main151CHECK-NEXT:   SC[.text]   | mod = 0, 0001:0000, size = 8, data crc = 0, reloc crc = 0152CHECK-NEXT:                 IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_EXECUTE |153CHECK-NEXT:                 IMAGE_SCN_MEM_READ154    exportfn1 thunk155CHECK-NEXT:   SC[.text]   | mod = 3, 0001:0016, size = 6, data crc = 0, reloc crc = 0156CHECK-NEXT:                 IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ157    exportfn2 thunk158CHECK-NEXT:   SC[.text]   | mod = 3, 0001:0032, size = 6, data crc = 0, reloc crc = 0159CHECK-NEXT:                 IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ160    .rdata debug directory data chunks161CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0000, size = 28, data crc = 0, reloc crc = 0162CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ163CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0028, size = 33, data crc = 0, reloc crc = 0164CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ165CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0064, size = 20, data crc = 0, reloc crc = 0166CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ167CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0084, size = 20, data crc = 0, reloc crc = 0168CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ169CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0104, size = 8, data crc = 0, reloc crc = 0170CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ171CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0112, size = 8, data crc = 0, reloc crc = 0172CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ173CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0120, size = 8, data crc = 0, reloc crc = 0174CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ175CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0128, size = 8, data crc = 0, reloc crc = 0176CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ177CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0136, size = 8, data crc = 0, reloc crc = 0178CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ179CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0144, size = 8, data crc = 0, reloc crc = 0180CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ181CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0152, size = 12, data crc = 0, reloc crc = 0182CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ183CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0164, size = 12, data crc = 0, reloc crc = 0184CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ185CHECK-NEXT:   SC[.rdata]  | mod = 3, 0002:0176, size = 33, data crc = 0, reloc crc = 0186CHECK-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ187