Update to the latest public release 3.13p.

Thanks to Samuel Tardieu <sam@inf.enst.fr> for instigating this
update and providing some of the changes.
This commit is contained in:
Daniel Eischen 2000-11-01 18:57:03 +00:00
parent e0837ffadb
commit 95df74e9ba
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=34561
14 changed files with 662 additions and 252 deletions

View File

@ -14,21 +14,26 @@
# using symbolic links.
PORTNAME= gnat
PORTVERSION= 3.12p
PORTVERSION= 3.13p
CATEGORIES= lang
MASTER_SITES= ftp://cs.nyu.edu/pub/gnat/ \
${MASTER_SITE_GNU}
DISTNAME= gcc-2.8.1
DISTFILES= gnat-3.12p-src.tar.gz gcc-2.8.1.tar.gz
MASTER_SITES= ftp://cs.nyu.edu/pub/gnat/${PORTVERSION}/ \
${MASTER_SITE_LOCAL} ${MASTER_SITE_GNU}
MASTER_SITE_SUBDIR= gcc
DISTFILES= ${GNATNAME}.tgz gcc-2.8.1.tar.gz
MAINTAINER= eischen@vigrid.com
.include <bsd.port.pre.mk>
WRKSRC= ${WRKDIR}/gcc-2.8.1
GNATNAME= gnat-${PORTVERSION}-src
GNUHOST= ${ARCH}-unknown-freebsd${OSREL}
GCC_VERSION= 2.8.1
PLIST_SUB= GNUHOST=${GNUHOST} GCC_VERSION=${GCC_VERSION}
PLIST_SUB= GNUHOST=${GNUHOST} GCC_VERSION=${GCC_VERSION} \
LIBRARY_VERSION=${LIBRARY_VERSION} \
SHARED_MAJOR=${SHARED_MAJOR}
# Make no mistake about what host/target we are building on/for.
# This package does not support cross-compiling, and this fixes
# problems with bsd.port.mk files from earlier FreeBSD 3.x releases.
@ -38,12 +43,12 @@ GNU_CONFIGURE= yes
USE_GMAKE= yes
MAN1= adagcc.1 cccp.1
# You need a compiler who calls an existing GNAT compiler (3.11 or greater).
# You need a compiler who calls an existing GNAT compiler (3.12 or greater).
# If you have one, point CC at it. By default, we'll look for one in the
# obvious places. If we can't find one, we'll fetch a distfile containing
# a minimum (still pretty large) compiler toolset and use that to build.
# For the GNAT compiler, we look in ${PREFIX} and in /usr/local.
# For the GNAT compiler, we look in ${PREFIX} and in ${LOCALBASE}.
.ifdef PREFIX
have_boot!= if [ -x ${PREFIX}/bin/adagcc -a -x ${PREFIX}/bin/gnatbind ]; then \
${ECHO} "${PREFIX}/bin"; \
@ -54,8 +59,8 @@ have_boot!= if [ -x ${PREFIX}/bin/adagcc -a -x ${PREFIX}/bin/gnatbind ]; then \
have_boot=
.endif
.if empty(have_boot)
have_boot!= if [ -x /usr/local/bin/adagcc -a -x /usr/local/bin/gnatbind ]; then \
${ECHO} "/usr/local/bin"; \
have_boot!= if [ -x {LOCALBASE}/bin/adagcc -a -x {LOCALBASE}/bin/gnatbind ]; then \
${ECHO} "{LOCALBASE}/bin"; \
else \
${ECHO} ""; \
fi
@ -86,7 +91,7 @@ BROKEN= "Cannot build with or for an aout compiler."
.endif
.if empty(have_boot)
DISTFILES+= gnat-3.11p-boot.tar.gz
DISTFILES+= gnat-3.13p-boot.tar.gz
# Warning! You need the trailing slash on GCC_EXEC_PREFIX.
COMPILEDATA= GCC_EXEC_PREFIX=${WRKDIR}/adaboot/lib/gcc-lib/ \
ADA_INCLUDE_PATH=${WRKDIR}/adaboot/lib/gcc-lib/adainclude \
@ -95,9 +100,21 @@ have_boot= ${WRKDIR}/adaboot
.endif
# Make sure we use the Ada-aware gcc compiler.
CC = adagcc
CC = adagcc
CONFIGURE_ENV= ${COMPILE_DATA} PATH=${have_boot}/bin:$$PATH
.if OVERRIDE_CFLAGS
GNATCFLAGS= ${CFLAGS}
GNATLIBCFLAGS= ${CFLAGS}
.else
GNATCFLAGS= -O2
GNATLIBCFLAGS= -O2
.endif
# Shared library handling
LIBRARY_VERSION= 3.13
SHARED_MAJOR= 1
# Account for signal set changes
.if ${OSVERSION} > 400010
SIGSET_WORDS= 4
@ -108,14 +125,16 @@ SIGACTION= old_struct_sigaction
.endif
pre-patch:
@${MV} ${WRKSRC}/config/i386/freebsd.h ${WRKSRC}/config/i386/freebsd-aout.h
@${MV} ${WRKSRC}/config/i386/freebsd-elf.h ${WRKSRC}/config/i386/freebsd.h
@if [ ! -f ${WRKSRC}/config/i386/freebsd-aout.h ]; then \
${MV} ${WRKSRC}/config/i386/freebsd.h ${WRKSRC}/config/i386/freebsd-aout.h; \
${MV} ${WRKSRC}/config/i386/freebsd-elf.h ${WRKSRC}/config/i386/freebsd.h; \
fi
@${ECHO} "===> Applying FreeBSD patches to gcc for ${DISTNAME}"
-( ${PATCH} ${PATCH_ARGS} < ${FILESDIR}/freebsdgcc28-patches )
@${ECHO} "===> Patching gcc for ${DISTNAME}"
-( ${PATCH} ${PATCH_ARGS} < ${WRKDIR}/gnat-3.12p-src/src/gcc-281.dif )
@${ECHO} "===> Patching gcc for ${GNATNAME}"
-( ${PATCH} ${PATCH_ARGS} < ${WRKDIR}/${GNATNAME}/src/gcc-281.dif )
@${ECHO} "===> Copying GNAT compiler sources into GCC tree."
-( ${MV} ${WRKDIR}/gnat-3.12p-src/src/ada ${WRKDIR}/gcc-2.8.1 )
-( ${MV} ${WRKDIR}/${GNATNAME}/src/ada ${WRKDIR}/gcc-2.8.1 )
@${ECHO} "===> Making way for FreeBSD GNAT support files"
-( ${RM} -f ${WRKSRC}/ada/[45]f* )
@ -149,23 +168,40 @@ do-configure:
#
# We intentionally override CFLAGS because the build procedure is explicitly
# spelled out in gnat-3.12p-src/src/README.BUILD. Remove CFLAGS from the
# spelled out in gnat-3.13p-src/src/README.BUILD. Remove CFLAGS from the
# do-build target at your own risk.
#
do-build:
(cd ${WRKSRC}; \
PATH=${have_boot}/bin:$$PATH \
${COMPILEDATA} ${GMAKE} CC="${CC}" OLDCC="adagcc" CFLAGS="-O2" LANGUAGES="c ada gcov" )
${COMPILEDATA} ${GMAKE} CC="${CC}" OLDCC="adagcc" CFLAGS="${GNATCFLAGS}" LANGUAGES="c ada gcov" )
(cd ${WRKSRC}; \
${GMAKE} CFLAGS="-O2" LANGUAGES="c ada gcov" bootstrap )
${GMAKE} CFLAGS="${GNATCFLAGS}" LANGUAGES="c ada gcov" bootstrap )
(cd ${WRKSRC}; \
${GMAKE} CFLAGS="-O2" gnattools )
${GMAKE} CFLAGS="${GNATCFLAGS}" gnattools )
(cd ${WRKSRC}; \
${GMAKE} CFLAGS="-O2" GNATLIBCFLAGS="-O2" gnatlib )
${GMAKE} CFLAGS="${GNATCFLAGS}" GNATLIBCFLAGS="-fPIC ${GNATLIBCFLAGS}" \
soext=.so.${SHARED_MAJOR} LIBRARY_VERSION=${LIBRARY_VERSION} \
gnatlib-shared )
${MV} ${WRKSRC}/ada/rts/lib*-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
${WRKSRC}/ada
${RM} ${WRKSRC}/stamp-gnatlib2
(cd ${WRKSRC}; \
${GMAKE} CFLAGS="${GNATCFLAGS}" GNATLIBCFLAGS="${GNATLIBCFLAGS}" gnatlib )
do-install:
(cd ${WRKSRC}; \
${GMAKE} CC="${CC}" LANGUAGES="c ada gcov" ${INSTALL_TARGET} )
${INSTALL_DATA} \
${WRKSRC}/ada/libgnat-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
${PREFIX}/lib
${INSTALL_DATA} \
${WRKSRC}/ada/libgnarl-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
${PREFIX}/lib
${LN} -s ${PREFIX}/lib/libgnat-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION}/adalib/libgnat.so
${LN} -s ${PREFIX}/lib/libgnarl-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION}/adalib/libgnarl.so
post-install:
@(for prog in ${PREFIX}/bin/adagcc \
@ -193,13 +229,7 @@ post-install:
fi \
done)
@(${TOUCH} ${TOUCH_FLAGS} ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION}/include/float.h)
@(${CHOWN} -R bin:bin ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION})
@(${ECHO} "-----------------------------------------------------------" )
@(${ECHO} "" )
@(${ECHO} "For information about using the tasking library please read" )
@(${ECHO} "the README.Tasking file" )
@(${ECHO} "" )
@(${ECHO} "-----------------------------------------------------------" )
@(${ECHO} "" )
@(chown -R bin:bin ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION})
${LDCONFIG} -m ${PREFIX}/lib
.include <bsd.port.post.mk>

