libgfortran.h (_POSIX): Define if __MINGW32__ is defined.
2010-03-08 Kai TIetz <kai.tietz@onevision.com> PR/42950 * libgfortran.h (_POSIX): Define if __MINGW32__ is defined. (gfc_printf): Define to gnu_printf for __MINGW32__ case, otherwise to __printf__. (gfc_strtof,gfc_strtod,gfc_strtold): Define for mingw case to POSIX compatible converter functions. (runtime_error): Use instead gfc_printf as formatter attribute name. (runtime_error_at): Likewise. (runtime_warning_at): Likewise. (st_printf): Likewise. * intrinsics/date_and_time.c (localtime_r): Undefine possible defined macro. (gmtime_r): Likewise. * io/read.c (convert_real): Use gfc_strtof, gfc_strtod, and gfc_strtold. From-SVN: r157271
This commit is contained in:
parent
4bdd4fc006
commit
196c8bc8a3
|
@ -1,3 +1,22 @@
|
||||||
|
2010-03-08 Kai TIetz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
|
PR/42950
|
||||||
|
* libgfortran.h (_POSIX): Define if __MINGW32__ is defined.
|
||||||
|
(gfc_printf): Define to gnu_printf for __MINGW32__ case,
|
||||||
|
otherwise to __printf__.
|
||||||
|
(gfc_strtof,gfc_strtod,gfc_strtold): Define for mingw case
|
||||||
|
to POSIX compatible converter functions.
|
||||||
|
(runtime_error): Use instead gfc_printf as formatter
|
||||||
|
attribute name.
|
||||||
|
(runtime_error_at): Likewise.
|
||||||
|
(runtime_warning_at): Likewise.
|
||||||
|
(st_printf): Likewise.
|
||||||
|
* intrinsics/date_and_time.c (localtime_r): Undefine
|
||||||
|
possible defined macro.
|
||||||
|
(gmtime_r): Likewise.
|
||||||
|
* io/read.c (convert_real): Use gfc_strtof, gfc_strtod,
|
||||||
|
and gfc_strtold.
|
||||||
|
|
||||||
2010-02-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
2010-02-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
PR libfortran/43155
|
PR libfortran/43155
|
||||||
|
|
|
@ -55,6 +55,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
thread-local storage so they are threadsafe. */
|
thread-local storage so they are threadsafe. */
|
||||||
|
|
||||||
#ifndef HAVE_LOCALTIME_R
|
#ifndef HAVE_LOCALTIME_R
|
||||||
|
/* If _POSIX is defined localtime_r gets defined by mingw-w64 headers. */
|
||||||
|
#ifdef localtime_r
|
||||||
|
#undef localtime_r
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct tm *
|
static struct tm *
|
||||||
localtime_r (const time_t * timep, struct tm * result)
|
localtime_r (const time_t * timep, struct tm * result)
|
||||||
{
|
{
|
||||||
|
@ -64,6 +69,11 @@ localtime_r (const time_t * timep, struct tm * result)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_GMTIME_R
|
#ifndef HAVE_GMTIME_R
|
||||||
|
/* If _POSIX is defined gmtime_r gets defined by mingw-w64 headers. */
|
||||||
|
#ifdef gmtime_r
|
||||||
|
#undef gmtime_r
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct tm *
|
static struct tm *
|
||||||
gmtime_r (const time_t * timep, struct tm * result)
|
gmtime_r (const time_t * timep, struct tm * result)
|
||||||
{
|
{
|
||||||
|
|
|
@ -144,25 +144,25 @@ convert_real (st_parameter_dt *dtp, void *dest, const char *buffer, int length)
|
||||||
case 4:
|
case 4:
|
||||||
*((GFC_REAL_4*) dest) =
|
*((GFC_REAL_4*) dest) =
|
||||||
#if defined(HAVE_STRTOF)
|
#if defined(HAVE_STRTOF)
|
||||||
strtof (buffer, NULL);
|
gfc_strtof (buffer, NULL);
|
||||||
#else
|
#else
|
||||||
(GFC_REAL_4) strtod (buffer, NULL);
|
(GFC_REAL_4) gfc_strtod (buffer, NULL);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
*((GFC_REAL_8*) dest) = strtod (buffer, NULL);
|
*((GFC_REAL_8*) dest) = gfc_strtod (buffer, NULL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if defined(HAVE_GFC_REAL_10) && defined (HAVE_STRTOLD)
|
#if defined(HAVE_GFC_REAL_10) && defined (HAVE_STRTOLD)
|
||||||
case 10:
|
case 10:
|
||||||
*((GFC_REAL_10*) dest) = strtold (buffer, NULL);
|
*((GFC_REAL_10*) dest) = gfc_strtold (buffer, NULL);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_GFC_REAL_16) && defined (HAVE_STRTOLD)
|
#if defined(HAVE_GFC_REAL_16) && defined (HAVE_STRTOLD)
|
||||||
case 16:
|
case 16:
|
||||||
*((GFC_REAL_16*) dest) = strtold (buffer, NULL);
|
*((GFC_REAL_16*) dest) = gfc_strtold (buffer, NULL);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,15 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
#ifndef LIBGFOR_H
|
#ifndef LIBGFOR_H
|
||||||
#define LIBGFOR_H
|
#define LIBGFOR_H
|
||||||
|
|
||||||
|
/* Ensure that ANSI conform stdio is used. This needs to be set before
|
||||||
|
any system header file is included. */
|
||||||
|
#if defined __MINGW32__
|
||||||
|
# define _POSIX 1
|
||||||
|
# define gfc_printf gnu_printf
|
||||||
|
#else
|
||||||
|
# define gfc_printf __printf__
|
||||||
|
#endif
|
||||||
|
|
||||||
/* config.h MUST be first because it can affect system headers. */
|
/* config.h MUST be first because it can affect system headers. */
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
@ -37,6 +46,19 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
extern float __strtof (const char *, char **);
|
||||||
|
#define gfc_strtof __strtof
|
||||||
|
extern double __strtod (const char *, char **);
|
||||||
|
#define gfc_strtod __strtod
|
||||||
|
extern long double __strtold (const char *, char **);
|
||||||
|
#define gfc_strtold __strtold
|
||||||
|
#else
|
||||||
|
#define gfc_strtof strtof
|
||||||
|
#define gfc_strtod strtod
|
||||||
|
#define gfc_strtold strtold
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HAVE_COMPLEX_H
|
#if HAVE_COMPLEX_H
|
||||||
# include <complex.h>
|
# include <complex.h>
|
||||||
#else
|
#else
|
||||||
|
@ -703,15 +725,15 @@ extern void show_locus (st_parameter_common *);
|
||||||
internal_proto(show_locus);
|
internal_proto(show_locus);
|
||||||
|
|
||||||
extern void runtime_error (const char *, ...)
|
extern void runtime_error (const char *, ...)
|
||||||
__attribute__ ((noreturn, format (printf, 1, 2)));
|
__attribute__ ((noreturn, format (gfc_printf, 1, 2)));
|
||||||
iexport_proto(runtime_error);
|
iexport_proto(runtime_error);
|
||||||
|
|
||||||
extern void runtime_error_at (const char *, const char *, ...)
|
extern void runtime_error_at (const char *, const char *, ...)
|
||||||
__attribute__ ((noreturn, format (printf, 2, 3)));
|
__attribute__ ((noreturn, format (gfc_printf, 2, 3)));
|
||||||
iexport_proto(runtime_error_at);
|
iexport_proto(runtime_error_at);
|
||||||
|
|
||||||
extern void runtime_warning_at (const char *, const char *, ...)
|
extern void runtime_warning_at (const char *, const char *, ...)
|
||||||
__attribute__ ((format (printf, 2, 3)));
|
__attribute__ ((format (gfc_printf, 2, 3)));
|
||||||
iexport_proto(runtime_warning_at);
|
iexport_proto(runtime_warning_at);
|
||||||
|
|
||||||
extern void internal_error (st_parameter_common *, const char *)
|
extern void internal_error (st_parameter_common *, const char *)
|
||||||
|
@ -795,7 +817,7 @@ extern int unit_to_fd (int);
|
||||||
internal_proto(unit_to_fd);
|
internal_proto(unit_to_fd);
|
||||||
|
|
||||||
extern int st_printf (const char *, ...)
|
extern int st_printf (const char *, ...)
|
||||||
__attribute__ ((format (printf, 1, 2)));
|
__attribute__ ((format (gfc_printf, 1, 2)));
|
||||||
internal_proto(st_printf);
|
internal_proto(st_printf);
|
||||||
|
|
||||||
extern int st_vprintf (const char *, va_list);
|
extern int st_vprintf (const char *, va_list);
|
||||||
|
|
Loading…
Reference in New Issue