m4-discuss
[Top][All Lists]
Advanced

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

Re: GNU M4 1.4.8b released (beta release)


From: Matthew Woehlke
Subject: Re: GNU M4 1.4.8b released (beta release)
Date: Fri, 02 Mar 2007 10:33:50 -0600
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.10) Gecko/20070221 Thunderbird/1.5.0.10 Mnenhy/0.7.4.0

Bruno Haible wrote:
Eric Blake wrote:
According to Matthew Woehlke on 3/1/2007 9:44 AM:
...it also seems to break tempname.c:

source='tempname.c' object='tempname.o' libtool=no \
        DEPDIR=.deps depmode=none /bin/sh ../depcomp \
        cc  -I.     -O -c tempname.c
          int64_t st_reserved[3];
          ^
"///usr/include/sys/stat.h", line 70: error(114): identifier "int64_t"
          is undefined
That makes it sound like we might be able to get away with a fix stdint_.h
to include sys/stat.h prior to redefining all the 64-bit type names, along
with any other system header that uses int64_t on your platform.

If you *really* wanted to do that, those would be sys/stat.h and sys/socket.h. So far I like Bruno's idea better.

Then there is netinet/in6.h which references both uint64_t and u_int64_t, neither of which appear outside that header. I guess it's safe to say that isn't used. :-)

Another option would be to leave int64_t defined as it is, but set HAVE_INT64_T
to 0, to indicate that gnulib shouldn't use it.

Hmm... this looks like it would fix sys/stat.h (see below). I'm still not sure I trust it. Will clock_t and fpos_t be defined correctly so as to not break system API's using these? Will gnulib behave correctly w.r.t. these?

But first, Matthew Woehlke should show enough info for analysis of possible
workarounds:
  - the relevant parts of sys/stat.h including all surrounding #ifs,

struct  stat {
...
        int64_t st_reserved[3];
}; /* struct stat */

...no #if's. In this case,

  - what is the original definition of int64_t on this OS if gnulib is not
    involved? (a macro, a typedef?)

sys/types.h has:

/*
 * In the OSS File System some of the definitions are 64-bit wide.
 * In Guardian C there is support of 64-bit wide variables declared
 * using long long.  To allow the same width on the workstation we will
 * use double.  The definition can be sourced in using the ifdef switch.
 */

#ifdef __TANDEM
#define int64_t long long
#else
typedef double  int64_t;
#endif

(__TANDEM is normally defined; the alternative is clearly a hack of sorts.)

Oh, and clock_t, dev_t and fpos_t are also 'long long', and 'long long' shows up in several places in socket code (not sure if that's an issue or not, since so far we aren't talking about any networking apps).

--
Matthew
"Have you tried that new mixed drink, 'GDR'"?
"What is it?"
"Gin, Duck and Rum. It tastes fowl."





reply via email to

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