aboutsummaryrefslogtreecommitdiffstats
path: root/lang/gcc6/files
diff options
context:
space:
mode:
authorgerald <gerald@FreeBSD.org>2016-06-10 17:04:15 +0800
committergerald <gerald@FreeBSD.org>2016-06-10 17:04:15 +0800
commite4a0254d5652937e2af79f16305c2e11d699b43a (patch)
treea3cd00446cb49d26558d827df776e3011630d548 /lang/gcc6/files
parent7229ab4b88ff9375ae4a73a219c19411252cc99a (diff)
downloadfreebsd-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-hier11
-rw-r--r--lang/gcc6/files/patch-arm-unwind-cxx-support106
-rw-r--r--lang/gcc6/files/patch-unwind-ia64.h21
-rw-r--r--lang/gcc6/files/pkg-message.in7
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.