mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
Update to the latest released version of GNAT (3.15p). Also use a
new bootstrap compiler and fix so that it builds under -current. Approved by: portmgr
This commit is contained in:
parent
14e85ed5bb
commit
f12ee9219b
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=71275
17 changed files with 488 additions and 1337 deletions
|
@ -14,7 +14,7 @@
|
||||||
# using symbolic links.
|
# using symbolic links.
|
||||||
|
|
||||||
PORTNAME= gnat
|
PORTNAME= gnat
|
||||||
PORTVERSION= 3.14p
|
PORTVERSION= 3.15p
|
||||||
CATEGORIES= lang
|
CATEGORIES= lang
|
||||||
MASTER_SITES= ftp://cs.nyu.edu/pub/gnat/${PORTVERSION}/:gnat \
|
MASTER_SITES= ftp://cs.nyu.edu/pub/gnat/${PORTVERSION}/:gnat \
|
||||||
${MASTER_SITE_LOCAL}:boot \
|
${MASTER_SITE_LOCAL}:boot \
|
||||||
|
@ -25,6 +25,8 @@ DISTFILES= ${GNATNAME}.tgz:gnat \
|
||||||
|
|
||||||
MAINTAINER= eischen@vigrid.com
|
MAINTAINER= eischen@vigrid.com
|
||||||
|
|
||||||
|
BUILD_DEPENDS= ${PORTSDIR}/lang/gcc28
|
||||||
|
|
||||||
.include <bsd.port.pre.mk>
|
.include <bsd.port.pre.mk>
|
||||||
|
|
||||||
WRKSRC= ${WRKDIR}/gcc-2.8.1
|
WRKSRC= ${WRKDIR}/gcc-2.8.1
|
||||||
|
@ -94,7 +96,7 @@ BROKEN= "Cannot build with or for an aout compiler."
|
||||||
|
|
||||||
.if empty(have_boot)
|
.if empty(have_boot)
|
||||||
ONLY_FOR_ARCHS= i386
|
ONLY_FOR_ARCHS= i386
|
||||||
DISTFILES+= gnat-3.13p-boot.tar.gz:boot
|
DISTFILES+= gnat-3.15p-boot.tar.gz:boot
|
||||||
.if ${OSVERSION} >= 500000
|
.if ${OSVERSION} >= 500000
|
||||||
LIB_DEPENDS+= c.4:${PORTSDIR}/misc/compat4x
|
LIB_DEPENDS+= c.4:${PORTSDIR}/misc/compat4x
|
||||||
.endif
|
.endif
|
||||||
|
@ -118,7 +120,7 @@ GNATLIBCFLAGS= -O2
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
# Shared library handling
|
# Shared library handling
|
||||||
LIBRARY_VERSION= 3.14
|
LIBRARY_VERSION= 3.15
|
||||||
SHARED_MAJOR= 1
|
SHARED_MAJOR= 1
|
||||||
|
|
||||||
# Account for signal set changes
|
# Account for signal set changes
|
||||||
|
@ -136,10 +138,12 @@ pre-patch:
|
||||||
${MV} ${WRKSRC}/config/i386/freebsd-elf.h ${WRKSRC}/config/i386/freebsd.h; \
|
${MV} ${WRKSRC}/config/i386/freebsd-elf.h ${WRKSRC}/config/i386/freebsd.h; \
|
||||||
fi
|
fi
|
||||||
@${ECHO} "===> Applying FreeBSD patches to gcc for ${DISTNAME}"
|
@${ECHO} "===> Applying FreeBSD patches to gcc for ${DISTNAME}"
|
||||||
-( ${PATCH} ${PATCH_ARGS} < ${FILESDIR}/freebsdgcc28-patches )
|
-( for i in ${PORTSDIR}/lang/gcc28/files/patch-*; do \
|
||||||
|
${PATCH} ${PATCH_ARGS} < $$i; \
|
||||||
|
done )
|
||||||
@${ECHO} "===> Patching gcc for ${GNATNAME}"
|
@${ECHO} "===> Patching gcc for ${GNATNAME}"
|
||||||
-( ${PATCH} ${PATCH_ARGS} < ${WRKDIR}/${GNATNAME}/src/gcc-281.dif )
|
-( ${PATCH} ${PATCH_ARGS} < ${WRKDIR}/${GNATNAME}/src/gcc-281.dif )
|
||||||
@${ECHO} "===> Copying GNAT compiler sources into GCC tree."
|
@${ECHO} "===> Moving GNAT compiler sources into GCC tree."
|
||||||
-( ${MV} ${WRKDIR}/${GNATNAME}/src/ada ${WRKDIR}/gcc-2.8.1 )
|
-( ${MV} ${WRKDIR}/${GNATNAME}/src/ada ${WRKDIR}/gcc-2.8.1 )
|
||||||
@${ECHO} "===> Making way for FreeBSD GNAT support files"
|
@${ECHO} "===> Making way for FreeBSD GNAT support files"
|
||||||
-( ${RM} -f ${WRKSRC}/ada/[45]f* )
|
-( ${RM} -f ${WRKSRC}/ada/[45]f* )
|
||||||
|
@ -151,7 +155,10 @@ post-patch:
|
||||||
for i in *.adb *.ads ; do \
|
for i in *.adb *.ads ; do \
|
||||||
${CP} $$i ${WRKSRC}/ada; \
|
${CP} $$i ${WRKSRC}/ada; \
|
||||||
done )
|
done )
|
||||||
${RM} ${WRKDIR}/gnat-3.14p-src/examples/*.orig
|
.if ${OSVERSION} >= 500016
|
||||||
|
( ${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/freebsd5x-patch-01 )
|
||||||
|
.endif
|
||||||
|
${RM} ${WRKDIR}/gnat-3.15p-src/examples/*.orig
|
||||||
|
|
||||||
pre-configure:
|
pre-configure:
|
||||||
@(cd ${WRKSRC}/config/${ARCH}/ ; \
|
@(cd ${WRKSRC}/config/${ARCH}/ ; \
|
||||||
|
@ -185,8 +192,6 @@ do-build:
|
||||||
${COMPILEDATA} ${GMAKE} CC="${CC}" OLDCC="adagcc" CFLAGS="${GNATCFLAGS}" LANGUAGES="c ada gcov" )
|
${COMPILEDATA} ${GMAKE} CC="${CC}" OLDCC="adagcc" CFLAGS="${GNATCFLAGS}" LANGUAGES="c ada gcov" )
|
||||||
(cd ${WRKSRC}; \
|
(cd ${WRKSRC}; \
|
||||||
${GMAKE} CFLAGS="${GNATCFLAGS}" LANGUAGES="c ada gcov" bootstrap )
|
${GMAKE} CFLAGS="${GNATCFLAGS}" LANGUAGES="c ada gcov" bootstrap )
|
||||||
(cd ${WRKSRC}; \
|
|
||||||
${GMAKE} CFLAGS="${GNATCFLAGS}" gnattools )
|
|
||||||
(cd ${WRKSRC}; \
|
(cd ${WRKSRC}; \
|
||||||
${GMAKE} CFLAGS="${GNATCFLAGS}" GNATLIBCFLAGS="-fPIC ${GNATLIBCFLAGS}" \
|
${GMAKE} CFLAGS="${GNATCFLAGS}" GNATLIBCFLAGS="-fPIC ${GNATLIBCFLAGS}" \
|
||||||
soext=.so.${SHARED_MAJOR} LIBRARY_VERSION=${LIBRARY_VERSION} \
|
soext=.so.${SHARED_MAJOR} LIBRARY_VERSION=${LIBRARY_VERSION} \
|
||||||
|
@ -196,6 +201,8 @@ do-build:
|
||||||
${RM} ${WRKSRC}/stamp-gnatlib2
|
${RM} ${WRKSRC}/stamp-gnatlib2
|
||||||
(cd ${WRKSRC}; \
|
(cd ${WRKSRC}; \
|
||||||
${GMAKE} CFLAGS="${GNATCFLAGS}" GNATLIBCFLAGS="${GNATLIBCFLAGS}" gnatlib )
|
${GMAKE} CFLAGS="${GNATCFLAGS}" GNATLIBCFLAGS="${GNATLIBCFLAGS}" gnatlib )
|
||||||
|
(cd ${WRKSRC}; \
|
||||||
|
${GMAKE} CFLAGS="${GNATCFLAGS}" gnattools )
|
||||||
|
|
||||||
do-install:
|
do-install:
|
||||||
(cd ${WRKSRC}; \
|
(cd ${WRKSRC}; \
|
||||||
|
@ -214,7 +221,7 @@ do-install:
|
||||||
.ifndef(NOPORTDOCS)
|
.ifndef(NOPORTDOCS)
|
||||||
${MKDIR} ${EXAMPLESDIR}
|
${MKDIR} ${EXAMPLESDIR}
|
||||||
${INSTALL_DATA} \
|
${INSTALL_DATA} \
|
||||||
${WRKDIR}/gnat-3.14p-src/examples/* ${EXAMPLESDIR}
|
${WRKDIR}/gnat-3.15p-src/examples/* ${EXAMPLESDIR}
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
post-install:
|
post-install:
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
MD5 (gnat-3.14p-src.tgz) = a2b3f62b0b6307544994c4c4453fe0d7
|
MD5 (gnat-3.15p-src.tgz) = cf8b9cccc867e318bccaaa2dce384028
|
||||||
MD5 (gcc-2.8.1.tar.gz) = 311829e9c36080fb54b0145285746a9e
|
MD5 (gcc-2.8.1.tar.gz) = 311829e9c36080fb54b0145285746a9e
|
||||||
MD5 (gnat-3.13p-boot.tar.gz) = a62db6267f7f71dc71a8162ebe794e01
|
MD5 (gnat-3.15p-boot.tar.gz) = 3b25873a90978b8b4113d71dc3df315f
|
||||||
|
|
|
@ -152,8 +152,9 @@ package System.OS_Interface is
|
||||||
-- Signals --
|
-- Signals --
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
NSIG : constant := 32;
|
Max_Interrupt : constant := 31;
|
||||||
type Signal is new int range 0 .. Interfaces.C."-" (NSIG, 1);
|
type Signal is new int range 0 .. Max_Interrupt;
|
||||||
|
for Signal'Size use int'Size;
|
||||||
|
|
||||||
-- NAMEs not used are commented-out
|
-- NAMEs not used are commented-out
|
||||||
-- NAMEs not supported on this system have __NAME for value
|
-- NAMEs not supported on this system have __NAME for value
|
||||||
|
@ -210,32 +211,19 @@ package System.OS_Interface is
|
||||||
|
|
||||||
type sigset_t is private;
|
type sigset_t is private;
|
||||||
|
|
||||||
function sigaddset
|
function sigaddset (set : access sigset_t; sig : Signal) return int;
|
||||||
(set : access sigset_t;
|
|
||||||
sig : Signal)
|
|
||||||
return int;
|
|
||||||
pragma Import (C, sigaddset, "sigaddset");
|
pragma Import (C, sigaddset, "sigaddset");
|
||||||
|
|
||||||
function sigdelset
|
function sigdelset (set : access sigset_t; sig : Signal) return int;
|
||||||
(set : access sigset_t;
|
|
||||||
sig : Signal)
|
|
||||||
return int;
|
|
||||||
pragma Import (C, sigdelset, "sigdelset");
|
pragma Import (C, sigdelset, "sigdelset");
|
||||||
|
|
||||||
function sigfillset
|
function sigfillset (set : access sigset_t) return int;
|
||||||
(set : access sigset_t)
|
|
||||||
return int;
|
|
||||||
pragma Import (C, sigfillset, "sigfillset");
|
pragma Import (C, sigfillset, "sigfillset");
|
||||||
|
|
||||||
function sigismember
|
function sigismember (set : access sigset_t; sig : Signal) return int;
|
||||||
(set : access sigset_t;
|
|
||||||
sig : Signal)
|
|
||||||
return int;
|
|
||||||
pragma Import (C, sigismember, "sigismember");
|
pragma Import (C, sigismember, "sigismember");
|
||||||
|
|
||||||
function sigemptyset
|
function sigemptyset (set : access sigset_t) return int;
|
||||||
(set : access sigset_t)
|
|
||||||
return int;
|
|
||||||
pragma Import (C, sigemptyset, "sigemptyset");
|
pragma Import (C, sigemptyset, "sigemptyset");
|
||||||
|
|
||||||
-- sigcontext is architecture dependent, so define it private
|
-- sigcontext is architecture dependent, so define it private
|
||||||
|
@ -358,6 +346,16 @@ package System.OS_Interface is
|
||||||
function getpid return pid_t;
|
function getpid return pid_t;
|
||||||
pragma Import (C, getpid, "getpid");
|
pragma Import (C, getpid, "getpid");
|
||||||
|
|
||||||
|
---------
|
||||||
|
-- LWP --
|
||||||
|
---------
|
||||||
|
|
||||||
|
function lwp_self return System.Address;
|
||||||
|
-- lwp_self does not exist on this thread library, revert to pthread_self
|
||||||
|
-- which is the closest approximation (with getpid). This function is
|
||||||
|
-- needed to share 7staprop.adb across POSIX-like targets.
|
||||||
|
pragma Import (C, lwp_self, "pthread_self");
|
||||||
|
|
||||||
-------------
|
-------------
|
||||||
-- Threads --
|
-- Threads --
|
||||||
-------------
|
-------------
|
||||||
|
|
|
@ -60,16 +60,16 @@ pragma Pure (System);
|
||||||
Max_Mantissa : constant := 63;
|
Max_Mantissa : constant := 63;
|
||||||
Fine_Delta : constant := 2.0 ** (-Max_Mantissa);
|
Fine_Delta : constant := 2.0 ** (-Max_Mantissa);
|
||||||
|
|
||||||
Tick : constant := Standard'Tick;
|
Tick : constant := 1.0;
|
||||||
|
|
||||||
-- Storage-related Declarations
|
-- Storage-related Declarations
|
||||||
|
|
||||||
type Address is private;
|
type Address is private;
|
||||||
Null_Address : constant Address;
|
Null_Address : constant Address;
|
||||||
|
|
||||||
Storage_Unit : constant := Standard'Storage_Unit;
|
Storage_Unit : constant := 8;
|
||||||
Word_Size : constant := Standard'Word_Size;
|
Word_Size : constant := 32;
|
||||||
Memory_Size : constant := 2 ** Standard'Address_Size;
|
Memory_Size : constant := 2 ** 32;
|
||||||
|
|
||||||
-- Address comparison
|
-- Address comparison
|
||||||
|
|
||||||
|
@ -88,32 +88,18 @@ pragma Pure (System);
|
||||||
-- Other System-Dependent Declarations
|
-- Other System-Dependent Declarations
|
||||||
|
|
||||||
type Bit_Order is (High_Order_First, Low_Order_First);
|
type Bit_Order is (High_Order_First, Low_Order_First);
|
||||||
Default_Bit_Order : constant Bit_Order :=
|
Default_Bit_Order : constant Bit_Order := Low_Order_First;
|
||||||
Bit_Order'Val (Standard'Default_Bit_Order);
|
|
||||||
|
|
||||||
-- Priority-related Declarations (RM D.1)
|
-- Priority-related Declarations (RM D.1)
|
||||||
|
|
||||||
Max_Priority : constant Positive := 30;
|
Max_Priority : constant Positive := 30;
|
||||||
|
|
||||||
Max_Interrupt_Priority : constant Positive := 31;
|
Max_Interrupt_Priority : constant Positive := 31;
|
||||||
|
|
||||||
subtype Any_Priority is Integer
|
subtype Any_Priority is Integer range 0 .. 31;
|
||||||
range 0 .. Standard'Max_Interrupt_Priority;
|
subtype Priority is Any_Priority range 0 .. 30;
|
||||||
|
subtype Interrupt_Priority is Any_Priority range 31 .. 31;
|
||||||
|
|
||||||
subtype Priority is Any_Priority
|
Default_Priority : constant Priority := 15;
|
||||||
range 0 .. Standard'Max_Priority;
|
|
||||||
|
|
||||||
-- Functional notation is needed in the following to avoid visibility
|
|
||||||
-- problems when this package is compiled through rtsfind in the middle
|
|
||||||
-- of another compilation.
|
|
||||||
|
|
||||||
subtype Interrupt_Priority is Any_Priority
|
|
||||||
range
|
|
||||||
Standard."+" (Standard'Max_Priority, 1) ..
|
|
||||||
Standard'Max_Interrupt_Priority;
|
|
||||||
|
|
||||||
Default_Priority : constant Priority :=
|
|
||||||
Standard."/" (Standard."+" (Priority'First, Priority'Last), 2);
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
@ -126,117 +112,28 @@ private
|
||||||
|
|
||||||
-- These parameters provide information about the target that is used
|
-- These parameters provide information about the target that is used
|
||||||
-- by the compiler. They are in the private part of System, where they
|
-- by the compiler. They are in the private part of System, where they
|
||||||
-- can be accessed using Rtsfind. All values defined here must be
|
-- can be accessed using the special circuitry in the Targparm unit
|
||||||
-- constants, since they are accessed at compile time.
|
-- whose source should be consulted for more detailed descriptions
|
||||||
|
-- of the individual switch values.
|
||||||
-- Note these definitions must come before the definitions of any
|
|
||||||
-- complex types or other code that may require Rtsfind to access
|
|
||||||
-- these entities during compilation of System itself.
|
|
||||||
|
|
||||||
-----------------------------------
|
|
||||||
-- Control of Exception Handling --
|
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
-- GNAT provides two methods of implementing exceptions:
|
|
||||||
|
|
||||||
-- Longjmp/Setjmp (-gnatL)
|
|
||||||
|
|
||||||
-- This approach uses longjmp/setjmp to handle exceptions. It
|
|
||||||
-- uses less storage, and can often propagate exceptions faster,
|
|
||||||
-- at the expense of (sometimes considerable) overhead in setting
|
|
||||||
-- up an exception handler. This approach is available on all
|
|
||||||
-- targets, and is the default where it is the only approach.
|
|
||||||
|
|
||||||
-- Zero Cost (-gnatZ)
|
|
||||||
|
|
||||||
-- This approach uses separate exception tables. These use extra
|
|
||||||
-- storage, and exception propagation can be quite slow, but there
|
|
||||||
-- is no overhead in setting up an exception handler (it is to this
|
|
||||||
-- latter operation that the phrase zero-cost refers). This approach
|
|
||||||
-- is only available on some targets, and is the default where it is
|
|
||||||
-- available.
|
|
||||||
|
|
||||||
Zero_Cost_Exceptions : constant Boolean := False;
|
|
||||||
-- Set False for Longjmp/Setjmp, True for Zero Cost
|
|
||||||
|
|
||||||
-------------------------------
|
|
||||||
-- Control of Stack Checking --
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
-- GNAT provides two methods of implementing exceptions:
|
|
||||||
|
|
||||||
-- GCC Probing Mechanism
|
|
||||||
|
|
||||||
-- This approach uses the standard GCC mechanism for
|
|
||||||
-- stack checking. The method assumes that accessing
|
|
||||||
-- storage immediately beyond the end of the stack
|
|
||||||
-- will result in a trap that is converted to a storage
|
|
||||||
-- error by the runtime system. This mechanism has
|
|
||||||
-- minimal overhead, but requires complex hardware,
|
|
||||||
-- operating system and run-time support. Probing is
|
|
||||||
-- the default method where it is available. The stack
|
|
||||||
-- size for the environment task depends on the operating
|
|
||||||
-- system and cannot be set in a system-independent way.
|
|
||||||
|
|
||||||
-- GNAT Stack-limit Checking
|
|
||||||
|
|
||||||
-- This method relies on comparing the stack pointer
|
|
||||||
-- with per-task stack limits. If the check fails, an
|
|
||||||
-- exception is explicitly raised. The advantage is
|
|
||||||
-- that the method requires no extra system dependent
|
|
||||||
-- runtime support and can be used on systems without
|
|
||||||
-- memory protection as well, but at the cost of more
|
|
||||||
-- overhead for doing the check. This method is the
|
|
||||||
-- default on systems that lack complete support for
|
|
||||||
-- probing.
|
|
||||||
|
|
||||||
Stack_Check_Probes : constant Boolean := True;
|
|
||||||
-- Set True for GCC Probing, False for GNAT Stack-limit Checking
|
|
||||||
|
|
||||||
Stack_Check_Default : constant Boolean := True;
|
|
||||||
-- Set True for systems where stack checking is performed by default
|
|
||||||
|
|
||||||
----------------------------------------------
|
|
||||||
-- Boolean-Valued Floating-Point Attributes --
|
|
||||||
----------------------------------------------
|
|
||||||
|
|
||||||
-- The constants below give the values for representation oriented
|
|
||||||
-- floating-point attributes that are the same for all float types
|
|
||||||
-- on the target. These are all boolean values.
|
|
||||||
|
|
||||||
-- A value is only True if the target reliably supports the corresponding
|
|
||||||
-- feature. Reliably here means that support is guaranteed for all
|
|
||||||
-- possible settings of the relevant compiler switches (like -mieee),
|
|
||||||
-- since we cannot control the user setting of those switches.
|
|
||||||
|
|
||||||
-- The attributes cannot dependent on the current setting of compiler
|
|
||||||
-- switches, since the values must be static and consistent throughout
|
|
||||||
-- the partition. We probably should add such consistency checks in future,
|
|
||||||
-- but for now we don't do this.
|
|
||||||
|
|
||||||
Denorm : constant Boolean := True;
|
|
||||||
|
|
||||||
Machine_Rounds : constant Boolean := True;
|
|
||||||
|
|
||||||
Machine_Overflows : constant Boolean := False;
|
|
||||||
|
|
||||||
Signed_Zeros : constant Boolean := True;
|
|
||||||
|
|
||||||
----------------------------
|
|
||||||
-- Support of Long Shifts --
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
-- In GNORT mode, we cannot call library routines, and in particular
|
|
||||||
-- we cannot call routines for long (64-bit) shifts if such routines
|
|
||||||
-- are required on the target. This comes up in the context of support
|
|
||||||
-- of packed arrays. We can only represent packed arrays whose length
|
|
||||||
-- is in the range 33- to 64-bits as modular types if long shifts are
|
|
||||||
-- done with inline code.
|
|
||||||
|
|
||||||
-- For the default version, for now we set long shifts inlined as True
|
|
||||||
-- This may not be quite accurate, but until we get proper separate
|
|
||||||
-- System's for each target, it is a safer choice.
|
|
||||||
|
|
||||||
Long_Shifts_Inlined : constant Boolean := True;
|
|
||||||
|
|
||||||
|
AAMP : constant Boolean := False;
|
||||||
|
Backend_Divide_Checks : constant Boolean := False;
|
||||||
|
Backend_Overflow_Checks : constant Boolean := False;
|
||||||
|
Command_Line_Args : constant Boolean := True;
|
||||||
|
Denorm : constant Boolean := True;
|
||||||
|
Fractional_Fixed_Ops : constant Boolean := False;
|
||||||
|
Frontend_Layout : constant Boolean := False;
|
||||||
|
Functions_Return_By_DSP : constant Boolean := False;
|
||||||
|
Long_Shifts_Inlined : constant Boolean := True;
|
||||||
|
High_Integrity_Mode : constant Boolean := False;
|
||||||
|
Machine_Overflows : constant Boolean := False;
|
||||||
|
Machine_Rounds : constant Boolean := True;
|
||||||
|
OpenVMS : constant Boolean := False;
|
||||||
|
Signed_Zeros : constant Boolean := True;
|
||||||
|
Stack_Check_Default : constant Boolean := False;
|
||||||
|
Stack_Check_Probes : constant Boolean := False;
|
||||||
|
Use_Ada_Main_Program_Name : constant Boolean := False;
|
||||||
|
ZCX_By_Default : constant Boolean := False;
|
||||||
|
GCC_ZCX_Support : constant Boolean := False;
|
||||||
|
Front_End_ZCX_Support : constant Boolean := False;
|
||||||
end System;
|
end System;
|
||||||
|
|
|
@ -105,25 +105,31 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
pragma Linker_Options ("-pthread");
|
pragma Linker_Options ("-pthread");
|
||||||
|
|
||||||
------------------
|
----------------
|
||||||
-- Local Data --
|
-- Local Data --
|
||||||
------------------
|
----------------
|
||||||
|
|
||||||
-- The followings are logically constants, but need to be initialized
|
-- The followings are logically constants, but need to be initialized
|
||||||
-- at run time.
|
-- at run time.
|
||||||
|
|
||||||
All_Tasks_L : aliased System.Task_Primitives.RTS_Lock;
|
Single_RTS_Lock : aliased RTS_Lock;
|
||||||
-- See comments on locking rules in System.Tasking (spec).
|
-- This is a lock to allow only one thread of control in the RTS at
|
||||||
|
-- a time; it is used to execute in mutual exclusion from all other tasks.
|
||||||
|
-- Used mainly in Single_Lock mode, but also to protect All_Tasks_List
|
||||||
|
|
||||||
Environment_Task_ID : Task_ID;
|
Environment_Task_ID : Task_ID;
|
||||||
-- A variable to hold Task_ID for the environment task.
|
-- A variable to hold Task_ID for the environment task.
|
||||||
|
|
||||||
|
Locking_Policy : Character;
|
||||||
|
pragma Import (C, Locking_Policy, "__gl_locking_policy");
|
||||||
|
-- Value of the pragma Locking_Policy:
|
||||||
|
-- 'C' for Ceiling_Locking
|
||||||
|
-- 'I' for Inherit_Locking
|
||||||
|
-- ' ' for none.
|
||||||
|
|
||||||
Unblocked_Signal_Mask : aliased sigset_t;
|
Unblocked_Signal_Mask : aliased sigset_t;
|
||||||
-- The set of signals that should unblocked in all tasks
|
-- The set of signals that should unblocked in all tasks
|
||||||
|
|
||||||
Default_Prio : Interfaces.C.int := 15;
|
|
||||||
-- FreeBSDs default priority for a thread.
|
|
||||||
|
|
||||||
-- The followings are internal configuration constants needed.
|
-- The followings are internal configuration constants needed.
|
||||||
|
|
||||||
Next_Serial_Number : Task_Serial_Number := 100;
|
Next_Serial_Number : Task_Serial_Number := 100;
|
||||||
|
@ -133,14 +139,17 @@ package body System.Task_Primitives.Operations is
|
||||||
Time_Slice_Val : Integer;
|
Time_Slice_Val : Integer;
|
||||||
pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
|
pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
|
||||||
|
|
||||||
|
Dispatching_Policy : Character;
|
||||||
|
pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
|
||||||
|
|
||||||
|
FIFO_Within_Priorities : constant Boolean := Dispatching_Policy = 'F';
|
||||||
|
-- Indicates whether FIFO_Within_Priorities is set.
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
-- Local Subprograms --
|
-- Local Subprograms --
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
procedure Abort_Handler
|
procedure Abort_Handler (Sig : Signal);
|
||||||
(signo : Signal;
|
|
||||||
code : Interfaces.C.int;
|
|
||||||
context : access struct_sigcontext);
|
|
||||||
|
|
||||||
function To_Task_ID is new Unchecked_Conversion (System.Address, Task_ID);
|
function To_Task_ID is new Unchecked_Conversion (System.Address, Task_ID);
|
||||||
|
|
||||||
|
@ -215,9 +224,7 @@ package body System.Task_Primitives.Operations is
|
||||||
-- end if;
|
-- end if;
|
||||||
|
|
||||||
procedure Abort_Handler
|
procedure Abort_Handler
|
||||||
(signo : Signal;
|
(Sig : Signal) is
|
||||||
code : Interfaces.C.int;
|
|
||||||
context : access struct_sigcontext) is
|
|
||||||
|
|
||||||
T : Task_ID := Self;
|
T : Task_ID := Self;
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
@ -250,15 +257,13 @@ package body System.Task_Primitives.Operations is
|
||||||
-- Context.PC := Raise_Abort_Signal'Address;
|
-- Context.PC := Raise_Abort_Signal'Address;
|
||||||
-- return;
|
-- return;
|
||||||
-- end if;
|
-- end if;
|
||||||
|
|
||||||
end Abort_Handler;
|
end Abort_Handler;
|
||||||
|
|
||||||
-------------------
|
-----------------
|
||||||
-- Stack_Guard --
|
-- Stack_Guard --
|
||||||
-------------------
|
-----------------
|
||||||
|
|
||||||
procedure Stack_Guard (T : ST.Task_ID; On : Boolean) is
|
procedure Stack_Guard (T : ST.Task_ID; On : Boolean) is
|
||||||
|
|
||||||
Stack_Base : constant Address := Get_Stack_Base (T.Common.LL.Thread);
|
Stack_Base : constant Address := Get_Stack_Base (T.Common.LL.Thread);
|
||||||
Guard_Page_Address : Address;
|
Guard_Page_Address : Address;
|
||||||
|
|
||||||
|
@ -302,7 +307,7 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
-- Note: mutexes and cond_variables needed per-task basis are
|
-- Note: mutexes and cond_variables needed per-task basis are
|
||||||
-- initialized in Intialize_TCB and the Storage_Error is
|
-- initialized in Intialize_TCB and the Storage_Error is
|
||||||
-- handled. Other mutexes (such as All_Tasks_Lock, Memory_Lock...)
|
-- handled. Other mutexes (such as RTS_Lock, Memory_Lock...)
|
||||||
-- used in RTS is initialized before any status change of RTS.
|
-- used in RTS is initialized before any status change of RTS.
|
||||||
-- Therefore rasing Storage_Error in the following routines
|
-- Therefore rasing Storage_Error in the following routines
|
||||||
-- should be able to be handled safely.
|
-- should be able to be handled safely.
|
||||||
|
@ -313,7 +318,6 @@ package body System.Task_Primitives.Operations is
|
||||||
is
|
is
|
||||||
Attributes : aliased pthread_mutexattr_t;
|
Attributes : aliased pthread_mutexattr_t;
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
Adjusted_Prio : Interfaces.C.int;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutexattr_init (Attributes'Access);
|
Result := pthread_mutexattr_init (Attributes'Access);
|
||||||
|
@ -323,17 +327,20 @@ package body System.Task_Primitives.Operations is
|
||||||
raise Storage_Error;
|
raise Storage_Error;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
Result := pthread_mutexattr_setprotocol
|
if Locking_Policy = 'C' then
|
||||||
(Attributes'Access, PTHREAD_PRIO_PROTECT);
|
Result := pthread_mutexattr_setprotocol
|
||||||
pragma Assert (Result = 0);
|
(Attributes'Access, PTHREAD_PRIO_PROTECT);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
|
||||||
-- Convert the Ada priority to be based around the default
|
Result := pthread_mutexattr_setprioceiling
|
||||||
-- system priority.
|
(Attributes'Access, Interfaces.C.int (Prio));
|
||||||
Adjusted_Prio := Interfaces.C.int (Prio) -
|
pragma Assert (Result = 0);
|
||||||
Interfaces.C.int (System.Default_Priority) + Default_Prio;
|
|
||||||
Result := pthread_mutexattr_setprioceiling
|
elsif Locking_Policy = 'I' then
|
||||||
(Attributes'Access, Adjusted_Prio);
|
Result := pthread_mutexattr_setprotocol
|
||||||
pragma Assert (Result = 0);
|
(Attributes'Access, PTHREAD_PRIO_INHERIT);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
end if;
|
||||||
|
|
||||||
Result := pthread_mutex_init (L, Attributes'Access);
|
Result := pthread_mutex_init (L, Attributes'Access);
|
||||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||||
|
@ -349,7 +356,6 @@ package body System.Task_Primitives.Operations is
|
||||||
procedure Initialize_Lock (L : access RTS_Lock; Level : Lock_Level) is
|
procedure Initialize_Lock (L : access RTS_Lock; Level : Lock_Level) is
|
||||||
Attributes : aliased pthread_mutexattr_t;
|
Attributes : aliased pthread_mutexattr_t;
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
Adjusted_Prio : Interfaces.C.int;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutexattr_init (Attributes'Access);
|
Result := pthread_mutexattr_init (Attributes'Access);
|
||||||
|
@ -359,22 +365,26 @@ package body System.Task_Primitives.Operations is
|
||||||
raise Storage_Error;
|
raise Storage_Error;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
-- Convert the Ada priority to be based around the default
|
if Locking_Policy = 'C' then
|
||||||
-- system priority.
|
Result := pthread_mutexattr_setprotocol
|
||||||
Adjusted_Prio := Interfaces.C.int (System.Any_Priority'Last) -
|
(Attributes'Access, PTHREAD_PRIO_PROTECT);
|
||||||
Interfaces.C.int (System.Default_Priority) + Default_Prio;
|
pragma Assert (Result = 0);
|
||||||
Result := pthread_mutexattr_setprotocol
|
|
||||||
(Attributes'Access, PTHREAD_PRIO_PROTECT);
|
|
||||||
pragma Assert (Result = 0);
|
|
||||||
|
|
||||||
Result := pthread_mutexattr_setprioceiling
|
Result := pthread_mutexattr_setprioceiling
|
||||||
(Attributes'Access, Adjusted_Prio);
|
(Attributes'Access, Interfaces.C.int (System.Any_Priority'Last));
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
|
|
||||||
|
elsif Locking_Policy = 'I' then
|
||||||
|
Result := pthread_mutexattr_setprotocol
|
||||||
|
(Attributes'Access, PTHREAD_PRIO_INHERIT);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
end if;
|
||||||
|
|
||||||
Result := pthread_mutex_init (L, Attributes'Access);
|
Result := pthread_mutex_init (L, Attributes'Access);
|
||||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||||
|
|
||||||
if Result = ENOMEM then
|
if Result = ENOMEM then
|
||||||
|
Result := pthread_mutexattr_destroy (Attributes'Access);
|
||||||
raise Storage_Error;
|
raise Storage_Error;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
@ -388,7 +398,6 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
procedure Finalize_Lock (L : access Lock) is
|
procedure Finalize_Lock (L : access Lock) is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutex_destroy (L);
|
Result := pthread_mutex_destroy (L);
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
|
@ -396,7 +405,6 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
procedure Finalize_Lock (L : access RTS_Lock) is
|
procedure Finalize_Lock (L : access RTS_Lock) is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutex_destroy (L);
|
Result := pthread_mutex_destroy (L);
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
|
@ -408,7 +416,6 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
procedure Write_Lock (L : access Lock; Ceiling_Violation : out Boolean) is
|
procedure Write_Lock (L : access Lock; Ceiling_Violation : out Boolean) is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutex_lock (L);
|
Result := pthread_mutex_lock (L);
|
||||||
|
|
||||||
|
@ -418,20 +425,24 @@ package body System.Task_Primitives.Operations is
|
||||||
pragma Assert (Result = 0 or else Result = EINVAL);
|
pragma Assert (Result = 0 or else Result = EINVAL);
|
||||||
end Write_Lock;
|
end Write_Lock;
|
||||||
|
|
||||||
procedure Write_Lock (L : access RTS_Lock) is
|
procedure Write_Lock
|
||||||
|
(L : access RTS_Lock; Global_Lock : Boolean := False)
|
||||||
|
is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutex_lock (L);
|
if not Single_Lock or else Global_Lock then
|
||||||
pragma Assert (Result = 0);
|
Result := pthread_mutex_lock (L);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
end if;
|
||||||
end Write_Lock;
|
end Write_Lock;
|
||||||
|
|
||||||
procedure Write_Lock (T : Task_ID) is
|
procedure Write_Lock (T : Task_ID) is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutex_lock (T.Common.LL.L'Access);
|
if not Single_Lock then
|
||||||
pragma Assert (Result = 0);
|
Result := pthread_mutex_lock (T.Common.LL.L'Access);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
end if;
|
||||||
end Write_Lock;
|
end Write_Lock;
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
|
@ -449,40 +460,46 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
procedure Unlock (L : access Lock) is
|
procedure Unlock (L : access Lock) is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutex_unlock (L);
|
Result := pthread_mutex_unlock (L);
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
end Unlock;
|
end Unlock;
|
||||||
|
|
||||||
procedure Unlock (L : access RTS_Lock) is
|
procedure Unlock (L : access RTS_Lock; Global_Lock : Boolean := False) is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutex_unlock (L);
|
if not Single_Lock or else Global_Lock then
|
||||||
pragma Assert (Result = 0);
|
Result := pthread_mutex_unlock (L);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
end if;
|
||||||
end Unlock;
|
end Unlock;
|
||||||
|
|
||||||
procedure Unlock (T : Task_ID) is
|
procedure Unlock (T : Task_ID) is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutex_unlock (T.Common.LL.L'Access);
|
if not Single_Lock then
|
||||||
pragma Assert (Result = 0);
|
Result := pthread_mutex_unlock (T.Common.LL.L'Access);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
end if;
|
||||||
end Unlock;
|
end Unlock;
|
||||||
|
|
||||||
-------------
|
-----------
|
||||||
-- Sleep --
|
-- Sleep --
|
||||||
-------------
|
-----------
|
||||||
|
|
||||||
procedure Sleep (Self_ID : Task_ID;
|
procedure Sleep
|
||||||
Reason : System.Tasking.Task_States) is
|
(Self_ID : Task_ID;
|
||||||
|
Reason : System.Tasking.Task_States)
|
||||||
|
is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
pragma Assert (Self_ID = Self);
|
if Single_Lock then
|
||||||
Result := pthread_cond_wait (Self_ID.Common.LL.CV'Access,
|
Result := pthread_cond_wait
|
||||||
Self_ID.Common.LL.L'Access);
|
(Self_ID.Common.LL.CV'Access, Single_RTS_Lock'Access);
|
||||||
|
else
|
||||||
|
Result := pthread_cond_wait
|
||||||
|
(Self_ID.Common.LL.CV'Access, Self_ID.Common.LL.L'Access);
|
||||||
|
end if;
|
||||||
|
|
||||||
-- EINTR is not considered a failure.
|
-- EINTR is not considered a failure.
|
||||||
|
|
||||||
|
@ -505,7 +522,7 @@ package body System.Task_Primitives.Operations is
|
||||||
Timedout : out Boolean;
|
Timedout : out Boolean;
|
||||||
Yielded : out Boolean)
|
Yielded : out Boolean)
|
||||||
is
|
is
|
||||||
Check_Time : constant Duration := Clock;
|
Check_Time : constant Duration := Monotonic_Clock;
|
||||||
Rel_Time : Duration;
|
Rel_Time : Duration;
|
||||||
Abs_Time : Duration;
|
Abs_Time : Duration;
|
||||||
Request : aliased timespec;
|
Request : aliased timespec;
|
||||||
|
@ -541,10 +558,18 @@ package body System.Task_Primitives.Operations is
|
||||||
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
|
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
|
||||||
or else Self_ID.Pending_Priority_Change;
|
or else Self_ID.Pending_Priority_Change;
|
||||||
|
|
||||||
Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
|
if Single_Lock then
|
||||||
Self_ID.Common.LL.L'Access, Request'Access);
|
Result := pthread_cond_timedwait
|
||||||
|
(Self_ID.Common.LL.CV'Access, Single_RTS_Lock'Access,
|
||||||
|
Request'Access);
|
||||||
|
|
||||||
exit when Abs_Time <= Clock;
|
else
|
||||||
|
Result := pthread_cond_timedwait
|
||||||
|
(Self_ID.Common.LL.CV'Access, Self_ID.Common.LL.L'Access,
|
||||||
|
Request'Access);
|
||||||
|
end if;
|
||||||
|
|
||||||
|
exit when Abs_Time <= Monotonic_Clock;
|
||||||
|
|
||||||
if Result = 0 or Result = EINTR then
|
if Result = 0 or Result = EINTR then
|
||||||
|
|
||||||
|
@ -572,7 +597,7 @@ package body System.Task_Primitives.Operations is
|
||||||
Time : Duration;
|
Time : Duration;
|
||||||
Mode : ST.Delay_Modes)
|
Mode : ST.Delay_Modes)
|
||||||
is
|
is
|
||||||
Check_Time : constant Duration := Clock;
|
Check_Time : constant Duration := Monotonic_Clock;
|
||||||
Abs_Time : Duration;
|
Abs_Time : Duration;
|
||||||
Rel_Time : Duration;
|
Rel_Time : Duration;
|
||||||
Request : aliased timespec;
|
Request : aliased timespec;
|
||||||
|
@ -584,6 +609,11 @@ package body System.Task_Primitives.Operations is
|
||||||
-- check for pending abort and priority change below! :(
|
-- check for pending abort and priority change below! :(
|
||||||
|
|
||||||
SSL.Abort_Defer.all;
|
SSL.Abort_Defer.all;
|
||||||
|
|
||||||
|
if Single_Lock then
|
||||||
|
Lock_RTS;
|
||||||
|
end if;
|
||||||
|
|
||||||
Write_Lock (Self_ID);
|
Write_Lock (Self_ID);
|
||||||
|
|
||||||
if Mode = Relative then
|
if Mode = Relative then
|
||||||
|
@ -619,9 +649,15 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
|
exit when Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level;
|
||||||
|
|
||||||
Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
|
if Single_Lock then
|
||||||
Self_ID.Common.LL.L'Access, Request'Access);
|
Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
|
||||||
exit when Abs_Time <= Clock;
|
Single_RTS_Lock'Access, Request'Access);
|
||||||
|
else
|
||||||
|
Result := pthread_cond_timedwait (Self_ID.Common.LL.CV'Access,
|
||||||
|
Self_ID.Common.LL.L'Access, Request'Access);
|
||||||
|
end if;
|
||||||
|
|
||||||
|
exit when Abs_Time <= Monotonic_Clock;
|
||||||
|
|
||||||
pragma Assert (Result = 0
|
pragma Assert (Result = 0
|
||||||
or else Result = ETIMEDOUT
|
or else Result = ETIMEDOUT
|
||||||
|
@ -632,15 +668,20 @@ package body System.Task_Primitives.Operations is
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
Unlock (Self_ID);
|
Unlock (Self_ID);
|
||||||
|
|
||||||
|
if Single_Lock then
|
||||||
|
Unlock_RTS;
|
||||||
|
end if;
|
||||||
|
|
||||||
Result := sched_yield;
|
Result := sched_yield;
|
||||||
SSL.Abort_Undefer.all;
|
SSL.Abort_Undefer.all;
|
||||||
end Timed_Delay;
|
end Timed_Delay;
|
||||||
|
|
||||||
-----------
|
---------------------
|
||||||
-- Clock --
|
-- Monotonic_Clock --
|
||||||
-----------
|
---------------------
|
||||||
|
|
||||||
function Clock return Duration is
|
function Monotonic_Clock return Duration is
|
||||||
TS : aliased timespec;
|
TS : aliased timespec;
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
|
@ -649,7 +690,7 @@ package body System.Task_Primitives.Operations is
|
||||||
(clock_id => CLOCK_REALTIME, tp => TS'Unchecked_Access);
|
(clock_id => CLOCK_REALTIME, tp => TS'Unchecked_Access);
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
return To_Duration (TS);
|
return To_Duration (TS);
|
||||||
end Clock;
|
end Monotonic_Clock;
|
||||||
|
|
||||||
-------------------
|
-------------------
|
||||||
-- RT_Resolution --
|
-- RT_Resolution --
|
||||||
|
@ -666,7 +707,6 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
procedure Wakeup (T : Task_ID; Reason : System.Tasking.Task_States) is
|
procedure Wakeup (T : Task_ID; Reason : System.Tasking.Task_States) is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_cond_signal (T.Common.LL.CV'Access);
|
Result := pthread_cond_signal (T.Common.LL.CV'Access);
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
|
@ -678,7 +718,6 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
procedure Yield (Do_Yield : Boolean := True) is
|
procedure Yield (Do_Yield : Boolean := True) is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if Do_Yield then
|
if Do_Yield then
|
||||||
Result := sched_yield;
|
Result := sched_yield;
|
||||||
|
@ -690,8 +729,8 @@ package body System.Task_Primitives.Operations is
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
procedure Set_Priority
|
procedure Set_Priority
|
||||||
(T : Task_ID;
|
(T : Task_ID;
|
||||||
Prio : System.Any_Priority;
|
Prio : System.Any_Priority;
|
||||||
Loss_Of_Inheritance : Boolean := False)
|
Loss_Of_Inheritance : Boolean := False)
|
||||||
is
|
is
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
|
@ -699,18 +738,19 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
begin
|
begin
|
||||||
T.Common.Current_Priority := Prio;
|
T.Common.Current_Priority := Prio;
|
||||||
|
Param.sched_priority := Interfaces.C.int (Prio);
|
||||||
-- Convert the Ada priority to be based around the default
|
|
||||||
-- system priority.
|
|
||||||
Param.sched_priority := Default_Prio + Interfaces.C.int (Prio) -
|
|
||||||
Interfaces.C.int (System.Default_Priority);
|
|
||||||
|
|
||||||
if Time_Slice_Supported and then Time_Slice_Val > 0 then
|
if Time_Slice_Supported and then Time_Slice_Val > 0 then
|
||||||
Result := pthread_setschedparam
|
Result := pthread_setschedparam
|
||||||
(T.Common.LL.Thread, SCHED_RR, Param'Access);
|
(T.Common.LL.Thread, SCHED_RR, Param'Access);
|
||||||
else
|
|
||||||
|
elsif FIFO_Within_Priorities or else Time_Slice_Val = 0 then
|
||||||
Result := pthread_setschedparam
|
Result := pthread_setschedparam
|
||||||
(T.Common.LL.Thread, SCHED_FIFO, Param'Access);
|
(T.Common.LL.Thread, SCHED_FIFO, Param'Access);
|
||||||
|
|
||||||
|
else
|
||||||
|
Result := pthread_setschedparam
|
||||||
|
(T.Common.LL.Thread, SCHED_OTHER, Param'Access);
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
|
@ -732,20 +772,21 @@ package body System.Task_Primitives.Operations is
|
||||||
procedure Enter_Task (Self_ID : Task_ID) is
|
procedure Enter_Task (Self_ID : Task_ID) is
|
||||||
begin
|
begin
|
||||||
Self_ID.Common.LL.Thread := pthread_self;
|
Self_ID.Common.LL.Thread := pthread_self;
|
||||||
|
Self_ID.Common.LL.LWP := lwp_self;
|
||||||
|
|
||||||
Specific.Set (Self_ID);
|
Specific.Set (Self_ID);
|
||||||
|
|
||||||
Lock_All_Tasks_List;
|
Lock_RTS;
|
||||||
|
|
||||||
for I in Known_Tasks'Range loop
|
for J in Known_Tasks'Range loop
|
||||||
if Known_Tasks (I) = null then
|
if Known_Tasks (J) = null then
|
||||||
Known_Tasks (I) := Self_ID;
|
Known_Tasks (J) := Self_ID;
|
||||||
Self_ID.Known_Tasks_Index := I;
|
Self_ID.Known_Tasks_Index := J;
|
||||||
exit;
|
exit;
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
|
|
||||||
Unlock_All_Tasks_List;
|
Unlock_RTS;
|
||||||
end Enter_Task;
|
end Enter_Task;
|
||||||
|
|
||||||
--------------
|
--------------
|
||||||
|
@ -763,9 +804,8 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
procedure Initialize_TCB (Self_ID : Task_ID; Succeeded : out Boolean) is
|
procedure Initialize_TCB (Self_ID : Task_ID; Succeeded : out Boolean) is
|
||||||
Mutex_Attr : aliased pthread_mutexattr_t;
|
Mutex_Attr : aliased pthread_mutexattr_t;
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
Cond_Attr : aliased pthread_condattr_t;
|
Cond_Attr : aliased pthread_condattr_t;
|
||||||
Adjusted_Prio : Interfaces.C.int;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
-- Give the task a unique serial number.
|
-- Give the task a unique serial number.
|
||||||
|
@ -774,66 +814,63 @@ package body System.Task_Primitives.Operations is
|
||||||
Next_Serial_Number := Next_Serial_Number + 1;
|
Next_Serial_Number := Next_Serial_Number + 1;
|
||||||
pragma Assert (Next_Serial_Number /= 0);
|
pragma Assert (Next_Serial_Number /= 0);
|
||||||
|
|
||||||
Result := pthread_mutexattr_init (Mutex_Attr'Access);
|
if not Single_Lock then
|
||||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
Result := pthread_mutexattr_init (Mutex_Attr'Access);
|
||||||
|
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||||
|
|
||||||
if Result /= 0 then
|
if Result = 0 then
|
||||||
Succeeded := False;
|
if Locking_Policy = 'C' then
|
||||||
return;
|
Result := pthread_mutexattr_setprotocol
|
||||||
|
(Mutex_Attr'Access, PTHREAD_PRIO_PROTECT);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
|
||||||
|
Result := pthread_mutexattr_setprioceiling
|
||||||
|
(Mutex_Attr'Access,
|
||||||
|
Interfaces.C.int (System.Any_Priority'Last));
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
|
||||||
|
elsif Locking_Policy = 'I' then
|
||||||
|
Result := pthread_mutexattr_setprotocol
|
||||||
|
(Mutex_Attr'Access, PTHREAD_PRIO_INHERIT);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
end if;
|
||||||
|
|
||||||
|
Result := pthread_mutex_init (Self_ID.Common.LL.L'Access,
|
||||||
|
Mutex_Attr'Access);
|
||||||
|
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||||
|
end if;
|
||||||
|
|
||||||
|
if Result /= 0 then
|
||||||
|
Succeeded := False;
|
||||||
|
return;
|
||||||
|
end if;
|
||||||
|
|
||||||
|
Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
end if;
|
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, Adjusted_Prio);
|
|
||||||
pragma Assert (Result = 0);
|
|
||||||
|
|
||||||
Result := pthread_mutex_init (Self_ID.Common.LL.L'Access,
|
|
||||||
Mutex_Attr'Access);
|
|
||||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
|
||||||
|
|
||||||
if Result /= 0 then
|
|
||||||
Succeeded := False;
|
|
||||||
return;
|
|
||||||
end if;
|
|
||||||
|
|
||||||
Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
|
|
||||||
pragma Assert (Result = 0);
|
|
||||||
|
|
||||||
Result := pthread_condattr_init (Cond_Attr'Access);
|
Result := pthread_condattr_init (Cond_Attr'Access);
|
||||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||||
|
|
||||||
if Result /= 0 then
|
if Result = 0 then
|
||||||
Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
|
Result := pthread_cond_init (Self_ID.Common.LL.CV'Access,
|
||||||
pragma Assert (Result = 0);
|
Cond_Attr'Access);
|
||||||
Succeeded := False;
|
pragma Assert (Result = 0 or else Result = ENOMEM);
|
||||||
return;
|
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
Result := pthread_cond_init (Self_ID.Common.LL.CV'Access,
|
if Result = 0 then
|
||||||
Cond_Attr'Access);
|
Succeeded := True;
|
||||||
pragma Assert (Result = 0 or else Result = ENOMEM);
|
else
|
||||||
|
if not Single_Lock then
|
||||||
|
Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
end if;
|
||||||
|
|
||||||
if Result /= 0 then
|
|
||||||
Result := pthread_condattr_destroy (Cond_Attr'Access);
|
|
||||||
pragma Assert (Result = 0);
|
|
||||||
Result := pthread_mutex_destroy (Self_ID.Common.LL.L'Access);
|
|
||||||
pragma Assert (Result = 0);
|
|
||||||
Succeeded := False;
|
Succeeded := False;
|
||||||
return;
|
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
Result := pthread_condattr_destroy (Cond_Attr'Access);
|
Result := pthread_condattr_destroy (Cond_Attr'Access);
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
|
|
||||||
Succeeded := True;
|
|
||||||
end Initialize_TCB;
|
end Initialize_TCB;
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
|
@ -894,18 +931,13 @@ package body System.Task_Primitives.Operations is
|
||||||
(Attributes'Access, Adjusted_Stack_Size);
|
(Attributes'Access, Adjusted_Stack_Size);
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
|
|
||||||
if Time_Slice_Supported and then Time_Slice_Val > 0 then
|
if T.Common.Task_Info /= Default_Scope 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
|
-- We are assuming that Scope_Type has the same values than the
|
||||||
-- corresponding C macros
|
-- corresponding C macros
|
||||||
|
|
||||||
Result := pthread_attr_setscope
|
Result := pthread_attr_setscope
|
||||||
(Attributes'Access, Task_Info_Type'Pos (T.Task_Info));
|
(Attributes'Access, Task_Info_Type'Pos (T.Common.Task_Info));
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
@ -932,6 +964,9 @@ package body System.Task_Primitives.Operations is
|
||||||
end;
|
end;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
Result := pthread_attr_destroy (Attributes'Access);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
|
||||||
Set_Priority (T, Priority);
|
Set_Priority (T, Priority);
|
||||||
end Create_Task;
|
end Create_Task;
|
||||||
|
|
||||||
|
@ -947,8 +982,10 @@ package body System.Task_Primitives.Operations is
|
||||||
Unchecked_Deallocation (Ada_Task_Control_Block, Task_ID);
|
Unchecked_Deallocation (Ada_Task_Control_Block, Task_ID);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result := pthread_mutex_destroy (T.Common.LL.L'Access);
|
if not Single_Lock then
|
||||||
pragma Assert (Result = 0);
|
Result := pthread_mutex_destroy (T.Common.LL.L'Access);
|
||||||
|
pragma Assert (Result = 0);
|
||||||
|
end if;
|
||||||
|
|
||||||
Result := pthread_cond_destroy (T.Common.LL.CV'Access);
|
Result := pthread_cond_destroy (T.Common.LL.CV'Access);
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
|
@ -1012,23 +1049,23 @@ package body System.Task_Primitives.Operations is
|
||||||
return Environment_Task_ID;
|
return Environment_Task_ID;
|
||||||
end Environment_Task;
|
end Environment_Task;
|
||||||
|
|
||||||
-------------------------
|
--------------
|
||||||
-- Lock_All_Tasks_List --
|
-- Lock_RTS --
|
||||||
-------------------------
|
--------------
|
||||||
|
|
||||||
procedure Lock_All_Tasks_List is
|
procedure Lock_RTS is
|
||||||
begin
|
begin
|
||||||
Write_Lock (All_Tasks_L'Access);
|
Write_Lock (Single_RTS_Lock'Access, Global_Lock => True);
|
||||||
end Lock_All_Tasks_List;
|
end Lock_RTS;
|
||||||
|
|
||||||
---------------------------
|
----------------
|
||||||
-- Unlock_All_Tasks_List --
|
-- Unlock_RTS --
|
||||||
---------------------------
|
----------------
|
||||||
|
|
||||||
procedure Unlock_All_Tasks_List is
|
procedure Unlock_RTS is
|
||||||
begin
|
begin
|
||||||
Unlock (All_Tasks_L'Access);
|
Unlock (Single_RTS_Lock'Access, Global_Lock => True);
|
||||||
end Unlock_All_Tasks_List;
|
end Unlock_RTS;
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
-- Suspend_Task --
|
-- Suspend_Task --
|
||||||
|
@ -1067,7 +1104,7 @@ package body System.Task_Primitives.Operations is
|
||||||
|
|
||||||
-- Initialize the lock used to synchronize chain of all ATCBs.
|
-- Initialize the lock used to synchronize chain of all ATCBs.
|
||||||
|
|
||||||
Initialize_Lock (All_Tasks_L'Access, All_Tasks_Level);
|
Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
|
||||||
|
|
||||||
Specific.Initialize (Environment_Task);
|
Specific.Initialize (Environment_Task);
|
||||||
|
|
||||||
|
@ -1094,10 +1131,6 @@ package body System.Task_Primitives.Operations is
|
||||||
begin
|
begin
|
||||||
declare
|
declare
|
||||||
Result : Interfaces.C.int;
|
Result : Interfaces.C.int;
|
||||||
My_Tid : pthread_t;
|
|
||||||
Param : aliased struct_sched_param;
|
|
||||||
Policy : aliased Interfaces.C.int;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
-- Mask Environment task for all signals. The original mask of the
|
-- Mask Environment task for all signals. The original mask of the
|
||||||
-- Environment task will be recovered by Interrupt_Server task
|
-- Environment task will be recovered by Interrupt_Server task
|
||||||
|
@ -1117,14 +1150,5 @@ begin
|
||||||
pragma Assert (Result = 0);
|
pragma Assert (Result = 0);
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
|
|
||||||
-- Earlier versions of FreeBSDs threads libraries used a priority
|
|
||||||
-- range of 0..126. Newer versions use POSIX priorities 0..31.
|
|
||||||
-- Autodetect the range by looking at the current priority.
|
|
||||||
My_Tid := pthread_self;
|
|
||||||
if pthread_getschedparam (My_Tid, Policy'Access, Param'Access) = 0 then
|
|
||||||
Default_Prio := Param.sched_priority;
|
|
||||||
end if;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end System.Task_Primitives.Operations;
|
end System.Task_Primitives.Operations;
|
||||||
|
|
15
lang/gnat/files/freebsd5x-patch-01
Normal file
15
lang/gnat/files/freebsd5x-patch-01
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
--- ./config/i386/freebsd.h.orig Tue Nov 26 12:56:06 2002
|
||||||
|
+++ ./config/i386/freebsd.h Tue Nov 26 12:57:30 2002
|
||||||
|
@@ -165,10 +165,10 @@
|
||||||
|
"%{!shared: \
|
||||||
|
%{!pg: \
|
||||||
|
%{!pthread: %{!kthread:-lc} %{kthread:-lpthread -lc}} \
|
||||||
|
- %{pthread:-lc_r}} \
|
||||||
|
+ %{pthread:-lc_r -lc}} \
|
||||||
|
%{pg: \
|
||||||
|
%{!pthread: %{!kthread:-lc_p} %{kthread:-lpthread_p -lc_p}} \
|
||||||
|
- %{pthread:-lc_r_p}}}"
|
||||||
|
+ %{pthread:-lc_r_p -lc_p}}}"
|
||||||
|
#else
|
||||||
|
#define LIB_SPEC \
|
||||||
|
"%{!shared: \
|
|
@ -1,795 +0,0 @@
|
||||||
--- 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
|
|
||||||
|
|
||||||
/* 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)"
|
|
||||||
|
|
||||||
#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 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; }
|
|
||||||
fi
|
|
||||||
-ac_config_guess=$ac_aux_dir/config.guess
|
|
||||||
-ac_config_sub=$ac_aux_dir/config.sub
|
|
||||||
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
|
|
||||||
+ac_config_guess="/bin/sh $ac_aux_dir/config.guess"
|
|
||||||
+ac_config_sub="/bin/sh $ac_aux_dir/config.sub"
|
|
||||||
+ac_configure="/bin/sh $ac_aux_dir/configure" # This should be Cygnus configure.
|
|
||||||
|
|
||||||
|
|
||||||
# Do some error checking and defaulting for the host and target type.
|
|
||||||
@@ -2797,6 +2797,20 @@
|
|
||||||
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-*-openbsd*)
|
|
||||||
+ tm_file=alpha/openbsd.h
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ tmake_file=t-libc-ok
|
|
||||||
+ xmake_file=x-openbsd
|
|
||||||
+ ;;
|
|
||||||
alpha*-*-linux-gnuecoff*)
|
|
||||||
tm_file="${tm_file} alpha/linux.h"
|
|
||||||
xm_file="${xm_file} alpha/xm-linux.h"
|
|
||||||
@@ -3158,6 +3172,14 @@
|
|
||||||
use_collect2=yes
|
|
||||||
fixincludes=Makefile.in
|
|
||||||
;;
|
|
||||||
+ hppa*-*-openbsd*)
|
|
||||||
+ target_cpu_default=1
|
|
||||||
+ tm_file="pa/pa-openbsd.h"
|
|
||||||
+ xm_file=pa/xm-openbsd.h
|
|
||||||
+ xmake_file=x-openbsd
|
|
||||||
+ use_collect2=yes
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ ;;
|
|
||||||
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
|
|
||||||
;;
|
|
||||||
+ i[34567]86-*-openbsd*)
|
|
||||||
+ tm_file=i386/openbsd.h
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ tmake_file=t-libc-ok
|
|
||||||
+ xmake_file=x-openbsd
|
|
||||||
+ ;;
|
|
||||||
i[34567]86-*-coff*)
|
|
||||||
tm_file=i386/i386-coff.h
|
|
||||||
tmake_file=i386/t-i386bare
|
|
||||||
@@ -3964,6 +3993,13 @@
|
|
||||||
fixincludes=fixinc.math
|
|
||||||
tmake_file=t-netbsd
|
|
||||||
;;
|
|
||||||
+ m68k-*-openbsd*)
|
|
||||||
+ tm_file=m68k/openbsd.h
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ tmake_file=t-libc-ok
|
|
||||||
+ xmake_file=x-openbsd
|
|
||||||
+ ;;
|
|
||||||
m68k-*-sysv3*) # Motorola m68k's running system V.3
|
|
||||||
xm_file=m68k/xm-m68kv.h
|
|
||||||
xmake_file=m68k/x-m68kv
|
|
||||||
@@ -4273,6 +4309,20 @@
|
|
||||||
prefix=$native_prefix
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
+ mips*el-*-openbsd*) # MIPS running OpenBSD
|
|
||||||
+ tm_file=mips/openbsd-le.h
|
|
||||||
+ xmake_file=x-openbsd
|
|
||||||
+ tmake_file=t-libc-ok
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ ;;
|
|
||||||
+ mips*-*-openbsd*) # MIPS big-endian running OpenBSD
|
|
||||||
+ tm_file=mips/openbsd-be.h
|
|
||||||
+ xmake_file=x-openbsd
|
|
||||||
+ tmake_file=t-libc-ok
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ ;;
|
|
||||||
mips-sony-bsd* | mips-sony-newsos*) # Sony NEWS 3600 or risc/news.
|
|
||||||
tm_file=mips/news4.h
|
|
||||||
if [ x$stabs = xyes ]; then
|
|
||||||
@@ -4612,6 +4662,13 @@
|
|
||||||
fixincludes=fixinc.math
|
|
||||||
tmake_file=t-netbsd
|
|
||||||
;;
|
|
||||||
+ ns32k-*-openbsd*)
|
|
||||||
+ tm_file=ns32k/openbsd.h
|
|
||||||
+ tmake_file=t-libc-ok
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ xmake_file=x-openbsd
|
|
||||||
+ ;;
|
|
||||||
pdp11-*-bsd)
|
|
||||||
tm_file="${tm_file} pdp11/2bsd.h"
|
|
||||||
;;
|
|
||||||
@@ -4625,10 +4682,23 @@
|
|
||||||
romp-*-aos*)
|
|
||||||
use_collect2=yes
|
|
||||||
;;
|
|
||||||
+ romp-*-openbsd*)
|
|
||||||
+ tm_file=romp/openbsd.h
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ xmake_file=romp/x-openbsd
|
|
||||||
+ ;;
|
|
||||||
romp-*-mach*)
|
|
||||||
xmake_file=romp/x-mach
|
|
||||||
use_collect2=yes
|
|
||||||
;;
|
|
||||||
+ powerpc-*-*bsd*)
|
|
||||||
+ tm_file=rs6000/openbsd.h
|
|
||||||
+ tmake_file=rs6000/t-openbsd
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ xmake_file=rs6000/x-openbsd
|
|
||||||
+ ;;
|
|
||||||
powerpc-*-sysv* | powerpc-*-elf*)
|
|
||||||
tm_file=rs6000/sysv4.h
|
|
||||||
xm_file=rs6000/xm-sysv4.h
|
|
||||||
@@ -4841,6 +4911,13 @@
|
|
||||||
fixincludes=fixinc.math
|
|
||||||
tmake_file=t-netbsd
|
|
||||||
;;
|
|
||||||
+ sparc-*-openbsd*)
|
|
||||||
+ tm_file=sparc/openbsd.h
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ tmake_file=t-libc-ok
|
|
||||||
+ xmake_file=x-openbsd
|
|
||||||
+ ;;
|
|
||||||
sparc-*-bsd*)
|
|
||||||
tm_file=sparc/bsd.h
|
|
||||||
;;
|
|
||||||
@@ -5009,6 +5086,14 @@
|
|
||||||
# On NetBSD, the headers are already okay, except for math.h.
|
|
||||||
fixincludes=fixinc.math
|
|
||||||
tmake_file=t-netbsd
|
|
||||||
+ float_format=vax
|
|
||||||
+ ;;
|
|
||||||
+ vax-*-openbsd*)
|
|
||||||
+ tm_file=vax/openbsd.h
|
|
||||||
+ tmake_file="t-libc-ok vax/t-openbsd"
|
|
||||||
+ # On OpenBSD, the headers are already okay.
|
|
||||||
+ fixincludes=Makefile.in
|
|
||||||
+ xmake_file=x-openbsd
|
|
||||||
float_format=vax
|
|
||||||
;;
|
|
||||||
vax-*-ultrix*) # vaxen running ultrix
|
|
||||||
--- choose-temp.c.orig Thu Dec 4 06:17:56 1997
|
|
||||||
+++ choose-temp.c Tue Aug 11 04:05:05 1998
|
|
||||||
@@ -107,12 +107,17 @@
|
|
||||||
base = try (getenv ("TMP"), base);
|
|
||||||
base = try (getenv ("TEMP"), base);
|
|
||||||
|
|
||||||
+#ifdef COMMENT_OUT /* XXX - P_tmpdir is not /tmp in 4.4BSD */
|
|
||||||
#ifdef P_tmpdir
|
|
||||||
base = try (P_tmpdir, base);
|
|
||||||
#endif
|
|
||||||
+#endif /* XXX */
|
|
||||||
|
|
||||||
/* Try /usr/tmp, then /tmp. */
|
|
||||||
+#ifdef COMMENT_OUT /* XXX - want /tmp used, peroid. Sometimes pkg_add can
|
|
||||||
+ create a /usr/tmp, so beware. */
|
|
||||||
base = try (usrtmp, base);
|
|
||||||
+#endif /* XXX */
|
|
||||||
base = try (tmp, base);
|
|
||||||
|
|
||||||
/* If all else fails, use the current directory! */
|
|
||||||
--- flags.h.orig Wed Dec 31 05:02:33 1997
|
|
||||||
+++ flags.h Wed Mar 31 00:08:39 1999
|
|
||||||
@@ -125,6 +125,10 @@
|
|
||||||
|
|
||||||
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. */
|
|
||||||
+
|
|
||||||
+extern int flag_move_all_movables;
|
|
||||||
+
|
|
||||||
+/* Nonzero forces all general induction variables in loops to be
|
|
||||||
+ strength reduced. */
|
|
||||||
+
|
|
||||||
+extern int flag_reduce_all_givs;
|
|
||||||
+
|
|
||||||
+/* 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 Wed Mar 31 00:15:41 1999
|
|
||||||
@@ -463,6 +463,20 @@
|
|
||||||
|
|
||||||
int flag_unroll_all_loops;
|
|
||||||
|
|
||||||
+/* Nonzero forces all invariant computations in loops to be moved
|
|
||||||
+ outside the loop. */
|
|
||||||
+
|
|
||||||
+int flag_move_all_movables = 0;
|
|
||||||
+
|
|
||||||
+/* Nonzero forces all general induction variables in loops to be
|
|
||||||
+ strength reduced. */
|
|
||||||
+
|
|
||||||
+int flag_reduce_all_givs = 0;
|
|
||||||
+
|
|
||||||
+/* Nonzero gets another run of loop_optimize performed. */
|
|
||||||
+
|
|
||||||
+int flag_rerun_loop_opt = 0;
|
|
||||||
+
|
|
||||||
/* 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 @@
|
|
||||||
extra cost because something else was already moved. */
|
|
||||||
|
|
||||||
if (already_moved[regno]
|
|
||||||
+ || flag_move_all_movables
|
|
||||||
|| (threshold * savings * m->lifetime) >= insn_count
|
|
||||||
|| (m->forces && m->forces->done
|
|
||||||
&& n_times_used[m->forces->regno] == 1))
|
|
||||||
@@ -3911,7 +3912,7 @@
|
|
||||||
of such giv's whether or not we know they are used after the loop
|
|
||||||
exit. */
|
|
||||||
|
|
||||||
- if (v->lifetime * threshold * benefit < insn_count
|
|
||||||
+ if (!flag_reduce_all_givs && v->lifetime * threshold * benefit < insn_count
|
|
||||||
&& ! bl->reversed)
|
|
||||||
{
|
|
||||||
if (loop_dump_stream)
|
|
||||||
--- cp/lex.c.orig Wed Nov 26 12:13:20 1997
|
|
||||||
+++ cp/lex.c Tue Aug 11 13:37:17 1998
|
|
||||||
@@ -3329,6 +3329,14 @@
|
|
||||||
token_buffer[0] = '^';
|
|
||||||
token_buffer[1] = 0;
|
|
||||||
}
|
|
||||||
+ else if (ptr->token == NAMESPACE)
|
|
||||||
+ {
|
|
||||||
+ static int warned;
|
|
||||||
+ if (! warned)
|
|
||||||
+ warning ("namespaces are mostly broken in this version of g++");
|
|
||||||
+
|
|
||||||
+ warned = 1;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
value = (int) ptr->token;
|
|
||||||
}
|
|
||||||
--- gcc.1.orig Tue Feb 17 10:44:00 1998
|
|
||||||
+++ gcc.1 Tue Aug 11 13:30:01 1998
|
|
||||||
@@ -182,7 +182,7 @@
|
|
||||||
\-Waggregate\-return
|
|
||||||
\-Wcast\-align
|
|
||||||
\-Wcast\-qual
|
|
||||||
-\-Wchar\-subscript
|
|
||||||
+\-Wchar\-subscripts
|
|
||||||
\-Wcomment
|
|
||||||
\-Wconversion
|
|
||||||
\-Wenum\-clash
|
|
||||||
--- invoke.texi.orig Tue Feb 17 10:54:05 1998
|
|
||||||
+++ invoke.texi Tue Aug 11 13:29:38 1998
|
|
||||||
@@ -115,7 +115,7 @@
|
|
||||||
@smallexample
|
|
||||||
-fsyntax-only -pedantic -pedantic-errors
|
|
||||||
-w -W -Wall -Waggregate-return -Wbad-function-cast
|
|
||||||
--Wcast-align -Wcast-qual -Wchar-subscript -Wcomment
|
|
||||||
+-Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment
|
|
||||||
-Wconversion -Werror -Wformat
|
|
||||||
-Wid-clash-@var{len} -Wimplicit -Wimplicit-int
|
|
||||||
-Wimplicit-function-declarations -Wimport -Winline
|
|
||||||
@@ -153,6 +153,7 @@
|
|
||||||
-frerun-cse-after-loop -fschedule-insns
|
|
||||||
-fschedule-insns2 -fstrength-reduce -fthread-jumps
|
|
||||||
-funroll-all-loops -funroll-loops
|
|
||||||
+-fmove-all-movables -freduce-all-givs -frerun-loop-opt
|
|
||||||
-O -O0 -O1 -O2 -O3
|
|
||||||
@end smallexample
|
|
||||||
|
|
||||||
@@ -2284,6 +2285,47 @@
|
|
||||||
Perform the optimization of loop unrolling. This is done for all loops
|
|
||||||
and usually makes programs run more slowly. @samp{-funroll-all-loops}
|
|
||||||
implies @samp{-fstrength-reduce} as well as @samp{-frerun-cse-after-loop}.
|
|
||||||
+
|
|
||||||
+@item -fmove-all-movables
|
|
||||||
+Forces all invariant computations in loops to be moved
|
|
||||||
+outside the loop.
|
|
||||||
+This option is provided primarily to improve performance
|
|
||||||
+for some Fortran code, though it might improve code written
|
|
||||||
+in other languages.
|
|
||||||
+
|
|
||||||
+@emph{Note:} When compiling programs written in Fortran,
|
|
||||||
+this option is enabled by default.
|
|
||||||
+
|
|
||||||
+Analysis of Fortran code optimization and the resulting
|
|
||||||
+optimizations triggered by this option, and the
|
|
||||||
+@samp{-freduce-all-givs} and @samp{-frerun-loop-opt}
|
|
||||||
+options as well, were
|
|
||||||
+contributed by Toon Moene (@code{toon@@moene.indiv.nluug.nl}).
|
|
||||||
+
|
|
||||||
+Please let us (@code{fortran@@gnu.ai.mit.edu})
|
|
||||||
+know how use of these options affects
|
|
||||||
+the performance of your production code.
|
|
||||||
+We're very interested in code that runs @emph{slower}
|
|
||||||
+when these options are @emph{enabled}.
|
|
||||||
+
|
|
||||||
+@item -freduce-all-givs
|
|
||||||
+Forces all general-induction variables in loops to be
|
|
||||||
+strength-reduced.
|
|
||||||
+This option is provided primarily to improve performance
|
|
||||||
+for some Fortran code, though it might improve code written
|
|
||||||
+in other languages.
|
|
||||||
+
|
|
||||||
+@emph{Note:} When compiling programs written in Fortran,
|
|
||||||
+this option is enabled by default.
|
|
||||||
+
|
|
||||||
+@item -frerun-loop-opt
|
|
||||||
+Runs loop optimizations a second time.
|
|
||||||
+This option is provided primarily to improve performance
|
|
||||||
+for some Fortran code, though it might improve code written
|
|
||||||
+in other languages.
|
|
||||||
+
|
|
||||||
+@emph{Note:} When compiling programs written in Fortran,
|
|
||||||
+this option is enabled by default.
|
|
||||||
|
|
||||||
@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 @@
|
|
||||||
/* Write a version stamp. Don't write anything if we are running as a
|
|
||||||
cross-compiler. Otherwise, use the versions in /usr/include/stamp.h. */
|
|
||||||
|
|
||||||
-#if !defined(CROSS_COMPILE) && !defined(_WIN32) && !defined(__linux__) && !defined(VMS)
|
|
||||||
+#if !defined(CROSS_COMPILE) && !defined(_WIN32) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__linux__) && !defined(VMS)
|
|
||||||
#include <stamp.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
--- ginclude/stdarg.h.orig Sat Oct 18 10:26:07 1997
|
|
||||||
+++ ginclude/stdarg.h Tue Aug 11 13:27:03 1998
|
|
||||||
@@ -64,7 +64,7 @@
|
|
||||||
|
|
||||||
#ifndef __GNUC_VA_LIST
|
|
||||||
#define __GNUC_VA_LIST
|
|
||||||
-#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__)
|
|
||||||
+#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__) || defined(__OpenBSD__)
|
|
||||||
typedef char *__gnuc_va_list;
|
|
||||||
#else
|
|
||||||
typedef void *__gnuc_va_list;
|
|
||||||
--- ginclude/stddef.h.orig Mon Oct 28 04:35:28 1996
|
|
||||||
+++ ginclude/stddef.h Tue Aug 11 13:26:05 1998
|
|
||||||
@@ -24,7 +24,7 @@
|
|
||||||
|
|
||||||
/* On 4.3bsd-net2, make sure ansi.h is included, so we have
|
|
||||||
one less case to deal with in the following. */
|
|
||||||
-#if defined (__BSD_NET2__) || defined (____386BSD____) || defined (__FreeBSD__) || defined(__NetBSD__)
|
|
||||||
+#if defined (__BSD_NET2__) || defined (____386BSD____) || defined (__FreeBSD__) || defined(__NetBSD__) || defined (__OpenBSD__)
|
|
||||||
#include <machine/ansi.h>
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,26 +1,27 @@
|
||||||
*** ./config/i386/freebsd.h.orig Fri Dec 5 07:15:34 1997
|
--- config/i386/freebsd.h.orig Mon Nov 25 07:16:22 2002
|
||||||
--- ./config/i386/freebsd.h Fri Feb 12 21:35:52 1999
|
+++ config/i386/freebsd.h Mon Nov 25 09:18:52 2002
|
||||||
***************
|
@@ -162,8 +162,13 @@
|
||||||
*** 152,159 ****
|
* -lc_p or -ggdb to LDFLAGS at the link time, respectively.
|
||||||
* -lc_p or -ggdb to LDFLAGS at the link time, respectively.
|
*/
|
||||||
*/
|
#define LIB_SPEC \
|
||||||
#define LIB_SPEC \
|
- "%{!shared: %{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} \
|
||||||
! "%{!shared: %{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} \
|
- %{!ggdb:-lc} %{ggdb:-lg}}"
|
||||||
! %{!ggdb:-lc} %{ggdb:-lg}}"
|
+ "%{!shared: \
|
||||||
#else
|
+ %{!pg: \
|
||||||
#define LIB_SPEC \
|
+ %{!pthread: %{!kthread:-lc} %{kthread:-lpthread -lc}} \
|
||||||
"%{!shared: \
|
+ %{pthread:-lc_r}} \
|
||||||
--- 152,164 ----
|
+ %{pg: \
|
||||||
* -lc_p or -ggdb to LDFLAGS at the link time, respectively.
|
+ %{!pthread: %{!kthread:-lc_p} %{kthread:-lpthread_p -lc_p}} \
|
||||||
*/
|
+ %{pthread:-lc_r_p}}}"
|
||||||
#define LIB_SPEC \
|
#else
|
||||||
! "%{!shared: \
|
#define LIB_SPEC \
|
||||||
! %{!pg: \
|
"%{!shared: \
|
||||||
! %{!pthread: %{!kthread:-lc} %{kthread:-lpthread -lc}} \
|
@@ -186,7 +191,7 @@
|
||||||
! %{pthread:-lc_r}} \
|
done. */
|
||||||
! %{pg: \
|
|
||||||
! %{!pthread: %{!kthread:-lc_p} %{kthread:-lpthread_p -lc_p}} \
|
#undef LINK_SPEC
|
||||||
! %{pthread:-lc_r_p}}}"
|
-#define LINK_SPEC "-m elf_i386 %{shared:-shared} \
|
||||||
#else
|
+#define LINK_SPEC "%{shared:-shared} \
|
||||||
#define LIB_SPEC \
|
%{!shared: \
|
||||||
"%{!shared: \
|
%{!ibcs: \
|
||||||
|
%{!static: \
|
||||||
|
|
|
@ -1,37 +1,31 @@
|
||||||
--- ada/Makefile.in.orig Thu May 3 07:01:07 2001
|
*** ada/Makefile.in.orig Thu Oct 24 04:02:15 2002
|
||||||
+++ ada/Makefile.in Mon Feb 4 13:15:17 2002
|
--- ada/Makefile.in Fri Nov 22 09:12:11 2002
|
||||||
@@ -1109,6 +1109,25 @@
|
***************
|
||||||
$(CC) -c $(CFLAGS) -gnatpg $(ADA_INCLUDES) $<
|
*** 820,825 ****
|
||||||
endif
|
--- 820,845 ----
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
+ifeq ($(strip $(filter-out %86 freebsd%,$(arch) $(osys))),)
|
+ ifeq ($(strip $(filter-out %86 freebsd%,$(arch) $(osys))),)
|
||||||
+ LIBGNAT_TARGET_PAIRS = \
|
+ LIBGNAT_TARGET_PAIRS = \
|
||||||
+ a-intnam.ads<4fintnam.ads \
|
+ a-intnam.ads<4fintnam.ads \
|
||||||
+ s-inmaop.adb<7sinmaop.adb \
|
+ s-inmaop.adb<7sinmaop.adb \
|
||||||
+ s-intman.adb<5fintman.adb \
|
+ s-intman.adb<5fintman.adb \
|
||||||
+ s-mastop.adb<5omastop.adb \
|
+ s-mastop.adb<5omastop.adb \
|
||||||
+ s-osinte.adb<5fosinte.adb \
|
+ s-osinte.adb<5fosinte.adb \
|
||||||
+ s-osinte.ads<5fosinte.ads \
|
+ s-osinte.ads<5fosinte.ads \
|
||||||
+ s-osprim.adb<7sosprim.adb \
|
+ s-osprim.adb<7sosprim.adb \
|
||||||
+ s-taprop.adb<5ftaprop.adb \
|
+ s-taprop.adb<5ftaprop.adb \
|
||||||
+ s-taspri.ads<7staspri.ads \
|
+ s-taspri.ads<7staspri.ads \
|
||||||
+ s-tpopsp.adb<7stpopsp.adb \
|
+ s-tpopsp.adb<7stpopsp.adb \
|
||||||
+ system.ads<5fsystem.ads
|
+ system.ads<5fsystem.ads
|
||||||
+
|
+
|
||||||
+ SHARED_MAJOR = 1
|
+ SHARED_MAJOR = 1
|
||||||
+ soext = .so.$(SHARED_MAJOR)
|
+ soext = .so.$(SHARED_MAJOR)
|
||||||
+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/'))
|
+ THREADSLIB=-pthread
|
||||||
+endif
|
+ LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/'))
|
||||||
|
+ endif
|
||||||
+
|
+
|
||||||
ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),)
|
ifeq ($(strip $(filter-out mips sgi irix%,$(targ))),)
|
||||||
ifeq ($(strip $(filter-out mips sgi irix6%,$(targ))),)
|
ifeq ($(strip $(filter-out mips sgi irix6%,$(targ))),)
|
||||||
LIBGNAT_TARGET_PAIRS = \
|
LIBGNAT_TARGET_PAIRS = \
|
||||||
@@ -1997,7 +2016,7 @@
|
|
||||||
$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) $(misclib) -lm
|
|
||||||
cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
|
|
||||||
-o libgnarl-$(LIBRARY_VERSION)$(soext) $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) \
|
|
||||||
- $(GNATRTL_TASKING_OBJS) -l$(threadslib)
|
|
||||||
+ $(GNATRTL_TASKING_OBJS) $(threadslib)
|
|
||||||
cd rts; $(LN) libgnat-$(LIBRARY_VERSION)$(soext) libgnat$(soext)
|
|
||||||
cd rts; $(LN) libgnarl-$(LIBRARY_VERSION)$(soext) libgnarl$(soext)
|
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
*** ./ada/gnatcmd.adb.orig Fri Sep 24 08:41:33 1999
|
*** ./ada/gnatcmd.adb.orig Thu Oct 24 04:02:18 2002
|
||||||
--- ./ada/gnatcmd.adb Tue Nov 2 02:44:41 1999
|
--- ./ada/gnatcmd.adb Fri Nov 22 09:16:30 2002
|
||||||
***************
|
***************
|
||||||
*** 1173,1179 ****
|
*** 2530,2536 ****
|
||||||
|
Usage => new S'("GNAT SHARED [obj_&_lib_&_exe_&_opt"
|
||||||
(Cname => new S'("COMPILE"),
|
& "files] /qualifiers"),
|
||||||
Usage => new S'("GNAT COMPILE filespec[,...] /qualifiers"),
|
VMS_Only => True,
|
||||||
! Unixcmd => new S'("gcc -c -x ada"),
|
! Unixcmd => new S'("gcc"),
|
||||||
Switches => GCC_Switches'Access,
|
Unixsws => new Argument_List'(new String'("-shared")
|
||||||
Params => new Parameter_Array'(1 => FILES_OR_WILDCARD),
|
& Init_Object_Dirs),
|
||||||
Defext => " "),
|
Switches => Shared_Switches'Access,
|
||||||
--- 1173,1179 ----
|
--- 2530,2536 ----
|
||||||
|
Usage => new S'("GNAT SHARED [obj_&_lib_&_exe_&_opt"
|
||||||
(Cname => new S'("COMPILE"),
|
& "files] /qualifiers"),
|
||||||
Usage => new S'("GNAT COMPILE filespec[,...] /qualifiers"),
|
VMS_Only => True,
|
||||||
! Unixcmd => new S'("adagcc -c -x ada"),
|
! Unixcmd => new S'("adagcc"),
|
||||||
Switches => GCC_Switches'Access,
|
Unixsws => new Argument_List'(new String'("-shared")
|
||||||
Params => new Parameter_Array'(1 => FILES_OR_WILDCARD),
|
& Init_Object_Dirs),
|
||||||
Defext => " "),
|
Switches => Shared_Switches'Access,
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
*** ./ada/gnatchop.adb.orig Fri Sep 24 08:42:44 1999
|
*** ./ada/gnatchop.adb.orig Thu Oct 24 04:02:18 2002
|
||||||
--- ./ada/gnatchop.adb Tue Nov 2 02:43:44 1999
|
--- ./ada/gnatchop.adb Fri Nov 22 09:18:03 2002
|
||||||
***************
|
***************
|
||||||
*** 1575,1581 ****
|
*** 49,55 ****
|
||||||
begin
|
Config_File_Name : constant String_Access := new String'("gnat.adc");
|
||||||
-- Check presence of required executables
|
-- The name of the file holding the GNAT configuration pragmas
|
||||||
|
|
||||||
! Gnat_Cmd := Locate_Executable ("gcc");
|
! Gcc : String_Access := new String'("gcc");
|
||||||
|
-- May be modified by switch --GCC=
|
||||||
|
|
||||||
if Gnat_Cmd = null then
|
Gcc_Set : Boolean := False;
|
||||||
goto No_Files_Written;
|
--- 49,55 ----
|
||||||
--- 1575,1581 ----
|
Config_File_Name : constant String_Access := new String'("gnat.adc");
|
||||||
begin
|
-- The name of the file holding the GNAT configuration pragmas
|
||||||
-- Check presence of required executables
|
|
||||||
|
|
||||||
! Gnat_Cmd := Locate_Executable ("adagcc");
|
! Gcc : String_Access := new String'("adagcc");
|
||||||
|
-- May be modified by switch --GCC=
|
||||||
|
|
||||||
if Gnat_Cmd = null then
|
Gcc_Set : Boolean := False;
|
||||||
goto No_Files_Written;
|
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
+ Raise_From_Signal_Handler (exception, msg);
|
+ Raise_From_Signal_Handler (exception, msg);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ static void
|
+ void
|
||||||
+ __gnat_install_handler ()
|
+ __gnat_install_handler ()
|
||||||
+ {
|
+ {
|
||||||
+ struct sigaction act;
|
+ struct sigaction act;
|
||||||
|
|
|
@ -1,53 +1,54 @@
|
||||||
*** ada/a-sysdep.c.orig Wed Jul 19 15:09:47 2000
|
*** ada/a-sysdep.c.orig Thu Oct 24 04:02:16 2002
|
||||||
--- ada/a-sysdep.c Fri Oct 13 08:58:43 2000
|
--- ada/a-sysdep.c Fri Nov 22 09:24:51 2002
|
||||||
***************
|
|
||||||
*** 236,242 ****
|
|
||||||
|
|
||||||
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|
|
||||||
|| (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
|
|
||||||
! || defined (__MACHTEN__)
|
|
||||||
#include <termios.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#elif defined (VMS)
|
|
||||||
--- 236,242 ----
|
|
||||||
|
|
||||||
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|
|
||||||
|| (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
|
|
||||||
! || defined (__MACHTEN__) || defined (__FreeBSD__)
|
|
||||||
#include <termios.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#elif defined (VMS)
|
|
||||||
***************
|
***************
|
||||||
*** 286,292 ****
|
*** 286,292 ****
|
||||||
{
|
|
||||||
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|
||||||
|
|| (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
|
||||||
|
|| defined (__MACHTEN__) || defined (hpux) || defined (_AIX) \
|
||||||
|
! || (defined (__svr4__) && defined (i386)) || defined (__Lynx__)
|
||||||
|
#include <termios.h>
|
||||||
|
#elif defined (VMS)
|
||||||
|
extern char *decc$ga_stdscr;
|
||||||
|
--- 286,293 ----
|
||||||
|
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|
||||||
|
|| (defined (__osf__) && ! defined (__alpha_vxworks)) || defined (WINNT) \
|
||||||
|
|| defined (__MACHTEN__) || defined (hpux) || defined (_AIX) \
|
||||||
|
! || (defined (__svr4__) && defined (i386)) || defined (__Lynx__) \
|
||||||
|
! || defined (__FreeBSD__)
|
||||||
|
#include <termios.h>
|
||||||
|
#elif defined (VMS)
|
||||||
|
extern char *decc$ga_stdscr;
|
||||||
|
***************
|
||||||
|
*** 336,342 ****
|
||||||
|| (defined (__osf__) && ! defined (__alpha_vxworks)) \
|
|| (defined (__osf__) && ! defined (__alpha_vxworks)) \
|
||||||
! || defined (__CYGWIN32__) || defined (__MACHTEN__)
|
|| defined (__CYGWIN32__) || defined (__MACHTEN__) || defined (hpux) \
|
||||||
|
|| defined (_AIX) || (defined (__svr4__) && defined (i386)) \
|
||||||
|
! || defined (__Lynx__)
|
||||||
char c;
|
char c;
|
||||||
int nread;
|
int nread;
|
||||||
int good_one = 0;
|
int good_one = 0;
|
||||||
--- 286,292 ----
|
--- 337,343 ----
|
||||||
{
|
|
||||||
#if defined (linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|
|
||||||
|| (defined (__osf__) && ! defined (__alpha_vxworks)) \
|
|| (defined (__osf__) && ! defined (__alpha_vxworks)) \
|
||||||
! || defined (__CYGWIN32__) || defined (__MACHTEN__) || defined (__FreeBSD__)
|
|| defined (__CYGWIN32__) || defined (__MACHTEN__) || defined (hpux) \
|
||||||
|
|| defined (_AIX) || (defined (__svr4__) && defined (i386)) \
|
||||||
|
! || defined (__Lynx__) || defined (__FreeBSD__)
|
||||||
char c;
|
char c;
|
||||||
int nread;
|
int nread;
|
||||||
int good_one = 0;
|
int good_one = 0;
|
||||||
***************
|
***************
|
||||||
*** 303,309 ****
|
*** 355,361 ****
|
||||||
/* Set RAW mode */
|
#if defined(linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|
||||||
termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON;
|
|| defined (__osf__) || defined (__MACHTEN__) || defined (hpux) \
|
||||||
#if defined(sgi) || defined (sun) || defined (__EMX__) || defined (__osf__) \
|
|| defined (_AIX) || (defined (__svr4__) && defined (i386)) \
|
||||||
! || defined (linux) || defined (__MACHTEN__)
|
! || defined (__Lynx__)
|
||||||
eof_ch = termios_rec.c_cc[VEOF];
|
eof_ch = termios_rec.c_cc[VEOF];
|
||||||
|
|
||||||
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
|
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
|
||||||
--- 303,309 ----
|
--- 356,362 ----
|
||||||
/* Set RAW mode */
|
#if defined(linux) || defined (sun) || defined (sgi) || defined (__EMX__) \
|
||||||
termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON;
|
|| defined (__osf__) || defined (__MACHTEN__) || defined (hpux) \
|
||||||
#if defined(sgi) || defined (sun) || defined (__EMX__) || defined (__osf__) \
|
|| defined (_AIX) || (defined (__svr4__) && defined (i386)) \
|
||||||
! || defined (linux) || defined (__MACHTEN__) || defined (__FreeBSD__)
|
! || defined (__Lynx__) || defined (__FreeBSD__)
|
||||||
eof_ch = termios_rec.c_cc[VEOF];
|
eof_ch = termios_rec.c_cc[VEOF];
|
||||||
|
|
||||||
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
|
/* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
--- ada/g-os_lib.adb.orig Fri Feb 1 23:18:26 2002
|
|
||||||
+++ ada/g-os_lib.adb Fri Feb 1 23:22:08 2002
|
|
||||||
@@ -192,26 +192,13 @@
|
|
||||||
(FD : out File_Descriptor;
|
|
||||||
Name : out Temp_File_Name)
|
|
||||||
is
|
|
||||||
- function Get_Temp_Name (T : Address) return Address;
|
|
||||||
- pragma Import (C, Get_Temp_Name, "mktemp");
|
|
||||||
-
|
|
||||||
- function Open_New_Temp
|
|
||||||
- (Name : System.Address;
|
|
||||||
- Fmode : Mode)
|
|
||||||
- return File_Descriptor;
|
|
||||||
- pragma Import (C, Open_New_Temp, "open_new_temp");
|
|
||||||
+ function Open_New_Temp (T : Address) return File_Descriptor;
|
|
||||||
+ pragma Import (C, Open_New_Temp, "mkstemp");
|
|
||||||
|
|
||||||
begin
|
|
||||||
Name (1 .. Temp_File_Len - 1) := "GNAT-XXXXXX";
|
|
||||||
Name (Temp_File_Len) := ASCII.NUL;
|
|
||||||
-
|
|
||||||
- -- Check for NULL pointer returned by C
|
|
||||||
-
|
|
||||||
- if Get_Temp_Name (Name'Address) = Null_Address then
|
|
||||||
- FD := -1;
|
|
||||||
- else
|
|
||||||
- FD := Open_New_Temp (Name'Address, Binary);
|
|
||||||
- end if;
|
|
||||||
+ FD := Open_New_Temp (Name'Address);
|
|
||||||
end Create_Temp_File;
|
|
||||||
|
|
||||||
-----------------
|
|
|
@ -1,5 +1,5 @@
|
||||||
--- ../gnat-3.14p-src/examples/Makefile Tue Jan 30 18:00:05 2001
|
--- ../gnat-3.15p-src/examples/Makefile Tue Jan 30 18:00:05 2001
|
||||||
+++ ../gnat-3.14p-src/examples/Makefile.new Mon Feb 4 15:01:55 2002
|
+++ ../gnat-3.15p-src/examples/Makefile.new Mon Feb 4 15:01:55 2002
|
||||||
@@ -6,10 +6,10 @@
|
@@ -6,10 +6,10 @@
|
||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,30 @@
|
||||||
--- ada/a-adaint.c.orig Tue Feb 12 17:24:15 2002
|
*** ada/a-adaint.c.orig Thu Oct 24 04:02:15 2002
|
||||||
+++ ada/a-adaint.c Tue Feb 12 17:21:56 2002
|
--- ada/a-adaint.c Fri Nov 22 09:53:21 2002
|
||||||
@@ -590,6 +590,17 @@
|
***************
|
||||||
strcpy (tmp_filename, pname);
|
*** 605,610 ****
|
||||||
free (pname);
|
--- 605,612 ----
|
||||||
}
|
|
||||||
+#elif defined (__FreeBSD__)
|
#if defined (linux) && !defined (__vxworks)
|
||||||
+ {
|
return mkstemp (path);
|
||||||
+ int fd;
|
+ #elif defined (__FreeBSD__)
|
||||||
+
|
+ return mkstemp (path);
|
||||||
+ strcpy (tmp_filename, "/tmp/gnat-XXXXXX");
|
#elif defined (__Lynx__)
|
||||||
+ fd = mkstemp (tmp_filename);
|
mktemp (path);
|
||||||
+ if (fd < 0)
|
#else
|
||||||
+ strcpy (tmp_filename, "");
|
***************
|
||||||
+ else
|
*** 673,679 ****
|
||||||
+ close (fd);
|
|
||||||
+ }
|
free (pname);
|
||||||
#else
|
}
|
||||||
tmpnam (tmp_filename);
|
! #elif defined (linux)
|
||||||
#endif
|
char *tmpdir = getenv ("TMPDIR");
|
||||||
|
|
||||||
|
if (tmpdir == NULL)
|
||||||
|
--- 675,681 ----
|
||||||
|
|
||||||
|
free (pname);
|
||||||
|
}
|
||||||
|
! #elif defined (linux) || defined (__FreeBSD__)
|
||||||
|
char *tmpdir = getenv ("TMPDIR");
|
||||||
|
|
||||||
|
if (tmpdir == NULL)
|
||||||
|
|
|
@ -13,9 +13,9 @@ bin/gnatlink
|
||||||
bin/gnatls
|
bin/gnatls
|
||||||
bin/gnatmake
|
bin/gnatmake
|
||||||
bin/gnatmem
|
bin/gnatmem
|
||||||
|
bin/gnatname
|
||||||
bin/gnatprep
|
bin/gnatprep
|
||||||
bin/gnatpsta
|
bin/gnatpsta
|
||||||
bin/gnatpsys
|
|
||||||
bin/gnatxref
|
bin/gnatxref
|
||||||
bin/%%GNUHOST%%-gcc
|
bin/%%GNUHOST%%-gcc
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-astaco.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-astaco.adb
|
||||||
|
@ -28,6 +28,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-chahan.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-chahan.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-chahan.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-charac.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-charac.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-chlat1.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-chlat1.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-chlat9.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colien.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colien.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colien.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colien.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colire.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colire.adb
|
||||||
|
@ -35,6 +36,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-colire.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-comlin.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-comlin.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-comlin.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-comlin.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-cwila1.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-cwila1.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-cwila9.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-decima.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-decima.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-decima.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-decima.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-diocst.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/a-diocst.adb
|
||||||
|
@ -251,11 +253,15 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-cgideb.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-cgideb.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-cgideb.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-comlin.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-comlin.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-comlin.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-comlin.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-crc32.adb
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-crc32.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-curexc.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-curexc.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debpoo.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debpoo.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debpoo.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debpoo.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debuti.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debuti.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debuti.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-debuti.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-diopit.adb
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-diopit.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dirope.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dirope.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dirope.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dirope.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dyntab.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-dyntab.adb
|
||||||
|
@ -284,6 +290,8 @@ 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-os_lib.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-regexp.adb
|
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-regexp.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-regist.adb
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-regist.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-regpat.adb
|
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-regpat.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-soccon.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/g-soccon.ads
|
||||||
|
@ -335,10 +343,13 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-os2syn.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-os2thr.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-os2thr.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-pacdec.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-pacdec.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-pacdec.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-pacdec.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-vxwoio.adb
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-vxwoio.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-vxwork.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/i-vxwork.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/interfac.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/interfac.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/ioexcept.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/ioexcept.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/machcode.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/machcode.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/memtrack.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-addima.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-addima.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-addima.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-addima.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-arit64.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-arit64.adb
|
||||||
|
@ -354,6 +365,8 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-auxdec.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-bitops.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-bitops.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-bitops.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-bitops.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-chepoo.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-chepoo.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-crc32.adb
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-crc32.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-direio.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-direio.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-direio.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-direio.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-errrep.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-errrep.adb
|
||||||
|
@ -449,6 +462,8 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mantis.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mantis.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mantis.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mastop.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mastop.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mastop.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-mastop.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-memory.adb
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-memory.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osinte.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osinte.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osinte.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osinte.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osprim.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-osprim.adb
|
||||||
|
@ -582,6 +597,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-proinf.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-proinf.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-proinf.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-rpc.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-rpc.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-rpc.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-rpc.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-scaval.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-secsta.adb
|
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-secsta.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sequio.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-sequio.adb
|
||||||
|
@ -652,6 +668,10 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tposen.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tposen.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tposen.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-traceb.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-traceb.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-traceb.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-traceb.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-traces.adb
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-traces.ads
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tratas.adb
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-tratas.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-unstyp.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-unstyp.ads
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.adb
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.adb
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.ads
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adainclude/s-vaflop.ads
|
||||||
|
@ -721,10 +741,12 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-calend.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-chahan.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-chahan.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-charac.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-charac.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-chlat1.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-chlat1.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-chlat9.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-colien.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-colien.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-colire.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-colire.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-comlin.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-comlin.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-cwila1.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-cwila1.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-cwila9.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-decima.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-dynpri.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-einuoc.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/a-einuoc.ali
|
||||||
|
@ -826,9 +848,11 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-cgi.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-cgicoo.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-cgicoo.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-cgideb.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-cgideb.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-comlin.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-comlin.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-crc32.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-curexc.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-curexc.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-debpoo.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-debpoo.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-debuti.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-debuti.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-diopit.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-dirope.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-dirope.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-except.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-except.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-exctra.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-exctra.ali
|
||||||
|
@ -858,6 +882,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-tasloc.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-thread.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-thread.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-traceb.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/g-trasym.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/g-trasym.o
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/gnat.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-c.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/i-cexten.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/i-cexten.ali
|
||||||
|
@ -871,11 +896,12 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/interfac.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/ioexcept.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/ioexcept.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnarl.a
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnarl.a
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnarl.so
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnarl.so
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnarl.so.%%SHARED_MAJOR%%
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnarl.so.1
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnat.a
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnat.a
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnat.so
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnat.so
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnat.so.%%SHARED_MAJOR%%
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/libgnat.so.1
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/machcode.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/machcode.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/memtrack.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-addima.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-addima.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-arit64.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-arit64.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-assert.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-assert.ali
|
||||||
|
@ -883,6 +909,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-asthan.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-auxdec.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-auxdec.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-bitops.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-bitops.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-chepoo.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-chepoo.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-crc32.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-direio.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-direio.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-errrep.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-errrep.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-except.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-except.ali
|
||||||
|
@ -942,6 +969,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-io.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-maccod.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-maccod.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-mantis.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-mantis.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-mastop.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-mastop.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-memory.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-osinte.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-osinte.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-osprim.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-osprim.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-pack03.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-pack03.ali
|
||||||
|
@ -1009,6 +1037,7 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-poosiz.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-powtab.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-powtab.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-proinf.ali
|
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-rpc.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-scaval.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-secsta.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-sequio.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-shasto.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-shasto.ali
|
||||||
|
@ -1045,6 +1074,8 @@ lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tpoben.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tpobop.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tpobop.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tposen.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tposen.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-traceb.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-traceb.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-traces.ali
|
||||||
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-tratas.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-unstyp.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-unstyp.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-vaflop.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-vaflop.ali
|
||||||
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-valboo.ali
|
lib/gcc-lib/%%GNUHOST%%/%%GCC_VERSION%%/adalib/s-valboo.ali
|
||||||
|
|
Loading…
Add table
Reference in a new issue