blob db0d3f6d (2165B) - Raw
1 RUN: yaml2obj %S/Inputs/pdb-globals.yaml > %t.obj 2 RUN: lld-link /debug /nodefaultlib /entry:main /out:%t.exe /pdb:%t.pdb %t.obj 3 RUN: llvm-pdbutil dump -symbols -globals %t.pdb | FileCheck %s 4 5 # Test that we correctly distribute symbols between the globals and module 6 # symbol streams. Specifically: 7 # * S_UDT, S_GDATA32, and S_CONSTANT end up in the globals stream, and are 8 # omitted from the module stream. 9 # * S_GPROC32 and S_LPROC32 end up in the symbols stream, but S_PROCREF and 10 # S_LPROCREF are added to the globals stream that refer to the module 11 # stream. 12 # * S_LDATA32 is copied byte for byte into both streams. 13 14 15 CHECK-LABEL: Global Symbols 16 CHECK-NEXT: ============================================================ 17 CHECK-NEXT: Records 18 CHECK-NEXT: 208 | S_LPROCREF [size = 24] `LocalFunc` 19 CHECK-NEXT: module = 1, sum name = 0, offset = 292 20 CHECK-NEXT: 160 | S_PROCREF [size = 28] `GlobalFunc` 21 CHECK-NEXT: module = 1, sum name = 0, offset = 52 22 CHECK-NEXT: 188 | S_PROCREF [size = 20] `main` 23 CHECK-NEXT: module = 1, sum name = 0, offset = 108 24 CHECK-NEXT: 232 | S_GDATA32 [size = 28] `__purecall` 25 CHECK-NEXT: type = 0x0403 (void*), addr = 0003:0004 26 CHECK-NEXT: 260 | S_GDATA32 [size = 24] `GlobalVar` 27 CHECK-NEXT: type = 0x100B (const int*), addr = 0003:0000 28 CHECK-NEXT: 284 | S_LDATA32 [size = 28] `ConstantVar` 29 CHECK-NEXT: type = 0x100A (const int), addr = 0002:0000 30 CHECK-NEXT: 312 | S_PROCREF [size = 40] `HelloPoint::HelloPoint` 31 CHECK-NEXT: module = 1, sum name = 0, offset = 376 32 33 CHECK-LABEL: Symbols 34 CHECK-NEXT: ============================================================ 35 CHECK-NEXT: Mod 0000 36 CHECK-NOT: | S_GDATA32 37 CHECK-NOT: | S_UDT 38 CHECK: 52 | S_GPROC32 [size = 52] `GlobalFunc` 39 CHECK: 108 | S_GPROC32 [size = 44] `main` 40 CHECK: 292 | S_LPROC32 [size = 52] `LocalFunc` 41 CHECK: 348 | S_LDATA32 [size = 28] `ConstantVar` 42 CHECK: 376 | S_GPROC32 [size = 64] `HelloPoint::HelloPoint`