bug-bash
[Top][All Lists]
Advanced

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

Re: check for strtoimax fails if strtoimax is a macro.


From: Bob Proulx
Subject: Re: check for strtoimax fails if strtoimax is a macro.
Date: Thu, 15 Sep 2005 22:43:35 -0600
User-agent: Mutt/1.5.9i

Steve Ellcey wrote:
> Machine: hppa1.1
> OS: hpux11.00
> 
> Description:
>       The check for strtoimax fails on HP-UX 11.00 because strtoimax
>       is defined in inttypes.h as a macro that calls __strtol or
>       __strtoll.  We get lucky when building bash with 32 bits and the
>       build still works but with a 64 bit build it fails.  On a 32 bit
>       build we see the odd effect of bash-3.0/lib/sh/strtomax.c
>       defining a __strtoll function instead of a strtomax function.

This is a well known and long time HP-UX inttypes.h bug.  The GNU
coreutils README file has this documentation dealing with it.

    ***********************
    HPUX 11.x build failure
    -----------------------

    A known problem exists when compiling on HPUX on both hppa and ia64
    in 64-bit mode (i.e. +DD64) on HP-UX 11.0, 11.11, and 11.23.  This
    is not due to a bug in the package but instead due to a bug in the
    system header file which breaks things in 64-bit mode.  The default
    compilation mode is 32-bit and the software compiles fine using the
    default mode.  To build this software in 64-bit mode you will need
    to fix the system /usr/include/inttypes.h header file.  After
    correcting that file the software also compiles fine in 64-bit mode.
    Here is one possible patch to correct the problem:

    --- /usr/include/inttypes.h.orig    Thu May 30 01:00:00 1996
    +++ /usr/include/inttypes.h Sun Mar 23 00:20:36 2003
    @@ -489 +489 @@
    -#ifndef __STDC_32_MODE__
    +#ifndef __LP64__

The problem is that the define splitting 32-bit and 64-bit prototypes
is reversed.

> Fix:
>       The fix would seem to be to improve the bash configure script to
>       take into account the fact that strtoimax might be a macro.

Perhaps.  But developing those configure tests and getting them right
for all platforms will be tricky while the system fix is very simple.
And fixing the inttypes.h file fixes all callers of it.

By the way...  Do you really need a 64-bit /bin/bash?  Your scripts
and command lines must be much larger than mine.  :-)

Bob




reply via email to

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