http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47032

           Summary: libgfortran references complex long double functions
                    missing on AIX
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: d...@gcc.gnu.org


ld: 0711-317 ERROR: Undefined symbol: .__copysignl128
ld: 0711-317 ERROR: Undefined symbol: .__nextafterl128
ld: 0711-317 ERROR: Undefined symbol: .__scalbnl128
ld: 0711-317 ERROR: Undefined symbol: .__cabsl128
ld: 0711-317 ERROR: Undefined symbol: .__cargl128
ld: 0711-317 ERROR: Undefined symbol: .__truncl128

/*
 * There are two forms of long double on AIX.  The default
 * form of long double is the same as a double - 64 bits.  There
 * is a 128-bit form available with some compilers.  If that compiler
 * defines __LONGDOUBLE128, then long doubles are 128-bit instead of
 * 64-bit.  Since the same library routine cannot be used for 128-bit
 * and 64-bit values, the 128-bit routines are renamed and macros are
 * used to manage the name spaces.  It is not necessarily the case that
 * all of the 128-bit versions are available, but the macros are defined
 * intentionally since the 64-bit versions can provide incorrect results
 * when long double values were expected.  If 64-bit versions are required
 * in 128-bit mode, then the code needs to invoke the double routines a
 * rather than the long double routines.
 */

As the comment mentions, not all functions are available(!), but the functions
are redefined to prevent wrong results.

Reply via email to