[DTrace-devel] [PATCH] test: Add test for option "strip"

eugene.loh at oracle.com eugene.loh at oracle.com
Thu Mar 9 22:09:18 UTC 2023


From: Eugene Loh <eugene.loh at oracle.com>

Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
 test/unittest/options/tst.strip.sh | 89 ++++++++++++++++++++++++++++++
 1 file changed, 89 insertions(+)
 create mode 100755 test/unittest/options/tst.strip.sh

diff --git a/test/unittest/options/tst.strip.sh b/test/unittest/options/tst.strip.sh
new file mode 100755
index 00000000..2378b1a8
--- /dev/null
+++ b/test/unittest/options/tst.strip.sh
@@ -0,0 +1,89 @@
+#!/bin/bash
+#
+# Oracle Linux DTrace.
+# Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at
+# http://oss.oracle.com/licenses/upl.
+#
+
+dtrace=$1
+CC=/usr/bin/gcc
+CFLAGS=
+
+DIRNAME="$tmpdir/strip.$$.$RANDOM"
+mkdir -p $DIRNAME
+cd $DIRNAME
+
+# set up the prov.d file and compile
+
+cat > prov.d <<EOF
+provider test_prov {
+	probe go();
+};
+EOF
+
+$dtrace -h -s prov.d
+if [ $? -ne 0 ]; then
+	echo "failed to generate header file" >& 2
+	exit 1
+fi
+
+# set up the test.c file and compile
+
+cat > test.c <<EOF
+#include <sys/types.h>
+#include "prov.h"
+int main(int argc, char **argv)
+{
+	TEST_PROV_GO();
+	return 0;
+}
+EOF
+
+${CC} ${CFLAGS} -c test.c
+if [ $? -ne 0 ]; then
+	echo "failed to compile test.c" >& 2
+	exit 1
+fi
+
+# link with and without -xstrip, dumping the DOF section
+
+objdump="objdump --full-contents --section=.SUNW_dof prov.o"
+
+$dtrace -G -xstrip -s prov.d test.o
+if [ $? -ne 0 ]; then
+	echo "failed to create DOF (stripped)" >& 2
+	exit 1
+fi
+$objdump >& out.stripped.txt
+
+$dtrace -G -s prov.d test.o
+if [ $? -ne 0 ]; then
+	echo "failed to create DOF" >& 2
+	exit 1
+fi
+$objdump >& out.default.txt
+
+# Check results.  One can imagine a more stringent check -- like
+# seeing if the string "Oracle D 2.0" appears in the default case
+# but not in the stripped case -- but here we settle for the stripped
+# case simply being smaller than the default case.
+
+nbytes_stripped=`wc -c out.stripped.txt | awk '{print $1}'`
+nbytes_default=`wc -c out.default.txt | awk '{print $1}'`
+
+echo "number of bytes:"
+echo "    stripped: $nbytes_stripped"
+echo "    default: $nbytes_default"
+
+if [ $nbytes_stripped -eq 0 -o $nbytes_default -eq 0 ]; then
+	echo ERROR: a number of bytes is zero
+	exit 1
+fi
+if [ $nbytes_stripped -ge $nbytes_default ]; then
+	echo ERROR: stripped is greater or equal to default
+	exit 1
+fi
+
+echo success: stripped is smaller than default
+exit 0
-- 
2.18.4




More information about the DTrace-devel mailing list