You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //===-- LibcGlue.cpp --------------------------------------------*- C++ -*-===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| // This file adds functions missing from libc on older versions of linux
 | |
| 
 | |
| #include <cerrno>
 | |
| #include <lldb/Host/linux/Uio.h>
 | |
| #include <sys/syscall.h>
 | |
| #include <unistd.h>
 | |
| 
 | |
| #if !HAVE_PROCESS_VM_READV
 | |
| // If the syscall wrapper is not available, provide one.
 | |
| ssize_t process_vm_readv(::pid_t pid, const struct iovec *local_iov,
 | |
|                          unsigned long liovcnt, const struct iovec *remote_iov,
 | |
|                          unsigned long riovcnt, unsigned long flags) {
 | |
| #if HAVE_NR_PROCESS_VM_READV
 | |
|   // If we have the syscall number, we can issue the syscall ourselves.
 | |
|   return syscall(__NR_process_vm_readv, pid, local_iov, liovcnt, remote_iov,
 | |
|                  riovcnt, flags);
 | |
| #else // If not, let's pretend the syscall is not present.
 | |
|   errno = ENOSYS;
 | |
|   return -1;
 | |
| #endif
 | |
| }
 | |
| #endif
 |