summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
Diffstat (limited to 'lang')
-rw-r--r--lang/gnat/Makefile69
-rw-r--r--lang/gnat/distinfo4
-rw-r--r--lang/gnat/files/5fintman.adb81
-rw-r--r--lang/gnat/files/5fosinte.adb76
-rw-r--r--lang/gnat/files/5fosinte.ads135
-rw-r--r--lang/gnat/files/5ftaprop.adb175
-rw-r--r--lang/gnat/files/5ftaspri.ads14
-rw-r--r--lang/gnat/files/freebsdgcc28-patches577
-rw-r--r--lang/gnat/files/patch-aa25
-rw-r--r--lang/gnat/files/patch-ab40
-rw-r--r--lang/gnat/files/patch-ac12
-rw-r--r--lang/gnat/files/patch-ad8
-rw-r--r--lang/gnat/files/patch-ae8
-rw-r--r--lang/gnat/files/patch-af16
-rw-r--r--lang/gnat/files/patch-ag19
-rw-r--r--lang/gnat/files/patch-ah19
-rw-r--r--lang/gnat/files/patch-ai84
-rw-r--r--lang/gnat/files/patch-aj54
-rw-r--r--lang/gnat/files/patch-ak30
-rw-r--r--lang/gnat/files/patch-al34
-rw-r--r--lang/gnat/pkg-plist70
21 files changed, 1071 insertions, 479 deletions
diff --git a/lang/gnat/Makefile b/lang/gnat/Makefile
index eb0b84d028d1..fc6759e67148 100644
--- a/lang/gnat/Makefile
+++ b/lang/gnat/Makefile
@@ -15,21 +15,17 @@
# using symbolic links.
DISTNAME= gcc-2.8.1
-PKGNAME= gnat-3.11p
+PKGNAME= gnat-3.12p
CATEGORIES= lang
MASTER_SITES= ftp://cs.nyu.edu/pub/gnat/ \
${MASTER_SITE_GNU}
-DISTFILES= gnat-3.11p-src.tar.gz gcc-2.8.1.tar.gz
+DISTFILES= gnat-3.12p-src.tar.gz gcc-2.8.1.tar.gz
MAINTAINER= eischen@vigrid.com
.include <bsd.port.pre.mk>
-.if ${PORTOBJFORMAT} == "elf"
-GNUHOST= ${ARCH}-unknown-freebsdelf${OSREL}
-.else
GNUHOST= ${ARCH}-unknown-freebsd${OSREL}
-.endif
GCC_VERSION= 2.8.1
PLIST_SUB= GNUHOST=${GNUHOST} GCC_VERSION=${GCC_VERSION}
@@ -42,7 +38,7 @@ GNU_CONFIGURE= yes
USE_GMAKE= yes
MAN1= adagcc.1 cccp.1
-# You need a compiler who calls an existing GNAT compiler (3.10 or greater).
+# You need a compiler who calls an existing GNAT compiler (3.11 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.
@@ -66,13 +62,10 @@ have_boot!= if [ -x /usr/local/bin/adagcc -a -x /usr/local/bin/gnatbind ]; then
.endif
#
-# Check for attempts to cross-compile the GNAT compiler. We only supply
-# an ELF bootstrap compiler. If the gnat-3.10 package is still around,
-# you could possible install that and build gnat-3.11p as aout. This
-# is not supported, though.
+# Check for attempts to cross-compile or build an aout GNAT compiler.
.if empty(have_boot)
have_boot!= if [ ${PORTOBJFORMAT} = "aout" ]; then \
- ${ECHO} "borken for cross"; \
+ ${ECHO} "borken for aout"; \
else \
${ECHO} ""; \
fi
@@ -81,19 +74,15 @@ have_boot!= if [ `file ${have_boot}/adagcc | awk ' { print $$2 }'` = "ELF" ]; th
if [ ${PORTOBJFORMAT} = "elf" ]; then \
${ECHO} ${have_boot}; \
else \
- ${ECHO} "borken for cross"; \
+ ${ECHO} "borken for aout"; \
fi \
else \
- if [ ${PORTOBJFORMAT} = "elf" ]; then \
- ${ECHO} ""; \
- else \
- ${ECHO} ${have_boot}; \
- fi \
+ ${ECHO} "borken for aout"; \
fi
.endif
-.if ${have_boot} == "borken for cross"
-BROKEN= "Cannot build an aout compiler with an ELF compiler."
+.if ${have_boot} == "borken for aout"
+BROKEN= "Cannot build with or for an aout compiler."
.endif
.if empty(have_boot)
@@ -109,13 +98,26 @@ have_boot= ${WRKDIR}/adaboot
CC = adagcc
CONFIGURE_ENV= ${COMPILE_DATA} PATH=${have_boot}/bin:$$PATH
+# Account for signal set changes
+.if ${OSVERSION} > 400010
+SIGSET_WORDS= 4
+SIGACTION= new_struct_sigaction
+.else
+SIGSET_WORDS= 1
+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
@${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.11p-src/src/gcc-281.dif )
+ -( ${PATCH} ${PATCH_ARGS} < ${WRKDIR}/gnat-3.12p-src/src/gcc-281.dif )
@${ECHO} "===> Copying GNAT compiler sources into GCC tree."
- -( ${MV} ${WRKDIR}/gnat-3.11p-src/src/ada ${WRKDIR}/gcc-2.8.1 )
+ -( ${MV} ${WRKDIR}/gnat-3.12p-src/src/ada ${WRKDIR}/gcc-2.8.1 )
+ @${ECHO} "===> Making way for FreeBSD GNAT support files"
+ -( ${RM} -f ${WRKSRC}/ada/[45]f* )
# Copy any additional files required into the correct locations.
post-patch:
@@ -125,14 +127,17 @@ post-patch:
done )
pre-configure:
- @(cd ${WRKDIR}/gcc-2.8.1/config/${ARCH}/ ; \
+ @(cd ${WRKSRC}/config/${ARCH}/ ; \
MAJ=`sysctl -n kern.osreldate | ${SED} -e '/.....$$/s///'` ; \
${MV} freebsd.h freebsd.h.in ; \
${SED} -e "s:__FreeBSD__=[0-9]*:__FreeBSD__=$${MAJ}:" freebsd.h.in \
- >freebsd.h ; \
- ${MV} freebsd-elf.h freebsd-elf.h.in ; \
- ${SED} -e "s:__FreeBSD__=[0-9]*:__FreeBSD__=$${MAJ}:" freebsd-elf.h.in \
- >freebsd-elf.h)
+ >freebsd.h)
+ @(cd ${WRKSRC}/ada/ ; \
+ ${MV} 5fosinte.ads 5fosinte.ads.in ; \
+ ${SED} -e "s:__FreeBSD__sigset_words:${SIGSET_WORDS}:" \
+ -e "s:__FreeBSD__sigaction:${SIGACTION}:" 5fosinte.ads.in \
+ > 5fosinte.ads)
+ @${TOUCH} ${TOUCH_FLAGS} ${WRKSRC}/cstamp-h.in
@(cd ${WRKSRC}/ada; \
${TOUCH} treeprs.ads a-[es]info.h nmake.ad[bs])
@@ -144,15 +149,15 @@ do-configure:
#
# We intentionally override CFLAGS because the build procedure is explicitly
-# spelled out in gnat-3.11p-src/src/README.BUILD. Remove CFLAGS from the
+# spelled out in gnat-3.12p-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" )
+ ${COMPILEDATA} ${GMAKE} CC="${CC}" OLDCC="adagcc" CFLAGS="-O2" LANGUAGES="c ada gcov" )
(cd ${WRKSRC}; \
- ${GMAKE} CFLAGS="-O2" LANGUAGES="c ada" bootstrap )
+ ${GMAKE} CFLAGS="-O2" LANGUAGES="c ada gcov" bootstrap )
(cd ${WRKSRC}; \
${GMAKE} CFLAGS="-O2" gnattools )
(cd ${WRKSRC}; \
@@ -160,10 +165,11 @@ do-build:
do-install:
(cd ${WRKSRC}; \
- ${GMAKE} CC="${CC}" LANGUAGES="c ada" ${INSTALL_TARGET} )
+ ${GMAKE} CC="${CC}" LANGUAGES="c ada gcov" ${INSTALL_TARGET} )
post-install:
@(for prog in ${PREFIX}/bin/adagcc \
+ ${PREFIX}/bin/adagcov \
${PREFIX}/bin/gnat \
${PREFIX}/bin/gnatbind \
${PREFIX}/bin/gnatbl \
@@ -186,6 +192,7 @@ post-install:
strip $$prog ; \
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} "" )
diff --git a/lang/gnat/distinfo b/lang/gnat/distinfo
index 8e17546de5c5..ae0ec4c2f8e5 100644
--- a/lang/gnat/distinfo
+++ b/lang/gnat/distinfo
@@ -1,3 +1,3 @@
-MD5 (gnat-3.11p-src.tar.gz) = 44ef3007e0ea216ab9a1e4a2712a0f8b
+MD5 (gnat-3.12p-src.tar.gz) = e441db93cfef98702f8cf16dffaab6e8
MD5 (gcc-2.8.1.tar.gz) = 311829e9c36080fb54b0145285746a9e
-MD5 (gnat-3.11p-boot.tar.gz) = e78d6bfa82e0fa941e779d7f14dc4708
+MD5 (gnat-3.11p-boot.tar.gz) = ff94f828ce93328a4ebbc546743f9834
diff --git a/lang/gnat/files/5fintman.adb b/lang/gnat/files/5fintman.adb
index db857ec6c5f2..68b22762685f 100644
--- a/lang/gnat/files/5fintman.adb
+++ b/lang/gnat/files/5fintman.adb
@@ -73,11 +73,17 @@ package body System.Interrupt_Management is
Exception_Interrupts : constant Interrupt_List :=
(SIGFPE, SIGILL, SIGSEGV, SIGBUS);
+ Unreserve_All_Interrupts : Interfaces.C.int;
+ pragma Import
+ (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
----------------------
-- Notify_Exception --
----------------------
+ Signal_Mask : aliased sigset_t;
+ -- The set of signals handled by Notify_Exception
+
-- This function identifies the Ada exception to be raised using
-- the information when the system received a synchronous signal.
-- Since this function is machine and OS dependent, different code
@@ -107,22 +113,6 @@ package body System.Interrupt_Management is
-- is consistent with treatment of the abort signal in
-- System.Task_Primitives.Operations.
- -- ?????
- -- The code below is first approximation.
- -- It would be nice to figure out more
- -- precisely what exception has occurred.
- -- One also should arrange to use an alternate stack for
- -- recovery from stack overflow.
- -- I don't understand the Linux kernel code well
- -- enough to figure out how to do this yet.
- -- I hope someone will look at this. --Ted Baker
-
- -- How can SIGSEGV be split into constraint and storage errors ?
- -- What should SIGILL really raise ? Some implemenations have
- -- codes for different types of SIGILL and some raise Storage_Error.
- -- What causes SIGBUS and should it be caught ?
- -- Peter Burwood
-
case signo is
when SIGFPE =>
raise Constraint_Error;
@@ -138,20 +128,23 @@ package body System.Interrupt_Management is
end case;
end Notify_Exception;
- ----------------
- -- Initialize --
- ----------------
+ ---------------------------
+ -- Initialize_Interrupts --
+ ---------------------------
+
+ -- Nothing needs to be done on this platform.
+
+ procedure Initialize_Interrupts is
+ begin
+ null;
+ end Initialize_Interrupts;
- procedure Initialize is
+begin
+ declare
act : aliased struct_sigaction;
old_act : aliased struct_sigaction;
- mask : aliased sigset_t;
Result : Interfaces.C.int;
- Unreserve_All_Interrupts : Interfaces.C.int;
- pragma Import
- (C, Unreserve_All_Interrupts, "__gl_unreserve_all_interrupts");
-
begin
Abort_Task_Interrupt := SIGABRT;
@@ -167,22 +160,19 @@ package body System.Interrupt_Management 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. ??? (Dong-Ik)
+ -- In that case, this field should be changed back to 0. ???
- Result := sigemptyset (mask'Access);
+ Result := sigemptyset (Signal_Mask'Access);
pragma Assert (Result = 0);
- -- ??? For the same reason explained above, we can't mask these
- -- signals because otherwise we won't be able to catch more than
- -- one signal.
-
- -- for I in Exception_Interrupts'Range loop
- -- Result :=
- -- sigaddset (mask'Access, Signal (Exception_Interrupts (I)));
- -- pragma Assert (Result = 0);
- -- end loop;
+ for I in Exception_Interrupts'Range loop
+ Result :=
+ sigaddset
+ (Signal_Mask'Access, Signal (Exception_Interrupts (I)));
+ pragma Assert (Result = 0);
+ end loop;
- act.sa_mask := mask;
+ act.sa_mask := Signal_Mask;
for I in Exception_Interrupts'Range loop
Keep_Unmasked (Exception_Interrupts (I)) := True;
@@ -213,13 +203,12 @@ package body System.Interrupt_Management is
-- the user really wants to attach his own handler, let him.
-- FreeBSD pthreads uses setitimer/getitimer for thread scheduling.
- -- It's not clear, but it looks as if it only needs SIGVTALRM
- -- in order to handle the setitimer/getitimer operations. We
- -- could probably allow SIGALARM, but we'll leave it as unmasked
- -- for now. FreeBSD pthreads also needs SIGCHLD.
+ -- 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 (SIGALRM) := True;
- Keep_Unmasked (SIGVTALRM) := True;
+ Keep_Unmasked (SIGPROF) := True;
Reserve := Reserve or Keep_Unmasked or Keep_Masked;
@@ -228,9 +217,5 @@ package body System.Interrupt_Management is
-- to identify non-existent signals (see s-intnam.ads). Therefore,
-- Signal 0 should not be used in all signal related operations hence
-- mark it as reserved.
-
- end Initialize;
-
-begin
- Initialize;
+ end;
end System.Interrupt_Management;
diff --git a/lang/gnat/files/5fosinte.adb b/lang/gnat/files/5fosinte.adb
index e449cf5bf733..8d28fda71933 100644
--- a/lang/gnat/files/5fosinte.adb
+++ b/lang/gnat/files/5fosinte.adb
@@ -91,87 +91,11 @@ package body System.OS_Interface is
return (0);
end Get_Stack_Base;
- function pthread_getschedparam
- (thread : pthread_t;
- policy : access int;
- param : access struct_sched_param) return int is
-
- function pthread_getprio (thread : pthread_t) return int;
- pragma Import (C, pthread_getprio, "pthread_getprio");
-
- Result : int;
- begin
- Result := pthread_getprio (thread);
- if Result >= 0 then
- -- Only set sched_param if we succeeded. Also ensure
- -- we return a successful status to the caller.
- param.sched_priority := Result;
- Result := 0;
- end if;
- return (Result);
- end pthread_getschedparam;
-
- function pthread_setschedparam
- (thread : pthread_t;
- policy : int;
- param : access struct_sched_param) return int is
-
- function pthread_setprio (thread : pthread_t; prio : int) return int;
- pragma Import (C, pthread_setprio, "pthread_setprio");
-
- begin
- return (pthread_setprio (thread, param.sched_priority));
- end pthread_setschedparam;
-
- function pthread_attr_setschedpolicy
- (attr : access pthread_attr_t;
- policy : int) return int is
- begin
- return (0);
- end pthread_attr_setschedpolicy;
-
- function pthread_attr_getschedpolicy
- (attr : access pthread_attr_t;
- policy : access int) return int is
- begin
- return (0);
- end pthread_attr_getschedpolicy;
-
procedure pthread_init is
begin
null;
end pthread_init;
- function pthread_sigmask_set
- (how : int;
- set : access sigset_t)
- return int
- is
- function sigmask_set
- (how : int;
- set : access sigset_t;
- oset : sigset_t_ptr)
- return int;
- pragma Import (C, sigmask_set, "pthread_sigmask");
- begin
- return sigmask_set (how, set, null);
- end pthread_sigmask_set;
-
- function pthread_sigmask_oset
- (how : int;
- oset : access sigset_t)
- return int
- is
- function sigmask_oset
- (how : int;
- set : sigset_t_ptr;
- oset : access sigset_t)
- return int;
- pragma Import (C, sigmask_oset, "pthread_sigmask");
- begin
- return sigmask_oset (how, null, oset);
- end pthread_sigmask_oset;
-
-----------------
-- To_Duration --
-----------------
diff --git a/lang/gnat/files/5fosinte.ads b/lang/gnat/files/5fosinte.ads
index 63d773ae554b..42f9eedc5ae7 100644
--- a/lang/gnat/files/5fosinte.ads
+++ b/lang/gnat/files/5fosinte.ads
@@ -225,12 +225,21 @@ package System.OS_Interface is
-- sigcontext is architecture dependent, so define it private
type struct_sigcontext is private;
- type struct_sigaction is record
+ type old_struct_sigaction is record
sa_handler : System.Address;
sa_mask : sigset_t;
sa_flags : int;
end record;
- pragma Convention (C, struct_sigaction);
+ pragma Convention (C, old_struct_sigaction);
+
+ type new_struct_sigaction is record
+ sa_handler : System.Address;
+ sa_flags : int;
+ sa_mask : sigset_t;
+ end record;
+ pragma Convention (C, new_struct_sigaction);
+
+ subtype struct_sigaction is __FreeBSD__sigaction;
type struct_sigaction_ptr is access all struct_sigaction;
@@ -346,6 +355,8 @@ package System.OS_Interface is
type pthread_t is private;
+ subtype Thread_Id is pthread_t;
+
type pthread_mutex_t is limited private;
type pthread_cond_t is limited private;
type pthread_attr_t is limited private;
@@ -403,8 +414,6 @@ package System.OS_Interface is
-- POSIX.1c Section 3 --
---------------------------
- type sigset_t_ptr is access all sigset_t;
-
function sigwait
(set : access sigset_t;
sig : access Signal)
@@ -417,6 +426,8 @@ package System.OS_Interface is
return int;
pragma Import (C, pthread_kill, "pthread_kill");
+ type sigset_t_ptr is access all sigset_t;
+
function pthread_sigmask
(how : int;
set : sigset_t_ptr;
@@ -424,25 +435,6 @@ package System.OS_Interface is
return int;
pragma Import (C, pthread_sigmask, "pthread_sigmask");
- -- We declare two wrappers for pthread_sigmask, since null may need
- -- to be passed for either set or oset and this is not allowed
- -- in Ada for access mode parameters (the error was not catched by
- -- GNAT until recently, and a flag, -gnatdj, was added to allow it
- -- to compile).
-
- function pthread_sigmask_set
- (how : int;
- set : access sigset_t)
- return int;
- -- Identical to pthread_sigmask (how, set, null).
-
- function pthread_sigmask_oset
- (how : int;
- oset : access sigset_t)
- return int;
- -- Identical to pthread_sigmask (how, null, oset).
-
-
----------------------------
-- POSIX.1c Section 11 --
----------------------------
@@ -521,45 +513,58 @@ package System.OS_Interface is
-- POSIX.1c Section 13 --
----------------------------
- -- FreeBSD pthreads does not support these yet.
- --
- -- PTHREAD_PRIO_NONE : constant := 0;
- -- PTHREAD_PRIO_PROTECT : constant := 2;
- -- PTHREAD_PRIO_INHERIT : constant := 1;
+ PTHREAD_PRIO_NONE : constant := 0;
+ PTHREAD_PRIO_PROTECT : constant := 2;
+ PTHREAD_PRIO_INHERIT : constant := 1;
- -- FreeBSD doesn't have pthread_getschedparam or pthread_setschedparam
- -- yet, but we provide the compliant interface and implement them with
- -- pthread_getprio and pthread_setprio instead.
+ function pthread_mutexattr_setprotocol
+ (attr : access pthread_mutexattr_t;
+ protocol : int)
+ return int;
+ pragma Import
+ (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
- type struct_sched_param is record
- sched_priority : int;
- end record;
- pragma Convention (C, struct_sched_param);
+ function pthread_mutexattr_getprotocol
+ (attr : access pthread_mutexattr_t;
+ protocol : access int)
+ return int;
+ pragma Import
+ (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol");
- function sched_getparam
- (pid : pid_t;
- param : access struct_sched_param)
+ function pthread_mutexattr_setprioceiling
+ (attr : access pthread_mutexattr_t;
+ prioceiling : int)
return int;
- pragma Import (C, sched_getparam, "sched_getparam");
+ pragma Import
+ (C, pthread_mutexattr_setprioceiling,
+ "pthread_mutexattr_setprioceiling");
- function sched_setscheduler
- (pid : pid_t;
- policy : int;
- param : access struct_sched_param)
+ function pthread_mutexattr_getprioceiling
+ (attr : access pthread_mutexattr_t;
+ prioceiling : access int)
return int;
- pragma Import (C, sched_setscheduler, "sched_setscheduler");
+ pragma Import
+ (C, pthread_mutexattr_getprioceiling,
+ "pthread_mutexattr_getprioceiling");
+
+ type struct_sched_param is record
+ sched_priority : int;
+ end record;
+ pragma Convention (C, struct_sched_param);
function pthread_getschedparam
(thread : pthread_t;
policy : access int;
param : access struct_sched_param)
return int;
+ pragma Import (C, pthread_getschedparam, "pthread_getschedparam");
function pthread_setschedparam
(thread : pthread_t;
policy : int;
param : access struct_sched_param)
return int;
+ pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
function pthread_attr_setscope
(attr : access pthread_attr_t;
@@ -591,29 +596,27 @@ package System.OS_Interface is
(attr : access pthread_attr_t;
policy : int)
return int;
--- pragma Import
--- (C, pthread_attr_setschedpolicy,
--- "pthread_attr_setschedpolicy");
+ pragma Import (C, pthread_attr_setschedpolicy,
+ "pthread_attr_setschedpolicy");
function pthread_attr_getschedpolicy
(attr : access pthread_attr_t;
policy : access int)
return int;
--- pragma Import (C, pthread_attr_getschedpolicy,
--- "pthread_attr_getschedpolicy");
+ pragma Import (C, pthread_attr_getschedpolicy,
+ "pthread_attr_getschedpolicy");
- -- FreeBSD doesn't have pthread_attr_setschedparm and
- -- pthread_attr_getschedparm yet.
+ function pthread_attr_setschedparam
+ (attr : access pthread_attr_t;
+ sched_param : int)
+ return int;
+ pragma Import (C, pthread_attr_setschedparam, "pthread_attr_setschedparam");
--- function pthread_attr_setschedparam
--- (attr : access pthread_attr_t;
--- param : access struct_sched_param)
--- return int;
---
--- function pthread_attr_getschedparam
--- (attr : access pthread_attr_t;
--- param : access struct_sched_param)
--- return int;
+ function pthread_attr_getschedparam
+ (attr : access pthread_attr_t;
+ sched_param : access int)
+ return int;
+ pragma Import (C, pthread_attr_getschedparam, "pthread_attr_getschedparam");
function sched_yield return int;
pragma Import (C, sched_yield, "pthread_yield");
@@ -718,7 +721,12 @@ package System.OS_Interface is
private
- type sigset_t is new unsigned_long;
+ type sigset_t is array (1 .. __FreeBSD__sigset_words) of unsigned;
+
+ -- In FreeBSD the component sa_handler turns out to
+ -- be one a union type, and the selector is a macro:
+ -- #define sa_handler __sigaction_u._handler
+ -- #define sa_sigaction __sigaction_u._sigaction
-- Should we add a signal_context type here ?
-- How could it be done independent of the CPU architecture ?
@@ -728,11 +736,6 @@ private
type struct_sigcontext is null record;
pragma Convention (C, struct_sigcontext);
- -- In Solaris 2.4 the component sa_handler turns out to
- -- be one a union type, and the selector is a macro:
- -- #define sa_handler __funcptr._handler
- -- #define sa_sigaction __funcptr._sigaction
-
type pid_t is new int;
Self_PID : constant pid_t := 0;
diff --git a/lang/gnat/files/5ftaprop.adb b/lang/gnat/files/5ftaprop.adb
index 3c94fc5dc6bb..cf3cb14b9fd6 100644
--- a/lang/gnat/files/5ftaprop.adb
+++ b/lang/gnat/files/5ftaprop.adb
@@ -44,6 +44,9 @@ pragma Polling (Off);
with System.Tasking.Debug;
-- used for Known_Tasks
+with System.Task_Info;
+-- used for Task_Info_Type
+
with Interfaces.C;
-- used for int
-- size_t
@@ -58,9 +61,6 @@ with System.Interrupt_Management.Operations;
-- All_Tasks_Mask
pragma Elaborate_All (System.Interrupt_Management.Operations);
-with System.OS_Interface;
--- used for various type, constant, and operations
-
with System.Parameters;
-- used for Size_Type
@@ -68,11 +68,13 @@ with System.Tasking;
-- used for Ada_Task_Control_Block
-- Task_ID
-with System.Tasking.Initialization;
+with System.Soft_Links;
-- used for Defer/Undefer_Abort
-with System.Task_Info;
--- used for Task_Image_Type
+-- Note that we do not use System.Tasking.Initialization directly since
+-- this is a higher level package that we shouldn't depend on. For example
+-- when using the restricted run time, it is replaced by
+-- System.Tasking.Restricted.Initialization
with System.OS_Primitives;
-- used for Delay_Modes
@@ -89,6 +91,8 @@ package body System.Task_Primitives.Operations is
use System.Parameters;
use System.OS_Primitives;
+ package TSL renames System.Soft_Links;
+
pragma Linker_Options ("-pthread");
------------------
@@ -114,7 +118,6 @@ package body System.Task_Primitives.Operations is
Time_Slice_Val : Integer;
pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
-
-----------------------
-- Local Subprograms --
-----------------------
@@ -264,6 +267,15 @@ package body System.Task_Primitives.Operations is
end if;
end Stack_Guard;
+ --------------------
+ -- Get_Thread_Id --
+ --------------------
+
+ function Get_Thread_Id (T : ST.Task_ID) return OSI.Thread_Id is
+ begin
+ return T.LL.Thread;
+ end Get_Thread_Id;
+
----------
-- Self --
----------
@@ -287,6 +299,8 @@ package body System.Task_Primitives.Operations is
is
Attributes : aliased pthread_mutexattr_t;
Result : Interfaces.C.int;
+ Adjusted_Prio : Interfaces.C.int;
+
begin
Result := pthread_mutexattr_init (Attributes'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
@@ -295,6 +309,18 @@ package body System.Task_Primitives.Operations is
raise STORAGE_ERROR;
end if;
+ Result := pthread_mutexattr_setprotocol
+ (Attributes'Access, PTHREAD_PRIO_PROTECT);
+ pragma Assert (Result = 0);
+
+ -- 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;
+ Result := pthread_mutexattr_setprioceiling
+ (Attributes'Access, Interfaces.C.int (Adjusted_Prio));
+ pragma Assert (Result = 0);
+
Result := pthread_mutex_init (L, Attributes'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
@@ -310,6 +336,7 @@ package body System.Task_Primitives.Operations is
procedure Initialize_Lock (L : access RTS_Lock; Level : Lock_Level) is
Attributes : aliased pthread_mutexattr_t;
Result : Interfaces.C.int;
+ Adjusted_Prio : Interfaces.C.int;
begin
Result := pthread_mutexattr_init (Attributes'Access);
@@ -319,6 +346,23 @@ package body System.Task_Primitives.Operations is
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;
+
+ 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));
+ pragma Assert (Result = 0);
+
Result := pthread_mutex_init (L, Attributes'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
@@ -464,7 +508,7 @@ package body System.Task_Primitives.Operations is
Yielded := False;
if Mode = Relative then
- Abs_Time := Time + Check_Time;
+ Abs_Time := Duration'Min (Time, Max_Sensible_Delay) + Check_Time;
else
Abs_Time := Time;
end if;
@@ -517,7 +561,7 @@ package body System.Task_Primitives.Operations is
-- locking Self_ID is the reason we need to
-- check for pending abort and priority change below! :(
- Initialization.Defer_Abort_Nestable (Self_ID);
+ TSL.Abort_Defer.all;
Write_Lock (Self_ID);
if Mode = Relative then
@@ -553,7 +597,7 @@ package body System.Task_Primitives.Operations is
Unlock (Self_ID);
Result := sched_yield;
- Initialization.Undefer_Abort_Nestable (Self_ID);
+ TSL.Abort_Undefer.all;
end Timed_Delay;
-----------
@@ -561,17 +605,25 @@ package body System.Task_Primitives.Operations is
-----------
function Clock return Duration is
- TV : aliased struct_timeval;
+ TS : aliased timespec;
Result : Interfaces.C.int;
begin
- -- We should use clock_gettime() for FreeBSD 3.x; FreeBSD 2.x
- -- doesn't have clock_gettime.
- Result := gettimeofday (TV'Unchecked_Access, System.Null_Address);
+ Result := clock_gettime
+ (clock_id => CLOCK_REALTIME, tp => TS'Unchecked_Access);
pragma Assert (Result = 0);
- return To_Duration (TV);
+ return To_Duration (TS);
end Clock;
+ -------------------
+ -- RT_Resolution --
+ -------------------
+
+ function RT_Resolution return Duration is
+ begin
+ return 10#1.0#E-6;
+ end RT_Resolution;
+
------------
-- Wakeup --
------------
@@ -588,18 +640,24 @@ package body System.Task_Primitives.Operations is
-- Yield --
-----------
- procedure Yield is
+ procedure Yield (Do_Yield : Boolean := True) is
Result : Interfaces.C.int;
begin
- Result := sched_yield;
+ if Do_Yield then
+ Result := sched_yield;
+ end if;
end Yield;
------------------
-- Set_Priority --
------------------
- procedure Set_Priority (T : Task_ID; Prio : System.Any_Priority) is
+ procedure Set_Priority
+ (T : Task_ID;
+ Prio : System.Any_Priority;
+ Loss_Of_Inheritance : Boolean := False)
+ is
Result : Interfaces.C.int;
Param : aliased struct_sched_param;
@@ -654,6 +712,15 @@ package body System.Task_Primitives.Operations is
Unlock_All_Tasks_List;
end Enter_Task;
+ --------------
+ -- New_ATCB --
+ --------------
+
+ function New_ATCB (Entry_Num : Task_Entry_Index) return Task_ID is
+ begin
+ return new Ada_Task_Control_Block (Entry_Num);
+ end New_ATCB;
+
----------------------
-- Initialize_TCB --
----------------------
@@ -662,6 +729,7 @@ package body System.Task_Primitives.Operations is
Mutex_Attr : aliased pthread_mutexattr_t;
Result : Interfaces.C.int;
Cond_Attr : aliased pthread_condattr_t;
+ Adjusted_Prio : Interfaces.C.int;
begin
-- Give the task a unique serial number.
@@ -678,6 +746,19 @@ package body System.Task_Primitives.Operations is
return;
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;
+
+ 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));
+ pragma Assert (Result = 0);
+
Result := pthread_mutex_init (Self_ID.LL.L'Access, Mutex_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
@@ -712,7 +793,6 @@ package body System.Task_Primitives.Operations is
pragma Assert (Result = 0);
Succeeded := True;
-
end Initialize_TCB;
-----------------
@@ -726,7 +806,7 @@ package body System.Task_Primitives.Operations is
Priority : System.Any_Priority;
Succeeded : out Boolean)
is
- use type System.Task_Info.Task_Image_Type;
+ use System.Task_Info;
Attributes : aliased pthread_attr_t;
Adjusted_Stack_Size : Interfaces.C.size_t;
@@ -772,6 +852,21 @@ package body System.Task_Primitives.Operations is
(Attributes'Access, Interfaces.C.size_t (Adjusted_Stack_Size));
pragma Assert (Result = 0);
+ if Time_Slice_Supported and then Time_Slice_Val > 0 then
+ Result := pthread_attr_setschedpolicy (Attributes'Access, SCHED_RR);
+ pragma Assert (Result = 0);
+ end if;
+
+ if T.Task_Info /= Default_Scope then
+
+ -- We are assuming that Scope_Type has the same values than the
+ -- corresponding C macros
+
+ Result := pthread_attr_setscope
+ (Attributes'Access, Task_Info_Type'Pos (T.Task_Info));
+ pragma Assert (Result = 0);
+ end if;
+
-- Since the initial signal mask of a thread is inherited from the
-- creator, and the Environment task has all its signals masked, we
-- do not need to manipulate caller's signal mask at this point.
@@ -784,7 +879,13 @@ package body System.Task_Primitives.Operations is
To_Address (T));
pragma Assert (Result = 0 or else Result = EAGAIN);
- Succeeded := Result = 0;
+ if Result /= 0 then
+ Result := pthread_attr_destroy (Attributes'Access);
+ Succeeded := false;
+ return;
+ end if;
+
+ Succeeded := true;
if T.Task_Image /= null then
declare
@@ -893,6 +994,28 @@ package body System.Task_Primitives.Operations is
Unlock (All_Tasks_L'Access);
end Unlock_All_Tasks_List;
+ ------------------
+ -- Suspend_Task --
+ ------------------
+
+ function Suspend_Task
+ (T : ST.Task_ID;
+ Thread_Self : Thread_Id) return Boolean is
+ begin
+ return False;
+ end Suspend_Task;
+
+ -----------------
+ -- Resume_Task --
+ -----------------
+
+ function Resume_Task
+ (T : ST.Task_ID;
+ Thread_Self : Thread_Id) return Boolean is
+ begin
+ return False;
+ end Resume_Task;
+
----------------
-- Initialize --
----------------
@@ -902,7 +1025,9 @@ 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;
@@ -933,8 +1058,12 @@ package body System.Task_Primitives.Operations is
pragma Assert (Result = 0);
if Time_Slice_Supported and then Time_Slice_Val > 0 then
- if sched_getparam (Self_PID, param'Access) = 0 then
- Result := sched_setscheduler (Self_PID, SCHED_RR, param'Access);
+ -- 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;
diff --git a/lang/gnat/files/5ftaspri.ads b/lang/gnat/files/5ftaspri.ads
index 30922667f92e..e38d94f5068f 100644
--- a/lang/gnat/files/5ftaspri.ads
+++ b/lang/gnat/files/5ftaspri.ads
@@ -37,6 +37,10 @@
-- This is the FreeBSD PTHREADS version of this package. Contributed
-- by Daniel M. Eischen (eischen@vigrid.com).
+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.
+
with Interfaces.C;
-- used for int
-- size_t
@@ -72,7 +76,7 @@ private
type RTS_Lock is new System.OS_Interface.pthread_mutex_t;
type Private_Data is record
- Thread : aliased System.OS_Interface.pthread_t;
+ Thread : aliased System.OS_Interface.pthread_t;
pragma Atomic (Thread);
-- Thread field may be updated by two different threads of control.
-- (See, Enter_Task and Create_Task in s-taprop.adb).
@@ -80,10 +84,16 @@ private
-- use lock on those operations and the only thing we have to
-- make sure is that they are updated in atomic fashion.
+ LWP : aliased System.Address;
+ -- This field is not relevant on all targets. Currently only SGI and
+ -- AiX updates it. The purpose of this field is to provide a better
+ -- tasking support on gdb. The order of the two first fields (Thread
+ -- and LWP) is important.
+
CV : aliased System.OS_Interface.pthread_cond_t;
L : aliased RTS_Lock;
- -- protection for all components is lock L
+ -- Protection for all components is lock L
Current_Priority : Interfaces.C.int := 0;
-- Active priority, except that the effects of protected object
diff --git a/lang/gnat/files/freebsdgcc28-patches b/lang/gnat/files/freebsdgcc28-patches
index 58db454627eb..50b520273a14 100644
--- a/lang/gnat/files/freebsdgcc28-patches
+++ b/lang/gnat/files/freebsdgcc28-patches
@@ -1,163 +1,36 @@
---- config/i386/freebsd.h.orig Sun Oct 19 09:31:05 1997
-+++ config/i386/freebsd.h Tue Aug 11 14:28:56 1998
-@@ -35,10 +35,21 @@
- #include "i386/perform.h"
-
- #undef CPP_PREDEFINES
--#define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__ -D__386BSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
-+#define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__=2 -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
-+
-+/* FreeBSD using a.out does not support DWARF2 unwinding mechanisms.
+--- config/i386/freebsd.h.orig Fri Dec 5 04:15:34 1997
++++ config/i386/freebsd.h Sun Mar 21 17:59:06 1999
+@@ -26,8 +26,18 @@
+
+ /* The svr4 ABI for the i386 says that records and unions are returned
+ in memory. */
++/* On FreeBSD, we do not. */
+ #undef DEFAULT_PCC_STRUCT_RETURN
+-#define DEFAULT_PCC_STRUCT_RETURN 1
++#define DEFAULT_PCC_STRUCT_RETURN 0
++
++/* This gets defined in tm.h->linux.h->svr4.h, and keeps us from using
++ libraries compiled with the native cc, so undef it. */
++#undef NO_DOLLAR_IN_LABEL
++
++/* FreeBSD using ELF does not support DWARF2 unwinding mechanisms.
+ Thus, need the equivalent of "-fsjlj-exceptions" (use setjmp/longjmp
+ for exceptions). */
+#define DWARF2_UNWIND_INFO 0
-+
-+/* Provide a CPP_SPEC appropriate for OpenBSD. Current we just deal with
-+ the GCC option `-posix'. */
-+
-+#undef CPP_SPEC
-+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE}"
-
- /* Like the default, except no -lg. */
--#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}"
-+#define LIB_SPEC "%{!shared:%{!pg:-lc}%{pg:-lc_p}}"
-
- #undef SIZE_TYPE
- #define SIZE_TYPE "unsigned int"
-@@ -54,8 +65,13 @@
- #undef WCHAR_TYPE_SIZE
- #define WCHAR_TYPE_SIZE 16
-
-+/* We have atexit(3). */
- #define HAVE_ATEXIT
-
-+/* We want gcc.c to call mktemp() for each file it generates. We would
-+ prefer mkstemp(), but we will take what we get. XXX busted */
-+/* #undef MKTEMP_EACH_FILE */
-+
- #undef ASM_APP_ON
- #define ASM_APP_ON "#APP\n"
-
-@@ -114,6 +130,7 @@
-
- #define TYPE_ASM_OP ".type"
- #define SIZE_ASM_OP ".size"
-+#define SET_ASM_OP ".set"
-
- /* The following macro defines the format used to output the second
- operand of the .type assembler directive. Different svr4 assemblers
-@@ -123,6 +140,16 @@
-
- #define TYPE_OPERAND_FMT "@%s"
-+/* Handle #pragma weak and #pragma pack. */
-+
-+#define HANDLE_SYSV_PRAGMA 1
-+
-+/* This is how we tell the assembler that a symbol is weak. */
-+
-+#define ASM_WEAKEN_LABEL(FILE,NAME) \
-+ do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
-+ fputc ('\n', FILE); } while (0)
-+
- /* Write the extra assembler code needed to declare a function's result.
- Most svr4 assemblers don't require any special declaration of the
- result value, but there are exceptions. */
-@@ -131,9 +158,9 @@
- #define ASM_DECLARE_RESULT(FILE, RESULT)
- #endif
-
--/* These macros generate the special .type and .size directives which
-+/* these macros generate the special .type and .size directives which
- are used to set the corresponding fields of the linker symbol table
-- entries in an ELF object file under SVR4. These macros also output
-+ entries in an elf object file under svr4. these macros also output
- the starting labels for the relevant functions/objects. */
-
- /* Write the extra assembler code needed to declare a function properly.
-@@ -185,6 +212,7 @@
- && DECL_INITIAL (DECL) == error_mark_node \
- && !size_directive_output) \
- { \
-+ size_directive_output = 1; \
- fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \
- assemble_name (FILE, name); \
- fprintf (FILE, ",%d\n", int_size_in_bytes (TREE_TYPE (DECL)));\
-@@ -213,33 +241,57 @@
- } \
- } while (0)
-
-+/* XXX - should ASM_SPEC be " %| %{fpic:-k} %{fPIC:-k -K}" ??? */
- #define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}"
-+
- #define LINK_SPEC \
-- "%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*}"
-+ "%{p:%e`-p' not supported; use `-pg' and gprof(1)} \
-+ %{shared:-Bshareable} \
-+ %{!shared:%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} \
-+ %{pg:-Bstatic} %{Z}} \
-+ %{assert*} %{R*}"
-+
-+#ifdef FROM_OPENBSD
-+/* This defines which switch letters take arguments.
-+ make -R /path/to/lib work the same as -R/path/to/lib */
-+#undef SWITCH_TAKES_ARG
-+#define SWITCH_TAKES_ARG(CHAR) \
-+ (DEFAULT_SWITCH_TAKES_ARG(CHAR) \
-+ || (CHAR) == 'R')
-+#endif
-+
-+#define STARTFILE_SPEC \
-+ "%{shared:c++rt0.o%s} \
-+ %{!shared:%{pg:gcrt0.o%s}%{!pg:%{static:scrt0.o%s}%{!static:crt0.o%s}}}"
+ /* This is how to output an element of a case-vector that is relative.
+ This is only used for PIC code. See comments by the `casesi' insn in
+@@ -140,7 +150,7 @@
+ #define WCHAR_TYPE_SIZE BITS_PER_WORD
+
+ #undef CPP_PREDEFINES
+-#define CPP_PREDEFINES "-Dunix -D__ELF__ -D__FreeBSD__=2 -Asystem(FreeBSD)"
++#define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__=3 -Asystem(FreeBSD) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
--/* This is defined when gcc is compiled in the BSD-directory-tree, and must
-- * make up for the gap to all the stuff done in the GNU-makefiles.
-+#define MD_STARTFILE_PREFIX "/usr/lib/aout/"
-+
-+/* FREEBSD_NATIVE is defined when gcc is compiled in the BSD-directory-tree,
-+ * and must make up for the gap to all the stuff done in the GNU-makefiles.
- */
-
- #ifdef FREEBSD_NATIVE
-
--#define INCLUDE_DEFAULTS { \
-- { "/usr/include", 0, 0, 0 }, \
-- { "/usr/include/g++", "G++", 1, 1 }, \
-- { 0, 0, 0, 0} \
-- }
-+#undef GCC_INCLUDE_DIR
-+#define GCC_INCLUDE_DIR "/usr/include"
-+
-+#undef GPLUSPLUS_INCLUDE_DIR
-+#define GPLUSPLUS_INCLUDE_DIR "/usr/include/g++"
-+
-+/* Look for the include files in the system-defined places. */
-+
-+#undef INCLUDE_DEFAULTS
-+#define INCLUDE_DEFAULTS \
-+ { \
-+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 }, \
-+ { GCC_INCLUDE_DIR, 0, 0, 0 }, \
-+ { 0, 0, 0, 0 } \
-+ }
-
- #undef MD_EXEC_PREFIX
- #define MD_EXEC_PREFIX "/usr/libexec/"
-
- #undef STANDARD_STARTFILE_PREFIX
- #define STANDARD_STARTFILE_PREFIX "/usr/lib"
--
--#if 0 /* This is very wrong!!! */
--#define DEFAULT_TARGET_MACHINE "i386-unknown-freebsd_1.0"
--#define GPLUSPLUS_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include"
--#define TOOL_INCLUDE_DIR "/usr/local/i386-unknown-freebsd_1.0/include"
--#define GCC_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include"
--#endif
-
- #endif /* FREEBSD_NATIVE */
+ #undef CPP_SPEC
+ #define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
--- configure.orig Sat Feb 28 18:02:02 1998
-+++ configure Tue Aug 11 13:51:17 1998
++++ configure Mon Feb 8 11:51:44 1999
@@ -677,9 +677,9 @@
if test -z "$ac_aux_dir"; then
{ echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
@@ -207,6 +80,33 @@
i370-*-mvs*)
;;
i[34567]86-ibm-aix*) # IBM PS/2 running AIX
+@@ -3256,20 +3278,20 @@
+ # Next line turned off because both 386BSD and BSD/386 use GNU ld.
+ # use_collect2=yes
+ ;;
+- i[34567]86-*-freebsdelf*)
+- tm_file="i386/i386.h i386/att.h linux.h i386/freebsd-elf.h i386/perform.h"
++ i[34567]86-*-freebsdaout*)
++ tm_file=i386/freebsd-aout.h
+ # On FreeBSD, the headers are already ok, except for math.h.
+ fixincludes=fixinc.math
+ tmake_file=i386/t-freebsd
+- gas=yes
+- gnu_ld=yes
+- stabs=yes
+ ;;
+ i[34567]86-*-freebsd*)
+- tm_file=i386/freebsd.h
++ tm_file="i386/i386.h i386/att.h linux.h i386/freebsd.h i386/perform.h"
+ # On FreeBSD, the headers are already ok, except for math.h.
+ fixincludes=fixinc.math
+ tmake_file=i386/t-freebsd
++ gas=yes
++ gnu_ld=yes
++ stabs=yes
+ ;;
+ i[34567]86-*-netbsd*)
+ tm_file=i386/netbsd.h
@@ -3277,6 +3299,13 @@
fixincludes=fixinc.math
tmake_file=t-netbsd
@@ -344,11 +244,23 @@
/* If all else fails, use the current directory! */
--- flags.h.orig Wed Dec 31 05:02:33 1997
-+++ flags.h Tue Aug 11 13:31:22 1998
-@@ -216,6 +216,20 @@
++++ flags.h Wed Mar 31 00:08:39 1999
+@@ -125,6 +125,10 @@
- extern int flag_unroll_all_loops;
+ extern int warn_aggregate_return;
++/* Nonzero means that -Wformat accepts certain non-ANSI formats. */
++
++extern int flag_format_extensions;
++
+ /* Nonzero if generating code to do profiling. */
+
+ extern int profile_flag;
+@@ -215,6 +219,20 @@
+ This is generally not a win. */
+
+ extern int flag_unroll_all_loops;
++
+/* Nonzero forces all invariant computations in loops to be moved
+ outside the loop. */
+
@@ -362,12 +274,11 @@
+/* Nonzero gets another run of loop_optimize performed. */
+
+extern int flag_rerun_loop_opt;
-+
+
/* Nonzero for -fcse-follow-jumps:
have cse follow jumps to do a more extensive job. */
-
--- toplev.c.orig Wed Feb 25 18:04:46 1998
-+++ toplev.c Tue Aug 11 14:40:22 1998
++++ toplev.c Wed Mar 31 00:15:41 1999
@@ -463,6 +463,20 @@
int flag_unroll_all_loops;
@@ -389,6 +300,25 @@
/* Nonzero for -fwritable-strings:
store string constants in data segment and don't uniquize them. */
+@@ -691,6 +705,7 @@
+ {"stack-check", &flag_stack_check, 1},
+ {"bytecode", &output_bytecode, 1},
+ {"check-memory-usage", &flag_check_memory_usage, 1},
++ {"format-extensions", &flag_format_extensions, 1},
+ {"prefix-function-name", &flag_prefix_function_name, 1}
+ };
+
+@@ -880,6 +895,10 @@
+ {"uninitialized", &warn_uninitialized, 1},
+ {"inline", &warn_inline, 1}
+ };
++
++/* Nonzero means that -Wformat accepts certain system-dependent formats. */
++
++int flag_format_extensions = 0;
+
+ /* Output files for assembler code (real compiler output)
+ and debugging dumps. */
--- loop.c.orig Fri Feb 6 11:23:34 1998
+++ loop.c Tue Aug 11 16:57:35 1998
@@ -1637,6 +1637,7 @@
@@ -503,6 +433,333 @@
@item -fno-peephole
Disable any machine-specific peephole optimizations.
+--- expmed.c.dist Sat Nov 8 14:11:58 1997
++++ expmed.c Thu Aug 13 11:18:13 1998
+@@ -2249,7 +2249,8 @@
+ rtx shift_subtarget = preserve ? 0 : accum;
+ rtx add_target
+ = (opno == alg.ops - 1 && target != 0 && variant != add_variant
+- ? target : 0);
++ && ! preserve)
++ ? target : 0;
+ rtx accum_target = preserve ? 0 : accum;
+
+ switch (alg.op[opno])
+@@ -2716,6 +2717,7 @@
+ optab optab1, optab2;
+ int op1_is_constant, op1_is_pow2;
+ int max_cost, extra_cost;
++ static HOST_WIDE_INT last_div_const = 0;
+
+ op1_is_constant = GET_CODE (op1) == CONST_INT;
+ op1_is_pow2 = (op1_is_constant
+@@ -2825,8 +2827,15 @@
+ size = GET_MODE_BITSIZE (mode);
+ #endif
+
++ /* Only deduct something for a REM if the last divide done was
++ for a different constant. Then set the constant of the last
++ divide. */
+ max_cost = div_cost[(int) compute_mode]
+- - (rem_flag ? mul_cost[(int) compute_mode] + add_cost : 0);
++ - (rem_flag && ! (last_div_const != 0 && op1_is_constant
++ && INTVAL (op1) == last_div_const)
++ ? mul_cost[(int) compute_mode] + add_cost : 0);
++
++ last_div_const = ! rem_flag && op1_is_constant ? INTVAL (op1) : 0;
+
+ /* Now convert to the best mode to use. */
+ if (compute_mode != mode)
+--- configure.in.orig Sat Feb 28 12:58:12 1998
++++ configure.in Tue Feb 9 02:24:34 1999
+@@ -303,6 +303,13 @@
+ a29k-*-*) # Default a29k environment.
+ use_collect2=yes
+ ;;
++ alpha*-*-freebsd*)
++ tm_file=alpha/freebsd.h
++ # On FreeBSD, the headers are already ok, except for math.h. (??right??)
++ fixincludes=fixinc.math
++ fixincludes=fixinc.math
++ tmake_file=t-libc-ok
++ ;;
+ alpha*-*-linux-gnuecoff*)
+ tm_file="${tm_file} alpha/linux.h"
+ xm_file="${xm_file} alpha/xm-linux.h"
+@@ -762,20 +769,20 @@
+ # Next line turned off because both 386BSD and BSD/386 use GNU ld.
+ # use_collect2=yes
+ ;;
+- i[[34567]]86-*-freebsdelf*)
+- tm_file="i386/i386.h i386/att.h linux.h i386/freebsd-elf.h i386/perform.h"
++ i[[34567]]86-*-freebsdaout*)
++ tm_file=i386/freebsd.h
+ # On FreeBSD, the headers are already ok, except for math.h.
+ fixincludes=fixinc.math
+ tmake_file=i386/t-freebsd
+- gas=yes
+- gnu_ld=yes
+- stabs=yes
+ ;;
+ i[[34567]]86-*-freebsd*)
+- tm_file=i386/freebsd.h
++ tm_file="i386/i386.h i386/att.h linux.h i386/freebsd.h i386/perform.h"
+ # On FreeBSD, the headers are already ok, except for math.h.
+ fixincludes=fixinc.math
+ tmake_file=i386/t-freebsd
++ gas=yes
++ gnu_ld=yes
++ stabs=yes
+ ;;
+ i[[34567]]86-*-netbsd*)
+ tm_file=i386/netbsd.h
+--- c-common.c.orig Wed Feb 18 19:16:13 1998
++++ c-common.c Tue Mar 30 14:42:30 1999
+@@ -623,6 +623,7 @@
+ int format_num;
+ int first_arg_num;
+ int is_scan;
++ int null_format_ok;
+ tree argument;
+ int arg_num;
+
+@@ -637,12 +638,26 @@
+ && (!strcmp (IDENTIFIER_POINTER (format_type), "printf")
+ || !strcmp (IDENTIFIER_POINTER (format_type),
+ "__printf__")))
+- is_scan = 0;
++ {
++ is_scan = 0;
++ null_format_ok = 0;
++ }
++ else if (TREE_CODE (format_type) == IDENTIFIER_NODE
++ && (!strcmp (IDENTIFIER_POINTER (format_type), "printf0")
++ || !strcmp (IDENTIFIER_POINTER (format_type),
++ "__printf0__")))
++ {
++ is_scan = 0;
++ null_format_ok = 1;
++ }
+ else if (TREE_CODE (format_type) == IDENTIFIER_NODE
+ && (!strcmp (IDENTIFIER_POINTER (format_type), "scanf")
+ || !strcmp (IDENTIFIER_POINTER (format_type),
+ "__scanf__")))
+- is_scan = 1;
++ {
++ is_scan = 1;
++ null_format_ok = 0;
++ }
+ else if (TREE_CODE (format_type) == IDENTIFIER_NODE)
+ {
+ error ("`%s' is an unrecognized format function type",
+@@ -651,7 +666,7 @@
+ }
+ else
+ {
+- error ("unrecognized format specifier");
++ error_with_decl (decl, "unrecognized format specifier");
+ continue;
+ }
+
+@@ -718,7 +733,8 @@
+
+ record_function_format (DECL_NAME (decl),
+ DECL_ASSEMBLER_NAME (decl),
+- is_scan, format_num, first_arg_num);
++ is_scan, null_format_ok, format_num,
++ first_arg_num);
+ break;
+ }
+
+@@ -906,6 +922,7 @@
+ int pointer_count;
+ /* Type of argument if no length modifier is used. */
+ tree *nolen;
++ /* EGCS has tree *hhlen -- length modifier for shortening to byte */
+ /* Type of argument if length modifier for shortening is used.
+ If NULL, then this modifier is not allowed. */
+ tree *hlen;
+@@ -926,6 +943,11 @@
+ } format_char_info;
+
+ static format_char_info print_char_table[] = {
++/* FreeBSD kernel extensions. */
++ { "D", 1, T_C, NULL, NULL, NULL, NULL, NULL, "-wp" },
++ { "b", 1, T_C, NULL, NULL, NULL, NULL, NULL, "-wp" },
++ { "rz", 0, NULL, T_I, T_L, NULL, NULL, NULL, "-wp0 +#" },
++#define unextended_print_char_table (print_char_table + 3)
+ { "di", 0, T_I, T_I, T_L, T_LL, T_LL, T_ST, "-wp0 +" },
+ { "oxX", 0, T_UI, T_UI, T_UL, T_ULL, T_ULL, T_ST, "-wp0#" },
+ { "u", 0, T_UI, T_UI, T_UL, T_ULL, T_ULL, T_ST, "-wp0" },
+@@ -960,6 +982,7 @@
+ tree name; /* identifier such as "printf" */
+ tree assembler_name; /* optional mangled identifier (for C++) */
+ int is_scan; /* TRUE if *scanf */
++ int null_format_ok; /* TRUE if the format string may be NULL */
+ int format_num; /* number of format argument */
+ int first_arg_num; /* number of first arg (zero for varargs) */
+ } function_format_info;
+@@ -991,15 +1014,15 @@
+ void
+ init_function_format_info ()
+ {
+- record_function_format (get_identifier ("printf"), NULL_TREE, 0, 1, 2);
+- record_function_format (get_identifier ("fprintf"), NULL_TREE, 0, 2, 3);
+- record_function_format (get_identifier ("sprintf"), NULL_TREE, 0, 2, 3);
+- record_function_format (get_identifier ("scanf"), NULL_TREE, 1, 1, 2);
+- record_function_format (get_identifier ("fscanf"), NULL_TREE, 1, 2, 3);
+- record_function_format (get_identifier ("sscanf"), NULL_TREE, 1, 2, 3);
+- record_function_format (get_identifier ("vprintf"), NULL_TREE, 0, 1, 0);
+- record_function_format (get_identifier ("vfprintf"), NULL_TREE, 0, 2, 0);
+- record_function_format (get_identifier ("vsprintf"), NULL_TREE, 0, 2, 0);
++ record_function_format (get_identifier ("printf"), NULL_TREE, 0, 0, 1, 2);
++ record_function_format (get_identifier ("fprintf"), NULL_TREE, 0, 0, 2, 3);
++ record_function_format (get_identifier ("sprintf"), NULL_TREE, 0, 0, 2, 3);
++ record_function_format (get_identifier ("scanf"), NULL_TREE, 1, 0, 1, 2);
++ record_function_format (get_identifier ("fscanf"), NULL_TREE, 1, 0, 2, 3);
++ record_function_format (get_identifier ("sscanf"), NULL_TREE, 1, 0, 2, 3);
++ record_function_format (get_identifier ("vprintf"), NULL_TREE, 0, 0, 1, 0);
++ record_function_format (get_identifier ("vfprintf"), NULL_TREE, 0, 0, 2, 0);
++ record_function_format (get_identifier ("vsprintf"), NULL_TREE, 0, 0, 2, 0);
+
+ record_international_format (get_identifier ("gettext"), NULL_TREE, 1);
+ record_international_format (get_identifier ("dgettext"), NULL_TREE, 2);
+@@ -1016,11 +1039,12 @@
+ (e.g. for varargs such as vfprintf). */
+
+ void
+-record_function_format (name, assembler_name, is_scan,
++record_function_format (name, assembler_name, is_scan, null_format_ok,
+ format_num, first_arg_num)
+ tree name;
+ tree assembler_name;
+ int is_scan;
++ int null_format_ok;
+ int format_num;
+ int first_arg_num;
+ {
+@@ -1044,6 +1068,7 @@
+ }
+
+ info->is_scan = is_scan;
++ info->null_format_ok = null_format_ok;
+ info->format_num = format_num;
+ info->first_arg_num = first_arg_num;
+ }
+@@ -1194,7 +1219,8 @@
+
+ if (integer_zerop (format_tree))
+ {
+- warning ("null format string");
++ if (!info->null_format_ok)
++ warning ("null format string");
+ return;
+ }
+ if (TREE_CODE (format_tree) != ADDR_EXPR)
+@@ -1329,6 +1355,7 @@
+ It will work on most machines, because size_t and int
+ have the same mode. But might as well warn anyway,
+ since it will fail on other machines. */
++ /* XXX should we allow unsigned ints here? */
+ if ((TYPE_MAIN_VARIANT (TREE_TYPE (cur_param))
+ != integer_type_node)
+ &&
+@@ -1336,7 +1363,7 @@
+ != unsigned_type_node))
+ {
+ sprintf (message,
+- "field width is not type int (arg %d)",
++ "precision is not type int (arg %d)",
+ arg_num);
+ warning (message);
+ }
+@@ -1371,6 +1398,7 @@
+ cur_param = TREE_VALUE (params);
+ params = TREE_CHAIN (params);
+ ++arg_num;
++ /* XXX should we allow unsigned ints here? */
+ if (TYPE_MAIN_VARIANT (TREE_TYPE (cur_param))
+ != integer_type_node)
+ {
+@@ -1388,6 +1416,56 @@
+ }
+ }
+ }
++ if (*format_chars == 'b')
++ {
++ /* There should be an int arg to control the string arg. */
++ if (params == 0)
++ {
++ warning (tfaff);
++ return;
++ }
++ if (info->first_arg_num != 0)
++ {
++ cur_param = TREE_VALUE (params);
++ params = TREE_CHAIN (params);
++ ++arg_num;
++ if ((TYPE_MAIN_VARIANT (TREE_TYPE (cur_param))
++ != integer_type_node)
++ &&
++ (TYPE_MAIN_VARIANT (TREE_TYPE (cur_param))
++ != unsigned_type_node))
++ {
++ sprintf (message, "bitmap is not type int (arg %d)",
++ arg_num);
++ warning (message);
++ }
++ }
++ }
++ if (*format_chars == 'D')
++ {
++ /* There should be an unsigned char * arg before the string arg. */
++ if (params == 0)
++ {
++ warning (tfaff);
++ return;
++ }
++ if (info->first_arg_num != 0)
++ {
++ cur_param = TREE_VALUE (params);
++ params = TREE_CHAIN (params);
++ ++arg_num;
++ cur_type = TREE_TYPE (cur_param);
++ if (TREE_CODE (cur_type) != POINTER_TYPE
++ || TYPE_MAIN_VARIANT (TREE_TYPE (cur_type))
++ != unsigned_char_type_node)
++ {
++ sprintf (message,
++ "ethernet address is not type unsigned char * (arg %d)",
++ arg_num);
++ warning (message);
++ }
++ }
++ }
+ if (*format_chars == 'h' || *format_chars == 'l')
+ length_char = *format_chars++;
+ else if (*format_chars == 'q' || *format_chars == 'L')
+@@ -1436,7 +1514,9 @@
+ continue;
+ }
+ format_chars++;
+- fci = info->is_scan ? scan_char_table : print_char_table;
++ fci = info->is_scan ? scan_char_table
++ : flag_format_extensions ? print_char_table
++ : unextended_print_char_table;
+ while (fci->format_chars != 0
+ && index (fci->format_chars, format_char) == 0)
+ ++fci;
+--- c-tree.h.orig Fri Aug 8 13:09:02 1997
++++ c-tree.h Tue Mar 30 14:14:51 1999
+@@ -162,7 +162,7 @@
+ extern void declare_function_name PROTO((void));
+ extern void decl_attributes PROTO((tree, tree, tree));
+ extern void init_function_format_info PROTO((void));
+-extern void record_function_format PROTO((tree, tree, int, int, int));
++extern void record_function_format PROTO((tree, tree, int, int, int, int));
+ extern void check_function_format PROTO((tree, tree, tree));
+ /* Print an error message for invalid operands to arith operation CODE.
+ NOP_EXPR is used as a special case (see truthvalue_conversion). */
--- config/alpha/alpha.c.orig Fri Feb 6 17:23:50 1998
+++ config/alpha/alpha.c Tue Aug 11 04:06:42 1998
@@ -1843,7 +1843,7 @@
diff --git a/lang/gnat/files/patch-aa b/lang/gnat/files/patch-aa
index 62e53dc189b9..458d032c78b3 100644
--- a/lang/gnat/files/patch-aa
+++ b/lang/gnat/files/patch-aa
@@ -1,5 +1,5 @@
-*** ./Makefile.in.orig Wed Jun 23 02:34:31 1999
---- ./Makefile.in Wed Jun 23 02:35:29 1999
+*** ./Makefile.in.orig Fri Nov 5 19:52:38 1999
+--- ./Makefile.in Sat Nov 6 10:07:16 1999
***************
*** 152,158 ****
ENQUIRE_LDFLAGS = $(LDFLAGS)
@@ -34,3 +34,24 @@
# Do nothing while making gcc with a cross-compiler. The person who
# makes gcc for the target machine has to know how to put a complete
+***************
+*** 2241,2249 ****
+ # Install gcov if it was compiled.
+ -if [ -f gcov$(exeext) ]; \
+ then \
+! rm -f $(bindir)/gcov$(exeext); \
+! $(INSTALL_PROGRAM) gcov$(exeext) $(bindir)/gcov$(exeext); \
+! chmod a+x $(bindir)/gcov$(exeext); \
+ fi
+
+ # Install the driver program as $(target_alias)-gcc
+--- 2241,2249 ----
+ # Install gcov if it was compiled.
+ -if [ -f gcov$(exeext) ]; \
+ then \
+! rm -f $(bindir)/adagcov$(exeext); \
+! $(INSTALL_PROGRAM) gcov$(exeext) $(bindir)/adagcov$(exeext); \
+! chmod a+x $(bindir)/adagcov$(exeext); \
+ fi
+
+ # Install the driver program as $(target_alias)-gcc
diff --git a/lang/gnat/files/patch-ab b/lang/gnat/files/patch-ab
index 998287bcf91e..9444d3a57fbd 100644
--- a/lang/gnat/files/patch-ab
+++ b/lang/gnat/files/patch-ab
@@ -1,41 +1,5 @@
-*** ./config/i386/freebsd.h.orig Fri Sep 4 23:57:29 1998
---- ./config/i386/freebsd.h Fri Sep 4 23:58:54 1998
-***************
-*** 49,55 ****
- #define CPP_SPEC "%{posix:-D_POSIX_SOURCE}"
-
- /* Like the default, except no -lg. */
-! #define LIB_SPEC "%{!shared:%{!pg:-lc}%{pg:-lc_p}}"
-
- #undef SIZE_TYPE
- #define SIZE_TYPE "unsigned int"
---- 49,55 ----
- #define CPP_SPEC "%{posix:-D_POSIX_SOURCE}"
-
- /* Like the default, except no -lg. */
-! #define LIB_SPEC "%{!shared:%{!pg:%{!pthread:%{!kthread:-lc}%{kthread:-lpthread -lc}}%{pthread:-lc_r}}%{pg:%{!pthread:%{!kthread:-lc_p}%{kthread:-lpthread_p -lc_p}}%{pthread:-lc_r_p}}}"
-
- #undef SIZE_TYPE
- #define SIZE_TYPE "unsigned int"
-*** ./config/i386/freebsd-elf.h.orig Fri Dec 5 07:15:34 1997
---- ./config/i386/freebsd-elf.h Fri Feb 12 21:35:52 1999
-***************
-*** 140,146 ****
- #define WCHAR_TYPE_SIZE BITS_PER_WORD
-
- #undef CPP_PREDEFINES
-! #define CPP_PREDEFINES "-Dunix -D__ELF__ -D__FreeBSD__=2 -Asystem(FreeBSD)"
-
- #undef CPP_SPEC
- #define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
---- 140,146 ----
- #define WCHAR_TYPE_SIZE BITS_PER_WORD
-
- #undef CPP_PREDEFINES
-! #define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__=3 -Asystem(FreeBSD) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
-
- #undef CPP_SPEC
- #define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
+*** ./config/i386/freebsd.h.orig Fri Dec 5 07:15:34 1997
+--- ./config/i386/freebsd.h Fri Feb 12 21:35:52 1999
***************
*** 152,159 ****
* -lc_p or -ggdb to LDFLAGS at the link time, respectively.
diff --git a/lang/gnat/files/patch-ac b/lang/gnat/files/patch-ac
index 26c4d9687173..29b3b147ca68 100644
--- a/lang/gnat/files/patch-ac
+++ b/lang/gnat/files/patch-ac
@@ -1,8 +1,8 @@
-*** ./ada/Makefile.in.orig Wed Jul 29 21:00:07 1998
---- ./ada/Makefile.in Mon Aug 31 09:16:59 1998
+*** ./ada/Makefile.in.orig Fri Sep 24 08:41:35 1999
+--- ./ada/Makefile.in Tue Nov 2 10:53:14 1999
***************
-*** 779,784 ****
---- 779,797 ----
+*** 909,914 ****
+--- 909,927 ----
endif
endif
@@ -20,5 +20,5 @@
+ endif
+
ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),)
- LIBGNAT_TARGET_PAIRS = \
- a-emstop.adb<4gemstop.adb \
+
+ threadsletter=A
diff --git a/lang/gnat/files/patch-ad b/lang/gnat/files/patch-ad
index 5ca0030b6f41..df9243d0c8a5 100644
--- a/lang/gnat/files/patch-ad
+++ b/lang/gnat/files/patch-ad
@@ -1,7 +1,7 @@
-*** ./ada/make.adb.orig Wed Jul 29 21:01:09 1998
---- ./ada/make.adb Tue Sep 1 00:24:06 1998
+*** ./ada/make.adb.orig Fri Sep 24 08:41:53 1999
+--- ./ada/make.adb Tue Nov 2 02:46:10 1999
***************
-*** 202,208 ****
+*** 238,244 ****
-- Compiler, Binder & Linker Data and Subprograms --
----------------------------------------------------
@@ -9,7 +9,7 @@
Gnatbind : String_Access := Program_Name ("gnatbind");
Gnatlink : String_Access := Program_Name ("gnatlink");
-- Default compiler, binder, linker programs
---- 202,208 ----
+--- 238,244 ----
-- Compiler, Binder & Linker Data and Subprograms --
----------------------------------------------------
diff --git a/lang/gnat/files/patch-ae b/lang/gnat/files/patch-ae
index bc5c986bcef5..ab87807bb760 100644
--- a/lang/gnat/files/patch-ae
+++ b/lang/gnat/files/patch-ae
@@ -1,7 +1,7 @@
-*** ./ada/gnatcmd.adb.orig Wed Jul 29 21:01:07 1998
---- ./ada/gnatcmd.adb Tue Sep 1 00:25:06 1998
+*** ./ada/gnatcmd.adb.orig Fri Sep 24 08:41:33 1999
+--- ./ada/gnatcmd.adb Tue Nov 2 02:44:41 1999
***************
-*** 988,994 ****
+*** 1173,1179 ****
(Cname => new S'("COMPILE"),
Usage => new S'("GNAT COMPILE filespec[,...] /qualifiers"),
@@ -9,7 +9,7 @@
Switches => GCC_Switches'Access,
Params => new Parameter_Array'(1 => FILES_OR_WILDCARD),
Defext => " "),
---- 988,994 ----
+--- 1173,1179 ----
(Cname => new S'("COMPILE"),
Usage => new S'("GNAT COMPILE filespec[,...] /qualifiers"),
diff --git a/lang/gnat/files/patch-af b/lang/gnat/files/patch-af
index 8ec2237ecc32..743bf477ec07 100644
--- a/lang/gnat/files/patch-af
+++ b/lang/gnat/files/patch-af
@@ -1,17 +1,17 @@
-*** ./ada/gnatlink.adb.orig Wed Jul 29 21:01:08 1998
---- ./ada/gnatlink.adb Tue Sep 1 00:26:17 1998
+*** ./ada/gnatlink.adb.orig Fri Sep 24 08:41:46 1999
+--- ./ada/gnatlink.adb Tue Nov 2 02:46:20 1999
***************
-*** 73,79 ****
- Table_Increment => 100,
- Table_Name => "Gnatlink.Binder_Options");
+*** 97,103 ****
+ -- This table collects the arguments to be passed to compile the binder
+ -- generated file.
! Gcc : String_Access := Program_Name ("gcc");
Read_Mode : constant String := "r" & Ascii.Nul;
---- 73,79 ----
- Table_Increment => 100,
- Table_Name => "Gnatlink.Binder_Options");
+--- 97,103 ----
+ -- This table collects the arguments to be passed to compile the binder
+ -- generated file.
! Gcc : String_Access := Program_Name ("adagcc");
diff --git a/lang/gnat/files/patch-ag b/lang/gnat/files/patch-ag
new file mode 100644
index 000000000000..8cd40a65c1e8
--- /dev/null
+++ b/lang/gnat/files/patch-ag
@@ -0,0 +1,19 @@
+*** ./ada/gnatchop.adb.orig Fri Sep 24 08:42:44 1999
+--- ./ada/gnatchop.adb Tue Nov 2 02:43:44 1999
+***************
+*** 1575,1581 ****
+ begin
+ -- Check presence of required executables
+
+! Gnat_Cmd := Locate_Executable ("gcc");
+
+ if Gnat_Cmd = null then
+ goto No_Files_Written;
+--- 1575,1581 ----
+ begin
+ -- Check presence of required executables
+
+! Gnat_Cmd := Locate_Executable ("adagcc");
+
+ if Gnat_Cmd = null then
+ goto No_Files_Written;
diff --git a/lang/gnat/files/patch-ah b/lang/gnat/files/patch-ah
new file mode 100644
index 000000000000..10b3eae32453
--- /dev/null
+++ b/lang/gnat/files/patch-ah
@@ -0,0 +1,19 @@
+*** ./ada/a-cstrea.c.orig Fri Sep 24 08:42:07 1999
+--- ./ada/a-cstrea.c Sat Nov 6 16:06:52 1999
+***************
+*** 198,204 ****
+ _fixpath (nam, buffer);
+
+ #else
+! #if defined (sgi) || defined (sun) || defined (linux)
+
+ /* Use realpath function which resolves links and references to .. and ..
+ on those Unix systems that support it. */
+--- 198,204 ----
+ _fixpath (nam, buffer);
+
+ #else
+! #if defined (sgi) || defined (sun) || defined (linux) || defined (__FreeBSD__)
+
+ /* Use realpath function which resolves links and references to .. and ..
+ on those Unix systems that support it. */
diff --git a/lang/gnat/files/patch-ai b/lang/gnat/files/patch-ai
new file mode 100644
index 000000000000..0e6593362a79
--- /dev/null
+++ b/lang/gnat/files/patch-ai
@@ -0,0 +1,84 @@
+*** ./ada/a-init.c.orig Fri Sep 24 08:42:43 1999
+--- ./ada/a-init.c Sat Nov 6 16:22:51 1999
+***************
+*** 1445,1450 ****
+--- 1445,1523 ----
+ }
+
+
++ /*************************************************/
++ /* __gnat_initialize (FreeBSD version) */
++ /*************************************************/
++
++ #elif defined (__FreeBSD__)
++
++ #include <signal.h>
++ #include <unistd.h>
++
++ static void
++ __gnat_error_handler (sig, code, sc)
++ int sig;
++ int code;
++ struct sigcontext *sc;
++ {
++ struct Exception_Data *exception;
++ char *msg;
++
++ switch (sig)
++ {
++ case SIGFPE:
++ exception = &constraint_error;
++ msg = "SIGFPE";
++ break;
++
++ case SIGILL:
++ exception = &constraint_error;
++ msg = "SIGILL";
++ break;
++
++ case SIGSEGV:
++ exception = &storage_error;
++ msg = "stack overflow or erroneous memory access";
++ break;
++
++ case SIGBUS:
++ exception = &constraint_error;
++ msg = "SIGBUS";
++ break;
++
++ default:
++ exception = &program_error;
++ msg = "unhandled signal";
++ }
++
++ Raise_From_Signal_Handler (exception, msg);
++ }
++
++ static void
++ __gnat_install_handler ()
++ {
++ struct sigaction act;
++
++ /* Set up signal handler to map synchronous signals to appropriate
++ exceptions. Make sure that the handler isn't interrupted by another
++ signal that might cause a scheduling event! */
++
++ act.sa_handler = __gnat_error_handler;
++ act.sa_flags = SA_NODEFER | SA_RESTART;
++ (void) sigemptyset (&act.sa_mask);
++
++ (void) sigaction (SIGILL, &act, NULL);
++ (void) sigaction (SIGFPE, &act, NULL);
++ (void) sigaction (SIGSEGV, &act, NULL);
++ (void) sigaction (SIGBUS, &act, NULL);
++ }
++
++ void
++ __gnat_initialize ()
++ {
++ __gnat_install_handler ();
++ }
++
+ /***************************************/
+ /* __gnat_initialize (default version) */
+ /***************************************/
diff --git a/lang/gnat/files/patch-aj b/lang/gnat/files/patch-aj
new file mode 100644
index 000000000000..420743c178e7
--- /dev/null
+++ b/lang/gnat/files/patch-aj
@@ -0,0 +1,54 @@
+*** ./ada/a-sysdep.c.orig Fri Sep 24 08:42:39 1999
+--- ./ada/a-sysdep.c Sat Nov 6 16:27:43 1999
+***************
+*** 235,241 ****
+ #endif
+
+ #if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
+! || (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT)
+ #include <termios.h>
+ #include <fcntl.h>
+ #elif defined (VMS)
+--- 235,242 ----
+ #endif
+
+ #if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
+! || (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
+! || defined (__FreeBSD__)
+ #include <termios.h>
+ #include <fcntl.h>
+ #elif defined (VMS)
+***************
+*** 285,291 ****
+ {
+ #if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
+ || (defined (__osf__) && ! defined (__alpha_vxworks)) \
+! || defined (__CYGWIN32__)
+ char c;
+ int nread;
+ int good_one = 0;
+--- 286,292 ----
+ {
+ #if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
+ || (defined (__osf__) && ! defined (__alpha_vxworks)) \
+! || defined (__CYGWIN32__) || defined (__FreeBSD__)
+ char c;
+ int nread;
+ int good_one = 0;
+***************
+*** 302,308 ****
+ /* Set RAW mode */
+ termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON;
+ #if defined(sgi) || defined (sun) || defined (__EMX__) || defined (__osf__) \
+! || defined (linux)
+ eof_ch = termios_rec.c_cc[VEOF];
+
+ /* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
+--- 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 (__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-ak b/lang/gnat/files/patch-ak
new file mode 100644
index 000000000000..1f77b68763c2
--- /dev/null
+++ b/lang/gnat/files/patch-ak
@@ -0,0 +1,30 @@
+*** ada/i-cstrea.ads Fri Sep 24 08:42:41 1999
+--- ada/i-cstrea.ads Sat Nov 6 10:20:43 1999
+***************
+*** 184,190 ****
+ size : size_t)
+ return int;
+
+! procedure tmpnam (string : chars);
+ -- The parameter must be a pointer to a string buffer of at least L_tmpnam
+ -- bytes (the call with a null parameter is not supported). The returned
+ -- value, which is just a copy of the input argument, is discarded.
+--- 184,190 ----
+ size : size_t)
+ return int;
+
+! procedure tmpnam (tname : chars);
+ -- The parameter must be a pointer to a string buffer of at least L_tmpnam
+ -- bytes (the call with a null parameter is not supported). The returned
+ -- value, which is just a copy of the input argument, is discarded.
+***************
+*** 265,272 ****
+ pragma Import (C, isatty);
+ pragma Import (C, mktemp);
+ pragma Import (C, rewind);
+- pragma Import (C, tmpnam);
+- pragma Import (C, tmpfile);
+ pragma Import (C, ungetc);
+ pragma Import (C, unlink);
+
+--- 265,270 ----
diff --git a/lang/gnat/files/patch-al b/lang/gnat/files/patch-al
new file mode 100644
index 000000000000..366a106755b9
--- /dev/null
+++ b/lang/gnat/files/patch-al
@@ -0,0 +1,34 @@
+*** ada/i-cstrea.adb Fri Sep 24 08:42:42 1999
+--- ada/i-cstrea.adb Sat Nov 6 18:33:57 1999
+***************
+*** 108,111 ****
+--- 108,136 ----
+ return C_setvbuf (stream, buffer, mode, size);
+ end setvbuf;
+
++ procedure strcpy (dst : chars; src : chars);
++ pragma Import (C, strcpy);
++
++ function C_mktemp (template : chars) return chars;
++ pragma Import (C, C_mktemp, "mktemp");
++
++ procedure tmpnam (tname : chars) is
++ use type System.Address;
++ Template : string (1 .. 18) := "/var/tmp/tmp.XXXX" & Ascii.Nul;
++ Name : chars;
++ begin
++ Name := C_mktemp (Template'Address);
++ if Name /= System.Null_Address then
++ strcpy (tname'Address, Name);
++ end if;
++ end tmpnam;
++
++ function tmpfile return FILEs is
++ 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));
++ end tmpfile;
++
+ end Interfaces.C_Streams;
diff --git a/lang/gnat/pkg-plist b/lang/gnat/pkg-plist
index 2a2871c45362..460489f6271c 100644
--- a/lang/gnat/pkg-plist
+++ b/lang/gnat/pkg-plist
@@ -1,4 +1,5 @@
bin/adagcc
+bin/adagcov
bin/gnat
bin/gnatbind
bin/gnatbl
@@ -16,8 +17,6 @@ bin/gnatxref
bin/%%GNUHOST%%-gcc
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-astaco.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-astaco.ads
-lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-cadeob.adb
-lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-cadeob.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-caldel.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-caldel.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-calend.adb
@@ -43,6 +42,8 @@ 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
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-exctra.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-exctra.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-filico.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-filico.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-finali.adb
@@ -228,6 +229,7 @@ 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-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-debuti.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debuti.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dirope.adb
@@ -242,10 +244,16 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-io.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-io.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-io_aux.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-io_aux.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-locfil.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-locfil.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-os_lib.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-os_lib.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-regexp.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-regexp.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-regpat.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-regpat.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-speche.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-speche.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-spipat.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-spipat.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-spitbo.adb
@@ -257,6 +265,12 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-table.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-table.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-tasloc.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-tasloc.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-thread.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-thread.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-traceb.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-traceb.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-trasym.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-trasym.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/gnat.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-c.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-c.ads
@@ -528,12 +542,18 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-secsta.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-secsta.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sequio.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sequio.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-shamem.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-shamem.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-soflin.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-soflin.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sopco3.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sopco3.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sopco4.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sopco4.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sopco5.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sopco5.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-stache.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-stache.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-stalib.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-stalib.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-std.adb
@@ -545,18 +565,26 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-stratt.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-stratt.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-strops.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-strops.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taasde.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taasde.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tadeca.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tadeca.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tadert.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tadert.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taenca.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taenca.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taprob.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-taprob.ads
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.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasinf.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasinf.ads
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
@@ -570,15 +598,22 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasque.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasque.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasren.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasren.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasres.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tassta.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tassta.ads
-lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tastim.adb
-lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tastim.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasuti.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tasuti.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tataat.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tataat.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tpinop.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tpinop.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tpoben.adb
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tpoben.ads
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tpobop.adb
+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-unstyp.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.adb
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.ads
@@ -642,7 +677,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/system.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/text_io.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/unchconv.ads
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/unchdeal.ads
-lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-cadeob.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/Makefile.adalib
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-caldel.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-calend.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-chahan.ali
@@ -654,6 +689,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-cwila1.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-decima.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-dynpri.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-except.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-exctra.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-filico.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-finali.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-flteio.ali
@@ -742,20 +778,26 @@ 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-casuti.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-debuti.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-dirope.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
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-io_aux.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-locfil.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-os_lib.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-regexp.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-regpat.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-speche.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-spipat.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-spitbo.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-sptabo.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-sptain.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-sptavs.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-tasloc.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-traceb.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-trasym.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/gnat.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/i-c.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/i-cexten.ali
@@ -902,32 +944,41 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-proinf.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-rpc.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-secsta.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-sequio.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-shamem.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-soflin.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-sopco3.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-sopco4.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-sopco5.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-stache.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-stalib.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-std.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-stoele.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-stopoo.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-stratt.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-strops.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-taasde.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tadeca.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tadert.ali
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
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-taskin.ali
-lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasoli.ali
-lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-taspda.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-taspri.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasque.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasren.ali
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasres.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tassta.ali
-lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tastim.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tasuti.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tataat.ali
+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-unstyp.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-vaflop.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-valboo.ali
@@ -962,6 +1013,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/system.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/text_io.ali
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/include/README
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/include/exception
+lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/include/float.h
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/include/limits.h
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/include/math.h
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/include/new