diff options
author | Michael Eager <eager@eagercon.com> | 2014-07-19 17:47:52 -0700 |
---|---|---|
committer | Michael Eager <eager@eagercon.com> | 2014-07-19 17:47:52 -0700 |
commit | 164224e96ca270d6cbb61d3e326fc1b0453b30a6 (patch) | |
tree | adbf24226a755d4d3a54cbca093af0db235cb75b /gdb/features | |
parent | 57319490943d7ce425c515356f6758ff81bf6c58 (diff) | |
download | gdb-164224e96ca270d6cbb61d3e326fc1b0453b30a6.zip gdb-164224e96ca270d6cbb61d3e326fc1b0453b30a6.tar.gz gdb-164224e96ca270d6cbb61d3e326fc1b0453b30a6.tar.bz2 |
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
Diffstat (limited to 'gdb/features')
-rw-r--r-- | gdb/features/Makefile | 2 | ||||
-rw-r--r-- | gdb/features/microblaze-core.xml | 67 | ||||
-rw-r--r-- | gdb/features/microblaze-stack-protect.xml | 12 | ||||
-rw-r--r-- | gdb/features/microblaze-with-stack-protect.c | 79 | ||||
-rw-r--r-- | gdb/features/microblaze-with-stack-protect.xml | 12 | ||||
-rw-r--r-- | gdb/features/microblaze.c | 75 | ||||
-rw-r--r-- | gdb/features/microblaze.xml | 11 |
7 files changed, 258 insertions, 0 deletions
diff --git a/gdb/features/Makefile b/gdb/features/Makefile index dbf4963..1c50419 100644 --- a/gdb/features/Makefile +++ b/gdb/features/Makefile @@ -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 diff --git a/gdb/features/microblaze-core.xml b/gdb/features/microblaze-core.xml new file mode 100644 index 0000000..5e28773 --- /dev/null +++ b/gdb/features/microblaze-core.xml @@ -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> diff --git a/gdb/features/microblaze-stack-protect.xml b/gdb/features/microblaze-stack-protect.xml new file mode 100644 index 0000000..d18bb0c --- /dev/null +++ b/gdb/features/microblaze-stack-protect.xml @@ -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> diff --git a/gdb/features/microblaze-with-stack-protect.c b/gdb/features/microblaze-with-stack-protect.c new file mode 100644 index 0000000..b39aa19 --- /dev/null +++ b/gdb/features/microblaze-with-stack-protect.c @@ -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; +} diff --git a/gdb/features/microblaze-with-stack-protect.xml b/gdb/features/microblaze-with-stack-protect.xml new file mode 100644 index 0000000..8f62a38 --- /dev/null +++ b/gdb/features/microblaze-with-stack-protect.xml @@ -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> diff --git a/gdb/features/microblaze.c b/gdb/features/microblaze.c new file mode 100644 index 0000000..6c86fc0 --- /dev/null +++ b/gdb/features/microblaze.c @@ -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; +} diff --git a/gdb/features/microblaze.xml b/gdb/features/microblaze.xml new file mode 100644 index 0000000..571f17f --- /dev/null +++ b/gdb/features/microblaze.xml @@ -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> |