forked from OSchip/llvm-project
Emit hidden hostcall argument for sanitized kernels
this patch - https://reviews.llvm.org/D110337 changes the way how hostcall hidden argument is emitted for printf, but the sanitized kernels also use hostcall buffer to report a error for invalid memory access, which is not handled by the above patch and it leads to vdi runtime error: Device::callbackQueue aborting with error : HSA_STATUS_ERROR_MEMORY_FAULT: Agent attempted to access an inaccessible address. code: 0x2b Patch by: Praveen Velliengiri Reviewed by: Yaxun Liu, Matt Arsenault Differential Revision: https://reviews.llvm.org/D112820
This commit is contained in:
parent
0242a6adf7
commit
4b3881e9f3
|
@ -565,6 +565,7 @@ void CodeGenModule::Release() {
|
|||
"__amdgpu_device_library_preserve_asan_functions_ptr", nullptr,
|
||||
llvm::GlobalVariable::NotThreadLocal);
|
||||
addCompilerUsedGlobal(Var);
|
||||
getModule().addModuleFlag(llvm::Module::Override, "amdgpu_hostcall", 1);
|
||||
}
|
||||
|
||||
emitLLVMUsed();
|
||||
|
|
|
@ -9,12 +9,12 @@
|
|||
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=amdgcn-amd-amdhsa \
|
||||
// RUN: -fcuda-is-device -target-cpu gfx906 -fsanitize=address \
|
||||
// RUN: -mlink-bitcode-file %t.asanrtl.bc -x hip \
|
||||
// RUN: | FileCheck -check-prefix=ASAN %s
|
||||
// RUN: | FileCheck -check-prefixes=ASAN,MFCHECK %s
|
||||
|
||||
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=amdgcn-amd-amdhsa \
|
||||
// RUN: -fcuda-is-device -target-cpu gfx906 -fsanitize=address \
|
||||
// RUN: -O3 -mlink-bitcode-file %t.asanrtl.bc -x hip \
|
||||
// RUN: | FileCheck -check-prefix=ASAN %s
|
||||
// RUN: | FileCheck -check-prefixes=ASAN,MFCHECK %s
|
||||
|
||||
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=amdgcn-amd-amdhsa \
|
||||
// RUN: -fcuda-is-device -target-cpu gfx906 -x hip \
|
||||
|
@ -27,5 +27,8 @@
|
|||
// ASAN-DAG: @llvm.compiler.used = {{.*}}@__amdgpu_device_library_preserve_asan_functions_ptr
|
||||
// ASAN-DAG: define weak void @__asan_report_load1(i64 %{{.*}})
|
||||
|
||||
// MFCHECK: !llvm.module.flags = !{![[FLAG1:[0-9]+]], ![[FLAG2:[0-9]+]]}
|
||||
// MFCHECK: ![[FLAG1]] = !{i32 4, !"amdgpu_hostcall", i32 1}
|
||||
|
||||
// CHECK-NOT: @__amdgpu_device_library_preserve_asan_functions
|
||||
// CHECK-NOT: @__asan_report_load1
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 --amdhsa-code-object-version=3 -amdgpu-dump-hsa-metadata -amdgpu-verify-hsa-metadata -filetype=obj -o - < %s 2>&1 | FileCheck %s
|
||||
|
||||
; CHECK: ---
|
||||
; CHECK: amdhsa.kernels:
|
||||
; CHECK: - .args:
|
||||
; CHECK-NEXT: - .name: a
|
||||
; CHECK-NEXT: .offset: 0
|
||||
; CHECK-NEXT: .size: 1
|
||||
; CHECK-NEXT: .type_name: char
|
||||
; CHECK-NEXT: .value_kind: by_value
|
||||
; CHECK-NEXT: - .offset: 8
|
||||
; CHECK-NEXT: .size: 8
|
||||
; CHECK-NEXT: .value_kind: hidden_global_offset_x
|
||||
; CHECK-NEXT: - .offset: 16
|
||||
; CHECK-NEXT: .size: 8
|
||||
; CHECK-NEXT: .value_kind: hidden_global_offset_y
|
||||
; CHECK-NEXT: - .offset: 24
|
||||
; CHECK-NEXT: .size: 8
|
||||
; CHECK-NEXT: .value_kind: hidden_global_offset_z
|
||||
; CHECK-NEXT: - .address_space: global
|
||||
; CHECK-NEXT: .offset: 32
|
||||
; CHECK-NEXT: .size: 8
|
||||
; CHECK-NEXT: .value_kind: hidden_hostcall_buffer
|
||||
; CHECK: .language: OpenCL C
|
||||
; CHECK-NEXT: .language_version:
|
||||
; CHECK-NEXT: - 2
|
||||
; CHECK-NEXT: - 0
|
||||
; CHECK: .name: test_kernel
|
||||
; CHECK: .symbol: test_kernel.kd
|
||||
|
||||
define amdgpu_kernel void @test_kernel(i8 %a) #0
|
||||
!kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
|
||||
!kernel_arg_base_type !3 !kernel_arg_type_qual !4 {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: amdhsa.version:
|
||||
; CHECK-NEXT: - 1
|
||||
; CHECK-NEXT: - 0
|
||||
|
||||
attributes #0 = { sanitize_address "amdgpu-implicitarg-num-bytes"="48" }
|
||||
|
||||
!1 = !{i32 0}
|
||||
!2 = !{!"none"}
|
||||
!3 = !{!"char"}
|
||||
!4 = !{!""}
|
||||
|
||||
!opencl.ocl.version = !{!90}
|
||||
!90 = !{i32 2, i32 0}
|
||||
|
||||
!llvm.module.flags = !{!0}
|
||||
!0 = !{i32 4, !"amdgpu_hostcall", i32 1}
|
||||
|
||||
; CHECK: AMDGPU HSA Metadata Parser Test: PASS
|
Loading…
Reference in New Issue