[Midnightbsd-cvs] mports [19119] trunk/lang: add gcc 4.8 port that is not a snap.

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Wed May 27 20:36:21 EDT 2015


Revision: 19119
          http://svnweb.midnightbsd.org/mports/?rev=19119
Author:   laffer1
Date:     2015-05-27 20:36:20 -0400 (Wed, 27 May 2015)
Log Message:
-----------
add gcc 4.8 port that is not a snap. this is the default gcc port from now on. also update the 4.8 snap port and remove the really old 3.4 release

Modified Paths:
--------------
    trunk/lang/Makefile
    trunk/lang/gcc48/Makefile
    trunk/lang/gcc48/distinfo
    trunk/lang/gcc48/pkg-plist

Added Paths:
-----------
    trunk/lang/gcc/
    trunk/lang/gcc/Makefile
    trunk/lang/gcc/distinfo
    trunk/lang/gcc/files/
    trunk/lang/gcc/files/java-patch-hier
    trunk/lang/gcc/files/patch-arm-libcpp
    trunk/lang/gcc/files/patch-arm-support
    trunk/lang/gcc/files/patch-libcpp
    trunk/lang/gcc/files/pkg-message.in
    trunk/lang/gcc/pkg-descr
    trunk/lang/gcc/pkg-plist
    trunk/lang/gcc48/files/patch-stackprotector-gcc
    trunk/lang/gcc48/files/patch-stackprotector-gcc_c-family
    trunk/lang/gcc48/files/patch-stackprotector-gcc_doc
    trunk/lang/gcc48/files/patch-stackprotector-gcc_testsuite
    trunk/lang/gcc48/files/pkg-message.in

Removed Paths:
-------------
    trunk/lang/gcc34/

Modified: trunk/lang/Makefile
===================================================================
--- trunk/lang/Makefile	2015-05-28 00:12:19 UTC (rev 19118)
+++ trunk/lang/Makefile	2015-05-28 00:36:20 UTC (rev 19119)
@@ -19,7 +19,7 @@
 SUBDIR += fpc
 SUBDIR += fpc-utils
 SUBDIR += gawk
-SUBDIR += gcc34
+SUBDIR += gcc
 SUBDIR += gcc42
 SUBDIR += gcc46
 SUBDIR += gcc47

