This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

regression for nodwarf testing on i686+gcc 3.x


Hi,

There is regression for nodwarf testing which only happens on i686
with gcc 3.x. It will result in failure of semok/nodwf2/3/5/6/7.stp.
Problem can be simply reproduced :

stap -p2 --ignore-vmlinux --kmap=/proc/kallsyms -vve 'probe kernel.function("sys_open"){}'
SystemTap translator/driver (version 0.7.1/0.131 git branch master, commit 67732804)
Copyright (C) 2005-2008 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
Session arch: i686 release: 2.6.27-rc4
Created temporary directory "/tmp/stapE24aR2"
Searched '/usr/local/share/systemtap/tapset/i686/*.stp', found 2
Searched '/usr/local/share/systemtap/tapset/*.stp', found 41
Pass 1: parsed user script and 43 library script(s) in 380usr/130sys/508real ms.
semantic error: could not find prologue-end for probed function 'sys_open'
semantic error: no match while resolving probe point kernel.function("sys_open")
semantic error: no probes found
Pass 2: analyzed script: 0 probe(s), 0 function(s), 0 embed(s), 0 global(s) in 80usr/80sys/168real ms.
Pass 2: analysis failed. Try again with more '-v' (verbose) options.
Running rm -rf /tmp/stapE24aR2


So no suitable probe point caught in searching. After some investigation, found that systemtap default sets enable-prologue in i686+ gcc <4 if users don't override the option. And this will cause semantic error in query_func_info.

Saw there were some discussions on this function. And I had the work around to solve the regression.

diff --git a/tapsets.cxx b/tapsets.cxx
index 289c5fa..79fe6a2 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -3449,7 +3449,7 @@ query_func_info (Dwarf_Addr entrypc,
if (q->sess.prologue_searching
&& !q->has_statement_str && !q->has_statement_num) // PR 2608
{
- if (fi.prologue_end == 0)
+ if (fi.prologue_end == 0 && !q->sess.ignore_vmlinux && !q->sess.ignore_dwarf)
throw semantic_error("could not find prologue-end "
"for probed function '" + fi.name + "'");
query_statement (fi.name, fi.decl_file, fi.decl_line,



Regards, Wenji


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]