From 1eed9afca1a408fb35e39b9e935011b7b8d3c7ba Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 7 Aug 2009 00:01:04 +0200 Subject: 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. --- testsuite/systemtap.context/backtrace.tcl | 4 ++-- testsuite/systemtap.exelib/ustack.tcl | 7 ++----- testsuite/systemtap.string/str_replace.exp | 4 +++- translate.cxx | 11 ++++++++++- 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 "; 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"; -- cgit