Skip to content

Commit aac11a1

Browse files
committed
[PR] vitalybuka - adjusted interface, deleted constructors and removed has_include
1 parent 50f3672 commit aac11a1

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

compiler-rt/include/sanitizer/rtsan_interface.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,7 @@
1414
#ifndef SANITIZER_RTSAN_INTERFACE_H
1515
#define SANITIZER_RTSAN_INTERFACE_H
1616

17-
#if __has_include(<sanitizer/common_interface_defs.h>)
1817
#include <sanitizer/common_interface_defs.h>
19-
#else
20-
#define SANITIZER_CDECL
21-
#endif // __has_include(<sanitizer/common_interface_defs.h>)
2218

2319
#ifdef __cplusplus
2420
extern "C" {
@@ -60,6 +56,16 @@ class ScopedDisabler {
6056
class ScopedDisabler {
6157
public:
6258
ScopedDisabler() {}
59+
#if __cplusplus >= 201103L
60+
ScopedDisabler(const ScopedDisabler &) = delete;
61+
ScopedDisabler &operator=(const ScopedDisabler &) = delete;
62+
ScopedDisabler(ScopedDisabler &&) = delete;
63+
ScopedDisabler &operator=(ScopedDisabler &&) = delete;
64+
#else
65+
private:
66+
ScopedDisabler(const ScopedDisabler &);
67+
ScopedDisabler &operator=(const ScopedDisabler &);
68+
#endif // __cplusplus >= 201103L
6369
};
6470

6571
#endif // defined(__has_feature) && __has_feature(realtime_sanitizer)

compiler-rt/test/rtsan/disabler.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,22 @@ void violation() [[clang::nonblocking]] {
1414
{
1515
__rtsan::ScopedDisabler disabler{};
1616
ptr = malloc(2);
17-
printf("ptr: %p\n", ptr); // ensure we don't optimize out the malloc
17+
fprintf(stderr, "Allocated pointer %p in disabled context\n", ptr);
1818
}
1919

2020
// ensure nested disablers don't interfere with one another
21-
void *ptr2;
2221
{
22+
void *ptr2;
2323
__rtsan::ScopedDisabler disabler{};
2424
{
2525
__rtsan::ScopedDisabler disabler2{};
2626
ptr2 = malloc(2);
27-
printf("ptr: %p\n", ptr); // ensure we don't optimize out the malloc
27+
fprintf(stderr, "Allocated second pointer %p in disabled context\n",
28+
ptr2);
2829
}
2930

3031
free(ptr2);
31-
printf("Free'd second pointer in disabled context without crashing\n");
32+
fprintf(stderr, "Free'd second pointer in disabled context\n");
3233
}
3334

3435
free(ptr);
@@ -37,10 +38,12 @@ void violation() [[clang::nonblocking]] {
3738
int main() {
3839
violation();
3940
return 0;
41+
// CHECK: Allocated pointer {{.*}} in disabled context
42+
// CHECK: Allocated second pointer {{.*}} in disabled context
43+
// CHECK: Free'd second pointer in disabled context
4044
// CHECK: {{.*Real-time violation.*}}
4145
// CHECK-NOT: {{.*malloc*}}
42-
// CHECK: Free'd second pointer in disabled context without crashing
43-
// CHECK: {{.*real-time unsafe function `free`.*}}
46+
// CHECK-NEXT: {{.*free.*}}
4447
}
4548

4649
// CHECK-ENABLED-IR: {{.*@__rtsan_disable.*}}

0 commit comments

Comments
 (0)