diff options
author | Gaius Mulley <gaiusmod2@gmail.com> | 2023-01-05 14:13:43 +0000 |
---|---|---|
committer | Gaius Mulley <gaiusmod2@gmail.com> | 2023-01-05 14:13:43 +0000 |
commit | a24888388bab339cf8a8726ca67a0b4947a2d9ce (patch) | |
tree | c53284daa55670030eff5d543c87d56f84103a50 | |
parent | dd77b04999534f61825cc810a5bc428707b8106b (diff) | |
download | gcc-a24888388bab339cf8a8726ca67a0b4947a2d9ce.zip gcc-a24888388bab339cf8a8726ca67a0b4947a2d9ce.tar.gz gcc-a24888388bab339cf8a8726ca67a0b4947a2d9ce.tar.bz2 |
Add missing declarations to gcc/m2/gm2-libs-min/M2RTS.{def,mod}
This patch adds two missing procedures to
gcc/m2/gm2-libs-min/M2RTS.{def,mod} required for linking. 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.
* gm2-libs-min/M2RTS.mod (ConstructModules): New procedure
dummy implementation.
(DeconstructModules): New procedure dummy implementation.
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.
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
-rw-r--r-- | gcc/m2/gm2-libs-min/M2RTS.def | 4 | ||||
-rw-r--r-- | gcc/m2/gm2-libs-min/M2RTS.mod | 12 | ||||
-rw-r--r-- | gcc/testsuite/gm2/link/min/pass/link-min-pass.exp | 37 | ||||
-rw-r--r-- | gcc/testsuite/gm2/link/min/pass/tiny.mod | 7 | ||||
-rw-r--r-- | gcc/testsuite/lib/gm2.exp | 39 |
5 files changed, 99 insertions, 0 deletions
diff --git a/gcc/m2/gm2-libs-min/M2RTS.def b/gcc/m2/gm2-libs-min/M2RTS.def index e3e13b7..147024e 100644 --- a/gcc/m2/gm2-libs-min/M2RTS.def +++ b/gcc/m2/gm2-libs-min/M2RTS.def @@ -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) ; diff --git a/gcc/m2/gm2-libs-min/M2RTS.mod b/gcc/m2/gm2-libs-min/M2RTS.mod index 643156d..8400567 100644 --- a/gcc/m2/gm2-libs-min/M2RTS.mod +++ b/gcc/m2/gm2-libs-min/M2RTS.mod @@ -30,6 +30,18 @@ IMPORT libc, SYSTEM ; (* we reference these to ensure they are dragged in to the link *) +PROCEDURE ConstructModules (applicationmodule: ADDRESS; + argc: INTEGER; argv, envp: ADDRESS) ; +BEGIN +END ConstructModules ; + + +PROCEDURE DeconstructModules (applicationmodule: ADDRESS; + argc: INTEGER; argv, envp: ADDRESS) ; +BEGIN +END DeconstructModules ; + + (* all these procedures do nothing except satisfy the linker. *) PROCEDURE ExecuteTerminationProcedures ; diff --git a/gcc/testsuite/gm2/link/min/pass/link-min-pass.exp b/gcc/testsuite/gm2/link/min/pass/link-min-pass.exp new file mode 100644 index 0000000..6a6051f --- /dev/null +++ b/gcc/testsuite/gm2/link/min/pass/link-min-pass.exp @@ -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 +} diff --git a/gcc/testsuite/gm2/link/min/pass/tiny.mod b/gcc/testsuite/gm2/link/min/pass/tiny.mod new file mode 100644 index 0000000..e1165ed --- /dev/null +++ b/gcc/testsuite/gm2/link/min/pass/tiny.mod @@ -0,0 +1,7 @@ +MODULE tiny ; + +(* Does nothing at all, but it should link if -flibs=min is used. *) + +BEGIN + +END tiny. diff --git a/gcc/testsuite/lib/gm2.exp b/gcc/testsuite/lib/gm2.exp index 450cb4c..9eba195 100644 --- a/gcc/testsuite/lib/gm2.exp +++ b/gcc/testsuite/lib/gm2.exp @@ -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}; +} |