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
next prev parent 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).