If you have a newer glibc which provides process_vm_readv, but it is built against older kernel headers which lack __NR_process_vm_readv, the library will contain a stub implementation that just returns ENOSYS. Autoconf checks for this case explicitly and will declare it as unavailable. So we end up in a case where the headers provide the prototype, but autoconf has not defined HAVE_PROCESS_VM_READV, so we hit the same build failure again:
util.c:738:16: error: static declaration of 'process_vm_readv' follows non-static declaration /usr/include/bits/uio.h:58:16: note: previous declaration of 'process_vm_readv' was here So rename our local function to something unique, and add a define so the callers all hit the right place. * util.c (strace_process_vm_readv): Rename from process_vm_readv. (process_vm_readv): Define to strace_process_vm_readv. Signed-off-by: Mike Frysinger <vap...@gentoo.org> --- util.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/util.c b/util.c index d347bd8..f27acdf 100644 --- a/util.c +++ b/util.c @@ -735,7 +735,8 @@ static bool process_vm_readv_not_supported = 0; #if defined(__NR_process_vm_readv) static bool process_vm_readv_not_supported = 0; -static ssize_t process_vm_readv(pid_t pid, +/* Have to avoid duplicating with the C library headers. */ +static ssize_t strace_process_vm_readv(pid_t pid, const struct iovec *lvec, unsigned long liovcnt, const struct iovec *rvec, @@ -744,6 +745,7 @@ static ssize_t process_vm_readv(pid_t pid, { return syscall(__NR_process_vm_readv, (long)pid, lvec, liovcnt, rvec, riovcnt, flags); } +#define process_vm_readv strace_process_vm_readv #else static bool process_vm_readv_not_supported = 1; # define process_vm_readv(...) (errno = ENOSYS, -1) -- 1.7.9.7 ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel