config BR2_PACKAGE_LTRACE
bool "ltrace"
- depends on !(BR2_avr32 || BR2_mips || BR2_mipsel || BR2_sh || BR2_sh64)
- depends on !BR2_xtensa
+ depends on !(BR2_avr32 || BR2_mips || BR2_sh || BR2_sh64 || BR2_xtensa)
select BR2_PACKAGE_LIBELF
help
Debugging program which runs a specified command until it exits.
+++ /dev/null
-[PATCH] events.c: add similar system headers workaround as trace.c
-
-Needed for E.G. powerpc on uClibc.
-
-Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
----
- sysdeps/linux-gnu/events.c | 27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
-
-Index: ltrace-0.6.0/sysdeps/linux-gnu/events.c
-===================================================================
---- ltrace-0.6.0.orig/sysdeps/linux-gnu/events.c
-+++ ltrace-0.6.0/sysdeps/linux-gnu/events.c
-@@ -11,6 +11,33 @@
-
- #include "common.h"
-
-+/* If the system headers did not provide the constants, hard-code the normal
-+ values. */
-+#ifndef PTRACE_EVENT_FORK
-+
-+#define PTRACE_OLDSETOPTIONS 21
-+#define PTRACE_SETOPTIONS 0x4200
-+#define PTRACE_GETEVENTMSG 0x4201
-+
-+/* options set using PTRACE_SETOPTIONS */
-+#define PTRACE_O_TRACESYSGOOD 0x00000001
-+#define PTRACE_O_TRACEFORK 0x00000002
-+#define PTRACE_O_TRACEVFORK 0x00000004
-+#define PTRACE_O_TRACECLONE 0x00000008
-+#define PTRACE_O_TRACEEXEC 0x00000010
-+#define PTRACE_O_TRACEVFORKDONE 0x00000020
-+#define PTRACE_O_TRACEEXIT 0x00000040
-+
-+/* Wait extended result codes for the above trace options. */
-+#define PTRACE_EVENT_FORK 1
-+#define PTRACE_EVENT_VFORK 2
-+#define PTRACE_EVENT_CLONE 3
-+#define PTRACE_EVENT_EXEC 4
-+#define PTRACE_EVENT_VFORK_DONE 5
-+#define PTRACE_EVENT_EXIT 6
-+
-+#endif /* PTRACE_EVENT_FORK */
-+
- static Event event;
-
- Event *
+++ /dev/null
-From c46448f4e5a4c124fbc75ca9b14697212e676893 Mon Sep 17 00:00:00 2001
-From: Michael K. Edwards <m.k.edwards@gmail.com>
-Date: Mon, 7 Mar 2011 16:15:48 +0000
-Subject: [PATCH] fix type punning in ARM arch_(dis|en)able_breakpoint
-
----
- sysdeps/linux-gnu/arm/breakpoint.c | 26 ++++++++++++++++++--------
- 1 files changed, 18 insertions(+), 8 deletions(-)
-
-diff --git a/sysdeps/linux-gnu/arm/breakpoint.c b/sysdeps/linux-gnu/arm/breakpoint.c
-index 4a5ab92..4e17940 100644
---- a/sysdeps/linux-gnu/arm/breakpoint.c
-+++ b/sysdeps/linux-gnu/arm/breakpoint.c
-@@ -35,10 +35,15 @@ arch_enable_breakpoint(pid_t pid, Breakpoint *sbp) {
- debug(1, "arch_enable_breakpoint(%d,%p)", pid, sbp->addr);
-
- for (i = 0; i < 1 + ((BREAKPOINT_LENGTH - 1) / sizeof(long)); i++) {
-- long a = ptrace(PTRACE_PEEKTEXT, pid, sbp->addr + i * sizeof(long), 0);
-- unsigned char *bytes = (unsigned char *)&a;
-+ union _ { long l; unsigned char b[SIZEOF_LONG]; };
-+ union _ orig, current;
-+ unsigned char *bytes = current.b;
-+ for (j = 0; j < sizeof(long); j++) {
-+ orig.b[j] = sbp->orig_value[i * sizeof(long) + j];
-+ }
-+ current.l = ptrace(PTRACE_PEEKTEXT, pid, sbp->addr + i * sizeof(long), 0);
-
-- debug(2, "current = 0x%lx, orig_value = 0x%lx, thumb_mode = %d", a, *(long *)&sbp->orig_value, sbp->thumb_mode);
-+ debug(2, "current = 0x%lx, orig_value = 0x%lx, thumb_mode = %d", current.l, orig.l, sbp->thumb_mode);
- for (j = 0; j < sizeof(long) && i * sizeof(long) + j < BREAKPOINT_LENGTH; j++) {
-
- sbp->orig_value[i * sizeof(long) + j] = bytes[j];
-@@ -49,7 +54,7 @@ arch_enable_breakpoint(pid_t pid, Breakpoint *sbp) {
- bytes[j] = thumb_break_insn[i * sizeof(long) + j];
- }
- }
-- ptrace(PTRACE_POKETEXT, pid, sbp->addr + i * sizeof(long), a);
-+ ptrace(PTRACE_POKETEXT, pid, sbp->addr + i * sizeof(long), current.l);
- }
- }
-
-@@ -60,13 +65,18 @@ arch_disable_breakpoint(pid_t pid, const Breakpoint *sbp) {
- debug(1, "arch_disable_breakpoint(%d,%p)", pid, sbp->addr);
-
- for (i = 0; i < 1 + ((BREAKPOINT_LENGTH - 1) / sizeof(long)); i++) {
-- long a = ptrace(PTRACE_PEEKTEXT, pid, sbp->addr + i * sizeof(long), 0);
-- unsigned char *bytes = (unsigned char *)&a;
-+ union _ { long l; unsigned char b[SIZEOF_LONG]; };
-+ union _ orig, current;
-+ unsigned char *bytes = current.b;
-+ for (j = 0; j < sizeof(long); j++) {
-+ orig.b[j] = sbp->orig_value[i * sizeof(long) + j];
-+ }
-+ current.l = ptrace(PTRACE_PEEKTEXT, pid, sbp->addr + i * sizeof(long), 0);
-
-- debug(2, "current = 0x%lx, orig_value = 0x%lx, thumb_mode = %d", a, *(long *)&sbp->orig_value, sbp->thumb_mode);
-+ debug(2, "current = 0x%lx, orig_value = 0x%lx, thumb_mode = %d", current.l, orig.l, sbp->thumb_mode);
- for (j = 0; j < sizeof(long) && i * sizeof(long) + j < BREAKPOINT_LENGTH; j++) {
- bytes[j] = sbp->orig_value[i * sizeof(long) + j];
- }
-- ptrace(PTRACE_POKETEXT, pid, sbp->addr + i * sizeof(long), a);
-+ ptrace(PTRACE_POKETEXT, pid, sbp->addr + i * sizeof(long), current.l);
- }
- }
---
-1.7.4.1
-
+++ /dev/null
-[PATCH] configure.ac: Recognize linux-uclibc as well
-
-Ltrace works on uClibc as well as on glibc, so accept it.
-
-Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: ltrace-0.6.0/configure.ac
-===================================================================
---- ltrace-0.6.0.orig/configure.ac
-+++ ltrace-0.6.0/configure.ac
-@@ -11,7 +11,7 @@
- AC_CANONICAL_HOST
-
- case "${host_os}" in
-- linux-gnu*) HOST_OS="linux-gnu" ;;
-+ linux-gnu* | linux-uclibc*) HOST_OS="linux-gnu" ;;
- *) AC_MSG_ERROR([unkown host-os ${host_osx}]) ;;
- esac
- AC_SUBST(HOST_OS)
--- /dev/null
+[PATCH] events.c: add similar system headers workaround as trace.c
+
+Needed for E.G. powerpc on uClibc.
+
+Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
+---
+ sysdeps/linux-gnu/events.c | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+Index: ltrace-0.6.0/sysdeps/linux-gnu/events.c
+===================================================================
+--- ltrace-0.6.0.orig/sysdeps/linux-gnu/events.c
++++ ltrace-0.6.0/sysdeps/linux-gnu/events.c
+@@ -11,6 +11,33 @@
+
+ #include "common.h"
+
++/* If the system headers did not provide the constants, hard-code the normal
++ values. */
++#ifndef PTRACE_EVENT_FORK
++
++#define PTRACE_OLDSETOPTIONS 21
++#define PTRACE_SETOPTIONS 0x4200
++#define PTRACE_GETEVENTMSG 0x4201
++
++/* options set using PTRACE_SETOPTIONS */
++#define PTRACE_O_TRACESYSGOOD 0x00000001
++#define PTRACE_O_TRACEFORK 0x00000002
++#define PTRACE_O_TRACEVFORK 0x00000004
++#define PTRACE_O_TRACECLONE 0x00000008
++#define PTRACE_O_TRACEEXEC 0x00000010
++#define PTRACE_O_TRACEVFORKDONE 0x00000020
++#define PTRACE_O_TRACEEXIT 0x00000040
++
++/* Wait extended result codes for the above trace options. */
++#define PTRACE_EVENT_FORK 1
++#define PTRACE_EVENT_VFORK 2
++#define PTRACE_EVENT_CLONE 3
++#define PTRACE_EVENT_EXEC 4
++#define PTRACE_EVENT_VFORK_DONE 5
++#define PTRACE_EVENT_EXIT 6
++
++#endif /* PTRACE_EVENT_FORK */
++
+ static Event event;
+
+ Event *
--- /dev/null
+From faa8dfe0507b56fb8a7666e326177aec7f364071 Mon Sep 17 00:00:00 2001
+From: Gustavo Zacarias <gustavo@zacarias.com.ar>
+Date: Mon, 3 Dec 2012 11:12:08 -0300
+Subject: [PATCH] Fix build failure on ppc
+
+ppc/trace.c is using waitstatus bits without including the appropiate
+headers, leading to a build failure:
+
+libtool: link:
+/home/gustavoz/b/test/output/host/usr/bin/powerpc-buildroot-linux-uclibc-gcc
+-Wall -Wsign-compare -Wfloat-equal -Wformat-security -pipe -Os -o ltrace
+main.o ./.libs/libltrace.a -lelf
+./.libs/libltrace.a(lt1-trace.o): In function `syscall_p':
+trace.c:(.text+0x28): undefined reference to `WIFSTOPPED'
+trace.c:(.text+0x40): undefined reference to `WSTOPSIG'
+
+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
+---
+ sysdeps/linux-gnu/ppc/trace.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/sysdeps/linux-gnu/ppc/trace.c b/sysdeps/linux-gnu/ppc/trace.c
+index c152101..4357a1e 100644
+--- a/sysdeps/linux-gnu/ppc/trace.c
++++ b/sysdeps/linux-gnu/ppc/trace.c
+@@ -29,6 +29,8 @@
+ #include <errno.h>
+ #include <signal.h>
+ #include <string.h>
++#include <sys/types.h>
++#include <sys/wait.h>
+
+ #include "backend.h"
+ #include "breakpoint.h"
+--
+1.7.8.6
+
--- /dev/null
+[PATCH] configure.ac: Recognize linux-uclibc as well
+
+Ltrace works on uClibc as well as on glibc, so accept it.
+
+[Gustavo: update for ltrace 0.7.1]
+Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
+
+diff -Nura ltrace-0.7.1.orig/configure.ac ltrace-0.7.1/configure.ac
+--- ltrace-0.7.1.orig/configure.ac 2012-12-03 09:02:32.995352741 -0300
++++ ltrace-0.7.1/configure.ac 2012-12-03 09:02:56.579096389 -0300
+@@ -32,7 +32,7 @@
+ AC_CANONICAL_HOST
+
+ case "${host_os}" in
+- linux-gnu*) HOST_OS="linux-gnu" ;;
++ linux-gnu* | linux-uclibc*) HOST_OS="linux-gnu" ;;
+ *) AC_MSG_ERROR([unkown host-os ${host_os}]) ;;
+ esac
+ AC_SUBST(HOST_OS)
# ltrace
#
#############################################################
-LTRACE_VERSION = 0.6.0
-LTRACE_SITE = git://anonscm.debian.org/collab-maint/ltrace.git
+
+LTRACE_VERSION = 0.7.1
+LTRACE_SITE = http://alioth.debian.org/frs/download.php/3844
+LTRACE_SOURCE = ltrace-$(LTRACE_VERSION).tar.bz2
LTRACE_DEPENDENCIES = libelf
-LTRACE_AUTORECONF = YES
-LTRACE_CONF_OPT += --disable-werror
+LTRACE_AUTORECONF = YES
+LTRACE_CONF_OPT = --disable-werror
+LTRACE_LICENSE = GPLv2
+LTRACE_LICENSE_FILES = COPYING
$(eval $(autotools-package))