diff options
author | Gerald Pfeifer <gerald@FreeBSD.org> | 2018-05-06 20:43:46 +0000 |
---|---|---|
committer | Gerald Pfeifer <gerald@FreeBSD.org> | 2018-05-06 20:43:46 +0000 |
commit | db23a2053a7ef0f9494a2e481df7a50e47e5bc8a (patch) | |
tree | 874f7de4f7d3f765d9bba17604be09c2b0ac3b5c /lang/gcc9-devel/files | |
parent | Fix dependency on gpu-firmware-kmod (diff) |
Now that GCC 8.1 has been released and the GCC 8 branch created, GCC
mainline has become GCC 9 and the 20180429 snapshot of GCC 9.0.0 is
the first of its kind.
Accordingly introduce the gcc9-devel port to track this development
of what ultimately is going to become the GCC 9 release series.
Diffstat (limited to 'lang/gcc9-devel/files')
-rw-r--r-- | lang/gcc9-devel/files/patch-arm-unwind-cxx-support | 106 | ||||
-rw-r--r-- | lang/gcc9-devel/files/patch-spe-config | 15 | ||||
-rw-r--r-- | lang/gcc9-devel/files/pkg-message.in | 7 |
3 files changed, 128 insertions, 0 deletions
diff --git a/lang/gcc9-devel/files/patch-arm-unwind-cxx-support b/lang/gcc9-devel/files/patch-arm-unwind-cxx-support new file mode 100644 index 000000000000..ec6959b9655c --- /dev/null +++ b/lang/gcc9-devel/files/patch-arm-unwind-cxx-support @@ -0,0 +1,106 @@ +--- 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, diff --git a/lang/gcc9-devel/files/patch-spe-config b/lang/gcc9-devel/files/patch-spe-config new file mode 100644 index 000000000000..16639828cfb4 --- /dev/null +++ b/lang/gcc9-devel/files/patch-spe-config @@ -0,0 +1,15 @@ +--- UTC +Index: gcc/config.gcc +=================================================================== +--- gcc/config.gcc.old 2017-04-05 17:48:03.045750000 -0500 ++++ gcc/config.gcc 2017-04-05 17:49:22.143572000 -0500 +@@ -2383,6 +2383,9 @@ + tmake_file="${tmake_file} rs6000/t-freebsd64" + extra_options="${extra_options} rs6000/linux64.opt" + ;; ++ powerpcspe-*) ++ tm_file="${tm_file} powerpcspe/freebsd.h powerpcspe/linuxspe.h powerpcspe/e500.h" ++ ;; + *) + tm_file="${tm_file} rs6000/freebsd.h" + ;; diff --git a/lang/gcc9-devel/files/pkg-message.in b/lang/gcc9-devel/files/pkg-message.in new file mode 100644 index 000000000000..433c37a3f89b --- /dev/null +++ b/lang/gcc9-devel/files/pkg-message.in @@ -0,0 +1,7 @@ +To ensure binaries built with this toolchain find appropriate versions +of the necessary run-time libraries, you may want to link using + + -Wl,-rpath=%%TARGLIB%% + +For ports leveraging USE_GCC, USES=compiler, or USES=fortran this happens +transparently. |