diff options
author | Daniel Eischen <deischen@FreeBSD.org> | 2000-11-01 18:57:03 +0000 |
---|---|---|
committer | Daniel Eischen <deischen@FreeBSD.org> | 2000-11-01 18:57:03 +0000 |
commit | 95df74e9baace796f238694e8060a8aaad78fd95 (patch) | |
tree | e8f734327bbc401fb47599534f5d61283ba60ff4 | |
parent | Update to 1.2.5.1 (diff) |
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.
-rw-r--r-- | lang/gnat/Makefile | 90 | ||||
-rw-r--r-- | lang/gnat/distinfo | 4 | ||||
-rw-r--r-- | lang/gnat/files/5fintman.adb | 46 | ||||
-rw-r--r-- | lang/gnat/files/5fosinte.ads | 41 | ||||
-rw-r--r-- | lang/gnat/files/5fsystem.ads | 242 | ||||
-rw-r--r-- | lang/gnat/files/5ftaprop.adb | 239 | ||||
-rw-r--r-- | lang/gnat/files/patch-ac | 39 | ||||
-rw-r--r-- | lang/gnat/files/patch-ai | 44 | ||||
-rw-r--r-- | lang/gnat/files/patch-aj | 29 | ||||
-rw-r--r-- | lang/gnat/files/patch-al | 6 | ||||
-rw-r--r-- | lang/gnat/files/patch-am | 31 | ||||
-rw-r--r-- | lang/gnat/files/patch-an | 18 | ||||
-rw-r--r-- | lang/gnat/pkg-descr | 5 | ||||
-rw-r--r-- | lang/gnat/pkg-plist | 46 |
14 files changed, 645 insertions, 235 deletions
diff --git a/lang/gnat/Makefile b/lang/gnat/Makefile index c5c308eb34b9..27eadfbe4f46 100644 --- a/lang/gnat/Makefile +++ b/lang/gnat/Makefile @@ -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="${GNATCFLAGS}" LANGUAGES="c ada gcov" bootstrap ) (cd ${WRKSRC}; \ - ${GMAKE} CFLAGS="-O2" LANGUAGES="c ada gcov" bootstrap ) + ${GMAKE} CFLAGS="${GNATCFLAGS}" gnattools ) (cd ${WRKSRC}; \ - ${GMAKE} CFLAGS="-O2" gnattools ) + ${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="-O2" GNATLIBCFLAGS="-O2" gnatlib ) + ${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> diff --git a/lang/gnat/distinfo b/lang/gnat/distinfo index e6d549c68716..c6fc71b06875 100644 --- a/lang/gnat/distinfo +++ b/lang/gnat/distinfo @@ -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 diff --git a/lang/gnat/files/5fintman.adb b/lang/gnat/files/5fintman.adb index 68b22762685f..2dbb0d8aa338 100644 --- a/lang/gnat/files/5fintman.adb +++ b/lang/gnat/files/5fintman.adb @@ -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 diff --git a/lang/gnat/files/5fosinte.ads b/lang/gnat/files/5fosinte.ads index 42f9eedc5ae7..5cb6ce3c62cc 100644 --- a/lang/gnat/files/5fosinte.ads +++ b/lang/gnat/files/5fosinte.ads @@ -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: diff --git a/lang/gnat/files/5fsystem.ads b/lang/gnat/files/5fsystem.ads new file mode 100644 index 000000000000..f4c1192b1981 --- /dev/null +++ b/lang/gnat/files/5fsystem.ads @@ -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; diff --git a/lang/gnat/files/5ftaprop.adb b/lang/gnat/files/5ftaprop.adb index cf3cb14b9fd6..ff9a62ca1590 100644 --- a/lang/gnat/files/5ftaprop.adb +++ b/lang/gnat/files/5ftaprop.adb @@ -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,29 +804,33 @@ package body System.Task_Primitives.Operations is 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.LL.L'Access); + 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.LL.CV'Access, Cond_Attr'Access); + 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_mutex_destroy (Self_ID.LL.L'Access); + Result := pthread_condattr_destroy (Cond_Attr'Access); pragma Assert (Result = 0); - Result := pthread_mutexattr_destroy (Mutex_Attr'Access); + Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access); pragma Assert (Result = 0); Succeeded := False; return; end if; - Result := pthread_mutexattr_destroy (Mutex_Attr'Access); + Result := pthread_condattr_destroy (Cond_Attr'Access); pragma Assert (Result = 0); Succeeded := True; @@ -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 := true; + Succeeded := Result = 0; - 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; diff --git a/lang/gnat/files/patch-ac b/lang/gnat/files/patch-ac index 29b3b147ca68..966caf1dd517 100644 --- a/lang/gnat/files/patch-ac +++ b/lang/gnat/files/patch-ac @@ -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) + + 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) - threadsletter=A + gnatlib-shared-dual: + $(MAKE) $(FLAGS_TO_PASS) \ diff --git a/lang/gnat/files/patch-ai b/lang/gnat/files/patch-ai index f0a487f505f0..ff080cda20fe 100644 --- a/lang/gnat/files/patch-ai +++ b/lang/gnat/files/patch-ai @@ -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 () - { diff --git a/lang/gnat/files/patch-aj b/lang/gnat/files/patch-aj index 420743c178e7..27861217e09f 100644 --- a/lang/gnat/files/patch-aj +++ b/lang/gnat/files/patch-aj @@ -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 diff --git a/lang/gnat/files/patch-al b/lang/gnat/files/patch-al index 366a106755b9..fb2b6b81638d 100644 --- a/lang/gnat/files/patch-al +++ b/lang/gnat/files/patch-al @@ -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)); diff --git a/lang/gnat/files/patch-am b/lang/gnat/files/patch-am new file mode 100644 index 000000000000..20093d20bfec --- /dev/null +++ b/lang/gnat/files/patch-am @@ -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; + + ----------------- diff --git a/lang/gnat/files/patch-an b/lang/gnat/files/patch-an new file mode 100644 index 000000000000..1ef1098cdb6e --- /dev/null +++ b/lang/gnat/files/patch-an @@ -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,"; diff --git a/lang/gnat/pkg-descr b/lang/gnat/pkg-descr index f7bdc5da88ea..57087f22b873 100644 --- a/lang/gnat/pkg-descr +++ b/lang/gnat/pkg-descr @@ -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/ diff --git a/lang/gnat/pkg-plist b/lang/gnat/pkg-plist index 460489f6271c..0f8b32d799bc 100644 --- a/lang/gnat/pkg-plist +++ b/lang/gnat/pkg-plist @@ -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 |