summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2009-08-07 00:01:04 +0200
committerMark Wielaard <mjw@redhat.com>2009-08-07 00:04:09 +0200
commit1eed9afca1a408fb35e39b9e935011b7b8d3c7ba (patch)
tree9698e2ba42b634f7edc5f8b21239a9589b9b703b
parent696ec1549fcd846f9736a9c96e25f6ba555cd3e4 (diff)
downloadsystemtap-steved-1eed9afca1a408fb35e39b9e935011b7b8d3c7ba.tar.gz
systemtap-steved-1eed9afca1a408fb35e39b9e935011b7b8d3c7ba.tar.xz
systemtap-steved-1eed9afca1a408fb35e39b9e935011b7b8d3c7ba.zip
PR10486 Raise default MAXSTRINGLEN.
* translate.cxx (translate_pass): Raise MAXSTRINGLEN to 256 for 32bit arches and to 512 for 64bit arches. * testsuite/systemtap.context/backtrace.tcl: Don't set MAXSTRINGLEN. * testsuite/systemtap.exelib/ustack.tcl: Likewise. * testsuite/systemtap.string/str_replace.exp: Explicitly set MAXSTRINGLEN.
-rw-r--r--testsuite/systemtap.context/backtrace.tcl4
-rw-r--r--testsuite/systemtap.exelib/ustack.tcl7
-rw-r--r--testsuite/systemtap.string/str_replace.exp4
-rw-r--r--translate.cxx11
4 files changed, 17 insertions, 9 deletions
diff --git a/testsuite/systemtap.context/backtrace.tcl b/testsuite/systemtap.context/backtrace.tcl
index 975e6c4d..d401d89f 100644
--- a/testsuite/systemtap.context/backtrace.tcl
+++ b/testsuite/systemtap.context/backtrace.tcl
@@ -5,8 +5,8 @@ set m4 0
set m5 0
set m6 0
-#spawn stap -d kernel -d systemtap_test_module1 -DMAXSTRINGLEN=256 $srcdir/$subdir/backtrace.stp
-spawn stap -DMAXSTRINGLEN=256 $srcdir/$subdir/backtrace.stp
+#spawn stap -d kernel -d systemtap_test_module1 $srcdir/$subdir/backtrace.stp
+spawn stap $srcdir/$subdir/backtrace.stp
#exp_internal 1
expect {
-timeout 60
diff --git a/testsuite/systemtap.exelib/ustack.tcl b/testsuite/systemtap.exelib/ustack.tcl
index a670213a..257d0b9f 100644
--- a/testsuite/systemtap.exelib/ustack.tcl
+++ b/testsuite/systemtap.exelib/ustack.tcl
@@ -31,11 +31,8 @@ set main 0
set main_func 0
set lib_main 0
set lib_func 0
-# Needs extra space since on 64bit the last ubacktrace string is
-# 7 entries * (16 hex + 2 for 0x + 1 space) = 133 chars.
-# Default MAXSTRINGLEN is 128 chars.
-send_log "Running: stap -DMAXSTRINGLEN=133 $srcdir/$subdir/ustack.stp $testexe $testlib -c $testexe\n"
-spawn stap -DMAXSTRINGLEN=133 $srcdir/$subdir/ustack.stp $testexe $testlib -c $testexe
+send_log "Running: stap $srcdir/$subdir/ustack.stp $testexe $testlib -c $testexe\n"
+spawn stap $srcdir/$subdir/ustack.stp $testexe $testlib -c $testexe
wait
expect {
diff --git a/testsuite/systemtap.string/str_replace.exp b/testsuite/systemtap.string/str_replace.exp
index 4eedf1c6..e6526ef9 100644
--- a/testsuite/systemtap.string/str_replace.exp
+++ b/testsuite/systemtap.string/str_replace.exp
@@ -10,5 +10,7 @@ Result = hello tap
Result = hello system tap
Result =
Result = }
-stap_run2 $srcdir/$subdir/$test.stp
+
+# Expect strings to be cut off if they are too long.
+stap_run2 $srcdir/$subdir/$test.stp -DMAXSTRINGLEN=128
diff --git a/translate.cxx b/translate.cxx
index 4a6a10b5..1ddc1778 100644
--- a/translate.cxx
+++ b/translate.cxx
@@ -5106,9 +5106,18 @@ translate_pass (systemtap_session& s)
s.op->newline() << "#ifndef MAXNESTING";
s.op->newline() << "#define MAXNESTING 10";
s.op->newline() << "#endif";
+
+ // Strings are used for storing backtraces, they are larger on 64bit
+ // so raise the size on 64bit architectures. PR10486
+ s.op->newline() << "#include <asm/types.h>";
s.op->newline() << "#ifndef MAXSTRINGLEN";
- s.op->newline() << "#define MAXSTRINGLEN 128";
+ s.op->newline() << "#if BITS_PER_LONG == 32";
+ s.op->newline() << "#define MAXSTRINGLEN 256";
+ s.op->newline() << "#else";
+ s.op->newline() << "#define MAXSTRINGLEN 512";
+ s.op->newline() << "#endif";
s.op->newline() << "#endif";
+
s.op->newline() << "#ifndef MAXACTION";
s.op->newline() << "#define MAXACTION 1000";
s.op->newline() << "#endif";