[PATCH] D125781: [llvm-debuginfo-analyzer] 06 - Warning and internal options
Carlos Alberto Enciso via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 4 06:40:32 PDT 2022
CarlosAlbertoEnciso added inline comments.
================
Comment at: llvm/lib/DebugInfo/LogicalView/Core/LVReader.cpp:43
+ else
+ // We found a duplicated.
+ Duplicate.emplace_back(Element, Scope, Iter->second);
----------------
probinson wrote:
> probinson wrote:
> >
> ping.
Changed to `// We found a duplicate.`.
================
Comment at: llvm/lib/DebugInfo/LogicalView/Core/LVReader.cpp:103
+ }
+ exit(0);
+ }
----------------
probinson wrote:
> CarlosAlbertoEnciso wrote:
> > probinson wrote:
> > > `exit` in a library function?
> > This is a good point.
> >
> > During the development of the CodeView Reader, due to incorrect parsing of the debug information, in some cases the same logical element was added to more than one logical scope.
> >
> > If this method detects an error, it means the tool will crash as the memory is corrupted: the same logical element being destroyed more than once. That is the reason to force the `exit`.
> Better to have this function return a bool status, and the caller can do the exit or whatever else is appropriate to its context.
```
bool checkIntegrityScopesTree(LVScope *Root) {
...
// Start traversing the scopes root and print any duplicates.
TraverseScope(Root);
bool PassIntegrity = true;
if (Duplicate.size()) {
...
PassIntegrity = false;
}
return PassIntegrity;
}
```
If the scopes tree integrity fails, propagate an `Error` condition to the caller `LVReader::doLoad()`.
```
Error LVReader::doLoad() {
...
if (options().getInternalIntegrity() && !checkIntegrityScopesTree(Root))
return make_error<StringError>("Duplicated elements in Scopes Tree");
...
return Error::success();
}
```
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D125781/new/
https://reviews.llvm.org/D125781
More information about the llvm-commits
mailing list