1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
; RUN: llvm-pdbutil yaml2pdb %p/Inputs/symbol-offset.yaml --pdb=%t.pdb
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=80 %t.pdb \
; RUN: | FileCheck --check-prefix=OFFSET %s
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=4 --show-parents \
; RUN: %t.pdb | FileCheck --check-prefix=SHOW-PARENT1 %s
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=80 --show-parents \
; RUN: %t.pdb | FileCheck --check-prefix=SHOW-PARENT2 %s
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=308 --show-parents \
; RUN: %t.pdb | FileCheck --check-prefix=SHOW-PARENT3 %s
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=260 --show-parents \
; RUN: --parent-recurse-depth=1 %t.pdb \
; RUN: | FileCheck --check-prefix=SHOW-PARENT-DEPTH1 %s
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=260 --show-parents \
; RUN: --parent-recurse-depth=2 %t.pdb \
; RUN: | FileCheck --check-prefix=SHOW-PARENT-DEPTH2 %s
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=416 --show-children\
; RUN: %t.pdb | FileCheck --check-prefix=SHOW-CHILDREN1 %s
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=292 --show-children\
; RUN: %t.pdb | FileCheck --check-prefix=SHOW-CHILDREN2 %s
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=4 --show-children \
; RUN: --children-recurse-depth=1 %t.pdb \
; RUN: | FileCheck --check-prefix=SHOW-CHILDREN-DEPTH1 %s
; RUN: llvm-pdbutil dump --symbols --modi=0 --symbol-offset=292 --show-children\
; RUN: --children-recurse-depth=2 %t.pdb \
; RUN: | FileCheck --check-prefix=SHOW-CHILDREN-DEPTH2 %s
The pdb file is generate from following cpp file and use llvm-pdbutil's pdb2yaml
functionality to convert pdb to yaml. Unrelated information was removed from the
yaml test file.
; [[clang::always_inline]] int func1(int x) {
; return x * 2;
; }
;
; [[clang::always_inline]] int func2(int x, int y) {
; return func1(x + y);
; }
;
; [[clang::always_inline]] int func3(int x, int y, int z) {
; y += func1(x);
; x += func2(y, z);
; return x + func1(x);
; }
;
; int main(int argc, char** argv) {
; return func3(argc, 1, 2);
; }
OFFSET: 80 | S_LOCAL [size = 16] `argc`
OFFSET-NEXT: type=0x0074 (int), flags = param
SHOW-PARENT1: 4 | S_GPROC32 [size = 44] `main`
SHOW-PARENT1-NEXT: parent = 0, end = 468, addr = 0001:0176, code size = 137
SHOW-PARENT1-NEXT: type = `0x1008 (<unknown UDT>)`, debug start = 0, debug end = 0, flags = none
SHOW-PARENT2: 4 | S_GPROC32 [size = 44] `main`
SHOW-PARENT2-NEXT: parent = 0, end = 468, addr = 0001:0176, code size = 137
SHOW-PARENT2-NEXT: type = `0x1008 (<unknown UDT>)`, debug start = 0, debug end = 0, flags = none
SHOW-PARENT2-NEXT: 80 | S_LOCAL [size = 16] `argc`
SHOW-PARENT2-NEXT: type=0x0074 (int), flags = param
SHOW-PARENT2-NEXT: 468 | S_END [size = 4]
SHOW-PARENT3: 4 | S_GPROC32 [size = 44] `main`
SHOW-PARENT3-NEXT: parent = 0, end = 468, addr = 0001:0176, code size = 137
SHOW-PARENT3-NEXT: type = `0x1008 (<unknown UDT>)`, debug start = 0, debug end = 0, flags = none
SHOW-PARENT3-NEXT: 144 | S_INLINESITE [size = 16]
SHOW-PARENT3-NEXT: inlinee = 0x1002 (<unknown UDT>), parent = 4, end = 464
SHOW-PARENT3-NEXT: 292 | S_INLINESITE [size = 16]
SHOW-PARENT3-NEXT: inlinee = 0x1001 (<unknown UDT>), parent = 144, end = 412
SHOW-PARENT3-NEXT: 308 | S_LOCAL [size = 12] `x`
SHOW-PARENT3-NEXT: type=0x0074 (int), flags = param
SHOW-PARENT3-NEXT: 412 | S_INLINESITE_END [size = 4]
SHOW-PARENT3-NEXT: 464 | S_INLINESITE_END [size = 4]
SHOW-PARENT3-NEXT: 468 | S_END [size = 4]
SHOW-PARENT-DEPTH1: 244 | S_INLINESITE [size = 16]
SHOW-PARENT-DEPTH1-NEXT: inlinee = 0x1000 (<unknown UDT>), parent = 144, end = 288
SHOW-PARENT-DEPTH1-NEXT: 260 | S_LOCAL [size = 12] `x`
SHOW-PARENT-DEPTH1-NEXT: type=0x0074 (int), flags = param
SHOW-PARENT-DEPTH1-NEXT: 288 | S_INLINESITE_END [size = 4]
SHOW-PARENT-DEPTH2: 144 | S_INLINESITE [size = 16]
SHOW-PARENT-DEPTH2-NEXT: inlinee = 0x1002 (<unknown UDT>), parent = 4, end = 464
SHOW-PARENT-DEPTH2-NEXT: 244 | S_INLINESITE [size = 16]
SHOW-PARENT-DEPTH2-NEXT: inlinee = 0x1000 (<unknown UDT>), parent = 144, end = 288
SHOW-PARENT-DEPTH2-NEXT: 260 | S_LOCAL [size = 12] `x`
SHOW-PARENT-DEPTH2-NEXT: type=0x0074 (int), flags = param
SHOW-PARENT-DEPTH2-NEXT: 288 | S_INLINESITE_END [size = 4]
SHOW-PARENT-DEPTH2-NEXT: 464 | S_INLINESITE_END [size = 4]
SHOW-CHILDREN1: 416 | S_INLINESITE [size = 16]
SHOW-CHILDREN1-NEXT: inlinee = 0x1000 (<unknown UDT>), parent = 144, end = 460
SHOW-CHILDREN1-NEXT: 432 | S_LOCAL [size = 12] `x`
SHOW-CHILDREN1-NEXT: type=0x0074 (int), flags = param
SHOW-CHILDREN1-NEXT: 444 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
SHOW-CHILDREN1-NEXT: offset = 36, range = [0001:0299,+7)
SHOW-CHILDREN1-NEXT: gaps = []
SHOW-CHILDREN1-NEXT: 460 | S_INLINESITE_END [size = 4]
SHOW-CHILDREN2: 292 | S_INLINESITE [size = 16]
SHOW-CHILDREN2-NEXT: inlinee = 0x1001 (<unknown UDT>), parent = 144, end = 412
SHOW-CHILDREN2-NEXT: 308 | S_LOCAL [size = 12] `x`
SHOW-CHILDREN2-NEXT: type=0x0074 (int), flags = param
SHOW-CHILDREN2-NEXT: 320 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
SHOW-CHILDREN2-NEXT: offset = 44, range = [0001:0260,+19)
SHOW-CHILDREN2-NEXT: gaps = []
SHOW-CHILDREN2-NEXT: 336 | S_LOCAL [size = 12] `y`
SHOW-CHILDREN2-NEXT: type=0x0074 (int), flags = param
SHOW-CHILDREN2-NEXT: 348 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
SHOW-CHILDREN2-NEXT: offset = 48, range = [0001:0260,+19)
SHOW-CHILDREN2-NEXT: gaps = []
SHOW-CHILDREN2-NEXT: 364 | S_INLINESITE [size = 16]
SHOW-CHILDREN2-NEXT: inlinee = 0x1000 (<unknown UDT>), parent = 292, end = 408
SHOW-CHILDREN2-NEXT: 380 | S_LOCAL [size = 12] `x`
SHOW-CHILDREN2-NEXT: type=0x0074 (int), flags = param
SHOW-CHILDREN2-NEXT: 392 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
SHOW-CHILDREN2-NEXT: offset = 52, range = [0001:0272,+7)
SHOW-CHILDREN2-NEXT: gaps = []
SHOW-CHILDREN2-NEXT: 408 | S_INLINESITE_END [size = 4]
SHOW-CHILDREN2-NEXT: 412 | S_INLINESITE_END [size = 4]
SHOW-CHILDREN-DEPTH1: 4 | S_GPROC32 [size = 44] `main`
SHOW-CHILDREN-DEPTH1-NEXT: parent = 0, end = 468, addr = 0001:0176, code size = 137
SHOW-CHILDREN-DEPTH1-NEXT: type = `0x1008 (<unknown UDT>)`, debug start = 0, debug end = 0, flags = none
SHOW-CHILDREN-DEPTH1-NEXT: 48 | S_FRAMEPROC [size = 32]
SHOW-CHILDREN-DEPTH1-NEXT: size = 56, padding size = 0, offset to padding = 0
SHOW-CHILDREN-DEPTH1-NEXT: bytes of callee saved registers = 0, exception handler addr = 0000:0000
SHOW-CHILDREN-DEPTH1-NEXT: local fp reg = NONE, param fp reg = NONE
SHOW-CHILDREN-DEPTH1-NEXT: flags = none
SHOW-CHILDREN-DEPTH1-NEXT: 80 | S_LOCAL [size = 16] `argc`
SHOW-CHILDREN-DEPTH1-NEXT: type=0x0074 (int), flags = param
SHOW-CHILDREN-DEPTH1-NEXT: 96 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
SHOW-CHILDREN-DEPTH1-NEXT: offset = 4, range = [0001:0197,+116)
SHOW-CHILDREN-DEPTH1-NEXT: gaps = []
SHOW-CHILDREN-DEPTH1-NEXT: 112 | S_LOCAL [size = 16] `argv`
SHOW-CHILDREN-DEPTH1-NEXT: type=0x1006 (<unknown UDT>), flags = param
SHOW-CHILDREN-DEPTH1-NEXT: 128 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
SHOW-CHILDREN-DEPTH1-NEXT: offset = 8, range = [0001:0197,+116)
SHOW-CHILDREN-DEPTH1-NEXT: gaps = []
SHOW-CHILDREN-DEPTH1-NEXT: 144 | S_INLINESITE [size = 16]
SHOW-CHILDREN-DEPTH1-NEXT: inlinee = 0x1002 (<unknown UDT>), parent = 4, end = 464
SHOW-CHILDREN-DEPTH1-NEXT: 464 | S_INLINESITE_END [size = 4]
SHOW-CHILDREN-DEPTH1-NEXT: 468 | S_END [size = 4]
SHOW-CHILDREN-DEPTH2: 292 | S_INLINESITE [size = 16]
SHOW-CHILDREN-DEPTH2-NEXT: inlinee = 0x1001 (<unknown UDT>), parent = 144, end = 412
SHOW-CHILDREN-DEPTH2-NEXT: 308 | S_LOCAL [size = 12] `x`
SHOW-CHILDREN-DEPTH2-NEXT: type=0x0074 (int), flags = param
SHOW-CHILDREN-DEPTH2-NEXT: 320 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
SHOW-CHILDREN-DEPTH2-NEXT: offset = 44, range = [0001:0260,+19)
SHOW-CHILDREN-DEPTH2-NEXT: gaps = []
SHOW-CHILDREN-DEPTH2-NEXT: 336 | S_LOCAL [size = 12] `y`
SHOW-CHILDREN-DEPTH2-NEXT: type=0x0074 (int), flags = param
SHOW-CHILDREN-DEPTH2-NEXT: 348 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
SHOW-CHILDREN-DEPTH2-NEXT: offset = 48, range = [0001:0260,+19)
SHOW-CHILDREN-DEPTH2-NEXT: gaps = []
SHOW-CHILDREN-DEPTH2-NEXT: 364 | S_INLINESITE [size = 16]
SHOW-CHILDREN-DEPTH2-NEXT: inlinee = 0x1000 (<unknown UDT>), parent = 292, end = 408
SHOW-CHILDREN-DEPTH2-NEXT: 380 | S_LOCAL [size = 12] `x`
SHOW-CHILDREN-DEPTH2-NEXT: type=0x0074 (int), flags = param
SHOW-CHILDREN-DEPTH2-NEXT: 392 | S_DEFRANGE_FRAMEPOINTER_REL [size = 16]
SHOW-CHILDREN-DEPTH2-NEXT: offset = 52, range = [0001:0272,+7)
SHOW-CHILDREN-DEPTH2-NEXT: gaps = []
SHOW-CHILDREN-DEPTH2-NEXT: 408 | S_INLINESITE_END [size = 4]
SHOW-CHILDREN-DEPTH2-NEXT: 412 | S_INLINESITE_END [size = 4]
|