Commit 441ad80a authored by Georg Koppen's avatar Georg Koppen Committed by Mike Perry
Browse files

Bug #9829.5: rebased patch 931043 to avoid breaking 64bit cross-compiled...

Bug #9829.5: rebased patch 931043 to avoid breaking 64bit cross-compiled builds due to wrong va_list handling
parent c068d531
Loading
Loading
Loading
Loading
+20 −49
Original line number Diff line number Diff line
@@ -3423,13 +3423,10 @@ AC_LANG_C

dnl **********************
dnl *** va_copy checks ***
dnl **********************
dnl we currently check for all three va_copy possibilities, so we get
dnl all results in config.log for bug reports.
AC_MSG_CHECKING(for an implementation of va_copy())
AC_CACHE_VAL(ac_cv_va_copy,[
    AC_TRY_RUN([
        #include <stdarg.h>
AC_CACHE_CHECK([for an implementation of va_copy()],
               ac_cv_va_copy,
    [AC_TRY_COMPILE([#include <stdarg.h>
                     #include <stdlib.h>
        void f (int i, ...) {
            va_list args1, args2;
            va_start (args1, i);
@@ -3437,37 +3434,16 @@ AC_CACHE_VAL(ac_cv_va_copy,[
            if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
                exit (1);
            va_end (args1); va_end (args2);
        }
        int main() { f (0, 42); return 0; }],
        ac_cv_va_copy=yes,
        ac_cv_va_copy=no,
        ac_cv_va_copy=no
    )
])
AC_MSG_RESULT($ac_cv_va_copy)
AC_MSG_CHECKING(for an implementation of __va_copy())
AC_CACHE_VAL(ac_cv___va_copy,[
    AC_TRY_RUN([
        #include <stdarg.h>
        void f (int i, ...) {
            va_list args1, args2;
            va_start (args1, i);
            __va_copy (args2, args1);
            if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
                exit (1);
            va_end (args1); va_end (args2);
        }
        int main() { f (0, 42); return 0; }],
        ac_cv___va_copy=yes,
        ac_cv___va_copy=no,
        ac_cv___va_copy=no
        }],
        [f(0, 42); return 0],
        [ac_cv_va_copy=yes],
        [ac_cv_va_copy=no]
    )]
)
])
AC_MSG_RESULT($ac_cv___va_copy)
AC_MSG_CHECKING(whether va_lists can be copied by value)
AC_CACHE_VAL(ac_cv_va_val_copy,[
    AC_TRY_RUN([
        #include <stdarg.h>
AC_CACHE_CHECK([whether va_list can be copied by value],
               ac_cv_va_val_copy,
    [AC_TRY_COMPILE([#include <stdarg.h>
                     #include <stdlib.h>
        void f (int i, ...) {
            va_list args1, args2;
            va_start (args1, i);
@@ -3475,25 +3451,20 @@ AC_CACHE_VAL(ac_cv_va_val_copy,[
            if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
                exit (1);
            va_end (args1); va_end (args2);
        }
        int main() { f (0, 42); return 0; }],
        ac_cv_va_val_copy=yes,
        ac_cv_va_val_copy=no,
        ac_cv_va_val_copy=yes
        }],
        [f(0, 42); return 0],
        [ac_cv_va_val_copy=yes],
        [ac_cv_va_val_copy=no],
    )]
)
])
if test "x$ac_cv_va_copy" = "xyes"; then
    AC_DEFINE(VA_COPY, va_copy)
    AC_DEFINE(HAVE_VA_COPY)
elif test "x$ac_cv___va_copy" = "xyes"; then
    AC_DEFINE(VA_COPY, __va_copy)
    AC_DEFINE(HAVE_VA_COPY)
fi

if test "x$ac_cv_va_val_copy" = "xno"; then
   AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
fi
AC_MSG_RESULT($ac_cv_va_val_copy)

dnl ===================================================================
dnl ========================================================
+20 −48
Original line number Diff line number Diff line
@@ -2785,12 +2785,10 @@ AC_LANG_C
dnl **********************
dnl *** va_copy checks ***
dnl **********************
dnl we currently check for all three va_copy possibilities, so we get
dnl all results in config.log for bug reports.
AC_MSG_CHECKING(for an implementation of va_copy())
AC_CACHE_VAL(ac_cv_va_copy,[
    AC_TRY_RUN([
        #include <stdarg.h>
AC_CACHE_CHECK([for an implementation of va_copy()],
               ac_cv_va_copy,
    [AC_TRY_COMPILE([#include <stdarg.h>
                     #include <stdlib.h>
        void f (int i, ...) {
            va_list args1, args2;
            va_start (args1, i);
@@ -2798,37 +2796,16 @@ AC_CACHE_VAL(ac_cv_va_copy,[
            if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
                exit (1);
            va_end (args1); va_end (args2);
        }
        int main() { f (0, 42); return 0; }],
        ac_cv_va_copy=yes,
        ac_cv_va_copy=no,
        ac_cv_va_copy=no
    )
])
AC_MSG_RESULT($ac_cv_va_copy)
AC_MSG_CHECKING(for an implementation of __va_copy())
AC_CACHE_VAL(ac_cv___va_copy,[
    AC_TRY_RUN([
        #include <stdarg.h>
        void f (int i, ...) {
            va_list args1, args2;
            va_start (args1, i);
            __va_copy (args2, args1);
            if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
                exit (1);
            va_end (args1); va_end (args2);
        }
        int main() { f (0, 42); return 0; }],
        ac_cv___va_copy=yes,
        ac_cv___va_copy=no,
        ac_cv___va_copy=no
        }],
        [f(0, 42); return 0],
        [ac_cv_va_copy=yes],
        [ac_cv_va_copy=no]
    )]
)
])
AC_MSG_RESULT($ac_cv___va_copy)
AC_MSG_CHECKING(whether va_lists can be copied by value)
AC_CACHE_VAL(ac_cv_va_val_copy,[
    AC_TRY_RUN([
        #include <stdarg.h>
AC_CACHE_CHECK([whether va_list can be copied by value],
               ac_cv_va_val_copy,
    [AC_TRY_COMPILE([#include <stdarg.h>
                     #include <stdlib.h>
        void f (int i, ...) {
            va_list args1, args2;
            va_start (args1, i);
@@ -2836,25 +2813,20 @@ AC_CACHE_VAL(ac_cv_va_val_copy,[
            if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
                exit (1);
            va_end (args1); va_end (args2);
        }
        int main() { f (0, 42); return 0; }],
        ac_cv_va_val_copy=yes,
        ac_cv_va_val_copy=no,
        ac_cv_va_val_copy=yes
        }],
        [f(0, 42); return 0],
        [ac_cv_va_val_copy=yes],
        [ac_cv_va_val_copy=no],
    )]
)
])
if test "x$ac_cv_va_copy" = "xyes"; then
    AC_DEFINE(VA_COPY, va_copy)
    AC_DEFINE(HAVE_VA_COPY)
elif test "x$ac_cv___va_copy" = "xyes"; then
    AC_DEFINE(VA_COPY, __va_copy)
    AC_DEFINE(HAVE_VA_COPY)
fi

if test "x$ac_cv_va_val_copy" = "xno"; then
   AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
fi
AC_MSG_RESULT($ac_cv_va_val_copy)

dnl ===================================================================
dnl ========================================================