mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-09 04:15:52 +00:00
parent
637a54aeb5
commit
137305d58a
@ -19,8 +19,3 @@ CC_OPT += -D_GLIBCXX_HAVE_MBSTATE_T
|
||||
|
||||
# use compiler-builtin atomic operations
|
||||
CC_OPT += -D_GLIBCXX_ATOMIC_BUILTINS_4
|
||||
|
||||
# GCC's stddef.h defines the 'max_align_t' type, which is used in the 'cstddef'
|
||||
# C++ header file. libc's version of stddef.h shadows GCC's version, so it is
|
||||
# included explicitly here.
|
||||
CC_OPT += -include $(LIBGCC_INC_DIR)/stddef.h
|
||||
|
@ -1 +1 @@
|
||||
d8d8c56df0ee6a1c3bd2c08c1f013a1ab7c408a7
|
||||
95577a93137d4fda7e095374eacd5e20c4ea5e18
|
||||
|
59
repos/libports/src/lib/libc/patches/max_align_t.patch
Normal file
59
repos/libports/src/lib/libc/patches/max_align_t.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From 689bb2db9dbb8fa247c030735dbd6e4f861d0e60 Mon Sep 17 00:00:00 2001
|
||||
From: jhb <jhb@FreeBSD.org>
|
||||
Date: Fri, 21 Oct 2016 23:50:02 +0000
|
||||
Subject: [PATCH] Define max_align_t for C11.
|
||||
|
||||
libc++'s stddef.h includes an existing definition of max_align_t for
|
||||
C++11, but it is only defined for C++, not for C. In addition, GCC and
|
||||
clang both define an alternate version of max_align_t that uses a
|
||||
union of multiple types rather than a plain long double as in libc++.
|
||||
This adds a __max_align_t to <sys/_types.h> that matches the GCC and
|
||||
clang definition that is mapped to max_align_t in <stddef.h>.
|
||||
|
||||
PR: 210890
|
||||
Reviewed by: dim
|
||||
MFC after: 1 month
|
||||
Differential Revision: https://reviews.freebsd.org/D8194
|
||||
|
||||
cproc: slightly modified for Genode (_Alignof -> __alignof__)
|
||||
|
||||
---
|
||||
include/stddef.h | 8 ++++++++
|
||||
sys/sys/_types.h | 5 +++++
|
||||
2 files changed, 13 insertions(+)
|
||||
|
||||
diff --git a/include/stddef.h b/include/stddef.h
|
||||
index 7898da2..7f2d2f0c 100644
|
||||
--- src/lib/libc/include/stddef.h
|
||||
+++ src/lib/libc/include/stddef.h
|
||||
@@ -62,6 +62,14 @@ typedef ___wchar_t wchar_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
|
||||
+#ifndef __CLANG_MAX_ALIGN_T_DEFINED
|
||||
+typedef __max_align_t max_align_t;
|
||||
+#define __CLANG_MAX_ALIGN_T_DEFINED
|
||||
+#define __GCC_MAX_ALIGN_T
|
||||
+#endif
|
||||
+#endif
|
||||
+
|
||||
#define offsetof(type, member) __offsetof(type, member)
|
||||
|
||||
#endif /* _STDDEF_H_ */
|
||||
diff --git a/sys/sys/_types.h b/sys/sys/_types.h
|
||||
index ecc1c7e..8736651 100644
|
||||
--- src/lib/libc/sys/sys/_types.h
|
||||
+++ src/lib/libc/sys/sys/_types.h
|
||||
@@ -100,6 +100,11 @@ typedef __uint_least32_t __char32_t;
|
||||
#define _CHAR32_T_DECLARED
|
||||
#endif
|
||||
|
||||
+typedef struct {
|
||||
+ long long __max_align1 __aligned(__alignof__(long long));
|
||||
+ long double __max_align2 __aligned(__alignof__(long double));
|
||||
+} __max_align_t;
|
||||
+
|
||||
typedef __uint32_t __dev_t; /* device number */
|
||||
|
||||
typedef __uint32_t __fixpt_t; /* fixed point number */
|
Loading…
x
Reference in New Issue
Block a user