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

Reply via email to