System/Path: Add isObjectFile().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114032 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Michael J. Spencer 2010-09-15 22:45:45 +00:00
parent 765c4d9477
commit 8a26f81889
2 changed files with 25 additions and 0 deletions

View File

@ -342,6 +342,17 @@ namespace sys {
/// @brief Determine if the path references a dynamic library.
bool isDynamicLibrary() const;
/// This function determines if the path name in the object references a
/// native object file by looking at it's magic number. The term object
/// file is defined as "an organized collection of separate, named
/// sequences of binary data." This covers the obvious file formats such as
/// COFF and ELF, but it also includes llvm ir bitcode, archives,
/// libraries, etc...
/// @returns true if the file starts with the magic number for an object
/// file.
/// @brief Determine if the path references an object file.
bool isObjectFile() const;
/// This function determines if the path name references an existing file
/// or directory in the file system.
/// @returns true if the pathname references an existing file or

View File

@ -156,6 +156,20 @@ Path::isDynamicLibrary() const {
return false;
}
bool
Path::isObjectFile() const {
std::string Magic;
if (getMagicNumber(Magic, 64))
if (IdentifyFileType(Magic.c_str(),
static_cast<unsigned>(Magic.length()))
!= Unknown_FileType) {
// Everything in LLVMFileType is currently an object file.
return true;
}
return false;
}
Path
Path::FindLibrary(std::string& name) {
std::vector<sys::Path> LibPaths;