[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
textutils 64bit on HPUX 11?
From: |
Robert A Nesius |
Subject: |
textutils 64bit on HPUX 11? |
Date: |
Wed, 18 Jul 2001 18:44:40 -0700 (PDT) |
Has anyone successfully built textutils with large file support
(64-bit) on HPUX 11.00? I've been working on this for awhile and the build
fails in a few places with the following error:
/opt/ansic/bin/cc -DLOCALEDIR=\"/usr/intel/00r1/share/locale\" -DHAVE_CONFIG_H
-I.. -I. -I../lib -I../intl +DA2.0W -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -Ae -O -D_HPUX_SOURCE -DSYSV -c csplit.c
/opt/ansic/bin/cc +DA2.0W -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Ae -O
-D_HPUX_SOURCE -DSYSV -o csplit csplit.o ../intl/libintl.a ../lib/libtu.a
ld: Unsatisfied symbol "__strtoull" in file ../lib/libtu.a[xstrtoumax.o]
1 errors.
gmake[2]: *** [csplit] Error 1
gmake[2]: Leaving directory
`/fs29/comp.apps.3/00r1.builds/rnesius/textutils/textutils-2.0/src'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory
`/fs29/comp.apps.3/00r1.builds/rnesius/textutils/textutils-2.0'
gmake: *** [all-recursive-am] Error 2
The 32-bit build of this tool succeeds. It looks like the
32-bit libc* files have this symbol in them.
libc.0
__strtoull | 827232|extern|entry |
__strtoull | 827288|extern|code |$CODE$
libc.1
__strtoull | 827232|extern|entry |
__strtoull | 827288|extern|code |$CODE$
libc.2
__strtoull | 804428|extern|entry |
__strtoull | 804484|extern|code |$CODE$
libc.a
S$3$__strtoull | 1416|static|data |$LIT$
__strtoull | 0|extern|entry |$CODE$
libc.sl
__strtoull | 804428|extern|entry |
__strtoull | 804484|extern|code |$CODE$
libc_r.sl
__strtoull | 827232|extern|entry |
__strtoull | 827288|extern|code |$CODE$
But the 64-bit versions do not...
libc.2
libc.a
libc.sl
libcl.2
libcl.a
libcl.sl
(above output the result of nm <file> | grep __strtoull )
I noticed it seems the following code (obtained from the C preprocessor)
is the problem.
> strtol_error
> xstrtoumax (const char *s, char **ptr, int strtol_base,
> uintmax_t *val, const char *valid_suffixes)
> {
> char *t_ptr;
> char **p;
> uintmax_t tmp;
>
> ((0 <= strtol_base && strtol_base <= 36) ? (void)0 : __assert("0 <=
> strtol_base && strtol_base <= 36", "xstrtol.c", 123)) ;
>
> p = (ptr ? ptr : &t_ptr);
>
> if (! (! ((uintmax_t) 0 < (uintmax_t) -1)) )
> {
> const char *q = s;
> while ((1 && (__SB_masks ? __SB_masks[(unsigned char) *q] & 0x200 :
> _isspace((unsigned char) *q))) )
>
> ++q;
> if (*q == '-')
> return LONGINT_INVALID;
>
> }
>
> errno = 0;
> tmp = __strtoull(s, p, strtol_base) ; /* THIS LINE */
> if (errno != 0)
> return LONGINT_OVERFLOW;
> if (*p == s)
> return LONGINT_INVALID;
...
which comes from xstrtol.c
> errno = 0;
> tmp = __strtol (s, p, strtol_base);
> if (errno != 0)
> return LONGINT_OVERFLOW;
xstrtoumax.c >redfines __strtol like so:
>#define __strtol strtoumax
>#define __strtol_t uintmax_t
>#define __xstrtol xstrtoumax
>#include "xstrtol.c"
>
But I can't find where strtoumax is redefined as __strtoull
(or anything else).
I do see:
[phpc0093]-> lib 720> grep strtoull *.c
strtol.c:/* Nonzero if we are defining `strtoul' or `strtoull', operating on
strtol.c:# define strtol __strtoull_l
strtol.c:# define strtol strtoull
strtol.c:/* If QUAD is defined, we are defining `strtoll' or `strtoull',
strtoull.c:strong_alias (__strtoull_internal, __strtouq_internal)
strtoull.c:weak_alias (strtoull, strtouq)
strtoumax.c: unsigned long long strtoull PARAMS ((char const *, char **, int));
strtoumax.c: USE_IF_EQUIVALENT (strtoull)
xstrtoul.c:#include "strtoull.c"
I can't complete a sequesce of #defines that leads me to __strtoull. It's
driving me nuts. Any ideas?
Thanks much!
-Rob
--
#include <sig.h>
------------------------------------------------------------------
Robert Nesius address@hidden 503.712.2181
DPG Engineering Computing SW Applications Team
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- textutils 64bit on HPUX 11?,
Robert A Nesius <=