[LLVMdev] Remaining Compiler-RT failures in ARM
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>: ; <UNDEFINED> instruction: 0x00128bd0
=> 0x0014b4a4 <+208>: ; <UNDEFINED> 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>: ; <UNDEFINED> 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