signbit() on a -NaN will not correctly detect the sign if the assembly version is used. Small testcase: #include <math.h> int main() { float f = -0.0/0.0; printf ("%d vs. %d\n", __signbitf(f), __builtin_signbit(f)); return 0; } Prints: 0 vs. 1 If you force the use of mathinlines.h by compiling with -O2 -std=c99, the result will be correct, but with just -O2 or -O0 without -std=c99 the mathinlines won't be used, and hence the incorrect implementation in libc.so is called. Unfortunately, fclass.m fclass9 as used in the assembly .mfi fclass.m p6, p7 = farg0, @zero | @unorm | @norm | @inf | @neg ;; seemingly cannot be used for NaN sign testing according to Intel specs - of course the concept of NaN sign is kind of strange, but IEEE mandates it. Perhaps it would be best to disable the assembly version altogether? (The description includes comments by Richard Guenther and Michael Matz from a private Novell bug.)
HJ, can you have a look at this, please?
Suspending until there is an IA64 maintainer to add IA64 back to ports, CCing Aurelien.
Unsuspending now IA64 is in ports, CC:ing IA64 maintainer.
The master branch has been updated by Adhemerval Zanella <azanella@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=460860f457e2a889785c506e8c77d4a7dff24d3e commit 460860f457e2a889785c506e8c77d4a7dff24d3e Author: Adhemerval Zanella <adhemerval.zanella@linaro.org> Date: Mon Jan 8 10:21:17 2024 -0300 Remove ia64-linux-gnu Linux 6.7 removed ia64 from the official tree [1], following the general principle that a glibc port needs upstream support for the architecture in all the components it depends on (binutils, GCC, and the Linux kernel). Apart from the removal of sysdeps/ia64 and sysdeps/unix/sysv/linux/ia64, there are updates to various comments referencing ia64 for which removal of those references seemed appropriate. The configuration is removed from README and build-many-glibcs.py. The CONTRIBUTED-BY, elf/elf.h, manual/contrib.texi (the porting mention), *.po files, config.guess, and longlong.h are not changed. For Linux it allows cleanup some clone2 support on multiple files. The following bug can be closed as WONTFIX: BZ 22634 [2], BZ 14250 [3], BZ 21634 [4], BZ 10163 [5], BZ 16401 [6], and BZ 11585 [7]. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43ff221426d33db909f7159fdf620c3b052e2d1c [2] https://sourceware.org/bugzilla/show_bug.cgi?id=22634 [3] https://sourceware.org/bugzilla/show_bug.cgi?id=14250 [4] https://sourceware.org/bugzilla/show_bug.cgi?id=21634 [5] https://sourceware.org/bugzilla/show_bug.cgi?id=10163 [6] https://sourceware.org/bugzilla/show_bug.cgi?id=16401 [7] https://sourceware.org/bugzilla/show_bug.cgi?id=11585 Reviewed-by: Carlos O'Donell <carlos@redhat.com>
ia64 has been removed from glibc.