<div><br><div class="gmail_quote"><div>On Wed, Feb 15, 2017 at 10:47 AM Reid Kleckner <<a href="mailto:rnk@google.com">rnk@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg">On Wed, Feb 15, 2017 at 10:35 AM, Greg Clayton via lldb-dev <span class="gmail_msg"><<a href="mailto:lldb-dev@lists.llvm.org" class="gmail_msg" target="_blank">lldb-dev@lists.llvm.org</a>></span> wrote:<blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg">I am fine with switching mmap over to llvm if it works. One important thing to LLDB is we have a "mmap if not on remote file system" that must continue to work. If you mmap something from a network drive and then it gets disconnected, you can crash LLDB. So we have a function we used that implements mmap if local, read all contents if remote, that must work to avoid crashes.</div></div></blockquote><div class="gmail_msg"><br class="gmail_msg"></div></div></div></div><div class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">LLVM's MemoryBuffer API already serves too many different use cases. Initially it was designed to be a utility for efficiently reading source file inputs. It has a bunch of functionality around ensuring that the buffer is null terminated, and a boolean to avoid using mmap when the user might modify the file concurrently. It's too complicated. I wouldn't recommend using it without a good reason beyond just reusing a platform abstraction. mmap and MapViewOfFile are not that complicated. LLDB is probably better off doing its own thing unless it needs to pass mapped file contents to other parts of LLVM, like maybe clang's VFS.</div></div></div></div></blockquote><div><br></div><div>I just took a look and it seems like almost a drop in replacement.  Only thing that would need changing is updating shouldUseMmap() to return false if a file is on a network share.  But this seems like a good change independently of lldb.</div><div><br></div><div>After that all lldb has to do is say MemoryBuffer::getOpenFile() and everything works.</div><div><br></div><div>Is there a good reason *not* to use it?  Evenif internally the implementation is complex, the external interface is not</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"></div></div></div></div>
</blockquote></div></div>