diff options
author | Chris Lattner <sabre@nondot.org> | 2001-12-08 20:31:32 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2001-12-08 20:31:32 +0000 |
commit | 952d365a3a446ebfbf14a8db27e26c5c2abec651 (patch) | |
tree | e5723e821c27b394a235ab8619e333d3d718e6bf /tools/link/link.cpp | |
parent | 036efec1ec1cd91a3fd1738c0dd177887a574954 (diff) | |
download | external_llvm-952d365a3a446ebfbf14a8db27e26c5c2abec651.zip external_llvm-952d365a3a446ebfbf14a8db27e26c5c2abec651.tar.gz external_llvm-952d365a3a446ebfbf14a8db27e26c5c2abec651.tar.bz2 |
Tell the user if a file is corrupt or not... not that the file cannot be
found.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1433 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/link/link.cpp')
-rw-r--r-- | tools/link/link.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/tools/link/link.cpp b/tools/link/link.cpp index 9bf766f..83141c8 100644 --- a/tools/link/link.cpp +++ b/tools/link/link.cpp @@ -18,6 +18,8 @@ #include "Support/CommandLine.h" #include <fstream> #include <memory> +#include <sys/types.h> // For FileExists +#include <sys/stat.h> cl::StringList InputFilenames("", "Load <arg> files, linking them together", @@ -28,14 +30,26 @@ cl::Flag Verbose ("v", "Print information about actions taken"); cl::Flag DumpAsm ("d", "Print assembly as linked", cl::Hidden, false); cl::StringList LibPaths ("L", "Specify a library search path", cl::ZeroOrMore); + +// FileExists - Return true if the specified string is an openable file... +static inline bool FileExists(const string &FN) { + struct stat StatBuf; + return stat(FN.c_str(), &StatBuf) != -1; +} + +// LoadFile - Read the specified bytecode file in and return it. This routine +// searches the link path for the specified file to try to find it... +// static inline std::auto_ptr<Module> LoadFile(const string &FN) { string Filename = FN; string ErrorMessage; unsigned NextLibPathIdx = 0; + bool FoundAFile = false; while (1) { if (Verbose) cerr << "Loading '" << Filename << "'\n"; + if (FileExists(Filename)) FoundAFile = true; Module *Result = ParseBytecodeFile(Filename, &ErrorMessage); if (Result) return std::auto_ptr<Module>(Result); // Load successful! @@ -49,10 +63,17 @@ static inline std::auto_ptr<Module> LoadFile(const string &FN) { Filename = LibPaths[NextLibPathIdx++] + "/" + FN; } - cerr << "Could not locate bytecode file: '" << FN << "'\n"; + if (FoundAFile) + cerr << "Bytecode file '" << FN << "' corrupt! " + << "Use 'link -v ...' for more info.\n"; + else + cerr << "Could not locate bytecode file: '" << FN << "'\n"; return std::auto_ptr<Module>(); } + + + int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv, " llvm linker\n", cl::EnableSingleLetterArgValue | |