From 08d03c79a238dba0ea7b59b38304c431bd392432 Mon Sep 17 00:00:00 2001 From: Brian Gaeke Date: Wed, 19 Nov 2003 21:52:09 +0000 Subject: [PATCH] Fix PR134, by checking FileOpenable() on each input file before analyzing its type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10096 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-nm/llvm-nm.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index ec024f9b02b..49148a9e830 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -21,6 +21,7 @@ #include "Support/CommandLine.h" #include "Support/FileUtilities.h" #include +#include using namespace llvm; @@ -113,18 +114,26 @@ void DumpSymbolNamesFromModule (Module *M) { void DumpSymbolNamesFromFile (std::string &Filename) { std::string ErrorMessage; + if (!FileOpenable (Filename)) { + std::cerr << ToolName << ": " << Filename << ": " << strerror (errno) + << "\n"; + return; + } if (IsBytecode (Filename)) { Module *Result = ParseBytecodeFile(Filename, &ErrorMessage); if (Result) { DumpSymbolNamesFromModule (Result); } else { std::cerr << ToolName << ": " << Filename << ": " << ErrorMessage << "\n"; + return; } } else if (IsArchive (Filename)) { std::vector Modules; - if (ReadArchiveFile (Filename, Modules, &ErrorMessage)) + if (ReadArchiveFile (Filename, Modules, &ErrorMessage)) { std::cerr << ToolName << ": " << Filename << ": " << ErrorMessage << "\n"; + return; + } MultipleFiles = true; std::for_each (Modules.begin (), Modules.end (), DumpSymbolNamesFromModule); }