Skip to content

Commit 966d564

Browse files
authored
asan_static x86-64: Support 64-bit ASAN_SHADOW_OFFSET_CONST redux (llvm#76185)
Similar to b9935bb, but also apply a similar change to ACCESS_CHECK_ADD. If ASAN_SHADOW_OFFSET_CONST cannot be encoded as a displacement, switch to `movabsq` and the register offset variant of cmp.
1 parent af837d4 commit 966d564

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

compiler-rt/lib/asan/asan_rtl_x86_64.S

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,12 @@ ENDF
8989
#define ASAN_MEMORY_ACCESS_CHECK_ADD(reg, op, s, c) \
9090
mov %##reg,%r10 ;\
9191
shr $0x3,%r10 ;\
92+
.if ASAN_SHADOW_OFFSET_CONST < 0x80000000 ;\
9293
##c $0x0,ASAN_SHADOW_OFFSET_CONST(%r10) ;\
94+
.else ;\
95+
movabsq $ASAN_SHADOW_OFFSET_CONST,%r11 ;\
96+
##c $0x0,(%r10,%r11) ;\
97+
.endif ;\
9398
jne FLABEL(reg, op, s, add) ;\
9499
retq ;\
95100

0 commit comments

Comments
 (0)