Added: trunk/lang/gcc/Makefile
===================================================================
--- trunk/lang/gcc/Makefile	                        (rev 0)
+++ trunk/lang/gcc/Makefile	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,141 @@
+# $FreeBSD: head/lang/gcc/Makefile 385140 2015-05-01 18:54:47Z gerald $
+# $MidnightBSD$
+
+PORTNAME=	gcc
+PORTVERSION=	4.8.4
+CATEGORIES=	lang java
+MASTER_SITES=	GCC/releases/gcc-${DISTVERSION}
+
+MAINTAINER=	ports at MidnightBSD.org
+COMMENT=	GNU Compiler Collection 4.8
+
+LICENSE=	gpl3
+
+LIB_DEPENDS=	libgmp.so:${PORTSDIR}/math/gmp \
+		libmpfr.so:${PORTSDIR}/math/mpfr \
+		libmpc.so:${PORTSDIR}/math/mpc
+BUILD_DEPENDS+=	${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
+RUN_DEPENDS+=	${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
+
+.if defined(MAINTAINER_MODE)
+BUILD_DEPENDS+=	runtest:${PORTSDIR}/misc/dejagnu
+.endif
+
+CONFLICTS=	gcc48*
+CPE_VENDOR=	gnu
+
+# DISTVERSION relates to downloads, GCC_VERSION and SUFFIX to names
+# of executables and directories once installed.
+DISTVERSION=	${PORTVERSION}
+GCC_VERSION=	${PORTVERSION:C/(.+)\.[0-9]{8}/\1/}
+SUFFIX=		${PORTVERSION:C/([0-9]+).([0-9]+).*/\1\2/}
+USES=		cpe gmake iconv libtool makeinfo perl5 tar:bzip2
+USE_BINUTILS=	yes
+USE_PERL5=	build
+SSP_UNSAFE=	yes
+
+PATCH_WRKSRC=	${SRCDIR}
+CONFIGURE_SCRIPT=	../${SRCDIR:S/${WRKDIR}\///}/configure
+
+OPTIONS_DEFINE=		BOOTSTRAP
+OPTIONS_DEFINE_i386=	JAVA
+OPTIONS_DEFINE_amd64=	JAVA
+OPTIONS_DEFAULT_i386=	JAVA
+OPTIONS_DEFAULT_amd64=	JAVA
+BOOTSTRAP_DESC=		Build using a full bootstrap
+
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == "amd64"
+CONFIGURE_TARGET=	x86_64-portbld-freebsd9.1
+.else
+CONFIGURE_TARGET=	${ARCH}-portbld-freebsd9.1
+.endif
+
+LANGUAGES:=	c,c++,objc,fortran
+SRCDIR=		${WRKDIR}/gcc-${DISTVERSION}
+WRKSRC=		${WRKDIR}/build
+TARGLIB=	${PREFIX}/lib/gcc${SUFFIX}
+LIBEXEC=	${PREFIX}/libexec/gcc${SUFFIX}
+GNU_CONFIGURE=	yes
+.if empty(PORT_OPTIONS:MBOOTSTRAP)
+CONFIGURE_ARGS+=--disable-bootstrap
+.else
+CONFIGURE_ARGS+=--with-build-config=bootstrap-debug
+ALL_TARGET=	bootstrap-lean
+.endif
+CONFIGURE_ARGS+=--disable-nls \
+		--enable-gnu-indirect-function \
+		--libdir=${TARGLIB} \
+		--libexecdir=${LIBEXEC} \
+		--program-suffix=${SUFFIX} \
+		--with-as=${LOCALBASE}/bin/as \
+		--with-gmp=${LOCALBASE} \
+		--with-gxx-include-dir=${TARGLIB}/include/c++/ \
+		--with-ld=${LOCALBASE}/bin/ld \
+		${ICONV_CONFIGURE_ARG} \
+		--with-pkgversion="MidnightBSD Ports Collection" \
+		--with-system-zlib
+MAKE_ARGS+=	MAKEINFOFLAGS="--no-split"
+USE_LDCONFIG=	${TARGLIB}
+PLIST_SUB=	GCC_VERSION=${GCC_VERSION} \
+		GNU_HOST=${CONFIGURE_TARGET} \
+		SUFFIX=${SUFFIX}
+INFO=		gcc${SUFFIX}/cpp \
+		gcc${SUFFIX}/cppinternals \
+		gcc${SUFFIX}/gcc \
+		gcc${SUFFIX}/gccinstall \
+		gcc${SUFFIX}/gccint \
+		gcc${SUFFIX}/gfortran \
+		gcc${SUFFIX}/libgomp
+# Release tarballs (as opposed to snapshots) always carry this.
+INFO+=		gcc${SUFFIX}/libquadmath \
+		gcc${SUFFIX}/libitm
+SUB_FILES=	pkg-message
+SUB_LIST+=	TARGLIB=${TARGLIB}
+
+.if ${PORT_OPTIONS:MJAVA}
+ECJ_JAR=	${LOCALBASE}/share/java/ecj-4.5.jar
+BUILD_DEPENDS+=	${ECJ_JAR}:${PORTSDIR}/lang/gcc-ecj45 \
+		zip:${PORTSDIR}/archivers/zip
+RUN_DEPENDS+=	${ECJ_JAR}:${PORTSDIR}/lang/gcc-ecj45
+EXTRA_PATCHES+=	${FILESDIR}/java-patch-hier
+CONFIGURE_ARGS+=--with-ecj-jar=${ECJ_JAR}
+LANGUAGES:=	${LANGUAGES},java
+INFO+=		gcc${SUFFIX}/cp-tools \
+		gcc${SUFFIX}/gcj
+PLIST_SUB+=	JAVA=""
+.else
+CONFIGURE_ARGS+=--disable-libgcj
+PLIST_SUB+=	JAVA="@comment "
+.endif
+CONFIGURE_ARGS+=--enable-languages=${LANGUAGES}
+
+pre-everything::
+	@${ECHO_MSG} "Making GCC ${PORTVERSION} for ${CONFIGURE_TARGET} [${LANGUAGES}]"
+
+pre-configure:
+	cd ${SRCDIR} ; contrib/gcc_update --touch
+	@${RM} -f ${SRCDIR}/gcc/*/*.info*
+	@${MKDIR} ${CONFIGURE_WRKSRC}
+
+.if defined(MAINTAINER_MODE)
+full-regression-test: build
+	cd ${WRKSRC}; ${MAKE_CMD} -sk check \
+	; ${SRCDIR}/contrib/test_summary
+.endif
+
+post-install:
+	${RM} -f ${PREFIX}/man/man7/*
+	${RM} -f ${PREFIX}/bin/rebuild-gcj-db${SUFFIX} \
+	         ${PREFIX}/man/man1/rebuild-gcj-db${SUFFIX}.1
+	# Add target libraries and include files to packaging list.
+	${RM} -f ${WRKDIR}/PLIST.lib
+.for d in ${TARGLIB:S/^${PREFIX}\///} ${LIBEXEC:S/^${PREFIX}\///} include/gcj include/gnu include/java include/javax
+	cd ${PREFIX} ; if [ -d $d ]; then \
+	    ${FIND} $d -type f -o -type l >>${WRKDIR}/PLIST.lib ;\
+	fi
+.endfor
+	cd ${WRKDIR} ; ${SED} -i -e "/PLIST.lib/ r PLIST.lib" ${TMPPLIST}
+
+.include <bsd.port.post.mk>


Property changes on: trunk/lang/gcc/Makefile
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc/distinfo
===================================================================
--- trunk/lang/gcc/distinfo	                        (rev 0)
+++ trunk/lang/gcc/distinfo	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,2 @@
+SHA256 (gcc-4.8.4.tar.bz2) = 4a80aa23798b8e9b5793494b8c976b39b8d9aa2e53cd5ed5534aff662a7f8695
+SIZE (gcc-4.8.4.tar.bz2) = 86220648


Property changes on: trunk/lang/gcc/distinfo
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc/files/java-patch-hier
===================================================================
--- trunk/lang/gcc/files/java-patch-hier	                        (rev 0)
+++ trunk/lang/gcc/files/java-patch-hier	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,13 @@
+Index: libjava/Makefile.in
+===================================================================
+--- libjava/Makefile.in	(revision 117734)
++++ libjava/Makefile.in	(working copy)
+@@ -712,7 +712,7 @@
+ 	$(am__append_2) $(am__append_3)
+ toolexecmainlib_DATA = libgcj.spec
+ dbexec_LTLIBRARIES = libjvm.la
+-pkgconfigdir = $(libdir)/pkgconfig
++pkgconfigdir = $(prefix)/libdata/pkgconfig
+ jardir = $(datadir)/java
+ jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar
+ @JAVA_HOME_SET_FALSE at JAVA_HOME_DIR = $(prefix)


Property changes on: trunk/lang/gcc/files/java-patch-hier
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc/files/patch-arm-libcpp
===================================================================
--- trunk/lang/gcc/files/patch-arm-libcpp	                        (rev 0)
+++ trunk/lang/gcc/files/patch-arm-libcpp	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,24 @@
+Index: libcpp/configure
+===================================================================
+--- libcpp/configure	(revision 218760)
++++ libcpp/configure	(working copy)
+@@ -7153,6 +7153,7 @@
+ 	aarch64*-*-* | \
+ 	alpha*-*-* | \
+ 	arm*-*-*eabi* | \
++	arm*-*-freebsd* | \
+ 	arm*-*-rtems* | \
+ 	arm*-*-symbianelf* | \
+ 	x86_64-*-* | \
+Index: libcpp/configure.ac
+===================================================================
+--- libcpp/configure.ac	(revision 218760)
++++ libcpp/configure.ac	(working copy)
+@@ -185,6 +185,7 @@
+ 	aarch64*-*-* | \
+ 	alpha*-*-* | \
+ 	arm*-*-*eabi* | \
++	arm*-*-freebsd* | \
+ 	arm*-*-rtems* | \
+ 	arm*-*-symbianelf* | \
+ 	x86_64-*-* | \


Property changes on: trunk/lang/gcc/files/patch-arm-libcpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc/files/patch-arm-support
===================================================================
--- trunk/lang/gcc/files/patch-arm-support	                        (rev 0)
+++ trunk/lang/gcc/files/patch-arm-support	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,744 @@
+Index: configure
+===================================================================
+--- configure	(revision 218760)
++++ configure	(working copy)
+@@ -3352,6 +3352,9 @@
+   alpha*-*-*vms*)
+     noconfigdirs="$noconfigdirs ${libgcj}"
+     ;;
++  arm*-*-freebsd*)
++    noconfigdirs="$noconfigdirs ${libgcj}"
++    ;;
+   arm-wince-pe)
+     noconfigdirs="$noconfigdirs ${libgcj}"
+     ;;
+Index: configure.ac
+===================================================================
+--- configure.ac	(revision 218760)
++++ configure.ac	(working copy)
+@@ -691,6 +691,9 @@
+   alpha*-*-*vms*)
+     noconfigdirs="$noconfigdirs ${libgcj}"
+     ;;
++  arm*-*-freebsd*)
++    noconfigdirs="$noconfigdirs ${libgcj}"
++    ;;
+   arm-wince-pe)
+     noconfigdirs="$noconfigdirs ${libgcj}"
+     ;;
+Index: gcc/config/arm/arm.c
+===================================================================
+--- gcc/config/arm/arm.c	(revision 218760)
++++ gcc/config/arm/arm.c	(working copy)
+@@ -1239,7 +1239,7 @@
+ {
+   /* For Linux, we have access to kernel support for atomic operations.  */
+   if (arm_abi == ARM_ABI_AAPCS_LINUX)
+-    init_sync_libfuncs (2 * UNITS_PER_WORD);
++    init_sync_libfuncs (MAX_SYNC_LIBFUNC_SIZE);
+ 
+   /* There are no special library functions unless we are using the
+      ARM BPABI.  */
+Index: gcc/config/arm/arm.h
+===================================================================
+--- gcc/config/arm/arm.h	(revision 218760)
++++ gcc/config/arm/arm.h	(working copy)
+@@ -720,6 +720,11 @@
+ #define PCC_BITFIELD_TYPE_MATTERS TARGET_AAPCS_BASED
+ #endif
+ 
++/* The maximum size of the sync library functions supported.  */
++#ifndef MAX_SYNC_LIBFUNC_SIZE
++#define MAX_SYNC_LIBFUNC_SIZE (2 * UNITS_PER_WORD);
++#endif
++
+ 

+ /* Standard register usage.  */
+ 
+Index: gcc/config/arm/freebsd.h
+===================================================================
+--- gcc/config/arm/freebsd.h	(revision 0)
++++ gcc/config/arm/freebsd.h	(working copy)
+@@ -0,0 +1,180 @@
++/* Definitions of target machine for GNU compiler, FreeBSD/arm version.
++   Copyright (C) 2002-2014 Free Software Foundation, Inc.
++   Contributed by Wasabi Systems, 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.
++
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
++
++   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/>.  */
++
++#undef  SUBTARGET_CPP_SPEC
++#define SUBTARGET_CPP_SPEC FBSD_CPP_SPEC
++
++#undef  SUBTARGET_EXTRA_SPECS
++#define SUBTARGET_EXTRA_SPECS					\
++  { "subtarget_extra_asm_spec",	SUBTARGET_EXTRA_ASM_SPEC },	\
++  { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC }, 	\
++  { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
++
++#undef SUBTARGET_EXTRA_ASM_SPEC
++#define SUBTARGET_EXTRA_ASM_SPEC \
++  "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5} " TARGET_FIX_V4BX_SPEC " \
++  %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
++
++#undef SUBTARGET_ASM_FLOAT_SPEC
++#ifdef TARGET_FREEBSD_ARM_HARD_FLOAT
++/* Default to full vfp if we build for arm*hf.  */
++#define SUBTARGET_ASM_FLOAT_SPEC "%{!mfpu=*:-mfpu=vfp}"
++#else
++#define SUBTARGET_ASM_FLOAT_SPEC "%{!mfpu=*:-mfpu=softvfp}"
++#endif
++
++#undef	LINK_SPEC
++#define LINK_SPEC "							\
++  %{p:%nconsider using `-pg' instead of `-p' with gprof (1) }		\
++  %{v:-V}								\
++  %{assert*} %{R*} %{rpath*} %{defsym*}					\
++  %{shared:-Bshareable %{h*} %{soname*}}				\
++  %{!shared:								\
++    %{!static:								\
++      %{rdynamic:-export-dynamic}					\
++      %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }}	\
++    %{static:-Bstatic}}							\
++  %{!static:--hash-style=both --enable-new-dtags}			\
++  %{symbolic:-Bsymbolic}						\
++  -X %{mbig-endian:-EB} %{mlittle-endian:-EL}"
++
++/* TARGET_BIG_ENDIAN_DEFAULT is set in
++   config.gcc for big endian configurations.  */
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define TARGET_ENDIAN_DEFAULT    MASK_BIG_END
++#define TARGET_ENDIAN_OPTION     "mbig-endian"
++#define TARGET_LINKER_EMULATION  "armelfb_fbsd"
++#else
++#define TARGET_ENDIAN_DEFAULT    0
++#define TARGET_ENDIAN_OPTION     "mlittle-endian"
++#define TARGET_LINKER_EMULATION  "armelf_fbsd"
++#endif
++
++#undef	SUBTARGET_EXTRA_LINK_SPEC
++#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
++
++#undef  TARGET_OS_CPP_BUILTINS
++#define TARGET_OS_CPP_BUILTINS() 		\
++  do						\
++    {						\
++	FBSD_TARGET_OS_CPP_BUILTINS ();		\
++	TARGET_BPABI_CPP_BUILTINS ();		\
++    }						\
++  while (false)
++
++/* We default to a soft-float ABI so that binaries can run on all
++   target hardware.  */
++#undef TARGET_DEFAULT_FLOAT_ABI
++#ifdef TARGET_FREEBSD_ARM_HARD_FLOAT
++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
++#else
++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
++#endif
++
++#undef ARM_DEFAULT_ABI
++
++/* AACPS_LINUX has access to kernel atomic ops while we don't.
++   But AACPS defaults to short_enums.  */
++#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
++
++#undef TARGET_DEFAULT
++#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT)
++
++/* We do not have any MULTILIB_OPTIONS specified, so there are no
++   MULTILIB_DEFAULTS.  */
++#undef  MULTILIB_DEFAULTS
++
++/*  Use the AAPCS type for wchar_t, override the one from config/freebsd.h.  */
++#undef  WCHAR_TYPE
++#define WCHAR_TYPE  "unsigned int"
++
++#undef  WCHAR_TYPE_SIZE
++#define WCHAR_TYPE_SIZE BITS_PER_WORD
++
++#if defined (TARGET_FREEBSD_ARMv6)
++#undef  SUBTARGET_CPU_DEFAULT
++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm1176jzs
++#else
++#undef  SUBTARGET_CPU_DEFAULT
++#define SUBTARGET_CPU_DEFAULT   TARGET_CPU_arm9
++#endif
++
++#define SUBTARGET_OVERRIDE_OPTIONS		\
++do {						\
++    if (unaligned_access)			\
++	unaligned_access = 0;			\
++} while (0)
++
++#undef MAX_SYNC_LIBFUNC_SIZE
++#define MAX_SYNC_LIBFUNC_SIZE 4 /* UNITS_PER_WORD not defined yet.  */
++
++/* FreeBSD does its profiling differently to the Acorn compiler.  We
++   don't need a word following the mcount call; and to skip it
++   requires either an assembly stub or use of fomit-frame-pointer when
++   compiling the profiling functions.  Since we break Acorn CC
++   compatibility below a little more won't hurt.  */
++
++#undef ARM_FUNCTION_PROFILER
++#define ARM_FUNCTION_PROFILER(STREAM,LABELNO)		\
++{							\
++  asm_fprintf (STREAM, "\tmov\t%Rip, %Rlr\n");		\
++  asm_fprintf (STREAM, "\tbl\t__mcount%s\n",		\
++	       (TARGET_ARM && NEED_PLT_RELOC)		\
++	       ? "(PLT)" : "");				\
++}
++
++/* Clear the instruction cache from `BEG' to `END'.  This makes a
++   call to the ARM_SYNC_ICACHE architecture specific syscall.  */
++#define CLEAR_INSN_CACHE(BEG, END)					\
++do									\
++  {									\
++    extern int sysarch (int number, void *args);			\
++    struct								\
++      {									\
++	unsigned int addr;						\
++	int          len;						\
++      } s;								\
++    s.addr = (unsigned int) (BEG);					\
++    s.len = (END) - (BEG);						\
++    (void) sysarch (0, &s);						\
++  }									\
++while (0)
++
++/* This is how we tell the assembler that two symbols have the same value.  */
++#define ASM_OUTPUT_DEF(FILE, NAME1, NAME2) \
++  do					   \
++    {					   \
++     assemble_name (FILE, NAME1); 	   \
++     fputs (" = ", FILE);		   \
++     assemble_name (FILE, NAME2);	   \
++     fputc ('\n', FILE);		   \
++    }					   \
++  while (0)
++
++/* Add  .note.GNU-stack.  */
++#undef NEED_INDICATE_EXEC_STACK
++#define NEED_INDICATE_EXEC_STACK 1
++
++#define ARM_TARGET2_DWARF_FORMAT (DW_EH_PE_pcrel | DW_EH_PE_indirect)
++
+
+Property changes on: gcc/config/arm/freebsd.h
+___________________________________________________________________
+Added: svn:eol-style
+## -0,0 +1 ##
++native
+\ No newline at end of property
+Added: svn:keywords
+## -0,0 +1 ##
++FreeBSD=%H
+\ No newline at end of property
+Added: svn:mime-type
+## -0,0 +1 ##
++text/plain
+\ No newline at end of property
+Index: gcc/config.gcc
+===================================================================
+--- gcc/config.gcc	(revision 218760)
++++ gcc/config.gcc	(working copy)
+@@ -267,7 +267,6 @@
+    arm*-wince-pe*			\
+  | arm*-*-ecos-elf			\
+  | arm*-*-elf				\
+- | arm*-*-freebsd*			\
+  | arm*-*-linux*			\
+  | arm*-*-uclinux*			\
+  | i[34567]86-go32-*			\
+@@ -865,6 +864,28 @@
+ 	extra_options="${extra_options} arm/vxworks.opt"
+ 	tmake_file="${tmake_file} arm/t-arm arm/t-vxworks"
+ 	;;
++arm*-*-freebsd*)                # ARM FreeBSD EABI
++	tm_file="dbxelf.h elfos.h ${fbsd_tm_file} arm/elf.h"
++	case $target in
++	arm*b-*-freebsd*)
++	    tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
++	    ;;
++	esac
++	tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
++	tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
++	case $target in
++	armv6*-*-freebsd*)
++	    tm_defines="${tm_defines} TARGET_FREEBSD_ARMv6=1"
++	    ;;
++	esac
++	case $target in
++	arm*hf-*-freebsd*)
++	    tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
++	    ;;
++	esac
++	need_64bit_hwint=yes
++	with_tls=${with_tls:-gnu}
++	;;
+ arm*-*-netbsdelf*)
+ 	tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h ${tm_file} arm/netbsd-elf.h"
+ 	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+Index: gcc/config.host
+===================================================================
+--- gcc/config.host	(revision 218760)
++++ gcc/config.host	(working copy)
+@@ -99,7 +99,7 @@
+ esac
+ 
+ case ${host} in
+-  arm*-*-linux*)
++  arm*-*-freebsd* | arm*-*-linux*)
+     case ${target} in
+       arm*-*-*)
+ 	host_extra_gcc_objs="driver-arm.o"
+Index: gcc/ginclude/unwind-arm-common.h
+===================================================================
+--- gcc/ginclude/unwind-arm-common.h	(revision 218760)
++++ 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: libatomic/configure.tgt
+===================================================================
+--- libatomic/configure.tgt	(revision 218760)
++++ libatomic/configure.tgt	(working copy)
+@@ -33,10 +33,15 @@
+ 
+   arm*)
+ 	ARCH=arm
+-	# ??? Detect when -march=armv7 is already enabled.
+-	try_ifunc=yes
+-	;;
+-
++	case "${target}" in
++            arm*-*-freebsd*)
++                ;;
++            *)
++                # ??? Detect when -march=armv7 is already enabled.
++                try_ifunc=yes
++                ;;
++        esac
++        ;;
+   sparc)
+ 	case " ${CC} ${CFLAGS} " in
+ 	  *" -m64 "*)
+Index: libgcc/config/arm/freebsd-atomic.c
+===================================================================
+--- libgcc/config/arm/freebsd-atomic.c	(revision 0)
++++ libgcc/config/arm/freebsd-atomic.c	(working copy)
+@@ -0,0 +1,224 @@
++/* FreeBSD specific atomic operations for ARM EABI.
++   Copyright (C) 2014 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.
++
++Under Section 7 of GPL version 3, you are granted additional
++permissions described in the GCC Runtime Library Exception, version
++3.1, as published by the Free Software Foundation.
++
++You should have received a copy of the GNU General Public License and
++a copy of the GCC Runtime Library Exception along with this program;
++see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++<http://www.gnu.org/licenses/>.  */
++
++#include <sys/types.h>
++
++#define HIDDEN __attribute__ ((visibility ("hidden")))
++
++#define ARM_VECTORS_HIGH 0xffff0000U
++#define ARM_TP_ADDRESS   (ARM_VECTORS_HIGH + 0x1000)
++#define ARM_RAS_START    (ARM_TP_ADDRESS + 4)
++
++void HIDDEN
++__sync_synchronize (void)
++{
++#if defined (__ARM_ARCH_6__) || defined (__ARM_ARCH_6J__)       \
++    || defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6T2__)  \
++    || defined (__ARM_ARCH_6Z__) || defined (__ARM_ARCH_6ZK__)  \
++    || defined (__ARM_ARCH_7__) || defined (__ARM_ARCH_7A__)
++#if defined (__ARM_ARCH_7__) || defined (__ARM_ARCH_7A__)
++    __asm __volatile ("dmb" : : : "memory");
++#else
++    __asm __volatile ("mcr p15, 0, r0, c7, c10, 5" : : : "memory");
++#endif
++#else
++    __asm __volatile ("nop" : : : "memory");
++#endif
++}
++
++#if defined (__ARM_ARCH_6__) || defined (__ARM_ARCH_6J__)        \
++    || defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6T2__)   \
++    || defined (__ARM_ARCH_6Z__) || defined (__ARM_ARCH_6ZK__)   \
++    || defined (__ARM_ARCH_7__) || defined (__ARM_ARCH_7A__)
++
++/* These systems should be supported by the compiler.  */
++
++#else /* __ARM_ARCH_5__  */
++
++#define	SYNC_LOCK_TEST_AND_SET_N(N, TYPE, LDR, STR)			\
++TYPE HIDDEN    								\
++__sync_lock_test_and_set_##N (TYPE *mem, TYPE val)			\
++{									\
++        unsigned int old, temp, ras_start;                              \
++                                                                        \
++        ras_start = ARM_RAS_START;					\
++        __asm volatile (						\
++                /* Set up Restartable Atomic Sequence.  */		\
++                "1:"							\
++                "\tadr   %2, 1b\n"					\
++                "\tstr   %2, [%5]\n"					\
++                "\tadr   %2, 2f\n"					\
++                "\tstr   %2, [%5, #4]\n"				\
++                                                                        \
++                "\t"LDR" %0, %4\n"	/* Load old value.  */		\
++                "\t"STR" %3, %1\n"	/* Store new value.  */		\
++                                                                        \
++                /* Tear down Restartable Atomic Sequence.  */		\
++                "2:"							\
++                "\tmov   %2, #0x00000000\n"				\
++                "\tstr   %2, [%5]\n"					\
++                "\tmov   %2, #0xffffffff\n"				\
++                "\tstr   %2, [%5, #4]\n"				\
++                : "=&r" (old), "=m" (*mem), "=&r" (temp)		\
++                : "r" (val), "m" (*mem), "r" (ras_start));		\
++        return (old);							\
++}
++
++#define SYNC_LOCK_RELEASE_N(N, TYPE)					\
++void HIDDEN								\
++__sync_lock_release_##N (TYPE *ptr)     				\
++{					       				\
++    /* All writes before this point must be seen before we release	\
++       the lock itself.  */						\
++    __sync_synchronize ();     						\
++    *ptr = 0;								\
++}
++
++#define	SYNC_VAL_CAS_N(N, TYPE, LDR, STREQ)             		\
++TYPE HIDDEN    								\
++__sync_val_compare_and_swap_##N (TYPE *mem, TYPE expected,		\
++    TYPE desired)							\
++{									\
++        unsigned int old, temp, ras_start;                              \
++                                                                        \
++        ras_start = ARM_RAS_START;					\
++        __asm volatile (						\
++                /* Set up Restartable Atomic Sequence.  */		\
++                "1:"							\
++                "\tadr   %2, 1b\n"					\
++                "\tstr   %2, [%6]\n"					\
++                "\tadr   %2, 2f\n"					\
++                "\tstr   %2, [%6, #4]\n"				\
++                                                                        \
++                "\t"LDR" %0, %5\n"     /* Load old value.  */		\
++                "\tcmp   %0, %3\n"     /* Compare to expected value.  */\
++                "\t"STREQ" %4, %1\n"   /* Store new value.  */		\
++                                                                        \
++                /* Tear down Restartable Atomic Sequence.  */		\
++                "2:"							\
++                "\tmov   %2, #0x00000000\n"				\
++                "\tstr   %2, [%6]\n"					\
++                "\tmov   %2, #0xffffffff\n"				\
++                "\tstr   %2, [%6, #4]\n"				\
++                : "=&r" (old), "=m" (*mem), "=&r" (temp)		\
++                : "r" (expected), "r" (desired), "m" (*mem),		\
++                  "r" (ras_start));					\
++        return (old);							\
++}
++
++typedef unsigned char bool;
++
++#define SYNC_BOOL_CAS_N(N, TYPE)                                        \
++bool HIDDEN								\
++__sync_bool_compare_and_swap_##N (TYPE *ptr, TYPE oldval,		\
++                                  TYPE newval)                          \
++{									\
++    TYPE actual_oldval							\
++      = __sync_val_compare_and_swap_##N (ptr, oldval, newval);          \
++    return (oldval == actual_oldval);					\
++}
++
++#define	SYNC_FETCH_AND_OP_N(N, TYPE, LDR, STR, NAME, OP)		\
++TYPE HIDDEN								\
++__sync_fetch_and_##NAME##_##N (TYPE *mem, TYPE val)	       		\
++{									\
++        unsigned int old, temp, ras_start;                              \
++                                                                        \
++        ras_start = ARM_RAS_START;					\
++        __asm volatile (						\
++                /* Set up Restartable Atomic Sequence.  */		\
++                "1:"							\
++                "\tadr   %2, 1b\n"					\
++                "\tstr   %2, [%5]\n"					\
++                "\tadr   %2, 2f\n"					\
++                "\tstr   %2, [%5, #4]\n"				\
++                                                                        \
++                "\t"LDR" %0, %4\n"	/* Load old value.  */		\
++                "\t"OP"  %2, %0, %3\n"	/* Calculate new value.  */	\
++                "\t"STR" %2, %1\n"	/* Store new value.  */		\
++                                                                        \
++                /* Tear down Restartable Atomic Sequence.  */		\
++                "2:"							\
++                "\tmov   %2, #0x00000000\n"				\
++                "\tstr   %2, [%5]\n"					\
++                "\tmov   %2, #0xffffffff\n"				\
++                "\tstr   %2, [%5, #4]\n"				\
++                : "=&r" (old), "=m" (*mem), "=&r" (temp)		\
++                : "r" (val), "m" (*mem), "r" (ras_start));		\
++        return (old);							\
++}
++
++#define	SYNC_OP_AND_FETCH_N(N, TYPE, LDR, STR, NAME, OP)		\
++TYPE HIDDEN   								\
++__sync_##NAME##_and_fetch_##N (TYPE *mem, TYPE val)	       		\
++{									\
++        unsigned int old, temp, ras_start;                              \
++                                                                        \
++        ras_start = ARM_RAS_START;					\
++        __asm volatile (						\
++                /* Set up Restartable Atomic Sequence.  */		\
++                "1:"							\
++                "\tadr   %2, 1b\n"					\
++                "\tstr   %2, [%5]\n"					\
++                "\tadr   %2, 2f\n"					\
++                "\tstr   %2, [%5, #4]\n"				\
++                                                                        \
++                "\t"LDR" %0, %4\n"	/* Load old value.  */		\
++                "\t"OP"  %2, %0, %3\n"	/* Calculate new value.  */	\
++                "\t"STR" %2, %1\n"	/* Store new value.  */		\
++                                                                        \
++                /* Tear down Restartable Atomic Sequence.  */		\
++                "2:"							\
++                "\tmov   %2, #0x00000000\n"				\
++                "\tstr   %2, [%5]\n"					\
++                "\tmov   %2, #0xffffffff\n"				\
++                "\tstr   %2, [%5, #4]\n"				\
++                : "=&r" (old), "=m" (*mem), "=&r" (temp)		\
++                : "r" (val), "m" (*mem), "r" (ras_start));		\
++        return (old);							\
++}
++
++#define	EMIT_ALL_OPS_N(N, TYPE, LDR, STR, STREQ)			\
++SYNC_LOCK_TEST_AND_SET_N (N, TYPE, LDR, STR)				\
++SYNC_LOCK_RELEASE_N (N, TYPE)                                           \
++SYNC_VAL_CAS_N (N, TYPE, LDR, STREQ)	                		\
++SYNC_BOOL_CAS_N (N, TYPE)                                               \
++SYNC_FETCH_AND_OP_N (N, TYPE, LDR, STR, add, "add")		        \
++SYNC_FETCH_AND_OP_N (N, TYPE, LDR, STR, and, "and")		        \
++SYNC_FETCH_AND_OP_N (N, TYPE, LDR, STR, or, "orr")		        \
++SYNC_FETCH_AND_OP_N (N, TYPE, LDR, STR, sub, "sub")		        \
++SYNC_FETCH_AND_OP_N (N, TYPE, LDR, STR, xor, "eor")                     \
++SYNC_OP_AND_FETCH_N (N, TYPE, LDR, STR, add, "add")		        \
++SYNC_OP_AND_FETCH_N (N, TYPE, LDR, STR, and, "and")		        \
++SYNC_OP_AND_FETCH_N (N, TYPE, LDR, STR, or, "orr")		        \
++SYNC_OP_AND_FETCH_N (N, TYPE, LDR, STR, sub, "sub")		        \
++SYNC_OP_AND_FETCH_N (N, TYPE, LDR, STR, xor, "eor")
++
++
++
++EMIT_ALL_OPS_N (1, unsigned char, "ldrb", "strb", "streqb")
++EMIT_ALL_OPS_N (2, unsigned short, "ldrh", "strh", "streqh")
++EMIT_ALL_OPS_N (4, unsigned int, "ldr", "str", "streq")
++
++#endif
+
+Property changes on: libgcc/config/arm/freebsd-atomic.c
+___________________________________________________________________
+Added: svn:eol-style
+## -0,0 +1 ##
++native
+\ No newline at end of property
+Added: svn:keywords
+## -0,0 +1 ##
++FreeBSD=%H
+\ No newline at end of property
+Added: svn:mime-type
+## -0,0 +1 ##
++text/plain
+\ No newline at end of property
+Index: libgcc/config/arm/t-freebsd
+===================================================================
+--- libgcc/config/arm/t-freebsd	(revision 0)
++++ libgcc/config/arm/t-freebsd	(working copy)
+@@ -0,0 +1,9 @@
++# Just for these, we omit the frame pointer since it makes such a big
++# difference.  It is then pointless adding debugging.
++HOST_LIBGCC2_CFLAGS += -fomit-frame-pointer
++
++LIB2ADD_ST += $(srcdir)/config/arm/freebsd-atomic.c
++
++# Use a version of div0 which raises SIGFPE.
++LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx
++
+Index: libgcc/config/arm/unwind-arm.h
+===================================================================
+--- libgcc/config/arm/unwind-arm.h	(revision 218760)
++++ libgcc/config/arm/unwind-arm.h	(working copy)
+@@ -48,7 +48,8 @@
+       if (!tmp)
+ 	return 0;
+ 
+-#if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__)
++#if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) \
++    || defined(__FreeBSD__)
+       /* Pc-relative indirect.  */
+ #define _GLIBCXX_OVERRIDE_TTYPE_ENCODING (DW_EH_PE_pcrel | DW_EH_PE_indirect)
+       tmp += ptr;
+Index: libgcc/config.host
+===================================================================
+--- libgcc/config.host	(revision 218760)
++++ libgcc/config.host	(working copy)
+@@ -319,6 +319,13 @@
+ 	tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
+ 	extra_parts="$extra_parts crti.o crtn.o"
+ 	;;
++arm*-*-freebsd*)                # ARM FreeBSD EABI
++	tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix arm/t-elf"
++	tmake_file="${tmake_file} arm/t-bpabi arm/t-freebsd t-slibgcc-libgcc"
++	tm_file="${tm_file} arm/bpabi-lib.h"
++	unwind_header=config/arm/unwind-arm.h
++	tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
++	;;
+ arm*-*-netbsdelf*)
+ 	tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"
+ 	;;
+Index: libstdc++-v3/configure.host
+===================================================================
+--- libstdc++-v3/configure.host	(revision 218760)
++++ libstdc++-v3/configure.host	(working copy)
+@@ -352,6 +352,9 @@
+ 	;;
+     esac
+     ;;
++  arm*-*-freebsd*)
++     port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
++     ;;
+   powerpc*-*-darwin*)
+     port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/ppc-extra.ver"
+     ;;
+Index: libstdc++-v3/libsupc++/unwind-cxx.h
+===================================================================
+--- libstdc++-v3/libsupc++/unwind-cxx.h	(revision 218760)
++++ libstdc++-v3/libsupc++/unwind-cxx.h	(working copy)
+@@ -230,7 +230,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)
+ {
+@@ -304,13 +304,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' 
+@@ -334,6 +328,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)
+ {
+@@ -341,6 +345,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
+@@ -352,7 +362,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,


Property changes on: trunk/lang/gcc/files/patch-arm-support
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc/files/patch-libcpp
===================================================================
--- trunk/lang/gcc/files/patch-libcpp	                        (rev 0)
+++ trunk/lang/gcc/files/patch-libcpp	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,10 @@
+--- libcpp/internal.h	2012-07-30 09:24:59.000000000 +0000
++++ libcpp/internal.h	2013-09-04 00:41:26.000000000 +0000
+@@ -27,6 +27,7 @@
+ #include "cpp-id-data.h"
+ 
+ #if HAVE_ICONV
++#define __bool_true_false_are_defined
+ #include <iconv.h>
+ #else
+ #define HAVE_ICONV 0


Property changes on: trunk/lang/gcc/files/patch-libcpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc/files/pkg-message.in
===================================================================
--- trunk/lang/gcc/files/pkg-message.in	                        (rev 0)
+++ trunk/lang/gcc/files/pkg-message.in	2015-05-28 00:36:20 UTC (rev 19119)
@@ -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.


Property changes on: trunk/lang/gcc/files/pkg-message.in
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc/pkg-descr
===================================================================
--- trunk/lang/gcc/pkg-descr	                        (rev 0)
+++ trunk/lang/gcc/pkg-descr	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,10 @@
+GCC, the GNU Compiler Collection, supports a number of languages.  This
+port installs the C, C++, Fortran and Java front ends as gcc48, g++48,
+gfortran48, and gcj48, respectively.
+
+It can be used interchangibly with the lang/gcc48 port which tracks
+weekly upstream snapshots whereas this port will be updated less
+frequently, mostly in sync with upstream releases, and will move to
+lang/gcc49 and later over time.
+
+WWW: http://gcc.gnu.org/


Property changes on: trunk/lang/gcc/pkg-descr
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc/pkg-plist
===================================================================
--- trunk/lang/gcc/pkg-plist	                        (rev 0)
+++ trunk/lang/gcc/pkg-plist	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,76 @@
+bin/%%GNU_HOST%%-c++%%SUFFIX%%
+bin/%%GNU_HOST%%-g++%%SUFFIX%%
+bin/%%GNU_HOST%%-gcc%%SUFFIX%%
+bin/%%GNU_HOST%%-gcc-%%GCC_VERSION%%
+bin/%%GNU_HOST%%-gcc-ar%%SUFFIX%%
+bin/%%GNU_HOST%%-gcc-nm%%SUFFIX%%
+bin/%%GNU_HOST%%-gcc-ranlib%%SUFFIX%%
+bin/%%GNU_HOST%%-gfortran%%SUFFIX%%
+bin/c++%%SUFFIX%%
+bin/cpp%%SUFFIX%%
+bin/g++%%SUFFIX%%
+bin/gcc%%SUFFIX%%
+bin/gcc-ar%%SUFFIX%%
+bin/gcc-nm%%SUFFIX%%
+bin/gcc-ranlib%%SUFFIX%%
+bin/gcov%%SUFFIX%%
+bin/gfortran%%SUFFIX%%
+ at comment info/gcc%%SUFFIX%%/dir
+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/gfortran%%SUFFIX%%.1.gz
+%%JAVA%%share/gcc-%%GCC_VERSION%%/python/libjava/aotcompile.py
+%%JAVA%%share/gcc-%%GCC_VERSION%%/python/libjava/classfile.py
+share/gcc-%%GCC_VERSION%%/python/libstdcxx/__init__.py
+share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/__init__.py
+share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/printers.py
+%%JAVA%%bin/%%GNU_HOST%%-gcj%%SUFFIX%%
+%%JAVA%%bin/aot-compile%%SUFFIX%%
+%%JAVA%%bin/gappletviewer%%SUFFIX%%
+%%JAVA%%bin/gc-analyze%%SUFFIX%%
+%%JAVA%%bin/gcj%%SUFFIX%%
+%%JAVA%%bin/gcj-dbtool%%SUFFIX%%
+%%JAVA%%bin/gcjh%%SUFFIX%%
+%%JAVA%%bin/gij%%SUFFIX%%
+%%JAVA%%bin/gjar%%SUFFIX%%
+%%JAVA%%bin/gjarsigner%%SUFFIX%%
+%%JAVA%%bin/gjavah%%SUFFIX%%
+%%JAVA%%bin/gkeytool%%SUFFIX%%
+%%JAVA%%bin/gnative2ascii%%SUFFIX%%
+%%JAVA%%bin/gorbd%%SUFFIX%%
+%%JAVA%%bin/grmic%%SUFFIX%%
+%%JAVA%%bin/grmid%%SUFFIX%%
+%%JAVA%%bin/grmiregistry%%SUFFIX%%
+%%JAVA%%bin/gserialver%%SUFFIX%%
+%%JAVA%%bin/gtnameserv%%SUFFIX%%
+%%JAVA%%bin/jcf-dump%%SUFFIX%%
+%%JAVA%%bin/jv-convert%%SUFFIX%%
+%%JAVA%%libdata/pkgconfig/libgcj-4.8.pc
+%%JAVA%%man/man1/aot-compile%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gappletviewer%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gc-analyze%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gcj%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gcj-dbtool%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gcjh%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gij%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gjar%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gjarsigner%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gjavah%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gjdoc%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gkeytool%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gnative2ascii%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gorbd%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/grmic%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/grmid%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/grmiregistry%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gserialver%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gtnameserv%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/jcf-dump%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/jv-convert%%SUFFIX%%.1.gz
+%%JAVA%%share/java/libgcj-%%GCC_VERSION%%.jar
+%%JAVA%%share/java/libgcj-tools-%%GCC_VERSION%%.jar
+ at exec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi
+ at unexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi
+ at comment Insert PLIST.lib here


Property changes on: trunk/lang/gcc/pkg-plist
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/lang/gcc48/Makefile
===================================================================
--- trunk/lang/gcc48/Makefile	2015-05-28 00:12:19 UTC (rev 19118)
+++ trunk/lang/gcc48/Makefile	2015-05-28 00:36:20 UTC (rev 19119)
@@ -1,11 +1,10 @@
 # $MidnightBSD$
 
-PORTNAME=	gcc48
-PORTVERSION=	4.8.3.s20140220
+PORTNAME=	gcc
+PORTVERSION=	4.8.5.s20150521
 CATEGORIES=	lang java
-MASTER_SITES=	${MASTER_SITE_GCC}
-MASTER_SITE_SUBDIR=	snapshots/${DISTVERSION}
-DISTNAME=	gcc-${DISTVERSION}
+MASTER_SITES=	GCC/snapshots/${DISTVERSION}
+PKGNAMESUFFIX=	${SUFFIX}
 
 MAINTAINER=	ports at MidnightBSD.org
 COMMENT=	GNU Compiler Collection 4.8
@@ -12,9 +11,9 @@
 
 LICENSE=	gpl3
 
-LIB_DEPENDS=	gmp:${PORTSDIR}/math/gmp \
-		mpfr:${PORTSDIR}/math/mpfr \
-		mpc:${PORTSDIR}/math/mpc
+LIB_DEPENDS=	libgmp.so:${PORTSDIR}/math/gmp \
+		libmpfr.so:${PORTSDIR}/math/mpfr \
+		libmpc.so:${PORTSDIR}/math/mpc
 BUILD_DEPENDS+=	${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
 RUN_DEPENDS+=	${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
 
@@ -22,6 +21,11 @@
 BUILD_DEPENDS+=	runtest:${PORTSDIR}/misc/dejagnu
 .endif
 
+CONFLICTS=	gcc-4.8.*
+CPE_VENDOR=	gnu
+CPE_VERSION=	${GCC_VERSION}
+UNIQUENAME=	${PORTNAME}${PKGNAMESUFFIX}
+
 # DISTVERSION relates to downloads, GCC_VERSION and SUFFIX to names
 # of executables and directories once installed.  A PORTVERSION of
 # 4.Y.2.s20130808 results in values of 4.Y-20130808, 4.Y.2, and 4Y
@@ -29,7 +33,8 @@
 DISTVERSION=	${PORTVERSION:C/([0-9]+\.[0-9]+).*\.s([0-9]+)/\1-\2/}
 GCC_VERSION=	${PORTVERSION:C/(.+)\.s[0-9]{8}/\1/}
 SUFFIX=		${PORTVERSION:C/([0-9]+).([0-9]+).*/\1\2/}
-USES=		gmake iconv perl5 tar:bzip2
+
+USES=		cpe gmake iconv libtool makeinfo perl5 tar:bzip2
 USE_BINUTILS=	yes
 USE_PERL5=	build
 SSP_UNSAFE=	yes
@@ -66,6 +71,7 @@
 .if empty(PORT_OPTIONS:MBOOTSTRAP)
 CONFIGURE_ARGS+=--disable-bootstrap
 .else
+CONFIGURE_ARGS+=--with-build-config=bootstrap-debug
 ALL_TARGET=	bootstrap-lean
 .endif
 CONFIGURE_ARGS+=--disable-nls \
@@ -85,6 +91,19 @@
 PLIST_SUB=	GCC_VERSION=${GCC_VERSION} \
 		GNU_HOST=${CONFIGURE_TARGET} \
 		SUFFIX=${SUFFIX}
+INFO=		gcc${SUFFIX}/cpp \
+		gcc${SUFFIX}/cppinternals \
+		gcc${SUFFIX}/gcc \
+		gcc${SUFFIX}/gccinstall \
+		gcc${SUFFIX}/gccint \
+		gcc${SUFFIX}/gfortran \
+		gcc${SUFFIX}/libgomp
+.if ${ARCH} == "i386" || ${ARCH} == "amd64"
+INFO+=		gcc${SUFFIX}/libquadmath \
+		gcc${SUFFIX}/libitm
+.endif
+SUB_FILES=	pkg-message
+SUB_LIST+=	TARGLIB=${TARGLIB}
 
 .if ${PORT_OPTIONS:MJAVA}
 ECJ_JAR=	${LOCALBASE}/share/java/ecj-4.5.jar
@@ -94,6 +113,8 @@
 EXTRA_PATCHES+=	${FILESDIR}/java-patch-hier
 CONFIGURE_ARGS+=--with-ecj-jar=${ECJ_JAR}
 LANGUAGES:=	${LANGUAGES},java
+INFO+=		gcc${SUFFIX}/cp-tools \
+		gcc${SUFFIX}/gcj
 PLIST_SUB+=	JAVA=""
 .else
 CONFIGURE_ARGS+=--disable-libgcj
@@ -111,12 +132,14 @@
 
 .if defined(MAINTAINER_MODE)
 full-regression-test: build
-	cd ${WRKSRC}; ${GMAKE} -sk check
+	cd ${WRKSRC}; ${MAKE_CMD} -sk check \
+	; ${SRCDIR}/contrib/test_summary
 .endif
 
 post-install:
-	${RM} -f ${TARGLIB}/*.la
-	${RM} -f {PREFIX}/man/man7/*
+	${RM} -f ${STAGEDIR}${PREFIX}/man/man7/*
+	${RM} -f ${STAGEDIR}${PREFIX}/bin/rebuild-gcj-db${SUFFIX} \
+	         ${STAGEDIR}${PREFIX}/man/man1/rebuild-gcj-db${SUFFIX}.1
 	# Add target libraries and include files to packaging list.
 	${RM} -f ${WRKDIR}/PLIST.lib
 .for d in ${TARGLIB:S/^${PREFIX}\///} ${LIBEXEC:S/^${PREFIX}\///} include/gcj include/gnu include/java include/javax

Modified: trunk/lang/gcc48/distinfo
===================================================================
--- trunk/lang/gcc48/distinfo	2015-05-28 00:12:19 UTC (rev 19118)
+++ trunk/lang/gcc48/distinfo	2015-05-28 00:36:20 UTC (rev 19119)
@@ -1,2 +1,2 @@
-SHA256 (gcc-4.8-20140220.tar.bz2) = 782c68d6dc12b561562cc019c7edaa983e4f4dd173224e2f45f68053f036e1dc
-SIZE (gcc-4.8-20140220.tar.bz2) = 81837220
+SHA256 (gcc-4.8-20150521.tar.bz2) = 6a02e837e64e0adeebd3fc94dd11a469c1c4c5c265f4a24563da9b68a4c3953a
+SIZE (gcc-4.8-20150521.tar.bz2) = 82128743

Added: trunk/lang/gcc48/files/patch-stackprotector-gcc
===================================================================
--- trunk/lang/gcc48/files/patch-stackprotector-gcc	                        (rev 0)
+++ trunk/lang/gcc48/files/patch-stackprotector-gcc	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,157 @@
+--- gcc/cfgexpand.c.orig
++++ gcc/cfgexpand.c
+@@ -1291,6 +1291,12 @@
+     clear_tree_used (t);
+ }
+ 
++ enum {
++   SPCT_FLAG_DEFAULT = 1,
++   SPCT_FLAG_ALL = 2,
++   SPCT_FLAG_STRONG = 3
++ };
++
+ /* Examine TYPE and determine a bit mask of the following features.  */
+ 
+ #define SPCT_HAS_LARGE_CHAR_ARRAY	1
+@@ -1360,7 +1366,8 @@
+   if (bits & SPCT_HAS_SMALL_CHAR_ARRAY)
+     has_short_buffer = true;
+ 
+-  if (flag_stack_protect == 2)
++  if (flag_stack_protect == SPCT_FLAG_ALL
++      || flag_stack_protect == SPCT_FLAG_STRONG)
+     {
+       if ((bits & (SPCT_HAS_SMALL_CHAR_ARRAY | SPCT_HAS_LARGE_CHAR_ARRAY))
+ 	  && !(bits & SPCT_HAS_AGGREGATE))
+@@ -1514,6 +1521,27 @@
+   return size;
+ }
+ 
++/* Helper routine to check if a record or union contains an array field. */
++
++static int
++record_or_union_type_has_array_p (const_tree tree_type)
++{
++  tree fields = TYPE_FIELDS (tree_type);
++  tree f;
++
++  for (f = fields; f; f = DECL_CHAIN (f))
++    if (TREE_CODE (f) == FIELD_DECL)
++	  {
++	    tree field_type = TREE_TYPE (f);
++	    if (RECORD_OR_UNION_TYPE_P (field_type)
++	        && record_or_union_type_has_array_p (field_type))
++		  return 1;
++	    if (TREE_CODE (field_type) == ARRAY_TYPE)
++	      return 1;
++	  }
++  return 0;
++}
++
+ /* Expand all variables used in the function.  */
+ 
+ static rtx
+@@ -1525,6 +1553,7 @@
+   struct pointer_map_t *ssa_name_decls;
+   unsigned i;
+   unsigned len;
++  bool gen_stack_protect_signal = false;
+ 
+   /* Compute the phase of the stack frame for this function.  */
+   {
+@@ -1575,6 +1604,24 @@
+ 	}
+     }
+   pointer_map_destroy (ssa_name_decls);
++   
++  if (flag_stack_protect == SPCT_FLAG_STRONG)
++    FOR_EACH_LOCAL_DECL (cfun, i, var)
++      if (!is_global_var (var))
++        {
++	      tree var_type = TREE_TYPE (var);
++	      /* Examine local referenced variables that have their addresses taken,
++	         contain an array, or are arrays.  */
++	      if (TREE_CODE (var) == VAR_DECL
++	          && (TREE_CODE (var_type) == ARRAY_TYPE
++	          || TREE_ADDRESSABLE (var)
++	          || (RECORD_OR_UNION_TYPE_P (var_type)
++	          && record_or_union_type_has_array_p (var_type))))
++	        {
++	          gen_stack_protect_signal = true;
++	          break;
++	        }
++        }
+ 
+   /* At this point all variables on the local_decls with TREE_USED
+      set are not associated with any block scope.  Lay them out.  */
+@@ -1662,12 +1709,32 @@
+ 	dump_stack_var_partition ();
+     }
+ 
+-  /* There are several conditions under which we should create a
+-     stack guard: protect-all, alloca used, protected decls present.  */
+-  if (flag_stack_protect == 2
+-      || (flag_stack_protect
+-	  && (cfun->calls_alloca || has_protected_decls)))
+-    create_stack_guard ();
++  /* Create stack guard, if
++     a) "-fstack-protector-all" - always;
++     b) "-fstack-protector-strong" - if there are arrays, memory
++     references to local variables, alloca used, or protected decls present;
++     c) "-fstack-protector" - if alloca used, or protected decls present  */
++	 
++  switch (flag_stack_protect)
++    {
++    case SPCT_FLAG_ALL:
++      create_stack_guard ();
++      break;
++
++    case SPCT_FLAG_STRONG:
++      if (gen_stack_protect_signal
++	      || cfun->calls_alloca || has_protected_decls)
++	    create_stack_guard ();
++      break;
++
++    case SPCT_FLAG_DEFAULT:
++      if (cfun->calls_alloca || has_protected_decls)
++	    create_stack_guard ();
++      break;
++
++    default:
++      ;
++    }
+ 
+   /* Assign rtl to each variable based on these partitions.  */
+   if (stack_vars_num > 0)
+@@ -1688,7 +1755,7 @@
+ 	  expand_stack_vars (stack_protect_decl_phase_1, &data);
+ 
+ 	  /* Phase 2 contains other kinds of arrays.  */
+-	  if (flag_stack_protect == 2)
++	  if (flag_stack_protect == SPCT_FLAG_ALL)
+ 	    expand_stack_vars (stack_protect_decl_phase_2, &data);
+ 	}
+ 
+--- gcc/common.opt.orig
++++ gcc/common.opt
+@@ -1942,6 +1942,10 @@ fstack-protector-all
+ Common Report RejectNegative Var(flag_stack_protect, 2)
+ Use a stack protection method for every function
+ 
++fstack-protector-strong
++Common Report RejectNegative Var(flag_stack_protect, 3)
++Use a smart stack protection method for certain functions
++
+ fstack-usage
+ Common RejectNegative Var(flag_stack_usage)
+ Output stack usage information on a per-function basis
+--- gcc/gcc.c.orig
++++ gcc/gcc.c
+@@ -655,7 +655,7 @@ proper position among the other output files.  */
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+ #define LINK_SSP_SPEC "%{fstack-protector:}"
+ #else
+-#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}"
++#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-strong|fstack-protector-all:-lssp_nonshared -lssp}"
+ #endif
+ #endif


