diff options
Diffstat (limited to 'lang')
-rw-r--r-- | lang/gnat/Makefile | 69 | ||||
-rw-r--r-- | lang/gnat/distinfo | 4 | ||||
-rw-r--r-- | lang/gnat/files/5fintman.adb | 81 | ||||
-rw-r--r-- | lang/gnat/files/5fosinte.adb | 76 | ||||
-rw-r--r-- | lang/gnat/files/5fosinte.ads | 135 | ||||
-rw-r--r-- | lang/gnat/files/5ftaprop.adb | 175 | ||||
-rw-r--r-- | lang/gnat/files/5ftaspri.ads | 14 | ||||
-rw-r--r-- | lang/gnat/files/freebsdgcc28-patches | 577 | ||||
-rw-r--r-- | lang/gnat/files/patch-aa | 25 | ||||
-rw-r--r-- | lang/gnat/files/patch-ab | 40 | ||||
-rw-r--r-- | lang/gnat/files/patch-ac | 12 | ||||
-rw-r--r-- | lang/gnat/files/patch-ad | 8 | ||||
-rw-r--r-- | lang/gnat/files/patch-ae | 8 | ||||
-rw-r--r-- | lang/gnat/files/patch-af | 16 | ||||
-rw-r--r-- | lang/gnat/files/patch-ag | 19 | ||||
-rw-r--r-- | lang/gnat/files/patch-ah | 19 | ||||
-rw-r--r-- | lang/gnat/files/patch-ai | 84 | ||||
-rw-r--r-- | lang/gnat/files/patch-aj | 54 | ||||
-rw-r--r-- | lang/gnat/files/patch-ak | 30 | ||||
-rw-r--r-- | lang/gnat/files/patch-al | 34 | ||||
-rw-r--r-- | lang/gnat/pkg-plist | 70 |
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 |