View File

@ -1,3 +1,3 @@
MD5 (gnat-3.12p-src.tar.gz) = e441db93cfef98702f8cf16dffaab6e8
MD5 (gnat-3.13p-src.tgz) = 74098abaed1c89ff9526ac8155c2dd74
MD5 (gcc-2.8.1.tar.gz) = 311829e9c36080fb54b0145285746a9e
MD5 (gnat-3.11p-boot.tar.gz) = e78d6bfa82e0fa941e779d7f14dc4708
MD5 (gnat-3.13p-boot.tar.gz) = a62db6267f7f71dc71a8162ebe794e01

View File

@ -101,13 +101,13 @@ package body System.Interrupt_Management is
(signo : Signal;
code : Interfaces.C.int;
context : access struct_sigcontext) is
Result : Interfaces.C.int;
begin
-- With the __builtin_longjmp, the signal mask is not restored, so we
-- need to restore it explicitely.
-- As long as we are using a longjmp to return control to the
-- exception handler on the runtime stack, we are safe. The original
-- signal mask (the one we had before coming into this signal catching
-- function) will be restored by the longjmp. Therefore, raising
-- an exception in this handler should be a safe operation.
Result := pthread_sigmask (SIG_UNBLOCK, Signal_Mask'Access, null);
pragma Assert (Result = 0);
-- Check that treatment of exception propagation here
-- is consistent with treatment of the abort signal in
@ -147,20 +147,23 @@ begin
begin
Abort_Task_Interrupt := SIGABRT;
Abort_Task_Interrupt := SIGADAABORT;
-- Change this if you want to use another signal for task abort.
-- SIGTERM might be a good one.
act.sa_handler := Notify_Exception'Address;
act.sa_flags := 16#010#;
-- 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.
act.sa_flags := 0;
-- 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.
-- In that case, this field should be changed back to 0. ???
-- Since SA_NODEFER is obsolete, instead we reset explicitely
-- the mask in the exception handler.
Result := sigemptyset (Signal_Mask'Access);
pragma Assert (Result = 0);
@ -184,8 +187,6 @@ begin
end loop;
Keep_Unmasked (Abort_Task_Interrupt) := True;
Keep_Unmasked (SIGSTOP) := True;
Keep_Unmasked (SIGKILL) := True;
-- By keeping SIGINT unmasked, allow the user to do a Ctrl-C, but in the
-- same time, disable the ability of handling this signal
@ -195,24 +196,19 @@ begin
if Unreserve_All_Interrupts = 0 then
Keep_Unmasked (SIGINT) := True;
else
Keep_Unmasked (SIGINT) := False;
end if;
-- FreeBSD uses SIGINFO to dump thread status to stdout. If
-- the user really wants to attach his own handler, let him.
for I in Unmasked'Range loop
Keep_Unmasked (Interrupt_ID (Unmasked (I))) := True;
end loop;
-- FreeBSD pthreads uses setitimer/getitimer for thread scheduling.
-- Specifically, it uses timer ITIMER_PROF which generates SIGPROF.
-- FreeBSD pthreads also needs SIGCHLD. The FreeBSD threads library
-- also uses SIGINFO for debugging, but it's not required so we'll
-- let an Ada application use it.
Keep_Unmasked (SIGCHLD) := True;
Keep_Unmasked (SIGPROF) := True;
Reserve := Keep_Unmasked or Keep_Masked;
Reserve := Reserve or Keep_Unmasked or Keep_Masked;
for I in Reserved'Range loop
Reserve (Interrupt_ID (Reserved (I))) := True;
end loop;
Reserve (0) := true;
Reserve (0) := True;
-- We do not have Signal 0 in reality. We just use this value
-- to identify non-existent signals (see s-intnam.ads). Therefore,
-- Signal 0 should not be used in all signal related operations hence

View File

@ -54,18 +54,18 @@
-- __ARCH = I386
-- __OS = FREEBSD
-- __HAS_SIGCONTEXT = 1
-- __HAS_UCONTEXT = 0
-- __HAS_UCONTEXT = 1
-- __THREADS = POSIX_THREADS
-- __THREAD_VARIANT = ??
-- __HAS_TIMESPEC = 1
-- __HAS_NANOSLEEP = 1
-- __HAS_CLOCK_GETTIME = 0
-- __HAS_CLOCK_GETTIME = 1
-- __HAS_GETTIMEOFDAY = 1
-- __POSIX_THREAD_PRIO_PROTECT = 0
-- __POSIX_THREAD_PRIO_INHERIT = 0
-- __POSIX_THREAD_PRIO_PROTECT = 1
-- __POSIX_THREAD_PRIO_INHERIT = 1
-- __POSIX_THREAD_ATTR_STACKADDR = 1
-- __POSIX_THREAD_ATTR_STACKSIZE = 1
-- __POSIX_THREAD_PRIORITY_SCHEDULING = 0
-- __POSIX_THREAD_PRIORITY_SCHEDULING = 1
-- This package encapsulates all direct interfaces to OS services
-- that are needed by children of System.
@ -192,6 +192,22 @@ package System.OS_Interface is
SIGUSR1 : constant := 30; -- user defined signal 1
SIGUSR2 : constant := 31; -- user defined signal 2
SIGADAABORT : constant := SIGABRT;
-- Change this if you want to use another signal for task abort.
-- SIGTERM might be a good one.
type Signal_Set is array (Natural range <>) of Signal;
-- Interrupts that must be unmasked at all times. FreeBSD
-- pthreads will not allow an application to mask out any
-- interrupt needed by the threads library.
Unmasked : constant Signal_Set :=
(SIGTRAP, SIGBUS, SIGTTIN, SIGTTOU, SIGTSTP);
-- FreeBSD will uses SIGPROF for timing. Do not allow a
-- handler to attach to this signal.
Reserved : constant Signal_Set := (0 .. 0 => SIGPROF);
type sigset_t is private;
function sigaddset
@ -239,7 +255,7 @@ package System.OS_Interface is
end record;
pragma Convention (C, new_struct_sigaction);
subtype struct_sigaction is __FreeBSD__sigaction;
subtype struct_sigaction is new_struct_sigaction;
type struct_sigaction_ptr is access all struct_sigaction;
@ -268,7 +284,7 @@ package System.OS_Interface is
-- Time --
----------
Time_Slice_Supported : constant boolean := True;
Time_Slice_Supported : constant Boolean := True;
-- Indicates wether time slicing is supported (i.e SCHED_RR is supported)
type timespec is private;
@ -321,10 +337,6 @@ package System.OS_Interface is
-- Priority Scheduling --
-------------------------
MIN_PRIO : constant := 0;
MAX_PRIO : constant := 126;
DEFAULT_PRIO : constant := 64;
SCHED_FIFO : constant := 1;
SCHED_OTHER : constant := 2;
SCHED_RR : constant := 3;
@ -371,7 +383,7 @@ package System.OS_Interface is
-- Stack --
-----------
Stack_Base_Available : constant boolean := False;
Stack_Base_Available : constant Boolean := False;
-- Indicates wether the stack base is available on this target.
-- This allows us to share s-osinte.adb between all the FSU run time.
-- Note that this value can only be true if pthread_t has a complete
@ -509,6 +521,9 @@ package System.OS_Interface is
return int;
pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
Relative_Timed_Wait : constant Boolean := False;
-- pthread_cond_timedwait requires an absolute delay time
----------------------------
-- POSIX.1c Section 13 --
----------------------------
@ -721,7 +736,7 @@ package System.OS_Interface is
private
type sigset_t is array (1 .. __FreeBSD__sigset_words) of unsigned;
type sigset_t is array (1 .. 4) of unsigned;
-- In FreeBSD the component sa_handler turns out to
-- be one a union type, and the selector is a macro:

View File

@ -0,0 +1,242 @@
------------------------------------------------------------------------------
-- --
-- GNAT RUN-TIME COMPONENTS --
-- --
-- S Y S T E M --
-- --
-- S p e c --
-- (Default Version) --
-- --
-- $Revision: 1.40 $
-- --
-- Copyright (C) 1992-2000 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 2, or (at your option) any later ver- --
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
-- for more details. You should have received a copy of the GNU General --
-- Public License distributed with GNAT; see file COPYING. If not, write --
-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
-- MA 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from this --
-- unit, or you link this unit with other files to produce an executable, --
-- this unit does not by itself cause the resulting executable to be --
-- covered by the GNU General Public License. This exception does not --
-- however invalidate any other reasons why the executable file might be --
-- covered by the GNU Public License. --
-- --
-- GNAT was originally developed by the GNAT team at New York University. --
-- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
-- --
------------------------------------------------------------------------------
package System is
pragma Pure (System);
-- Note that we take advantage of the implementation permission to
-- make this unit Pure instead of Preelaborable, see RM 13.7(36)
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 := Integer'Last;
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 := Standard'Tick;
-- Storage-related Declarations
type Address is private;
Null_Address : constant Address;
Storage_Unit : constant := Standard'Storage_Unit;
Word_Size : constant := Standard'Word_Size;
Memory_Size : constant := 2 ** Standard'Address_Size;
-- 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 :=
Bit_Order'Val (Standard'Default_Bit_Order);
-- Priority-related Declarations (RM D.1)
Max_Priority : constant Positive := 30;
Max_Interrupt_Priority : constant Positive := 31;
subtype Any_Priority is Integer
range 0 .. Standard'Max_Interrupt_Priority;
subtype Priority is Any_Priority
range 0 .. Standard'Max_Priority;
-- Functional notation is needed in the following to avoid visibility
-- problems when this package is compiled through rtsfind in the middle
-- of another compilation.
subtype Interrupt_Priority is Any_Priority
range
Standard."+" (Standard'Max_Priority, 1) ..
Standard'Max_Interrupt_Priority;
Default_Priority : constant Priority :=
Standard."/" (Standard."+" (Priority'First, Priority'Last), 2);
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 Rtsfind. All values defined here must be
-- constants, since they are accessed at compile time.
-- Note these definitions must come before the definitions of any
-- complex types or other code that may require Rtsfind to access
-- these entities during compilation of System itself.
-----------------------------------
-- Control of Exception Handling --
-----------------------------------
-- GNAT provides two methods of implementing exceptions:
-- Longjmp/Setjmp (-gnatL)
-- This approach uses longjmp/setjmp to handle exceptions. It
-- uses less storage, and can often propagate exceptions faster,
-- at the expense of (sometimes considerable) overhead in setting
-- up an exception handler. This approach is available on all
-- targets, and is the default where it is the only approach.
-- Zero Cost (-gnatZ)
-- This approach uses separate exception tables. These use extra
-- storage, and exception propagation can be quite slow, but there
-- is no overhead in setting up an exception handler (it is to this
-- latter operation that the phrase zero-cost refers). This approach
-- is only available on some targets, and is the default where it is
-- available.
Zero_Cost_Exceptions : constant Boolean := False;
-- Set False for Longjmp/Setjmp, True for Zero Cost
-------------------------------
-- Control of Stack Checking --
-------------------------------
-- GNAT provides two methods of implementing exceptions:
-- GCC Probing Mechanism
-- This approach uses the standard GCC mechanism for
-- stack checking. The method assumes that accessing
-- storage immediately beyond the end of the stack
-- will result in a trap that is converted to a storage
-- error by the runtime system. This mechanism has
-- minimal overhead, but requires complex hardware,
-- operating system and run-time support. Probing is
-- the default method where it is available. The stack
-- size for the environment task depends on the operating
-- system and cannot be set in a system-independent way.
-- GNAT Stack-limit Checking
-- This method relies on comparing the stack pointer
-- with per-task stack limits. If the check fails, an
-- exception is explicitly raised. The advantage is
-- that the method requires no extra system dependent
-- runtime support and can be used on systems without
-- memory protection as well, but at the cost of more
-- overhead for doing the check. This method is the
-- default on systems that lack complete support for
-- probing.
Stack_Check_Probes : constant Boolean := True;
-- Set True for GCC Probing, False for GNAT Stack-limit Checking
Stack_Check_Default : constant Boolean := True;
-- Set True for systems where stack checking is performed by default
----------------------------------------------
-- Boolean-Valued Floating-Point Attributes --
----------------------------------------------
-- The constants below give the values for representation oriented
-- floating-point attributes that are the same for all float types
-- on the target. These are all boolean values.
-- A value is only True if the target reliably supports the corresponding
-- feature. Reliably here means that support is guaranteed for all
-- possible settings of the relevant compiler switches (like -mieee),
-- since we cannot control the user setting of those switches.
-- The attributes cannot dependent on the current setting of compiler
-- switches, since the values must be static and consistent throughout
-- the partition. We probably should add such consistency checks in future,
-- but for now we don't do this.
Denorm : constant Boolean := True;
Machine_Rounds : constant Boolean := True;
Machine_Overflows : constant Boolean := False;
Signed_Zeros : constant Boolean := True;
----------------------------
-- Support of Long Shifts --
----------------------------
-- In GNORT mode, we cannot call library routines, and in particular
-- we cannot call routines for long (64-bit) shifts if such routines
-- are required on the target. This comes up in the context of support
-- of packed arrays. We can only represent packed arrays whose length
-- is in the range 33- to 64-bits as modular types if long shifts are
-- done with inline code.
-- For the default version, for now we set long shifts inlined as True
-- This may not be quite accurate, but until we get proper separate
-- System's for each target, it is a safer choice.
Long_Shifts_Inlined : constant Boolean := True;
end System;

View File

@ -6,9 +6,9 @@
-- --
-- B o d y --
-- --
-- $Revision: 1.5 $ --
-- $Revision: 1.33 $
-- --
-- Copyright (C) 1997, Florida State University --
-- Copyright (C) 1991-2000, Florida State University --
-- --
-- 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- --
@ -37,6 +37,16 @@
-- This is the FreeBSD PTHREADS version of this package. Contributed
-- by Daniel M. Eischen (eischen@vigrid.com).
-- This package contains all the GNULL primitives that interface directly
-- with the underlying OS.
-- Note: this file can only be used for POSIX compliant systems that
-- implement SCHED_FIFO and Ceiling Locking correctly (that is, for now:
-- FSU Threads, RTEMS Threads, and FreeBSD Threads).
-- For configurations where SCHED_FIFO and priority ceiling are not a
-- requirement, this file can also be used (e.g AiX threads)
pragma Polling (Off);
-- Turn off polling, we do not want ATC polling to take place during
-- tasking operations. It causes infinite loops and other problems.
@ -91,7 +101,7 @@ package body System.Task_Primitives.Operations is
use System.Parameters;
use System.OS_Primitives;
package TSL renames System.Soft_Links;
package SSL renames System.Soft_Links;
pragma Linker_Options ("-pthread");
@ -103,7 +113,7 @@ package body System.Task_Primitives.Operations is
-- at run time.
All_Tasks_L : aliased System.Task_Primitives.RTS_Lock;
-- See comments on locking rules in System.Locking_Rules (spec).
-- See comments on locking rules in System.Tasking (spec).
Environment_Task_ID : Task_ID;
-- A variable to hold Task_ID for the environment task.
@ -111,6 +121,11 @@ package body System.Task_Primitives.Operations is
Unblocked_Signal_Mask : aliased sigset_t;
-- The set of signals that should unblocked in all tasks
Default_Prio : Interfaces.C.int := 15;
-- FreeBSDs default priority for a thread.
-- The followings are internal configuration constants needed.
Next_Serial_Number : Task_Serial_Number := 100;
-- We start at 100, to reserve some special values for
-- using in error checking.
@ -131,7 +146,6 @@ package body System.Task_Primitives.Operations is
function To_Address is new Unchecked_Conversion (Task_ID, System.Address);
--------------------
-- Local Packages --
--------------------
@ -245,7 +259,7 @@ package body System.Task_Primitives.Operations is
procedure Stack_Guard (T : ST.Task_ID; On : Boolean) is
Stack_Base : constant Address := Get_Stack_Base (T.LL.Thread);
Stack_Base : constant Address := Get_Stack_Base (T.Common.LL.Thread);
Guard_Page_Address : Address;
Res : Interfaces.C.int;
@ -273,7 +287,7 @@ package body System.Task_Primitives.Operations is
function Get_Thread_Id (T : ST.Task_ID) return OSI.Thread_Id is
begin
return T.LL.Thread;
return T.Common.LL.Thread;
end Get_Thread_Id;
----------
@ -306,7 +320,7 @@ package body System.Task_Primitives.Operations is
pragma Assert (Result = 0 or else Result = ENOMEM);
if Result = ENOMEM then
raise STORAGE_ERROR;
raise Storage_Error;
end if;
Result := pthread_mutexattr_setprotocol
@ -316,17 +330,16 @@ package body System.Task_Primitives.Operations is
-- Convert the Ada priority to be based around the default
-- system priority.
Adjusted_Prio := Interfaces.C.int (Prio) -
Interfaces.C.int (System.Default_Priority) + DEFAULT_PRIO;
Interfaces.C.int (System.Default_Priority) + Default_Prio;
Result := pthread_mutexattr_setprioceiling
(Attributes'Access, Interfaces.C.int (Adjusted_Prio));
(Attributes'Access, Adjusted_Prio);
pragma Assert (Result = 0);
Result := pthread_mutex_init (L, Attributes'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
if Result = ENOMEM then
raise STORAGE_ERROR;
raise Storage_Error;
end if;
Result := pthread_mutexattr_destroy (Attributes'Access);
@ -343,32 +356,26 @@ package body System.Task_Primitives.Operations is
pragma Assert (Result = 0 or else Result = ENOMEM);
if Result = ENOMEM then
raise STORAGE_ERROR;
raise Storage_Error;
end if;
-- Convert the Ada priority to be based around the default
-- system priority.
Adjusted_Prio := Interfaces.C.int (System.Any_Priority'Last) -
Interfaces.C.int (System.Default_Priority) + DEFAULT_PRIO;
Interfaces.C.int (System.Default_Priority) + Default_Prio;
Result := pthread_mutexattr_setprotocol
(Attributes'Access, PTHREAD_PRIO_PROTECT);
pragma Assert (Result = 0);
Result := pthread_mutexattr_setprioceiling
(Attributes'Access, Interfaces.C.int (Adjusted_Prio));
pragma Assert (Result = 0);
Result := pthread_mutexattr_setprioceiling
(Attributes'Access, Interfaces.C.int (Adjusted_Prio));
(Attributes'Access, Adjusted_Prio);
pragma Assert (Result = 0);
Result := pthread_mutex_init (L, Attributes'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
if Result = ENOMEM then
raise STORAGE_ERROR;
raise Storage_Error;
end if;
Result := pthread_mutexattr_destroy (Attributes'Access);
@ -420,9 +427,10 @@ package body System.Task_Primitives.Operations is
end Write_Lock;
procedure Write_Lock (T : Task_ID) is
Result : Interfaces.C.int;
Result : Interfaces.C.int;
begin
Result := pthread_mutex_lock (T.LL.L'Access);
Result := pthread_mutex_lock (T.Common.LL.L'Access);
pragma Assert (Result = 0);
end Write_Lock;
@ -456,9 +464,10 @@ package body System.Task_Primitives.Operations is
end Unlock;
procedure Unlock (T : Task_ID) is
Result : Interfaces.C.int;
Result : Interfaces.C.int;
begin
Result := pthread_mutex_unlock (T.LL.L'Access);
Result := pthread_mutex_unlock (T.Common.LL.L'Access);
pragma Assert (Result = 0);
end Unlock;
@ -468,17 +477,16 @@ package body System.Task_Primitives.Operations is
procedure Sleep (Self_ID : Task_ID;
Reason : System.Tasking.Task_States) is
Result : Interfaces.C.int;
begin
pragma Assert (Self_ID = Self);
Result := pthread_cond_wait (Self_ID.LL.CV'Access, Self_ID.LL.L'Access);
Result := pthread_cond_wait (Self_ID.Common.LL.CV'Access,
Self_ID.Common.LL.L'Access);
-- EINTR is not considered a failure.
pragma Assert (Result = 0 or else Result = EINTR);
end Sleep;
-----------------
@ -493,15 +501,15 @@ package body System.Task_Primitives.Operations is
(Self_ID : Task_ID;
Time : Duration;
Mode : ST.Delay_Modes;
Reason : System.Tasking.Task_States;
Reason : Task_States;
Timedout : out Boolean;
Yielded : out Boolean)
is
Check_Time : constant Duration := Clock;
Abs_Time : Duration;
Request : aliased timespec;
Result : Interfaces.C.int;
Check_Time : constant Duration := Clock;
Rel_Time : Duration;
Abs_Time : Duration;
Request : aliased timespec;
Result : Interfaces.C.int;
begin
Timedout := True;
@ -509,18 +517,32 @@ package body System.Task_Primitives.Operations is
if Mode = Relative then
Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + Check_Time;
if Relative_Timed_Wait then
Rel_Time := Duration'Min (Max_Sensible_Delay, Time);
end if;
else
Abs_Time := Time;
Abs_Time := Duration'Min (Check_Time + Max_Sensible_Delay, Time);
if Relative_Timed_Wait then
Rel_Time := Duration'Min (Max_Sensible_Delay, Time - Check_Time);
end if;
end if;
if Abs_Time > Check_Time then
Request := To_Timespec (Abs_Time);
if Relative_Timed_Wait then
Request := To_Timespec (Rel_Time);
else
Request := To_Timespec (Abs_Time);
end if;
loop
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
or else Self_ID.Pending_Priority_Change;
Result := pthread_cond_timedwait
(Self_ID.LL.CV'Access, Self_ID.LL.L'Access, Request'Access);
Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
Self_ID.Common.LL.L'Access, Request'Access);
exit when Abs_Time <= Clock;
@ -550,41 +572,55 @@ package body System.Task_Primitives.Operations is
Time : Duration;
Mode : ST.Delay_Modes)
is
Check_Time : constant Duration := Clock;
Abs_Time : Duration;
Rel_Time : Duration;
Request : aliased timespec;
Result : Interfaces.C.int;
Check_Time : constant Duration := Clock;
Abs_Time : Duration;
Request : aliased timespec;
Result : Interfaces.C.int;
begin
-- Only the little window between deferring abort and
-- locking Self_ID is the reason we need to
-- check for pending abort and priority change below! :(
TSL.Abort_Defer.all;
SSL.Abort_Defer.all;
Write_Lock (Self_ID);
if Mode = Relative then
Abs_Time := Time + Check_Time;
Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + Check_Time;
if Relative_Timed_Wait then
Rel_Time := Duration'Min (Max_Sensible_Delay, Time);
end if;
else
Abs_Time := Time;
Abs_Time := Duration'Min (Check_Time + Max_Sensible_Delay, Time);
if Relative_Timed_Wait then
Rel_Time := Duration'Min (Max_Sensible_Delay, Time - Check_Time);
end if;
end if;
if Abs_Time > Check_Time then
Request := To_Timespec (Abs_Time);
Self_ID.State := Delay_Sleep;
if Relative_Timed_Wait then
Request := To_Timespec (Rel_Time);
else
Request := To_Timespec (Abs_Time);
end if;
Self_ID.Common.State := Delay_Sleep;
loop
if Self_ID.Pending_Priority_Change then
Self_ID.Pending_Priority_Change := False;
Self_ID.Base_Priority := Self_ID.New_Base_Priority;
Set_Priority (Self_ID, Self_ID.Base_Priority);
Self_ID.Common.Base_Priority := Self_ID.New_Base_Priority;
Set_Priority (Self_ID, Self_ID.Common.Base_Priority);
end if;
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
Result := pthread_cond_timedwait
(Self_ID.LL.CV'Access, Self_ID.LL.L'Access, Request'Access);
Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
Self_ID.Common.LL.L'Access, Request'Access);
exit when Abs_Time <= Clock;
pragma Assert (Result = 0
@ -592,12 +628,12 @@ package body System.Task_Primitives.Operations is
or else Result = EINTR);
end loop;
Self_ID.State := Runnable;
Self_ID.Common.State := Runnable;
end if;
Unlock (Self_ID);
Result := sched_yield;
TSL.Abort_Undefer.all;
SSL.Abort_Undefer.all;
end Timed_Delay;
-----------
@ -632,7 +668,7 @@ package body System.Task_Primitives.Operations is
Result : Interfaces.C.int;
begin
Result := pthread_cond_signal (T.LL.CV'Access);
Result := pthread_cond_signal (T.Common.LL.CV'Access);
pragma Assert (Result = 0);
end Wakeup;
@ -662,19 +698,19 @@ package body System.Task_Primitives.Operations is
Param : aliased struct_sched_param;
begin
T.LL.Current_Priority := Interfaces.C.int (Prio);
T.Common.Current_Priority := Prio;
-- Convert the Ada priority to be based around the default
-- system priority.
Param.sched_priority := DEFAULT_PRIO + Interfaces.C.int (Prio) -
Param.sched_priority := Default_Prio + Interfaces.C.int (Prio) -
Interfaces.C.int (System.Default_Priority);
if Time_Slice_Supported and then Time_Slice_Val > 0 then
Result := pthread_setschedparam
(T.LL.Thread, SCHED_RR, Param'Access);
(T.Common.LL.Thread, SCHED_RR, Param'Access);
else
Result := pthread_setschedparam
(T.LL.Thread, SCHED_FIFO, Param'Access);
(T.Common.LL.Thread, SCHED_FIFO, Param'Access);
end if;
pragma Assert (Result = 0);
@ -686,7 +722,7 @@ package body System.Task_Primitives.Operations is
function Get_Priority (T : Task_ID) return System.Any_Priority is
begin
return System.Any_Priority (T.LL.Current_Priority);
return T.Common.Current_Priority;
end Get_Priority;
----------------
@ -695,7 +731,7 @@ package body System.Task_Primitives.Operations is
procedure Enter_Task (Self_ID : Task_ID) is
begin
Self_ID.LL.Thread := pthread_self;
Self_ID.Common.LL.Thread := pthread_self;
Specific.Set (Self_ID);
@ -749,17 +785,18 @@ package body System.Task_Primitives.Operations is
-- Convert the Ada priority to be based around the default
-- system priority.
Adjusted_Prio := Interfaces.C.int (System.Any_Priority'Last) -
Interfaces.C.int (System.Default_Priority) + DEFAULT_PRIO;
Interfaces.C.int (System.Default_Priority) + Default_Prio;
Result := pthread_mutexattr_setprotocol
(Mutex_Attr'Access, PTHREAD_PRIO_PROTECT);
pragma Assert (Result = 0);
Result := pthread_mutexattr_setprioceiling
(Mutex_Attr'Access, Interfaces.C.int (Adjusted_Prio));
(Mutex_Attr'Access, Adjusted_Prio);
pragma Assert (Result = 0);
Result := pthread_mutex_init (Self_ID.LL.L'Access, Mutex_Attr'Access);
Result := pthread_mutex_init (Self_ID.Common.LL.L'Access,
Mutex_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
if Result /= 0 then
@ -767,31 +804,35 @@ package body System.Task_Primitives.Operations is
return;
end if;
Result := pthread_condattr_init (Cond_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
if Result /= 0 then
Result := pthread_mutex_destroy (Self_ID.LL.L'Access);
pragma Assert (Result = 0);
Succeeded := False;
return;
end if;
Result := pthread_cond_init (Self_ID.LL.CV'Access, Cond_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
if Result /= 0 then
Result := pthread_mutex_destroy (Self_ID.LL.L'Access);
pragma Assert (Result = 0);
Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
pragma Assert (Result = 0);
Succeeded := False;
return;
end if;
Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
pragma Assert (Result = 0);
Result := pthread_condattr_init (Cond_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
if Result /= 0 then
Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
pragma Assert (Result = 0);
Succeeded := False;
return;
end if;
Result := pthread_cond_init (Self_ID.Common.LL.CV'Access,
Cond_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
if Result /= 0 then
Result := pthread_condattr_destroy (Cond_Attr'Access);
pragma Assert (Result = 0);
Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
pragma Assert (Result = 0);
Succeeded := False;
return;
end if;
Result := pthread_condattr_destroy (Cond_Attr'Access);
pragma Assert (Result = 0);
Succeeded := True;
end Initialize_TCB;
@ -806,8 +847,6 @@ package body System.Task_Primitives.Operations is
Priority : System.Any_Priority;
Succeeded : out Boolean)
is
use System.Task_Info;
Attributes : aliased pthread_attr_t;
Adjusted_Stack_Size : Interfaces.C.size_t;
Result : Interfaces.C.int;
@ -815,12 +854,15 @@ package body System.Task_Primitives.Operations is
function Thread_Body_Access is new
Unchecked_Conversion (System.Address, Thread_Body);
use System.Task_Info;
begin
if Stack_Size = Unspecified_Size then
Adjusted_Stack_Size := Interfaces.C.size_t (Default_Stack_Size);
elsif Stack_Size < Minimum_Stack_Size then
Adjusted_Stack_Size := Interfaces.C.size_t (Minimum_Stack_Size);
else
Adjusted_Stack_Size := Interfaces.C.size_t (Stack_Size);
end if;
@ -849,7 +891,7 @@ package body System.Task_Primitives.Operations is
pragma Assert (Result = 0);
Result := pthread_attr_setstacksize
(Attributes'Access, Interfaces.C.size_t (Adjusted_Stack_Size));
(Attributes'Access, Adjusted_Stack_Size);
pragma Assert (Result = 0);
if Time_Slice_Supported and then Time_Slice_Val > 0 then
@ -873,26 +915,20 @@ package body System.Task_Primitives.Operations is
-- All tasks in RTS will have All_Tasks_Mask initially.
Result := pthread_create
(T.LL.Thread'Access,
(T.Common.LL.Thread'Access,
Attributes'Access,
Thread_Body_Access (Wrapper),
To_Address (T));
pragma Assert (Result = 0 or else Result = EAGAIN);
if Result /= 0 then
Result := pthread_attr_destroy (Attributes'Access);
Succeeded := false;
return;
end if;
Succeeded := Result = 0;
Succeeded := true;
if T.Task_Image /= null then
if T.Common.Task_Image /= null then
declare
Name : aliased string (1 .. T.Task_Image.all'Length + 1);
Name : aliased String (1 .. T.Common.Task_Image.all'Length + 1);
begin
Name := T.Task_Image.all & Ascii.Nul;
Result := pthread_set_name_np (T.LL.Thread, Name'Address);
Name := T.Common.Task_Image.all & ASCII.Nul;
Result := pthread_set_name_np (T.Common.LL.Thread, Name'Address);
end;
end if;
@ -911,10 +947,10 @@ package body System.Task_Primitives.Operations is
Unchecked_Deallocation (Ada_Task_Control_Block, Task_ID);
begin
Result := pthread_mutex_destroy (T.LL.L'Access);
Result := pthread_mutex_destroy (T.Common.LL.L'Access);
pragma Assert (Result = 0);
Result := pthread_cond_destroy (T.LL.CV'Access);
Result := pthread_cond_destroy (T.Common.LL.CV'Access);
pragma Assert (Result = 0);
if T.Known_Tasks_Index /= -1 then
@ -941,7 +977,7 @@ package body System.Task_Primitives.Operations is
Result : Interfaces.C.int;
begin
Result := pthread_kill (T.LL.Thread,
Result := pthread_kill (T.Common.LL.Thread,
Signal (System.Interrupt_Management.Abort_Task_Interrupt));
pragma Assert (Result = 0);
end Abort_Task;
@ -1025,9 +1061,6 @@ package body System.Task_Primitives.Operations is
old_act : aliased struct_sigaction;
Tmp_Set : aliased sigset_t;
Result : Interfaces.C.int;
Policy : aliased Interfaces.C.int;
param : aliased struct_sched_param;
My_Tid : pthread_t;
begin
Environment_Task_ID := Environment_Task;
@ -1056,26 +1089,16 @@ package body System.Task_Primitives.Operations is
old_act'Unchecked_Access);
pragma Assert (Result = 0);
if Time_Slice_Supported and then Time_Slice_Val > 0 then
-- Is Environment_Task.LL.Thread initialized yet?
My_Tid := pthread_self;
if pthread_getschedparam
(My_Tid, Policy'Access, param'Access) = 0
then
Result := pthread_setschedparam (My_Tid, SCHED_RR, param'Access);
pragma Assert (Result = 0);
end if;
end if;
end Initialize;
begin
declare
Result : Interfaces.C.int;
My_Tid : pthread_t;
Param : aliased struct_sched_param;
Policy : aliased Interfaces.C.int;
begin
-- Mask Environment task for all signals. The original mask of the
-- Environment task will be recovered by Interrupt_Server task
-- during the elaboration of s-interr.adb.
@ -1094,6 +1117,14 @@ begin
pragma Assert (Result = 0);
end if;
end loop;
-- Earlier versions of FreeBSDs threads libraries used a priority
-- range of 0..126. Newer versions use POSIX priorities 0..31.
-- Autodetect the range by looking at the current priority.
My_Tid := pthread_self;
if pthread_getschedparam (My_Tid, Policy'Access, Param'Access) = 0 then
Default_Prio := Param.sched_priority;
end if;
end;
end System.Task_Primitives.Operations;

View File

@ -1,8 +1,8 @@
*** ./ada/Makefile.in.orig Fri Sep 24 08:41:35 1999
--- ./ada/Makefile.in Tue Nov 2 10:53:14 1999
*** ada/Makefile.in.orig Wed Jul 19 15:08:56 2000
--- ada/Makefile.in Sun Oct 15 01:09:35 2000
***************
*** 909,914 ****
--- 909,927 ----
*** 976,981 ****
--- 976,1002 ----
endif
endif
@ -11,14 +11,39 @@
+ a-intnam.ads<4fintnam.ads \
+ s-inmaop.adb<7sinmaop.adb \
+ s-intman.adb<5fintman.adb \
+ s-mastop.adb<5omastop.adb \
+ s-osinte.adb<5fosinte.adb \
+ s-osinte.ads<5fosinte.ads \
+ s-osprim.adb<7sosprim.adb \
+ s-taprop.adb<5ftaprop.adb \
+ s-taspri.ads<5ftaspri.ads \
+ s-tpopsp.adb<7stpopsp.adb
+ s-taspri.ads<7staspri.ads \
+ s-tpopsp.adb<7stpopsp.adb \
+ s-traceb.adb<5wtraceb.adb \
+ system.ads<5fsystem.ads
+
+ threadslib=
+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/'))
+ SHARED_MAJOR = 1
+ soext = .so.$(SHARED_MAJOR)
+ endif
+
ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),)
ifeq ($(strip $(filter-out mips sgi irix6%,$(targ))),)
LIBGNAT_TARGET_PAIRS = \
***************
*** 1818,1824 ****
$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) $(misclib) -lm
cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
-o libgnarl-$(LIBRARY_VERSION)$(soext) $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) \
! $(GNATRTL_TASKING_OBJS) -l$(threadslib)
threadsletter=A
gnatlib-shared-dual:
$(MAKE) $(FLAGS_TO_PASS) \
--- 1839,1845 ----
$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) $(misclib) -lm
cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
-o libgnarl-$(LIBRARY_VERSION)$(soext) $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) \
! $(GNATRTL_TASKING_OBJS) $(threadslib)
gnatlib-shared-dual:
$(MAKE) $(FLAGS_TO_PASS) \

View File

@ -1,8 +1,8 @@
*** ./ada/a-init.c.orig Fri Sep 24 08:42:43 1999
--- ./ada/a-init.c Mon Jun 26 21:43:54 2000
*** ada/a-init.c.orig Wed Jul 19 15:09:57 2000
--- ada/a-init.c Fri Oct 13 11:25:52 2000
***************
*** 1445,1450 ****
--- 1445,1532 ----
*** 1441,1446 ****
--- 1441,1528 ----
}
@ -80,11 +80,11 @@
+ {
+ __gnat_install_handler ();
+
+ /* XXX - Initialize floating-point coprocessor. This call is
+ needed because FreeBSD defaults to 53-bit precision instead
+ of 64-bit precision. We require the full precision for
+ /* XXX - Initialize floating-point coprocessor. This call is
+ needed because FreeBSD defaults to 64-bit precision instead
+ of 80-bit precision? We require the full precision for
+ proper operation, given that we have set Max_Digits etc
+ with this in mind. */
+ with this in mind */
+ __gnat_init_float ();
+ }
+
@ -92,19 +92,19 @@
/* __gnat_initialize (default version) */
/***************************************/
***************
*** 1470,1476 ****
defined in all Win32 versions, but only actually does something on
the i386 version, where it properly initializes the FPU for GNAT use. */
*** 1466,1472 ****
WIN32 and could be used under OS/2 */
! #if defined (_WIN32) || defined (__INTERIX)
void
__gnat_init_float ()
{
--- 1552,1558 ----
defined in all Win32 versions, but only actually does something on
the i386 version, where it properly initializes the FPU for GNAT use. */
#if defined (_WIN32) || defined (__INTERIX) || defined (__EMX__) \
! || defined (__Lynx__)
#define HAVE_GNAT_INIT_FLOAT
--- 1548,1554 ----
WIN32 and could be used under OS/2 */
#if defined (_WIN32) || defined (__INTERIX) || defined (__EMX__) \
! || defined (__Lynx__) || defined (__FreeBSD__)
#define HAVE_GNAT_INIT_FLOAT
! #if defined (_WIN32) || defined (__INTERIX) || defined (__FreeBSD__)
void
__gnat_init_float ()
{

View File

@ -1,29 +1,28 @@
*** ./ada/a-sysdep.c.orig Fri Sep 24 08:42:39 1999
--- ./ada/a-sysdep.c Sat Nov 6 16:27:43 1999
*** ada/a-sysdep.c.orig Wed Jul 19 15:09:47 2000
--- ada/a-sysdep.c Fri Oct 13 08:58:43 2000
***************
*** 235,241 ****
#endif
*** 236,242 ****
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
! || (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT)
|| (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
! || defined (__MACHTEN__)
#include <termios.h>
#include <fcntl.h>
#elif defined (VMS)
--- 235,242 ----
#endif
--- 236,242 ----
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
! || (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
! || defined (__FreeBSD__)
|| (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
! || defined (__MACHTEN__) || defined (__FreeBSD__)
#include <termios.h>
#include <fcntl.h>
#elif defined (VMS)
***************
*** 285,291 ****
*** 286,292 ****
{
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|| (defined (__osf__) && ! defined (__alpha_vxworks)) \
! || defined (__CYGWIN32__)
! || defined (__CYGWIN32__) || defined (__MACHTEN__)
char c;
int nread;
int good_one = 0;
@ -31,16 +30,16 @@
{
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|| (defined (__osf__) && ! defined (__alpha_vxworks)) \
! || defined (__CYGWIN32__) || defined (__FreeBSD__)
! || defined (__CYGWIN32__) || defined (__MACHTEN__) || defined (__FreeBSD__)
char c;
int nread;
int good_one = 0;
***************
*** 302,308 ****
*** 303,309 ****
/* Set RAW mode */
termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON;
#if defined(sgi) || defined (sun) || defined (__EMX__) || defined (__osf__) \
! || defined (linux)
! || defined (linux) || defined (__MACHTEN__)
eof_ch = termios_rec.c_cc[VEOF];
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
@ -48,7 +47,7 @@
/* Set RAW mode */
termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON;
#if defined(sgi) || defined (sun) || defined (__EMX__) || defined (__osf__) \
! || defined (linux) || defined (__FreeBSD__)
! || defined (linux) || defined (__MACHTEN__) || defined (__FreeBSD__)
eof_ch = termios_rec.c_cc[VEOF];
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for

View File

@ -14,7 +14,7 @@
+
+ procedure tmpnam (tname : chars) is
+ use type System.Address;
+ Template : string (1 .. 18) := "/var/tmp/tmp.XXXX" & Ascii.Nul;
+ Template : String (1 .. 18) := "/var/tmp/tmp.XXXX" & ASCII.Nul;
+ Name : chars;
+ begin
+ Name := C_mktemp (Template'Address);
@ -24,8 +24,8 @@
+ end tmpnam;
+
+ function tmpfile return FILEs is
+ Name : string (1 .. L_tmpnam) := (others => Ascii.Nul);
+ Mode : string (1 .. 3) := "w+" & Ascii.Nul;
+ Name : String (1 .. L_tmpnam) := (others => ASCII.Nul);
+ Mode : String (1 .. 3) := "w+" & ASCII.Nul;
+ begin
+ tmpnam (Name'Address);
+ return (fopen (Name'Address, Mode'Address));

31
lang/gnat/files/patch-am Normal file
View File

@ -0,0 +1,31 @@
--- ada/g-os_lib.adb.orig Wed Jul 19 15:09:39 2000
+++ ada/g-os_lib.adb Fri Oct 13 09:09:33 2000
@@ -173,25 +173,12 @@
(FD : out File_Descriptor;
Name : out Temp_File_Name)
is
- function Get_Temp_Name (T : Address) return Address;
- pragma Import (C, Get_Temp_Name, "mktemp");
-
- function Open_New_Temp
- (Name : System.Address;
- Fmode : Mode)
- return File_Descriptor;
- pragma Import (C, Open_New_Temp, "open_new_temp");
+ function Open_New_Temp (T : Address) return File_Descriptor;
+ pragma Import (C, Open_New_Temp, "mkstemp");
begin
Name := "GNAT-XXXXXX" & ASCII.NUL;
-
- -- Check for NULL pointer returned by C
-
- if Get_Temp_Name (Name'Address) = Null_Address then
- FD := -1;
- else
- FD := Open_New_Temp (Name'Address, Binary);
- end if;
+ FD := Open_New_Temp (Name'Address);
end Create_Temp_File;
-----------------

18
lang/gnat/files/patch-an Normal file
View File

@ -0,0 +1,18 @@
--- ada/a-link.c.orig Sat May 6 19:38:57 2000
+++ ada/a-link.c Sat May 6 19:41:09 2000
@@ -149,6 +149,15 @@
unsigned char objlist_file_supported = 0;
unsigned char using_gnu_linker = 0;
+#elif defined (__FreeBSD__)
+char *object_file_option = "";
+char *run_path_option = "";
+char shared_libgnat_default = SHARED;
+int link_max = 2147483647;
+unsigned char objlist_file_supported = 0;
+unsigned char using_gnu_linker = 0;
+char *object_library_extension = ".a";
+
#elif defined (linux)
char *object_file_option = "";
char *run_path_option = "-Wl,-rpath,";

View File

@ -1,7 +1,6 @@
The GNU Ada compiler system built on GCC 2.8.1.
The libraries supplied with this version of GNAT support tasking
with FreeBSD 3.x, and 4.x versions of libc_r.
with FreeBSD 3.x, 4.x, and 5.x versions of libc_r.
Daniel Eischen
eischen@vigrid.com
WWW: http://www.gnat.com/

View File

@ -1,3 +1,5 @@
@exec /sbin/ldconfig -m %D/lib
@unexec /sbin/ldconfig -R
bin/adagcc
bin/adagcov
bin/gnat
@ -27,6 +29,8 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-charac.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-chlat1.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colien.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colien.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colire.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colire.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-comlin.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-comlin.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-cwila1.ads
@ -38,7 +42,6 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-direio.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-direio.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-dynpri.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-dynpri.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-emstop.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-except.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-except.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-excpol.adb
@ -136,6 +139,8 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-stwiun.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-suteio.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-suteio.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-swmwco.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-swuwti.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-swuwti.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-sytaco.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-sytaco.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-tags.adb
@ -225,15 +230,23 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-busora.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-busora.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-busorg.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-busorg.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-calend.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-calend.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-casuti.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-casuti.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-catiio.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-catiio.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-comlin.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-comlin.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-curexc.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debpoo.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debpoo.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debuti.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debuti.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dirope.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dirope.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-except.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-flocon.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-hesora.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-hesora.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-hesorg.adb
@ -296,6 +309,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-os2syn.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-os2thr.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-pacdec.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-pacdec.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-vxwork.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/interfac.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/ioexcept.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/machcode.ads
@ -314,8 +328,6 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-auxdec.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-bitops.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-bitops.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-chepoo.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-debpoo.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-debpoo.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-direio.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-direio.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-errrep.adb
@ -405,6 +417,8 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-io.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-maccod.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mantis.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mantis.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mastop.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mastop.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osinte.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osinte.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osprim.adb
@ -579,8 +593,6 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taprop.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taprop.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tarest.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tarest.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasabo.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasabo.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasdeb.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasdeb.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasinf.adb
@ -589,10 +601,6 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasini.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasini.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taskin.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taskin.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasoli.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasoli.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taspda.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taspda.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taspri.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasque.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasque.ads
@ -614,6 +622,8 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tpobop.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tpopsp.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tposen.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tposen.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-traceb.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-traceb.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-unstyp.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.ads
@ -684,6 +694,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-chahan.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-charac.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-chlat1.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-colien.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-colire.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-comlin.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-cwila1.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-decima.ali
@ -748,6 +759,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-stwise.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-stwiun.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-suteio.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-swmwco.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-swuwti.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-sytaco.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-tags.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-taside.ali
@ -776,11 +788,16 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-wttest.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/ada.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/calendar.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-busora.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-calend.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-casuti.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-catiio.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-comlin.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-curexc.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-debpoo.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-debuti.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-dirope.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-except.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-flocon.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-hesora.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-htable.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-io.ali
@ -809,7 +826,12 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/i-fortra.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/i-pacdec.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/interfac.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/ioexcept.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnarl.a
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnarl.so
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnarl.so.%%SHARED_MAJOR%%
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnat.a
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnat.so
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnat.so.%%SHARED_MAJOR%%
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/machcode.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-addima.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-arit64.ali
@ -818,7 +840,6 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-asthan.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-auxdec.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-bitops.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-chepoo.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-debpoo.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-direio.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-errrep.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-except.ali
@ -875,6 +896,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-intman.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-io.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-maccod.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-mantis.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-mastop.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-osinte.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-osprim.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-pack03.ali
@ -963,7 +985,6 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-taenca.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-taprob.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-taprop.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tarest.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasabo.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasdeb.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasinf.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasini.ali
@ -979,6 +1000,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tpinop.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tpoben.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tpobop.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tposen.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-traceb.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-unstyp.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-vaflop.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-valboo.ali
@ -1025,6 +1047,8 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/cpp
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/gnat1
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/libgcc.a
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/specs
lib/libgnat-%%LIBRARY_VERSION%%.so.%%SHARED_MAJOR%%
lib/libgnarl-%%LIBRARY_VERSION%%.so.%%SHARED_MAJOR%%
%%GNUHOST%%/include/assert.h
@dirrm lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude
@dirrm lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib