Hello community, here is the log from the commit of package strace checked in at Tue Sep 2 12:15:42 CEST 2008. -------- --- strace/strace.changes 2008-08-12 16:30:53.000000000 +0200 +++ /mounts/work_src_done/STABLE/strace/strace.changes 2008-09-02 10:24:48.000000000 +0200 @@ -1,0 +2,9 @@ +Tue Sep 2 10:23:32 CEST 2008 - schwab@suse.de + +- Update to strace 4.5.18. + * Bug fixes. + * Support new Linux/PPC system call subpage_prot and PROT_SAO flag. + * In sigaction system call, display sa_flags value along with + SIG_DFL/SIG_IGN. + +------------------------------------------------------------------- @@ -14 +23 @@ -- Update to strace 4.5.16. +- Update to strace 4.5.17. Old: ---- madvice.diff strace-4.5.17.diff strace-4.5.17.tar.bz2 vfork.diff New: ---- strace-4.5.18.diff strace-4.5.18.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ strace.spec ++++++ --- /var/tmp/diff_new_pack.G20200/_old 2008-09-02 12:15:17.000000000 +0200 +++ /var/tmp/diff_new_pack.G20200/_new 2008-09-02 12:15:17.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package strace (Version 4.5.17) +# spec file for package strace (Version 4.5.18) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -22,13 +22,11 @@ License: BSD 3-Clause Group: Development/Tools/Debuggers AutoReqProv: on -Version: 4.5.17 -Release: 13 +Version: 4.5.18 +Release: 1 Summary: A utility to trace the system calls of a program -Source: strace-%{version}.tar.bz2 +Source: http://dl.sourceforge.net/strace/strace-%{version}.tar.bz2 Patch: strace-%{version}.diff -Patch1: vfork.diff -Patch2: madvice.diff Url: http://sourceforge.net/projects/strace/ BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -48,8 +46,6 @@ %prep %setup -q %patch -%patch1 -%patch2 -p1 %build export CFLAGS="$RPM_OPT_FLAGS" @@ -73,12 +69,18 @@ %doc %{_mandir}/man1/strace.1.gz %changelog +* Tue Sep 02 2008 schwab@suse.de +- Update to strace 4.5.18. + * Bug fixes. + * Support new Linux/PPC system call subpage_prot and PROT_SAO flag. + * In sigaction system call, display sa_flags value along with + SIG_DFL/SIG_IGN. * Tue Aug 12 2008 schwab@suse.de - Add fix for madvice decoding. * Tue Aug 05 2008 schwab@suse.de - Add fix for vfork handling. * Tue Jul 22 2008 schwab@suse.de -- Update to strace 4.5.16. +- Update to strace 4.5.17. * Many bug fixes. * -F is now deprecated, -f has traced vfork too on Linux for a long time now. ++++++ strace-4.5.17.diff -> strace-4.5.18.diff ++++++ --- strace/strace-4.5.17.diff 2008-07-22 09:46:54.000000000 +0200 +++ /mounts/work_src_done/STABLE/strace/strace-4.5.18.diff 2008-09-02 10:22:34.000000000 +0200 @@ -1,13 +1,15 @@ --- process.c +++ process.c -@@ -765,12 +765,12 @@ setarg(tcp, argnum) +@@ -765,12 +765,13 @@ setarg(tcp, argnum) { #if defined (IA64) { - unsigned long *bsp, *ap; -+ unsigned long bsp, *ap; ++ unsigned long *ap; ++ long bsp; - if (upeek(tcp->pid, PT_AR_BSP, (long *) &bsp) , 0) +- if (upeek(tcp->pid, PT_AR_BSP, (long *) &bsp) , 0) ++ if (upeek(tcp->pid, PT_AR_BSP, &bsp) , 0) return -1; - ap = ia64_rse_skip_regs(bsp, argnum); @@ -15,7 +17,7 @@ errno = 0; ptrace(PTRACE_POKEDATA, tcp->pid, (char *) ap, tcp->u_arg[argnum]); if (errno) -@@ -2289,6 +2289,18 @@ static const struct xlat ptrace_cmds[] = +@@ -2289,6 +2290,18 @@ static const struct xlat ptrace_cmds[] = #ifdef PTRACE_SETVRREGS { PTRACE_SETVRREGS, "PTRACE_SETVRREGS", }, #endif @@ -61,45 +63,16 @@ return if $result == 0; my $seq = $pr{$pid}{seq}; ---- syscall.c -+++ syscall.c -@@ -1963,7 +1963,7 @@ struct tcb *tcp; - #elif defined (IA64) - { - if (!ia32) { -- unsigned long *out0, *rbs_end, cfm, sof, sol, i; -+ unsigned long *out0, rbs_end, cfm, sof, sol, i; - /* be backwards compatible with kernel < 2.4.4... */ - # ifndef PT_RBS_END - # define PT_RBS_END PT_AR_BSP -@@ -1976,7 +1976,7 @@ struct tcb *tcp; - - sof = (cfm >> 0) & 0x7f; - sol = (cfm >> 7) & 0x7f; -- out0 = ia64_rse_skip_regs(rbs_end, -sof + sol); -+ out0 = ia64_rse_skip_regs((unsigned long *)rbs_end, -sof + sol); - - if (tcp->scno >= 0 && tcp->scno < nsyscalls - && sysent[tcp->scno].nargs != -1) --- util.c +++ util.c -@@ -1300,7 +1300,7 @@ typedef unsigned long *arg_setup_state; - static int - arg_setup(struct tcb *tcp, arg_setup_state *state) - { -- unsigned long *bsp, cfm, sof, sol; -+ unsigned long bsp, cfm, sof, sol; - - if (ia32) - return 0; -@@ -1312,9 +1312,8 @@ arg_setup(struct tcb *tcp, arg_setup_sta +@@ -1319,9 +1319,8 @@ arg_setup(struct tcb *tcp, arg_setup_sta sof = (cfm >> 0) & 0x7f; sol = (cfm >> 7) & 0x7f; -- bsp = ia64_rse_skip_regs(bsp, -sof + sol); +- bsp = (long) ia64_rse_skip_regs((unsigned long *) bsp, -sof + sol); + *state = ia64_rse_skip_regs((unsigned long *) bsp, -sof + sol); -- *state = bsp; +- *state = (unsigned long *) bsp; return 0; } ++++++ strace-4.5.17.tar.bz2 -> strace-4.5.18.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/ChangeLog new/strace-4.5.18/ChangeLog --- old/strace-4.5.17/ChangeLog 2008-07-22 02:42:54.000000000 +0200 +++ new/strace-4.5.18/ChangeLog 2008-08-28 23:19:51.000000000 +0200 @@ -1,3 +1,74 @@ +2008-08-28 Roland McGrath <roland@redhat.com> + + * configure.ac, NEWS: Version 4.5.18. + * strace.spec: 4.5.18-1. + +2008-08-24 Roland McGrath <roland@redhat.com> + + * linux/syscall.h (SYS_socket_subcall et al, SYS_ipc_subcall et al): + Don't define these if [__ARM_EABI__]. + Reported by Johannes Stezenbach <js@sig21.net>. + + * syscall.c (trace_syscall): Conditionalize on [SYS_socket_subcall] + and [SYS_ipc_subcall] individually. + + * linux/powerpc/syscallent.h: Handle subpage_prot. + * mem.c [LINUX && POWERPC] (sys_subpage_prot): New function. + * linux/syscall.h [POWERPC]: Declare it. + From Simon Murray <simon@transitive.com>. + + * mem.c (mmap_prot): Handle PROT_SAO. + From Simon Murray <simon@transitive.com>. + + * mem.c (madvise_flags): Typo fixes. Rename to madvise_cmds. + (sys_madvise): Use printxval, not printflags. + Reported by Rajeev V. Pillai <rajeevvp@gmail.com>. + +2008-08-19 Roland McGrath <roland@redhat.com> + + * signal.c (sys_sigaction, sys_rt_sigaction): Don't omit the rest of + the struct after sa_handler is a known constant. Some sa_flags bits + have meaning even for SIG_IGN/SIG_DFL. + +2008-08-06 Jan Kratochvil <jan.kratochvil@redhat.com> + + * util.c (CLONE_VM): Define if not defined already. + (setbpt): Clear CLONE_VM in the case we already clear CLONE_VFORK for + SYS_clone and SYS_clone2. + Reported by Michal Nowak. + Fixes RH#455078. + +2008-08-06 Jan Kratochvil <jan.kratochvil@redhat.com> + + Fix compiler warnings. + * signal.c (sys_signal): Cast to SIG_* to the matching type LONG. + * strace.c (trace): Variables PSR and PC are now signed. + * syscall.c (syscall_enter): Variable RBS_END is now signed long. + Remove/add the RBS_END casts appropriately. + * util.c [IA64] (arg_setup): Variable BSP is now signed long. + Remove/add the BSP casts appropriately. + <ia32>: Initialize *STATE. + +2008-07-31 Roland McGrath <roland@redhat.com> + + * Makefile.am (EXTRA_DIST): Add new linux/arm/ files. + + * file.c [LINUX] (struct kernel_dirent): Define it locally, + do not use <linux/dirent.h>. + Fixes RH#457291. + + * configure.ac: Add AC_HEADER_STDBOOL. + * defs.h [HAVE_STDBOOL_H]: #include <stdbool.h>. + Fixes Debian#492774. + +2008-07-24 Dmitry V. Levin <ldv@altlinux.org> + + * strace.c (main): Fix -F option backwards compatibility. + +2008-07-22 Roland McGrath <roland@redhat.com> + + * Makefile.am (EXTRA_DIST): Add new debian/ files. + 2008-07-21 Roland McGrath <roland@redhat.com> * configure.ac: Version 4.5.17. diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/config.h.in new/strace-4.5.18/config.h.in --- old/strace-4.5.17/config.h.in 2008-07-22 02:43:42.000000000 +0200 +++ new/strace-4.5.18/config.h.in 2008-08-28 23:36:28.000000000 +0200 @@ -143,6 +143,9 @@ /* Define if stat64 is available in asm/stat.h. */ #undef HAVE_STAT64 +/* Define to 1 if stdbool.h conforms to C99. */ +#undef HAVE_STDBOOL_H + /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H @@ -304,6 +307,9 @@ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if the system has the type `_Bool'. */ +#undef HAVE__BOOL + /* Define to 1 if you have the `_sys_siglist' function. */ #undef HAVE__SYS_SIGLIST diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/configure new/strace-4.5.18/configure --- old/strace-4.5.17/configure 2008-07-22 02:43:21.000000000 +0200 +++ new/strace-4.5.18/configure 2008-08-28 23:36:06.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for strace 4.5.17. +# Generated by GNU Autoconf 2.61 for strace 4.5.18. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -572,8 +572,8 @@ # Identity of this package. PACKAGE_NAME='strace' PACKAGE_TARNAME='strace' -PACKAGE_VERSION='4.5.17' -PACKAGE_STRING='strace 4.5.17' +PACKAGE_VERSION='4.5.18' +PACKAGE_STRING='strace 4.5.18' PACKAGE_BUGREPORT='' ac_unique_file="strace.c" @@ -1232,7 +1232,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures strace 4.5.17 to adapt to many kinds of systems. +\`configure' configures strace 4.5.18 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1302,7 +1302,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of strace 4.5.17:";; + short | recursive ) echo "Configuration of strace 4.5.18:";; esac cat <<\_ACEOF @@ -1387,7 +1387,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -strace configure 4.5.17 +strace configure 4.5.18 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1401,7 +1401,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by strace $as_me 4.5.17, which was +It was created by strace $as_me 4.5.18, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -2094,7 +2094,7 @@ # Define the identity of the package. PACKAGE='strace' - VERSION='4.5.17' + VERSION='4.5.18' cat >>confdefs.h <<_ACEOF @@ -4557,6 +4557,261 @@ fi +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +{ echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5 +echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6; } +if test "${ac_cv_header_stdbool_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include <stdbool.h> +#ifndef bool + "error: bool is not defined" +#endif +#ifndef false + "error: false is not defined" +#endif +#if false + "error: false is not 0" +#endif +#ifndef true + "error: true is not defined" +#endif +#if true != 1 + "error: true is not 1" +#endif +#ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" +#endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + bool e = &s; + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; +# if defined __xlc__ || defined __GNUC__ + /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 + reported by James Lemley on 2005-10-05; see + http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html + This test is not quite right, since xlc is allowed to + reject this program, as the initializer for xlcbug is + not one of the forms that C requires support for. + However, doing the test right would require a runtime + test, and that would make cross-compilation harder. + Let us hope that IBM fixes the xlc bug, and also adds + support for this kind of constant expression. In the + meantime, this test will reject xlc, which is OK, since + our stdbool.h substitute should suffice. We also test + this with GCC, where it should work, to detect more + quickly whether someone messes up the test in the + future. */ + char digs[] = "0123456789"; + int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1); +# endif + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; + +int +main () +{ + + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdbool_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdbool_h=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5 +echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6; } +{ echo "$as_me:$LINENO: checking for _Bool" >&5 +echo $ECHO_N "checking for _Bool... $ECHO_C" >&6; } +if test "${ac_cv_type__Bool+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef _Bool ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type__Bool=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type__Bool=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5 +echo "${ECHO_T}$ac_cv_type__Bool" >&6; } +if test $ac_cv_type__Bool = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE__BOOL 1 +_ACEOF + + +fi + +if test $ac_cv_header_stdbool_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_STDBOOL_H 1 +_ACEOF + +fi + @@ -4866,75 +5121,6 @@ fi -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - { echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6; } if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then @@ -9408,7 +9594,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by strace $as_me 4.5.17, which was +This file was extended by strace $as_me 4.5.18, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -9461,7 +9647,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -strace config.status 4.5.17 +strace config.status 4.5.18 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/configure.ac new/strace-4.5.18/configure.ac --- old/strace-4.5.17/configure.ac 2008-07-22 02:42:29.000000000 +0200 +++ new/strace-4.5.18/configure.ac 2008-08-28 23:15:56.000000000 +0200 @@ -1,6 +1,6 @@ dnl Process this file with autoconf to create configure. Use autoreconf. AC_PREREQ(2.57) -AC_INIT([strace],[4.5.17]) +AC_INIT([strace],[4.5.18]) AC_CONFIG_SRCDIR([strace.c]) AM_CONFIG_HEADER([config.h]) AM_INIT_AUTOMAKE([foreign check-news dist-bzip2]) @@ -158,6 +158,7 @@ AC_PROG_INSTALL AC_C_CONST AC_HEADER_STDC +AC_HEADER_STDBOOL AC_HEADER_DIRENT AC_HEADER_STAT AC_CHECK_MEMBERS([struct stat.st_blksize, diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/debian/compat new/strace-4.5.18/debian/compat --- old/strace-4.5.17/debian/compat 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/debian/compat 2008-07-18 02:47:53.000000000 +0200 @@ -0,0 +1 @@ +5 diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/debian/strace64.install new/strace-4.5.18/debian/strace64.install --- old/strace-4.5.17/debian/strace64.install 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/debian/strace64.install 2008-07-22 02:25:23.000000000 +0200 @@ -0,0 +1 @@ +build64/strace64 usr/bin diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/debian/strace64.manpages new/strace-4.5.18/debian/strace64.manpages --- old/strace-4.5.17/debian/strace64.manpages 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/debian/strace64.manpages 2008-07-22 02:25:23.000000000 +0200 @@ -0,0 +1 @@ +strace64.1 diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/debian/strace.docs new/strace-4.5.18/debian/strace.docs --- old/strace-4.5.17/debian/strace.docs 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/debian/strace.docs 2008-07-18 02:42:39.000000000 +0200 @@ -0,0 +1,2 @@ +TODO +NEWS diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/debian/strace.examples new/strace-4.5.18/debian/strace.examples --- old/strace-4.5.17/debian/strace.examples 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/debian/strace.examples 2008-07-18 02:42:39.000000000 +0200 @@ -0,0 +1 @@ +strace-graph diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/debian/strace.install new/strace-4.5.18/debian/strace.install --- old/strace-4.5.17/debian/strace.install 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/debian/strace.install 2008-07-18 02:42:39.000000000 +0200 @@ -0,0 +1 @@ +build/strace usr/bin diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/debian/strace.manpages new/strace-4.5.18/debian/strace.manpages --- old/strace-4.5.17/debian/strace.manpages 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/debian/strace.manpages 2008-07-18 02:42:39.000000000 +0200 @@ -0,0 +1 @@ +strace.1 diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/debian/strace-udeb.install new/strace-4.5.18/debian/strace-udeb.install --- old/strace-4.5.17/debian/strace-udeb.install 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/debian/strace-udeb.install 2008-07-18 02:42:39.000000000 +0200 @@ -0,0 +1 @@ +build/strace usr/bin diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/defs.h new/strace-4.5.18/defs.h --- old/strace-4.5.17/defs.h 2008-07-22 02:30:26.000000000 +0200 +++ new/strace-4.5.18/defs.h 2008-08-01 03:06:31.000000000 +0200 @@ -26,7 +26,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: defs.h,v 1.82 2008/07/22 00:30:26 roland Exp $ + * $Id: defs.h,v 1.83 2008/08/01 01:06:31 roland Exp $ */ #ifdef HAVE_CONFIG_H @@ -80,6 +80,10 @@ #include <sys/time.h> #include <errno.h> +#ifdef HAVE_STDBOOL_H +#include <stdbool.h> +#endif + #ifdef STDC_HEADERS #include <stddef.h> #endif /* STDC_HEADERS */ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/file.c new/strace-4.5.18/file.c --- old/strace-4.5.17/file.c 2008-05-20 06:56:18.000000000 +0200 +++ new/strace-4.5.18/file.c 2008-08-01 03:13:10.000000000 +0200 @@ -28,21 +28,22 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: file.c,v 1.92 2008/05/20 04:56:18 roland Exp $ + * $Id: file.c,v 1.93 2008/08/01 01:13:10 roland Exp $ */ #include "defs.h" #include <dirent.h> + #ifdef LINUX -#define dirent kernel_dirent -#define dirent64 kernel_dirent64 -#include <linux/types.h> -#include <linux/dirent.h> -#undef dirent -#undef dirent64 +struct kernel_dirent { + unsigned long d_ino; + unsigned long d_off; + unsigned short d_reclen; + char d_name[1]; +}; #else -#define kernel_dirent dirent +# define kernel_dirent dirent #endif #ifdef LINUX diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/linux/arm/errnoent1.h new/strace-4.5.18/linux/arm/errnoent1.h --- old/strace-4.5.17/linux/arm/errnoent1.h 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/linux/arm/errnoent1.h 2008-05-20 03:31:36.000000000 +0200 @@ -0,0 +1,2 @@ +/* Our second set comes from the i386 files. */ +#include "../errnoent.h" diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/linux/arm/ioctlent1.h new/strace-4.5.18/linux/arm/ioctlent1.h --- old/strace-4.5.17/linux/arm/ioctlent1.h 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/linux/arm/ioctlent1.h 2008-05-20 03:31:36.000000000 +0200 @@ -0,0 +1,2 @@ +/* Our second set comes from the i386 files. */ +#include "../ioctlent.h" diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/linux/arm/signalent1.h new/strace-4.5.18/linux/arm/signalent1.h --- old/strace-4.5.17/linux/arm/signalent1.h 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/linux/arm/signalent1.h 2008-05-20 03:31:36.000000000 +0200 @@ -0,0 +1,2 @@ +/* Our second set comes from the i386 files. */ +#include "../signalent.h" diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/linux/arm/syscallent1.h new/strace-4.5.18/linux/arm/syscallent1.h --- old/strace-4.5.17/linux/arm/syscallent1.h 1970-01-01 01:00:00.000000000 +0100 +++ new/strace-4.5.18/linux/arm/syscallent1.h 2008-05-20 03:31:36.000000000 +0200 @@ -0,0 +1,7 @@ +/* ARM specific syscalls */ + { 5, 0, printargs, "SYS_0" }, /* 0 */ + { 5, 0, printargs, "breakpoint" }, /* 1 */ + { 5, 0, printargs, "cacheflush" }, /* 2 */ + { 5, 0, printargs, "usr26" }, /* 3 */ + { 5, 0, printargs, "usr32" }, /* 4 */ + { 5, 0, printargs, "set_tls" }, /* 5 */ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/linux/powerpc/syscallent.h new/strace-4.5.18/linux/powerpc/syscallent.h --- old/strace-4.5.17/linux/powerpc/syscallent.h 2008-07-22 02:22:05.000000000 +0200 +++ new/strace-4.5.18/linux/powerpc/syscallent.h 2008-08-25 05:09:16.000000000 +0200 @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscallent.h,v 1.34 2008/07/22 00:22:05 roland Exp $ + * $Id: syscallent.h,v 1.35 2008/08/25 03:09:16 roland Exp $ */ { 0, 0, sys_restart_syscall, "restart_syscall" }, /* 0 */ @@ -339,7 +339,7 @@ { 1, TD, sys_eventfd, "eventfd" }, /* 307 */ { 5, 0, printargs, "SYS_308" }, /* 308 */ { 5, 0, printargs, "SYS_309" }, /* 309 */ - { 5, 0, printargs, "SYS_310" }, /* 310 */ + { 3, 0, sys_subpage_prot, "subpage_prot" }, /* 310 */ { 5, 0, printargs, "SYS_311" }, /* 311 */ { 5, 0, printargs, "SYS_312" }, /* 312 */ { 5, 0, printargs, "SYS_313" }, /* 313 */ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/linux/syscall.h new/strace-4.5.18/linux/syscall.h --- old/strace-4.5.17/linux/syscall.h 2008-05-20 06:56:22.000000000 +0200 +++ new/strace-4.5.18/linux/syscall.h 2008-08-25 05:15:43.000000000 +0200 @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscall.h,v 1.57 2008/05/20 04:56:22 roland Exp $ + * $Id: syscall.h,v 1.59 2008/08/25 03:15:43 roland Exp $ */ #include "dummy.h" @@ -179,7 +179,8 @@ # endif #endif -#if !defined(ALPHA) && !defined(MIPS) && !defined(HPPA) +#if !defined(ALPHA) && !defined(MIPS) && !defined(HPPA) && \ + !defined(__ARM_EABI__) # ifdef IA64 /* * IA64 syscall numbers (the only ones available from standard header @@ -234,7 +235,8 @@ int sys_msgsnd(), sys_msgrcv(), sys_msgget(), sys_msgctl(); int sys_shmat(), sys_shmdt(), sys_shmget(), sys_shmctl(); -#if !defined(ALPHA) && !defined(MIPS) && !defined(SPARC) && !defined(HPPA) +#if !defined(ALPHA) && !defined(MIPS) && !defined(SPARC) && !defined(HPPA) && \ + !defined(__ARM_EABI__) # ifdef IA64 /* * IA64 syscall numbers (the only ones available from standard @@ -320,3 +322,7 @@ #endif int sys_pread64(), sys_pwrite64(); + +#ifdef POWERPC +int sys_subpage_prot(); +#endif diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/Makefile.am new/strace-4.5.18/Makefile.am --- old/strace-4.5.17/Makefile.am 2007-07-03 04:07:28.000000000 +0200 +++ new/strace-4.5.18/Makefile.am 2008-08-01 03:15:09.000000000 +0200 @@ -20,6 +20,9 @@ EXTRA_DIST = $(man_MANS) errnoent.sh signalent.sh syscallent.sh ioctlsort.c \ debian/changelog debian/control debian/copyright debian/rules \ + debian/compat debian/strace64.install debian/strace64.manpages \ + debian/strace.docs debian/strace.examples debian/strace.install \ + debian/strace.manpages debian/strace-udeb.install \ strace.spec \ strace-graph COPYRIGHT CREDITS PORTING \ README-CVS README-freebsd README-linux README-sunos4 README-svr4 \ @@ -28,7 +31,9 @@ linux/syscall.h linux/syscallent.h linux/dummy.h \ linux/alpha/errnoent.h linux/alpha/ioctlent.h \ linux/alpha/signalent.h linux/alpha/syscallent.h \ - linux/arm/syscallent.h \ + linux/arm/syscallent.h linux/arm/syscallent1.h \ + linux/arm/signalent1.h linux/arm/ioctlent1.h \ + linux/arm/errnoent1.h \ linux/hppa/errnoent.h linux/hppa/ioctlent.h \ linux/hppa/signalent.h linux/hppa/syscallent.h \ linux/ia64/syscallent.h linux/ia64/errnoent.h \ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/Makefile.in new/strace-4.5.18/Makefile.in --- old/strace-4.5.17/Makefile.in 2008-07-22 02:43:21.000000000 +0200 +++ new/strace-4.5.18/Makefile.in 2008-08-28 23:36:07.000000000 +0200 @@ -208,6 +208,9 @@ noinst_HEADERS = defs.h EXTRA_DIST = $(man_MANS) errnoent.sh signalent.sh syscallent.sh ioctlsort.c \ debian/changelog debian/control debian/copyright debian/rules \ + debian/compat debian/strace64.install debian/strace64.manpages \ + debian/strace.docs debian/strace.examples debian/strace.install \ + debian/strace.manpages debian/strace-udeb.install \ strace.spec \ strace-graph COPYRIGHT CREDITS PORTING \ README-CVS README-freebsd README-linux README-sunos4 README-svr4 \ @@ -216,7 +219,9 @@ linux/syscall.h linux/syscallent.h linux/dummy.h \ linux/alpha/errnoent.h linux/alpha/ioctlent.h \ linux/alpha/signalent.h linux/alpha/syscallent.h \ - linux/arm/syscallent.h \ + linux/arm/syscallent.h linux/arm/syscallent1.h \ + linux/arm/signalent1.h linux/arm/ioctlent1.h \ + linux/arm/errnoent1.h \ linux/hppa/errnoent.h linux/hppa/ioctlent.h \ linux/hppa/signalent.h linux/hppa/syscallent.h \ linux/ia64/syscallent.h linux/ia64/errnoent.h \ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/mem.c new/strace-4.5.18/mem.c --- old/strace-4.5.17/mem.c 2008-05-20 03:11:56.000000000 +0200 +++ new/strace-4.5.18/mem.c 2008-08-25 05:09:16.000000000 +0200 @@ -29,7 +29,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: mem.c,v 1.42 2008/05/20 01:11:56 roland Exp $ + * $Id: mem.c,v 1.45 2008/08/25 03:09:16 roland Exp $ */ #include "defs.h" @@ -96,6 +96,9 @@ #ifdef PROT_GROWSUP { PROT_GROWSUP, "PROT_GROWSUP" }, #endif +#ifdef PROT_SAO + { PROT_SAO, "PROT_SAO" }, +#endif { 0, NULL }, }; @@ -384,11 +387,11 @@ return RVAL_HEX; } -static const struct xlat madvise_flags[] = { +static const struct xlat madvise_cmds[] = { #ifdef MADV_NORMAL { MADV_NORMAL, "MADV_NORMAL" }, #endif -#ifdef MADZV_RANDOM +#ifdef MADV_RANDOM { MADV_RANDOM, "MADV_RANDOM" }, #endif #ifdef MADV_SEQUENTIAL @@ -397,7 +400,7 @@ #ifdef MADV_WILLNEED { MADV_WILLNEED, "MADV_WILLNEED" }, #endif -#ifdef MADV_DONTNED +#ifdef MADV_DONTNEED { MADV_DONTNEED, "MADV_DONTNEED" }, #endif { 0, NULL }, @@ -410,7 +413,7 @@ { if (entering(tcp)) { tprintf("%#lx, %lu, ", tcp->u_arg[0], tcp->u_arg[1]); - printflags(madvise_flags, tcp->u_arg[2], "MADV_???"); + printxval(madvise_cmds, tcp->u_arg[2], "MADV_???"); } return 0; } @@ -883,3 +886,53 @@ return 0; } #endif + +#if defined(LINUX) && defined(POWERPC) +int +sys_subpage_prot(tcp) +struct tcb *tcp; +{ + if (entering(tcp)) { + unsigned long cur, end, abbrev_end, entries; + unsigned int entry; + + tprintf("%#lx, %#lx, ", tcp->u_arg[0], tcp->u_arg[1]); + entries = tcp->u_arg[1] >> 16; + if (!entries || !tcp->u_arg[2]) { + tprintf("{}"); + return 0; + } + cur = tcp->u_arg[2]; + end = cur + (sizeof(int) * entries); + if (!verbose(tcp) || end < tcp->u_arg[2]) { + tprintf("%#lx", tcp->u_arg[2]); + return 0; + } + if (abbrev(tcp)) { + abbrev_end = cur + (sizeof(int) * max_strlen); + if (abbrev_end > end) + abbrev_end = end; + } + else + abbrev_end = end; + tprintf("{"); + for (; cur < end; cur += sizeof(int)) { + if (cur > tcp->u_arg[2]) + tprintf(", "); + if (cur >= abbrev_end) { + tprintf("..."); + break; + } + if (umove(tcp, cur, &entry) < 0) { + tprintf("??? [%#lx]", cur); + break; + } + else + tprintf("%#08x", entry); + } + tprintf("}"); + } + + return 0; +} +#endif diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/NEWS new/strace-4.5.18/NEWS --- old/strace-4.5.17/NEWS 2008-07-18 04:20:42.000000000 +0200 +++ new/strace-4.5.18/NEWS 2008-08-28 23:17:31.000000000 +0200 @@ -1,3 +1,9 @@ +Changes in 4.5.18 +============== +* Bug fixes. +* Support new Linux/PPC system call subpage_prot and PROT_SAO flag. +* In sigaction system call, display sa_flags value along with SIG_DFL/SIG_IGN. + Changes in 4.5.17 ============== * Many bug fixes. diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/signal.c new/strace-4.5.18/signal.c --- old/strace-4.5.17/signal.c 2008-07-18 03:02:41.000000000 +0200 +++ new/strace-4.5.18/signal.c 2008-08-20 03:59:40.000000000 +0200 @@ -30,7 +30,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: signal.c,v 1.66 2008/07/18 01:02:41 roland Exp $ + * $Id: signal.c,v 1.68 2008/08/20 01:59:40 roland Exp $ */ #include "defs.h" @@ -1120,23 +1120,20 @@ else if (umove(tcp, addr, &sa) < 0) tprintf("{...}"); else { - switch ((long) sa.SA_HANDLER) { - case (long) SIG_ERR: - tprintf("{SIG_ERR}"); - break; - case (long) SIG_DFL: - tprintf("{SIG_DFL}"); - break; - case (long) SIG_IGN: + if (sa.SA_HANDLER == SIG_ERR) + tprintf("{SIG_ERR, "); + else if (sa.SA_HANDLER == SIG_DFL) + tprintf("{SIG_DFL, "); + else if (sa.SA_HANDLER == SIG_DFL) { #ifndef USE_PROCFS if (tcp->u_arg[0] == SIGTRAP) { tcp->flags |= TCB_SIGTRAPPED; kill(tcp->pid, SIGSTOP); } #endif /* !USE_PROCFS */ - tprintf("{SIG_IGN}"); - break; - default: + tprintf("{SIG_IGN, "); + } + else { #ifndef USE_PROCFS if (tcp->u_arg[0] == SIGTRAP) { tcp->flags |= TCB_SIGTRAPPED; @@ -1176,13 +1173,13 @@ printsignal(tcp->u_arg[0]); tprintf(", "); switch (tcp->u_arg[1]) { - case (int) SIG_ERR: + case (long) SIG_ERR: tprintf("SIG_ERR"); break; - case (int) SIG_DFL: + case (long) SIG_DFL: tprintf("SIG_DFL"); break; - case (int) SIG_IGN: + case (long) SIG_IGN: #ifndef USE_PROCFS if (tcp->u_arg[0] == SIGTRAP) { tcp->flags |= TCB_SIGTRAPPED; @@ -1204,11 +1201,11 @@ } else { switch (tcp->u_rval) { - case (int) SIG_ERR: + case (long) SIG_ERR: tcp->auxstr = "SIG_ERR"; break; - case (int) SIG_DFL: + case (long) SIG_DFL: tcp->auxstr = "SIG_DFL"; break; - case (int) SIG_IGN: + case (long) SIG_IGN: tcp->auxstr = "SIG_IGN"; break; default: tcp->auxstr = NULL; @@ -1865,7 +1862,7 @@ }; - int +int sys_rt_sigaction(tcp) struct tcb *tcp; { @@ -1886,38 +1883,33 @@ else if (umove(tcp, addr, &sa) < 0) tprintf("{...}"); else { - switch ((long) sa.__sigaction_handler.__sa_handler) { - case (long) SIG_ERR: - tprintf("{SIG_ERR}"); - break; - case (long) SIG_DFL: - tprintf("{SIG_DFL}"); - break; - case (long) SIG_IGN: - tprintf("{SIG_IGN}"); - break; - default: - tprintf("{%#lx, ", - (long) sa.__sigaction_handler.__sa_handler); - sigemptyset(&sigset); + if (sa.__sigaction_handler.__sa_handler == SIG_ERR) + tprintf("{SIG_ERR, "); + else if (sa.__sigaction_handler.__sa_handler == SIG_DFL) + tprintf("{SIG_DFL, "); + else if (sa.__sigaction_handler.__sa_handler == SIG_DFL) + tprintf("{SIG_IGN, "); + else + tprintf("{%#lx, ", + (long) sa.__sigaction_handler.__sa_handler); + sigemptyset(&sigset); #ifdef LINUXSPARC - if (tcp->u_arg[4] <= sizeof(sigset)) - memcpy(&sigset, &sa.sa_mask, tcp->u_arg[4]); + if (tcp->u_arg[4] <= sizeof(sigset)) + memcpy(&sigset, &sa.sa_mask, tcp->u_arg[4]); #else - if (tcp->u_arg[3] <= sizeof(sigset)) - memcpy(&sigset, &sa.sa_mask, tcp->u_arg[3]); + if (tcp->u_arg[3] <= sizeof(sigset)) + memcpy(&sigset, &sa.sa_mask, tcp->u_arg[3]); #endif - else - memcpy(&sigset, &sa.sa_mask, sizeof(sigset)); - printsigmask(&sigset, 1); - tprintf(", "); - printflags(sigact_flags, sa.sa_flags, "SA_???"); + else + memcpy(&sigset, &sa.sa_mask, sizeof(sigset)); + printsigmask(&sigset, 1); + tprintf(", "); + printflags(sigact_flags, sa.sa_flags, "SA_???"); #ifdef SA_RESTORER - if (sa.sa_flags & SA_RESTORER) - tprintf(", %p", sa.sa_restorer); + if (sa.sa_flags & SA_RESTORER) + tprintf(", %p", sa.sa_restorer); #endif - tprintf("}"); - } + tprintf("}"); } if (entering(tcp)) tprintf(", "); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/strace.c new/strace-4.5.18/strace.c --- old/strace-4.5.17/strace.c 2008-07-18 02:25:10.000000000 +0200 +++ new/strace-4.5.18/strace.c 2008-08-19 06:47:50.000000000 +0200 @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: strace.c,v 1.86 2008/07/18 00:25:10 roland Exp $ + * $Id: strace.c,v 1.88 2008/08/06 21:38:52 kratochvil Exp $ */ #include "defs.h" @@ -622,6 +622,7 @@ extern char *optarg; struct tcb *tcp; int c, pid = 0; + int optF = 0; struct sigaction sa; static char buf[BUFSIZ]; @@ -660,7 +661,8 @@ debug++; break; case 'F': - /* Obsoleted, acts as `-f'. */ + optF = 1; + break; case 'f': followfork++; break; @@ -757,6 +759,9 @@ if ((optind == argc) == !pflag_seen) usage(stderr, 1); + if (!followfork) + followfork = optF; + if (followfork > 1 && cflag) { fprintf(stderr, "%s: -c and -ff are mutually exclusive options\n", @@ -2416,11 +2421,12 @@ } if (!cflag && (qual_flags[WSTOPSIG(status)] & QUAL_SIGNAL)) { - unsigned long addr = 0, pc = 0; + unsigned long addr = 0; + long pc = 0; #if defined(PT_CR_IPSR) && defined(PT_CR_IIP) && defined(PT_GETSIGINFO) # define PSR_RI 41 struct siginfo si; - unsigned long psr; + long psr; upeek(pid, PT_CR_IPSR, &psr); upeek(pid, PT_CR_IIP, &pc); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/strace.spec new/strace-4.5.18/strace.spec --- old/strace-4.5.17/strace.spec 2008-07-22 02:47:34.000000000 +0200 +++ new/strace-4.5.18/strace.spec 2008-08-28 23:19:33.000000000 +0200 @@ -1,6 +1,6 @@ Summary: Tracks and displays system calls associated with a running process Name: strace -Version: 4.5.17 +Version: 4.5.18 Release: 1%{?dist} License: BSD Group: Development/Debuggers @@ -76,6 +76,12 @@ %changelog +* Thu Aug 28 2008 Roland McGrath <roland@redhat.com> - 4.5.18-1 +- build fix for newer kernel headers (#457291) +- fix CLONE_VFORK handling (#455078) +- Support new Linux/PPC system call subpage_prot and PROT_SAO flag. +- In sigaction system call, display sa_flags value along with SIG_DFL/SIG_IGN. + * Mon Jul 21 2008 Roland McGrath <roland@redhat.com> - 4.5.17-1 - handle O_CLOEXEC, MSG_CMSG_CLOEXEC (#365781) - fix biarch stat64 decoding (#222275) diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/syscall.c new/strace-4.5.18/syscall.c --- old/strace-4.5.17/syscall.c 2008-05-28 01:18:29.000000000 +0200 +++ new/strace-4.5.18/syscall.c 2008-08-25 05:16:26.000000000 +0200 @@ -30,7 +30,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscall.c,v 1.94 2008/05/27 23:18:29 roland Exp $ + * $Id: syscall.c,v 1.96 2008/08/25 03:16:26 roland Exp $ */ #include "defs.h" @@ -1963,20 +1963,21 @@ #elif defined (IA64) { if (!ia32) { - unsigned long *out0, *rbs_end, cfm, sof, sol, i; + unsigned long *out0, cfm, sof, sol, i; + long rbs_end; /* be backwards compatible with kernel < 2.4.4... */ # ifndef PT_RBS_END # define PT_RBS_END PT_AR_BSP # endif - if (upeek(pid, PT_RBS_END, (long *) &rbs_end) < 0) + if (upeek(pid, PT_RBS_END, &rbs_end) < 0) return -1; if (upeek(pid, PT_CFM, (long *) &cfm) < 0) return -1; sof = (cfm >> 0) & 0x7f; sol = (cfm >> 7) & 0x7f; - out0 = ia64_rse_skip_regs(rbs_end, -sof + sol); + out0 = ia64_rse_skip_regs((unsigned long *) rbs_end, -sof + sol); if (tcp->scno >= 0 && tcp->scno < nsyscalls && sysent[tcp->scno].nargs != -1) @@ -2429,18 +2430,18 @@ return res; switch (known_scno(tcp)) { -#ifdef LINUX -#if !defined (ALPHA) && !defined(MIPS) && !defined(HPPA) +#ifdef SYS_socket_subcall case SYS_socketcall: decode_subcall(tcp, SYS_socket_subcall, SYS_socket_nsubcalls, deref_style); break; +#endif +#ifdef SYS_ipc_subcall case SYS_ipc: decode_subcall(tcp, SYS_ipc_subcall, SYS_ipc_nsubcalls, shift_style); break; -#endif /* !(ALPHA || MIPS || HPPA) */ -#endif /* LINUX */ +#endif #ifdef SVR4 #ifdef SYS_pgrpsys_subcall case SYS_pgrpsys: diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/strace-4.5.17/util.c new/strace-4.5.18/util.c --- old/strace-4.5.17/util.c 2008-07-18 03:19:36.000000000 +0200 +++ new/strace-4.5.18/util.c 2008-08-19 06:47:51.000000000 +0200 @@ -30,7 +30,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: util.c,v 1.77 2008/07/18 01:19:36 roland Exp $ + * $Id: util.c,v 1.79 2008/08/06 21:43:35 kratochvil Exp $ */ #include "defs.h" @@ -1284,6 +1284,9 @@ #ifndef CLONE_VFORK # define CLONE_VFORK 0x00004000 #endif +#ifndef CLONE_VM +# define CLONE_VM 0x00000100 +#endif #ifndef CLONE_STOPPED # define CLONE_STOPPED 0x02000000 #endif @@ -1300,21 +1303,25 @@ static int arg_setup(struct tcb *tcp, arg_setup_state *state) { - unsigned long *bsp, cfm, sof, sol; + unsigned long cfm, sof, sol; + long bsp; - if (ia32) + if (ia32) { + /* Satisfy a false GCC warning. */ + *state = NULL; return 0; + } - if (upeek(tcp->pid, PT_AR_BSP, (long *) &bsp) < 0) + if (upeek(tcp->pid, PT_AR_BSP, &bsp) < 0) return -1; if (upeek(tcp->pid, PT_CFM, (long *) &cfm) < 0) return -1; sof = (cfm >> 0) & 0x7f; sol = (cfm >> 7) & 0x7f; - bsp = ia64_rse_skip_regs(bsp, -sof + sol); + bsp = (long) ia64_rse_skip_regs((unsigned long *) bsp, -sof + sol); - *state = bsp; + *state = (unsigned long *) bsp; return 0; } @@ -1533,15 +1540,19 @@ #ifdef SYS_clone2 case SYS_clone2: #endif - /* ia64 calls directly `clone (CLONE_VFORK)' contrary to - x86 SYS_vfork above. Even on x86 we turn the vfork - semantics into plain fork - each application must not - depend on the vfork specifics according to POSIX. We - would hang waiting for the parent resume otherwise. */ + /* ia64 calls directly `clone (CLONE_VFORK | CLONE_VM)' + contrary to x86 SYS_vfork above. Even on x86 we turn the + vfork semantics into plain fork - each application must not + depend on the vfork specifics according to POSIX. We would + hang waiting for the parent resume otherwise. We need to + clear also CLONE_VM but only in the CLONE_VFORK case as + otherwise we would break pthread_create. */ + if ((arg_setup (tcp, &state) < 0 || set_arg0 (tcp, &state, (tcp->u_arg[arg0_index] | CLONE_PTRACE) - & ~CLONE_VFORK) < 0 + & ~(tcp->u_arg[arg0_index] & CLONE_VFORK + ? CLONE_VFORK | CLONE_VM : 0)) < 0 || arg_finish_change (tcp, &state) < 0)) return -1; tcp->flags |= TCB_BPTSET; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de