Re: git: 790a6be5a169 - main - Export various 128 bit long double functions from libgcc_s.so.1
Date: Mon, 14 Jun 2021 22:15:42 UTC
On 14 Jun 2021, at 22:38, Mark Millard <marklmi@yahoo.com> wrote: > > Dimitry Andric dim at FreeBSD.org wrote on > Mon Jun 14 19:17:40 UTC 2021 : > >> The branch main has been updated by dim: >> >> URL: >> https://cgit.FreeBSD.org/src/commit/?id=790a6be5a1699291c6da87871426d0c56dedcc89 >> >> >> commit 790a6be5a1699291c6da87871426d0c56dedcc89 >> Author: Dimitry Andric <dim at FreeBSD.org> >> AuthorDate: 2021-06-14 19:17:05 +0000 >> Commit: Dimitry Andric <dim at FreeBSD.org> >> CommitDate: 2021-06-14 19:17:05 +0000 >> >> Export various 128 bit long double functions from libgcc_s.so.1 >> >> These were already compiled for some time on aarch64 and riscv, by >> including lib/libcompiler_rt/Makefile.inc, but never exported in the >> shared library. Since gcc exports these under version GCC_4.6.0, we do >> the same. >> >> This review should replace D11482 for now. For e.g. amd64 more work is >> still to be done, as compiler-rt does not seem to support 128 bit long >> double math for that architecture. > > Given that "man arch" explicitly reports: > > Architecture void * long double time_t > . . . > amd64 8 16 8 > . . . > > and also: > > Architecture float, double long double > . . . > amd64 hard hard, 80 bit > . . . Yeah this is a bit confusing, since padding is never mentioned. > (so there is guaranteed pad involved), would amd64 having 128 > bit long doubles (no pad by default?) be an FreeBSD ABI change, > possibly needing a discussion on freebsd-arch and > freebsd-numerics ? (Or may be it happened and I just do not > remember. Or may be it would take special enabling of the > alternate ABI's use and not be a default configuration.) > > (i386 only has "12", not "16", for its "80 bit", so 96 bits: > less pad.) There's nothing to worry about, the "tf" variants in this update are only enabled for aarch64 and riscv; see lib/libcompiler_rt/Makefile.inc: # # 128-bit quad precision long double support, # only used on some architectures. # .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv" SRCF+= addtf3 SRCF+= comparetf2 SRCF+= divtf3 SRCF+= extenddftf2 SRCF+= extendsftf2 SRCF+= fixtfdi SRCF+= fixtfsi SRCF+= fixtfti SRCF+= fixunstfdi SRCF+= fixunstfsi SRCF+= fixunstfti SRCF+= floatsitf SRCF+= floattitf SRCF+= floatunsitf SRCF+= floatuntitf SRCF+= multf3 SRCF+= subtf3 SRCF+= trunctfdf2 SRCF+= trunctfsf2 .endif I'm sorry to have sowed confusion here, as the commit message was mostly copy/pasted from the Phabricator review. Please consider the amd64 sentence to be 'cancelled'. :) -Dimitry