diff options
author | John Marino <marino@FreeBSD.org> | 2015-12-06 16:04:22 +0000 |
---|---|---|
committer | John Marino <marino@FreeBSD.org> | 2015-12-06 16:04:22 +0000 |
commit | 320c206ea9b056e68b04fa4825ce40030ee7411c (patch) | |
tree | bf3529c65237c77eaa6e8cf4ec9edd88fab531cc /lang/gcc6-aux | |
parent | eba05ee1624e7bb4c1f22b82c8876d2606a66547 (diff) | |
download | ports-320c206ea9b056e68b04fa4825ce40030ee7411c.tar.gz ports-320c206ea9b056e68b04fa4825ce40030ee7411c.zip |
Add new port lang/gcc6-aux
This will be the successor to lang/gcc5-aux. GCC6 is still in development
although the Ada front end is generally stable. Once gcc6-aux is released,
the lang/gcc-aux port will likely be removed. For that to happen, the
gnatdroid compilers need to move from it to gcc5-aux or gcc6-aux. The
Ada framework will also move to gcc6-aux by default as well.
Notes
Notes:
svn path=/head/; revision=403127
Diffstat (limited to 'lang/gcc6-aux')
-rw-r--r-- | lang/gcc6-aux/Makefile | 284 | ||||
-rw-r--r-- | lang/gcc6-aux/Makefile.common | 14 | ||||
-rw-r--r-- | lang/gcc6-aux/Makefile.version | 22 | ||||
-rw-r--r-- | lang/gcc6-aux/distinfo | 8 | ||||
-rw-r--r-- | lang/gcc6-aux/files/android.exp | 106 | ||||
-rw-r--r-- | lang/gcc6-aux/files/diff-ada | 1101 | ||||
-rw-r--r-- | lang/gcc6-aux/files/diff-ada-testsuite | 705 | ||||
-rw-r--r-- | lang/gcc6-aux/files/diff-core | 92 | ||||
-rw-r--r-- | lang/gcc6-aux/files/diff-cxx | 12 | ||||
-rw-r--r-- | lang/gcc6-aux/files/diff-gcc-testsuite | 46 | ||||
-rw-r--r-- | lang/gcc6-aux/files/gnatdroid.exp | 14 | ||||
-rw-r--r-- | lang/gcc6-aux/pkg-descr | 14 |
12 files changed, 2418 insertions, 0 deletions
diff --git a/lang/gcc6-aux/Makefile b/lang/gcc6-aux/Makefile new file mode 100644 index 000000000000..cb6c8e015287 --- /dev/null +++ b/lang/gcc6-aux/Makefile @@ -0,0 +1,284 @@ +# Created by: John Marino <marino@FreeBSD.org> +# $FreeBSD$ + +PORTNAME= gcc6-aux +PORTVERSION= ${SNAPSHOT} +PORTREVISION= ${MAIN_PR} +CATEGORIES= lang +MASTER_SITES= http://downloads.dragonlace.net/src/:boot \ + LOCAL/marino:boot GCC/${MS_SUBDIR} +DISTFILES= ${IDENTIFICATION}.tar.bz2 + +MAINTAINER= marino@FreeBSD.org +COMMENT= Version of GCC ${GCC_BRANCH} with full Ada support + +LICENSE= GPLv3 GPLv3RLE +LICENSE_COMB= multi + +.include "${.CURDIR}/Makefile.common" + +LANGS= c c++ ada +APPLY_DIFFS= core cxx ada +INTENDED_COMPILER= NATIVE +GARCH= ${ARCH:S/amd64/x86_64/} +BOOTSTRAP_COMPILER= gnat-bootstrap.${GARCH}.${OPSYS:tl}.tar.bz2 +BLD_TARGET= ${GARCH}-aux-${OPSYS:tl}${OSREL} +FULL_GNATGCC= NOT_SET +OS_LABEL4VERS= [${OPSYS}${GARCH:M*64:S/amd_//:S/x86_//}] +NO_MTREE= yes +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib + +OPTIONS_GROUP= Standard Bootstrap +OPTIONS_GROUP_Standard= FORT OBJC NLS TESTSUITE ALLSTAGES STATIC +OPTIONS_GROUP_Bootstrap=BOOTSTRAP +OPTIONS_DEFAULT= FORT OBJC +NO_OPTIONS_SORT= yes + +FORT_DESC= Fortran language support +OBJC_DESC= Objective-C language support +TESTSUITE_DESC= Activate test support +ALLSTAGES_DESC= Build compiler with itself (twice, brings in libcc1) +STATIC_DESC= Link compilers and drivers statically +BOOTSTRAP_DESC= Create bootstrap compiler (overrides other options) + +# The BOOTSTRAP option overrides all the others. "make stage" will build a +# static compiler that supports C, C++, and Ada languages and then create +# a new distfile in $WRKDIR/newbsd with the name following the pattern: +# ada-bootstrap.$ARCH.$OPSYS.XY.tar.bz2. There is no need to "make install" + +.include <bsd.port.options.mk> + +.if ${OPSYS} == FreeBSD +ONLY_FOR_ARCHS= amd64 i386 +MODERN_BINUTILS= yes +BOOTSTRAP_COMPILER= ada-bootstrap.${GARCH}.freebsd.100B.tar.bz2 +.endif +.if ${OPSYS} == DragonFly +ONLY_FOR_ARCHS= x86_64 +BOOTSTRAP_COMPILER= ada-bootstrap.${GARCH}.dragonfly.41.tar.bz2 +.endif + +.if defined(MODERN_BINUTILS) +# Apparently gcc 4.9 needs binutils 2.23 or greater to link Ada correctly +USE_BINUTILS= yes +RUN_DEPENDS+= ${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils +EXTRA_CONFIG+= --with-ld=${LOCALBASE}/bin/ld +EXTRA_CONFIG+= --with-as=${LOCALBASE}/bin/as +.else +EXTRA_CONFIG+= --with-ld=/usr/bin/ld +EXTRA_CONFIG+= --with-as=/usr/bin/as +.endif + +WRKSRC= ${WRKDIR}/${IDENTIFICATION} +BUILDDIR= ${WRKDIR}/build +NEWBSDIR= ${WRKDIR}/newbs/bootstrap +CFG_SCRIPT= ${WRKSRC}/configure +REVFILE= ${WRKSRC}/gcc/REVISION +PHASEFILE= ${WRKSRC}/gcc/DEV-PHASE +BOOTSTRAP_PREFIX= ${WRKDIR}/bootstrap +PKG_PREFIX= ${PREFIX}/${PORTNAME} +MANPREFIX= ${PREFIX}/${PORTNAME}/share +BSFILENAME= ada-bootstrap.${GARCH}.${OPSYS:tl}.${OSREL:S/.//}.tar.bz2 + +# If we find gnatmake and friends in a standard location, then we'll use this +# compiler instead of downloading the bootstrap. +.if exists (${LOCALBASE}/${PORTNAME}/bin/ada) +.if exists (${LOCALBASE}/${PORTNAME}/bin/gnatbind) +.if exists (${LOCALBASE}/${PORTNAME}/bin/gnatlink) +.if exists (${LOCALBASE}/${PORTNAME}/bin/gnatmake) +FULL_GNATGCC=${LOCALBASE}/${PORTNAME}/bin/ada +FULL_GNATGXX=${LOCALBASE}/${PORTNAME}/bin/g++ +FULL_PATH=/sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/${PORTNAME}/bin:${PREFIX}/bin +.endif +.endif +.endif +.endif + +# If FULL_GNATGCC is not set, we'll request the bootstrap compiler +.if ${FULL_GNATGCC} == NOT_SET +INTENDED_COMPILER=BOOTSTRAP +FULL_GNATGCC=${BOOTSTRAP_PREFIX}/bin/gcc +FULL_GNATGXX=${BOOTSTRAP_PREFIX}/bin/g++ +FULL_PATH=${BOOTSTRAP_PREFIX}/bin:/sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/bin +DISTFILES+= ${BOOTSTRAP_COMPILER}:boot +.endif + +# for port maintenance, invoke "make makesum PLUS_BOOTSTRAPS=1" +.if defined(PLUS_BOOTSTRAPS) +DISTFILES= \ + ${IDENTIFICATION}.tar.bz2 \ + ada-bootstrap.i386.freebsd.100B.tar.bz2:boot \ + ada-bootstrap.x86_64.dragonfly.41.tar.bz2:boot \ + ada-bootstrap.x86_64.freebsd.100B.tar.bz2:boot +.endif + +.if ${PORT_OPTIONS:MFORT} && !${PORT_OPTIONS:MBOOTSTRAP} +LANGS+= fortran +EXTRA_CONFIG+= --enable-libquadmath +.else +EXTRA_CONFIG+= --disable-libquadmath +.endif + +.if ${PORT_OPTIONS:MOBJC} && !${PORT_OPTIONS:MBOOTSTRAP} +LANGS+= objc +.endif + +.if ${PORT_OPTIONS:MTESTSUITE} && !${PORT_OPTIONS:MBOOTSTRAP} +BUILD_DEPENDS+= dejagnu>=1.4:${PORTSDIR}/misc/dejagnu +APPLY_DIFFS+= ada-testsuite +APPLY_DIFFS+= gcc-testsuite +.endif + +.if ${PORT_OPTIONS:MNLS} && !${PORT_OPTIONS:MBOOTSTRAP} +USES+= gettext +EXTRA_CONFIG+= --enable-nls +.else +EXTRA_CONFIG+= --disable-nls +.endif + +.if ${PORT_OPTIONS:MSTATIC} && !${PORT_OPTIONS:MBOOTSTRAP} +EXTRA_CONFIG+= --with-stage1-ldflags=-static +.endif + +.if ${PORT_OPTIONS:MBOOTSTRAP} +EXTRA_CONFIG+= --disable-shared --disable-lto +EXTRA_CONFIG+= --with-boot-ldflags=-static +.else +. if !${PORT_OPTIONS:MALLSTAGES} +# For reasons unknown, build fails at libcc1 when the compiler is not +# not bootstrapping. It appears to be an upstream error. LibCC1 is used +# for gdb 7.9 exclusively, so it's not really needed. Let's disable it +# by default, but let people that want it suffer a 3-stage build. +EXTRA_CONFIG+= --disable-bootstrap --disable-libcc1 +. endif +USES+= iconv +.endif + +# Establish Ada-aware compiler for use +ADA_CONFIGURE_ENV+= CC=${FULL_GNATGCC} +ADA_CONFIGURE_ENV+= CXX=${FULL_GNATGXX} +ADA_CONFIGURE_ENV+= CFLAGS="${CFLAGS}" +ADA_CONFIGURE_ENV+= CPPFLAGS="${CPPFLAGS}" +ADA_CONFIGURE_ENV+= CXXFLAGS="${CXXFLAGS}" +ADA_CONFIGURE_ENV+= LDFLAGS="${LDFLAGS}" +ADA_CONFIGURE_ENV+= build_configargs="CPPFLAGS=\"${CPPFLAGS}\"" +ADA_CONFIGURE_ENV+= host_configargs="CPPFLAGS=\"${CPPFLAGS}\"" +ADA_CONFIGURE_ENV+= PATH=${FULL_PATH} +ADA_MAKE_ENV+= PATH=${FULL_PATH} + +# The standard configuration options +ADA_CONFIG_ARGS= --enable-languages=${LANGS:Q} +ADA_CONFIG_ARGS+= --build=${BLD_TARGET} +ADA_CONFIG_ARGS+= --prefix=${PKG_PREFIX:Q} +ADA_CONFIG_ARGS+= --with-system-zlib +ADA_CONFIG_ARGS+= --with-gmp=${PREFIX} +ADA_CONFIG_ARGS+= --with-mpfr=${PREFIX} +ADA_CONFIG_ARGS+= --with-mpc=${PREFIX} +ADA_CONFIG_ARGS+= ${ICONV_CONFIGURE_ARG} +ADA_CONFIG_ARGS+= --enable-shared +ADA_CONFIG_ARGS+= --enable-threads=posix +ADA_CONFIG_ARGS+= --enable-checking=release +ADA_CONFIG_ARGS+= --disable-libmudflap +ADA_CONFIG_ARGS+= --disable-libgomp +ADA_CONFIG_ARGS+= --disable-libssp +ADA_CONFIG_ARGS+= ${EXTRA_CONFIG} + +post-extract: + # Personalize GNAT for each different machine + @${ECHO} "-=> GNAT AUX ${OS_LABEL4VERS}" > ${REVFILE} + @${ECHO} ${PHASE} > ${PHASEFILE} + + # Apply required composite diff files +.for suffix in ${APPLY_DIFFS} + @${ECHO} "Applying composite patch diff-${suffix}" + @${PATCH} -d ${WRKSRC} -s -E < ${FILESDIR}/diff-${suffix} +.endfor +.if ${PORT_OPTIONS:MSTATIC} || ${PORT_OPTIONS:MBOOTSTRAP} + # Ensure GNAT tools are built statically + ${REINPLACE_CMD} -e 's/^GCC_LINK_FLAGS=.*/GCC_LINK_FLAGS=-static/' \ + ${WRKSRC}/gcc/ada/gcc-interface/Makefile.in +.endif + # Update LINK_SPEC to add gcc-aux lib runpath in every binary + @${ECHO} "Configuring LINK_SPEC runpath" + @${REINPLACE_CMD} -e 's;\@PREFIX\@;${PREFIX};' \ + -e 's;\@GCCAUX\@;${PORTNAME};' \ + ${WRKSRC}/gcc/config/dragonfly.h \ + ${WRKSRC}/gcc/config/i386/freebsd64.h \ + ${WRKSRC}/gcc/config/i386/freebsd.h +.if defined(MODERN_BINUTILS) + # Use dwarf4-compatible addr2line (affects FreeBSD only) + ${REINPLACE_CMD} -e 's|/usr/bin/addr2line|${PREFIX}/bin/addr2line|g' \ + ${WRKSRC}/gcc/ada/traceback_symbolic.c +.endif + +do-configure: + ${MKDIR} ${BUILDDIR} + cd ${BUILDDIR} && ${SETENV} ${ADA_CONFIGURE_ENV} \ + ${CFG_SCRIPT} ${ADA_CONFIG_ARGS} + +do-build: + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \ + ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} ${MAKE_ARGS} all + +.if ${PORT_OPTIONS:MTESTSUITE} && !${PORT_OPTIONS:MBOOTSTRAP} +test: build test-ada test-fortran test-objc test-cxx test-c + +test-ada: + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \ + ${MAKE_CMD} -sk check-ada + +test-cxx: + # libstdc++ testsuite will break every time, for TRUE to continue + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \ + ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -sk check-c++ || true + +test-c: + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \ + ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -sk check-c + +test-fortran: +. if ${PORT_OPTIONS:MFORT} + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \ + ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -sk check-fortran +. endif + +test-objc: +. if ${PORT_OPTIONS:MOBJC} + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \ + ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -sk check-objc +. endif +.endif + +do-install: + cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \ + ${MAKE_CMD} install-strip ${MAKE_ARGS} + ${MV} ${STAGEDIR}${PKG_PREFIX}/share ${WRKDIR}/moved_share +# Don't activate until this port builds gnatdroid +# Otherwise it will conflict with lang/gcc-aux +# Add "share" after {PORTNAME} on 3rd line of post-stage target +# ${MKDIR} ${STAGEDIR}${PREFIX}/share/dejagnu/baseboards \ +# ${STAGEDIR}${PREFIX}/share/dejagnu/config +# ${INSTALL_DATA} ${FILESDIR}/android.exp \ +# ${STAGEDIR}${PREFIX}/share/dejagnu/config +# ${INSTALL_DATA} ${FILESDIR}/gnatdroid.exp \ +# ${STAGEDIR}${PREFIX}/share/dejagnu/baseboards + +post-stage: + (cd ${STAGEDIR}${PKG_PREFIX}; ${FIND} * -type d -empty | \ + ${SORT} -dr | ${XARGS} ${RMDIR}) + (cd ${STAGEDIR}${PREFIX}; ${FIND} ${PORTNAME} \ + \( -type f -or -type l \) | ${SORT} | ${SED} \ + -e 's/\/man\/man[1578]\/.*[1578]$$/&.gz/' >> ${TMPPLIST}) +.if ${PORT_OPTIONS:MBOOTSTRAP} + ${MKDIR} ${NEWBSDIR} + ${CP} -a ${STAGEDIR}${PKG_PREFIX}/bin ${NEWBSDIR}/ + ${CP} -a ${STAGEDIR}${PKG_PREFIX}/lib ${NEWBSDIR}/ + ${CP} -a ${STAGEDIR}${PKG_PREFIX}/include ${NEWBSDIR}/ + ${CP} -a ${STAGEDIR}${PKG_PREFIX}/libexec ${NEWBSDIR}/ + ${RM} ${NEWBSDIR}/bin/${GARCH}* + ${RM} -rf ${NEWBSDIR}/lib/gcc/${BLD_TARGET}/${GCC_VERSION}/include-fixed + (cd ${NEWBSDIR}/.. ; ${TAR} -cyf ${BSFILENAME} bootstrap) +.endif + +.include <bsd.port.mk> diff --git a/lang/gcc6-aux/Makefile.common b/lang/gcc6-aux/Makefile.common new file mode 100644 index 000000000000..4f24cc2b0b03 --- /dev/null +++ b/lang/gcc6-aux/Makefile.common @@ -0,0 +1,14 @@ +# $FreeBSD$ + +.include "Makefile.version" + +LIB_DEPENDS= libgmp.so:${PORTSDIR}/math/gmp +LIB_DEPENDS+= libmpfr.so:${PORTSDIR}/math/mpfr +LIB_DEPENDS+= libmpc.so:${PORTSDIR}/math/mpc + +ONLY_FOR_ARCHS= i386 amd64 + +GNU_CONFIGURE= yes +USES= gmake libtool perl5 tar:bzip2 +USE_PERL5= build +ALL_TARGET= default diff --git a/lang/gcc6-aux/Makefile.version b/lang/gcc6-aux/Makefile.version new file mode 100644 index 000000000000..389701f9573f --- /dev/null +++ b/lang/gcc6-aux/Makefile.version @@ -0,0 +1,22 @@ +# $FreeBSD$ + +GCC_BRANCH= 6 +GCC_POINT= 0.0 +GCC_VERSION= ${GCC_BRANCH}.${GCC_POINT} +SNAPSHOT= 20151129 +BUILD_RELEASE= no +MAIN_PR= 0 +UTIL_PR= 0 +ARMV7_PR= 0 + +.if ${BUILD_RELEASE:Mno} +# Snapshot naming pattern +IDENTIFICATION= gcc-${GCC_BRANCH}-${SNAPSHOT} +MS_SUBDIR= snapshots/${GCC_BRANCH}-${SNAPSHOT} +PHASE= snapshot +.else +# Release naming pattern +IDENTIFICATION= gcc-${GCC_VERSION} +MS_SUBDIR= releases/gcc-${GCC_VERSION} +PHASE= release +.endif diff --git a/lang/gcc6-aux/distinfo b/lang/gcc6-aux/distinfo new file mode 100644 index 000000000000..17ac7cb9f676 --- /dev/null +++ b/lang/gcc6-aux/distinfo @@ -0,0 +1,8 @@ +SHA256 (gcc-6-20151129.tar.bz2) = 9fc70384a69ced8d3014d1182d874c9376fdaaa5d2bb4adb47a0df35a81e3834 +SIZE (gcc-6-20151129.tar.bz2) = 93779686 +SHA256 (ada-bootstrap.i386.freebsd.100B.tar.bz2) = 7231209f2600275f554f788ad1d036cf633c4339ebd25bd479a5bb1ddcddedf3 +SIZE (ada-bootstrap.i386.freebsd.100B.tar.bz2) = 41229192 +SHA256 (ada-bootstrap.x86_64.dragonfly.41.tar.bz2) = eb7785d8b842aee2bb04b43adfb1346b178ee4e83d8775b4e6705fd23f1586f0 +SIZE (ada-bootstrap.x86_64.dragonfly.41.tar.bz2) = 44956630 +SHA256 (ada-bootstrap.x86_64.freebsd.100B.tar.bz2) = 1066d7c5e71d78b4416de3b73348227678ca07db52488409e270db7b00467f55 +SIZE (ada-bootstrap.x86_64.freebsd.100B.tar.bz2) = 42163803 diff --git a/lang/gcc6-aux/files/android.exp b/lang/gcc6-aux/files/android.exp new file mode 100644 index 000000000000..b3eb17563371 --- /dev/null +++ b/lang/gcc6-aux/files/android.exp @@ -0,0 +1,106 @@ +# This file is part of DejaGnu. + +if {![info exists board]} { + error "must set $board before loading android.exp" +} + +# For rcp_download, rsh_exec. +load_lib remote.exp + +# +# unix_load -- load the program and execute it +# +# See default.exp for explanation of arguments and results. +# + + +proc unix_load { dest prog args } { + global ld_library_path + set output "" + set orig_ld_library_path "" + + if { [llength $args] > 0 } { + set parg [lindex $args 0] + } else { + set parg "" + } + + if { [llength $args] > 1 } { + set inp [lindex $args 1] + } else { + set inp "" + } + + if {![file exists $prog]} then { + # We call both here because this should never happen. + perror "$prog does not exist in unix_load." + verbose -log "$prog does not exist." 3 + return "untested" + } + verbose "loading to $dest" 2 + if {![is_remote $dest]} { + if { "$inp" != "" } { + set command "$prog $parg < $inp" + } else { + set command "$prog $parg" + } + + if {![info exists ld_library_path]} { + set ld_library_path "" + } + + set orig_ld_library_path "[getenv LD_LIBRARY_PATH]" + setenv LD_LIBRARY_PATH "$ld_library_path:$orig_ld_library_path" + setenv SHLIB_PATH "$ld_library_path:$orig_ld_library_path" + verbose -log "Setting LD_LIBRARY_PATH to $ld_library_path:$orig_ld_library_path" 2 + + set id [remote_spawn $dest "$command" "readonly"] + if { $id < 0 } { + set output "remote_spawn failed" + set status -1 + } else { + set status [remote_wait $dest 300] + set output [lindex $status 1] + set status [lindex $status 0] + } + # Unset them so we don't potentially get hosed when we try to run a + # non-testcase executable. (Setting LD_LIBRARY_PATH is the wrong + # fix in the first place; this just tries to minimize the resulting + # crap.) + if {[info exists ld_library_path]} { + setenv LD_LIBRARY_PATH $orig_ld_library_path + setenv SHLIB_PATH $orig_ld_library_path + } + } else { + set remotefile "/data/local/testsuite/[file tail $prog].[pid]" + set remotefile [remote_download $dest $prog $remotefile] + if { $remotefile == "" } { + verbose -log "Download of $prog to [board_info $dest name] failed." 3 + return [list "unresolved" ""] + } + set status [remote_exec $dest "$remotefile" $parg $inp] + remote_file $dest delete $remotefile.o $remotefile + if { [lindex $status 0] < 0 } { + verbose -log "Couldn't execute $prog, [lindex $status 1]" 3 + return [list "unresolved" ""] + } + set output [lindex $status 1] + set status [lindex $status 0] + } + + setenv LD_LIBRARY_PATH $orig_ld_library_path + setenv SHLIB_PATH $orig_ld_library_path + + verbose "Executed $prog, status $status" 2 + if {![string match "" $output]} { + verbose -- "$output" 2 + } + if { $status == 0 } { + set result "pass" + } else { + set result "fail" + } + return [list $result $output] +} + +set_board_info protocol "unix" diff --git a/lang/gcc6-aux/files/diff-ada b/lang/gcc6-aux/files/diff-ada new file mode 100644 index 000000000000..f31a3bc6c132 --- /dev/null +++ b/lang/gcc6-aux/files/diff-ada @@ -0,0 +1,1101 @@ +--- gcc/ada/adaint.c.orig ++++ gcc/ada/adaint.c +@@ -1157,6 +1157,47 @@ + free (pname); + } + ++#elif defined (__ANDROID__) ++ ++ /* ++ * ext2 /ext3/ext4/fat16/fat32 have no path limits ++ * /data/local/tmp normally requires rooted devices, if it even exists ++ * /sdcard is the standard location for external storage. Nativeactivity ++ * manifest needs to authorize its use, otherwise it might not have the ++ * proper permissions. ++ */ ++ ++ int testfd; ++ char *datadir = getenv ("ANDROID_DATA"); ++ ++ if (datadir == NULL) ++ strncpy (tmp_filename, "/data/local/tmp/gnat-XXXXXX", L_tmpnam); ++ else ++ snprintf (tmp_filename, L_tmpnam, "%s/local/tmp/gnat-XXXXXX", datadir); ++ ++ testfd = mkstemp (tmp_filename); ++ if (testfd != -1) ++ { ++ close (testfd); ++ return; ++ } ++ ++ char *sdcard = getenv ("EXTERNAL_STORAGE"); ++ ++ if (sdcard == NULL) ++ strncpy (tmp_filename, "/sdcard/gnat-XXXXXX", L_tmpnam); ++ else ++ snprintf (tmp_filename, L_tmpnam, "%s/gnat-XXXXXX", sdcard); ++ ++ testfd = mkstemp (tmp_filename); ++ if (testfd != -1) ++ { ++ close (testfd); ++ return; ++ } ++ ++ tmpnam (tmp_filename); ++ + #elif defined (__linux__) || defined (__FreeBSD__) || defined (__NetBSD__) \ + || defined (__OpenBSD__) || defined (__GLIBC__) || defined (__ANDROID__) \ + || defined (__DragonFly__) +--- gcc/ada/cio.c.orig ++++ gcc/ada/cio.c +@@ -49,7 +49,7 @@ + + /* Don't use macros on GNU/Linux since they cause incompatible changes between + glibc 2.0 and 2.1 */ +-#ifdef __linux__ ++#if defined __linux__ && !defined __ANDROID__ + #undef putchar + #undef getchar + #undef fputc +--- gcc/ada/cstreams.c.orig ++++ gcc/ada/cstreams.c +@@ -69,7 +69,7 @@ + #include <unixlib.h> + #endif + +-#ifdef __linux__ ++#if defined __linux__ && !defined __ANDROID__ + /* Don't use macros on GNU/Linux since they cause incompatible changes between + glibc 2.0 and 2.1 */ + +--- /dev/null ++++ gcc/ada/g-socthi-bsd.adb +@@ -0,0 +1,356 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT COMPILER COMPONENTS -- ++-- -- ++-- G N A T . S O C K E T S . T H I N -- ++-- -- ++-- B o d y -- ++-- -- ++-- Copyright (C) 2001-2013, AdaCore -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception 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/>. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- This package provides a target dependent thin interface to the sockets ++-- layer for use by the GNAT.Sockets package (g-socket.ads). This package ++-- should not be directly with'ed by an applications program. ++ ++-- This is the *BSD version which uses fcntl rather than ioctl ++-- The constant SCON.Thread_Blocking_IO is always true (for all platforms, not ++-- just *BSD), so this binding is significantly simpler than the standard ++-- one it replaces. ++ ++with GNAT.OS_Lib; use GNAT.OS_Lib; ++ ++with Interfaces.C; use Interfaces.C; ++ ++package body GNAT.Sockets.Thin is ++ ++ function Syscall_Accept ++ (S : C.int; ++ Addr : System.Address; ++ Addrlen : not null access C.int) return C.int; ++ pragma Import (C, Syscall_Accept, "accept"); ++ -- The accept() function accepts a connection on a socket. An incoming ++ -- connection is acknowledged and associated with an immediately created ++ -- socket. The original socket is returned to the listening state. ++ ++ function Syscall_Connect ++ (S : C.int; ++ Name : System.Address; ++ Namelen : C.int) return C.int; ++ pragma Import (C, Syscall_Connect, "connect"); ++ -- The connect() system call initiates a connection on a socket. If the ++ -- parameter S is of type SOCK_DGRAM then connect() permanently specifies ++ -- the peer to which datagrams are to be sent. If S is type SOCK_STREAM ++ -- then connect() attempts to make a connection with another socket, which ++ -- is identified by the parameter Name. ++ ++ function Syscall_Recv ++ (S : C.int; ++ Msg : System.Address; ++ Len : C.int; ++ Flags : C.int) return C.int; ++ pragma Import (C, Syscall_Recv, "recv"); ++ -- The recv() function receives a message from a socket. The call can be ++ -- used on a connection mode socket or a bound, connectionless socket. If ++ -- no messages are available at the socket, the recv() call waits for a ++ -- message to arrive unless the socket is non-blocking. If a socket is ++ -- non-blocking, the call returns a -1 and ERRNO is set to EWOULDBLOCK. ++ ++ function Syscall_Recvfrom ++ (S : C.int; ++ Msg : System.Address; ++ Len : C.int; ++ Flags : C.int; ++ From : System.Address; ++ Fromlen : not null access C.int) return C.int; ++ pragma Import (C, Syscall_Recvfrom, "recvfrom"); ++ -- The recvfrom() system call receives a message from a socket and captures ++ -- the address from which the data was sent. It can be used to receive ++ -- data on an unconnected socket as well. If no messages are available, ++ -- the call waits for a message to arrive on blocking sockets. For ++ -- non-blocking sockets without messages, -1 is returned and ERRNO is set ++ -- to EAGAIN or EWOULDBLOCK. ++ ++ function Syscall_Recvmsg ++ (S : C.int; ++ Msg : System.Address; ++ Flags : C.int) return System.CRTL.ssize_t; ++ pragma Import (C, Syscall_Recvmsg, "recvmsg"); ++ -- The recvmsg call receives a message from a socket, and can be used to ++ -- receive data on an unconnected socket as well. If no messages are ++ -- available, the call waits for a message to arrive on blocking sockets. ++ -- For non-blocking sockets without messages, -1 is returned and ERRNO is ++ -- set to EAGAIN or EWOULDBLOCK. ++ ++ function Syscall_Sendmsg ++ (S : C.int; ++ Msg : System.Address; ++ Flags : C.int) return System.CRTL.ssize_t; ++ pragma Import (C, Syscall_Sendmsg, "sendmsg"); ++ -- The sendmsg() function sends a message to a socket, and can be used with ++ -- unconnected sockets as well (the msg is ignored in this case). The ++ -- function returns the number of bytes sent when successful, otherwise it ++ -- returns -1 and ERRNO is set (many possible values). ++ ++ function Syscall_Sendto ++ (S : C.int; ++ Msg : System.Address; ++ Len : C.int; ++ Flags : C.int; ++ To : System.Address; ++ Tolen : C.int) return C.int; ++ pragma Import (C, Syscall_Sendto, "sendto"); ++ -- The sendto() function only works for connected sockets and it initiates ++ -- the transmission of a message. A successful call returns the numbers of ++ -- bytes sent, and a failure returns a -1 and ERRNO is set. ++ ++ function Syscall_Socket ++ (Domain : C.int; ++ Typ : C.int; ++ Protocol : C.int) return C.int; ++ pragma Import (C, Syscall_Socket, "socket"); ++ -- The socket() function is used to create an unbound socket and returns a ++ -- file descriptor that can be used with other socket functions. Upon ++ -- failure, a -1 is returned and ERRNO is set. ++ ++ procedure Disable_SIGPIPE (S : C.int); ++ pragma Import (C, Disable_SIGPIPE, "__gnat_disable_sigpipe"); ++ ++ procedure Disable_All_SIGPIPEs; ++ pragma Import (C, Disable_All_SIGPIPEs, "__gnat_disable_all_sigpipes"); ++ -- Sets the process to ignore all SIGPIPE signals on platforms that ++ -- don't support Disable_SIGPIPE for particular streams. ++ ++ function C_Fcntl ++ (Fd : C.int; ++ Cmd : C.int; ++ Val : C.int) return C.int; ++ pragma Import (C, C_Fcntl, "fcntl"); ++ -- The ioctl of 64-bit DragonFlyBSD, OpenBSD, and NetBSD does not support ++ -- setting a socket in non-blocking mode. fcntl must be used instead. ++ ++ -------------- ++ -- C_Accept -- ++ -------------- ++ ++ function C_Accept ++ (S : C.int; ++ Addr : System.Address; ++ Addrlen : not null access C.int) return C.int ++ is ++ R : constant C.int := Syscall_Accept (S, Addr, Addrlen); ++ begin ++ ++ Disable_SIGPIPE (R); ++ return R; ++ end C_Accept; ++ ++ --------------- ++ -- C_Connect -- ++ --------------- ++ ++ function C_Connect ++ (S : C.int; ++ Name : System.Address; ++ Namelen : C.int) return C.int ++ is ++ begin ++ return Syscall_Connect (S, Name, Namelen); ++ end C_Connect; ++ ++ ------------------ ++ -- Socket_Ioctl -- ++ ------------------ ++ ++ function Socket_Ioctl ++ (S : C.int; ++ Req : SOSC.IOCTL_Req_T; ++ Arg : access C.int) return C.int ++ is ++ begin ++ if Req = SOSC.FIONBIO then ++ declare ++ use Interfaces; ++ flags : constant Unsigned_32 := ++ Unsigned_32 (C_Fcntl (S, SOSC.F_GETFL, 0)); ++ nonblock : constant Unsigned_32 := Unsigned_32 (SOSC.O_NDELAY); ++ enabled : constant Boolean := Arg.all = 1; ++ newval : C.int := C.int (flags); ++ begin ++ if enabled then ++ newval := C.int (flags or nonblock); ++ elsif (flags and nonblock) > 0 then ++ newval := C.int (flags - nonblock); ++ end if; ++ return C_Fcntl (Fd => S, Cmd => SOSC.F_SETFL, Val => newval); ++ end; ++ end if; ++ ++ return C_Ioctl (S, Req, Arg); ++ end Socket_Ioctl; ++ ++ ------------ ++ -- C_Recv -- ++ ------------ ++ ++ function C_Recv ++ (S : C.int; ++ Msg : System.Address; ++ Len : C.int; ++ Flags : C.int) return C.int ++ is ++ begin ++ return Syscall_Recv (S, Msg, Len, Flags); ++ end C_Recv; ++ ++ ---------------- ++ -- C_Recvfrom -- ++ ---------------- ++ ++ function C_Recvfrom ++ (S : C.int; ++ Msg : System.Address; ++ Len : C.int; ++ Flags : C.int; ++ From : System.Address; ++ Fromlen : not null access C.int) return C.int ++ is ++ begin ++ return Syscall_Recvfrom (S, Msg, Len, Flags, From, Fromlen); ++ end C_Recvfrom; ++ ++ --------------- ++ -- C_Recvmsg -- ++ --------------- ++ ++ function C_Recvmsg ++ (S : C.int; ++ Msg : System.Address; ++ Flags : C.int) return System.CRTL.ssize_t ++ is ++ begin ++ return Syscall_Recvmsg (S, Msg, Flags); ++ end C_Recvmsg; ++ ++ --------------- ++ -- C_Sendmsg -- ++ --------------- ++ ++ function C_Sendmsg ++ (S : C.int; ++ Msg : System.Address; ++ Flags : C.int) return System.CRTL.ssize_t ++ is ++ begin ++ return Syscall_Sendmsg (S, Msg, Flags); ++ end C_Sendmsg; ++ ++ -------------- ++ -- C_Sendto -- ++ -------------- ++ ++ function C_Sendto ++ (S : C.int; ++ Msg : System.Address; ++ Len : C.int; ++ Flags : C.int; ++ To : System.Address; ++ Tolen : C.int) return C.int ++ is ++ begin ++ return Syscall_Sendto (S, Msg, Len, Flags, To, Tolen); ++ end C_Sendto; ++ ++ -------------- ++ -- C_Socket -- ++ -------------- ++ ++ function C_Socket ++ (Domain : C.int; ++ Typ : C.int; ++ Protocol : C.int) return C.int ++ is ++ R : constant C.int := Syscall_Socket (Domain, Typ, Protocol); ++ begin ++ Disable_SIGPIPE (R); ++ return R; ++ end C_Socket; ++ ++ -------------- ++ -- Finalize -- ++ -------------- ++ ++ procedure Finalize is ++ begin ++ null; ++ end Finalize; ++ ++ ------------------------- ++ -- Host_Error_Messages -- ++ ------------------------- ++ ++ package body Host_Error_Messages is separate; ++ ++ ---------------- ++ -- Initialize -- ++ ---------------- ++ ++ procedure Initialize is ++ begin ++ Disable_All_SIGPIPEs; ++ end Initialize; ++ ++ -------------------- ++ -- Signalling_Fds -- ++ -------------------- ++ ++ package body Signalling_Fds is ++ ++ -- In this default implementation, we use a C version of these ++ -- subprograms provided by socket.c. ++ ++ function C_Create (Fds : not null access Fd_Pair) return C.int; ++ function C_Read (Rsig : C.int) return C.int; ++ function C_Write (Wsig : C.int) return C.int; ++ procedure C_Close (Sig : C.int); ++ ++ pragma Import (C, C_Create, "__gnat_create_signalling_fds"); ++ pragma Import (C, C_Read, "__gnat_read_signalling_fd"); ++ pragma Import (C, C_Write, "__gnat_write_signalling_fd"); ++ pragma Import (C, C_Close, "__gnat_close_signalling_fd"); ++ ++ function Create ++ (Fds : not null access Fd_Pair) return C.int renames C_Create; ++ function Read (Rsig : C.int) return C.int renames C_Read; ++ function Write (Wsig : C.int) return C.int renames C_Write; ++ procedure Close (Sig : C.int) renames C_Close; ++ ++ end Signalling_Fds; ++ ++ -------------------------- ++ -- Socket_Error_Message -- ++ -------------------------- ++ ++ function Socket_Error_Message (Errno : Integer) return String is separate; ++ ++end GNAT.Sockets.Thin; +--- gcc/ada/gnatchop.adb.orig ++++ gcc/ada/gnatchop.adb +@@ -44,7 +44,7 @@ + Config_File_Name : constant String_Access := new String'("gnat.adc"); + -- The name of the file holding the GNAT configuration pragmas + +- Gcc : String_Access := new String'("gcc"); ++ Gcc : String_Access := new String'("ada"); + -- May be modified by switch --GCC= + + Gcc_Set : Boolean := False; +--- gcc/ada/gnatlink.adb.orig ++++ gcc/ada/gnatlink.adb +@@ -136,7 +136,7 @@ + -- This table collects the arguments to be passed to compile the binder + -- generated file. + +- Gcc : String_Access := Program_Name ("gcc", "gnatlink"); ++ Gcc : String_Access := Program_Name ("ada", "gnatlink"); + + Read_Mode : constant String := "r" & ASCII.NUL; + +--- gcc/ada/make.adb.orig ++++ gcc/ada/make.adb +@@ -667,7 +667,7 @@ + -- Compiler, Binder & Linker Data and Subprograms -- + ---------------------------------------------------- + +- Gcc : String_Access := Program_Name ("gcc", "gnatmake"); ++ Gcc : String_Access := Program_Name ("ada", "gnatmake"); + Gnatbind : String_Access := Program_Name ("gnatbind", "gnatmake"); + Gnatlink : String_Access := Program_Name ("gnatlink", "gnatmake"); + -- Default compiler, binder, linker programs +--- gcc/ada/mlib-prj.adb.orig ++++ gcc/ada/mlib-prj.adb +@@ -335,6 +335,11 @@ + + Foreign_Sources : Boolean; + ++ Rpath_Disabled : Boolean := False; ++ -- If -R is passed through the library options for the linker, it will ++ -- prevent the implemented libraries portion of the rpath switch from ++ -- being built, even if the linker is capable of supporting rpath. ++ + Rpath : String_Access := null; + -- Allocated only if Path Option is supported + +@@ -768,7 +773,7 @@ + Opts.Table (Opts.Last) := + new String'("-L" & Name_Buffer (1 .. Name_Len)); + +- if Path_Option /= null then ++ if not Rpath_Disabled and then Path_Option /= null then + Add_Rpath (Name_Buffer (1 .. Name_Len)); + end if; + +@@ -1299,9 +1304,13 @@ + Get_Name_String (Element.Value); + + if Name_Len /= 0 then +- Opts.Increment_Last; +- Opts.Table (Opts.Last) := +- new String'(Name_Buffer (1 .. Name_Len)); ++ if Name_Buffer (1 .. Name_Len) = "-R" then ++ Rpath_Disabled := True; ++ else ++ Opts.Increment_Last; ++ Opts.Table (Opts.Last) := ++ new String'(Name_Buffer (1 .. Name_Len)); ++ end if; + end if; + + Current := Element.Next; +--- gcc/ada/mlib-utl.adb.orig ++++ gcc/ada/mlib-utl.adb +@@ -446,7 +446,7 @@ + if Driver_Name = No_Name then + if Gcc_Exec = null then + if Gcc_Name = null then +- Gcc_Name := Osint.Program_Name ("gcc", "gnatmake"); ++ Gcc_Name := Osint.Program_Name ("ada", "gnatmake"); + end if; + + Gcc_Exec := Locate_Exec_On_Path (Gcc_Name.all); +--- gcc/ada/prj-makr.adb.orig ++++ gcc/ada/prj-makr.adb +@@ -115,7 +115,7 @@ + + procedure Dup2 (Old_Fd, New_Fd : File_Descriptor); + +- Gcc : constant String := "gcc"; ++ Gcc : constant String := "ada"; + Gcc_Path : String_Access := null; + + Non_Empty_Node : constant Project_Node_Id := 1; +--- /dev/null ++++ gcc/ada/s-trasym-bsd.adb +@@ -0,0 +1,151 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME COMPONENTS -- ++-- -- ++-- S Y S T E M . T R A C E B A C K . S Y M B O L I C -- ++-- -- ++-- B o d y -- ++-- -- ++-- Copyright (C) 1999-2009, AdaCore -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 2, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT 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 distributed with GNAT; see file COPYING. If not, write -- ++-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, -- ++-- Boston, MA 02110-1301, USA. -- ++-- -- ++-- As a special exception, if other files instantiate generics from this -- ++-- unit, or you link this unit with other files to produce an executable, -- ++-- this unit does not by itself cause the resulting executable to be -- ++-- covered by the GNU General Public License. This exception does not -- ++-- however invalidate any other reasons why the executable file might be -- ++-- covered by the GNU Public License. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- Run-time symbolic traceback support ++-- This file is based on the work by Juergen Pfiefer which is still used ++-- today to provide symbolic traceback support for gnu/kFreeBSD. ++-- Incorporated in GNAT-AUX by John Marino <http://www.dragonlace.net> ++ ++with System.Soft_Links; ++with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback; ++ ++package body System.Traceback.Symbolic is ++ ++ package TSL renames System.Soft_Links; ++ ++ -- To perform the raw addresses to symbolic form translation we rely on a ++ -- libaddr2line symbolizer which examines debug info from a provided ++ -- executable file name, and an absolute path is needed to ensure the file ++ -- is always found. This is "__gnat_locate_exec_on_path (gnat_argv [0])" ++ -- for our executable file, a fairly heavy operation so we cache the ++ -- result. ++ ++ Exename : System.Address; ++ -- Pointer to the name of the executable file to be used on all ++ -- invocations of the libaddr2line symbolization service. ++ ++ Exename_Resolved : Boolean := False; ++ -- Flag to indicate whether we have performed the executable file name ++ -- resolution already. Relying on a not null Exename for this purpose ++ -- would be potentially inefficient as this is what we will get if the ++ -- resolution attempt fails. ++ ++ ------------------------ ++ -- Symbolic_Traceback -- ++ ------------------------ ++ ++ function Symbolic_Traceback (Traceback : Tracebacks_Array) return String is ++ ++ procedure convert_addresses ++ (filename : System.Address; ++ addrs : System.Address; ++ n_addrs : Integer; ++ buf : System.Address; ++ len : System.Address); ++ pragma Import (C, convert_addresses, "convert_addresses"); ++ -- This is the procedure version of the Ada-aware addr2line. It places ++ -- in BUF a string representing the symbolic translation of the N_ADDRS ++ -- raw addresses provided in ADDRS, looked up in debug information from ++ -- FILENAME. LEN points to an integer which contains the size of the ++ -- BUF buffer at input and the result length at output. ++ -- ++ -- Note that this procedure is *not* thread-safe. ++ ++ type Argv_Array is array (0 .. 0) of System.Address; ++ gnat_argv : access Argv_Array; ++ pragma Import (C, gnat_argv, "gnat_argv"); ++ ++ function locate_exec_on_path ++ (c_exename : System.Address) return System.Address; ++ pragma Import (C, locate_exec_on_path, "__gnat_locate_exec_on_path"); ++ ++ B_Size : constant Integer := 256 * Traceback'Length; ++ Len : Integer := B_Size; ++ Res : String (1 .. B_Size); ++ ++ use type System.Address; ++ ++ begin ++ -- The symbolic translation of an empty set of addresses is an empty ++ -- string. ++ ++ if Traceback'Length = 0 then ++ return ""; ++ end if; ++ ++ -- If our input set of raw addresses is not empty, resort to the ++ -- libaddr2line service to symbolize it all. ++ ++ -- Compute, cache and provide the absolute path to our executable file ++ -- name as the binary file where the relevant debug information is to be ++ -- found. If the executable file name resolution fails, we have no ++ -- sensible basis to invoke the symbolizer at all. ++ ++ -- Protect all this against concurrent accesses explicitly, as the ++ -- underlying services are potentially thread unsafe. ++ ++ TSL.Lock_Task.all; ++ ++ if not Exename_Resolved then ++ Exename := locate_exec_on_path (gnat_argv (0)); ++ Exename_Resolved := True; ++ end if; ++ ++ if Exename /= System.Null_Address then ++ Len := Res'Length; ++ convert_addresses ++ (Exename, Traceback'Address, Traceback'Length, ++ Res (1)'Address, Len'Address); ++ end if; ++ ++ TSL.Unlock_Task.all; ++ ++ -- Return what the addr2line symbolizer has produced if we have called ++ -- it (the executable name resolution succeeded), or an empty string ++ -- otherwise. ++ ++ if Exename /= System.Null_Address then ++ return Res (1 .. Len); ++ else ++ return ""; ++ end if; ++ ++ end Symbolic_Traceback; ++ ++ function Symbolic_Traceback ++ (E : Ada.Exceptions.Exception_Occurrence) return String is ++ begin ++ return Symbolic_Traceback (Tracebacks (E)); ++ end Symbolic_Traceback; ++ ++end System.Traceback.Symbolic; +--- gcc/ada/terminals.c.orig ++++ gcc/ada/terminals.c +@@ -32,7 +32,7 @@ + /* First all usupported platforms. Add stubs for exported routines. */ + + #if defined (VMS) || defined (__vxworks) || defined (__Lynx__) \ +- || defined (__ANDROID__) || defined (__PikeOS__) ++ || defined (__PikeOS__) + + #define ATTRIBUTE_UNUSED __attribute__((unused)) + +@@ -1059,7 +1059,7 @@ + || defined (__OpenBSD__) \ + || defined (__NetBSD__) \ + || defined (__DragonFly__) +-# define BSD ++# define FREEBSD + #endif + + /* Include every system header we need */ +@@ -1070,8 +1070,8 @@ + + /* On some system termio is either absent or including it will disable termios + (HP-UX) */ +-#if !defined (__hpux__) && !defined (BSD) && !defined (__APPLE__) \ +- && !defined (__rtems__) ++#if ! defined (__hpux__) && ! defined (FREEBSD) && \ ++ ! defined (__APPLE__) && ! defined(__rtems__) + # include <termio.h> + #endif + +@@ -1083,10 +1083,10 @@ + #include <sys/types.h> + #include <sys/wait.h> + #include <unistd.h> +-#if defined (__sun__) ++#if defined (sun) + # include <sys/stropts.h> + #endif +-#if defined (BSD) || defined (__sun__) ++#if defined (FREEBSD) || defined (sun) + # include <sys/signal.h> + #endif + #if defined (__hpux__) +@@ -1094,11 +1094,15 @@ + # include <sys/stropts.h> + #endif + ++#ifdef __ANDROID__ ++#define CDISABLE _PC_VDISABLE ++#else + #define CDISABLE _POSIX_VDISABLE ++#endif + + /* On HP-UX and Sun system, there is a bzero function but with a different + signature. Use memset instead */ +-#if defined (__hpux__) || defined (__sun__) || defined (_AIX) ++#if defined (__hpux__) || defined (sun) || defined (_AIX) + # define bzero(s,n) memset (s,0,n) + #endif + +@@ -1116,11 +1120,11 @@ + */ + + /* Configurable part */ +-#if defined (__APPLE__) || defined (BSD) ++#if defined (__APPLE__) || defined (FREEBSD) + #define USE_OPENPTY +-#elif defined (__linux__) ++#elif defined (linux) + #define USE_GETPT +-#elif defined (__sun__) ++#elif defined (sun) + #define USE_CLONE_DEVICE "/dev/ptmx" + #elif defined (_AIX) + #define USE_CLONE_DEVICE "/dev/ptc" +@@ -1406,7 +1410,7 @@ + desc->slave_fd = open (desc->slave_name, O_RDWR, 0); + #endif + +-#if defined (__sun__) || defined (__hpux__) ++#if defined (sun) || defined (__hpux__) + /* On systems such as Solaris we are using stream. We need to push the right + "modules" in order to get the expected terminal behaviors. Otherwise + functionalities such as termios are not available. */ +--- /dev/null ++++ gcc/ada/traceback_symbolic.c +@@ -0,0 +1,201 @@ ++/* ++ Copyright (C) 1999 by Juergen Pfeifer <juergen.pfeifer@gmx.net> ++ Ada for Linux Team (ALT) ++ Heavily modified by John Marino <http://www.dragonlace.net> ++ ++ Permission is hereby granted, free of charge, to any person obtaining a ++ copy of this software and associated documentation files (the ++ "Software"), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, distribute with modifications, sublicense, and/or sell ++ copies of the Software, and to permit persons to whom the Software is ++ furnished to do so, subject to the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, ++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR ++ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ++ THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++ Except as contained in this notice, the name(s) of the above copyright ++ holders shall not be used in advertising or otherwise to promote the ++ sale, use or other dealings in this Software without prior written ++ authorization. ++*/ ++ ++#ifdef IS_CROSS ++ ++ ++/* ++ * Running addr2line doesn't make sense for cross-compiled objects. ++ * Create a dummy function to satisfy g-trasym.o ++ */ ++ ++void ++convert_addresses (const char *file_name ATTRIBUTE_UNUSED, ++ void *addrs ATTRIBUTE_UNUSED, ++ int n_addr ATTRIBUTE_UNUSED, ++ void *buf ATTRIBUTE_UNUSED, ++ int *len ATTRIBUTE_UNUSED) ++{ ++ *len = 0; ++} ++ ++#else ++ ++ ++/* ++ * use the external program /usr/bin/addr2line to convert addresses ++ * into file names and line numbers ++ */ ++ ++#include <sys/types.h> ++#include <stdlib.h> ++#include <unistd.h> ++#include <string.h> ++#include <signal.h> ++ ++#define CLOSE_SENDPIPE close(sendpipe[0]); close(sendpipe[1]) ++#define CLOSE_READPIPE close(readpipe[0]); close(readpipe[1]) ++#define DUP2CLOSE(oldfd, newfd) dup2(oldfd, newfd); close(oldfd); ++#define RESTSIG sigaction(SIGPIPE,&oact,NULL) ++ ++#define MAX_LINE 1024 ++#define PARENT_READ readpipe[0] ++#define CHILD_WRITE readpipe[1] ++#define CHILD_READ sendpipe[0] ++#define PARENT_WRITE sendpipe[1] ++ ++#if defined (__sun__) ++#define ADDR2LINE_PROG "/usr/gnu/bin/addr2line" ++#else ++#define ADDR2LINE_PROG "/usr/bin/addr2line" ++#endif ++ ++void ++convert_addresses (const char *file_name, ++ void *addrs, ++ int n_addr, ++ void *buf, ++ int *len) ++{ ++ int max_len = *len; ++ pid_t childpid; ++ ++ struct sigaction act, oact; ++ ++ int sendpipe[2] = {-1,-1}, /* parent -> child */ ++ readpipe[2] = {-1,-1}; /* parent <- child */ ++ ++ *len = 0; ++ act.sa_handler = SIG_IGN; ++ sigemptyset(&act.sa_mask); ++ act.sa_flags = 0; ++ if (sigaction(SIGPIPE,&act,&oact) < 0) ++ return; ++ ++ if (pipe(sendpipe) < 0) { RESTSIG; return; } ++ if (pipe(readpipe) < 0) { CLOSE_SENDPIPE; RESTSIG; return; } ++ if ((childpid = fork()) < 0) { ++ CLOSE_READPIPE; ++ CLOSE_SENDPIPE; ++ RESTSIG; ++ return; ++ } ++ ++ if (childpid == 0) { /* child process */ ++ close(PARENT_WRITE); ++ close(PARENT_READ); ++ if ((CHILD_READ != STDIN_FILENO) && (CHILD_WRITE != STDOUT_FILENO)) { ++ if ((CHILD_READ == STDOUT_FILENO) && (CHILD_WRITE == STDIN_FILENO)) { ++ const int temp_fd = dup(CHILD_WRITE); ++ close (CHILD_WRITE); ++ DUP2CLOSE (CHILD_READ, STDIN_FILENO); ++ DUP2CLOSE (temp_fd, STDOUT_FILENO); ++ } ++ else if ((CHILD_READ == STDIN_FILENO) && (CHILD_WRITE > 1)) { ++ DUP2CLOSE (CHILD_WRITE, STDOUT_FILENO); ++ } ++ else if ((CHILD_READ > 1) && (CHILD_WRITE == STDOUT_FILENO)) { ++ DUP2CLOSE (CHILD_READ, STDIN_FILENO); ++ } ++ else if ((CHILD_READ > 1) && (CHILD_WRITE == STDIN_FILENO)) { ++ DUP2CLOSE (CHILD_WRITE, STDOUT_FILENO); ++ DUP2CLOSE (CHILD_READ, STDIN_FILENO); ++ } ++ else { ++ /* CHILD_READ >= 1 and CHILD_WRITE > 1 */ ++ DUP2CLOSE (CHILD_READ, STDIN_FILENO); ++ DUP2CLOSE (CHILD_WRITE, STDOUT_FILENO); ++ } ++ } ++ /* As pointed out by Florian Weimer to JP, it is a security threat to call ++ the script with a user defined environment and using the path. That ++ would be Trojans pleasure. Therefore the absolute path to addr2line ++ and an empty environment is used. That should be safe. ++ */ ++ char *const argv[] = { "addr2line", ++ "-e", file_name, ++ "--demangle=gnat", ++ "--functions", ++ "--basenames", ++ NULL }; ++ char *const envp[] = { NULL }; ++ if (execve(ADDR2LINE_PROG, argv, envp) < 0) { ++ close (CHILD_WRITE); ++ close (CHILD_READ); ++ RESTSIG; ++ exit (1); ++ } ++ } ++ ++ /* Below this line is parent process */ ++ int i, n; ++ char hex[16]; ++ char line[MAX_LINE + 1]; ++ char *p; ++ char *s = buf; ++ long *trace_address = addrs; ++ ++ close(CHILD_WRITE); ++ close(CHILD_READ); ++ ++ for(i=0; i < n_addr; i++) { ++ snprintf(hex,sizeof(hex),"%#lx\n",*trace_address); ++ write(PARENT_WRITE,hex,strlen(hex)); ++ n = read(PARENT_READ,line,MAX_LINE); ++ if (n<=0) ++ break; ++ ++ line[n]=0; ++ /* We have approx. 16 additional chars for "%#lx in " clause. ++ We use this info to prevent a buffer overrun. */ ++ if (n + 16 + (*len) > max_len) ++ break; ++ ++ p = strchr(line,'\n'); ++ if (p) { ++ if (*(p+1)) { ++ *p = 0; ++ *len += snprintf(s, (max_len - (*len)), "%#lx in %s at %s", ++ *trace_address, line, p+1); ++ } ++ else { ++ *len += snprintf(s, (max_len - (*len)), "%#lx at %s", ++ *trace_address, line); ++ } ++ s = buf + (*len); ++ } ++ trace_address += 1; ++ } ++ close (PARENT_WRITE); ++ close (PARENT_READ); ++ RESTSIG; ++} ++ ++#endif +--- gcc/ada/gcc-interface/Makefile.in.orig ++++ gcc/ada/gcc-interface/Makefile.in +@@ -1186,6 +1186,7 @@ + ifeq ($(strip $(filter-out arm% linux-androideabi,$(target_cpu) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ + a-intnam.ads<a-intnam-linux.ads \ ++ g-socthi.adb<g-socthi-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-android.adb \ + s-linux.ads<s-linux-android.ads \ +@@ -1293,6 +1294,7 @@ + a-intnam.ads<a-intnam-solaris.ads \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-solaris.adb \ ++ s-trasym.adb<s-trasym-bsd.adb \ + s-mudido.adb<s-mudido-affinity.adb \ + s-osinte.adb<s-osinte-solaris.adb \ + s-osinte.ads<s-osinte-solaris.ads \ +@@ -1336,6 +1338,8 @@ + EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o + + EH_MECHANISM=-gcc ++ EXTRA_LIBGNAT_SRCS+= traceback_symbolic.c ++ EXTRA_LIBGNAT_OBJS+= traceback_symbolic.o + THREADSLIB = -lposix4 -lthread + MISCLIB = -lposix4 -lnsl -lsocket + SO_OPTS = -Wl,-h, +@@ -1406,6 +1410,39 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++# x86 android ++ifeq ($(strip $(filter-out %86 linux-android,$(target_cpu) $(target_os))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads<a-intnam-linux.ads \ ++ g-socthi.adb<g-socthi-bsd.adb \ ++ s-inmaop.adb<s-inmaop-posix.adb \ ++ s-intman.adb<s-intman-posix.adb \ ++ s-linux.ads<s-linux-android.ads \ ++ s-osinte.adb<s-osinte-android.adb \ ++ s-osinte.ads<s-osinte-android.ads \ ++ s-osprim.adb<s-osprim-posix.adb \ ++ s-taprop.adb<s-taprop-posix.adb \ ++ s-taspri.ads<s-taspri-posix.ads \ ++ s-tpopsp.adb<s-tpopsp-posix-foreign.adb \ ++ $(ATOMICS_TARGET_PAIRS) \ ++ $(X86_TARGET_PAIRS) \ ++ system.ads<system-linux-x86.ads ++ ++ TOOLS_TARGET_PAIRS = \ ++ mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \ ++ indepsw.adb<indepsw-gnu.adb ++ ++ EXTRA_LIBGNAT_OBJS= ++ EXTRA_GNATRTL_TASKING_OBJS=s-linux.o ++ EXTRA_GNATRTL_NONTASKING_OBJS= ++ EH_MECHANISM=-gcc ++ THREADSLIB= ++ MISCLIB= ++ GMEM_LIB= ++ GNATLIB_SHARED = gnatlib-shared-dual ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + # x86 kfreebsd + ifeq ($(strip $(filter-out %86 kfreebsd%,$(target_cpu) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ +@@ -1470,6 +1507,8 @@ + ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ + a-intnam.ads<a-intnam-freebsd.ads \ ++ g-socthi.adb<g-socthi-bsd.adb \ ++ s-trasym.adb<s-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-mudido.adb<s-mudido-affinity.adb \ +@@ -1487,6 +1526,8 @@ + mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb + GNATLIB_SHARED = gnatlib-shared-dual + ++ EXTRA_LIBGNAT_SRCS+= traceback_symbolic.c ++ EXTRA_LIBGNAT_OBJS+= traceback_symbolic.o + EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o + + EH_MECHANISM=-gcc +@@ -1500,6 +1541,8 @@ + ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ + a-intnam.ads<a-intnam-freebsd.ads \ ++ g-socthi.adb<g-socthi-bsd.adb \ ++ s-trasym.adb<s-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-mudido.adb<s-mudido-affinity.adb \ +@@ -1517,6 +1560,8 @@ + mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb + GNATLIB_SHARED = gnatlib-shared-dual + ++ EXTRA_LIBGNAT_SRCS+= traceback_symbolic.c ++ EXTRA_LIBGNAT_OBJS+= traceback_symbolic.o + EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o + + EH_MECHANISM=-gcc +@@ -1530,6 +1575,8 @@ + ifeq ($(strip $(filter-out %86_64 dragonfly%,$(target_cpu) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ + a-intnam.ads<a-intnam-dragonfly.ads \ ++ g-socthi.adb<g-socthi-bsd.adb \ ++ s-trasym.adb<s-trasym-bsd.adb \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-mudido.adb<s-mudido-affinity.adb \ +@@ -1547,6 +1594,8 @@ + mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb + GNATLIB_SHARED = gnatlib-shared-dual + ++ EXTRA_LIBGNAT_SRCS+= traceback_symbolic.c ++ EXTRA_LIBGNAT_OBJS+= traceback_symbolic.o + EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o + + EH_MECHANISM=-gcc +--- gcc/ada/gcc-interface/Make-lang.in.orig ++++ gcc/ada/gcc-interface/Make-lang.in +@@ -589,7 +589,7 @@ + ada/widechar.o + + # Language-independent object files. +-ADA_BACKEND = $(BACKEND) attribs.o ++ADA_BACKEND = $(BACKEND2) attribs.o + + # List of target dependent sources, overridden below as necessary + TARGET_ADA_SRCS = diff --git a/lang/gcc6-aux/files/diff-ada-testsuite b/lang/gcc6-aux/files/diff-ada-testsuite new file mode 100644 index 000000000000..1e5d47939f39 --- /dev/null +++ b/lang/gcc6-aux/files/diff-ada-testsuite @@ -0,0 +1,705 @@ +--- gcc/testsuite/ada/acats/run_acats.orig ++++ gcc/testsuite/ada/acats/run_acats +@@ -5,20 +5,6 @@ + exit 1 + fi + +-# Provide which replacement. +-# +-# type -p is missing from Solaris 2 /bin/sh and /bin/ksh (ksh88), but both +-# ksh93 and bash have it. +-# type output format differs between ksh88 and ksh93, so avoid it if +-# type -p is present. Unfortunately, HP-UX /bin/sh ignores -p with type. +-# Fall back to whence which ksh88 and ksh93 provide, but bash does not. +- +-which () { +- path=`type -p $* 2>/dev/null` && { echo $path | awk '{print $NF}'; return 0; } +- path=`type $* 2>/dev/null` && { echo $path | awk '{print $NF}'; return 0; } +- path=`whence $* 2>/dev/null` && { echo $path; return 0; } +- return 1 +-} + + # Set up environment to use the Ada compiler from the object tree + +--- gcc/testsuite/ada/acats/run_all.sh.orig ++++ gcc/testsuite/ada/acats/run_all.sh +@@ -18,21 +18,6 @@ + + # End of customization section. + +-# Perform arithmetic evaluation on the ARGs, and store the result in the +-# global $as_val. Take advantage of shells that can avoid forks. The arguments +-# must be portable across $(()) and expr. +-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +- eval 'as_fn_arith () +- { +- as_val=$(( $* )) +- }' +-else +- as_fn_arith () +- { +- as_val=`expr "$@" || test $? -eq 1` +- } +-fi # as_fn_arith +- + display_noeol () { + printf "$@" + printf "$@" >> $dir/acats.sum +@@ -50,6 +35,14 @@ + echo "$@" >> $dir/acats.log + } + ++inform () { ++ printf "%04d %7s" $1 $2 ++} ++ ++disinform () { ++ printf "\r" ++} ++ + dir=`${PWDCMD-pwd}` + + if [ "$testdir" = "" ]; then +@@ -105,18 +98,6 @@ + gnatls -v >> $dir/acats.log + display "" + +-if [ -n "$GCC_RUNTEST_PARALLELIZE_DIR" ]; then +- dir_support=$dir/../acats/support +- +- rm -rf $dir/run +- mv $dir/tests $dir/tests.$$ 2> /dev/null +- rm -rf $dir/tests.$$ & +- mkdir -p $dir/run +- +- cp -pr $dir/../acats/tests $dir/ +-else +- dir_support=$dir/support +- + display " === acats support ===" + display_noeol "Generating support files..." + +@@ -213,9 +194,6 @@ + + display " done." + display "" +- +-fi +- + display " === acats tests ===" + + if [ $# -eq 0 ]; then +@@ -227,14 +205,20 @@ + glob_countn=0 + glob_countok=0 + glob_countu=0 +-par_count=0 +-par_countm=0 +-par_last= ++countdown=0 + + for chapter in $chapters; do +- # Used to generate support once and finish after that. +- [ "$chapter" = "NONE" ] && continue ++ if [ -d $dir/tests/$chapter ]; then ++ cd $dir/tests/$chapter ++ ls *.a *.ada *.adt *.am *.dep 2> /dev/null | sed -e 's/\(.*\)\..*/\1/g' | \ ++ cut -c1-7 | sort | uniq | comm -23 - $dir/support/norun.lst \ ++ > $dir/tests/$chapter/${chapter}.lst ++ countn=`wc -l < $dir/tests/$chapter/${chapter}.lst` ++ countdown=`expr $countdown + $countn` ++ fi ++done + ++for chapter in $chapters; do + display Running chapter $chapter ... + + if [ ! -d $dir/tests/$chapter ]; then +@@ -243,45 +227,11 @@ + continue + fi + +- cd $dir/tests/$chapter +- ls *.a *.ada *.adt *.am *.dep 2> /dev/null | sed -e 's/\(.*\)\..*/\1/g' | \ +- cut -c1-7 | sort | uniq | comm -23 - $dir_support/norun.lst \ +- > $dir/tests/$chapter/${chapter}.lst + countn=`wc -l < $dir/tests/$chapter/${chapter}.lst` +- as_fn_arith $glob_countn + $countn +- glob_countn=$as_val ++ glob_countn=`expr $glob_countn + $countn` ++ counti=0 + for i in `cat $dir/tests/$chapter/${chapter}.lst`; do +- +- # If running multiple run_all.sh jobs in parallel, decide +- # if we should run this test in the current instance. +- if [ -n "$GCC_RUNTEST_PARALLELIZE_DIR" ]; then +- case "$i" in +- # Ugh, some tests have inter-test dependencies, those +- # tests have to be scheduled on the same parallel instance +- # as previous test. +- ce2108f | ce2108h | ce3112d) ;; +- # All others can be hopefully scheduled freely. +- *) +- as_fn_arith $par_countm + 1 +- par_countm=$as_val +- [ $par_countm -eq 10 ] && par_countm=0 +- if [ $par_countm -eq 1 ]; then +- as_fn_arith $par_count + 1 +- par_count=$as_val +- if mkdir $GCC_RUNTEST_PARALLELIZE_DIR/$par_count 2>/dev/null; then +- par_last=1 +- else +- par_last= +- fi +- fi;; +- esac +- if [ -z "$par_last" ]; then +- as_fn_arith $glob_countn - 1 +- glob_countn=$as_val +- continue +- fi +- fi +- ++ counti=`expr $counti + 1` + extraflags="-gnat95" + grep $i $testdir/overflow.lst > /dev/null 2>&1 + if [ $? -eq 0 ]; then +@@ -299,10 +249,13 @@ + if [ $? -eq 0 ]; then + extraflags="$extraflags -fstack-check" + fi ++ inform $countdown $i ++ countdown=`expr $countdown - 1` + test=$dir/tests/$chapter/$i + mkdir $test && cd $test >> $dir/acats.log 2>&1 + + if [ $? -ne 0 ]; then ++ disinform + display "FAIL: $i" + failed="${failed}${i} " + clean_dir +@@ -320,19 +273,22 @@ + echo "BUILD $main" >> $dir/acats.log + EXTERNAL_OBJECTS="" + case $i in +- cxb30*) EXTERNAL_OBJECTS="$dir_support/cxb30040.o $dir_support/cxb30060.o $dir_support/cxb30130.o $dir_support/cxb30131.o";; ++ cxb30*) EXTERNAL_OBJECTS="$dir/support/cxb30040.o $dir/support/cxb30060.o $dir/support/cxb30130.o $dir/support/cxb30131.o";; + ca1020e) rm -f ca1020e_func1.adb ca1020e_func2.adb ca1020e_proc1.adb ca1020e_proc2.adb > /dev/null 2>&1;; + ca14028) rm -f ca14028_func2.ads ca14028_func3.ads ca14028_proc1.ads ca14028_proc3.ads > /dev/null 2>&1;; ++ cxh1001) extraflags="-a -f"; echo "pragma Normalize_Scalars;" > gnat.adc + esac + if [ "$main" = "" ]; then ++ disinform + display "FAIL: $i" + failed="${failed}${i} " + clean_dir + continue + fi + +- target_gnatmake $extraflags -I$dir_support $main >> $dir/acats.log 2>&1 ++ target_gnatmake $extraflags -I$dir/support $main >> $dir/acats.log 2>&1 + if [ $? -ne 0 ]; then ++ disinform + display "FAIL: $i" + failed="${failed}${i} " + clean_dir +@@ -347,6 +303,7 @@ + target_run $dir/tests/$chapter/$i/$binmain > $dir/tests/$chapter/$i/${i}.log 2>&1 + cd $dir/tests/$chapter/$i + cat ${i}.log >> $dir/acats.log ++ disinform + egrep -e '(==== |\+\+\+\+ |\!\!\!\! )' ${i}.log > /dev/null 2>&1 + if [ $? -ne 0 ]; then + grep 'tasking not implemented' ${i}.log > /dev/null 2>&1 +@@ -356,15 +313,12 @@ + failed="${failed}${i} " + else + log "UNSUPPORTED: $i" +- as_fn_arith $glob_countn - 1 +- glob_countn=$as_val +- as_fn_arith $glob_countu + 1 +- glob_countu=$as_val ++ glob_countn=`expr $glob_countn - 1` ++ glob_countu=`expr $glob_countu + 1` + fi + else + log "PASS: $i" +- as_fn_arith $glob_countok + 1 +- glob_countok=$as_val ++ glob_countok=`expr $glob_countok + 1` + fi + clean_dir + done +--- /dev/null ++++ gcc/testsuite/ada/acats/run_remote.sh +@@ -0,0 +1,412 @@ ++#!/bin/sh ++# Run ACATS with the GNU Ada compiler ++ ++# The following functions are to be customized if you run in cross ++# environment or want to change compilation flags. Note that for ++# tests requiring checks not turned on by default, this script ++# automatically adds the needed flags to pass (ie: -gnato or -gnatE). ++ ++# gccflags="-O3 -fomit-frame-pointer -funroll-all-loops -finline-functions" ++# gnatflags="-gnatN" ++ ++gccflags="-O2" ++gnatflags="-gnatws" ++tabtarget="/data/local/testsuite" ++STRIP="@REMOTE_TARGET@-strip" ++ ++target_run () { ++ # Run on rooted tablet (port 22 vs port 2222) ++ BN=`basename $*` ++ $STRIP_FOR_TARGET $* ++ /usr/bin/scp -qp $* root@tablet:$tabtarget/ ++ /usr/bin/ssh -q tablet $tabtarget/$BN ++} ++ ++target_cmd () { ++ /usr/bin/ssh -q tablet "$1" ++} ++ ++# End of customization section. ++ ++display_noeol () { ++ printf "$@" ++ printf "$@" >> $dir/acats.sum ++ printf "$@" >> $dir/acats.log ++} ++ ++display () { ++ echo "$@" ++ echo "$@" >> $dir/acats.sum ++ echo "$@" >> $dir/acats.log ++} ++ ++log () { ++ echo "$@" >> $dir/acats.sum ++ echo "$@" >> $dir/acats.log ++} ++ ++inform () { ++ printf "%04d %7s" $1 $2 ++} ++ ++disinform () { ++ printf "\r" ++} ++ ++dir=`${PWDCMD-pwd}` ++ ++if [ "$testdir" = "" ]; then ++ echo You must use make check or make check-ada ++ exit 1 ++fi ++ ++if [ "$dir" = "$testdir" ]; then ++ echo "error: srcdir must be different than objdir, exiting." ++ exit 1 ++fi ++ ++target_gnatmake () { ++ echo gnatmake-cross --GCC=\"$GCC\" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC=\"$GCC\" -fPIE -pie ++ gnatmake-cross --GCC="$GCC" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC="$GCC" -fPIE -pie ++} ++ ++target_gcc () { ++ $GCC $gccflags $* ++} ++ ++clean_dir () { ++ rm -f "$binmain" *.o *.ali > /dev/null 2>&1 ++} ++ ++find_main () { ++ ls ${i}?.adb > ${i}.lst 2> /dev/null ++ ls ${i}*m.adb >> ${i}.lst 2> /dev/null ++ ls ${i}.adb >> ${i}.lst 2> /dev/null ++ main=`tail -1 ${i}.lst` ++} ++ ++split_testid () { ++ local mysplit=`echo $1 | awk -F/ '{print "section=" $1 "; TN=" $2 "; prog=" $3 ";"}'` ++ eval ${mysplit} ++} ++ ++EXTERNAL_OBJECTS="" ++# Global variable to communicate external objects to link with. ++ ++rm -f $dir/acats.sum $dir/acats.log $dir/transfer.lst ++ ++display "Test Run By $USER on `date`" ++ ++display " === acats configuration ===" ++ ++target=`$GCC -dumpmachine` ++ ++display target gcc is $GCC ++display `$GCC -v 2>&1` ++display host=`gcc -dumpmachine` ++display target=$target ++display `type gnatmake-cross` ++gnatls-cross -v >> $dir/acats.log ++display "" ++ ++# Let's be tidy and clear off the remote device first ++target_cmd "cd ${tabtarget}; rm logs/*; rmdir logs; rm *" ++ ++display " === acats support ===" ++display_noeol "Generating support files..." ++ ++rm -rf $dir/support ++mkdir -p $dir/support ++cd $dir/support ++ ++cp $testdir/support/*.ada $testdir/support/*.a $testdir/support/*.tst $dir/support ++ ++# Find out the size in bit of an address on the target ++target_gnatmake $testdir/support/impbit.adb >> $dir/acats.log 2>&1 ++target_run $dir/support/impbit > $dir/support/impbit.out 2>&1 ++target_bit=`cat $dir/support/impbit.out` ++echo target_bit="$target_bit" >> $dir/acats.log ++ ++# Find out a suitable asm statement ++# Adapted from configure.ac gcc_cv_as_dwarf2_debug_line ++case "$target" in ++ ia64*-*-* | s390*-*-*) ++ target_insn="nop 0" ++ ;; ++ mmix-*-*) ++ target_insn="swym 0" ++ ;; ++ *) ++ target_insn="nop" ++ ;; ++esac ++echo target_insn="$target_insn" >> $dir/acats.log ++ ++sed -e "s,ACATS4GNATDIR,$dir,g" \ ++ < $testdir/support/impdef.a > $dir/support/impdef.a ++sed -e "s,ACATS4GNATDIR,$dir,g" \ ++ -e "s,ACATS4GNATBIT,$target_bit,g" \ ++ -e "s,ACATS4GNATINSN,$target_insn,g" \ ++ < $testdir/support/macro.dfs > $dir/support/MACRO.DFS ++sed -e "s,ACATS4GNATDIR,$dir,g" \ ++ < $testdir/support/tsttests.dat > $dir/support/TSTTESTS.DAT ++ ++cp $testdir/tests/cd/*.c $dir/support ++cp $testdir/tests/cxb/*.c $dir/support ++grep -v '^#' $testdir/norun.lst | sort > $dir/support/norun.lst ++ ++rm -rf $dir/run ++mv $dir/tests $dir/tests.$$ 2> /dev/null ++rm -rf $dir/tests.$$ & ++mkdir -p $dir/run ++ ++cp -pr $testdir/tests $dir/ ++ ++for i in $dir/support/*.ada $dir/support/*.a; do ++ host_gnatchop $i >> $dir/acats.log 2>&1 ++done ++ ++# These tools are used to preprocess some ACATS sources ++# they need to be compiled native on the host. ++ ++host_gnatmake -q -gnatws macrosub.adb ++if [ $? -ne 0 ]; then ++ display "**** Failed to compile macrosub" ++ exit 1 ++fi ++./macrosub > macrosub.out 2>&1 ++ ++gcc -c cd300051.c ++host_gnatmake -q -gnatws widechr.adb ++if [ $? -ne 0 ]; then ++ display "**** Failed to compile widechr" ++ exit 1 ++fi ++./widechr > widechr.out 2>&1 ++ ++rm -f $dir/support/macrosub ++rm -f $dir/support/widechr ++rm -f $dir/support/*.ali ++rm -f $dir/support/*.o ++ ++display " done." ++ ++# From here, all compilations will be made by the target compiler ++ ++display_noeol "Compiling support files..." ++ ++target_gcc -c *.c ++if [ $? -ne 0 ]; then ++ display "**** Failed to compile C code" ++ exit 1 ++fi ++ ++host_gnatchop *.adt >> $dir/acats.log 2>&1 ++ ++target_gnatmake -c -gnato -gnatE *.ads >> $dir/acats.log 2>&1 ++target_gnatmake -c -gnato -gnatE *.adb >> $dir/acats.log 2>&1 ++ ++display " done." ++display "" ++display " === acats tests ===" ++ ++if [ $# -eq 0 ]; then ++ chapters=`cd $dir/tests; echo [a-z]*` ++else ++ chapters=$* ++fi ++ ++glob_countn=0 ++glob_countok=0 ++glob_countu=0 ++countdown=0 ++ ++for chapter in $chapters; do ++ if [ -d $dir/tests/$chapter ]; then ++ cd $dir/tests/$chapter ++ ls *.a *.ada *.adt *.am *.dep 2> /dev/null | sed -e 's/\(.*\)\..*/\1/g' | \ ++ cut -c1-7 | sort | uniq | comm -23 - $dir/support/norun.lst \ ++ > $dir/tests/$chapter/${chapter}.lst ++ countn=`wc -l < $dir/tests/$chapter/${chapter}.lst` ++ countdown=`expr $countdown + $countn` ++ fi ++done ++ ++cat > $dir/execute.sh << EOF ++inform () { ++ printf "left: %04d" \$1 ++} ++disinform () { ++ printf "\r" ++} ++cycle () { ++ local countx=0 ++ local total=\$(echo \$testlist | awk '{print NF}') ++ mkdir -p logs ++ echo "Executing \$total tests on remote device" ++ inform \$total ++ for x in \$testlist; do ++ timeout -t 30 ./\${x} > logs/\${x}.log 2>&1 ++ countx=\$(expr \$countx + 1) ++ if [ \$countx -eq 25 ]; then ++ total=\$(expr \$total - 25) ++ countx=0 ++ disinform ++ inform \$total ++ fi ++ done ++ disinform ++ tar -czf remote.logs.tar.gz logs ++} ++testlist=" \\ ++EOF ++ ++display "All tests are being cross-compiled without execution first." ++ ++for chapter in $chapters; do ++ if [ ! -d $dir/tests/$chapter ]; then ++ continue ++ fi ++ ++ countn=`wc -l < $dir/tests/$chapter/${chapter}.lst` ++ glob_countn=`expr $glob_countn + $countn` ++ counti=0 ++ for i in `cat $dir/tests/$chapter/${chapter}.lst`; do ++ counti=`expr $counti + 1` ++ extraflags="-gnat95" ++ grep $i $testdir/overflow.lst > /dev/null 2>&1 ++ if [ $? -eq 0 ]; then ++ extraflags="$extraflags -gnato" ++ fi ++ grep $i $testdir/elabd.lst > /dev/null 2>&1 ++ if [ $? -eq 0 ]; then ++ extraflags="$extraflags -gnatE" ++ fi ++ grep $i $testdir/floatstore.lst > /dev/null 2>&1 ++ if [ $? -eq 0 ]; then ++ extraflags="$extraflags -ffloat-store" ++ fi ++ grep $i $testdir/stackcheck.lst > /dev/null 2>&1 ++ if [ $? -eq 0 ]; then ++ extraflags="$extraflags -fstack-check" ++ fi ++ inform $countdown $i ++ countdown=`expr $countdown - 1` ++ test=$dir/tests/$chapter/$i ++ mkdir $test && cd $test >> $dir/acats.log 2>&1 ++ ++ if [ $? -ne 0 ]; then ++ disinform ++ display "FAIL: $i" ++ failed="${failed}${i} " ++ clean_dir ++ continue ++ fi ++ ++ host_gnatchop -c -w `ls ${test}*.a ${test}*.ada ${test}*.adt ${test}*.am ${test}*.dep 2> /dev/null` >> $dir/acats.log 2>&1 ++ find_main ++ if [ -z "$main" ]; then ++ sync ++ find_main ++ fi ++ binmain=`echo $main | sed -e 's/\(.*\)\..*/\1/g'` ++ echo "BUILD $main" >> $dir/acats.log ++ EXTERNAL_OBJECTS="" ++ case $i in ++ cxb30*) EXTERNAL_OBJECTS="$dir/support/cxb30040.o $dir/support/cxb30060.o $dir/support/cxb30130.o $dir/support/cxb30131.o";; ++ ca1020e) rm -f ca1020e_func1.adb ca1020e_func2.adb ca1020e_proc1.adb ca1020e_proc2.adb > /dev/null 2>&1;; ++ ca14028) rm -f ca14028_func2.ads ca14028_func3.ads ca14028_proc1.ads ca14028_proc3.ads > /dev/null 2>&1;; ++ cxh1001) extraflags="-a -f"; echo "pragma Normalize_Scalars;" > gnat.adc ++ esac ++ if [ "$main" = "" ]; then ++ disinform ++ display "FAIL: $i" ++ failed="${failed}${i} " ++ clean_dir ++ continue ++ fi ++ ++ target_gnatmake $extraflags -I$dir/support $main >> $dir/acats.log 2>&1 ++ if [ $? -ne 0 ]; then ++ disinform ++ display "FAIL: $i" ++ failed="${failed}${i} " ++ clean_dir ++ continue ++ fi ++ echo $chapter/$i/$binmain >> $dir/transfer.lst ++ echo "$binmain \\" >> $dir/execute.sh ++ $STRIP $binmain ++ disinform ++ done ++done ++echo '"' >> $dir/execute.sh ++echo "cycle" >> $dir/execute.sh ++ ++sync ++display "Transfer files to remote device: root@tablet:$tabtarget/" ++cd $dir/tests ++cat $dir/transfer.lst | xargs tar --strip-components=2 -czf - | \ ++ target_cmd "tar -C $tabtarget -xzf -" ++cd $dir ++tar -czf - execute.sh | target_cmd "tar -C $tabtarget -xzf -" ++target_cmd "cd $tabtarget; sh execute.sh" ++rm -rf $dir/logs $dir/remote.logs.tar.gz ++/usr/bin/scp -q root@tablet:$tabtarget/remote.logs.tar.gz $dir/ ++tar -xzf $dir/remote.logs.tar.gz ++ ++countdown=`wc -l < $dir/transfer.lst` ++glob_countn=${countdown} ++for i in `cat $dir/transfer.lst`; do ++ split_testid $i ++ if [ "$section" != "$savedsect" ]; then ++ display Running chapter $section ... ++ fi ++ savedsect=$section ++ ++ #inform $countdown $TN ++ countdown=`expr $countdown - 1` ++ proglog="$dir/logs/${prog}.log" ++ echo "RUN $prog" >> $dir/acats.log ++ if [ ! -f $proglog ]; then ++ echo "LOG NOT FOUND!" >> $proglog ++ fi ++ ++ cat $proglog >> $dir/acats.log ++ ++ egrep -e '(==== |\+\+\+\+ |\!\!\!\! )' $proglog > /dev/null 2>&1 ++ if [ $? -ne 0 ]; then ++ grep 'tasking not implemented' $proglog > /dev/null 2>&1 ++ ++ if [ $? -ne 0 ]; then ++ display "FAIL: ${TN}" ++ failed="${failed}${TN} " ++ else ++ log "UNSUPPORTED: ${TN}" ++ glob_countn=`expr $glob_countn - 1` ++ glob_countu=`expr $glob_countu + 1` ++ fi ++ else ++ log "PASS: ${TN}" ++ glob_countok=`expr $glob_countok + 1` ++ fi ++ cd $dir/tests/$section/$TN ++ clean_dir ++ #disinform ++done ++ ++display " === acats Summary ===" ++display "# of expected passes $glob_countok" ++display "# of unexpected failures `expr $glob_countn - $glob_countok`" ++ ++if [ $glob_countu -ne 0 ]; then ++ display "# of unsupported tests $glob_countu" ++fi ++ ++if [ $glob_countok -ne $glob_countn ]; then ++ display "*** FAILURES: $failed" ++fi ++ ++display "$0 completed at `date`" ++ ++exit 0 +--- gcc/testsuite/gnat.dg/test_raise_from_pure.adb.orig ++++ gcc/testsuite/gnat.dg/test_raise_from_pure.adb +@@ -1,4 +1,4 @@ +--- { dg-do run } ++-- { dg-do run { xfail *-*-openbsd* } } + -- { dg-options "-O2" } + + -- This is an optimization test and its failure is only a missed optimization. +--- gcc/testsuite/gnat.dg/unchecked_convert5.adb.orig ++++ gcc/testsuite/gnat.dg/unchecked_convert5.adb +@@ -1,22 +0,0 @@ +--- { dg-do run { target hppa*-*-* sparc*-*-* powerpc*-*-* } } +- +-with Unchecked_Conversion; +- +-procedure Unchecked_Convert5 is +- +- subtype c_1 is string(1..1); +- +- function int2c1 is -- { dg-warning "different sizes" } +- new unchecked_conversion (source => integer, target => c_1); +- +- c1 : c_1; +- +-begin +- +- c1 := int2c1(16#12#); +- +- if c1 (1) /= ASCII.Nul then +- raise Program_Error; +- end if; +- +-end; +--- gcc/testsuite/gnat.dg/unchecked_convert6.adb.orig ++++ gcc/testsuite/gnat.dg/unchecked_convert6.adb +@@ -1,22 +0,0 @@ +--- { dg-do run { target hppa*-*-* sparc*-*-* powerpc*-*-* } } +- +-with Unchecked_Conversion; +- +-procedure Unchecked_Convert6 is +- +- subtype c_5 is string(1..5); +- +- function int2c5 is -- { dg-warning "different sizes" } +- new unchecked_conversion (source => integer, target => c_5); +- +- c5 : c_5; +- +-begin +- +- c5 := int2c5(16#12#); +- +- if c5 (4) /= ASCII.DC2 then +- raise Program_Error; +- end if; +- +-end; diff --git a/lang/gcc6-aux/files/diff-core b/lang/gcc6-aux/files/diff-core new file mode 100644 index 000000000000..c3db3ddd1c7a --- /dev/null +++ b/lang/gcc6-aux/files/diff-core @@ -0,0 +1,92 @@ +--- gcc/config/i386/freebsd.h.orig ++++ gcc/config/i386/freebsd.h +@@ -77,6 +77,12 @@ + When the -shared link option is used a final link is not being + done. */ + ++#if FBSD_MAJOR < 10 ++#define ELF_HASH_STYLE "--hash-style=both " ++#else ++#define ELF_HASH_STYLE "--hash-style=gnu " ++#endif ++ + #undef LINK_SPEC + #define LINK_SPEC "\ + %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \ +@@ -88,6 +94,7 @@ + %{rdynamic:-export-dynamic} \ + -dynamic-linker %(fbsd_dynamic_linker) } \ + %{static:-Bstatic}} \ ++ %{!static:" ELF_HASH_STYLE "-rpath @PREFIX@/@GCCAUX@/lib} \ + %{symbolic:-Bsymbolic}" + + /* A C statement to output to the stdio stream FILE an assembler +--- gcc/config/i386/freebsd64.h.orig ++++ gcc/config/i386/freebsd64.h +@@ -41,4 +41,5 @@ + %{rdynamic:-export-dynamic} \ + -dynamic-linker %(fbsd_dynamic_linker) } \ + %{static:-Bstatic}} \ ++ %{!static:" ELF_HASH_STYLE "-rpath @PREFIX@/@GCCAUX@/lib} \ + %{symbolic:-Bsymbolic}" +--- gcc/Makefile.in.orig ++++ gcc/Makefile.in +@@ -1184,7 +1184,6 @@ + insn-emit.o \ + insn-extract.o \ + insn-latencytab.o \ +- insn-modes.o \ + insn-opinit.o \ + insn-output.o \ + insn-peep.o \ +@@ -1547,6 +1546,7 @@ + $(OBJS-libcommon-target) main.o c-family/cppspec.o \ + $(COLLECT2_OBJS) $(EXTRA_GCC_OBJS) $(GCOV_OBJS) $(GCOV_DUMP_OBJS) \ + $(GCOV_TOOL_OBJS) $(GENGTYPE_OBJS) gcc-ar.o gcc-nm.o gcc-ranlib.o \ ++ insn-modes.o insn-modes-ada.o \ + lto-wrapper.o collect-utils.o + + # This lists all host object files, whether they are included in this +@@ -1554,6 +1554,11 @@ + ALL_HOST_OBJS = $(ALL_HOST_FRONTEND_OBJS) $(ALL_HOST_BACKEND_OBJS) + + BACKEND = libbackend.a main.o libcommon-target.a libcommon.a \ ++ insn-modes.o \ ++ $(CPPLIB) $(LIBDECNUMBER) ++ ++BACKEND2 = libbackend.a main.o libcommon-target.a libcommon.a \ ++ insn-modes-ada.o \ + $(CPPLIB) $(LIBDECNUMBER) + + # This is defined to "yes" if Tree checking is enabled, which roughly means +@@ -2208,6 +2213,7 @@ + + insn-modes.c: s-modes; @true + insn-modes.h: s-modes-h; @true ++insn-modes-ada.c: s-modes-ada; @true + min-insn-modes.c: s-modes-m; @true + + s-modes: build/genmodes$(build_exeext) +@@ -2225,6 +2231,12 @@ + $(SHELL) $(srcdir)/../move-if-change tmp-min-modes.c min-insn-modes.c + $(STAMP) s-modes-m + ++s-modes-ada: s-modes ++ $(shell sed -e 's/: TARGET_96_ROUND_53_LONG_DOUBLE \? &ieee_extended_intel_96_round_53_format //' \ ++ < insn-modes.c > tmp-modes-ada.c) ++ $(SHELL) $(srcdir)/../move-if-change tmp-modes-ada.c insn-modes-ada.c ++ $(STAMP) s-modes-ada ++ + insn-preds.c: s-preds; @true + tm-preds.h: s-preds-h; @true + tm-constrs.h: s-constrs-h; @true +@@ -3407,6 +3419,9 @@ + ( cd $(DESTDIR)$(bindir) && \ + $(LN) $(GCC_INSTALL_NAME)$(exeext) $(FULL_DRIVER_NAME) ); \ + fi; \ ++ if [ -f gnat1$(exeext) ] ; then \ ++ ( cd $(DESTDIR)$(bindir) && $(LN) $(GCC_INSTALL_NAME)$(exeext) ada$(exeext) ) \ ++ fi; \ + if [ ! -f gcc-cross$(exeext) ] \ + && [ "$(GCC_INSTALL_NAME)" != "$(GCC_TARGET_INSTALL_NAME)" ]; then \ + rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-tmp$(exeext); \ diff --git a/lang/gcc6-aux/files/diff-cxx b/lang/gcc6-aux/files/diff-cxx new file mode 100644 index 000000000000..672c9ca9965c --- /dev/null +++ b/lang/gcc6-aux/files/diff-cxx @@ -0,0 +1,12 @@ +--- libstdc++-v3/configure.host.orig ++++ libstdc++-v3/configure.host +@@ -262,6 +262,9 @@ + freebsd*) + os_include_dir="os/bsd/freebsd" + ;; ++ linux-android*) ++ os_include_dir="os/bionic" ++ ;; + linux-musl*) + os_include_dir="os/generic" + ;; diff --git a/lang/gcc6-aux/files/diff-gcc-testsuite b/lang/gcc6-aux/files/diff-gcc-testsuite new file mode 100644 index 000000000000..a9a330ecf553 --- /dev/null +++ b/lang/gcc6-aux/files/diff-gcc-testsuite @@ -0,0 +1,46 @@ +--- gcc/testsuite/gcc.dg/format/ext-1.c.orig ++++ gcc/testsuite/gcc.dg/format/ext-1.c +@@ -8,7 +8,7 @@ + #include "format.h" + + void +-foo (quad_t q, u_quad_t uq, quad_t *qn, size_t z, size_t *zn, long long int ll, ++foo (quad2_t q, u_quad2_t uq, quad2_t *qn, size_t z, size_t *zn, long long int ll, + unsigned long long int ull, int i, unsigned int u, double d, + char *s, void *p, wchar_t *ls, wint_t lc, int *n, long int l) + { +--- gcc/testsuite/gcc.dg/format/ext-2.c.orig ++++ gcc/testsuite/gcc.dg/format/ext-2.c +@@ -8,7 +8,7 @@ + #include "format.h" + + void +-foo (quad_t *qp, u_quad_t *uqp, quad_t *qn, long long int *llp, ++foo (quad2_t *qp, u_quad2_t *uqp, quad2_t *qn, long long int *llp, + unsigned long long int *ullp, float *fp, char *s, void **pp, wchar_t *ls, + int *ip, unsigned int *up) + { +--- gcc/testsuite/gcc.dg/format/format.h.orig ++++ gcc/testsuite/gcc.dg/format/format.h +@@ -71,8 +71,8 @@ + #endif + + /* %q formats want a "quad"; GCC considers this to be a long long. */ +-typedef llong quad_t; +-typedef ullong u_quad_t; ++typedef llong quad2_t; ++typedef ullong u_quad2_t; + + __extension__ typedef __INTMAX_TYPE__ intmax_t; + __extension__ typedef __UINTMAX_TYPE__ uintmax_t; +--- gcc/testsuite/gcc.dg/pch/pch.exp.orig ++++ gcc/testsuite/gcc.dg/pch/pch.exp +@@ -44,6 +44,8 @@ + set test "largefile.c" + set testh "largefile.hs" + set f [open $test w] ++puts $f "/* { dg-do run { target *-*-solaris* } } */" ++puts $f "/* { dg-error \"dummy\" \"fool dejagnu\" { target { ! *-*-solaris* } 20 } } */" + puts $f "/* { dg-timeout-factor 4.0 } */" + set v 0 + for { set v 0 } { $v < 10000 } { incr v } { diff --git a/lang/gcc6-aux/files/gnatdroid.exp b/lang/gcc6-aux/files/gnatdroid.exp new file mode 100644 index 000000000000..978319f8a9b1 --- /dev/null +++ b/lang/gcc6-aux/files/gnatdroid.exp @@ -0,0 +1,14 @@ +# gnatdroid testsuite running over ssh. + +load_generic_config "android" + +process_multilib_options "" + +# The default compiler for this target. +set_board_info compiler "[find_gcc]" + +set_board_info rsh_prog /usr/bin/ssh +set_board_info rcp_prog /usr/bin/scp +set_board_info protocol standard +set_board_info hostname tablet +set_board_info username root diff --git a/lang/gcc6-aux/pkg-descr b/lang/gcc6-aux/pkg-descr new file mode 100644 index 000000000000..c7eff9c4711d --- /dev/null +++ b/lang/gcc6-aux/pkg-descr @@ -0,0 +1,14 @@ +The AUX compiler supports several languages: Ada, C, C++, Fortran and +Objective-C. Since Ada support must be built by an Ada-capable compiler, +only platforms for which a bootstrap compiler is available can build it. + +The AUX compiler is based on release versions of the Free Software +Foundation's GNU Compiler Collection. It uses the GCC Runtime Library +Exception, so the resulting binaries have no licensing requirements. +Binaries produced by the AUX compiler should be legally handled the same +as binaries produced by any FSF compiler. + +This compiler implements the full Ada-83, Ada-95, Ada-2005 and Ada-2012 +standards. + +WWW: http://www.dragonlace.net/ |