This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA/RFC] mips tracepoint: fix Bug 12013


On Wed, Dec 22, 2010 at 14:04, Kevin Buettner <kevinb@redhat.com> wrote:
> On Tue, 21 Dec 2010 23:58:29 +0800
> Hui Zhu <teawater@gmail.com> wrote:
>
>> Thanks. ?Do you think I can add a special name for these raw registers
>> then other part can use this raw register if need.
>
> I have a hunch that such an approach will result in an assertion
> failure in mips_print_registers_info() when a raw register name is
> used to attempt to print a register.
>
> The other problem with such an approach is that it again exposes the
> raw registers to the user. ?In this case, instead of using the name
> "sp", the user would instead have to use "raw-sp" (or some such).
> This is not completely horrible, but it's certainly not as nice as
> allowing the user to continue referring to standard nomenclature when
> using the trace machinery.
>
> You might consider implementing a new gdbarch method which provides a
> mapping from pseudo register numbers to raw register numbers. ?The
> trace machinery could use such a mapping to find the corresponding raw
> register(s) when presented with a pseudo register. ?I can think of
> several potential pitfalls with this approach, but I think the idea is
> worth exploring.
>
> Kevin
>

Thanks Kevin.  I will do it.

And I make a patch to add some comments from your mail to mips_register_name.
Wish it can help other people.

Please help me review it.

Thanks,
Hui

2010-12-22  Hui Zhu  <teawater@gmail.com>

	* mips-tedp.c (mips_register_name): Add comments.

---
 mips-tdep.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

--- a/mips-tdep.c
+++ b/mips-tdep.c
@@ -454,7 +454,12 @@ mips_register_name (struct gdbarch *gdba
   enum mips_abi abi = mips_abi (gdbarch);

   /* Map [gdbarch_num_regs .. 2*gdbarch_num_regs) onto the raw registers,
-     but then don't make the raw register names visible.  */
+     but then don't make the raw register names visible.
+     Because It is possible to debug a 64-bit device using a 32-bit programming
+     model.  In such instances, the raw registers are configured to be
+     64-bits wide, while the pseudo registers are configured to be 32-bits
+     wide.  The registers that the user sees - the pseudo registers - match
+     the user's expectations given the programming model being used.  */
   int rawnum = regno % gdbarch_num_regs (gdbarch);
   if (regno < gdbarch_num_regs (gdbarch))
     return "";


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]