From: Aleksej S. <as...@in...> - 2009-09-01 10:40:16
|
Sam Steingold <sd...@gn...> writes: > Aleksej Saushev wrote: >> >> cc -DHAVE_CONFIG_H -I. -I/tmp/wip/clisp/work/clisp/modules/syscalls/gllib -I.. -I/usr/pkg/include -I/usr/include -I/tmp/wip/clisp/work/clisp/src/gllib -O2 -mfpmath=sse -msse3 -march=nocona -finline-functions -fomit-frame-pointer -ffast-math -I/usr/pkg/include -I/usr/include -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type -Wmissing-declarations -Wno-sign-compare -Wno-format-nonliteral -O2 -fexpensive-optimizations -falign-functions=4 -DUNICODE -DDYNAMIC_FFI -DDYNAMIC_MODULES -I. -fPIC -I/tmp/wip/clisp/work/clisp/src/linkkit/.. -MT mktime.o -MD -MP -MF .deps/mktime.Tpo -c -o mktime.o /tmp/wip/clisp/work/clisp/modules/syscalls/gllib/mktime.c >> /tmp/wip/clisp/work/clisp/modules/syscalls/gllib/mktime.c: In function 'ydhms_diff': >> /tmp/wip/clisp/work/clisp/modules/syscalls/gllib/mktime.c:168: error: size of array 'a' is negative >> /tmp/wip/clisp/work/clisp/modules/syscalls/gllib/mktime.c: At top level: >> /tmp/wip/clisp/work/clisp/modules/syscalls/gllib/mktime.c:275: warning: no previous declaration for 'mktime_internal' >> >> NetBSD 5.99.15 i386. The problem relates possibly to 64-bit time_t (just a guess though). > > I think this is a bug in gnulib. > I think I have a fix. > Bruno refuses to apply it (he does not dispute that it is a fix, however he > does not believe it is "generally useful" or something like that). > it would be a huge help if you could verify that the fix is actually the right one. > specifically: > 1. do a fresh checkout (or "cvs up -C -A") > 2. try building in a clean build dir (./configure -cbc build-fail-before-patch > ...asau-options...), observe the above error. > 3. apply this patch: http://clisp.podval.org/gnulib-const-rename.patch > 4. try building in another clean dir with the exact same configure command > (./configure -cbc build-success-after-patch ...asau-options...), observe a > success (hopefully!) Unfortunatly, no success. The log is the same. "ydhms_diff" definition says: verify (long_int_year_and_yday_are_wide_enough, INT_MAX <= LONG_MAX / 2 || TIME_T_MAX <= UINT_MAX); System header files say: machine/ansi.h: #define _BSD_TIME_T_ __int64_t /* time() */ time.h: typedef _BSD_TIME_T_ time_t; machine/limits.h:#define UINT_MAX 0xffffffffU /* max value for an unsigned int */ My opinion is that assumption "TIME_T_MAX <= UINT_MAX" is broken, there's no reason why it should be that way. If you want unsigned integer supertype to contain all possible time_t values, it is uintmax_t. -- CE3OH... |