--- embedaddon/sudo/aclocal.m4 2012/02/21 16:23:01 1.1 +++ embedaddon/sudo/aclocal.m4 2013/07/22 10:46:10 1.1.1.4 @@ -1,6 +1,6 @@ dnl Local m4 macros for autoconf (used by sudo) dnl -dnl Copyright (c) 1994-1996, 1998-2005, 2007-2011 +dnl Copyright (c) 1994-1996, 1998-2005, 2007-2013 dnl Todd C. Miller dnl dnl XXX - should cache values in all cases!!! @@ -157,52 +157,6 @@ AC_DEFUN([SUDO_IO_LOGDIR], [ ])dnl dnl -dnl SUDO_CHECK_TYPE(TYPE, DEFAULT) -dnl XXX - should require the check for unistd.h... -dnl -AC_DEFUN([SUDO_CHECK_TYPE], -[AC_REQUIRE([AC_HEADER_STDC])dnl -AC_MSG_CHECKING(for $1) -AC_CACHE_VAL(sudo_cv_type_$1, -[AC_EGREP_CPP($1, [#include -#include -#if STDC_HEADERS -#include -#endif -#if HAVE_UNISTD_H -#include -#endif], sudo_cv_type_$1=yes, sudo_cv_type_$1=no)])dnl -AC_MSG_RESULT($sudo_cv_type_$1) -if test $sudo_cv_type_$1 = no; then - AC_DEFINE($1, $2, [Define if your system lacks the $1 type.]) -fi -]) - -dnl -dnl Check for size_t declation -dnl -AC_DEFUN([SUDO_TYPE_SIZE_T], -[SUDO_CHECK_TYPE(size_t, int)]) - -dnl -dnl Check for ssize_t declation -dnl -AC_DEFUN([SUDO_TYPE_SSIZE_T], -[SUDO_CHECK_TYPE(ssize_t, int)]) - -dnl -dnl Check for dev_t declation -dnl -AC_DEFUN([SUDO_TYPE_DEV_T], -[SUDO_CHECK_TYPE(dev_t, int)]) - -dnl -dnl Check for ino_t declation -dnl -AC_DEFUN([SUDO_TYPE_INO_T], -[SUDO_CHECK_TYPE(ino_t, unsigned int)]) - -dnl dnl check for working fnmatch(3) dnl AC_DEFUN([SUDO_FUNC_FNMATCH], @@ -217,6 +171,23 @@ AC_MSG_RESULT($sudo_cv_func_fnmatch) AS_IF([test $sudo_cv_func_fnmatch = yes], [$1], [$2])]) dnl +dnl Attempt to check for working PIE support. +dnl This is a bit of a hack but on Solaris 10 with GNU ld and GNU as +dnl we can end up with strange values from malloc(). +dnl A better check would be to verify that ASLR works with PIE. +dnl +AC_DEFUN([SUDO_WORKING_PIE], +[AC_MSG_CHECKING([for working PIE support]) +AC_CACHE_VAL(sudo_cv_working_pie, +[rm -f conftestdata; > conftestdata +AC_TRY_RUN(AC_INCLUDES_DEFAULT([]) +[main() { char *p = malloc(1024); if (p == NULL) return 1; memset(p, 0, 1024); return 0; }], [sudo_cv_working_pie=yes], [sudo_cv_working_pie=no], + [sudo_cv_working_pie=no]) +rm -f core core.* *.core]) +AC_MSG_RESULT($sudo_cv_working_pie) +AS_IF([test $sudo_cv_working_pie = yes], [$1], [$2])]) + +dnl dnl check for isblank(3) dnl AC_DEFUN([SUDO_FUNC_ISBLANK], @@ -231,6 +202,28 @@ AC_DEFUN([SUDO_FUNC_ISBLANK], fi ]) +AC_DEFUN([SUDO_CHECK_LIB], [ + _sudo_check_lib_extras=`echo "$5"|sed -e 's/[ ]*//g' -e 's/-l/_/g'` + AC_MSG_CHECKING([for $2 in -l$1${5+ }$5]) + AC_CACHE_VAL([sudo_cv_lib_$1''_$2$_sudo_check_lib_extras], [ + SUDO_CHECK_LIB_OLIBS="$LIBS" + LIBS="$LIBS -l$1${5+ }$5" + AC_LINK_IFELSE( + [AC_LANG_CALL([], [$2])], + [eval sudo_cv_lib_$1''_$2$_sudo_check_lib_extras=yes], + [eval sudo_cv_lib_$1''_$2$_sudo_check_lib_extras=no] + ) + LIBS="$SUDO_CHECK_LIB_OLIBS" + ]) + if eval test \$sudo_cv_lib_$1''_$2$_sudo_check_lib_extras = "yes"; then + AC_MSG_RESULT([yes]) + $3 + else + AC_MSG_RESULT([no]) + $4 + fi +]) + dnl dnl check unsetenv() return value dnl @@ -253,11 +246,29 @@ AC_DEFUN([SUDO_FUNC_UNSETENV_VOID], ]) dnl +dnl check putenv() argument for const +dnl +AC_DEFUN([SUDO_FUNC_PUTENV_CONST], +[AC_CACHE_CHECK([whether putenv takes a const argument], +sudo_cv_func_putenv_const, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT +int putenv(const char *string) {return 0;}], [])], + [sudo_cv_func_putenv_const=yes], + [sudo_cv_func_putenv_const=no]) + ]) + if test $sudo_cv_func_putenv_const = yes; then + AC_DEFINE(PUTENV_CONST, const, [Define to const if the `putenv' takes a const argument.]) + else + AC_DEFINE(PUTENV_CONST, []) + fi +]) + +dnl dnl check for sa_len field in struct sockaddr dnl AC_DEFUN([SUDO_SOCK_SA_LEN], [ AC_CHECK_MEMBER([struct sockaddr.sa_len], - [AC_DEFINE(HAVE_SA_LEN, 1, [Define if your struct sockadr has an sa_len field.])], + [AC_DEFINE(HAVE_STRUCT_SOCKADDR_SA_LEN, 1, [Define if your struct sockadr has an sa_len field.])], [], [ #include #include ] @@ -299,25 +310,40 @@ AC_DEFINE_UNQUOTED(MAX_UID_T_LEN, $sudo_cv_uid_t_len, ]) dnl -dnl append a libpath to an LDFLAGS style variable +dnl Append a libpath to an LDFLAGS style variable if not already present. +dnl Also appends to the _R version unless rpath is disabled. dnl AC_DEFUN([SUDO_APPEND_LIBPATH], [ - if test X"$with_rpath" = X"yes"; then - case "$host" in - *-*-hpux*) $1="${$1} -L$2 -Wl,+b,$2" - ;; - *) $1="${$1} -L$2 -Wl,-R$2" - ;; - esac - else - $1="${$1} -L$2" - fi - if test X"$blibpath" != X"" -a "$1" = "SUDO_LDFLAGS"; then - blibpath_add="${blibpath_add}:$2" - fi + case "${$1}" in + *"-L$2"|*"-L$2 ") + ;; + *) + $1="${$1} -L$2" + if test X"$enable_rpath" = X"yes"; then + $1_R="${$1_R} -R$2" + fi + ;; + esac ]) dnl +dnl Append a directory to CPPFLAGS if not already present. +dnl +AC_DEFUN([SUDO_APPEND_CPPFLAGS], [ + case "${CPPFLAGS}" in + *"$1"|*"$1 ") + ;; + *) + if test X"${CPPFLAGS}" = X""; then + CPPFLAGS="$1" + else + CPPFLAGS="${CPPFLAGS} $1" + fi + ;; + esac +]) + +dnl dnl Determine the mail spool location dnl NOTE: must be run *after* check for paths.h dnl @@ -370,8 +396,13 @@ EOF dnl dnl Pull in libtool macros dnl -m4_include([libtool.m4]) -m4_include([ltoptions.m4]) -m4_include([ltsugar.m4]) -m4_include([ltversion.m4]) -m4_include([lt~obsolete.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +dnl +dnl Pull in other non-standard macros +dnl +m4_include([m4/ax_check_compile_flag.m4]) +m4_include([m4/ax_check_link_flag.m4])