diff options
author | Gaius Mulley <gaiusmod2@gmail.com> | 2022-12-14 17:43:08 +0000 |
---|---|---|
committer | Gaius Mulley <gaiusmod2@gmail.com> | 2022-12-14 17:43:08 +0000 |
commit | 1eee94d351774cdc2efc8ee508b82d065184c6ee (patch) | |
tree | 237a87ca1205432f65e556fd900b39d3d5530ff2 /libgm2/libm2pim | |
parent | 330b9a8d87dd73e10539da618496ad4964fee26d (diff) | |
download | gcc-1eee94d351774cdc2efc8ee508b82d065184c6ee.zip gcc-1eee94d351774cdc2efc8ee508b82d065184c6ee.tar.gz gcc-1eee94d351774cdc2efc8ee508b82d065184c6ee.tar.bz2 |
Merge modula-2 front end onto gcc.
This commit merges the devel/modula2 into master.
The libraries reside in libgm2, the compiler in gcc/m2
and the testsuite in gcc/testsuite/gm2.
ChangeLog:
* configure.ac (target_libraries): Add target-libgm2.
Add NCN_STRICT_CHECK_TARGET_TOOLS entry for gm2.
Add GCC_TARGET_TOOL entry for gm2. (compare_exclusions)
add gcc/m2/gm2-compiler/M2Version,
gcc/m2/gm2-compiler-boot/SYSTEM and gcc/m2/gm2version.
* Makefile.def (target_modules): Add libgm2. (flags_to_pass)
Add GM2_FOR_TARGET, GM2FLAGS_FOR_TARGET. (dependencies) Add
all-target-libgm2 and on=all-target-libatomic. (languages)
Add entry for language=m2 with gcc-check-target=check-m2
and lib-check-target=check-target-libgm2.
* Makefile.tpl (BUILD_EXPORTS): Add definition for GM2
and GM2FLAGS. (HOST_EXPORTS) Add definition for GM2.
(BASE_TARGET_EXPORTS) Add definition for GM2.
(GM2_FOR_BUILD) Defined. (GM2FLAGS) Defined.
(GM2_FOR_TARGET) Defined. (GM2FLAGS_FOR_TARGET) Defined.
(EXTRA_HOST_FLAGS) Defined. (POSTSTAGE1_FLAGS_TO_PASS)
Add GM2 and GM2_FOR_BUILD. (EXTRA_TARGET_FLAGS) Add
GM2 and GM2FLAGS. (EXTRA_GCC_FLAGS) Add GM2_FOR_TARGET.
* configure: (Rebuilt).
* Makefile.in: (Rebuilt).
libgm2/ChangeLog:
* Makefile.am: (New file).
* autogen.sh: (New file).
* config.h.in: (New file).
* configure.ac: (New file).
* libm2cor/KeyBoardLEDs.cc: (New file).
* libm2cor/Makefile.am: (New file).
* libm2iso/ChanConsts.h: (New file).
* libm2iso/ErrnoCategory.cc: (New file).
* libm2iso/Makefile.am: (New file).
* libm2iso/RTco.cc: (New file).
* libm2iso/m2rts.h: (New file).
* libm2iso/wrapsock.c: (New file).
* libm2iso/wraptime.c: (New file).
* libm2log/Break.c: (New file).
* libm2log/Makefile.am: (New file).
* libm2min/Makefile.am: (New file).
* libm2min/libc.c: (New file).
* libm2pim/Makefile.am: (New file).
* libm2pim/Selective.cc: (New file).
* libm2pim/SysExceptions.cc: (New file).
* libm2pim/UnixArgs.cc: (New file).
* libm2pim/cgetopt.cc: (New file).
* libm2pim/dtoa.cc: (New file).
* libm2pim/errno.cc: (New file).
* libm2pim/ldtoa.cc: (New file).
* libm2pim/sckt.cc: (New file).
* libm2pim/target.c: (New file).
* libm2pim/termios.cc: (New file).
* libm2pim/wrapc.c: (New file).
* configure: (Rebuilt).
* libm2log/Makefile.in: (Rebuilt).
* libm2min/Makefile.in: (Rebuilt).
* libm2cor/Makefile.in: (Rebuilt).
* libm2pim/Makefile.in: (Rebuilt).
* libm2iso/Makefile.in: (Rebuilt).
gcc/ChangeLog:
* configure.ac (HAVE_PYTHON): Test for Python3 added.
* dwarf2out.cc (gen_compile_unit_die): Check language_string
and language to DW_LANG_Modula2.
* doc/install.texi: Add m2 as a language. (--disable-libgm2)
Documented. Add make check-m2 to testing selected tests.
* doc/sourcebuild.texi (GM2): New prerequisite item.
(Python3 modules) New item. (libgm2) Added.
(gcc/m2) Added.
* configure: (Rebuilt).
* config.in: (Rebuilt).
gcc/m2/ChangeLog:
* COPYING.FDL: (New file).
* COPYING.RUNTIME: (New file).
* COPYING3: (New file).
* COPYING3.LIB: (New file).
* Make-lang.in: (New file).
* Make-maintainer.in: (New file).
* NEWS: (New file).
* README: (New file).
* config-lang.in: (New file).
* config-make.in: (New file).
* configure.ac: (New file).
* gm2-compiler/CLexBuf.def: (New file).
* gm2-compiler/CLexBuf.mod: (New file).
* gm2-compiler/FifoQueue.def: (New file).
* gm2-compiler/FifoQueue.mod: (New file).
* gm2-compiler/Lists.def: (New file).
* gm2-compiler/Lists.mod: (New file).
* gm2-compiler/M2ALU.def: (New file).
* gm2-compiler/M2ALU.mod: (New file).
* gm2-compiler/M2AsmUtil.def: (New file).
* gm2-compiler/M2AsmUtil.mod: (New file).
* gm2-compiler/M2Base.def: (New file).
* gm2-compiler/M2Base.mod: (New file).
* gm2-compiler/M2BasicBlock.def: (New file).
* gm2-compiler/M2BasicBlock.mod: (New file).
* gm2-compiler/M2Batch.def: (New file).
* gm2-compiler/M2Batch.mod: (New file).
* gm2-compiler/M2Bitset.def: (New file).
* gm2-compiler/M2Bitset.mod: (New file).
* gm2-compiler/M2CaseList.def: (New file).
* gm2-compiler/M2CaseList.mod: (New file).
* gm2-compiler/M2Check.def: (New file).
* gm2-compiler/M2Check.mod: (New file).
* gm2-compiler/M2Code.def: (New file).
* gm2-compiler/M2Code.mod: (New file).
* gm2-compiler/M2ColorString.def: (New file).
* gm2-compiler/M2ColorString.mod: (New file).
* gm2-compiler/M2Comp.def: (New file).
* gm2-compiler/M2Comp.mod: (New file).
* gm2-compiler/M2Const.def: (New file).
* gm2-compiler/M2Const.mod: (New file).
* gm2-compiler/M2Debug.def: (New file).
* gm2-compiler/M2Debug.mod: (New file).
* gm2-compiler/M2DebugStack.def: (New file).
* gm2-compiler/M2DebugStack.mod: (New file).
* gm2-compiler/M2Defaults.def: (New file).
* gm2-compiler/M2Defaults.mod: (New file).
* gm2-compiler/M2DriverOptions.def: (New file).
* gm2-compiler/M2DriverOptions.mod: (New file).
* gm2-compiler/M2Emit.def: (New file).
* gm2-compiler/M2Emit.mod: (New file).
* gm2-compiler/M2Error.def: (New file).
* gm2-compiler/M2Error.mod: (New file).
* gm2-compiler/M2EvalSym.def: (New file).
* gm2-compiler/M2FileName.def: (New file).
* gm2-compiler/M2FileName.mod: (New file).
* gm2-compiler/M2GCCDeclare.def: (New file).
* gm2-compiler/M2GCCDeclare.mod: (New file).
* gm2-compiler/M2GenGCC.def: (New file).
* gm2-compiler/M2GenGCC.mod: (New file).
* gm2-compiler/M2Graph.def: (New file).
* gm2-compiler/M2Graph.mod: (New file).
* gm2-compiler/M2Lex.def: (New file).
* gm2-compiler/M2Lex.mod: (New file).
* gm2-compiler/M2LexBuf.def: (New file).
* gm2-compiler/M2LexBuf.mod: (New file).
* gm2-compiler/M2MetaError.def: (New file).
* gm2-compiler/M2MetaError.mod: (New file).
* gm2-compiler/M2Optimize.def: (New file).
* gm2-compiler/M2Optimize.mod: (New file).
* gm2-compiler/M2Options.def: (New file).
* gm2-compiler/M2Options.mod: (New file).
* gm2-compiler/M2Pass.def: (New file).
* gm2-compiler/M2Pass.mod: (New file).
* gm2-compiler/M2Preprocess.def: (New file).
* gm2-compiler/M2Preprocess.mod: (New file).
* gm2-compiler/M2Printf.def: (New file).
* gm2-compiler/M2Printf.mod: (New file).
* gm2-compiler/M2Quads.def: (New file).
* gm2-compiler/M2Quads.mod: (New file).
* gm2-compiler/M2Quiet.def: (New file).
* gm2-compiler/M2Quiet.mod: (New file).
* gm2-compiler/M2Range.def: (New file).
* gm2-compiler/M2Range.mod: (New file).
* gm2-compiler/M2Reserved.def: (New file).
* gm2-compiler/M2Reserved.mod: (New file).
* gm2-compiler/M2SSA.def: (New file).
* gm2-compiler/M2SSA.mod: (New file).
* gm2-compiler/M2Scaffold.def: (New file).
* gm2-compiler/M2Scaffold.mod: (New file).
* gm2-compiler/M2Scope.def: (New file).
* gm2-compiler/M2Scope.mod: (New file).
* gm2-compiler/M2Search.def: (New file).
* gm2-compiler/M2Search.mod: (New file).
* gm2-compiler/M2Size.def: (New file).
* gm2-compiler/M2Size.mod: (New file).
* gm2-compiler/M2StackAddress.def: (New file).
* gm2-compiler/M2StackAddress.mod: (New file).
* gm2-compiler/M2StackWord.def: (New file).
* gm2-compiler/M2StackWord.mod: (New file).
* gm2-compiler/M2Students.def: (New file).
* gm2-compiler/M2Students.mod: (New file).
* gm2-compiler/M2Swig.def: (New file).
* gm2-compiler/M2Swig.mod: (New file).
* gm2-compiler/M2System.def: (New file).
* gm2-compiler/M2System.mod: (New file).
* gm2-compiler/M2Version.def: (New file).
* gm2-compiler/NameKey.def: (New file).
* gm2-compiler/NameKey.mod: (New file).
* gm2-compiler/ObjectFiles.def: (New file).
* gm2-compiler/ObjectFiles.mod: (New file).
* gm2-compiler/Output.def: (New file).
* gm2-compiler/Output.mod: (New file).
* gm2-compiler/P0SymBuild.def: (New file).
* gm2-compiler/P0SymBuild.mod: (New file).
* gm2-compiler/P0SyntaxCheck.bnf: (New file).
* gm2-compiler/P0SyntaxCheck.def: (New file).
* gm2-compiler/P1Build.bnf: (New file).
* gm2-compiler/P1Build.def: (New file).
* gm2-compiler/P1SymBuild.def: (New file).
* gm2-compiler/P1SymBuild.mod: (New file).
* gm2-compiler/P2Build.bnf: (New file).
* gm2-compiler/P2Build.def: (New file).
* gm2-compiler/P2SymBuild.def: (New file).
* gm2-compiler/P2SymBuild.mod: (New file).
* gm2-compiler/P3Build.bnf: (New file).
* gm2-compiler/P3Build.def: (New file).
* gm2-compiler/P3SymBuild.def: (New file).
* gm2-compiler/P3SymBuild.mod: (New file).
* gm2-compiler/PCBuild.bnf: (New file).
* gm2-compiler/PCBuild.def: (New file).
* gm2-compiler/PCSymBuild.def: (New file).
* gm2-compiler/PCSymBuild.mod: (New file).
* gm2-compiler/PHBuild.bnf: (New file).
* gm2-compiler/PHBuild.def: (New file).
* gm2-compiler/README: (New file).
* gm2-compiler/Sets.def: (New file).
* gm2-compiler/Sets.mod: (New file).
* gm2-compiler/SymbolConversion.def: (New file).
* gm2-compiler/SymbolConversion.mod: (New file).
* gm2-compiler/SymbolKey.def: (New file).
* gm2-compiler/SymbolKey.mod: (New file).
* gm2-compiler/SymbolTable.def: (New file).
* gm2-compiler/SymbolTable.mod: (New file).
* gm2-compiler/bnflex.def: (New file).
* gm2-compiler/bnflex.mod: (New file).
* gm2-compiler/cflex.def: (New file).
* gm2-compiler/gm2.mod: (New file).
* gm2-compiler/gm2lcc.mod: (New file).
* gm2-compiler/gm2lgen.mod: (New file).
* gm2-compiler/gm2lorder.mod: (New file).
* gm2-compiler/m2flex.def: (New file).
* gm2-compiler/ppg.mod: (New file).
* gm2-gcc/README: (New file).
* gm2-gcc/dynamicstrings.h: (New file).
* gm2-gcc/gcc-consolidation.h: (New file).
* gm2-gcc/init.cc: (New file).
* gm2-gcc/init.def: (New file).
* gm2-gcc/init.h: (New file).
* gm2-gcc/m2assert.cc: (New file).
* gm2-gcc/m2assert.h: (New file).
* gm2-gcc/m2block.cc: (New file).
* gm2-gcc/m2block.def: (New file).
* gm2-gcc/m2block.h: (New file).
* gm2-gcc/m2builtins.cc: (New file).
* gm2-gcc/m2builtins.def: (New file).
* gm2-gcc/m2builtins.h: (New file).
* gm2-gcc/m2color.cc: (New file).
* gm2-gcc/m2color.def: (New file).
* gm2-gcc/m2color.h: (New file).
* gm2-gcc/m2configure.cc: (New file).
* gm2-gcc/m2configure.def: (New file).
* gm2-gcc/m2configure.h: (New file).
* gm2-gcc/m2convert.cc: (New file).
* gm2-gcc/m2convert.def: (New file).
* gm2-gcc/m2convert.h: (New file).
* gm2-gcc/m2decl.cc: (New file).
* gm2-gcc/m2decl.def: (New file).
* gm2-gcc/m2decl.h: (New file).
* gm2-gcc/m2except.cc: (New file).
* gm2-gcc/m2except.def: (New file).
* gm2-gcc/m2except.h: (New file).
* gm2-gcc/m2expr.cc: (New file).
* gm2-gcc/m2expr.def: (New file).
* gm2-gcc/m2expr.h: (New file).
* gm2-gcc/m2linemap.cc: (New file).
* gm2-gcc/m2linemap.def: (New file).
* gm2-gcc/m2linemap.h: (New file).
* gm2-gcc/m2misc.cc: (New file).
* gm2-gcc/m2misc.def: (New file).
* gm2-gcc/m2misc.h: (New file).
* gm2-gcc/m2options.h: (New file).
* gm2-gcc/m2range.h: (New file).
* gm2-gcc/m2search.h: (New file).
* gm2-gcc/m2statement.cc: (New file).
* gm2-gcc/m2statement.def: (New file).
* gm2-gcc/m2statement.h: (New file).
* gm2-gcc/m2top.cc: (New file).
* gm2-gcc/m2top.def: (New file).
* gm2-gcc/m2top.h: (New file).
* gm2-gcc/m2tree.cc: (New file).
* gm2-gcc/m2tree.def: (New file).
* gm2-gcc/m2tree.h: (New file).
* gm2-gcc/m2treelib.cc: (New file).
* gm2-gcc/m2treelib.def: (New file).
* gm2-gcc/m2treelib.h: (New file).
* gm2-gcc/m2type.cc: (New file).
* gm2-gcc/m2type.def: (New file).
* gm2-gcc/m2type.h: (New file).
* gm2-gcc/rtegraph.cc: (New file).
* gm2-gcc/rtegraph.h: (New file).
* gm2-ici/M2Emit.mod: (New file).
* gm2-ici/README: (New file).
* gm2-ici/m2linemap.c: (New file).
* gm2-internals.texi: (New file).
* gm2-lang.cc: (New file).
* gm2-lang.h: (New file).
* gm2-libiberty/README: (New file).
* gm2-libiberty/choosetemp.def: (New file).
* gm2-libiberty/pexecute.def: (New file).
* gm2-libs-ch/M2LINK.c: (New file).
* gm2-libs-ch/README: (New file).
* gm2-libs-ch/RTcodummy.c: (New file).
* gm2-libs-ch/RTintdummy.c: (New file).
* gm2-libs-ch/Selective.c: (New file).
* gm2-libs-ch/SysExceptions.c: (New file).
* gm2-libs-ch/UnixArgs.cc: (New file).
* gm2-libs-ch/cgetopt.c: (New file).
* gm2-libs-ch/choosetemp.c: (New file).
* gm2-libs-ch/dtoa.cc: (New file).
* gm2-libs-ch/errno.c: (New file).
* gm2-libs-ch/host.c: (New file).
* gm2-libs-ch/ldtoa.cc: (New file).
* gm2-libs-ch/m2rts.h: (New file).
* gm2-libs-ch/termios.c: (New file).
* gm2-libs-ch/tools.c: (New file).
* gm2-libs-ch/wrapc.c: (New file).
* gm2-libs-ch/xlibc.c: (New file).
* gm2-libs-coroutines/Debug.def: (New file).
* gm2-libs-coroutines/Debug.mod: (New file).
* gm2-libs-coroutines/Executive.def: (New file).
* gm2-libs-coroutines/Executive.mod: (New file).
* gm2-libs-coroutines/KeyBoardLEDs.def: (New file).
* gm2-libs-coroutines/README.texi: (New file).
* gm2-libs-coroutines/SYSTEM.def: (New file).
* gm2-libs-coroutines/SYSTEM.mod: (New file).
* gm2-libs-coroutines/TimerHandler.def: (New file).
* gm2-libs-coroutines/TimerHandler.mod: (New file).
* gm2-libs-iso/COROUTINES.def: (New file).
* gm2-libs-iso/COROUTINES.mod: (New file).
* gm2-libs-iso/ChanConsts.def: (New file).
* gm2-libs-iso/ChanConsts.h: (New file).
* gm2-libs-iso/ChanConsts.mod: (New file).
* gm2-libs-iso/CharClass.def: (New file).
* gm2-libs-iso/CharClass.mod: (New file).
* gm2-libs-iso/ClientSocket.def: (New file).
* gm2-libs-iso/ClientSocket.mod: (New file).
* gm2-libs-iso/ComplexMath.def: (New file).
* gm2-libs-iso/ComplexMath.mod: (New file).
* gm2-libs-iso/ConvStringLong.def: (New file).
* gm2-libs-iso/ConvStringLong.mod: (New file).
* gm2-libs-iso/ConvStringReal.def: (New file).
* gm2-libs-iso/ConvStringReal.mod: (New file).
* gm2-libs-iso/ConvTypes.def: (New file).
* gm2-libs-iso/ConvTypes.mod: (New file).
* gm2-libs-iso/EXCEPTIONS.def: (New file).
* gm2-libs-iso/EXCEPTIONS.mod: (New file).
* gm2-libs-iso/ErrnoCategory.def: (New file).
* gm2-libs-iso/GeneralUserExceptions.def: (New file).
* gm2-libs-iso/GeneralUserExceptions.mod: (New file).
* gm2-libs-iso/IOChan.def: (New file).
* gm2-libs-iso/IOChan.mod: (New file).
* gm2-libs-iso/IOConsts.def: (New file).
* gm2-libs-iso/IOConsts.mod: (New file).
* gm2-libs-iso/IOLink.def: (New file).
* gm2-libs-iso/IOLink.mod: (New file).
* gm2-libs-iso/IOResult.def: (New file).
* gm2-libs-iso/IOResult.mod: (New file).
* gm2-libs-iso/LongComplexMath.def: (New file).
* gm2-libs-iso/LongComplexMath.mod: (New file).
* gm2-libs-iso/LongConv.def: (New file).
* gm2-libs-iso/LongConv.mod: (New file).
* gm2-libs-iso/LongIO.def: (New file).
* gm2-libs-iso/LongIO.mod: (New file).
* gm2-libs-iso/LongMath.def: (New file).
* gm2-libs-iso/LongMath.mod: (New file).
* gm2-libs-iso/LongStr.def: (New file).
* gm2-libs-iso/LongStr.mod: (New file).
* gm2-libs-iso/LongWholeIO.def: (New file).
* gm2-libs-iso/LongWholeIO.mod: (New file).
* gm2-libs-iso/LowLong.def: (New file).
* gm2-libs-iso/LowLong.mod: (New file).
* gm2-libs-iso/LowReal.def: (New file).
* gm2-libs-iso/LowReal.mod: (New file).
* gm2-libs-iso/LowShort.def: (New file).
* gm2-libs-iso/LowShort.mod: (New file).
* gm2-libs-iso/M2EXCEPTION.def: (New file).
* gm2-libs-iso/M2EXCEPTION.mod: (New file).
* gm2-libs-iso/M2RTS.def: (New file).
* gm2-libs-iso/M2RTS.mod: (New file).
* gm2-libs-iso/MemStream.def: (New file).
* gm2-libs-iso/MemStream.mod: (New file).
* gm2-libs-iso/Preemptive.def: (New file).
* gm2-libs-iso/Preemptive.mod: (New file).
* gm2-libs-iso/Processes.def: (New file).
* gm2-libs-iso/Processes.mod: (New file).
* gm2-libs-iso/ProgramArgs.def: (New file).
* gm2-libs-iso/ProgramArgs.mod: (New file).
* gm2-libs-iso/README.texi: (New file).
* gm2-libs-iso/RTco.def: (New file).
* gm2-libs-iso/RTdata.def: (New file).
* gm2-libs-iso/RTdata.mod: (New file).
* gm2-libs-iso/RTentity.def: (New file).
* gm2-libs-iso/RTentity.mod: (New file).
* gm2-libs-iso/RTfio.def: (New file).
* gm2-libs-iso/RTfio.mod: (New file).
* gm2-libs-iso/RTgen.def: (New file).
* gm2-libs-iso/RTgen.mod: (New file).
* gm2-libs-iso/RTgenif.def: (New file).
* gm2-libs-iso/RTgenif.mod: (New file).
* gm2-libs-iso/RTio.def: (New file).
* gm2-libs-iso/RTio.mod: (New file).
* gm2-libs-iso/RandomNumber.def: (New file).
* gm2-libs-iso/RandomNumber.mod: (New file).
* gm2-libs-iso/RawIO.def: (New file).
* gm2-libs-iso/RawIO.mod: (New file).
* gm2-libs-iso/RealConv.def: (New file).
* gm2-libs-iso/RealConv.mod: (New file).
* gm2-libs-iso/RealIO.def: (New file).
* gm2-libs-iso/RealIO.mod: (New file).
* gm2-libs-iso/RealMath.def: (New file).
* gm2-libs-iso/RealMath.mod: (New file).
* gm2-libs-iso/RealStr.def: (New file).
* gm2-libs-iso/RealStr.mod: (New file).
* gm2-libs-iso/RndFile.def: (New file).
* gm2-libs-iso/RndFile.mod: (New file).
* gm2-libs-iso/SIOResult.def: (New file).
* gm2-libs-iso/SIOResult.mod: (New file).
* gm2-libs-iso/SLongIO.def: (New file).
* gm2-libs-iso/SLongIO.mod: (New file).
* gm2-libs-iso/SLongWholeIO.def: (New file).
* gm2-libs-iso/SLongWholeIO.mod: (New file).
* gm2-libs-iso/SRawIO.def: (New file).
* gm2-libs-iso/SRawIO.mod: (New file).
* gm2-libs-iso/SRealIO.def: (New file).
* gm2-libs-iso/SRealIO.mod: (New file).
* gm2-libs-iso/SShortIO.def: (New file).
* gm2-libs-iso/SShortIO.mod: (New file).
* gm2-libs-iso/SShortWholeIO.def: (New file).
* gm2-libs-iso/SShortWholeIO.mod: (New file).
* gm2-libs-iso/STextIO.def: (New file).
* gm2-libs-iso/STextIO.mod: (New file).
* gm2-libs-iso/SWholeIO.def: (New file).
* gm2-libs-iso/SWholeIO.mod: (New file).
* gm2-libs-iso/SYSTEM.def: (New file).
* gm2-libs-iso/SYSTEM.mod: (New file).
* gm2-libs-iso/Semaphores.def: (New file).
* gm2-libs-iso/Semaphores.mod: (New file).
* gm2-libs-iso/SeqFile.def: (New file).
* gm2-libs-iso/SeqFile.mod: (New file).
* gm2-libs-iso/ShortComplexMath.def: (New file).
* gm2-libs-iso/ShortComplexMath.mod: (New file).
* gm2-libs-iso/ShortIO.def: (New file).
* gm2-libs-iso/ShortIO.mod: (New file).
* gm2-libs-iso/ShortWholeIO.def: (New file).
* gm2-libs-iso/ShortWholeIO.mod: (New file).
* gm2-libs-iso/SimpleCipher.def: (New file).
* gm2-libs-iso/SimpleCipher.mod: (New file).
* gm2-libs-iso/StdChans.def: (New file).
* gm2-libs-iso/StdChans.mod: (New file).
* gm2-libs-iso/Storage.def: (New file).
* gm2-libs-iso/Storage.mod: (New file).
* gm2-libs-iso/StreamFile.def: (New file).
* gm2-libs-iso/StreamFile.mod: (New file).
* gm2-libs-iso/StringChan.def: (New file).
* gm2-libs-iso/StringChan.mod: (New file).
* gm2-libs-iso/Strings.def: (New file).
* gm2-libs-iso/Strings.mod: (New file).
* gm2-libs-iso/SysClock.def: (New file).
* gm2-libs-iso/SysClock.mod: (New file).
* gm2-libs-iso/TERMINATION.def: (New file).
* gm2-libs-iso/TERMINATION.mod: (New file).
* gm2-libs-iso/TermFile.def: (New file).
* gm2-libs-iso/TermFile.mod: (New file).
* gm2-libs-iso/TextIO.def: (New file).
* gm2-libs-iso/TextIO.mod: (New file).
* gm2-libs-iso/WholeConv.def: (New file).
* gm2-libs-iso/WholeConv.mod: (New file).
* gm2-libs-iso/WholeIO.def: (New file).
* gm2-libs-iso/WholeIO.mod: (New file).
* gm2-libs-iso/WholeStr.def: (New file).
* gm2-libs-iso/WholeStr.mod: (New file).
* gm2-libs-iso/wrapsock.c: (New file).
* gm2-libs-iso/wrapsock.def: (New file).
* gm2-libs-iso/wraptime.c: (New file).
* gm2-libs-iso/wraptime.def: (New file).
* gm2-libs-min/M2RTS.def: (New file).
* gm2-libs-min/M2RTS.mod: (New file).
* gm2-libs-min/SYSTEM.def: (New file).
* gm2-libs-min/SYSTEM.mod: (New file).
* gm2-libs-min/libc.c: (New file).
* gm2-libs-min/libc.def: (New file).
* gm2-libs-pim/BitBlockOps.def: (New file).
* gm2-libs-pim/BitBlockOps.mod: (New file).
* gm2-libs-pim/BitByteOps.def: (New file).
* gm2-libs-pim/BitByteOps.mod: (New file).
* gm2-libs-pim/BitWordOps.def: (New file).
* gm2-libs-pim/BitWordOps.mod: (New file).
* gm2-libs-pim/BlockOps.def: (New file).
* gm2-libs-pim/BlockOps.mod: (New file).
* gm2-libs-pim/Break.c: (New file).
* gm2-libs-pim/Break.def: (New file).
* gm2-libs-pim/CardinalIO.def: (New file).
* gm2-libs-pim/CardinalIO.mod: (New file).
* gm2-libs-pim/Conversions.def: (New file).
* gm2-libs-pim/Conversions.mod: (New file).
* gm2-libs-pim/DebugPMD.def: (New file).
* gm2-libs-pim/DebugPMD.mod: (New file).
* gm2-libs-pim/DebugTrace.def: (New file).
* gm2-libs-pim/DebugTrace.mod: (New file).
* gm2-libs-pim/Delay.def: (New file).
* gm2-libs-pim/Delay.mod: (New file).
* gm2-libs-pim/Display.def: (New file).
* gm2-libs-pim/Display.mod: (New file).
* gm2-libs-pim/ErrorCode.def: (New file).
* gm2-libs-pim/ErrorCode.mod: (New file).
* gm2-libs-pim/FileSystem.def: (New file).
* gm2-libs-pim/FileSystem.mod: (New file).
* gm2-libs-pim/FloatingUtilities.def: (New file).
* gm2-libs-pim/FloatingUtilities.mod: (New file).
* gm2-libs-pim/InOut.def: (New file).
* gm2-libs-pim/InOut.mod: (New file).
* gm2-libs-pim/Keyboard.def: (New file).
* gm2-libs-pim/Keyboard.mod: (New file).
* gm2-libs-pim/LongIO.def: (New file).
* gm2-libs-pim/LongIO.mod: (New file).
* gm2-libs-pim/NumberConversion.def: (New file).
* gm2-libs-pim/NumberConversion.mod: (New file).
* gm2-libs-pim/README.texi: (New file).
* gm2-libs-pim/Random.def: (New file).
* gm2-libs-pim/Random.mod: (New file).
* gm2-libs-pim/RealConversions.def: (New file).
* gm2-libs-pim/RealConversions.mod: (New file).
* gm2-libs-pim/RealInOut.def: (New file).
* gm2-libs-pim/RealInOut.mod: (New file).
* gm2-libs-pim/Strings.def: (New file).
* gm2-libs-pim/Strings.mod: (New file).
* gm2-libs-pim/Termbase.def: (New file).
* gm2-libs-pim/Termbase.mod: (New file).
* gm2-libs-pim/Terminal.def: (New file).
* gm2-libs-pim/Terminal.mod: (New file).
* gm2-libs-pim/TimeDate.def: (New file).
* gm2-libs-pim/TimeDate.mod: (New file).
* gm2-libs/ASCII.def: (New file).
* gm2-libs/ASCII.mod: (New file).
* gm2-libs/Args.def: (New file).
* gm2-libs/Args.mod: (New file).
* gm2-libs/Assertion.def: (New file).
* gm2-libs/Assertion.mod: (New file).
* gm2-libs/Break.def: (New file).
* gm2-libs/Break.mod: (New file).
* gm2-libs/Builtins.def: (New file).
* gm2-libs/Builtins.mod: (New file).
* gm2-libs/COROUTINES.def: (New file).
* gm2-libs/COROUTINES.mod: (New file).
* gm2-libs/CmdArgs.def: (New file).
* gm2-libs/CmdArgs.mod: (New file).
* gm2-libs/Debug.def: (New file).
* gm2-libs/Debug.mod: (New file).
* gm2-libs/DynamicStrings.def: (New file).
* gm2-libs/DynamicStrings.mod: (New file).
* gm2-libs/Environment.def: (New file).
* gm2-libs/Environment.mod: (New file).
* gm2-libs/FIO.def: (New file).
* gm2-libs/FIO.mod: (New file).
* gm2-libs/FormatStrings.def: (New file).
* gm2-libs/FormatStrings.mod: (New file).
* gm2-libs/FpuIO.def: (New file).
* gm2-libs/FpuIO.mod: (New file).
* gm2-libs/GetOpt.def: (New file).
* gm2-libs/GetOpt.mod: (New file).
* gm2-libs/IO.def: (New file).
* gm2-libs/IO.mod: (New file).
* gm2-libs/Indexing.def: (New file).
* gm2-libs/Indexing.mod: (New file).
* gm2-libs/LMathLib0.def: (New file).
* gm2-libs/LMathLib0.mod: (New file).
* gm2-libs/LegacyReal.def: (New file).
* gm2-libs/LegacyReal.mod: (New file).
* gm2-libs/M2Dependent.def: (New file).
* gm2-libs/M2Dependent.mod: (New file).
* gm2-libs/M2EXCEPTION.def: (New file).
* gm2-libs/M2EXCEPTION.mod: (New file).
* gm2-libs/M2LINK.def: (New file).
* gm2-libs/M2RTS.def: (New file).
* gm2-libs/M2RTS.mod: (New file).
* gm2-libs/MathLib0.def: (New file).
* gm2-libs/MathLib0.mod: (New file).
* gm2-libs/MemUtils.def: (New file).
* gm2-libs/MemUtils.mod: (New file).
* gm2-libs/NumberIO.def: (New file).
* gm2-libs/NumberIO.mod: (New file).
* gm2-libs/OptLib.def: (New file).
* gm2-libs/OptLib.mod: (New file).
* gm2-libs/PushBackInput.def: (New file).
* gm2-libs/PushBackInput.mod: (New file).
* gm2-libs/README.texi: (New file).
* gm2-libs/RTExceptions.def: (New file).
* gm2-libs/RTExceptions.mod: (New file).
* gm2-libs/RTint.def: (New file).
* gm2-libs/RTint.mod: (New file).
* gm2-libs/SArgs.def: (New file).
* gm2-libs/SArgs.mod: (New file).
* gm2-libs/SCmdArgs.def: (New file).
* gm2-libs/SCmdArgs.mod: (New file).
* gm2-libs/SEnvironment.def: (New file).
* gm2-libs/SEnvironment.mod: (New file).
* gm2-libs/SFIO.def: (New file).
* gm2-libs/SFIO.mod: (New file).
* gm2-libs/SMathLib0.def: (New file).
* gm2-libs/SMathLib0.mod: (New file).
* gm2-libs/SYSTEM.def: (New file).
* gm2-libs/SYSTEM.mod: (New file).
* gm2-libs/Scan.def: (New file).
* gm2-libs/Scan.mod: (New file).
* gm2-libs/Selective.def: (New file).
* gm2-libs/StdIO.def: (New file).
* gm2-libs/StdIO.mod: (New file).
* gm2-libs/Storage.def: (New file).
* gm2-libs/Storage.mod: (New file).
* gm2-libs/StrCase.def: (New file).
* gm2-libs/StrCase.mod: (New file).
* gm2-libs/StrIO.def: (New file).
* gm2-libs/StrIO.mod: (New file).
* gm2-libs/StrLib.def: (New file).
* gm2-libs/StrLib.mod: (New file).
* gm2-libs/StringConvert.def: (New file).
* gm2-libs/StringConvert.mod: (New file).
* gm2-libs/SysExceptions.def: (New file).
* gm2-libs/SysStorage.def: (New file).
* gm2-libs/SysStorage.mod: (New file).
* gm2-libs/TimeString.def: (New file).
* gm2-libs/TimeString.mod: (New file).
* gm2-libs/UnixArgs.def: (New file).
* gm2-libs/cbuiltin.def: (New file).
* gm2-libs/cgetopt.def: (New file).
* gm2-libs/config-host: (New file).
* gm2-libs/config-host.in: (New file).
* gm2-libs/cxxabi.def: (New file).
* gm2-libs/dtoa.def: (New file).
* gm2-libs/errno.def: (New file).
* gm2-libs/gdbif.def: (New file).
* gm2-libs/gdbif.mod: (New file).
* gm2-libs/gm2-libs-host.h.in: (New file).
* gm2-libs/ldtoa.def: (New file).
* gm2-libs/libc.def: (New file).
* gm2-libs/libm.def: (New file).
* gm2-libs/sckt.def: (New file).
* gm2-libs/termios.def: (New file).
* gm2-libs/wrapc.def: (New file).
* gm2config.h.in: (New file).
* gm2spec.cc: (New file).
* gm2version.h: (New file).
* init/README: (New file).
* init/mcinit: (New file).
* init/ppginit: (New file).
* lang-specs.h: (New file).
* lang.opt: (New file).
* m2-tree.def: (New file).
* m2-tree.h: (New file).
* m2.flex: (New file).
* m2pp.cc: (New file).
* m2pp.h: (New file).
* mc-boot-ch/GBuiltins.c: (New file).
* mc-boot-ch/GM2LINK.c: (New file).
* mc-boot-ch/GRTco.c: (New file).
* mc-boot-ch/GSYSTEM.c: (New file).
* mc-boot-ch/GSelective.c: (New file).
* mc-boot-ch/GSysExceptions.c: (New file).
* mc-boot-ch/GUnixArgs.cc: (New file).
* mc-boot-ch/Gabort.c: (New file).
* mc-boot-ch/Gcbuiltin.c: (New file).
* mc-boot-ch/Gdtoa.c: (New file).
* mc-boot-ch/Gerrno.c: (New file).
* mc-boot-ch/Gldtoa.c: (New file).
* mc-boot-ch/Glibc.c: (New file).
* mc-boot-ch/Glibm.c: (New file).
* mc-boot-ch/Gmcrts.c: (New file).
* mc-boot-ch/Gmcrts.h: (New file).
* mc-boot-ch/Gnetwork.h: (New file).
* mc-boot-ch/Gtermios.cc: (New file).
* mc-boot-ch/Gwrapc.c: (New file).
* mc-boot-ch/README: (New file).
* mc-boot-ch/m2rts.h: (New file).
* mc-boot-ch/network.c: (New file).
* mc-boot/GASCII.c: (New file).
* mc-boot/GASCII.h: (New file).
* mc-boot/GArgs.c: (New file).
* mc-boot/GArgs.h: (New file).
* mc-boot/GAssertion.c: (New file).
* mc-boot/GAssertion.h: (New file).
* mc-boot/GBreak.c: (New file).
* mc-boot/GBreak.h: (New file).
* mc-boot/GCOROUTINES.h: (New file).
* mc-boot/GCmdArgs.c: (New file).
* mc-boot/GCmdArgs.h: (New file).
* mc-boot/GDebug.c: (New file).
* mc-boot/GDebug.h: (New file).
* mc-boot/GDynamicStrings.c: (New file).
* mc-boot/GDynamicStrings.h: (New file).
* mc-boot/GEnvironment.c: (New file).
* mc-boot/GEnvironment.h: (New file).
* mc-boot/GFIO.c: (New file).
* mc-boot/GFIO.h: (New file).
* mc-boot/GFormatStrings.c: (New file).
* mc-boot/GFormatStrings.h: (New file).
* mc-boot/GFpuIO.c: (New file).
* mc-boot/GFpuIO.h: (New file).
* mc-boot/GIO.c: (New file).
* mc-boot/GIO.h: (New file).
* mc-boot/GIndexing.c: (New file).
* mc-boot/GIndexing.h: (New file).
* mc-boot/GM2Dependent.c: (New file).
* mc-boot/GM2Dependent.h: (New file).
* mc-boot/GM2EXCEPTION.c: (New file).
* mc-boot/GM2EXCEPTION.h: (New file).
* mc-boot/GM2LINK.h: (New file).
* mc-boot/GM2RTS.c: (New file).
* mc-boot/GM2RTS.h: (New file).
* mc-boot/GMemUtils.c: (New file).
* mc-boot/GMemUtils.h: (New file).
* mc-boot/GNumberIO.c: (New file).
* mc-boot/GNumberIO.h: (New file).
* mc-boot/GPushBackInput.c: (New file).
* mc-boot/GPushBackInput.h: (New file).
* mc-boot/GRTExceptions.c: (New file).
* mc-boot/GRTExceptions.h: (New file).
* mc-boot/GRTco.h: (New file).
* mc-boot/GRTint.c: (New file).
* mc-boot/GRTint.h: (New file).
* mc-boot/GSArgs.c: (New file).
* mc-boot/GSArgs.h: (New file).
* mc-boot/GSFIO.c: (New file).
* mc-boot/GSFIO.h: (New file).
* mc-boot/GSYSTEM.h: (New file).
* mc-boot/GSelective.h: (New file).
* mc-boot/GStdIO.c: (New file).
* mc-boot/GStdIO.h: (New file).
* mc-boot/GStorage.c: (New file).
* mc-boot/GStorage.h: (New file).
* mc-boot/GStrCase.c: (New file).
* mc-boot/GStrCase.h: (New file).
* mc-boot/GStrIO.c: (New file).
* mc-boot/GStrIO.h: (New file).
* mc-boot/GStrLib.c: (New file).
* mc-boot/GStrLib.h: (New file).
* mc-boot/GStringConvert.c: (New file).
* mc-boot/GStringConvert.h: (New file).
* mc-boot/GSysExceptions.h: (New file).
* mc-boot/GSysStorage.c: (New file).
* mc-boot/GSysStorage.h: (New file).
* mc-boot/GTimeString.c: (New file).
* mc-boot/GTimeString.h: (New file).
* mc-boot/GUnixArgs.h: (New file).
* mc-boot/Galists.c: (New file).
* mc-boot/Galists.h: (New file).
* mc-boot/Gdecl.c: (New file).
* mc-boot/Gdecl.h: (New file).
* mc-boot/Gdtoa.h: (New file).
* mc-boot/Gerrno.h: (New file).
* mc-boot/Gkeyc.c: (New file).
* mc-boot/Gkeyc.h: (New file).
* mc-boot/Gldtoa.h: (New file).
* mc-boot/Glibc.h: (New file).
* mc-boot/Glibm.h: (New file).
* mc-boot/Glists.c: (New file).
* mc-boot/Glists.h: (New file).
* mc-boot/GmcComment.c: (New file).
* mc-boot/GmcComment.h: (New file).
* mc-boot/GmcComp.c: (New file).
* mc-boot/GmcComp.h: (New file).
* mc-boot/GmcDebug.c: (New file).
* mc-boot/GmcDebug.h: (New file).
* mc-boot/GmcError.c: (New file).
* mc-boot/GmcError.h: (New file).
* mc-boot/GmcFileName.c: (New file).
* mc-boot/GmcFileName.h: (New file).
* mc-boot/GmcLexBuf.c: (New file).
* mc-boot/GmcLexBuf.h: (New file).
* mc-boot/GmcMetaError.c: (New file).
* mc-boot/GmcMetaError.h: (New file).
* mc-boot/GmcOptions.c: (New file).
* mc-boot/GmcOptions.h: (New file).
* mc-boot/GmcPreprocess.c: (New file).
* mc-boot/GmcPreprocess.h: (New file).
* mc-boot/GmcPretty.c: (New file).
* mc-boot/GmcPretty.h: (New file).
* mc-boot/GmcPrintf.c: (New file).
* mc-boot/GmcPrintf.h: (New file).
* mc-boot/GmcQuiet.c: (New file).
* mc-boot/GmcQuiet.h: (New file).
* mc-boot/GmcReserved.c: (New file).
* mc-boot/GmcReserved.h: (New file).
* mc-boot/GmcSearch.c: (New file).
* mc-boot/GmcSearch.h: (New file).
* mc-boot/GmcStack.c: (New file).
* mc-boot/GmcStack.h: (New file).
* mc-boot/GmcStream.c: (New file).
* mc-boot/GmcStream.h: (New file).
* mc-boot/Gmcflex.h: (New file).
* mc-boot/Gmcp1.c: (New file).
* mc-boot/Gmcp1.h: (New file).
* mc-boot/Gmcp2.c: (New file).
* mc-boot/Gmcp2.h: (New file).
* mc-boot/Gmcp3.c: (New file).
* mc-boot/Gmcp3.h: (New file).
* mc-boot/Gmcp4.c: (New file).
* mc-boot/Gmcp4.h: (New file).
* mc-boot/Gmcp5.c: (New file).
* mc-boot/Gmcp5.h: (New file).
* mc-boot/GnameKey.c: (New file).
* mc-boot/GnameKey.h: (New file).
* mc-boot/Gpth.h: (New file).
* mc-boot/GsymbolKey.c: (New file).
* mc-boot/GsymbolKey.h: (New file).
* mc-boot/Gtermios.h: (New file).
* mc-boot/Gtop.c: (New file).
* mc-boot/Gvarargs.c: (New file).
* mc-boot/Gvarargs.h: (New file).
* mc-boot/Gwlists.c: (New file).
* mc-boot/Gwlists.h: (New file).
* mc-boot/Gwrapc.h: (New file).
* mc-boot/README: (New file).
* mc/Indexing.def: (New file).
* mc/Indexing.mod: (New file).
* mc/README: (New file).
* mc/alists.def: (New file).
* mc/alists.mod: (New file).
* mc/decl.def: (New file).
* mc/decl.mod: (New file).
* mc/decl.mod-extra: (New file).
* mc/keyc.def: (New file).
* mc/keyc.mod: (New file).
* mc/lists.def: (New file).
* mc/lists.mod: (New file).
* mc/m2flex.def: (New file).
* mc/mc.flex: (New file).
* mc/mcComment.def: (New file).
* mc/mcComment.h: (New file).
* mc/mcComment.mod: (New file).
* mc/mcComp.def: (New file).
* mc/mcComp.mod: (New file).
* mc/mcDebug.def: (New file).
* mc/mcDebug.mod: (New file).
* mc/mcError.def: (New file).
* mc/mcError.mod: (New file).
* mc/mcFileName.def: (New file).
* mc/mcFileName.mod: (New file).
* mc/mcLexBuf.def: (New file).
* mc/mcLexBuf.h: (New file).
* mc/mcLexBuf.mod: (New file).
* mc/mcMetaError.def: (New file).
* mc/mcMetaError.mod: (New file).
* mc/mcOptions.def: (New file).
* mc/mcOptions.mod: (New file).
* mc/mcPreprocess.def: (New file).
* mc/mcPreprocess.mod: (New file).
* mc/mcPretty.def: (New file).
* mc/mcPretty.mod: (New file).
* mc/mcPrintf.def: (New file).
* mc/mcPrintf.mod: (New file).
* mc/mcQuiet.def: (New file).
* mc/mcQuiet.mod: (New file).
* mc/mcReserved.def: (New file).
* mc/mcReserved.h: (New file).
* mc/mcReserved.mod: (New file).
* mc/mcSearch.def: (New file).
* mc/mcSearch.mod: (New file).
* mc/mcStack.def: (New file).
* mc/mcStack.mod: (New file).
* mc/mcStream.def: (New file).
* mc/mcStream.mod: (New file).
* mc/mcflex.def: (New file).
* mc/mcp1.bnf: (New file).
* mc/mcp1.def: (New file).
* mc/mcp2.bnf: (New file).
* mc/mcp2.def: (New file).
* mc/mcp3.bnf: (New file).
* mc/mcp3.def: (New file).
* mc/mcp4.bnf: (New file).
* mc/mcp4.def: (New file).
* mc/mcp5.bnf: (New file).
* mc/mcp5.def: (New file).
* mc/nameKey.def: (New file).
* mc/nameKey.mod: (New file).
* mc/symbolKey.def: (New file).
* mc/symbolKey.mod: (New file).
* mc/top.mod: (New file).
* mc/varargs.def: (New file).
* mc/varargs.mod: (New file).
* mc/wlists.def: (New file).
* mc/wlists.mod: (New file).
* pge-boot/GASCII.c: (New file).
* pge-boot/GASCII.h: (New file).
* pge-boot/GArgs.c: (New file).
* pge-boot/GArgs.h: (New file).
* pge-boot/GAssertion.c: (New file).
* pge-boot/GAssertion.h: (New file).
* pge-boot/GBreak.h: (New file).
* pge-boot/GBuiltins.c: (New file).
* pge-boot/GCmdArgs.h: (New file).
* pge-boot/GDebug.c: (New file).
* pge-boot/GDebug.h: (New file).
* pge-boot/GDynamicStrings.c: (New file).
* pge-boot/GDynamicStrings.h: (New file).
* pge-boot/GEnvironment.h: (New file).
* pge-boot/GFIO.c: (New file).
* pge-boot/GFIO.h: (New file).
* pge-boot/GFormatStrings.h: (New file).
* pge-boot/GFpuIO.h: (New file).
* pge-boot/GIO.c: (New file).
* pge-boot/GIO.h: (New file).
* pge-boot/GIndexing.c: (New file).
* pge-boot/GIndexing.h: (New file).
* pge-boot/GLists.c: (New file).
* pge-boot/GLists.h: (New file).
* pge-boot/GM2Dependent.c: (New file).
* pge-boot/GM2Dependent.h: (New file).
* pge-boot/GM2EXCEPTION.c: (New file).
* pge-boot/GM2EXCEPTION.h: (New file).
* pge-boot/GM2LINK.c: (New file).
* pge-boot/GM2LINK.h: (New file).
* pge-boot/GM2RTS.c: (New file).
* pge-boot/GM2RTS.h: (New file).
* pge-boot/GNameKey.c: (New file).
* pge-boot/GNameKey.h: (New file).
* pge-boot/GNumberIO.c: (New file).
* pge-boot/GNumberIO.h: (New file).
* pge-boot/GOutput.c: (New file).
* pge-boot/GOutput.h: (New file).
* pge-boot/GPushBackInput.c: (New file).
* pge-boot/GPushBackInput.h: (New file).
* pge-boot/GRTExceptions.c: (New file).
* pge-boot/GRTExceptions.h: (New file).
* pge-boot/GRTco.c: (New file).
* pge-boot/GSArgs.h: (New file).
* pge-boot/GSEnvironment.h: (New file).
* pge-boot/GSFIO.c: (New file).
* pge-boot/GSFIO.h: (New file).
* pge-boot/GSYSTEM.c: (New file).
* pge-boot/GSYSTEM.h: (New file).
* pge-boot/GScan.h: (New file).
* pge-boot/GSelective.c: (New file).
* pge-boot/GStdIO.c: (New file).
* pge-boot/GStdIO.h: (New file).
* pge-boot/GStorage.c: (New file).
* pge-boot/GStorage.h: (New file).
* pge-boot/GStrCase.c: (New file).
* pge-boot/GStrCase.h: (New file).
* pge-boot/GStrIO.c: (New file).
* pge-boot/GStrIO.h: (New file).
* pge-boot/GStrLib.c: (New file).
* pge-boot/GStrLib.h: (New file).
* pge-boot/GStringConvert.h: (New file).
* pge-boot/GSymbolKey.c: (New file).
* pge-boot/GSymbolKey.h: (New file).
* pge-boot/GSysExceptions.c: (New file).
* pge-boot/GSysExceptions.h: (New file).
* pge-boot/GSysStorage.c: (New file).
* pge-boot/GSysStorage.h: (New file).
* pge-boot/GTimeString.h: (New file).
* pge-boot/GUnixArgs.cc: (New file).
* pge-boot/GUnixArgs.h: (New file).
* pge-boot/Gabort.c: (New file).
* pge-boot/Gbnflex.c: (New file).
* pge-boot/Gbnflex.h: (New file).
* pge-boot/Gcbuiltin.c: (New file).
* pge-boot/Gdtoa.c: (New file).
* pge-boot/Gdtoa.h: (New file).
* pge-boot/Gerrno.c: (New file).
* pge-boot/Gerrno.h: (New file).
* pge-boot/Gldtoa.c: (New file).
* pge-boot/Gldtoa.h: (New file).
* pge-boot/Glibc.c: (New file).
* pge-boot/Glibc.h: (New file).
* pge-boot/Glibm.c: (New file).
* pge-boot/Glibm.h: (New file).
* pge-boot/Gmcrts.c: (New file).
* pge-boot/Gmcrts.h: (New file).
* pge-boot/Gnetwork.h: (New file).
* pge-boot/Gpge.c: (New file).
* pge-boot/Gtermios.cc: (New file).
* pge-boot/Gtermios.h: (New file).
* pge-boot/Gwrapc.c: (New file).
* pge-boot/Gwrapc.h: (New file).
* pge-boot/README: (New file).
* pge-boot/m2rts.h: (New file).
* pge-boot/main.c: (New file).
* pge-boot/network.c: (New file).
* plugin/README: (New file).
* plugin/m2rte.cc: (New file).
* tools-src/README: (New file).
* tools-src/boilerplate.py: (New file).
* tools-src/buildpg: (New file).
* tools-src/calcpath: (New file).
* tools-src/def2doc.py: (New file).
* tools-src/makeSystem: (New file).
* tools-src/mklink.c: (New file).
* tools-src/tidydates.py: (New file).
* images/LICENSE.IMG: (New file).
* images/gnupng: (New file).
* images/gnu.eps: (New file).
* version.c: (New file).
* configure: (Rebuilt).
gcc/testsuite/ChangeLog:
* lib/gm2-dg.exp: (New file).
* lib/gm2.exp: (New file).
* lib/gm2-simple.exp: (New file).
* lib/gm2-torture.exp: (New file).
* gm2/calling-c/datatypes/unbounded/run/pass/c.c: (New file).
* gm2/calling-c/datatypes/unbounded/run/pass/c.def: (New file).
* gm2/calling-c/datatypes/unbounded/run/pass/calling-c-datatypes-unbounded-run-pass.exp:
(New file).
* gm2/calling-c/datatypes/unbounded/run/pass/m.mod: (New file).
* gm2/case/pass/case-pass.exp: (New file).
* gm2/case/pass/testcase1.mod: (New file).
* gm2/case/pass/testcase2.mod: (New file).
* gm2/case/pass/testcase3.mod: (New file).
* gm2/case/pass/testcase4.mod: (New file).
* gm2/complex/fail/var1.mod: (New file).
* gm2/complex/pass/arith.mod: (New file).
* gm2/complex/pass/arith2.mod: (New file).
* gm2/complex/pass/arith3.mod: (New file).
* gm2/complex/pass/arith4.mod: (New file).
* gm2/complex/pass/arith5.mod: (New file).
* gm2/complex/pass/arith6.mod: (New file).
* gm2/complex/pass/complex-pass.exp: (New file).
* gm2/complex/pass/consts.mod: (New file).
* gm2/complex/pass/consts2.mod: (New file).
* gm2/complex/pass/consts3.mod: (New file).
* gm2/complex/pass/tinycabs.mod: (New file).
* gm2/complex/pass/var1.mod: (New file).
* gm2/complex/pass/var2.mod: (New file).
* gm2/complex/pass/var3.mod: (New file).
* gm2/complex/pass/var4.mod: (New file).
* gm2/complex/pass/var5.mod: (New file).
* gm2/complex/pass/var6.mod: (New file).
* gm2/complex/pass/var7.mod: (New file).
* gm2/complex/pass/var8.mod: (New file).
* gm2/complex/run/pass/arith3.mod: (New file).
* gm2/complex/run/pass/arith4.mod: (New file).
* gm2/complex/run/pass/arith5.mod: (New file).
* gm2/complex/run/pass/arith6.mod: (New file).
* gm2/complex/run/pass/arith7.mod: (New file).
* gm2/complex/run/pass/arith8.mod: (New file).
* gm2/complex/run/pass/complex-run-pass.exp: (New file).
* gm2/coroutines/pim/run/pass/coroutines-pim-run-pass.exp: (New file).
* gm2/coroutines/pim/run/pass/testiotransfer.mod: (New file).
* gm2/coroutines/pim/run/pass/testtransfer.mod: (New file).
* gm2/cpp/fail/another.h: (New file).
* gm2/cpp/fail/fail1.mod: (New file).
* gm2/cpp/longcard2.mod: (New file).
* gm2/cpp/longstrimp.mod: (New file).
* gm2/cpp/pass/arrayhuge.mod: (New file).
* gm2/cpp/pass/arrayhuge2.mod: (New file).
* gm2/cpp/pass/cpp-pass.exp: (New file).
* gm2/cpp/pass/cpp.mod: (New file).
* gm2/cpp/pass/cpph.mod: (New file).
* gm2/cpp/pass/subaddr.mod: (New file).
* gm2/cpp/pass/testcpp.mod: (New file).
* gm2/cpp/pass/testcpp2.mod: (New file).
* gm2/cpp/setchar2.mod: (New file).
* gm2/cpp/setchar6.mod: (New file).
* gm2/cse/fail/cse-fail.exp: (New file).
* gm2/cse/fail/testcse38.mod: (New file).
* gm2/cse/pass/cse-pass.exp: (New file).
* gm2/cse/pass/m2t.c: (New file).
* gm2/cse/pass/testb.mod: (New file).
* gm2/cse/pass/testbuiltin.def: (New file).
* gm2/cse/pass/testbuiltin.mod: (New file).
* gm2/cse/pass/testcse.def: (New file).
* gm2/cse/pass/testcse.mod: (New file).
* gm2/cse/pass/testcse10.mod: (New file).
* gm2/cse/pass/testcse11.mod: (New file).
* gm2/cse/pass/testcse12.mod: (New file).
* gm2/cse/pass/testcse13.mod: (New file).
* gm2/cse/pass/testcse14.mod: (New file).
* gm2/cse/pass/testcse15.mod: (New file).
* gm2/cse/pass/testcse16.mod: (New file).
* gm2/cse/pass/testcse17.mod: (New file).
* gm2/cse/pass/testcse18.mod: (New file).
* gm2/cse/pass/testcse19.mod: (New file).
* gm2/cse/pass/testcse2.mod: (New file).
* gm2/cse/pass/testcse20.mod: (New file).
* gm2/cse/pass/testcse21.mod: (New file).
* gm2/cse/pass/testcse22.mod: (New file).
* gm2/cse/pass/testcse23.mod: (New file).
* gm2/cse/pass/testcse24.mod: (New file).
* gm2/cse/pass/testcse25.mod: (New file).
* gm2/cse/pass/testcse26.mod: (New file).
* gm2/cse/pass/testcse27.mod: (New file).
* gm2/cse/pass/testcse28.mod: (New file).
* gm2/cse/pass/testcse29.mod: (New file).
* gm2/cse/pass/testcse3.mod: (New file).
* gm2/cse/pass/testcse31.mod: (New file).
* gm2/cse/pass/testcse32.mod: (New file).
* gm2/cse/pass/testcse33.mod: (New file).
* gm2/cse/pass/testcse34.mod: (New file).
* gm2/cse/pass/testcse35.mod: (New file).
* gm2/cse/pass/testcse36.mod: (New file).
* gm2/cse/pass/testcse37.mod: (New file).
* gm2/cse/pass/testcse39.mod: (New file).
* gm2/cse/pass/testcse4.c: (New file).
* gm2/cse/pass/testcse4.mod: (New file).
* gm2/cse/pass/testcse40.mod: (New file).
* gm2/cse/pass/testcse41.mod: (New file).
* gm2/cse/pass/testcse42.mod: (New file).
* gm2/cse/pass/testcse43.mod: (New file).
* gm2/cse/pass/testcse44.mod: (New file).
* gm2/cse/pass/testcse45.mod: (New file).
* gm2/cse/pass/testcse46.mod: (New file).
* gm2/cse/pass/testcse47.mod: (New file).
* gm2/cse/pass/testcse48.mod: (New file).
* gm2/cse/pass/testcse49.mod: (New file).
* gm2/cse/pass/testcse5.c: (New file).
* gm2/cse/pass/testcse5.mod: (New file).
* gm2/cse/pass/testcse50.def: (New file).
* gm2/cse/pass/testcse50.mod: (New file).
* gm2/cse/pass/testcse51.mod: (New file).
* gm2/cse/pass/testcse52.def: (New file).
* gm2/cse/pass/testcse52.mod: (New file).
* gm2/cse/pass/testcse53.def: (New file).
* gm2/cse/pass/testcse53.mod: (New file).
* gm2/cse/pass/testcse6.c: (New file).
* gm2/cse/pass/testcse6.mod: (New file).
* gm2/cse/pass/testcse7.c: (New file).
* gm2/cse/pass/testcse7.mod: (New file).
* gm2/cse/pass/testcse8.c: (New file).
* gm2/cse/pass/testcse8.mod: (New file).
* gm2/cse/pass/testcse9.c: (New file).
* gm2/cse/pass/testsize.mod: (New file).
* gm2/dynamic/pass/add.mod: (New file).
* gm2/dynamic/pass/dynamic-pass.exp: (New file).
* gm2/dynamic/pass/prog21.mod: (New file).
* gm2/dynamic/pass/testarray.mod: (New file).
* gm2/dynamic/pass/testarray2.mod: (New file).
* gm2/dynamic/pass/testarray3.mod: (New file).
* gm2/dynamic/pass/testarray4.mod: (New file).
* gm2/dynamic/pass/testarray6.mod: (New file).
* gm2/dynamic/pass/testbec.mod: (New file).
* gm2/dynamic/pass/testbec10.mod: (New file).
* gm2/dynamic/pass/testbec11.mod: (New file).
* gm2/dynamic/pass/testbec12.mod: (New file).
* gm2/dynamic/pass/testbec13.mod: (New file).
* gm2/dynamic/pass/testbec14.mod: (New file).
* gm2/dynamic/pass/testbec15.mod: (New file).
* gm2/dynamic/pass/testbec16.mod: (New file).
* gm2/dynamic/pass/testbec17.mod: (New file).
* gm2/dynamic/pass/testbec18.mod: (New file).
* gm2/dynamic/pass/testbec19.mod: (New file).
* gm2/dynamic/pass/testbec2.mod: (New file).
* gm2/dynamic/pass/testbec20.mod: (New file).
* gm2/dynamic/pass/testbec21.mod: (New file).
* gm2/dynamic/pass/testbec22.mod: (New file).
* gm2/dynamic/pass/testbec23.mod: (New file).
* gm2/dynamic/pass/testbec24.mod: (New file).
* gm2/dynamic/pass/testbec25.mod: (New file).
* gm2/dynamic/pass/testbec26.mod: (New file).
* gm2/dynamic/pass/testbec27.mod: (New file).
* gm2/dynamic/pass/testbec28.mod: (New file).
* gm2/dynamic/pass/testbec29.mod: (New file).
* gm2/dynamic/pass/testbec3.mod: (New file).
* gm2/dynamic/pass/testbec30.mod: (New file).
* gm2/dynamic/pass/testbec31.mod: (New file).
* gm2/dynamic/pass/testbec32.mod: (New file).
* gm2/dynamic/pass/testbec33.mod: (New file).
* gm2/dynamic/pass/testbec34.mod: (New file).
* gm2/dynamic/pass/testbec35.mod: (New file).
* gm2/dynamic/pass/testbec36.mod: (New file).
* gm2/dynamic/pass/testbec37.mod: (New file).
* gm2/dynamic/pass/testbec38.mod: (New file).
* gm2/dynamic/pass/testbec39.mod: (New file).
* gm2/dynamic/pass/testbec4.mod: (New file).
* gm2/dynamic/pass/testbec40.mod: (New file).
* gm2/dynamic/pass/testbec41.mod: (New file).
* gm2/dynamic/pass/testbec42.mod: (New file).
* gm2/dynamic/pass/testbec43.mod: (New file).
* gm2/dynamic/pass/testbec44.mod: (New file).
* gm2/dynamic/pass/testbec45.mod: (New file).
* gm2/dynamic/pass/testbec5.mod: (New file).
* gm2/dynamic/pass/testbec6.mod: (New file).
* gm2/dynamic/pass/testbec7.mod: (New file).
* gm2/dynamic/pass/testbec8.mod: (New file).
* gm2/dynamic/pass/testbec9.mod: (New file).
* gm2/dynamic/pass/testdavid.mod: (New file).
* gm2/dynamic/pass/testdiv.mod: (New file).
* gm2/dynamic/pass/testexp.mod: (New file).
* gm2/dynamic/pass/testfor.mod: (New file).
* gm2/dynamic/pass/testfor2.mod: (New file).
* gm2/dynamic/pass/testfunc.mod: (New file).
* gm2/dynamic/pass/testfunc2.mod: (New file).
* gm2/dynamic/pass/testfunc3.mod: (New file).
* gm2/dynamic/pass/testfunc4.mod: (New file).
* gm2/dynamic/pass/testfunc5.mod: (New file).
* gm2/dynamic/pass/testfunc6.mod: (New file).
* gm2/dynamic/pass/testif.mod: (New file).
* gm2/dynamic/pass/testit.mod: (New file).
* gm2/dynamic/pass/testloop.mod: (New file).
* gm2/dynamic/pass/testloop2.mod: (New file).
* gm2/dynamic/pass/testloop3.mod: (New file).
* gm2/dynamic/pass/testloop4.mod: (New file).
* gm2/dynamic/pass/testloop5.mod: (New file).
* gm2/dynamic/pass/testmin.mod: (New file).
* gm2/dynamic/pass/testnum4.mod: (New file).
* gm2/dynamic/pass/testord.mod: (New file).
* gm2/dynamic/pass/testparam.mod: (New file).
* gm2/dynamic/pass/testparam2.mod: (New file).
* gm2/dynamic/pass/testproc.mod: (New file).
* gm2/dynamic/pass/testproc2.c: (New file).
* gm2/dynamic/pass/testproc2.def: (New file).
* gm2/dynamic/pass/testproc2.mod: (New file).
* gm2/dynamic/pass/testscn.mod: (New file).
* gm2/dynamic/pass/testset.mod: (New file).
* gm2/dynamic/pass/testset2.mod: (New file).
* gm2/dynamic/pass/testset3.mod: (New file).
* gm2/dynamic/pass/teststr.c: (New file).
* gm2/dynamic/pass/teststr.mod: (New file).
* gm2/dynamic/pass/teststr2.mod: (New file).
* gm2/dynamic/pass/teststring.mod: (New file).
* gm2/dynamic/pass/testunbounded.mod: (New file).
* gm2/dynamic/pass/testwith.mod: (New file).
* gm2/dynamic/pass/testzero.mod: (New file).
* gm2/dynamic/pass/wc.mod: (New file).
* gm2/embedded/pass/embedded-pass.exp: (New file).
* gm2/embedded/pass/varataddress.mod: (New file).
* gm2/embedded/pass/varataddress1.mod: (New file).
* gm2/embedded/pass/varataddress2.mod: (New file).
* gm2/embedded/pass/varataddress3.mod: (New file).
* gm2/errors/fail/array1.mod: (New file).
* gm2/errors/fail/badexpr.mod: (New file).
* gm2/errors/fail/badfor.mod: (New file).
* gm2/errors/fail/badhigh.mod: (New file).
* gm2/errors/fail/badshift.mod: (New file).
* gm2/errors/fail/badsubexpradr.mod: (New file).
* gm2/errors/fail/binaryconst.mod: (New file).
* gm2/errors/fail/binarygeneric.mod: (New file).
* gm2/errors/fail/binarygenericconst.mod: (New file).
* gm2/errors/fail/end.mod: (New file).
* gm2/errors/fail/errors-fail.exp: (New file).
* gm2/errors/fail/mismatched.mod: (New file).
* gm2/errors/fail/mismatchedproc.mod: (New file).
* gm2/errors/fail/nestedproc4.mod: (New file).
* gm2/errors/fail/nomodule.mod: (New file).
* gm2/errors/fail/proctype.mod: (New file).
* gm2/errors/fail/prog110.mod: (New file).
* gm2/errors/fail/prog111.mod: (New file).
* gm2/errors/fail/prog113.mod: (New file).
* gm2/errors/fail/prog114.mod: (New file).
* gm2/errors/fail/testaddress.mod: (New file).
* gm2/errors/fail/testarray.mod: (New file).
* gm2/errors/fail/testbit.mod: (New file).
* gm2/errors/fail/testbit2.mod: (New file).
* gm2/errors/fail/testcase.mod: (New file).
* gm2/errors/fail/testcomment.mod: (New file).
* gm2/errors/fail/testcomment2.mod: (New file).
* gm2/errors/fail/testcomment3.mod: (New file).
* gm2/errors/fail/testconst.mod: (New file).
* gm2/errors/fail/testdyn.mod: (New file).
* gm2/errors/fail/testdyn2.mod: (New file).
* gm2/errors/fail/testdyn3.mod: (New file).
* gm2/errors/fail/testexp.mod: (New file).
* gm2/errors/fail/testfio.mod: (New file).
* gm2/errors/fail/testimport.mod: (New file).
* gm2/errors/fail/testimport2.def: (New file).
* gm2/errors/fail/testimport2.mod: (New file).
* gm2/errors/fail/testinit.mod: (New file).
* gm2/errors/fail/testmodule.mod: (New file).
* gm2/errors/fail/testnil.mod: (New file).
* gm2/errors/fail/testnil2.mod: (New file).
* gm2/errors/fail/testparam.mod: (New file).
* gm2/errors/fail/testproc.mod: (New file).
* gm2/errors/fail/testproc2.mod: (New file).
* gm2/errors/fail/testsize.mod: (New file).
* gm2/errors/fail/teststring.mod: (New file).
* gm2/errors/fail/testsub3.mod: (New file).
* gm2/errors/fail/testsub4.mod: (New file).
* gm2/errors/fail/testtype.mod: (New file).
* gm2/errors/fail/testvar.mod: (New file).
* gm2/errors/fail/testwith.mod: (New file).
* gm2/errors/fail/testwrite.mod: (New file).
* gm2/errors/fail/type.mod: (New file).
* gm2/errors/fail/unarygeneric.mod: (New file).
* gm2/errors/mustfail: (New file).
* gm2/errors/options: (New file).
* gm2/errors/testchar.mod: (New file).
* gm2/errors/testsub2.mod: (New file).
* gm2/examples/callingC/pass/examples-callingC-pass.exp: (New file).
* gm2/examples/callingC/pass/hello.mod: (New file).
* gm2/examples/callingC/pass/libprintf.def: (New file).
* gm2/examples/callingC/run/pass/c.c: (New file).
* gm2/examples/callingC/run/pass/c.def: (New file).
* gm2/examples/callingC/run/pass/examples-callingC-run-pass.exp: (New file).
* gm2/examples/callingC/run/pass/hello.mod: (New file).
* gm2/examples/callingC/run/pass/libprintf.def: (New file).
* gm2/examples/callingC/run/pass/m.mod: (New file).
* gm2/examples/cpp/pass/examples-cpp-pass.exp: (New file).
* gm2/examples/cpp/pass/hello.mod: (New file).
* gm2/examples/cppDef/pass/a.def: (New file).
* gm2/examples/cppDef/pass/a.mod: (New file).
* gm2/examples/cppDef/pass/b.mod: (New file).
* gm2/examples/cppDef/pass/examples-cppDef-pass.exp: (New file).
* gm2/examples/cppDef/pass/libprintf.def: (New file).
* gm2/examples/hello/pass/examples-hello-pass.exp: (New file).
* gm2/examples/hello/pass/hello.mod: (New file).
* gm2/examples/map/pass/AdvMap.def: (New file).
* gm2/examples/map/pass/AdvMap.mod: (New file).
* gm2/examples/map/pass/BoxMap.def: (New file).
* gm2/examples/map/pass/BoxMap.mod: (New file).
* gm2/examples/map/pass/Chance.def: (New file).
* gm2/examples/map/pass/Chance.mod: (New file).
* gm2/examples/map/pass/Find.def: (New file).
* gm2/examples/map/pass/Find.mod: (New file).
* gm2/examples/map/pass/Geometry.def: (New file).
* gm2/examples/map/pass/Geometry.mod: (New file).
* gm2/examples/map/pass/MakeBoxes.def: (New file).
* gm2/examples/map/pass/MakeBoxes.mod: (New file).
* gm2/examples/map/pass/Map.mod: (New file).
* gm2/examples/map/pass/RoomMap.def: (New file).
* gm2/examples/map/pass/RoomMap.mod: (New file).
* gm2/examples/map/pass/Semantic.mod: (New file).
* gm2/examples/map/pass/StoreCoord.def: (New file).
* gm2/examples/map/pass/StoreCoord.mod: (New file).
* gm2/examples/map/pass/StoreCoords.def: (New file).
* gm2/examples/map/pass/StoreCoords.mod: (New file).
* gm2/examples/map/pass/WriteMap.def: (New file).
* gm2/examples/map/pass/WriteMap.mod: (New file).
* gm2/examples/map/pass/examples-map-pass.exp: (New file).
* gm2/examples/map/pass/makemaps: (New file).
* gm2/examples/map/pass/testch2.mod: (New file).
* gm2/examples/map/pass/testchan.mod: (New file).
* gm2/examples/map/pass/testcoor.mod: (New file).
* gm2/examples/map/pass/testmaps: (New file).
* gm2/exceptions/run/pass/cpp.cpp: (New file).
* gm2/exceptions/run/pass/cpp.def: (New file).
* gm2/exceptions/run/pass/exceptions-run-pass.exp: (New file).
* gm2/exceptions/run/pass/libexcept.mod: (New file).
* gm2/exceptions/run/pass/m2test.def: (New file).
* gm2/exceptions/run/pass/m2test.mod: (New file).
* gm2/exceptions/run/pass/mycpp.cpp: (New file).
* gm2/exceptions/run/pass/mycpp.def: (New file).
* gm2/exceptions/run/pass/mym2.mod: (New file).
* gm2/exceptions/run/pass/mym2a.mod: (New file).
* gm2/extensions/pass/align.mod: (New file).
* gm2/extensions/pass/align2.mod: (New file).
* gm2/extensions/pass/card16p.mod: (New file).
* gm2/extensions/pass/card32p.mod: (New file).
* gm2/extensions/pass/card64p.mod: (New file).
* gm2/extensions/pass/card8p.mod: (New file).
* gm2/extensions/pass/co.def: (New file).
* gm2/extensions/pass/co.mod: (New file).
* gm2/extensions/pass/extensions-pass.exp: (New file).
* gm2/extensions/pass/frame.mod: (New file).
* gm2/extensions/pass/hello.mod: (New file).
* gm2/extensions/pass/int16p.mod: (New file).
* gm2/extensions/pass/int32p.mod: (New file).
* gm2/extensions/pass/int64p.mod: (New file).
* gm2/extensions/pass/int8p.mod: (New file).
* gm2/extensions/pass/intsize8.mod: (New file).
* gm2/extensions/pass/jmp.mod: (New file).
* gm2/extensions/pass/libc.def: (New file).
* gm2/extensions/pass/optparam.mod: (New file).
* gm2/extensions/pass/optparam2.mod: (New file).
* gm2/extensions/pass/return.mod: (New file).
* gm2/extensions/pass/set8.mod: (New file).
* gm2/extensions/pass/set8a.mod: (New file).
* gm2/extensions/pass/set8b.mod: (New file).
* gm2/extensions/pass/testco.mod: (New file).
* gm2/extensions/run/fail/extensions-run-fail.exp: (New file).
* gm2/extensions/run/fail/intsize8.mod: (New file).
* gm2/extensions/run/pass/align3.mod: (New file).
* gm2/extensions/run/pass/align4.mod: (New file).
* gm2/extensions/run/pass/align5.mod: (New file).
* gm2/extensions/run/pass/align6.mod: (New file).
* gm2/extensions/run/pass/align7.mod: (New file).
* gm2/extensions/run/pass/callingc.mod: (New file).
* gm2/extensions/run/pass/card16p.mod: (New file).
* gm2/extensions/run/pass/card32p.mod: (New file).
* gm2/extensions/run/pass/card64p.mod: (New file).
* gm2/extensions/run/pass/card8p.mod: (New file).
* gm2/extensions/run/pass/column.mod: (New file).
* gm2/extensions/run/pass/cvararg.c: (New file).
* gm2/extensions/run/pass/cvararg.def: (New file).
* gm2/extensions/run/pass/extensions-run-pass.exp: (New file).
* gm2/extensions/run/pass/int16p.mod: (New file).
* gm2/extensions/run/pass/int32p.mod: (New file).
* gm2/extensions/run/pass/int64p.mod: (New file).
* gm2/extensions/run/pass/int8field.mod: (New file).
* gm2/extensions/run/pass/int8p.mod: (New file).
* gm2/extensions/run/pass/packedrecord.mod: (New file).
* gm2/extensions/run/pass/packedrecord2.mod: (New file).
* gm2/extensions/run/pass/real32.mod: (New file).
* gm2/extensions/run/pass/real32a.mod: (New file).
* gm2/extensions/run/pass/record.mod: (New file).
* gm2/extensions/run/pass/testopen.mod: (New file).
* gm2/extensions/run/pass/vararg.mod: (New file).
* gm2/extensions/run/pass/vararg2.mod: (New file).
* gm2/extensions/run/pass/vararg3.mod: (New file).
* gm2/fpu/pass/five.mod: (New file).
* gm2/fpu/pass/fp.def: (New file).
* gm2/fpu/pass/fp.mod: (New file).
* gm2/fpu/pass/fpu-pass.exp: (New file).
* gm2/fpu/pass/one.mod: (New file).
* gm2/fpu/pass/r1.mod: (New file).
* gm2/fpu/pass/realconst.mod: (New file).
* gm2/fpu/pass/testfp.mod: (New file).
* gm2/fpu/pass/testfp2.mod: (New file).
* gm2/fpu/pass/testfpu1.mod: (New file).
* gm2/fpu/pass/testfpu2.mod: (New file).
* gm2/fpu/pass/testfpu3.mod: (New file).
* gm2/fpu/pass/testsin.mod: (New file).
* gm2/imports/run/pass/c.def: (New file).
* gm2/imports/run/pass/c.mod: (New file).
* gm2/imports/run/pass/imports-run-pass.exp: (New file).
* gm2/imports/run/pass/innermods.mod: (New file).
* gm2/imports/run/pass/innermods2.mod: (New file).
* gm2/imports/run/pass/innermods3.mod: (New file).
* gm2/imports/run/pass/innermods4.mod: (New file).
* gm2/imports/run/pass/innermods5.def: (New file).
* gm2/imports/run/pass/innermods5.mod: (New file).
* gm2/imports/run/pass/innermods6.mod: (New file).
* gm2/integer/div.mod: (New file).
* gm2/integer/expr.mod: (New file).
* gm2/integer/mod.mod: (New file).
* gm2/integer/mod2.mod: (New file).
* gm2/integer/one.mod: (New file).
* gm2/integer/options: (New file).
* gm2/integer/zero.mod: (New file).
* gm2/iso/analysis/fail/Makefile: (New file).
* gm2/iso/analysis/fail/arithoverflow.mod: (New file).
* gm2/iso/analysis/fail/arithoverflow2.mod: (New file).
* gm2/iso/analysis/fail/arithsubcard.mod: (New file).
* gm2/iso/analysis/fail/arrayrange.mod: (New file).
* gm2/iso/analysis/fail/assignvalue.mod: (New file).
* gm2/iso/analysis/fail/callassignment.mod: (New file).
* gm2/iso/analysis/fail/callassignment2.mod: (New file).
* gm2/iso/analysis/fail/callassignment3.mod: (New file).
* gm2/iso/analysis/fail/callassignment4.mod: (New file).
* gm2/iso/analysis/fail/caserange.mod: (New file).
* gm2/iso/analysis/fail/decvalue.mod: (New file).
* gm2/iso/analysis/fail/forloop.mod: (New file).
* gm2/iso/analysis/fail/incvalue.mod: (New file).
* gm2/iso/analysis/fail/iso-analysis-fail.exp: (New file).
* gm2/iso/analysis/fail/noreturn.mod: (New file).
* gm2/iso/analysis/fail/returnvalue.mod: (New file).
* gm2/iso/analysis/fail/staticarray.mod: (New file).
* gm2/iso/check/fail/iso-check-fail.exp: (New file).
* gm2/iso/check/fail/modulusoverflow.mod: (New file).
* gm2/iso/fail/badarray.mod: (New file).
* gm2/iso/fail/badarray2.mod: (New file).
* gm2/iso/fail/badipv4.mod: (New file).
* gm2/iso/fail/bug10.mod: (New file).
* gm2/iso/fail/bug8.mod: (New file).
* gm2/iso/fail/bug9.mod: (New file).
* gm2/iso/fail/case.mod: (New file).
* gm2/iso/fail/case2.mod: (New file).
* gm2/iso/fail/case3.mod: (New file).
* gm2/iso/fail/const1.mod: (New file).
* gm2/iso/fail/constarray.mod: (New file).
* gm2/iso/fail/constarray2.mod: (New file).
* gm2/iso/fail/constprocedure.mod: (New file).
* gm2/iso/fail/constrecord.mod: (New file).
* gm2/iso/fail/constrecord2.mod: (New file).
* gm2/iso/fail/constrecord3.mod: (New file).
* gm2/iso/fail/constsubrange.mod: (New file).
* gm2/iso/fail/constsubrange2.mod: (New file).
* gm2/iso/fail/constsubrange3.mod: (New file).
* gm2/iso/fail/defa.def: (New file).
* gm2/iso/fail/defa.mod: (New file).
* gm2/iso/fail/defb.def: (New file).
* gm2/iso/fail/defb.mod: (New file).
* gm2/iso/fail/defc.def: (New file).
* gm2/iso/fail/defc.mod: (New file).
* gm2/iso/fail/except.mod: (New file).
* gm2/iso/fail/except2.mod: (New file).
* gm2/iso/fail/iso-fail.exp: (New file).
* gm2/iso/fail/isoa.def: (New file).
* gm2/iso/fail/isoa.mod: (New file).
* gm2/iso/fail/lengthsubexpr.mod: (New file).
* gm2/iso/fail/proc.mod: (New file).
* gm2/iso/fail/realbitscast.mod: (New file).
* gm2/iso/fail/varient.mod: (New file).
* gm2/iso/fail/varient2.mod: (New file).
* gm2/iso/future/builtinlj.mod: (New file).
* gm2/iso/pass/ChanConsts.def: (New file).
* gm2/iso/pass/ChanConsts.mod: (New file).
* gm2/iso/pass/ConvTypes.def: (New file).
* gm2/iso/pass/ConvTypes.mod: (New file).
* gm2/iso/pass/addadr1.mod: (New file).
* gm2/iso/pass/bits32c.mod: (New file).
* gm2/iso/pass/callwraptime.mod: (New file).
* gm2/iso/pass/caseiso.mod: (New file).
* gm2/iso/pass/caseiso2.mod: (New file).
* gm2/iso/pass/cast.mod: (New file).
* gm2/iso/pass/cast3.mod: (New file).
* gm2/iso/pass/castiso.mod: (New file).
* gm2/iso/pass/const1.mod: (New file).
* gm2/iso/pass/constreal.mod: (New file).
* gm2/iso/pass/constructor1.mod: (New file).
* gm2/iso/pass/constructor2.mod: (New file).
* gm2/iso/pass/constructor3.mod: (New file).
* gm2/iso/pass/constructor4.mod: (New file).
* gm2/iso/pass/constructor5.mod: (New file).
* gm2/iso/pass/constructor6.mod: (New file).
* gm2/iso/pass/constsize4.mod: (New file).
* gm2/iso/pass/delim.mod: (New file).
* gm2/iso/pass/delim2.mod: (New file).
* gm2/iso/pass/enummodule.mod: (New file).
* gm2/iso/pass/except1.mod: (New file).
* gm2/iso/pass/expproc.mod: (New file).
* gm2/iso/pass/expproc2.mod: (New file).
* gm2/iso/pass/iso-pass.exp: (New file).
* gm2/iso/pass/isob.def: (New file).
* gm2/iso/pass/isob.mod: (New file).
* gm2/iso/pass/isobitset.mod: (New file).
* gm2/iso/pass/isobitset2.mod: (New file).
* gm2/iso/pass/longm.mod: (New file).
* gm2/iso/pass/m.mod: (New file).
* gm2/iso/pass/proccast.mod: (New file).
* gm2/iso/pass/realbitscast.mod: (New file).
* gm2/iso/pass/set12.mod: (New file).
* gm2/iso/pass/stringchar.mod: (New file).
* gm2/iso/pass/subassign.mod: (New file).
* gm2/iso/pass/testaddindr.mod: (New file).
* gm2/iso/pass/testconv.def: (New file).
* gm2/iso/pass/testconv.mod: (New file).
* gm2/iso/pass/testconv2.def: (New file).
* gm2/iso/pass/testconv2.mod: (New file).
* gm2/iso/pass/testconv3.mod: (New file).
* gm2/iso/pass/testconv4.mod: (New file).
* gm2/iso/pass/testconv5.mod: (New file).
* gm2/iso/pass/testconv6.mod: (New file).
* gm2/iso/pass/testconv7.mod: (New file).
* gm2/iso/pass/testconv8.mod: (New file).
* gm2/iso/pass/testconv9.mod: (New file).
* gm2/iso/pass/testiso.mod: (New file).
* gm2/iso/pass/testiso2.mod: (New file).
* gm2/iso/pass/testisosize.mod: (New file).
* gm2/iso/pass/testlength.mod: (New file).
* gm2/iso/pass/testlength2.mod: (New file).
* gm2/iso/pass/testlength3.mod: (New file).
* gm2/iso/pass/testlength4.mod: (New file).
* gm2/iso/pass/testlength5.mod: (New file).
* gm2/iso/pass/unbounded.mod: (New file).
* gm2/iso/pass/unbounded2.mod: (New file).
* gm2/iso/run/pass/adraddress.mod: (New file).
* gm2/iso/run/pass/adrunbounded3.mod: (New file).
* gm2/iso/run/pass/baseimport.mod: (New file).
* gm2/iso/run/pass/compsize.mod: (New file).
* gm2/iso/run/pass/concurrentstore.mod: (New file).
* gm2/iso/run/pass/constprocedure.mod: (New file).
* gm2/iso/run/pass/constructor1.mod: (New file).
* gm2/iso/run/pass/constructor2.mod: (New file).
* gm2/iso/run/pass/conststrarray.mod: (New file).
* gm2/iso/run/pass/contimer.mod: (New file).
* gm2/iso/run/pass/except.c: (New file).
* gm2/iso/run/pass/except2.mod: (New file).
* gm2/iso/run/pass/except3.cpp: (New file).
* gm2/iso/run/pass/except4.mod: (New file).
* gm2/iso/run/pass/except5.cpp: (New file).
* gm2/iso/run/pass/except5.mod: (New file).
* gm2/iso/run/pass/except6.cpp: (New file).
* gm2/iso/run/pass/except7.mod: (New file).
* gm2/iso/run/pass/except8.mod: (New file).
* gm2/iso/run/pass/fileio.def: (New file).
* gm2/iso/run/pass/fileio.mod: (New file).
* gm2/iso/run/pass/hello.mod: (New file).
* gm2/iso/run/pass/int8field.mod: (New file).
* gm2/iso/run/pass/iso-run-pass.exp: (New file).
* gm2/iso/run/pass/long.mod: (New file).
* gm2/iso/run/pass/long2.mod: (New file).
* gm2/iso/run/pass/long3.mod: (New file).
* gm2/iso/run/pass/long4.c: (New file).
* gm2/iso/run/pass/long4.mod: (New file).
* gm2/iso/run/pass/minmax.mod: (New file).
* gm2/iso/run/pass/modulus.mod: (New file).
* gm2/iso/run/pass/nestediso.mod: (New file).
* gm2/iso/run/pass/nestedrecord.mod: (New file).
* gm2/iso/run/pass/onebyte.mod: (New file).
* gm2/iso/run/pass/onebyte2.mod: (New file).
* gm2/iso/run/pass/onebyte3.mod: (New file).
* gm2/iso/run/pass/packed.mod: (New file).
* gm2/iso/run/pass/proc.c: (New file).
* gm2/iso/run/pass/proc.mod: (New file).
* gm2/iso/run/pass/proc2.mod: (New file).
* gm2/iso/run/pass/returnrecord.mod: (New file).
* gm2/iso/run/pass/shift.mod: (New file).
* gm2/iso/run/pass/shift2.mod: (New file).
* gm2/iso/run/pass/shift3.mod: (New file).
* gm2/iso/run/pass/shift4.mod: (New file).
* gm2/iso/run/pass/simple: (New file).
* gm2/iso/run/pass/simplelarge.mod: (New file).
* gm2/iso/run/pass/strcons.mod: (New file).
* gm2/iso/run/pass/strcons2.mod: (New file).
* gm2/iso/run/pass/t.cpp: (New file).
* gm2/iso/run/pass/t1.cpp: (New file).
* gm2/iso/run/pass/testLength.mod: (New file).
* gm2/iso/run/pass/testarray.mod: (New file).
* gm2/iso/run/pass/testgeneric.mod: (New file).
* gm2/iso/run/pass/testlarge.mod: (New file).
* gm2/iso/run/pass/testsystem.mod: (New file).
* gm2/iso/run/pass/tinyconst.mod: (New file).
* gm2/iso/run/pass/tinyconst2.mod: (New file).
* gm2/iso/run/pass/tinyconst3.mod: (New file).
* gm2/iso/run/pass/tinyconst4.mod: (New file).
* gm2/iso/run/pass/tinyconst5.mod: (New file).
* gm2/iso/run/pass/tinytimer.mod: (New file).
* gm2/iso/run/pass/trivialmodulus.mod: (New file).
* gm2/iso/run/pass/tsize.mod: (New file).
* gm2/iso/run/pass/tsize2.mod: (New file).
* gm2/iso/run/pass/tstLength.mod: (New file).
* gm2/iso/run/pass/unbounded.mod: (New file).
* gm2/iso/run/pass/unbounded2.mod: (New file).
* gm2/iso/run/pass/unbounded3.mod: (New file).
* gm2/iso/run/pass/unbounded4.mod: (New file).
* gm2/iso/run/pass/unbounded5.mod: (New file).
* gm2/iso/run/pass/unbounded6.mod: (New file).
* gm2/iso/run/pass/unbounded7.mod: (New file).
* gm2/iso/run/pass/unbounded8.mod: (New file).
* gm2/isocoroutines/run/pass/coroutine.mod: (New file).
* gm2/isocoroutines/run/pass/isocoroutines-run-pass.exp: (New file).
* gm2/isolib/run/pass/arraycons.mod: (New file).
* gm2/isolib/run/pass/arraycons2.mod: (New file).
* gm2/isolib/run/pass/arraycons3.mod: (New file).
* gm2/isolib/run/pass/arraycons5.mod: (New file).
* gm2/isolib/run/pass/arraycons6.mod: (New file).
* gm2/isolib/run/pass/arraycons7.mod: (New file).
* gm2/isolib/run/pass/arrayconst8.mod: (New file).
* gm2/isolib/run/pass/exceptiontest.mod: (New file).
* gm2/isolib/run/pass/filepos.mod: (New file).
* gm2/isolib/run/pass/hello.mod: (New file).
* gm2/isolib/run/pass/insert.mod: (New file).
* gm2/isolib/run/pass/intconv.mod: (New file).
* gm2/isolib/run/pass/isolib-run-pass.exp: (New file).
* gm2/isolib/run/pass/longstr.mod: (New file).
* gm2/isolib/run/pass/openlibc.mod: (New file).
* gm2/isolib/run/pass/raise.mod: (New file).
* gm2/isolib/run/pass/raise2.mod: (New file).
* gm2/isolib/run/pass/readreal.mod: (New file).
* gm2/isolib/run/pass/real1.mod: (New file).
* gm2/isolib/run/pass/real2.mod: (New file).
* gm2/isolib/run/pass/real3.mod: (New file).
* gm2/isolib/run/pass/realconv.mod: (New file).
* gm2/isolib/run/pass/realconv2.mod: (New file).
* gm2/isolib/run/pass/realstr.mod: (New file).
* gm2/isolib/run/pass/sigfig.mod: (New file).
* gm2/isolib/run/pass/stringreal2.mod: (New file).
* gm2/isolib/run/pass/termfile.mod-disabled: (New file).
* gm2/isolib/run/pass/testappend.mod: (New file).
* gm2/isolib/run/pass/testinput: (New file).
* gm2/isolib/run/pass/testio.mod: (New file).
* gm2/isolib/run/pass/testio2.mod: (New file).
* gm2/isolib/run/pass/testmem.mod: (New file).
* gm2/isolib/run/pass/testmem2.mod: (New file).
* gm2/isolib/run/pass/testnumber: (New file).
* gm2/isolib/run/pass/tiny.mod: (New file).
* gm2/isolib/run/pass/tiny2.mod: (New file).
* gm2/isolib/run/pass/tiny3.mod: (New file).
* gm2/isolib/run/pass/tiny4.mod: (New file).
* gm2/isolib/run/pass/tiny5.mod: (New file).
* gm2/libs/a.def: (New file).
* gm2/libs/a.mod: (New file).
* gm2/libs/b.def: (New file).
* gm2/libs/b.mod: (New file).
* gm2/libs/testraw.mod: (New file).
* gm2/link/externalscaffold/pass/hello.mod: (New file).
* gm2/link/externalscaffold/pass/link-externalscaffold-pass.exp: (New file).
* gm2/link/externalscaffold/pass/scaffold.c: (New file).
* gm2/link/pim/fail/import.mod: (New file).
* gm2/link/pim/fail/link-pim-fail.exp: (New file).
* gm2/link/pim/pass/link-pim-pass.exp: (New file).
* gm2/link/pimc/pass/README: (New file).
* gm2/link/pimc/pass/link-pimc-pass.exp: (New file).
* gm2/link/pimc/pass/testdtoa.mod: (New file).
* gm2/link/pimc/pass/testerrno.mod: (New file).
* gm2/link/pimc/pass/testgetopt.mod: (New file).
* gm2/link/pimc/pass/testldtoa.mod: (New file).
* gm2/link/pimc/pass/testlibc.mod: (New file).
* gm2/link/pimc/pass/testlibc2.mod: (New file).
* gm2/link/pimc/pass/testsckt.mod: (New file).
* gm2/link/pimc/pass/testselective.mod: (New file).
* gm2/link/pimc/pass/testsysexceptions.mod: (New file).
* gm2/link/pimc/pass/testtermios.mod: (New file).
* gm2/link/pimc/pass/testunixargs.mod: (New file).
* gm2/link/pimc/pass/testwrapc.mod: (New file).
* gm2/linking/libarchive/pass/c.c: (New file).
* gm2/linking/libarchive/pass/c.def: (New file).
* gm2/linking/libarchive/pass/d.def: (New file).
* gm2/linking/libarchive/pass/e.def: (New file).
* gm2/linking/libarchive/pass/linking-libarchive-pass.exp: (New file).
* gm2/linking/libarchive/pass/m.mod: (New file).
* gm2/linking/verbose/pass/hello.mod: (New file).
* gm2/linking/verbose/pass/linking-verbose-pass.exp: (New file).
* gm2/pim/fail/TestLong3.mod: (New file).
* gm2/pim/fail/TestLong6.mod: (New file).
* gm2/pim/fail/a.def: (New file).
* gm2/pim/fail/assignbounds.mod: (New file).
* gm2/pim/fail/assignsubrange.mod: (New file).
* gm2/pim/fail/assignsubrange2.mod: (New file).
* gm2/pim/fail/b.def: (New file).
* gm2/pim/fail/bad.def: (New file).
* gm2/pim/fail/badconst.mod: (New file).
* gm2/pim/fail/badfunc.mod: (New file).
* gm2/pim/fail/badparam.mod: (New file).
* gm2/pim/fail/badparam2.mod: (New file).
* gm2/pim/fail/badtype.mod: (New file).
* gm2/pim/fail/badtypes.mod: (New file).
* gm2/pim/fail/bits.mod: (New file).
* gm2/pim/fail/bits2.mod: (New file).
* gm2/pim/fail/bits3.mod: (New file).
* gm2/pim/fail/bits4.mod: (New file).
* gm2/pim/fail/cardword.mod: (New file).
* gm2/pim/fail/constbec.mod: (New file).
* gm2/pim/fail/constsize3.mod: (New file).
* gm2/pim/fail/constvar.mod: (New file).
* gm2/pim/fail/convert5.mod: (New file).
* gm2/pim/fail/dupconst.mod: (New file).
* gm2/pim/fail/dupenum.mod: (New file).
* gm2/pim/fail/dupfield.mod: (New file).
* gm2/pim/fail/duptype.mod: (New file).
* gm2/pim/fail/dupvar.mod: (New file).
* gm2/pim/fail/expression.mod: (New file).
* gm2/pim/fail/expression2.mod: (New file).
* gm2/pim/fail/expression3.mod: (New file).
* gm2/pim/fail/func.mod: (New file).
* gm2/pim/fail/good.def: (New file).
* gm2/pim/fail/good.mod: (New file).
* gm2/pim/fail/import.mod: (New file).
* gm2/pim/fail/inserttok.def: (New file).
* gm2/pim/fail/inserttok.mod: (New file).
* gm2/pim/fail/integer.mod: (New file).
* gm2/pim/fail/keyword.mod: (New file).
* gm2/pim/fail/longtypes2.mod: (New file).
* gm2/pim/fail/longtypes3.mod: (New file).
* gm2/pim/fail/multisetf.mod: (New file).
* gm2/pim/fail/nested3.mod: (New file).
* gm2/pim/fail/opaque.mod: (New file).
* gm2/pim/fail/opaque2.mod: (New file).
* gm2/pim/fail/opasfail.mod: (New file).
* gm2/pim/fail/opcpfail.mod: (New file).
* gm2/pim/fail/pim-fail.exp: (New file).
* gm2/pim/fail/procmod.mod: (New file).
* gm2/pim/fail/rotate.mod: (New file).
* gm2/pim/fail/rotate2.mod: (New file).
* gm2/pim/fail/setbec.mod: (New file).
* gm2/pim/fail/setequiv.mod: (New file).
* gm2/pim/fail/setsnulf.mod: (New file).
* gm2/pim/fail/settype.mod: (New file).
* gm2/pim/fail/shift.mod: (New file).
* gm2/pim/fail/shift2.mod: (New file).
* gm2/pim/fail/subrange7.mod: (New file).
* gm2/pim/fail/unary.mod: (New file).
* gm2/pim/fail/undeclared.mod: (New file).
* gm2/pim/fail/val.mod: (New file).
* gm2/pim/fail/val2.mod: (New file).
* gm2/pim/fail/wordconst.mod: (New file).
* gm2/pim/no-options/run/pass/integer.mod: (New file).
* gm2/pim/no-options/run/pass/pim-no-options-run-pass.exp: (New file).
* gm2/pim/options/bounds/fail/IdentifierBug.mod: (New file).
* gm2/pim/options/bounds/fail/pim-options-bounds-fail.exp: (New file).
* gm2/pim/options/optimize/run/pass/addition.def: (New file).
* gm2/pim/options/optimize/run/pass/addition.mod: (New file).
* gm2/pim/options/optimize/run/pass/concat.mod: (New file).
* gm2/pim/options/optimize/run/pass/pim-options-optimize-run-pass.exp:
(New file).
* gm2/pim/options/optimize/run/pass/testadd.mod: (New file).
* gm2/pim/pass/ABSBug.mod: (New file).
* gm2/pim/pass/TestLong4.mod: (New file).
* gm2/pim/pass/TestLong7.mod: (New file).
* gm2/pim/pass/TestLong8.mod: (New file).
* gm2/pim/pass/TestLong9.mod: (New file).
* gm2/pim/pass/another.mod: (New file).
* gm2/pim/pass/aochar.mod: (New file).
* gm2/pim/pass/array.mod: (New file).
* gm2/pim/pass/array2.mod: (New file).
* gm2/pim/pass/array3.mod: (New file).
* gm2/pim/pass/array4.mod: (New file).
* gm2/pim/pass/array5.mod: (New file).
* gm2/pim/pass/array6.mod: (New file).
* gm2/pim/pass/arraybool.mod: (New file).
* gm2/pim/pass/arraychar.mod: (New file).
* gm2/pim/pass/arraychar2.mod: (New file).
* gm2/pim/pass/arraychar3.mod: (New file).
* gm2/pim/pass/arrayconst1.mod: (New file).
* gm2/pim/pass/arrayconst2.mod: (New file).
* gm2/pim/pass/arrayconst3.mod: (New file).
* gm2/pim/pass/arraydecl.mod: (New file).
* gm2/pim/pass/arraydim.mod: (New file).
* gm2/pim/pass/arraydyn.mod: (New file).
* gm2/pim/pass/arrayeqiv.mod: (New file).
* gm2/pim/pass/arrayfio.mod: (New file).
* gm2/pim/pass/arrayhuge.mod: (New file).
* gm2/pim/pass/arrayhuge2.mod: (New file).
* gm2/pim/pass/arrayindex.mod: (New file).
* gm2/pim/pass/arrayindirect.mod: (New file).
* gm2/pim/pass/arrayinproc.mod: (New file).
* gm2/pim/pass/arrayint.mod: (New file).
* gm2/pim/pass/arrayofbyte.mod: (New file).
* gm2/pim/pass/arrayofcard.mod: (New file).
* gm2/pim/pass/arrayptr.mod: (New file).
* gm2/pim/pass/arrayptr2.mod: (New file).
* gm2/pim/pass/arrayptr3.mod: (New file).
* gm2/pim/pass/arrayptr4.mod: (New file).
* gm2/pim/pass/arrayptr5.mod: (New file).
* gm2/pim/pass/arrayptr6.mod: (New file).
* gm2/pim/pass/arrayrecord.mod: (New file).
* gm2/pim/pass/arraytiny.c: (New file).
* gm2/pim/pass/arraytiny.mod: (New file).
* gm2/pim/pass/arraytype.mod: (New file).
* gm2/pim/pass/arraytype2.mod: (New file).
* gm2/pim/pass/arraytype3.mod: (New file).
* gm2/pim/pass/arraytype4.mod: (New file).
* gm2/pim/pass/assignment.mod: (New file).
* gm2/pim/pass/assignment2.mod: (New file).
* gm2/pim/pass/assignment3.mod: (New file).
* gm2/pim/pass/assignment4.mod: (New file).
* gm2/pim/pass/badpointer.mod: (New file).
* gm2/pim/pass/bits32.def: (New file).
* gm2/pim/pass/bits32.mod: (New file).
* gm2/pim/pass/bits32i.mod: (New file).
* gm2/pim/pass/bitset.mod: (New file).
* gm2/pim/pass/bitset2.mod: (New file).
* gm2/pim/pass/bitset3.mod: (New file).
* gm2/pim/pass/bitset4.mod: (New file).
* gm2/pim/pass/bitset5.mod: (New file).
* gm2/pim/pass/bitsetfunc.mod: (New file).
* gm2/pim/pass/block.mod: (New file).
* gm2/pim/pass/blockindirect.mod: (New file).
* gm2/pim/pass/builtin.def: (New file).
* gm2/pim/pass/builtin.mod: (New file).
* gm2/pim/pass/builtin2.mod: (New file).
* gm2/pim/pass/builtinconst.mod: (New file).
* gm2/pim/pass/bytearray.mod: (New file).
* gm2/pim/pass/card.mod: (New file).
* gm2/pim/pass/card2.mod: (New file).
* gm2/pim/pass/char.mod: (New file).
* gm2/pim/pass/char2.mod: (New file).
* gm2/pim/pass/charproc.mod: (New file).
* gm2/pim/pass/charset.mod: (New file).
* gm2/pim/pass/charset2.mod: (New file).
* gm2/pim/pass/charset3.mod: (New file).
* gm2/pim/pass/checkparm.def: (New file).
* gm2/pim/pass/checkparm.mod: (New file).
* gm2/pim/pass/colour.mod: (New file).
* gm2/pim/pass/comment1.mod: (New file).
* gm2/pim/pass/complexarray.mod: (New file).
* gm2/pim/pass/complextypes.mod: (New file).
* gm2/pim/pass/constcast.mod: (New file).
* gm2/pim/pass/constmax.mod: (New file).
* gm2/pim/pass/constset.mod: (New file).
* gm2/pim/pass/constset2.mod: (New file).
* gm2/pim/pass/constset3.mod: (New file).
* gm2/pim/pass/constsize.mod: (New file).
* gm2/pim/pass/constsize2.mod: (New file).
* gm2/pim/pass/convert.mod: (New file).
* gm2/pim/pass/convert2.mod: (New file).
* gm2/pim/pass/convert3.mod: (New file).
* gm2/pim/pass/convert4.mod: (New file).
* gm2/pim/pass/danglingelse.mod: (New file).
* gm2/pim/pass/debug: (New file).
* gm2/pim/pass/defset.def: (New file).
* gm2/pim/pass/defset.mod: (New file).
* gm2/pim/pass/deftype.mod: (New file).
* gm2/pim/pass/divaddr.mod: (New file).
* gm2/pim/pass/enum.mod: (New file).
* gm2/pim/pass/enum2.mod: (New file).
* gm2/pim/pass/enum3.mod: (New file).
* gm2/pim/pass/file.mod: (New file).
* gm2/pim/pass/filesystem.mod: (New file).
* gm2/pim/pass/foo.mod: (New file).
* gm2/pim/pass/foo2.mod: (New file).
* gm2/pim/pass/for1.mod: (New file).
* gm2/pim/pass/function.mod: (New file).
* gm2/pim/pass/function2.mod: (New file).
* gm2/pim/pass/gcd.def: (New file).
* gm2/pim/pass/gcd.mod: (New file).
* gm2/pim/pass/getconst.mod: (New file).
* gm2/pim/pass/hello.mod: (New file).
* gm2/pim/pass/impa.mod: (New file).
* gm2/pim/pass/impb.def: (New file).
* gm2/pim/pass/impb.mod: (New file).
* gm2/pim/pass/impc.def: (New file).
* gm2/pim/pass/impc.mod: (New file).
* gm2/pim/pass/impd.mod: (New file).
* gm2/pim/pass/impe.mod: (New file).
* gm2/pim/pass/impf.mod: (New file).
* gm2/pim/pass/impg.mod: (New file).
* gm2/pim/pass/imph.mod: (New file).
* gm2/pim/pass/impi.mod: (New file).
* gm2/pim/pass/impj.mod: (New file).
* gm2/pim/pass/impk.mod: (New file).
* gm2/pim/pass/impl.mod: (New file).
* gm2/pim/pass/impm.mod: (New file).
* gm2/pim/pass/impn.def: (New file).
* gm2/pim/pass/impn.mod: (New file).
* gm2/pim/pass/impo.mod: (New file).
* gm2/pim/pass/imports.mod: (New file).
* gm2/pim/pass/impp.def: (New file).
* gm2/pim/pass/impp.mod: (New file).
* gm2/pim/pass/impq.def: (New file).
* gm2/pim/pass/impq.mod: (New file).
* gm2/pim/pass/incompsets.mod: (New file).
* gm2/pim/pass/index.mod: (New file).
* gm2/pim/pass/index2.mod: (New file).
* gm2/pim/pass/indirect.mod: (New file).
* gm2/pim/pass/inner.mod: (New file).
* gm2/pim/pass/inner2.mod: (New file).
* gm2/pim/pass/int.mod: (New file).
* gm2/pim/pass/largeset.mod: (New file).
* gm2/pim/pass/largeset1.mod: (New file).
* gm2/pim/pass/largeset2.mod: (New file).
* gm2/pim/pass/largeset3.mod: (New file).
* gm2/pim/pass/largeset4.mod: (New file).
* gm2/pim/pass/largeset5.mod: (New file).
* gm2/pim/pass/largeset6.mod: (New file).
* gm2/pim/pass/largeset7.mod: (New file).
* gm2/pim/pass/localmod.mod: (New file).
* gm2/pim/pass/localproc.mod: (New file).
* gm2/pim/pass/localvar.mod: (New file).
* gm2/pim/pass/log: (New file).
* gm2/pim/pass/longint.mod: (New file).
* gm2/pim/pass/longint2.mod: (New file).
* gm2/pim/pass/longmm.mod: (New file).
* gm2/pim/pass/longreal.mod: (New file).
* gm2/pim/pass/longtypes.mod: (New file).
* gm2/pim/pass/longtypes3.mod: (New file).
* gm2/pim/pass/longtypes4.mod: (New file).
* gm2/pim/pass/longtypes5.mod: (New file).
* gm2/pim/pass/longtypes6.mod: (New file).
* gm2/pim/pass/loopexit.mod: (New file).
* gm2/pim/pass/math.mod: (New file).
* gm2/pim/pass/maxlongint.mod: (New file).
* gm2/pim/pass/maxreal.mod: (New file).
* gm2/pim/pass/maxreal2.mod: (New file).
* gm2/pim/pass/minmaxconst.mod: (New file).
* gm2/pim/pass/minmaxconst2.mod: (New file).
* gm2/pim/pass/modaddr.mod: (New file).
* gm2/pim/pass/multaddr.mod: (New file).
* gm2/pim/pass/multiple.mod: (New file).
* gm2/pim/pass/multiset.mod: (New file).
* gm2/pim/pass/multtypes.mod: (New file).
* gm2/pim/pass/mydef.def: (New file).
* gm2/pim/pass/negatives.def: (New file).
* gm2/pim/pass/negatives.mod: (New file).
* gm2/pim/pass/nested.mod: (New file).
* gm2/pim/pass/nested2.mod: (New file).
* gm2/pim/pass/nested3.mod: (New file).
* gm2/pim/pass/nested4.mod: (New file).
* gm2/pim/pass/nested5.mod: (New file).
* gm2/pim/pass/nested6.mod: (New file).
* gm2/pim/pass/nested7.mod: (New file).
* gm2/pim/pass/nestedfor.mod: (New file).
* gm2/pim/pass/nestedif.mod: (New file).
* gm2/pim/pass/nestedset.mod: (New file).
* gm2/pim/pass/onezero.mod: (New file).
* gm2/pim/pass/opaque.def: (New file).
* gm2/pim/pass/opaque.mod: (New file).
* gm2/pim/pass/opaque2.mod: (New file).
* gm2/pim/pass/opaquetype.def: (New file).
* gm2/pim/pass/opaquetype.mod: (New file).
* gm2/pim/pass/param.mod: (New file).
* gm2/pim/pass/param2.mod: (New file).
* gm2/pim/pass/param3.mod: (New file).
* gm2/pim/pass/parambool.mod: (New file).
* gm2/pim/pass/paramreal.mod: (New file).
* gm2/pim/pass/pim-pass.exp: (New file).
* gm2/pim/pass/pimimp.mod: (New file).
* gm2/pim/pass/pointer.mod: (New file).
* gm2/pim/pass/procadr.mod: (New file).
* gm2/pim/pass/procconv.mod: (New file).
* gm2/pim/pass/procconv2.mod: (New file).
* gm2/pim/pass/procedure1.mod: (New file).
* gm2/pim/pass/procedure2.mod: (New file).
* gm2/pim/pass/procindirect.mod: (New file).
* gm2/pim/pass/procmod.mod: (New file).
* gm2/pim/pass/procmod2.mod: (New file).
* gm2/pim/pass/procmod3.mod: (New file).
* gm2/pim/pass/procmod31.mod: (New file).
* gm2/pim/pass/procmod4.mod: (New file).
* gm2/pim/pass/procmod5.mod: (New file).
* gm2/pim/pass/procmod6.def: (New file).
* gm2/pim/pass/procmod6.mod: (New file).
* gm2/pim/pass/procmod7.mod: (New file).
* gm2/pim/pass/procmod8.mod: (New file).
* gm2/pim/pass/procmod9.mod: (New file).
* gm2/pim/pass/proctype.mod: (New file).
* gm2/pim/pass/proctype2.def: (New file).
* gm2/pim/pass/proctype3.mod: (New file).
* gm2/pim/pass/proctype4.mod: (New file).
* gm2/pim/pass/program.mod: (New file).
* gm2/pim/pass/program2.mod: (New file).
* gm2/pim/pass/ptrarray.mod: (New file).
* gm2/pim/pass/ptrarray2.mod: (New file).
* gm2/pim/pass/ptrarray3.mod: (New file).
* gm2/pim/pass/ptrcard.mod: (New file).
* gm2/pim/pass/quads.def: (New file).
* gm2/pim/pass/quads.mod: (New file).
* gm2/pim/pass/real.mod: (New file).
* gm2/pim/pass/real2.mod: (New file).
* gm2/pim/pass/real3.mod: (New file).
* gm2/pim/pass/realconst.mod: (New file).
* gm2/pim/pass/realneg.mod: (New file).
* gm2/pim/pass/realneg2.mod: (New file).
* gm2/pim/pass/realone.mod: (New file).
* gm2/pim/pass/realsize.mod: (New file).
* gm2/pim/pass/record1.mod: (New file).
* gm2/pim/pass/record10.mod: (New file).
* gm2/pim/pass/record11.mod: (New file).
* gm2/pim/pass/record12.def: (New file).
* gm2/pim/pass/record13.def: (New file).
* gm2/pim/pass/record14.def: (New file).
* gm2/pim/pass/record15.def: (New file).
* gm2/pim/pass/record16.def: (New file).
* gm2/pim/pass/record2.mod: (New file).
* gm2/pim/pass/record3.mod: (New file).
* gm2/pim/pass/record4.mod: (New file).
* gm2/pim/pass/record5.mod: (New file).
* gm2/pim/pass/record6.mod: (New file).
* gm2/pim/pass/record7.mod: (New file).
* gm2/pim/pass/record8.mod: (New file).
* gm2/pim/pass/record9.mod: (New file).
* gm2/pim/pass/recordarray.c: (New file).
* gm2/pim/pass/recordarray.mod: (New file).
* gm2/pim/pass/recordarray2.mod: (New file).
* gm2/pim/pass/redef.mod: (New file).
* gm2/pim/pass/set10.mod: (New file).
* gm2/pim/pass/set11.def: (New file).
* gm2/pim/pass/set11.mod: (New file).
* gm2/pim/pass/set12.mod: (New file).
* gm2/pim/pass/set4.mod: (New file).
* gm2/pim/pass/set5.mod: (New file).
* gm2/pim/pass/set6.mod: (New file).
* gm2/pim/pass/set7.mod: (New file).
* gm2/pim/pass/set8.mod: (New file).
* gm2/pim/pass/set9.mod: (New file).
* gm2/pim/pass/setchar.mod: (New file).
* gm2/pim/pass/setchar10.mod: (New file).
* gm2/pim/pass/setchar11.mod: (New file).
* gm2/pim/pass/setchar3.mod: (New file).
* gm2/pim/pass/setchar4.mod: (New file).
* gm2/pim/pass/setchar5.mod: (New file).
* gm2/pim/pass/setchar7.mod: (New file).
* gm2/pim/pass/setchar8.mod: (New file).
* gm2/pim/pass/setchar9.mod: (New file).
* gm2/pim/pass/setconst.mod: (New file).
* gm2/pim/pass/setconst2.mod: (New file).
* gm2/pim/pass/setconst3.mod: (New file).
* gm2/pim/pass/setenum.mod: (New file).
* gm2/pim/pass/setimp.mod: (New file).
* gm2/pim/pass/setimp2.mod: (New file).
* gm2/pim/pass/setofchar.mod: (New file).
* gm2/pim/pass/setoverflow.mod: (New file).
* gm2/pim/pass/sets.mod: (New file).
* gm2/pim/pass/sets2.mod: (New file).
* gm2/pim/pass/sets3.mod: (New file).
* gm2/pim/pass/sets4.mod: (New file).
* gm2/pim/pass/sets5.mod: (New file).
* gm2/pim/pass/sets6.mod: (New file).
* gm2/pim/pass/setsnul.mod: (New file).
* gm2/pim/pass/settest1.mod: (New file).
* gm2/pim/pass/settest2.mod: (New file).
* gm2/pim/pass/settest3.mod: (New file).
* gm2/pim/pass/simpleproc.mod: (New file).
* gm2/pim/pass/sizes.mod: (New file).
* gm2/pim/pass/sizetype.mod: (New file).
* gm2/pim/pass/smallset1.mod: (New file).
* gm2/pim/pass/smallset2.mod: (New file).
* gm2/pim/pass/smallset3.mod: (New file).
* gm2/pim/pass/smallset4.mod: (New file).
* gm2/pim/pass/smallset5.mod: (New file).
* gm2/pim/pass/smallset6.mod: (New file).
* gm2/pim/pass/smallset7.mod: (New file).
* gm2/pim/pass/stabs.mod: (New file).
* gm2/pim/pass/stdio.mod: (New file).
* gm2/pim/pass/str1.mod: (New file).
* gm2/pim/pass/str2.mod: (New file).
* gm2/pim/pass/str3.mod: (New file).
* gm2/pim/pass/str4.mod: (New file).
* gm2/pim/pass/str5.mod: (New file).
* gm2/pim/pass/stressset.mod: (New file).
* gm2/pim/pass/stringassign.mod: (New file).
* gm2/pim/pass/stringopaq.mod: (New file).
* gm2/pim/pass/strings.mod: (New file).
* gm2/pim/pass/strparam.def: (New file).
* gm2/pim/pass/strparam.mod: (New file).
* gm2/pim/pass/subrange.mod: (New file).
* gm2/pim/pass/subrange10.mod: (New file).
* gm2/pim/pass/subrange11.mod: (New file).
* gm2/pim/pass/subrange12.mod: (New file).
* gm2/pim/pass/subrange14.mod: (New file).
* gm2/pim/pass/subrange15.mod: (New file).
* gm2/pim/pass/subrange16.mod: (New file).
* gm2/pim/pass/subrange17.mod: (New file).
* gm2/pim/pass/subrange2.mod: (New file).
* gm2/pim/pass/subrange3.mod: (New file).
* gm2/pim/pass/subrange4.mod: (New file).
* gm2/pim/pass/subrange5.mod: (New file).
* gm2/pim/pass/subrange6.mod: (New file).
* gm2/pim/pass/subrange7.mod: (New file).
* gm2/pim/pass/subrange8.mod: (New file).
* gm2/pim/pass/subrange9.mod: (New file).
* gm2/pim/pass/test2recursive.mod: (New file).
* gm2/pim/pass/testabs.mod: (New file).
* gm2/pim/pass/testbuiltin.mod: (New file).
* gm2/pim/pass/testbuiltin2.mod: (New file).
* gm2/pim/pass/testbuiltstr.mod: (New file).
* gm2/pim/pass/testcap.mod: (New file).
* gm2/pim/pass/testcap2.mod: (New file).
* gm2/pim/pass/testcard.mod: (New file).
* gm2/pim/pass/testcard2.mod: (New file).
* gm2/pim/pass/testcard3.mod: (New file).
* gm2/pim/pass/testcard4.mod: (New file).
* gm2/pim/pass/testcard5.mod: (New file).
* gm2/pim/pass/testcase.mod: (New file).
* gm2/pim/pass/testcase2.mod: (New file).
* gm2/pim/pass/testcase3.mod: (New file).
* gm2/pim/pass/testcase4.mod: (New file).
* gm2/pim/pass/testchar.mod: (New file).
* gm2/pim/pass/testfloat.mod: (New file).
* gm2/pim/pass/testfloat2.mod: (New file).
* gm2/pim/pass/testfloat3.mod: (New file).
* gm2/pim/pass/testfloat4.mod: (New file).
* gm2/pim/pass/testfor.mod: (New file).
* gm2/pim/pass/testimpvar.mod: (New file).
* gm2/pim/pass/testlong3.mod: (New file).
* gm2/pim/pass/testmod.mod: (New file).
* gm2/pim/pass/testmod2.mod: (New file).
* gm2/pim/pass/testodd.mod: (New file).
* gm2/pim/pass/testopaque.mod: (New file).
* gm2/pim/pass/testopaque2.mod: (New file).
* gm2/pim/pass/testopaque3.mod: (New file).
* gm2/pim/pass/testord.mod: (New file).
* gm2/pim/pass/testparam.mod: (New file).
* gm2/pim/pass/testparam2.mod: (New file).
* gm2/pim/pass/testparam3.mod: (New file).
* gm2/pim/pass/testpimsize.mod: (New file).
* gm2/pim/pass/testrecursive.def: (New file).
* gm2/pim/pass/testrecursive.mod: (New file).
* gm2/pim/pass/testreturnstr.mod: (New file).
* gm2/pim/pass/testset.mod: (New file).
* gm2/pim/pass/testshort.mod: (New file).
* gm2/pim/pass/testsinf.mod: (New file).
* gm2/pim/pass/testsinl.mod: (New file).
* gm2/pim/pass/testsize.mod: (New file).
* gm2/pim/pass/testvar.mod: (New file).
* gm2/pim/pass/testvarin.mod: (New file).
* gm2/pim/pass/timeio.mod: (New file).
* gm2/pim/pass/timeio2.mod: (New file).
* gm2/pim/pass/timeio3.mod: (New file).
* gm2/pim/pass/timeio4.mod: (New file).
* gm2/pim/pass/timeio5.mod: (New file).
* gm2/pim/pass/timeio6.mod: (New file).
* gm2/pim/pass/timeio7.mod: (New file).
* gm2/pim/pass/timeio8.mod: (New file).
* gm2/pim/pass/timeio9.mod: (New file).
* gm2/pim/pass/tinyalloc.mod: (New file).
* gm2/pim/pass/tinyarray.mod: (New file).
* gm2/pim/pass/tinyarray2.mod: (New file).
* gm2/pim/pass/tinyarray3.mod: (New file).
* gm2/pim/pass/tinyarray4.mod: (New file).
* gm2/pim/pass/tinyarray5.mod: (New file).
* gm2/pim/pass/tinyarray6.mod: (New file).
* gm2/pim/pass/tinyassign.def: (New file).
* gm2/pim/pass/tinyassign.mod: (New file).
* gm2/pim/pass/tinyassign2.mod: (New file).
* gm2/pim/pass/tinyassign3.mod: (New file).
* gm2/pim/pass/tinyassign4.mod: (New file).
* gm2/pim/pass/tinyassign5.mod: (New file).
* gm2/pim/pass/tinybitset.mod: (New file).
* gm2/pim/pass/tinyelse.mod: (New file).
* gm2/pim/pass/tinyenum.mod: (New file).
* gm2/pim/pass/tinyfor.mod: (New file).
* gm2/pim/pass/tinyfor2.mod: (New file).
* gm2/pim/pass/tinyfor3.mod: (New file).
* gm2/pim/pass/tinyhalt.mod: (New file).
* gm2/pim/pass/tinyhello.mod: (New file).
* gm2/pim/pass/tinyif.mod: (New file).
* gm2/pim/pass/tinyif2.mod: (New file).
* gm2/pim/pass/tinyif3.mod: (New file).
* gm2/pim/pass/tinyif4.mod: (New file).
* gm2/pim/pass/tinyif5.mod: (New file).
* gm2/pim/pass/tinyif6.mod: (New file).
* gm2/pim/pass/tinyif7.mod: (New file).
* gm2/pim/pass/tinyif8.mod: (New file).
* gm2/pim/pass/tinyimp.mod: (New file).
* gm2/pim/pass/tinylit.mod: (New file).
* gm2/pim/pass/tinylit2.mod: (New file).
* gm2/pim/pass/tinymax.mod: (New file).
* gm2/pim/pass/tinymod.mod: (New file).
* gm2/pim/pass/tinynode.mod: (New file).
* gm2/pim/pass/tinyparam.mod: (New file).
* gm2/pim/pass/tinyparam2.mod: (New file).
* gm2/pim/pass/tinyplus.mod: (New file).
* gm2/pim/pass/tinyproc.mod: (New file).
* gm2/pim/pass/tinyproc2.mod: (New file).
* gm2/pim/pass/tinyproc3.mod: (New file).
* gm2/pim/pass/tinyproc4.mod: (New file).
* gm2/pim/pass/tinyproc5.mod: (New file).
* gm2/pim/pass/tinyproc6.mod: (New file).
* gm2/pim/pass/tinyptr.mod: (New file).
* gm2/pim/pass/tinyreal.mod: (New file).
* gm2/pim/pass/tinyrecord.mod: (New file).
* gm2/pim/pass/tinyrepeat.mod: (New file).
* gm2/pim/pass/tinyset6.mod: (New file).
* gm2/pim/pass/tinyset7.mod: (New file).
* gm2/pim/pass/tinystate.mod: (New file).
* gm2/pim/pass/tinysub.def: (New file).
* gm2/pim/pass/tinytest.mod: (New file).
* gm2/pim/pass/tinytrue.mod: (New file).
* gm2/pim/pass/tinyvar.mod: (New file).
* gm2/pim/pass/tinyvar2.mod: (New file).
* gm2/pim/pass/tinyvar3.mod: (New file).
* gm2/pim/pass/tinyvar4.mod: (New file).
* gm2/pim/pass/tinyvar5.mod: (New file).
* gm2/pim/pass/tinyvarient.mod: (New file).
* gm2/pim/pass/tinyvarient2.mod: (New file).
* gm2/pim/pass/tinyvarient3.def: (New file).
* gm2/pim/pass/tinyvarient3.mod: (New file).
* gm2/pim/pass/tinyvarient4.mod: (New file).
* gm2/pim/pass/tinyvarient5.mod: (New file).
* gm2/pim/pass/tinyvarient6.mod: (New file).
* gm2/pim/pass/tinywhile.mod: (New file).
* gm2/pim/pass/tinywith.mod: (New file).
* gm2/pim/pass/tinywith2.mod: (New file).
* gm2/pim/pass/tinywith3.mod: (New file).
* gm2/pim/pass/tinywith4.mod: (New file).
* gm2/pim/pass/tinywith5.mod: (New file).
* gm2/pim/pass/tinywith6.mod: (New file).
* gm2/pim/pass/trunc.mod: (New file).
* gm2/pim/pass/try: (New file).
* gm2/pim/pass/typeequiv.mod: (New file).
* gm2/pim/pass/typeequiv2.mod: (New file).
* gm2/pim/pass/typeequiv3.mod: (New file).
* gm2/pim/pass/typeonly.def: (New file).
* gm2/pim/pass/typeonly.mod: (New file).
* gm2/pim/pass/typesize.mod: (New file).
* gm2/pim/pass/unbounded.mod: (New file).
* gm2/pim/pass/unbounded2.mod: (New file).
* gm2/pim/pass/unbounded3.mod: (New file).
* gm2/pim/pass/v.def: (New file).
* gm2/pim/pass/varaddress.mod: (New file).
* gm2/pim/pass/varaddress2.mod: (New file).
* gm2/pim/pass/varaddress3.mod: (New file).
* gm2/pim/pass/varcard.mod: (New file).
* gm2/pim/pass/variant9.mod: (New file).
* gm2/pim/pass/varient.mod: (New file).
* gm2/pim/pass/varient2.mod: (New file).
* gm2/pim/pass/varient3.mod: (New file).
* gm2/pim/pass/varient4.mod: (New file).
* gm2/pim/pass/varient5.mod: (New file).
* gm2/pim/pass/varient6.mod: (New file).
* gm2/pim/pass/varient7.mod: (New file).
* gm2/pim/pass/varient8.mod: (New file).
* gm2/pim/pass/varin.def: (New file).
* gm2/pim/pass/varin.mod: (New file).
* gm2/pim/pass/varint.mod: (New file).
* gm2/pim/pass/wincat.mod: (New file).
* gm2/pim/pass/with.mod: (New file).
* gm2/pim/pass/wordconst.mod: (New file).
* gm2/pim/run/fail/case.mod: (New file).
* gm2/pim/run/fail/nil.mod: (New file).
* gm2/pim/run/fail/pim-run-fail.exp: (New file).
* gm2/pim/run/pass/Countdown.mod: (New file).
* gm2/pim/run/pass/EndFor.def: (New file).
* gm2/pim/run/pass/EndFor.mod: (New file).
* gm2/pim/run/pass/EnumTest.mod: (New file).
* gm2/pim/run/pass/For1.mod: (New file).
* gm2/pim/run/pass/For10.mod: (New file).
* gm2/pim/run/pass/For11.mod: (New file).
* gm2/pim/run/pass/For12.mod: (New file).
* gm2/pim/run/pass/For2.mod: (New file).
* gm2/pim/run/pass/For3.mod: (New file).
* gm2/pim/run/pass/For4.mod: (New file).
* gm2/pim/run/pass/For5.mod: (New file).
* gm2/pim/run/pass/For6.mod: (New file).
* gm2/pim/run/pass/For7.mod: (New file).
* gm2/pim/run/pass/For8.mod: (New file).
* gm2/pim/run/pass/For9.mod: (New file).
* gm2/pim/run/pass/FpuIOBug.mod: (New file).
* gm2/pim/run/pass/MaxReal.mod: (New file).
* gm2/pim/run/pass/MaxReal2.mod: (New file).
* gm2/pim/run/pass/TestLong.mod: (New file).
* gm2/pim/run/pass/TestLong2.mod: (New file).
* gm2/pim/run/pass/TestLong4.mod: (New file).
* gm2/pim/run/pass/TestLong5.mod: (New file).
* gm2/pim/run/pass/addrarray.mod: (New file).
* gm2/pim/run/pass/arraychar.mod: (New file).
* gm2/pim/run/pass/arraychar2.mod: (New file).
* gm2/pim/run/pass/arrayrecord.mod: (New file).
* gm2/pim/run/pass/bitsettest.def: (New file).
* gm2/pim/run/pass/bitsettest.mod: (New file).
* gm2/pim/run/pass/bytearray.mod: (New file).
* gm2/pim/run/pass/constdynstr.mod: (New file).
* gm2/pim/run/pass/conststr.mod: (New file).
* gm2/pim/run/pass/conststr2.mod: (New file).
* gm2/pim/run/pass/cycles.mod: (New file).
* gm2/pim/run/pass/dec.mod: (New file).
* gm2/pim/run/pass/enums.mod: (New file).
* gm2/pim/run/pass/incsubrange.def: (New file).
* gm2/pim/run/pass/incsubrange.mod: (New file).
* gm2/pim/run/pass/index3.mod: (New file).
* gm2/pim/run/pass/int16.mod: (New file).
* gm2/pim/run/pass/int32.mod: (New file).
* gm2/pim/run/pass/int8.mod: (New file).
* gm2/pim/run/pass/line.mod: (New file).
* gm2/pim/run/pass/long.mod: (New file).
* gm2/pim/run/pass/longfor.mod: (New file).
* gm2/pim/run/pass/longtypes10.mod: (New file).
* gm2/pim/run/pass/longtypes7.mod: (New file).
* gm2/pim/run/pass/longtypes8.mod: (New file).
* gm2/pim/run/pass/longtypes9.mod: (New file).
* gm2/pim/run/pass/math.mod: (New file).
* gm2/pim/run/pass/math2.mod: (New file).
* gm2/pim/run/pass/mathconst.mod: (New file).
* gm2/pim/run/pass/minhello.mod: (New file).
* gm2/pim/run/pass/minimal.mod: (New file).
* gm2/pim/run/pass/nestedproc.mod: (New file).
* gm2/pim/run/pass/nestedproc2.mod: (New file).
* gm2/pim/run/pass/nestedproc3.mod: (New file).
* gm2/pim/run/pass/nestedproc4.mod: (New file).
* gm2/pim/run/pass/nestedproc5.mod: (New file).
* gm2/pim/run/pass/nestedproc6.mod: (New file).
* gm2/pim/run/pass/nestedproc7.mod: (New file).
* gm2/pim/run/pass/nestedwith.mod: (New file).
* gm2/pim/run/pass/nestedwith2.mod: (New file).
* gm2/pim/run/pass/nestedwith3.mod: (New file).
* gm2/pim/run/pass/nothing.mod: (New file).
* gm2/pim/run/pass/pim-run-pass.exp: (New file).
* gm2/pim/run/pass/prog31ex.mod: (New file).
* gm2/pim/run/pass/rts.mod: (New file).
* gm2/pim/run/pass/setcritical.mod: (New file).
* gm2/pim/run/pass/setequiv.mod: (New file).
* gm2/pim/run/pass/str6.mod: (New file).
* gm2/pim/run/pass/stringaddr.mod: (New file).
* gm2/pim/run/pass/stringaddr2.def: (New file).
* gm2/pim/run/pass/stringaddr2.mod: (New file).
* gm2/pim/run/pass/stripped.mod: (New file).
* gm2/pim/run/pass/sys.def: (New file).
* gm2/pim/run/pass/sys.mod: (New file).
* gm2/pim/run/pass/t.def: (New file).
* gm2/pim/run/pass/testaddr.mod: (New file).
* gm2/pim/run/pass/testaddr2.mod: (New file).
* gm2/pim/run/pass/testaddr3.mod: (New file).
* gm2/pim/run/pass/testarray.mod: (New file).
* gm2/pim/run/pass/testarray2.mod: (New file).
* gm2/pim/run/pass/testarray3.mod: (New file).
* gm2/pim/run/pass/testarray4.mod: (New file).
* gm2/pim/run/pass/testarray5.mod: (New file).
* gm2/pim/run/pass/testavail.mod: (New file).
* gm2/pim/run/pass/testdiv.mod: (New file).
* gm2/pim/run/pass/testfpufunc.mod: (New file).
* gm2/pim/run/pass/testfpufunc2.mod: (New file).
* gm2/pim/run/pass/testlarge.mod: (New file).
* gm2/pim/run/pass/testlarge2.mod: (New file).
* gm2/pim/run/pass/testnextproc.mod: (New file).
* gm2/pim/run/pass/testparam.mod: (New file).
* gm2/pim/run/pass/testreturnstr.mod: (New file).
* gm2/pim/run/pass/testreturnstr2.mod: (New file).
* gm2/pim/run/pass/testreturnstr3.def: (New file).
* gm2/pim/run/pass/testreturnstr3.mod: (New file).
* gm2/pim/run/pass/testsize.mod: (New file).
* gm2/pim/run/pass/testsize2.mod: (New file).
* gm2/pim/run/pass/testsize3.mod: (New file).
* gm2/pim/run/pass/testsize4.mod: (New file).
* gm2/pim/run/pass/testtbitsize.mod: (New file).
* gm2/pim/run/pass/tinywith.mod: (New file).
* gm2/pim/run/pass/unbounded.mod: (New file).
* gm2/pim/run/pass/varaddress3.mod: (New file).
* gm2/pim/run/pass/varparam2.mod: (New file).
* gm2/pim/run/pass/varparam3.mod: (New file).
* gm2/pim/run/pass/varparm.mod: (New file).
* gm2/pim/run/pass/wr.mod: (New file).
* gm2/pimcoroutines/pass/imports.mod: (New file).
* gm2/pimcoroutines/pass/imports2.mod: (New file).
* gm2/pimcoroutines/pass/pimcoroutines-pass.exp: (New file).
* gm2/pimcoroutines/run/pass/pimcoroutines-run-pass.exp: (New file).
* gm2/pimcoroutines/run/pass/testtime.mod: (New file).
* gm2/pimlib/base/run/pass/FIO.mod: (New file).
* gm2/pimlib/base/run/pass/StrLib.mod: (New file).
* gm2/pimlib/base/run/pass/pimlib-base-run-pass.exp: (New file).
* gm2/pimlib/base/run/pass/testconvert.mod: (New file).
* gm2/pimlib/coroutines/pass/pimlib-coroutines-pass.exp: (New file).
* gm2/pimlib/coroutines/pass/priority.mod: (New file).
* gm2/pimlib/coroutines/pass/priority2.mod: (New file).
* gm2/pimlib/coroutines/pass/priority3.def: (New file).
* gm2/pimlib/coroutines/pass/priority3.mod: (New file).
* gm2/pimlib/logitech/pass/LogitechLong.mod: (New file).
* gm2/pimlib/logitech/pass/hello.mod: (New file).
* gm2/pimlib/logitech/pass/pimlib-logitech-pass.exp: (New file).
* gm2/pimlib/logitech/run/pass/bbits.mod: (New file).
* gm2/pimlib/logitech/run/pass/hello.mod: (New file).
* gm2/pimlib/logitech/run/pass/helloinout.mod: (New file).
* gm2/pimlib/logitech/run/pass/intb.mod: (New file).
* gm2/pimlib/logitech/run/pass/pimlib-logitech-run-pass.exp: (New file).
* gm2/pimlib/logitech/run/pass/realconv.mod: (New file).
* gm2/pimlib/logitech/run/pass/realinput.mod: (New file).
* gm2/pimlib/logitech/run/pass/realinput2.mod: (New file).
* gm2/pimlib/logitech/run/pass/realinput3.mod: (New file).
* gm2/pimlib/logitech/run/pass/rename.mod: (New file).
* gm2/pimlib/logitech/run/pass/timedate.mod: (New file).
* gm2/pimlib/logitech/run/pass/writeoct.mod: (New file).
* gm2/pimlib/pass/pimlib-pass.exp: (New file).
* gm2/pimlib/run/pass/format.mod: (New file).
* gm2/pimlib/run/pass/limittests.c: (New file).
* gm2/pimlib/run/pass/limittests.mod: (New file).
* gm2/pimlib/run/pass/longreal.mod: (New file).
* gm2/pimlib/run/pass/pimlib-run-pass.exp: (New file).
* gm2/pimlib/run/pass/test.c: (New file).
* gm2/pimlib/run/pass/testreal.mod: (New file).
* gm2/pimlib/run/pass/testreal2.mod: (New file).
* gm2/pimlib/run/pass/testreal4.mod: (New file).
* gm2/projects/README: (New file).
* gm2/projects/iso/run/pass/halma/halma.mod: (New file).
* gm2/projects/iso/run/pass/halma/projects-iso-run-pass-halma.exp:
(New file).
* gm2/projects/iso/run/pass/hello/hello.mod: (New file).
* gm2/projects/iso/run/pass/hello/projects-iso-run-pass-hello.exp:
(New file).
* gm2/projects/log/run/pass/hello/hello.mod: (New file).
* gm2/projects/log/run/pass/hello/projects-log-run-pass-hello.exp:
(New file).
* gm2/projects/pim/run/pass/hello/hello.mod: (New file).
* gm2/projects/pim/run/pass/hello/projects-pim-run-pass-hello.exp:
(New file).
* gm2/projects/pim/run/pass/random/AdvMap.def: (New file).
* gm2/projects/pim/run/pass/random/AdvMap.mod: (New file).
* gm2/projects/pim/run/pass/random/BoxMap.def: (New file).
* gm2/projects/pim/run/pass/random/BoxMap.mod: (New file).
* gm2/projects/pim/run/pass/random/Chance.def: (New file).
* gm2/projects/pim/run/pass/random/Chance.mod: (New file).
* gm2/projects/pim/run/pass/random/Geometry.def: (New file).
* gm2/projects/pim/run/pass/random/Geometry.mod: (New file).
* gm2/projects/pim/run/pass/random/MakeBoxes.def: (New file).
* gm2/projects/pim/run/pass/random/MakeBoxes.mod: (New file).
* gm2/projects/pim/run/pass/random/Map.mod: (New file).
* gm2/projects/pim/run/pass/random/MapOptions.def: (New file).
* gm2/projects/pim/run/pass/random/MapOptions.mod: (New file).
* gm2/projects/pim/run/pass/random/Options.def: (New file).
* gm2/projects/pim/run/pass/random/Options.mod: (New file).
* gm2/projects/pim/run/pass/random/RoomMap.def: (New file).
* gm2/projects/pim/run/pass/random/RoomMap.mod: (New file).
* gm2/projects/pim/run/pass/random/StoreCoords.def: (New file).
* gm2/projects/pim/run/pass/random/StoreCoords.mod: (New file).
* gm2/projects/pim/run/pass/random/WriteMap.def: (New file).
* gm2/projects/pim/run/pass/random/WriteMap.mod: (New file).
* gm2/projects/pim/run/pass/random/projects-pim-run-pass-random.exp:
(New file).
* gm2/quads/run/pass/becomes.mod: (New file).
* gm2/quads/run/pass/param.mod: (New file).
* gm2/quads/run/pass/quads-run-pass.exp: (New file).
* gm2/quads/run/pass/return.mod: (New file).
* gm2/recover/pass/cannot-solve/begin.mod: (New file).
* gm2/recover/pass/cannot-solve/statementsemi.mod: (New file).
* gm2/recover/pass/end2.mod: (New file).
* gm2/recover/pass/of.mod: (New file).
* gm2/recover/pass/procsemi.mod: (New file).
* gm2/recover/pass/recover-pass.exp: (New file).
* gm2/recover/pass/rrbra.mod: (New file).
* gm2/recover/pass/rsbra.mod: (New file).
* gm2/recover/pass/semi.mod: (New file).
* gm2/run/fail/list.mod: (New file).
* gm2/run/fail/options: (New file).
* gm2/run/fail/testdec.mod: (New file).
* gm2/run/fail/testfunc.mod: (New file).
* gm2/run/pass/cycles.mod: (New file).
* gm2/run/pass/line.mod: (New file).
* gm2/run/pass/nestedproc.mod: (New file).
* gm2/run/pass/nestedproc2.mod: (New file).
* gm2/run/pass/nestedproc3.mod: (New file).
* gm2/run/pass/nestedproc5.mod: (New file).
* gm2/run/pass/nestedset.mod: (New file).
* gm2/run/pass/nothing.mod: (New file).
* gm2/run/pass/options: (New file).
* gm2/run/pass/prog31ex.mod: (New file).
* gm2/run/pass/rts.mod: (New file).
* gm2/run/pass/stripped.mod: (New file).
* gm2/run/pass/testavail.mod: (New file).
* gm2/run/pass/testfpufunc.mod: (New file).
* gm2/run/pass/testfpufunc2.mod: (New file).
* gm2/run/pass/testnextproc.mod: (New file).
* gm2/run/pass/testparam.mod: (New file).
* gm2/run/pass/testsize.mod: (New file).
* gm2/run/pass/testsize2.mod: (New file).
* gm2/run/pass/testsize3.mod: (New file).
* gm2/run/pass/wr.mod: (New file).
* gm2/scripts/addit: (New file).
* gm2/scripts/comp: (New file).
* gm2/scripts/compile: (New file).
* gm2/scripts/compileiso: (New file).
* gm2/scripts/link: (New file).
* gm2/scripts/regression: (New file).
* gm2/scripts/subit: (New file).
* gm2/sets/run/pass/multisetarith.mod: (New file).
* gm2/sets/run/pass/multisetarith2.mod: (New file).
* gm2/sets/run/pass/multisetarith3.mod: (New file).
* gm2/sets/run/pass/multisetarith4.mod: (New file).
* gm2/sets/run/pass/multisetrotate.mod: (New file).
* gm2/sets/run/pass/multisetrotate2.mod: (New file).
* gm2/sets/run/pass/multisetrotate3.mod: (New file).
* gm2/sets/run/pass/multisetrotate4.mod: (New file).
* gm2/sets/run/pass/multisetshift.mod: (New file).
* gm2/sets/run/pass/multisetshift2.mod: (New file).
* gm2/sets/run/pass/multisimple.mod: (New file).
* gm2/sets/run/pass/multisimple2.mod: (New file).
* gm2/sets/run/pass/multisimple3.mod: (New file).
* gm2/sets/run/pass/multisimple4.mod: (New file).
* gm2/sets/run/pass/multisimple5.mod: (New file).
* gm2/sets/run/pass/multisimple6.mod: (New file).
* gm2/sets/run/pass/multisimple7.mod: (New file).
* gm2/sets/run/pass/setarith.mod: (New file).
* gm2/sets/run/pass/setarith2.mod: (New file).
* gm2/sets/run/pass/setarith3.mod: (New file).
* gm2/sets/run/pass/setarith4.mod: (New file).
* gm2/sets/run/pass/setrotate.mod: (New file).
* gm2/sets/run/pass/setrotate2.mod: (New file).
* gm2/sets/run/pass/setrotate3.mod: (New file).
* gm2/sets/run/pass/setrotate4.mod: (New file).
* gm2/sets/run/pass/sets-run-pass.exp: (New file).
* gm2/sets/run/pass/setshift.mod: (New file).
* gm2/sets/run/pass/setshift2.mod: (New file).
* gm2/sets/run/pass/simple.mod: (New file).
* gm2/sets/run/pass/simple2.mod: (New file).
* gm2/sets/run/pass/simple3.mod: (New file).
* gm2/sets/run/pass/simple4.mod: (New file).
* gm2/sets/run/pass/simple5.mod: (New file).
* gm2/sets/run/pass/simple6.mod: (New file).
* gm2/sets/run/pass/simple7.mod: (New file).
* gm2/switches/auto-init/fail/switches-auto-init-fail.exp: (New file).
* gm2/switches/auto-init/fail/uninitptr.mod: (New file).
* gm2/switches/auto-init/fail/uninitptr2.mod: (New file).
* gm2/switches/check-all/pim2/fail/overflow.mod: (New file).
* gm2/switches/check-all/pim2/fail/overflow2.mod: (New file).
* gm2/switches/check-all/pim2/fail/overflowdiv1.mod: (New file).
* gm2/switches/check-all/pim2/fail/switches-check-all-pim2-fail.exp:
(New file).
* gm2/switches/check-all/plugin/iso/fail/divceilposneg.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divceilposneg2.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divceilposnegcall.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divceilposnegcall2.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divfloornegpos.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/divfloorpospos.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/lowdiv.mod: (New file).
* gm2/switches/check-all/plugin/iso/fail/switches-check-all-plugin-iso-fail.exp:
(New file).
* gm2/switches/check-all/plugin/pim2/fail/divceil.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/highdiv.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/modulus.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin1.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin3.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin4.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin4.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin5.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin5.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin6.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin6.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin7.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin7.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin8.def: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin8.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/plugin9.mod: (New file).
* gm2/switches/check-all/plugin/pim2/fail/switches-check-all-plugin-pim2-fail.exp:
(New file).
* gm2/switches/check-all/run/fail/cardrange.mod: (New file).
* gm2/switches/check-all/run/fail/cardrange2.mod: (New file).
* gm2/switches/check-all/run/fail/cardrange3.mod: (New file).
* gm2/switches/check-all/run/fail/intrange.mod: (New file).
* gm2/switches/check-all/run/fail/intrange2.mod: (New file).
* gm2/switches/check-all/run/fail/intrange3.mod: (New file).
* gm2/switches/check-all/run/fail/intrange4.mod: (New file).
* gm2/switches/check-all/run/fail/intrange5.mod: (New file).
* gm2/switches/check-all/run/fail/multint1.mod: (New file).
* gm2/switches/check-all/run/fail/multint2.mod: (New file).
* gm2/switches/check-all/run/fail/multint3.mod: (New file).
* gm2/switches/check-all/run/fail/rangesupport.def: (New file).
* gm2/switches/check-all/run/fail/rangesupport.mod: (New file).
* gm2/switches/check-all/run/fail/realrange.mod: (New file).
* gm2/switches/check-all/run/fail/subrange.mod: (New file).
* gm2/switches/check-all/run/fail/switches-check-all-run-fail.exp:
(New file).
* gm2/switches/check-all/run/fail/tinyrange.mod: (New file).
* gm2/switches/check-all/run/pass/cardrange.mod: (New file).
* gm2/switches/check-all/run/pass/forcheck.mod: (New file).
* gm2/switches/check-all/run/pass/subrange.mod: (New file).
* gm2/switches/check-all/run/pass/switches-check-all-run-pass.exp:
(New file).
* gm2/switches/extended-opaque/fail/a.def: (New file).
* gm2/switches/extended-opaque/fail/a.mod: (New file).
* gm2/switches/extended-opaque/fail/switches-extended-opaque-fail.exp:
(New file).
* gm2/switches/extended-opaque/pass/a.def: (New file).
* gm2/switches/extended-opaque/pass/a.mod: (New file).
* gm2/switches/extended-opaque/pass/b.mod: (New file).
* gm2/switches/extended-opaque/pass/switches-extended-opaque-pass.exp:
(New file).
* gm2/switches/iso/run/pass/modulus.mod: (New file).
* gm2/switches/iso/run/pass/modulus4.mod: (New file).
* gm2/switches/iso/run/pass/switches-iso-run-pass.exp: (New file).
* gm2/switches/makeall/fail/switches-makeall-fail.exp: (New file).
* gm2/switches/makeall/fail/test.def: (New file).
* gm2/switches/makeall/fail/test.mod: (New file).
* gm2/switches/makeall/pass/switches-makeall-pass.exp: (New file).
* gm2/switches/makeall/pass/test.def: (New file).
* gm2/switches/makeall/pass/test.mod: (New file).
* gm2/switches/none/run/pass/gm2-none.exp: (New file).
* gm2/switches/none/run/pass/hello.mod: (New file).
* gm2/switches/optimization/run/pass/fact.mod: (New file).
* gm2/switches/optimization/run/pass/switches-optimization-run-pass.exp:
(New file).
* gm2/switches/pedantic-params/fail/a.def: (New file).
* gm2/switches/pedantic-params/fail/a.mod: (New file).
* gm2/switches/pedantic-params/fail/switches-pedantic-params-fail.exp:
(New file).
* gm2/switches/pedantic-params/pass/Strings.def: (New file).
* gm2/switches/pedantic-params/pass/Strings.mod: (New file).
* gm2/switches/pedantic-params/pass/Strings2.def: (New file).
* gm2/switches/pedantic-params/pass/Strings2.mod: (New file).
* gm2/switches/pedantic-params/pass/switches-pedantic-params-pass.exp:
(New file).
* gm2/switches/pedantic/fail/onlywrite.mod: (New file).
* gm2/switches/pedantic/fail/readb4.mod: (New file).
* gm2/switches/pic/run/pass/func.c: (New file).
* gm2/switches/pic/run/pass/func.mod: (New file).
* gm2/switches/pic/run/pass/func2.c: (New file).
* gm2/switches/pic/run/pass/func2.mod: (New file).
* gm2/switches/pic/run/pass/switches-pic-run-pass.exp: (New file).
* gm2/switches/pim2/run/pass/modulus.mod: (New file).
* gm2/switches/pim2/run/pass/switches-pim2-run-pass.exp: (New file).
* gm2/switches/pim3/run/pass/modulus.mod: (New file).
* gm2/switches/pim3/run/pass/switches-pim3-run-pass.exp: (New file).
* gm2/switches/pim4/run/pass/FpuIOBug.mod: (New file).
* gm2/switches/pim4/run/pass/InOutBug.mod: (New file).
* gm2/switches/pim4/run/pass/NumberIOBug.mod: (New file).
* gm2/switches/pim4/run/pass/modulus.mod: (New file).
* gm2/switches/pim4/run/pass/modulus2.mod: (New file).
* gm2/switches/pim4/run/pass/switches-pim4-run-pass.exp: (New file).
* gm2/switches/whole-program/pass/run/hello.mod: (New file).
* gm2/switches/whole-program/pass/run/hello2.mod: (New file).
* gm2/switches/whole-program/pass/run/switches-whole-program-pass-run.exp:
(New file).
* gm2/switches/whole-program/pass/run/tiny.mod: (New file).
* gm2/switches/whole-program/pass/run/tiny2.mod: (New file).
* gm2/types/bitset.mod: (New file).
* gm2/types/bitset2.mod: (New file).
* gm2/types/bitset3.mod: (New file).
* gm2/types/charset.mod: (New file).
* gm2/types/const.mod: (New file).
* gm2/types/prog35.mod: (New file).
* gm2/types/real.mod: (New file).
* gm2/types/run/pass/d.c: (New file).
* gm2/types/run/pass/d.def: (New file).
* gm2/types/run/pass/types-run-pass.exp: (New file).
* gm2/types/run/pass/varient4.mod: (New file).
* gm2/types/run/pass/varient5.mod: (New file).
* gm2/types/string.mod: (New file).
* gm2/types/type1.mod: (New file).
* gm2/types/type2.mod: (New file).
* gm2/types/type3.mod: (New file).
* gm2/types/type4.mod: (New file).
* gm2/types/varient.mod: (New file).
* gm2/types/word.mod: (New file).
* gm2/ulmlib/pass/ulmlib-pass.exp: (New file).
* gm2/ulmlib/std/pass/ulmlib-std-pass.exp: (New file).
* gm2/ulmlib/sys/pass/ulmlib-sys-pass.exp: (New file).
* gm2/warnings/todo/nestedproc6.mod: (New file).
* gm2/warnings/todo/options: (New file).
* gm2/warnings/todo/testfor.mod: (New file).
* gm2/warnings/todo/testfor2.mod: (New file).
* gm2/warnings/todo/testfor3.mod: (New file).
* gm2/warnings/todo/testkeywords.mod: (New file).
* gm2/warnings/todo/testloop.mod: (New file).
* gm2/warnings/todo/testscope.mod: (New file).
* gm2/warnings/todo/testscope2.mod: (New file).
* gm2/x86-asm/asm.mod: (New file).
* gm2/x86-asm/asm2.mod: (New file).
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
Diffstat (limited to 'libgm2/libm2pim')
-rw-r--r-- | libgm2/libm2pim/Makefile.am | 209 | ||||
-rw-r--r-- | libgm2/libm2pim/Makefile.in | 912 | ||||
-rw-r--r-- | libgm2/libm2pim/Selective.cc | 319 | ||||
-rw-r--r-- | libgm2/libm2pim/SysExceptions.cc | 259 | ||||
-rw-r--r-- | libgm2/libm2pim/UnixArgs.cc | 91 | ||||
-rw-r--r-- | libgm2/libm2pim/cgetopt.cc | 158 | ||||
-rw-r--r-- | libgm2/libm2pim/dtoa.cc | 265 | ||||
-rw-r--r-- | libgm2/libm2pim/errno.cc | 70 | ||||
-rw-r--r-- | libgm2/libm2pim/ldtoa.cc | 190 | ||||
-rw-r--r-- | libgm2/libm2pim/sckt.cc | 430 | ||||
-rw-r--r-- | libgm2/libm2pim/target.c | 61 | ||||
-rw-r--r-- | libgm2/libm2pim/termios.cc | 1987 | ||||
-rw-r--r-- | libgm2/libm2pim/wrapc.c | 296 |
13 files changed, 5247 insertions, 0 deletions
diff --git a/libgm2/libm2pim/Makefile.am b/libgm2/libm2pim/Makefile.am new file mode 100644 index 0000000..aa5904b --- /dev/null +++ b/libgm2/libm2pim/Makefile.am @@ -0,0 +1,209 @@ +# Makefile for libm2pim. +# Copyright 2013-2022 Free Software Foundation, Inc. +# +# This file 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 this program; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +SUFFIXES = .c .mod .def .o .obj .lo .a .la + +ACLOCAL_AMFLAGS = -I . -I .. -I ../config + +VPATH = . @srcdir@ @srcdir@/../../gcc/m2/gm2-libs + +# Multilib support. +MAKEOVERRIDES= + +version := $(shell $(CC) -dumpversion) + +# Directory in which the compiler finds libraries etc. +libsubdir = $(libdir)/gcc/$(target_alias)/$(version) +# Used to install the shared libgcc. +slibdir = @slibdir@ + +toolexeclibdir=@toolexeclibdir@ +toolexecdir=@toolexecdir@ +GM2_FOR_TARGET=@GM2_FOR_TARGET@ + +MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) +MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + +MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +inst_libdir = $(libsubdir)$(MULTISUBDIR) +inst_slibdir = $(slibdir)$(MULTIOSSUBDIR) + + +# Work around what appears to be a GNU make bug handling MAKEFLAGS +# values defined in terms of make variables, as is the case for CC and +# friends when we are called from the top level Makefile. +AM_MAKEFLAGS = \ + "GCC_DIR=$(GCC_DIR)" \ + "GM2_SRC=$(GM2_SRC)" \ + "AR_FLAGS=$(AR_FLAGS)" \ + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ + "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ + "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \ + "CFLAGS=$(CFLAGS)" \ + "CXXFLAGS=$(CXXFLAGS)" \ + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ + "INSTALL=$(INSTALL)" \ + "INSTALL_DATA=$(INSTALL_DATA)" \ + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ + "LDFLAGS=$(LDFLAGS)" \ + "LIBCFLAGS=$(LIBCFLAGS)" \ + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ + "MAKE=$(MAKE)" \ + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ + "MULTISUBDIR=$(MULTISUBDIR)" \ + "MULTIOSDIR=$(MULTIOSDIR)" \ + "MULTIBUILDTOP=$(MULTIBUILDTOP)" \ + "MULTIFLAGS=$(MULTIFLAGS)" \ + "PICFLAG=$(PICFLAG)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ + "SHELL=$(SHELL)" \ + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ + "exec_prefix=$(exec_prefix)" \ + "infodir=$(infodir)" \ + "libdir=$(libdir)" \ + "includedir=$(includedir)" \ + "prefix=$(prefix)" \ + "tooldir=$(tooldir)" \ + "AR=$(AR)" \ + "AS=$(AS)" \ + "LD=$(LD)" \ + "RANLIB=$(RANLIB)" \ + "NM=$(NM)" \ + "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ + "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ + "DESTDIR=$(DESTDIR)" \ + "WERROR=$(WERROR)" \ + "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" + +# Subdir rules rely on $(FLAGS_TO_PASS) +FLAGS_TO_PASS = $(AM_MAKEFLAGS) + +if BUILD_PIMLIB +toolexeclib_LTLIBRARIES = libm2pim.la + +M2MODS = ASCII.mod IO.mod \ + Args.mod M2RTS.mod \ + M2Dependent.mod \ + Assertion.mod NumberIO.mod \ + Break.mod SYSTEM.mod \ + CmdArgs.mod Scan.mod \ + StrCase.mod FIO.mod \ + StrIO.mod StrLib.mod \ + TimeString.mod Environment.mod \ + FpuIO.mod Debug.mod \ + SysStorage.mod Storage.mod \ + StdIO.mod SEnvironment.mod \ + DynamicStrings.mod SFIO.mod \ + SArgs.mod SCmdArgs.mod \ + PushBackInput.mod \ + StringConvert.mod FormatStrings.mod \ + Builtins.mod MathLib0.mod \ + M2EXCEPTION.mod RTExceptions.mod \ + SMathLib0.mod RTint.mod \ + Indexing.mod \ + LMathLib0.mod LegacyReal.mod \ + MemUtils.mod gdbif.mod \ + GetOpt.mod OptLib.mod + +# COROUTINES.mod has been removed as it is implemented in ../libm2iso. + +M2DEFS = Args.def ASCII.def \ + Assertion.def Break.def \ + Builtins.def cbuiltin.def \ + CmdArgs.def COROUTINES.def \ + cxxabi.def Debug.def \ + dtoa.def DynamicStrings.def \ + Environment.def errno.def \ + FIO.def FormatStrings.def \ + FpuIO.def gdbif.def \ + Indexing.def \ + IO.def ldtoa.def \ + LegacyReal.def libc.def \ + libm.def LMathLib0.def \ + M2Dependent.def \ + M2EXCEPTION.def M2LINK.def \ + M2RTS.def \ + MathLib0.def MemUtils.def \ + NumberIO.def PushBackInput.def \ + RTExceptions.def RTint.def \ + SArgs.def SCmdArgs.def \ + Scan.def \ + sckt.def Selective.def \ + SEnvironment.def SFIO.def \ + SMathLib0.def StdIO.def \ + Storage.def StrCase.def \ + StringConvert.def StrIO.def \ + StrLib.def SysExceptions.def \ + SysStorage.def SYSTEM.def \ + termios.def TimeString.def \ + UnixArgs.def wrapc.def \ + GetOpt.def OptLib.def \ + cgetopt.def + +libm2pim_la_SOURCES = $(M2MODS) \ + UnixArgs.cc \ + Selective.cc sckt.cc \ + errno.cc dtoa.cc \ + ldtoa.cc termios.cc \ + SysExceptions.cc target.c \ + wrapc.c cgetopt.cc + +libm2pimdir = libm2pim +libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES))) +libm2pim_la_CFLAGS = -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso +libm2pim_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -fm2-g -g +libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION) +BUILT_SOURCES = SYSTEM.def +CLEANFILES = SYSTEM.def + +M2LIBDIR = /m2/m2pim/ + +SYSTEM.def: Makefile + bash $(GM2_SRC)/tools-src/makeSystem -fpim \ + $(GM2_SRC)/gm2-libs/SYSTEM.def \ + $(GM2_SRC)/gm2-libs/SYSTEM.mod \ + -I$(GM2_SRC)/gm2-libs \ + "$(GM2_FOR_TARGET)" $@ + +.mod.lo: SYSTEM.def + $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(GM2_FOR_TARGET) -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@ + +.cc.lo: + $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2pim_la_CFLAGS) $< -o $@ + +install-data-local: force + mkdir -p $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR) + $(INSTALL_DATA) .libs/libm2pim.la $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR) + chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2pim.la + $(INSTALL_DATA) .libs/libm2pim.a $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR) + $(RANLIB) $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2pim.a + for i in $(M2DEFS) $(M2MODS) ; do \ + if [ -f $$i ] ; then \ + $(INSTALL_DATA) $$i '$(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)'; \ + elif [ -f @srcdir@/../../gcc/m2/gm2-libs/$$i ] ; then \ + $(INSTALL_DATA) @srcdir@/../../gcc/m2/gm2-libs/$$i '$(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)'; \ + else \ + echo "cannot find $$i" ; exit 1 ; \ + fi ; \ + chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)$$i ; \ + done + +force: + +endif diff --git a/libgm2/libm2pim/Makefile.in b/libgm2/libm2pim/Makefile.in new file mode 100644 index 0000000..ed14837 --- /dev/null +++ b/libgm2/libm2pim/Makefile.in @@ -0,0 +1,912 @@ +# Makefile.in generated by automake 1.15.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2017 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Makefile for libm2pim. +# Copyright 2013-2022 Free Software Foundation, Inc. +# +# This file 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 this program; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = libm2pim +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/../libtool.m4 \ + $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ + $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ + $(top_srcdir)/../config/acx.m4 \ + $(top_srcdir)/../config/depstand.m4 \ + $(top_srcdir)/../config/lead-dot.m4 \ + $(top_srcdir)/../config/multi.m4 \ + $(top_srcdir)/../config/no-executables.m4 \ + $(top_srcdir)/../config/override.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am +mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(toolexeclibdir)" +LTLIBRARIES = $(toolexeclib_LTLIBRARIES) +libm2pim_la_LIBADD = +@BUILD_PIMLIB_TRUE@am__objects_1 = ASCII.lo IO.lo Args.lo M2RTS.lo \ +@BUILD_PIMLIB_TRUE@ M2Dependent.lo Assertion.lo NumberIO.lo \ +@BUILD_PIMLIB_TRUE@ Break.lo SYSTEM.lo CmdArgs.lo Scan.lo \ +@BUILD_PIMLIB_TRUE@ StrCase.lo FIO.lo StrIO.lo StrLib.lo \ +@BUILD_PIMLIB_TRUE@ TimeString.lo Environment.lo FpuIO.lo \ +@BUILD_PIMLIB_TRUE@ Debug.lo SysStorage.lo Storage.lo StdIO.lo \ +@BUILD_PIMLIB_TRUE@ SEnvironment.lo DynamicStrings.lo SFIO.lo \ +@BUILD_PIMLIB_TRUE@ SArgs.lo SCmdArgs.lo PushBackInput.lo \ +@BUILD_PIMLIB_TRUE@ StringConvert.lo FormatStrings.lo \ +@BUILD_PIMLIB_TRUE@ Builtins.lo MathLib0.lo M2EXCEPTION.lo \ +@BUILD_PIMLIB_TRUE@ RTExceptions.lo SMathLib0.lo RTint.lo \ +@BUILD_PIMLIB_TRUE@ Indexing.lo LMathLib0.lo LegacyReal.lo \ +@BUILD_PIMLIB_TRUE@ MemUtils.lo gdbif.lo GetOpt.lo OptLib.lo +@BUILD_PIMLIB_TRUE@am_libm2pim_la_OBJECTS = $(am__objects_1) \ +@BUILD_PIMLIB_TRUE@ UnixArgs.lo Selective.lo sckt.lo errno.lo \ +@BUILD_PIMLIB_TRUE@ dtoa.lo ldtoa.lo termios.lo \ +@BUILD_PIMLIB_TRUE@ SysExceptions.lo libm2pim_la-target.lo \ +@BUILD_PIMLIB_TRUE@ libm2pim_la-wrapc.lo cgetopt.lo +libm2pim_la_OBJECTS = $(am_libm2pim_la_OBJECTS) +@BUILD_PIMLIB_TRUE@am_libm2pim_la_rpath = -rpath $(toolexeclibdir) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/../depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(libm2pim_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +VPATH = . @srcdir@ @srcdir@/../../gcc/m2/gm2-libs +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CC_FOR_BUILD = @CC_FOR_BUILD@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GM2_FOR_TARGET = @GM2_FOR_TARGET@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_libsubdir = @build_libsubdir@ +build_os = @build_os@ +build_subdir = @build_subdir@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_noncanonical = @host_noncanonical@ +host_os = @host_os@ +host_subdir = @host_subdir@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +libtool_VERSION = @libtool_VERSION@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +multi_basedir = @multi_basedir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +# Used to install the shared libgcc. +slibdir = @slibdir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_noncanonical = @target_noncanonical@ +target_os = @target_os@ +target_subdir = @target_subdir@ +target_vendor = @target_vendor@ +toolexecdir = @toolexecdir@ +toolexeclibdir = @toolexeclibdir@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUFFIXES = .c .mod .def .o .obj .lo .a .la +ACLOCAL_AMFLAGS = -I . -I .. -I ../config + +# Multilib support. +MAKEOVERRIDES = +version := $(shell $(CC) -dumpversion) + +# Directory in which the compiler finds libraries etc. +libsubdir = $(libdir)/gcc/$(target_alias)/$(version) +MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) +MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) +MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +inst_libdir = $(libsubdir)$(MULTISUBDIR) +inst_slibdir = $(slibdir)$(MULTIOSSUBDIR) + +# Work around what appears to be a GNU make bug handling MAKEFLAGS +# values defined in terms of make variables, as is the case for CC and +# friends when we are called from the top level Makefile. +AM_MAKEFLAGS = \ + "GCC_DIR=$(GCC_DIR)" \ + "GM2_SRC=$(GM2_SRC)" \ + "AR_FLAGS=$(AR_FLAGS)" \ + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ + "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ + "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \ + "CFLAGS=$(CFLAGS)" \ + "CXXFLAGS=$(CXXFLAGS)" \ + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ + "INSTALL=$(INSTALL)" \ + "INSTALL_DATA=$(INSTALL_DATA)" \ + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ + "LDFLAGS=$(LDFLAGS)" \ + "LIBCFLAGS=$(LIBCFLAGS)" \ + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ + "MAKE=$(MAKE)" \ + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ + "MULTISUBDIR=$(MULTISUBDIR)" \ + "MULTIOSDIR=$(MULTIOSDIR)" \ + "MULTIBUILDTOP=$(MULTIBUILDTOP)" \ + "MULTIFLAGS=$(MULTIFLAGS)" \ + "PICFLAG=$(PICFLAG)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ + "SHELL=$(SHELL)" \ + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ + "exec_prefix=$(exec_prefix)" \ + "infodir=$(infodir)" \ + "libdir=$(libdir)" \ + "includedir=$(includedir)" \ + "prefix=$(prefix)" \ + "tooldir=$(tooldir)" \ + "AR=$(AR)" \ + "AS=$(AS)" \ + "LD=$(LD)" \ + "RANLIB=$(RANLIB)" \ + "NM=$(NM)" \ + "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ + "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ + "DESTDIR=$(DESTDIR)" \ + "WERROR=$(WERROR)" \ + "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" + + +# Subdir rules rely on $(FLAGS_TO_PASS) +FLAGS_TO_PASS = $(AM_MAKEFLAGS) +@BUILD_PIMLIB_TRUE@toolexeclib_LTLIBRARIES = libm2pim.la +@BUILD_PIMLIB_TRUE@M2MODS = ASCII.mod IO.mod \ +@BUILD_PIMLIB_TRUE@ Args.mod M2RTS.mod \ +@BUILD_PIMLIB_TRUE@ M2Dependent.mod \ +@BUILD_PIMLIB_TRUE@ Assertion.mod NumberIO.mod \ +@BUILD_PIMLIB_TRUE@ Break.mod SYSTEM.mod \ +@BUILD_PIMLIB_TRUE@ CmdArgs.mod Scan.mod \ +@BUILD_PIMLIB_TRUE@ StrCase.mod FIO.mod \ +@BUILD_PIMLIB_TRUE@ StrIO.mod StrLib.mod \ +@BUILD_PIMLIB_TRUE@ TimeString.mod Environment.mod \ +@BUILD_PIMLIB_TRUE@ FpuIO.mod Debug.mod \ +@BUILD_PIMLIB_TRUE@ SysStorage.mod Storage.mod \ +@BUILD_PIMLIB_TRUE@ StdIO.mod SEnvironment.mod \ +@BUILD_PIMLIB_TRUE@ DynamicStrings.mod SFIO.mod \ +@BUILD_PIMLIB_TRUE@ SArgs.mod SCmdArgs.mod \ +@BUILD_PIMLIB_TRUE@ PushBackInput.mod \ +@BUILD_PIMLIB_TRUE@ StringConvert.mod FormatStrings.mod \ +@BUILD_PIMLIB_TRUE@ Builtins.mod MathLib0.mod \ +@BUILD_PIMLIB_TRUE@ M2EXCEPTION.mod RTExceptions.mod \ +@BUILD_PIMLIB_TRUE@ SMathLib0.mod RTint.mod \ +@BUILD_PIMLIB_TRUE@ Indexing.mod \ +@BUILD_PIMLIB_TRUE@ LMathLib0.mod LegacyReal.mod \ +@BUILD_PIMLIB_TRUE@ MemUtils.mod gdbif.mod \ +@BUILD_PIMLIB_TRUE@ GetOpt.mod OptLib.mod + + +# COROUTINES.mod has been removed as it is implemented in ../libm2iso. +@BUILD_PIMLIB_TRUE@M2DEFS = Args.def ASCII.def \ +@BUILD_PIMLIB_TRUE@ Assertion.def Break.def \ +@BUILD_PIMLIB_TRUE@ Builtins.def cbuiltin.def \ +@BUILD_PIMLIB_TRUE@ CmdArgs.def COROUTINES.def \ +@BUILD_PIMLIB_TRUE@ cxxabi.def Debug.def \ +@BUILD_PIMLIB_TRUE@ dtoa.def DynamicStrings.def \ +@BUILD_PIMLIB_TRUE@ Environment.def errno.def \ +@BUILD_PIMLIB_TRUE@ FIO.def FormatStrings.def \ +@BUILD_PIMLIB_TRUE@ FpuIO.def gdbif.def \ +@BUILD_PIMLIB_TRUE@ Indexing.def \ +@BUILD_PIMLIB_TRUE@ IO.def ldtoa.def \ +@BUILD_PIMLIB_TRUE@ LegacyReal.def libc.def \ +@BUILD_PIMLIB_TRUE@ libm.def LMathLib0.def \ +@BUILD_PIMLIB_TRUE@ M2Dependent.def \ +@BUILD_PIMLIB_TRUE@ M2EXCEPTION.def M2LINK.def \ +@BUILD_PIMLIB_TRUE@ M2RTS.def \ +@BUILD_PIMLIB_TRUE@ MathLib0.def MemUtils.def \ +@BUILD_PIMLIB_TRUE@ NumberIO.def PushBackInput.def \ +@BUILD_PIMLIB_TRUE@ RTExceptions.def RTint.def \ +@BUILD_PIMLIB_TRUE@ SArgs.def SCmdArgs.def \ +@BUILD_PIMLIB_TRUE@ Scan.def \ +@BUILD_PIMLIB_TRUE@ sckt.def Selective.def \ +@BUILD_PIMLIB_TRUE@ SEnvironment.def SFIO.def \ +@BUILD_PIMLIB_TRUE@ SMathLib0.def StdIO.def \ +@BUILD_PIMLIB_TRUE@ Storage.def StrCase.def \ +@BUILD_PIMLIB_TRUE@ StringConvert.def StrIO.def \ +@BUILD_PIMLIB_TRUE@ StrLib.def SysExceptions.def \ +@BUILD_PIMLIB_TRUE@ SysStorage.def SYSTEM.def \ +@BUILD_PIMLIB_TRUE@ termios.def TimeString.def \ +@BUILD_PIMLIB_TRUE@ UnixArgs.def wrapc.def \ +@BUILD_PIMLIB_TRUE@ GetOpt.def OptLib.def \ +@BUILD_PIMLIB_TRUE@ cgetopt.def + +@BUILD_PIMLIB_TRUE@libm2pim_la_SOURCES = $(M2MODS) \ +@BUILD_PIMLIB_TRUE@ UnixArgs.cc \ +@BUILD_PIMLIB_TRUE@ Selective.cc sckt.cc \ +@BUILD_PIMLIB_TRUE@ errno.cc dtoa.cc \ +@BUILD_PIMLIB_TRUE@ ldtoa.cc termios.cc \ +@BUILD_PIMLIB_TRUE@ SysExceptions.cc target.c \ +@BUILD_PIMLIB_TRUE@ wrapc.c cgetopt.cc + +@BUILD_PIMLIB_TRUE@libm2pimdir = libm2pim +@BUILD_PIMLIB_TRUE@libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES))) +@BUILD_PIMLIB_TRUE@libm2pim_la_CFLAGS = -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso +@BUILD_PIMLIB_TRUE@libm2pim_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -fm2-g -g +@BUILD_PIMLIB_TRUE@libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION) +@BUILD_PIMLIB_TRUE@BUILT_SOURCES = SYSTEM.def +@BUILD_PIMLIB_TRUE@CLEANFILES = SYSTEM.def +@BUILD_PIMLIB_TRUE@M2LIBDIR = /m2/m2pim/ +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .mod .def .o .obj .lo .a .la .cc +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libm2pim/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign libm2pim/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \ + } + +uninstall-toolexeclibLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \ + done + +clean-toolexeclibLTLIBRARIES: + -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES) + @list='$(toolexeclib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libm2pim.la: $(libm2pim_la_OBJECTS) $(libm2pim_la_DEPENDENCIES) $(EXTRA_libm2pim_la_DEPENDENCIES) + $(AM_V_GEN)$(libm2pim_la_LINK) $(am_libm2pim_la_rpath) $(libm2pim_la_OBJECTS) $(libm2pim_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Selective.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SysExceptions.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnixArgs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgetopt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtoa.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errno.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldtoa.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libm2pim_la-target.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libm2pim_la-wrapc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sckt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/termios.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libm2pim_la-target.lo: target.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libm2pim_la_CFLAGS) $(CFLAGS) -MT libm2pim_la-target.lo -MD -MP -MF $(DEPDIR)/libm2pim_la-target.Tpo -c -o libm2pim_la-target.lo `test -f 'target.c' || echo '$(srcdir)/'`target.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libm2pim_la-target.Tpo $(DEPDIR)/libm2pim_la-target.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='target.c' object='libm2pim_la-target.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libm2pim_la_CFLAGS) $(CFLAGS) -c -o libm2pim_la-target.lo `test -f 'target.c' || echo '$(srcdir)/'`target.c + +libm2pim_la-wrapc.lo: wrapc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libm2pim_la_CFLAGS) $(CFLAGS) -MT libm2pim_la-wrapc.lo -MD -MP -MF $(DEPDIR)/libm2pim_la-wrapc.Tpo -c -o libm2pim_la-wrapc.lo `test -f 'wrapc.c' || echo '$(srcdir)/'`wrapc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libm2pim_la-wrapc.Tpo $(DEPDIR)/libm2pim_la-wrapc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wrapc.c' object='libm2pim_la-wrapc.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libm2pim_la_CFLAGS) $(CFLAGS) -c -o libm2pim_la-wrapc.lo `test -f 'wrapc.c' || echo '$(srcdir)/'`wrapc.c + +.cc.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cc.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +@BUILD_PIMLIB_FALSE@.cc.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(toolexeclibdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +@BUILD_PIMLIB_FALSE@install-data-local: +clean: clean-am + +clean-am: clean-generic clean-libtool clean-toolexeclibLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-toolexeclibLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-toolexeclibLTLIBRARIES + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-toolexeclibLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip \ + install-toolexeclibLTLIBRARIES installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-toolexeclibLTLIBRARIES + +.PRECIOUS: Makefile + + +@BUILD_PIMLIB_TRUE@SYSTEM.def: Makefile +@BUILD_PIMLIB_TRUE@ bash $(GM2_SRC)/tools-src/makeSystem -fpim \ +@BUILD_PIMLIB_TRUE@ $(GM2_SRC)/gm2-libs/SYSTEM.def \ +@BUILD_PIMLIB_TRUE@ $(GM2_SRC)/gm2-libs/SYSTEM.mod \ +@BUILD_PIMLIB_TRUE@ -I$(GM2_SRC)/gm2-libs \ +@BUILD_PIMLIB_TRUE@ "$(GM2_FOR_TARGET)" $@ + +@BUILD_PIMLIB_TRUE@.mod.lo: SYSTEM.def +@BUILD_PIMLIB_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(GM2_FOR_TARGET) -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@ + +@BUILD_PIMLIB_TRUE@.cc.lo: +@BUILD_PIMLIB_TRUE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2pim_la_CFLAGS) $< -o $@ + +@BUILD_PIMLIB_TRUE@install-data-local: force +@BUILD_PIMLIB_TRUE@ mkdir -p $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR) +@BUILD_PIMLIB_TRUE@ $(INSTALL_DATA) .libs/libm2pim.la $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR) +@BUILD_PIMLIB_TRUE@ chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2pim.la +@BUILD_PIMLIB_TRUE@ $(INSTALL_DATA) .libs/libm2pim.a $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR) +@BUILD_PIMLIB_TRUE@ $(RANLIB) $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2pim.a +@BUILD_PIMLIB_TRUE@ for i in $(M2DEFS) $(M2MODS) ; do \ +@BUILD_PIMLIB_TRUE@ if [ -f $$i ] ; then \ +@BUILD_PIMLIB_TRUE@ $(INSTALL_DATA) $$i '$(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)'; \ +@BUILD_PIMLIB_TRUE@ elif [ -f @srcdir@/../../gcc/m2/gm2-libs/$$i ] ; then \ +@BUILD_PIMLIB_TRUE@ $(INSTALL_DATA) @srcdir@/../../gcc/m2/gm2-libs/$$i '$(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)'; \ +@BUILD_PIMLIB_TRUE@ else \ +@BUILD_PIMLIB_TRUE@ echo "cannot find $$i" ; exit 1 ; \ +@BUILD_PIMLIB_TRUE@ fi ; \ +@BUILD_PIMLIB_TRUE@ chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)$$i ; \ +@BUILD_PIMLIB_TRUE@ done + +@BUILD_PIMLIB_TRUE@force: + +# 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/libgm2/libm2pim/Selective.cc b/libgm2/libm2pim/Selective.cc new file mode 100644 index 0000000..a71c657 --- /dev/null +++ b/libgm2/libm2pim/Selective.cc @@ -0,0 +1,319 @@ +/* Selective.c provide access to timeval and select. + +Copyright (C) 2009-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <config.h> +#include <m2rts.h> + +#if defined(HAVE_STDDEF_H) +/* Obtain a definition for NULL. */ +#include <stddef.h> +#endif + +#if defined(HAVE_STDIO_H) +/* Obtain a definition for NULL. */ +#include <stdio.h> +#endif + +#if defined(HAVE_SYS_TIME_H) +#include <sys/time.h> +#endif + +#if defined(HAVE_TIME_H) +/* Obtain a definition for NULL. */ +#include <time.h> +#endif + +#if defined(HAVE_STRING_H) +/* Obtain a definition for NULL. */ +#include <string.h> +#endif + +#if defined(HAVE_WCHAR_H) +/* Obtain a definition for NULL. */ +#include <wchar.h> +#endif + +#if defined(HAVE_STDLIB_H) +/* Obtain a prototype for free and malloc. */ +#include <stdlib.h> +#endif + +#if defined(HAVE_SYS_TYPES_H) +#include <sys/types.h> +#endif + +#if defined(HAVE_UNISTD_H) +#include <unistd.h> +#endif + +#if !defined(NULL) +#define NULL (void *)0 +#endif + +#if defined(HAVE_SELECT) +#define FDSET_T fd_set +#else +#define FDSET_T void +#endif + +/* Select wrap a call to the C select. */ + +#if defined(HAVE_STRUCT_TIMEVAL) +extern "C" int +Selective_Select (int nooffds, fd_set *readfds, fd_set *writefds, + fd_set *exceptfds, struct timeval *timeout) +{ + return select (nooffds, readfds, writefds, exceptfds, timeout); +} +#else +extern "C" int +Selective_Select (int nooffds, void *readfds, void *writefds, void *exceptfds, + void *timeout) +{ + return 0; +} +#endif + +/* InitTime initializes a timeval structure and returns a pointer to it. */ + +#if defined(HAVE_STRUCT_TIMEVAL) +extern "C" struct timeval * +Selective_InitTime (unsigned int sec, unsigned int usec) +{ + struct timeval *t = (struct timeval *)malloc (sizeof (struct timeval)); + + t->tv_sec = (long int)sec; + t->tv_usec = (long int)usec; + return t; +} + +extern "C" void +Selective_GetTime (struct timeval *t, unsigned int *sec, unsigned int *usec) +{ + *sec = (unsigned int)t->tv_sec; + *usec = (unsigned int)t->tv_usec; +} + +extern "C" void +Selective_SetTime (struct timeval *t, unsigned int sec, unsigned int usec) +{ + t->tv_sec = sec; + t->tv_usec = usec; +} + +/* KillTime frees the timeval structure and returns NULL. */ + +extern "C" struct timeval * +Selective_KillTime (struct timeval *t) +{ +#if defined(HAVE_STDLIB_H) + free (t); +#endif + return NULL; +} + +/* InitSet returns a pointer to a FD_SET. */ + +extern "C" FDSET_T * +Selective_InitSet (void) +{ +#if defined(HAVE_STDLIB_H) + FDSET_T *s = (FDSET_T *)malloc (sizeof (FDSET_T)); + + return s; +#else + return NULL +#endif +} + +/* KillSet frees the FD_SET and returns NULL. */ + +extern "C" FDSET_T * +Selective_KillSet (FDSET_T *s) +{ +#if defined(HAVE_STDLIB_H) + free (s); +#endif + return NULL; +} + +/* FdZero generate an empty set. */ + +extern "C" void +Selective_FdZero (FDSET_T *s) +{ + FD_ZERO (s); +} + +/* FS_Set include an element, fd, into set, s. */ + +extern "C" void +Selective_FdSet (int fd, FDSET_T *s) +{ + FD_SET (fd, s); +} + +/* FdClr exclude an element, fd, from the set, s. */ + +extern "C" void +Selective_FdClr (int fd, FDSET_T *s) +{ + FD_CLR (fd, s); +} + +/* FdIsSet return TRUE if, fd, is present in set, s. */ + +extern "C" int +Selective_FdIsSet (int fd, FDSET_T *s) +{ + return FD_ISSET (fd, s); +} + +/* GetTimeOfDay fills in a record, Timeval, filled in with the + current system time in seconds and microseconds. + It returns zero (see man 3p gettimeofday). */ + +extern "C" int +Selective_GetTimeOfDay (struct timeval *t) +{ + return gettimeofday (t, NULL); +} +#else + +extern "C" void * +Selective_InitTime (unsigned int sec, unsigned int usec) +{ + return NULL; +} + +extern "C" void * +Selective_KillTime (void *t) +{ + return NULL; +} + +extern "C" void +Selective_GetTime (void *t, unsigned int *sec, unsigned int *usec) +{ +} + +extern "C" void +Selective_SetTime (void *t, unsigned int sec, unsigned int usec) +{ +} + +extern "C" FDSET_T * +Selective_InitSet (void) +{ + return NULL; +} + +extern "C" FDSET_T * +Selective_KillSet (void) +{ + return NULL; +} + +extern "C" void +Selective_FdZero (void *s) +{ +} + +extern "C" void +Selective_FdSet (int fd, void *s) +{ +} + +extern "C" void +Selective_FdClr (int fd, void *s) +{ +} + +extern "C" int +Selective_FdIsSet (int fd, void *s) +{ + return 0; +} + +extern "C" int +Selective_GetTimeOfDay (void *t) +{ + return -1; +} +#endif + +/* MaxFdsPlusOne returns max (a + 1, b + 1). */ + +extern "C" int +Selective_MaxFdsPlusOne (int a, int b) +{ + if (a > b) + return a + 1; + else + return b + 1; +} + +/* WriteCharRaw writes a single character to the file descriptor. */ + +extern "C" void +Selective_WriteCharRaw (int fd, char ch) +{ + write (fd, &ch, 1); +} + +/* ReadCharRaw read and return a single char from file descriptor, fd. */ + +extern "C" char +Selective_ReadCharRaw (int fd) +{ + char ch; + + read (fd, &ch, 1); + return ch; +} + +extern "C" void +_M2_Selective_init (int argc, char *argv[], char *envp[]) +{ +} + +extern "C" void +_M2_Selective_fini (int argc, char *argv[], char *envp[]) +{ +} + +extern "C" void +_M2_Selective_dep (void) +{ +} + +struct _M2_Selective_ctor { _M2_Selective_ctor (); } _M2_Selective_ctor; + +_M2_Selective_ctor::_M2_Selective_ctor (void) +{ + M2RTS_RegisterModule ("Selective", _M2_Selective_init, _M2_Selective_fini, + _M2_Selective_dep); +} diff --git a/libgm2/libm2pim/SysExceptions.cc b/libgm2/libm2pim/SysExceptions.cc new file mode 100644 index 0000000..780b097 --- /dev/null +++ b/libgm2/libm2pim/SysExceptions.cc @@ -0,0 +1,259 @@ +/* SysExceptions.c configure the signals to create m2 exceptions. + +Copyright (C) 2009-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#if defined(HAVE_SIGNAL_H) +#include <signal.h> +#endif + +#if defined(HAVE_ERRNO_H) +#include <errno.h> +#endif + +#if defined(HAVE_SYS_ERRNO_H) +#include <sys/errno.h> +#endif + +#if defined(HAVE_STDIO_H) +#include <stdio.h> +#endif + +#include "m2rts.h" + +#if 0 +/* Signals. */ +#define SIGHUP 1 /* Hangup (POSIX). */ +#define SIGINT 2 /* Interrupt (ANSI). */ +#define SIGQUIT 3 /* Quit (POSIX). */ +#define SIGILL 4 /* Illegal instruction (ANSI). */ +#define SIGTRAP 5 /* Trace trap (POSIX). */ +#define SIGABRT 6 /* Abort (ANSI). */ +#define SIGIOT 6 /* IOT trap (4.2 BSD). */ +#define SIGBUS 7 /* BUS error (4.2 BSD). */ +#define SIGFPE 8 /* Floating-point exception (ANSI). */ +#define SIGKILL 9 /* Kill, unblockable (POSIX). */ +#define SIGUSR1 10 /* User-defined signal 1 (POSIX). */ +#define SIGSEGV 11 /* Segmentation violation (ANSI). */ +#define SIGUSR2 12 /* User-defined signal 2 (POSIX). */ +#define SIGPIPE 13 /* Broken pipe (POSIX). */ +#define SIGALRM 14 /* Alarm clock (POSIX). */ +#define SIGTERM 15 /* Termination (ANSI). */ +#define SIGSTKFLT 16 /* Stack fault. */ +#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */ +#define SIGCHLD 17 /* Child status has changed (POSIX). */ +#define SIGCONT 18 /* Continue (POSIX). */ +#define SIGSTOP 19 /* Stop, unblockable (POSIX). */ +#define SIGTSTP 20 /* Keyboard stop (POSIX). */ +#define SIGTTIN 21 /* Background read from tty (POSIX). */ +#define SIGTTOU 22 /* Background write to tty (POSIX). */ +#define SIGURG 23 /* Urgent condition on socket (4.2 BSD). */ +#define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */ +#define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */ +#define SIGVTALRM 26 /* Virtual alarm clock (4.2 BSD). */ +#define SIGPROF 27 /* Profiling alarm clock (4.2 BSD). */ +#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ +#define SIGPOLL SIGIO /* Pollable event occurred (System V). */ +#define SIGIO 29 /* I/O now possible (4.2 BSD). */ +#define SIGPWR 30 /* Power failure restart (System V). */ +#define SIGSYS 31 /* Bad system call. */ +#define SIGUNUSED 31 + +/* The list of Modula-2 exceptions is shown below */ + + (indexException, rangeException, caseSelectException, invalidLocation, + functionException, wholeValueException, wholeDivException, realValueException, + realDivException, complexValueException, complexDivException, protException, + sysException, coException, exException + ); + +#endif + +/* Note: wholeDivException and realDivException are caught by SIGFPE + and depatched to the appropriate Modula-2 runtime routine upon + testing FPE_INTDIV or FPE_FLTDIV. realValueException is also + caught by SIGFPE and dispatched by testing FFE_FLTOVF or FPE_FLTUND + or FPE_FLTRES or FPE_FLTINV. indexException is caught by SIGFPE + and dispatched by FPE_FLTSUB. */ + +#if defined(HAVE_SIGNAL_H) +static struct sigaction sigbus; +static struct sigaction sigfpe; +static struct sigaction sigsegv; + +static void (*indexProc) (void *); +static void (*rangeProc) (void *); +static void (*assignmentrangeProc) (void *); +static void (*caseProc) (void *); +static void (*invalidlocProc) (void *); +static void (*functionProc) (void *); +static void (*wholevalueProc) (void *); +static void (*wholedivProc) (void *); +static void (*realvalueProc) (void *); +static void (*realdivProc) (void *); +static void (*complexvalueProc) (void *); +static void (*complexdivProc) (void *); +static void (*protectionProc) (void *); +static void (*systemProc) (void *); +static void (*coroutineProc) (void *); +static void (*exceptionProc) (void *); + +static void +sigbusDespatcher (int signum, siginfo_t *info, void *ucontext) +{ + switch (signum) + { + + case SIGSEGV: + case SIGBUS: + if (info) + (*invalidlocProc) (info->si_addr); + break; + default: + perror ("not expecting to arrive here with this signal"); + } +} + +static void +sigfpeDespatcher (int signum, siginfo_t *info, void *ucontext) +{ + switch (signum) + { + + case SIGFPE: + if (info) + { + if (info->si_code | FPE_INTDIV) + (*wholedivProc) (info->si_addr); /* Integer divide by zero. */ + if (info->si_code | FPE_INTOVF) + (*wholevalueProc) (info->si_addr); /* Integer overflow. */ + if (info->si_code | FPE_FLTDIV) + (*realdivProc) (info->si_addr); /* Floating-point divide by zero. */ + if (info->si_code | FPE_FLTOVF) + (*realvalueProc) (info->si_addr); /* Floating-point overflow. */ + if (info->si_code | FPE_FLTUND) + (*realvalueProc) (info->si_addr); /* Floating-point underflow. */ + if (info->si_code | FPE_FLTRES) + (*realvalueProc) ( + info->si_addr); /* Floating-point inexact result. */ + if (info->si_code | FPE_FLTINV) + (*realvalueProc) ( + info->si_addr); /* Floating-point invalid result. */ + if (info->si_code | FPE_FLTSUB) + (*indexProc) (info->si_addr); /* Subscript out of range. */ + } + break; + default: + perror ("not expecting to arrive here with this signal"); + } +} + +extern "C" void +SysExceptions_InitExceptionHandlers ( + void (*indexf) (void *), void (*range) (void *), void (*casef) (void *), + void (*invalidloc) (void *), void (*function) (void *), + void (*wholevalue) (void *), void (*wholediv) (void *), + void (*realvalue) (void *), void (*realdiv) (void *), + void (*complexvalue) (void *), void (*complexdiv) (void *), + void (*protection) (void *), void (*systemf) (void *), + void (*coroutine) (void *), void (*exception) (void *)) +{ + struct sigaction old; + + indexProc = indexf; + rangeProc = range; + caseProc = casef; + invalidlocProc = invalidloc; + functionProc = function; + wholevalueProc = wholevalue; + wholedivProc = wholediv; + realvalueProc = realvalue; + realdivProc = realdiv; + complexvalueProc = complexvalue; + complexdivProc = complexdiv; + protectionProc = protection; + systemProc = systemf; + coroutineProc = coroutine; + exceptionProc = exception; + + sigbus.sa_sigaction = sigbusDespatcher; + sigbus.sa_flags = (SA_SIGINFO); + sigemptyset (&sigbus.sa_mask); + + if (sigaction (SIGBUS, &sigbus, &old) != 0) + perror ("unable to install the sigbus signal handler"); + + sigsegv.sa_sigaction = sigbusDespatcher; + sigsegv.sa_flags = (SA_SIGINFO); + sigemptyset (&sigsegv.sa_mask); + + if (sigaction (SIGSEGV, &sigsegv, &old) != 0) + perror ("unable to install the sigsegv signal handler"); + + sigfpe.sa_sigaction = sigfpeDespatcher; + sigfpe.sa_flags = (SA_SIGINFO); + sigemptyset (&sigfpe.sa_mask); + + if (sigaction (SIGFPE, &sigfpe, &old) != 0) + perror ("unable to install the sigfpe signal handler"); +} + +#else +extern "C" void +SysExceptions_InitExceptionHandlers (void *indexf, void *range, void *casef, + void *invalidloc, void *function, + void *wholevalue, void *wholediv, + void *realvalue, void *realdiv, + void *complexvalue, void *complexdiv, + void *protection, void *systemf, + void *coroutine, void *exception) +{ +} +#endif + + +extern "C" void +_M2_SysExceptions_init (int, char *[], char *[]) +{ +} + +extern "C" void +_M2_SysExceptions_fini (int, char *[], char *[]) +{ +} + +extern "C" void +_M2_SysExceptions_dep (void) +{ +} + +struct _M2_SysExceptions_ctor { _M2_SysExceptions_ctor (); } _M2_SysExceptions_ctor; + +_M2_SysExceptions_ctor::_M2_SysExceptions_ctor (void) +{ + M2RTS_RegisterModule ("SysExceptions", _M2_SysExceptions_init, _M2_SysExceptions_fini, + _M2_SysExceptions_dep); +} diff --git a/libgm2/libm2pim/UnixArgs.cc b/libgm2/libm2pim/UnixArgs.cc new file mode 100644 index 0000000..419ad83 --- /dev/null +++ b/libgm2/libm2pim/UnixArgs.cc @@ -0,0 +1,91 @@ +/* UnixArgs.cc record argc, argv as global variables. + +Copyright (C) 2009-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <config.h> +#include <m2rts.h> + + +extern "C" int UnixArgs_GetArgC (void); +extern "C" char **UnixArgs_GetArgV (void); +extern "C" char **UnixArgs_GetEnvV (void); + +static int UnixArgs_ArgC; +static char **UnixArgs_ArgV; +static char **UnixArgs_EnvV; + + +/* GetArgC returns argc. */ + +extern "C" int +UnixArgs_GetArgC (void) +{ + return UnixArgs_ArgC; +} + + +/* GetArgV returns argv. */ + +extern "C" char ** +UnixArgs_GetArgV (void) +{ + return UnixArgs_ArgV; +} + + +/* GetEnvV returns envv. */ + +extern "C" char ** +UnixArgs_GetEnvV (void) +{ + return UnixArgs_EnvV; +} + + +extern "C" void +_M2_UnixArgs_init (int argc, char *argv[], char *envp[]) +{ + UnixArgs_ArgC = argc; + UnixArgs_ArgV = argv; + UnixArgs_EnvV = envp; +} + +extern "C" void +_M2_UnixArgs_fini (int argc, char *argv[], char *envp[]) +{ +} + +extern "C" void +_M2_UnixArgs_dep (void) +{ +} + +struct _M2_UnixArgs_ctor { _M2_UnixArgs_ctor (); } _M2_UnixArgs_ctor; + +_M2_UnixArgs_ctor::_M2_UnixArgs_ctor (void) +{ + M2RTS_RegisterModule ("UnixArgs", _M2_UnixArgs_init, _M2_UnixArgs_fini, + _M2_UnixArgs_dep); +} diff --git a/libgm2/libm2pim/cgetopt.cc b/libgm2/libm2pim/cgetopt.cc new file mode 100644 index 0000000..fba20fc --- /dev/null +++ b/libgm2/libm2pim/cgetopt.cc @@ -0,0 +1,158 @@ +/* cgetopt.cc provide access to the C getopt library. + +Copyright (C) 2009-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <unistd.h> +#include <stdlib.h> +#include <getopt.h> +#include <m2rts.h> + +extern "C" {char *cgetopt_optarg;} +extern "C" {int cgetopt_optind;} +extern "C" {int cgetopt_opterr;} +extern "C" {int cgetopt_optopt;} + +extern "C" char +cgetopt_getopt (int argc, char *argv[], char *optstring) +{ + char r = getopt (argc, argv, optstring); + + cgetopt_optarg = optarg; + cgetopt_optind = optind; + cgetopt_opterr = opterr; + cgetopt_optopt = optopt; + + if (r == (char)-1) + return (char)0; + return r; +} + +extern "C" int +cgetopt_getopt_long (int argc, char *argv[], char *optstring, + const struct option *longopts, int *longindex) +{ + int r = getopt_long (argc, argv, optstring, longopts, longindex); + + cgetopt_optarg = optarg; + cgetopt_optind = optind; + cgetopt_opterr = opterr; + cgetopt_optopt = optopt; + + return r; +} + +extern "C" int +cgetopt_getopt_long_only (int argc, char *argv[], char *optstring, + const struct option *longopts, int *longindex) +{ + int r = getopt_long_only (argc, argv, optstring, longopts, longindex); + + cgetopt_optarg = optarg; + cgetopt_optind = optind; + cgetopt_opterr = opterr; + cgetopt_optopt = optopt; + + return r; +} + +typedef struct cgetopt_Options_s +{ + struct option *cinfo; + unsigned int high; +} cgetopt_Options; + +/* InitOptions a constructor for Options. */ + +extern "C" cgetopt_Options * +cgetopt_InitOptions (void) +{ + cgetopt_Options *o = (cgetopt_Options *)malloc (sizeof (cgetopt_Options)); + o->cinfo = (struct option *)malloc (sizeof (struct option)); + o->high = 0; + return o; +} + +/* KillOptions a deconstructor for Options. Returns NULL after freeing + up all allocated memory associated with o. */ + +extern "C" cgetopt_Options * +cgetopt_KillOptions (cgetopt_Options *o) +{ + free (o->cinfo); + free (o); + return NULL; +} + +/* SetOption set option[index] with {name, has_arg, flag, val}. */ + +extern "C" void +cgetopt_SetOption (cgetopt_Options *o, unsigned int index, char *name, + unsigned int has_arg, int *flag, int val) +{ + if (index > o->high) + { + o->cinfo + = (struct option *)malloc (sizeof (struct option) * (index + 1)); + o->high = index + 1; + } + o->cinfo[index].name = name; + o->cinfo[index].has_arg = has_arg; + o->cinfo[index].flag = flag; + o->cinfo[index].val = val; +} + +/* GetLongOptionArray returns a pointer to the C array containing all + long options. */ + +extern "C" struct option * +cgetopt_GetLongOptionArray (cgetopt_Options *o) +{ + return o->cinfo; +} + +/* GNU Modula-2 linking fodder. */ + +extern "C" void +_M2_cgetopt_init (int, char *argv[], char *env[]) +{ +} + +extern "C" void +_M2_cgetopt_fini (int, char *argv[], char *env[]) +{ +} + +extern "C" void +_M2_cgetopt_dep (void) +{ +} + +struct _M2_cgetopt_ctor { _M2_cgetopt_ctor (); } _M2_cgetopt_ctor; + +_M2_cgetopt_ctor::_M2_cgetopt_ctor (void) +{ + M2RTS_RegisterModule ("cgetopt", _M2_cgetopt_init, _M2_cgetopt_fini, + _M2_cgetopt_dep); +} diff --git a/libgm2/libm2pim/dtoa.cc b/libgm2/libm2pim/dtoa.cc new file mode 100644 index 0000000..7b8dff9 --- /dev/null +++ b/libgm2/libm2pim/dtoa.cc @@ -0,0 +1,265 @@ +/* dtoa.cc convert double to ascii and visa versa. + +Copyright (C) 2009-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#define GM2 + +#include <config.h> +#include <m2rts.h> + +#if defined(HAVE_STRINGS) +#include <strings.h> +#endif + +#if defined(HAVE_STRING) +#include <string.h> +#endif + +#if defined(HAVE_STDDEF_H) +/* Obtain a definition for NULL. */ +#include <stddef.h> +#endif + +#if defined(HAVE_STDIO_H) +/* Obtain a definition for NULL. */ +#include <stdio.h> +#endif + +#if defined(HAVE_TIME_H) +/* Obtain a definition for NULL. */ +#include <time.h> +#endif + +#if defined(HAVE_STRING_H) +/* Obtain a definition for NULL. */ +#include <string.h> +#endif + +#if defined(HAVE_WCHAR_H) +/* Obtain a definition for NULL. */ +#include <wchar.h> +#endif + +#if defined(HAVE_STDLIB_H) +/* Obtain a prototype for free and malloc. */ +#include <stdlib.h> +#endif + +#if !defined(NULL) +#define NULL (void *)0 +#endif + +#if !defined(TRUE) +#define TRUE (1 == 1) +#endif +#if !defined(FALSE) +#define FALSE (1 == 0) +#endif + +#if defined(HAVE_STDLIB_H) +#if !defined(_ISOC99_SOURCE) +#define _ISOC99_SOURCE +#endif +#include <stdlib.h> +#endif + +#if defined(HAVE_ERRNO_H) +#include <errno.h> +#endif + +#if defined(HAVE_SYS_ERRNO_H) +#include <sys/errno.h> +#endif + +#if defined(HAVE_STRING_H) + +#define MAX_FP_DIGITS 500 + +typedef enum Mode { maxsignicant, decimaldigits } Mode; + +/* maxsignicant: return a string containing max(1,ndigits) significant + digits. The return string contains the string produced by ecvt. + + decimaldigits: return a string produced by fcvt. The string will + contain ndigits past the decimal point (ndigits may be negative). */ + +extern "C" double +dtoa_strtod (const char *s, int *error) +{ + char *endp; + double d; + +#if defined(HAVE_ERRNO_H) + errno = 0; +#endif + d = strtod (s, &endp); + if (endp != NULL && (*endp == '\0')) +#if defined(HAVE_ERRNO_H) + *error = (errno != 0); +#else + *error = FALSE; +#endif + else + *error = TRUE; + return d; +} + +/* dtoa_calcmaxsig calculates the position of the decimal point + it also removes the decimal point and exponent from string, p. */ + +extern "C" int +dtoa_calcmaxsig (char *p, int ndigits) +{ + char *e; + char *o; + int x; + + e = strchr (p, 'E'); + if (e == NULL) + x = 0; + else + { + *e = (char)0; + x = atoi (e + 1); + } + + o = strchr (p, '.'); + if (o == NULL) + return strlen (p) + x; + else + { + memmove (o, o + 1, ndigits - (o - p)); + return o - p + x; + } +} + +/* dtoa_calcdecimal calculates the position of the decimal point + it also removes the decimal point and exponent from string, p. + It truncates the digits in p accordingly to ndigits. + Ie ndigits is the number of digits after the '.'. */ + +extern "C" int +dtoa_calcdecimal (char *p, int str_size, int ndigits) +{ + char *e; + char *o; + int x; + int l; + + e = strchr (p, 'E'); + if (e == NULL) + x = 0; + else + { + *e = (char)0; + x = atoi (e + 1); + } + + l = strlen (p); + o = strchr (p, '.'); + if (o == NULL) + x += strlen (p); + else + { + int m = strlen (o); + memmove (o, o + 1, l - (o - p)); + if (m > 0) + o[m - 1] = '0'; + x += o - p; + } + if ((x + ndigits >= 0) && (x + ndigits < str_size)) + p[x + ndigits] = (char)0; + return x; +} + +extern "C" int +dtoa_calcsign (char *p, int str_size) +{ + if (p[0] == '-') + { + memmove (p, p + 1, str_size - 1); + return TRUE; + } + else + return FALSE; +} + +extern "C" char * +dtoa_dtoa (double d, int mode, int ndigits, int *decpt, int *sign) +{ + char format[50]; + char *p; + int r; + switch (mode) + { + + case maxsignicant: + ndigits += 20; /* Enough for exponent. */ + p = (char *) malloc (ndigits); + snprintf (format, 50, "%s%d%s", "%.", ndigits - 20, "E"); + snprintf (p, ndigits, format, d); + *sign = dtoa_calcsign (p, ndigits); + *decpt = dtoa_calcmaxsig (p, ndigits); + return p; + case decimaldigits: + p = (char *) malloc (MAX_FP_DIGITS + 20); + snprintf (format, 50, "%s%d%s", "%.", MAX_FP_DIGITS, "E"); + snprintf (p, MAX_FP_DIGITS + 20, format, d); + *sign = dtoa_calcsign (p, MAX_FP_DIGITS + 20); + *decpt = dtoa_calcdecimal (p, MAX_FP_DIGITS + 20, ndigits); + return p; + default: + abort (); + } +} + +#endif + +#if defined(GM2) +/* GNU Modula-2 linking hooks. */ + +extern "C" void +_M2_dtoa_init (int, char **, char **) +{ +} + +extern "C" void +_M2_dtoa_fini (int, char **, char **) +{ +} + +extern "C" void +_M2_dtoa_dep (void) +{ +} + +struct _M2_dtoa_ctor { _M2_dtoa_ctor (); } _M2_dtoa_ctor; + +_M2_dtoa_ctor::_M2_dtoa_ctor (void) +{ + M2RTS_RegisterModule ("dtoa", _M2_dtoa_init, _M2_dtoa_fini, + _M2_dtoa_dep); +} +#endif diff --git a/libgm2/libm2pim/errno.cc b/libgm2/libm2pim/errno.cc new file mode 100644 index 0000000..d47b7b7 --- /dev/null +++ b/libgm2/libm2pim/errno.cc @@ -0,0 +1,70 @@ +/* errno.c provide access to the errno value. + +Copyright (C) 2009-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#if defined(HAVE_SYS_ERRNO_H) +#include <sys/errno.h> +#endif + +#if defined(HAVE_ERRNO_H) +#include <errno.h> +#endif + +#include "m2rts.h" + +extern "C" int +errno_geterrno (void) +{ +#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H) + return errno; +#else + return -1; +#endif +} + +extern "C" void +_M2_errno_init (int, char *[], char *[]) +{ +} + +extern "C" void +_M2_errno_fini (int, char *[], char *[]) +{ +} + +extern "C" void +_M2_errno_dep (void) +{ +} + +struct _M2_errno_ctor { _M2_errno_ctor (); } _M2_errno_ctor; + +_M2_errno_ctor::_M2_errno_ctor (void) +{ + M2RTS_RegisterModule ("errno", _M2_errno_init, _M2_errno_fini, + _M2_errno_dep); +} diff --git a/libgm2/libm2pim/ldtoa.cc b/libgm2/libm2pim/ldtoa.cc new file mode 100644 index 0000000..8f0ae68 --- /dev/null +++ b/libgm2/libm2pim/ldtoa.cc @@ -0,0 +1,190 @@ +/* ldtoa.c convert long double to ascii and visa versa. + +Copyright (C) 2009-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#define GM2 + +#include <config.h> +#include <m2rts.h> + +#if defined(HAVE_STRINGS) +#include <strings.h> +#endif + +#if defined(HAVE_STRING) +#include <string.h> +#endif + +#if defined(HAVE_STDDEF_H) +/* Obtain a definition for NULL. */ +#include <stddef.h> +#endif + +#if defined(HAVE_STDIO_H) +/* Obtain a definition for NULL. */ +#include <stdio.h> +#endif + +#if defined(HAVE_TIME_H) +/* Obtain a definition for NULL. */ +#include <time.h> +#endif + +#if defined(HAVE_STRING_H) +/* Obtain a definition for NULL. */ +#include <string.h> +#endif + +#if defined(HAVE_WCHAR_H) +/* Obtain a definition for NULL. */ +#include <wchar.h> +#endif + +#if defined(HAVE_STDLIB_H) +#if !defined(_ISOC99_SOURCE) +#define _ISOC99_SOURCE +#endif +#include <stdlib.h> +#endif + +#if defined(HAVE_ERRNO_H) +#include <errno.h> +#endif + +#if defined(HAVE_SYS_ERRNO_H) +#include <sys/errno.h> +#endif + +#if defined(HAVE_STDLIB_H) +/* Obtain a prototype for free and malloc. */ +#include <stdlib.h> +#endif + +#if !defined(NULL) +#define NULL (void *)0 +#endif + +#if !defined(TRUE) +#define TRUE (1 == 1) +#endif +#if !defined(FALSE) +#define FALSE (1 == 0) +#endif + +#define MAX_FP_DIGITS 500 + +typedef enum Mode { maxsignicant, decimaldigits } Mode; + +extern "C" int dtoa_calcmaxsig (char *p, int ndigits); +extern "C" int dtoa_calcdecimal (char *p, int str_size, int ndigits); +extern "C" int dtoa_calcsign (char *p, int str_size); + +/* maxsignicant return a string containing max(1,ndigits) significant + digits. The return string contains the string produced by snprintf. + + decimaldigits: return a string produced by fcvt. The string will + contain ndigits past the decimal point (ndigits may be negative). */ + +extern "C" long double +ldtoa_strtold (const char *s, int *error) +{ + char *endp; + long double d; + +#if defined(HAVE_ERRNO_H) + errno = 0; +#endif +#if defined(HAVE_STRTOLD) + d = strtold (s, &endp); +#else + /* Fall back to using strtod. */ + d = (long double)strtod (s, &endp); +#endif + if (endp != NULL && (*endp == '\0')) +#if defined(HAVE_ERRNO_H) + *error = (errno != 0); +#else + *error = FALSE; +#endif + else + *error = TRUE; + return d; +} + +extern "C" char * +ldtoa_ldtoa (long double d, int mode, int ndigits, int *decpt, int *sign) +{ + char format[50]; + char *p; + int r; + switch (mode) + { + + case maxsignicant: + ndigits += 20; /* Enough for exponent. */ + p = (char *) malloc (ndigits); + snprintf (format, 50, "%s%d%s", "%.", ndigits - 20, "LE"); + snprintf (p, ndigits, format, d); + *sign = dtoa_calcsign (p, ndigits); + *decpt = dtoa_calcmaxsig (p, ndigits); + return p; + case decimaldigits: + p = (char *) malloc (MAX_FP_DIGITS + 20); + snprintf (format, 50, "%s%d%s", "%.", MAX_FP_DIGITS, "LE"); + snprintf (p, MAX_FP_DIGITS + 20, format, d); + *sign = dtoa_calcsign (p, MAX_FP_DIGITS + 20); + *decpt = dtoa_calcdecimal (p, MAX_FP_DIGITS + 20, ndigits); + return p; + default: + abort (); + } +} + +#if defined(GM2) +/* GNU Modula-2 linking hooks. */ + +extern "C" void +_M2_ldtoa_init (int, char **, char **) +{ +} + +extern "C" void +_M2_ldtoa_fini (int, char **, char **) +{ +} + +extern "C" void +_M2_ldtoa_dep (void) +{ +} + +struct _M2_ldtoa_ctor { _M2_ldtoa_ctor (); } _M2_ldtoa_ctor; + +_M2_ldtoa_ctor::_M2_ldtoa_ctor (void) +{ + M2RTS_RegisterModule ("ldtoa", _M2_ldtoa_init, _M2_ldtoa_fini, + _M2_ldtoa_dep); +} +#endif diff --git a/libgm2/libm2pim/sckt.cc b/libgm2/libm2pim/sckt.cc new file mode 100644 index 0000000..6c68525 --- /dev/null +++ b/libgm2/libm2pim/sckt.cc @@ -0,0 +1,430 @@ +/* sckt.c provide access to the socket layer. + +Copyright (C) 2005-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <config.h> +#include <m2rts.h> + +#if defined(HAVE_SYS_TYPES_H) +#include <sys/types.h> +#endif + +#if defined(HAVE_SYS_SOCKET_H) +#include <sys/socket.h> +#endif + +#if defined(HAVE_NETINET_IN_H) +#include <netinet/in.h> +#endif + +#if defined(HAVE_NETDB_H) +#include <netdb.h> +#endif + +#if defined(HAVE_UNISTD_H) +#include <unistd.h> +#endif + +#if defined(HAVE_SIGNAL_H) +#include <signal.h> +#endif + +#if defined(HAVE_SYS_ERRNO_H) +#include <sys/errno.h> +#endif + +#if defined(HAVE_ERRNO_H) +#include <errno.h> +#endif + +#if defined(HAVE_MALLOC_H) +#include <malloc.h> +#endif + +#if defined(HAVE_STRING_H) +#include <string.h> +#endif + +#if defined(HAVE_STDLIB_H) +#include <stdlib.h> +#endif + +#if defined(HAVE_STDIO_H) +#include <stdio.h> +#endif + +#define PORTSTART 7000 +#define NOOFTRIES 100 +#define MAXHOSTNAME 256 + +#undef DEBUGGING + +#if !defined(TRUE) +#define TRUE (1 == 1) +#endif +#if !defined(FALSE) +#define FALSE (1 == 0) +#endif + +#if defined(HAVE_SYS_SOCKET_H) + +#define ERROR(X) \ + { \ + printf ("%s:%d:%s\n", __FILE__, __LINE__, X); \ + localExit (1); \ + } + +#define ASSERT(X) \ + { \ + if (!(X)) \ + { \ + printf ("%s:%d: assert(%s) failed\n", __FILE__, __LINE__, #X); \ + exit (1); \ + } \ + } + +typedef struct +{ + char hostname[MAXHOSTNAME]; + struct hostent *hp; + struct sockaddr_in sa, isa; + int sockFd; + int portNo; +} tcpServerState; + +int +localExit (int i) +{ + exit (1); +} + +/* tcpServerEstablishPort returns a tcpState containing the relevant + information about a socket declared to receive tcp connections. + This method attempts to use the port specified by the parameter. */ + +extern "C" tcpServerState * +tcpServerEstablishPort (int portNo) +{ + tcpServerState *s = (tcpServerState *)malloc (sizeof (tcpServerState)); + int b, p, n; + + if (s == NULL) + ERROR ("no more memory"); + + /* Remove SIGPIPE which is raised on the server if the client is killed. */ + signal (SIGPIPE, SIG_IGN); + + if (gethostname (s->hostname, MAXHOSTNAME) < 0) + ERROR ("cannot find our hostname"); + + s->hp = gethostbyname (s->hostname); + if (s->hp == NULL) + ERROR ("cannot get host name"); + + p = -1; + n = 0; + do + { + p++; + /* Open a TCP socket (an Internet stream socket). */ + + s->sockFd = socket (s->hp->h_addrtype, SOCK_STREAM, 0); + if (s->sockFd < 0) + ERROR ("socket"); + + memset ((void *)&s->sa, 0, sizeof (s->sa)); + ASSERT ((s->hp->h_addrtype == AF_INET)); + s->sa.sin_family = s->hp->h_addrtype; + s->sa.sin_addr.s_addr = htonl (INADDR_ANY); + s->sa.sin_port = htons (portNo + p); + + b = bind (s->sockFd, (struct sockaddr *)&s->sa, sizeof (s->sa)); + } + while ((b < 0) && (n < NOOFTRIES)); + + if (b < 0) + ERROR ("bind"); + + s->portNo = portNo + p; +#if defined(DEBUGGING) + printf ("the receiving host is: %s, the port is %d\n", s->hostname, + s->portNo); +#endif + listen (s->sockFd, 1); + return s; +} + +/* tcpServerEstablish returns a tcpServerState containing the relevant + information about a socket declared to receive tcp connections. */ + +extern "C" tcpServerState * +tcpServerEstablish (void) +{ + return tcpServerEstablishPort (PORTSTART); +} + +/* tcpServerAccept returns a file descriptor once a client has connected and + been accepted. */ + +extern "C" int +tcpServerAccept (tcpServerState *s) +{ + socklen_t i = sizeof (s->isa); + int t; + +#if defined(DEBUGGING) + printf ("before accept %d\n", s->sockFd); +#endif + t = accept (s->sockFd, (struct sockaddr *)&s->isa, &i); + return t; +} + +/* tcpServerPortNo returns the portNo from structure, s. */ + +extern "C" int +tcpServerPortNo (tcpServerState *s) +{ + return s->portNo; +} + +/* tcpServerSocketFd returns the sockFd from structure, s. */ + +extern "C" int +tcpServerSocketFd (tcpServerState *s) +{ + return s->sockFd; +} + +/* getLocalIP returns the IP address of this machine. */ + +extern "C" unsigned int +getLocalIP (tcpServerState *s) +{ + char hostname[1024]; + struct hostent *hp; + struct sockaddr_in sa; + unsigned int ip; + int ret = gethostname (hostname, sizeof (hostname)); + + if (ret == -1) + { + ERROR ("gethostname"); + return 0; + } + + hp = gethostbyname (hostname); + if (hp == NULL) + { + ERROR ("gethostbyname"); + return 0; + } + + if (sizeof (unsigned int) != sizeof (in_addr_t)) + { + ERROR ("bad ip length"); + return 0; + } + + memset (&sa, sizeof (struct sockaddr_in), 0); + sa.sin_family = AF_INET; + sa.sin_port = htons (80); + if (hp->h_length == sizeof (unsigned int)) + { + memcpy (&ip, hp->h_addr_list[0], hp->h_length); + return ip; + } + + return 0; +} + +/* tcpServerIP returns the IP address from structure s. */ + +extern "C" int +tcpServerIP (tcpServerState *s) +{ + return *((int *)s->hp->h_addr_list[0]); +} + +/* tcpServerClientIP returns the IP address of the client who + has connected to server s. */ + +extern "C" unsigned int +tcpServerClientIP (tcpServerState *s) +{ + unsigned int ip; + + ASSERT (s->isa.sin_family == AF_INET); + ASSERT (sizeof (ip) == 4); + memcpy (&ip, &s->isa.sin_addr, sizeof (ip)); + return ip; +} + +/* tcpServerClientPortNo returns the port number of the client who + has connected to server s. */ + +extern "C" unsigned int +tcpServerClientPortNo (tcpServerState *s) +{ + return s->isa.sin_port; +} + +/* +**************************************************************** +*** C L I E N T R O U T I N E S +**************************************************************** + */ + +typedef struct +{ + char hostname[MAXHOSTNAME]; + struct hostent *hp; + struct sockaddr_in sa; + int sockFd; + int portNo; +} tcpClientState; + +/* tcpClientSocket returns a file descriptor (socket) which has + connected to, serverName:portNo. */ + +extern "C" tcpClientState * +tcpClientSocket (char *serverName, int portNo) +{ + tcpClientState *s = (tcpClientState *)malloc (sizeof (tcpClientState)); + + if (s == NULL) + ERROR ("no more memory"); + + /* Remove SIGPIPE which is raised on the server if the client is killed. */ + signal (SIGPIPE, SIG_IGN); + + s->hp = gethostbyname (serverName); + if (s->hp == NULL) + { + fprintf (stderr, "cannot find host: %s\n", serverName); + exit (1); + } + + memset ((void *)&s->sa, 0, sizeof (s->sa)); + s->sa.sin_family = AF_INET; + memcpy ((void *)&s->sa.sin_addr, (void *)s->hp->h_addr, s->hp->h_length); + s->portNo = portNo; + s->sa.sin_port = htons (portNo); + + /* Open a TCP socket (an Internet stream socket). */ + + s->sockFd = socket (s->hp->h_addrtype, SOCK_STREAM, 0); + return s; +} + +/* tcpClientSocketIP returns a file descriptor (socket) which has + connected to, ip:portNo. */ + +extern "C" tcpClientState * +tcpClientSocketIP (unsigned int ip, int portNo) +{ + tcpClientState *s = (tcpClientState *)malloc (sizeof (tcpClientState)); + + if (s == NULL) + ERROR ("no more memory"); + + /* Remove SIGPIPE which is raised on the server if the client is killed. */ + signal (SIGPIPE, SIG_IGN); + + memset ((void *)&s->sa, 0, sizeof (s->sa)); + s->sa.sin_family = AF_INET; + memcpy ((void *)&s->sa.sin_addr, (void *)&ip, sizeof (ip)); + s->portNo = portNo; + s->sa.sin_port = htons (portNo); + + /* Open a TCP socket (an Internet stream socket). */ + + s->sockFd = socket (PF_INET, SOCK_STREAM, 0); + return s; +} + +/* tcpClientConnect returns the file descriptor associated with s, + once a connect has been performed. */ + +extern "C" int +tcpClientConnect (tcpClientState *s) +{ + if (connect (s->sockFd, (struct sockaddr *)&s->sa, sizeof (s->sa)) < 0) + ERROR ("failed to connect to the TCP server"); + + return s->sockFd; +} + +/* tcpClientPortNo returns the portNo from structure s. */ + +extern "C" int +tcpClientPortNo (tcpClientState *s) +{ + return s->portNo; +} + +/* tcpClientSocketFd returns the sockFd from structure s. */ + +extern "C" int +tcpClientSocketFd (tcpClientState *s) +{ + return s->sockFd; +} + +/* tcpClientIP returns the sockFd from structure s. */ + +extern "C" int +tcpClientIP (tcpClientState *s) +{ +#if defined(DEBUGGING) + printf ("client ip = %s\n", inet_ntoa (s->sa.sin_addr.s_addr)); +#endif + return s->sa.sin_addr.s_addr; +} +#endif + +/* GNU Modula-2 link fodder. */ + +extern "C" void +_M2_sckt_init (int, char *[], char *[]) +{ +} + +extern "C" void +_M2_sckt_finish (int, char *[], char *[]) +{ +} + +extern "C" void +_M2_sckt_dep (void) +{ +} + +struct _M2_sckt_ctor { _M2_sckt_ctor (); } _M2_sckt_ctor; + +_M2_sckt_ctor::_M2_sckt_ctor (void) +{ + M2RTS_RegisterModule ("sckt", _M2_sckt_init, _M2_sckt_finish, + _M2_sckt_dep); +} diff --git a/libgm2/libm2pim/target.c b/libgm2/libm2pim/target.c new file mode 100644 index 0000000..0e66391 --- /dev/null +++ b/libgm2/libm2pim/target.c @@ -0,0 +1,61 @@ +/* target.c provide access to miscellaneous math functions. + +Copyright (C) 2005-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#if defined(HAVE_MATH_H) +#include <math.h> +#endif + +#if !defined(HAVE_EXP10) +#if defined(M_LN10) +double +exp10 (double x) +{ + return exp (x * M_LN10); +} +#endif +#endif + +#if !defined(HAVE_EXP10F) +#if defined(M_LN10) +float +exp10f (float x) +{ + return expf (x * M_LN10); +} +#endif +#endif + +#if !defined(HAVE_EXP10L) +#if defined(M_LN10) +long double +exp10l (long double x) +{ + return expl (x * M_LN10); +} +#endif +#endif diff --git a/libgm2/libm2pim/termios.cc b/libgm2/libm2pim/termios.cc new file mode 100644 index 0000000..b446bb8 --- /dev/null +++ b/libgm2/libm2pim/termios.cc @@ -0,0 +1,1987 @@ +/* termios.cc provide access to the terminal. + +Copyright (C) 2010-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <config.h> +#include <m2rts.h> + +#if defined(HAVE_STDIO_H) +#include <stdio.h> +#endif +#if defined(HAVE_STDARG_H) +#include <stdarg.h> +#endif +#if defined(HAVE_STDLIB_H) +#include <stdlib.h> +#endif +#if defined(HAVE_STRING_H) +#include <string.h> +#endif +#if defined(HAVE_STRINGS_H) +#include <strings.h> +#endif + +#ifdef TERMIOS_NEEDS_XOPEN_SOURCE +#define _XOPEN_SOURCE +#endif + +#if defined(HAVE_SYS_TYPES_H) +#include <sys/types.h> +#endif + +#if defined(HAVE_TERMIOS_H) +#include <termios.h> +#endif + +void _M2_termios_init (void); +void _M2_termios_finish (void); + +#if defined(HAVE_TERMIOS_H) + +#define EXPORT(X) termios##_##X + +typedef enum { + vintr, + vquit, + verase, + vkill, + veof, + vtime, + vmin, + vswtc, + vstart, + vstop, + vsusp, + veol, + vreprint, + vdiscard, + vwerase, + vlnext, + veol2 +} ControlChar; + +typedef enum { + /* Input flag bits. */ + ignbrk, + ibrkint, + ignpar, + iparmrk, + inpck, + istrip, + inlcr, + igncr, + icrnl, + iuclc, + ixon, + ixany, + ixoff, + imaxbel, + /* Output flag bits. */ + opost, + olcuc, + onlcr, + ocrnl, + onocr, + onlret, + ofill, + ofdel, + onl0, + onl1, + ocr0, + ocr1, + ocr2, + ocr3, + otab0, + otab1, + otab2, + otab3, + obs0, + obs1, + off0, + off1, + ovt0, + ovt1, + /* Baud rate. */ + b0, + b50, + b75, + b110, + b135, + b150, + b200, + b300, + b600, + b1200, + b1800, + b2400, + b4800, + b9600, + b19200, + b38400, + b57600, + b115200, + b240400, + b460800, + b500000, + b576000, + b921600, + b1000000, + b1152000, + b1500000, + b2000000, + b2500000, + b3000000, + b3500000, + b4000000, + maxbaud, + crtscts, + /* Character size. */ + cs5, + cs6, + cs7, + cs8, + cstopb, + cread, + parenb, + parodd, + hupcl, + clocal, + /* Local flags. */ + lisig, + licanon, + lxcase, + lecho, + lechoe, + lechok, + lechonl, + lnoflsh, + ltopstop, + lechoctl, + lechoprt, + lechoke, + lflusho, + lpendin, + liexten +} Flag; + +/* Prototypes. */ +extern "C" void *EXPORT (InitTermios) (void); +extern "C" void *EXPORT (KillTermios) (struct termios *p); +extern "C" int EXPORT (cfgetospeed) (struct termios *t); +extern "C" int EXPORT (cfgetispeed) (struct termios *t); +extern "C" int EXPORT (cfsetospeed) (struct termios *t, unsigned int b); +extern "C" int EXPORT (cfsetispeed) (struct termios *t, unsigned int b); +extern "C" int EXPORT (cfsetspeed) (struct termios *t, unsigned int b); +extern "C" int EXPORT (tcgetattr) (int fd, struct termios *t); +extern "C" int EXPORT (tcsetattr) (int fd, int option, struct termios *t); +extern "C" void EXPORT (cfmakeraw) (struct termios *t); +extern "C" int EXPORT (tcsendbreak) (int fd, int duration); +extern "C" int EXPORT (tcdrain) (int fd); +extern "C" int EXPORT (tcflushi) (int fd); +extern "C" int EXPORT (tcflusho) (int fd); +extern "C" int EXPORT (tcflushio) (int fd); +extern "C" int EXPORT (tcflowoni) (int fd); +extern "C" int EXPORT (tcflowoffi) (int fd); +extern "C" int EXPORT (tcflowono) (int fd); +extern "C" int EXPORT (tcflowoffo) (int fd); +extern "C" int EXPORT (GetFlag) (struct termios *t, Flag f, int *b); +extern "C" int EXPORT (SetFlag) (struct termios *t, Flag f, int b); +extern "C" int EXPORT (GetChar) (struct termios *t, ControlChar c, char *ch); +extern "C" int EXPORT (SetChar) (struct termios *t, ControlChar c, char ch); +extern "C" int EXPORT (tcsnow) (void); +extern "C" int EXPORT (tcsflush) (void); +extern "C" int EXPORT (tcsdrain) (void); +extern "C" int doSetUnset (tcflag_t *bitset, unsigned int mask, int value); + +/* InitTermios new data structure. */ + +extern "C" void +*EXPORT (InitTermios) (void) +{ + struct termios *p = (struct termios *)malloc (sizeof (struct termios)); + + memset (p, 0, sizeof (struct termios)); + return p; +} + +/* KillTermios delete data structure. */ + +extern "C" void* +EXPORT (KillTermios) (struct termios *p) +{ + free (p); + return NULL; +} + +/* tcsnow return the value of TCSANOW. */ + +extern "C" int +EXPORT (tcsnow) (void) { return TCSANOW; } + +/* tcsdrain return the value of TCSADRAIN. */ + +extern "C" int +EXPORT (tcsdrain) (void) { return TCSADRAIN; } + +/* tcsflush return the value of TCSAFLUSH. */ + +extern "C" int +EXPORT (tcsflush) (void) { return TCSAFLUSH; } + +/* cfgetospeed return output baud rate. */ + +extern "C" int +EXPORT (cfgetospeed) (struct termios *t) { return cfgetospeed (t); } + +/* cfgetispeed return input baud rate. */ + +extern "C" int +EXPORT (cfgetispeed) (struct termios *t) { return cfgetispeed (t); } + +/* cfsetospeed set output baud rate. */ + +extern "C" int +EXPORT (cfsetospeed) (struct termios *t, unsigned int b) +{ + return cfsetospeed (t, b); +} + +/* cfsetispeed set input baud rate. */ + +extern "C" int +EXPORT (cfsetispeed) (struct termios *t, unsigned int b) +{ + return cfsetispeed (t, b); +} + +/* cfsetspeed set input and output baud rate. */ + +extern "C" int +EXPORT (cfsetspeed) (struct termios *t, unsigned int b) +{ + int val = cfsetispeed (t, b); + if (val == 0) + return cfsetospeed (t, b); + cfsetospeed (t, b); + return val; +} + +/* tcgetattr get state of, fd, into, t. */ + +extern "C" int +EXPORT (tcgetattr) (int fd, struct termios *t) +{ + return tcgetattr (fd, t); +} + +/* tcsetattr set state of, fd, to, t, using option. */ + +int EXPORT (tcsetattr) (int fd, int option, struct termios *t) +{ + return tcsetattr (fd, option, t); +} + +/* cfmakeraw sets the terminal to raw mode. */ + +extern "C" void +EXPORT (cfmakeraw) (struct termios *t) +{ +#if defined(HAVE_CFMAKERAW) + return cfmakeraw (t); +#endif +} + +/* tcsendbreak send zero bits for duration. */ + +extern "C" int +EXPORT (tcsendbreak) (int fd, int duration) +{ + return tcsendbreak (fd, duration); +} + +/* tcdrain waits for pending output to be written on, fd. */ + +extern "C" int +EXPORT (tcdrain) (int fd) { return tcdrain (fd); } + +/* tcflushi flush input. */ + +extern "C" int +EXPORT (tcflushi) (int fd) +{ +#if defined(TCIFLUSH) + return tcflush (fd, TCIFLUSH); +#else + return 1; +#endif +} + +/* tcflusho flush output. */ + +extern "C" int +EXPORT (tcflusho) (int fd) +{ +#if defined(TCOFLUSH) + return tcflush (fd, TCOFLUSH); +#else + return 1; +#endif +} + +/* tcflushio flush input and output. */ + +extern "C" int +EXPORT (tcflushio) (int fd) +{ +#if defined(TCIOFLUSH) + return tcflush (fd, TCIOFLUSH); +#else + return 1; +#endif +} + +/* tcflowoni restart input on, fd. */ + +extern "C" int +EXPORT (tcflowoni) (int fd) +{ +#if defined(TCION) + return tcflow (fd, TCION); +#else + return 1; +#endif +} + +/* tcflowoffi stop input on, fd. */ + +extern "C" int +EXPORT (tcflowoffi) (int fd) +{ +#if defined(TCIOFF) + return tcflow (fd, TCIOFF); +#else + return 1; +#endif +} + +/* tcflowono restart output on, fd. */ + +extern "C" int +EXPORT (tcflowono) (int fd) +{ +#if defined(TCOON) + return tcflow (fd, TCOON); +#else + return 1; +#endif +} + +/* tcflowoffo stop output on, fd. */ + +extern "C" int +EXPORT (tcflowoffo) (int fd) +{ +#if defined(TCOOFF) + return tcflow (fd, TCOOFF); +#else + return 1; +#endif +} + +/* doSetUnset applies mask or undoes mask depending upon value. */ + +extern "C" int +doSetUnset (tcflag_t *bitset, unsigned int mask, int value) +{ + if (value) + (*bitset) |= mask; + else + (*bitset) &= (~mask); + return 1; +} + +/* GetFlag sets a flag value from, t, in, b, and returns TRUE + if, t, supports, f. */ + +extern "C" int +EXPORT (GetFlag) (struct termios *t, Flag f, int *b) +{ + switch (f) + { + + case ignbrk: +#if defined(IGNBRK) + *b = ((t->c_iflag & IGNBRK) == IGNBRK); + return 1; +#else + return 0; +#endif + case ibrkint: +#if defined(BRKINT) + *b = ((t->c_iflag & BRKINT) == BRKINT); + return 1; +#else + return 0; +#endif + case ignpar: +#if defined(IGNPAR) + *b = ((t->c_iflag & IGNPAR) == IGNPAR); + return 1; +#else + return 0; +#endif + case iparmrk: +#if defined(PARMRK) + *b = ((t->c_iflag & PARMRK) == PARMRK); + return 1; +#else + return 0; +#endif + case inpck: +#if defined(INPCK) + *b = ((t->c_iflag & INPCK) == INPCK); + return 1; +#else + return 0; +#endif + case istrip: +#if defined(ISTRIP) + *b = ((t->c_iflag & ISTRIP) == ISTRIP); + return 1; +#else + return 0; +#endif + case inlcr: +#if defined(INLCR) + *b = ((t->c_iflag & INLCR) == INLCR); + return 1; +#else + return 0; +#endif + case igncr: +#if defined(IGNCR) + *b = ((t->c_iflag & IGNCR) == IGNCR); + return 1; +#else + return 0; +#endif + case icrnl: +#if defined(ICRNL) + *b = ((t->c_iflag & ICRNL) == ICRNL); + return 1; +#else + return 0; +#endif + case iuclc: +#if defined(IUCLC) + *b = ((t->c_iflag & IUCLC) == IUCLC); + return 1; +#else + return 0; +#endif + case ixon: +#if defined(IXON) + *b = ((t->c_iflag & IXON) == IXON); + return 1; +#else + return 0; +#endif + case ixany: +#if defined(IXANY) + *b = ((t->c_iflag & IXANY) == IXANY); + return 1; +#else + return 0; +#endif + case ixoff: +#if defined(IXOFF) + *b = ((t->c_iflag & IXOFF) == IXOFF); + return 1; +#else + return 0; +#endif + case imaxbel: +#if defined(IMAXBEL) + *b = ((t->c_iflag & IMAXBEL) == IMAXBEL); + return 1; +#else + return 0; +#endif + case opost: +#if defined(OPOST) + *b = ((t->c_oflag & OPOST) == OPOST); + return 1; +#else + return 0; +#endif + case olcuc: +#if defined(OLCUC) + *b = ((t->c_oflag & OLCUC) == OLCUC); + return 1; +#else + return 0; +#endif + case onlcr: +#if defined(ONLCR) + *b = ((t->c_oflag & ONLCR) == ONLCR); + return 1; +#else + return 0; +#endif + case ocrnl: +#if defined(OCRNL) + *b = ((t->c_oflag & OCRNL) == OCRNL); + return 1; +#else + return 0; +#endif + case onocr: +#if defined(ONOCR) + *b = ((t->c_oflag & ONOCR) == ONOCR); + return 1; +#else + return 0; +#endif + case onlret: +#if defined(ONLRET) + *b = ((t->c_oflag & ONLRET) == ONLRET); + return 1; +#else + return 0; +#endif + case ofill: +#if defined(OFILL) + *b = ((t->c_oflag & OFILL) == OFILL); + return 1; +#else + return 0; +#endif + case ofdel: +#if defined(OFDEL) + *b = ((t->c_oflag & OFDEL) == OFDEL); + return 1; +#else + return 0; +#endif + case onl0: +#if defined(NL0) + *b = ((t->c_oflag & NL0) == NL0); + return 1; +#else + return 0; +#endif + case onl1: +#if defined(NL1) + *b = ((t->c_oflag & NL1) == NL1); + return 1; +#else + return 0; +#endif + case ocr0: +#if defined(CR0) + *b = ((t->c_oflag & CR0) == CR0); + return 1; +#else + return 0; +#endif + case ocr1: +#if defined(CR1) + *b = ((t->c_oflag & CR1) == CR1); + return 1; +#else + return 0; +#endif + case ocr2: +#if defined(CR2) + *b = ((t->c_oflag & CR2) == CR2); + return 1; +#else + return 0; +#endif + case ocr3: +#if defined(CR3) + *b = ((t->c_oflag & CR3) == CR3); + return 1; +#else + return 0; +#endif + case otab0: +#if defined(TAB0) + *b = ((t->c_oflag & TAB0) == TAB0); + return 1; +#else + return 0; +#endif + case otab1: +#if defined(TAB1) + *b = ((t->c_oflag & TAB1) == TAB1); + return 1; +#else + return 0; +#endif + case otab2: +#if defined(TAB2) + *b = ((t->c_oflag & TAB2) == TAB2); + return 1; +#else + return 0; +#endif + case otab3: +#if defined(TAB3) + *b = ((t->c_oflag & TAB3) == TAB3); + return 1; +#else + return 0; +#endif + case obs0: +#if defined(BS0) + *b = ((t->c_oflag & BS0) == BS0); + return 1; +#else + return 0; +#endif + case obs1: +#if defined(BS1) + *b = ((t->c_oflag & BS1) == BS1); + return 1; +#else + return 0; +#endif + case off0: +#if defined(FF0) + *b = ((t->c_oflag & FF0) == FF0); + return 1; +#else + return 0; +#endif + case off1: +#if defined(FF1) + *b = ((t->c_oflag & FF1) == FF1); + return 1; +#else + return 0; +#endif + case ovt0: +#if defined(VT0) + *b = ((t->c_oflag & VT0) == VT0); + return 1; +#else + return 0; +#endif + case ovt1: +#if defined(VT1) + *b = ((t->c_oflag & VT1) == VT1); + return 1; +#else + return 0; +#endif + case b0: +#if defined(B0) + *b = ((t->c_cflag & B0) == B0); + return 1; +#else + return 0; +#endif + case b50: +#if defined(B50) + *b = ((t->c_cflag & B50) == B50); + return 1; +#else + return 0; +#endif + case b75: +#if defined(B75) + *b = ((t->c_cflag & B75) == B75); + return 1; +#else + return 0; +#endif + case b110: +#if defined(B110) + *b = ((t->c_cflag & B110) == B110); + return 1; +#else + return 0; +#endif + case b135: +#if defined(B134) + *b = ((t->c_cflag & B134) == B134); + return 1; +#else + return 0; +#endif + case b150: +#if defined(B150) + *b = ((t->c_cflag & B150) == B150); + return 1; +#else + return 0; +#endif + case b200: +#if defined(B200) + *b = ((t->c_cflag & B200) == B200); + return 1; +#else + return 0; +#endif + case b300: +#if defined(B300) + *b = ((t->c_cflag & B300) == B300); + return 1; +#else + return 0; +#endif + case b600: +#if defined(B600) + *b = ((t->c_cflag & B600) == B600); + return 1; +#else + return 0; +#endif + case b1200: +#if defined(B1200) + *b = ((t->c_cflag & B1200) == B1200); + return 1; +#else + return 0; +#endif + case b1800: +#if defined(B1800) + *b = ((t->c_cflag & B1800) == B1800); + return 1; +#else + return 0; +#endif + case b2400: +#if defined(B2400) + *b = ((t->c_cflag & B2400) == B2400); + return 1; +#else + return 0; +#endif + case b4800: +#if defined(B4800) + *b = ((t->c_cflag & B4800) == B4800); + return 1; +#else + return 0; +#endif + case b9600: +#if defined(B9600) + *b = ((t->c_cflag & B9600) == B9600); + return 1; +#else + return 0; +#endif + case b19200: +#if defined(B19200) + *b = ((t->c_cflag & B19200) == B19200); + return 1; +#else + return 0; +#endif + case b38400: +#if defined(B38400) + *b = ((t->c_cflag & B38400) == B38400); + return 1; +#else + return 0; +#endif + case b57600: +#if defined(B57600) + *b = ((t->c_cflag & B57600) == B57600); + return 1; +#else + return 0; +#endif + case b115200: +#if defined(B115200) + *b = ((t->c_cflag & B115200) == B115200); + return 1; +#else + return 0; +#endif + case b240400: +#if defined(B230400) + *b = ((t->c_cflag & B230400) == B230400); + return 1; +#else + return 0; +#endif + case b460800: +#if defined(B460800) + *b = ((t->c_cflag & B460800) == B460800); + return 1; +#else + return 0; +#endif + case b500000: +#if defined(B500000) + *b = ((t->c_cflag & B500000) == B500000); + return 1; +#else + return 0; +#endif + case b576000: +#if defined(B576000) + *b = ((t->c_cflag & B576000) == B576000); + return 1; +#else + return 0; +#endif + case b921600: +#if defined(B921600) + *b = ((t->c_cflag & B921600) == B921600); + return 1; +#else + return 0; +#endif + case b1000000: +#if defined(B1000000) + *b = ((t->c_cflag & B1000000) == B1000000); + return 1; +#else + return 0; +#endif + case b1152000: +#if defined(B1152000) + *b = ((t->c_cflag & B1152000) == B1152000); + return 1; +#else + return 0; +#endif + case b1500000: +#if defined(B1500000) + *b = ((t->c_cflag & B1500000) == B1500000); + return 1; +#else + return 0; +#endif + case b2000000: +#if defined(B2000000) + *b = ((t->c_cflag & B2000000) == B2000000); + return 1; +#else + return 0; +#endif + case b2500000: +#if defined(B2500000) + *b = ((t->c_cflag & B2500000) == B2500000); + return 1; +#else + return 0; +#endif + case b3000000: +#if defined(B3000000) + *b = ((t->c_cflag & B3000000) == B3000000); + return 1; +#else + return 0; +#endif + case b3500000: +#if defined(B3500000) + *b = ((t->c_cflag & B3500000) == B3500000); + return 1; +#else + return 0; +#endif + case b4000000: +#if defined(B4000000) + *b = ((t->c_cflag & B4000000) == B4000000); + return 1; +#else + return 0; +#endif + case maxbaud: +#if defined(MAX) + *b = ((t->c_cflag & __MAX_BAUD) == __MAX_BAUD); + return 1; +#else + return 0; +#endif + case crtscts: +#if defined(CRTSCTS) + *b = ((t->c_cflag & CRTSCTS) == CRTSCTS); + return 1; +#else + return 0; +#endif + case cs5: +#if defined(CS5) + *b = ((t->c_cflag & CS5) == CS5); + return 1; +#else + return 0; +#endif + case cs6: +#if defined(CS6) + *b = ((t->c_cflag & CS6) == CS6); + return 1; +#else + return 0; +#endif + case cs7: +#if defined(CS7) + *b = ((t->c_cflag & CS7) == CS7); + return 1; +#else + return 0; +#endif + case cs8: +#if defined(CS8) + *b = ((t->c_cflag & CS8) == CS8); + return 1; +#else + return 0; +#endif + case cstopb: +#if defined(CSTOPB) + *b = ((t->c_cflag & CSTOPB) == CSTOPB); + return 1; +#else + return 0; +#endif + case cread: +#if defined(CREAD) + *b = ((t->c_cflag & CREAD) == CREAD); + return 1; +#else + return 0; +#endif + case parenb: +#if defined(PARENB) + *b = ((t->c_cflag & PARENB) == PARENB); + return 1; +#else + return 0; +#endif + case parodd: +#if defined(PARODD) + *b = ((t->c_cflag & PARODD) == PARODD); + return 1; +#else + return 0; +#endif + case hupcl: +#if defined(HUPCL) + *b = ((t->c_cflag & HUPCL) == HUPCL); + return 1; +#else + return 0; +#endif + case clocal: +#if defined(CLOCAL) + *b = ((t->c_cflag & CLOCAL) == CLOCAL); + return 1; +#else + return 0; +#endif + case lisig: +#if defined(ISIG) + *b = ((t->c_lflag & ISIG) == ISIG); + return 1; +#else + return 0; +#endif + case licanon: +#if defined(ICANON) + *b = ((t->c_lflag & ICANON) == ICANON); + return 1; +#else + return 0; +#endif + case lxcase: +#if defined(XCASE) + *b = ((t->c_lflag & XCASE) == XCASE); + return 1; +#else + return 0; +#endif + case lecho: +#if defined(ECHO) + *b = ((t->c_lflag & ECHO) == ECHO); + return 1; +#else + return 0; +#endif + case lechoe: +#if defined(ECHOE) + *b = ((t->c_lflag & ECHOE) == ECHOE); + return 1; +#else + return 0; +#endif + case lechok: +#if defined(ECHOK) + *b = ((t->c_lflag & ECHOK) == ECHOK); + return 1; +#else + return 0; +#endif + case lechonl: +#if defined(ECHONL) + *b = ((t->c_lflag & ECHONL) == ECHONL); + return 1; +#else + return 0; +#endif + case lnoflsh: +#if defined(NOFLSH) + *b = ((t->c_lflag & NOFLSH) == NOFLSH); + return 1; +#else + return 0; +#endif + case ltopstop: +#if defined(TOSTOP) + *b = ((t->c_lflag & TOSTOP) == TOSTOP); + return 1; +#else + return 0; +#endif + case lechoctl: +#if defined(ECHOCTL) + *b = ((t->c_lflag & ECHOCTL) == ECHOCTL); + return 1; +#else + return 0; +#endif + case lechoprt: +#if defined(ECHOPRT) + *b = ((t->c_lflag & ECHOPRT) == ECHOPRT); + return 1; +#else + return 0; +#endif + case lechoke: +#if defined(ECHOKE) + *b = ((t->c_lflag & ECHOKE) == ECHOKE); + return 1; +#else + return 0; +#endif + case lflusho: +#if defined(FLUSHO) + *b = ((t->c_lflag & FLUSHO) == FLUSHO); + return 1; +#else + return 0; +#endif + case lpendin: +#if defined(PENDIN) + *b = ((t->c_lflag & PENDIN) == PENDIN); + return 1; +#else + return 0; +#endif + case liexten: +#if defined(IEXTEN) + *b = ((t->c_lflag & IEXTEN) == IEXTEN); + return 1; +#else + return 0; +#endif + } + return 0; +} + +/* SetFlag sets a flag value in, t, to, b, and returns TRUE if + this flag value is supported. */ + +extern "C" int +EXPORT (SetFlag) (struct termios *t, Flag f, int b) +{ + switch (f) + { + + case ignbrk: +#if defined(IGNBRK) + return doSetUnset (&t->c_iflag, IGNBRK, b); +#else + return 0; +#endif + case ibrkint: +#if defined(BRKINT) + return doSetUnset (&t->c_iflag, BRKINT, b); +#else + return 0; +#endif + case ignpar: +#if defined(IGNPAR) + return doSetUnset (&t->c_iflag, IGNPAR, b); +#else + return 0; +#endif + case iparmrk: +#if defined(PARMRK) + return doSetUnset (&t->c_iflag, PARMRK, b); +#else + return 0; +#endif + case inpck: +#if defined(INPCK) + return doSetUnset (&t->c_iflag, INPCK, b); +#else + return 0; +#endif + case istrip: +#if defined(ISTRIP) + return doSetUnset (&t->c_iflag, ISTRIP, b); +#else + return 0; +#endif + case inlcr: +#if defined(INLCR) + return doSetUnset (&t->c_iflag, INLCR, b); +#else + return 0; +#endif + case igncr: +#if defined(IGNCR) + return doSetUnset (&t->c_iflag, IGNCR, b); +#else + return 0; +#endif + case icrnl: +#if defined(ICRNL) + return doSetUnset (&t->c_iflag, ICRNL, b); +#else + return 0; +#endif + case iuclc: +#if defined(IUCLC) + return doSetUnset (&t->c_iflag, IUCLC, b); +#else + return 0; +#endif + case ixon: +#if defined(IXON) + return doSetUnset (&t->c_iflag, IXON, b); +#else + return 0; +#endif + case ixany: +#if defined(IXANY) + return doSetUnset (&t->c_iflag, IXANY, b); +#else + return 0; +#endif + case ixoff: +#if defined(IXOFF) + return doSetUnset (&t->c_iflag, IXOFF, b); +#else + return 0; +#endif + case imaxbel: +#if defined(IMAXBEL) + return doSetUnset (&t->c_iflag, IMAXBEL, b); +#else + return 0; +#endif + case opost: +#if defined(OPOST) + return doSetUnset (&t->c_oflag, OPOST, b); +#else + return 0; +#endif + case olcuc: +#if defined(OLCUC) + return doSetUnset (&t->c_oflag, OLCUC, b); +#else + return 0; +#endif + case onlcr: +#if defined(ONLCR) + return doSetUnset (&t->c_oflag, ONLCR, b); +#else + return 0; +#endif + case ocrnl: +#if defined(OCRNL) + return doSetUnset (&t->c_oflag, OCRNL, b); +#else + return 0; +#endif + case onocr: +#if defined(ONOCR) + return doSetUnset (&t->c_oflag, ONOCR, b); +#else + return 0; +#endif + case onlret: +#if defined(ONLRET) + return doSetUnset (&t->c_oflag, ONLRET, b); +#else + return 0; +#endif + case ofill: +#if defined(OFILL) + return doSetUnset (&t->c_oflag, OFILL, b); +#else + return 0; +#endif + case ofdel: +#if defined(OFDEL) + return doSetUnset (&t->c_oflag, OFDEL, b); +#else + return 0; +#endif + case onl0: +#if defined(NL0) + return doSetUnset (&t->c_oflag, NL0, b); +#else + return 0; +#endif + case onl1: +#if defined(NL1) + return doSetUnset (&t->c_oflag, NL1, b); +#else + return 0; +#endif + case ocr0: +#if defined(CR0) + return doSetUnset (&t->c_oflag, CR0, b); +#else + return 0; +#endif + case ocr1: +#if defined(CR1) + return doSetUnset (&t->c_oflag, CR1, b); +#else + return 0; +#endif + case ocr2: +#if defined(CR2) + return doSetUnset (&t->c_oflag, CR2, b); +#else + return 0; +#endif + case ocr3: +#if defined(CR3) + return doSetUnset (&t->c_oflag, CR3, b); +#else + return 0; +#endif + case otab0: +#if defined(TAB0) + return doSetUnset (&t->c_oflag, TAB0, b); +#else + return 0; +#endif + case otab1: +#if defined(TAB1) + return doSetUnset (&t->c_oflag, TAB1, b); +#else + return 0; +#endif + case otab2: +#if defined(TAB2) + return doSetUnset (&t->c_oflag, TAB2, b); +#else + return 0; +#endif + case otab3: +#if defined(TAB3) + return doSetUnset (&t->c_oflag, TAB3, b); +#else + return 0; +#endif + case obs0: +#if defined(BS0) + return doSetUnset (&t->c_oflag, BS0, b); +#else + return 0; +#endif + case obs1: +#if defined(BS1) + return doSetUnset (&t->c_oflag, BS1, b); +#else + return 0; +#endif + case off0: +#if defined(FF0) + return doSetUnset (&t->c_oflag, FF0, b); +#else + return 0; +#endif + case off1: +#if defined(FF1) + return doSetUnset (&t->c_oflag, FF1, b); +#else + return 0; +#endif + case ovt0: +#if defined(VT0) + return doSetUnset (&t->c_oflag, VT0, b); +#else + return 0; +#endif + case ovt1: +#if defined(VT1) + return doSetUnset (&t->c_oflag, VT1, b); +#else + return 0; +#endif + case b0: +#if defined(B0) + return doSetUnset (&t->c_cflag, B0, b); +#else + return 0; +#endif + case b50: +#if defined(B50) + return doSetUnset (&t->c_cflag, B50, b); +#else + return 0; +#endif + case b75: +#if defined(B75) + return doSetUnset (&t->c_cflag, B75, b); +#else + return 0; +#endif + case b110: +#if defined(B110) + return doSetUnset (&t->c_cflag, B110, b); +#else + return 0; +#endif + case b135: +#if defined(B134) + return doSetUnset (&t->c_cflag, B134, b); +#else + return 0; +#endif + case b150: +#if defined(B150) + return doSetUnset (&t->c_cflag, B150, b); +#else + return 0; +#endif + case b200: +#if defined(B200) + return doSetUnset (&t->c_cflag, B200, b); +#else + return 0; +#endif + case b300: +#if defined(B300) + return doSetUnset (&t->c_cflag, B300, b); +#else + return 0; +#endif + case b600: +#if defined(B600) + return doSetUnset (&t->c_cflag, B600, b); +#else + return 0; +#endif + case b1200: +#if defined(B1200) + return doSetUnset (&t->c_cflag, B1200, b); +#else + return 0; +#endif + case b1800: +#if defined(B1800) + return doSetUnset (&t->c_cflag, B1800, b); +#else + return 0; +#endif + case b2400: +#if defined(B2400) + return doSetUnset (&t->c_cflag, B2400, b); +#else + return 0; +#endif + case b4800: +#if defined(B4800) + return doSetUnset (&t->c_cflag, B4800, b); +#else + return 0; +#endif + case b9600: +#if defined(B9600) + return doSetUnset (&t->c_cflag, B9600, b); +#else + return 0; +#endif + case b19200: +#if defined(B19200) + return doSetUnset (&t->c_cflag, B19200, b); +#else + return 0; +#endif + case b38400: +#if defined(B38400) + return doSetUnset (&t->c_cflag, B38400, b); +#else + return 0; +#endif + case b57600: +#if defined(B57600) + return doSetUnset (&t->c_cflag, B57600, b); +#else + return 0; +#endif + case b115200: +#if defined(B115200) + return doSetUnset (&t->c_cflag, B115200, b); +#else + return 0; +#endif + case b240400: +#if defined(B230400) + return doSetUnset (&t->c_cflag, B230400, b); +#else + return 0; +#endif + case b460800: +#if defined(B460800) + return doSetUnset (&t->c_cflag, B460800, b); +#else + return 0; +#endif + case b500000: +#if defined(B500000) + return doSetUnset (&t->c_cflag, B500000, b); +#else + return 0; +#endif + case b576000: +#if defined(B576000) + return doSetUnset (&t->c_cflag, B576000, b); +#else + return 0; +#endif + case b921600: +#if defined(B921600) + return doSetUnset (&t->c_cflag, B921600, b); +#else + return 0; +#endif + case b1000000: +#if defined(B1000000) + return doSetUnset (&t->c_cflag, B1000000, b); +#else + return 0; +#endif + case b1152000: +#if defined(B1152000) + return doSetUnset (&t->c_cflag, B1152000, b); +#else + return 0; +#endif + case b1500000: +#if defined(B1500000) + return doSetUnset (&t->c_cflag, B1500000, b); +#else + return 0; +#endif + case b2000000: +#if defined(B2000000) + return doSetUnset (&t->c_cflag, B2000000, b); +#else + return 0; +#endif + case b2500000: +#if defined(B2500000) + return doSetUnset (&t->c_cflag, B2500000, b); +#else + return 0; +#endif + case b3000000: +#if defined(B3000000) + return doSetUnset (&t->c_cflag, B3000000, b); +#else + return 0; +#endif + case b3500000: +#if defined(B3500000) + return doSetUnset (&t->c_cflag, B3500000, b); +#else + return 0; +#endif + case b4000000: +#if defined(B4000000) + return doSetUnset (&t->c_cflag, B4000000, b); +#else + return 0; +#endif + case maxbaud: +#if defined(__MAX_BAUD) + return doSetUnset (&t->c_cflag, __MAX_BAUD, b); +#else + return 0; +#endif + case crtscts: +#if defined(CRTSCTS) + return doSetUnset (&t->c_cflag, CRTSCTS, b); +#else + return 0; +#endif + case cs5: +#if defined(CS5) + return doSetUnset (&t->c_cflag, CS5, b); +#else + return 0; +#endif + case cs6: +#if defined(CS6) + return doSetUnset (&t->c_cflag, CS6, b); +#else + return 0; +#endif + case cs7: +#if defined(CS7) + return doSetUnset (&t->c_cflag, CS7, b); +#else + return 0; +#endif + case cs8: +#if defined(CS8) + return doSetUnset (&t->c_cflag, CS8, b); +#else + return 0; +#endif + case cstopb: +#if defined(CSTOPB) + return doSetUnset (&t->c_cflag, CSTOPB, b); +#else + return 0; +#endif + case cread: +#if defined(CREAD) + return doSetUnset (&t->c_cflag, CREAD, b); +#else + return 0; +#endif + case parenb: +#if defined(PARENB) + return doSetUnset (&t->c_cflag, PARENB, b); +#else + return 0; +#endif + case parodd: +#if defined(PARODD) + return doSetUnset (&t->c_cflag, PARODD, b); +#else + return 0; +#endif + case hupcl: +#if defined(HUPCL) + return doSetUnset (&t->c_cflag, HUPCL, b); +#else + return 0; +#endif + case clocal: +#if defined(CLOCAL) + return doSetUnset (&t->c_cflag, CLOCAL, b); +#else + return 0; +#endif + case lisig: +#if defined(ISIG) + return doSetUnset (&t->c_lflag, ISIG, b); +#else + return 0; +#endif + case licanon: +#if defined(ICANON) + return doSetUnset (&t->c_lflag, ICANON, b); +#else + return 0; +#endif + case lxcase: +#if defined(XCASE) + return doSetUnset (&t->c_lflag, XCASE, b); +#else + return 0; +#endif + case lecho: +#if defined(ECHO) + return doSetUnset (&t->c_lflag, ECHO, b); +#else + return 0; +#endif + case lechoe: +#if defined(ECHOE) + return doSetUnset (&t->c_lflag, ECHOE, b); +#else + return 0; +#endif + case lechok: +#if defined(ECHOK) + return doSetUnset (&t->c_lflag, ECHOK, b); +#else + return 0; +#endif + case lechonl: +#if defined(ECHONL) + return doSetUnset (&t->c_lflag, ECHONL, b); +#else + return 0; +#endif + case lnoflsh: +#if defined(NOFLSH) + return doSetUnset (&t->c_lflag, NOFLSH, b); +#else + return 0; +#endif + case ltopstop: +#if defined(TOSTOP) + return doSetUnset (&t->c_lflag, TOSTOP, b); +#else + return 0; +#endif + case lechoctl: +#if defined(ECHOCTL) + return doSetUnset (&t->c_lflag, ECHOCTL, b); +#else + return 0; +#endif + case lechoprt: +#if defined(ECHOPRT) + return doSetUnset (&t->c_lflag, ECHOPRT, b); +#else + return 0; +#endif + case lechoke: +#if defined(ECHOKE) + return doSetUnset (&t->c_lflag, ECHOKE, b); +#else + return 0; +#endif + case lflusho: +#if defined(FLUSHO) + return doSetUnset (&t->c_lflag, FLUSHO, b); +#else + return 0; +#endif + case lpendin: +#if defined(PENDIN) + return doSetUnset (&t->c_lflag, PENDIN, b); +#else + return 0; +#endif + case liexten: +#if defined(IEXTEN) + return doSetUnset (&t->c_lflag, IEXTEN, b); +#else + return 0; +#endif + } + return 0; +} + +/* GetChar sets a CHAR, ch, value from, t, and returns TRUE if + this value is supported. */ + +extern "C" int +EXPORT (GetChar) (struct termios *t, ControlChar c, char *ch) +{ + switch (c) + { + + case vintr: +#if defined(VINTR) + *ch = t->c_cc[VINTR]; + return 1; +#else + return 0; +#endif + case vquit: +#if defined(VQUIT) + *ch = t->c_cc[VQUIT]; + return 1; +#else + return 0; +#endif + case verase: +#if defined(VERASE) + *ch = t->c_cc[VERASE]; + return 1; +#else + return 0; +#endif + case vkill: +#if defined(VKILL) + *ch = t->c_cc[VKILL]; + return 1; +#else + return 0; +#endif + case veof: +#if defined(VEOF) + *ch = t->c_cc[VEOF]; + return 1; +#else + return 0; +#endif + case vtime: +#if defined(VTIME) + *ch = t->c_cc[VTIME]; + return 1; +#else + return 0; +#endif + case vmin: +#if defined(VMIN) + *ch = t->c_cc[VMIN]; + return 1; +#else + return 0; +#endif + case vswtc: +#if defined(VSWTC) + *ch = t->c_cc[VSWTC]; + return 1; +#else + return 0; +#endif + case vstart: +#if defined(VSTART) + *ch = t->c_cc[VSTART]; + return 1; +#else + return 0; +#endif + case vstop: +#if defined(VSTOP) + *ch = t->c_cc[VSTOP]; + return 1; +#else + return 0; +#endif + case vsusp: +#if defined(VSUSP) + *ch = t->c_cc[VSUSP]; + return 1; +#else + return 0; +#endif + case veol: +#if defined(VEOL) + *ch = t->c_cc[VEOL]; + return 1; +#else + return 0; +#endif + case vreprint: +#if defined(VREPRINT) + *ch = t->c_cc[VREPRINT]; + return 1; +#else + return 0; +#endif + case vdiscard: +#if defined(VDISCARD) + *ch = t->c_cc[VDISCARD]; + return 1; +#else + return 0; +#endif + case vwerase: +#if defined(VWERASE) + *ch = t->c_cc[VWERASE]; + return 1; +#else + return 0; +#endif + case vlnext: +#if defined(VLNEXT) + *ch = t->c_cc[VLNEXT]; + return 1; +#else + return 0; +#endif + case veol2: +#if defined(VEOL2) + *ch = t->c_cc[VEOL2]; + return 1; +#else + return 0; +#endif + default: + return 0; + } +} + +/* SetChar sets a CHAR value in, t, and returns TRUE if, c, + is supported. */ + +extern "C" int +EXPORT (SetChar) (struct termios *t, ControlChar c, char ch) +{ + switch (c) + { + + case vintr: +#if defined(VINTR) + t->c_cc[VINTR] = ch; + return 1; +#else + return 0; +#endif + case vquit: +#if defined(VQUIT) + t->c_cc[VQUIT] = ch; + return 1; +#else + return 0; +#endif + case verase: +#if defined(VERASE) + t->c_cc[VERASE] = ch; + return 1; +#else + return 0; +#endif + case vkill: +#if defined(VKILL) + t->c_cc[VKILL] = ch; + return 1; +#else + return 0; +#endif + case veof: +#if defined(VEOF) + t->c_cc[VEOF] = ch; + return 1; +#else + return 0; +#endif + case vtime: +#if defined(VTIME) + t->c_cc[VTIME] = ch; + return 1; +#else + return 0; +#endif + case vmin: +#if defined(VMIN) + t->c_cc[VMIN] = ch; + return 1; +#else + return 0; +#endif + case vswtc: +#if defined(VSWTC) + t->c_cc[VSWTC] = ch; + return 1; +#else + return 0; +#endif + case vstart: +#if defined(VSTART) + t->c_cc[VSTART] = ch; + return 1; +#else + return 0; +#endif + case vstop: +#if defined(VSTOP) + t->c_cc[VSTOP] = ch; + return 1; +#else + return 0; +#endif + case vsusp: +#if defined(VSUSP) + t->c_cc[VSUSP] = ch; + return 1; +#else + return 0; +#endif + case veol: +#if defined(VEOL) + t->c_cc[VEOL] = ch; + return 1; +#else + return 0; +#endif + case vreprint: +#if defined(VREPRINT) + t->c_cc[VREPRINT] = ch; + return 1; +#else + return 0; +#endif + case vdiscard: +#if defined(VDISCARD) + t->c_cc[VDISCARD] = ch; + return 1; +#else + return 0; +#endif + case vwerase: +#if defined(VWERASE) + t->c_cc[VWERASE] = ch; + return 1; +#else + return 0; +#endif + case vlnext: +#if defined(VLNEXT) + t->c_cc[VLNEXT] = ch; + return 1; +#else + return 0; +#endif + case veol2: +#if defined(VEOL2) + t->c_cc[VEOL2] = ch; + return 1; +#else + return 0; +#endif + default: + return 0; + } +} +#endif + +extern "C" void +_M2_termios_init (int, char *[], char *[]) +{ +} + +extern "C" void +_M2_termios_fini (int, char *[], char *[]) +{ +} + +extern "C" void +_M2_termios_dep (void) +{ +} + +struct _M2_termios_ctor { _M2_termios_ctor (); } _M2_termios_ctor; + +_M2_termios_ctor::_M2_termios_ctor (void) +{ + M2RTS_RegisterModule ("termios", _M2_termios_init, _M2_termios_fini, + _M2_termios_dep); +} diff --git a/libgm2/libm2pim/wrapc.c b/libgm2/libm2pim/wrapc.c new file mode 100644 index 0000000..5aa4912 --- /dev/null +++ b/libgm2/libm2pim/wrapc.c @@ -0,0 +1,296 @@ +/* wrapc.c provide access to miscellaneous C library functions. + +Copyright (C) 2005-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. + +This file is part of GNU Modula-2. + +GNU Modula-2 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, or (at your option) +any later version. + +GNU Modula-2 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. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +You should have received a copy of the GNU General Public License and +a copy of the GCC Runtime Library Exception along with this program; +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +<http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#if defined(HAVE_MATH_H) +#include <math.h> +#endif + +#if defined(HAVE_STDLIB_H) +#include <stdlib.h> +#endif + +#if defined(HAVE_UNISTD_H) +#include <unistd.h> +#endif + +#if defined(HAVE_SYS_STAT_H) +#include <sys/stat.h> +#endif + +#ifdef HAVE_STDIO_H +#include <stdio.h> +#endif + +#if defined(HAVE_SYS_TYPES_H) +#include <sys/types.h> +#endif + +#if defined(HAVE_TIME_H) +#include <time.h> +#endif + +/* Define FALSE if one hasn't already been defined. */ + +#if !defined(FALSE) +#define FALSE (1 == 0) +#endif + +/* Define a generic NULL if one hasn't already been defined. */ + +#if !defined(NULL) +#define NULL 0 +#endif + +/* strtime returns the address of a string which describes the + local time. */ + +char * +wrapc_strtime (void) +{ +#if defined(HAVE_CTIME) + time_t clock = time ((void *)0); + char *string = ctime (&clock); + + string[24] = (char)0; + + return string; +#else + return ""; +#endif +} + +int +wrapc_filesize (int f, unsigned int *low, unsigned int *high) +{ +#if defined(HAVE_SYS_STAT_H) && defined(HAVE_STRUCT_STAT) + struct stat s; + int res = fstat (f, (struct stat *)&s); + + if (res == 0) + { + *low = (unsigned int)s.st_size; + *high = (unsigned int)(s.st_size >> (sizeof (unsigned int) * 8)); + } + return res; +#else + return -1; +#endif +} + +/* filemtime returns the mtime of a file, f. */ + +int +wrapc_filemtime (int f) +{ +#if defined(HAVE_SYS_STAT_H) && defined(HAVE_STRUCT_STAT) + struct stat s; + + if (fstat (f, (struct stat *)&s) == 0) + return s.st_mtime; + else + return -1; +#else + return -1; +#endif +} + +/* fileinode returns the inode associated with a file, f. */ + +#if defined(HAVE_SYS_STAT_H) && defined(HAVE_STRUCT_STAT) +ino_t +wrapc_fileinode (int f, unsigned int *low, unsigned int *high) +{ + struct stat s; + + if (fstat (f, (struct stat *)&s) == 0) + { + *low = (unsigned int)s.st_ino; + if ((sizeof (s.st_ino) == (sizeof (unsigned int)))) + *high = 0; + else + *high = (unsigned int)(s.st_ino >> (sizeof (unsigned int) * 8)); + return 0; + } + else + return -1; +} +#else +int +wrapc_fileinode (int f, unsigned int *low, unsigned int *high) +{ + *low = 0; + *high = 0; + return -1; +} +#endif + +/* getrand returns a random number between 0..n-1. */ + +int +wrapc_getrand (int n) +{ + return rand () % n; +} + +#if defined(HAVE_PWD_H) +#include <pwd.h> + +char * +wrapc_getusername (void) +{ + return getpwuid (getuid ())->pw_gecos; +} + +/* getnameuidgid fills in the, uid, and, gid, which represents + user, name. */ + +void +wrapc_getnameuidgid (char *name, int *uid, int *gid) +{ + struct passwd *p = getpwnam (name); + + if (p == NULL) + { + *uid = -1; + *gid = -1; + } + else + { + *uid = p->pw_uid; + *gid = p->pw_gid; + } +} +#else +char * +wrapc_getusername (void) +{ + return "unknown"; +} + +void +wrapc_getnameuidgid (char *name, int *uid, int *gid) +{ + *uid = -1; + *gid = -1; +} +#endif + +int +wrapc_signbit (double r) +{ +#if defined(HAVE_SIGNBIT) + + /* signbit is a macro which tests its argument against sizeof(float), + sizeof(double). */ + return signbit (r); +#else + return FALSE; +#endif +} + +int +wrapc_signbitl (long double r) +{ +#if defined(HAVE_SIGNBITL) + + /* signbit is a macro which tests its argument against sizeof(float), + sizeof(double). */ + return signbitl (r); +#else + return FALSE; +#endif +} + +int +wrapc_signbitf (float r) +{ +#if defined(HAVE_SIGNBITF) + + /* signbit is a macro which tests its argument against sizeof(float), + sizeof(double). */ + return signbitf (r); +#else + return FALSE; +#endif +} + +/* isfinite provide non builtin alternative to the gcc builtin + isfinite. Returns 1 if x is finite and 0 if it is not. */ + +int +wrapc_isfinite (double x) +{ +#if defined(FP_NAN) && defined(FP_INFINITE) + return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE); +#else + return FALSE; +#endif +} + +/* isfinitel provide non builtin alternative to the gcc builtin + isfinite. Returns 1 if x is finite and 0 if it is not. */ + +int +wrapc_isfinitel (long double x) +{ +#if defined(FP_NAN) && defined(FP_INFINITE) + return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE); +#else + return FALSE; +#endif +} + +/* isfinitef provide non builtin alternative to the gcc builtin + isfinite. Returns 1 if x is finite and 0 if it is not. */ + +int +wrapc_isfinitef (float x) +{ +#if defined(FP_NAN) && defined(FP_INFINITE) + return (fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE); +#else + return FALSE; +#endif +} + +/* init/finish are GNU Modula-2 linking fodder. */ + +void +_M2_wrapc_init () +{ +} + +void +_M2_wrapc_fini () +{ +} + +void +_M2_wrapc_ctor () +{ +} |