Skip to content

Commit 354439a

Browse files
committedMay 24, 2017
[compiler-rt] Change default of allow_user_segv_handler to true
Reviewers: eugenis Subscribers: srhines, kubamracek, llvm-commits Differential Revision: https://reviews.llvm.org/D32443 llvm-svn: 303729
1 parent 9808ff5 commit 354439a

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed
 

‎compiler-rt/lib/asan/scripts/asan_device_setup

-5
Original file line numberDiff line numberDiff line change
@@ -327,11 +327,6 @@ exec $_to \$@
327327
EOF
328328
}
329329

330-
# On Android-L not allowing user segv handler breaks some applications.
331-
if [[ PRE_L -eq 0 ]]; then
332-
ASAN_OPTIONS="$ASAN_OPTIONS,allow_user_segv_handler=1"
333-
fi
334-
335330
if [[ x$extra_options != x ]] ; then
336331
ASAN_OPTIONS="$ASAN_OPTIONS,$extra_options"
337332
fi

‎compiler-rt/lib/asan/tests/asan_test.cc

+13-8
Original file line numberDiff line numberDiff line change
@@ -251,20 +251,21 @@ TEST(AddressSanitizer, BitFieldNegativeTest) {
251251
namespace {
252252

253253
const char kSEGVCrash[] = "AddressSanitizer: SEGV on unknown address";
254-
const char kOverriddenHandler[] = "ASan signal handler has been overridden\n";
254+
const char kOverriddenSigactionHandler[] = "Test sigaction handler\n";
255+
const char kOverriddenSignalHandler[] = "Test signal handler\n";
255256

256257
TEST(AddressSanitizer, WildAddressTest) {
257258
char *c = (char*)0x123;
258259
EXPECT_DEATH(*c = 0, kSEGVCrash);
259260
}
260261

261262
void my_sigaction_sighandler(int, siginfo_t*, void*) {
262-
fprintf(stderr, kOverriddenHandler);
263+
fprintf(stderr, kOverriddenSigactionHandler);
263264
exit(1);
264265
}
265266

266267
void my_signal_sighandler(int signum) {
267-
fprintf(stderr, kOverriddenHandler);
268+
fprintf(stderr, kOverriddenSignalHandler);
268269
exit(1);
269270
}
270271

@@ -273,16 +274,20 @@ TEST(AddressSanitizer, SignalTest) {
273274
memset(&sigact, 0, sizeof(sigact));
274275
sigact.sa_sigaction = my_sigaction_sighandler;
275276
sigact.sa_flags = SA_SIGINFO;
276-
// ASan should silently ignore sigaction()...
277+
char *c = (char *)0x123;
278+
279+
EXPECT_DEATH(*c = 0, kSEGVCrash);
280+
281+
// ASan should allow to set sigaction()...
277282
EXPECT_EQ(0, sigaction(SIGSEGV, &sigact, 0));
278283
#ifdef __APPLE__
279284
EXPECT_EQ(0, sigaction(SIGBUS, &sigact, 0));
280285
#endif
281-
char *c = (char*)0x123;
282-
EXPECT_DEATH(*c = 0, kSEGVCrash);
286+
EXPECT_DEATH(*c = 0, kOverriddenSigactionHandler);
287+
283288
// ... and signal().
284-
EXPECT_EQ(0, signal(SIGSEGV, my_signal_sighandler));
285-
EXPECT_DEATH(*c = 0, kSEGVCrash);
289+
EXPECT_NE(SIG_ERR, signal(SIGSEGV, my_signal_sighandler));
290+
EXPECT_DEATH(*c = 0, kOverriddenSignalHandler);
286291
}
287292
} // namespace
288293
#endif

‎compiler-rt/lib/sanitizer_common/sanitizer_flags.inc

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ COMMON_FLAG(HandleSignalMode, handle_sigill, kHandleSignalNo,
9292
COMMON_FLAG(HandleSignalMode, handle_sigfpe, kHandleSignalYes,
9393
COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGFPE))
9494
#undef COMMON_FLAG_HANDLE_SIGNAL_HELP
95-
COMMON_FLAG(bool, allow_user_segv_handler, false,
95+
COMMON_FLAG(bool, allow_user_segv_handler, true,
9696
"If set, allows user to register a SEGV handler even if the tool "
9797
"registers one.")
9898
COMMON_FLAG(bool, use_sigaltstack, true,

0 commit comments

Comments
 (0)
Please sign in to comment.