]> code.ossystems Code Review - openembedded-core.git/commitdiff
strace: Fix build on eglibc 2.16
authorKhem Raj <raj.khem@gmail.com>
Wed, 11 Jul 2012 18:13:37 +0000 (11:13 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 17 Jul 2012 09:42:49 +0000 (10:42 +0100)
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@gmail.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/strace/strace-4.7/strace-eglibc-2.16.patch [new file with mode: 0644]
meta/recipes-devtools/strace/strace-4.7/strace-x32.patch [new file with mode: 0644]
meta/recipes-devtools/strace/strace_4.7.bb

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 (file)
index 0000000..67cf4e8
--- /dev/null
@@ -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@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(-)
+
+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 (file)
index 0000000..3dc69b2
--- /dev/null
@@ -0,0 +1,88 @@
+Upstream-Status: Pending
+
+m 364ed4f14c5edb5ddbc79c72d22498219033b29d Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@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@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 */
index e7ab0cb0bdff1a2ff1d2020b1eb8c8cff856b2d6..21dd47a811b87cd7c4e0b3191cf3b6c6e23ff9d2 100644 (file)
@@ -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"