Skip to content

Commit

Permalink
[ASan][AMDGPU] Make shadow offset match X86 on Linux
Browse files Browse the repository at this point in the history
This patch explicitly sets the shadow offset for
AMDGPU to match that of X86 on Linux.

Reviewed By: vitalybuka

https://reviews.llvm.org/D105282
  • Loading branch information
rksharma-yymd committed Jul 9, 2021
1 parent ed102ce commit 2e194de
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 9 deletions.
7 changes: 3 additions & 4 deletions llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -465,10 +465,6 @@ static ShadowMapping getShadowMapping(Triple &TargetTriple, int LongSize,
bool IsEmscripten = TargetTriple.isOSEmscripten();
bool IsAMDGPU = TargetTriple.isAMDGPU();

// Asan support for AMDGPU assumes X86 as the host right now.
if (IsAMDGPU)
IsX86_64 = true;

ShadowMapping Mapping;

Mapping.Scale = kDefaultShadowScale;
Expand Down Expand Up @@ -532,6 +528,9 @@ static ShadowMapping getShadowMapping(Triple &TargetTriple, int LongSize,
Mapping.Offset = kAArch64_ShadowOffset64;
else if (IsRISCV64)
Mapping.Offset = kRISCV64_ShadowOffset64;
else if (IsAMDGPU)
Mapping.Offset = (kSmallX86_64ShadowOffsetBase &
(kSmallX86_64ShadowOffsetAlignMask << Mapping.Scale));
else
Mapping.Offset = kDefaultShadowOffset64;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ entry:
;
; CHECK: %[[LOAD_ADDR:[^ ]*]] = ptrtoint i32 addrspace(4)* %a to i64
; CHECK: lshr i64 %[[LOAD_ADDR]], 3
; CHECK: {{or|add}}
; CHECK: add i64 %{{.*}}, 2147450880
; CHECK: %[[LOAD_SHADOW_PTR:[^ ]*]] = inttoptr
; CHECK: %[[LOAD_SHADOW:[^ ]*]] = load i8, i8* %[[LOAD_SHADOW_PTR]]
; CHECK: icmp ne i8
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ entry:
;
; CHECK: %[[STORE_ADDR:[^ ]*]] = ptrtoint i32* %q to i64
; CHECK: lshr i64 %[[STORE_ADDR]], 3
; CHECK: {{or|add}}
; CHECK: add i64 %{{.*}}, 2147450880
; CHECK: %[[STORE_SHADOW_PTR:[^ ]*]] = inttoptr
; CHECK: %[[STORE_SHADOW:[^ ]*]] = load i8, i8* %[[STORE_SHADOW_PTR]]
; CHECK: icmp ne i8
Expand Down Expand Up @@ -53,7 +53,7 @@ entry:
;
; CHECK: %[[STORE_ADDR:[^ ]*]] = ptrtoint i32* %q to i64
; CHECK: lshr i64 %[[STORE_ADDR]], 3
; CHECK: {{or|add}}
; CHECK: add i64 %{{.*}}, 2147450880
; CHECK: %[[STORE_SHADOW_PTR:[^ ]*]] = inttoptr
; CHECK: %[[STORE_SHADOW:[^ ]*]] = load i8, i8* %[[STORE_SHADOW_PTR]]
; CHECK: icmp ne i8
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ entry:
;
; CHECK: %[[STORE_ADDR:[^ ]*]] = ptrtoint i32 addrspace(1)* %p to i64
; CHECK: lshr i64 %[[STORE_ADDR]], 3
; CHECK: or
; CHECK: add i64 %{{.*}}, 2147450880
; CHECK: %[[STORE_SHADOW_PTR:[^ ]*]] = inttoptr
; CHECK: %[[STORE_SHADOW:[^ ]*]] = load i8, i8* %[[STORE_SHADOW_PTR]]
; CHECK: icmp ne i8
Expand Down Expand Up @@ -40,7 +40,7 @@ entry:
;
; CHECK: %[[LOAD_ADDR:[^ ]*]] = ptrtoint i32 addrspace(1)* %p to i64
; CHECK: lshr i64 %[[LOAD_ADDR]], 3
; CHECK: {{add|or}}
; CHECK: add i64 %{{.*}}, 2147450880
; CHECK: %[[LOAD_SHADOW_PTR:[^ ]*]] = inttoptr
; CHECK: %[[LOAD_SHADOW:[^ ]*]] = load i8, i8* %[[LOAD_SHADOW_PTR]]
; CHECK: icmp ne i8
Expand Down

0 comments on commit 2e194de

Please sign in to comment.