This is the mail archive of the libstdc++@sourceware.cygnus.com mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Building libstdc++-2.90.6 under AIX 4.2.1.0


I had the identical problem -- seems to be a template instantiation issue
with the compiler. I fixed it by explicitly specializing 'value' for these
types. Search in 'libstdc++-2.90.6/src/gen-num-limits.cc' for
'SPECIALIZE_EPSILON' and 'SPECIALIZE_ROUND_ERROR' and add the following code
snippets immediately after the specializations of float, double and long
double (the macros are undefined after they are used):

---------------------------- cut here -----------------------------
// These are to overcome some sort of template instantiation problem on the
AIX system
SPECIALIZE_EPSILON(bool, 0);
SPECIALIZE_EPSILON(char, 0);
SPECIALIZE_EPSILON(signed char, 0);
SPECIALIZE_EPSILON(unsigned char, 0);
SPECIALIZE_EPSILON(short, 0);
SPECIALIZE_EPSILON(unsigned short, 0);
SPECIALIZE_EPSILON(int, 0);
SPECIALIZE_EPSILON(unsigned int, 0);
SPECIALIZE_EPSILON(long, 0);
SPECIALIZE_EPSILON(unsigned long, 0);
---------------------------- cut here -----------------------------

---------------------------- cut here -----------------------------
// These are to overcome some sort of template instantiation problem on the
AIX system
SPECIALIZE_ROUND_ERROR(bool, 0);
SPECIALIZE_ROUND_ERROR(char, 0);
SPECIALIZE_ROUND_ERROR(signed char, 0);
SPECIALIZE_ROUND_ERROR(unsigned char, 0);
SPECIALIZE_ROUND_ERROR(short, 0);
SPECIALIZE_ROUND_ERROR(unsigned short, 0);
SPECIALIZE_ROUND_ERROR(int, 0);
SPECIALIZE_ROUND_ERROR(unsigned int, 0);
SPECIALIZE_ROUND_ERROR(long, 0);
SPECIALIZE_ROUND_ERROR(unsigned long, 0);
---------------------------- cut here -----------------------------

-- Matthew Brown

----- Original Message -----
From: JR <jrodriguez@comsci.liu.edu>
To: libstdc++ <libstdc++@sourceware.cygnus.com>
Sent: Monday, December 13, 1999 11:30 AM
Subject: Building libstdc++-2.90.6 under AIX 4.2.1.0


> I'm trying to build libstdc++-2.90.6 under AIX 4.2.1.0 using egcs
> 2.95.2.  I get the following errors:
>
> /bin/sh ../../libstdc++-2.90.6/mknumeric_limits `pwd`/..
> ../../libstdc++-2.90.6
> running mknumeric_limits
> ld: 0711-317 ERROR: Undefined symbol: value<bool>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<bool>::round_error
> ld: 0711-317 ERROR: Undefined symbol: value<char>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<char>::round_error
> ld: 0711-317 ERROR: Undefined symbol: value<signed char>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<signed char>::round_error
> ld: 0711-317 ERROR: Undefined symbol: value<unsigned char>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<unsigned char>::round_error
> ld: 0711-317 ERROR: Undefined symbol: value<short>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<short>::round_error
> ld: 0711-317 ERROR: Undefined symbol: value<unsigned short>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<unsigned short>::round_error
>
> ld: 0711-317 ERROR: Undefined symbol: value<int>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<int>::round_error
> ld: 0711-317 ERROR: Undefined symbol: value<unsigned int>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<unsigned int>::round_error
> ld: 0711-317 ERROR: Undefined symbol: value<long>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<long>::round_error
> ld: 0711-317 ERROR: Undefined symbol: value<unsigned long>::epsilon
> ld: 0711-317 ERROR: Undefined symbol: value<unsigned long>::round_error
> ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
> information.
> collect2: ld returned 8 exit status
> gen-num-limits failed to build, exiting.
>
>
>
> Is there a fix for this?
>
> Thanks in advance,
>
> J. Rodriguez.
>
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]