pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

devel/gnat-glade: Add package 6.0.1



Module Name:	pkgsrc-wip
Committed By:	Dmytro Kazankov <dmytro.kazankov%gmail.com@localhost>
Pushed By:	dkazankov
Date:		Thu Feb 13 23:35:09 2025 +0200
Changeset:	28e44d772fb4123c28fdff21da63cda5c64acb42

Added Files:
	gnat-glade/COMMIT_MSG
	gnat-glade/DESCR
	gnat-glade/Makefile
	gnat-glade/PLIST
	gnat-glade/buildlink3.mk
	gnat-glade/distinfo
	gnat-glade/patches/patch-Dist_Makefile.in
	gnat-glade/patches/patch-Dist_config.sdefault
	gnat-glade/patches/patch-Dist_gnatdist-config.in
	gnat-glade/patches/patch-Dist_xe.adb
	gnat-glade/patches/patch-Dist_xe__back-garlic.adb
	gnat-glade/patches/patch-Dist_xe__back-polyorb.adb
	gnat-glade/patches/patch-Dist_xe__back.adb
	gnat-glade/patches/patch-Dist_xe__front.adb
	gnat-glade/patches/patch-Dist_xe__main.adb
	gnat-glade/patches/patch-Dist_xe__names.ads
	gnat-glade/patches/patch-Dist_xe__parse.adb
	gnat-glade/patches/patch-Dist_xe__scan.adb
	gnat-glade/patches/patch-Dist_xe__stdcnf.adb
	gnat-glade/patches/patch-Dist_xe__usage.adb
	gnat-glade/patches/patch-Dist_xe__utils.adb
	gnat-glade/patches/patch-Examples_MultiPro_s-gaprxy.adb
	gnat-glade/patches/patch-Garlic_Makefile.in
	gnat-glade/patches/patch-Garlic_garlic.gpr
	gnat-glade/patches/patch-Garlic_isthrbio.adb
	gnat-glade/patches/patch-Garlic_isthrbio.gpr
	gnat-glade/patches/patch-Garlic_s-dsaser.ads
	gnat-glade/patches/patch-Garlic_s-gafizi.adb
	gnat-glade/patches/patch-Garlic_s-gaprre.adb
	gnat-glade/patches/patch-Garlic_s-gaprre.ads
	gnat-glade/patches/patch-Garlic_s-gaprtc.adb
	gnat-glade/patches/patch-Garlic_s-garexc.adb
	gnat-glade/patches/patch-Garlic_s-garsto.adb
	gnat-glade/patches/patch-Garlic_s-garstr.ads
	gnat-glade/patches/patch-Garlic_s-gartab.adb
	gnat-glade/patches/patch-Garlic_s-gartas.adb
	gnat-glade/patches/patch-Garlic_s-garuni.adb
	gnat-glade/patches/patch-Garlic_s-gastdf.adb
	gnat-glade/patches/patch-Garlic_s-gastha.adb
	gnat-glade/patches/patch-Garlic_s-gptcse.adb
	gnat-glade/patches/patch-Garlic_s-parint.adb
	gnat-glade/patches/patch-Garlic_s-parint.ads
	gnat-glade/patches/patch-Garlic_s-rpc.adb
	gnat-glade/patches/patch-Garlic_s-rpcser.adb
	gnat-glade/patches/patch-Garlic_s-shasto.adb
	gnat-glade/patches/patch-Garlic_s-shasto.ads
	gnat-glade/patches/patch-Garlic_s-stratt.adb
	gnat-glade/patches/patch-Garlic_select.c
	gnat-glade/patches/patch-configure

Log Message:
devel/gnat-glade: Add package 6.0.1

GLADE provides an up to date implementations of Annex E (Distributed Systems)
of the ISO standard ISO/IEC 8652:1995/COR1:2000 for GNAT

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=28e44d772fb4123c28fdff21da63cda5c64acb42

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 gnat-glade/COMMIT_MSG                              |    4 +
 gnat-glade/DESCR                                   |    4 +
 gnat-glade/Makefile                                |   36 +
 gnat-glade/PLIST                                   |  135 ++
 gnat-glade/buildlink3.mk                           |   17 +
 gnat-glade/distinfo                                |   48 +
 gnat-glade/patches/patch-Dist_Makefile.in          |   29 +
 gnat-glade/patches/patch-Dist_config.sdefault      |   16 +
 gnat-glade/patches/patch-Dist_gnatdist-config.in   |  172 ++
 gnat-glade/patches/patch-Dist_xe.adb               |   16 +
 gnat-glade/patches/patch-Dist_xe__back-garlic.adb  |   16 +
 gnat-glade/patches/patch-Dist_xe__back-polyorb.adb |   16 +
 gnat-glade/patches/patch-Dist_xe__back.adb         |   25 +
 gnat-glade/patches/patch-Dist_xe__front.adb        |   17 +
 gnat-glade/patches/patch-Dist_xe__main.adb         |   29 +
 gnat-glade/patches/patch-Dist_xe__names.ads        |   16 +
 gnat-glade/patches/patch-Dist_xe__parse.adb        |   53 +
 gnat-glade/patches/patch-Dist_xe__scan.adb         |   26 +
 gnat-glade/patches/patch-Dist_xe__stdcnf.adb       |   24 +
 gnat-glade/patches/patch-Dist_xe__usage.adb        |   15 +
 gnat-glade/patches/patch-Dist_xe__utils.adb        |   62 +
 .../patches/patch-Examples_MultiPro_s-gaprxy.adb   |   15 +
 gnat-glade/patches/patch-Garlic_Makefile.in        |  242 +++
 gnat-glade/patches/patch-Garlic_garlic.gpr         |   44 +
 gnat-glade/patches/patch-Garlic_isthrbio.adb       |   15 +
 gnat-glade/patches/patch-Garlic_isthrbio.gpr       |   17 +
 gnat-glade/patches/patch-Garlic_s-dsaser.ads       |   63 +
 gnat-glade/patches/patch-Garlic_s-gafizi.adb       |   15 +
 gnat-glade/patches/patch-Garlic_s-gaprre.adb       |   15 +
 gnat-glade/patches/patch-Garlic_s-gaprre.ads       |   15 +
 gnat-glade/patches/patch-Garlic_s-gaprtc.adb       |   49 +
 gnat-glade/patches/patch-Garlic_s-garexc.adb       |   16 +
 gnat-glade/patches/patch-Garlic_s-garsto.adb       |   64 +
 gnat-glade/patches/patch-Garlic_s-garstr.ads       |   19 +
 gnat-glade/patches/patch-Garlic_s-gartab.adb       |   16 +
 gnat-glade/patches/patch-Garlic_s-gartas.adb       |   15 +
 gnat-glade/patches/patch-Garlic_s-garuni.adb       |   16 +
 gnat-glade/patches/patch-Garlic_s-gastdf.adb       |   15 +
 gnat-glade/patches/patch-Garlic_s-gastha.adb       |   15 +
 gnat-glade/patches/patch-Garlic_s-gptcse.adb       |   15 +
 gnat-glade/patches/patch-Garlic_s-parint.adb       |   61 +
 gnat-glade/patches/patch-Garlic_s-parint.ads       |   16 +
 gnat-glade/patches/patch-Garlic_s-rpc.adb          |   18 +
 gnat-glade/patches/patch-Garlic_s-rpcser.adb       |   15 +
 gnat-glade/patches/patch-Garlic_s-shasto.adb       |  130 ++
 gnat-glade/patches/patch-Garlic_s-shasto.ads       |  213 ++
 gnat-glade/patches/patch-Garlic_s-stratt.adb       | 2025 ++++++++++++++++++++
 gnat-glade/patches/patch-Garlic_select.c           |   14 +
 gnat-glade/patches/patch-configure                 |   84 +
 49 files changed, 4033 insertions(+)

