On Thu, 13 Mar 2025, Simon Sobisch wrote: > > Am 13.03.2025 um 12:49 schrieb Richard Biener: > > On Thu, 13 Mar 2025, Sam James wrote: > > > >> Simon Sobisch <simonsobi...@gnu.org> writes: > >> > >>> Thanks for your work on adding a testsuite. Can you please explain why > >>> you do this when a complete testsuite exists in autoconf (autotest) > >>> format (which roots back to decade of work in GnuCOBOL, with all > >>> copyrights for that already with the FSF)? > >>> > >> > >> I don't think any of us were aware of it ("we" being "the general GCC > >> developer community", not the COBOL folks, for the purposes of this > >> email) until yesterday when richi mused about it on IRC maybe existing > >> and we went looking out of curiosity. > >> > >> I agree that having that testsuite integrated would be fantastic. > >> > >>> Is the existence of this in upstream [1] just unknown (because it was > >>> not part of the initial patches [for reasons I not understood])? > >>> > >> > >> I would've personally liked to see the NIST testsuite integration at > >> least in the initial patches, but it is what it is. I don't think the > >> GnuCOBOL testsuite was brought up at all (and I think most of us weren't > >> aware of it) in the patch upstreaming discussions. > >> > >> Now that we *are* aware of it, it seems desirable to have for sure. > >> > >>> Is the format such a big issue (note: previous discussions elaborated > >>> "a test suite is very important and other frontends also use a > >>> framework other than dejagnu)? > >>> > >>> If dejagnu is the way to go: > >>> > >>> * Shouldn't there be deprecation of autotest in autoconf (of course > >>> only if that preference is also outside of gcc)? > >> > >> It's a GCC / GNU toolchain-only preference because it allows easily > >> doing cross + simulator testing, and all of our tools are used to its > >> format. > > > > That's indeed the main reason. > > Thanks for the explanation. That's totally fine. > > > > >> It's definitely not perfect. Years ago (way before I followed GCC), > >> there was talk of replacing dejagnu, just efforts failed. > >> > >>> > >>> * Shouldn't there be a (at least semi automated) script / migration > >>> tool (at least for this specific time in place to convert the "UAT" > >>> once into dejagnu format)? > >> > >> Yes. Having testsuite integration is seen as critical at this > >> point. richi just wanted to present this as a non-COBOL person to give > >> us something to play with. > > > > Yes, and to give people familiar with how GCC tests are done a place > > to put regression tests going forward. > > > > I do think that integrating the testsuites the COBOLworx folks have > > is important and of course integrating tests from GNU Cobol is desirable > > as well. Whether we can or want to integrate tests based on autotest > > is another question - I'd probably avoid that, even as short-term > > solution, as such tend to stay forever. > > I agree. Note: COBOLworx started by using the GnuCOBOL testsuite; even with > the current UAT's state it would be a lot of manual work to re-synchronize > them, so going one step further to dejagnu seems to not make it much harder > either. > It will definitely be useful if the "original test file names" (like > run_subscripts.at, or at least run_subscripts) are kept somewhere - a comment > like "auto-translated from run_subscripts.at" is enough - and maybe they can > stay in one file each (I don't know enough about dejagnu to comment on that). > > The main point is that it seems most reasonable to convert those files into > dejagnu format once (so obviously a "script working good enough, not > installed" comes into mind), instead of writing it from scratch.
Definitely. > > What would be nice is to have a common separate test harness you can > > test an installed compiler against - I'm not sure whether the GNU > > Cobol test harness or the COBOLworx one qualifies here. The NIST > > one probably does, but it seems to require "plumbing" that's not > > part of NIST and that, in implementation, might differ from GNU Cobol > > to COBOLworx. > > That's a good opportunity to be picky: it is GnuCOBOL (one word, COBOL in > upper-case) :-) > > And yes: a common separate test harness is most reasonable and that's exactly > what the idea of NIST was. > If you ever wonder: GnuCOBOL uses make (with one sub-directory per "Module") > along with perl [2]. > This allows to not only do testing (or just extraction of the files) along > with counting and tracking time, but also to automate some of the required > "needs manual inspection". > > And given gcobc, I'd argue that gcobol should not fail the following (and > ideally show its superior compile and run time): > > $> tar -xvf gnucobol-3.*.tar.* > $> cd gnucobol-3.*/ > $> ./configure # for automake and autoconf doing the setup > $> cd tests/cobol85 > $> make test COBC=gcobc-15 > > ... just tried that: > gcobol: error: unrecognized command-line option ‘-std=cobol85’ > > --> seems like the gcobc should drop that and set the right flags for > gcobol here (I know, should be on bugzilla, or just fixed) > > > $> make test COBC=gcobc-15 COBC_FLAGS=--debug > Compiling EXEC85 program > warning: --debug implies -fstack-check: ignored > EXEC85.cob:1:73: error: syntax error, unexpected NAME, expecting FUNCTION or > PROGRAM-ID > 1 | 000100 IDENTIFICATION DIVISION. > EXEC84.2 > | > ^ > cobol1: error: failed compiling EXEC85.cob > > --> seems the recognition in cobol1 for the reference-format can be > improved (that's no *problem* in general) > > > $> make test COBC=gcobc-15 COBC_FLAGS="-fec=all -fformat=fixed -g" > Compiling EXEC85 program > Building module directory NC ... > /home/build/gcobol-test/gnucobol-3.2/pre-inst-env: 69: exec: ../EXEC85: not > found > > > --> that is definitely another problem of the gcobc driver script - if > no output file is given this must be deduced from the first input file to > match cobc behavior Thanks for doing this! It's exactly what we want at this point - people trying and finding bugs. It would be super useful if you'd record bugzilla issues for each of the above on https://gcc.gnu.org/bugzilla Compatibility of gcobc is likely quite important. > > $> mv a.out EXEC85 > $> make test COBC=gcobc-15 COBC_FLAGS="-fec=all -fformat=fixed -g" > Building module directory NC ... > > > ... that runs until crash. > > /bin/bash: Line 6: 6503 Killed ( cd NC && COB_UNIX_LF=Y > "/home/build/gcobol-test/gnucobol-3.2/pre-inst-env" ../EXEC85 ) > > > because of some looping (single core completely used, memory fast increasing, > here's the output from "top" shortly before the system-internal kill > > simon 20 0 19,1g 15,1g 960 R 15,0 97,0 1:52.12 EXEC85 > > > Side note: even when the system kills the process, it should have some time to > write a reasonable stacktrace or something to know where the error happened. Unfortunatelly a KILL from the system is fatal, no way to record anything. > > I'm quite sure the looping part is related to file handling (rooting in > configuration that is different for gcobol and GnuCOBOL [which it may > shouldn't]) but that's for Bob to inspect/fix (I've used the COBOLworx debian > package generated yesterday, BTW). > > ... ok, re-executed and attached with GDB - it loops around the READ at > EXEC.cob:2202, presumably for the non-open file. > > > With the guessed configuration issue: > > * the program should not hog memory during looping (Bob, please inspect > this one *first*) > * the program should abort somewhere, likely at the OPEN long before it > gets to the READ where it loops, but that should be fixed after this > specific "loop creates a memory problem" is fixed (end then maybe in > reverse order, first let the READ [directly after the OPEN] of the > not-opened file abort, then the OPEN itself) [note: there is neither > a USE section nor an io-status for the file defined and even the > -fec-io runtime checks were requested to be enabled, so ISO says that > this READ (and the OPEN before) should result in a fatal runtime > abort] > > Thanks, > Simon > > > > > > Richard. > > > >>> > >>> [1]: > >>> https://gitlab.cobolworx.com/COBOLworx/gcc-cobol/-/tree/master+cobol/gcc/cobol/UAT > > [2]: > https://sourceforge.net/p/gnucobol/code/HEAD/tree/branches/gnucobol-3.x/tests/cobol85/ > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)