Module Name: src Committed By: kamil Date: Fri Sep 11 01:07:00 UTC 2020
Modified Files: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common: sanitizer_stoptheworld_netbsd_libcdep.cc Log Message: Adapt stop-the-world for ptrace changes in NetBSD-9.99.30 Cherry-pick and adapt: commit fc356dcc11c10003ff22acff667b0a9f5e6c1e0f Author: Kamil Rytarowski <n...@gmx.com> Date: Tue Dec 24 20:33:54 2019 +0100 [compiler-rt] Adapt stop-the-world for ptrace changes in NetBSD-9.99.30 Handle PT_LWPNEXT for newer kernels and keep PT_LWPINFO for older ones. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cc:1.1 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cc:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cc:1.1 Fri Sep 11 01:05:28 2020 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cc Fri Sep 11 01:07:00 2020 @@ -120,10 +120,18 @@ bool ThreadSuspender::SuspendAllThreads( VReport(2, "Attached to process %d.\n", pid_); +#ifdef PT_LWPNEXT + struct ptrace_lwpstatus pl; + int op = PT_LWPNEXT; +#else struct ptrace_lwpinfo pl; - int val; + int op = PT_LWPINFO; +#endif + pl.pl_lwpid = 0; - while ((val = ptrace(PT_LWPINFO, pid_, (void *)&pl, sizeof(pl))) != -1 && + + int val; + while ((val = ptrace(op, pid_, (void *)&pl, sizeof(pl))) != -1 && pl.pl_lwpid != 0) { suspended_threads_list_.Append(pl.pl_lwpid); VReport(2, "Appended thread %d in process %d.\n", pl.pl_lwpid, pid_);