public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Carl Love <cel@us.ibm.com>
To: Tom Tromey <tom@tromey.com>,
	Carl Love via Gdb-patches <gdb-patches@sourceware.org>
Cc: Ulrich.Weigand@de.ibm.com, Tom de Vries <tdevries@suse.de>,
	cel@us.ibm.com
Subject: Re: [PATCH] Fix gdb.ada/O2_float_param.exp for PowerPC
Date: Fri, 04 Aug 2023 15:56:09 -0700	[thread overview]
Message-ID: <d58624ffc1f0e85f18f4ff4750652f7c6decbc72.camel@us.ibm.com> (raw)
In-Reply-To: <877cqabxo1.fsf@tromey.com>

On Fri, 2023-08-04 at 10:05 -0600, Tom Tromey wrote:
<snip>
> 
> Carl> +    # Note, on PowerPC the output line looks like:
> Carl> +    # #0  0x0000000010010a88 in callee.increment (
> val=val@entry=99.0, msg=...)
> Carl> +    # Not all architectures print the address.
> 
> I don't think this is architecture-dependent.  Instead, something
> else
> is going wrong here.  Why exactly is it printing the address?  The
> code
> here looks like:
> 
>     if (opts.addressprint)
>       if (!sal.symtab
> 	  || frame_show_address (frame, sal)
> 	  || print_what == LOC_AND_ADDRESS)
> 
> Could it maybe be different inlining decisions?
> Maybe seeing which of those clauses is true would show the answer.
> 
> I don't mind working around differences like this by patching the
> tests,
> but I would like the real cause to be known and put into the comment.

OK, I was able to get Ada installed on my X86 laptop so I could put in
debug prints on PowerPC and X86-64.  Thanks for the help identifying
where the print occurs.  

The function frame_show_address (frame, sal) returns true on PowerPC. 
The return statement for frame_show_address (frame, sal) is

   return get_frame_pc (frame) != sal.pc || !sal.is_stmt;

On PowerPC sal.is_stmt is false for this test but it is true on X86-64.

The result is the code you gave above, from print_frame in gdb/stack.c,
evaluates to true and the address is printed on PowerPC.

I updated the comment in the patch as:

+    # If sal.is_stmt is false for the frame, function frame_show_address will
+    # return true and function print_frame in gdb/stack.c will print the
+    # address.  In this case, the output will look something like:
+    # #0  0x0000000010010a88 in callee.increment (val=val@entry=99.0, msg=...)
+    # This situation currently occurs on PowerPC but not on X86-64.
+    # The re string needs to account for the possibility that the address
+    # will be printed.
     set re \
-	"#0\\s+callee\\.increment \\(val(=val@entry)?=99\\.0, msg=\\.\\.\\.\\).*"
+	"#0.*callee\\.increment \\(val(=val@entry)?=99\\.0, msg=\\.\\.\\.\\).*"
     set re_different_entry_val \

to describe when the address is printed.  I noted that the address is
printed when sal.is_stmt is false as is currently the case on PowerPC. 

I will post version two of the patch for review.

Thanks for the help on this patch.

                                 Carl 


  reply	other threads:[~2023-08-04 22:56 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-04 15:21 Carl Love
2023-08-04 16:05 ` Tom Tromey
2023-08-04 22:56   ` Carl Love [this message]
2023-08-10 16:13     ` Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d58624ffc1f0e85f18f4ff4750652f7c6decbc72.camel@us.ibm.com \
    --to=cel@us.ibm.com \
    --cc=Ulrich.Weigand@de.ibm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=tdevries@suse.de \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).