diff options
Diffstat (limited to 'lib/Support/Path.cpp')
| -rw-r--r-- | lib/Support/Path.cpp | 18 | 
1 files changed, 5 insertions, 13 deletions
diff --git a/lib/Support/Path.cpp b/lib/Support/Path.cpp index fdb27e6aa6645..cf467381db8c4 100644 --- a/lib/Support/Path.cpp +++ b/lib/Support/Path.cpp @@ -19,9 +19,7 @@  #include "llvm/Support/Path.h"  #include "llvm/Support/Process.h"  #include <cctype> -#include <cstdio>  #include <cstring> -#include <fcntl.h>  #if !defined(_MSC_VER) && !defined(__MINGW32__)  #include <unistd.h> @@ -30,6 +28,7 @@  #endif  using namespace llvm; +using namespace llvm::support::endian;  namespace {    using llvm::StringRef; @@ -48,7 +47,6 @@ namespace {      // * empty (in this case we return an empty string)      // * either C: or {//,\\}net.      // * {/,\} -    // * {.,..}      // * {file,directory}name      if (path.empty()) @@ -75,12 +73,6 @@ namespace {      if (is_separator(path[0]))        return path.substr(0, 1); -    if (path.startswith("..")) -      return path.substr(0, 2); - -    if (path[0] == '.') -      return path.substr(0, 1); -      // * {file,directory}name      size_t end = path.find_first_of(separators);      return path.substr(0, end); @@ -917,7 +909,7 @@ file_magic identify_magic(StringRef Magic) {          if (Magic.size() < MinSize)            return file_magic::coff_import_library; -        int BigObjVersion = *reinterpret_cast<const support::ulittle16_t*>( +        int BigObjVersion = read16le(              Magic.data() + offsetof(COFF::BigObjHeader, Version));          if (BigObjVersion < COFF::BigObjHeader::MinBigObjectVersion)            return file_magic::coff_import_library; @@ -960,7 +952,7 @@ file_magic identify_magic(StringRef Magic) {          unsigned low  = Data2MSB ? 17 : 16;          if (Magic[high] == 0)            switch (Magic[low]) { -            default: break; +            default: return file_magic::elf;              case 1: return file_magic::elf_relocatable;              case 2: return file_magic::elf_executable;              case 3: return file_magic::elf_shared_object; @@ -1012,6 +1004,7 @@ file_magic identify_magic(StringRef Magic) {          case 8: return file_magic::macho_bundle;          case 9: return file_magic::macho_dynamically_linked_shared_lib_stub;          case 10: return file_magic::macho_dsym_companion; +        case 11: return file_magic::macho_kext_bundle;        }        break;      } @@ -1033,8 +1026,7 @@ file_magic identify_magic(StringRef Magic) {      case 'M': // Possible MS-DOS stub on Windows PE file        if (Magic[1] == 'Z') { -        uint32_t off = -          *reinterpret_cast<const support::ulittle32_t*>(Magic.data() + 0x3c); +        uint32_t off = read32le(Magic.data() + 0x3c);          // PE/COFF file, either EXE or DLL.          if (off < Magic.size() &&              memcmp(Magic.data()+off, COFF::PEMagic, sizeof(COFF::PEMagic)) == 0)  | 
