[oe-commits] Khem Raj : strace: Fix build on eglibc 2.16

git at git.openembedded.org git at git.openembedded.org
Tue Jul 17 09:51:42 UTC 2012


Module: openembedded-core.git
Branch: master
Commit: 2ed0011adc1642e0fbb6bfe1d7ae6b70ce7dfedb
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=2ed0011adc1642e0fbb6bfe1d7ae6b70ce7dfedb

Author: Khem Raj <raj.khem at gmail.com>
Date:   Wed Jul 11 11:13:37 2012 -0700

strace: Fix build on eglibc 2.16

This patch fixes two build issues seen with strace
one in general with eglibc 2.16 and another with x32 abi

Signed-off-by: Khem Raj <raj.khem at gmail.com>
Signed-off-by: Saul Wold <sgw at linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 .../strace/strace-4.7/strace-eglibc-2.16.patch     |   52 ++++++++++++
 .../strace/strace-4.7/strace-x32.patch             |   88 ++++++++++++++++++++
 meta/recipes-devtools/strace/strace_4.7.bb         |    7 +-
 3 files changed, 145 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-devtools/strace/strace-4.7/strace-eglibc-2.16.patch b/meta/recipes-devtools/strace/strace-4.7/strace-eglibc-2.16.patch
new file mode 100644
index 0000000..67cf4e8
--- /dev/null
+++ b/meta/recipes-devtools/strace/strace-4.7/strace-eglibc-2.16.patch
@@ -0,0 +1,52 @@
+Upstream-Status: Backport
+
+https://bugs.gentoo.org/414637
+
+From 302e8ec6cd62912a3cd6494ce6702f4ad8dae0e2 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier at 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 at gentoo.org>
+---
+ util.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+Index: strace-4.7/util.c
+===================================================================
+--- strace-4.7.orig/util.c	2012-04-28 05:58:35.000000000 -0700
++++ strace-4.7/util.c	2012-07-11 11:07:47.869825001 -0700
+@@ -735,7 +735,8 @@
+ 
+ #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 @@
+ {
+ 	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)
diff --git a/meta/recipes-devtools/strace/strace-4.7/strace-x32.patch b/meta/recipes-devtools/strace/strace-4.7/strace-x32.patch
new file mode 100644
index 0000000..3dc69b2
--- /dev/null
+++ b/meta/recipes-devtools/strace/strace-4.7/strace-x32.patch
@@ -0,0 +1,88 @@
+Upstream-Status: Pending
+
+m 364ed4f14c5edb5ddbc79c72d22498219033b29d Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier at gentoo.org>
+Date: Mon, 4 Jun 2012 13:19:42 -0400
+Subject: [PATCH] x32: update syscall table
+
+This syncs with the syscall table as it is in linux 3.4.
+
+* linux/x32/syscallent.h (59): Fix comment typo.
+(78): Add missing getdents entry.
+(174): Delete create_module entry (not in the kernel).
+(181, 182, 183, 184, 185): Add missing entries.
+(524, 536, 539, 540): Fix spacing.
+
+Signed-off-by: Mike Frysinger <vapier at gentoo.org>
+---
+ linux/x32/syscallent.h |   24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+Index: strace-4.7/linux/x32/syscallent.h
+===================================================================
+--- strace-4.7.orig/linux/x32/syscallent.h	2012-04-16 04:00:01.000000000 -0700
++++ strace-4.7/linux/x32/syscallent.h	2012-07-11 11:08:00.285824906 -0700
+@@ -57,7 +57,7 @@
+ 	{ 5,	TP,	sys_clone,		"clone"		},  /* 56 */
+ 	{ 0,	TP,	sys_fork,		"fork"		},  /* 57 */
+ 	{ 0,	TP,	sys_vfork,		"vfork"		},  /* 58 */
+-	{ },							    /* 47 */
++	{ },							    /* 59 */
+ 	{ 1,	TP,	sys_exit,		"_exit"		},  /* 60 */
+ 	{ 4,	TP,	sys_wait4,		"wait4"		},  /* 61 */
+ 	{ 2,	TS,	sys_kill,		"kill"		},  /* 62 */
+@@ -76,7 +76,7 @@
+ 	{ 1,	TD,	sys_fdatasync,		"fdatasync"	},  /* 75 */
+ 	{ 2,	TF,	sys_truncate,		"truncate"	},  /* 76 */
+ 	{ 2,	TD,	sys_ftruncate,		"ftruncate"	},  /* 77 */
+-	{ },							    /* 78 */
++	{ 3,	TD,	sys_getdents,		"getdents"	}, /* 78 */
+ 	{ 2,	TF,	sys_getcwd,		"getcwd"	},  /* 79 */
+ 	{ 1,	TF,	sys_chdir,		"chdir"		},  /* 80 */
+ 	{ 1,	TD,	sys_fchdir,		"fchdir"	},  /* 81 */
+@@ -172,18 +172,18 @@
+ 	{ 2,	0,	sys_setdomainname,	"setdomainname"	},  /* 171 */
+ 	{ 1,	0,	sys_iopl,		"iopl"		},  /* 172 */
+ 	{ 3,	0,	sys_ioperm,		"ioperm"	},  /* 173 */
+-	{ 2,	0,	sys_create_module,	"create_module"	},  /* 174 */
++	{ },  /* 174 */
+ 	{ 3,	0,	sys_init_module,	"init_module"	},  /* 175 */
+ 	{ 2,	0,	sys_delete_module,	"delete_module"	},  /* 176 */
+ 	{ },							    /* 177 */
+ 	{ },							    /* 178 */
+ 	{ 4,	0,	sys_quotactl,		"quotactl"	},  /* 179 */
+ 	{ },							    /* 180 */
+-	{ },							    /* 181 */
+-	{ },							    /* 182 */
+-	{ },							    /* 183 */
+-	{ },							    /* 184 */
+-	{ },							    /* 185 */
++	{ 5,	0,	sys_getpmsg,		"getpmsg"	}, /* 181 */
++	{ 5,	0,	sys_putpmsg,		"putpmsg"	}, /* 182 */
++	{ 5,	0,	sys_afs_syscall,	"afs_syscall"	},  /* 183 */
++	{ 3,	0,	sys_tuxcall,		"tuxcall"	}, /* 184 */
++	{ 3,	0,	sys_security,		"security"	}, /* 185 */
+ 	{ 0,	0,	sys_gettid,		"gettid"	}, /* 186 */
+ 	{ 4,	TD,	sys_readahead,		"readahead"	}, /* 187 */
+ 	{ 5,	TF,	sys_setxattr,		"setxattr"	}, /* 188 */
+@@ -325,7 +325,7 @@
+ 	{ 4,	0,	sys_ptrace,		"ptrace"	},  /* 521 */
+ 	{ 2,	TS,	sys_rt_sigpending,	"rt_sigpending"	},  /* 522 */
+ 	{ 4,	TS,	sys_rt_sigtimedwait,	"rt_sigtimedwait" },  /* 523 */
+-	{ 3,	TS,	sys_rt_sigqueueinfo,    "rt_sigqueueinfo" },  /* 524 */
++	{ 3,	TS,	sys_rt_sigqueueinfo,	"rt_sigqueueinfo" },  /* 524 */
+ 	{ 2,	TS,	sys_sigaltstack,	"sigaltstack"	},  /* 525 */
+ 	{ 3,	0,	sys_timer_create,	"timer_create"	}, /* 526 */
+ 	{ 2,	0,	sys_mq_notify,		"mq_notify"	}, /* 527 */
+@@ -337,8 +337,8 @@
+ 	{ 6,	0,	sys_move_pages,		"move_pages"	}, /* 533 */
+ 	{ 5,	TD,	sys_preadv,		"preadv"	}, /* 534 */
+ 	{ 5,	TD,	sys_pwritev,		"pwritev"	}, /* 535 */
+-	{ 4,	TP|TS,	sys_rt_tgsigqueueinfo,	"rt_tgsigqueueinfo"}, /* 536 */
++	{ 4,	TP|TS,	sys_rt_tgsigqueueinfo,	"rt_tgsigqueueinfo" }, /* 536 */
+ 	{ 5,	TN,	sys_recvmmsg,		"recvmmsg"	}, /* 537 */
+ 	{ 4,	TN,	sys_sendmmsg,		"sendmmsg"	}, /* 538 */
+-	{ 6,	0,	sys_process_vm_readv,	"process_vm_readv"}, /* 539 */
+-	{ 6,	0,	sys_process_vm_writev,	"process_vm_writev"}, /* 540 */
++	{ 6,	0,	sys_process_vm_readv,	"process_vm_readv" }, /* 539 */
++	{ 6,	0,	sys_process_vm_writev,	"process_vm_writev" }, /* 540 */
diff --git a/meta/recipes-devtools/strace/strace_4.7.bb b/meta/recipes-devtools/strace/strace_4.7.bb
index e7ab0cb..21dd47a 100644
--- a/meta/recipes-devtools/strace/strace_4.7.bb
+++ b/meta/recipes-devtools/strace/strace_4.7.bb
@@ -3,13 +3,16 @@ HOMEPAGE = "http://strace.sourceforge.net"
 SECTION = "console/utils"
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=124500c21e856f0912df29295ba104c7"
-PR = "r0"
+PR = "r1"
 
 PACKAGES =+ "${PN}-graph "
 FILES_${PN}-graph = "${bindir}/strace-graph"
 RDEPENDS_${PN}-graph = "perl"
 
-SRC_URI = "${SOURCEFORGE_MIRROR}/strace/strace-${PV}.tar.xz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/strace/strace-${PV}.tar.xz \
+           file://strace-eglibc-2.16.patch \
+           file://strace-x32.patch \
+          "
 
 SRC_URI[md5sum] = "6054c3880a00c6703f83b57f15e04642"
 SRC_URI[sha256sum] = "c49cd98873c119c5f201356200a9b9687da1ceea83a05047e2ae0a7ac1e41195"





More information about the Openembedded-commits mailing list