1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-05 06:27:37 +00:00

Update to the GCC 6.4.0 upstream release which carries a number of fixes.

This now comes as an xz archive, so update USES=tar accordingly.

Also this now includes
  files/patch-aarch64-support,
  files/patch-libgcc-config-arm-unwind-arm, and
  files/patch-x86-64-fix-m16
which andreast@ and me pushed upstream.

On the other hand we gain bin/gcov-dump6 and man pages for gcov-dump6
and gcov-tool6.

Finally, as with lang/gcc5 and lang/gcc6-devel, remove headers being
created by GCC's fixincludes machinery from the installation / packaging
to avoid breakage when FreeBSD's headers are changing afterwards.
This commit is contained in:
Gerald Pfeifer 2017-07-08 09:57:58 +00:00
parent 6599403893
commit 5b0478c11f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=445313
6 changed files with 9 additions and 317 deletions

View File

@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= gcc
PORTVERSION= 6.3.0
PORTREVISION= 3
PORTVERSION= 6.4.0
CATEGORIES= lang java
MASTER_SITES= GCC/releases/gcc-${DISTVERSION}
PKGNAMESUFFIX= ${SUFFIX}
@ -31,7 +30,7 @@ CPE_VENDOR= gnu
GCC_VERSION= ${PORTVERSION}
SUFFIX= ${PORTVERSION:C/([0-9]+).*/\1/}
ONLY_FOR_ARCHS= aarch64 amd64 arm armv6 i386 powerpc powerpc64 sparc64
USES= compiler cpe gmake iconv libtool makeinfo perl5 tar:bzip2
USES= compiler cpe gmake iconv libtool makeinfo perl5 tar:xz
USE_BINUTILS= yes
USE_PERL5= build
SSP_UNSAFE= yes
@ -163,6 +162,7 @@ post-stage:
${RM} ${STAGEDIR}${PREFIX}/man/man7/*
${RM} ${STAGEDIR}${PREFIX}/bin/rebuild-gcj-db${SUFFIX} \
${STAGEDIR}${PREFIX}/man/man1/rebuild-gcj-db${SUFFIX}.1
${RM} -r ${STAGEDIR}${TARGLIB}/gcc/*/${GCC_VERSION}/include-fixed/
# Add target libraries and include files to packaging list.
${RM} ${WRKDIR}/PLIST.lib
.for d in ${TARGLIB:S/^${PREFIX}\///} ${LIBEXEC:S/^${PREFIX}\///} include/gcj include/gnu include/java include/javax

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1482692157
SHA256 (gcc-6.3.0.tar.bz2) = f06ae7f3f790fbf0f018f6d40e844451e6bc3b7bc96e128e63b09825c1f8b29f
SIZE (gcc-6.3.0.tar.bz2) = 99903185
TIMESTAMP = 1499443012
SHA256 (gcc-6.4.0.tar.xz) = 850bf21eafdfe5cd5f6827148184c08c4a0852a37ccf36ce69855334d2c914d4
SIZE (gcc-6.4.0.tar.xz) = 76156220

View File

@ -1,235 +0,0 @@
--- UTC
--- configure.ac.orig 2016-03-17 23:54:19.000000000 +0100
+++ configure.ac 2016-10-20 21:29:03.780044000 +0200
@@ -819,6 +819,9 @@
*-*-vxworks*)
noconfigdirs="$noconfigdirs ${libgcj}"
;;
+ aarch64*-*-freebsd*)
+ noconfigdirs="$noconfigdirs ${libgcj}"
+ ;;
alpha*-*-*vms*)
noconfigdirs="$noconfigdirs ${libgcj}"
;;
--- configure.orig 2016-03-17 23:54:19.000000000 +0100
+++ configure 2016-10-20 21:29:03.779159000 +0200
@@ -3483,6 +3483,9 @@
*-*-vxworks*)
noconfigdirs="$noconfigdirs ${libgcj}"
;;
+ aarch64*-*-freebsd*)
+ noconfigdirs="$noconfigdirs ${libgcj}"
+ ;;
alpha*-*-*vms*)
noconfigdirs="$noconfigdirs ${libgcj}"
;;
--- libgcc/config.host.orig 2016-05-17 08:15:52.000000000 +0200
+++ libgcc/config.host 2016-10-20 21:29:03.782426000 +0200
@@ -333,6 +333,11 @@
tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
;;
+aarch64*-*-freebsd*)
+ extra_parts="$extra_parts crtfastmath.o"
+ tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
+ tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
+ ;;
aarch64*-*-linux*)
extra_parts="$extra_parts crtfastmath.o"
md_unwind_header=aarch64/linux-unwind.h
--- gcc/config.host.orig 2016-01-04 15:30:50.000000000 +0100
+++ gcc/config.host 2016-10-20 21:29:03.781971000 +0200
@@ -99,7 +99,7 @@
esac
case ${host} in
- aarch64*-*-linux*)
+ aarch64*-*-freebsd* | aarch64*-*-linux*)
case ${target} in
aarch64*-*-*)
host_extra_gcc_objs="driver-aarch64.o"
--- gcc/config.gcc.orig 2016-06-08 15:34:25.000000000 +0200
+++ gcc/config.gcc 2016-10-20 21:29:03.781684000 +0200
@@ -941,6 +941,11 @@
done
TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
;;
+aarch64*-*-freebsd*)
+ tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}"
+ tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-freebsd.h"
+ tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
+ ;;
aarch64*-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h"
--- gcc/config/aarch64/t-aarch64-freebsd.orig 2016-10-20 21:29:03.780409000 +0200
+++ gcc/config/aarch64/t-aarch64-freebsd 2016-10-20 21:29:03.780540000 +0200
@@ -0,0 +1,21 @@
+# Machine description for AArch64 architecture.
+# Copyright (C) 2016 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+LIB1ASMSRC = aarch64/lib1funcs.asm
+LIB1ASMFUNCS = _aarch64_sync_cache_range
--- gcc/config/aarch64/aarch64-freebsd.h.orig 2016-10-20 21:29:03.780130000 +0200
+++ gcc/config/aarch64/aarch64-freebsd.h 2016-10-20 21:29:03.780349000 +0200
@@ -0,0 +1,99 @@
+/* Definitions for AArch64 running FreeBSD
+ Copyright (C) 2016 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3. If not see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef GCC_AARCH64_FREEBSD_H
+#define GCC_AARCH64_FREEBSD_H
+
+#undef SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC FBSD_CPP_SPEC
+
+#if TARGET_BIG_ENDIAN_DEFAULT
+#define TARGET_LINKER_EMULATION "aarch64fbsdb"
+#else
+#define TARGET_LINKER_EMULATION "aarch64fbsd"
+#endif
+
+#undef SUBTARGET_EXTRA_LINK_SPEC
+#define SUBTARGET_EXTRA_LINK_SPEC " -m" TARGET_LINKER_EMULATION
+
+#undef FBSD_TARGET_LINK_SPEC
+#define FBSD_TARGET_LINK_SPEC " \
+ %{p:%nconsider using `-pg' instead of `-p' with gprof (1) } \
+ %{v:-V} \
+ %{assert*} %{R*} %{rpath*} %{defsym*} \
+ %{shared:-Bshareable %{h*} %{soname*}} \
+ %{symbolic:-Bsymbolic} \
+ %{static:-Bstatic} \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!shared:-dynamic-linker " FBSD_DYNAMIC_LINKER " }} \
+ -X" SUBTARGET_EXTRA_LINK_SPEC " \
+ %{mbig-endian:-EB} %{mlittle-endian:-EL}"
+
+#if TARGET_FIX_ERR_A53_835769_DEFAULT
+#define CA53_ERR_835769_SPEC \
+ " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#else
+#define CA53_ERR_835769_SPEC \
+ " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#endif
+
+#ifdef TARGET_FIX_ERR_A53_843419_DEFAULT
+#define CA53_ERR_843419_SPEC \
+ " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#else
+#define CA53_ERR_843419_SPEC \
+ " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#endif
+
+#undef LINK_SPEC
+#define LINK_SPEC FBSD_TARGET_LINK_SPEC \
+ CA53_ERR_835769_SPEC \
+ CA53_ERR_843419_SPEC
+
+#define GNU_USER_TARGET_MATHFILE_SPEC \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC \
+ GNU_USER_TARGET_MATHFILE_SPEC " " \
+ FBSD_ENDFILE_SPEC
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ FBSD_TARGET_OS_CPP_BUILTINS (); \
+ } \
+ while (false)
+
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
+/* Uninitialized common symbols in non-PIE executables, even with
+ strong definitions in dependent shared libraries, will resolve
+ to COPY relocated symbol in the executable. See PR65780. */
+#undef TARGET_BINDS_LOCAL_P
+#define TARGET_BINDS_LOCAL_P default_binds_local_p_2
+
+/* Use the AAPCS type for wchar_t, override the one from
+ config/freebsd.h. */
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "unsigned int"
+
+#endif /* GCC_AARCH64_FREEBSD_H */
Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c (revision 244100)
+++ gcc/dwarf2out.c (working copy)
@@ -23752,7 +23752,16 @@
{
dw_die_ref die = lookup_decl_die (decl);
if (die)
- add_location_or_const_value_attribute (die, decl, false);
+ {
+ /* We get called via the symtab code invoking late_global_decl
+ for symbols that are optimized out. Do not add locations
+ for those. */
+ varpool_node *node = varpool_node::get (decl);
+ if (! node || ! node->definition)
+ tree_add_const_value_attribute_for_decl (die, decl);
+ else
+ add_location_or_const_value_attribute (die, decl, false);
+ }
}
}
Index: gcc/cgraphunit.c
===================================================================
--- gcc/cgraphunit.c (revision 244100)
+++ gcc/cgraphunit.c (working copy)
@@ -1193,8 +1193,16 @@
at looking at optimized away DECLs, since
late_global_decl will subsequently be called from the
contents of the now pruned symbol table. */
- if (!decl_function_context (node->decl))
- (*debug_hooks->late_global_decl) (node->decl);
+ if (VAR_P (node->decl)
+ && !decl_function_context (node->decl))
+ {
+ /* We are reclaiming totally unreachable code and variables
+ so they effectively appear as readonly. Show that to
+ the debug machinery. */
+ TREE_READONLY (node->decl) = 1;
+ node->definition = false;
+ (*debug_hooks->late_global_decl) (node->decl);
+ }
node->remove ();
continue;

