[LLVMdev] Remaining Compiler-RT failures in ARM

Renato Golin renato.golin at linaro.org
Fri Oct 10 07:10:24 PDT 2014


On 10 October 2014 12:48, Renato Golin <renato.golin at linaro.org> wrote:
>    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

For context, the code is:

   0x001d8e5c <+232>: mov r0, r4
   0x001d8e60 <+236>: bl 0x2ec4f0 <____asan_report_store4_veneer>
   0x001d8e64 <+240>: str r0, [r4]
   0x001d8e68 <+244>: bl 0x2ec488 <____asan_handle_no_return_veneer>
   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

Inspecting the whole function, there isn't a jump past 0x001d8e68 (the
final branch), so it's only possible for the PC to be there if
____asan_handle_no_return_veneer has indeed returned.

Investigating it further, it seems that the
____asan_handle_no_return_veneer *does* return:

  0x00099c72 <+106>: ldr.w pc, [sp], #4

Where is that implemented?

cheers,
--renato



More information about the llvm-dev mailing list