* [Bug translator/10726] New: Getting wrong scope for inlined function
@ 2009-10-02 21:38 mjw at redhat dot com
2009-10-02 21:54 ` [Bug translator/10726] " jistone at redhat dot com
2009-10-02 21:57 ` jistone at redhat dot com
0 siblings, 2 replies; 3+ messages in thread
From: mjw at redhat dot com @ 2009-10-02 21:38 UTC (permalink / raw)
To: systemtap
In the following example (which doesn't currently work because we don't support
DW_AT_const_value yet), we get the scope wrong when probing func (inlined into
main with gcc -O2):
#include "sdt.h"
struct foo
{
const int i;
const long j;
};
typedef struct foo fooer;
static volatile int foobar;
static int bar (const int i, const long j)
{
return i * j;
}
static int func (int (*f) ())
{
const fooer baz = { .i = 2, .j = 21 };
STAP_PROBE (test, constvalues);
return f(baz.i, baz.j);
}
int
main (int argc, char *argv[], char *envp[])
{
return func (&bar) - 42;
}
This is because of the following logic in dwarf_var_expanding_visitor::getscopes:
// If the address is at the beginning of the scope_die, we can do a fast
// getscopes from there. Otherwise we need to look it up by address.
Dwarf_Addr entrypc;
if (q.dw.die_entrypc(scope_die, &entrypc) && entrypc == addr)
scopes = q.dw.getscopes(scope_die);
else
scopes = q.dw.getscopes(addr);
--
Summary: Getting wrong scope for inlined function
Product: systemtap
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: translator
AssignedTo: systemtap at sources dot redhat dot com
ReportedBy: mjw at redhat dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=10726
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug translator/10726] Getting wrong scope for inlined function
2009-10-02 21:38 [Bug translator/10726] New: Getting wrong scope for inlined function mjw at redhat dot com
@ 2009-10-02 21:54 ` jistone at redhat dot com
2009-10-02 21:57 ` jistone at redhat dot com
1 sibling, 0 replies; 3+ messages in thread
From: jistone at redhat dot com @ 2009-10-02 21:54 UTC (permalink / raw)
To: systemtap
------- Additional Comments From jistone at redhat dot com 2009-10-02 21:54 -------
(In reply to comment #0)
> This is because of the following logic [...]
That, and also because the scope_die for process.mark("constvalues") is for
main() instead of func().
I think all will be better if process.statement(PC) uses the inner-most
scope_die that contains the PC, rather than how it currently uses just the
subprogram die containing the PC.
--
http://sourceware.org/bugzilla/show_bug.cgi?id=10726
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug translator/10726] Getting wrong scope for inlined function
2009-10-02 21:38 [Bug translator/10726] New: Getting wrong scope for inlined function mjw at redhat dot com
2009-10-02 21:54 ` [Bug translator/10726] " jistone at redhat dot com
@ 2009-10-02 21:57 ` jistone at redhat dot com
1 sibling, 0 replies; 3+ messages in thread
From: jistone at redhat dot com @ 2009-10-02 21:57 UTC (permalink / raw)
To: systemtap
--
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|systemtap at sources dot |jistone at redhat dot com
|redhat dot com |
Status|NEW |ASSIGNED
http://sourceware.org/bugzilla/show_bug.cgi?id=10726
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-10-02 21:57 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-10-02 21:38 [Bug translator/10726] New: Getting wrong scope for inlined function mjw at redhat dot com
2009-10-02 21:54 ` [Bug translator/10726] " jistone at redhat dot com
2009-10-02 21:57 ` jistone at redhat dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).