libstdc++: Workaround kernel-headers on s390x-linux
commitcf5f7791056b3ed993bc8024be767a86157514a9
authorJakub Jelinek <jakub@redhat.com>
Mon, 22 Apr 2024 16:00:06 +0000 (22 18:00 +0200)
committerJakub Jelinek <jakub@redhat.com>
Mon, 22 Apr 2024 16:00:06 +0000 (22 18:00 +0200)
tree1b410cb6c2da4f3173b59a2d15f47d130d1c3b65
parent0db19228a9feba5a8f4e13b21f25f3aa8a6c5e85
libstdc++: Workaround kernel-headers on s390x-linux

We see
FAIL: 17_intro/headers/c++1998/all_attributes.cc   (test for excess errors)
FAIL: 17_intro/headers/c++2011/all_attributes.cc   (test for excess errors)
FAIL: 17_intro/headers/c++2014/all_attributes.cc   (test for excess errors)
FAIL: 17_intro/headers/c++2017/all_attributes.cc   (test for excess errors)
FAIL: 17_intro/headers/c++2020/all_attributes.cc   (test for excess errors)
FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
on s390x-linux.
The first 5 are due to kernel-headers not using uglified attribute names,
where <asm/types.h> contains
__attribute__((packed, aligned(4)))
I've filed a downstream bugreport for this in
https://bugzilla.redhat.com/show_bug.cgi?id=2276084
(not really sure where to report kernel-headers issues upstream), while the
last one is due to <sys/ucontext.h> from glibc containing:
  #ifdef __USE_MISC
  # define __ctx(fld) fld
  #else
  # define __ctx(fld) __ ## fld
  #endif
  ...
  typedef union
    {
      double  __ctx(d);
      float   __ctx(f);
    } fpreg_t;
and g++ predefining -D_GNU_SOURCE which implies define __USE_MISC.

The following patch adds a workaround for this on the libstdc++ testsuite
side.

2024-04-22  Jakub Jelinek  <jakub@redhat.com>

* testsuite/17_intro/names.cc (d, f): Undefine on s390*-linux*.
* testsuite/17_intro/headers/c++1998/all_attributes.cc (packed): Don't
define on s390.
* testsuite/17_intro/headers/c++2011/all_attributes.cc (packed):
Likewise.
* testsuite/17_intro/headers/c++2014/all_attributes.cc (packed):
Likewise.
* testsuite/17_intro/headers/c++2017/all_attributes.cc (packed):
Likewise.
* testsuite/17_intro/headers/c++2020/all_attributes.cc (packed):
Likewise.
libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
libstdc++-v3/testsuite/17_intro/headers/c++2017/all_attributes.cc
libstdc++-v3/testsuite/17_intro/headers/c++2020/all_attributes.cc
libstdc++-v3/testsuite/17_intro/names.cc