]> granicus.if.org Git - strace/blobdiff - aclocal.m4
Fix signed/unsigned problems
[strace] / aclocal.m4
index 93d880eb48cc6c4e01f49d7836f476f89baf9cd5..c9e6ab1c8113938ae08e631654fb6e3004780128 100644 (file)
@@ -208,7 +208,13 @@ AC_DEFUN(AC_STRUCT_PR_SYSCALL,
 [AC_MSG_CHECKING(for pr_syscall in struct prstatus)
 AC_CACHE_VAL(ac_cv_struct_pr_syscall,
 [AC_TRY_COMPILE([#include <sys/procfs.h>],
-[struct prstatus s; s.pr_syscall;],
+[#ifdef HAVE_MP_PROCFS
+pstatus_t s;
+s.pr_lwp.pr_syscall
+#else
+prstatus_t s;
+s.pr_syscall
+#endif],
 ac_cv_struct_pr_syscall=yes,
 ac_cv_struct_pr_syscall=no)])
 AC_MSG_RESULT($ac_cv_struct_pr_syscall)
@@ -233,6 +239,21 @@ then
 fi
 ])
 
+dnl ### A macro to detect the presence of the siginfo_t in signal.h
+AC_DEFUN(AC_SIGINFO_T,
+[AC_MSG_CHECKING(for siginfo_t in signal.h)
+AC_CACHE_VAL(ac_cv_siginfo_t,
+[AC_TRY_COMPILE([#include <signal.h>],
+[siginfo_t x;],
+ac_cv_siginfo_t=yes,
+ac_cv_siginfo_t=no)])
+AC_MSG_RESULT($ac_cv_siginfo_t)
+if test "$ac_cv_siginfo_t" = yes
+then
+       AC_DEFINE(HAVE_SIGINFO_T)
+fi
+])
+
 dnl ### A macro to determine if sys_errlist is declared.
 AC_DEFUN(AC_DECL_SYS_ERRLIST,
 [AC_MSG_CHECKING([for sys_errlist declaration])
@@ -287,9 +308,13 @@ fi
 
 dnl ### A macro to determine whether stat64 is defined.
 AC_DEFUN(AC_STAT64,
-[AC_MSG_CHECKING(for stat64 in asm/stat.h)
+[AC_MSG_CHECKING(for stat64 in (asm|sys)/stat.h)
 AC_CACHE_VAL(ac_cv_type_stat64,
-[AC_TRY_COMPILE([#include <asm/stat.h>],
+[AC_TRY_COMPILE([#ifdef linux
+#include <asm/stat.h>
+#else
+#include <sys/stat.h>
+#endif],
 [struct stat64 st;],
 ac_cv_type_stat64=yes,
 ac_cv_type_stat64=no)])
@@ -315,6 +340,56 @@ then
 fi
 ])
 
+dnl ### A macro to determine if off_t is a long long
+AC_DEFUN(AC_OFF_T_IS_LONG_LONG,
+[AC_MSG_CHECKING(for long long off_t)
+AC_CACHE_VAL(ac_cv_have_long_long_off_t,
+[AC_TRY_RUN([#include <sys/types.h>
+main () {
+       if (sizeof (off_t) == sizeof (long long) &&
+           sizeof (off_t) > sizeof (long))
+           return 0;
+       return 1;
+}
+],
+ac_cv_have_long_long_off_t=yes,
+ac_cv_have_long_long_off_t=no,
+[# Should try to guess here
+ac_cv_have_long_long_off_t=no
+])])
+AC_MSG_RESULT($ac_cv_have_long_long_off_t)
+if test "$ac_cv_have_long_long_off_t" = yes
+then
+       AC_DEFINE(HAVE_LONG_LONG_OFF_T)
+fi
+])
+
+dnl ### A macro to determine if rlim_t is a long long
+AC_DEFUN(AC_RLIM_T_IS_LONG_LONG,
+[AC_MSG_CHECKING(for long long rlim_t)
+AC_CACHE_VAL(ac_cv_have_long_long_rlim_t,
+[AC_TRY_RUN([#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+main () {
+       if (sizeof (rlim_t) == sizeof (long long) &&
+           sizeof (rlim_t) > sizeof (long))
+           return 0;
+       return 1;
+}
+],
+ac_cv_have_long_long_rlim_t=yes,
+ac_cv_have_long_long_rlim_t=no,
+[# Should try to guess here
+ac_cv_have_long_long_rlim_t=no
+])])
+AC_MSG_RESULT($ac_cv_have_long_long_rlim_t)
+if test "$ac_cv_have_long_long_rlim_t" = yes
+then
+       AC_DEFINE(HAVE_LONG_LONG_RLIM_T)
+fi
+])
+
 dnl ### A macro to determine whether sin6_scope_id is available.
 AC_DEFUN(AC_SIN6_SCOPE_ID,
 [AC_MSG_CHECKING(for sin6_scope_id in sockaddr_in6)
@@ -341,3 +416,111 @@ else
 fi
 ])
 
+dnl ### A macro to check for st_flags in struct stat
+AC_DEFUN(AC_ST_FLAGS,
+[AC_MSG_CHECKING(for st_flags in struct stat)
+AC_CACHE_VAL(ac_cv_have_st_flags,
+[AC_TRY_COMPILE([#include <sys/stat.h>],
+[struct stat buf;
+buf.st_flags = 0;],
+ac_cv_have_st_flags=yes,
+ac_cv_have_st_flags=no)])
+AC_MSG_RESULT($ac_cv_have_st_flags)
+if test "$ac_cv_have_st_flags" = yes
+then
+       AC_DEFINE(HAVE_ST_FLAGS)
+fi
+])
+
+dnl ### A macro to check for st_aclcnt in struct stat
+AC_DEFUN(AC_ST_ACLCNT,
+[AC_MSG_CHECKING(for st_aclcnt in struct stat)
+AC_CACHE_VAL(ac_cv_have_st_aclcnt,
+[AC_TRY_COMPILE([#include <sys/stat.h>],
+[struct stat buf;
+buf.st_aclcnt = 0;],
+ac_cv_have_st_aclcnt=yes,
+ac_cv_have_st_aclcnt=no)])
+AC_MSG_RESULT($ac_cv_have_st_aclcnt)
+if test "$ac_cv_have_st_aclcnt" = yes
+then
+       AC_DEFINE(HAVE_ST_ACLCNT)
+fi
+])
+
+dnl ### A macro to check for st_level in struct stat
+AC_DEFUN(AC_ST_LEVEL,
+[AC_MSG_CHECKING(for st_level in struct stat)
+AC_CACHE_VAL(ac_cv_have_st_level,
+[AC_TRY_COMPILE([#include <sys/stat.h>],
+[struct stat buf;
+buf.st_level = 0;],
+ac_cv_have_st_level=yes,
+ac_cv_have_st_level=no)])
+AC_MSG_RESULT($ac_cv_have_st_level)
+if test "$ac_cv_have_st_level" = yes
+then
+       AC_DEFINE(HAVE_ST_LEVEL)
+fi
+])
+
+dnl ### A macro to check for st_fstype in struct stat
+AC_DEFUN(AC_ST_FSTYPE,
+[AC_MSG_CHECKING(for st_fstype in struct stat)
+AC_CACHE_VAL(ac_cv_have_st_fstype,
+[AC_TRY_COMPILE([#include <sys/stat.h>],
+[struct stat buf;
+buf.st_fstype[0] = 0;],
+ac_cv_have_st_fstype=yes,
+ac_cv_have_st_fstype=no)])
+AC_MSG_RESULT($ac_cv_have_st_fstype)
+if test "$ac_cv_have_st_fstype" = yes
+then
+       AC_DEFINE(HAVE_ST_FSTYPE)
+fi
+])
+
+dnl ### A macro to check for st_gen in struct stat
+AC_DEFUN(AC_ST_GEN,
+[AC_MSG_CHECKING(for st_gen in struct stat)
+AC_CACHE_VAL(ac_cv_have_st_gen,
+[AC_TRY_COMPILE([#include <sys/stat.h>],
+[struct stat buf;
+buf.st_gen = 0;],
+ac_cv_have_st_gen=yes,
+ac_cv_have_st_gen=no)])
+AC_MSG_RESULT($ac_cv_have_st_gen)
+if test "$ac_cv_have_st_gen" = yes
+then
+       AC_DEFINE(HAVE_ST_GEN)
+fi
+])
+
+dnl ### A macro to determine endianness of long long
+AC_DEFUN(AC_LITTLE_ENDIAN_LONG_LONG,
+[AC_MSG_CHECKING(for little endian long long)
+AC_CACHE_VAL(ac_cv_have_little_endian_long_long,
+[AC_TRY_RUN([
+int main () {
+       union {
+               long long ll;
+               long l [2];
+       } u;
+       u.ll = 0x12345678;
+       if (u.l[0] == 0x12345678) 
+               return 0;
+       return 1;
+}
+],
+ac_cv_have_little_endian_long_long=yes,
+ac_cv_have_little_endian_long_long=no,
+[# Should try to guess here
+ac_cv_have_little_endian_long_long=no
+])])
+AC_MSG_RESULT($ac_cv_have_little_endian_long_long)
+if test "$ac_cv_have_little_endian_long_long" = yes
+then
+       AC_DEFINE(HAVE_LITTLE_ENDIAN_LONG_LONG)
+fi
+])
+