aboutsummaryrefslogtreecommitdiff
path: root/lang/gcc-aux
diff options
context:
space:
mode:
authorJohn Marino <marino@FreeBSD.org>2014-04-09 13:52:50 +0000
committerJohn Marino <marino@FreeBSD.org>2014-04-09 13:52:50 +0000
commitd6fcd55b065bd45b5f02768037e216d0a1e59b1a (patch)
tree1e4b0dd43928e38cedc3b2cb402dbc6b6c770dc8 /lang/gcc-aux
parentdafdcb174b81ddec09c1ab1f4d87411be7a08491 (diff)
downloadports-d6fcd55b065bd45b5f02768037e216d0a1e59b1a.tar.gz
ports-d6fcd55b065bd45b5f02768037e216d0a1e59b1a.zip
Notes
Diffstat (limited to 'lang/gcc-aux')
-rw-r--r--lang/gcc-aux/Makefile.version2
-rw-r--r--lang/gcc-aux/distinfo4
-rw-r--r--lang/gcc-aux/files/diff-ada775
-rw-r--r--lang/gcc-aux/files/diff-ada-testsuite2
-rw-r--r--lang/gcc-aux/files/diff-core31
-rw-r--r--lang/gcc-aux/files/diff-cxx5
-rw-r--r--lang/gcc-aux/files/diff-cxx-testsuite13
-rw-r--r--lang/gcc-aux/files/diff-fortran2
-rw-r--r--lang/gcc-aux/files/patch-Makefile.def10
-rw-r--r--lang/gcc-aux/files/patch-Makefile.in10
10 files changed, 810 insertions, 44 deletions
diff --git a/lang/gcc-aux/Makefile.version b/lang/gcc-aux/Makefile.version
index 6216ea8a2d63..d82208b800ff 100644
--- a/lang/gcc-aux/Makefile.version
+++ b/lang/gcc-aux/Makefile.version
@@ -3,7 +3,7 @@
GCC_BRANCH= 4.9
GCC_POINT= 0
GCC_VERSION= ${GCC_BRANCH}.${GCC_POINT}
-SNAPSHOT= 20140330
+SNAPSHOT= 20140406
IDENTIFICATION= gcc-${GCC_BRANCH}-${SNAPSHOT}
MS_SUBDIR= snapshots/${GCC_BRANCH}-${SNAPSHOT}
diff --git a/lang/gcc-aux/distinfo b/lang/gcc-aux/distinfo
index ff62f2ffc3ca..c44e9f30de87 100644
--- a/lang/gcc-aux/distinfo
+++ b/lang/gcc-aux/distinfo
@@ -1,5 +1,5 @@
-SHA256 (gcc-4.9-20140330.tar.bz2) = 34374d87b1a58bf5d11d7bc53b921088281c731bc141907049f2f57f453af104
-SIZE (gcc-4.9-20140330.tar.bz2) = 85486216
+SHA256 (gcc-4.9-20140406.tar.bz2) = 5f9e1c96b5bc000456b7fe7805dca90866cd18b6fbe00e26f3f3e8236d07d0a3
+SIZE (gcc-4.9-20140406.tar.bz2) = 85440592
SHA256 (ada-bootstrap.i386.dragonfly.36A.tar.bz2) = 6b1a6ff0fe0e3bf13c667db2fef177b811329cd998400a1303969a86911cb1c8
SIZE (ada-bootstrap.i386.dragonfly.36A.tar.bz2) = 39357314
SHA256 (ada-bootstrap.i386.freebsd.84.tar.bz2) = b410336cb0e71c8a29dd5f831a17b4b7282e7d590f452475a94c6a625cfc8846
diff --git a/lang/gcc-aux/files/diff-ada b/lang/gcc-aux/files/diff-ada
index b3c301897cb8..1763266297c6 100644
--- a/lang/gcc-aux/files/diff-ada
+++ b/lang/gcc-aux/files/diff-ada
@@ -1993,6 +1993,531 @@
Non_Empty_Node : constant Project_Node_Id := 1;
--- /dev/null
++++ gcc/ada/s-intman-android.adb
+@@ -0,0 +1,331 @@
++------------------------------------------------------------------------------
++-- --
++-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
++-- --
++-- S Y S T E M . I N T E R R U P T _ M A N A G E M E N T --
++-- --
++-- B o d y --
++-- --
++-- Copyright (C) 2014, Free Software Foundation, Inc. --
++-- --
++-- GNARL 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. --
++-- --
++-- In particular, you can freely distribute your programs built with the --
++-- GNAT Pro compiler, including any required library run-time units, using --
++-- any licensing terms of your choosing. See the AdaCore Software License --
++-- for full details. --
++-- --
++-- GNARL was developed by the GNARL team at Florida State University. --
++-- Extensive contributions were provided by Ada Core Technologies, Inc. --
++-- --
++------------------------------------------------------------------------------
++
++-- This is the Android version of this package
++
++-- Make a careful study of all signals available under the OS, to see which
++-- need to be reserved, kept always unmasked, or kept always unmasked. Be on
++-- the lookout for special signals that may be used by the thread library.
++
++-- Since this is a multi target file, the signal <-> exception mapping
++-- is simple minded. If you need a more precise and target specific
++-- signal handling, create a new s-intman.adb that will fit your needs.
++
++-- This file assumes that:
++
++-- SIGFPE, SIGILL, SIGSEGV and SIGBUS exist. They are mapped as follows:
++-- SIGPFE => Constraint_Error
++-- SIGILL => Program_Error
++-- SIGSEGV => Storage_Error
++-- SIGBUS => Storage_Error
++
++-- SIGINT exists and will be kept unmasked unless the pragma
++-- Unreserve_All_Interrupts is specified anywhere in the application.
++
++-- System.OS_Interface contains the following:
++-- SIGADAABORT: the signal that will be used to abort tasks.
++-- Unmasked: the OS specific set of signals that should be unmasked in
++-- all the threads. SIGADAABORT is unmasked by
++-- default
++-- Reserved: the OS specific set of signals that are reserved.
++
++with System.Task_Primitives;
++
++package body System.Interrupt_Management is
++
++ use Interfaces.C;
++ use System.OS_Interface;
++
++ type Interrupt_List is array (Interrupt_ID range <>) of Interrupt_ID;
++ Exception_Interrupts : constant Interrupt_List :=
++ (SIGFPE, SIGILL, SIGSEGV, SIGBUS);
++
++ Unreserve_All_Interrupts : Interfaces.C.int;
++ pragma Import
++ (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
++
++ -----------------------
++ -- Local Subprograms --
++ -----------------------
++
++ procedure Signal_Trampoline
++ (signo : Signal;
++ siginfo : System.Address;
++ ucontext : System.Address;
++ handler : System.Address);
++ pragma Import (C, Signal_Trampoline, "__gnat_sigtramp");
++ -- Pass the real handler to a speical function that handles unwinding by
++ -- skipping over the kernel signal frame (which doesn't contain any unwind
++ -- information).
++
++ function State (Int : Interrupt_ID) return Character;
++ pragma Import (C, State, "__gnat_get_interrupt_state");
++ -- Get interrupt state. Defined in init.c The input argument is the
++ -- interrupt number, and the result is one of the following:
++
++ procedure Map_Signal
++ (signo : Signal;
++ siginfo : System.Address;
++ ucontext : System.Address);
++ -- This function identifies the Ada exception to be raised using the
++ -- information when the system received a synchronous signal.
++
++----------------
++-- Map_Signal --
++----------------
++
++ procedure Map_Signal
++ (signo : Signal;
++ siginfo : System.Address;
++ ucontext : System.Address)
++ is
++ pragma Unreferenced (siginfo);
++ pragma Unreferenced (ucontext);
++
++ begin
++
++ -- Check that treatment of exception propagation here is consistent with
++ -- treatment of the abort signal in System.Task_Primitives.Operations.
++
++ case signo is
++ when SIGFPE =>
++ raise Constraint_Error;
++ when SIGILL =>
++ raise Program_Error;
++ when SIGSEGV =>
++ raise Storage_Error;
++ when SIGBUS =>
++ raise Storage_Error;
++ when others =>
++ null;
++ end case;
++ end Map_Signal;
++
++----------------------
++-- Notify_Exception --
++----------------------
++
++ User : constant Character := 'u';
++ Runtime : constant Character := 'r';
++ Default : constant Character := 's';
++ -- 'n' this interrupt not set by any Interrupt_State pragma
++ -- 'u' Interrupt_State pragma set state to User
++ -- 'r' Interrupt_State pragma set state to Runtime
++ -- 's' Interrupt_State pragma set state to System (use "default"
++ -- system handler)
++
++ procedure Notify_Exception
++ (signo : Signal;
++ siginfo : System.Address;
++ ucontext : System.Address);
++ -- This function is the signal handler and calls a trampoline subprogram
++ -- that adjusts the unwind information so the ARM unwinder can find it's
++ -- way back to the context of the originating subprogram. Compare with
++ -- __gnat_error_handler for non-tasking programs.
++
++ ----------------------
++ -- Notify_Exception --
++ ----------------------
++
++ Signal_Mask : aliased sigset_t;
++ -- The set of signals handled by Notify_Exception
++
++ procedure Notify_Exception
++ (signo : Signal;
++ siginfo : System.Address;
++ ucontext : System.Address)
++ is
++ Result : Interfaces.C.int;
++
++ begin
++ -- With the __builtin_longjmp, the signal mask is not restored, so we
++ -- need to restore it explicitly. ??? We don't use __builtin_longjmp
++ -- anymore, so do we still need this? */
++
++ Result := pthread_sigmask (SIG_UNBLOCK, Signal_Mask'Access, null);
++ pragma Assert (Result = 0);
++
++ -- Perform the necessary context adjustments prior to calling the
++ -- trampoline subprogram with the "real" signal handler.
++
++ Adjust_Context_For_Raise (signo, ucontext);
++
++ Signal_Trampoline (signo, siginfo, ucontext, Map_Signal'Address);
++ end Notify_Exception;
++
++ ----------------
++ -- Initialize --
++ ----------------
++
++ Initialized : Boolean := False;
++
++ procedure Initialize is
++ act : aliased struct_sigaction;
++ old_act : aliased struct_sigaction;
++ Result : System.OS_Interface.int;
++
++ Use_Alternate_Stack : constant Boolean :=
++ System.Task_Primitives.Alternate_Stack_Size /= 0;
++ -- Whether to use an alternate signal stack for stack overflows
++
++ begin
++ if Initialized then
++ return;
++ end if;
++
++ Initialized := True;
++
++ -- Need to call pthread_init very early because it is doing signal
++ -- initializations.
++
++ pthread_init;
++
++ Abort_Task_Interrupt := SIGADAABORT;
++
++ act.sa_handler := Notify_Exception'Address;
++
++ -- Setting SA_SIGINFO asks the kernel to pass more than just the signal
++ -- number argument to the handler when it is called. The set of extra
++ -- parameters includes a pointer to the interrupted context, which the
++ -- ZCX propagation scheme needs.
++
++ -- Most man pages for sigaction mention that sa_sigaction should be set
++ -- instead of sa_handler when SA_SIGINFO is on. In practice, the two
++ -- fields are actually union'ed and located at the same offset.
++
++ -- On some targets, we set sa_flags to SA_NODEFER so that during the
++ -- handler execution we do not change the Signal_Mask to be masked for
++ -- the Signal.
++
++ -- This is a temporary fix to the problem that the Signal_Mask is not
++ -- restored after the exception (longjmp) from the handler. The right
++ -- fix should be made in sigsetjmp so that we save the Signal_Set and
++ -- restore it after a longjmp.
++
++ -- We set SA_NODEFER to be compatible with what is done in
++ -- __gnat_error_handler.
++
++ Result := sigemptyset (Signal_Mask'Access);
++ pragma Assert (Result = 0);
++
++ -- Add signals that map to Ada exceptions to the mask
++
++ for J in Exception_Interrupts'Range loop
++ if State (Exception_Interrupts (J)) /= Default then
++ Result :=
++ sigaddset
++ (Signal_Mask'Access, Signal (Exception_Interrupts (J)));
++ pragma Assert (Result = 0);
++ end if;
++ end loop;
++
++ act.sa_mask := Signal_Mask;
++
++ pragma Assert (Keep_Unmasked = (Interrupt_ID'Range => False));
++ pragma Assert (Reserve = (Interrupt_ID'Range => False));
++
++ -- Process state of exception signals
++
++ for J in Exception_Interrupts'Range loop
++ if State (Exception_Interrupts (J)) /= User then
++ Keep_Unmasked (Exception_Interrupts (J)) := True;
++ Reserve (Exception_Interrupts (J)) := True;
++
++ if State (Exception_Interrupts (J)) /= Default then
++ act.sa_flags := SA_NODEFER + SA_RESTART + SA_SIGINFO;
++
++ if Use_Alternate_Stack
++ and then Exception_Interrupts (J) = SIGSEGV
++ then
++ act.sa_flags := act.sa_flags + SA_ONSTACK;
++ end if;
++
++ Result :=
++ sigaction
++ (Signal (Exception_Interrupts (J)), act'Unchecked_Access,
++ old_act'Unchecked_Access);
++ pragma Assert (Result = 0);
++ end if;
++ end if;
++ end loop;
++
++ if State (Abort_Task_Interrupt) /= User then
++ Keep_Unmasked (Abort_Task_Interrupt) := True;
++ Reserve (Abort_Task_Interrupt) := True;
++ end if;
++
++ -- Set SIGINT to unmasked state as long as it is not in "User" state.
++ -- Check for Unreserve_All_Interrupts last.
++
++ if State (SIGINT) /= User then
++ Keep_Unmasked (SIGINT) := True;
++ Reserve (SIGINT) := True;
++ end if;
++
++ -- Check all signals for state that requires keeping them unmasked and
++ -- reserved.
++
++ for J in Interrupt_ID'Range loop
++ if State (J) = Default or else State (J) = Runtime then
++ Keep_Unmasked (J) := True;
++ Reserve (J) := True;
++ end if;
++ end loop;
++
++ -- Add the set of signals that must always be unmasked for this target
++
++ for J in Unmasked'Range loop
++ Keep_Unmasked (Interrupt_ID (Unmasked (J))) := True;
++ Reserve (Interrupt_ID (Unmasked (J))) := True;
++ end loop;
++
++ -- Add target-specific reserved signals
++
++ for J in Reserved'Range loop
++ Reserve (Interrupt_ID (Reserved (J))) := True;
++ end loop;
++
++ -- Process pragma Unreserve_All_Interrupts. This overrides any settings
++ -- due to pragma Interrupt_State:
++
++ if Unreserve_All_Interrupts /= 0 then
++ Keep_Unmasked (SIGINT) := False;
++ Reserve (SIGINT) := False;
++ end if;
++
++ -- We do not really have Signal 0. We just use this value to identify
++ -- non-existent signals (see s-intnam.ads). Therefore, Signal should not
++ -- be used in all signal related operations hence mark it as reserved.
++
++ Reserve (0) := True;
++ end Initialize;
++
++end System.Interrupt_Management;
+--- /dev/null
++++ gcc/ada/s-linux-android.ads
+@@ -0,0 +1,112 @@
++------------------------------------------------------------------------------
++-- --
++-- GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS --
++-- --
++-- S Y S T E M . L I N U X --
++-- --
++-- S p e c --
++-- --
++-- Copyright (C) 2014, Free Software Foundation, Inc. --
++-- --
++-- GNARL 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. --
++-- --
++-- In particular, you can freely distribute your programs built with the --
++-- GNAT Pro compiler, including any required library run-time units, using --
++-- any licensing terms of your choosing. See the AdaCore Software License --
++-- for full details. --
++-- --
++-- --
++------------------------------------------------------------------------------
++
++-- This is the Android version of this package
++
++-- This package encapsulates cpu specific differences between implementations
++-- of GNU/Linux, in order to share s-osinte-linux.ads.
++
++-- PLEASE DO NOT add any with-clauses to this package or remove the pragma
++-- Preelaborate. This package is designed to be a bottom-level (leaf) package
++
++package System.Linux is
++ pragma Preelaborate;
++
++ ------------
++ -- time_t --
++ ------------
++
++ type time_t is new Long_Integer;
++
++ -----------
++ -- Errno --
++ -----------
++
++ EAGAIN : constant := 11;
++ EINTR : constant := 4;
++ EINVAL : constant := 22;
++ ENOMEM : constant := 12;
++ EPERM : constant := 1;
++ ETIMEDOUT : constant := 110;
++
++ -------------
++ -- Signals --
++ -------------
++
++ SIGHUP : constant := 1; -- hangup
++ SIGINT : constant := 2; -- interrupt (rubout)
++ SIGQUIT : constant := 3; -- quit (ASCD FS)
++ SIGILL : constant := 4; -- illegal instruction (not reset)
++ SIGTRAP : constant := 5; -- trace trap (not reset)
++ SIGIOT : constant := 6; -- IOT instruction
++ SIGABRT : constant := 6; -- used by abort, replace SIGIOT in the future
++ SIGFPE : constant := 8; -- floating point exception
++ SIGKILL : constant := 9; -- kill (cannot be caught or ignored)
++ SIGBUS : constant := 7; -- bus error
++ SIGSEGV : constant := 11; -- segmentation violation
++ SIGPIPE : constant := 13; -- write on a pipe with no one to read it
++ SIGALRM : constant := 14; -- alarm clock
++ SIGTERM : constant := 15; -- software termination signal from kill
++ SIGUSR1 : constant := 10; -- user defined signal 1
++ SIGUSR2 : constant := 12; -- user defined signal 2
++ SIGCLD : constant := 17; -- alias for SIGCHLD
++ SIGCHLD : constant := 17; -- child status change
++ SIGPWR : constant := 30; -- power-fail restart
++ SIGWINCH : constant := 28; -- window size change
++ SIGURG : constant := 23; -- urgent condition on IO channel
++ SIGPOLL : constant := 29; -- pollable event occurred
++ SIGIO : constant := 29; -- I/O now possible (4.2 BSD)
++ SIGLOST : constant := 29; -- File lock lost
++ SIGSTOP : constant := 19; -- stop (cannot be caught or ignored)
++ SIGTSTP : constant := 20; -- user stop requested from tty
++ SIGCONT : constant := 18; -- stopped process has been continued
++ SIGTTIN : constant := 21; -- background tty read attempted
++ SIGTTOU : constant := 22; -- background tty write attempted
++ SIGVTALRM : constant := 26; -- virtual timer expired
++ SIGPROF : constant := 27; -- profiling timer expired
++ SIGXCPU : constant := 24; -- CPU time limit exceeded
++ SIGXFSZ : constant := 25; -- filesize limit exceeded
++ SIGUNUSED : constant := 31; -- unused signal (GNU/Linux)
++ SIGSTKFLT : constant := 16; -- coprocessor stack fault (Linux)
++ SIGLTHRRES : constant := 32; -- GNU/LinuxThreads restart signal
++ SIGLTHRCAN : constant := 33; -- GNU/LinuxThreads cancel signal
++ SIGLTHRDBG : constant := 34; -- GNU/LinuxThreads debugger signal
++
++ -- struct_sigaction offsets
++
++ sa_handler_pos : constant := 0;
++ sa_mask_pos : constant := Standard'Address_Size / 8;
++ sa_flags_pos : constant := 4 + sa_mask_pos;
++
++ SA_SIGINFO : constant := 16#00000004#;
++ SA_ONSTACK : constant := 16#08000000#;
++ SA_RESTART : constant := 16#10000000#;
++ SA_NODEFER : constant := 16#40000000#;
++
++end System.Linux;
+--- gcc/ada/s-osinte-android.ads.orig
++++ gcc/ada/s-osinte-android.ads
+@@ -6,7 +6,7 @@
+ -- --
+ -- S p e c --
+ -- --
+--- Copyright (C) 1995-2013, Free Software Foundation, Inc. --
++-- Copyright (C) 1995-2014, Free Software Foundation, Inc. --
+ -- --
+ -- 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- --
+@@ -75,7 +75,7 @@
+ -- Signals --
+ -------------
+
+- Max_Interrupt : constant := 63;
++ Max_Interrupt : constant := 31;
+ type Signal is new int range 0 .. Max_Interrupt;
+ for Signal'Size use int'Size;
+
+@@ -114,9 +114,6 @@
+ SIGXFSZ : constant := System.Linux.SIGXFSZ;
+ SIGUNUSED : constant := System.Linux.SIGUNUSED;
+ SIGSTKFLT : constant := System.Linux.SIGSTKFLT;
+- SIGLTHRRES : constant := System.Linux.SIGLTHRRES;
+- SIGLTHRCAN : constant := System.Linux.SIGLTHRCAN;
+- SIGLTHRDBG : constant := System.Linux.SIGLTHRDBG;
+
+ SIGADAABORT : constant := SIGABRT;
+ -- Change this to use another signal for task abort. SIGTERM might be a
+@@ -138,13 +135,9 @@
+ SIGPROF,
+ -- To avoid confusing the profiler
+
+- SIGKILL, SIGSTOP,
++ SIGKILL, SIGSTOP);
+ -- These two signals actually can't be masked (POSIX won't allow it)
+
+- SIGLTHRRES, SIGLTHRCAN, SIGLTHRDBG);
+- -- These three signals are used by GNU/LinuxThreads starting from glibc
+- -- 2.1 (future 2.2).
+-
+ Reserved : constant Signal_Set := (SIGVTALRM, SIGUNUSED);
+ -- Not clear why these two signals are reserved. Perhaps they are not
+ -- supported by this version of GNU/Linux ???
+@@ -187,6 +180,8 @@
+
+ SA_SIGINFO : constant := System.Linux.SA_SIGINFO;
+ SA_ONSTACK : constant := System.Linux.SA_ONSTACK;
++ SA_NODEFER : constant := System.Linux.SA_NODEFER;
++ SA_RESTART : constant := System.Linux.SA_RESTART;
+
+ SIG_BLOCK : constant := 0;
+ SIG_UNBLOCK : constant := 1;
+@@ -580,17 +575,16 @@
+
+ private
+
+- type sigset_t is
+- -- array (0 .. OS_Constants.SIZEOF_sigset - 1) of unsigned_char;
+- array (1 .. 127) of unsigned_char;
++ type sigset_t is new Interfaces.C.unsigned_long;
+ pragma Convention (C, sigset_t);
+ for sigset_t'Alignment use Interfaces.C.unsigned_long'Alignment;
+
+ pragma Warnings (Off);
+ for struct_sigaction use record
+ sa_handler at Linux.sa_handler_pos range 0 .. Standard'Address_Size - 1;
+- sa_mask at Linux.sa_mask_pos range 0 .. 1023;
+- sa_flags at Linux.sa_flags_pos range 0 .. Standard'Address_Size - 1;
++ sa_mask at Linux.sa_mask_pos range 0 .. sigset_t'Size - 1;
++ sa_flags at Linux.sa_flags_pos
++ range 0 .. Interfaces.C.unsigned_long'Size - 1;
+ end record;
+ -- We intentionally leave sa_restorer unspecified and let the compiler
+ -- append it after the last field, so disable corresponding warning.
+--- /dev/null
+++ gcc/ada/s-osinte-dragonfly.adb
@@ -0,0 +1,116 @@
+------------------------------------------------------------------------------
@@ -6953,6 +7478,213 @@
+ end Initialize;
+
+end System.OS_Primitives;
+--- /dev/null
++++ gcc/ada/sigtramp-armdroid.c
+@@ -0,0 +1,161 @@
++/****************************************************************************
++ * *
++ * GNAT COMPILER COMPONENTS *
++ * *
++ * S I G T R A M P *
++ * *
++ * Asm Implementation File *
++ * *
++ * Copyright (C) 2014, Free Software Foundation, Inc. *
++ * *
++ * 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. *
++ * *
++ * In particular, you can freely distribute your programs built with the *
++ * GNAT Pro compiler, including any required library run-time units, using *
++ * any licensing terms of your choosing. See the AdaCore Software License *
++ * for full details. *
++ * *
++ * GNAT was originally developed by the GNAT team at New York University. *
++ * Extensive contributions were provided by Ada Core Technologies Inc. *
++ * *
++ ****************************************************************************/
++
++/******************************************************
++ * ARM-Android version of the __gnat_sigtramp service *
++ ******************************************************/
++
++#include "sigtramp.h"
++/* See sigtramp.h for a general explanation of functionality. */
++
++/* ----------------------
++ -- General comments --
++ ----------------------
++
++ Stubs are generated from toplevel asms,
++ The general idea is to establish CFA as the sigcontext
++ and state where to find the registers as offsets from there.
++
++ We support stubs for VxWorks and Android, providing unwind info for
++ common registers. We might need variants with support for floating
++ point or altivec registers as well at some point.
++
++ For Android it would be simpler to write this in Asm since there's only
++ one variant, but to keep it looking like the VxWorks stubs,
++ C is the choice for our toplevel interface.
++
++ Note that the registers we "restore" here are those to which we have
++ direct access through the system sigcontext structure, which includes
++ only a partial set of the non-volatiles ABI-wise. */
++
++/* -----------------------------------------
++ -- Protypes for our internal asm stubs --
++ -----------------------------------------
++
++ The registers are expected to be at SIGCONTEXT + 12 (reference the
++ sicontext structure in asm/sigcontext.h which describes the first
++ 3 * 4byte fields.) Even though our symbols will remain local, the
++ prototype claims "extern" and not "static" to prevent compiler complaints
++ about a symbol used but never defined. */
++
++/* sigtramp stub providing unwind info for common registers. */
++
++extern void __gnat_sigtramp_common
++ (int signo, void *siginfo, void *sigcontext,
++ __sigtramphandler_t * handler);
++
++void __gnat_sigtramp (int signo, void *si, void *sc,
++ __sigtramphandler_t * handler)
++ __attribute__((optimize(2)));
++
++void __gnat_sigtramp (int signo, void *si, void *ucontext,
++ __sigtramphandler_t * handler)
++{
++ struct sigcontext *mcontext = &((ucontext_t *) ucontext)->uc_mcontext;
++
++ __gnat_sigtramp_common (signo, si, mcontext, handler);
++}
++
++/* asm string construction helpers. */
++
++#define STR(TEXT) #TEXT
++/* stringify expanded TEXT, surrounding it with double quotes. */
++
++#define S(E) STR(E)
++/* stringify E, which will resolve as text but may contain macros
++ still to be expanded. */
++
++/* asm (TEXT) outputs <tab>TEXT. These facilitate the output of
++ multiline contents: */
++#define TAB(S) "\t" S
++#define CR(S) S "\n"
++
++#undef TCR
++#define TCR(S) TAB(CR(S))
++
++/* Trampoline body block
++ --------------------- */
++
++#define SIGTRAMP_BODY \
++CR("") \
++TCR("# Allocate frame and also save r2 which is the argument register") \
++TCR("# containing the sigcontext, so that we can restore it during") \
++TCR("# unwinding and thereby load the rest of the desired context.") \
++TCR("stmfd sp!, {r2, r3, lr}") \
++TCR("# The unwinder undo's these operations in reverse order so starting") \
++TCR("# from bottom, restore r2 from the current vsp location, move r2 into") \
++TCR("# the vsp, add 12 bytes to get the start of the register save area") \
++TCR("# then restore the 15 general purpose registers of the frame which") \
++TCR("# raised the signal.") \
++TCR(".save {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15}") \
++TCR(".pad #12") \
++TCR(".movsp r2") \
++TCR(".save {r2}") \
++TCR("# Call the real handler. The signo, siginfo and sigcontext") \
++TCR("# arguments are the same as those we received in r0, r1 and r2.") \
++TCR("blx r3") \
++TCR("# Restore our callee-saved items, release our frame and return") \
++TCR("# (should never get here!).") \
++TCR("ldmfd sp, {r2, r3, pc}")
++
++/* Symbol definition block
++ ----------------------- */
++
++#define SIGTRAMP_START(SYM) \
++CR("# " S(SYM) " unwind trampoline") \
++TCR(".type " S(SYM) ", %function") \
++CR("") \
++CR(S(SYM) ":") \
++TCR(".fnstart")
++
++/* Symbol termination block
++ ------------------------ */
++
++#define SIGTRAMP_END(SYM) \
++CR(".fnend") \
++TCR(".size " S(SYM) ", .-" S(SYM))
++
++/*----------------------------
++ -- And now, the real code --
++ ---------------------------- */
++
++/* Text section start. The compiler isn't aware of that switch. */
++
++asm (".text\n"
++ TCR(".align 2"));
++
++/* sigtramp stub for common registers. */
++
++#define TRAMP_COMMON __gnat_sigtramp_common
++
++asm (SIGTRAMP_START(TRAMP_COMMON));
++asm (SIGTRAMP_BODY);
++asm (SIGTRAMP_END(TRAMP_COMMON));
+--- gcc/ada/sigtramp.h.orig
++++ gcc/ada/sigtramp.h
+@@ -6,7 +6,7 @@
+ * *
+ * C Header File *
+ * *
+- * Copyright (C) 2011-2013, Free Software Foundation, Inc. *
++ * Copyright (C) 2011-2014, Free Software Foundation, Inc. *
+ * *
+ * 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- *
+@@ -41,10 +41,29 @@
+ extern "C" {
+ #endif
+
+- typedef void sighandler_t (int signo, void *siginfo, void *sigcontext);
++#ifdef __ANDROID__
++#include <stdlib.h>
++#include <asm/signal.h>
++#include <asm/sigcontext.h>
++
++/* Android SDK doesn't define these structs */
++typedef struct sigcontext mcontext_t;
++
++typedef struct ucontext
++ {
++ unsigned long uc_flags;
++ struct ucontext *uc_link;
++ stack_t uc_stack;
++ mcontext_t uc_mcontext;
++} ucontext_t;
++#endif
++
++ /* This typedef signature sometimes conflicts with the sighandler_t from
++ system headers so call it something unique. */
++ typedef void __sigtramphandler_t (int signo, void *siginfo, void *sigcontext);
+
+ void __gnat_sigtramp (int signo, void *siginfo, void *sigcontext,
+- sighandler_t * handler);
++ __sigtramphandler_t * handler);
+
+ /* To be called from an established signal handler. Setup the DWARF CFI
+ bits letting unwinders walk through the signal frame up into the
--- gcc/ada/sysdep.c.orig
+++ gcc/ada/sysdep.c
@@ -263,6 +263,7 @@
@@ -8136,20 +8868,27 @@
TARGET_ADA_SRCS =
--- gcc/ada/gcc-interface/Makefile.in.orig
+++ gcc/ada/gcc-interface/Makefile.in
-@@ -1044,9 +1044,11 @@
+@@ -1044,25 +1044,27 @@
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-posix.adb \
- s-linux.ads<s-linux.ads \
+- s-intman.adb<s-intman-posix.adb \
+- s-linux.ads<s-linux.ads \
++ s-intman.adb<s-intman-android.adb \
++ s-linux.ads<s-linux-android.ads \
+ s-mudido.adb<s-mudido-affinity.adb \
s-osinte.adb<s-osinte-android.adb \
s-osinte.ads<s-osinte-android.ads \
s-osprim.adb<s-osprim-posix.adb \
-@@ -1056,10 +1058,6 @@
+ s-taprop.adb<s-taprop-posix.adb \
+- s-taspri.ads<s-taspri-posix-noaltstack.ads \
++ s-taspri.ads<s-taspri-posix.ads \
+ s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
system.ads<system-linux-armel.ads \
++ a-exexpr.adb<a-exexpr-gcc.adb \
++ s-excmac.ads<s-excmac-arm.ads \
$(DUMMY_SOCKETS_TARGET_PAIRS)
- TOOLS_TARGET_PAIRS = \
@@ -8158,8 +8897,14 @@
-
GNATRTL_SOCKETS_OBJS =
EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
- EH_MECHANISM=
-@@ -1072,6 +1070,7 @@
+- EH_MECHANISM=
++ EXTRA_LIBGNAT_OBJS+=raise-gcc.o sigtramp-armdroid.o
++ EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
++ EH_MECHANISM=-arm
+ THREADSLIB =
+ GNATLIB_SHARED = gnatlib-shared-dual
+ LIBRARY_VERSION := $(LIB_VERSION)
+@@ -1072,6 +1074,7 @@
ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
LIBGNAT_TARGET_PAIRS_COMMON = \
a-intnam.ads<a-intnam-solaris.ads \
@@ -8167,7 +8912,7 @@
s-inmaop.adb<s-inmaop-posix.adb \
s-intman.adb<s-intman-solaris.adb \
s-mudido.adb<s-mudido-affinity.adb \
-@@ -1114,6 +1113,8 @@
+@@ -1114,6 +1117,8 @@
TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb
EH_MECHANISM=-gcc
@@ -8176,7 +8921,7 @@
THREADSLIB = -lposix4 -lthread
MISCLIB = -lposix4 -lnsl -lsocket
SO_OPTS = -Wl,-h,
-@@ -1325,12 +1326,17 @@
+@@ -1325,12 +1330,17 @@
# x86 FreeBSD
ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
LIBGNAT_TARGET_PAIRS = \
@@ -8196,7 +8941,7 @@
s-taprop.adb<s-taprop-posix.adb \
s-taspri.ads<s-taspri-posix.ads \
s-tpopsp.adb<s-tpopsp-posix.adb \
-@@ -1338,11 +1344,12 @@
+@@ -1338,11 +1348,12 @@
$(X86_TARGET_PAIRS) \
system.ads<system-freebsd-x86.ads
@@ -8211,7 +8956,7 @@
EH_MECHANISM=-gcc
THREADSLIB= -lpthread
-@@ -1354,12 +1361,17 @@
+@@ -1354,12 +1365,17 @@
# x86-64 FreeBSD
ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
LIBGNAT_TARGET_PAIRS = \
@@ -8231,7 +8976,7 @@
s-taprop.adb<s-taprop-posix.adb \
s-taspri.ads<s-taspri-posix.ads \
s-tpopsp.adb<s-tpopsp-posix.adb \
-@@ -1367,11 +1379,240 @@
+@@ -1367,11 +1383,240 @@
$(X86_64_TARGET_PAIRS) \
system.ads<system-freebsd-x86_64.ads
@@ -8474,6 +9219,14 @@
EH_MECHANISM=-gcc
THREADSLIB= -lpthread
+@@ -3063,6 +3308,7 @@
+ socket.o : socket.c gsocket.h
+ sysdep.o : sysdep.c
+ raise.o : raise.c raise.h
++sigtramp-armdroid.o : sigtramp-armdroid.c sigtramp.h
+ sigtramp-armvxw.o : sigtramp-armvxw.c sigtramp.h
+ sigtramp-ppcvxw.o : sigtramp-ppcvxw.c sigtramp.h
+ terminals.o : terminals.c
--- gnattools/configure.ac.orig
+++ gnattools/configure.ac
@@ -79,11 +79,27 @@
diff --git a/lang/gcc-aux/files/diff-ada-testsuite b/lang/gcc-aux/files/diff-ada-testsuite
index 2ae35594f206..6ddaf4193ba3 100644
--- a/lang/gcc-aux/files/diff-ada-testsuite
+++ b/lang/gcc-aux/files/diff-ada-testsuite
@@ -113,7 +113,7 @@
+++ gcc/testsuite/gnat.dg/test_raise_from_pure.adb
@@ -1,4 +1,4 @@
--- { dg-do run { xfail arm*-*-* } }
-+-- { dg-do run { xfail arm*-*-* *-*-openbsd* } }
++-- { dg-do run { xfail *-*-openbsd* } }
-- { dg-options "-O2" }
-- This is an optimization test and its failure is only a missed optimization.
diff --git a/lang/gcc-aux/files/diff-core b/lang/gcc-aux/files/diff-core
index bedb57ffed9f..436d6b6ff8d4 100644
--- a/lang/gcc-aux/files/diff-core
+++ b/lang/gcc-aux/files/diff-core
@@ -328,6 +328,23 @@
+
+#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
+#define UINTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")
+--- gcc/config/arm/arm.h.orig
++++ gcc/config/arm/arm.h
+@@ -937,13 +937,13 @@
+
+ #ifndef ARM_TARGET2_DWARF_FORMAT
+ #define ARM_TARGET2_DWARF_FORMAT DW_EH_PE_pcrel
++#endif
+
+ /* ttype entries (the only interesting data references used)
+ use TARGET2 relocations. */
+ #define ASM_PREFERRED_EH_DATA_FORMAT(code, data) \
+ (((code) == 0 && (data) == 1 && ARM_UNWIND_INFO) ? ARM_TARGET2_DWARF_FORMAT \
+ : DW_EH_PE_absptr)
+-#endif
+
+ /* The native (Norcroft) Pascal compiler for the ARM passes the static chain
+ as an invisible last argument (possible since varargs don't exist in
--- /dev/null
+++ gcc/config/i386/dragonfly.h
@@ -0,0 +1,105 @@
@@ -1414,16 +1431,16 @@
insn-preds.c: s-preds; @true
tm-preds.h: s-preds-h; @true
tm-constrs.h: s-constrs-h; @true
-@@ -3208,6 +3219,9 @@
- -rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-$(version)$(exeext)
- -( cd $(DESTDIR)$(bindir) && \
- $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-$(version)$(exeext) )
+@@ -3210,6 +3221,9 @@
+ ( cd $(DESTDIR)$(bindir) && \
+ $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-$(version)$(exeext) ); \
+ fi
+ -if [ -f gnat1$(exeext) ] ; then \
+ ( cd $(DESTDIR)$(bindir) && $(LN) $(GCC_INSTALL_NAME)$(exeext) ada$(exeext) ) \
+ fi
- -if [ ! -f gcc-cross$(exeext) ] ; then \
+ -if [ ! -f gcc-cross$(exeext) ] \
+ && [ "$(GCC_INSTALL_NAME)" != "$(GCC_TARGET_INSTALL_NAME)" ]; then \
rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-tmp$(exeext); \
- ( cd $(DESTDIR)$(bindir) && \
--- libgcc/config.host.orig
+++ libgcc/config.host
@@ -207,6 +207,11 @@
@@ -1490,7 +1507,7 @@
;;
i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
;;
-@@ -1259,6 +1281,7 @@
+@@ -1262,6 +1284,7 @@
i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]* | \
i[34567]86-*-cygwin* | x86_64-*-cygwin* | \
i[34567]86-*-mingw* | x86_64-*-mingw* | \
diff --git a/lang/gcc-aux/files/diff-cxx b/lang/gcc-aux/files/diff-cxx
index 19fbf56cf66f..29ed481a78ed 100644
--- a/lang/gcc-aux/files/diff-cxx
+++ b/lang/gcc-aux/files/diff-cxx
@@ -1124,13 +1124,16 @@
CTIME_CC=config/locale/generic/time_members.cc
--- libstdc++-v3/configure.host.orig
+++ libstdc++-v3/configure.host
-@@ -230,6 +230,9 @@
+@@ -230,6 +230,12 @@
os_include_dir="os/generic"
atomicity_dir="cpu/generic"
;;
+ dragonfly*)
+ os_include_dir="os/bsd/dragonfly"
+ ;;
++ linux-androideabi)
++ os_include_dir="os/bionic"
++ ;;
bsd*)
# Plain BSD attempts to share FreeBSD files.
os_include_dir="os/bsd/freebsd"
diff --git a/lang/gcc-aux/files/diff-cxx-testsuite b/lang/gcc-aux/files/diff-cxx-testsuite
index 18c599ccf7a9..acb824c886aa 100644
--- a/lang/gcc-aux/files/diff-cxx-testsuite
+++ b/lang/gcc-aux/files/diff-cxx-testsuite
@@ -113,6 +113,19 @@
// { dg-options "-pthreads -std=gnu++0x" { target *-*-solaris* } }
// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
+--- libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc.orig
++++ libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
+@@ -17,8 +17,8 @@
+
+ // 20.6.6.2 Template class shared_ptr [util.smartptr.shared]
+
+-// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* *-*-solaris* *-*-cygwin *-*-darwin* } }
+-// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* } }
++// { dg-do run { target *-*-freebsd* *-*-dragonfly* *-*-netbsd* *-*-linux* *-*-gnu* *-*-solaris* *-*-cygwin *-*-darwin* } }
++// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-dragonfly* *-*-netbsd* *-*-linux* *-*-gnu* } }
+ // { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
+ // { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
+
--- libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc.orig
+++ libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc
@@ -16,8 +16,8 @@
diff --git a/lang/gcc-aux/files/diff-fortran b/lang/gcc-aux/files/diff-fortran
index 6781da1ae8e3..ed7bbb169f7d 100644
--- a/lang/gcc-aux/files/diff-fortran
+++ b/lang/gcc-aux/files/diff-fortran
@@ -31,7 +31,7 @@
;;
--- libgfortran/configure.orig
+++ libgfortran/configure
-@@ -26337,7 +26337,7 @@
+@@ -26340,7 +26340,7 @@
fi
case "$host" in
diff --git a/lang/gcc-aux/files/patch-Makefile.def b/lang/gcc-aux/files/patch-Makefile.def
deleted file mode 100644
index 37e60a4ec7c1..000000000000
--- a/lang/gcc-aux/files/patch-Makefile.def
+++ /dev/null
@@ -1,10 +0,0 @@
---- Makefile.def.orig 2013-10-29 13:37:47.000000000 -0500
-+++ Makefile.def
-@@ -336,6 +336,7 @@ dependencies = { module=all-libcpp; on=a
- dependencies = { module=all-fixincludes; on=all-libiberty; };
-
- dependencies = { module=all-gnattools; on=all-target-libada; };
-+dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; };
-
- dependencies = { module=all-lto-plugin; on=all-libiberty; };
-
diff --git a/lang/gcc-aux/files/patch-Makefile.in b/lang/gcc-aux/files/patch-Makefile.in
deleted file mode 100644
index 1773cd8d65a4..000000000000
--- a/lang/gcc-aux/files/patch-Makefile.in
+++ /dev/null
@@ -1,10 +0,0 @@
---- Makefile.in.orig 2014-03-07 07:58:27.000000000 -0500
-+++ Makefile.in
-@@ -46730,6 +46730,7 @@ all-stageprofile-libcpp: maybe-all-stage
- all-stagefeedback-libcpp: maybe-all-stagefeedback-intl
- all-fixincludes: maybe-all-libiberty
- all-gnattools: maybe-all-target-libada
-+all-gnattools: maybe-all-target-libstdc++-v3
- all-lto-plugin: maybe-all-libiberty
-
- all-stage1-lto-plugin: maybe-all-stage1-libiberty