Hi Amit,

> # ./pil lib/test.l $(/bin/pwd) -bye +
> (N)
> [test/src/main.l:11] 7 -- 'test' failed

Yes. Actually, we know this since quite a while. On Sep 7th, I wrote
here:

> In IRC today we noticed, that the versions of OpenBSD seems to differ a
> lot in that low-level regard :(

> Mathias used OpenBSD 5.0, and the interpreter works (at least partially).

With that I meant these unit tests. The above line in "test/src/main.l"
calls 'alarm' and 'wait', which both strongly depend on system calls.


Obviously, the constant and code definitions in

   src64/sys/x86-64.openBsd.defs.l

and/or

   src64/sys/x86-64.openBsd.code.l

are not correct. That's why we started the discussion about the OpenBSD
versions differing between yours and Matthias'.

I put all information into these files from what you had sent me. On
Matthias' system it seemed to differ. So I don't know what is correct.

For example, for the line in "code.c"

   int c = WIFSTOPPED(n);

you sent me a "code.s" which assembled it to

   movl  -4(%rbp), %edi
   movl  $0, %eax
   call  WIFSTOPPED
   movl  %eax, -16(%rbp)

while on Matthias' it was

   movzbl   -4(%rbp),%eax
   cmpl  $127, %eax
   sete  %al
   movzbl   %al, %eax
   movl  %eax, -172(%rbp)
   movl  $0, -176(%rbp)

This second one seemes to work, so I believe it is correct. It is what
basically is now in "src64/sys/x86-64.openBsd.code.l".

Thus, assuming that "code.l" is all right now, I suspect that some
constants in "defs.l" are still wrong.

Somebody with a running OpenBSD system should check these constants, and
set them to the correct values.

Cheers,
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to