Subject: Re: Perl bombs unless linked statically
To: Rob Healey <rhealey@kas.helios.mn.org>
From: Michael L. Hitch <osymh@gemini.oscs.montana.edu>
List: amiga-dev
Date: 07/11/1994 23:09:53
On Jul 11, 10:58pm, Rob Healey wrote:
> 	Another datapoint for the longjump problem. Perl 4.036 dies almost
> 	immediately in the tests with a longjump error unless linked
> 	statically.

  I think if you use _setjmp and _longjmp instead, it should work.  The
_longjmp() doesn't call sigreturn() at the end, which is what longjmp()
does.  Since sigreturn() is another shared library entry, I think the
first call to it requires a jump table to be updated.  That update process
destroys the return value in D0.  After the first call, the jump table
has the proper address and longjmp should return with the correct value
in D0.

  I haven't figured out a clean way to correct this problem yet.  D0 is
supposed to be a scratch register, and is treated that way in the
binder_entry() routine in ld.so [which is where I think the longjmp
return value is getting clobbered].

Michael

-- 
Michael L. Hitch			INTERNET:  osymh@montana.edu
Computer Consultant
Office of Systems and Computing Services
Montana State University	Bozeman, MT	USA

------------------------------------------------------------------------------