Page MenuHomeFreeBSD

libgcc_s: 80-bit long double function are x86-only
ClosedPublic

Authored by brooks on Apr 30 2024, 6:05 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sep 15 2024, 6:55 AM
Unknown Object (File)
Sep 12 2024, 7:29 PM
Unknown Object (File)
Sep 1 2024, 2:28 PM
Unknown Object (File)
Aug 21 2024, 2:46 PM
Unknown Object (File)
Jul 6 2024, 8:36 PM
Unknown Object (File)
Jul 1 2024, 5:50 AM
Unknown Object (File)
Jun 30 2024, 1:13 PM
Unknown Object (File)
Jun 30 2024, 12:42 PM

Details

Summary

Don't try to expose them elsewhere.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

The condition in both extendxftf2.c and trunctfxf2.c is:

#if defined(CRT_HAS_TF_MODE) && __LDBL_MANT_DIG__ == 64 && defined(__x86_64__)

In int_types.h there is:

#if defined(CRT_HAS_128BIT) && defined(CRT_HAS_F128)
#define CRT_HAS_TF_MODE
#endif

and:

#if defined(__LP64__) || defined(__wasm__) || defined(__mips64) ||             \
    defined(__SIZEOF_INT128__) || defined(_WIN64)
#define CRT_HAS_128BIT
#endif

but also:

#elif __LDBL_MANT_DIG__ == 113 ||                                              \
    (__FLT_RADIX__ == 16 && __LDBL_MANT_DIG__ == 28)
// Use long double instead of __float128 if it matches the IEEE 128-bit format
// or the IBM hexadecimal format.
#define CRT_LDBL_128BIT
#define CRT_HAS_F128

So either __LDBL_MANT_DIG__ is 113 or 28 for this to be true, and this can never occur simultaneously with the first condition... I don't really grok the tests here.

Note that the symbols *can* be compiled for PowerPC though! I think that's where they came from? @pkubaj any ideas?

@arichardson made a big change upstream that impacted the upstream conditional for extendxftf2 and trunctfxf2 prior to llvm18's release. I might want to make that change a separate commit.

brooks edited the summary of this revision. (Show Details)

I've moved the extendxftf2 and trunctfxf2 removal to D45034.

Move extendxftf2 and trunctfxf2 removal to D45034

This revision is now accepted and ready to land.May 1 2024, 1:05 AM
kaktus added inline comments.
lib/libgcc_s/Symbol.map
157

I believe this should be spelled defined(i386) with 'd' at the end.
Since this change clang complains that macro 'define' isn't defined :-)