forked from OSchip/llvm-project
[llvm-nm] Fix crash when running with --print-armap on corrupt archives.
error() in llvm-nm intentionally does not return so that the callee can move on to future files/slices. When printing the archive map, this is not currently handled (the caller assumes that error() returns), so processing continues despite there being an error. Also, change one return to a break, so that symbols can be printed even if the archive map is corrupt. llvm-svn: 344268
This commit is contained in:
parent
480a5075ad
commit
1845645b0d
|
@ -1755,12 +1755,14 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
|
|||
outs() << "Archive map\n";
|
||||
for (; I != E; ++I) {
|
||||
Expected<Archive::Child> C = I->getMember();
|
||||
if (!C)
|
||||
if (!C) {
|
||||
error(C.takeError(), Filename);
|
||||
break;
|
||||
}
|
||||
Expected<StringRef> FileNameOrErr = C->getName();
|
||||
if (!FileNameOrErr) {
|
||||
error(FileNameOrErr.takeError(), Filename);
|
||||
return;
|
||||
break;
|
||||
}
|
||||
StringRef SymName = I->getName();
|
||||
outs() << SymName << " in " << FileNameOrErr.get() << "\n";
|
||||
|
|
Loading…
Reference in New Issue