diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2017-05-13 13:54:49 +0300 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2017-05-13 13:54:49 +0300 |
commit | 42156b5190f4fa150e1fab6777eb81e69d4db8c9 (patch) | |
tree | 3bf47de81cf1f89892789535a036d2d55d93a136 /debian/patches/ada-m68k.diff | |
download | gcc-6-debian.tar.gz |
Imported gcc-6 (6.3.0-17)debian/6.3.0-17debian
Diffstat (limited to 'debian/patches/ada-m68k.diff')
-rw-r--r-- | debian/patches/ada-m68k.diff | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/debian/patches/ada-m68k.diff b/debian/patches/ada-m68k.diff new file mode 100644 index 0000000..4ae2b53 --- /dev/null +++ b/debian/patches/ada-m68k.diff @@ -0,0 +1,259 @@ +gcc/ada/ + +2011-10-12 Mikael Pettersson <mikpe@it.uu.se> + + PR ada/48835 + * gcc-interface/Makefile.in: Add support for m68k-linux. + * system-linux-m68k.ads: New file based on system-linux-ppc.ads + and system-vxworks-m68k.ads. + * s-memory.adb (Gnat_Malloc): New wrapper around Alloc, returning + the memory address as a pointer not an integer. + Add Gnat_Malloc -> __gnat_malloc export. + * s-memory.ads: Remove Alloc -> __gnat_malloc export. + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -2084,6 +2084,35 @@ ifeq ($(strip $(filter-out hppa% linux%, + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++# M68K Linux ++ifeq ($(strip $(filter-out m68k% linux%,$(arch) $(osys))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads<a-intnam-linux.ads \ ++ s-inmaop.adb<s-inmaop-posix.adb \ ++ s-intman.adb<s-intman-posix.adb \ ++ s-linux.ads<s-linux.ads \ ++ s-osinte.adb<s-osinte-posix.adb \ ++ s-osinte.ads<s-osinte-linux.ads \ ++ s-osprim.adb<s-osprim-posix.adb \ ++ s-taprop.adb<s-taprop-linux.adb \ ++ s-tasinf.ads<s-tasinf-linux.ads \ ++ s-tasinf.adb<s-tasinf-linux.adb \ ++ s-taspri.ads<s-taspri-posix.ads \ ++ s-tpopsp.adb<s-tpopsp-posix-foreign.adb \ ++ system.ads<system-linux-m68k.ads ++ ++ TOOLS_TARGET_PAIRS = \ ++ mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \ ++ indepsw.adb<indepsw-gnu.adb ++ ++ EXTRA_GNATRTL_TASKING_OBJS=s-linux.o ++ EH_MECHANISM=-gcc ++ THREADSLIB = -lpthread ++ GNATLIB_SHARED = gnatlib-shared-dual ++ GMEM_LIB = gmemlib ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + # SH4 Linux + ifeq ($(strip $(filter-out sh4% linux%,$(target_cpu) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ +Index: b/src/gcc/ada/s-memory.adb +=================================================================== +--- a/src/gcc/ada/s-memory.adb ++++ b/src/gcc/ada/s-memory.adb +@@ -47,6 +47,7 @@ with Ada.Exceptions; + with System.Soft_Links; + with System.Parameters; + with System.CRTL; ++with Ada.Unchecked_Conversion; + + package body System.Memory is + +@@ -100,6 +101,22 @@ package body System.Memory is + return Result; + end Alloc; + ++ type Char_Ptr is access all Character; ++ pragma Convention (C, Char_Ptr); ++ pragma No_Strict_Aliasing (Char_Ptr); ++ ++ function To_Char_Ptr is ++ new Ada.Unchecked_Conversion (System.Address, Char_Ptr); ++ ++ -- The function exported as __gnat_malloc MUST return a pointer type. ++ function Gnat_Malloc (Size : size_t) return Char_Ptr; ++ pragma Export (C, Gnat_Malloc, "__gnat_malloc"); ++ ++ function Gnat_Malloc (Size : size_t) return Char_Ptr is ++ begin ++ return To_Char_Ptr (Alloc (Size)); ++ end Gnat_Malloc; ++ + ---------- + -- Free -- + ---------- +Index: b/src/gcc/ada/s-memory.ads +=================================================================== +--- a/src/gcc/ada/s-memory.ads ++++ b/src/gcc/ada/s-memory.ads +@@ -100,7 +100,6 @@ private + + -- The following names are used from the generated compiler code + +- pragma Export (C, Alloc, "__gnat_malloc"); + pragma Export (C, Free, "__gnat_free"); + pragma Export (C, Realloc, "__gnat_realloc"); + +Index: b/src/gcc/ada/system-linux-m68k.ads +=================================================================== +--- /dev/null ++++ b/src/gcc/ada/system-linux-m68k.ads +@@ -0,0 +1,154 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME COMPONENTS -- ++-- -- ++-- S Y S T E M -- ++-- -- ++-- S p e c -- ++-- (GNU/Linux/m68k Version) -- ++-- -- ++-- Copyright (C) 2014, Free Software Foundation, Inc. -- ++-- -- ++-- This specification is derived from the Ada Reference Manual for use with -- ++-- GNAT. The copyright notice above, and the license provisions that follow -- ++-- apply solely to the contents of the part following the private keyword. -- ++-- -- ++-- 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. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package System is ++ pragma Pure; ++ -- Note that we take advantage of the implementation permission to make ++ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ++ -- 2005, this is Pure in any case (AI-362). ++ ++ type Name is (SYSTEM_NAME_GNAT); ++ System_Name : constant Name := SYSTEM_NAME_GNAT; ++ ++ -- System-Dependent Named Numbers ++ ++ Min_Int : constant := Long_Long_Integer'First; ++ Max_Int : constant := Long_Long_Integer'Last; ++ ++ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; ++ Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; ++ ++ Max_Base_Digits : constant := Long_Long_Float'Digits; ++ Max_Digits : constant := Long_Long_Float'Digits; ++ ++ Max_Mantissa : constant := 63; ++ Fine_Delta : constant := 2.0 ** (-Max_Mantissa); ++ ++ Tick : constant := 0.000_001; ++ ++ -- Storage-related Declarations ++ ++ type Address is private; ++ pragma Preelaborable_Initialization (Address); ++ Null_Address : constant Address; ++ ++ Storage_Unit : constant := 8; ++ Word_Size : constant := 32; ++ Memory_Size : constant := 2 ** 32; ++ ++ -- Address comparison ++ ++ function "<" (Left, Right : Address) return Boolean; ++ function "<=" (Left, Right : Address) return Boolean; ++ function ">" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := High_Order_First; ++ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ -- Is the following actually true for GNU/Linux/m68k? ++ -- ++ -- 0 .. 98 corresponds to the system priority range 1 .. 99. ++ -- ++ -- If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use ++ -- of the entire range provided by the system. ++ -- ++ -- If the scheduling policy is SCHED_OTHER the only valid system priority ++ -- is 1 and other values are simply ignored. ++ ++ Max_Priority : constant Positive := 97; ++ Max_Interrupt_Priority : constant Positive := 98; ++ ++ subtype Any_Priority is Integer range 0 .. 98; ++ subtype Priority is Any_Priority range 0 .. 97; ++ subtype Interrupt_Priority is Any_Priority range 98 .. 98; ++ ++ Default_Priority : constant Priority := 48; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := False; ++ Command_Line_Args : constant Boolean := True; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := False; ++ Stack_Check_Limits : constant Boolean := False; ++ Support_Aggregates : constant Boolean := True; ++ Support_Atomic_Primitives : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Always_Compatible_Rep : constant Boolean := False; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := True; ++ ++end System; |