Module Name:    src
Committed By:   kamil
Date:           Mon Sep 14 15:17:53 UTC 2020

Modified Files:
        src/tests/usr.bin/c++: t_tsan_data_race.sh
            t_tsan_heap_use_after_free.sh t_tsan_lock_order_inversion.sh
            t_tsan_locked_mutex_destroy.sh t_tsan_signal_errno.sh
            t_tsan_thread_leak.sh t_tsan_vptr_race.sh
        src/tests/usr.bin/cc: t_tsan_data_race.sh t_tsan_heap_use_after_free.sh
            t_tsan_lock_order_inversion.sh t_tsan_locked_mutex_destroy.sh
            t_tsan_signal_errno.sh t_tsan_thread_leak.sh

Log Message:
Enable TSan tests for GCC and >32bit address space environments


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/c++/t_tsan_data_race.sh \
    src/tests/usr.bin/c++/t_tsan_heap_use_after_free.sh \
    src/tests/usr.bin/c++/t_tsan_lock_order_inversion.sh \
    src/tests/usr.bin/c++/t_tsan_locked_mutex_destroy.sh \
    src/tests/usr.bin/c++/t_tsan_signal_errno.sh \
    src/tests/usr.bin/c++/t_tsan_thread_leak.sh \
    src/tests/usr.bin/c++/t_tsan_vptr_race.sh
cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/cc/t_tsan_data_race.sh \
    src/tests/usr.bin/cc/t_tsan_heap_use_after_free.sh \
    src/tests/usr.bin/cc/t_tsan_lock_order_inversion.sh \
    src/tests/usr.bin/cc/t_tsan_locked_mutex_destroy.sh \
    src/tests/usr.bin/cc/t_tsan_signal_errno.sh \
    src/tests/usr.bin/cc/t_tsan_thread_leak.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/usr.bin/c++/t_tsan_data_race.sh
diff -u src/tests/usr.bin/c++/t_tsan_data_race.sh:1.2 src/tests/usr.bin/c++/t_tsan_data_race.sh:1.3
--- src/tests/usr.bin/c++/t_tsan_data_race.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/c++/t_tsan_data_race.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v c++ >/dev/null 2>&1 && \
-		   ! echo __clang__ | c++ -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | c++ -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/c++/t_tsan_heap_use_after_free.sh
diff -u src/tests/usr.bin/c++/t_tsan_heap_use_after_free.sh:1.2 src/tests/usr.bin/c++/t_tsan_heap_use_after_free.sh:1.3
--- src/tests/usr.bin/c++/t_tsan_heap_use_after_free.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/c++/t_tsan_heap_use_after_free.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v c++ >/dev/null 2>&1 && \
-		   ! echo __clang__ | c++ -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | c++ -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/c++/t_tsan_lock_order_inversion.sh
diff -u src/tests/usr.bin/c++/t_tsan_lock_order_inversion.sh:1.2 src/tests/usr.bin/c++/t_tsan_lock_order_inversion.sh:1.3
--- src/tests/usr.bin/c++/t_tsan_lock_order_inversion.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/c++/t_tsan_lock_order_inversion.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v c++ >/dev/null 2>&1 && \
-		   ! echo __clang__ | c++ -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | c++ -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/c++/t_tsan_locked_mutex_destroy.sh
diff -u src/tests/usr.bin/c++/t_tsan_locked_mutex_destroy.sh:1.2 src/tests/usr.bin/c++/t_tsan_locked_mutex_destroy.sh:1.3
--- src/tests/usr.bin/c++/t_tsan_locked_mutex_destroy.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/c++/t_tsan_locked_mutex_destroy.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v c++ >/dev/null 2>&1 && \
-		   ! echo __clang__ | c++ -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | c++ -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/c++/t_tsan_signal_errno.sh
diff -u src/tests/usr.bin/c++/t_tsan_signal_errno.sh:1.2 src/tests/usr.bin/c++/t_tsan_signal_errno.sh:1.3
--- src/tests/usr.bin/c++/t_tsan_signal_errno.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/c++/t_tsan_signal_errno.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v c++ >/dev/null 2>&1 && \
-		   ! echo __clang__ | c++ -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | c++ -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/c++/t_tsan_thread_leak.sh
diff -u src/tests/usr.bin/c++/t_tsan_thread_leak.sh:1.2 src/tests/usr.bin/c++/t_tsan_thread_leak.sh:1.3
--- src/tests/usr.bin/c++/t_tsan_thread_leak.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/c++/t_tsan_thread_leak.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v c++ >/dev/null 2>&1 && \
-		   ! echo __clang__ | c++ -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | c++ -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/c++/t_tsan_vptr_race.sh
diff -u src/tests/usr.bin/c++/t_tsan_vptr_race.sh:1.2 src/tests/usr.bin/c++/t_tsan_vptr_race.sh:1.3
--- src/tests/usr.bin/c++/t_tsan_vptr_race.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/c++/t_tsan_vptr_race.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v c++ >/dev/null 2>&1 && \
-		   ! echo __clang__ | c++ -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | c++ -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }

Index: src/tests/usr.bin/cc/t_tsan_data_race.sh
diff -u src/tests/usr.bin/cc/t_tsan_data_race.sh:1.2 src/tests/usr.bin/cc/t_tsan_data_race.sh:1.3
--- src/tests/usr.bin/cc/t_tsan_data_race.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/cc/t_tsan_data_race.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v cc >/dev/null 2>&1 && \
-		   ! echo __clang__ | cc -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | cc -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/cc/t_tsan_heap_use_after_free.sh
diff -u src/tests/usr.bin/cc/t_tsan_heap_use_after_free.sh:1.2 src/tests/usr.bin/cc/t_tsan_heap_use_after_free.sh:1.3
--- src/tests/usr.bin/cc/t_tsan_heap_use_after_free.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/cc/t_tsan_heap_use_after_free.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v cc >/dev/null 2>&1 && \
-		   ! echo __clang__ | cc -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | cc -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/cc/t_tsan_lock_order_inversion.sh
diff -u src/tests/usr.bin/cc/t_tsan_lock_order_inversion.sh:1.2 src/tests/usr.bin/cc/t_tsan_lock_order_inversion.sh:1.3
--- src/tests/usr.bin/cc/t_tsan_lock_order_inversion.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/cc/t_tsan_lock_order_inversion.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v cc >/dev/null 2>&1 && \
-		   ! echo __clang__ | cc -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | cc -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/cc/t_tsan_locked_mutex_destroy.sh
diff -u src/tests/usr.bin/cc/t_tsan_locked_mutex_destroy.sh:1.2 src/tests/usr.bin/cc/t_tsan_locked_mutex_destroy.sh:1.3
--- src/tests/usr.bin/cc/t_tsan_locked_mutex_destroy.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/cc/t_tsan_locked_mutex_destroy.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v cc >/dev/null 2>&1 && \
-		   ! echo __clang__ | cc -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | cc -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/cc/t_tsan_signal_errno.sh
diff -u src/tests/usr.bin/cc/t_tsan_signal_errno.sh:1.2 src/tests/usr.bin/cc/t_tsan_signal_errno.sh:1.3
--- src/tests/usr.bin/cc/t_tsan_signal_errno.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/cc/t_tsan_signal_errno.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v cc >/dev/null 2>&1 && \
-		   ! echo __clang__ | cc -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | cc -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }
Index: src/tests/usr.bin/cc/t_tsan_thread_leak.sh
diff -u src/tests/usr.bin/cc/t_tsan_thread_leak.sh:1.2 src/tests/usr.bin/cc/t_tsan_thread_leak.sh:1.3
--- src/tests/usr.bin/cc/t_tsan_thread_leak.sh:1.2	Fri Aug 23 06:39:54 2019
+++ src/tests/usr.bin/cc/t_tsan_thread_leak.sh	Mon Sep 14 15:17:53 2020
@@ -29,12 +29,16 @@
 test_target()
 {
 	SUPPORT='n'
-	if uname -m | grep -q "amd64" && command -v cc >/dev/null 2>&1 && \
-		   ! echo __clang__ | cc -E - | grep -q __clang__; then
-		# only clang with major version newer than 7 is supported
-		CLANG_MAJOR=`echo __clang_major__ | cc -E - | grep -o '^[[:digit:]]'`
-		if [ "$CLANG_MAJOR" -ge "7" ]; then
-			SUPPORT='y'
+	# Detect address space larger than 32 bits
+	maxaddress=`sysctl vm.maxaddress|awk '{print $3}'`
+	if [ $maxaddress -gt 4294967295 ]; then
+		if command -v cc >/dev/null 2>&1; then
+			if ! echo __clang__ | cc -E - | grep -q __clang__; then
+				SUPPORT='y'
+			elif ! cc -v 2>&1 | awk '/gcc version/{print $3}' | \
+				awk -F '.' '($0+0) > 9 {exit 1}'; then
+				SUPPORT='y'
+			fi
 		fi
 	fi
 }

Reply via email to