[compiler-rt] r231402 - Move use of __builtin_longjmp under the same conditions as the only

Joerg Sonnenberger joerg at britannica.bec.de
Sun Mar 8 11:29:17 PDT 2015


Hi Tom,
please merge this in preparation for the actual __builtin_longjmp
changes.

Joerg

On Thu, Mar 05, 2015 at 08:17:05PM -0000, Joerg Sonnenberger wrote:
> Author: joerg
> Date: Thu Mar  5 14:17:05 2015
> New Revision: 231402
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=231402&view=rev
> Log:
> Move use of __builtin_longjmp under the same conditions as the only
> caller of the function.
> 
> Modified:
>     compiler-rt/trunk/lib/asan/tests/asan_test.cc
> 
> Modified: compiler-rt/trunk/lib/asan/tests/asan_test.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_test.cc?rev=231402&r1=231401&r2=231402&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/tests/asan_test.cc (original)
> +++ compiler-rt/trunk/lib/asan/tests/asan_test.cc Thu Mar  5 14:17:05 2015
> @@ -569,7 +569,7 @@ TEST(AddressSanitizer, LongJmpTest) {
>  }
>  
>  #if !defined(_WIN32)  // Only basic longjmp is available on Windows.
> -NOINLINE void BuiltinLongJmpFunc1(jmp_buf buf) {
> +NOINLINE void UnderscopeLongJmpFunc1(jmp_buf buf) {
>    // create three red zones for these two stack objects.
>    int a;
>    int b;
> @@ -577,10 +577,10 @@ NOINLINE void BuiltinLongJmpFunc1(jmp_bu
>    int *A = Ident(&a);
>    int *B = Ident(&b);
>    *A = *B;
> -  __builtin_longjmp((void**)buf, 1);
> +  _longjmp(buf, 1);
>  }
>  
> -NOINLINE void UnderscopeLongJmpFunc1(jmp_buf buf) {
> +NOINLINE void SigLongJmpFunc1(sigjmp_buf buf) {
>    // create three red zones for these two stack objects.
>    int a;
>    int b;
> @@ -588,10 +588,13 @@ NOINLINE void UnderscopeLongJmpFunc1(jmp
>    int *A = Ident(&a);
>    int *B = Ident(&b);
>    *A = *B;
> -  _longjmp(buf, 1);
> +  siglongjmp(buf, 1);
>  }
>  
> -NOINLINE void SigLongJmpFunc1(sigjmp_buf buf) {
> +#if !defined(__ANDROID__) && !defined(__arm__) && \
> +    !defined(__powerpc64__) && !defined(__powerpc__) && \
> +    !defined(__aarch64__)
> +NOINLINE void BuiltinLongJmpFunc1(jmp_buf buf) {
>    // create three red zones for these two stack objects.
>    int a;
>    int b;
> @@ -599,12 +602,9 @@ NOINLINE void SigLongJmpFunc1(sigjmp_buf
>    int *A = Ident(&a);
>    int *B = Ident(&b);
>    *A = *B;
> -  siglongjmp(buf, 1);
> +  __builtin_longjmp((void**)buf, 1);
>  }
>  
> -#if !defined(__ANDROID__) && !defined(__arm__) && \
> -    !defined(__powerpc64__) && !defined(__powerpc__) && \
> -    !defined(__aarch64__)
>  // Does not work on Power and ARM:
>  // https://code.google.com/p/address-sanitizer/issues/detail?id=185
>  TEST(AddressSanitizer, BuiltinLongJmpTest) {
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list