mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-26 05:02:18 +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:
parent
e0837ffadb
commit
95df74e9ba
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=34561
@ -14,21 +14,26 @@
|
||||
# using symbolic links.
|
||||
|
||||
PORTNAME= gnat
|
||||
PORTVERSION= 3.12p
|
||||
PORTVERSION= 3.13p
|
||||
CATEGORIES= lang
|
||||
MASTER_SITES= ftp://cs.nyu.edu/pub/gnat/ \
|
||||
${MASTER_SITE_GNU}
|
||||
DISTNAME= gcc-2.8.1
|
||||
DISTFILES= gnat-3.12p-src.tar.gz gcc-2.8.1.tar.gz
|
||||
MASTER_SITES= ftp://cs.nyu.edu/pub/gnat/${PORTVERSION}/ \
|
||||
${MASTER_SITE_LOCAL} ${MASTER_SITE_GNU}
|
||||
MASTER_SITE_SUBDIR= gcc
|
||||
DISTFILES= ${GNATNAME}.tgz gcc-2.8.1.tar.gz
|
||||
|
||||
MAINTAINER= eischen@vigrid.com
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
WRKSRC= ${WRKDIR}/gcc-2.8.1
|
||||
GNATNAME= gnat-${PORTVERSION}-src
|
||||
GNUHOST= ${ARCH}-unknown-freebsd${OSREL}
|
||||
GCC_VERSION= 2.8.1
|
||||
|
||||
PLIST_SUB= GNUHOST=${GNUHOST} GCC_VERSION=${GCC_VERSION}
|
||||
PLIST_SUB= GNUHOST=${GNUHOST} GCC_VERSION=${GCC_VERSION} \
|
||||
LIBRARY_VERSION=${LIBRARY_VERSION} \
|
||||
SHARED_MAJOR=${SHARED_MAJOR}
|
||||
|
||||
# Make no mistake about what host/target we are building on/for.
|
||||
# This package does not support cross-compiling, and this fixes
|
||||
# problems with bsd.port.mk files from earlier FreeBSD 3.x releases.
|
||||
@ -38,12 +43,12 @@ GNU_CONFIGURE= yes
|
||||
USE_GMAKE= yes
|
||||
MAN1= adagcc.1 cccp.1
|
||||
|
||||
# You need a compiler who calls an existing GNAT compiler (3.11 or greater).
|
||||
# You need a compiler who calls an existing GNAT compiler (3.12 or greater).
|
||||
# If you have one, point CC at it. By default, we'll look for one in the
|
||||
# obvious places. If we can't find one, we'll fetch a distfile containing
|
||||
# a minimum (still pretty large) compiler toolset and use that to build.
|
||||
|
||||
# For the GNAT compiler, we look in ${PREFIX} and in /usr/local.
|
||||
# For the GNAT compiler, we look in ${PREFIX} and in ${LOCALBASE}.
|
||||
.ifdef PREFIX
|
||||
have_boot!= if [ -x ${PREFIX}/bin/adagcc -a -x ${PREFIX}/bin/gnatbind ]; then \
|
||||
${ECHO} "${PREFIX}/bin"; \
|
||||
@ -54,8 +59,8 @@ have_boot!= if [ -x ${PREFIX}/bin/adagcc -a -x ${PREFIX}/bin/gnatbind ]; then \
|
||||
have_boot=
|
||||
.endif
|
||||
.if empty(have_boot)
|
||||
have_boot!= if [ -x /usr/local/bin/adagcc -a -x /usr/local/bin/gnatbind ]; then \
|
||||
${ECHO} "/usr/local/bin"; \
|
||||
have_boot!= if [ -x {LOCALBASE}/bin/adagcc -a -x {LOCALBASE}/bin/gnatbind ]; then \
|
||||
${ECHO} "{LOCALBASE}/bin"; \
|
||||
else \
|
||||
${ECHO} ""; \
|
||||
fi
|
||||
@ -86,7 +91,7 @@ BROKEN= "Cannot build with or for an aout compiler."
|
||||
.endif
|
||||
|
||||
.if empty(have_boot)
|
||||
DISTFILES+= gnat-3.11p-boot.tar.gz
|
||||
DISTFILES+= gnat-3.13p-boot.tar.gz
|
||||
# Warning! You need the trailing slash on GCC_EXEC_PREFIX.
|
||||
COMPILEDATA= GCC_EXEC_PREFIX=${WRKDIR}/adaboot/lib/gcc-lib/ \
|
||||
ADA_INCLUDE_PATH=${WRKDIR}/adaboot/lib/gcc-lib/adainclude \
|
||||
@ -95,9 +100,21 @@ have_boot= ${WRKDIR}/adaboot
|
||||
.endif
|
||||
|
||||
# Make sure we use the Ada-aware gcc compiler.
|
||||
CC = adagcc
|
||||
CC = adagcc
|
||||
CONFIGURE_ENV= ${COMPILE_DATA} PATH=${have_boot}/bin:$$PATH
|
||||
|
||||
.if OVERRIDE_CFLAGS
|
||||
GNATCFLAGS= ${CFLAGS}
|
||||
GNATLIBCFLAGS= ${CFLAGS}
|
||||
.else
|
||||
GNATCFLAGS= -O2
|
||||
GNATLIBCFLAGS= -O2
|
||||
.endif
|
||||
|
||||
# Shared library handling
|
||||
LIBRARY_VERSION= 3.13
|
||||
SHARED_MAJOR= 1
|
||||
|
||||
# Account for signal set changes
|
||||
.if ${OSVERSION} > 400010
|
||||
SIGSET_WORDS= 4
|
||||
@ -108,14 +125,16 @@ SIGACTION= old_struct_sigaction
|
||||
.endif
|
||||
|
||||
pre-patch:
|
||||
@${MV} ${WRKSRC}/config/i386/freebsd.h ${WRKSRC}/config/i386/freebsd-aout.h
|
||||
@${MV} ${WRKSRC}/config/i386/freebsd-elf.h ${WRKSRC}/config/i386/freebsd.h
|
||||
@if [ ! -f ${WRKSRC}/config/i386/freebsd-aout.h ]; then \
|
||||
${MV} ${WRKSRC}/config/i386/freebsd.h ${WRKSRC}/config/i386/freebsd-aout.h; \
|
||||
${MV} ${WRKSRC}/config/i386/freebsd-elf.h ${WRKSRC}/config/i386/freebsd.h; \
|
||||
fi
|
||||
@${ECHO} "===> Applying FreeBSD patches to gcc for ${DISTNAME}"
|
||||
-( ${PATCH} ${PATCH_ARGS} < ${FILESDIR}/freebsdgcc28-patches )
|
||||
@${ECHO} "===> Patching gcc for ${DISTNAME}"
|
||||
-( ${PATCH} ${PATCH_ARGS} < ${WRKDIR}/gnat-3.12p-src/src/gcc-281.dif )
|
||||
@${ECHO} "===> Patching gcc for ${GNATNAME}"
|
||||
-( ${PATCH} ${PATCH_ARGS} < ${WRKDIR}/${GNATNAME}/src/gcc-281.dif )
|
||||
@${ECHO} "===> Copying GNAT compiler sources into GCC tree."
|
||||
-( ${MV} ${WRKDIR}/gnat-3.12p-src/src/ada ${WRKDIR}/gcc-2.8.1 )
|
||||
-( ${MV} ${WRKDIR}/${GNATNAME}/src/ada ${WRKDIR}/gcc-2.8.1 )
|
||||
@${ECHO} "===> Making way for FreeBSD GNAT support files"
|
||||
-( ${RM} -f ${WRKSRC}/ada/[45]f* )
|
||||
|
||||
@ -149,23 +168,40 @@ do-configure:
|
||||
|
||||
#
|
||||
# We intentionally override CFLAGS because the build procedure is explicitly
|
||||
# spelled out in gnat-3.12p-src/src/README.BUILD. Remove CFLAGS from the
|
||||
# spelled out in gnat-3.13p-src/src/README.BUILD. Remove CFLAGS from the
|
||||
# do-build target at your own risk.
|
||||
#
|
||||
do-build:
|
||||
(cd ${WRKSRC}; \
|
||||
PATH=${have_boot}/bin:$$PATH \
|
||||
${COMPILEDATA} ${GMAKE} CC="${CC}" OLDCC="adagcc" CFLAGS="-O2" LANGUAGES="c ada gcov" )
|
||||
${COMPILEDATA} ${GMAKE} CC="${CC}" OLDCC="adagcc" CFLAGS="${GNATCFLAGS}" LANGUAGES="c ada gcov" )
|
||||
(cd ${WRKSRC}; \
|
||||
${GMAKE} CFLAGS="-O2" LANGUAGES="c ada gcov" bootstrap )
|
||||
${GMAKE} CFLAGS="${GNATCFLAGS}" LANGUAGES="c ada gcov" bootstrap )
|
||||
(cd ${WRKSRC}; \
|
||||
${GMAKE} CFLAGS="-O2" gnattools )
|
||||
${GMAKE} CFLAGS="${GNATCFLAGS}" gnattools )
|
||||
(cd ${WRKSRC}; \
|
||||
${GMAKE} CFLAGS="-O2" GNATLIBCFLAGS="-O2" gnatlib )
|
||||
${GMAKE} CFLAGS="${GNATCFLAGS}" GNATLIBCFLAGS="-fPIC ${GNATLIBCFLAGS}" \
|
||||
soext=.so.${SHARED_MAJOR} LIBRARY_VERSION=${LIBRARY_VERSION} \
|
||||
gnatlib-shared )
|
||||
${MV} ${WRKSRC}/ada/rts/lib*-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
|
||||
${WRKSRC}/ada
|
||||
${RM} ${WRKSRC}/stamp-gnatlib2
|
||||
(cd ${WRKSRC}; \
|
||||
${GMAKE} CFLAGS="${GNATCFLAGS}" GNATLIBCFLAGS="${GNATLIBCFLAGS}" gnatlib )
|
||||
|
||||
do-install:
|
||||
(cd ${WRKSRC}; \
|
||||
${GMAKE} CC="${CC}" LANGUAGES="c ada gcov" ${INSTALL_TARGET} )
|
||||
${INSTALL_DATA} \
|
||||
${WRKSRC}/ada/libgnat-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
|
||||
${PREFIX}/lib
|
||||
${INSTALL_DATA} \
|
||||
${WRKSRC}/ada/libgnarl-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
|
||||
${PREFIX}/lib
|
||||
${LN} -s ${PREFIX}/lib/libgnat-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
|
||||
${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION}/adalib/libgnat.so
|
||||
${LN} -s ${PREFIX}/lib/libgnarl-${LIBRARY_VERSION}.so.${SHARED_MAJOR} \
|
||||
${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION}/adalib/libgnarl.so
|
||||
|
||||
post-install:
|
||||
@(for prog in ${PREFIX}/bin/adagcc \
|
||||
@ -193,13 +229,7 @@ post-install:
|
||||
fi \
|
||||
done)
|
||||
@(${TOUCH} ${TOUCH_FLAGS} ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION}/include/float.h)
|
||||
@(${CHOWN} -R bin:bin ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION})
|
||||
@(${ECHO} "-----------------------------------------------------------" )
|
||||
@(${ECHO} "" )
|
||||
@(${ECHO} "For information about using the tasking library please read" )
|
||||
@(${ECHO} "the README.Tasking file" )
|
||||
@(${ECHO} "" )
|
||||
@(${ECHO} "-----------------------------------------------------------" )
|
||||
@(${ECHO} "" )
|
||||
@(chown -R bin:bin ${PREFIX}/lib/gcc-lib/${GNUHOST}/${GCC_VERSION})
|
||||
${LDCONFIG} -m ${PREFIX}/lib
|
||||
|
||||
.include <bsd.port.post.mk>
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
242
lang/gnat/files/5fsystem.ads
Normal file
242
lang/gnat/files/5fsystem.ads
Normal 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;
|
@ -6,9 +6,9 @@
|
||||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- $Revision: 1.5 $ --
|
||||
-- $Revision: 1.33 $
|
||||
-- --
|
||||
-- Copyright (C) 1997, Florida State University --
|
||||
-- Copyright (C) 1991-2000, Florida State University --
|
||||
-- --
|
||||
-- GNARL is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
@ -37,6 +37,16 @@
|
||||
-- This is the FreeBSD PTHREADS version of this package. Contributed
|
||||
-- by Daniel M. Eischen (eischen@vigrid.com).
|
||||
|
||||
-- This package contains all the GNULL primitives that interface directly
|
||||
-- with the underlying OS.
|
||||
|
||||
-- Note: this file can only be used for POSIX compliant systems that
|
||||
-- implement SCHED_FIFO and Ceiling Locking correctly (that is, for now:
|
||||
-- FSU Threads, RTEMS Threads, and FreeBSD Threads).
|
||||
|
||||
-- For configurations where SCHED_FIFO and priority ceiling are not a
|
||||
-- requirement, this file can also be used (e.g AiX threads)
|
||||
|
||||
pragma Polling (Off);
|
||||
-- Turn off polling, we do not want ATC polling to take place during
|
||||
-- tasking operations. It causes infinite loops and other problems.
|
||||
@ -91,7 +101,7 @@ package body System.Task_Primitives.Operations is
|
||||
use System.Parameters;
|
||||
use System.OS_Primitives;
|
||||
|
||||
package TSL renames System.Soft_Links;
|
||||
package SSL renames System.Soft_Links;
|
||||
|
||||
pragma Linker_Options ("-pthread");
|
||||
|
||||
@ -103,7 +113,7 @@ package body System.Task_Primitives.Operations is
|
||||
-- at run time.
|
||||
|
||||
All_Tasks_L : aliased System.Task_Primitives.RTS_Lock;
|
||||
-- See comments on locking rules in System.Locking_Rules (spec).
|
||||
-- See comments on locking rules in System.Tasking (spec).
|
||||
|
||||
Environment_Task_ID : Task_ID;
|
||||
-- A variable to hold Task_ID for the environment task.
|
||||
@ -111,6 +121,11 @@ package body System.Task_Primitives.Operations is
|
||||
Unblocked_Signal_Mask : aliased sigset_t;
|
||||
-- The set of signals that should unblocked in all tasks
|
||||
|
||||
Default_Prio : Interfaces.C.int := 15;
|
||||
-- FreeBSDs default priority for a thread.
|
||||
|
||||
-- The followings are internal configuration constants needed.
|
||||
|
||||
Next_Serial_Number : Task_Serial_Number := 100;
|
||||
-- We start at 100, to reserve some special values for
|
||||
-- using in error checking.
|
||||
@ -131,7 +146,6 @@ package body System.Task_Primitives.Operations is
|
||||
|
||||
function To_Address is new Unchecked_Conversion (Task_ID, System.Address);
|
||||
|
||||
|
||||
--------------------
|
||||
-- Local Packages --
|
||||
--------------------
|
||||
@ -245,7 +259,7 @@ package body System.Task_Primitives.Operations is
|
||||
|
||||
procedure Stack_Guard (T : ST.Task_ID; On : Boolean) is
|
||||
|
||||
Stack_Base : constant Address := Get_Stack_Base (T.LL.Thread);
|
||||
Stack_Base : constant Address := Get_Stack_Base (T.Common.LL.Thread);
|
||||
Guard_Page_Address : Address;
|
||||
|
||||
Res : Interfaces.C.int;
|
||||
@ -273,7 +287,7 @@ package body System.Task_Primitives.Operations is
|
||||
|
||||
function Get_Thread_Id (T : ST.Task_ID) return OSI.Thread_Id is
|
||||
begin
|
||||
return T.LL.Thread;
|
||||
return T.Common.LL.Thread;
|
||||
end Get_Thread_Id;
|
||||
|
||||
----------
|
||||
@ -306,7 +320,7 @@ package body System.Task_Primitives.Operations is
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
if Result = ENOMEM then
|
||||
raise STORAGE_ERROR;
|
||||
raise Storage_Error;
|
||||
end if;
|
||||
|
||||
Result := pthread_mutexattr_setprotocol
|
||||
@ -316,17 +330,16 @@ package body System.Task_Primitives.Operations is
|
||||
-- Convert the Ada priority to be based around the default
|
||||
-- system priority.
|
||||
Adjusted_Prio := Interfaces.C.int (Prio) -
|
||||
Interfaces.C.int (System.Default_Priority) + DEFAULT_PRIO;
|
||||
Interfaces.C.int (System.Default_Priority) + Default_Prio;
|
||||
Result := pthread_mutexattr_setprioceiling
|
||||
(Attributes'Access, Interfaces.C.int (Adjusted_Prio));
|
||||
(Attributes'Access, Adjusted_Prio);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_mutex_init (L, Attributes'Access);
|
||||
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
if Result = ENOMEM then
|
||||
raise STORAGE_ERROR;
|
||||
raise Storage_Error;
|
||||
end if;
|
||||
|
||||
Result := pthread_mutexattr_destroy (Attributes'Access);
|
||||
@ -343,32 +356,26 @@ package body System.Task_Primitives.Operations is
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
if Result = ENOMEM then
|
||||
raise STORAGE_ERROR;
|
||||
raise Storage_Error;
|
||||
end if;
|
||||
|
||||
-- Convert the Ada priority to be based around the default
|
||||
-- system priority.
|
||||
Adjusted_Prio := Interfaces.C.int (System.Any_Priority'Last) -
|
||||
Interfaces.C.int (System.Default_Priority) + DEFAULT_PRIO;
|
||||
|
||||
Interfaces.C.int (System.Default_Priority) + Default_Prio;
|
||||
Result := pthread_mutexattr_setprotocol
|
||||
(Attributes'Access, PTHREAD_PRIO_PROTECT);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_mutexattr_setprioceiling
|
||||
(Attributes'Access, Interfaces.C.int (Adjusted_Prio));
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_mutexattr_setprioceiling
|
||||
(Attributes'Access, Interfaces.C.int (Adjusted_Prio));
|
||||
(Attributes'Access, Adjusted_Prio);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_mutex_init (L, Attributes'Access);
|
||||
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
if Result = ENOMEM then
|
||||
raise STORAGE_ERROR;
|
||||
raise Storage_Error;
|
||||
end if;
|
||||
|
||||
Result := pthread_mutexattr_destroy (Attributes'Access);
|
||||
@ -420,9 +427,10 @@ package body System.Task_Primitives.Operations is
|
||||
end Write_Lock;
|
||||
|
||||
procedure Write_Lock (T : Task_ID) is
|
||||
Result : Interfaces.C.int;
|
||||
Result : Interfaces.C.int;
|
||||
|
||||
begin
|
||||
Result := pthread_mutex_lock (T.LL.L'Access);
|
||||
Result := pthread_mutex_lock (T.Common.LL.L'Access);
|
||||
pragma Assert (Result = 0);
|
||||
end Write_Lock;
|
||||
|
||||
@ -456,9 +464,10 @@ package body System.Task_Primitives.Operations is
|
||||
end Unlock;
|
||||
|
||||
procedure Unlock (T : Task_ID) is
|
||||
Result : Interfaces.C.int;
|
||||
Result : Interfaces.C.int;
|
||||
|
||||
begin
|
||||
Result := pthread_mutex_unlock (T.LL.L'Access);
|
||||
Result := pthread_mutex_unlock (T.Common.LL.L'Access);
|
||||
pragma Assert (Result = 0);
|
||||
end Unlock;
|
||||
|
||||
@ -468,17 +477,16 @@ package body System.Task_Primitives.Operations is
|
||||
|
||||
procedure Sleep (Self_ID : Task_ID;
|
||||
Reason : System.Tasking.Task_States) is
|
||||
|
||||
Result : Interfaces.C.int;
|
||||
|
||||
begin
|
||||
pragma Assert (Self_ID = Self);
|
||||
Result := pthread_cond_wait (Self_ID.LL.CV'Access, Self_ID.LL.L'Access);
|
||||
Result := pthread_cond_wait (Self_ID.Common.LL.CV'Access,
|
||||
Self_ID.Common.LL.L'Access);
|
||||
|
||||
-- EINTR is not considered a failure.
|
||||
|
||||
pragma Assert (Result = 0 or else Result = EINTR);
|
||||
|
||||
end Sleep;
|
||||
|
||||
-----------------
|
||||
@ -493,15 +501,15 @@ package body System.Task_Primitives.Operations is
|
||||
(Self_ID : Task_ID;
|
||||
Time : Duration;
|
||||
Mode : ST.Delay_Modes;
|
||||
Reason : System.Tasking.Task_States;
|
||||
Reason : Task_States;
|
||||
Timedout : out Boolean;
|
||||
Yielded : out Boolean)
|
||||
is
|
||||
|
||||
Check_Time : constant Duration := Clock;
|
||||
Abs_Time : Duration;
|
||||
Request : aliased timespec;
|
||||
Result : Interfaces.C.int;
|
||||
Check_Time : constant Duration := Clock;
|
||||
Rel_Time : Duration;
|
||||
Abs_Time : Duration;
|
||||
Request : aliased timespec;
|
||||
Result : Interfaces.C.int;
|
||||
|
||||
begin
|
||||
Timedout := True;
|
||||
@ -509,18 +517,32 @@ package body System.Task_Primitives.Operations is
|
||||
|
||||
if Mode = Relative then
|
||||
Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + Check_Time;
|
||||
|
||||
if Relative_Timed_Wait then
|
||||
Rel_Time := Duration'Min (Max_Sensible_Delay, Time);
|
||||
end if;
|
||||
|
||||
else
|
||||
Abs_Time := Time;
|
||||
Abs_Time := Duration'Min (Check_Time + Max_Sensible_Delay, Time);
|
||||
|
||||
if Relative_Timed_Wait then
|
||||
Rel_Time := Duration'Min (Max_Sensible_Delay, Time - Check_Time);
|
||||
end if;
|
||||
end if;
|
||||
|
||||
if Abs_Time > Check_Time then
|
||||
Request := To_Timespec (Abs_Time);
|
||||
if Relative_Timed_Wait then
|
||||
Request := To_Timespec (Rel_Time);
|
||||
else
|
||||
Request := To_Timespec (Abs_Time);
|
||||
end if;
|
||||
|
||||
loop
|
||||
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
|
||||
or else Self_ID.Pending_Priority_Change;
|
||||
|
||||
Result := pthread_cond_timedwait
|
||||
(Self_ID.LL.CV'Access, Self_ID.LL.L'Access, Request'Access);
|
||||
Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
|
||||
Self_ID.Common.LL.L'Access, Request'Access);
|
||||
|
||||
exit when Abs_Time <= Clock;
|
||||
|
||||
@ -550,41 +572,55 @@ package body System.Task_Primitives.Operations is
|
||||
Time : Duration;
|
||||
Mode : ST.Delay_Modes)
|
||||
is
|
||||
Check_Time : constant Duration := Clock;
|
||||
Abs_Time : Duration;
|
||||
Rel_Time : Duration;
|
||||
Request : aliased timespec;
|
||||
Result : Interfaces.C.int;
|
||||
|
||||
Check_Time : constant Duration := Clock;
|
||||
Abs_Time : Duration;
|
||||
Request : aliased timespec;
|
||||
Result : Interfaces.C.int;
|
||||
begin
|
||||
|
||||
-- Only the little window between deferring abort and
|
||||
-- locking Self_ID is the reason we need to
|
||||
-- check for pending abort and priority change below! :(
|
||||
|
||||
TSL.Abort_Defer.all;
|
||||
SSL.Abort_Defer.all;
|
||||
Write_Lock (Self_ID);
|
||||
|
||||
if Mode = Relative then
|
||||
Abs_Time := Time + Check_Time;
|
||||
Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + Check_Time;
|
||||
|
||||
if Relative_Timed_Wait then
|
||||
Rel_Time := Duration'Min (Max_Sensible_Delay, Time);
|
||||
end if;
|
||||
|
||||
else
|
||||
Abs_Time := Time;
|
||||
Abs_Time := Duration'Min (Check_Time + Max_Sensible_Delay, Time);
|
||||
|
||||
if Relative_Timed_Wait then
|
||||
Rel_Time := Duration'Min (Max_Sensible_Delay, Time - Check_Time);
|
||||
end if;
|
||||
end if;
|
||||
|
||||
if Abs_Time > Check_Time then
|
||||
Request := To_Timespec (Abs_Time);
|
||||
Self_ID.State := Delay_Sleep;
|
||||
if Relative_Timed_Wait then
|
||||
Request := To_Timespec (Rel_Time);
|
||||
else
|
||||
Request := To_Timespec (Abs_Time);
|
||||
end if;
|
||||
|
||||
Self_ID.Common.State := Delay_Sleep;
|
||||
|
||||
loop
|
||||
if Self_ID.Pending_Priority_Change then
|
||||
Self_ID.Pending_Priority_Change := False;
|
||||
Self_ID.Base_Priority := Self_ID.New_Base_Priority;
|
||||
Set_Priority (Self_ID, Self_ID.Base_Priority);
|
||||
Self_ID.Common.Base_Priority := Self_ID.New_Base_Priority;
|
||||
Set_Priority (Self_ID, Self_ID.Common.Base_Priority);
|
||||
end if;
|
||||
|
||||
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
|
||||
|
||||
Result := pthread_cond_timedwait
|
||||
(Self_ID.LL.CV'Access, Self_ID.LL.L'Access, Request'Access);
|
||||
Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
|
||||
Self_ID.Common.LL.L'Access, Request'Access);
|
||||
exit when Abs_Time <= Clock;
|
||||
|
||||
pragma Assert (Result = 0
|
||||
@ -592,12 +628,12 @@ package body System.Task_Primitives.Operations is
|
||||
or else Result = EINTR);
|
||||
end loop;
|
||||
|
||||
Self_ID.State := Runnable;
|
||||
Self_ID.Common.State := Runnable;
|
||||
end if;
|
||||
|
||||
Unlock (Self_ID);
|
||||
Result := sched_yield;
|
||||
TSL.Abort_Undefer.all;
|
||||
SSL.Abort_Undefer.all;
|
||||
end Timed_Delay;
|
||||
|
||||
-----------
|
||||
@ -632,7 +668,7 @@ package body System.Task_Primitives.Operations is
|
||||
Result : Interfaces.C.int;
|
||||
|
||||
begin
|
||||
Result := pthread_cond_signal (T.LL.CV'Access);
|
||||
Result := pthread_cond_signal (T.Common.LL.CV'Access);
|
||||
pragma Assert (Result = 0);
|
||||
end Wakeup;
|
||||
|
||||
@ -662,19 +698,19 @@ package body System.Task_Primitives.Operations is
|
||||
Param : aliased struct_sched_param;
|
||||
|
||||
begin
|
||||
T.LL.Current_Priority := Interfaces.C.int (Prio);
|
||||
T.Common.Current_Priority := Prio;
|
||||
|
||||
-- Convert the Ada priority to be based around the default
|
||||
-- system priority.
|
||||
Param.sched_priority := DEFAULT_PRIO + Interfaces.C.int (Prio) -
|
||||
Param.sched_priority := Default_Prio + Interfaces.C.int (Prio) -
|
||||
Interfaces.C.int (System.Default_Priority);
|
||||
|
||||
if Time_Slice_Supported and then Time_Slice_Val > 0 then
|
||||
Result := pthread_setschedparam
|
||||
(T.LL.Thread, SCHED_RR, Param'Access);
|
||||
(T.Common.LL.Thread, SCHED_RR, Param'Access);
|
||||
else
|
||||
Result := pthread_setschedparam
|
||||
(T.LL.Thread, SCHED_FIFO, Param'Access);
|
||||
(T.Common.LL.Thread, SCHED_FIFO, Param'Access);
|
||||
end if;
|
||||
|
||||
pragma Assert (Result = 0);
|
||||
@ -686,7 +722,7 @@ package body System.Task_Primitives.Operations is
|
||||
|
||||
function Get_Priority (T : Task_ID) return System.Any_Priority is
|
||||
begin
|
||||
return System.Any_Priority (T.LL.Current_Priority);
|
||||
return T.Common.Current_Priority;
|
||||
end Get_Priority;
|
||||
|
||||
----------------
|
||||
@ -695,7 +731,7 @@ package body System.Task_Primitives.Operations is
|
||||
|
||||
procedure Enter_Task (Self_ID : Task_ID) is
|
||||
begin
|
||||
Self_ID.LL.Thread := pthread_self;
|
||||
Self_ID.Common.LL.Thread := pthread_self;
|
||||
|
||||
Specific.Set (Self_ID);
|
||||
|
||||
@ -749,17 +785,18 @@ package body System.Task_Primitives.Operations is
|
||||
-- Convert the Ada priority to be based around the default
|
||||
-- system priority.
|
||||
Adjusted_Prio := Interfaces.C.int (System.Any_Priority'Last) -
|
||||
Interfaces.C.int (System.Default_Priority) + DEFAULT_PRIO;
|
||||
Interfaces.C.int (System.Default_Priority) + Default_Prio;
|
||||
|
||||
Result := pthread_mutexattr_setprotocol
|
||||
(Mutex_Attr'Access, PTHREAD_PRIO_PROTECT);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_mutexattr_setprioceiling
|
||||
(Mutex_Attr'Access, Interfaces.C.int (Adjusted_Prio));
|
||||
(Mutex_Attr'Access, Adjusted_Prio);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_mutex_init (Self_ID.LL.L'Access, Mutex_Attr'Access);
|
||||
Result := pthread_mutex_init (Self_ID.Common.LL.L'Access,
|
||||
Mutex_Attr'Access);
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
if Result /= 0 then
|
||||
@ -767,31 +804,35 @@ package body System.Task_Primitives.Operations is
|
||||
return;
|
||||
end if;
|
||||
|
||||
Result := pthread_condattr_init (Cond_Attr'Access);
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
if Result /= 0 then
|
||||
Result := pthread_mutex_destroy (Self_ID.LL.L'Access);
|
||||
pragma Assert (Result = 0);
|
||||
Succeeded := False;
|
||||
return;
|
||||
end if;
|
||||
|
||||
Result := pthread_cond_init (Self_ID.LL.CV'Access, Cond_Attr'Access);
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
if Result /= 0 then
|
||||
Result := pthread_mutex_destroy (Self_ID.LL.L'Access);
|
||||
pragma Assert (Result = 0);
|
||||
Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
|
||||
pragma Assert (Result = 0);
|
||||
Succeeded := False;
|
||||
return;
|
||||
end if;
|
||||
|
||||
Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_condattr_init (Cond_Attr'Access);
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
if Result /= 0 then
|
||||
Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
|
||||
pragma Assert (Result = 0);
|
||||
Succeeded := False;
|
||||
return;
|
||||
end if;
|
||||
|
||||
Result := pthread_cond_init (Self_ID.Common.LL.CV'Access,
|
||||
Cond_Attr'Access);
|
||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||
|
||||
if Result /= 0 then
|
||||
Result := pthread_condattr_destroy (Cond_Attr'Access);
|
||||
pragma Assert (Result = 0);
|
||||
Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
|
||||
pragma Assert (Result = 0);
|
||||
Succeeded := False;
|
||||
return;
|
||||
end if;
|
||||
|
||||
Result := pthread_condattr_destroy (Cond_Attr'Access);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Succeeded := True;
|
||||
end Initialize_TCB;
|
||||
|
||||
@ -806,8 +847,6 @@ package body System.Task_Primitives.Operations is
|
||||
Priority : System.Any_Priority;
|
||||
Succeeded : out Boolean)
|
||||
is
|
||||
use System.Task_Info;
|
||||
|
||||
Attributes : aliased pthread_attr_t;
|
||||
Adjusted_Stack_Size : Interfaces.C.size_t;
|
||||
Result : Interfaces.C.int;
|
||||
@ -815,12 +854,15 @@ package body System.Task_Primitives.Operations is
|
||||
function Thread_Body_Access is new
|
||||
Unchecked_Conversion (System.Address, Thread_Body);
|
||||
|
||||
use System.Task_Info;
|
||||
|
||||
begin
|
||||
if Stack_Size = Unspecified_Size then
|
||||
Adjusted_Stack_Size := Interfaces.C.size_t (Default_Stack_Size);
|
||||
|
||||
elsif Stack_Size < Minimum_Stack_Size then
|
||||
Adjusted_Stack_Size := Interfaces.C.size_t (Minimum_Stack_Size);
|
||||
|
||||
else
|
||||
Adjusted_Stack_Size := Interfaces.C.size_t (Stack_Size);
|
||||
end if;
|
||||
@ -849,7 +891,7 @@ package body System.Task_Primitives.Operations is
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_attr_setstacksize
|
||||
(Attributes'Access, Interfaces.C.size_t (Adjusted_Stack_Size));
|
||||
(Attributes'Access, Adjusted_Stack_Size);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
if Time_Slice_Supported and then Time_Slice_Val > 0 then
|
||||
@ -873,26 +915,20 @@ package body System.Task_Primitives.Operations is
|
||||
-- All tasks in RTS will have All_Tasks_Mask initially.
|
||||
|
||||
Result := pthread_create
|
||||
(T.LL.Thread'Access,
|
||||
(T.Common.LL.Thread'Access,
|
||||
Attributes'Access,
|
||||
Thread_Body_Access (Wrapper),
|
||||
To_Address (T));
|
||||
pragma Assert (Result = 0 or else Result = EAGAIN);
|
||||
|
||||
if Result /= 0 then
|
||||
Result := pthread_attr_destroy (Attributes'Access);
|
||||
Succeeded := false;
|
||||
return;
|
||||
end if;
|
||||
Succeeded := Result = 0;
|
||||
|
||||
Succeeded := true;
|
||||
|
||||
if T.Task_Image /= null then
|
||||
if T.Common.Task_Image /= null then
|
||||
declare
|
||||
Name : aliased string (1 .. T.Task_Image.all'Length + 1);
|
||||
Name : aliased String (1 .. T.Common.Task_Image.all'Length + 1);
|
||||
begin
|
||||
Name := T.Task_Image.all & Ascii.Nul;
|
||||
Result := pthread_set_name_np (T.LL.Thread, Name'Address);
|
||||
Name := T.Common.Task_Image.all & ASCII.Nul;
|
||||
Result := pthread_set_name_np (T.Common.LL.Thread, Name'Address);
|
||||
end;
|
||||
end if;
|
||||
|
||||
@ -911,10 +947,10 @@ package body System.Task_Primitives.Operations is
|
||||
Unchecked_Deallocation (Ada_Task_Control_Block, Task_ID);
|
||||
|
||||
begin
|
||||
Result := pthread_mutex_destroy (T.LL.L'Access);
|
||||
Result := pthread_mutex_destroy (T.Common.LL.L'Access);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
Result := pthread_cond_destroy (T.LL.CV'Access);
|
||||
Result := pthread_cond_destroy (T.Common.LL.CV'Access);
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
if T.Known_Tasks_Index /= -1 then
|
||||
@ -941,7 +977,7 @@ package body System.Task_Primitives.Operations is
|
||||
Result : Interfaces.C.int;
|
||||
|
||||
begin
|
||||
Result := pthread_kill (T.LL.Thread,
|
||||
Result := pthread_kill (T.Common.LL.Thread,
|
||||
Signal (System.Interrupt_Management.Abort_Task_Interrupt));
|
||||
pragma Assert (Result = 0);
|
||||
end Abort_Task;
|
||||
@ -1025,9 +1061,6 @@ package body System.Task_Primitives.Operations is
|
||||
old_act : aliased struct_sigaction;
|
||||
Tmp_Set : aliased sigset_t;
|
||||
Result : Interfaces.C.int;
|
||||
Policy : aliased Interfaces.C.int;
|
||||
param : aliased struct_sched_param;
|
||||
My_Tid : pthread_t;
|
||||
|
||||
begin
|
||||
Environment_Task_ID := Environment_Task;
|
||||
@ -1056,26 +1089,16 @@ package body System.Task_Primitives.Operations is
|
||||
old_act'Unchecked_Access);
|
||||
|
||||
pragma Assert (Result = 0);
|
||||
|
||||
if Time_Slice_Supported and then Time_Slice_Val > 0 then
|
||||
-- Is Environment_Task.LL.Thread initialized yet?
|
||||
My_Tid := pthread_self;
|
||||
if pthread_getschedparam
|
||||
(My_Tid, Policy'Access, param'Access) = 0
|
||||
then
|
||||
Result := pthread_setschedparam (My_Tid, SCHED_RR, param'Access);
|
||||
pragma Assert (Result = 0);
|
||||
end if;
|
||||
end if;
|
||||
|
||||
end Initialize;
|
||||
|
||||
begin
|
||||
declare
|
||||
Result : Interfaces.C.int;
|
||||
My_Tid : pthread_t;
|
||||
Param : aliased struct_sched_param;
|
||||
Policy : aliased Interfaces.C.int;
|
||||
|
||||
begin
|
||||
|
||||
-- Mask Environment task for all signals. The original mask of the
|
||||
-- Environment task will be recovered by Interrupt_Server task
|
||||
-- during the elaboration of s-interr.adb.
|
||||
@ -1094,6 +1117,14 @@ begin
|
||||
pragma Assert (Result = 0);
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
-- Earlier versions of FreeBSDs threads libraries used a priority
|
||||
-- range of 0..126. Newer versions use POSIX priorities 0..31.
|
||||
-- Autodetect the range by looking at the current priority.
|
||||
My_Tid := pthread_self;
|
||||
if pthread_getschedparam (My_Tid, Policy'Access, Param'Access) = 0 then
|
||||
Default_Prio := Param.sched_priority;
|
||||
end if;
|
||||
end;
|
||||
|
||||
end System.Task_Primitives.Operations;
|
||||
|
@ -1,8 +1,8 @@
|
||||
*** ./ada/Makefile.in.orig Fri Sep 24 08:41:35 1999
|
||||
--- ./ada/Makefile.in Tue Nov 2 10:53:14 1999
|
||||
*** ada/Makefile.in.orig Wed Jul 19 15:08:56 2000
|
||||
--- ada/Makefile.in Sun Oct 15 01:09:35 2000
|
||||
***************
|
||||
*** 909,914 ****
|
||||
--- 909,927 ----
|
||||
*** 976,981 ****
|
||||
--- 976,1002 ----
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -11,14 +11,39 @@
|
||||
+ a-intnam.ads<4fintnam.ads \
|
||||
+ s-inmaop.adb<7sinmaop.adb \
|
||||
+ s-intman.adb<5fintman.adb \
|
||||
+ s-mastop.adb<5omastop.adb \
|
||||
+ s-osinte.adb<5fosinte.adb \
|
||||
+ s-osinte.ads<5fosinte.ads \
|
||||
+ s-osprim.adb<7sosprim.adb \
|
||||
+ s-taprop.adb<5ftaprop.adb \
|
||||
+ s-taspri.ads<5ftaspri.ads \
|
||||
+ s-tpopsp.adb<7stpopsp.adb
|
||||
+ s-taspri.ads<7staspri.ads \
|
||||
+ s-tpopsp.adb<7stpopsp.adb \
|
||||
+ s-traceb.adb<5wtraceb.adb \
|
||||
+ system.ads<5fsystem.ads
|
||||
+
|
||||
+ threadslib=
|
||||
+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/'))
|
||||
+ SHARED_MAJOR = 1
|
||||
+ soext = .so.$(SHARED_MAJOR)
|
||||
+ endif
|
||||
+
|
||||
ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),)
|
||||
ifeq ($(strip $(filter-out mips sgi irix6%,$(targ))),)
|
||||
LIBGNAT_TARGET_PAIRS = \
|
||||
***************
|
||||
*** 1818,1824 ****
|
||||
$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) $(misclib) -lm
|
||||
cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
|
||||
-o libgnarl-$(LIBRARY_VERSION)$(soext) $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) \
|
||||
! $(GNATRTL_TASKING_OBJS) -l$(threadslib)
|
||||
|
||||
threadsletter=A
|
||||
gnatlib-shared-dual:
|
||||
$(MAKE) $(FLAGS_TO_PASS) \
|
||||
--- 1839,1845 ----
|
||||
$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) $(misclib) -lm
|
||||
cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
|
||||
-o libgnarl-$(LIBRARY_VERSION)$(soext) $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) \
|
||||
! $(GNATRTL_TASKING_OBJS) $(threadslib)
|
||||
|
||||
gnatlib-shared-dual:
|
||||
$(MAKE) $(FLAGS_TO_PASS) \
|
||||
|
@ -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 ()
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -14,7 +14,7 @@
|
||||
+
|
||||
+ procedure tmpnam (tname : chars) is
|
||||
+ use type System.Address;
|
||||
+ Template : string (1 .. 18) := "/var/tmp/tmp.XXXX" & Ascii.Nul;
|
||||
+ Template : String (1 .. 18) := "/var/tmp/tmp.XXXX" & ASCII.Nul;
|
||||
+ Name : chars;
|
||||
+ begin
|
||||
+ Name := C_mktemp (Template'Address);
|
||||
@ -24,8 +24,8 @@
|
||||
+ end tmpnam;
|
||||
+
|
||||
+ function tmpfile return FILEs is
|
||||
+ Name : string (1 .. L_tmpnam) := (others => Ascii.Nul);
|
||||
+ Mode : string (1 .. 3) := "w+" & Ascii.Nul;
|
||||
+ Name : String (1 .. L_tmpnam) := (others => ASCII.Nul);
|
||||
+ Mode : String (1 .. 3) := "w+" & ASCII.Nul;
|
||||
+ begin
|
||||
+ tmpnam (Name'Address);
|
||||
+ return (fopen (Name'Address, Mode'Address));
|
||||
|
31
lang/gnat/files/patch-am
Normal file
31
lang/gnat/files/patch-am
Normal 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
18
lang/gnat/files/patch-an
Normal 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,";
|
@ -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/
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user