[modula2] Add missing declarations to gcc/m2/gm2-libs-min/M2RTS.def
Checks
Commit Message
Bootstrapped on gnu/linux x86_64
Ok for trunk?
thanks
Gaius
--------- o< --------- o< --------- o< --------- o< --------- o<
Add missing declarations to gcc/m2/gm2-libs-min/M2RTS.def
This patch adds two missing procedures to gcc/m2/gm2-libs-min/M2RTS.def
required for linking (the procedures are already present in the pim and
iso M2RTS.def). The patch also includes test code, changes to
gcc/testsuite/lib/gm2.exp and an expect tcl script to test the min
libraries.
gcc/m2/ChangeLog:
* gm2-libs-min/M2RTS.def (ConstructModules): New procedure
declaration.
(DeconstructModules): New procedure declaration.
gcc/testsuite:
* lib/gm2.exp (gm2_init_minx): New procedure.
(gm2_init_min): New procedure calls gm2_init_min with
dialect flags.
* gm2/link/min/pass/tiny.mod: New test case.
* gm2/link/min/pass/link-min-pass.exp: New file.
@@ -38,6 +38,10 @@ TYPE
all these procedures do nothing except satisfy the linker.
*)
+PROCEDURE ConstructModules (applicationmodule: ADDRESS;
+ argc: INTEGER; argv, envp: ADDRESS) ;
+PROCEDURE DeconstructModules (applicationmodule: ADDRESS;
+ argc: INTEGER; argv, envp: ADDRESS) ;
PROCEDURE RegisterModule (name: ADDRESS;
init, fini: ArgCVEnvP;
dependencies: PROC) ;
@@ -496,3 +496,42 @@ proc gm2_init_cor { {path ""} args } {
gm2_link_lib "m2cor m2pim m2iso"
gm2_init {*}${theIpath} -fpim {*}${theLpath} {*}${args};
}
+
+
+#
+# gm2_init_minx - set the default libraries to choose MIN library and
+# choose Modula-2, dialect.
+#
+#
+
+proc gm2_init_minx { dialect {path ""} args } {
+ global srcdir;
+ global gccpath;
+
+ set gm2src ${srcdir}/../m2;
+
+ send_log "srcdir is $srcdir\n"
+ send_log "gccpath is $gccpath\n"
+ send_log "gm2src is $gm2src\n"
+
+ set minIpath "${gccpath}/libgm2/libm2min";
+ set minLpath "${gccpath}/libgm2/libm2min/.libs";
+
+ set theIpath "-I${minIpath}";
+ set theLpath "-L${minLpath}";
+
+ if { $path != "" } then {
+ append theIpath " -I"
+ append theIpath ${path}
+ }
+ gm2_init {*}${theIpath} {*}${dialect} {*}${theLpath} {*}${args};
+}
+
+#
+# gm2_init_min - set the default libraries to choose MIN libraries
+# and pim dialect.
+#
+
+proc gm2_init_min { {path ""} args } {
+ gm2_init_minx -fpim {*}${path} {*}${args};
+}
new file mode 100644
@@ -0,0 +1,37 @@
+# Expect driver script for GCC Regression Tests
+# Copyright (C) 2023 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# This file was written by Gaius Mulley (gaiusmod2@gmail.com)
+# for GNU Modula-2.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+# load support procs
+load_lib gm2-torture.exp
+
+gm2_init_min "${srcdir}/gm2/min/pass"
+
+foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+ if ![runtest_file_p $runtests $testcase] then {
+ continue
+ }
+
+ gm2-torture $testcase
+}
new file mode 100644
@@ -0,0 +1,7 @@
+MODULE tiny ;
+
+(* Does nothing at all, but it should link if -flibs=min is used. *)
+
+BEGIN
+
+END tiny.