diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2007-04-11 00:49:39 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2007-04-11 00:49:39 +0000 |
commit | 410aa020a2c834a5029bb98ee44691c0ec6f2c53 (patch) | |
tree | 0fe242b36a09b097d2f5559e5542914a4dedf09c /lib/System | |
parent | c9f1b2d4c67b0e8337d694b362aa36c6db9a519c (diff) | |
download | external_llvm-410aa020a2c834a5029bb98ee44691c0ec6f2c53.zip external_llvm-410aa020a2c834a5029bb98ee44691c0ec6f2c53.tar.gz external_llvm-410aa020a2c834a5029bb98ee44691c0ec6f2c53.tar.bz2 |
Make isDynamicLibrary detect more than just an ELF file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35874 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/System')
-rw-r--r-- | lib/System/Path.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/System/Path.cpp b/lib/System/Path.cpp index b599c9c..0bd4849 100644 --- a/lib/System/Path.cpp +++ b/lib/System/Path.cpp @@ -103,8 +103,16 @@ Path::isArchive() const { bool Path::isDynamicLibrary() const { - if (canRead()) - return hasMagicNumber("\177ELF"); + if (canRead()) { + std::string Magic; + if (getMagicNumber(Magic, 64)) + switch (IdentifyFileType(Magic.c_str(), Magic.length())) { + default: return false; + case ELF_FileType: + case Mach_O_FileType: + case COFF_FileType: return true; + } + } return false; } |