Thread: compile warning in CVS HEAD

compile warning in CVS HEAD

From
Neil Conway
Date:
I get the following warning compiling CVS HEAD:

[neilc:/Users/neilc/pgsql]% make -C src/backend/utils/error all
[ ... ]
gcc -no-cpp-precomp -O0 -Winline -fno-strict-aliasing -g -Wall 
-Wmissing-prototypes -Wmissing-declarations -I../../../../src/include 
-I/sw/include  -c -o elog.o elog.c -MMD
elog.c: In function `log_line_prefix':
elog.c:1123: warning: passing arg 1 of `localtime' from incompatible 
pointer type

This is on Mac OSX 10.3 w/ gcc 3.3

-Neil



Re: compile warning in CVS HEAD

From
Tom Lane
Date:
Neil Conway <neilc@samurai.com> writes:
> I get the following warning compiling CVS HEAD:
> [neilc:/Users/neilc/pgsql]% make -C src/backend/utils/error all
> [ ... ]
> gcc -no-cpp-precomp -O0 -Winline -fno-strict-aliasing -g -Wall 
> -Wmissing-prototypes -Wmissing-declarations -I../../../../src/include 
> -I/sw/include  -c -o elog.o elog.c -MMD
> elog.c: In function `log_line_prefix':
> elog.c:1123: warning: passing arg 1 of `localtime' from incompatible 
> pointer type

Hm, looks like this code incorrectly assumes that the tv_sec field of
struct timeval is necessarily the same datatype as time_t.  I'd suggest
assigning session_start into a local time_t variable.
        regards, tom lane


Re: compile warning in CVS HEAD

From
Andrew Dunstan
Date:

Tom Lane wrote:

>Neil Conway <neilc@samurai.com> writes:
>  
>
>>I get the following warning compiling CVS HEAD:
>>[neilc:/Users/neilc/pgsql]% make -C src/backend/utils/error all
>>[ ... ]
>>gcc -no-cpp-precomp -O0 -Winline -fno-strict-aliasing -g -Wall 
>>-Wmissing-prototypes -Wmissing-declarations -I../../../../src/include 
>>-I/sw/include  -c -o elog.o elog.c -MMD
>>elog.c: In function `log_line_prefix':
>>elog.c:1123: warning: passing arg 1 of `localtime' from incompatible 
>>pointer type
>>    
>>
>
>Hm, looks like this code incorrectly assumes that the tv_sec field of
>struct timeval is necessarily the same datatype as time_t.  I'd suggest
>assigning session_start into a local time_t variable.
>

*sigh*

my local (linux) man for gettimeofday says this:
      struct timeval {              time_t         tv_sec;        /* seconds */              suseconds_t    tv_usec;
/*microseconds */      };
 

We could do what you say, or could we just cast it?

cheers

andrew





Re: compile warning in CVS HEAD

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> *sigh*

> my local (linux) man for gettimeofday says this:

>        struct timeval {
>                time_t         tv_sec;        /* seconds */
>                suseconds_t    tv_usec;  /* microseconds */
>        };

Yeah, but mine (HPUX) says that tv_sec is "unsigned long".  I suspect
that on Darwin the types disagree as to signedness.

> We could do what you say, or could we just cast it?

If they really were different types (as in different widths) then
casting the pointer would be a highly Wrong Thing.  I think copying
to a local is safer, even if it does waste a cycle or two.
        regards, tom lane