adapting to new setjmp/longjmp implementation
Nicholas Miell
nmiell at comcast.net
Tue Sep 19 03:28:50 UTC 2006
On Mon, 2006-09-18 at 13:08 -0700, John Reiser wrote:
> >> Fix your application.
> >
> >
> > Thanks for your help.
>
> Yes, it is a pain, but at least it is fast and simple
> (else you could complain because of performance degradation.)
> Detect the glibc version, or look directly at the code at run time,
> then compensate.
>
> 0x4c4a8ba0 <__longjmp>: mov 0x4(%esp),%eax
> 0x4c4a8ba4 <__longjmp+4>: mov 0x14(%eax),%edx
> 0x4c4a8ba7 <__longjmp+7>: mov 0x10(%eax),%ecx
> 0x4c4a8baa <__longjmp+10>: xor %gs:0x18,%edx
> 0x4c4a8bb1 <__longjmp+17>: xor %gs:0x18,%ecx
> 0x4c4a8bb8 <__longjmp+24>: mov (%eax),%ebx
> 0x4c4a8bba <__longjmp+26>: mov 0x4(%eax),%esi
> 0x4c4a8bbd <__longjmp+29>: mov 0x8(%eax),%edi
> 0x4c4a8bc0 <__longjmp+32>: mov 0xc(%eax),%ebp
> 0x4c4a8bc3 <__longjmp+35>: mov 0x8(%esp),%eax
> 0x4c4a8bc7 <__longjmp+39>: mov %ecx,%esp
> 0x4c4a8bc9 <__longjmp+41>: jmp *%edx
>
> Then, petition the standards committee for the logical functionality
> that you find useful. Your long-standing usage will satisfy one of the
> major check boxes in the process.
It already exists, in the form of the ucontext functions -- despite
their inability to actually work with an arbitrary or kernel-generated
ucontext_t, they should still be perfectly serviceable for most user
usage cases.
--
Nicholas Miell <nmiell at comcast.net>
More information about the devel
mailing list