From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10476 invoked by alias); 28 Mar 2011 10:34:36 -0000 Received: (qmail 10290 invoked by uid 22791); 28 Mar 2011 10:34:35 -0000 X-SWARE-Spam-Status: No, hits=-0.5 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO sourceware.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 28 Mar 2011 10:34:31 +0000 From: "mjw at redhat dot com" To: systemtap@sourceware.org Subject: [Bug translator/12609] New: Cannot see variable values in partial inlined functions with gcc 4.6 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: systemtap X-Bugzilla-Component: translator X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: mjw at redhat dot com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: systemtap at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Mon, 28 Mar 2011 10:34:00 -0000 Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2011-q1/txt/msg00536.txt.bz2 http://sourceware.org/bugzilla/show_bug.cgi?id=12609 Summary: Cannot see variable values in partial inlined functions with gcc 4.6 Product: systemtap Version: unspecified Status: NEW Severity: normal Priority: P2 Component: translator AssignedTo: systemtap@sourceware.org ReportedBy: mjw@redhat.com Take the following program foo.c: $ cat foo.c /* { dg-options "-g -O2" } */ extern void abort (void); volatile int v; #define V1 v++; v++; v++; v++; v++; v++; v++; v++; v++; v++; #define V2 V1 V1 V1 V1 V1 V1 V1 V1 V1 V1 static int foo (int x) { int a = 2 * x + 4; int b = 6; if (x < 30) { int c = 8; int d = 8 * x; return 6; } else { int e = 134; int f = 9 * x; V2 return v + 17; } } int main (void) { if (foo (v) > 10000) abort (); foo (70); return 0; } Compiled with gcc 4.5 -g -O2 -o foo.old foo.c systemtap is happy to probe the (inlined) foo and variables: $ stap -e 'probe process ("./foo.old").function("foo") { printf("%s@0x%x\n", pp(), uaddr()); log ($$vars) }' -c ./foo.old process("/tmp/foo.old").function("foo@/tmp/foo.c:8")@0x4004d0 x=0x0 a=0x4 b=0x6 process("/tmp/foo.old").function("foo@/tmp/foo.c:8")@0x4004d0 x=0x46 a=0x90 b=0x6 But compiled with gcc 4.6 (actually my test was with gcc trunk, but that is still fairly similar) -g -O2 -o foo.new foo.c systemtap is unable to find the value of most variables: $ stap -e 'probe process ("./foo.new").function("foo") { printf("%s@0x%x\n", pp(), uaddr()); log ($$vars) }' -c ./foo.new process("/tmp/foo.new").function("foo@/tmp/foo.c:8")@0x400aaa x=0x0 process("/tmp/foo.new").function("foo@/tmp/foo.c:8")@0x4004b0 a=? x=? b=? -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug.