[PATCH] D137156: [llvm-debuginfo-analyzer] Fix memory leak reported by sanitizers.
Carlos Alberto Enciso via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 1 23:08:29 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rG9d56d9a95fcf: [llvm-debuginfo-analyzer] Fix memory leak reported by sanitizers. (authored by CarlosAlbertoEnciso).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D137156/new/
https://reviews.llvm.org/D137156
Files:
llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp
llvm/lib/DebugInfo/LogicalView/Readers/LVELFReader.cpp
llvm/test/tools/llvm-debuginfo-analyzer/DWARF/pr-incorrect-logical-instructions.test
llvm/unittests/DebugInfo/LogicalView/ELFReaderTest.cpp
Index: llvm/unittests/DebugInfo/LogicalView/ELFReaderTest.cpp
===================================================================
--- llvm/unittests/DebugInfo/LogicalView/ELFReaderTest.cpp
+++ llvm/unittests/DebugInfo/LogicalView/ELFReaderTest.cpp
@@ -330,9 +330,7 @@
llvm::sys::InitializeCOMRAII COM(llvm::sys::COMThreadingMode::MultiThreaded);
- SmallString<128> InputsDir = unittest::getInputFileDirectory(TestMainArgv0);
-
- // This test requires a x86-registered-target
+ // This test requires a x86-registered-target.
Triple TT;
TT.setArch(Triple::x86_64);
TT.setVendor(Triple::UnknownVendor);
@@ -342,6 +340,8 @@
if (!TargetRegistry::lookupTarget(std::string(TT.str()), TargetLookupError))
return;
+ SmallString<128> InputsDir = unittest::getInputFileDirectory(TestMainArgv0);
+
// Logical elements general properties and selection.
elementProperties(InputsDir);
elementSelection(InputsDir);
Index: llvm/test/tools/llvm-debuginfo-analyzer/DWARF/pr-incorrect-logical-instructions.test
===================================================================
--- llvm/test/tools/llvm-debuginfo-analyzer/DWARF/pr-incorrect-logical-instructions.test
+++ llvm/test/tools/llvm-debuginfo-analyzer/DWARF/pr-incorrect-logical-instructions.test
@@ -1,8 +1,5 @@
; REQUIRES: x86-registered-target
-; FIXME: Memory leak https://reviews.llvm.org/D125783
-; UNSUPPORTED: asan
-
; * Added incorrect logical instructions for: --print=lines,instructions
; 'bar' and 'foo' showing extra instruction from compiler generated functions:
; '_cxx_global_var_init' and '_GLOBAL_sub_l_suite_lexical_01.cpp'
Index: llvm/lib/DebugInfo/LogicalView/Readers/LVELFReader.cpp
===================================================================
--- llvm/lib/DebugInfo/LogicalView/Readers/LVELFReader.cpp
+++ llvm/lib/DebugInfo/LogicalView/Readers/LVELFReader.cpp
@@ -726,9 +726,8 @@
// In DWARF5 the file indexes start at 0;
bool IncrementIndex = Lines->Prologue.getVersion() >= 5;
- // Get the source lines.
- if ((options().getAttributeRange() || options().getPrintLines()) &&
- Lines->Rows.size())
+ // Get the source lines if requested by command line option.
+ if (options().getPrintLines() && Lines->Rows.size())
for (const DWARFDebugLine::Row &Row : Lines->Rows) {
// Here we collect logical debug lines in CULines. Later on,
// the 'processLines()' function will move each created logical line
Index: llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp
===================================================================
--- llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp
+++ llvm/lib/DebugInfo/LogicalView/Readers/LVBinaryReader.cpp
@@ -562,7 +562,7 @@
size_t Index = 0;
dbgs() << "\nSectionIndex: " << format_decimal(SectionIndex, 3)
<< " Scope DIE: " << hexValue(Scope->getOffset()) << "\n"
- << format("Process instructions lines: %d\n",
+ << format("Process instruction lines: %d\n",
InstructionLines.size());
for (const LVLine *Line : InstructionLines)
dbgs() << format_decimal(++Index, 5) << ": "
@@ -640,8 +640,6 @@
if (DebugLines->empty()) {
if (const LVScopes *Scopes = CompileUnit->getScopes())
for (LVScope *Scope : *Scopes) {
- if (Scope->getIsArtificial())
- continue;
LVLines *Lines = ScopeInstructions.find(Scope);
if (Lines) {
@@ -649,14 +647,20 @@
size_t Index = 0;
dbgs() << "\nSectionIndex: " << format_decimal(SectionIndex, 3)
<< " Scope DIE: " << hexValue(Scope->getOffset()) << "\n"
- << format("Instructions lines: %d\n", Lines->size());
+ << format("Instruction lines: %d\n", Lines->size());
for (const LVLine *Line : *Lines)
dbgs() << format_decimal(++Index, 5) << ": "
<< hexValue(Line->getOffset()) << ", (" << Line->getName()
<< ")\n";
});
- DebugLines->append(*Lines);
+ if (Scope->getIsArtificial()) {
+ // Add the instruction lines to their artificial scope.
+ for (LVLine *Line : *Lines)
+ Scope->addElement(Line);
+ } else {
+ DebugLines->append(*Lines);
+ }
Lines->clear();
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D137156.472511.patch
Type: text/x-patch
Size: 4410 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221102/991d0f80/attachment.bin>
More information about the llvm-commits
mailing list