patches/strace/4.5.19/130-statfs64-check.patch
author Joachim Nilsson <jocke@vmlinux.org>
Fri Jan 01 12:17:39 2010 +0100 (2010-01-01)
changeset 1671 08a5129e6eb0
permissions -rw-r--r--
debug/strace: fix strace 4.5.19 to properly build with latest Linux kernels

Here's a couple of patches to get strace 4.5.19 to configure and build
properly with the latest kernel headers. Not pretty, but hopefully
enough while we wait for 4.5.20 to be released.

With the current strace-4.5.19 patches I failed to get the configure
script running even on my host environment. Also, when cross building
the configure script needs to look for the proper system headers to be
able to properly set HAVE_LINUX_NETLINK_H. Otherwise you get:

[EXTRA] Building strace
[ERROR] /home/jocke/x-tools/targets/src/strace-4.5.19/net.c:976:
error: field 'nl' has incomplete type
[ERROR] make[2]: *** [net.o] Error 1
[ERROR] make[1]: *** [all] Error 2

The fix was simple, backport a change set from the git[1] tree and run
autoreconf to update the configure script.

[1] - http://strace.git.sourceforge.net/git/gitweb.cgi?p=strace/strace;a=commit;h=f0df31e71a58c6e79ba77c1a9d84b2f38d44bec7
     1 diff -durN strace-4.5.19.orig/acinclude.m4 strace-4.5.19/acinclude.m4
     2 --- strace-4.5.19.orig/acinclude.m4	2004-04-14 04:45:53.000000000 +0200
     3 +++ strace-4.5.19/acinclude.m4	2009-10-28 18:47:18.000000000 +0100
     4 @@ -210,6 +210,26 @@
     5  fi
     6  ])
     7  
     8 +dnl ### A macro to determine whether statfs64 is defined.
     9 +AC_DEFUN([AC_STATFS64],
    10 +[AC_MSG_CHECKING(for statfs64 in sys/(statfs|vfs).h)
    11 +AC_CACHE_VAL(ac_cv_type_statfs64,
    12 +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef LINUX
    13 +#include <linux/types.h>
    14 +#include <sys/statfs.h>
    15 +#else
    16 +#include <sys/vfs.h>
    17 +#endif]], [[struct statfs64 st;]])],[ac_cv_type_statfs64=yes],[ac_cv_type_statfs64=no])])
    18 +AC_MSG_RESULT($ac_cv_type_statfs64)
    19 +if test "$ac_cv_type_statfs64" = yes
    20 +then
    21 +	AC_DEFINE([HAVE_STATFS64], 1,
    22 +[Define if statfs64 is available in sys/statfs.h or sys/vfs.h.])
    23 +fi
    24 +])
    25 +
    26 +
    27 +
    28  dnl ### A macro to determine if off_t is a long long
    29  AC_DEFUN([AC_OFF_T_IS_LONG_LONG],
    30  [AC_MSG_CHECKING(for long long off_t)
    31 diff -durN strace-4.5.19.orig/configure.ac strace-4.5.19/configure.ac
    32 --- strace-4.5.19.orig/configure.ac	2009-10-12 21:54:43.000000000 +0200
    33 +++ strace-4.5.19/configure.ac	2009-10-28 18:47:18.000000000 +0100
    34 @@ -187,6 +187,7 @@
    35  		  struct stat.st_level,
    36  		  struct stat.st_rdev])
    37  AC_STAT64
    38 +AC_STATFS64
    39  
    40  AC_TYPE_SIGNAL
    41  AC_TYPE_UID_T
    42 diff -durN strace-4.5.19.orig/file.c strace-4.5.19/file.c
    43 --- strace-4.5.19.orig/file.c	2009-10-21 15:44:04.000000000 +0200
    44 +++ strace-4.5.19/file.c	2009-10-28 18:47:18.000000000 +0100
    45 @@ -1688,7 +1688,7 @@
    46  	return 0;
    47  }
    48  
    49 -#ifdef LINUX
    50 +#ifdef HAVE_STATFS64
    51  static void
    52  printstatfs64(struct tcb *tcp, long addr)
    53  {