mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 12:03:41 +08:00
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-07-02 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
This commit is contained in:
parent
5731949094
commit
164224e96c
@ -1,3 +1,29 @@
|
||||
2014-07-19 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): Added.
|
||||
|
||||
2014-07-18 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* exec.c (exec_ops): Now static.
|
||||
|
@ -39104,6 +39104,7 @@ registers using the capitalization used in the description.
|
||||
* AArch64 Features::
|
||||
* ARM Features::
|
||||
* i386 Features::
|
||||
* MicroBlaze Features::
|
||||
* MIPS Features::
|
||||
* M68K Features::
|
||||
* Nios II Features::
|
||||
@ -39254,6 +39255,19 @@ describe the additional @sc{zmm} registers:
|
||||
@samp{zmm16h} through @samp{zmm31h}, only valid for amd64.
|
||||
@end itemize
|
||||
|
||||
@node MicroBlaze Features
|
||||
@subsection MicroBlaze Features
|
||||
@cindex target descriptions, MicroBlaze features
|
||||
|
||||
The @samp{org.gnu.gdb.microblaze.core} feature is required for MicroBlaze
|
||||
targets. It should contain registers @samp{r0} through @samp{r31},
|
||||
@samp{rpc}, @samp{rmsr}, @samp{rear}, @samp{resr}, @samp{rfsr}, @samp{rbtr},
|
||||
@samp{rpvr}, @samp{rpvr1} through @samp{rpvr11}, @samp{redr}, @samp{rpid},
|
||||
@samp{rzpr}, @samp{rtlbx}, @samp{rtlbsx}, @samp{rtlblo}, and @samp{rtlbhi}.
|
||||
|
||||
The @samp{org.gnu.gdb.microblaze.stack-protect} feature is optional.
|
||||
If present, it should contain registers @samp{rshr} and @samp{rslr}
|
||||
|
||||
@node MIPS Features
|
||||
@subsection @acronym{MIPS} Features
|
||||
@cindex target descriptions, @acronym{MIPS} features
|
||||
|
@ -46,6 +46,7 @@ WHICH = aarch64 \
|
||||
i386/x32-avx i386/x32-avx-linux \
|
||||
i386/x32-avx512 i386/x32-avx512-linux \
|
||||
mips-linux mips-dsp-linux \
|
||||
microblaze-with-stack-protect \
|
||||
mips64-linux mips64-dsp-linux \
|
||||
nios2-linux \
|
||||
rs6000/powerpc-32 \
|
||||
@ -90,6 +91,7 @@ mips-expedite = r29,pc
|
||||
mips-dsp-expedite = r29,pc
|
||||
mips64-expedite = r29,pc
|
||||
mips64-dsp-expedite = r29,pc
|
||||
microblaze-expedite = r1,pc
|
||||
nios2-linux-expedite = sp,pc
|
||||
powerpc-expedite = r1,pc
|
||||
rs6000/powerpc-cell32l-expedite = r1,pc,r0,orig_r3,r4
|
||||
|
67
gdb/features/microblaze-core.xml
Normal file
67
gdb/features/microblaze-core.xml
Normal file
@ -0,0 +1,67 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||
<feature name="org.gnu.gdb.microblaze.core">
|
||||
<reg name="r0" bitsize="32" regnum="0"/>
|
||||
<reg name="r1" bitsize="32" type="data_ptr"/>
|
||||
<reg name="r2" bitsize="32"/>
|
||||
<reg name="r3" bitsize="32"/>
|
||||
<reg name="r4" bitsize="32"/>
|
||||
<reg name="r5" bitsize="32"/>
|
||||
<reg name="r6" bitsize="32"/>
|
||||
<reg name="r7" bitsize="32"/>
|
||||
<reg name="r8" bitsize="32"/>
|
||||
<reg name="r9" bitsize="32"/>
|
||||
<reg name="r10" bitsize="32"/>
|
||||
<reg name="r11" bitsize="32"/>
|
||||
<reg name="r12" bitsize="32"/>
|
||||
<reg name="r13" bitsize="32"/>
|
||||
<reg name="r14" bitsize="32"/>
|
||||
<reg name="r15" bitsize="32"/>
|
||||
<reg name="r16" bitsize="32"/>
|
||||
<reg name="r17" bitsize="32"/>
|
||||
<reg name="r18" bitsize="32"/>
|
||||
<reg name="r19" bitsize="32"/>
|
||||
<reg name="r20" bitsize="32"/>
|
||||
<reg name="r21" bitsize="32"/>
|
||||
<reg name="r22" bitsize="32"/>
|
||||
<reg name="r23" bitsize="32"/>
|
||||
<reg name="r24" bitsize="32"/>
|
||||
<reg name="r25" bitsize="32"/>
|
||||
<reg name="r26" bitsize="32"/>
|
||||
<reg name="r27" bitsize="32"/>
|
||||
<reg name="r28" bitsize="32"/>
|
||||
<reg name="r29" bitsize="32"/>
|
||||
<reg name="r30" bitsize="32"/>
|
||||
<reg name="r31" bitsize="32"/>
|
||||
<reg name="rpc" bitsize="32" type="code_ptr"/>
|
||||
<reg name="rmsr" bitsize="32"/>
|
||||
<reg name="rear" bitsize="32"/>
|
||||
<reg name="resr" bitsize="32"/>
|
||||
<reg name="rfsr" bitsize="32"/>
|
||||
<reg name="rbtr" bitsize="32"/>
|
||||
<reg name="rpvr0" bitsize="32"/>
|
||||
<reg name="rpvr1" bitsize="32"/>
|
||||
<reg name="rpvr2" bitsize="32"/>
|
||||
<reg name="rpvr3" bitsize="32"/>
|
||||
<reg name="rpvr4" bitsize="32"/>
|
||||
<reg name="rpvr5" bitsize="32"/>
|
||||
<reg name="rpvr6" bitsize="32"/>
|
||||
<reg name="rpvr7" bitsize="32"/>
|
||||
<reg name="rpvr8" bitsize="32"/>
|
||||
<reg name="rpvr9" bitsize="32"/>
|
||||
<reg name="rpvr10" bitsize="32"/>
|
||||
<reg name="rpvr11" bitsize="32"/>
|
||||
<reg name="redr" bitsize="32"/>
|
||||
<reg name="rpid" bitsize="32"/>
|
||||
<reg name="rzpr" bitsize="32"/>
|
||||
<reg name="rtlbx" bitsize="32"/>
|
||||
<reg name="rtlbsx" bitsize="32"/>
|
||||
<reg name="rtlblo" bitsize="32"/>
|
||||
<reg name="rtlbhi" bitsize="32"/>
|
||||
</feature>
|
12
gdb/features/microblaze-stack-protect.xml
Normal file
12
gdb/features/microblaze-stack-protect.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||
<feature name="org.gnu.gdb.microblaze.stack-protect">
|
||||
<reg name="rslr" bitsize="32"/>
|
||||
<reg name="rshr" bitsize="32"/>
|
||||
</feature>
|
79
gdb/features/microblaze-with-stack-protect.c
Normal file
79
gdb/features/microblaze-with-stack-protect.c
Normal file
@ -0,0 +1,79 @@
|
||||
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
|
||||
Original: microblaze-with-stack-protect.xml */
|
||||
|
||||
#include "defs.h"
|
||||
#include "osabi.h"
|
||||
#include "target-descriptions.h"
|
||||
|
||||
struct target_desc *tdesc_microblaze_with_stack_protect;
|
||||
static void
|
||||
initialize_tdesc_microblaze_with_stack_protect (void)
|
||||
{
|
||||
struct target_desc *result = allocate_target_description ();
|
||||
struct tdesc_feature *feature;
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.microblaze.core");
|
||||
tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "data_ptr");
|
||||
tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpc", 32, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "rmsr", 33, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rear", 34, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "resr", 35, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rfsr", 36, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rbtr", 37, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr0", 38, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr1", 39, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr2", 40, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr3", 41, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr4", 42, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr5", 43, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr6", 44, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr7", 45, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr8", 46, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr9", 47, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr10", 48, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr11", 49, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "redr", 50, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpid", 51, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rzpr", 52, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rtlbx", 53, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rtlbsx", 54, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rtlblo", 55, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rtlbhi", 56, 1, NULL, 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.microblaze.stack-protect");
|
||||
tdesc_create_reg (feature, "rslr", 57, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rshr", 58, 1, NULL, 32, "int");
|
||||
|
||||
tdesc_microblaze_with_stack_protect = result;
|
||||
}
|
12
gdb/features/microblaze-with-stack-protect.xml
Normal file
12
gdb/features/microblaze-with-stack-protect.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target>
|
||||
<xi:include href="microblaze-core.xml"/>
|
||||
<xi:include href="microblaze-stack-protect.xml"/>
|
||||
</target>
|
75
gdb/features/microblaze.c
Normal file
75
gdb/features/microblaze.c
Normal file
@ -0,0 +1,75 @@
|
||||
/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
|
||||
Original: microblaze.xml */
|
||||
|
||||
#include "defs.h"
|
||||
#include "osabi.h"
|
||||
#include "target-descriptions.h"
|
||||
|
||||
struct target_desc *tdesc_microblaze;
|
||||
static void
|
||||
initialize_tdesc_microblaze (void)
|
||||
{
|
||||
struct target_desc *result = allocate_target_description ();
|
||||
struct tdesc_feature *feature;
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.microblaze.core");
|
||||
tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "data_ptr");
|
||||
tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpc", 32, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "rmsr", 33, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rear", 34, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "resr", 35, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rfsr", 36, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rbtr", 37, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr0", 38, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr1", 39, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr2", 40, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr3", 41, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr4", 42, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr5", 43, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr6", 44, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr7", 45, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr8", 46, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr9", 47, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr10", 48, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpvr11", 49, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "redr", 50, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rpid", 51, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rzpr", 52, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rtlbx", 53, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rtlbsx", 54, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rtlblo", 55, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "rtlbhi", 56, 1, NULL, 32, "int");
|
||||
|
||||
tdesc_microblaze = result;
|
||||
}
|
11
gdb/features/microblaze.xml
Normal file
11
gdb/features/microblaze.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target>
|
||||
<xi:include href="microblaze-core.xml"/>
|
||||
</target>
|
@ -33,13 +33,16 @@
|
||||
#include "frame-unwind.h"
|
||||
#include "dwarf2-frame.h"
|
||||
#include "osabi.h"
|
||||
|
||||
#include "gdb_assert.h"
|
||||
#include <string.h>
|
||||
#include "target-descriptions.h"
|
||||
#include "opcodes/microblaze-opcm.h"
|
||||
#include "opcodes/microblaze-dis.h"
|
||||
#include "microblaze-tdep.h"
|
||||
#include "remote.h"
|
||||
|
||||
#include "features/microblaze-with-stack-protect.c"
|
||||
#include "features/microblaze.c"
|
||||
|
||||
/* Instruction macros used for analyzing the prologue. */
|
||||
/* This set of instruction macros need to be changed whenever the
|
||||
@ -73,7 +76,8 @@ static const char *microblaze_register_names[] =
|
||||
"rpc", "rmsr", "rear", "resr", "rfsr", "rbtr",
|
||||
"rpvr0", "rpvr1", "rpvr2", "rpvr3", "rpvr4", "rpvr5", "rpvr6",
|
||||
"rpvr7", "rpvr8", "rpvr9", "rpvr10", "rpvr11",
|
||||
"redr", "rpid", "rzpr", "rtlbx", "rtlbsx", "rtlblo", "rtlbhi"
|
||||
"redr", "rpid", "rzpr", "rtlbx", "rtlbsx", "rtlblo", "rtlbhi",
|
||||
"rslr", "rshr"
|
||||
};
|
||||
|
||||
#define MICROBLAZE_NUM_REGS ARRAY_SIZE (microblaze_register_names)
|
||||
@ -664,16 +668,63 @@ microblaze_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int reg)
|
||||
return dwarf2_to_reg_map[reg];
|
||||
}
|
||||
|
||||
static void
|
||||
microblaze_register_g_packet_guesses (struct gdbarch *gdbarch)
|
||||
{
|
||||
register_remote_g_packet_guess (gdbarch,
|
||||
4 * MICROBLAZE_NUM_CORE_REGS,
|
||||
tdesc_microblaze);
|
||||
|
||||
register_remote_g_packet_guess (gdbarch,
|
||||
4 * MICROBLAZE_NUM_REGS,
|
||||
tdesc_microblaze_with_stack_protect);
|
||||
}
|
||||
|
||||
static struct gdbarch *
|
||||
microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
{
|
||||
struct gdbarch_tdep *tdep;
|
||||
struct gdbarch *gdbarch;
|
||||
struct tdesc_arch_data *tdesc_data = NULL;
|
||||
const struct target_desc *tdesc = info.target_desc;
|
||||
|
||||
/* If there is already a candidate, use it. */
|
||||
arches = gdbarch_list_lookup_by_info (arches, &info);
|
||||
if (arches != NULL)
|
||||
return arches->gdbarch;
|
||||
if (tdesc == NULL)
|
||||
tdesc = tdesc_microblaze;
|
||||
|
||||
/* Check any target description for validity. */
|
||||
if (tdesc_has_registers (tdesc))
|
||||
{
|
||||
const struct tdesc_feature *feature;
|
||||
int valid_p;
|
||||
int i;
|
||||
|
||||
feature = tdesc_find_feature (tdesc,
|
||||
"org.gnu.gdb.microblaze.core");
|
||||
if (feature == NULL)
|
||||
return NULL;
|
||||
tdesc_data = tdesc_data_alloc ();
|
||||
|
||||
valid_p = 1;
|
||||
for (i = 0; i < MICROBLAZE_NUM_CORE_REGS; i++)
|
||||
valid_p &= tdesc_numbered_register (feature, tdesc_data, i,
|
||||
microblaze_register_names[i]);
|
||||
feature = tdesc_find_feature (tdesc,
|
||||
"org.gnu.gdb.microblaze.stack-protect");
|
||||
if (feature != NULL)
|
||||
{
|
||||
valid_p = 1;
|
||||
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
||||
MICROBLAZE_SLR_REGNUM,
|
||||
"rslr");
|
||||
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
||||
MICROBLAZE_SHR_REGNUM,
|
||||
"rshr");
|
||||
}
|
||||
}
|
||||
|
||||
/* Allocate space for the new architecture. */
|
||||
tdep = XNEW (struct gdbarch_tdep);
|
||||
@ -716,6 +767,8 @@ microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
|
||||
set_gdbarch_unwind_pc (gdbarch, microblaze_unwind_pc);
|
||||
|
||||
microblaze_register_g_packet_guesses (gdbarch);
|
||||
|
||||
frame_base_set_default (gdbarch, µblaze_frame_base);
|
||||
|
||||
/* Hook in ABI-specific overrides, if they have been registered. */
|
||||
@ -725,6 +778,8 @@ microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
dwarf2_append_unwinders (gdbarch);
|
||||
frame_unwind_append_unwinder (gdbarch, µblaze_frame_unwind);
|
||||
frame_base_append_sniffer (gdbarch, dwarf2_frame_base_sniffer);
|
||||
if (tdesc_data != NULL)
|
||||
tdesc_use_registers (gdbarch, tdesc, tdesc_data);
|
||||
|
||||
return gdbarch;
|
||||
}
|
||||
@ -737,6 +792,8 @@ _initialize_microblaze_tdep (void)
|
||||
{
|
||||
register_gdbarch_init (bfd_arch_microblaze, microblaze_gdbarch_init);
|
||||
|
||||
initialize_tdesc_microblaze_with_stack_protect ();
|
||||
initialize_tdesc_microblaze ();
|
||||
/* Debug this files internals. */
|
||||
add_setshow_zuinteger_cmd ("microblaze", class_maintenance,
|
||||
µblaze_debug_flag, _("\
|
||||
|
@ -26,30 +26,8 @@ struct gdbarch_tdep
|
||||
{
|
||||
};
|
||||
|
||||
struct microblaze_frame_cache
|
||||
{
|
||||
/* Base address. */
|
||||
CORE_ADDR base;
|
||||
CORE_ADDR pc;
|
||||
|
||||
/* Do we have a frame? */
|
||||
int frameless_p;
|
||||
|
||||
/* Frame size. */
|
||||
int framesize;
|
||||
|
||||
/* Frame register. */
|
||||
int fp_regnum;
|
||||
|
||||
/* Offsets to saved registers. */
|
||||
int register_offsets[57]; /* Must match MICROBLAZE_NUM_REGS. */
|
||||
|
||||
/* Table of saved registers. */
|
||||
struct trad_frame_saved_reg *saved_regs;
|
||||
};
|
||||
|
||||
/* Register numbers. */
|
||||
enum microblaze_regnum
|
||||
enum microblaze_regnum
|
||||
{
|
||||
MICROBLAZE_R0_REGNUM,
|
||||
MICROBLAZE_R1_REGNUM, MICROBLAZE_SP_REGNUM = MICROBLAZE_R1_REGNUM,
|
||||
@ -107,9 +85,33 @@ enum microblaze_regnum
|
||||
MICROBLAZE_RTLBX_REGNUM,
|
||||
MICROBLAZE_RTLBSX_REGNUM,
|
||||
MICROBLAZE_RTLBLO_REGNUM,
|
||||
MICROBLAZE_RTLBHI_REGNUM
|
||||
MICROBLAZE_RTLBHI_REGNUM,
|
||||
MICROBLAZE_SLR_REGNUM, MICROBLAZE_NUM_CORE_REGS = MICROBLAZE_SLR_REGNUM,
|
||||
MICROBLAZE_SHR_REGNUM,
|
||||
MICROBLAZE_NUM_REGS
|
||||
};
|
||||
|
||||
struct microblaze_frame_cache
|
||||
{
|
||||
/* Base address. */
|
||||
CORE_ADDR base;
|
||||
CORE_ADDR pc;
|
||||
|
||||
/* Do we have a frame? */
|
||||
int frameless_p;
|
||||
|
||||
/* Frame size. */
|
||||
int framesize;
|
||||
|
||||
/* Frame register. */
|
||||
int fp_regnum;
|
||||
|
||||
/* Offsets to saved registers. */
|
||||
int register_offsets[MICROBLAZE_NUM_REGS];
|
||||
|
||||
/* Table of saved registers. */
|
||||
struct trad_frame_saved_reg *saved_regs;
|
||||
};
|
||||
/* All registers are 32 bits. */
|
||||
#define MICROBLAZE_REGISTER_SIZE 4
|
||||
|
||||
|
63
gdb/regformats/microblaze-with-stack-protect.dat
Normal file
63
gdb/regformats/microblaze-with-stack-protect.dat
Normal file
@ -0,0 +1,63 @@
|
||||
# DO NOT EDIT: generated from microblaze-with-stack-protect.xml
|
||||
name:microblaze_with_stack_protect
|
||||
xmltarget:microblaze-with-stack-protect.xml
|
||||
expedite:r1,pc
|
||||
32:r0
|
||||
32:r1
|
||||
32:r2
|
||||
32:r3
|
||||
32:r4
|
||||
32:r5
|
||||
32:r6
|
||||
32:r7
|
||||
32:r8
|
||||
32:r9
|
||||
32:r10
|
||||
32:r11
|
||||
32:r12
|
||||
32:r13
|
||||
32:r14
|
||||
32:r15
|
||||
32:r16
|
||||
32:r17
|
||||
32:r18
|
||||
32:r19
|
||||
32:r20
|
||||
32:r21
|
||||
32:r22
|
||||
32:r23
|
||||
32:r24
|
||||
32:r25
|
||||
32:r26
|
||||
32:r27
|
||||
32:r28
|
||||
32:r29
|
||||
32:r30
|
||||
32:r31
|
||||
32:rpc
|
||||
32:rmsr
|
||||
32:rear
|
||||
32:resr
|
||||
32:rfsr
|
||||
32:rbtr
|
||||
32:rpvr0
|
||||
32:rpvr1
|
||||
32:rpvr2
|
||||
32:rpvr3
|
||||
32:rpvr4
|
||||
32:rpvr5
|
||||
32:rpvr6
|
||||
32:rpvr7
|
||||
32:rpvr8
|
||||
32:rpvr9
|
||||
32:rpvr10
|
||||
32:rpvr11
|
||||
32:redr
|
||||
32:rpid
|
||||
32:rzpr
|
||||
32:rtlbx
|
||||
32:rtlbsx
|
||||
32:rtlblo
|
||||
32:rtlbhi
|
||||
32:rslr
|
||||
32:rshr
|
61
gdb/regformats/microblaze.dat
Normal file
61
gdb/regformats/microblaze.dat
Normal file
@ -0,0 +1,61 @@
|
||||
# DO NOT EDIT: generated from microblaze.xml
|
||||
name:microblaze
|
||||
xmltarget:microblaze.xml
|
||||
expedite:r1,pc
|
||||
32:r0
|
||||
32:r1
|
||||
32:r2
|
||||
32:r3
|
||||
32:r4
|
||||
32:r5
|
||||
32:r6
|
||||
32:r7
|
||||
32:r8
|
||||
32:r9
|
||||
32:r10
|
||||
32:r11
|
||||
32:r12
|
||||
32:r13
|
||||
32:r14
|
||||
32:r15
|
||||
32:r16
|
||||
32:r17
|
||||
32:r18
|
||||
32:r19
|
||||
32:r20
|
||||
32:r21
|
||||
32:r22
|
||||
32:r23
|
||||
32:r24
|
||||
32:r25
|
||||
32:r26
|
||||
32:r27
|
||||
32:r28
|
||||
32:r29
|
||||
32:r30
|
||||
32:r31
|
||||
32:rpc
|
||||
32:rmsr
|
||||
32:rear
|
||||
32:resr
|
||||
32:rfsr
|
||||
32:rbtr
|
||||
32:rpvr0
|
||||
32:rpvr1
|
||||
32:rpvr2
|
||||
32:rpvr3
|
||||
32:rpvr4
|
||||
32:rpvr5
|
||||
32:rpvr6
|
||||
32:rpvr7
|
||||
32:rpvr8
|
||||
32:rpvr9
|
||||
32:rpvr10
|
||||
32:rpvr11
|
||||
32:redr
|
||||
32:rpid
|
||||
32:rzpr
|
||||
32:rtlbx
|
||||
32:rtlbsx
|
||||
32:rtlblo
|
||||
32:rtlbhi
|
Loading…
Reference in New Issue
Block a user