1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-13 07:34:50 +00:00

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. # using symbolic links.
PORTNAME= gnat PORTNAME= gnat
PORTVERSION= 3.12p PORTVERSION= 3.13p
CATEGORIES= lang CATEGORIES= lang
MASTER_SITES= ftp://cs.nyu.edu/pub/gnat/ \ MASTER_SITES= ftp://cs.nyu.edu/pub/gnat/${PORTVERSION}/ \
${MASTER_SITE_GNU} ${MASTER_SITE_LOCAL} ${MASTER_SITE_GNU}
DISTNAME= gcc-2.8.1 MASTER_SITE_SUBDIR= gcc
DISTFILES= gnat-3.12p-src.tar.gz gcc-2.8.1.tar.gz DISTFILES= ${GNATNAME}.tgz gcc-2.8.1.tar.gz
MAINTAINER= eischen@vigrid.com MAINTAINER= eischen@vigrid.com
.include <bsd.port.pre.mk> .include <bsd.port.pre.mk>
WRKSRC= ${WRKDIR}/gcc-2.8.1
GNATNAME= gnat-${PORTVERSION}-src
GNUHOST= ${ARCH}-unknown-freebsd${OSREL} GNUHOST= ${ARCH}-unknown-freebsd${OSREL}
GCC_VERSION= 2.8.1 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. # Make no mistake about what host/target we are building on/for.
# This package does not support cross-compiling, and this fixes # This package does not support cross-compiling, and this fixes
# problems with bsd.port.mk files from earlier FreeBSD 3.x releases. # problems with bsd.port.mk files from earlier FreeBSD 3.x releases.
@ -38,12 +43,12 @@ GNU_CONFIGURE= yes
USE_GMAKE= yes USE_GMAKE= yes
MAN1= adagcc.1 cccp.1 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 # 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 # 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. # 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 .ifdef PREFIX
have_boot!= if [ -x ${PREFIX}/bin/adagcc -a -x ${PREFIX}/bin/gnatbind ]; then \ have_boot!= if [ -x ${PREFIX}/bin/adagcc -a -x ${PREFIX}/bin/gnatbind ]; then \
${ECHO} "${PREFIX}/bin"; \ ${ECHO} "${PREFIX}/bin"; \
@ -54,8 +59,8 @@ have_boot!= if [ -x ${PREFIX}/bin/adagcc -a -x ${PREFIX}/bin/gnatbind ]; then \
have_boot= have_boot=
.endif .endif
.if empty(have_boot) .if empty(have_boot)
have_boot!= if [ -x /usr/local/bin/adagcc -a -x /usr/local/bin/gnatbind ]; then \ have_boot!= if [ -x {LOCALBASE}/bin/adagcc -a -x {LOCALBASE}/bin/gnatbind ]; then \
${ECHO} "/usr/local/bin"; \ ${ECHO} "{LOCALBASE}/bin"; \
else \ else \
${ECHO} ""; \ ${ECHO} ""; \
fi fi
@ -86,7 +91,7 @@ BROKEN= "Cannot build with or for an aout compiler."
.endif .endif
.if empty(have_boot) .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. # Warning! You need the trailing slash on GCC_EXEC_PREFIX.
COMPILEDATA= GCC_EXEC_PREFIX=${WRKDIR}/adaboot/lib/gcc-lib/ \ COMPILEDATA= GCC_EXEC_PREFIX=${WRKDIR}/adaboot/lib/gcc-lib/ \
ADA_INCLUDE_PATH=${WRKDIR}/adaboot/lib/gcc-lib/adainclude \ ADA_INCLUDE_PATH=${WRKDIR}/adaboot/lib/gcc-lib/adainclude \
@ -95,9 +100,21 @@ have_boot= ${WRKDIR}/adaboot
.endif .endif
# Make sure we use the Ada-aware gcc compiler. # Make sure we use the Ada-aware gcc compiler.
CC = adagcc CC = adagcc
CONFIGURE_ENV= ${COMPILE_DATA} PATH=${have_boot}/bin:$$PATH 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 # Account for signal set changes
.if ${OSVERSION} > 400010 .if ${OSVERSION} > 400010
SIGSET_WORDS= 4 SIGSET_WORDS= 4
@ -108,14 +125,16 @@ SIGACTION= old_struct_sigaction
.endif .endif
pre-patch: pre-patch:
@${MV} ${WRKSRC}/config/i386/freebsd.h ${WRKSRC}/config/i386/freebsd-aout.h @if [ ! -f ${WRKSRC}/config/i386/freebsd-aout.h ]; then \
@${MV} ${WRKSRC}/config/i386/freebsd-elf.h ${WRKSRC}/config/i386/freebsd.h ${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}" @${ECHO} "===> Applying FreeBSD patches to gcc for ${DISTNAME}"
-( ${PATCH} ${PATCH_ARGS} < ${FILESDIR}/freebsdgcc28-patches ) -( ${PATCH} ${PATCH_ARGS} < ${FILESDIR}/freebsdgcc28-patches )
@${ECHO} "===> Patching gcc for ${DISTNAME}" @${ECHO} "===> Patching gcc for ${GNATNAME}"
-( ${PATCH} ${PATCH_ARGS} < ${WRKDIR}/gnat-3.12p-src/src/gcc-281.dif ) -( ${PATCH} ${PATCH_ARGS} < ${WRKDIR}/${GNATNAME}/src/gcc-281.dif )
@${ECHO} "===> Copying GNAT compiler sources into GCC tree." @${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" @${ECHO} "===> Making way for FreeBSD GNAT support files"
-( ${RM} -f ${WRKSRC}/ada/[45]f* ) -( ${RM} -f ${WRKSRC}/ada/[45]f* )
@ -149,23 +168,40 @@ do-configure:
# #
# We intentionally override CFLAGS because the build procedure is explicitly # 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 target at your own risk.
# #
do-build: do-build:
(cd ${WRKSRC}; \ (cd ${WRKSRC}; \
PATH=${have_boot}/bin:$$PATH \ 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}; \ (cd ${WRKSRC}; \
${GMAKE} CFLAGS="-O2" LANGUAGES="c ada gcov" bootstrap ) ${GMAKE} CFLAGS="${GNATCFLAGS}" LANGUAGES="c ada gcov" bootstrap )
(cd ${WRKSRC}; \ (cd ${WRKSRC}; \
${GMAKE} CFLAGS="-O2" gnattools ) ${GMAKE} CFLAGS="${GNATCFLAGS}" gnattools )
(cd ${WRKSRC}; \ (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: do-install:
(cd ${WRKSRC}; \ (cd ${WRKSRC}; \
${GMAKE} CC="${CC}" LANGUAGES="c ada gcov" ${INSTALL_TARGET} ) ${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: post-install:
@(for prog in ${PREFIX}/bin/adagcc \ @(for prog in ${PREFIX}/bin/adagcc \
@ -193,13 +229,7 @@ post-install:
fi \ fi \
done) done)
@(${TOUCH} ${TOUCH_FLAGS} ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION}/include/float.h) @(${TOUCH} ${TOUCH_FLAGS} ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION}/include/float.h)
@(${CHOWN} -R bin:bin ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION}) @(chown -R bin:bin ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION})
@(${ECHO} "-----------------------------------------------------------" ) ${LDCONFIG} -m ${PREFIX}/lib
@(${ECHO} "" )
@(${ECHO} "For information about using the tasking library please read" )
@(${ECHO} "the README.Tasking file" )
@(${ECHO} "" )
@(${ECHO} "-----------------------------------------------------------" )
@(${ECHO} "" )
.include <bsd.port.post.mk> .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 (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; (signo : Signal;
code : Interfaces.C.int; code : Interfaces.C.int;
context : access struct_sigcontext) is context : access struct_sigcontext) is
Result : Interfaces.C.int;
begin 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 Result := pthread_sigmask (SIG_UNBLOCK, Signal_Mask'Access, null);
-- exception handler on the runtime stack, we are safe. The original pragma Assert (Result = 0);
-- 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.
-- Check that treatment of exception propagation here -- Check that treatment of exception propagation here
-- is consistent with treatment of the abort signal in -- is consistent with treatment of the abort signal in
@ -147,20 +147,23 @@ begin
begin begin
Abort_Task_Interrupt := SIGABRT; Abort_Task_Interrupt := SIGADAABORT;
-- Change this if you want to use another signal for task abort. -- Change this if you want to use another signal for task abort.
-- SIGTERM might be a good one. -- SIGTERM might be a good one.
act.sa_handler := Notify_Exception'Address; act.sa_handler := Notify_Exception'Address;
act.sa_flags := 16#010#; act.sa_flags := 0;
-- 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. -- 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 -- This is a temporary fix to the problem that the Signal_Mask is
-- not restored after the exception (longjmp) from the handler. -- not restored after the exception (longjmp) from the handler.
-- The right fix should be made in sigsetjmp so that we save -- The right fix should be made in sigsetjmp so that we save
-- the Signal_Set and restore it after a longjmp. -- 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); Result := sigemptyset (Signal_Mask'Access);
pragma Assert (Result = 0); pragma Assert (Result = 0);
@ -184,8 +187,6 @@ begin
end loop; end loop;
Keep_Unmasked (Abort_Task_Interrupt) := True; 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 -- By keeping SIGINT unmasked, allow the user to do a Ctrl-C, but in the
-- same time, disable the ability of handling this signal -- same time, disable the ability of handling this signal
@ -195,24 +196,19 @@ begin
if Unreserve_All_Interrupts = 0 then if Unreserve_All_Interrupts = 0 then
Keep_Unmasked (SIGINT) := True; Keep_Unmasked (SIGINT) := True;
else
Keep_Unmasked (SIGINT) := False;
end if; end if;
-- FreeBSD uses SIGINFO to dump thread status to stdout. If for I in Unmasked'Range loop
-- the user really wants to attach his own handler, let him. Keep_Unmasked (Interrupt_ID (Unmasked (I))) := True;
end loop;
-- FreeBSD pthreads uses setitimer/getitimer for thread scheduling. Reserve := Keep_Unmasked or Keep_Masked;
-- 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 := 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 -- We do not have Signal 0 in reality. We just use this value
-- to identify non-existent signals (see s-intnam.ads). Therefore, -- to identify non-existent signals (see s-intnam.ads). Therefore,
-- Signal 0 should not be used in all signal related operations hence -- Signal 0 should not be used in all signal related operations hence

View File

@ -54,18 +54,18 @@
-- __ARCH = I386 -- __ARCH = I386
-- __OS = FREEBSD -- __OS = FREEBSD
-- __HAS_SIGCONTEXT = 1 -- __HAS_SIGCONTEXT = 1
-- __HAS_UCONTEXT = 0 -- __HAS_UCONTEXT = 1
-- __THREADS = POSIX_THREADS -- __THREADS = POSIX_THREADS
-- __THREAD_VARIANT = ?? -- __THREAD_VARIANT = ??
-- __HAS_TIMESPEC = 1 -- __HAS_TIMESPEC = 1
-- __HAS_NANOSLEEP = 1 -- __HAS_NANOSLEEP = 1
-- __HAS_CLOCK_GETTIME = 0 -- __HAS_CLOCK_GETTIME = 1
-- __HAS_GETTIMEOFDAY = 1 -- __HAS_GETTIMEOFDAY = 1
-- __POSIX_THREAD_PRIO_PROTECT = 0 -- __POSIX_THREAD_PRIO_PROTECT = 1
-- __POSIX_THREAD_PRIO_INHERIT = 0 -- __POSIX_THREAD_PRIO_INHERIT = 1
-- __POSIX_THREAD_ATTR_STACKADDR = 1 -- __POSIX_THREAD_ATTR_STACKADDR = 1
-- __POSIX_THREAD_ATTR_STACKSIZE = 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 -- This package encapsulates all direct interfaces to OS services
-- that are needed by children of System. -- that are needed by children of System.
@ -192,6 +192,22 @@ package System.OS_Interface is
SIGUSR1 : constant := 30; -- user defined signal 1 SIGUSR1 : constant := 30; -- user defined signal 1
SIGUSR2 : constant := 31; -- user defined signal 2 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; type sigset_t is private;
function sigaddset function sigaddset
@ -239,7 +255,7 @@ package System.OS_Interface is
end record; end record;
pragma Convention (C, new_struct_sigaction); 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; type struct_sigaction_ptr is access all struct_sigaction;
@ -268,7 +284,7 @@ package System.OS_Interface is
-- Time -- -- 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) -- Indicates wether time slicing is supported (i.e SCHED_RR is supported)
type timespec is private; type timespec is private;
@ -321,10 +337,6 @@ package System.OS_Interface is
-- Priority Scheduling -- -- Priority Scheduling --
------------------------- -------------------------
MIN_PRIO : constant := 0;
MAX_PRIO : constant := 126;
DEFAULT_PRIO : constant := 64;
SCHED_FIFO : constant := 1; SCHED_FIFO : constant := 1;
SCHED_OTHER : constant := 2; SCHED_OTHER : constant := 2;
SCHED_RR : constant := 3; SCHED_RR : constant := 3;
@ -371,7 +383,7 @@ package System.OS_Interface is
-- Stack -- -- Stack --
----------- -----------
Stack_Base_Available : constant boolean := False; Stack_Base_Available : constant Boolean := False;
-- Indicates wether the stack base is available on this target. -- Indicates wether the stack base is available on this target.
-- This allows us to share s-osinte.adb between all the FSU run time. -- 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 -- 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; return int;
pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); 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 -- -- POSIX.1c Section 13 --
---------------------------- ----------------------------
@ -721,7 +736,7 @@ package System.OS_Interface is
private 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 -- In FreeBSD the component sa_handler turns out to
-- be one a union type, and the selector is a macro: -- 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 -- -- 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 -- -- 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- -- -- 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 -- This is the FreeBSD PTHREADS version of this package. Contributed
-- by Daniel M. Eischen (eischen@vigrid.com). -- 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); pragma Polling (Off);
-- Turn off polling, we do not want ATC polling to take place during -- Turn off polling, we do not want ATC polling to take place during
-- tasking operations. It causes infinite loops and other problems. -- 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.Parameters;
use System.OS_Primitives; use System.OS_Primitives;
package TSL renames System.Soft_Links; package SSL renames System.Soft_Links;
pragma Linker_Options ("-pthread"); pragma Linker_Options ("-pthread");
@ -103,7 +113,7 @@ package body System.Task_Primitives.Operations is
-- at run time. -- at run time.
All_Tasks_L : aliased System.Task_Primitives.RTS_Lock; 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; Environment_Task_ID : Task_ID;
-- A variable to hold Task_ID for the environment task. -- 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; Unblocked_Signal_Mask : aliased sigset_t;
-- The set of signals that should unblocked in all tasks -- 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; Next_Serial_Number : Task_Serial_Number := 100;
-- We start at 100, to reserve some special values for -- We start at 100, to reserve some special values for
-- using in error checking. -- 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); function To_Address is new Unchecked_Conversion (Task_ID, System.Address);
-------------------- --------------------
-- Local Packages -- -- Local Packages --
-------------------- --------------------
@ -245,7 +259,7 @@ package body System.Task_Primitives.Operations is
procedure Stack_Guard (T : ST.Task_ID; On : Boolean) 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; Guard_Page_Address : Address;
Res : Interfaces.C.int; 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 function Get_Thread_Id (T : ST.Task_ID) return OSI.Thread_Id is
begin begin
return T.LL.Thread; return T.Common.LL.Thread;
end Get_Thread_Id; end Get_Thread_Id;
---------- ----------
@ -306,7 +320,7 @@ package body System.Task_Primitives.Operations is
pragma Assert (Result = 0 or else Result = ENOMEM); pragma Assert (Result = 0 or else Result = ENOMEM);
if Result = ENOMEM then if Result = ENOMEM then
raise STORAGE_ERROR; raise Storage_Error;
end if; end if;
Result := pthread_mutexattr_setprotocol 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 -- Convert the Ada priority to be based around the default
-- system priority. -- system priority.
Adjusted_Prio := Interfaces.C.int (Prio) - 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 Result := pthread_mutexattr_setprioceiling
(Attributes'Access, Interfaces.C.int (Adjusted_Prio)); (Attributes'Access, Adjusted_Prio);
pragma Assert (Result = 0); pragma Assert (Result = 0);
Result := pthread_mutex_init (L, Attributes'Access); Result := pthread_mutex_init (L, Attributes'Access);
pragma Assert (Result = 0 or else Result = ENOMEM); pragma Assert (Result = 0 or else Result = ENOMEM);
if Result = ENOMEM then if Result = ENOMEM then
raise STORAGE_ERROR; raise Storage_Error;
end if; end if;
Result := pthread_mutexattr_destroy (Attributes'Access); 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); pragma Assert (Result = 0 or else Result = ENOMEM);
if Result = ENOMEM then if Result = ENOMEM then
raise STORAGE_ERROR; raise Storage_Error;
end if; end if;
-- Convert the Ada priority to be based around the default -- Convert the Ada priority to be based around the default
-- system priority. -- system priority.
Adjusted_Prio := Interfaces.C.int (System.Any_Priority'Last) - 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 Result := pthread_mutexattr_setprotocol
(Attributes'Access, PTHREAD_PRIO_PROTECT); (Attributes'Access, PTHREAD_PRIO_PROTECT);
pragma Assert (Result = 0); pragma Assert (Result = 0);
Result := pthread_mutexattr_setprioceiling Result := pthread_mutexattr_setprioceiling
(Attributes'Access, Interfaces.C.int (Adjusted_Prio)); (Attributes'Access, Adjusted_Prio);
pragma Assert (Result = 0);
Result := pthread_mutexattr_setprioceiling
(Attributes'Access, Interfaces.C.int (Adjusted_Prio));
pragma Assert (Result = 0); pragma Assert (Result = 0);
Result := pthread_mutex_init (L, Attributes'Access); Result := pthread_mutex_init (L, Attributes'Access);
pragma Assert (Result = 0 or else Result = ENOMEM); pragma Assert (Result = 0 or else Result = ENOMEM);
if Result = ENOMEM then if Result = ENOMEM then
raise STORAGE_ERROR; raise Storage_Error;
end if; end if;
Result := pthread_mutexattr_destroy (Attributes'Access); Result := pthread_mutexattr_destroy (Attributes'Access);
@ -420,9 +427,10 @@ package body System.Task_Primitives.Operations is
end Write_Lock; end Write_Lock;
procedure Write_Lock (T : Task_ID) is procedure Write_Lock (T : Task_ID) is
Result : Interfaces.C.int; Result : Interfaces.C.int;
begin begin
Result := pthread_mutex_lock (T.LL.L'Access); Result := pthread_mutex_lock (T.Common.LL.L'Access);
pragma Assert (Result = 0); pragma Assert (Result = 0);
end Write_Lock; end Write_Lock;
@ -456,9 +464,10 @@ package body System.Task_Primitives.Operations is
end Unlock; end Unlock;
procedure Unlock (T : Task_ID) is procedure Unlock (T : Task_ID) is
Result : Interfaces.C.int; Result : Interfaces.C.int;
begin begin
Result := pthread_mutex_unlock (T.LL.L'Access); Result := pthread_mutex_unlock (T.Common.LL.L'Access);
pragma Assert (Result = 0); pragma Assert (Result = 0);
end Unlock; end Unlock;
@ -468,17 +477,16 @@ package body System.Task_Primitives.Operations is
procedure Sleep (Self_ID : Task_ID; procedure Sleep (Self_ID : Task_ID;
Reason : System.Tasking.Task_States) is Reason : System.Tasking.Task_States) is
Result : Interfaces.C.int; Result : Interfaces.C.int;
begin begin
pragma Assert (Self_ID = Self); 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. -- EINTR is not considered a failure.
pragma Assert (Result = 0 or else Result = EINTR); pragma Assert (Result = 0 or else Result = EINTR);
end Sleep; end Sleep;
----------------- -----------------
@ -493,15 +501,15 @@ package body System.Task_Primitives.Operations is
(Self_ID : Task_ID; (Self_ID : Task_ID;
Time : Duration; Time : Duration;
Mode : ST.Delay_Modes; Mode : ST.Delay_Modes;
Reason : System.Tasking.Task_States; Reason : Task_States;
Timedout : out Boolean; Timedout : out Boolean;
Yielded : out Boolean) Yielded : out Boolean)
is is
Check_Time : constant Duration := Clock;
Check_Time : constant Duration := Clock; Rel_Time : Duration;
Abs_Time : Duration; Abs_Time : Duration;
Request : aliased timespec; Request : aliased timespec;
Result : Interfaces.C.int; Result : Interfaces.C.int;
begin begin
Timedout := True; Timedout := True;
@ -509,18 +517,32 @@ package body System.Task_Primitives.Operations is
if Mode = Relative then if Mode = Relative then
Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + 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 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; end if;
if Abs_Time > Check_Time then 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 loop
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
or else Self_ID.Pending_Priority_Change; or else Self_ID.Pending_Priority_Change;
Result := pthread_cond_timedwait Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
(Self_ID.LL.CV'Access, Self_ID.LL.L'Access, Request'Access); Self_ID.Common.LL.L'Access, Request'Access);
exit when Abs_Time <= Clock; exit when Abs_Time <= Clock;
@ -550,41 +572,55 @@ package body System.Task_Primitives.Operations is
Time : Duration; Time : Duration;
Mode : ST.Delay_Modes) Mode : ST.Delay_Modes)
is 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 begin
-- Only the little window between deferring abort and -- Only the little window between deferring abort and
-- locking Self_ID is the reason we need to -- locking Self_ID is the reason we need to
-- check for pending abort and priority change below! :( -- check for pending abort and priority change below! :(
TSL.Abort_Defer.all; SSL.Abort_Defer.all;
Write_Lock (Self_ID); Write_Lock (Self_ID);
if Mode = Relative then 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 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; end if;
if Abs_Time > Check_Time then if Abs_Time > Check_Time then
Request := To_Timespec (Abs_Time); if Relative_Timed_Wait then
Self_ID.State := Delay_Sleep; Request := To_Timespec (Rel_Time);
else
Request := To_Timespec (Abs_Time);
end if;
Self_ID.Common.State := Delay_Sleep;
loop loop
if Self_ID.Pending_Priority_Change then if Self_ID.Pending_Priority_Change then
Self_ID.Pending_Priority_Change := False; Self_ID.Pending_Priority_Change := False;
Self_ID.Base_Priority := Self_ID.New_Base_Priority; Self_ID.Common.Base_Priority := Self_ID.New_Base_Priority;
Set_Priority (Self_ID, Self_ID.Base_Priority); Set_Priority (Self_ID, Self_ID.Common.Base_Priority);
end if; end if;
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level; exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
Result := pthread_cond_timedwait Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
(Self_ID.LL.CV'Access, Self_ID.LL.L'Access, Request'Access); Self_ID.Common.LL.L'Access, Request'Access);
exit when Abs_Time <= Clock; exit when Abs_Time <= Clock;
pragma Assert (Result = 0 pragma Assert (Result = 0
@ -592,12 +628,12 @@ package body System.Task_Primitives.Operations is
or else Result = EINTR); or else Result = EINTR);
end loop; end loop;
Self_ID.State := Runnable; Self_ID.Common.State := Runnable;
end if; end if;
Unlock (Self_ID); Unlock (Self_ID);
Result := sched_yield; Result := sched_yield;
TSL.Abort_Undefer.all; SSL.Abort_Undefer.all;
end Timed_Delay; end Timed_Delay;
----------- -----------
@ -632,7 +668,7 @@ package body System.Task_Primitives.Operations is
Result : Interfaces.C.int; Result : Interfaces.C.int;
begin begin
Result := pthread_cond_signal (T.LL.CV'Access); Result := pthread_cond_signal (T.Common.LL.CV'Access);
pragma Assert (Result = 0); pragma Assert (Result = 0);
end Wakeup; end Wakeup;
@ -662,19 +698,19 @@ package body System.Task_Primitives.Operations is
Param : aliased struct_sched_param; Param : aliased struct_sched_param;
begin begin
T.LL.Current_Priority := Interfaces.C.int (Prio); T.Common.Current_Priority := Prio;
-- Convert the Ada priority to be based around the default -- Convert the Ada priority to be based around the default
-- system priority. -- 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); Interfaces.C.int (System.Default_Priority);
if Time_Slice_Supported and then Time_Slice_Val > 0 then if Time_Slice_Supported and then Time_Slice_Val > 0 then
Result := pthread_setschedparam Result := pthread_setschedparam
(T.LL.Thread, SCHED_RR, Param'Access); (T.Common.LL.Thread, SCHED_RR, Param'Access);
else else
Result := pthread_setschedparam Result := pthread_setschedparam
(T.LL.Thread, SCHED_FIFO, Param'Access); (T.Common.LL.Thread, SCHED_FIFO, Param'Access);
end if; end if;
pragma Assert (Result = 0); 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 function Get_Priority (T : Task_ID) return System.Any_Priority is
begin begin
return System.Any_Priority (T.LL.Current_Priority); return T.Common.Current_Priority;
end Get_Priority; end Get_Priority;
---------------- ----------------
@ -695,7 +731,7 @@ package body System.Task_Primitives.Operations is
procedure Enter_Task (Self_ID : Task_ID) is procedure Enter_Task (Self_ID : Task_ID) is
begin begin
Self_ID.LL.Thread := pthread_self; Self_ID.Common.LL.Thread := pthread_self;
Specific.Set (Self_ID); 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 -- Convert the Ada priority to be based around the default
-- system priority. -- system priority.
Adjusted_Prio := Interfaces.C.int (System.Any_Priority'Last) - 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 Result := pthread_mutexattr_setprotocol
(Mutex_Attr'Access, PTHREAD_PRIO_PROTECT); (Mutex_Attr'Access, PTHREAD_PRIO_PROTECT);
pragma Assert (Result = 0); pragma Assert (Result = 0);
Result := pthread_mutexattr_setprioceiling Result := pthread_mutexattr_setprioceiling
(Mutex_Attr'Access, Interfaces.C.int (Adjusted_Prio)); (Mutex_Attr'Access, Adjusted_Prio);
pragma Assert (Result = 0); 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); pragma Assert (Result = 0 or else Result = ENOMEM);
if Result /= 0 then if Result /= 0 then
@ -767,31 +804,35 @@ package body System.Task_Primitives.Operations is
return; return;
end if; 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); Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
pragma Assert (Result = 0); 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; Succeeded := True;
end Initialize_TCB; end Initialize_TCB;
@ -806,8 +847,6 @@ package body System.Task_Primitives.Operations is
Priority : System.Any_Priority; Priority : System.Any_Priority;
Succeeded : out Boolean) Succeeded : out Boolean)
is is
use System.Task_Info;
Attributes : aliased pthread_attr_t; Attributes : aliased pthread_attr_t;
Adjusted_Stack_Size : Interfaces.C.size_t; Adjusted_Stack_Size : Interfaces.C.size_t;
Result : Interfaces.C.int; Result : Interfaces.C.int;
@ -815,12 +854,15 @@ package body System.Task_Primitives.Operations is
function Thread_Body_Access is new function Thread_Body_Access is new
Unchecked_Conversion (System.Address, Thread_Body); Unchecked_Conversion (System.Address, Thread_Body);
use System.Task_Info;
begin begin
if Stack_Size = Unspecified_Size then if Stack_Size = Unspecified_Size then
Adjusted_Stack_Size := Interfaces.C.size_t (Default_Stack_Size); Adjusted_Stack_Size := Interfaces.C.size_t (Default_Stack_Size);
elsif Stack_Size < Minimum_Stack_Size then elsif Stack_Size < Minimum_Stack_Size then
Adjusted_Stack_Size := Interfaces.C.size_t (Minimum_Stack_Size); Adjusted_Stack_Size := Interfaces.C.size_t (Minimum_Stack_Size);
else else
Adjusted_Stack_Size := Interfaces.C.size_t (Stack_Size); Adjusted_Stack_Size := Interfaces.C.size_t (Stack_Size);
end if; end if;
@ -849,7 +891,7 @@ package body System.Task_Primitives.Operations is
pragma Assert (Result = 0); pragma Assert (Result = 0);
Result := pthread_attr_setstacksize Result := pthread_attr_setstacksize
(Attributes'Access, Interfaces.C.size_t (Adjusted_Stack_Size)); (Attributes'Access, Adjusted_Stack_Size);
pragma Assert (Result = 0); pragma Assert (Result = 0);
if Time_Slice_Supported and then Time_Slice_Val > 0 then 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. -- All tasks in RTS will have All_Tasks_Mask initially.
Result := pthread_create Result := pthread_create
(T.LL.Thread'Access, (T.Common.LL.Thread'Access,
Attributes'Access, Attributes'Access,
Thread_Body_Access (Wrapper), Thread_Body_Access (Wrapper),
To_Address (T)); To_Address (T));
pragma Assert (Result = 0 or else Result = EAGAIN); pragma Assert (Result = 0 or else Result = EAGAIN);
if Result /= 0 then Succeeded := Result = 0;
Result := pthread_attr_destroy (Attributes'Access);
Succeeded := false;
return;
end if;
Succeeded := true; if T.Common.Task_Image /= null then
if T.Task_Image /= null then
declare declare
Name : aliased string (1 .. T.Task_Image.all'Length + 1); Name : aliased String (1 .. T.Common.Task_Image.all'Length + 1);
begin begin
Name := T.Task_Image.all & Ascii.Nul; Name := T.Common.Task_Image.all & ASCII.Nul;
Result := pthread_set_name_np (T.LL.Thread, Name'Address); Result := pthread_set_name_np (T.Common.LL.Thread, Name'Address);
end; end;
end if; end if;
@ -911,10 +947,10 @@ package body System.Task_Primitives.Operations is
Unchecked_Deallocation (Ada_Task_Control_Block, Task_ID); Unchecked_Deallocation (Ada_Task_Control_Block, Task_ID);
begin begin
Result := pthread_mutex_destroy (T.LL.L'Access); Result := pthread_mutex_destroy (T.Common.LL.L'Access);
pragma Assert (Result = 0); 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); pragma Assert (Result = 0);
if T.Known_Tasks_Index /= -1 then if T.Known_Tasks_Index /= -1 then
@ -941,7 +977,7 @@ package body System.Task_Primitives.Operations is
Result : Interfaces.C.int; Result : Interfaces.C.int;
begin begin
Result := pthread_kill (T.LL.Thread, Result := pthread_kill (T.Common.LL.Thread,
Signal (System.Interrupt_Management.Abort_Task_Interrupt)); Signal (System.Interrupt_Management.Abort_Task_Interrupt));
pragma Assert (Result = 0); pragma Assert (Result = 0);
end Abort_Task; end Abort_Task;
@ -1025,9 +1061,6 @@ package body System.Task_Primitives.Operations is
old_act : aliased struct_sigaction; old_act : aliased struct_sigaction;
Tmp_Set : aliased sigset_t; Tmp_Set : aliased sigset_t;
Result : Interfaces.C.int; Result : Interfaces.C.int;
Policy : aliased Interfaces.C.int;
param : aliased struct_sched_param;
My_Tid : pthread_t;
begin begin
Environment_Task_ID := Environment_Task; Environment_Task_ID := Environment_Task;
@ -1056,26 +1089,16 @@ package body System.Task_Primitives.Operations is
old_act'Unchecked_Access); old_act'Unchecked_Access);
pragma Assert (Result = 0); 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; end Initialize;
begin begin
declare declare
Result : Interfaces.C.int; Result : Interfaces.C.int;
My_Tid : pthread_t;
Param : aliased struct_sched_param;
Policy : aliased Interfaces.C.int;
begin begin
-- Mask Environment task for all signals. The original mask of the -- Mask Environment task for all signals. The original mask of the
-- Environment task will be recovered by Interrupt_Server task -- Environment task will be recovered by Interrupt_Server task
-- during the elaboration of s-interr.adb. -- during the elaboration of s-interr.adb.
@ -1094,6 +1117,14 @@ begin
pragma Assert (Result = 0); pragma Assert (Result = 0);
end if; end if;
end loop; 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;
end System.Task_Primitives.Operations; 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.orig Wed Jul 19 15:08:56 2000
--- ./ada/Makefile.in Tue Nov 2 10:53:14 1999 --- ada/Makefile.in Sun Oct 15 01:09:35 2000
*************** ***************
*** 909,914 **** *** 976,981 ****
--- 909,927 ---- --- 976,1002 ----
endif endif
endif endif
@ -11,14 +11,39 @@
+ a-intnam.ads<4fintnam.ads \ + a-intnam.ads<4fintnam.ads \
+ s-inmaop.adb<7sinmaop.adb \ + s-inmaop.adb<7sinmaop.adb \
+ s-intman.adb<5fintman.adb \ + s-intman.adb<5fintman.adb \
+ s-mastop.adb<5omastop.adb \
+ s-osinte.adb<5fosinte.adb \ + s-osinte.adb<5fosinte.adb \
+ s-osinte.ads<5fosinte.ads \ + s-osinte.ads<5fosinte.ads \
+ s-osprim.adb<7sosprim.adb \ + s-osprim.adb<7sosprim.adb \
+ s-taprop.adb<5ftaprop.adb \ + s-taprop.adb<5ftaprop.adb \
+ s-taspri.ads<5ftaspri.ads \ + s-taspri.ads<7staspri.ads \
+ s-tpopsp.adb<7stpopsp.adb + 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 + endif
+ +
ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),) 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.orig Wed Jul 19 15:09:57 2000
--- ./ada/a-init.c Mon Jun 26 21:43:54 2000 --- ada/a-init.c Fri Oct 13 11:25:52 2000
*************** ***************
*** 1445,1450 **** *** 1441,1446 ****
--- 1445,1532 ---- --- 1441,1528 ----
} }
@ -80,11 +80,11 @@
+ { + {
+ __gnat_install_handler (); + __gnat_install_handler ();
+ +
+ /* XXX - Initialize floating-point coprocessor. This call is + /* XXX - Initialize floating-point coprocessor. This call is
+ needed because FreeBSD defaults to 53-bit precision instead + needed because FreeBSD defaults to 64-bit precision instead
+ of 64-bit precision. We require the full precision for + of 80-bit precision? We require the full precision for
+ proper operation, given that we have set Max_Digits etc + proper operation, given that we have set Max_Digits etc
+ with this in mind. */ + with this in mind */
+ __gnat_init_float (); + __gnat_init_float ();
+ } + }
+ +
@ -92,19 +92,19 @@
/* __gnat_initialize (default version) */ /* __gnat_initialize (default version) */
/***************************************/ /***************************************/
*************** ***************
*** 1470,1476 **** *** 1466,1472 ****
defined in all Win32 versions, but only actually does something on WIN32 and could be used under OS/2 */
the i386 version, where it properly initializes the FPU for GNAT use. */
! #if defined (_WIN32) || defined (__INTERIX) #if defined (_WIN32) || defined (__INTERIX) || defined (__EMX__) \
void ! || defined (__Lynx__)
__gnat_init_float ()
{ #define HAVE_GNAT_INIT_FLOAT
--- 1552,1558 ----
defined in all Win32 versions, but only actually does something on --- 1548,1554 ----
the i386 version, where it properly initializes the FPU for GNAT use. */ 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.orig Wed Jul 19 15:09:47 2000
--- ./ada/a-sysdep.c Sat Nov 6 16:27:43 1999 --- ada/a-sysdep.c Fri Oct 13 08:58:43 2000
*************** ***************
*** 235,241 **** *** 236,242 ****
#endif
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \ #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 <termios.h>
#include <fcntl.h> #include <fcntl.h>
#elif defined (VMS) #elif defined (VMS)
--- 235,242 ---- --- 236,242 ----
#endif
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \ #if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
! || (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \ || (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
! || defined (__FreeBSD__) ! || defined (__MACHTEN__) || defined (__FreeBSD__)
#include <termios.h> #include <termios.h>
#include <fcntl.h> #include <fcntl.h>
#elif defined (VMS) #elif defined (VMS)
*************** ***************
*** 285,291 **** *** 286,292 ****
{ {
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \ #if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|| (defined (__osf__) && ! defined (__alpha_vxworks)) \ || (defined (__osf__) && ! defined (__alpha_vxworks)) \
! || defined (__CYGWIN32__) ! || defined (__CYGWIN32__) || defined (__MACHTEN__)
char c; char c;
int nread; int nread;
int good_one = 0; int good_one = 0;
@ -31,16 +30,16 @@
{ {
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \ #if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|| (defined (__osf__) && ! defined (__alpha_vxworks)) \ || (defined (__osf__) && ! defined (__alpha_vxworks)) \
! || defined (__CYGWIN32__) || defined (__FreeBSD__) ! || defined (__CYGWIN32__) || defined (__MACHTEN__) || defined (__FreeBSD__)
char c; char c;
int nread; int nread;
int good_one = 0; int good_one = 0;
*************** ***************
*** 302,308 **** *** 303,309 ****
/* Set RAW mode */ /* Set RAW mode */
termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON; termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON;
#if defined(sgi) || defined (sun) || defined (__EMX__) || defined (__osf__) \ #if defined(sgi) || defined (sun) || defined (__EMX__) || defined (__osf__) \
! || defined (linux) ! || defined (linux) || defined (__MACHTEN__)
eof_ch = termios_rec.c_cc[VEOF]; eof_ch = termios_rec.c_cc[VEOF];
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for /* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
@ -48,7 +47,7 @@
/* Set RAW mode */ /* Set RAW mode */
termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON; termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON;
#if defined(sgi) || defined (sun) || defined (__EMX__) || defined (__osf__) \ #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]; eof_ch = termios_rec.c_cc[VEOF];
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for /* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for

View File

@ -14,7 +14,7 @@
+ +
+ procedure tmpnam (tname : chars) is + procedure tmpnam (tname : chars) is
+ use type System.Address; + 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; + Name : chars;
+ begin + begin
+ Name := C_mktemp (Template'Address); + Name := C_mktemp (Template'Address);
@ -24,8 +24,8 @@
+ end tmpnam; + end tmpnam;
+ +
+ function tmpfile return FILEs is + function tmpfile return FILEs is
+ Name : string (1 .. L_tmpnam) := (others => Ascii.Nul); + Name : String (1 .. L_tmpnam) := (others => ASCII.Nul);
+ Mode : string (1 .. 3) := "w+" & Ascii.Nul; + Mode : String (1 .. 3) := "w+" & ASCII.Nul;
+ begin + begin
+ tmpnam (Name'Address); + tmpnam (Name'Address);
+ return (fopen (Name'Address, Mode'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 GNU Ada compiler system built on GCC 2.8.1.
The libraries supplied with this version of GNAT support tasking 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 WWW: http://www.gnat.com/
eischen@vigrid.com

View File

@ -1,3 +1,5 @@
@exec /sbin/ldconfig -m %D/lib
@unexec /sbin/ldconfig -R
bin/adagcc bin/adagcc
bin/adagcov bin/adagcov
bin/gnat 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-chlat1.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colien.adb 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-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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-comlin.ads lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-comlin.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-cwila1.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-direio.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-dynpri.adb 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-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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-except.ads lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-except.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-excpol.adb 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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-suteio.ads 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-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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-sytaco.ads lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-sytaco.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-tags.adb 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-busora.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-busorg.adb 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-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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-casuti.ads 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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-comlin.ads 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-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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debuti.ads 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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dirope.ads 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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-hesora.ads lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-hesora.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-hesorg.adb 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-os2thr.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-pacdec.adb 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-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/interfac.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/ioexcept.ads lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/ioexcept.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/machcode.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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-bitops.ads 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-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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-direio.ads lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-direio.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-errrep.adb 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-maccod.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mantis.adb 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-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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osinte.ads lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osinte.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osprim.adb 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-taprop.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tarest.adb 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-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.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasdeb.ads lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasdeb.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasinf.adb 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-tasini.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taskin.adb 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-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-taspri.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasque.adb lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasque.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasque.ads 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-tpopsp.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tposen.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-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-unstyp.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.adb lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.ads 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-charac.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-chlat1.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-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-comlin.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-cwila1.ali lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-cwila1.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-decima.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-stwiun.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-suteio.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-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-sytaco.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-tags.ali lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-tags.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-taside.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/ada.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/calendar.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-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-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-comlin.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-curexc.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-debuti.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-dirope.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-hesora.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-htable.ali lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-htable.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-io.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/i-pacdec.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/interfac.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/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.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/machcode.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-addima.ali lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-addima.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-arit64.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-auxdec.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-bitops.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-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-direio.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-errrep.ali lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-errrep.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-except.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-io.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-maccod.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-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-osinte.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-osprim.ali lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-osprim.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-pack03.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-taprob.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-taprop.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-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-tasdeb.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasinf.ali lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasinf.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasini.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-tpoben.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tpobop.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-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-unstyp.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-vaflop.ali lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-vaflop.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-valboo.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%%/gnat1
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/libgcc.a lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/libgcc.a
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/specs 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 %%GNUHOST%%/include/assert.h
@dirrm lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude @dirrm lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude
@dirrm lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib @dirrm lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib