[llvm] cfb4e78 - Revert "[llvm-pdbutil] Add options to only dump symbol record at specified offset and its parents or children with spcified depth."
Michael Forster via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 28 03:42:37 PDT 2022
Author: Michael Forster
Date: 2022-04-28T12:42:31+02:00
New Revision: cfb4e782520ce59602a34732386ebbdf58136cfb
URL: https://github.com/llvm/llvm-project/commit/cfb4e782520ce59602a34732386ebbdf58136cfb
DIFF: https://github.com/llvm/llvm-project/commit/cfb4e782520ce59602a34732386ebbdf58136cfb.diff
LOG: Revert "[llvm-pdbutil] Add options to only dump symbol record at specified offset and its parents or children with spcified depth."
This reverts commit a3b7cb015fd5fd2aa98afda8ae22759576ce2888.
symbol-offset.test fails under MSAN:
[ 1] ; RUN: llvm-pdbutil yaml2pdb %p/Inputs/symbol-offset.yaml --pdb=%t.pdb [FAIL]
llvm-pdbutil yaml2pdb <REDACTED>/llvm/test/tools/llvm-pdbutil/Inputs/symbol-offset.yaml --pdb=<REDACTED>/tmp/symbol-offset.test/symbol-offset.test.tmp.pdb
==9283==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x55f975e5eb91 in __libcpp_tls_set <REDACTED>/include/c++/v1/__threading_support:428:12
#1 0x55f975e5eb91 in set_pointer <REDACTED>/include/c++/v1/thread:196:5
#2 0x55f975e5eb91 in void* std::__msan::__thread_proxy<std::__msan::tuple<std::__msan::unique_ptr<std::__msan::__thread_struct, std::__msan::default_delete<std::__msan::__thread_struct> >, llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()::operator()() const::'lambda'()> >(void*) <REDACTED>/include/c++/v1/thread:285:27
#3 0x7f74a1e55b54 in start_thread (<REDACTED>/libpthread.so.0+0xbb54) (BuildId: 64752de50ebd1a108f4b3f8d0d7e1a13)
#4 0x7f74a1dc9f7e in clone (<REDACTED>/libc.so.6+0x13cf7e) (BuildId: 7cfed7708e5ab7fcb286b373de21ee76)
Added:
Modified:
llvm/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h
llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h
llvm/include/llvm/DebugInfo/PDB/Native/LinePrinter.h
llvm/include/llvm/Support/BinaryStreamArray.h
llvm/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp
llvm/lib/DebugInfo/PDB/Native/InputFile.cpp
llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp
llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp
Removed:
llvm/test/tools/llvm-pdbutil/Inputs/symbol-offset.yaml
llvm/test/tools/llvm-pdbutil/symbol-offset.test
################################################################################
diff --git a/llvm/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h b/llvm/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h
index ef44b622d955..d1c06573b398 100644
--- a/llvm/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h
+++ b/llvm/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h
@@ -18,20 +18,12 @@ class SymbolVisitorCallbacks;
class CVSymbolVisitor {
public:
- struct FilterOptions {
- llvm::Optional<uint32_t> SymbolOffset;
- llvm::Optional<uint32_t> ParentRecursiveDepth;
- llvm::Optional<uint32_t> ChildRecursiveDepth;
- };
-
CVSymbolVisitor(SymbolVisitorCallbacks &Callbacks);
Error visitSymbolRecord(CVSymbol &Record);
Error visitSymbolRecord(CVSymbol &Record, uint32_t Offset);
Error visitSymbolStream(const CVSymbolArray &Symbols);
Error visitSymbolStream(const CVSymbolArray &Symbols, uint32_t InitialOffset);
- Error visitSymbolStreamFiltered(const CVSymbolArray &Symbols,
- const FilterOptions &Filter);
private:
SymbolVisitorCallbacks &Callbacks;
diff --git a/llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h b/llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h
index 392f183f002f..5b0f433f118a 100644
--- a/llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h
+++ b/llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h
@@ -180,8 +180,8 @@ Error iterateSymbolGroups(InputFile &Input, const PrintScope &HeaderScope,
AutoIndent Indent(HeaderScope);
FilterOptions Filters = HeaderScope.P.getFilters();
- if (Filters.DumpModi) {
- uint32_t Modi = Filters.DumpModi.getValue();
+ if (Filters.NumOccurrences) {
+ uint32_t Modi = Filters.DumpModi;
SymbolGroup SG(&Input, Modi);
return iterateOneModule(Input, withLabelWidth(HeaderScope, NumDigits(Modi)),
SG, Modi, Callback);
diff --git a/llvm/include/llvm/DebugInfo/PDB/Native/LinePrinter.h b/llvm/include/llvm/DebugInfo/PDB/Native/LinePrinter.h
index 0db21309f593..e65bfc19fd20 100644
--- a/llvm/include/llvm/DebugInfo/PDB/Native/LinePrinter.h
+++ b/llvm/include/llvm/DebugInfo/PDB/Native/LinePrinter.h
@@ -30,10 +30,8 @@ struct FilterOptions {
std::list<std::string> IncludeCompilands;
uint32_t PaddingThreshold;
uint32_t SizeThreshold;
- llvm::Optional<uint32_t> DumpModi;
- llvm::Optional<uint32_t> ParentRecurseDepth;
- llvm::Optional<uint32_t> ChildrenRecurseDepth;
- llvm::Optional<uint32_t> SymbolOffset;
+ uint32_t DumpModi;
+ uint32_t NumOccurrences;
bool JustMyCode;
};
diff --git a/llvm/include/llvm/Support/BinaryStreamArray.h b/llvm/include/llvm/Support/BinaryStreamArray.h
index ef2233c53ec2..c3e0db4dcff0 100644
--- a/llvm/include/llvm/Support/BinaryStreamArray.h
+++ b/llvm/include/llvm/Support/BinaryStreamArray.h
@@ -111,8 +111,6 @@ class VarStreamArray {
bool valid() const { return Stream.valid(); }
- bool isOffsetValid(uint32_t Offset) const { return at(Offset) != end(); }
-
uint32_t skew() const { return Skew; }
Iterator end() const { return Iterator(E); }
diff --git a/llvm/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp b/llvm/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp
index 162f1db0189b..31af9a1bd848 100644
--- a/llvm/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp
+++ b/llvm/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp
@@ -10,7 +10,6 @@
#include "llvm/DebugInfo/CodeView/CodeView.h"
#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
-#include "llvm/DebugInfo/CodeView/SymbolRecordHelpers.h"
#include "llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h"
#include "llvm/Support/BinaryStreamArray.h"
#include "llvm/Support/ErrorHandling.h"
@@ -84,74 +83,3 @@ Error CVSymbolVisitor::visitSymbolStream(const CVSymbolArray &Symbols,
}
return Error::success();
}
-
-Error CVSymbolVisitor::visitSymbolStreamFiltered(const CVSymbolArray &Symbols,
- const FilterOptions &Filter) {
- if (!Filter.SymbolOffset)
- return visitSymbolStream(Symbols);
- uint32_t SymbolOffset = *Filter.SymbolOffset;
- uint32_t ParentRecurseDepth =
- Filter.ParentRecursiveDepth ? *Filter.ParentRecursiveDepth : 0;
- uint32_t ChildrenRecurseDepth =
- Filter.ChildRecursiveDepth ? *Filter.ChildRecursiveDepth : 0;
- if (!Symbols.isOffsetValid(SymbolOffset))
- return createStringError(inconvertibleErrorCode(), "Invalid symbol offset");
- CVSymbol Sym = *Symbols.at(SymbolOffset);
- uint32_t SymEndOffset =
- symbolOpensScope(Sym.kind()) ? getScopeEndOffset(Sym) : 0;
-
- std::vector<uint32_t> ParentOffsets;
- std::vector<uint32_t> ParentEndOffsets;
- uint32_t ChildrenDepth = 0;
- for (auto Begin = Symbols.begin(), End = Symbols.end(); Begin != End;
- ++Begin) {
- uint32_t BeginOffset = Begin.offset();
- CVSymbol BeginSym = *Begin;
- if (BeginOffset < SymbolOffset) {
- if (symbolOpensScope(Begin->kind())) {
- uint32_t EndOffset = getScopeEndOffset(BeginSym);
- if (SymbolOffset < EndOffset) {
- ParentOffsets.push_back(BeginOffset);
- ParentEndOffsets.push_back(EndOffset);
- }
- }
- } else if (BeginOffset == SymbolOffset) {
- // Found symbol at offset. Visit its parent up to ParentRecurseDepth.
- if (ParentRecurseDepth >= ParentOffsets.size())
- ParentRecurseDepth = ParentOffsets.size();
- uint32_t StartIndex = ParentOffsets.size() - ParentRecurseDepth;
- while (StartIndex < ParentOffsets.size()) {
- if (!Symbols.isOffsetValid(ParentOffsets[StartIndex]))
- break;
- CVSymbol Parent = *Symbols.at(ParentOffsets[StartIndex]);
- if (auto EC = visitSymbolRecord(Parent, ParentOffsets[StartIndex]))
- return EC;
- ++StartIndex;
- }
- if (auto EC = visitSymbolRecord(Sym, SymbolOffset))
- return EC;
- } else if (BeginOffset <= SymEndOffset) {
- if (ChildrenRecurseDepth) {
- // Visit children.
- if (symbolEndsScope(Begin->kind()))
- --ChildrenDepth;
- if (ChildrenDepth < ChildrenRecurseDepth ||
- BeginOffset == SymEndOffset) {
- if (auto EC = visitSymbolRecord(BeginSym, BeginOffset))
- return EC;
- }
- if (symbolOpensScope(Begin->kind()))
- ++ChildrenDepth;
- }
- } else {
- // Visit parents' ends.
- if (ParentRecurseDepth && BeginOffset == ParentEndOffsets.back()) {
- if (auto EC = visitSymbolRecord(BeginSym, BeginOffset))
- return EC;
- ParentEndOffsets.pop_back();
- --ParentRecurseDepth;
- }
- }
- }
- return Error::success();
-}
diff --git a/llvm/lib/DebugInfo/PDB/Native/InputFile.cpp b/llvm/lib/DebugInfo/PDB/Native/InputFile.cpp
index ec7c4e1e3353..99dd1316dd8f 100644
--- a/llvm/lib/DebugInfo/PDB/Native/InputFile.cpp
+++ b/llvm/lib/DebugInfo/PDB/Native/InputFile.cpp
@@ -579,7 +579,7 @@ bool llvm::pdb::shouldDumpSymbolGroup(uint32_t Idx, const SymbolGroup &Group,
return false;
// If the arg was not specified on the command line, always dump all modules.
- if (!Filters.DumpModi)
+ if (Filters.NumOccurrences == 0)
return true;
// Otherwise, only dump if this is the same module specified.
diff --git a/llvm/test/tools/llvm-pdbutil/Inputs/symbol-offset.yaml b/llvm/test/tools/llvm-pdbutil/Inputs/symbol-offset.yaml
deleted file mode 100644
index ca574347b07c..000000000000
--- a/llvm/test/tools/llvm-pdbutil/Inputs/symbol-offset.yaml
+++ /dev/null
@@ -1,204 +0,0 @@
----
-DbiStream:
- VerHeader: V70
- Age: 1
- BuildNumber: 36363
- PdbDllVersion: 0
- PdbDllRbld: 0
- Flags: 0
- MachineType: Amd64
- Modules:
- - Module: '/tmp/test.obj'
- Modi:
- Signature: 4
- Records:
- - Kind: S_GPROC32
- ProcSym:
- PtrParent: 0
- PtrEnd: 468
- PtrNext: 0
- CodeSize: 137
- DbgStart: 0
- DbgEnd: 0
- FunctionType: 4104
- Offset: 176
- Segment: 1
- Flags: [ ]
- DisplayName: main
- - Kind: S_FRAMEPROC
- FrameProcSym:
- TotalFrameBytes: 56
- PaddingFrameBytes: 0
- OffsetToPadding: 0
- BytesOfCalleeSavedRegisters: 0
- OffsetOfExceptionHandler: 0
- SectionIdOfExceptionHandler: 0
- Flags: [ ]
- - Kind: S_LOCAL
- LocalSym:
- Type: 116
- Flags: [ IsParameter ]
- VarName: argc
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 4
- Range:
- OffsetStart: 197
- ISectStart: 1
- Range: 116
- Gaps: []
- - Kind: S_LOCAL
- LocalSym:
- Type: 4102
- Flags: [ IsParameter ]
- VarName: argv
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 8
- Range:
- OffsetStart: 197
- ISectStart: 1
- Range: 116
- Gaps: []
- - Kind: S_INLINESITE
- InlineSiteSym:
- PtrParent: 4
- PtrEnd: 464
- Inlinee: 4098
- - Kind: S_LOCAL
- LocalSym:
- Type: 116
- Flags: [ IsParameter ]
- VarName: x
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 24
- Range:
- OffsetStart: 221
- ISectStart: 1
- Range: 87
- Gaps: []
- - Kind: S_LOCAL
- LocalSym:
- Type: 116
- Flags: [ IsParameter ]
- VarName: y
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 28
- Range:
- OffsetStart: 221
- ISectStart: 1
- Range: 87
- Gaps: []
- - Kind: S_LOCAL
- LocalSym:
- Type: 116
- Flags: [ IsParameter ]
- VarName: z
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 32
- Range:
- OffsetStart: 221
- ISectStart: 1
- Range: 87
- Gaps: []
- - Kind: S_INLINESITE
- InlineSiteSym:
- PtrParent: 144
- PtrEnd: 288
- Inlinee: 4096
- - Kind: S_LOCAL
- LocalSym:
- Type: 116
- Flags: [ IsParameter ]
- VarName: x
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 40
- Range:
- OffsetStart: 229
- ISectStart: 1
- Range: 7
- Gaps: []
- - Kind: S_INLINESITE_END
- ScopeEndSym: {}
- - Kind: S_INLINESITE
- InlineSiteSym:
- PtrParent: 144
- PtrEnd: 412
- Inlinee: 4097
- - Kind: S_LOCAL
- LocalSym:
- Type: 116
- Flags: [ IsParameter ]
- VarName: x
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 44
- Range:
- OffsetStart: 260
- ISectStart: 1
- Range: 19
- Gaps: []
- - Kind: S_LOCAL
- LocalSym:
- Type: 116
- Flags: [ IsParameter ]
- VarName: y
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 48
- Range:
- OffsetStart: 260
- ISectStart: 1
- Range: 19
- Gaps: []
- - Kind: S_INLINESITE
- InlineSiteSym:
- PtrParent: 292
- PtrEnd: 408
- Inlinee: 4096
- - Kind: S_LOCAL
- LocalSym:
- Type: 116
- Flags: [ IsParameter ]
- VarName: x
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 52
- Range:
- OffsetStart: 272
- ISectStart: 1
- Range: 7
- Gaps: []
- - Kind: S_INLINESITE_END
- ScopeEndSym: {}
- - Kind: S_INLINESITE_END
- ScopeEndSym: {}
- - Kind: S_INLINESITE
- InlineSiteSym:
- PtrParent: 144
- PtrEnd: 460
- Inlinee: 4096
- - Kind: S_LOCAL
- LocalSym:
- Type: 116
- Flags: [ IsParameter ]
- VarName: x
- - Kind: S_DEFRANGE_FRAMEPOINTER_REL
- DefRangeFramePointerRelSym:
- Offset: 36
- Range:
- OffsetStart: 299
- ISectStart: 1
- Range: 7
- Gaps: []
- - Kind: S_INLINESITE_END
- ScopeEndSym: {}
- - Kind: S_INLINESITE_END
- ScopeEndSym: {}
- - Kind: S_END
- ScopeEndSym: {}
-...
diff --git a/llvm/test/tools/llvm-pdbutil/symbol-offset.test b/llvm/test/tools/llvm-pdbutil/symbol-offset.test
deleted file mode 100644
index 175aaaca5874..000000000000
--- a/llvm/test/tools/llvm-pdbutil/symbol-offset.test
+++ /dev/null
@@ -1,176 +0,0 @@
-; 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]
\ No newline at end of file
diff --git a/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp b/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp
index a173eb1faa62..12cda106c036 100644
--- a/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp
+++ b/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp
@@ -1485,19 +1485,8 @@ Error DumpOutputStyle::dumpModuleSymsForPdb() {
Pipeline.addCallbackToPipeline(Dumper);
CVSymbolVisitor Visitor(Pipeline);
auto SS = ModS.getSymbolsSubstream();
- if (opts::Filters.SymbolOffset) {
- CVSymbolVisitor::FilterOptions Filter;
- Filter.SymbolOffset = opts::Filters.SymbolOffset;
- Filter.ParentRecursiveDepth = opts::Filters.ParentRecurseDepth;
- Filter.ChildRecursiveDepth = opts::Filters.ChildrenRecurseDepth;
- if (auto EC = Visitor.visitSymbolStreamFiltered(ModS.getSymbolArray(),
- Filter)) {
- P.formatLine("Error while processing symbol records. {0}",
- toString(std::move(EC)));
- return EC;
- }
- } else if (auto EC = Visitor.visitSymbolStream(ModS.getSymbolArray(),
- SS.Offset)) {
+ if (auto EC =
+ Visitor.visitSymbolStream(ModS.getSymbolArray(), SS.Offset)) {
P.formatLine("Error while processing symbol records. {0}",
toString(std::move(EC)));
return EC;
diff --git a/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp b/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp
index 082ec093e798..7258a7f0ecd8 100644
--- a/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp
+++ b/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp
@@ -562,27 +562,6 @@ cl::opt<bool>
cl::opt<bool> DumpFpo("fpo", cl::desc("dump FPO records"),
cl::cat(SymbolOptions), cl::sub(DumpSubcommand));
-cl::opt<uint32_t> DumpSymbolOffset(
- "symbol-offset", cl::Optional,
- cl::desc("only dump symbol record with the specified symbol offset"),
- cl::cat(SymbolOptions), cl::sub(DumpSubcommand));
-cl::opt<bool> DumpParents("show-parents",
- cl::desc("dump the symbols record's all parents."),
- cl::cat(SymbolOptions), cl::sub(DumpSubcommand));
-cl::opt<uint32_t>
- DumpParentDepth("parent-recurse-depth", cl::Optional, cl::init(-1U),
- cl::desc("only recurse to a depth of N when displaying "
- "parents of a symbol record."),
- cl::cat(SymbolOptions), cl::sub(DumpSubcommand));
-cl::opt<bool> DumpChildren("show-children",
- cl::desc("dump the symbols record's all children."),
- cl::cat(SymbolOptions), cl::sub(DumpSubcommand));
-cl::opt<uint32_t>
- DumpChildrenDepth("children-recurse-depth", cl::Optional, cl::init(-1U),
- cl::desc("only recurse to a depth of N when displaying "
- "children of a symbol record."),
- cl::cat(SymbolOptions), cl::sub(DumpSubcommand));
-
// MODULE & FILE OPTIONS
cl::opt<bool> DumpModules("modules", cl::desc("dump compiland information"),
cl::cat(FileOptions), cl::sub(DumpSubcommand));
@@ -1554,21 +1533,9 @@ int main(int Argc, const char **Argv) {
errs().flush();
exit(1);
}
+ opts::Filters.NumOccurrences = opts::dump::DumpModi.getNumOccurrences();
opts::Filters.DumpModi = opts::dump::DumpModi;
}
- if (opts::dump::DumpSymbolOffset) {
- if (!opts::Filters.DumpModi) {
- errs()
- << "need to specify argument '-modi' when using '-symbol-offset'.\n";
- errs().flush();
- exit(1);
- }
- opts::Filters.SymbolOffset = opts::dump::DumpSymbolOffset;
- if (opts::dump::DumpParents)
- opts::Filters.ParentRecurseDepth = opts::dump::DumpParentDepth;
- if (opts::dump::DumpChildren)
- opts::Filters.ChildrenRecurseDepth = opts::dump::DumpChildrenDepth;
- }
if (opts::PdbToYamlSubcommand) {
pdb2Yaml(opts::pdb2yaml::InputFilename.front());
More information about the llvm-commits
mailing list