summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xdtrace.in14
-rw-r--r--testsuite/systemtap.base/dtrace.exp23
2 files changed, 34 insertions, 3 deletions
diff --git a/dtrace.in b/dtrace.in
index 990d62fe..aea1ef74 100755
--- a/dtrace.in
+++ b/dtrace.in
@@ -137,6 +137,7 @@ i = 1
build_header = False
build_source = False
add_typedefs = False
+use_cpp = False
h_ext = '.h'
filename = ""
while (i < len (sys.argv)):
@@ -146,6 +147,8 @@ while (i < len (sys.argv)):
elif (sys.argv[i] == "-s"):
i += 1
s_filename = sys.argv[i]
+ elif (sys.argv[i] == "-C"):
+ use_cpp = True
elif (sys.argv[i] == "-h"):
build_header = True
elif (sys.argv[i] == "-G"):
@@ -159,6 +162,14 @@ if (build_header == False and build_source == False):
usage()
sys.exit(1)
+if (s_filename != "" and use_cpp):
+ (d,fn) = mkstemp(suffix=".d")
+ retcode = call(["cpp", s_filename, fn])
+ if (retcode != 0):
+ print "\"cpp s_filename\" failed"
+ usage()
+ sys.exit(1)
+ s_filename = fn
if (filename == ""):
if (s_filename != ""):
(filename,ext) = os.path.splitext(s_filename)
@@ -181,3 +192,6 @@ elif (build_source):
f.close()
call(["gcc", "-fPIC", "-I.", "-I@prefix@/include", "-g", "-c", fn, "-o", filename + ".o"], shell=False)
os.remove(fn)
+if (use_cpp):
+ os.remove(s_filename)
+
diff --git a/testsuite/systemtap.base/dtrace.exp b/testsuite/systemtap.base/dtrace.exp
index 11a4b608..35a5acbf 100644
--- a/testsuite/systemtap.base/dtrace.exp
+++ b/testsuite/systemtap.base/dtrace.exp
@@ -5,7 +5,7 @@ set test "dtrace"
if {[installtest_p]} {
set dtrace $env(SYSTEMTAP_PATH)/dtrace
} else {
- set dtrace $srcdir/../dtrace
+ set dtrace ../dtrace
}
exec mkdir /tmp/dtrace
@@ -13,9 +13,12 @@ exec mkdir /tmp/dtrace
set dpath "/tmp/dtrace/test.d"
set fp [open $dpath "w"]
puts $fp "
+#define INT16 short
+#define INT32 int
+
provider tstsyscall
{
- probe test(short arg1, int arg2, int arg3, int arg4, struct astruct arg5)
+ probe test(INT16 arg1, INT32 arg2, INT32 arg3, INT32 arg4, struct astruct arg5)
}
"
close $fp
@@ -57,7 +60,7 @@ if {[file exists XXX]} then {
} else {
fail "dtrace -h -o XXX"
}
-exec rm -f XXX.h
+exec rm -f XXX
verbose -log "$dtrace -G -s $dpath -o /tmp/XXX.o"
exec $dtrace -G -s $dpath -o /tmp/XXX.o
@@ -113,6 +116,20 @@ if {[file exists /tmp/dtrace/test.h]} then {
}
exec rm -f /tmp/dtrace/test.o
+set ok 0
+verbose -log "$dtrace -C -h -s $dpath -o XXX.h"
+exec $dtrace -C -h -s $dpath -o XXX.h
+spawn cat XXX.h
+expect {
+ "short arg1, int arg2, int arg3, int arg4" {incr ok}
+}
+if { $ok != 0} {
+ pass "dtrace -C -h -o XXX.h"
+} else {
+ fail "dtrace -C -h -o XXX.h"
+}
+exec rm -f XXX.h
+
exec /bin/rm -r /tmp/dtrace
# -----------------------------------------------------------------