This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
RE: [Patch, microblaze]: Fix for remote G Packet message too long error for baremetal.
- From: Ajit Kumar Agarwal <ajit dot kumar dot agarwal at xilinx dot com>
- To: Michael Eager <eager at eagercon dot com>, Pedro Alves <palves at redhat dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>, Vinod Kathail <vinodk at xilinx dot com>, Vidhumouli Hunsigida <vidhum at xilinx dot com>, "Nagaraju Mekala" <nmekala at xilinx dot com>
- Date: Tue, 1 Jul 2014 16:06:15 +0000
- Subject: RE: [Patch, microblaze]: Fix for remote G Packet message too long error for baremetal.
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=pass (sender IP is 149.199.60.83) smtp dot mailfrom=ajit dot kumar dot agarwal at xilinx dot com;
- References: <fe2ea02f-37b9-4ebe-acd4-6d1192c26358 at BN1AFFO11FD059 dot protection dot gbl> <53A023B1 dot 5000105 at redhat dot com> <859f27cb-8c46-46c1-9625-7287c60f3ae9 at BY2FFO11FD007 dot protection dot gbl> <53A1ABF0 dot 9080004 at redhat dot com> <74281fd5-518a-4d7f-977a-6fa1320f6db9 at BY2FFO11FD016 dot protection dot gbl> <53A1B61F dot 9080803 at redhat dot com> <736c2e0d-6ff1-40c3-8120-dc6f5d91e6b1 at BL2FFO11FD052 dot protection dot gbl> <53A8290A dot 1050701 at redhat dot com> <ffd28f14-2c96-471f-a2c8-4f35b010727d at BN1AFFO11FD006 dot protection dot gbl> <53A94147 dot 4050700 at redhat dot com> <57ebe4b0-83eb-4208-9778-472ecf0048d4 at BY2FFO11FD038 dot protection dot gbl> <53A96993 dot 5040804 at redhat dot com> <109c35c1-e2f6-430f-9235-c6c82a93daf1 at BL2FFO11FD009 dot protection dot gbl> <53A97330 dot 4080708 at redhat dot com> <aff81eb4-90b2-4509-8790-6fcbede578b1 at BL2FFO11FD005 dot protection dot gbl> <53B17884 dot 1060202 at eagercon dot com>
-----Original Message-----
From: Michael Eager [mailto:eager@eagercon.com]
Sent: Monday, June 30, 2014 8:18 PM
To: Ajit Kumar Agarwal; Pedro Alves
Cc: gdb-patches@sourceware.org; Vinod Kathail; Vidhumouli Hunsigida; Nagaraju Mekala
Subject: Re: [Patch, microblaze]: Fix for remote G Packet message too long error for baremetal.
On 06/30/14 03:32, Ajit Kumar Agarwal wrote:
> Based on the feedback, updated the patch with the review comments.
>>How has this been tested? Please be specific.
The patch has been tested with in-house applications with the older and newer designs for tar remote localhost:1234( 1234 port number) command.
>
> [Patch, microblaze]: Fix for remote G Packet message too long error for baremetal.
>
> Prior to version MicroBlaze v8.10.a,EDK 13.1, XMD's gdbserver stub returned 57
> registers in response to GDB's G request. Starting with version MicroBlaze
> v8.10.a, EDK 13.1, XMD added the slr and shr register, for a count of 59
> registers. This patch adds these registers to the expected G response. This patch
> fixes the above problem for baremetal and also supports the backward compatibility.
>
> ChangeLog:
> 2014-06-26 Ajit Agarwal <ajitkum@xilinx.com>
>
> * microblaze-tdep.c (microblaze_register_names): Add
> the rshr and rslr register names.
> (microblaze_gdbarch_init): Use of tdesc_has_registers.
> Use of tdesc_find_feature. Use of tdesc_data_alloc.
> Use of tdesc_numbered_register. Use of
> microblaze_register_g_packet_guesses. Use of
> tdesc_use_registers. Use of set_gdbarch_register_type.
> (microblaze_register_g_packet_guesses): New.
> * microblaze-tdep.h (microblaze_reg_num): Add
> field MICROBLAZE_SLR_REGNUM MICROBLAZE_SHR_REGNUM
> MICROBLAZE_NUM_REGS and MICROBLAZE_NUM_CORE_REGS.
> (microblaze_frame_cache): Use of MICROBLAZE_NUM_REGS.
> * features/microblaze-core.xml: New file.
> * features/microblaze-stack-protect.xml: New file.
> * features/microblaze-with-stack-protect.c: New file.
> * features/microblaze-with-stack-protect.xml: New file.
> * features/microblaze.xml: New file.
> * features/microblaze.c: New file.
> * features/Makefile (microblaze-with-stack-protect): Add
> microblaze-with-stack-protect microblaze and
> microblaze-expedite.
> * regformats/microblaze-with-stack-protect.dat: New file.
> * regformats/microblaze.dat: New file.
> * doc/gdb.texinfo (MicroBlaze Features): New.
>
> 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.
> The patch is unchanged with tdesc_microblaze_stack_protect.
>
> Thanks & Regards
> Ajit
> -----Original Message-----
> From: Pedro Alves [mailto:palves@redhat.com]
> Sent: Tuesday, June 24, 2014 6:17 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/24/2014 01:31 PM, Ajit Kumar Agarwal wrote:
>
>>>
>>> The default is choosen to assume stack protect to make compatible with the handling of stack protect registers in XMD Debugger.
>>
>>>> But you've already added the G packet size guess for that.
>>
>> In this case is it correct to say
>> If (tdesc == NULL)
>> tdesc = tdesc_microblaze;
>>
>> instead of tdesc_microblaze_with_stack_protect?
>
> Yes.
>
>>
>>>> -
>>>> + if (tdesc_data != NULL)
>>>> + {
>>>> + tdesc_use_registers (gdbarch, tdesc, tdesc_data);
>>>> + set_gdbarch_register_type (gdbarch,
>>>> + microblaze_register_type);
>>>
>>>>> Hmm, why is this set_gdbarch_register_type call necessary?
>>>
>>> /* Override tdesc_register_type to adjust the types of VFP
>>> registers for NEON. */
>>> This is done for arm target to set the different type for VFP
>>> registers for Neon with Boolean flags is set before this call for
>>> VFP registers. In the microblaze target it's not required for
>>> special case of stack protect as
>> the microblaze_register_type always return builtin_int for these stack protect registers.
>>
>> Right.
>
> Actually, not right... This comment doesn't really appear to be correct:
>
>> In the microblaze target it's not required for special case of stack
>> protect as the microblaze_register_type always return builtin_int for these stack protect registers.
>
>
> static struct type *
> microblaze_register_type (struct gdbarch *gdbarch, int regnum) {
> if (regnum == MICROBLAZE_SP_REGNUM)
> return builtin_type (gdbarch)->builtin_data_ptr;
>
> if (regnum == MICROBLAZE_PC_REGNUM)
> return builtin_type (gdbarch)->builtin_func_ptr;
>
> return builtin_type (gdbarch)->builtin_int; }
>
> MICROBLAZE_SP_REGNUM and MICROBLAZE_PC_REGNUM clearly aren't builtin_int...
>
> Doesn't your patch change the output of "ptype $sp" and "ptype $pc" ?
>
> That points at something missing in the target description:
>
>> +<!DOCTYPE feature SYSTEM "gdb-target.dtd"> <feature
>> +name="org.gnu.gdb.microblaze.core">
>> + <reg name="r1" bitsize="32"/>
> ...
>> + <reg name="rpc" bitsize="32"/>
>
> AFAICS, SP is "r1", and PC is "rpc". These should be marked with type="data_ptr" and type="code_ptr" .
>
>>
>>>>> As I mentioned before, please don't forget to document the new target features in the manual.
>>>
>>> Would you mind in explaining which manual need to be changed for the new target.
>>
>>>> The GDB manual, gdb/doc/gdb.texinfo, describes all the standard XML target features. See the "Standard Target Features" node, and add a new subsection for MicroBlaze.
>>
>> Thanks !! I will add subsection for Microblaze target.
>
> Thank you.
>
> --
> Pedro Alves
>
--
Michael Eager eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077