RE: [Patch, microblaze]: Fix for remote G Packet message too long error for baremetal.

Ajit Kumar Agarwal
2014-06-30T16:29:14Z

-----Original Message-----
From: Pedro Alves [mailto:palves@redhat.com]
Sent: Monday, June 30, 2014 4:53 PM
To: Ajit Kumar Agarwal
Cc: gdb-patches@sourceware.org; Michael Eager; Vinod Kathail; Vidhumouli Hunsigida; Nagaraju Mekala
Subject: Re: [Patch, microblaze]: Fix for remote G Packet message too long error for baremetal.

On 06/30/2014 12:13 PM, Ajit Kumar Agarwal wrote:
> -----Original Message-----
> From: Pedro Alves [mailto:palves@redhat.com]
> Sent: Monday, June 30, 2014 4:25 PM
> To: Ajit Kumar Agarwal
> Cc: gdb-patches@sourceware.org; Michael Eager; Vinod Kathail;
> Vidhumouli Hunsigida; Nagaraju Mekala
> Subject: Re: [Patch, microblaze]: Fix for remote G Packet message too long error for baremetal.
>
> On 06/30/2014 11:32 AM, Ajit Kumar Agarwal wrote:
>> Signed-off-by:Ajit Agarwal ajitkum@xilinx.com
>>
>>>> In this case is it correct to say
>>>> If (tdesc == NULL)
>>>> tdesc = tdesc_microblaze;
>>>>
>>>> instead of tdesc_microblaze_with_stack_protect?
>>>>>> Yes.
>> Instead of tdesc_microblaze_with_stack_protect if I use tdesc_microblaze the "G Packet message is too long" error is not resolved.
>
>>> Then it sounds like the G packet size guesses you're adding aren't actually triggering. Why?
>
> I have checked the guesses are actually triggering as it works fine
> with backward compatibility with the Designs there is no stack-protect registers. For the Design that has the Stack protect register, it reports the message " G packet too long ".

>>If the G guess is triggering OK, and so GDB picks the description with the stack protect registers based on the G packet size, why would the default target description matter at all? If it >>does, then something sounds broken.

In Microblaze Port the gdbarch_info has tdesc always set to NULL. Thus the gdbarch_init doesn't populates the register info based feature target description. Though the microblaze_register_g_packet_guesses is called by gdbarch_init and register the guesses, but the gdbarch_info.tdesc == NULL always and features target description info is populated based on default target description.

>>What are you doing different from the other ports that use this mechanism?

In Microblaze port as compared to other architecture port lacking the function microblaze_read_description which sets the tdesc and the architecture set up based the Linux Kernel and Ptrace parameters. The other architecture like ARM and MIPS has arm_read_description and arm_linux_read_description which sets the tdesc info current()->Process.

>>Please debug this a bit further.

--
Pedro Alves