[compiler-rt] [llvm] [compiler-rt] Add AMDGPU Device UndefinedBehaviorSanitizer runtime (PR #219972)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 31 14:54:31 PDT 2026
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp,h,inc -- compiler-rt/lib/ubsan/offload/hsa.h compiler-rt/lib/ubsan/offload/ubsan_offload.h compiler-rt/lib/ubsan/offload/ubsan_offload_hsa.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_hsa.h compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_rpc.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_rpc.h compiler-rt/lib/ubsan/offload/ubsan_offload_symbolize.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_symbolize.h compiler-rt/lib/ubsan/ubsan_handlers_internal.h compiler-rt/lib/ubsan/ubsan_offload.cpp compiler-rt/lib/ubsan/ubsan_offload_checks.inc compiler-rt/lib/ubsan/ubsan_offload_packet.h compiler-rt/test/ubsan/AMDGPU/openmp-overflow.cpp compiler-rt/test/ubsan/Inputs/hip.h compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp compiler-rt/lib/ubsan/ubsan_diag.cpp compiler-rt/lib/ubsan/ubsan_diag.h compiler-rt/lib/ubsan/ubsan_handlers.cpp compiler-rt/lib/ubsan/ubsan_interface.inc compiler-rt/lib/ubsan/ubsan_value.h --diff_from_common_commit
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp b/compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp
index ab27e2582..eca02530d 100644
--- a/compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp
+++ b/compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp
@@ -14,11 +14,11 @@
#include "sanitizer_common/sanitizer_libc.h"
#include "sanitizer_common/sanitizer_mutex.h"
#include "sanitizer_common/sanitizer_platform.h"
+#include "ubsan_diag.h"
#include "ubsan_offload.h"
#include "ubsan_offload_hsa.h"
#include "ubsan_offload_rpc.h"
#include "ubsan_offload_symbolize.h"
-#include "ubsan_diag.h"
#if !SANITIZER_LINUX
#error "Offload UBSan reporting is supported on Linux only"
diff --git a/compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp b/compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp
index 9eed5ae13..7aba59e1a 100644
--- a/compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp
+++ b/compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp
@@ -13,9 +13,9 @@
#include "ubsan_offload.h"
-#include "ubsan_offload_hsa.h"
#include "ubsan_diag.h"
#include "ubsan_handlers_internal.h"
+#include "ubsan_offload_hsa.h"
#include "ubsan_value.h"
#include "sanitizer_common/sanitizer_common.h"
@@ -51,8 +51,8 @@ struct CFICheckFailLocPrefix {
constexpr u8 kCFILocOff =
static_cast<u8>(__builtin_offsetof(CFICheckFailLocPrefix, Loc));
-#define UBSAN_OFFLOAD_HANDLER(kind, name, reason, size, locoff, nloc, ntype, \
- flags, ...) \
+#define UBSAN_OFFLOAD_HANDLER(kind, name, reason, size, locoff, nloc, ntype, \
+ flags, ...) \
{size, locoff, nloc, ntype, flags},
constexpr KindLayout kLayout[] = {
#include "ubsan_offload_checks.inc"
diff --git a/compiler-rt/lib/ubsan/ubsan_offload.cpp b/compiler-rt/lib/ubsan/ubsan_offload.cpp
index f44d2bc08..ca7566915 100644
--- a/compiler-rt/lib/ubsan/ubsan_offload.cpp
+++ b/compiler-rt/lib/ubsan/ubsan_offload.cpp
@@ -65,20 +65,20 @@ void report(uptr Pc, __ubsan_report_kind Kind, bool Fatal, const void *Data,
extern "C" {
-#define UBSAN_OFFLOAD_HANDLER(kind, name, reason, size, locoff, nloc, ntype, \
- flags, params, ...) \
+#define UBSAN_OFFLOAD_HANDLER(kind, name, reason, size, locoff, nloc, ntype, \
+ flags, params, ...) \
[[gnu::cold, gnu::noinline]] void __ubsan_handle_##name params { \
- report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, false, __VA_ARGS__); \
+ report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, false, __VA_ARGS__); \
} \
[[gnu::cold, gnu::noinline]] void __ubsan_handle_##name##_abort params { \
- report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, true, __VA_ARGS__); \
+ report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, true, __VA_ARGS__); \
__builtin_verbose_trap("UndefinedBehaviorSanitizer", reason); \
}
-#define UBSAN_OFFLOAD_HANDLER_NORETURN(kind, name, reason, size, locoff, nloc, \
- ntype, flags, params, ...) \
+#define UBSAN_OFFLOAD_HANDLER_NORETURN(kind, name, reason, size, locoff, nloc, \
+ ntype, flags, params, ...) \
[[gnu::cold, gnu::noinline]] void __ubsan_handle_##name params { \
- report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, true, __VA_ARGS__); \
+ report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, true, __VA_ARGS__); \
__builtin_verbose_trap("UndefinedBehaviorSanitizer", reason); \
}
diff --git a/compiler-rt/lib/ubsan/ubsan_offload_checks.inc b/compiler-rt/lib/ubsan/ubsan_offload_checks.inc
index 268f2b2bc..217dc46c9 100644
--- a/compiler-rt/lib/ubsan/ubsan_offload_checks.inc
+++ b/compiler-rt/lib/ubsan/ubsan_offload_checks.inc
@@ -18,93 +18,92 @@
#endif
UBSAN_OFFLOAD_HANDLER(type_mismatch, type_mismatch_v1, "type mismatch",
- sizeof(TypeMismatchData), 0, 1, 1, KL_None,
- (TypeMismatchData * D, ValueHandle P), D, P)
+ sizeof(TypeMismatchData), 0, 1, 1, KL_None,
+ (TypeMismatchData * D, ValueHandle P), D, P)
UBSAN_OFFLOAD_HANDLER(alignment_assumption, alignment_assumption,
- "alignment assumption", sizeof(AlignmentAssumptionData), 0,
- 2, 1, KL_None,
- (AlignmentAssumptionData * D, ValueHandle P, ValueHandle A,
- ValueHandle O),
- D, P, A, O)
+ "alignment assumption", sizeof(AlignmentAssumptionData),
+ 0, 2, 1, KL_None,
+ (AlignmentAssumptionData * D, ValueHandle P,
+ ValueHandle A, ValueHandle O),
+ D, P, A, O)
UBSAN_OFFLOAD_HANDLER(add_overflow, add_overflow, "integer overflow",
- sizeof(OverflowData), 0, 1, 1, KL_None,
- (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
+ sizeof(OverflowData), 0, 1, 1, KL_None,
+ (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
UBSAN_OFFLOAD_HANDLER(sub_overflow, sub_overflow, "integer overflow",
- sizeof(OverflowData), 0, 1, 1, KL_None,
- (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
+ sizeof(OverflowData), 0, 1, 1, KL_None,
+ (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
UBSAN_OFFLOAD_HANDLER(mul_overflow, mul_overflow, "integer overflow",
- sizeof(OverflowData), 0, 1, 1, KL_None,
- (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
+ sizeof(OverflowData), 0, 1, 1, KL_None,
+ (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
UBSAN_OFFLOAD_HANDLER(negate_overflow, negate_overflow, "negation overflow",
- sizeof(OverflowData), 0, 1, 1, KL_None,
- (OverflowData * D, ValueHandle V), D, V)
+ sizeof(OverflowData), 0, 1, 1, KL_None,
+ (OverflowData * D, ValueHandle V), D, V)
UBSAN_OFFLOAD_HANDLER(divrem_overflow, divrem_overflow, "division overflow",
- sizeof(OverflowData), 0, 1, 1, KL_None,
- (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
+ sizeof(OverflowData), 0, 1, 1, KL_None,
+ (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
UBSAN_OFFLOAD_HANDLER(shift_out_of_bounds, shift_out_of_bounds,
- "shift out of bounds", sizeof(ShiftOutOfBoundsData), 0, 1,
- 2, KL_None,
- (ShiftOutOfBoundsData * D, ValueHandle L, ValueHandle R),
- D, L, R)
+ "shift out of bounds", sizeof(ShiftOutOfBoundsData), 0, 1,
+ 2, KL_None,
+ (ShiftOutOfBoundsData * D, ValueHandle L, ValueHandle R),
+ D, L, R)
UBSAN_OFFLOAD_HANDLER(out_of_bounds, out_of_bounds, "array index out of bounds",
- sizeof(OutOfBoundsData), 0, 1, 2, KL_None,
- (OutOfBoundsData * D, ValueHandle I), D, I)
+ sizeof(OutOfBoundsData), 0, 1, 2, KL_None,
+ (OutOfBoundsData * D, ValueHandle I), D, I)
UBSAN_OFFLOAD_HANDLER(local_out_of_bounds, local_out_of_bounds,
- "local array index out of bounds", 0, 0, 0, 0, KL_NoData,
- (void), nullptr)
+ "local array index out of bounds", 0, 0, 0, 0, KL_NoData,
+ (void), nullptr)
UBSAN_OFFLOAD_HANDLER(vla_bound_not_positive, vla_bound_not_positive,
- "non-positive VLA bound", sizeof(VLABoundData), 0, 1, 1,
- KL_None, (VLABoundData * D, ValueHandle B), D, B)
+ "non-positive VLA bound", sizeof(VLABoundData), 0, 1, 1,
+ KL_None, (VLABoundData * D, ValueHandle B), D, B)
UBSAN_OFFLOAD_HANDLER(float_cast_overflow, float_cast_overflow,
- "float cast overflow", sizeof(FloatCastOverflowDataV2), 0,
- 1, 2, KL_FloatCast, (void *D, ValueHandle F), D, F)
+ "float cast overflow", sizeof(FloatCastOverflowDataV2), 0,
+ 1, 2, KL_FloatCast, (void *D, ValueHandle F), D, F)
UBSAN_OFFLOAD_HANDLER(load_invalid_value, load_invalid_value,
- "invalid value load", sizeof(InvalidValueData), 0, 1, 1,
- KL_None, (InvalidValueData * D, ValueHandle V), D, V)
-UBSAN_OFFLOAD_HANDLER(implicit_conversion, implicit_conversion,
- "implicit conversion", sizeof(ImplicitConversionData), 0,
- 1, 2, KL_None,
- (ImplicitConversionData * D, ValueHandle S, ValueHandle T),
- D, S, T)
+ "invalid value load", sizeof(InvalidValueData), 0, 1, 1,
+ KL_None, (InvalidValueData * D, ValueHandle V), D, V)
+UBSAN_OFFLOAD_HANDLER(
+ implicit_conversion, implicit_conversion, "implicit conversion",
+ sizeof(ImplicitConversionData), 0, 1, 2, KL_None,
+ (ImplicitConversionData * D, ValueHandle S, ValueHandle T), D, S, T)
UBSAN_OFFLOAD_HANDLER(invalid_builtin, invalid_builtin, "invalid builtin",
- sizeof(InvalidBuiltinData), 0, 1, 0, KL_None,
- (InvalidBuiltinData * D), D)
+ sizeof(InvalidBuiltinData), 0, 1, 0, KL_None,
+ (InvalidBuiltinData * D), D)
UBSAN_OFFLOAD_HANDLER(invalid_objc_cast, invalid_objc_cast, "invalid ObjC cast",
- sizeof(InvalidObjCCast), 0, 1, 1, KL_None,
- (InvalidObjCCast * D, ValueHandle P), D, P)
+ sizeof(InvalidObjCCast), 0, 1, 1, KL_None,
+ (InvalidObjCCast * D, ValueHandle P), D, P)
UBSAN_OFFLOAD_HANDLER(nonnull_arg, nonnull_arg, "null argument",
- sizeof(NonNullArgData), 0, 2, 0, KL_None,
- (NonNullArgData * D), D)
+ sizeof(NonNullArgData), 0, 2, 0, KL_None,
+ (NonNullArgData * D), D)
UBSAN_OFFLOAD_HANDLER(nullability_arg, nullability_arg, "null argument",
- sizeof(NonNullArgData), 0, 2, 0, KL_None,
- (NonNullArgData * D), D)
+ sizeof(NonNullArgData), 0, 2, 0, KL_None,
+ (NonNullArgData * D), D)
UBSAN_OFFLOAD_HANDLER(nonnull_return, nonnull_return_v1, "null return",
- sizeof(NonNullReturnData), 0, 1, 0, KL_ExtraLoc,
- (NonNullReturnData * D, SourceLocation *L), D,
- reinterpret_cast<ValueHandle>(L))
+ sizeof(NonNullReturnData), 0, 1, 0, KL_ExtraLoc,
+ (NonNullReturnData * D, SourceLocation *L), D,
+ reinterpret_cast<ValueHandle>(L))
UBSAN_OFFLOAD_HANDLER(nullability_return, nullability_return_v1, "null return",
- sizeof(NonNullReturnData), 0, 1, 0, KL_ExtraLoc,
- (NonNullReturnData * D, SourceLocation *L), D,
- reinterpret_cast<ValueHandle>(L))
+ sizeof(NonNullReturnData), 0, 1, 0, KL_ExtraLoc,
+ (NonNullReturnData * D, SourceLocation *L), D,
+ reinterpret_cast<ValueHandle>(L))
UBSAN_OFFLOAD_HANDLER(pointer_overflow, pointer_overflow, "pointer overflow",
- sizeof(PointerOverflowData), 0, 1, 0, KL_None,
- (PointerOverflowData * D, ValueHandle B, ValueHandle R), D,
- B, R)
+ sizeof(PointerOverflowData), 0, 1, 0, KL_None,
+ (PointerOverflowData * D, ValueHandle B, ValueHandle R),
+ D, B, R)
UBSAN_OFFLOAD_HANDLER(function_type_mismatch, function_type_mismatch,
- "function type mismatch", sizeof(FunctionTypeMismatchData),
- 0, 1, 1, KL_None,
- (FunctionTypeMismatchData * D, ValueHandle V), D, V)
+ "function type mismatch",
+ sizeof(FunctionTypeMismatchData), 0, 1, 1, KL_None,
+ (FunctionTypeMismatchData * D, ValueHandle V), D, V)
UBSAN_OFFLOAD_HANDLER(cfi_check_fail, cfi_check_fail,
- "control flow integrity failure", sizeof(CFICheckFailData),
- kCFILocOff, 1, 1, KL_None,
- (CFICheckFailData * D, ValueHandle F, uptr V), D, F, V)
+ "control flow integrity failure",
+ sizeof(CFICheckFailData), kCFILocOff, 1, 1, KL_None,
+ (CFICheckFailData * D, ValueHandle F, uptr V), D, F, V)
UBSAN_OFFLOAD_HANDLER_NORETURN(builtin_unreachable, builtin_unreachable,
- "unreachable code reached",
- sizeof(UnreachableData), 0, 1, 0, KL_None,
- (UnreachableData * D), D)
+ "unreachable code reached",
+ sizeof(UnreachableData), 0, 1, 0, KL_None,
+ (UnreachableData * D), D)
UBSAN_OFFLOAD_HANDLER_NORETURN(missing_return, missing_return, "missing return",
- sizeof(UnreachableData), 0, 1, 0, KL_None,
- (UnreachableData * D), D)
+ sizeof(UnreachableData), 0, 1, 0, KL_None,
+ (UnreachableData * D), D)
#undef UBSAN_OFFLOAD_HANDLER
#undef UBSAN_OFFLOAD_HANDLER_NORETURN
``````````
</details>
https://github.com/llvm/llvm-project/pull/219972
More information about the llvm-commits
mailing list