On 09/09/19 11:01, Martin Liška wrote:
> Hi.
> 
> On 9/6/19 4:46 PM, Matthew Malcomson wrote:
>> Ensuring that the shadow stack is cleared on normal function exit will
>> be done by adding instrumentation to the function epilogue through the
>> compiler.
>> longjmp and setjmp are some abnormal methods of exiting the function
>> that can't be handled in the compiler since they can be called in
>> uninstrumented code to unwind past instrumented function frames.
> 
> I'm curious why you are adding a new code that is not part of libsanitizer 
> runtime?
> Does it mean the current LLVM implementation does not properly handle setjmp 
> and
> longjmp?

Honestly -- I'm not sure.

I did a basic test that seemed to show clang not supporting setjmp & 
longjmp and I made a bit of a foray into how one would approach the 
problem, but I then left it in a partially done state to focus on other 
things.

It also seems on first blush that C++ exceptions are not handled, but 
again I haven't yet gone and asked anyone in the know.

(it's on the list of things to do, but not yet at the top).

> 
> Note that rule of thumb is that we need to upstream all libsanitizer
> changes before we merge libsanitizer. We are doing that in order to not
> have a bug difference against upstream libsanitizer.

That sounds good to me -- I will remember to go upstream when I look 
into this.

> 
> Martin
> 

Reply via email to