Aaron Sloman (axs@cs.bham.ac.uk) wrote:
: A little more thought suggested that that should be changed to ensure
: that the conversions between pop11 integers and system integers are
: right:
: define active DO_ERRNO_VAL() -> _x;
: _extern get_libc_errno() -> _x;
: _pint(_x) -> _x;
: enddefine;
: define updaterof active DO_ERRNO_VAL(_x);
: _extern set_libc_errno(_int(_x))
: enddefine;
That does not seem right, the values obtained from/stored to
errno are clearly treated as non-pop objects.
: After those changes rebuilding the system produced a version
: that went much further. I recompiled all the pop11 sources,
: as before, archived them using pglibr, used pglink -xm
: to create a version of newpop11 including motif, then
: tried running it.
: If I do all that with the new sources on a redhat 8 machine it all
: runs perfectly. If I copy over the linked binaries to redhat 9
: they produce a warning message about errno when they start up,
: but still run perfectly.
: However if I link the executables on redhat 9 from the same libraries
: and the same .o files, I get a new executable that I can start up
: without the warning message, and which will do many things (including
: creating saved images).
: But no version that has been linked on redhat 9 works perfectly.
: It doesn't report mishaps properly and will not start an
: empty file:
: : ved fooo
: ;;; MISHAP - CAN'T OPEN FILE (Resource temporarily unavailable)
: ;;; INVOLVING: <SYSTEM_OBJECT 40419A68>
: ;;; DOING : runproc pop_setpop_compiler
That one seems clear: system return code is 2 (No such file or directory)
converted to pint it is 2*4+3=11 and 11 means Resource temporarily unavailable
: I can use it run ved, read files, load libraries. I can compile
: a definition of factorial and compute and print out factorial 600.
: But factorial 1000 triggers a garbage collection and it crashes.
: I also can't create $popsavelib/startup.psv
: And some error messages are still wrong:
: : "two" + 3 =>
: ;;; MISHAP - NUMBER(S) NEEDED
: ;;; INVOLVING: 3 <SYSTEM_OBJECT 401A4048>
: ;;; DOING : + pop_setpop_compiler
: This is puzzling because, as far as I can see the things I have
: changed do not affect the error handling in the arithmetic
: procedures.
Maybe updater of _ERRNO is leaving garbage on poplog stack?
By the way, I tried in slightly different way and at the moment
I am getting similar mishaps. When I try to recompile I get:
Loading POPLINK Version 14.22
;;; MISHAP - ste: STACK EMPTY (missing argument? missing result?)
;;; FILE : /tmp/hebisch/poplog/v15.53/pop/lib/auto/load.p LINE NUMBER:
;;; 10
;;; DOING : nextitem nextitem pop_setpop_compiler
--
Waldek Hebisch
hebisch@math.uni.wroc.pl or hebisch@hera.math.uni.wroc.pl
|