This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 01/25/2018 01:38 PM, H.J. Lu wrote:
I still think you are over-engineering this. The pad array has still an unused member (the last one). Just change sigsetjmp to store the shadow pointer in that location, then the old and new setjmp will work with the current stack layout. As far as I can tell, there are only 64 signals, so you don't even have to change the location of the signal mask.No, it doesn't work. struct pthread_unwind_buf is placed on caller's stack and its address is passed from applications to libpthread. If the size of caller's struct pthread_unwind_buf is smaller than what libpthread expects, libpthread will override caller's stack.
As far as I can see, ibuf->priv.pad[3] is currently unused. (sig)setjmp could save the shadow stack pointer at the right offset in jmp_buf to hit this place, then all these new conditionals wouldn't be necessary. Of course it is still a hack, but your approach is not clearer IMHO.
The patch you posted is very different from the commit link you shared earlier. I still need to review it in detail.
Thanks, Florian
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |