* ppc64le: gcc 12 vs -mabi=ibmlongdouble
@ 2022-01-22 6:34 DJ Delorie
2022-01-24 15:38 ` Florian Weimer
0 siblings, 1 reply; 7+ messages in thread
From: DJ Delorie @ 2022-01-22 6:34 UTC (permalink / raw)
To: libc-alpha
I've been working on updating glibc for Fedora Rawhide, and have
stumbled upon this issue (after working around the -Wuse-after-free
issues with a cflags hack)... A few of the math tests explicitly add
-mlong-double-64 but configure adds -mabi=ibmlongdouble
I would guess that we need a "CFLAGS -= -mabi=ibmlongdouble" in all
the places we add -mlong-double-64 but I don't see an easy way of
doing that, nor am I sure that's a valid solution. Alternately, gcc
could be changed to accept the conflicting flags in a meaningful way,
if there is one. Is there an -mabi= that undoes the
-mabi=ibmlongdouble that we can just add to the -mlong-double-64 flag
lines?
Has anyone else seen this, and if so, is there a solution?
Working case (Fedora 35):
gcc version 11.2.1 20211203 (Red Hat 11.2.1-7) (GCC)
checking whether gcc -O2 -g -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mlong-double-128 uses IBM extended format... yes
Failing case (Fedora Rawhide):
gcc version 12.0.1 20220118 (Red Hat 12.0.1-0) (GCC)
checking whether gcc -O2 -g -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mlong-double-128 uses IBM extended format... no
checking whether gcc -O2 -g -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 supports -mabi=ibmlongdouble... yes
The logic is coming from sysdeps/unix/sysv/linux/powerpc/configure.ac,
which checks for the above and amends CFLAGS.
Logs:
gcc ../sysdeps/ieee754/ldbl-opt/test-narrow-macros-ldbl-64.c -c -std=gnu11 -fgnu89-inline -O2 -g -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mabi=ibmlongdouble -Wall -Wwrite-strings -Wundef -Werror -fmerge-all-constants -frounding-math -fstack-protector-strong -fno-common -Wstrict-prototypes -Wold-style-definition -fmath-errno -Wno-psabi -mno-gnu-attribute -fpie -mlong-double-64 -I../include -I/builddir/build/BUILD/glibc-2.34.9000-563-gf44820821a/build-ppc64le-redhat-linux/math -I/builddir/build/BUILD/glibc-2.34.9000-563-gf44820821a/build-ppc64le-redhat-linux -I../sysdeps/unix/sysv/linux/powerpc/powerpc64/le/fpu -I../sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu -I../sysdeps/unix/sysv/linux/powerpc/powerpc64/le -I../sysdeps/unix/sysv/linux/powerpc/powerpc64 -I../sysdeps/unix/sysv/linux/wordsize-64 -I../sysdep
s/unix/sysv/linux/powerpc -I../sysdeps/powerpc/nptl -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/powerpc -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/powerpc/powerpc64/le/power8/fpu/multiarch -I../sysdeps/powerpc/powerpc64/le/power7/fpu/multiarch -I../sysdeps/powerpc/powerpc64/le/fpu/multiarch -I../sysdeps/powerpc/powerpc64/le/power8/fpu -I../sysdeps/powerpc/powerpc64/le/power7/fpu -I../sysdeps/powerpc/powerpc64/le/fpu -I../sysdeps/powerpc/powerpc64/fpu -I../sysdeps/powerpc/powerpc64/le/power8/multiarch -I../sysdeps/powerpc/powerpc64/le/power7/multiarch -I../sysdeps/powerpc/powerpc64/le/multiarch -I../sysdeps/powerpc/powerpc64/multiarch -I../sysdeps/powerpc/powerpc64/le/power8 -I../sysdeps/powerpc/powerpc64/power8 -I../sysdeps/powerpc/powerpc64/le/power7 -I../sysdeps/powerpc/powerpc64/power7 -I../sysdeps/powerpc/p
owerpc64/power6 -I../sysdeps/powerpc/powerp!
c64/power4 -I../sysdeps/powerpc/power4 -I../sysdeps/powerpc/powerpc64/le -I../sysdeps/powerpc/powerpc64 -I../sysdeps/wordsize-64 -I../sysdeps/powerpc/fpu -I../sysdeps/powerpc -I../sysdeps/ieee754/ldbl-128ibm-compat -I../sysdeps/ieee754/ldbl-128ibm/include -I../sysdeps/ieee754/ldbl-128ibm -I../sysdeps/ieee754/ldbl-opt -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/float128 -I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -nostdinc -isystem /usr/lib/gcc/ppc64le-redhat-linux/12/include -isystem /usr/include -D_LIBC_REENTRANT -include /builddir/build/BUILD/glibc-2.34.9000-563-gf44820821a/build-ppc64le-redhat-linux/libc-modules.h -DMODULE_NAME=testsuite -include ../include/libc-symbols.h -DPIC -DTOP_NAMESPACE=glibc -I../soft-fp -o /builddir/build/BUILD/glibc-2.34.9000-563-gf44820821a/build-ppc64le-redhat-linux/math/test-narrow-macros-ldbl-64.o -MD -MP -MF /builddir/build/BUILD/glibc-2.34.9000-563-gf44820821a/build-ppc64le-red
hat-linux/math/test-narrow-macros-ldbl-64.o.dt -MT /builddir/build/BUILD/glibc-2.34.9000-563-gf44820821a/build-ppc64le-redhat-linux/math/test-narrow-macros-ldbl-64.o
cc1: error: '-mabi=ibmlongdouble' requires '-mlong-double-128'
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ppc64le: gcc 12 vs -mabi=ibmlongdouble
2022-01-22 6:34 ppc64le: gcc 12 vs -mabi=ibmlongdouble DJ Delorie
@ 2022-01-24 15:38 ` Florian Weimer
2022-01-24 16:44 ` Bill Schmidt
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Florian Weimer @ 2022-01-24 15:38 UTC (permalink / raw)
To: DJ Delorie via Libc-alpha
Cc: DJ Delorie, Tulio Magno Quites Machado Filho, Paul E. Murphy
[-- Attachment #1: Type: text/plain, Size: 1085 bytes --]
* DJ Delorie via Libc-alpha:
> I've been working on updating glibc for Fedora Rawhide, and have
> stumbled upon this issue (after working around the -Wuse-after-free
> issues with a cflags hack)... A few of the math tests explicitly add
> -mlong-double-64 but configure adds -mabi=ibmlongdouble
>
> I would guess that we need a "CFLAGS -= -mabi=ibmlongdouble" in all
> the places we add -mlong-double-64 but I don't see an easy way of
> doing that, nor am I sure that's a valid solution. Alternately, gcc
> could be changed to accept the conflicting flags in a meaningful way,
> if there is one. Is there an -mabi= that undoes the
> -mabi=ibmlongdouble that we can just add to the -mlong-double-64 flag
> lines?
> cc1: error: '-mabi=ibmlongdouble' requires '-mlong-double-128'
I was able to reproduce with a GCC 12 build configured using
--with-long-double-format=ieee.
I tried the attached patch to remove the unwanted -mabi=ibmlongdouble,
but it does not work: it removes CFLAGS-*.c processing as a side effect.
Any suggestions how we can fix this properly?
Thanks,
Florian
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-powerpc64le-Filter-out-mabi-longdouble-in-64-bit-dou.patch --]
[-- Type: text/x-patch, Size: 2728 bytes --]
From b865fb6228bea8e956e6413002e7641f10d6e5e6 Mon Sep 17 00:00:00 2001
Message-Id: <b865fb6228bea8e956e6413002e7641f10d6e5e6.1643038207.git.fweimer@redhat.com>
From: Florian Weimer <fweimer@redhat.com>
Date: Mon, 24 Jan 2022 11:19:53 +0100
Subject: [PATCH] powerpc64le: Filter out -mabi=*longdouble in 64-bit double
tests
To: libc-alpha@sourceware.org
GCC 12 configured with --with-long-double-format=ieee does not
accept -mabi=ibmlongdouble in combination with -mlong-double-64,
but this was how glibc tries to build these tests before this change.
sysdeps/unix/sysv/linux/configure adds -mabi=ibmlongdouble to CFLAGS,
so this variable has to be filtered as well.
---
sysdeps/powerpc/powerpc64/le/Makefile | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/sysdeps/powerpc/powerpc64/le/Makefile b/sysdeps/powerpc/powerpc64/le/Makefile
index 7c036b45fc..2aaed2b75a 100644
--- a/sysdeps/powerpc/powerpc64/le/Makefile
+++ b/sysdeps/powerpc/powerpc64/le/Makefile
@@ -95,8 +95,12 @@ $(foreach suf,$(all-object-suffixes),\
$(objpfx)test-narrow-macros-ldbl-64$(suf) \
$(objpfx)test-nldbl-redirect$(suf) \
$(objpfx)test-redirection-ldbl-64$(suf) \
- ): sysdep-CFLAGS := $(filter-out -mabi=ieeelongdouble,$(sysdep-CFLAGS))
-
+ ): CFLAGS := $(filter-out -mabi=%longdouble,$(CFLAGS))
+$(foreach suf,$(all-object-suffixes),\
+ $(objpfx)test-narrow-macros-ldbl-64$(suf) \
+ $(objpfx)test-nldbl-redirect$(suf) \
+ $(objpfx)test-redirection-ldbl-64$(suf) \
+ ): sysdep-CFLAGS := $(filter-out -mabi=%longdouble,$(sysdep-CFLAGS))
endif
# Newer GCC (>7) doesn't like -mabi=* and -mlong-double-64
@@ -104,14 +108,21 @@ ifeq ($(subdir),misc)
$(foreach suf,$(all-object-suffixes),\
$(objpfx)tst-nldbl-warn$(suf) \
$(objpfx)tst-nldbl-error$(suf) \
- ): sysdep-CFLAGS := $(filter-out -mabi=ieeelongdouble,$(sysdep-CFLAGS))
+ ): CFLAGS := $(filter-out -mabi=%longdouble,$(CFLAGS))
+$(foreach suf,$(all-object-suffixes),\
+ $(objpfx)tst-nldbl-warn$(suf) \
+ $(objpfx)tst-nldbl-error$(suf) \
+ ): sysdep-CFLAGS := $(filter-out -mabi=%longdouble,$(sysdep-CFLAGS))
endif
# Newer GCC (>7) doesn't like -mabi=* and -mlong-double-64
ifeq ($(subdir),argp)
$(foreach suf,$(all-object-suffixes),\
$(objpfx)tst-nldbl-argp$(suf) \
- ): sysdep-CFLAGS := $(filter-out -mabi=ieeelongdouble,$(sysdep-CFLAGS))
+ ): CFLAGS := $(filter-out -mabi=%longdouble,$(CFLAGS))
+$(foreach suf,$(all-object-suffixes),\
+ $(objpfx)tst-nldbl-argp$(suf) \
+ ): sysdep-CFLAGS := $(filter-out -mabi=%longdouble,$(sysdep-CFLAGS))
endif
--
2.34.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ppc64le: gcc 12 vs -mabi=ibmlongdouble
2022-01-24 15:38 ` Florian Weimer
@ 2022-01-24 16:44 ` Bill Schmidt
2022-01-24 18:32 ` Florian Weimer
2022-01-24 17:37 ` Adhemerval Zanella
2022-01-24 17:46 ` Paul E Murphy
2 siblings, 1 reply; 7+ messages in thread
From: Bill Schmidt @ 2022-01-24 16:44 UTC (permalink / raw)
To: Florian Weimer, DJ Delorie via Libc-alpha
Cc: Tulio Magno Quites Machado Filho
I ran this by our GCC team, and the tentative consensus is that
-mlong-double-64 should override -mabi=ibmlongdouble, rather than
reporting an error in the compile flags. DJ, could you please
open a bug against the GCC powerpc target?
Thanks!
Bill
On 1/24/22 9:38 AM, Florian Weimer via Libc-alpha wrote:
> * DJ Delorie via Libc-alpha:
>
>> I've been working on updating glibc for Fedora Rawhide, and have
>> stumbled upon this issue (after working around the -Wuse-after-free
>> issues with a cflags hack)... A few of the math tests explicitly add
>> -mlong-double-64 but configure adds -mabi=ibmlongdouble
>>
>> I would guess that we need a "CFLAGS -= -mabi=ibmlongdouble" in all
>> the places we add -mlong-double-64 but I don't see an easy way of
>> doing that, nor am I sure that's a valid solution. Alternately, gcc
>> could be changed to accept the conflicting flags in a meaningful way,
>> if there is one. Is there an -mabi= that undoes the
>> -mabi=ibmlongdouble that we can just add to the -mlong-double-64 flag
>> lines?
>> cc1: error: '-mabi=ibmlongdouble' requires '-mlong-double-128'
> I was able to reproduce with a GCC 12 build configured using
> --with-long-double-format=ieee.
>
> I tried the attached patch to remove the unwanted -mabi=ibmlongdouble,
> but it does not work: it removes CFLAGS-*.c processing as a side effect.
>
> Any suggestions how we can fix this properly?
>
> Thanks,
> Florian
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ppc64le: gcc 12 vs -mabi=ibmlongdouble
2022-01-24 15:38 ` Florian Weimer
2022-01-24 16:44 ` Bill Schmidt
@ 2022-01-24 17:37 ` Adhemerval Zanella
2022-01-24 17:46 ` Paul E Murphy
2 siblings, 0 replies; 7+ messages in thread
From: Adhemerval Zanella @ 2022-01-24 17:37 UTC (permalink / raw)
To: Florian Weimer, DJ Delorie via Libc-alpha
Cc: Tulio Magno Quites Machado Filho
On 24/01/2022 12:38, Florian Weimer via Libc-alpha wrote:
> * DJ Delorie via Libc-alpha:
>
>> I've been working on updating glibc for Fedora Rawhide, and have
>> stumbled upon this issue (after working around the -Wuse-after-free
>> issues with a cflags hack)... A few of the math tests explicitly add
>> -mlong-double-64 but configure adds -mabi=ibmlongdouble
>>
>> I would guess that we need a "CFLAGS -= -mabi=ibmlongdouble" in all
>> the places we add -mlong-double-64 but I don't see an easy way of
>> doing that, nor am I sure that's a valid solution. Alternately, gcc
>> could be changed to accept the conflicting flags in a meaningful way,
>> if there is one. Is there an -mabi= that undoes the
>> -mabi=ibmlongdouble that we can just add to the -mlong-double-64 flag
>> lines?
>
>> cc1: error: '-mabi=ibmlongdouble' requires '-mlong-double-128'
>
> I was able to reproduce with a GCC 12 build configured using
> --with-long-double-format=ieee.
>
> I tried the attached patch to remove the unwanted -mabi=ibmlongdouble,
> but it does not work: it removes CFLAGS-*.c processing as a side effect.
>
> Any suggestions how we can fix this properly?
I think we will need add a concept of CFLAGS to build glibc itself and CFLAGS
to build tests regarding ABI. The '-mabi=ibmlongdouble' will
be added only libraries.
On sysdeps/powerpc/powerpc64/le/Makefile, add type-ldouble-CFLAGS but filtering
out $(tests), $(tests-internal), $(xtests), $(test-srcs), $(tests-time64),
and $(xtests-time64) (maybe add a new rule to add all tests) and then
add the required on each tests (we might know the default from configure,
but I think it would be simple to always add the long double abi flags).
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ppc64le: gcc 12 vs -mabi=ibmlongdouble
2022-01-24 15:38 ` Florian Weimer
2022-01-24 16:44 ` Bill Schmidt
2022-01-24 17:37 ` Adhemerval Zanella
@ 2022-01-24 17:46 ` Paul E Murphy
2022-01-24 17:56 ` Florian Weimer
2 siblings, 1 reply; 7+ messages in thread
From: Paul E Murphy @ 2022-01-24 17:46 UTC (permalink / raw)
To: Florian Weimer, DJ Delorie via Libc-alpha
Cc: DJ Delorie, Tulio Magno Quites Machado Filho, Paul E. Murphy
On 1/24/22 9:38 AM, Florian Weimer wrote:
> * DJ Delorie via Libc-alpha:
>
>> I've been working on updating glibc for Fedora Rawhide, and have
>> stumbled upon this issue (after working around the -Wuse-after-free
>> issues with a cflags hack)... A few of the math tests explicitly add
>> -mlong-double-64 but configure adds -mabi=ibmlongdouble
>>
>> I would guess that we need a "CFLAGS -= -mabi=ibmlongdouble" in all
>> the places we add -mlong-double-64 but I don't see an easy way of
>> doing that, nor am I sure that's a valid solution. Alternately, gcc
>> could be changed to accept the conflicting flags in a meaningful way,
>> if there is one. Is there an -mabi= that undoes the
>> -mabi=ibmlongdouble that we can just add to the -mlong-double-64 flag
>> lines?
For the sake of my clarification, does this affect more than the 6 test
cases/files in ldbl-opt Makefile? If not, could the removal be handled
case-by-case in sysdeps/powerpc/powerpc64/le/Makefile?
>
>> cc1: error: '-mabi=ibmlongdouble' requires '-mlong-double-128'
>
> I was able to reproduce with a GCC 12 build configured using
> --with-long-double-format=ieee.
>
> I tried the attached patch to remove the unwanted -mabi=ibmlongdouble,
> but it does not work: it removes CFLAGS-*.c processing as a side effect.
>
> Any suggestions how we can fix this properly?
>
> Thanks,
> Florian
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ppc64le: gcc 12 vs -mabi=ibmlongdouble
2022-01-24 17:46 ` Paul E Murphy
@ 2022-01-24 17:56 ` Florian Weimer
0 siblings, 0 replies; 7+ messages in thread
From: Florian Weimer @ 2022-01-24 17:56 UTC (permalink / raw)
To: Paul E Murphy
Cc: DJ Delorie via Libc-alpha, DJ Delorie,
Tulio Magno Quites Machado Filho, Paul E. Murphy
* Paul E. Murphy:
> On 1/24/22 9:38 AM, Florian Weimer wrote:
>> * DJ Delorie via Libc-alpha:
>>
>>> I've been working on updating glibc for Fedora Rawhide, and have
>>> stumbled upon this issue (after working around the -Wuse-after-free
>>> issues with a cflags hack)... A few of the math tests explicitly add
>>> -mlong-double-64 but configure adds -mabi=ibmlongdouble
>>>
>>> I would guess that we need a "CFLAGS -= -mabi=ibmlongdouble" in all
>>> the places we add -mlong-double-64 but I don't see an easy way of
>>> doing that, nor am I sure that's a valid solution. Alternately, gcc
>>> could be changed to accept the conflicting flags in a meaningful way,
>>> if there is one. Is there an -mabi= that undoes the
>>> -mabi=ibmlongdouble that we can just add to the -mlong-double-64 flag
>>> lines?
>
> For the sake of my clarification, does this affect more than the 6
> test cases/files in ldbl-opt Makefile? If not, could the removal be
> handled case-by-case in sysdeps/powerpc/powerpc64/le/Makefile?
That's what I tried in my patch, but it seems to interact negatively
with other make constructs, so any CFLAGS-*.c settings stop working for
these targets.
Thanks,
Florian
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ppc64le: gcc 12 vs -mabi=ibmlongdouble
2022-01-24 16:44 ` Bill Schmidt
@ 2022-01-24 18:32 ` Florian Weimer
0 siblings, 0 replies; 7+ messages in thread
From: Florian Weimer @ 2022-01-24 18:32 UTC (permalink / raw)
To: Bill Schmidt; +Cc: DJ Delorie via Libc-alpha, Tulio Magno Quites Machado Filho
* Bill Schmidt:
> I ran this by our GCC team, and the tentative consensus is that
> -mlong-double-64 should override -mabi=ibmlongdouble, rather than
> reporting an error in the compile flags. DJ, could you please
> open a bug against the GCC powerpc target?
I went ahead and filed a P1 bug, as agreed on the call:
-mlong-double-64 should override a previous -mabi=ibmlongdouble
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104208>
Thanks,
Florian
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-01-24 18:32 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-22 6:34 ppc64le: gcc 12 vs -mabi=ibmlongdouble DJ Delorie
2022-01-24 15:38 ` Florian Weimer
2022-01-24 16:44 ` Bill Schmidt
2022-01-24 18:32 ` Florian Weimer
2022-01-24 17:37 ` Adhemerval Zanella
2022-01-24 17:46 ` Paul E Murphy
2022-01-24 17:56 ` Florian Weimer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).