View File

@ -1,51 +0,0 @@
--- UTC
--- libgcc/config/arm/unwind-arm.h.orig 2017-05-20 23:16:46.089160000 +0200
+++ libgcc/config/arm/unwind-arm.h 2017-05-20 23:17:17.447204000 +0200
@@ -72,12 +72,19 @@
{
return _URC_FAILURE;
}
+#ifndef __FreeBSD__
/* Return the address of the instruction, not the actual IP value. */
#define _Unwind_GetIP(context) \
(_Unwind_GetGR (context, 15) & ~(_Unwind_Word)1)
#define _Unwind_SetIP(context, val) \
_Unwind_SetGR (context, 15, val | (_Unwind_GetGR (context, 15) & 1))
+#else
+ #undef _Unwind_GetIPInfo
+ _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
+ _Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *);
+ void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
+#endif
#ifdef __cplusplus
} /* extern "C" */
--- libgcc/config/arm/unwind-arm.c.orig 2017-05-20 23:16:46.089435000 +0200
+++ libgcc/config/arm/unwind-arm.c 2017-05-20 23:17:17.447479000 +0200
@@ -509,3 +509,25 @@
{
return __gnu_unwind_pr_common (state, ucbp, context, 2);
}
+
+#ifdef __FreeBSD__
+/* FreeBSD expects these to be functions */
+inline _Unwind_Ptr
+_Unwind_GetIP (struct _Unwind_Context *context)
+{
+ return _Unwind_GetGR (context, 15) & ~(_Unwind_Word)1;
+}
+
+inline _Unwind_Ptr
+_Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn)
+{
+ *ip_before_insn = 0;
+ return _Unwind_GetIP (context);
+}
+
+inline void
+_Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
+{
+ _Unwind_SetGR (context, 15, val | (_Unwind_GetGR (context, 15) & 1));
+}
+#endif

