[PATCH] D29586: [lsan] Enable LSan for arm Linux
Maxim Ostapenko via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 9 09:14:55 PST 2017
m.ostapenko added a comment.
In https://reviews.llvm.org/D29586#668769, @m.ostapenko wrote:
> In https://reviews.llvm.org/D29586#668050, @rengolin wrote:
>
> > You seem to be enabling it on soft and hard float. Did you test on both environments? What type of hardware did you test this?
>
>
> I've tested the patch on two configurations:
>
> 1. Linaro Ubuntu 14.04 (Trusty) on Arndale board. It's a hard float system, right?
Oh, things become more complicated... I see many test failures with host GCC 4.8 because fast unwinder failed to get backtraces for mallocs. This happens because **__interceptor_malloc**, compiled by GCC 4.8, didn't properly save **frame pointer register**:
00000000 <__interceptor_malloc>:
0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
4: f5ad 6d85 sub.w sp, sp, #1064 ; 0x428
8: 4d29 ldr r5, [pc, #164] ; (b0 <__interceptor_malloc+0xb0>)
a: 4b2a ldr r3, [pc, #168] ; (b4 <__interceptor_malloc+0xb4>)
c: af04 add r7, sp, #16
e: 447d add r5, pc
But if compile with clang (3.3, 3.5 or trunk) or GCC 4.9, the fp is saved properly:
00000000 <__interceptor_malloc>:
0: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr}
4: e28db01c add fp, sp, #28
8: e24dd024 sub sp, sp, #36 ; 0x24
c: e24ddb01 sub sp, sp, #1024 ; 0x400
10: e1a08000 mov r8, r0
So, it seems that LSan's operability depends on what compiler is used to build it :(.
Repository:
rL LLVM
https://reviews.llvm.org/D29586
More information about the llvm-commits
mailing list