Property changes on: trunk/lang/gcc48/files/patch-stackprotector-gcc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc48/files/patch-stackprotector-gcc_c-family
===================================================================
--- trunk/lang/gcc48/files/patch-stackprotector-gcc_c-family	                        (rev 0)
+++ trunk/lang/gcc48/files/patch-stackprotector-gcc_c-family	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,11 @@
+--- gcc/c-family/c-cppbuiltin.c.orig
++++ gcc/c-family/c-cppbuiltin.c
+@@ -888,6 +888,8 @@ c_cpp_builtins (cpp_reader *pfile)
+   /* Make the choice of the stack protector runtime visible to source code.
+      The macro names and values here were chosen for compatibility with an
+      earlier implementation, i.e. ProPolice.  */
++  if (flag_stack_protect == 3)
++    cpp_define (pfile, "__SSP_STRONG__=3");
+   if (flag_stack_protect == 2)
+     cpp_define (pfile, "__SSP_ALL__=2");
+   else if (flag_stack_protect == 1)


Property changes on: trunk/lang/gcc48/files/patch-stackprotector-gcc_c-family
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc48/files/patch-stackprotector-gcc_doc
===================================================================
--- trunk/lang/gcc48/files/patch-stackprotector-gcc_doc	                        (rev 0)
+++ trunk/lang/gcc48/files/patch-stackprotector-gcc_doc	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,39 @@
+--- gcc/doc/cpp.texi.orig
++++ gcc/doc/cpp.texi
+@@ -2349,6 +2349,10 @@ use.
+ This macro is defined, with value 2, when @option{-fstack-protector-all} is
+ in use.
+ 
++ at item __SSP_STRONG__
++This macro is defined, with value 3, when @option{-fstack-protector-strong} is
++in use.
++
+ @item __SANITIZE_ADDRESS__
+ This macro is defined, with value 1, when @option{-fsanitize=address} is
+ in use.
+--- gcc/doc/invoke.texi.orig
++++ gcc/doc/invoke.texi
+@@ -407,8 +407,8 @@ Objective-C and Objective-C++ Dialects}.
+ -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops @gol
+ -fshrink-wrap -fsignaling-nans -fsingle-precision-constant @gol
+ -fsplit-ivs-in-unroller -fsplit-wide-types -fstack-protector @gol
+--fstack-protector-all -fstrict-aliasing -fstrict-overflow @gol
+--fthread-jumps -ftracer -ftree-bit-ccp @gol
++-fstack-protector-all -fstack-protector-strong -fstrict-aliasing @gol
++-fstrict-overflow -fthread-jumps -ftracer -ftree-bit-ccp @gol
+ -ftree-builtin-call-dce -ftree-ccp -ftree-ch @gol
+ -ftree-coalesce-inline-vars -ftree-coalesce-vars -ftree-copy-prop @gol
+ -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse @gol
+@@ -8957,6 +8957,12 @@ If a guard check fails, an error message is printed and the program exits.
+ @opindex fstack-protector-all
+ Like @option{-fstack-protector} except that all functions are protected.
+ 
++ at item -fstack-protector-strong
++ at opindex fstack-protector-strong
++Like @option{-fstack-protector} but includes additional functions to
++be protected --- those that have local array definitions, or have
++references to local frame addresses.
++
+ @item -fsection-anchors
+ @opindex fsection-anchors
+ Try to reduce the number of symbolic address calculations by using


