[LLVMdev] Remaining Compiler-RT failures in ARM (original) (raw)

Renato Golin renato.golin at linaro.org
Fri Oct 10 04:48:36 PDT 2014


So, problem 3 was fixed by avoiding the check for main as well as the noreturn failure, and problem 2 will hopefully be fixed by adding the RT_COMPILER_FLAGS to CMake, which has gone in but needs a server restart to be sure. That leaves us with problem 1.

On 9 October 2014 17:29, Renato Golin <renato.golin at linaro.org> wrote:

1. AddressSanitizer.BuiltinLongJmpTest Unit Test

Two configurations fail: * Asan-arm-inline-Test * Asan-arm-with-calls-Test I wonder what's the best way to run it individually and reduce the

What I get here is quite odd: "Illegal Instruction", which made me believe it was the NEON problem like 2, but it's not. It seems to be related to setjump/longjump routines.

Asan-arm-with-calls-Test: 0x0014b4a4 in BuiltinLongJmpFunc1(__jmp_buf_tag*) () at /work/llvm/src/compiler-rt/lib/asan/tests/asan_test.cc:580 580 __builtin_longjmp((void**)buf, 1);

0x0014b494 <+192>: andeq r1, r0, r4, asr #23 0x0014b498 <+196>: andseq r8, r2, r12, lsl #24 0x0014b49c <+200>: andeq r1, r0, r12, ror r7 0x0014b4a0 <+204>: ; instruction: 0x00128bd0 => 0x0014b4a4 <+208>: ; instruction: 0xfff99bda

Asan-arm-inline-Test:

0x001d8e7c in BuiltinLongJmpFunc1(__jmp_buf_tag*) () at /work/llvm/src/compiler-rt/lib/asan/tests/asan_test.cc:580 580 __builtin_longjmp((void**)buf, 1);

0x001d8e6c <+248>: andeq r1, r0, r4, asr #23 0x001d8e70 <+252>: andseq r0, r10, r12, ror #4 0x001d8e74 <+256>: andeq r1, r0, r12, ror r7 0x001d8e78 <+260>: andseq r0, r10, r0, lsr r2 => 0x001d8e7c <+264>: ; instruction: 0xfffa45ba

Trying to decode those hex numbers as instructions, the only one that had any sense (in ARM, Thumb, x86 or x86_64) was 0x00128bd0 (as little-endian), but I may be getting this wrong. However, not even GDB recognised those instructions, so I'm guessing it's a bug in the jump library itself.

Looking for the implementation in Compiler-RT or LLVM, I haven't found much aside from sanitizer interceptors. Where is this done?

Any ideas?

cheers, --renato



More information about the llvm-dev mailing list