diff options
author | Chris Lattner <sabre@nondot.org> | 2004-05-28 00:24:41 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-05-28 00:24:41 +0000 |
commit | fb777c270bac4b95b739dad552c5ab8f5aa2aef4 (patch) | |
tree | 21f1db5e63b51de008c362a2023b1f38ddd1d0b8 /lib/Archive | |
parent | eb082995180756068af35bb826a9017975d87a51 (diff) | |
download | external_llvm-fb777c270bac4b95b739dad552c5ab8f5aa2aef4.zip external_llvm-fb777c270bac4b95b739dad552c5ab8f5aa2aef4.tar.gz external_llvm-fb777c270bac4b95b739dad552c5ab8f5aa2aef4.tar.bz2 |
Use the new FileUtilities.h API for mapping a file into an address
space
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13864 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Archive')
-rw-r--r-- | lib/Archive/ArchiveReader.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/lib/Archive/ArchiveReader.cpp b/lib/Archive/ArchiveReader.cpp index 8671c42..1e2d2b4 100644 --- a/lib/Archive/ArchiveReader.cpp +++ b/lib/Archive/ArchiveReader.cpp @@ -19,8 +19,6 @@ #include "llvm/Bytecode/Reader.h" #include "llvm/Module.h" #include "Support/FileUtilities.h" -#include "Config/sys/mman.h" -#include "Config/fcntl.h" #include <cstdlib> using namespace llvm; @@ -166,25 +164,21 @@ static bool ReadArchiveBuffer(const std::string &ArchiveName, // bool llvm::ReadArchiveFile(const std::string &Filename, std::vector<Module*> &Objects,std::string *ErrorStr){ - int Length = getFileSize(Filename); - if (Length == -1) - return Error(ErrorStr, "Error getting file length!"); + unsigned Length; - int FD = open(Filename.c_str(), O_RDONLY); - if (FD == -1) - return Error(ErrorStr, "Error opening file!"); - // mmap in the file all at once... - unsigned char *Buffer = (unsigned char*)mmap(0, Length, PROT_READ, - MAP_PRIVATE, FD, 0); - if (Buffer == (unsigned char*)MAP_FAILED) - return Error(ErrorStr, "Error mmapping file!"); + unsigned char *Buffer = + (unsigned char*)ReadFileIntoAddressSpace(Filename, Length); + if (Buffer == 0) { + if (ErrorStr) *ErrorStr = "Error reading file '" + Filename + "'!"; + return true; + } // Parse the archive files we mmap'ped in bool Result = ReadArchiveBuffer(Filename, Buffer, Length, Objects, ErrorStr); // Unmmap the archive... - munmap((char*)Buffer, Length); + UnmapFileFromAddressSpace(Buffer, Length); if (Result) // Free any loaded objects while (!Objects.empty()) { |