Property changes on: trunk/lang/gcc48/files/patch-stackprotector-gcc_doc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc48/files/patch-stackprotector-gcc_testsuite
===================================================================
--- trunk/lang/gcc48/files/patch-stackprotector-gcc_testsuite	                        (rev 0)
+++ trunk/lang/gcc48/files/patch-stackprotector-gcc_testsuite	2015-05-28 00:36:20 UTC (rev 19119)
@@ -0,0 +1,176 @@
+--- /dev/null
++++ gcc/testsuite/g++.dg/fstack-protector-strong.C
+@@ -0,0 +1,35 @@
++/* Test that stack protection is done on chosen functions. */
++
++/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
++/* { dg-options "-O2 -fstack-protector-strong" } */
++
++class A
++{
++public:
++  A() {}
++  ~A() {}
++  void method();
++  int state;
++};
++
++/* Frame address exposed to A::method via "this". */
++int
++foo1 ()
++{
++  A a;
++  a.method ();
++  return a.state;
++}
++
++/* Possible destroying foo2's stack via &a. */
++int
++global_func (A& a);
++
++/* Frame address exposed to global_func. */
++int foo2 ()
++{
++  A a;
++  return global_func (a);
++}
++
++/* { dg-final { scan-assembler-times "stack_chk_fail" 2 } } */
+--- /dev/null
++++ gcc/testsuite/gcc.dg/fstack-protector-strong.c
+@@ -0,0 +1,135 @@
++/* Test that stack protection is done on chosen functions. */
++
++/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
++/* { dg-options "-O2 -fstack-protector-strong" } */
++
++#include<string.h>
++#include<stdlib.h>
++
++extern int g0;
++extern int* pg0;
++int
++goo (int *);
++int
++hoo (int);
++
++/* Function frame address escaped function call. */
++int
++foo1 ()
++{
++  int i;
++  return goo (&i);
++}
++
++struct ArrayStruct
++{
++  int a;
++  int array[10];
++};
++
++struct AA
++{
++  int b;
++  struct ArrayStruct as;
++};
++
++/* Function frame contains array. */
++int
++foo2 ()
++{
++  struct AA aa;
++  int i;
++  for (i = 0; i < 10; ++i)
++    {
++      aa.as.array[i] = i * (i-1) + i / 2;
++    }
++  return aa.as.array[5];
++}
++
++/* Address computation based on a function frame address. */
++int
++foo3 ()
++{
++  int a;
++  int *p;
++  p = &a + 5;
++  return goo (p);
++}
++
++/* Address cast based on a function frame address. */
++int
++foo4 ()
++{
++  int a;
++  return goo (g0 << 2 ? (int *)(3 * (long)(void *)(&a)) : 0);
++}
++
++/* Address cast based on a local array. */
++int
++foo5 ()
++{
++  short array[10];
++  return goo ((int *)(array + 5));
++}
++
++struct BB
++{
++  int one;
++  int two;
++  int three;
++};
++
++/* Address computaton based on a function frame address.*/
++int
++foo6 ()
++{
++  struct BB bb;
++  return goo (&bb.one + sizeof(int));
++}
++
++/* Function frame address escaped via global variable. */
++int
++foo7 ()
++{
++  int a;
++  pg0 = &a;
++  goo (pg0);
++  return *pg0;
++}
++
++/* Check that this covers -fstack-protector. */
++int
++foo8 ()
++{
++  char base[100];
++  memcpy ((void *)base, (const void *)pg0, 105);
++  return (int)(base[32]);
++}
++
++/* Check that this covers -fstack-protector. */
++int
++foo9 ()
++{
++  char* p = alloca (100);
++  return goo ((int *)(p + 50));
++}
++
++int
++global2 (struct BB* pbb);
++
++/* Address taken on struct. */
++int
++foo10 ()
++{
++  struct BB bb;
++  int i;
++  bb.one = global2 (&bb);
++  for (i = 0; i < 10; ++i)
++    {
++      bb.two = bb.one + bb.two;
++      bb.three = bb.one + bb.two + bb.three;
++    }
++  return bb.three;
++}
++
++/* { dg-final { scan-assembler-times "stack_chk_fail" 10 } } */


