On Tue, 1 Oct 2024 at 16:53, Frank Scheiner <frank.schei...@web.de> wrote:
>
> Hi Jonathan, Joseph,
>
> On 01.10.24 15:32, Jonathan Wakely wrote:
> > On Tue, 1 Oct 2024 at 14:05, Frank Scheiner <frank.schei...@web.de> wrote:
> >> On 01.10.24 11:28, Jonathan Wakely wrote:
> >>> On Mon, 30 Sept 2024 at 18:26, Frank Scheiner wrote:
> >>> It looks like the glibc header also defines "bits" without using the
> >>> implementation namespace. Is there a reason the re-added ia64 code in
> >>> the glibc header can't be fixed to use __bits and __u?
> >>
> >> No, I think we can do that. As it only affects C++ you proposed in [1]
> >> to "just change the libstdc++ tests" though.
> >>
> >> [1]: https://gcc.gnu.org/pipermail/gcc-patches/2024-June/654889.html
> >
> > Ah yes. I think the sys/ucontext.h case only affects C++ (and C when
> > _GNU_SOURCE is defined), but the sys/sigcontext.h case affects C too.
> > Both 'u' and 'bits' are used without the __ctx macro.
>
> I looked at the error messages for the tests ([2]) again and for 'u',
> even when used with the __ctx macro in "ucontext.h", it seems to be an
> issue:
>
> ```
> [...]
> compiler exited with status 1
> FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
> Excess errors:
> /usr/include/bits/sigcontext.h:37: error: expected unqualified-id before
> ';' token
> /usr/include/bits/sigcontext.h:37: error: expected ')' before ';' token
> /usr/include/sys/ucontext.h:44: error: expected unqualified-id before
> ';' token
> /usr/include/sys/ucontext.h:44: error: expected ')' before ';' token
> [...]
> ```by
>
> [2]:
> https://gcc.gnu.org/pipermail/gcc-patches/attachments/20240614/880a99c1/attachment-0001.md
>
> Though I don't understand why. From the error message it sounds like 'u'
> was replaced with '(' before the __ctx macro could do its job.
>
> But Joseph also wrote that it "prepends __ in standards conformance
> modes" in [3]. And this might not be the case for these specific tests,
> so the __ctx macro might not have any effect here.

It has no effect here. G++ unconditionally defines _GNU_SOURCE which
means the __ctx macro does nothing.

>
> [3]: https://gcc.gnu.org/pipermail/gcc-patches/2024-June/654883.html
>
> BTW, the two glibc headers are available here for reference:
>
> *
> https://github.com/linux-ia64/glibc-ia64/blob/release/2.39/master-w-ia64/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
>
> *
> https://github.com/linux-ia64/glibc-ia64/blob/release/2.39/master-w-ia64/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
>
> ...names.cc here:
>
> https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/testsuite/17_intro/names.cc;h=9b0ffcb50b2e07a5ff2c2bd480b9eecd402c78d3;hb=HEAD
>
> >> IIUC, if those changes in the glibc don't bite us, this patch here can
> >> be dropped again, right? OTOH it seems to be like that in the glibc
> >> since a while, so the gcc/libstdc++ patch could be kept for builds
> >> against older glibc versions anyway. But let's first see what will 
> >> happen...
> >
> >
> > I think we can change the libstdc++ test anyway, so it PASSes whether
> > or not any change happens for glibc.
>
> Agreed.
>
> Cheers,
> Frank
>

Reply via email to