mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-26 12:23:59 +08:00
PR modula2/115276 bugfix libgm2 wraptime.InitTM returns NIL
This patch fixes libgm2/libm2iso/wraptime.cc:InitTM so that it does not always return NULL. The incorrect autoconf macro was used (inside InitTM) and the function short circuited to return NULL. The fix is to use HAVE_SYS_TIME_H and use AC_HEADER_TIME in libgm2/configure.ac. libgm2/ChangeLog: PR modula2/115276 * config.h.in: Regenerate. * configure: Regenerate. * configure.ac: Use AC_HEADER_TIME. * libm2iso/wraptime.cc (InitTM): Check HAVE_SYS_TIME_H before using struct tm to obtain the size. gcc/testsuite/ChangeLog: PR modula2/115276 * gm2/isolib/run/pass/testinittm.mod: New test. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
This commit is contained in:
parent
547143df5a
commit
d1a1f7e9f0
17
gcc/testsuite/gm2/isolib/run/pass/testinittm.mod
Normal file
17
gcc/testsuite/gm2/isolib/run/pass/testinittm.mod
Normal file
@ -0,0 +1,17 @@
|
||||
MODULE testinittm ;
|
||||
|
||||
FROM wraptime IMPORT InitTM, tm ;
|
||||
FROM libc IMPORT printf, exit ;
|
||||
|
||||
VAR
|
||||
m: tm ;
|
||||
BEGIN
|
||||
m := InitTM () ;
|
||||
IF m = NIL
|
||||
THEN
|
||||
printf ("InitTM failed\n");
|
||||
exit (1)
|
||||
ELSE
|
||||
printf ("InitTM passed\n")
|
||||
END
|
||||
END testinittm.
|
@ -335,6 +335,9 @@
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#undef TIME_WITH_SYS_TIME
|
||||
|
||||
/* Enable extensions on AIX 3, Interix. */
|
||||
#ifndef _ALL_SOURCE
|
||||
# undef _ALL_SOURCE
|
||||
|
39
libgm2/configure
vendored
39
libgm2/configure
vendored
@ -6837,6 +6837,41 @@ $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
|
||||
$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
|
||||
if ${ac_cv_header_time+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <time.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
if ((struct tm *) 0)
|
||||
return 0;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
ac_cv_header_time=yes
|
||||
else
|
||||
ac_cv_header_time=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
|
||||
$as_echo "$ac_cv_header_time" >&6; }
|
||||
if test $ac_cv_header_time = yes; then
|
||||
|
||||
$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "math.h" "ac_cv_header_math_h" "$ac_includes_default"
|
||||
if test "x$ac_cv_header_math_h" = xyes; then :
|
||||
|
||||
@ -14544,7 +14579,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 14547 "configure"
|
||||
#line 14582 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -14650,7 +14685,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 14653 "configure"
|
||||
#line 14688 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
@ -88,6 +88,7 @@ AC_ARG_WITH(cross-host,
|
||||
# Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_HEADER_SYS_WAIT
|
||||
AC_HEADER_TIME
|
||||
AC_CHECK_HEADER([math.h],
|
||||
[AC_DEFINE([HAVE_MATH_H], [1], [have math.h])])
|
||||
|
||||
|
@ -113,7 +113,7 @@ EXPORT(KillTimezone) (struct timezone *tv)
|
||||
|
||||
/* InitTM - returns a newly created opaque type. */
|
||||
|
||||
#if defined(HAVE_STRUCT_TM) && defined(HAVE_MALLOC_H)
|
||||
#if defined(HAVE_SYS_TIME_H) && defined(HAVE_MALLOC_H)
|
||||
extern "C" struct tm *
|
||||
EXPORT(InitTM) (void)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user