From: Xavier Roirand <roirand@adacore.com>
To: Yao Qi <qiyaoltc@gmail.com>
Cc: GDB Patches <gdb-patches@sourceware.org>,
Joel Brobecker <brobecker@adacore.com>
Subject: Re: [RFA] Fix frame argument printing when using auto language mode
Date: Tue, 20 Feb 2018 16:28:00 -0000 [thread overview]
Message-ID: <fc85a90b-93b3-0b75-6a37-dc58be650d80@adacore.com> (raw)
In-Reply-To: <CAH=s-PM+9dGs12pLNDZTcr69tdkTMDdyFhAwhHHL037vkvqCKQ@mail.gmail.com>
Le 2/20/18 à 4:15 PM, Yao Qi a écrit :
> On Mon, Feb 19, 2018 at 12:52 PM, Xavier Roirand <roirand@adacore.com> wrote:
>>
>> The problem is that GDB prints the S parameter in the pck.call_me Ada
>> function using the current language, so the C one, because the program
>> is stopped in a C function, whereas it should use the pck.call_me frame
>> one. This behavior is ok when user manually changes the language but it's
>> not the right one when language is auto.
>
> Agreed, GDB should use per-frame language instead of global current
> language. However, instead of switching global variable current_language,
> why don't we pass the per-frame language down to la_val_print? In
> ada-valprint.c:ada_val_print,
>
> ada_val_print_1 (type, embedded_offset, address,
> stream, recurse, val, options,
> current_language);
> ^^^^^^^^^^^^^^^^^
>
> why don't pass language for ada here?
>
Hello Yao,
It was my first idea, but it would imply a consequent amount of work
because when ada_val_print_1 is called, the stack is the following one:
#0 ada_val_print_1
#1 ada_val_print
#2 val_print (got the language of the frame arg)
So if we want to pass the per-frame language down to ada_val_print_1
then in the generic val_print function, we have to change:
language->la_val_print (type, embedded_offset, address,
stream, recurse, val,
&local_opts);
to something like:
language->la_val_print (type, embedded_offset, address,
stream, recurse, val,
&local_opts, language);
^^^^^^^^
Fix me if I'm wrong but it means that <language>_val_print functions for
all the supported GDB languages have to be modified in order to support
the language parameter.
Regards.
next prev parent reply other threads:[~2018-02-20 16:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-19 12:52 Xavier Roirand
2018-02-20 15:15 ` Yao Qi
2018-02-20 16:28 ` Xavier Roirand [this message]
2018-02-20 16:48 ` Yao Qi
2018-02-21 16:12 ` Xavier Roirand
2018-02-22 3:38 ` Joel Brobecker
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=fc85a90b-93b3-0b75-6a37-dc58be650d80@adacore.com \
--to=roirand@adacore.com \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=qiyaoltc@gmail.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).