View File

@ -1,25 +0,0 @@
At the moment the -m16 option only passes the "--32" parameter to the
assembler on glibc OSes, while on other OSes the assembler is called
without any specific flag. This is wrong and causes the assembler to
fail. Fix it by adding support for the -m16 option to x86-64.h.
2016-07-06 Roger Pau Monné <roger.pau@citrix.com>
* x86-64.h: append --32 to the assembler options when -m16 is used
even on non-glibc OSes.
This should be backported to all stable branches up to 4.9 (when -m16 was
introduced).
--- UTC
--- gcc/config/i386/x86-64.h
+++ gcc/config/i386/x86-64.h
@@ -49,7 +49,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define WCHAR_TYPE_SIZE 32
#undef ASM_SPEC
-#define ASM_SPEC "%{m32:--32} %{m64:--64} %{mx32:--x32}"
+#define ASM_SPEC "%{m16|m32:--32} %{m64:--64} %{mx32:--x32}"
#undef ASM_OUTPUT_ALIGNED_BSS
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \

View File

@ -14,6 +14,7 @@ bin/gcc-ar%%SUFFIX%%
bin/gcc-nm%%SUFFIX%%
bin/gcc-ranlib%%SUFFIX%%
bin/gcov%%SUFFIX%%
bin/gcov-dump%%SUFFIX%%
bin/gcov-tool%%SUFFIX%%
bin/gfortran%%SUFFIX%%
@comment info/gcc%%SUFFIX%%/dir
@ -21,6 +22,8 @@ man/man1/cpp%%SUFFIX%%.1.gz
man/man1/g++%%SUFFIX%%.1.gz
man/man1/gcc%%SUFFIX%%.1.gz
man/man1/gcov%%SUFFIX%%.1.gz
man/man1/gcov-dump%%SUFFIX%%.1.gz
man/man1/gcov-tool%%SUFFIX%%.1.gz
man/man1/gfortran%%SUFFIX%%.1.gz
%%JAVA%%share/gcc-%%GCC_VERSION%%/python/libjava/aotcompile.py
%%JAVA%%share/gcc-%%GCC_VERSION%%/python/libjava/classfile.py