813d6826e8
Signed-off-by: Florian Fainelli <florian@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/packages@34257 3c298f89-4303-0410-b956-a3cf2f4a3e73
51 lines
1.9 KiB
Diff
51 lines
1.9 KiB
Diff
Upstream-Status: Backport
|
|
|
|
https://bugs.gentoo.org/414637
|
|
|
|
From 302e8ec6cd62912a3cd6494ce6702f4ad8dae0e2 Mon Sep 17 00:00:00 2001
|
|
From: Mike Frysinger <vapier@gentoo.org>
|
|
Date: Fri, 4 May 2012 19:30:59 -0400
|
|
Subject: [PATCH] util: fix building when glibc has a stub process_vm_readv
|
|
|
|
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 <vapier@gentoo.org>
|
|
---
|
|
util.c | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
--- a/util.c
|
|
+++ b/util.c
|
|
@@ -735,7 +735,8 @@ static bool process_vm_readv_not_support
|
|
|
|
#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 pi
|
|
{
|
|
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)
|