mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-22 00:35:15 +00:00
lang/gcc-aux + gnatdroid-armv7: Update to 16 April prerelease
This commit is contained in:
parent
f7670aefe0
commit
f107703159
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=351529
@ -3,10 +3,10 @@
|
|||||||
GCC_BRANCH= 4.9
|
GCC_BRANCH= 4.9
|
||||||
GCC_POINT= 0
|
GCC_POINT= 0
|
||||||
GCC_VERSION= ${GCC_BRANCH}.${GCC_POINT}
|
GCC_VERSION= ${GCC_BRANCH}.${GCC_POINT}
|
||||||
SNAPSHOT= 20140406
|
SNAPSHOT= 20140416
|
||||||
MAIN_PR= 2
|
MAIN_PR= 0
|
||||||
ARMV5_PR= 1
|
ARMV5_PR= 0
|
||||||
ARMV7_PR= 2
|
ARMV7_PR= 0
|
||||||
IDENTIFICATION= gcc-${GCC_BRANCH}-${SNAPSHOT}
|
IDENTIFICATION= gcc-${GCC_BRANCH}-${SNAPSHOT}
|
||||||
MS_SUBDIR= snapshots/${GCC_BRANCH}-${SNAPSHOT}
|
MS_SUBDIR= snapshots/${GCC_BRANCH}-${SNAPSHOT}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
SHA256 (gcc-4.9-20140406.tar.bz2) = 5f9e1c96b5bc000456b7fe7805dca90866cd18b6fbe00e26f3f3e8236d07d0a3
|
SHA256 (gcc-4.9-20140416.tar.bz2) = a1bac4e9fe8d8eca0c70fe22374e34abecd138dfc49130b01d73133f68b03b48
|
||||||
SIZE (gcc-4.9-20140406.tar.bz2) = 85440592
|
SIZE (gcc-4.9-20140416.tar.bz2) = 85454889
|
||||||
SHA256 (ada-bootstrap.i386.dragonfly.36A.tar.bz2) = 6b1a6ff0fe0e3bf13c667db2fef177b811329cd998400a1303969a86911cb1c8
|
SHA256 (ada-bootstrap.i386.dragonfly.36A.tar.bz2) = 6b1a6ff0fe0e3bf13c667db2fef177b811329cd998400a1303969a86911cb1c8
|
||||||
SIZE (ada-bootstrap.i386.dragonfly.36A.tar.bz2) = 39357314
|
SIZE (ada-bootstrap.i386.dragonfly.36A.tar.bz2) = 39357314
|
||||||
SHA256 (ada-bootstrap.i386.freebsd.84.tar.bz2) = b410336cb0e71c8a29dd5f831a17b4b7282e7d590f452475a94c6a625cfc8846
|
SHA256 (ada-bootstrap.i386.freebsd.84.tar.bz2) = b410336cb0e71c8a29dd5f831a17b4b7282e7d590f452475a94c6a625cfc8846
|
||||||
|
@ -1994,531 +1994,6 @@
|
|||||||
|
|
||||||
Non_Empty_Node : constant Project_Node_Id := 1;
|
Non_Empty_Node : constant Project_Node_Id := 1;
|
||||||
--- /dev/null
|
--- /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
|
+++ gcc/ada/s-osinte-dragonfly.adb
|
||||||
@@ -0,0 +1,116 @@
|
@@ -0,0 +1,116 @@
|
||||||
+------------------------------------------------------------------------------
|
+------------------------------------------------------------------------------
|
||||||
@ -7479,213 +6954,6 @@
|
|||||||
+ end Initialize;
|
+ end Initialize;
|
||||||
+
|
+
|
||||||
+end System.OS_Primitives;
|
+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/socket.c.orig
|
--- gcc/ada/socket.c.orig
|
||||||
+++ gcc/ada/socket.c
|
+++ gcc/ada/socket.c
|
||||||
@@ -65,7 +65,10 @@
|
@@ -65,7 +65,10 @@
|
||||||
@ -8883,42 +8151,31 @@
|
|||||||
TARGET_ADA_SRCS =
|
TARGET_ADA_SRCS =
|
||||||
--- gcc/ada/gcc-interface/Makefile.in.orig
|
--- gcc/ada/gcc-interface/Makefile.in.orig
|
||||||
+++ gcc/ada/gcc-interface/Makefile.in
|
+++ gcc/ada/gcc-interface/Makefile.in
|
||||||
@@ -1044,25 +1044,24 @@
|
@@ -1044,6 +1044,7 @@
|
||||||
ifeq ($(strip $(filter-out arm% linux-androideabi,$(target_cpu) $(target_os))),)
|
ifeq ($(strip $(filter-out arm% linux-androideabi,$(target_cpu) $(target_os))),)
|
||||||
LIBGNAT_TARGET_PAIRS = \
|
LIBGNAT_TARGET_PAIRS = \
|
||||||
a-intnam.ads<a-intnam-linux.ads \
|
a-intnam.ads<a-intnam-linux.ads \
|
||||||
+ g-socthi.adb<g-socthi-bsd.adb \
|
+ g-socthi.adb<g-socthi-bsd.adb \
|
||||||
s-inmaop.adb<s-inmaop-posix.adb \
|
s-inmaop.adb<s-inmaop-posix.adb \
|
||||||
- s-intman.adb<s-intman-posix.adb \
|
s-intman.adb<s-intman-android.adb \
|
||||||
- s-linux.ads<s-linux.ads \
|
s-linux.ads<s-linux-android.ads \
|
||||||
+ s-intman.adb<s-intman-android.adb \
|
@@ -1056,13 +1057,9 @@
|
||||||
+ 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-noaltstack.ads \
|
|
||||||
+ s-taspri.ads<s-taspri-posix.ads \
|
|
||||||
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
|
|
||||||
system.ads<system-linux-armel.ads \
|
system.ads<system-linux-armel.ads \
|
||||||
|
a-exexpr.adb<a-exexpr-gcc.adb \
|
||||||
|
s-excmac.ads<s-excmac-arm.ads \
|
||||||
- $(DUMMY_SOCKETS_TARGET_PAIRS)
|
- $(DUMMY_SOCKETS_TARGET_PAIRS)
|
||||||
+ a-exexpr.adb<a-exexpr-gcc.adb \
|
-
|
||||||
+ s-excmac.ads<s-excmac-arm.ads
|
|
||||||
|
|
||||||
- TOOLS_TARGET_PAIRS = \
|
- TOOLS_TARGET_PAIRS = \
|
||||||
- mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
|
- mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
|
||||||
- indepsw.adb<indepsw-gnu.adb
|
- indepsw.adb<indepsw-gnu.adb
|
||||||
-
|
+ a-exexpr.adb<a-exexpr-gcc.adb \
|
||||||
|
+ s-excmac.ads<s-excmac-arm.ads
|
||||||
|
|
||||||
- GNATRTL_SOCKETS_OBJS =
|
- GNATRTL_SOCKETS_OBJS =
|
||||||
EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
|
EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
|
||||||
- EH_MECHANISM=
|
EXTRA_LIBGNAT_OBJS+=raise-gcc.o sigtramp-armdroid.o
|
||||||
+ EXTRA_LIBGNAT_OBJS+=raise-gcc.o sigtramp-armdroid.o
|
EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
|
||||||
+ EXTRA_GNATRTL_NONTASKING_OBJS+=g-cppexc.o s-excmac.o
|
@@ -1076,6 +1073,7 @@
|
||||||
+ EH_MECHANISM=-arm
|
|
||||||
THREADSLIB =
|
|
||||||
GNATLIB_SHARED = gnatlib-shared-dual
|
|
||||||
LIBRARY_VERSION := $(LIB_VERSION)
|
|
||||||
@@ -1072,6 +1071,7 @@
|
|
||||||
ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
|
ifeq ($(strip $(filter-out sparc% sun solaris%,$(target_cpu) $(target_vendor) $(target_os))),)
|
||||||
LIBGNAT_TARGET_PAIRS_COMMON = \
|
LIBGNAT_TARGET_PAIRS_COMMON = \
|
||||||
a-intnam.ads<a-intnam-solaris.ads \
|
a-intnam.ads<a-intnam-solaris.ads \
|
||||||
@ -8926,7 +8183,7 @@
|
|||||||
s-inmaop.adb<s-inmaop-posix.adb \
|
s-inmaop.adb<s-inmaop-posix.adb \
|
||||||
s-intman.adb<s-intman-solaris.adb \
|
s-intman.adb<s-intman-solaris.adb \
|
||||||
s-mudido.adb<s-mudido-affinity.adb \
|
s-mudido.adb<s-mudido-affinity.adb \
|
||||||
@@ -1114,6 +1114,8 @@
|
@@ -1118,6 +1116,8 @@
|
||||||
TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb
|
TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb
|
||||||
|
|
||||||
EH_MECHANISM=-gcc
|
EH_MECHANISM=-gcc
|
||||||
@ -8935,7 +8192,7 @@
|
|||||||
THREADSLIB = -lposix4 -lthread
|
THREADSLIB = -lposix4 -lthread
|
||||||
MISCLIB = -lposix4 -lnsl -lsocket
|
MISCLIB = -lposix4 -lnsl -lsocket
|
||||||
SO_OPTS = -Wl,-h,
|
SO_OPTS = -Wl,-h,
|
||||||
@@ -1325,12 +1327,17 @@
|
@@ -1329,12 +1329,17 @@
|
||||||
# x86 FreeBSD
|
# x86 FreeBSD
|
||||||
ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
|
ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
|
||||||
LIBGNAT_TARGET_PAIRS = \
|
LIBGNAT_TARGET_PAIRS = \
|
||||||
@ -8955,7 +8212,7 @@
|
|||||||
s-taprop.adb<s-taprop-posix.adb \
|
s-taprop.adb<s-taprop-posix.adb \
|
||||||
s-taspri.ads<s-taspri-posix.ads \
|
s-taspri.ads<s-taspri-posix.ads \
|
||||||
s-tpopsp.adb<s-tpopsp-posix.adb \
|
s-tpopsp.adb<s-tpopsp-posix.adb \
|
||||||
@@ -1338,11 +1345,12 @@
|
@@ -1342,11 +1347,12 @@
|
||||||
$(X86_TARGET_PAIRS) \
|
$(X86_TARGET_PAIRS) \
|
||||||
system.ads<system-freebsd-x86.ads
|
system.ads<system-freebsd-x86.ads
|
||||||
|
|
||||||
@ -8970,7 +8227,7 @@
|
|||||||
|
|
||||||
EH_MECHANISM=-gcc
|
EH_MECHANISM=-gcc
|
||||||
THREADSLIB= -lpthread
|
THREADSLIB= -lpthread
|
||||||
@@ -1354,12 +1362,17 @@
|
@@ -1358,12 +1364,17 @@
|
||||||
# x86-64 FreeBSD
|
# x86-64 FreeBSD
|
||||||
ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
|
ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
|
||||||
LIBGNAT_TARGET_PAIRS = \
|
LIBGNAT_TARGET_PAIRS = \
|
||||||
@ -8990,7 +8247,7 @@
|
|||||||
s-taprop.adb<s-taprop-posix.adb \
|
s-taprop.adb<s-taprop-posix.adb \
|
||||||
s-taspri.ads<s-taspri-posix.ads \
|
s-taspri.ads<s-taspri-posix.ads \
|
||||||
s-tpopsp.adb<s-tpopsp-posix.adb \
|
s-tpopsp.adb<s-tpopsp-posix.adb \
|
||||||
@@ -1367,11 +1380,240 @@
|
@@ -1371,11 +1382,240 @@
|
||||||
$(X86_64_TARGET_PAIRS) \
|
$(X86_64_TARGET_PAIRS) \
|
||||||
system.ads<system-freebsd-x86_64.ads
|
system.ads<system-freebsd-x86_64.ads
|
||||||
|
|
||||||
@ -9233,14 +8490,6 @@
|
|||||||
|
|
||||||
EH_MECHANISM=-gcc
|
EH_MECHANISM=-gcc
|
||||||
THREADSLIB= -lpthread
|
THREADSLIB= -lpthread
|
||||||
@@ -3063,6 +3305,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.orig
|
||||||
+++ gnattools/configure.ac
|
+++ gnattools/configure.ac
|
||||||
@@ -79,11 +79,27 @@
|
@@ -79,11 +79,27 @@
|
||||||
|
@ -527,7 +527,7 @@
|
|||||||
--- gcc/testsuite/gnat.dg/test_raise_from_pure.adb.orig
|
--- gcc/testsuite/gnat.dg/test_raise_from_pure.adb.orig
|
||||||
+++ gcc/testsuite/gnat.dg/test_raise_from_pure.adb
|
+++ gcc/testsuite/gnat.dg/test_raise_from_pure.adb
|
||||||
@@ -1,4 +1,4 @@
|
@@ -1,4 +1,4 @@
|
||||||
--- { dg-do run { xfail arm*-*-* } }
|
--- { dg-do run }
|
||||||
+-- { dg-do run { xfail *-*-openbsd* } }
|
+-- { dg-do run { xfail *-*-openbsd* } }
|
||||||
-- { dg-options "-O2" }
|
-- { dg-options "-O2" }
|
||||||
|
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
--- gcc/DEV-PHASE.orig
|
|
||||||
+++ gcc/DEV-PHASE
|
|
||||||
@@ -1 +1 @@
|
|
||||||
-experimental
|
|
||||||
+prerelease
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ gcc/config/dragonfly-stdint.h
|
+++ gcc/config/dragonfly-stdint.h
|
||||||
@@ -0,0 +1,56 @@
|
@@ -0,0 +1,56 @@
|
||||||
@ -328,23 +323,6 @@
|
|||||||
+
|
+
|
||||||
+#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
|
+#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
|
||||||
+#define UINTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned 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
|
--- /dev/null
|
||||||
+++ gcc/config/i386/dragonfly.h
|
+++ gcc/config/i386/dragonfly.h
|
||||||
@@ -0,0 +1,105 @@
|
@@ -0,0 +1,105 @@
|
||||||
@ -1431,7 +1409,7 @@
|
|||||||
insn-preds.c: s-preds; @true
|
insn-preds.c: s-preds; @true
|
||||||
tm-preds.h: s-preds-h; @true
|
tm-preds.h: s-preds-h; @true
|
||||||
tm-constrs.h: s-constrs-h; @true
|
tm-constrs.h: s-constrs-h; @true
|
||||||
@@ -3210,6 +3221,9 @@
|
@@ -3217,6 +3228,9 @@
|
||||||
( cd $(DESTDIR)$(bindir) && \
|
( cd $(DESTDIR)$(bindir) && \
|
||||||
$(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-$(version)$(exeext) ); \
|
$(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-$(version)$(exeext) ); \
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user