Property changes on: trunk/lang/gcc48/files/patch-stackprotector-gcc_testsuite
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/lang/gcc48/files/pkg-message.in
===================================================================
--- trunk/lang/gcc48/files/pkg-message.in	                        (rev 0)
+++ trunk/lang/gcc48/files/pkg-message.in	2015-05-28 00:36:20 UTC (rev 19119)
@@ -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.


Property changes on: trunk/lang/gcc48/files/pkg-message.in
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/lang/gcc48/pkg-plist
===================================================================
--- trunk/lang/gcc48/pkg-plist	2015-05-28 00:12:19 UTC (rev 19118)
+++ trunk/lang/gcc48/pkg-plist	2015-05-28 00:36:20 UTC (rev 19119)
@@ -15,16 +15,17 @@
 bin/gcc-ranlib%%SUFFIX%%
 bin/gcov%%SUFFIX%%
 bin/gfortran%%SUFFIX%%
+ at comment info/gcc%%SUFFIX%%/dir
+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/gfortran%%SUFFIX%%.1.gz
 %%JAVA%%share/gcc-%%GCC_VERSION%%/python/libjava/aotcompile.py
 %%JAVA%%share/gcc-%%GCC_VERSION%%/python/libjava/classfile.py
-%%JAVA%%@dirrm share/gcc-%%GCC_VERSION%%/python/libjava
 share/gcc-%%GCC_VERSION%%/python/libstdcxx/__init__.py
 share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/__init__.py
 share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6/printers.py
