Skip to content

Commit

Permalink
Add missing declarations to gcc/m2/gm2-libs-min/M2RTS.def
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Gaius Mulley authored and ouuleilei-bot committed Jan 5, 2023
1 parent 238e292 commit 0f2bbcb
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 0 deletions.
4 changes: 4 additions & 0 deletions gcc/m2/gm2-libs-min/M2RTS.def
Original file line number Diff line number Diff line change
Expand Up @@ -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) ;
Expand Down
37 changes: 37 additions & 0 deletions gcc/testsuite/gm2/link/min/pass/link-min-pass.exp
Original file line number Diff line number Diff line change
@@ -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
}
7 changes: 7 additions & 0 deletions gcc/testsuite/gm2/link/min/pass/tiny.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
MODULE tiny ;

(* Does nothing at all, but it should link if -flibs=min is used. *)

BEGIN

END tiny.
39 changes: 39 additions & 0 deletions gcc/testsuite/lib/gm2.exp
Original file line number Diff line number Diff line change
Expand Up @@ -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};
}

0 comments on commit 0f2bbcb

Please sign in to comment.