httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Glenn Strauss <>
Subject Re: Windows IA64 builds
Date Mon, 13 Sep 2004 06:19:20 GMT
On Mon, Sep 13, 2004 at 12:09:20AM -0500, William A. Rowe, Jr. wrote:
> At 05:05 PM 9/12/2004, you wrote:
> >-AP_DECLARE(long) ap_get_client_block(request_rec *r, char *buffer, apr_size_t bufsiz);
> >+AP_DECLARE(apr_ssize_t) ap_get_client_block(request_rec *r, char *buffer, apr_size_t
> >
> >Don't know why long was used here, but it causes a warning
> >for Windows IA64 build since long is 32 bits. I'm wondering
> >however if there are any other 64 bit platforms that also have
> >32 bit longs that have ignored this warning. Hopefully not
> >and therefore this would be safe for backport to 2.0. Anyone
> >have information to the contrary?
> On (most/all?) unixes - sizeof(long) == sizeof(void*).

Yes, AFAIK all contemporary unices are LP32, ILP32 (most common),
or LP64 ABIs.  Standard and very predictable and largely compatible
(with the exception of (long double) which is implemented by some
vendors as IEEE Quad and others as IEEE Double-Extended.)

The Open Group has a nice paper out on the subject:
and compares LP64 to other 64-bit models, including ILP64
and LLP64, the one which Win64 follows.

> On Win64, we have sizeof(long) < sizeof(void*).  That's the
> discrepancy you are observing, and why it wasn't recognized.

The WINE dev list had this to contribute, including some GCC compiler
switches to help ease the pain:
Thread begins here:


View raw message