[gcc r15-4214] libstdc++: Workaround glibc headers on ia64-linux
Jonathan Wakely
redi@gcc.gnu.org
Wed Oct 9 13:06:27 GMT 2024
https://gcc.gnu.org/g:c0bc9a153ae6ab649e2fcc3af53ebcd37df0a871
commit r15-4214-gc0bc9a153ae6ab649e2fcc3af53ebcd37df0a871
Author: Frank Scheiner <frank.scheiner@web.de>
Date: Tue Oct 8 19:48:09 2024 +0100
libstdc++: Workaround glibc headers on ia64-linux
We see:
```
FAIL: 17_intro/names.cc -std=gnu++17 (test for excess errors)
FAIL: 17_intro/names_pstl.cc -std=gnu++17 (test for excess errors)
FAIL: experimental/names.cc -std=gnu++17 (test for excess errors)
```
...on ia64-linux.
This is due to:
* /usr/include/bits/sigcontext.h:32-38:
```
32 struct __ia64_fpreg
33 {
34 union
35 {
36 unsigned long bits[2];
37 } u;
38 } __attribute__ ((__aligned__ (16)));
```
* /usr/include/sys/ucontext.h:39-45:
```
39 struct __ia64_fpreg_mcontext
40 {
41 union
42 {
43 unsigned long __ctx(bits)[2];
44 } __ctx(u);
45 } __attribute__ ((__aligned__ (16)));
```
...from glibc 2.39 (w/ia64 support re-added). See the discussion
starting on [1].
[1]: https://gcc.gnu.org/pipermail/gcc-patches/2024-June/654487.html
Signed-off-by: Frank Scheiner <frank.scheiner@web.de>
libstdc++-v3/ChangeLog:
* testsuite/17_intro/names.cc [__linux__ && __ia64__]: Undefine
'u' as used in glibc headers.
Diff:
---
libstdc++-v3/testsuite/17_intro/names.cc | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/libstdc++-v3/testsuite/17_intro/names.cc b/libstdc++-v3/testsuite/17_intro/names.cc
index 6b9a3639aad4..bea2d19ecba0 100644
--- a/libstdc++-v3/testsuite/17_intro/names.cc
+++ b/libstdc++-v3/testsuite/17_intro/names.cc
@@ -282,6 +282,12 @@
#undef y
#endif
+#if defined (__linux__) && defined (__ia64__)
+// <bits/sigcontext.h> defines __ia64_fpreg::u
+// <sys/ucontext.h> defines __ia64_fpreg_mcontext::u
+#undef u
+#endif
+
#if defined (__linux__) || defined (__gnu_hurd__)
#if __has_include(<features.h>)
#include <features.h>
More information about the Libstdc++-cvs
mailing list