Module Name:    src
Committed By:   kamil
Date:           Thu Sep 10 12:53:06 UTC 2020

Modified Files:
        src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common:
            sanitizer_linux_libcdep.cc
        src/external/gpl3/gcc/lib: Makefile.sanitizer

Log Message:
Avoid using internal RTLD/libpthread/libc symbol in sanitizers

Cherry-pick and adapt:

commit 0da15ff318480f30bbc90b9e8ecb9bb9431c7fd3
Author: Kamil Rytarowski <[email protected]>
Date:   Fri Jan 3 02:35:33 2020 +0100

    [compiler-rt] [netbsd] Switch to syscall for ThreadSelfTlsTcb()

    This change avoids using internal, namespaced per-CPU calls that
    are not a stable interface to read the TSL base value.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 \
    
src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
cvs rdiff -u -r1.12 -r1.13 src/external/gpl3/gcc/lib/Makefile.sanitizer

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_linux_libcdep.cc
diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc:1.15 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc:1.16
--- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc:1.15	Mon Sep  7 07:10:43 2020
+++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc	Thu Sep 10 12:53:05 2020
@@ -47,6 +47,7 @@
 #if SANITIZER_NETBSD
 #include <sys/sysctl.h>
 #include <sys/tls.h>
+#include <lwp.h>
 #endif
 
 #if SANITIZER_SOLARIS
@@ -417,13 +418,7 @@ uptr ThreadSelf() {
 
 #if SANITIZER_NETBSD
 static struct tls_tcb * ThreadSelfTlsTcb() {
-  struct tls_tcb * tcb = NULL;
-# ifdef __HAVE___LWP_GETTCB_FAST
-  tcb = (struct tls_tcb *)__lwp_gettcb_fast();
-# elif defined(__HAVE___LWP_GETPRIVATE_FAST)
-  tcb = (struct tls_tcb *)__lwp_getprivate_fast();
-# endif
-  return tcb;
+  return (struct tls_tcb *)_lwp_getprivate();
 }
 
 uptr ThreadSelf() {

Index: src/external/gpl3/gcc/lib/Makefile.sanitizer
diff -u src/external/gpl3/gcc/lib/Makefile.sanitizer:1.12 src/external/gpl3/gcc/lib/Makefile.sanitizer:1.13
--- src/external/gpl3/gcc/lib/Makefile.sanitizer:1.12	Sat Sep  5 13:36:49 2020
+++ src/external/gpl3/gcc/lib/Makefile.sanitizer	Thu Sep 10 12:53:05 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.sanitizer,v 1.12 2020/09/05 13:36:49 mrg Exp $
+#	$NetBSD: Makefile.sanitizer,v 1.13 2020/09/10 12:53:05 kamil Exp $
 
 SANITIZER=${GCCDIST}/libsanitizer
 .PATH: ${SANITIZER}/interception ${SANITIZER}/sanitizer_common
@@ -75,8 +75,6 @@ CSHLIBFLAGS+= -DPIC
 SRCS+=	${INTERCEPTION_SRCS} ${SANITIZER_SRCS}
 CPPFLAGS+=-I${SANITIZER}/include -I${SANITIZER}
 CPPFLAGS.sanitizer_netbsd.cc+=-I${GCCDIST}/gcc/ginclude
-# XXX __lwp_getprivate_fast() is hidden normally.
-CPPFLAGS.sanitizer_linux_libcdep.cc+= -D__LIBPTHREAD_SOURCE__
 # XXX wants old lwp info and power ioctl, npf wants nv.h
 CPPFLAGS.sanitizer_platform_limits_netbsd.cc+= -D__LEGACY_PT_LWPINFO -D_KMEMUSER \
 	-I${NETBSDSRCDIR}/sys/external/bsd/libnv/dist

Reply via email to