https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86599
--- Comment #14 from The Written Word <bugzilla-gcc at thewrittenword dot com>
---
(In reply to The Written Word from comment #13)
> (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.
Hmm, maybe two new rules, the first to remove everything before "extern long
double strtold" and change long_double->long double and the second to remove
the two lines after "extern long double strtold". Let me try to come up with
something.