Commit f4e2d3bd authored by Maxime Ripard's avatar Maxime Ripard Committed by Peter Korsgaard
Browse files

Bump version of ltrace

parent 5fd8f38f
Loading
Loading
Loading
Loading
+0 −128
Original line number Diff line number Diff line
Fix several issues with the configure script:

 * Allow option values to contains equal signs, like
   CC="/foo/arm-linux-gcc --sysroot=/foobar/usr"

 * Parse the option before doing the tests so that CC/CFLAGS can be
   used during the tests.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 configure |   72 +++++++++++++++++++++++++++++++-------------------------------
 1 file changed, 37 insertions(+), 35 deletions(-)

Index: ltrace-0.5.3/configure
===================================================================
--- ltrace-0.5.3.orig/configure
+++ ltrace-0.5.3/configure
@@ -6,6 +6,38 @@
   exit 1
 fi
 
+CC=gcc
+CPPFLAGS=' -I /usr/include/libelf'
+CFLAGS='-g -O2'
+LIBS='-lelf '
+INSTALL='/usr/bin/install -c'
+iquote='-iquote '
+iquoteend=''
+
+prefix=/usr/local
+sysconfdir='${prefix}/etc'
+bindir='${prefix}/bin'
+mandir='${prefix}/share/man'
+docdir='${prefix}/share/doc/ltrace'
+for x_option
+do
+  if test -n "$x_prev"; then
+    eval $x_prev=\$x_option
+    x_prev=
+    continue
+  fi
+  case $x_option in
+    --*=* | *=*)
+      x_var=`echo $x_option | sed 's/^--//' | sed 's/=.*//'`
+      x_val=`echo $x_option | sed 's/^[^=]*=//'`
+      eval $x_var=\"$x_val\"
+      ;;
+    --*)
+      x_prev=`echo $x_option | sed 's/^--//'`
+      ;;
+  esac
+done
+
 echo -n "checking package name... "
 PACKAGE_NAME='ltrace'
 echo $PACKAGE_NAME
@@ -30,9 +62,10 @@
   return cplus_demangle();
 }
 EOF
-if gcc conftest.c -liberty 2>/dev/null
+if $CC $CFLAGS conftest.c -liberty 2>/dev/null
 then
   HAVE_LIBIBERTY=1
+  LIBS="$LIBS -liberty"
   echo "yes"
 else
   unset HAVE_LIBIBERTY
@@ -48,9 +81,10 @@
   return __cxa_demangle();
 }
 EOF
-if gcc conftest.c -lsupc++ 2>/dev/null
+if $CC $CFLAGS conftest.c -lsupc++ 2>/dev/null
 then
   HAVE_LIBSUPC__=1
+  LIBS="$LIBS -lsupc++"
   echo "yes"
 else
   unset HAVE_LIBSUPC__
@@ -67,7 +101,7 @@
   return 0;
 }
 EOF
-if gcc conftest.c 2>/dev/null
+if $CC $CFLAGS conftest.c 2>/dev/null
 then
   HAVE_ELF_C_READ_MMAP=1
   echo "yes"
@@ -77,38 +111,6 @@
 fi
 rm -f conftest.c a.out
 
-CC=gcc
-CPPFLAGS=' -I /usr/include/libelf'
-CFLAGS='-g -O2'
-LIBS='-lelf -lsupc++ -liberty '
-INSTALL='/usr/bin/install -c'
-iquote='-iquote '
-iquoteend=''
-
-prefix=/usr/local
-sysconfdir='${prefix}/etc'
-bindir='${prefix}/bin'
-mandir='${prefix}/share/man'
-docdir='${prefix}/share/doc/ltrace'
-for x_option
-do
-  if test -n "$x_prev"; then
-    eval $x_prev=\$x_option
-    x_prev=
-    continue
-  fi
-  case $x_option in
-    --*=* | *=*)
-      x_var=`echo $x_option | sed 's/^--//' | sed 's/=.*//'`
-      x_val=`echo $x_option | sed 's/^.*=//'`
-      eval $x_var=$x_val
-      ;;
-    --*)
-      x_prev=`echo $x_option | sed 's/^--//'`
-      ;;
-  esac
-done
-
 echo "configure: creating Makefile"
 #
 # Makefile.in -> Makefile
+0 −20
Original line number Diff line number Diff line
Use the strchr() function instead of the legacy index() function.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 read_config_file.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: ltrace-0.5.3/read_config_file.c
===================================================================
--- ltrace-0.5.3.orig/read_config_file.c
+++ ltrace-0.5.3/read_config_file.c
@@ -83,7 +83,7 @@
 
 	while (tmp->name) {
 		if (!strncmp(*str, tmp->name, strlen(tmp->name))
-				&& index(" ,()#*;012345[", *(*str + strlen(tmp->name)))) {
+				&& strchr(" ,()#*;012345[", *(*str + strlen(tmp->name)))) {
 			*str += strlen(tmp->name);
 			return lookup_prototype(tmp->pt);
 		}
+67 −0
Original line number Diff line number Diff line
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
+5 −35
Original line number Diff line number Diff line
@@ -3,40 +3,10 @@
# ltrace
#
#############################################################
LTRACE_VERSION      = 0.5.3
LTRACE_SOURCE       = ltrace_$(LTRACE_VERSION).orig.tar.gz
LTRACE_PATCH        = ltrace_$(LTRACE_VERSION)-2.1.diff.gz
LTRACE_SITE         = $(BR2_DEBIAN_MIRROR)/debian/pool/main/l/ltrace
LTRACE_MAKE         = $(MAKE1)
LTRACE_VERSION      = 0.6.0
LTRACE_SITE         = git://anonscm.debian.org/collab-maint/ltrace.git
LTRACE_DEPENDENCIES = libelf
LTRACE_AUTORECONF   = YES
LTRACE_CONF_OPT     += --disable-werror

# ltrace uses arch=ppc for powerpc
LTRACE_ARCH:=$(KERNEL_ARCH:powerpc=ppc)
ifeq ("$(strip $(ARCH))","armeb")
LTRACE_ARCH:=arm
endif

define LTRACE_CONFIGURE_CMDS
	(cd $(@D) ; ./configure 		\
		--prefix=/usr			\
		CC='$(TARGET_CC)' 		\
		CFLAGS='$(TARGET_CFLAGS)')
endef

define LTRACE_BUILD_CMDS
	$(MAKE) -C $(@D) ARCH=$(LTRACE_ARCH)
endef

ifeq ($(BR2_HAVE_DOCUMENTATION),y)
define LTRACE_INSTALL_DOCUMENTATION
	$(INSTALL) -D $(@D)/ltrace.1 \
		$(TARGET_DIR)/usr/share/man/man1/ltrace.1
endef
endif

define LTRACE_INSTALL_TARGET_CMDS
	$(INSTALL) -D $(@D)/ltrace $(TARGET_DIR)/usr/bin
	$(LTRACE_INSTALL_DOCUMENTATION)
endef

$(eval $(call GENTARGETS))
$(eval $(call AUTOTARGETS))