diffs:
diff --git a/gnat-glade/COMMIT_MSG b/gnat-glade/COMMIT_MSG
new file mode 100644
index 0000000000..da0e8ec5ae
--- /dev/null
+++ b/gnat-glade/COMMIT_MSG
@@ -0,0 +1,4 @@
+devel/gnat-glade: Add package 6.0.1
+
+GLADE provides an up to date implementations of Annex E (Distributed Systems)
+of the ISO standard ISO/IEC 8652:1995/COR1:2000 for GNAT
diff --git a/gnat-glade/DESCR b/gnat-glade/DESCR
new file mode 100644
index 0000000000..8a2f8744aa
--- /dev/null
+++ b/gnat-glade/DESCR
@@ -0,0 +1,4 @@
+GNAT Library for Ada Distributed Environment
+
+Provides implementations of Annex E (Distributed Systems)
+of the ISO standard ISO/IEC 8652:1995/COR1:2000 for GNAT.
\ No newline at end of file
diff --git a/gnat-glade/Makefile b/gnat-glade/Makefile
new file mode 100644
index 0000000000..1208067273
--- /dev/null
+++ b/gnat-glade/Makefile
@@ -0,0 +1,36 @@
+# $NetBSD: Makefile,v 1.0 2024/12/05 14:00:00 dkazankov Exp $
+
+PKGNAME=	gnat-glade-6.0.1
+CATEGORIES=	devel
+MAINTAINER=	pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=	https://sourceforge.net/projects/gnat-glade/
+COMMENT=	GNAT Library for Ada Distributed Environment
+LICENSE=	gnu-gpl-v2
+
+DISTNAME=	gnat-glade-code-r135-trunk
+DISTFILES=	${DISTNAME}.zip
+
+SITES.${DISTNAME}.zip=	-https://sourceforge.net/code-snapshots/svn/g/gn/gnat-glade/code/gnat-glade-code-r135-trunk.zip
+
+USE_TOOLS+=	gmake
+GNU_CONFIGURE=	yes
+
+CHECK_PIE_SKIP+=	bin/*
+CHECK_RELRO_SKIP+=	bin/*
+
+USE_LANGUAGES=	c ada
+
+GCC_REQD+=	13
+
+GENERATE_PLIST+= \
+	cd ${DESTDIR}${PREFIX} && \
+	${FIND} bin include lib \( -type f -or -type l \) -print | ${SORT};
+
+.include "../../mk/bsd.prefs.mk"
+
+post-patch:
+	chmod +x ${WRKSRC}/Dist/config.sdefault
+
+.include "../../lang/gcc13-gnat-libs/buildlink3.mk"
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/gnat-glade/PLIST b/gnat-glade/PLIST
new file mode 100644
index 0000000000..3db5f5fc7c
--- /dev/null
+++ b/gnat-glade/PLIST
@@ -0,0 +1,135 @@
+@comment $NetBSD: PLIST,v 1.0 2024/11/12 18:30:00 dkazankov Exp $
+bin/gnatdist
+bin/gnatdist-config
+include/garlic/s-gafizi.adb
+include/garlic/s-gafizi.ads
+include/garlic/s-galiop.ads
+include/garlic/s-ganata.adb
+include/garlic/s-ganata.ads
+include/garlic/s-ganeut.adb
+include/garlic/s-ganeut.ads
+include/garlic/s-ganota.adb
+include/garlic/s-ganota.ads
+include/garlic/s-gaphlo.adb
+include/garlic/s-gaphlo.ads
+include/garlic/s-gaplsp.ads
+include/garlic/s-gaprco.adb
+include/garlic/s-gaprco.ads
+include/garlic/s-gaprma.adb
+include/garlic/s-gaprma.ads
+include/garlic/s-gaprre.adb
+include/garlic/s-gaprre.ads
+include/garlic/s-gaprtc.adb
+include/garlic/s-gaprtc.ads
+include/garlic/s-gardeb.adb
+include/garlic/s-gardeb.ads
+include/garlic/s-garela.adb
+include/garlic/s-garela.ads
+include/garlic/s-garexc.adb
+include/garlic/s-garexc.ads
+include/garlic/s-garfil.adb
+include/garlic/s-garfil.ads
+include/garlic/s-gargro.adb
+include/garlic/s-gargro.ads
+include/garlic/s-garhea.adb
+include/garlic/s-garhea.ads
+include/garlic/s-garlic.ads
+include/garlic/s-garopt.adb
+include/garlic/s-garopt.ads
+include/garlic/s-garpar.adb
+include/garlic/s-garpar.ads
+include/garlic/s-garpri.adb
+include/garlic/s-garpri.ads
+include/garlic/s-garpro.adb
+include/garlic/s-garpro.ads
+include/garlic/s-garrem.adb
+include/garlic/s-garrem.ads
+include/garlic/s-garsta.adb
+include/garlic/s-garsta.ads
+include/garlic/s-garsto.adb
+include/garlic/s-garsto.ads
+include/garlic/s-garstr.adb
+include/garlic/s-garstr.ads
+include/garlic/s-gartab.adb
+include/garlic/s-gartab.ads
+include/garlic/s-gartas.adb
+include/garlic/s-gartas.ads
+include/garlic/s-garter.adb
+include/garlic/s-garter.ads
+include/garlic/s-gartra.adb
+include/garlic/s-gartra.ads
+include/garlic/s-gartyp.adb
+include/garlic/s-gartyp.ads
+include/garlic/s-garuni.adb
+include/garlic/s-garuni.ads
+include/garlic/s-garuti.adb
+include/garlic/s-garuti.ads
+include/garlic/s-gasoli.adb
+include/garlic/s-gasoli.ads
+include/garlic/s-gastco.adb
+include/garlic/s-gastco.ads
+include/garlic/s-gastdf.adb
+include/garlic/s-gastdf.ads
+include/garlic/s-gastds.adb
+include/garlic/s-gastds.ads
+include/garlic/s-gastha.adb
+include/garlic/s-gastha.ads
+include/garlic/s-gprese.ads
+include/garlic/s-gptcse.adb
+include/garlic/s-gptcse.ads
+include/garlic/s-parint.adb
+include/garlic/s-parint.ads
+include/garlic/s-rpc.adb
+include/garlic/s-rpc.ads
+include/garlic/s-rpcser.adb
+include/garlic/s-rpcser.ads
+include/garlic/s-rpstio.adb
+include/garlic/s-rpstio.ads
+include/garlic/s-shasto.adb
+lib/garlic/libgarlic.a
+lib/garlic/s-gafizi.ali
+lib/garlic/s-galiop.ali
+lib/garlic/s-ganata.ali
+lib/garlic/s-ganeut.ali
+lib/garlic/s-ganota.ali
+lib/garlic/s-gaphlo.ali
+lib/garlic/s-gaplsp.ali
+lib/garlic/s-gaprco.ali
+lib/garlic/s-gaprma.ali
+lib/garlic/s-gaprre.ali
+lib/garlic/s-gaprtc.ali
+lib/garlic/s-gardeb.ali
+lib/garlic/s-garela.ali
+lib/garlic/s-garexc.ali
+lib/garlic/s-garfil.ali
+lib/garlic/s-gargro.ali
+lib/garlic/s-garhea.ali
+lib/garlic/s-garlic.ali
+lib/garlic/s-garopt.ali
+lib/garlic/s-garpar.ali
+lib/garlic/s-garpri.ali
+lib/garlic/s-garpro.ali
+lib/garlic/s-garrem.ali
+lib/garlic/s-garsta.ali
+lib/garlic/s-garsto.ali
+lib/garlic/s-garstr.ali
+lib/garlic/s-gartab.ali
+lib/garlic/s-gartas.ali
+lib/garlic/s-garter.ali
+lib/garlic/s-gartra.ali
+lib/garlic/s-gartyp.ali
+lib/garlic/s-garuni.ali
+lib/garlic/s-garuti.ali
+lib/garlic/s-gasoli.ali
+lib/garlic/s-gastco.ali
+lib/garlic/s-gastdf.ali
+lib/garlic/s-gastds.ali
+lib/garlic/s-gastha.ali
+lib/garlic/s-gprese.ali
+lib/garlic/s-gptcse.ali
+lib/garlic/s-parint.ali
+lib/garlic/s-rpc.ali
+lib/garlic/s-rpcser.ali
+lib/garlic/s-rpstio.ali
+lib/garlic/s-shasto.ali
+lib/gnat/garlic.gpr
diff --git a/gnat-glade/buildlink3.mk b/gnat-glade/buildlink3.mk
new file mode 100644
index 0000000000..cf59f6dba9
--- /dev/null
+++ b/gnat-glade/buildlink3.mk
@@ -0,0 +1,17 @@
+# $NetBSD: buildlink3.mk,v 1.0 2024/11/14 16:30:00 dkazankov Exp $
+
+BUILDLINK_TREE+=	gnat-glade
+
+.if !defined(GNAT_GLADE_BUILDLINK3_MK)
+GNAT_GLADE_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.gnat-glade+=	gnat-glade>=6.0.1
+BUILDLINK_PKGSRCDIR.gnat-glade=	../../wip/gnat-glade
+BUILDLINK_DEPMETHOD.gnat-glade?=	build
+
+BUILDLINK_AUTO_VARS.gnat-glade=	no
+BUILDLINK_AUTO_DIRS.gnat-glade=	no
+
+.endif
+
+BUILDLINK_TREE+=	-gnat-glade
diff --git a/gnat-glade/distinfo b/gnat-glade/distinfo
new file mode 100644
index 0000000000..014d820187
--- /dev/null
+++ b/gnat-glade/distinfo
@@ -0,0 +1,48 @@
+$NetBSD: distinfo,v 1.3 2024/05/02 14:00:00 dkazankov Exp $
+
+BLAKE2s (gnat-glade-code-r135-trunk.zip) = f2458d3696ce885fd2356461038b1bba102006aa5f24680cf601a1ba2da4865b
+SHA512 (gnat-glade-code-r135-trunk.zip) = feea72177d405c02378f32aff22f673cf57b9f629e5e82a0c51d537309507ff80e450838c3d19e1ba26fc90c6eccac8b1b7a2ee34ec98be0993d2462adc89b13
+Size (gnat-glade-code-r135-trunk.zip) = 3885324 bytes
+SHA1 (patch-Dist_Makefile.in) = 1c9a63dbe5e17e80c81647519d215b8887b544a4
+SHA1 (patch-Dist_config.sdefault) = 7fb3e662a2d565f0c40ad627cda74574ed3ebddd
+SHA1 (patch-Dist_gnatdist-config.in) = fa477f338c01ba6a9f81e0c3af84dbe2c8b1e76b
+SHA1 (patch-Dist_xe.adb) = 163bf676015a40f5fc4187159c7e16086db22359
+SHA1 (patch-Dist_xe__back-garlic.adb) = 9a66d461624621843abba99f8e8f5df4aa75e457
+SHA1 (patch-Dist_xe__back-polyorb.adb) = b2ee5226af5d51af7ca0236fc02d7bcf0489a716
+SHA1 (patch-Dist_xe__back.adb) = ea6c70f184c6359f52f3c37cdb4f0a1f62fab6f4
+SHA1 (patch-Dist_xe__front.adb) = d2ff90f0e08402fc19e9792d93e4e5180da68642
+SHA1 (patch-Dist_xe__main.adb) = 7a3297ed1f4eb7b45fb82e86b3f436a70b828984
+SHA1 (patch-Dist_xe__names.ads) = 55252237505359b3caa5dc2f54303e894eaf8ed0
+SHA1 (patch-Dist_xe__parse.adb) = 471873dd7134327425bf1a6df2a4b2e24e475465
+SHA1 (patch-Dist_xe__scan.adb) = 9272f4c6b0dade6d0d6d22d146aa0d371403a9bd
+SHA1 (patch-Dist_xe__stdcnf.adb) = 58324a21ac4e72dc9e7f5797ee008ce04edfe8c5
+SHA1 (patch-Dist_xe__usage.adb) = 0ae9e3b8ef811beb7293c115adca989bad62856b
+SHA1 (patch-Dist_xe__utils.adb) = e5a9eede82e19805fdaecd6305c4e564beed19ff
+SHA1 (patch-Examples_MultiPro_s-gaprxy.adb) = 503b5d6ccc62e1d4dd4e291e29b188ec28389818
+SHA1 (patch-Garlic_Makefile.in) = 674601db5717bb7dd691b93c919804bf000c4e6a
+SHA1 (patch-Garlic_garlic.gpr) = c410c7c352619dd9dfcd232e5a6cad4521ae8287
+SHA1 (patch-Garlic_isthrbio.adb) = d45ac410707eca5c646b563264d50c11458eb8bd
+SHA1 (patch-Garlic_isthrbio.gpr) = 991396abd6632cf7f7bfe6cf07a4ba4c7baf305d
+SHA1 (patch-Garlic_s-dsaser.ads) = 73cd62f844268e0dd68207fd37edd4876e6af728
+SHA1 (patch-Garlic_s-gafizi.adb) = bf47bc65cbff5eaf055870d16b68cbd52ac4aa61
+SHA1 (patch-Garlic_s-gaprre.adb) = cf8d8890dcf0919ec50f66b0eaf53b87df835850
+SHA1 (patch-Garlic_s-gaprre.ads) = b3da9598e2701ea5b025bb35da7affbd50e56d4d
+SHA1 (patch-Garlic_s-gaprtc.adb) = 7475c530957346fb598cec3c9f7e66322b67d95b
+SHA1 (patch-Garlic_s-garexc.adb) = 7df0925115b0206313a45def9fb2ef02962138f6
+SHA1 (patch-Garlic_s-garsto.adb) = be6b86a1a5ea31fb4e73eb087d7fea6a022614d4
+SHA1 (patch-Garlic_s-garstr.ads) = cfda7ce053dffaeae6db9f733826ff696f066111
+SHA1 (patch-Garlic_s-gartab.adb) = fdd8eb21aa7dc10dbf49d1794f65f804e169d3ae
+SHA1 (patch-Garlic_s-gartas.adb) = 9896fdef948441ea20716d860785cc4452f9c249
+SHA1 (patch-Garlic_s-garuni.adb) = 4287dd944ccd26b9ae0e6e115f6fe9813fa97d1a
+SHA1 (patch-Garlic_s-gastdf.adb) = 142c33147b64eb14a400e5623b6a31ca73be6960
+SHA1 (patch-Garlic_s-gastha.adb) = 3dbff7340936751840c5e89a5b40211333d9817f
+SHA1 (patch-Garlic_s-gptcse.adb) = 4f668c9f1be0921f5b236e7759859b1d7d3bc20d
+SHA1 (patch-Garlic_s-parint.adb) = cfc1498142a355036694635b0f9ed892fcbf6752
+SHA1 (patch-Garlic_s-parint.ads) = c0611648bca05951af809e8a9cdec98c2d832b1a
+SHA1 (patch-Garlic_s-rpc.adb) = 792e9ca62f15cbaf526354297df22037781539c1
+SHA1 (patch-Garlic_s-rpcser.adb) = 3394a7fed3eddee43c0d660f77785047bf771af5
+SHA1 (patch-Garlic_s-shasto.adb) = 2e76771ee23baa7a0cd5b24863fbe39ba89653f9
+SHA1 (patch-Garlic_s-shasto.ads) = f086c4f186143093b85f66fd5d5d7b88958d75d2
+SHA1 (patch-Garlic_s-stratt.adb) = 0684c2df09d7d74eb3f0141585875e13c31e2a6c
+SHA1 (patch-Garlic_select.c) = 0db5132fcc2184cc685cd6886b87645f73e31e04
+SHA1 (patch-configure) = 382ee31ce75432160186899ff81a18fba65ee245
diff --git a/gnat-glade/patches/patch-Dist_Makefile.in b/gnat-glade/patches/patch-Dist_Makefile.in
new file mode 100644
index 0000000000..2990369234
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_Makefile.in
@@ -0,0 +1,29 @@
+$NetBSD: patch-Dist_Makefile.in,v 1.0 2025/02/04 22:00:00 dkazankov Exp $
+
+Add configuration helper
+Fix bindir location
+
+--- Dist/Makefile.in.orig	2007-11-26 15:10:13.000000000 +0200
++++ Dist/Makefile.in
+@@ -223,9 +223,11 @@
+ 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ xe_defs-defaults.ads: $(top_builddir)/config.status $(srcdir)/xe_defs-defaults.ads.in
+ 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
++gnatdist-config: $(top_builddir)/config.status $(srcdir)/gnatdist-config.in
++	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ install-binPROGRAMS: $(bin_PROGRAMS)
+ 	@$(NORMAL_INSTALL)
+-	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
++	test -z "$(DESTDIR)$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+ 	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+ 	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ 	  if test -f $$p \
+@@ -235,6 +237,8 @@
+ 	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ 	  else :; fi; \
+ 	done
++	cp -p $(srcdir)/gnatdist-config $(DESTDIR)$(bindir)/gnatdist-config ; \
++	chmod a+x $(DESTDIR)$(bindir)/gnatdist-config
+ 
+ uninstall-binPROGRAMS:
+ 	@$(NORMAL_UNINSTALL)
diff --git a/gnat-glade/patches/patch-Dist_config.sdefault b/gnat-glade/patches/patch-Dist_config.sdefault
new file mode 100644
index 0000000000..4275fe7850
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_config.sdefault
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_config.sdefault,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix libgnat.a search
+https://github.com/reznikmm/garlic/commit/1c459d17d989e5df86234276013fd32430c97220
+
+--- Dist/config.sdefault.orig	2007-11-26 15:10:13.000000000 +0200
++++ Dist/config.sdefault
+@@ -7,7 +7,7 @@
+    sed -e '1,/Object Search Path/ d' | grep -v 'Current_Directory' > tmp1
+ sed -e 's,\\,/,g' tmp1 > tmp2
+ for i in `cat tmp2`; do
+-  if [ -f ${i}libgnat.a ]; then
++  if [ -f ${i}/libgnat.a ]; then
+     LIBGNAT_DIR=${i}
+     break
+   fi
diff --git a/gnat-glade/patches/patch-Dist_gnatdist-config.in b/gnat-glade/patches/patch-Dist_gnatdist-config.in
new file mode 100644
index 0000000000..b61968edb6
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_gnatdist-config.in
@@ -0,0 +1,172 @@
+$NetBSD: patch-Dist_gnatdist-config.in,v 1.0 2025/02/04 22:00:00 dkazankov Exp $
+
+Create configuration helper for building applications
+
+--- /dev/null
++++ Dist/gnatdist-config.in
+@@ -0,0 +1,165 @@
++#!/bin/sh
++
++# This script provides tool chain command line switches used to build
++# applications that use garlic.
++
++# @configure_input@
++
++host=@host@
++target=@target@
++if [ "$host" = "$target" ]; then
++  is_cross=false
++else
++  is_cross=true
++fi
++
++# Determine installation prefix
++
++case "$0" in
++  */*)
++    # Already has a directory indication
++    exec_name="$0"
++    ;;
++
++  *)
++    # Just base filename, retrieve from PATH
++    exec_name=`which $0`
++    ;;
++esac
++exec_rel_dir=`dirname "${exec_name}"`
++exec_abs_dir=`cd ${exec_rel_dir} && pwd`
++exec_prefix=`dirname "${exec_abs_dir}"`
++
++# Translate Cygwin-style path to Windows equivalent
++
++case "$OS" in
++   Windows_NT)
++      exec_prefix=`cygpath -w $exec_prefix`
++esac
++
++unset tgt_subdir
++if $is_cross; then
++  tgt_subdir=/$target
++fi
++
++for candidate_prefix in "${exec_prefix}${tgt_subdir}" "@prefix@${tgt_subdir}"; do
++  prefix="${candidate_prefix}"
++  if [ -f "${candidate_prefix}"/include/garlic/s-garlic.ads ]; then
++    break
++  fi
++done
++
++usage() {
++   cat <<EOF 1>&2
++Usage: gnatdist-config [OPTIONS]
++Options:
++        No option:
++            Same as --options.
++        [--options]
++            Output options to use for GLADE.
++        [--prefix[=DIR]]
++            Output the directory in which GLADE architecture-independent
++            files are installed, or set this directory to DIR.
++        [--exec-prefix[=DIR]]
++            Output the directory in which GLADE architecture-dependent
++            files are installed, or set this directory to DIR.
++        [--version|-v]
++            Output the version of GLADE.
++        [--largs]
++            Output the linker flags to use for GLADE.
++        [--cargs]
++            Output the compiler flags to use for GLADE.
++        [--bargs]
++            Output the binder flags to use for GLADE.
++        [--help]
++            Output this message
++EOF
++}
++
++no_args=true
++while test $# -gt 0; do
++  no_args=false
++  case "$1" in
++  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
++  *) optarg= ;;
++  esac
++
++  case $1 in
++    --help|-h)
++      usage 1>&2
++      exit 1
++      ;;
++    --prefix=*)
++      prefix=$optarg;
++      if test "x$exec_prefix_set" = x ; then
++	  exec_prefix=$prefix
++      fi
++      ;;
++    --prefix)
++      echo_prefix=true
++      ;;
++    --exec-prefix=*)
++      exec_prefix=$optarg
++      ;;
++    --exec-prefix)
++      echo_exec_prefix=true
++      ;;
++    --version|-v)
++      echo "GNAT-GLADE @VERSION@ for ${target}" 1>&2
++      if $is_cross; then
++        echo " hosted on ${host}" 1>&2
++      fi
++      exit 0
++      ;;
++    --largs)
++      echo_largs=true
++      ;;
++    --cargs)
++      echo_cargs=true
++      ;;
++    --bargs)
++      echo_bargs=true
++      ;;
++    --options)
++      echo_options=true
++      ;;
++
++    *)
++      usage 1>&2
++      exit 1
++      ;;
++  esac
++  shift
++done
++if test ! x"$no_args" = x"true" ; then
++  echo_options=true
++fi
++
++includedir="@includedir@"
++libdir="@libdir@"
++garlic_incdir="${includedir}/garlic"
++garlic_libdir="${libdir}/garlic"
++
++if test ! x"$echo_options" = x"true" ; then
++  echo -a -aI${garlic_incdir} -aO${garlic_libdir}
++fi
++
++if test x"$echo_cargs" = x"true"; then
++  echo -cargs @GNATFLAGS@ -I${garlic_incdir}
++fi
++
++#if test x"$echo_bargs" = x"true"; then
++#  echo -bargs ${garlic_lib}
++#fi
++
++if test x"$echo_largs" = x"true"; then
++  echo -largs @LDFLAGS@ -L${garlic_libdir} -lgarlic
++fi
++
++if test x"$echo_prefix" = x"true" ; then
++  echo $prefix
++fi
++if test x"$echo_exec_prefix" = x"true" ; then
++  echo $exec_prefix
++fi
++
diff --git a/gnat-glade/patches/patch-Dist_xe.adb b/gnat-glade/patches/patch-Dist_xe.adb
new file mode 100644
index 0000000000..34842f9c21
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_xe.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe.adb.orig	2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe.adb
+@@ -1171,7 +1171,7 @@
+       --  Remove the nodes created in the previous context.
+ 
+       loop
+-         exit when Nodes.Last <= Node_Id (Context.Last_Node);
++         exit when Nodes.Last <= Context.Last_Node;
+          Nodes.Decrement_Last;
+       end loop;
+       N_Anonymous_Variable := Context.Anonymous;
diff --git a/gnat-glade/patches/patch-Dist_xe__back-garlic.adb b/gnat-glade/patches/patch-Dist_xe__back-garlic.adb
new file mode 100644
index 0000000000..3722993f99
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__back-garlic.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_xe__back-garlic.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+
+--- Dist/xe_back-garlic.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_back-garlic.adb
+@@ -34,9 +34,6 @@
+ with XE_Names;    use XE_Names;
+ with XE_Utils;    use XE_Utils;
+ 
+-with XE_Back;
+-pragma Elaborate_All (XE_Back);
+-
+ package body XE_Back.GARLIC is
+ 
+    type GARLIC_Backend is new Backend with null record;
diff --git a/gnat-glade/patches/patch-Dist_xe__back-polyorb.adb b/gnat-glade/patches/patch-Dist_xe__back-polyorb.adb
new file mode 100644
index 0000000000..2d217d0729
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__back-polyorb.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_xe__back-polyorb.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+
+--- Dist/xe_back-polyorb.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_back-polyorb.adb
+@@ -34,9 +34,6 @@
+ with XE_Names;    use XE_Names;
+ with XE_Utils;    use XE_Utils;
+ 
+-with XE_Back;
+-pragma Elaborate_All (XE_Back);
+-
+ package body XE_Back.PolyORB is
+ 
+    type PolyORB_Backend is new Backend with null record;
diff --git a/gnat-glade/patches/patch-Dist_xe__back.adb b/gnat-glade/patches/patch-Dist_xe__back.adb
new file mode 100644
index 0000000000..aaae43a89b
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__back.adb
@@ -0,0 +1,25 @@
+$NetBSD: patch-Dist_xe__back.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Make gnatdist fail if compilation fails on stub/skel
+https://github.com/reznikmm/garlic/commit/d037957ca6828ec3a1cced2ea64e46310f11b22d
+
+--- Dist/xe_back.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_back.adb
+@@ -328,7 +328,7 @@
+             Arguments (3) := new String'(Name_Buffer (1 .. Name_Len));
+          end if;
+ 
+-         Compile (Full_Unit_File, Arguments, Fatal => False, Silent => True);
++         Compile (Full_Unit_File, Arguments, Fatal => True, Silent => True);
+ 
+          Free (Arguments (3));
+       elsif not Quiet_Mode then
+@@ -604,7 +604,7 @@
+             Arguments (3)  := new String'(Name_Buffer (1 .. Name_Len));
+          end if;
+ 
+-         Compile (Full_Unit_File, Arguments, Fatal => False, Silent => True);
++         Compile (Full_Unit_File, Arguments, Fatal => True, Silent => True);
+ 
+          if Present (Part_Prj_Fname) then
+             Free (Arguments (3));
diff --git a/gnat-glade/patches/patch-Dist_xe__front.adb b/gnat-glade/patches/patch-Dist_xe__front.adb
new file mode 100644
index 0000000000..abf48b4bae
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__front.adb
@@ -0,0 +1,17 @@
+$NetBSD: patch-Dist_xe__front.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_front.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_front.adb
+@@ -470,7 +470,8 @@
+          HID := Partitions.Table (P).Host;
+          if HID /= No_Host_Id
+            and then not Hosts.Table (HID).Static
+-           and then Hosts.Table (HID).Import = Ada_Import then
++           and then Hosts.Table (HID).Import = Ada_Import
++         then
+             Add_Conf_Unit (Hosts.Table (HID).External, P);
+          end if;
+       end loop;
diff --git a/gnat-glade/patches/patch-Dist_xe__main.adb b/gnat-glade/patches/patch-Dist_xe__main.adb
new file mode 100644
index 0000000000..6117748af3
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__main.adb
@@ -0,0 +1,29 @@
+$NetBSD: patch-Dist_xe__main.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_main.adb.orig	2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_main.adb
+@@ -26,8 +26,8 @@
+ 
+ with XE;              use XE;
+ with XE_Back;         use XE_Back;
+-with XE_Back.GARLIC;  use XE_Back.GARLIC;
+-with XE_Back.PolyORB; use XE_Back.PolyORB;
++with XE_Back.GARLIC;
++with XE_Back.PolyORB;
+ with XE_Defs;         use XE_Defs;
+ with XE_Flags;        use XE_Flags;
+ with XE_Front;        use XE_Front;
+@@ -36,8 +36,8 @@
+ with XE_Parse;        use XE_Parse;
+ with XE_Types;        use XE_Types;
+ with XE_Sem;          use XE_Sem;
+-with XE_Scan;         use XE_Scan;
+-with XE_Stdcnf;       use XE_Stdcnf;
++with XE_Scan;
++with XE_Stdcnf;
+ with XE_Utils;        use XE_Utils;
+ with XE_Units;        use XE_Units;
+ with XE_Usage;
diff --git a/gnat-glade/patches/patch-Dist_xe__names.ads b/gnat-glade/patches/patch-Dist_xe__names.ads
new file mode 100644
index 0000000000..217f53107f
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__names.ads
@@ -0,0 +1,16 @@
+$NetBSD: patch-Dist_xe__names.ads,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_names.ads.orig	2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_names.ads
+@@ -48,7 +48,7 @@
+ --  names table entry and subprograms are provided for setting and retrieving
+ --  these associated values. The usage of these values is up to the client.
+ 
+-   Name_Buffer : String (1 .. 16*1024);
++   Name_Buffer : String (1 .. 16 * 1024);
+    --  This buffer is used to set the name to be stored in the table for the
+    --  Name_Find call, and to retrieve the name for the Get_Name_String call.
+    --  The plus 1 in the length allows for cases of adding ASCII.NUL. The
diff --git a/gnat-glade/patches/patch-Dist_xe__parse.adb b/gnat-glade/patches/patch-Dist_xe__parse.adb
new file mode 100644
index 0000000000..9a51d315d6
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__parse.adb
@@ -0,0 +1,53 @@
+$NetBSD: patch-Dist_xe__parse.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_parse.adb.orig	2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_parse.adb
+@@ -973,6 +973,7 @@
+       end if;
+ 
+       --  Declare <X> as a formal parameter.
++      pragma Warnings (Off, "modified by call");
+ 
+       Declare_Subprogram_Parameter
+         (Parameter_Name,
+@@ -1007,6 +1008,7 @@
+          Function_Node,
+          Para_Type_Sloc,
+          Parameter_Node);
++      pragma Warnings (On, "modified by call");
+ 
+       T_Semicolon;
+    end P_Function_Declaration;
+@@ -1159,7 +1161,8 @@
+          --  of the predefined type Partition_Type_Node.
+ 
+          if Partition_Node = Null_Variable or else
+-           Get_Variable_Type (Partition_Node) /= Partition_Type_Node then
++           Get_Variable_Type (Partition_Node) /= Partition_Type_Node
++         then
+             Write_Conflict_Error (Partition_Sloc, Partition_Name);
+          end if;
+ 
+@@ -1952,8 +1955,7 @@
+ 
+             --  If Named, use Formal_Name to return format parameter node.
+             when Named =>
+-               if Get_Node_Name
+-                 (Node_Id (Parameter_Node)) = Formal_Name then
++               if Get_Node_Name (Node_Id (Parameter_Node)) = Formal_Name then
+                   return;
+                end if;
+ 
+@@ -2128,7 +2130,8 @@
+    begin
+       Search_Declaration (Variable_Name, Node);
+       if Node /= Null_Node  and then
+-         not Is_Variable (Node) then
++         not Is_Variable (Node)
++      then
+          Node := Null_Node;
+       end if;
+       Variable_Node := Variable_Id (Node);
diff --git a/gnat-glade/patches/patch-Dist_xe__scan.adb b/gnat-glade/patches/patch-Dist_xe__scan.adb
new file mode 100644
index 0000000000..07437bd2e7
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__scan.adb
@@ -0,0 +1,26 @@
+$NetBSD: patch-Dist_xe__scan.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Dist/xe_scan.adb.orig	2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_scan.adb
+@@ -214,7 +214,8 @@
+                      if Buffer (Scan_Ptr) = LF or else
+                         Buffer (Scan_Ptr) = FF or else
+                         Buffer (Scan_Ptr) = CR or else
+-                        Buffer (Scan_Ptr) = VT then
++                        Buffer (Scan_Ptr) = VT
++                     then
+                         New_Line;
+                         exit;
+                      elsif Buffer (Scan_Ptr) = EOF then
+@@ -426,8 +427,6 @@
+    procedure Write_Location
+      (Where   : Location_Type) is
+ 
+-      use ASCII;
+-
+    begin
+       Write_Name (Configuration_File_Name);
+       Write_Str (":");
diff --git a/gnat-glade/patches/patch-Dist_xe__stdcnf.adb b/gnat-glade/patches/patch-Dist_xe__stdcnf.adb
new file mode 100644
index 0000000000..2b57654896
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__stdcnf.adb
@@ -0,0 +1,24 @@
+$NetBSD: patch-Dist_xe__stdcnf.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+
+--- Dist/xe_stdcnf.adb.orig	2007-11-26 14:06:30.000000000 +0200
++++ Dist/xe_stdcnf.adb
+@@ -161,6 +161,8 @@
+          Type_Sloc    => Null_Location,
+          Type_Node    => Host_Function_Type_Node);
+ 
++      pragma Warnings (Off, "modified by call");
++
+       Declare_Type_Component
+         (Type_Node        => Host_Function_Type_Node,
+          Component_Name   => Id ("partition_name"),
+@@ -734,6 +736,8 @@
+          Null_Location,
+          Parameter_Node);
+ 
++      pragma Warnings (On, "modified by call");
++
+    end Initialize;
+ 
+ end XE_Stdcnf;
diff --git a/gnat-glade/patches/patch-Dist_xe__usage.adb b/gnat-glade/patches/patch-Dist_xe__usage.adb
new file mode 100644
index 0000000000..600b0de787
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__usage.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Dist_xe__usage.adb,v 1.0 2025/02/04 22:00:00 dkazankov Exp $
+
+Update version
+
+--- Dist/xe_usage.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_usage.adb
+@@ -29,7 +29,7 @@
+ with XE_Flags; use XE_Flags;
+ 
+ procedure XE_Usage is
+-   Version : constant String := "5.04w";
++   Version : constant String := "6.0w";
+    Length  : Positive := Version'First;
+ 
+ begin
diff --git a/gnat-glade/patches/patch-Dist_xe__utils.adb b/gnat-glade/patches/patch-Dist_xe__utils.adb
new file mode 100644
index 0000000000..9948006382
--- /dev/null
+++ b/gnat-glade/patches/patch-Dist_xe__utils.adb
@@ -0,0 +1,62 @@
+$NetBSD: patch-Dist_xe__utils.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+Calculate gnat driver name by gnatdist name
+Also fix -cargs option passing
+https://github.com/reznikmm/garlic/commit/1bca5670b0f08ab8e3902441a46bc1c7a9fdf059
+
+--- Dist/xe_utils.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Dist/xe_utils.adb
+@@ -24,6 +24,7 @@
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
++with Ada.Directories;
+ with Ada.Command_Line; use Ada.Command_Line;
+ with XE_Defs;          use XE_Defs;
+ with XE_Flags;         use XE_Flags;
+@@ -81,12 +82,14 @@
+       S3 : String := No_Str);
+ 
+    type Sigint_Handler is access procedure;
++   pragma Convention (C, Sigint_Handler);
+ 
+    procedure Install_Int_Handler (Handler : Sigint_Handler);
+    pragma Import (C, Install_Int_Handler, "__gnat_install_int_handler");
+    --  Called by Gnatmake to install the SIGINT handler below
+ 
+    procedure Sigint_Intercepted;
++   pragma Convention (C, Sigint_Intercepted);
+    --  Called when the program is interrupted by Ctrl-C to delete the
+    --  temporary mapping files and configuration pragmas files.
+ 
+@@ -501,6 +504,11 @@
+    ----------------
+ 
+    procedure Initialize is
++      Command : constant String := Ada.Directories.Base_Name
++        (Ada.Command_Line.Command_Name);
++      GNAT    : constant String :=
++        Command (Command'First .. Command'Last - 4);
++      --  calculate `[target-]gnat` driver name by gnatdist exe name
+    begin
+       XE_Names.Initialize;
+       Set_Space_Increment (3);
+@@ -550,7 +558,7 @@
+ 
+       Create_Dir (Stub_Dir_Name);
+ 
+-      GNAT_Driver := Locate ("gnat");
++      GNAT_Driver := Locate (GNAT);
+    end Initialize;
+ 
+    ----------
+@@ -818,6 +826,7 @@
+ 
+       if Program_Args = Binder
+         or else Program_Args = Linker
++        or else Program_Args = Compiler
+       then
+          Add_Make_Switch (Argv);
+          return;
diff --git a/gnat-glade/patches/patch-Examples_MultiPro_s-gaprxy.adb b/gnat-glade/patches/patch-Examples_MultiPro_s-gaprxy.adb
new file mode 100644
index 0000000000..a163561be0
--- /dev/null
+++ b/gnat-glade/patches/patch-Examples_MultiPro_s-gaprxy.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Examples_MultiPro_s-gaprxy.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Examples/MultiPro/s-gaprxy.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Examples/MultiPro/s-gaprxy.adb
+@@ -43,7 +43,6 @@
+ with System.Garlic.Partitions;            use System.Garlic.Partitions;
+ with System.Garlic.Physical_Location;     use System.Garlic.Physical_Location;
+ with System.Garlic.Platform_Specific;
+-with System.Garlic.Protocols;             use System.Garlic.Protocols;
+ with System.Garlic.Soft_Links;
+ with System.Garlic.Streams;               use System.Garlic.Streams;
+ with System.Garlic.Table;
diff --git a/gnat-glade/patches/patch-Garlic_Makefile.in b/gnat-glade/patches/patch-Garlic_Makefile.in
new file mode 100644
index 0000000000..4553fec1b8
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_Makefile.in
@@ -0,0 +1,242 @@
+$NetBSD: patch-Garlic_Makefile.in,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Remove duplicate spec
+Remove "old" stream attributes implementation
+Remove unsupported Shared_Passive specification
+Make install aware of DESTDIR
+Copy project file to lib/gnat
+Remove all "inlining" staff
+
+--- Garlic/Makefile.in.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/Makefile.in
+@@ -187,7 +187,6 @@
+ $(srcdir)/s-gptcse.ads $(srcdir)/s-gptcse.adb
+ 
+ COMMONOBJECTS = \
+-s-dsaser.o\
+ s-galiop.o\
+ s-ganata.o\
+ s-ganeut.o\
+@@ -229,18 +228,16 @@
+ s-rpc.o\
+ s-rpcser.o\
+ s-rpstio.o\
+-s-shasto.o\
+-s-stratt.o
++s-shasto.o
+ 
+ COMMONSOURCES = \
+-$(srcdir)/s-dsaser.ads                        \
+-          s-galiop.ads                        \
++$(srcdir)/s-galiop.ads                        \
+ $(srcdir)/s-ganata.ads $(srcdir)/s-ganata.adb \
+ $(srcdir)/s-ganeut.ads $(srcdir)/s-ganeut.adb \
+ $(srcdir)/s-ganota.ads $(srcdir)/s-ganota.adb \
+ $(srcdir)/s-gaphlo.ads $(srcdir)/s-gaphlo.adb \
+-          s-gaplsp.ads                        \
+-$(srcdir)/s-gaprco.ads           s-gaprco.adb \
++$(srcdir)/s-gaplsp.ads                        \
++$(srcdir)/s-gaprco.ads $(srcdir)/s-gaprco.adb \
+ $(srcdir)/s-gaprre.ads $(srcdir)/s-gaprre.adb \
+ $(srcdir)/s-gardeb.ads $(srcdir)/s-gardeb.adb \
+ $(srcdir)/s-garexc.ads $(srcdir)/s-garexc.adb \
+@@ -253,7 +250,7 @@
+ $(srcdir)/s-garpri.ads $(srcdir)/s-garpri.adb \
+ $(srcdir)/s-gaprma.ads $(srcdir)/s-gaprma.adb \
+ $(srcdir)/s-garpro.ads $(srcdir)/s-garpro.adb \
+-$(srcdir)/s-garrem.ads           s-garrem.adb \
++$(srcdir)/s-garrem.ads $(srcdir)/s-garrem.adb \
+ $(srcdir)/s-garsta.ads $(srcdir)/s-garsta.adb \
+ $(srcdir)/s-garstr.ads $(srcdir)/s-garstr.adb \
+ $(srcdir)/s-gartas.ads $(srcdir)/s-gartas.adb \
+@@ -275,8 +272,7 @@
+ $(srcdir)/s-rpc.ads    $(srcdir)/s-rpc.adb    \
+ $(srcdir)/s-rpcser.ads $(srcdir)/s-rpcser.adb \
+ $(srcdir)/s-rpstio.ads $(srcdir)/s-rpstio.adb \
+-$(srcdir)/s-shasto.ads $(srcdir)/s-shasto.adb \
+-$(srcdir)/s-stratt.adb
++                       $(srcdir)/s-shasto.adb
+ 
+ OBJECTS = \
+ $(PROTOCOLSOBJECTS) \
+@@ -286,7 +282,7 @@
+ SOURCES = $(PROTOCOLSSOURCES) $(FILTERSSOURCES) $(COMMONSOURCES)
+ CLEANFILES = lib*.a *.ali *.o b_*.c b~*.ad[bs]\
+ 	s-gaprco.adb s-galiop.ads\
+-	inlining gnatlib/* constants_nodef\
++	gnatlib/* constants_nodef\
+ 	isthrbio$(EXEEXT)\
+ 	$(FILTERSOBJECTS)
+ 
+@@ -501,39 +497,14 @@
+ 	-rm -fr bldtool
+ 
+ install-dirs-local:
+-	-rm -rf $(GARLIC)
+-	-$(mkinstalldirs) $(GARLIC)
+-	@echo $(GARLIC) created
+-
+-inlining: all-local
+-	rm -rf gnatlib >/dev/null 2>&1;\
+-	mkdir gnatlib >/dev/null 2>&1;\
+-	gnatlibdir=`$(srcdir)/../Dist/config.sdefault $(GNAT_RTS_FLAG)`;\
+-	(cd $$gnatlibdir && grep -l "D s-stratt.adb" *.ali)\
+-	| $(SED) 's,\.ali$$,.o,' > gnatlib/tocheck;\
+-	for i in $(OBJECTS); do\
+-	   echo "Checking $$i";\
+-	   mv gnatlib/tocheck gnatlib/tocheck.tmp;\
+-	   grep -v $$i gnatlib/tocheck.tmp > gnatlib/tocheck;\
+-	done;\
+-	for o in `cat gnatlib/tocheck`; do\
+-	   if [ ! -f gnatlib/$$o ]; then\
+-	       s=`gnatls -a -s $$o | sed 's/\013//g'`;\
+-	       (cd gnatlib;\
+-	        $(GNAT_FOR_TARGET) $(COMPILE) $(GNATFLAGS) -I. -I.. -I- \
+-	          $$s;\
+-	        if test $$? = 0; then\
+-	           echo $$o >>rebuild;\
+-	        else\
+-	           $(RM) -f tocheck;\
+-	           break;\
+-	        fi;\
+-	       );\
+-	   fi;\
+-	done;\
+-	$(CP) $(CP_PRESERVE) s-stratt.o s-stratt.ali gnatlib
+-	echo s-stratt.o >>gnatlib/rebuild;\
+-	echo yes > inlining
++	-rm -rf $(DESTDIR)$(GARLIC)
++	-$(mkinstalldirs) $(DESTDIR)$(GARLIC)
++	@echo $(DESTDIR)$(GARLIC) created
++	-rm -rf $(DESTDIR)$(includedir)/garlic
++	-$(mkinstalldirs) $(DESTDIR)$(includedir)/garlic
++	@echo $(DESTDIR)$(includedir)/garlic created
++	-$(mkinstalldirs) $(DESTDIR)$(libdir)/gnat
++	@echo $(DESTDIR)$(libdir)/gnat created
+ 
+ linktest: $(srcdir)/linktest.adb $(OBJECTS)
+ 	$(GNAT_FOR_HOST) -c -a -m $(GNATFLAGS) -I$(srcdir) -I. \
+@@ -541,47 +512,24 @@
+ 	$(GNAT_FOR_HOST) -b -a -m $(GNATFLAGS) -I$(srcdir) -I. \
+ 	  $(srcdir)/linktest.adb
+ 
+-install-extra-libs: $(FILTERSEXTRALIBS) inlining install-dirs-local
++install-extra-libs: $(FILTERSEXTRALIBS) all-local install-dirs-local
+ 
+ install-data-local: all-local install-dirs-local install-extra-libs 
+-	if test ! -f inlining; then\
+-	   exit 1;\
+-	fi
+-	@-for lib in libgnat.a libgnarl.a libAtasking.a libPtasking.a; do \
+-	  pathtolib=`$(srcdir)/../Dist/config.sdefault $(GNAT_RTS_FLAG)`;\
+-	  if test -f $$pathtolib$$lib; then \
+-	    $(CP) $$pathtolib$$lib $(GARLIC)/$$lib;\
+-	    chmod u+w $(GARLIC)/$$lib;\
+-	    $(AR) d $(GARLIC)/$$lib s-rpc.o \
+-	                            s-shasto.o \
+-	                            s-parint.o 2>/dev/null;\
+-	    if test `cat inlining` = "yes"; then\
+-	      (cd gnatlib;\
+-	       for o in `cat rebuild`; do \
+-		 $(AR) d $(GARLIC)/$$lib $$o 2>/dev/null;\
+-		 if test $$? = 0; then \
+-		   $(AR) cq $(GARLIC)/$$lib $$o;\
+-	           echo Replace inlined $$o in $$lib;\
+-	         fi;\
+-	       done);\
+-	    fi;\
+-	    $(RANLIB) $(GARLIC)/$$lib;\
++	@for i in $(SOURCES); do\
++		if test -f $$i; then\
++			$(CP) $(CP_PRESERVE) $$i $(DESTDIR)$(includedir)/garlic/;\
+ 	  fi;\
+ 	done
+-	@if test `cat inlining` = "yes"; then\
+-	  (cd gnatlib;\
+-	   $(CP) $(CP_PRESERVE) `$(SED) 's/\.o/.ali/g' rebuild` $(GARLIC));\
+-	fi
+-	@for i in $(SOURCES)\
+-		`echo $(OBJECTS) | $(SED) -e 's/\.o/.ali/g'`; do\
++	@for i in `echo $(OBJECTS) | $(SED) -e 's/\.o/.ali/g'`; do\
+ 		if test -f $$i; then\
+-			$(CP) $(CP_PRESERVE) $$i $(GARLIC)/;\
++			$(CP) $(CP_PRESERVE) $$i $(DESTDIR)$(GARLIC)/;\
+ 		fi;\
+ 	done
+-	$(AR) cq $(GARLIC)/libgarlic.a $(subst s-stratt.o,,$(OBJECTS))
+-	$(RANLIB) $(GARLIC)/libgarlic.a
+-	chmod a+r $(GARLIC)/*
+-	chmod a-w $(GARLIC)/*
++	$(CP) $(CP_PRESERVE) garlic.gpr $(DESTDIR)$(libdir)/gnat/
++	$(AR) cq $(DESTDIR)$(GARLIC)/libgarlic.a $(OBJECTS)
++	$(RANLIB) $(DESTDIR)$(GARLIC)/libgarlic.a
++	chmod a+r $(DESTDIR)$(GARLIC)/*
++	chmod a-w $(DESTDIR)$(GARLIC)/*
+ 
+ # Dependencies
+ 
+@@ -597,10 +545,9 @@
+ ### dependencies or to use the "fast" target.
+ ###
+ ### DO NOT REMOVE THIS LINE, IT IS USED BY MAKEDEPEND ###
+-s-dsaser.o: s-dsaser.ads s-garlic.ads s-gardeb.ads s-garexc.ads s-gasoli.ads s-gastha.ads s-garstr.ads s-gartyp.ads s-garuni.ads s-parint.ads s-rpc.ads
+ s-gafizi.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-gafizi.ads s-gafizi.adb s-garhea.ads s-garpro.ads s-gasoli.ads s-gastha.ads s-garstr.ads s-gartyp.ads
+ s-galiop.o: s-garlic.ads s-galiop.ads
+-s-ganata.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-ganata.ads s-ganata.adb s-gasoli.ads s-gasoli.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads s-stratt.adb
++s-ganata.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-ganata.ads s-ganata.adb s-gasoli.ads s-gasoli.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads
+ s-ganeut.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-ganeut.ads s-ganeut.adb s-gasoli.ads s-gartyp.ads
+ s-ganota.o: s-garlic.ads s-garexc.ads s-ganota.ads s-ganota.adb s-garpro.ads s-gasoli.ads s-gartyp.ads
+ s-gaphlo.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gaphlo.ads s-gaphlo.adb s-garpro.ads s-gasoli.ads s-gartyp.ads s-garuti.ads
+@@ -612,38 +559,37 @@
+ s-gardeb.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gartyp.ads
+ s-garela.o: s-garlic.ads s-garela.ads s-garela.adb s-garopt.ads s-gasoli.ads s-gartas.ads s-gartyp.ads
+ s-garexc.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garexc.adb s-gasoli.ads s-gartyp.ads
+-s-garfil.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-garfil.adb s-garhea.ads s-ganata.ads s-ganata.adb s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads s-stratt.adb
+-s-gargro.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gargro.ads s-gargro.adb s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-garstr.adb s-gartyp.ads s-stratt.adb
++s-garfil.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-garfil.adb s-garhea.ads s-ganata.ads s-ganata.adb s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads
++s-gargro.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gargro.ads s-gargro.adb s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-garstr.adb s-gartyp.ads
+ s-garhea.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-gargro.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-garpar.adb s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartra.ads s-gartyp.ads s-garuti.ads
+ s-garlic.o: s-garlic.ads
+ s-garopt.o: s-garlic.ads s-garopt.ads s-garopt.adb s-gaplsp.ads s-gartyp.ads s-garuti.ads
+-s-garpar.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gargro.ads s-garhea.ads s-ganata.ads s-garopt.ads s-garpar.ads s-garpar.adb s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads s-stratt.adb
++s-garpar.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-gargro.ads s-garhea.ads s-ganata.ads s-garopt.ads s-garpar.ads s-garpar.adb s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garstr.ads s-gartab.ads s-gartab.adb s-gartyp.ads s-garuti.ads
+ s-garpri.o: s-garlic.ads s-garpri.ads s-garpri.adb
+ s-garpro.o: s-garlic.ads s-garexc.ads s-garpro.ads s-garpro.adb s-gartyp.ads
+ s-garrem.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-garrem.ads s-garrem.adb s-gasoli.ads s-gastha.ads s-garstr.ads s-gartyp.ads s-garuti.ads
+ s-garsta.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garela.ads s-garexc.ads s-garexc.adb s-garfil.ads s-gargro.ads s-garhea.ads s-ganata.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gaprco.ads s-garrem.ads s-gasoli.ads s-garsta.ads s-garsta.adb s-gastha.ads s-garsto.ads s-gastco.ads s-garstr.ads s-garter.ads s-gartra.ads s-gartyp.ads s-garuni.ads s-garuti.ads
+ s-garsto.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garpar.ads s-gaphlo.ads s-gaplsp.ads s-garpro.ads s-gasoli.ads s-gastha.ads s-garsto.ads s-garsto.adb s-garstr.ads s-gartyp.ads s-garuni.ads
+-s-garstr.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gasoli.adb s-gastha.ads s-gastha.adb s-garstr.ads s-garstr.adb s-gartyp.ads s-stratt.adb
++s-garstr.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gasoli.adb s-gastha.ads s-gastha.adb s-garstr.ads s-garstr.adb s-gartyp.ads
+ s-gartab.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-ganata.ads s-gasoli.ads s-gartab.ads s-gartab.adb s-gartyp.ads
+-s-gartas.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gartas.ads s-gartas.adb s-gartyp.ads s-stratt.adb
+-s-garter.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garela.ads s-garexc.ads s-garfil.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-garter.ads s-garter.adb s-gartra.ads s-gartyp.ads s-garuti.ads s-stratt.adb
+-s-gartra.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garopt.ads s-gasoli.ads s-gastha.ads s-garstr.ads s-gartra.ads s-gartra.adb s-gartyp.ads s-stratt.adb
++s-gartas.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-gasoli.ads s-gartas.ads s-gartas.adb s-gartyp.ads
++s-garter.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garela.ads s-garexc.ads s-garfil.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-garter.ads s-garter.adb s-gartra.ads s-gartyp.ads s-garuti.ads
++s-gartra.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garopt.ads s-gasoli.ads s-gastha.ads s-garstr.ads s-gartra.ads s-gartra.adb s-gartyp.ads
+ s-gartyp.o: s-garlic.ads s-gartyp.ads s-gartyp.adb
+-s-garuni.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-gargro.ads s-garhea.ads s-garhea.adb s-galiop.ads s-ganata.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartra.ads s-gartyp.ads s-garuni.ads s-garuni.adb s-garuti.ads s-stratt.adb
++s-garuni.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-gargro.ads s-garhea.ads s-garhea.adb s-galiop.ads s-ganata.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartra.ads s-gartyp.ads s-garuni.ads s-garuni.adb s-garuti.ads
+ s-garuti.o: s-garlic.ads s-garuti.ads s-garuti.adb
+-s-gasoli.o: s-garlic.ads s-gasoli.ads s-gasoli.adb s-gartyp.ads s-stratt.adb
++s-gasoli.o: s-garlic.ads s-gasoli.ads s-gasoli.adb s-gartyp.ads
+ s-gastco.o: s-garlic.ads s-garexc.ads s-garsto.ads s-gastco.ads s-gastco.adb s-gartyp.ads
+ s-gastdf.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garopt.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsto.ads s-gastdf.ads s-gastdf.adb s-gartyp.ads
+-s-gastds.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garexc.adb s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-gastds.ads s-gastds.adb s-garstr.ads s-gartyp.ads s-garuni.ads s-stratt.adb
++s-gastds.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garexc.adb s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-gastha.ads s-garsto.ads s-gastds.ads s-gastds.adb s-garstr.ads s-gartyp.ads s-garuni.ads
+ s-gastha.o: s-garlic.ads s-gasoli.ads s-gastha.ads s-gastha.adb s-gartyp.ads
+ s-gprese.o: s-garlic.ads s-garexc.ads s-garpro.ads s-gaprre.ads s-gprese.ads s-gartyp.ads
+ s-gptcse.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garpro.ads s-gaprtc.ads s-gptcse.ads s-gptcse.adb s-gasoli.ads s-gartyp.ads
+-s-parint.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-garsta.ads s-gastha.ads s-garsto.ads s-garstr.ads s-gartyp.ads s-garuni.ads s-garuti.ads s-garuti.adb s-parint.ads s-parint.adb s-rpc.ads s-stratt.adb
+-s-rpc.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpri.ads s-gaprma.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartra.ads s-gartyp.ads s-garuni.ads s-garuti.ads s-rpc.ads s-rpc.adb s-stratt.adb
+-s-rpcser.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-garopt.ads s-gaplsp.ads s-garpri.ads s-gaprma.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garstr.ads s-garstr.adb s-gartas.ads s-gartyp.ads s-garuni.ads s-parint.ads s-rpc.ads s-rpcser.ads s-rpcser.adb s-stratt.adb
++s-parint.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpro.ads s-gasoli.ads s-garsta.ads s-gastha.ads s-garsto.ads s-garstr.ads s-gartyp.ads s-garuni.ads s-garuti.ads s-garuti.adb s-parint.ads s-parint.adb s-rpc.ads
++s-rpc.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garfil.ads s-garhea.ads s-garhea.adb s-galiop.ads s-garopt.ads s-garpar.ads s-gaphlo.ads s-garpri.ads s-gaprma.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garsto.ads s-garstr.ads s-garstr.adb s-gartra.ads s-gartyp.ads s-garuni.ads s-garuti.ads s-rpc.ads s-rpc.adb
++s-rpcser.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-garopt.ads s-gaplsp.ads s-garpri.ads s-gaprma.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garstr.ads s-garstr.adb s-gartas.ads s-gartyp.ads s-garuni.ads s-parint.ads s-rpc.ads s-rpcser.ads s-rpcser.adb
+ s-rpstio.o: s-garlic.ads s-gardeb.ads s-gardeb.adb s-garexc.ads s-garhea.ads s-ganata.ads s-garpro.ads s-gasoli.ads s-gasoli.adb s-garsta.ads s-gastha.ads s-garstr.ads s-garstr.adb s-gartab.ads s-gartab.adb s-gartyp.ads s-rpc.ads s-rpstio.ads s-rpstio.adb
+-s-shasto.o: s-garlic.ads s-gardeb.ads s-garexc.ads s-garexc.adb s-garsto.ads s-gartyp.ads s-shasto.ads s-shasto.adb
+-s-stratt.o: s-stratt.adb
++s-shasto.o: s-garlic.ads s-gardeb.ads s-garexc.ads s-garexc.adb s-garsto.ads s-gartyp.ads s-shasto.adb
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
diff --git a/gnat-glade/patches/patch-Garlic_garlic.gpr b/gnat-glade/patches/patch-Garlic_garlic.gpr
new file mode 100644
index 0000000000..7169965283
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_garlic.gpr
@@ -0,0 +1,44 @@
+$NetBSD: patch-Garlic_garlic.gpr,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Provide project file for gnatmake
+
+--- /dev/null
++++ Garlic/garlic.gpr
+@@ -0,0 +1,37 @@
++library project Garlic is
++
++   for Languages use ("Ada");
++
++   for Source_Dirs use ("../../include/garlic");
++   for Library_Dir  use "../../lib/garlic";
++   for Library_Kind use "static";
++
++   for Library_Name use "garlic";
++
++   package Naming is
++      for dot_replacement use "-";
++      for casing use "lowercase";
++      for body_suffix ("ada") use ".adb";
++      for spec_suffix ("ada") use ".ads";
++   end Naming;
++
++   package Install is
++      for Active use "False";
++   end Install;
++
++   for Externally_Built use "True";
++
++   type Platforms is ("Posix", "Windows_NT");
++
++   type Library_Kind is ("static", "static-pic", "relocatable");
++
++   type Garlic_Build_Kind is ("dev", "prod");
++
++   Ada_Switches := ("-O2", "-g", "-gnatg");
++   Common_Dir := "../Garlic";
++   Platform_Dir := "../Garlic/platform/e";
++   Platform : Platforms := "Posix";
++   Library_Type : Library_Kind := "static";
++   Build_Mode : Garlic_Build_Kind := "prod";
++
++end Garlic;
diff --git a/gnat-glade/patches/patch-Garlic_isthrbio.adb b/gnat-glade/patches/patch-Garlic_isthrbio.adb
new file mode 100644
index 0000000000..4ade7f8fd8
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_isthrbio.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_isthrbio.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix link time version warning
+
+--- Garlic/isthrbio.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/isthrbio.adb
+@@ -65,7 +65,7 @@
+       Exceptfds : Fd_Set_Access;
+       Timeout   : Timeval_Access)
+      return int;
+-   pragma Import (C, C_Select, "select");
++   pragma Import (C, C_Select, "__netbsd_select");
+ 
+    task A_Task is
+       entry Start;
diff --git a/gnat-glade/patches/patch-Garlic_isthrbio.gpr b/gnat-glade/patches/patch-Garlic_isthrbio.gpr
new file mode 100644
index 0000000000..51d74433b0
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_isthrbio.gpr
@@ -0,0 +1,17 @@
+$NetBSD: patch-Garlic_isthrbio.gpr,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Make project to fix link time version warning
+
+--- /dev/null
++++ Garlic/isthrbio.gpr
+@@ -0,0 +1,10 @@
++project Isthrbio is
++
++   for Languages use ("C", "Ada");
++
++   for Exec_Dir use "../";
++   for Source_Dirs use (".");
++   for Main use ("isthrbio");
++   for Source_Files use ("isthrbio.adb", "select.c");
++
++end Isthrbio;
diff --git a/gnat-glade/patches/patch-Garlic_s-dsaser.ads b/gnat-glade/patches/patch-Garlic_s-dsaser.ads
new file mode 100644
index 0000000000..c95f265b15
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-dsaser.ads
@@ -0,0 +1,63 @@
+$NetBSD: patch-Garlic_s-stratt.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Remove duplicate specification
+
+--- Garlic/s-dsaser.ads.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-dsaser.ads
+@@ -1,56 +0,0 @@
+-------------------------------------------------------------------------------
+---                                                                          --
+---                            GLADE COMPONENTS                              --
+---                                                                          --
+---                   S Y S T E M . D S A _ S E R V I C E S                  --
+---                                                                          --
+---                                 S p e c                                  --
+---                                                                          --
+---             Copyright (C) 2006 Free Software Foundation, Inc.            --
+---                                                                          --
+--- GARLIC is free software;  you can redistribute it and/or modify it under --
+--- terms of the  GNU General Public License  as published by the Free Soft- --
+--- ware Foundation;  either version 2,  or (at your option)  any later ver- --
+--- sion.  GARLIC is distributed  in the hope that  it will be  useful,  but --
+--- WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHANTABI- --
+--- LITY or  FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public  --
+--- License  for more details.  You should have received  a copy of the GNU  --
+--- General Public License  distributed with GARLIC;  see file COPYING.  If  --
+--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
+--- Boston, MA 02111-1307, USA.                                              --
+---                                                                          --
+--- As a special exception,  if other files  instantiate  generics from this --
+--- unit, or you link  this unit with other files  to produce an executable, --
+--- this  unit  does not  by itself cause  the resulting  executable  to  be --
+--- covered  by the  GNU  General  Public  License.  This exception does not --
+--- however invalidate  any other reasons why  the executable file  might be --
+--- covered by the  GNU Public License.                                      --
+---                                                                          --
+---               GLADE  is maintained by ACT Europe.                        --
+---               (email: glade-report%act-europe.fr@localhost)                        --
+---                                                                          --
+-------------------------------------------------------------------------------
+-
+---  This package is used to call distributed system annex services, which
+---  require the partition communication sub-system to be initialized.
+-
+-with System.Partition_Interface;
+-with System.RPC;
+-
+-package System.DSA_Services is
+-
+-   function Get_Active_Partition_ID
+-     (Name : Partition_Interface.Unit_Name) return RPC.Partition_ID
+-     renames Partition_Interface.Get_Active_Partition_ID;
+-   --  Returns the partition ID of the partition in which Name resides
+-
+-   function Get_Local_Partition_ID return RPC.Partition_ID
+-     renames Partition_Interface.Get_Local_Partition_ID;
+-   --  Return the Partition_ID of the current partition
+-
+-   function Get_Passive_Partition_ID
+-     (Name : Partition_Interface.Unit_Name) return RPC.Partition_ID
+-     renames Partition_Interface.Get_Passive_Partition_ID;
+-   --  Return the Partition_ID of the given shared passive partition
+-
+-end System.DSA_Services;
diff --git a/gnat-glade/patches/patch-Garlic_s-gafizi.adb b/gnat-glade/patches/patch-Garlic_s-gafizi.adb
new file mode 100644
index 0000000000..85af2ede5d
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gafizi.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gafizi.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix som compilation warnings
+
+--- Garlic/s-gafizi.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gafizi.adb
+@@ -33,8 +33,6 @@
+ 
+ with Ada.Streams;           use Ada.Streams;
+ with Interfaces.C;
+-with System.Garlic.Filters;
+-pragma Warnings (Off, System.Garlic.Filters);
+ with System.Garlic.Debug; use System.Garlic.Debug;
+ with System.Garlic.Streams; use System.Garlic.Streams;
+ 
diff --git a/gnat-glade/patches/patch-Garlic_s-gaprre.adb b/gnat-glade/patches/patch-Garlic_s-gaprre.adb
new file mode 100644
index 0000000000..fe9eeac8ce
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gaprre.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gaprre.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gaprre.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gaprre.adb
+@@ -41,7 +41,6 @@
+ with System.Garlic.Heart;             use System.Garlic.Heart;
+ with System.Garlic.Options;           use System.Garlic.Options;
+ with System.Garlic.Physical_Location; use System.Garlic.Physical_Location;
+-with System.Garlic.Protocols;         use System.Garlic.Protocols;
+ with System.Garlic.Streams;           use System.Garlic.Streams;
+ with System.Garlic.Trace;             use System.Garlic.Trace;
+ with System.Garlic.Types;             use System.Garlic.Types;
diff --git a/gnat-glade/patches/patch-Garlic_s-gaprre.ads b/gnat-glade/patches/patch-Garlic_s-gaprre.ads
new file mode 100644
index 0000000000..d80950978f
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gaprre.ads
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gaprre.ads,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gaprre.ads.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gaprre.ads
+@@ -36,7 +36,6 @@
+ with GNAT.Strings;
+ 
+ with System.Garlic.Exceptions;
+-with System.Garlic.Protocols;
+ with System.Garlic.Types;
+ 
+ package System.Garlic.Protocols.Replay is
diff --git a/gnat-glade/patches/patch-Garlic_s-gaprtc.adb b/gnat-glade/patches/patch-Garlic_s-gaprtc.adb
new file mode 100644
index 0000000000..9f2b6742e9
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gaprtc.adb
@@ -0,0 +1,49 @@
+$NetBSD: patch-Garlic_s-gaprtc.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+
+--- Garlic/s-gaprtc.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gaprtc.adb
+@@ -43,7 +43,6 @@
+ with System.Garlic.Partitions;            use System.Garlic.Partitions;
+ with System.Garlic.Physical_Location;     use System.Garlic.Physical_Location;
+ with System.Garlic.Platform_Specific;
+-with System.Garlic.Protocols;             use System.Garlic.Protocols;
+ with System.Garlic.Soft_Links;
+ with System.Garlic.Streams;               use System.Garlic.Streams;
+ with System.Garlic.Table;
+@@ -58,7 +57,7 @@
+       Key     : Debug_Key := Private_Debug_Key)
+      renames Print_Debug_Info;
+ 
+-   use Ada.Streams, System.Garlic.Protocols, System.Garlic.Types;
++   use Ada.Streams, System.Garlic.Types;
+ 
+    subtype Error_Type is Exceptions.Error_Type;
+ 
+@@ -168,7 +167,6 @@
+       Data  : access Stream_Element_Array;
+       From  : Stream_Element_Count;
+       Error : in out Error_Type);
+-   pragma Inline (Send);
+    pragma Export (Ada, Send, "GLADE_Physical_Send");
+    --  Receive and send data. Receive loops as long as Data has not
+    --  been filled and Send as long as everything has not
+@@ -320,12 +318,11 @@
+ 
+    function Do_Connect (Sock_Addr : Sock_Addr_Type) return Socket_Type is
+       Peer : Socket_Type    := No_Socket;
+-      Addr : Sock_Addr_Type := Sock_Addr;
+ 
+    begin
+       begin
+          Create_Socket (Peer);
+-         Connect_Socket (Peer, Addr);
++         Connect_Socket (Peer, Sock_Addr);
+       exception when Socket_Error =>
+          pragma Debug (D ("Cannot connect to " & Image (Sock_Addr)));
+          if Peer /= No_Socket then
diff --git a/gnat-glade/patches/patch-Garlic_s-garexc.adb b/gnat-glade/patches/patch-Garlic_s-garexc.adb
new file mode 100644
index 0000000000..5436035db7
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-garexc.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Garlic_s-garexc.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warning
+https://github.com/reznikmm/garlic/commit/4d16e8caddbcc83f6d37e14d657a6c8515466cc7
+
+--- Garlic/s-garexc.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-garexc.adb
+@@ -113,8 +113,6 @@
+    procedure Raise_With_Errno (Id : Exception_Id) is
+    begin
+       Raise_Exception (Id, "Error" & Integer'Image (Errno));
+-      --  Next line will never be called, just to avoid GNAT warnings
+-      Raise_With_Errno (Id);
+    end Raise_With_Errno;
+ 
+    -----------
diff --git a/gnat-glade/patches/patch-Garlic_s-garsto.adb b/gnat-glade/patches/patch-Garlic_s-garsto.adb
new file mode 100644
index 0000000000..7e2e2ba7d6
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-garsto.adb
@@ -0,0 +1,64 @@
+$NetBSD: patch-Garlic_s-garsto.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Get rid of Getenv
+https://github.com/reznikmm/garlic/commit/4d16e8caddbcc83f6d37e14d657a6c8515466cc7
+
+--- Garlic/s-garsto.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-garsto.adb
+@@ -33,8 +33,7 @@
+ 
+ with Ada.Streams;    use Ada.Streams;
+ 
+-with GNAT.HTable;
+-with GNAT.OS_Lib;
++with System.HTable;
+ with GNAT.Strings; use GNAT.Strings;
+ 
+ with System.Garlic.Debug;      use System.Garlic.Debug;
+@@ -59,12 +58,10 @@
+       Key     : Debug_Key := Private_Debug_Key)
+      renames Print_Debug_Info;
+ 
+-   package OS  renames GNAT.OS_Lib;
+-
+    subtype Hash_Header is Natural range 0 .. 30;
+ 
+-   function Hash  (F : OS.String_Access)      return Hash_Header;
+-   function Equal (F1, F2 : OS.String_Access) return Boolean;
++   function Hash  (F : String_Access)      return Hash_Header;
++   function Equal (F1, F2 : String_Access) return Boolean;
+    --  Hash and equality functions for hash table
+ 
+    function Extract_Pkg_Name (Var_Name : String) return String;
+@@ -88,11 +85,11 @@
+    Max_Storages  : constant := 10;
+    Storage_Table : array (First_Storage .. Max_Storages) of Shared_Data_Access;
+ 
+-   package SST is new GNAT.HTable.Simple_HTable
++   package SST is new System.HTable.Simple_HTable
+      (Header_Num => Hash_Header,
+       Element    => Shared_Data_Access,
+       No_Element => null,
+-      Key        => OS.String_Access,
++      Key        => String_Access,
+       Hash       => Hash,
+       Equal      => Equal);
+ 
+@@ -100,7 +97,7 @@
+    -- Equal --
+    -----------
+ 
+-   function Equal (F1, F2 : OS.String_Access) return Boolean is
++   function Equal (F1, F2 : String_Access) return Boolean is
+    begin
+       return F1.all = F2.all;
+    end Equal;
+@@ -123,7 +120,7 @@
+    -- Hash --
+    ----------
+ 
+-   function Hash (F : OS.String_Access) return Hash_Header is
++   function Hash (F : String_Access) return Hash_Header is
+       N : Natural := 0;
+ 
+    begin
diff --git a/gnat-glade/patches/patch-Garlic_s-garstr.ads b/gnat-glade/patches/patch-Garlic_s-garstr.ads
new file mode 100644
index 0000000000..bc0d7d7926
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-garstr.ads
@@ -0,0 +1,19 @@
+$NetBSD: patch-Garlic_s-garstr.ads,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-garstr.ads.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-garstr.ads
+@@ -48,10 +48,10 @@
+    type Node_Ptr is access Node;
+ 
+    type Node (Size : Ada.Streams.Stream_Element_Count) is record
+-      Content : Ada.Streams.Stream_Element_Array (1 .. Size);
+       Current : Ada.Streams.Stream_Element_Offset := 1;
+       Last    : Ada.Streams.Stream_Element_Offset := 1;
+       Next    : Node_Ptr;
++      Content : Ada.Streams.Stream_Element_Array (1 .. Size);
+    end record;
+ 
+    type Params_Stream_Type (Initial_Size : Ada.Streams.Stream_Element_Count) is
diff --git a/gnat-glade/patches/patch-Garlic_s-gartab.adb b/gnat-glade/patches/patch-Garlic_s-gartab.adb
new file mode 100644
index 0000000000..e68576f48b
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gartab.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Garlic_s-gartab.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-gartab.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gartab.adb
+@@ -209,7 +209,7 @@
+             Index := Allocate;
+             Table (Index) := Null_Component;
+             Usage (Index).Name := Name;
+-            Set_Info (Name, Integer (Integer (Index)));
++            Set_Info (Name, Integer (Index));
+          else
+             Index := Index_Type (Info);
+          end if;
diff --git a/gnat-glade/patches/patch-Garlic_s-gartas.adb b/gnat-glade/patches/patch-Garlic_s-gartas.adb
new file mode 100644
index 0000000000..ce6039212a
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gartas.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gartas.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gartas.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gartas.adb
+@@ -35,7 +35,6 @@
+ with Ada.Dynamic_Priorities;
+ --  with Ada.Task_Attributes;
+ 
+-with System;                     use System;
+ with System.Garlic.Debug;        use System.Garlic.Debug;
+ with System.Garlic.Soft_Links;   use System.Garlic.Soft_Links;
+ with System.Garlic.Types;        use System.Garlic.Types;
diff --git a/gnat-glade/patches/patch-Garlic_s-garuni.adb b/gnat-glade/patches/patch-Garlic_s-garuni.adb
new file mode 100644
index 0000000000..47577d9d37
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-garuni.adb
@@ -0,0 +1,16 @@
+$NetBSD: patch-Garlic_s-garuni.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-garuni.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-garuni.adb
+@@ -543,7 +543,7 @@
+          end if;
+ 
+          pragma Debug
+-           (D ("Looking for information on unit "&  Units.Get_Name (Unit)));
++           (D ("Looking for information on unit " & Units.Get_Name (Unit)));
+ 
+          Units.Enter;
+          Current := Units.Get_Component (Unit);
diff --git a/gnat-glade/patches/patch-Garlic_s-gastdf.adb b/gnat-glade/patches/patch-Garlic_s-gastdf.adb
new file mode 100644
index 0000000000..c73e785e96
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gastdf.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gastdf.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gastdf.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gastdf.adb
+@@ -36,7 +36,6 @@
+ 
+ with GNAT.OS_Lib; use GNAT.OS_Lib;
+ 
+-with System;
+ with System.File_Control_Block;
+ with System.File_IO;
+ 
diff --git a/gnat-glade/patches/patch-Garlic_s-gastha.adb b/gnat-glade/patches/patch-Garlic_s-gastha.adb
new file mode 100644
index 0000000000..2e4c5311ea
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gastha.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gastha.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-gastha.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-gastha.adb
+@@ -39,7 +39,6 @@
+    package SSE renames System.Storage_Elements;
+ 
+    use type SSE.Storage_Count;
+-   use type IC.int;
+ 
+    function malloc (Size : IC.int) return Address;
+    pragma Import (C, malloc, "__gnat_malloc");
diff --git a/gnat-glade/patches/patch-Garlic_s-gptcse.adb b/gnat-glade/patches/patch-Garlic_s-gptcse.adb
new file mode 100644
index 0000000000..324a2b22d9
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-gptcse.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-gptcse.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation warnings for GCC 13
+https://github.com/reznikmm/garlic/commit/cd21e825da1a73bd853054ea19eae6a5437fb5e4
+
+--- Garlic/s-gptcse.adb.orig	2007-11-26 15:35:25.000000000 +0200
++++ Garlic/s-gptcse.adb
+@@ -37,7 +37,6 @@
+ 
+ with System.Garlic.Debug;                 use System.Garlic.Debug;
+ with System.Garlic.Soft_Links;            use System.Garlic.Soft_Links;
+-with System.Garlic.Protocols.Tcp;         use System.Garlic.Protocols.Tcp;
+ with System.Garlic.Types;                 use System.Garlic.Types;
+ 
+ package body System.Garlic.Protocols.Tcp.Server is
diff --git a/gnat-glade/patches/patch-Garlic_s-parint.adb b/gnat-glade/patches/patch-Garlic_s-parint.adb
new file mode 100644
index 0000000000..738b1532e4
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-parint.adb
@@ -0,0 +1,61 @@
+$NetBSD: patch-Garlic_s-parint.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix compilation error for caller stubs
+https://github.com/reznikmm/garlic/commit/97a0ea7e59e509d1328dc6287c432861a9044561
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-parint.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-parint.adb
+@@ -562,6 +562,7 @@
+ 
+       Name : String := RCI_Name;
+       Unit : Unit_Id;
++      Initialized : Boolean := False;
+ 
+       -----------------------------
+       -- Get_Active_Partition_ID --
+@@ -571,6 +572,11 @@
+          Partition : Partition_ID;
+          Error     : aliased Error_Type;
+       begin
++         if not Initialized then
++            Initialized := True;
++            To_Lower (Name);
++            Unit := Get_Unit_Id (Name);
++         end if;
+          Get_Partition (Unit, Partition, Error);
+          if Found (Error) then
+             Raise_Communication_Error (Error'Access);
+@@ -586,6 +592,11 @@
+          Receiver : Unsigned_64;
+          Error    : aliased Error_Type;
+       begin
++         if not Initialized then
++            Initialized := True;
++            To_Lower (Name);
++            Unit := Get_Unit_Id (Name);
++         end if;
+          Get_Receiver (Unit, Receiver, Error);
+          if Found (Error) then
+             Raise_Communication_Error (Error'Access);
+@@ -593,9 +604,6 @@
+          return Receiver;
+       end Get_RCI_Package_Receiver;
+ 
+-   begin
+-      To_Lower (Name);
+-      Unit := Get_Unit_Id (Name);
+    end RCI_Locator;
+ 
+    ---------
+@@ -622,7 +630,8 @@
+       while Caller /= null loop
+          D ("Check " & Caller.Name.all & " version consistency");
+          if Different (Caller.Version.all,
+-                       Get_Unit_Version (Caller.Name.all, Caller.RCI)) then
++                       Get_Unit_Version (Caller.Name.all, Caller.RCI))
++         then
+ 
+             --  If not boot partition, then terminate without waiting for
+             --  boot partition request.
diff --git a/gnat-glade/patches/patch-Garlic_s-parint.ads b/gnat-glade/patches/patch-Garlic_s-parint.ads
new file mode 100644
index 0000000000..5cd9cf6714
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-parint.ads
@@ -0,0 +1,16 @@
+$NetBSD: patch-Garlic_s-parint.ads,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Add PCS_Version constant to make GNAT work
+https://github.com/reznikmm/garlic/commit/a7d7065148e7af5fccdbf32e03906d68a8aba65b
+
+--- Garlic/s-parint.ads.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-parint.ads
+@@ -41,6 +41,8 @@
+ 
+    pragma Elaborate_Body;
+ 
++   PCS_Version : constant := 1;
++
+    type DSA_Implementation_Name is (No_DSA, GARLIC_DSA, PolyORB_DSA);
+    DSA_Implementation : constant DSA_Implementation_Name := GARLIC_DSA;
+ 
diff --git a/gnat-glade/patches/patch-Garlic_s-rpc.adb b/gnat-glade/patches/patch-Garlic_s-rpc.adb
new file mode 100644
index 0000000000..ce4ff07955
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-rpc.adb
@@ -0,0 +1,18 @@
+$NetBSD: patch-Garlic_s-rpc.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-rpc.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-rpc.adb
+@@ -48,10 +48,6 @@
+ 
+ package body System.RPC is
+ 
+-   use Ada.Streams;
+-
+-   use type System.Garlic.Streams.Params_Stream_Access;
+-   use type System.Garlic.Streams.Params_Stream_Type;
+    use type System.Garlic.Types.Partition_ID;
+ 
+    --  This package needs extra comments ???
diff --git a/gnat-glade/patches/patch-Garlic_s-rpcser.adb b/gnat-glade/patches/patch-Garlic_s-rpcser.adb
new file mode 100644
index 0000000000..ef6cc647b1
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-rpcser.adb
@@ -0,0 +1,15 @@
+$NetBSD: patch-Garlic_s-rpcser.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix some compilation warnings
+https://github.com/reznikmm/garlic/commit/b738f20db65add57f817f952a625df73bef0710e
+
+--- Garlic/s-rpcser.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-rpcser.adb
+@@ -61,7 +61,6 @@
+ package body System.RPC.Server is
+ 
+    use type System.Garlic.Types.Partition_ID;
+-   use type System.Garlic.Streams.Params_Stream_Type;
+ 
+    Private_Debug_Key : constant Debug_Key :=
+      Debug_Initialize ("S_RPCSER", "(s-rpcser): ");
diff --git a/gnat-glade/patches/patch-Garlic_s-shasto.adb b/gnat-glade/patches/patch-Garlic_s-shasto.adb
new file mode 100644
index 0000000000..4aa2a8a0b7
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-shasto.adb
@@ -0,0 +1,130 @@
+$NetBSD: patch-Garlic_s-shasto.adb,v 1.0 2025/02/13 22:00:00 dkazankov Exp $
+
+Implementation of Shared_Var_Procs specs
+
+--- Garlic/s-shasto.adb.orig	2007-11-26 15:35:25.000000000 +0200
++++ Garlic/s-shasto.adb
+@@ -31,17 +31,24 @@
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
++with Ada.Streams.Stream_IO;
++
+ with System.Garlic.Exceptions; use System.Garlic.Exceptions;
+ with System.Garlic.Storages;   use System.Garlic.Storages;
+ 
+ package body System.Shared_Storage is
+ 
++   use Ada.Streams.Stream_IO;
++
++   procedure Shared_Var_Close (Var : in out Stream_Access);
++   function Shared_Var_ROpen (Var : String) return Stream_Access;
++   function Shared_Var_WOpen (Var : String) return Stream_Access;
++
+    ----------------------
+    -- Shared_Var_Close --
+    ----------------------
+ 
+-   procedure Shared_Var_Close (Var : in out SIO.Stream_Access)
+-   is
++   procedure Shared_Var_Close (Var : in out Stream_Access) is
+       VS : Shared_Data_Access;
+       pragma Warnings (Off, Var);
+    begin
+@@ -53,8 +60,7 @@
+    -- Shared_Var_Lock --
+    ---------------------
+ 
+-   procedure Shared_Var_Lock (Var : String)
+-   is
++   procedure Shared_Var_Lock (Var : String) is
+       VS : Shared_Data_Access;
+       Ok : Boolean;
+       E  : aliased Error_Type;
+@@ -71,8 +77,7 @@
+    -- Shared_Var_ROpen --
+    ----------------------
+ 
+-   function Shared_Var_ROpen (Var : String) return SIO.Stream_Access
+-   is
++   function Shared_Var_ROpen (Var : String) return Stream_Access is
+       VS : Shared_Data_Access;
+       Ok : Boolean;
+       E  : aliased Error_Type;
+@@ -84,7 +89,7 @@
+       end if;
+       Initiate_Request (VS, Read, Ok);
+       if Ok then
+-         return SIO.Stream_Access (VS);
++         return Stream_Access (VS);
+       else
+          return null;
+       end if;
+@@ -94,8 +99,7 @@
+    -- Shared_Var_Unlock --
+    -----------------------
+ 
+-   procedure Shared_Var_Unlock (Var : String)
+-   is
++   procedure Shared_Var_Unlock (Var : String) is
+       VS : Shared_Data_Access;
+       E  : aliased Error_Type;
+ 
+@@ -111,8 +115,7 @@
+    -- Shared_Var_WOpen --
+    ----------------------
+ 
+-   function Shared_Var_WOpen (Var : String) return SIO.Stream_Access
+-   is
++   function Shared_Var_WOpen (Var : String) return Stream_Access is
+       VS : Shared_Data_Access;
+       Ok : Boolean;
+       E  : aliased Error_Type;
+@@ -123,7 +126,46 @@
+          Raise_Communication_Error (Content (E'Access));
+       end if;
+       Initiate_Request (VS, Write, Ok);
+-      return SIO.Stream_Access (VS);
++      return Stream_Access (VS);
+    end Shared_Var_WOpen;
+ 
++   ----------------------
++   -- Shared_Var_Procs --
++   ----------------------
++
++   package body Shared_Var_Procs is
++
++      --  XXX for instance, we use stream attributes to
++      --  assign variable V of limited type Typ.
++
++      ----------
++      -- Read --
++      ----------
++
++      procedure Read is
++         S : Stream_Access := Shared_Var_ROpen (Full_Name);
++
++      begin
++         if S /= null then
++            Typ'Read  (S, V);
++            Shared_Var_Close (S);
++         end if;
++      end Read;
++
++      -----------
++      -- Write --
++      -----------
++
++      procedure Write is
++         S : Stream_Access := Shared_Var_WOpen (Full_Name);
++
++      begin
++         if S /= null then
++            Typ'Write  (S, V);
++            Shared_Var_Close (S);
++         end if;
++      end Write;
++
++   end Shared_Var_Procs;
++
+ end System.Shared_Storage;
diff --git a/gnat-glade/patches/patch-Garlic_s-shasto.ads b/gnat-glade/patches/patch-Garlic_s-shasto.ads
new file mode 100644
index 0000000000..7391844249
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-shasto.ads
@@ -0,0 +1,213 @@
+$NetBSD: patch-Garlic_s-shasto.ads,v 1.0 2025/02/13 21:00:00 dkazankov Exp $
+
+Remove unsupported old specification
+
+--- Garlic/s-shasto.ads.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-shasto.ads
+@@ -1,206 +0,0 @@
+-------------------------------------------------------------------------------
+---                                                                          --
+---                            GLADE COMPONENTS                              --
+---                                                                          --
+---                S Y S T E M . S H A R E D _ S T O R A G E                 --
+---                                                                          --
+---                                 S p e c                                  --
+---                                                                          --
+---         Copyright (C) 1996-2006 Free Software Foundation, Inc.           --
+---                                                                          --
+--- GARLIC is free software;  you can redistribute it and/or modify it under --
+--- terms of the  GNU General Public License  as published by the Free Soft- --
+--- ware Foundation;  either version 2,  or (at your option)  any later ver- --
+--- sion.  GARLIC is distributed  in the hope that  it will be  useful,  but --
+--- WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHANTABI- --
+--- LITY or  FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public  --
+--- License  for more details.  You should have received  a copy of the GNU  --
+--- General Public License  distributed with GARLIC;  see file COPYING.  If  --
+--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
+--- Boston, MA 02111-1307, USA.                                              --
+---                                                                          --
+--- As a special exception,  if other files  instantiate  generics from this --
+--- unit, or you link  this unit with other files  to produce an executable, --
+--- this  unit  does not  by itself cause  the resulting  executable  to  be --
+--- covered  by the  GNU  General  Public  License.  This exception does not --
+--- however invalidate  any other reasons why  the executable file  might be --
+--- covered by the  GNU Public License.                                      --
+---                                                                          --
+---               GLADE  is maintained by ACT Europe.                        --
+---               (email: glade-report%act-europe.fr@localhost)                        --
+---                                                                          --
+-------------------------------------------------------------------------------
+-
+-with Ada.Streams.Stream_IO;
+-
+-package System.Shared_Storage is
+-
+-   --  This package manages the shared/persistant memory required for
+-   --  full implementation of variables in Shared_Passive packages,
+-   --  more precisely variables whose enclosing dynamic scope is a
+-   --  shared passive package.
+-
+-   --  -------------------------
+-   --  -- Shared Storage Model --
+-   --  -------------------------
+-
+-   --  The basic model used is that each partition that references the
+-   --  Shared_Passive package has a local copy of the package data
+-   --  that is initialized in accordance with the declarations of the
+-   --  package in the normal manner. The routines in
+-   --  System.Shared_Memory are then used to ensure that the values in
+-   --  these separate copies are properly synchronized with the state
+-   --  of the overall system.
+-
+-   --  This synchronization is ensured by maintaining a set of files
+-   --  in a designated directory. The directory is designated by
+-   --  setting the environment variable SHARED_MEMORY_DIRECTORY. This
+-   --  variable must be set for all partitions. If the environment
+-   --  variable is not defined, then the current directory is used.
+-
+-   --  There is one file for each variable. The name is the fully
+-   --  qualified name of the variable with all letters forced to lower
+-   --  case. For example, the variable Key_Name in the Shared_Passive
+-   --  package Shared_Data results in the file name
+-   --  shared_data.key_name.
+-
+-   --  If the file does not exist, it indicates that no partition has
+-   --  assigned a new value, so that the initial value is the correct
+-   --  one. This is the critical component of the model. It means that
+-   --  there is no system-wide synchronization required for
+-   --  initializing the package, since the shared memory files need
+-   --  not (and do not) reflect the initial state. There is therefore
+-   --  no issue of synchronizing initialization and read/write
+-   --  accress.
+-
+-   --  If the file does exist, it is a Stream_IO file that contains
+-   --  the most recently assigned value of the variable, as written by
+-   --  the use of the typ'Write stream attribute.
+-
+-   --  -----------------------
+-   --  -- Read/Write Access --
+-   --  -----------------------
+-
+-   --  The approach is as follows:
+-
+-   --    For each shared variable, var, an access routine varR is
+-   --  created whose body has the following form (this example is for
+-   --  Pkg.Var):
+-
+-   --      procedure varR is
+-   --         S : Ada.Streams.Stream_IO.Stream_Access;
+-   --      begin
+-   --         S := Shared_Mem_RFile ("pkg", "var");
+-   --         if S /= null then
+-   --            typ'Read (S);
+-   --         end if;
+-   --      end varR;
+-
+-   --  The routine Shared_Mem_RFile in package System.Shared_Memory
+-   --  either returns null if the file does not exist, or otherwise a
+-   --  Stream_Access value that references the corresponding shared
+-   --  memory file, positioned at start of the file, ready to read the
+-   --  current value.
+-
+-   --  Each reference to the shared variable, var, is preceded by a
+-   --  call to the corresponding varR procedure, which either leaves
+-   --  the initial value unchanged if the file does not exist, or
+-   --  reads the current value from the shared memory file.
+-
+-   --  In addition, for each shared variable, var, an assignment
+-   --  routine is created whose body has the following form (again for
+-   --  Pgg.Var)
+-
+-   --      procedure VarA is
+-   --      begin
+-   --         typ'Write (Shared_Mem_WFile ("pkg", "var"), var);
+-   --      end VarA;
+-
+-   --  The routine Shared_Mem_WFile is package System.Shared_Memory
+-   --  returns a Stream_Access value that references the corresponding
+-   --  shared memory file, positioned at the start, ready to write the
+-   --  new value.
+-
+-   --  Each assignment to the shared variable, var, is followed by a
+-   --  call to the corresponding varA procedure, which writes the new
+-   --  value to the shared memory file.
+-
+-   --  Note that there is no synchronization for these file read and
+-   --  write operations, since it is assumed that a correctly
+-   --  operating programs will provide appropriate synchronization. In
+-   --  particular, variables can be protected using protected types
+-   --  with no entries.
+-
+-   --  Note: a special circuit allows the use of stream attributes
+-   --  Read and Write for limited types (using the corresponding
+-   --  attribute for the full type), but there are limitations on the
+-   --  data that can be placed in shared passive partitions. See
+-   --  sem_smem.ads/adb for details.
+-
+-   --  ----------------------------------------------------------------
+-   --  -- Handling of Protected Objects in Shared Passive Partitions --
+-   --  ----------------------------------------------------------------
+-
+-   --  During the execution of a protected subprogram call, access is
+-   --  locked out using a global locking mechanism, as provided by the
+-   --  GNAT.Lock_Files capability. This package contains the lock and
+-   --  unlock calls, and the expander generates a call to the lock
+-   --  routine before the protected call and a call to the unlock
+-   --  routine after the protected call.
+-
+-   --  Within the code of the protected subprogram, the access to the
+-   --  protected object itself uses the local copy, without any
+-   --  special synchronization.  Since global access is locked out, no
+-   --  other task or partition can attempt to read or write this data
+-   --  as long as the lock is held.
+-
+-   --  The data in the local copy does however need synchronizing with
+-   --  the global values in the shared memory file. This is achieved
+-   --  as follows:
+-
+-   --  The protected object generates a read and assignment routine as
+-   --  described for other shared passive variables. The code for the
+-   --  'Read and 'Write attributes (not normally allowed, but allowed
+-   --  in this special case) simply reads or writes the values of the
+-   --  components in the protected record.
+-
+-   --  The lock call is followed by a call to the shared read routine
+-   --  to synchronize the local copy to contain the proper global
+-   --  value.
+-
+-   --  The unlock call in the procedure case only is preceded by a
+-   --  call to the shared assign routine to synchronize the global
+-   --  shared memory files with the (possibly modified) local copy.
+-
+-   --  These calls to the read and assign routines, as well as the
+-   --  lock and unlock routines, are inserted by the expander (see
+-   --  exp_smem.adb).
+-
+-   package SIO renames Ada.Streams.Stream_IO;
+-
+-   function Shared_Var_ROpen (Var : String) return SIO.Stream_Access;
+-   --  As described above, this routine returns null if the corresponding
+-   --  shared memory file does not exist, and otherwise, if the file does
+-   --  exist, a Stream_Access value that references the shared memory file,
+-   --  positioned to the start, ready to read the current value.
+-
+-   function Shared_Var_WOpen (Var : String) return SIO.Stream_Access;
+-   --  As described above, this routine returns a Stream_Access value that
+-   --  references the shared memory file, positioned to the start, ready to
+-   --  write the new value. The file is created by this call if it does not
+-   --  already exist.
+-
+-   procedure Shared_Var_Lock (Var : String);
+-   --  This procedure claims the global shared memory lock. It is used for
+-   --  protected types in shared passive packages. A call to this locking
+-   --  routine is generated as the first operation in the code for the body
+-   --  of a protected subprogram, and it busy waits if the lock is busy.
+-
+-   procedure Shared_Var_Unlock (Var : String);
+-   --  This procedure releases the lock obtaind by a prior call to the
+-   --  Shared_Mem_Lock procedure, and is to be generated as the last
+-   --  operation in the body of a protected subprogram.
+-
+-   procedure Shared_Var_Close (Var : in out SIO.Stream_Access);
+-
+-end System.Shared_Storage;
diff --git a/gnat-glade/patches/patch-Garlic_s-stratt.adb b/gnat-glade/patches/patch-Garlic_s-stratt.adb
new file mode 100644
index 0000000000..2f8b6b4a0e
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_s-stratt.adb
@@ -0,0 +1,2025 @@
+$NetBSD: patch-Garlic_s-stratt.adb,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Remove old stream attributes implementation
+
+--- Garlic/s-stratt.adb.orig	2007-11-26 15:10:13.000000000 +0200
++++ Garlic/s-stratt.adb
+@@ -1,2018 +0,0 @@
+-------------------------------------------------------------------------------
+---                                                                          --
+---                            GLADE COMPONENTS                              --
+---                                                                          --
+---             S Y S T E M . S T R E A M _ A T T R I B U T E S              --
+---                                                                          --
+---                                 B o d y                                  --
+---                                                                          --
+---         Copyright (C) 1996-2006 Free Software Foundation, Inc.           --
+---                                                                          --
+--- GARLIC is free software;  you can redistribute it and/or modify it under --
+--- terms of the  GNU General Public License  as published by the Free Soft- --
+--- ware Foundation;  either version 2,  or (at your option)  any later ver- --
+--- sion.  GARLIC is distributed  in the hope that  it will be  useful,  but --
+--- WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHANTABI- --
+--- LITY or  FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public  --
+--- License  for more details.  You should have received  a copy of the GNU  --
+--- General Public License  distributed with GARLIC;  see file COPYING.  If  --
+--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
+--- Boston, MA 02111-1307, USA.                                              --
+---                                                                          --
+--- As a special exception,  if other files  instantiate  generics from this --
+--- unit, or you link  this unit with other files  to produce an executable, --
+--- this  unit  does not  by itself cause  the resulting  executable  to  be --
+--- covered  by the  GNU  General  Public  License.  This exception does not --
+--- however invalidate  any other reasons why  the executable file  might be --
+--- covered by the  GNU Public License.                                      --
+---                                                                          --
+---               GLADE  is maintained by ACT Europe.                        --
+---               (email: glade-report%act-europe.fr@localhost)                        --
+---                                                                          --
+-------------------------------------------------------------------------------
+-
+-with Ada.IO_Exceptions;
+-with Ada.Streams;              use Ada.Streams;
+-with Ada.Unchecked_Conversion;
+-
+-package body System.Stream_Attributes is
+-
+-   pragma Suppress (Range_Check);
+-   pragma Suppress (Overflow_Check);
+-
+-   use UST;
+-
+-   Data_Error : exception renames Ada.IO_Exceptions.End_Error;
+-   --  Exception raised if insufficient data read (End_Error is
+-   --  mandated by AI95-00132).
+-
+-   SU : constant := System.Storage_Unit;
+-   --  XXXXX pragma Assert (SU = 8);
+-
+-   BB : constant := 2 ** SU;           --  Byte base
+-   BL : constant := 2 ** SU - 1;       --  Byte last
+-   BS : constant := 2 ** (SU - 1);     --  Byte sign
+-
+-   US : constant := Unsigned'Size;     --  Unsigned size
+-   UB : constant := (US - 1) / SU + 1; --  Unsigned byte
+-   UL : constant := 2 ** US - 1;       --  Unsigned last
+-
+-   FB : constant := 2.0 ** SU;         --  Float base
+-
+-   subtype SE  is Ada.Streams.Stream_Element;
+-   subtype SEA is Ada.Streams.Stream_Element_Array;
+-   subtype SEO is Ada.Streams.Stream_Element_Offset;
+-
+-   generic function UC renames Ada.Unchecked_Conversion;
+-
+-   type Field_Type is
+-      record
+-         E_Size       : Integer; --  Exponent bit size
+-         E_Bias       : Integer; --  Exponent bias
+-         F_Size       : Integer; --  Fraction bit size
+-         E_Last       : Integer; --  Max exponent value
+-         F_Mask       : SE;      --  Mask to apply on first fraction byte
+-         E_Bytes      : SEO;     --  N. of exponent bytes completly used
+-         F_Bytes      : SEO;     --  N. of fraction bytes completly used
+-         F_Bits       : Integer; --  N. of bits used on first fraction word
+-      end record;
+-
+-   type Precision is (Single, Double, Extended);
+-   Fields : constant array (Precision) of Field_Type
+-     := (
+-         --  Single precision
+-         (E_Size  => 8,
+-          E_Bias  => 127,
+-          F_Size  => 23,
+-          E_Last  => 2 ** 8 - 1,
+-          F_Mask  => 16#7F#,                  --  2 ** 7 - 1,
+-          E_Bytes => 2,
+-          F_Bytes => 3,
+-          F_Bits  => 23 mod US),
+-         --  Double precision
+-         (E_Size  => 11,
+-          E_Bias  => 1023,
+-          F_Size  => 52,
+-          E_Last  => 2 ** 11 - 1,
+-          F_Mask  => 16#0F#,                  --  2 ** 4 - 1,
+-          E_Bytes => 2,
+-          F_Bytes => 7,
+-          F_Bits  => 52 mod US),
+-         --  Extended precision
+-         (E_Size  => 15,
+-          E_Bias  => 16383,
+-          F_Size  => 63,
+-          E_Last  => 2 ** 15 - 1,
+-          F_Mask  => 16#FF#,                  --  2 ** 8 - 1,
+-          E_Bytes => 2,
+-          F_Bytes => 8,
+-          F_Bits  => 63 mod US));
+-
+-   --  The representation of all items requires a multiple of four bytes
+-   --  (or 32 bits) of data. The bytes are numbered 0 through n-1. The bytes
+-   --  are read or written to some byte stream such that byte m always
+-   --  precedes byte m+1. If the n bytes needed to contain the data are not
+-   --  a multiple of four, then the n bytes are followed by enough (0 to 3)
+-   --  residual zero bytes, r, to make the total byte count a multiple of 4.
+-
+-   --  An XDR signed integer is a 32-bit datum that encodes an integer
+-   --  in the range [-2147483648,2147483647]. The integer is represented
+-   --  in two's complement notation. The most and least significant bytes
+-   --  are 0 and 3, respectively. Integers are declared as follows:
+-   --
+-   --        (MSB)                   (LSB)
+-   --      +-------+-------+-------+-------+
+-   --      |byte 0 |byte 1 |byte 2 |byte 3 |
+-   --      +-------+-------+-------+-------+
+-   --      <------------32 bits------------>
+-
+-   --  XXXXX pragma Assert (Long_Long_Integer'Size <= 64);
+-   --  XXXXX pragma Assert (16 <= Integer'Size and Integer'Size <= 32);
+-
+-   SSI_L : constant := 1;
+-   SI_L  : constant := 2;
+-   I_L   : constant := 4;
+-   LI_L  : constant := 8;
+-   LLI_L : constant := 8;
+-
+-   subtype XDR_S_SSI is SEA (1 .. SSI_L);
+-   subtype XDR_S_SI  is SEA (1 .. SI_L);
+-   subtype XDR_S_I   is SEA (1 .. I_L);
+-   subtype XDR_S_LI  is SEA (1 .. LI_L);
+-   subtype XDR_S_LLI is SEA (1 .. LLI_L);
+-
+-   function Short_Short_Integer_To_XDR_S_SSI is
+-      new Ada.Unchecked_Conversion (Short_Short_Integer, XDR_S_SSI);
+-   function XDR_S_SSI_To_Short_Short_Integer is
+-      new Ada.Unchecked_Conversion (XDR_S_SSI, Short_Short_Integer);
+-
+-   function Short_Integer_To_XDR_S_SI is
+-      new Ada.Unchecked_Conversion (Short_Integer, XDR_S_SI);
+-   function XDR_S_SI_To_Short_Integer is
+-      new Ada.Unchecked_Conversion (XDR_S_SI, Short_Integer);
+-
+-   function Integer_To_XDR_S_I is
+-      new Ada.Unchecked_Conversion (Integer, XDR_S_I);
+-   function XDR_S_I_To_Integer is
+-     new Ada.Unchecked_Conversion (XDR_S_I, Integer);
+-
+-   function Long_Long_Integer_To_XDR_S_LI is
+-      new Ada.Unchecked_Conversion (Long_Long_Integer, XDR_S_LI);
+-   function XDR_S_LI_To_Long_Long_Integer is
+-      new Ada.Unchecked_Conversion (XDR_S_LI, Long_Long_Integer);
+-
+-   function Long_Long_Integer_To_XDR_S_LLI is
+-      new Ada.Unchecked_Conversion (Long_Long_Integer, XDR_S_LLI);
+-   function XDR_S_LLI_To_Long_Long_Integer is
+-      new Ada.Unchecked_Conversion (XDR_S_LLI, Long_Long_Integer);
+-
+-   --  An XDR unsigned integer is a 32-bit datum that encodes a nonnegative
+-   --  integer in the range [0,4294967295]. It is represented by an unsigned
+-   --  binary number whose most and least significant bytes are 0 and 3,
+-   --  respectively. An unsigned integer is declared as follows:
+-   --
+-   --        (MSB)                   (LSB)
+-   --      +-------+-------+-------+-------+
+-   --      |byte 0 |byte 1 |byte 2 |byte 3 |
+-   --      +-------+-------+-------+-------+
+-   --      <------------32 bits------------>
+-
+-   --  XXXXX pragma Assert (Long_Long_Unsigned'Size <= 64);
+-   --  XXXXX pragma Assert (16 <= Unsigned'Size and Unsigned'Size <= 32);
+-
+-   SSU_L : constant := 1;
+-   SU_L  : constant := 2;
+-   U_L   : constant := 4;
+-   LU_L  : constant := 8;
+-   LLU_L : constant := 8;
+-
+-   subtype XDR_S_SSU is SEA (1 .. SSU_L);
+-   subtype XDR_S_SU  is SEA (1 .. SU_L);
+-   subtype XDR_S_U   is SEA (1 .. U_L);
+-   subtype XDR_S_LU  is SEA (1 .. LU_L);
+-   subtype XDR_S_LLU is SEA (1 .. LLU_L);
+-
+-   type XDR_SSU is mod BB ** SSU_L;
+-   type XDR_SU  is mod BB ** SU_L;
+-   type XDR_U   is mod BB ** U_L;
+-   --  type XDR_LU  is mod BB ** LU_L;  --  Computed using Unsigned
+-   --  type XDR_LLU is mod BB ** LLU_L; --  Computed using Unsigned
+-
+-   function Short_Unsigned_To_XDR_S_SU is
+-      new Ada.Unchecked_Conversion (Short_Unsigned, XDR_S_SU);
+-   function XDR_S_SU_To_Short_Unsigned is
+-      new Ada.Unchecked_Conversion (XDR_S_SU, Short_Unsigned);
+-
+-   function Unsigned_To_XDR_S_U is
+-      new Ada.Unchecked_Conversion (Unsigned, XDR_S_U);
+-   function XDR_S_U_To_Unsigned is
+-      new Ada.Unchecked_Conversion (XDR_S_U, Unsigned);
+-
+-   function Long_Long_Unsigned_To_XDR_S_LU is
+-      new Ada.Unchecked_Conversion (Long_Long_Unsigned, XDR_S_LU);
+-   function XDR_S_LU_To_Long_Long_Unsigned is
+-      new Ada.Unchecked_Conversion (XDR_S_LU, Long_Long_Unsigned);
+-
+-   function Long_Long_Unsigned_To_XDR_S_LLU is
+-      new Ada.Unchecked_Conversion (Long_Long_Unsigned, XDR_S_LLU);
+-   function XDR_S_LLU_To_Long_Long_Unsigned is
+-      new Ada.Unchecked_Conversion (XDR_S_LLU, Long_Long_Unsigned);
+-
+-   --  The standard defines the floating-point data type "float" (32 bits
+-   --  or 4 bytes). The encoding used is the IEEE standard for normalized
+-   --  single-precision floating-point numbers.
+-
+-   --  The standard defines the encoding for the double-precision
+-   --  floating-point data type "double" (64 bits or 8 bytes). The
+-   --  encoding used is the IEEE standard for normalized double-precision
+-   --  floating-point numbers.
+-
+-   SF_L  : constant := 4;   --  Single precision
+-   F_L   : constant := 4;   --  Single precision
+-   LF_L  : constant := 8;   --  Double precision
+-   LLF_L : constant := 12;  --  Extended precision
+-
+-   --  TBD
+-   TM_L : constant := 8;
+-   subtype XDR_S_TM is SEA (1 .. TM_L);
+-   type XDR_TM is mod BB ** TM_L;
+-
+-   type XDR_SA is mod 2 ** Standard'Address_Size;
+-   function To_XDR_SA is new UC (System.Address, XDR_SA);
+-   function To_XDR_SA is new UC (XDR_SA, System.Address);
+-
+-   --  Enumerations have the same representation as signed integers.
+-   --  Enumerations are handy for describing subsets of the integers.
+-
+-   --  Booleans are important enough and occur frequently enough to warrant
+-   --  their own explicit type in the standard. Booleans are declared as
+-   --  an enumeration, with FALSE = 0 and TRUE = 1.
+-
+-   --  The standard defines a string of n (numbered 0 through n-1) ASCII
+-   --  bytes to be the number n encoded as an unsigned integer (as described
+-   --  above), and followed by the n bytes of the string. Byte m of the string
+-   --  always precedes byte m+1 of the string, and byte 0 of the string always
+-   --  follows the string's length. If n is not a multiple of four, then the
+-   --  n bytes are followed by enough (0 to 3) residual zero bytes, r, to make
+-   --  the total byte count a multiple of four.
+-
+-   --  To fit with XDR string, do not consider character as an enumeration
+-   --  type.
+-
+-   C_L   : constant := 1;
+-   subtype XDR_S_C is SEA (1 .. C_L);
+-
+-   --  Consider Wide_Character as an enumeration type.
+-   WC_L  : constant := 4;
+-   subtype XDR_S_WC is SEA (1 .. WC_L);
+-   type XDR_WC is mod BB ** WC_L;
+-
+-   --  Optimization: if we already have the correct Bit_Order, then some
+-   --  computations can be avoided since the source and the target will be
+-   --  identical anyway. They will be replaced by direct unchecked
+-   --  conversions.
+-
+-   Optimize_Integers : constant Boolean :=
+-     Default_Bit_Order = High_Order_First;
+-
+-   ----------------
+-   -- Workaround --
+-   ----------------
+-
+-   function Scaling
+-     (X : Short_Float; A : Integer)
+-     return Short_Float;
+-
+-   function Scaling
+-     (X : Float; A : Integer)
+-      return Float;
+-
+-   function Scaling
+-     (X : Long_Float; A : Integer)
+-      return Long_Float;
+-   function Scaling
+-     (X : Long_Long_Float; A : Integer)
+-      return Long_Long_Float;
+-   ----------
+-   -- I_AD --
+-   ----------
+-
+-   function I_AD (Stream : not null access RST) return Fat_Pointer is
+-      FP : Fat_Pointer;
+-
+-   begin
+-      FP.P1 := I_AS (Stream).P1;
+-      FP.P2 := I_AS (Stream).P1;
+-
+-      return FP;
+-   end I_AD;
+-
+-   ----------
+-   -- I_AS --
+-   ----------
+-
+-   function I_AS (Stream : not null access RST) return Thin_Pointer is
+-      S : XDR_S_TM;
+-      L : SEO;
+-      U : XDR_TM := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      else
+-         for N in S'Range loop
+-            U := U * BB + XDR_TM (S (N));
+-         end loop;
+-
+-         return (P1 => To_XDR_SA (XDR_SA (U)));
+-      end if;
+-   end I_AS;
+-
+-   ---------
+-   -- I_B --
+-   ---------
+-
+-   function I_B (Stream : not null access RST) return Boolean is
+-   begin
+-      case I_SSU (Stream) is
+-         when 0      => return False;
+-         when 1      => return True;
+-         when others => raise Data_Error;
+-      end case;
+-   end I_B;
+-
+-   ---------
+-   -- I_C --
+-   ---------
+-
+-   function I_C (Stream : not null access RST) return Character is
+-      S : XDR_S_C;
+-      L : SEO;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      else
+-
+-         --  Use Ada requirements on Character representation clause.
+-         return Character'Val (S (1));
+-      end if;
+-   end I_C;
+-
+-   ---------
+-   -- I_F --
+-   ---------
+-
+-   function I_F (Stream : not null access RST) return Float is
+-      I       : constant Precision := Single;
+-      E_Size  : Integer  renames Fields (I).E_Size;
+-      E_Bias  : Integer  renames Fields (I).E_Bias;
+-      E_Last  : Integer  renames Fields (I).E_Last;
+-      F_Size  : Integer  renames Fields (I).F_Size;
+-      F_Mask  : SE       renames Fields (I).F_Mask;
+-      E_Bytes : SEO      renames Fields (I).E_Bytes;
+-      F_Bytes : SEO      renames Fields (I).F_Bytes;
+-
+-      E : Unsigned;
+-      P : Boolean;
+-      X : Float;
+-      S : SEA (1 .. F_L);
+-      L : SEO;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      end if;
+-
+-      --  Extract Fraction, Exponent and Sign.
+-      X := Float (S (F_L + 1 - F_Bytes) and F_Mask);
+-      for N in F_L + 2 - F_Bytes .. F_L loop
+-         X := X * FB + Float (S (N));
+-      end loop;
+-      X := Scaling (X, -F_Size); --  Float
+-
+-      if BS <= S (1) then
+-         P := False;
+-         E := Unsigned (S (1) - BS);
+-      else
+-         P := True;
+-         E := Unsigned (S (1));
+-      end if;
+-
+-      for N in 2 .. E_Bytes loop
+-         E := E * BB + Unsigned (S (N));
+-      end loop;
+-      E := Shift_Right (E, Integer (E_Bytes) * SU - E_Size - 1);
+-
+-      --  Look for special cases.
+-      if X = 0.0 then
+-
+-         --  Signed zeros.
+-         if E = 0 then
+-            if P then
+-               return Float'Copy_Sign (0.0, 1.0);
+-            else
+-               return Float'Copy_Sign (0.0, -1.0);
+-            end if;
+-
+-         else
+-
+-            --  Signed infinites.
+-            if E = Unsigned (E_Last) then
+-               if P then
+-                  return Float'Safe_Last;
+-               else
+-                  return Float'Safe_First;
+-               end if;
+-            end if;
+-         end if;
+-      end if;
+-
+-      --  Denormalized float.
+-      if E = 0 then
+-
+-         X := Scaling (X, 1 - E_Bias); --  Flaot
+-
+-      --  Normalized float.
+-      else
+-
+-         X := Scaling (X + 1.0, Integer (E) - E_Bias); --  Float
+-
+-      end if;
+-
+-      if P then
+-         X := Float'Copy_Sign (X, 1.0);
+-      else
+-         X := Float'Copy_Sign (X, -1.0);
+-      end if;
+-
+-      return X;
+-   end I_F;
+-
+-   ---------
+-   -- I_I --
+-   ---------
+-
+-   function I_I (Stream : not null access RST) return Integer is
+-      S : XDR_S_I;
+-      L : SEO;
+-      U : XDR_U := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      elsif Optimize_Integers then
+-         return XDR_S_I_To_Integer (S);
+-      else
+-         for N in S'Range loop
+-            U := U * BB + XDR_U (S (N));
+-         end loop;
+-
+-         --  Test sign and apply two complement's notation.
+-         if S (1) < BL then
+-            return Integer (U);
+-         else
+-            return Integer (-((XDR_U'Last xor U) + 1));
+-         end if;
+-      end if;
+-   end I_I;
+-
+-   ----------
+-   -- I_LF --
+-   ----------
+-
+-   function I_LF (Stream : not null access RST) return Long_Float is
+-      I       : constant Precision := Double;
+-      E_Size  : Integer  renames Fields (I).E_Size;
+-      E_Bias  : Integer  renames Fields (I).E_Bias;
+-      E_Last  : Integer  renames Fields (I).E_Last;
+-      F_Size  : Integer  renames Fields (I).F_Size;
+-      F_Mask  : SE       renames Fields (I).F_Mask;
+-      E_Bytes : SEO      renames Fields (I).E_Bytes;
+-      F_Bytes : SEO      renames Fields (I).F_Bytes;
+-
+-      E : Unsigned;
+-      P : Boolean;
+-      X : Long_Float;
+-      S : SEA (1 .. LF_L);
+-      L : SEO;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      end if;
+-
+-      --  Extract Fraction, Exponent and Sign.
+-      X := Long_Float (S (LF_L + 1 - F_Bytes) and F_Mask);
+-      for N in LF_L + 2 - F_Bytes .. LF_L loop
+-         X := X * FB + Long_Float (S (N));
+-      end loop;
+-      X := Scaling (X, -F_Size); --  Long_Float
+-
+-      if BS <= S (1) then
+-         P := False;
+-         E := Unsigned (S (1) - BS);
+-      else
+-         P := True;
+-         E := Unsigned (S (1));
+-      end if;
+-
+-      for N in 2 .. E_Bytes loop
+-         E := E * BB + Unsigned (S (N));
+-      end loop;
+-      E := Shift_Right (E, Integer (E_Bytes) * SU - E_Size - 1);
+-
+-      --  Look for special cases.
+-      if X = 0.0 then
+-
+-         --  Signed zeros.
+-         if E = 0 then
+-            if P then
+-               return Long_Float'Copy_Sign (0.0, 1.0);
+-            else
+-               return Long_Float'Copy_Sign (0.0, -1.0);
+-            end if;
+-
+-         else
+-
+-            --  Signed infinites.
+-            if E = Unsigned (E_Last) then
+-               if P then
+-                  return Long_Float'Safe_Last;
+-               else
+-                  return Long_Float'Safe_First;
+-               end if;
+-            end if;
+-         end if;
+-      end if;
+-
+-      --  Denormalized float.
+-      if E = 0 then
+-
+-         X := Scaling (X, 1 - E_Bias); --  Long_Float
+-
+-      --  Normalized float.
+-      else
+-
+-         X := Scaling (X + 1.0, Integer (E) - E_Bias); --  Long_Float
+-
+-      end if;
+-
+-      if P then
+-         X := Long_Float'Copy_Sign (X, 1.0);
+-      else
+-         X := Long_Float'Copy_Sign (X, -1.0);
+-      end if;
+-
+-      return X;
+-   end I_LF;
+-
+-   ----------
+-   -- I_LI --
+-   ----------
+-
+-   function I_LI (Stream : not null access RST) return Long_Integer is
+-      S : XDR_S_LI;
+-      L : SEO;
+-      U : Unsigned := 0;
+-      X : Long_Unsigned := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      elsif Optimize_Integers then
+-         return Long_Integer (XDR_S_LI_To_Long_Long_Integer (S));
+-      else
+-
+-         --  Compute using machine unsigned
+-         --  rather than long_long_unsigned
+-
+-         for N in S'Range loop
+-            U := U * BB + Unsigned (S (N));
+-
+-            --  We have filled an unsigned.
+-            if N mod UB = 0 then
+-               X := Shift_Left (X, US) + Long_Unsigned (U);
+-               U := 0;
+-            end if;
+-         end loop;
+-
+-         --  Test sign and apply two complement's notation.
+-         if S (1) < BL then
+-            return Long_Integer (X);
+-         else
+-            return Long_Integer (-((Long_Unsigned'Last xor X) + 1));
+-         end if;
+-
+-      end if;
+-   end I_LI;
+-
+-   -----------
+-   -- I_LLF --
+-   -----------
+-
+-   function I_LLF (Stream : not null access RST) return Long_Long_Float is
+-      I       : constant Precision := Extended;
+-      E_Size  : Integer  renames Fields (I).E_Size;
+-      E_Bias  : Integer  renames Fields (I).E_Bias;
+-      E_Last  : Integer  renames Fields (I).E_Last;
+-      F_Size  : Integer  renames Fields (I).F_Size;
+-      F_Mask  : SE       renames Fields (I).F_Mask;
+-      E_Bytes : SEO      renames Fields (I).E_Bytes;
+-      F_Bytes : SEO      renames Fields (I).F_Bytes;
+-
+-      E : Unsigned;
+-      P : Boolean;
+-      X : Long_Long_Float;
+-      S : SEA (1 .. LLF_L);
+-      L : SEO;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      end if;
+-
+-      --  Extract Fraction, Exponent and Sign.
+-      X := Long_Long_Float (S (LLF_L + 1 - F_Bytes) and F_Mask);
+-      for N in LLF_L + 2 - F_Bytes .. LLF_L loop
+-         X := X * FB + Long_Long_Float (S (N));
+-      end loop;
+-      X := Scaling (X, -F_Size); --  Long_Long_Float
+-
+-      if BS <= S (1) then
+-         P := False;
+-         E := Unsigned (S (1) - BS);
+-      else
+-         P := True;
+-         E := Unsigned (S (1));
+-      end if;
+-
+-      for N in 2 .. E_Bytes loop
+-         E := E * BB + Unsigned (S (N));
+-      end loop;
+-      E := Shift_Right (E, Integer (E_Bytes) * SU - E_Size - 1);
+-
+-      --  Look for special cases.
+-      if X = 0.0 then
+-
+-         --  Signed zeros.
+-         if E = 0 then
+-            if P then
+-               return Long_Long_Float'Copy_Sign (0.0, 1.0);
+-            else
+-               return Long_Long_Float'Copy_Sign (0.0, -1.0);
+-            end if;
+-
+-         else
+-
+-            --  Signed infinites.
+-            if E = Unsigned (E_Last) then
+-               if P then
+-                  return Long_Long_Float'Safe_Last;
+-               else
+-                  return Long_Long_Float'Safe_First;
+-               end if;
+-            end if;
+-         end if;
+-      end if;
+-
+-      --  Denormalized float.
+-      if E = 0 then
+-
+-         X := Scaling (X, 1 - E_Bias); --  Long_Long_Float
+-
+-      --  Normalized float.
+-      else
+-
+-         X := Scaling (X + 1.0, Integer (E) - E_Bias); --  Long_Long_Float
+-
+-      end if;
+-
+-      if P then
+-         X := Long_Long_Float'Copy_Sign (X, 1.0);
+-      else
+-         X := Long_Long_Float'Copy_Sign (X, -1.0);
+-      end if;
+-
+-      return X;
+-   end I_LLF;
+-
+-   -----------
+-   -- I_LLI --
+-   -----------
+-
+-   function I_LLI (Stream : not null access RST) return Long_Long_Integer is
+-      S : XDR_S_LLI;
+-      L : SEO;
+-      U : Unsigned := 0;
+-      X : Long_Long_Unsigned := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      elsif Optimize_Integers then
+-         return XDR_S_LLI_To_Long_Long_Integer (S);
+-      else
+-
+-         --  Compute using machine unsigned for computing
+-         --  rather than long_long_unsigned.
+-
+-         for N in S'Range loop
+-            U := U * BB + Unsigned (S (N));
+-
+-            --  We have filled an unsigned.
+-            if N mod UB = 0 then
+-               X := Shift_Left (X, US) + Long_Long_Unsigned (U);
+-               U := 0;
+-            end if;
+-         end loop;
+-
+-         --  Test sign and apply two complement's notation.
+-         if S (1) < BL then
+-            return Long_Long_Integer (X);
+-         else
+-            return Long_Long_Integer (-((Long_Long_Unsigned'Last xor X) + 1));
+-         end if;
+-      end if;
+-   end I_LLI;
+-
+-   -----------
+-   -- I_LLU --
+-   -----------
+-
+-   function I_LLU (Stream : not null access RST) return Long_Long_Unsigned is
+-      S : XDR_S_LLU;
+-      L : SEO;
+-      U : Unsigned := 0;
+-      X : Long_Long_Unsigned := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      elsif Optimize_Integers then
+-         return XDR_S_LLU_To_Long_Long_Unsigned (S);
+-      else
+-
+-         --  Compute using machine unsigned
+-         --  rather than long_long_unsigned.
+-
+-         for N in S'Range loop
+-            U := U * BB + Unsigned (S (N));
+-
+-            --  We have filled an unsigned.
+-            if N mod UB = 0 then
+-               X := Shift_Left (X, US) + Long_Long_Unsigned (U);
+-               U := 0;
+-            end if;
+-         end loop;
+-
+-         return X;
+-      end if;
+-   end I_LLU;
+-
+-   ----------
+-   -- I_LU --
+-   ----------
+-
+-   function I_LU (Stream : not null access RST) return Long_Unsigned is
+-      S : XDR_S_LU;
+-      L : SEO;
+-      U : Unsigned := 0;
+-      X : Long_Unsigned := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      elsif Optimize_Integers then
+-         return Long_Unsigned (XDR_S_LU_To_Long_Long_Unsigned (S));
+-      else
+-
+-         --  Compute using machine unsigned
+-         --  rather than long_unsigned.
+-
+-         for N in S'Range loop
+-            U := U * BB + Unsigned (S (N));
+-
+-            --  We have filled an unsigned.
+-            if N mod UB = 0 then
+-               X := Shift_Left (X, US) + Long_Unsigned (U);
+-               U := 0;
+-            end if;
+-         end loop;
+-
+-         return X;
+-      end if;
+-   end I_LU;
+-
+-   ----------
+-   -- I_SF --
+-   ----------
+-
+-   function I_SF (Stream : not null access RST) return Short_Float is
+-      I       : constant Precision := Single;
+-      E_Size  : Integer  renames Fields (I).E_Size;
+-      E_Bias  : Integer  renames Fields (I).E_Bias;
+-      E_Last  : Integer  renames Fields (I).E_Last;
+-      F_Size  : Integer  renames Fields (I).F_Size;
+-      F_Mask  : SE       renames Fields (I).F_Mask;
+-      E_Bytes : SEO      renames Fields (I).E_Bytes;
+-      F_Bytes : SEO      renames Fields (I).F_Bytes;
+-
+-      E : Unsigned;
+-      P : Boolean;
+-      X : Short_Float;
+-      S : SEA (1 .. SF_L);
+-      L : SEO;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      end if;
+-
+-      --  Extract Fraction, Exponent and Sign.
+-      X := Short_Float (S (SF_L + 1 - F_Bytes) and F_Mask);
+-      for N in SF_L + 2 - F_Bytes .. SF_L loop
+-         X := X * FB + Short_Float (S (N));
+-      end loop;
+-      X := Scaling (X, -F_Size); --  Short_Float
+-
+-      if BS <= S (1) then
+-         P := False;
+-         E := Unsigned (S (1) - BS);
+-      else
+-         P := True;
+-         E := Unsigned (S (1));
+-      end if;
+-
+-      for N in 2 .. E_Bytes loop
+-         E := E * BB + Unsigned (S (N));
+-      end loop;
+-      E := Shift_Right (E, Integer (E_Bytes) * SU - E_Size - 1);
+-
+-      --  Look for special cases.
+-      if X = 0.0 then
+-
+-         --  Signed zeros.
+-         if E = 0 then
+-            if P then
+-               return Short_Float'Copy_Sign (0.0, 1.0);
+-            else
+-               return Short_Float'Copy_Sign (0.0, -1.0);
+-            end if;
+-
+-         else
+-
+-            --  Signed infinites.
+-            if E = Unsigned (E_Last) then
+-               if P then
+-                  return Short_Float'Safe_Last;
+-               else
+-                  return Short_Float'Safe_First;
+-               end if;
+-            end if;
+-         end if;
+-      end if;
+-
+-      --  Denormalized float.
+-      if E = 0 then
+-
+-         X := Scaling (X, 1 - E_Bias); --  Short_Float
+-
+-      --  Normalized float.
+-      else
+-
+-         X := Scaling (X + 1.0, Integer (E) - E_Bias); --  Short_Float
+-
+-      end if;
+-
+-      if P then
+-         X := Short_Float'Copy_Sign (X, 1.0);
+-      else
+-         X := Short_Float'Copy_Sign (X, -1.0);
+-      end if;
+-
+-      return X;
+-   end I_SF;
+-
+-   ----------
+-   -- I_SI --
+-   ----------
+-
+-   function I_SI (Stream : not null access RST) return Short_Integer is
+-      S : XDR_S_SI;
+-      L : SEO;
+-      U : XDR_SU := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      elsif Optimize_Integers then
+-         return XDR_S_SI_To_Short_Integer (S);
+-      else
+-         for N in S'Range loop
+-            U := U * BB + XDR_SU (S (N));
+-         end loop;
+-
+-         --  test sign and apply two complement's notation.
+-         if S (1) < BL then
+-            return Short_Integer (U);
+-         else
+-            return Short_Integer (-((XDR_SU'Last xor U) + 1));
+-         end if;
+-      end if;
+-   end I_SI;
+-
+-   -----------
+-   -- I_SSI --
+-   -----------
+-
+-   function I_SSI (Stream : not null access RST) return Short_Short_Integer is
+-      S : XDR_S_SSI;
+-      L : SEO;
+-      U : XDR_SSU;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      elsif Optimize_Integers then
+-         return XDR_S_SSI_To_Short_Short_Integer (S);
+-      else
+-         --  for N in S'Range loop
+-         --     U := U * BB + XDR_SSU (S (N));
+-         --  end loop;
+-         U := XDR_SSU (S (1));
+-
+-         --  Test sign and apply two complement's notation.
+-         if S (1) < BL then
+-            return Short_Short_Integer (U);
+-         else
+-            return Short_Short_Integer (-((XDR_SSU'Last xor U) + 1));
+-         end if;
+-      end if;
+-   end I_SSI;
+-
+-   -----------
+-   -- I_SSU --
+-   -----------
+-
+-   function I_SSU (Stream : not null access RST) return Short_Short_Unsigned is
+-      S : XDR_S_SSU;
+-      L : SEO;
+-      U : XDR_SSU := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      else
+-         --  for N in S'Range loop
+-         --     U := U * BB + XDR_SSU (S (N));
+-         --  end loop;
+-         U := XDR_SSU (S (1));
+-
+-         return Short_Short_Unsigned (U);
+-      end if;
+-   end I_SSU;
+-
+-   ----------
+-   -- I_SU --
+-   ----------
+-
+-   function I_SU (Stream : not null access RST) return Short_Unsigned is
+-      S : XDR_S_SU;
+-      L : SEO;
+-      U : XDR_SU := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      elsif Optimize_Integers then
+-         return XDR_S_SU_To_Short_Unsigned (S);
+-      else
+-         for N in S'Range loop
+-            U := U * BB + XDR_SU (S (N));
+-         end loop;
+-
+-         return Short_Unsigned (U);
+-      end if;
+-   end I_SU;
+-
+-   ---------
+-   -- I_U --
+-   ---------
+-
+-   function I_U (Stream : not null access RST) return Unsigned is
+-      S : XDR_S_U;
+-      L : SEO;
+-      U : XDR_U := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      elsif Optimize_Integers then
+-         return XDR_S_U_To_Unsigned (S);
+-      else
+-         for N in S'Range loop
+-            U := U * BB + XDR_U (S (N));
+-         end loop;
+-
+-         return Unsigned (U);
+-      end if;
+-   end I_U;
+-
+-   ----------
+-   -- I_WC --
+-   ----------
+-
+-   function I_WC (Stream : not null access RST) return Wide_Character is
+-      S : XDR_S_WC;
+-      L : SEO;
+-      U : XDR_WC := 0;
+-
+-   begin
+-      Ada.Streams.Read (Stream.all, S, L);
+-
+-      if L /= S'Last then
+-         raise Data_Error;
+-      else
+-         for N in S'Range loop
+-            U := U * BB + XDR_WC (S (N));
+-         end loop;
+-
+-         --  Use Ada requirements on Wide_Character representation clause.
+-         return Wide_Character'Val (U);
+-      end if;
+-   end I_WC;
+-
+-   -------------
+-   -- Scaling --
+-   -------------
+-
+-   function Scaling
+-     (X : Short_Float; A : Integer)
+-      return Short_Float is
+-      E : constant Integer := Short_Float'Exponent (X);
+-   begin
+-      return Short_Float'Compose (X, A + E);
+-   end Scaling;
+-
+-   -------------
+-   -- Scaling --
+-   -------------
+-
+-   function Scaling
+-     (X : Float; A : Integer)
+-      return Float is
+-      E : constant Integer := Float'Exponent (X);
+-   begin
+-      return Float'Compose (X, A + E);
+-   end Scaling;
+-
+-   -------------
+-   -- Scaling --
+-   -------------
+-
+-   function Scaling
+-     (X : Long_Float; A : Integer)
+-      return Long_Float is
+-      E : constant Integer := Long_Float'Exponent (X);
+-   begin
+-      return Long_Float'Compose (X, A + E);
+-   end Scaling;
+-
+-   -------------
+-   -- Scaling --
+-   -------------
+-
+-   function Scaling
+-     (X : Long_Long_Float; A : Integer)
+-      return Long_Long_Float is
+-      E : constant Integer := Long_Long_Float'Exponent (X);
+-   begin
+-      return Long_Long_Float'Compose (X, A + E);
+-   end Scaling;
+-
+-   ----------
+-   -- W_AD --
+-   ----------
+-
+-   procedure W_AD (Stream : not null access RST; Item : Fat_Pointer) is
+-      S : XDR_S_TM;
+-      U : XDR_TM;
+-
+-   begin
+-      U := XDR_TM (To_XDR_SA (Item.P1));
+-      for N in reverse S'Range loop
+-         S (N) := SE (U mod BB);
+-         U := U / BB;
+-      end loop;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-
+-      U := XDR_TM (To_XDR_SA (Item.P2));
+-      for N in reverse S'Range loop
+-         S (N) := SE (U mod BB);
+-         U := U / BB;
+-      end loop;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-
+-      if U /= 0 then
+-         raise Data_Error;
+-      end if;
+-   end W_AD;
+-
+-   ----------
+-   -- W_AS --
+-   ----------
+-
+-   procedure W_AS (Stream : not null access RST; Item : Thin_Pointer) is
+-      S : XDR_S_TM;
+-      U : XDR_TM := XDR_TM (To_XDR_SA (Item.P1));
+-
+-   begin
+-      for N in reverse S'Range loop
+-         S (N) := SE (U mod BB);
+-         U := U / BB;
+-      end loop;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-
+-      if U /= 0 then
+-         raise Data_Error;
+-      end if;
+-   end W_AS;
+-
+-   ---------
+-   -- W_B --
+-   ---------
+-
+-   procedure W_B (Stream : not null access RST; Item : Boolean) is
+-   begin
+-      if Item then
+-         W_SSU (Stream, 1);
+-      else
+-         W_SSU (Stream, 0);
+-      end if;
+-   end W_B;
+-
+-   ---------
+-   -- W_C --
+-   ---------
+-
+-   procedure W_C (Stream : not null access RST; Item : Character) is
+-      S : XDR_S_C;
+-
+-      pragma Assert (C_L = 1);
+-
+-   begin
+-
+-      --  Use Ada requirements on Character representation clause.
+-      S (1) := SE (Character'Pos (Item));
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_C;
+-
+-   ---------
+-   -- W_F --
+-   ---------
+-
+-   procedure W_F (Stream : not null access RST; Item : Float) is
+-      I       : constant Precision := Single;
+-      E_Size  : Integer  renames Fields (I).E_Size;
+-      E_Bias  : Integer  renames Fields (I).E_Bias;
+-      E_Last  : Integer  renames Fields (I).E_Last;
+-      E_Bytes : SEO      renames Fields (I).E_Bytes;
+-      F_Bytes : SEO      renames Fields (I).F_Bytes;
+-
+-      E : Integer := 0;
+-      F : Float;
+-      Q : Float;
+-      N : SEO;
+-      U : Unsigned;
+-      P : Integer;
+-      S : SEA (1 .. F_L) := (others => 0);
+-      V : Float;
+-
+-   begin
+-      if Item'Valid then
+-         V := Item;
+-      else
+-         V := 0.0;
+-      end if;
+-
+-      F := abs (V);
+-
+-      --  Signed zero.
+-      if V = 0.0 then
+-
+-         U := 0;
+-
+-      else
+-
+-         --  Signed infinites.
+-         if V <= Float'Safe_First or else
+-            Float'Safe_Last <= V then
+-            E := E_Last;
+-
+-         else
+-            E := Float'Exponent (F);
+-
+-            --  Denormalized float.
+-            if E <= 1 - E_Bias then
+-               E := 0;
+-               F := Scaling (F, E_Bias - 1); --  Float
+-
+-            --  Signed infinites.
+-            else
+-               if E_Last + E_Bias < E then
+-                  E := E_Last;
+-                  F := 0.0;
+-
+-               --  Normalized float.
+-               else
+-                  E := E + E_Bias - 1;
+-                  F := Float'Fraction (F) * 2.0 - 1.0;
+-               end if;
+-            end if;
+-
+-            --  Copy fraction on the stream array.
+-            --  Compute using machine unsigned rather
+-            --  than larger unsigned.
+-            --  N : Number of intermediate unsigned.
+-            --  F : Float fraction.
+-            --  P : Bits to shift left.
+-            --  U : Intermediate unsigned.
+-
+-            N := (F_Bytes - 1) / UB;
+-            P := Fields (I).F_Bits;
+-            loop
+-               F := Scaling  (F, P); --  Float
+-               Q := Float'Truncation (F);
+-               U := Unsigned (Q);
+-               for I in reverse F_L - UB * (N + 1) + 1 .. F_L - UB * N loop
+-                  S (I) := SE (U mod BB);
+-                  U := U / BB;
+-               end loop;
+-               exit when N = 0;
+-               N := N - 1;
+-               F := F - Q;
+-               P := Unsigned'Size;
+-            end loop;
+-         end if;
+-
+-         --  Store the exponent at the proper bit position.
+-         U := Shift_Left (Unsigned (E), Integer (E_Bytes) * SU - E_Size - 1);
+-
+-         --  We intentionnally don't store the first byte
+-         --  as we have to add the sign bit.
+-         for N in reverse 2 .. E_Bytes loop
+-            S (N) := SE (U mod BB) + S (N);
+-            U := U / BB;
+-         end loop;
+-
+-      end if;
+-
+-      --  Store the sign and the first exponent byte.
+-      if Float'Copy_Sign (1.0, V) = -1.0 then
+-         S (1) := SE (U + BS);
+-      else
+-         S (1) := SE (U);
+-      end if;
+-      U := U / BB;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-
+-      if U /= 0 then
+-         raise Data_Error;
+-      end if;
+-   end W_F;
+-
+-   ---------
+-   -- W_I --
+-   ---------
+-
+-   procedure W_I (Stream : not null access RST; Item : Integer) is
+-      S : XDR_S_I;
+-      U : XDR_U;
+-
+-   begin
+-      if Optimize_Integers then
+-         S := Integer_To_XDR_S_I (Item);
+-      else
+-         --  Test sign and apply two complement's notation.
+-         if Item < 0 then
+-            U := XDR_U'Last xor XDR_U (-(Item + 1));
+-         else
+-            U := XDR_U (Item);
+-         end if;
+-
+-         for N in reverse S'Range loop
+-            S (N) := SE (U mod BB);
+-            U := U / BB;
+-         end loop;
+-
+-         if U /= 0 then
+-            raise Data_Error;
+-         end if;
+-      end if;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_I;
+-
+-   ----------
+-   -- W_LF --
+-   ----------
+-
+-   procedure W_LF (Stream : not null access RST; Item : Long_Float) is
+-      I       : constant Precision := Double;
+-      E_Size  : Integer  renames Fields (I).E_Size;
+-      E_Bias  : Integer  renames Fields (I).E_Bias;
+-      E_Last  : Integer  renames Fields (I).E_Last;
+-      E_Bytes : SEO      renames Fields (I).E_Bytes;
+-      F_Bytes : SEO      renames Fields (I).F_Bytes;
+-
+-      E : Integer := 0;
+-      F : Long_Float;
+-      Q : Long_Float;
+-      N : SEO;
+-      U : Unsigned;
+-      P : Integer;
+-      S : SEA (1 .. LF_L) := (others => 0);
+-      V : Long_Float;
+-
+-   begin
+-      if Item'Valid then
+-         V := Item;
+-      else
+-         V := 0.0;
+-      end if;
+-
+-      F := abs (V);
+-
+-      --  Signed zero.
+-      if V = 0.0 then
+-
+-         U := 0;
+-
+-      else
+-
+-         --  Signed infinites.
+-         if V <= Long_Float'Safe_First or else
+-            Long_Float'Safe_Last <= V then
+-            E := E_Last;
+-
+-         else
+-            E := Long_Float'Exponent (F);
+-
+-            --  Denormalized float.
+-            if E <= 1 - E_Bias then
+-               E := 0;
+-               F := Scaling (F, E_Bias - 1); --  Long_Float
+-
+-            --  Signed infinites.
+-            else
+-               if E_Last + E_Bias < E then
+-                  E := E_Last;
+-                  F := 0.0;
+-
+-               --  Normalized float.
+-               else
+-                  E := E + E_Bias - 1;
+-                  F := Long_Float'Fraction (F) * 2.0 - 1.0;
+-               end if;
+-            end if;
+-
+-            --  Copy fraction on the stream array.
+-            --  Compute using machine unsigned rather
+-            --  than larger unsigned.
+-            --  N : Number of intermediate unsigned.
+-            --  F : Float fraction.
+-            --  P : Bits to shift left.
+-            --  U : Intermediate unsigned.
+-
+-            N := (F_Bytes - 1) / UB;
+-            P := Fields (I).F_Bits;
+-            loop
+-               F := Scaling  (F, P); --  Long_Float
+-               Q := Long_Float'Truncation (F);
+-               U := Unsigned (Q);
+-               for I in reverse LF_L - UB * (N + 1) + 1 .. LF_L - UB * N loop
+-                  S (I) := SE (U mod BB);
+-                  U := U / BB;
+-               end loop;
+-               exit when N = 0;
+-               N := N - 1;
+-               F := F - Q;
+-               P := Unsigned'Size;
+-            end loop;
+-         end if;
+-
+-         --  Store the exponent at the proper bit position.
+-         U := Shift_Left (Unsigned (E), Integer (E_Bytes) * SU - E_Size - 1);
+-
+-         --  We intentionnally don't store the first byte
+-         --  as we have to add the sign bit.
+-         for N in reverse 2 .. E_Bytes loop
+-            S (N) := SE (U mod BB) + S (N);
+-            U := U / BB;
+-         end loop;
+-
+-      end if;
+-
+-      --  Store the sign and the first exponent byte.
+-      if Long_Float'Copy_Sign (1.0, V) = -1.0 then
+-         S (1) := SE (U + BS);
+-      else
+-         S (1) := SE (U);
+-      end if;
+-      U := U / BB;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-
+-      if U /= 0 then
+-         raise Data_Error;
+-      end if;
+-   end W_LF;
+-
+-   ----------
+-   -- W_LI --
+-   ----------
+-
+-   procedure W_LI (Stream : not null access RST; Item : Long_Integer) is
+-      S : XDR_S_LI;
+-      U : Unsigned;
+-      X : Long_Unsigned;
+-
+-   begin
+-      if Optimize_Integers then
+-         S := Long_Long_Integer_To_XDR_S_LI (Long_Long_Integer (Item));
+-      else
+-         --  Test sign and apply two complement's notation.
+-         if Item < 0 then
+-            X := Long_Unsigned'Last xor Long_Unsigned (-(Item + 1));
+-         else
+-            X := Long_Unsigned (Item);
+-         end if;
+-
+-         --  Compute using machine unsigned
+-         --  rather than long_unsigned.
+-
+-         for N in reverse S'Range loop
+-
+-            --  We have filled an unsinged.
+-            if (LU_L - N) mod UB = 0 then
+-               U := Unsigned (X and UL);
+-               X := Shift_Right (X, US);
+-            end if;
+-
+-            S (N) := SE (U mod BB);
+-            U := U / BB;
+-         end loop;
+-
+-         if U /= 0 then
+-            raise Data_Error;
+-         end if;
+-      end if;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_LI;
+-
+-   -----------
+-   -- W_LLF --
+-   -----------
+-
+-   procedure W_LLF (Stream : not null access RST; Item : Long_Long_Float) is
+-      I       : constant Precision := Extended;
+-      E_Size  : Integer  renames Fields (I).E_Size;
+-      E_Bias  : Integer  renames Fields (I).E_Bias;
+-      E_Last  : Integer  renames Fields (I).E_Last;
+-      E_Bytes : SEO      renames Fields (I).E_Bytes;
+-      F_Bytes : SEO      renames Fields (I).F_Bytes;
+-
+-      E : Integer := 0;
+-      F : Long_Long_Float;
+-      Q : Long_Long_Float;
+-      N : SEO;
+-      U : Unsigned;
+-      P : Integer;
+-      S : SEA (1 .. LLF_L) := (others => 0);
+-      V : Long_Long_Float;
+-
+-   begin
+-      if Item'Valid then
+-         V := Item;
+-      else
+-         V := 0.0;
+-      end if;
+-
+-      F := abs (V);
+-
+-      --  Signed zero.
+-      if V = 0.0 then
+-
+-         U := 0;
+-
+-      else
+-
+-         --  Signed infinites.
+-         if V <= Long_Long_Float'Safe_First or else
+-            Long_Long_Float'Safe_Last <= V then
+-            E := E_Last;
+-
+-         else
+-            E := Long_Long_Float'Exponent (F);
+-
+-            --  Denormalized float.
+-            if E <= 1 - E_Bias then
+-               E := 0;
+-               F := Scaling (F, E_Bias - 1); --  Long_Long_Float
+-
+-            --  Signed infinites.
+-            else
+-               if E_Last + E_Bias < E then
+-                  E := E_Last;
+-                  F := 0.0;
+-
+-               --  Normalized float.
+-               else
+-                  E := E + E_Bias - 1;
+-                  F := Long_Long_Float'Fraction (F) * 2.0 - 1.0;
+-               end if;
+-            end if;
+-
+-            --  Copy fraction on the stream array.
+-            --  Compute using machine unsigned rather
+-            --  than larger unsigned.
+-            --  N : Number of intermediate unsigned.
+-            --  F : Float fraction.
+-            --  P : Bits to shift left.
+-            --  U : Intermediate unsigned.
+-
+-            N := (F_Bytes - 1) / UB;
+-            P := Fields (I).F_Bits;
+-            loop
+-               F := Scaling  (F, P); --  Long_Long_Float
+-               Q := Long_Long_Float'Truncation (F);
+-               U := Unsigned (Q);
+-               for I in reverse LLF_L - UB * (N + 1) + 1 .. LLF_L - UB * N loop
+-                  S (I) := SE (U mod BB);
+-                  U := U / BB;
+-               end loop;
+-               exit when N = 0;
+-               N := N - 1;
+-               F := F - Q;
+-               P := Unsigned'Size;
+-            end loop;
+-         end if;
+-
+-         --  Store the exponent at the proper bit position.
+-         U := Shift_Left (Unsigned (E), Integer (E_Bytes) * SU - E_Size - 1);
+-
+-         --  We intentionnally don't store the first byte
+-         --  as we have to add the sign bit.
+-         for N in reverse 2 .. E_Bytes loop
+-            S (N) := SE (U mod BB) + S (N);
+-            U := U / BB;
+-         end loop;
+-
+-      end if;
+-
+-      --  Store the sign and the first exponent byte.
+-      if Long_Long_Float'Copy_Sign (1.0, V) = -1.0 then
+-         S (1) := SE (U + BS);
+-      else
+-         S (1) := SE (U);
+-      end if;
+-      U := U / BB;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-
+-      if U /= 0 then
+-         raise Data_Error;
+-      end if;
+-   end W_LLF;
+-
+-   -----------
+-   -- W_LLI --
+-   -----------
+-
+-   procedure W_LLI
+-     (Stream : not null access RST; Item : Long_Long_Integer)
+-   is
+-      S : XDR_S_LLI;
+-      U : Unsigned;
+-      X : Long_Long_Unsigned;
+-
+-   begin
+-      if Optimize_Integers then
+-         S := Long_Long_Integer_To_XDR_S_LLI (Item);
+-      else
+-         --  Test sign and apply two complement's notation.
+-         if Item < 0 then
+-            X := Long_Long_Unsigned'Last xor Long_Long_Unsigned (-(Item + 1));
+-         else
+-            X := Long_Long_Unsigned (Item);
+-         end if;
+-
+-         --  Compute using machine unsigned
+-         --  rather than long_long_unsigned.
+-
+-         for N in reverse S'Range loop
+-
+-            --  We have filled an unsigned.
+-            if (LLU_L - N) mod UB = 0 then
+-               U := Unsigned (X and UL);
+-               X := Shift_Right (X, US);
+-            end if;
+-
+-            S (N) := SE (U mod BB);
+-            U := U / BB;
+-         end loop;
+-
+-         if U /= 0 then
+-            raise Data_Error;
+-         end if;
+-      end if;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_LLI;
+-
+-   -----------
+-   -- W_LLU --
+-   -----------
+-
+-   procedure W_LLU
+-     (Stream : not null access RST; Item : Long_Long_Unsigned)
+-   is
+-      S : XDR_S_LLU;
+-      U : Unsigned;
+-      X : Long_Long_Unsigned := Item;
+-
+-   begin
+-      if Optimize_Integers then
+-         S := Long_Long_Unsigned_To_XDR_S_LLU (Item);
+-      else
+-         --  Compute using machine unsigned
+-         --  rather than long_long_unsigned.
+-
+-         for N in reverse S'Range loop
+-
+-            --  We have filled an unsigned.
+-            if (LLU_L - N) mod UB = 0 then
+-               U := Unsigned (X and UL);
+-               X := Shift_Right (X, US);
+-            end if;
+-
+-            S (N) := SE (U mod BB);
+-            U := U / BB;
+-         end loop;
+-
+-         if U /= 0 then
+-            raise Data_Error;
+-         end if;
+-      end if;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_LLU;
+-
+-   ----------
+-   -- W_LU --
+-   ----------
+-
+-   procedure W_LU (Stream : not null access RST; Item : Long_Unsigned) is
+-      S : XDR_S_LU;
+-      U : Unsigned;
+-      X : Long_Unsigned := Item;
+-
+-   begin
+-      if Optimize_Integers then
+-         S := Long_Long_Unsigned_To_XDR_S_LU (Long_Long_Unsigned (Item));
+-      else
+-         --  Compute using machine unsigned
+-         --  rather than long_unsigned.
+-
+-         for N in reverse S'Range loop
+-
+-            --  We have filled an unsigned.
+-            if (LU_L - N) mod UB = 0 then
+-               U := Unsigned (X and UL);
+-               X := Shift_Right (X, US);
+-            end if;
+-            S (N) := SE (U mod BB);
+-            U := U / BB;
+-         end loop;
+-
+-         if U /= 0 then
+-            raise Data_Error;
+-         end if;
+-      end if;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_LU;
+-
+-   ----------
+-   -- W_SF --
+-   ----------
+-
+-   procedure W_SF (Stream : not null access RST; Item : Short_Float) is
+-      I       : constant Precision := Single;
+-      E_Size  : Integer  renames Fields (I).E_Size;
+-      E_Bias  : Integer  renames Fields (I).E_Bias;
+-      E_Last  : Integer  renames Fields (I).E_Last;
+-      E_Bytes : SEO      renames Fields (I).E_Bytes;
+-      F_Bytes : SEO      renames Fields (I).F_Bytes;
+-
+-      E : Integer := 0;
+-      F : Short_Float;
+-      Q : Short_Float;
+-      N : SEO;
+-      U : Unsigned := 0;
+-      P : Integer;
+-      S : SEA (1 .. SF_L) := (others => 0);
+-      V : Short_Float;
+-
+-   begin
+-      if Item'Valid then
+-         V := Item;
+-      else
+-         V := 0.0;
+-      end if;
+-
+-      F := abs (V);
+-
+-      --  Signed zero.
+-      if V = 0.0 then
+-
+-         U := 0;
+-
+-      else
+-
+-         --  Signed infinites.
+-         if V <= Short_Float'Safe_First or else
+-            Short_Float'Safe_Last <= V then
+-            E := E_Last;
+-
+-         else
+-            E := Short_Float'Exponent (F);
+-
+-            --  Denormalized float.
+-            if E <= 1 - E_Bias then
+-               E := 0;
+-               F := Scaling (F, E_Bias - 1); --  Short_Float
+-
+-            --  Signed infinites.
+-            else
+-               if E_Last + E_Bias < E then
+-                  E := E_Last;
+-                  F := 0.0;
+-
+-               --  Normalized float.
+-               else
+-                  E := E + E_Bias - 1;
+-                  F := Short_Float'Fraction (F) * 2.0 - 1.0;
+-               end if;
+-            end if;
+-
+-            --  Copy fraction on the stream array.
+-            --  Compute using machine unsigned rather
+-            --  than larger unsigned.
+-            --  N : Number of intermediate unsigned.
+-            --  F : Float fraction.
+-            --  P : Bits to shift left.
+-            --  U : Intermediate unsigned.
+-
+-            N := (F_Bytes - 1) / UB;
+-            P := Fields (I).F_Bits;
+-            loop
+-               F := Scaling  (F, P); --  Short_Float
+-               Q := Short_Float'Truncation (F);
+-               U := Unsigned (Q);
+-               for I in reverse SF_L - UB * (N + 1) + 1 .. SF_L - UB * N loop
+-                  S (I) := SE (U mod BB);
+-                  U := U / BB;
+-               end loop;
+-               exit when N = 0;
+-               N := N - 1;
+-               F := F - Q;
+-               P := Unsigned'Size;
+-            end loop;
+-         end if;
+-
+-         --  Store the exponent at the proper bit position.
+-         U := Shift_Left (Unsigned (E), Integer (E_Bytes) * SU - E_Size - 1);
+-
+-         --  We intentionnally don't store the first byte
+-         --  as we have to add the sign bit.
+-         for N in reverse 2 .. E_Bytes loop
+-            S (N) := SE (U mod BB) + S (N);
+-            U := U / BB;
+-         end loop;
+-
+-      end if;
+-
+-      --  Store the sign and the first exponent byte.
+-      if Short_Float'Copy_Sign (1.0, V) = -1.0 then
+-         S (1) := SE (U + BS);
+-      else
+-         S (1) := SE (U);
+-      end if;
+-      U := U / BB;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-
+-      if U /= 0 then
+-         raise Data_Error;
+-      end if;
+-   end W_SF;
+-
+-   ----------
+-   -- W_SI --
+-   ----------
+-
+-   procedure W_SI (Stream : not null access RST; Item : Short_Integer) is
+-      S : XDR_S_SI;
+-      U : XDR_SU;
+-
+-   begin
+-      if Optimize_Integers then
+-         S := Short_Integer_To_XDR_S_SI (Item);
+-      else
+-         --  Test sign and apply two complement's notation.
+-         if Item < 0 then
+-            U := XDR_SU'Last xor XDR_SU (-(Item + 1));
+-         else
+-            U := XDR_SU (Item);
+-         end if;
+-
+-         for N in reverse S'Range loop
+-            S (N) := SE (U mod BB);
+-            U := U / BB;
+-         end loop;
+-
+-         if U /= 0 then
+-            raise Data_Error;
+-         end if;
+-      end if;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_SI;
+-
+-   -----------
+-   -- W_SSI --
+-   -----------
+-
+-   procedure W_SSI
+-     (Stream : not null access RST; Item : Short_Short_Integer)
+-   is
+-      S : XDR_S_SSI;
+-      U : XDR_SSU;
+-
+-   begin
+-      if Optimize_Integers then
+-         S := Short_Short_Integer_To_XDR_S_SSI (Item);
+-      else
+-         --  Test sign and apply two complement's notation.
+-         if Item < 0 then
+-            U := XDR_SSU'Last xor XDR_SSU (-(Item + 1));
+-         else
+-            U := XDR_SSU (Item);
+-         end if;
+-
+-         S (1) := SE (U);
+-      end if;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_SSI;
+-
+-   -----------
+-   -- W_SSU --
+-   -----------
+-
+-   procedure W_SSU
+-     (Stream : not null access RST; Item : Short_Short_Unsigned)
+-   is
+-      S : XDR_S_SSU;
+-      U : constant XDR_SSU := XDR_SSU (Item);
+-
+-   begin
+-      --  for N in reverse S'Range loop
+-      --     S (N) := SE (U mod BB);
+-      --     U := U / BB;
+-      --  end loop;
+-      S (1) := SE (U);
+-
+-      Ada.Streams.Write (Stream.all, S);
+-
+-      --  if U /= 0 then
+-      --     raise Data_Error;
+-      --  end if;
+-   end W_SSU;
+-
+-   ----------
+-   -- W_SU --
+-   ----------
+-
+-   procedure W_SU (Stream : not null access RST; Item : Short_Unsigned) is
+-      S : XDR_S_SU;
+-      U : XDR_SU := XDR_SU (Item);
+-
+-   begin
+-      if Optimize_Integers then
+-         S := Short_Unsigned_To_XDR_S_SU (Item);
+-      else
+-         for N in reverse S'Range loop
+-            S (N) := SE (U mod BB);
+-            U := U / BB;
+-         end loop;
+-
+-         if U /= 0 then
+-            raise Data_Error;
+-         end if;
+-      end if;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_SU;
+-
+-   ---------
+-   -- W_U --
+-   ---------
+-
+-   procedure W_U (Stream : not null access RST; Item : Unsigned) is
+-      S : XDR_S_U;
+-      U : XDR_U := XDR_U (Item);
+-
+-   begin
+-      if Optimize_Integers then
+-         S := Unsigned_To_XDR_S_U (Item);
+-      else
+-         for N in reverse S'Range loop
+-            S (N) := SE (U mod BB);
+-            U := U / BB;
+-         end loop;
+-
+-         if U /= 0 then
+-            raise Data_Error;
+-         end if;
+-      end if;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-   end W_U;
+-
+-   ----------
+-   -- W_WC --
+-   ----------
+-
+-   procedure W_WC (Stream : not null access RST; Item : Wide_Character) is
+-      S : XDR_S_WC;
+-      U : XDR_WC;
+-
+-   begin
+-
+-      --  Use Ada requirements on Wide_Character representation clause.
+-      U := XDR_WC (Wide_Character'Pos (Item));
+-
+-      for N in reverse S'Range loop
+-         S (N) := SE (U mod BB);
+-         U := U / BB;
+-      end loop;
+-
+-      Ada.Streams.Write (Stream.all, S);
+-
+-      if U /= 0 then
+-         raise Data_Error;
+-      end if;
+-   end W_WC;
+-
+-end System.Stream_Attributes;
diff --git a/gnat-glade/patches/patch-Garlic_select.c b/gnat-glade/patches/patch-Garlic_select.c
new file mode 100644
index 0000000000..e5a1d97824
--- /dev/null
+++ b/gnat-glade/patches/patch-Garlic_select.c
@@ -0,0 +1,14 @@
+$NetBSD: patch-Garlic_select.c,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix link time version warning on NetBSD
+
+--- /dev/null
++++ Garlic/select.c
+@@ -0,0 +1,7 @@
++#include <sys/select.h>
++int
++__netbsd_select(int nfds, fd_set * restrict readfds, fd_set * restrict writefds,
++    fd_set * restrict exceptfds, struct timeval * restrict timeout)
++{
++    return select(nfds, readfds, writefds, exceptfds, timeout);
++}
diff --git a/gnat-glade/patches/patch-configure b/gnat-glade/patches/patch-configure
new file mode 100644
index 0000000000..0da58989cf
--- /dev/null
+++ b/gnat-glade/patches/patch-configure
@@ -0,0 +1,84 @@
+$NetBSD: patch-configure,v 1.0 2024/12/05 15:00:00 dkazankov Exp $
+
+Fix version
+Add var for configuration helper
+Fix GNAT version control
+Add NetBSD support
+Fix link time version warning
+Add configuration helper
+
+--- configure.orig	2007-11-28 21:27:21.000000000 +0200
++++ configure
+@@ -1669,7 +1669,7 @@
+ 
+ # Define the identity of the package.
+  PACKAGE=GLADE
+- VERSION=dev
++ VERSION=6.0.1
+ 
+ 
+ cat >>confdefs.h <<_ACEOF
+@@ -3372,7 +3372,6 @@
+ fi
+ 
+ 
+-
+ #
+ # Check for maintainer mode
+ #
+@@ -3522,7 +3521,10 @@
+ echo "$as_me:$LINENO: checking if the Ada compiler is recent enough" >&5
+ echo $ECHO_N "checking if the Ada compiler is recent enough... $ECHO_C" >&6
+ am_gnatls_date=`$GNATLS -v | $SED -ne 's/^GNATLS .*(\(........\).*$/\1/p'`
+-if test "20041007" -le "$am_gnatls_date"; then
++if test -z "$am_gnatls_date"; then
++  echo "$as_me:$LINENO: result: yes" >&5
++  echo "${ECHO_T}yes" >&6
++elif test "20041007" -le "$am_gnatls_date"; then
+   echo "$as_me:$LINENO: result: yes" >&5
+ echo "${ECHO_T}yes" >&6
+ else
+@@ -3559,6 +3561,7 @@
+     *-linux*)          PLATFORM_SPECIFIC=l;;
+     *-*-solaris2*)     PLATFORM_SPECIFIC=s;;
+     sparc-sun-sunos4*) PLATFORM_SPECIFIC=u;;
++    *-*netbsd)         PLATFORM_SPECIFIC=n;;
+     *)                 ;;
+   esac
+ 
+@@ -3574,6 +3577,7 @@
+     g) PSNAME="SGI";;
+     h) PSNAME="HP";;
+     b) PSNAME="AIX";;
++    n) PSNAME="NetBSD";;
+     e) PSNAME="Empty";;
+     *) PSNAME="Unknown target (${target})";;
+   esac
+@@ -3596,8 +3600,8 @@
+ 
+   PROCESS_BLOCKING_IO="no";
+   case ${PLATFORM_SPECIFIC} in
+-  s|l)
+-    ${GNATMAKE} -q -o ./isthrbio ${srcdir}/Garlic/isthrbio.adb>/dev/null 2>&1;
++  s|l|n)
++    ${GNATMAKE} -q -P${srcdir}/Garlic/isthrbio.gpr >/dev/null 2>&1;
+     if ./isthrbio; then
+       PROCESS_BLOCKING_IO="yes";
+     fi;
+@@ -4054,7 +4058,7 @@
+ #
+ # Output
+ #
+-                                                                                                                                                                                                        ac_config_files="$ac_config_files Makefile Dist/Makefile Dist/xe_defs-defaults.ads Garlic/Makefile Garlic/s-gaplsp.ads Examples/check-config Examples/Makefile Examples/Bank/Makefile Examples/Eratho/Makefile Examples/Eratho/absolute/Makefile Examples/Eratho/cycle/Makefile Examples/Eratho/dynamic/Makefile Examples/Eratho/spiral/Makefile Examples/Filters/Makefile Examples/Messages/Makefile Examples/MultiPro/Makefile Examples/DSMStorage/Makefile Examples/MultiSto/Makefile Examples/Reconnection/Makefile Examples/LightBank/Makefile"
++ac_config_files="$ac_config_files Makefile Dist/Makefile Dist/xe_defs-defaults.ads Dist/gnatdist-config Garlic/Makefile Garlic/s-gaplsp.ads Examples/check-config Examples/Makefile Examples/Bank/Makefile Examples/Eratho/Makefile Examples/Eratho/absolute/Makefile Examples/Eratho/cycle/Makefile Examples/Eratho/dynamic/Makefile Examples/Eratho/spiral/Makefile Examples/Filters/Makefile Examples/Messages/Makefile Examples/MultiPro/Makefile Examples/DSMStorage/Makefile Examples/MultiSto/Makefile Examples/Reconnection/Makefile Examples/LightBank/Makefile"
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -4633,6 +4639,7 @@
+   "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+   "Dist/Makefile" ) CONFIG_FILES="$CONFIG_FILES Dist/Makefile" ;;
+   "Dist/xe_defs-defaults.ads" ) CONFIG_FILES="$CONFIG_FILES Dist/xe_defs-defaults.ads" ;;
++  "Dist/gnatdist-config" ) CONFIG_FILES="$CONFIG_FILES Dist/gnatdist-config" ;;
+   "Garlic/Makefile" ) CONFIG_FILES="$CONFIG_FILES Garlic/Makefile" ;;
+   "Garlic/s-gaplsp.ads" ) CONFIG_FILES="$CONFIG_FILES Garlic/s-gaplsp.ads" ;;
+   "Examples/check-config" ) CONFIG_FILES="$CONFIG_FILES Examples/check-config" ;;


Home | Main Index | Thread Index | Old Index