diff options
author | gerald <gerald@FreeBSD.org> | 2016-06-10 17:04:15 +0800 |
---|---|---|
committer | gerald <gerald@FreeBSD.org> | 2016-06-10 17:04:15 +0800 |
commit | e4a0254d5652937e2af79f16305c2e11d699b43a (patch) | |
tree | a3cd00446cb49d26558d827df776e3011630d548 /lang/gcc6/files | |
parent | 7229ab4b88ff9375ae4a73a219c19411252cc99a (diff) | |
download | freebsd-ports-gnome-e4a0254d5652937e2af79f16305c2e11d699b43a.tar.gz freebsd-ports-gnome-e4a0254d5652937e2af79f16305c2e11d699b43a.tar.zst freebsd-ports-gnome-e4a0254d5652937e2af79f16305c2e11d699b43a.zip |
Welcome to the GCC 6.1 release, the first release of the GCC 6 series.
The default mode for C++ is now -std=gnu++14 instead of -std=gnu++98.
Type-based alias analysis now disambiguates accesses to different pointers.
This improves precision of the alias oracle by about 20-30% on higher-level
C++ programs. Programs doing invalid type punning of pointer types may now
need -fno-strict-aliasing to work correctly.
Value range propagation now assumes that the this pointer of C++ member
functions is non-null. This eliminates common null pointer checks but also
breaks some non-conforming code-bases (such as Qt-5, Chromium, KDevelop).
As a temporary work-around -fno-delete-null-pointer-checks can be used.
Wrong code can be identified by using -fsanitize=undefined.
There have been significant improvements around link-time optimization
and inter-procedural optimization and some support for OpenACC (though
probably not tested on FreeBSD) and version 4.5 of the OpenMP specification.
Source locations for the C and C++ compilers are now tracked as ranges
and diagnostics can now contain "fix-it hints".
New command-line options include -Wshift-negative-value, -Wshift-overflow,
-Wtautological-compare, -Wnull-dereference, -Wduplicated-cond, and
-Wmisleading-indentation.
C++ Concepts are now supported when compiling with -fconcepts, and there
are several other improvements around support for newer C++ features as
well as in the libstdc++ library.
Fortran now features Fortran 2008 SUBMODULE support, Fortran 2015 EVENT_TYPE,
EVENT_POST, EVENT_WAIT, and EVENT_QUERY support, and improved support for
OpenMP and OpenACC.
A lot has happened on the AArch64 and ARM fronts, on x86-64 there is now
Skylake with AVX-512 support, AMD instructions monitorx and mwaitx, and
support for address spaces __seg_fs, __seg_gs, and __seg_tl, as well as
AMD Zen (family 17h) processors, and basic support has been added for POWER9.
https://gcc.gnu.org/gcc-6/changes.html has a more extensive set of
changes and https://gcc.gnu.org/gcc-6/porting_to.html has a solid
overview of issue you may encountering porting to this new version.
Diffstat (limited to 'lang/gcc6/files')
-rw-r--r-- | lang/gcc6/files/java-patch-hier | 11 | ||||
-rw-r--r-- | lang/gcc6/files/patch-arm-unwind-cxx-support | 106 | ||||
-rw-r--r-- | lang/gcc6/files/patch-unwind-ia64.h | 21 | ||||
-rw-r--r-- | lang/gcc6/files/pkg-message.in | 7 |
4 files changed, 145 insertions, 0 deletions
diff --git a/lang/gcc6/files/java-patch-hier b/lang/gcc6/files/java-patch-hier new file mode 100644 index 000000000000..8dd7f4637f70 --- /dev/null +++ b/lang/gcc6/files/java-patch-hier @@ -0,0 +1,11 @@ +--- libjava/Makefile.in 2013-05-26 22:33:07.000000000 +0000 ++++ libjava/Makefile.in 2013-05-31 21:19:23.000000000 +0000 +@@ -941,7 +941,7 @@ + @BUILD_SUBLIBS_FALSE@LIBJAVA_CORE_EXTRA = + @BUILD_SUBLIBS_TRUE@LIBJAVA_CORE_EXTRA = @LIBGCJ_SUBLIB_CORE_EXTRA_DEPS@ + dbexec_LTLIBRARIES = libjvm.la +-pkgconfigdir = $(toolexeclibdir)/pkgconfig ++pkgconfigdir = $(prefix)/libdata/pkgconfig + jardir = $(datadir)/java + jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar \ + $(am__append_5) diff --git a/lang/gcc6/files/patch-arm-unwind-cxx-support b/lang/gcc6/files/patch-arm-unwind-cxx-support new file mode 100644 index 000000000000..ec6959b9655c --- /dev/null +++ b/lang/gcc6/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/gcc6/files/patch-unwind-ia64.h b/lang/gcc6/files/patch-unwind-ia64.h new file mode 100644 index 000000000000..82e103a543c5 --- /dev/null +++ b/lang/gcc6/files/patch-unwind-ia64.h @@ -0,0 +1,21 @@ +2012-12-17 Gerald Pfeifer <gerald@pfeifer.com> + Anton Shterenlikht <mexas@bristol.ac.uk> + + PR target/45650 + * config/ia64/unwind-ia64.h: Do not mark _Unwind_FindTableEntry + hidden on FreeBSD. + +--- UTC +Index: libgcc/config/ia64/unwind-ia64.h +=================================================================== +--- libgcc/config/ia64/unwind-ia64.h ++++ libgcc/config/ia64/unwind-ia64.h (working copy) +@@ -49,4 +49,7 @@ + extern struct unw_table_entry * + _Unwind_FindTableEntry (void *pc, unw_word *segment_base, + unw_word *gp, struct unw_table_entry *ent) +- __attribute__ ((__visibility__ ("hidden"))); ++#ifndef __FreeBSD__ ++ __attribute__ ((__visibility__ ("hidden"))) ++#endif ++ ; diff --git a/lang/gcc6/files/pkg-message.in b/lang/gcc6/files/pkg-message.in new file mode 100644 index 000000000000..433c37a3f89b --- /dev/null +++ b/lang/gcc6/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. |