- at dirrm share/gcc-%%GCC_VERSION%%/python/libstdcxx/v6
- at dirrm share/gcc-%%GCC_VERSION%%/python/libstdcxx
- at dirrm share/gcc-%%GCC_VERSION%%/python
- at dirrm share/gcc-%%GCC_VERSION%%
 %%JAVA%%bin/%%GNU_HOST%%-gcj%%SUFFIX%%
 %%JAVA%%bin/aot-compile%%SUFFIX%%
 %%JAVA%%bin/gappletviewer%%SUFFIX%%
@@ -46,8 +47,28 @@
 %%JAVA%%bin/gtnameserv%%SUFFIX%%
 %%JAVA%%bin/jcf-dump%%SUFFIX%%
 %%JAVA%%bin/jv-convert%%SUFFIX%%
-%%JAVA%%bin/rebuild-gcj-db%%SUFFIX%%
 %%JAVA%%libdata/pkgconfig/libgcj-4.8.pc
+%%JAVA%%man/man1/aot-compile%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gappletviewer%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gc-analyze%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gcj%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gcj-dbtool%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gcjh%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gij%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gjar%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gjarsigner%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gjavah%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gjdoc%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gkeytool%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gnative2ascii%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gorbd%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/grmic%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/grmid%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/grmiregistry%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gserialver%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/gtnameserv%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/jcf-dump%%SUFFIX%%.1.gz
+%%JAVA%%man/man1/jv-convert%%SUFFIX%%.1.gz
 %%JAVA%%share/java/libgcj-%%GCC_VERSION%%.jar
 %%JAVA%%share/java/libgcj-tools-%%GCC_VERSION%%.jar
 @exec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi



More information about the Midnightbsd-cvs mailing list