regression for nodwarf testing on i686+gcc 3.x
Wenji Huang
wenji.huang@oracle.com
Tue Aug 26 04:47:00 GMT 2008
Addition:
This problem also happens in any environments if we enable -P option in
stap command.
Regards,
Wenji
Wenji Huang wrote:
> 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
More information about the Systemtap
mailing list