Skip to content

Commit 60fa7c7

Browse files
authored
Enable ASAN in amdgpu toolchain for OpenCL (#96262)
1 parent 513644b commit 60fa7c7

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

clang/lib/Driver/ToolChains/AMDGPU.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "clang/Driver/DriverDiagnostic.h"
1515
#include "clang/Driver/InputInfo.h"
1616
#include "clang/Driver/Options.h"
17+
#include "clang/Driver/SanitizerArgs.h"
1718
#include "llvm/ADT/StringExtras.h"
1819
#include "llvm/Option/ArgList.h"
1920
#include "llvm/Support/Error.h"
@@ -946,6 +947,11 @@ void ROCMToolChain::addClangTargetOptions(
946947
DriverArgs, LibDeviceFile, Wave64, DAZ, FiniteOnly, UnsafeMathOpt,
947948
FastRelaxedMath, CorrectSqrt, ABIVer, false));
948949

950+
if (getSanitizerArgs(DriverArgs).needsAsanRt()) {
951+
CC1Args.push_back("-mlink-bitcode-file");
952+
CC1Args.push_back(
953+
DriverArgs.MakeArgString(RocmInstallation->getAsanRTLPath()));
954+
}
949955
for (StringRef BCFile : BCLibs) {
950956
CC1Args.push_back("-mlink-builtin-bitcode");
951957
CC1Args.push_back(DriverArgs.MakeArgString(BCFile));

clang/lib/Driver/ToolChains/AMDGPU.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ class LLVM_LIBRARY_VISIBILITY ROCMToolChain : public AMDGPUToolChain {
140140
getCommonDeviceLibNames(const llvm::opt::ArgList &DriverArgs,
141141
const std::string &GPUArch,
142142
bool isOpenMP = false) const;
143+
SanitizerMask getSupportedSanitizers() const override {
144+
return SanitizerKind::Address;
145+
}
143146
};
144147

145148
} // end namespace toolchains

clang/test/Driver/rocm-device-libs.cl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,20 @@
132132
// RUN: %S/opencl.cl \
133133
// RUN: 2>&1 | FileCheck --check-prefixes=COMMON,COMMON-DEFAULT,GFX900-DEFAULT,GFX900,WAVE64 %s
134134

135+
// RUN: %clang -### -target amdgcn-amd-amdhsa \
136+
// RUN: -x cl -mcpu=gfx908:xnack+ -fsanitize=address \
137+
// RUN: --rocm-path=%S/Inputs/rocm \
138+
// RUN: %s \
139+
// RUN: 2>&1 | FileCheck --check-prefixes=ASAN,COMMON %s
135140

141+
// RUN: %clang -### -target amdgcn-amd-amdhsa \
142+
// RUN: -x cl -mcpu=gfx908:xnack+ \
143+
// RUN: --rocm-path=%S/Inputs/rocm \
144+
// RUN: %s \
145+
// RUN: 2>&1 | FileCheck --check-prefixes=NOASAN %s
136146

137147
// COMMON: "-triple" "amdgcn-amd-amdhsa"
148+
// ASAN-SAME: "-mlink-bitcode-file" "{{.*}}/amdgcn/bitcode/asanrtl.bc"
138149
// COMMON-SAME: "-mlink-builtin-bitcode" "{{.*}}/amdgcn/bitcode/opencl.bc"
139150
// COMMON-SAME: "-mlink-builtin-bitcode" "{{.*}}/amdgcn/bitcode/ocml.bc"
140151
// COMMON-SAME: "-mlink-builtin-bitcode" "{{.*}}/amdgcn/bitcode/ockl.bc"
@@ -169,6 +180,11 @@
169180
// COMMON-UNSAFE-MATH-SAME: "-mlink-builtin-bitcode" "{{.*}}/amdgcn/bitcode/oclc_finite_only_off.bc"
170181
// COMMON-UNSAFE-MATH-SAME: "-mlink-builtin-bitcode" "{{.*}}/amdgcn/bitcode/oclc_correctly_rounded_sqrt_off.bc"
171182

183+
// ASAN-SAME: "-fsanitize=address"
184+
185+
// NOASAN-NOT: "-fsanitize=address"
186+
// NOASAN-NOT: amdgcn/bitcode/asanrtl.bc
187+
172188
// WAVE64: "-mlink-builtin-bitcode" "{{.*}}/amdgcn/bitcode/oclc_wavefrontsize64_on.bc"
173189
// WAVE32: "-mlink-builtin-bitcode" "{{.*}}/amdgcn/bitcode/oclc_wavefrontsize64_off.bc"
174190

0 commit comments

Comments
 (0)