Re: libgpg-error 1.61: t-printf failure on powerpc64-linux

"C. Neidahl via Gnupg-users" <[email protected]> Wed, 15 Jul 2026 10:54:02 +0000
Newsgroups gmane.comp.encryption.gpg.user
Message-ID <[email protected]>
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--===============9055631722804597993==
Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha256; boundary="------63a46770d9c6944433de02ecc8524839a3b20028976d911345b044b667289e1f"; charset=utf-8

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------63a46770d9c6944433de02ecc8524839a3b20028976d911345b044b667289e1f
Content-Type: multipart/mixed;
 boundary=e39f6efb6cae30e73f5e5dedb2fbd13062f88d4acd0ca2d3f87285e16bf7
Message-ID: <[email protected]>
Date: Wed, 15 Jul 2026 12:53:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: libgpg-error 1.61: t-printf failure on powerpc64-linux
To: NIIBE Yutaka <[email protected]>, [email protected]
References: <[email protected]>
 <H2MP9gr8WbtT2UcbJKlFzcYFSLIsDS09kH9JGyICb5gD-8Qqv4unfBrDu0A7ClayvhjEXHLCDyKXZQ0zzL49pA==@protonmail.internalid>
 <[email protected]>
Content-Language: en-US
From: "C. Neidahl" <[email protected]>
Autocrypt: [email protected]; keydata=
 xjMEZvxMihYJKwYBBAHaRw8BAQdAF/ofJEuZMTh88DkqC+bDr+oirMOimun4L2cG+wJgT7nN
 QENvc2ltYSBOZWlkYWhsIChNZWluIEdudVBHLVNjaGzDvHNzZWwpIDxvcG5hMjYwOEBwcm90
 b25tYWlsLmNvbT7CkwQTFgoAOxYhBGdcyANUzt1vSy/7V2ccL0jSE1w4BQJm/EyKAhsDBQsJ
 CAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEGccL0jSE1w4mxwBAJYMfsnO4ntX1zjqXAa6
 NVnxhiQOxVK8rmvdhdpoN60GAP0VqeESgHvuDlUsxyUsF4ZHaCGRSxLpdd/hbsg0KlhSBc44
 BGb8TIoSCisGAQQBl1UBBQEBB0DzRber22oJcLP29ZYnfKrHFcEvMDEA6p3BVHBmTwaQdQMB
 CAfCeAQYFgoAIBYhBGdcyANUzt1vSy/7V2ccL0jSE1w4BQJm/EyKAhsMAAoJEGccL0jSE1w4
 iNIA/3kGjlNugrxaEL0Yj6tWuHyXHMMBAhfjb8tRAkZP64tBAQCXpdzQ2SczfXcjQC8c0RQL
 t+3M5X9pdIKKxRqEBrRHDQ==
In-Reply-To: <[email protected]>

--e39f6efb6cae30e73f5e5dedb2fbd13062f88d4acd0ca2d3f87285e16bf7
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

> It's also in little-endian, I suppose.
Well, yes and no.

If usage of the VSX extension is enabled, then an IEEE-compliant 128-bit 
floating-point type is made available [0]. Glibc can be configured to 
use that type for long double, and i.e. Fedora has made that switch for 
its powerpc64le-linux target [1].

powerpc64-linux should be available on systems that predate the VSX 
extension though, so the default for those is generally still the IBM 
double-double. For example, the machine that I'm testing things on is an 
Apple Power Mac G5 from 2005, which lacks both VSX and the option to 
switch to little-endian mode without bricking the system. As a result of 
that, powerpc64le-linux is not something that I can test in any way, but 
I'm still *somewhat* aware of it.

 > +# ifdef __powerpc64__
 > +  if (verbose)
 > +    show ("IBM double-double - skipping LDBL_MAX test\n");

I suppose the most exact check for this situation would have to inspect 
some more LDBL_* 
defines, otherwise 128-bit IEEE-backed long double 
would end up not getting checked.

The GCC on my machine, after importing <float.h> with C23 enabled, defines:

#define __LDBL_IS_IEC_60559__ 0
#define LDBL_IS_IEC_60559 __LDBL_IS_IEC_60559__
#define __LONG_DOUBLE_IBM128__ 1

LDBL_IS_IEC_60559 of 0 indicates that the long double type does not 
match an IEC 60559 format (1: format, but not operation; 2: format and 
operation) [2]. The rest of the floating-point types have their 
corresponding defines at 1 on my system.

By comparison, a powerpc64le-linux GCC cross toolchain on my main system 
gives:

#define __LDBL_IS_IEC_60559__ 1
#define LDBL_IS_IEC_60559 __LDBL_IS_IEC_60559__
#define __LONG_DOUBLE_IEEE128__ 1

Doesn't seem like Clang itself implements LDBL_IS_IEC_60559, but you use 
gnulib, which handles that. It sets LDBL_IS_IEC_60559 to 0 with 
x86_64-linux Clang due to the 80-bit floating-point type, while 
x86_64-linux GCC sets it to 1 with the same type,
 so there's some 
