On Tue, 23 Oct 2018, Michael Meissner wrote: > 2018-10-23 Michael Meissner <meiss...@linux.ibm.com> > > * config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME): > Define as rs6000_mangle_decl_assembler_name. > (rs6000_mangle_decl_assembler_name): If the user switched from IBM > long double to IEEE long double, switch the names of the long > double built-in functions to be <func>f128 instead of <func>l.
[This is the issue discussed at the Cauldron of how to get the redirections correct in any case that does not involve including the standard <math.h> to get the function declarations.] My understanding was that __<func>ieee128 aliases would be added to glibc (indeed, the relevant names are present in sysdeps/ieee754/ldbl-128ibm-compat/Versions in glibc, albeit without actually being enabled for powerpc64le yet), for two reasons: (a) to be namespace-clean for standard C, and (b) because a few libm functions (and many libc functions) have no _Float128 analogues but are still part of the API for long double (e.g. the nexttoward functions, where nexttowardf, nexttoward also need different versions for IEEE 128-bit long double, or scalbl, which is somewhat obsolescent but still supported). Now, you can't use the __<func>ieee128 names with *current* glibc because they aren't exported yet. So is the plan that GCC would later switch to using the __<func>ieee128 names when available based on TARGET_GLIBC_MAJOR and TARGET_GLIBC_MINOR (as more namespace-correct, and available for some functions without <func>f128 variants), with use of <func>f128 only a fallback for older glibc versions lacking __<func>ieee128? -- Joseph S. Myers jos...@codesourcery.com