bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: stdint module on SGI


From: Bruno Haible
Subject: Re: stdint module on SGI
Date: Fri, 23 Jun 2006 23:00:28 +0200
User-agent: KMail/1.9.1

Hi Mark,

Mark D. Baushke wrote:
> The following two patches take a closer step toward making things work
> under the default c89 compiler on SGI boxes.

Thanks for suggesting these. But IRIX 6.5 has the types defined
in <sys/types.h> and <inttypes.h>, therefore maybe some earlier
version of IRIX had them only in <sys/types.h>? Therefore the appended
patch looks safer to me. I committed that.

> All files that #include <stdint.h> still get warnings like this one:
> 
> cc-1035 cc: WARNING File = /usr/include/stdint.h, Line = 5
>   #error directive:  This header file is to be used only for c99 mode
>           compilations
> 
>   #error This header file is to be used only for c99 mode compilations
>    ^
> 
> right now. It might be nice if just the existence of <stdint.h> did not
> imply that it was useful to the compiler...

Well, that's not the case currently: I assume that when you check
for <stdint.h> using autoconf's AC_CHECK_HEADERS, it will tell you that
the file exists? Hmm, is it nevertheless safe to leave this file aside
and do as you propose?

 #if @HAVE_STDINT_H@
   /* Other systems may have an incomplete <stdint.h>.  */
-# include @FULL_PATH_STDINT_H@
+# if !defined(__sgi) || address@hidden@
+#  include @FULL_PATH_STDINT_H@
+# endif
 #endif

> Given that a conforming C99 function <inttypes.h> is supposed to include
> <stdint.h>, I wonder if it makes sense to try to only #include
> <inttypes.h> and see if that works before attempting to try to #include
> <stdint.h> along with it.

"<inttypes.h> is supposed to include# <stdint.h>", but the reality is
different. <inttypes.h> was introduced several years earlier than
<stdint.h>.

Bruno


diff -c -3 -r1.18 stdint_.h
*** lib/stdint_.h       23 Jun 2006 14:58:59 -0000      1.18
--- lib/stdint_.h       23 Jun 2006 20:52:19 -0000
***************
*** 33,43 ****
  #if defined(__FreeBSD__) && (__FreeBSD__ >= 3) && (__FreeBSD__ <= 4)
  # include <sys/inttypes.h>
  #endif
! #if defined(__OpenBSD__)
    /* In OpenBSD 3.8, <sys/types.h> includes <machine/types.h>, which defines
       int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
       <inttypes.h> includes <machine/types.h> and also defines intptr_t and
       uintptr_t.  */
  # include <sys/types.h>
  # if @HAVE_INTTYPES_H@
  #  include @FULL_PATH_INTTYPES_H@
--- 33,45 ----
  #if defined(__FreeBSD__) && (__FreeBSD__ >= 3) && (__FreeBSD__ <= 4)
  # include <sys/inttypes.h>
  #endif
! #if defined(__OpenBSD__) || defined(__sgi)
    /* In OpenBSD 3.8, <sys/types.h> includes <machine/types.h>, which defines
       int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
       <inttypes.h> includes <machine/types.h> and also defines intptr_t and
       uintptr_t.  */
+   /* IRIX 6.5 has <inttypes.h>, and <sys/types.h> defines some of these
+      types as well.  */
  # include <sys/types.h>
  # if @HAVE_INTTYPES_H@
  #  include @FULL_PATH_INTTYPES_H@
diff -c -3 -r1.7 stdint.m4
*** m4/stdint.m4        19 Jun 2006 11:27:00 -0000      1.7
--- m4/stdint.m4        23 Jun 2006 20:52:19 -0000
***************
*** 1,4 ****
! # stdint.m4 serial 7
  dnl Copyright (C) 2001-2002, 2004-2006 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
--- 1,4 ----
! # stdint.m4 serial 8
  dnl Copyright (C) 2001-2002, 2004-2006 Free Software Foundation, Inc.
  dnl This file is free software; the Free Software Foundation
  dnl gives unlimited permission to copy and/or distribute it,
***************
*** 90,96 ****
  #if defined(__FreeBSD__) && (__FreeBSD__ >= 3) && (__FreeBSD__ <= 4)
  # include <sys/inttypes.h>
  #endif
! #if defined(__OpenBSD__)
  # include <sys/types.h>
  # if HAVE_INTTYPES_H
  #  include FULL_PATH_INTTYPES_H
--- 90,96 ----
  #if defined(__FreeBSD__) && (__FreeBSD__ >= 3) && (__FreeBSD__ <= 4)
  # include <sys/inttypes.h>
  #endif
! #if defined(__OpenBSD__) || defined(__sgi)
  # include <sys/types.h>
  # if HAVE_INTTYPES_H
  #  include FULL_PATH_INTTYPES_H




reply via email to

[Prev in Thread] Current Thread [Next in Thread]