summaryrefslogtreecommitdiff
path: root/lang/gcc/files/patch-arm-unwind-cxx-support
diff options
context:
space:
mode:
authorGerald Pfeifer <gerald@FreeBSD.org>2017-05-27 23:27:21 +0000
committerGerald Pfeifer <gerald@FreeBSD.org>2017-05-27 23:27:21 +0000
commit868420635bde4a2b382fbee4dd8e09818edb3f36 (patch)
treed646330b3adbc25d86292a5735c1176b46a96994 /lang/gcc/files/patch-arm-unwind-cxx-support
parentMark some ports failing on armv6, for errors classified as "missing_header". (diff)
Essentially replace (or rather reinvent) the lang/gcc port, which more
or less ended up identical to lang/gcc5 now that we differentiate between lang/gccX-devel and lang/gccX ports, by (or as) a meta-port that pulls in the respective lang/gccX port (based on the setting of $GCC_DEFAULT) and defines gcc, g++, and gfortran as symlinks to the respective versioned binaries. This is the end of a long journey establishing this infrastructure which is now similar to the one of the python ports, for example, and makes upgrading the default as well as adjusting the default locally a lot easier. (PORTVERSION remains at 5.4.0 for now to avoid PORTEPOCH, but PORTREVISION gets a bump.) Suggested by: tijl (a while ago)
Diffstat (limited to 'lang/gcc/files/patch-arm-unwind-cxx-support')
-rw-r--r--lang/gcc/files/patch-arm-unwind-cxx-support106
1 files changed, 0 insertions, 106 deletions
diff --git a/lang/gcc/files/patch-arm-unwind-cxx-support b/lang/gcc/files/patch-arm-unwind-cxx-support
deleted file mode 100644
index ec6959b9655c..000000000000
--- a/lang/gcc/files/patch-arm-unwind-cxx-support
+++ /dev/null
@@ -1,106 +0,0 @@
---- UTC
-Index: gcc/ginclude/unwind-arm-common.h
-===================================================================
---- gcc/ginclude/unwind-arm-common.h (revision 219113)
-+++ gcc/ginclude/unwind-arm-common.h (working copy)
-@@ -82,7 +82,11 @@
-
- struct _Unwind_Control_Block
- {
-+#ifdef __FreeBSD__
-+ unsigned exception_class __attribute__((__mode__(__DI__)));
-+#else
- char exception_class[8];
-+#endif
- void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *);
- /* Unwinder cache, private fields for the unwinder's use */
- struct
-@@ -181,7 +185,11 @@
-
- /* Support functions for the PR. */
- #define _Unwind_Exception _Unwind_Control_Block
-+#ifdef __FreeBSD__
-+ typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__)));
-+#else
- typedef char _Unwind_Exception_Class[8];
-+#endif
-
- void * _Unwind_GetLanguageSpecificData (_Unwind_Context *);
- _Unwind_Ptr _Unwind_GetRegionStart (_Unwind_Context *);
-Index: libstdc++-v3/libsupc++/unwind-cxx.h
-===================================================================
---- libstdc++-v3/libsupc++/unwind-cxx.h (revision 219147)
-+++ libstdc++-v3/libsupc++/unwind-cxx.h (working copy)
-@@ -235,7 +235,7 @@
- return reinterpret_cast<__cxa_dependent_exception *>(exc + 1) - 1;
- }
-
--#ifdef __ARM_EABI_UNWINDER__
-+#if defined(__ARM_EABI_UNWINDER__) && !defined(__FreeBSD__)
- static inline bool
- __is_gxx_exception_class(_Unwind_Exception_Class c)
- {
-@@ -309,13 +309,7 @@
- c[6] = 'R';
- c[7] = '\0';
- }
--
--static inline void*
--__gxx_caught_object(_Unwind_Exception* eo)
--{
-- return (void*)eo->barrier_cache.bitpattern[0];
--}
--#else // !__ARM_EABI_UNWINDER__
-+#else // !__ARM_EABI_UNWINDER__ || __FreeBSD__
- // This is the primary exception class we report -- "GNUCC++\0".
- const _Unwind_Exception_Class __gxx_primary_exception_class
- = ((((((((_Unwind_Exception_Class) 'G'
-@@ -339,6 +333,16 @@
- << 8 | (_Unwind_Exception_Class) '+')
- << 8 | (_Unwind_Exception_Class) '\x01');
-
-+const _Unwind_Exception_Class __gxx_forced_unwind_class
-+= ((((((((_Unwind_Exception_Class) 'G'
-+ << 8 | (_Unwind_Exception_Class) 'N')
-+ << 8 | (_Unwind_Exception_Class) 'U')
-+ << 8 | (_Unwind_Exception_Class) 'C')
-+ << 8 | (_Unwind_Exception_Class) 'F')
-+ << 8 | (_Unwind_Exception_Class) 'O')
-+ << 8 | (_Unwind_Exception_Class) 'R')
-+ << 8 | (_Unwind_Exception_Class) '\0');
-+
- static inline bool
- __is_gxx_exception_class(_Unwind_Exception_Class c)
- {
-@@ -346,6 +350,12 @@
- || c == __gxx_dependent_exception_class;
- }
-
-+static inline bool
-+__is_gxx_forced_unwind_class(_Unwind_Exception_Class c)
-+{
-+ return c == __gxx_forced_unwind_class;
-+}
-+
- // Only checks for primary or dependent, but not that it is a C++ exception at
- // all.
- static inline bool
-@@ -357,7 +367,18 @@
- #define __GXX_INIT_PRIMARY_EXCEPTION_CLASS(c) c = __gxx_primary_exception_class
- #define __GXX_INIT_DEPENDENT_EXCEPTION_CLASS(c) \
- c = __gxx_dependent_exception_class
-+#define __GXX_INIT_FORCED_UNWIND_CLASS(c) c = __gxx_forced_unwind_class
-+#endif // __ARM_EABI_UNWINDER__ && !__FreeBSD__
-
-+#ifdef __ARM_EABI_UNWINDER__
-+static inline void*
-+__gxx_caught_object(_Unwind_Exception* eo)
-+{
-+ return (void*)eo->barrier_cache.bitpattern[0];
-+}
-+
-+#else // !__ARM_EABI_UNWINDER__
-+
- // GNU C++ personality routine, Version 0.
- extern "C" _Unwind_Reason_Code __gxx_personality_v0
- (int, _Unwind_Action, _Unwind_Exception_Class,