https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86599
--- Comment #13 from The Written Word <bugzilla-gcc at thewrittenword dot com> --- (In reply to The Written Word from comment #10) > (In reply to John David Anglin from comment #9) > > It would help to see the uses of long_double in stdlib.h. > > /usr/include/stdlib.h has: > > # ifndef _LONG_DOUBLE > # define _LONG_DOUBLE > # if !defined(__ia64) || !defined(_PROTOTYPES) || > defined(_LONG_DOUBLE_STRUCT) > typedef struct { > uint32_t word1, word2, word3, word4; > } long_double; > extern long_double strtold __((const char * __restrict, char ** __restrict)); > # else /* !__ia64 || !_PROTOTYPES || _LONG_DOUBLE_STRUCT */ > # ifdef _INCLUDE_HPUX_SOURCE > typedef long double long_double; > # endif /* _INCLUDE_HPUX_SOURCE */ > extern long double strtold __((const char * __restrict, char ** __restrict)); > # endif /* !__ia64 ||!_PROTOTYPES ||_LONG_DOUBLE_STRUCT */ > #endif /* _LONG_DOUBLE */ I think the problem on 11.31 is that the strtold() definition is in the above. We can't simply remove it all and change long_double->long double in the remainder of the file to get the function definition changed.