discrepancies on other platforms though... So maybe:


diff --git a/tests/t-printf.c b/tests/t-printf.c
index b0a3f3f..79f6470 100644
--- a/tests/t-printf.c
+++ b/tests/t-printf.c
@@ -469,7 +469,13 @@ check_large_float (void)
      show ("format \"%%.100Lf\" with DBL_MAX: ->%s<-\n", buf);
    gpgrt_free (buf);

-# ifdef HAVE_LONG_DOUBLE_WIDER
+# if defined(__powerpc64__) && !LDBL_IS_IEC_60559
+  if (verbose)
+    show ("IBM double-double - skipping LDBL_MAX test\n");
+# elif !defined(HAVE_LONG_DOUBLE_WIDER)
+  if (verbose)
+    show ("LDBL_MAX == DBL_MAX - skipping LDBL_MAX test\n");
+# else
    ld = LDBL_MAX;
    buf = gpgrt_bsprintf ("%.100Lf\n", ld);
    if (buf)
@@ -479,9 +485,6 @@ check_large_float (void)
    else if (verbose)
      show ("format \"%%.100Lf\" with LDBL_MAX failed as expected\n");
    gpgrt_free (buf);
-# else
-  if (verbose)
-    show ("LDBL_MAX == DBL_MAX - skipping LDBL_MAX test\n");
  # endif

  #endif /*HAVE_LO
NG_DOUBLE*/


[0]: https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html
[1]: 
https://fedoraproject.org/wiki/Releases/36/ChangeSet#New_128-bit_IEEE_long_double_ABI_for_IBM_64-bit_POWER_LE
[2]: 
https://github.com/gcc-mirror/gcc/blob/b77cf8f055cce3e42f09410cbbf1e4f1e196b25d/gcc/c-family/c-cppbuiltin.cc#L321-L323

--e39f6efb6cae30e73f5e5dedb2fbd13062f88d4acd0ca2d3f87285e16bf7
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="publickey -
 [email protected] - 0xC802C863.asc"; name="publickey -
 [email protected] - 0xC802C863.asc"
Content-Type: application/pgp-keys; filename="publickey -
 [email protected] - 0xC802C863.asc"; name="publickey -
 [email protected] - 0xC802C863.asc"

LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCkNvbW1lbnQ6IGh0dHBzOi8vZ29w
ZW5wZ3Aub3JnClZlcnNpb246IEdvcGVuUEdQIDIuOS4wCgp4c0JOQkYyekt2NEJDQURIR1VxQ0dF
Q2lkOEhwM29BVXhuSTFGYnZ2S2xuQlZuSW9QSWhIQTBVMllBT1NTV3MvCi9VMmVETGxRYkRpMzdJ
c0JMYjhQR1VLUlEyYjkwOUFrVU5oc3lrclFqek9vN01aMFZ6eGhtc0hvdTQ3ZjV2V3oKN3Boc29Y
WFFoZzNMVDZqVXhNNjZXc0U3LytZaWhmM0cxWVU5Z1dEanFRN2lvN0dOVi80dEhEa0hBbHBybXZ0
WQo3RUlZZmw5WUF1ZzRzUm5oOVFPUExsSExQRm1tQUVXT2NDRTgzSC91LzROWFVIYm5ETU5Jd3ZV
SWppcVZYM0l4CnhmbHB1bm5iQzRvcjZ6T2tremJoZUhTNENBbm4rczRTalNQc1kyM0RsNThvSFlq
QUY4MFk4ZXM3WlZ3c1M4QmgKNDQzUXh4QjhDQ1dSbms0Mmt3T3FzWjRqMDdDSzlmMXZlSXdIQUJF
QkFBSE5NVzl3Ym1FeU5qQTRRSEJ5YjNSdgpibTFoYVd3dVkyOXRJRHh2Y0c1aE1qWXdPRUJ3Y205
MGIyNXRZV2xzTG1OdmJUN0N3SFVFRUFFSUFCOEZBbDJ6Ckt2NEdDd2tIQ0FNQ0JCVUlDZ0lERmdJ
QkFoa0JBaHNEQWg0QkFBb0pFR29OR0wwSytDalV1VklILzNmODJySjMKc1pyZm1CNFVjVTczTXFu
cENRRnc2ZE9TVHM5amlFMGppeWo0TWxodW5tdnhYNmFHWFFVQkhXc1dkT1Q0YWp3QgovK0hUb2Zy
QWFSc0o3azZ1RWRIbHRNeXNscTJ5MDcrSTVueHZDU2tnRGNoeGNDMlBoR3dvME1lZzY4OHZFWjlP
CkQ3UXFsZzQ0azhWV1hZaGNwUkxPL3VQWE40QkV6ZnJhT3l1aDNxdTNCNlFPSlJ5T2xMVmFpK1pE
TTZZeDZuenQKeTZNclZQVEQvSDhhV1l2TjBWVjNGM3VrVzZXVy9uRGh5VDVDVjhEcFI4UHp3Rk1m
VTQrbW1pcnRpMnlSNjZXTgp3ckUwVkJEUFNudGtqWFhqcllvSzlSZTJuZEM2SUc4aHNIMmpWWDFH
L1NEdDdHYkNVT2xIRUlnUHJuVW9sQk94CkxVME1qNVc1ODlxMmZTTE93RTBFWGJNcS9nRUlBS0xn
RTE4NWJvZE1PdVpvRU01Tkp1aFZZaWptMU1lNjdnbWYKd0ZXQU03Z0M3WGkzb21oTFRMU2RDNWlZ
dFJ2YTNZZ3lxUjBYOTIydWR0MVVYaXVqTTZEeXlqbGJ5TkdWYXNpWgpoa1RmSlQ0dEVoZThSdjNQ
UU80SkZtVVFXb0RnWE53QU5lazE4cityWW1ibkNsUU8wYzRVV3c0cFJGVVFnTnZwCmVrTnRMNmtH
NDV6Wngwdkw5THVPQjZIaEVYalRxcENXanR5UjF6Q2p1TGh1VElsbGswQ3JucytzOVFva2FiQ2cK
Y2s2OXo2WDVpM1E2SkE4WjZTZEwvT0ZDT05IZkdsVnUwZHVNN2tXZ3U0YlpYU213N0IvVlF4QU1H
TDRYUlZSMApkYnU5RnRTTVl2T1dWUEE0R3psMW9uZHA1M3lUWGJEeTJ5czRPaGhnTWhqdTVQQlp4
bThBRVFFQUFjTEFYd1FZCkFRZ0FDUVVDWGJNcS9nSWJEQUFLQ1JCcURSaTlDdmdvMUxZOUNBQ1Bq
ck1mUktWQ204dFFMVnR2SDRYK25raksKaVArN3NHUGFueE5HcHp1NW1VVTBmalk0KzVVWm1GU1NO
eEZQUFR5ajkxVUd4RlFHc2hiL2VxZHFsUVNidFhEQQp2bnN1Z1MzSHYza1F3Mk0zUUJHYWRoQWhS
TWRxVmM3NGNnRk80K2wzS0NKK3pOVmdzb3gwamhjM1IwbGhCaFc4CnRMaXpYcGU5TkI4Y0RNaExR
Y2ZHUFlaN29SVlNxK1l5RXFFOWFNd1prVmtyUk9zdnZ1aGdJclpQeEJwUXc0d1oKRkpZWS9kV2Na
cGpnZm1nOFQycUFRL1QyK3VkdFdjc3RXODNwajdPNGFZRDZ3Zmd2R0FrQXU5MWhQNVo2SmMwYgp5
QmhaVFFvZ2hVMGlNVGU4QmhFUnF1b2RYcU5PWllNOGZXanBLUVY4SXNSQ0pzemhJMUJhTEVYTkJn
KzgKPXB3RlIKLS0tLS1FTkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQ==
--e39f6efb6cae30e73f5e5dedb2fbd13062f88d4acd0ca2d3f87285e16bf7--

--------63a46770d9c6944433de02ecc8524839a3b20028976d911345b044b667289e1f
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: ProtonMail

wsCpBAEBCABdBYJqV2bJCRBqDRi9Cvgo1DUUAAAAAAAcABBzYWx0QG5vdGF0
aW9ucy5vcGVucGdwanMub3Jn0CyJouRk2cW6PndMhh0rJhYhBMgCyGNmp++W
GtkCJGoNGL0K+CjUAACL5Af9ECSGE5DGnciaLjYYE+C53c5Z4g6dL4oiAyFm
nR8PKv5r+M8ilT3ls/Uw7PNm1aUzJn4v6v8z8w4tiFQqWZ1UUew4ZTuqg+lH
xzWbdlYCSirQcA3h8xWKImzjx3ab/ScbwFhGy+u80QUlavkTsvxqheouPD0H
sUASaGgzYvqMKAn2PGBnQbmafwXgqCNn0d3Cwsrak9FNIaJ7jGNrThgUYt8B
xu/N7xslcWhnk6ko3w1Y0F7h5Mbj7gCLFVm6iwzWlsdcFrZPXw0IMmezngMv
+4yByMSqw/Vp5WwhxGY7EySNYKiDmPjrx5/kScyrvc1eD24+C2bV2P3Q1AGq
+KXCIQ==
=t+2m
-----END PGP SIGNATURE-----


--------63a46770d9c6944433de02ecc8524839a3b20028976d911345b044b667289e1f--



--===============9055631722804597993==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Gnupg-users mailing list
[email protected]
https://lists.gnupg.org/mailman/listinfo/gnupg-users

--===============9055631722804597993==--