summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/MemoryBuffer.cpp
Commit message (Collapse)AuthorAgeFilesLines
* In MemoryBuffer::getOpenFile() don't verify that the mmap'edArgyrios Kyrtzidis2012-07-111-10/+0
| | | | | | | | | | | | file buffer is null-terminated. If the file is smaller than we thought, mmap will not allow dereferencing past the pages that are enough to cover the actual file size, even though we asked for a larger address range. rdar://11612916 llvm-svn: 160075
* Remove an "else" that snuck in after a "return" ;)Kaelyn Uhrain2012-06-201-1/+1
| | | | llvm-svn: 158844
* Check that a file is not a directory before reading it into a MemoryBuffer.Kaelyn Uhrain2012-06-201-0/+9
| | | | llvm-svn: 158841
* In MemoryBuffer::getOpenFile() make sure that the buffer is null-terminated ifArgyrios Kyrtzidis2012-04-051-0/+11
| | | | | | | | | | | | | the caller requested a null-terminated one. When mapping the file there could be a racing issue that resulted in the file being larger than the FileSize passed by the caller. We already have an assertion for this in MemoryBuffer::init() but have a runtime guarantee that the buffer will be null-terminated, so do a copy that adds a null-terminator. Protects against crash of rdar://11161822. llvm-svn: 154082
* Add a sanity check in MemoryBuffer::getOpenFile() to make sure we don't hangArgyrios Kyrtzidis2012-03-131-1/+5
| | | | | | | | if the passed in FileSize is inaccurate. rdar://11034179 llvm-svn: 152662
* Change default error_code ctor to a 'named ctor' so it's more self-documenting.David Blaikie2012-02-091-5/+3
| | | | | | | | | | | Unify default construction of error_code uses on this idiom so that users don't feel compelled to make static globals for naming convenience. (unfortunately I couldn't make the original ctor private as some APIs don't return their result, instead using an out parameter (that makes sense to default construct) - which is a bit of a pity. I did, however, find/fix some cases of unnecessary default construction of error_code before I hit the unfixable cases) llvm-svn: 150197
* Add configure checking for pread(2) and use it to save a syscall when ↵Benjamin Kramer2011-11-221-0/+7
| | | | | | reading files. llvm-svn: 145061
* Turn error recovery into an assert.Benjamin Kramer2011-11-221-6/+1
| | | | | | | This was put in because in a certain version of DragonFlyBSD stat(2) lied about the size of some files. This was fixed a long time ago so we can remove the workaround. llvm-svn: 145059
* Remove unused include of sys/uio.h in MemoryBuffer.cpp. It was not correctly ↵David Meyer2011-10-201-1/+0
| | | | | | protected by ifdef either. llvm-svn: 142623
* use 64-bit types instead of off_t/size_t to avoid the issue whenIvan Krasin2011-09-151-4/+4
| | | | | | | | gold plugin is built with Large File Support (sizeof(off_t) == 64 on i686) and the rest of LLVM is built w/o Large File Support (sizeof(off_t) == 32 on i686) which corrupts the stack. llvm-svn: 139873
* random comment cleanups.Chris Lattner2011-05-221-4/+4
| | | | llvm-svn: 131829
* Add MemoryBuffer::getBufferKind() to report whether a memory buffer uses ↵Ted Kremenek2011-04-281-0/+8
| | | | | | malloc'ed or mmap'ed memory. This is for performance analysis. llvm-svn: 130432
* We don't need a null terminator for the output file.Rafael Espindola2011-03-221-4/+8
| | | | llvm-svn: 128098
* Check RequiresNullTerminator first, or we might read from an invalid address.Rafael Espindola2011-03-181-1/+1
| | | | llvm-svn: 127853
* Use RequiresNullTerminator to create buffers without a null terminatorRafael Espindola2011-03-171-2/+4
| | | | | | instead of copying. llvm-svn: 127835
* Don't compute the file size if we don't need to.Rafael Espindola2011-03-101-14/+29
| | | | llvm-svn: 127426
* Add r127409 back now that the windows file was updated.Rafael Espindola2011-03-101-25/+74
| | | | llvm-svn: 127417
* Revert r127409 which broke all the Windows bots.Jakob Stoklund Olesen2011-03-101-74/+25
| | | | llvm-svn: 127413
* Add support for MemoryBuffers that are not null terminated and addRafael Espindola2011-03-101-25/+74
| | | | | | support for creating buffers that cover only a part of a file. llvm-svn: 127409
* Don't open the file again in the gold plugin. To be able to do this, updateRafael Espindola2011-02-081-12/+3
| | | | | | MemoryBuffer::getOpenFile to not close the file descriptor. llvm-svn: 125128
* Add missing standard headers. Patch by Joerg Sonnenberger!Nick Lewycky2010-12-191-0/+1
| | | | llvm-svn: 122193
* MemoryBuffer now return an error_code and returns a OwningPtr<MemoryBuffer> ↵Michael J. Spencer2010-12-161-34/+38
| | | | | | via an out parm. llvm-svn: 121958
* Support/MemoryBuffer: Replace all uses of std::string *ErrMsg with ↵Michael J. Spencer2010-12-091-18/+20
| | | | | | error_code &ec. And fix clients. llvm-svn: 121379
* Merge System into Support.Michael J. Spencer2010-11-291-9/+9
| | | | llvm-svn: 120298
* add a MemoryBuffer::getOpenFile method, which turns an openChris Lattner2010-11-231-0/+7
| | | | | | file descriptor into a MemoryBuffer (and closes the FD). llvm-svn: 120065
* Revert functionality doug added in r98575 that was neverChris Lattner2010-11-231-15/+11
| | | | | | documented and only used by some clang stuff I just removed. llvm-svn: 120002
* Rewrite MemoryBuffer::getSTDIN to use read(2) and a SmallVector buffer.Benjamin Kramer2010-06-251-15/+15
| | | | llvm-svn: 106856
* Bring back the empty vector workaround I removed in r106839. Looks like MSVC ↵Benjamin Kramer2010-06-251-1/+2
| | | | | | needs it. llvm-svn: 106841
* Tweak MemoryBuffer to allocate the class itself, the name and possibly theBenjamin Kramer2010-06-251-70/+60
| | | | | | | | | | buffer in the same chunk of memory. 2 less mallocs for every uninitialized MemoryBuffer and 1 less malloc for every MemoryBuffer pointing to a memory range translate into 20% less mallocs on clang -cc1 -Eonly Cocoa_h.m. llvm-svn: 106839
* Add overloads for getFile and getFileOrSTDIN which take a const char *Dan Gohman2010-06-241-3/+17
| | | | | | | instead of a StringRef, avoiding the need to copy the string in the common case. llvm-svn: 106754
* Add an explicit keyword.Dan Gohman2010-06-221-1/+1
| | | | llvm-svn: 106538
* Add basic error checking to MemoryBuffer::getSTDIN.Dan Gohman2010-05-271-2/+7
| | | | llvm-svn: 104855
* stringref-ize the MemoryBuffer::get apis. This requiresChris Lattner2010-04-051-11/+8
| | | | | | a co-committed clang patch. llvm-svn: 100485
* Remove accidental include and add a comment.Benjamin Kramer2010-04-011-2/+2
| | | | llvm-svn: 100107
* Various improvements to MemoryBuffer::getFile:Benjamin Kramer2010-04-011-17/+26
| | | | | | | | | | - Use a RAII object to close the FD. - Use sys::StrError instead of thread-unsafe strerror calls. - Recover gracefully if read returns zero. This works around an issue on DragonFlyBSD where /dev/null has an st_size of 136 but we can't read 136 bytes from it. llvm-svn: 100106
* Extend MemoryBuffer::getFile() to take an optional "stat" structureDouglas Gregor2010-03-151-7/+10
| | | | | | | pointer. If given, the structure will be set with the stat information from the file actually read. llvm-svn: 98575
* Replace a temporary std::string with SmallString.Benjamin Kramer2010-02-261-1/+2
| | | | llvm-svn: 97259
* sizeof(char) is always 1.Chris Lattner2009-12-231-2/+2
| | | | llvm-svn: 92079
* return more useful error messages by using strerror to format errnoChris Lattner2009-12-011-3/+3
| | | | | | instead of returning an ambiguous reason. llvm-svn: 90275
* Fix MemoryBuffer::getSTDIN to *not* return null if stdin is empty, this is a ↵Daniel Dunbar2009-11-101-16/+14
| | | | | | | | lame API. Also, Stringrefify some more MemoryBuffer functions, and add two performance FIXMEs. llvm-svn: 86630
* A value is only assigned to errno if NumRead equals -1, so doDuncan Sands2009-11-041-1/+1
| | | | | | not reason based on errno if NumRead has a different value. llvm-svn: 86046
* Make this code more robust by not thinking we are making progressDuncan Sands2009-11-031-1/+1
| | | | | | if zero bytes were read. llvm-svn: 85922
* Tweak MemoryBuffer::getSTDIN so that it returns after the first EOF. Eli Friedman2009-05-181-3/+6
| | | | | | | It doesn't matter for piped input, but it's annoying when typing at the console. llvm-svn: 71998
* Switch from new[] + delete[] to malloc + free since llvm does not catch C++ ↵Evan Cheng2009-02-131-3/+3
| | | | | | exceptions. llvm-svn: 64448
* If new[] fails, return 0 rather then trying to dereference a null pointer.Evan Cheng2009-02-131-3/+12
| | | | llvm-svn: 64444
* Fix more -Wshorten-64-to-32 warnings.Evan Cheng2008-05-051-3/+3
| | | | llvm-svn: 50659
* fcntl.h is pretty standard on unix (without the sys/)Gabor Greif2008-04-301-2/+1
| | | | llvm-svn: 50475
* Fix compilation errors on MSVC. Patch by Argiris Kirtzidis!Bill Wendling2008-04-011-1/+2
| | | | llvm-svn: 49055
* Change the MemoryBuffer::getFile* methods to take just a pointer to theChris Lattner2008-04-011-13/+8
| | | | | | | | start of a filename, not a filename+length. All clients can produce a null terminated name, and the system api's require null terminated strings anyway. llvm-svn: 49041
* Reimplement MemoryBuffer::getFile with three enhancements:Chris Lattner2008-04-011-85/+64
| | | | | | | | | | | | | | | | | | | | | 1) stop using MappedFile. 2) if profitable use the sys::path::MapInFilePages api to read the file. 3) otherwise fallback to read. When sys::path::MapInFilePages is implemented, this provides several benefits: #1: this avoids fragmenting memory for small files. #2: this avoids extraneous stat calls when the file size is known. #3: this only keeps the file descriptor open while reading the file, not for the duration of the lifetime of the memory buffer. This fixes a serious clang FD 'leak' problem. I believe that this will work on a win32 machine, but I don't have one to test on. I'd appreciate it if someone could check. llvm-svn: 49031
OpenPOWER on IntegriCloud