[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-wget] alpha release (1.13.4.56-620c) (was: [PATCH] gnutls.c: fi
From: |
Steven M. Schweda |
Subject: |
Re: [Bug-wget] alpha release (1.13.4.56-620c) (was: [PATCH] gnutls.c: fix infinite read timeout) |
Date: |
Wed, 23 May 2012 22:48:10 -0500 (CDT) |
> It's not really your fault, but the GNU regex code (lib/regcomp.c)
> has an annoying portability problem, because what could easily have been
> a compile-time decision was postponed until run-time. A good compiler
> complains about loss of significant bits when BITSET_WORD_BITS < 64:
>
> if (BITSET_WORD_BITS == 64)
> {
> dfa->word_char[0] = UINT64_C (0x03ff000000000000);
> dfa->word_char[1] = UINT64_C (0x07fffffe87fffffe);
>
> Not fatal, however, only annoying. (And, I claim, stupid. And
> relatively easy to fix, unless you _really_ like it the way it is, which
> seems to be the case for the GNU regex maintainer.)
Actually, on VAX (where a 64-bit integer type in unavailable), it's
fatal:
CC /decc /include = ([], [.VAX], [-.SRC.VAX], [-.VMS]) /prefix_library_entri
es = (all_entries, except = (getopt, optarg, opterr, optind, optopt)) /objec
t = [.VAX]REGEX.OBJ /define = (VMS, _POSIX_EXIT, OS_TYPE="""VMS VAX V7.3""" , -
"ENABLE_DEBUG" , "HAVE_LIBSSL", "ENABLE_NTLM" ) [-.LIB]REGEX.C
dfa->word_char[0] = UINT64_C (0x03ff000000000000);
..............................^
%CC-E-INTCONST, Ill-formed integer constant.
At line number 963 in SYS$SYSDEVICE:[UTILITY.SOURCE.WGET.WGET-1_
13_4_56-620C.LIB]REGCOMP.C;1.
dfa->word_char[1] = UINT64_C (0x07fffffe87fffffe);
..............................^
%CC-E-INTCONST, Ill-formed integer constant.
At line number 964 in SYS$SYSDEVICE:[UTILITY.SOURCE.WGET.WGET-1_
13_4_56-620C.LIB]REGCOMP.C;1.
> I assume that I'll find more problems as I try to get the new code
> into the VMS builders, but those are the ones which popped up first.
I'm such a pessimist. Actually, with a little adjustment to the
VMS-specific files, building on Alpha (and, I assume, on IA64 -- What
could go wrong?) seems to be ok. Even more amazingly, I seem to have
found a truly stupid-looking work-around for that
should-have-been-compile-time conditionality problem in the GNU regex
code on VAX:
# ifdef __VAX
# define UINT64_C(c) 0
Apparently, at least in some cases, one piece of truly stupid code can
cancel out another.
HAVE_FSEEKO and HAVE_FTELLO (also unavailable on VAX) seem to get
about as much respect as HAVE_SYS_SELECT_H and HAVE_SYS_SOCKET_H, but I
should be able to deal with that, too.
I haven't done any serious testing (just fetched a Web page on
Alpha), but, except for the problems previously reported, builds on VMS
should be possible.
------------------------------------------------------------------------
Steven M. Schweda address@hidden
382 South Warwick Street (+1) 651-699-9818
Saint Paul MN 55105-2547