summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2015-11-12 03:18:48 (GMT)
committerMax Filippov <jcmvbkbc@gmail.com>2015-11-13 06:08:54 (GMT)
commit6717dbfd3f5af7013d40ad2be82060d251269e23 (patch)
tree8eac5abb81ceae1f35ea30dfa44383e0660ebd2a
parent9af5ff74efc255dde6517dc8d5fe71979753662c (diff)
gdb: add xtensa-specific patches for 7.10
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-rw-r--r--patches/gdb/7.10/110-xtensa-initialize-call_abi-in-xtensa_tdep.patch39
-rw-r--r--patches/gdb/7.10/111-xtensa-make-sure-ar_base-is-initialized.patch35
-rw-r--r--patches/gdb/7.10/112-WIP-end-of-prologue-detection-hack.patch31
3 files changed, 105 insertions, 0 deletions
diff --git a/patches/gdb/7.10/110-xtensa-initialize-call_abi-in-xtensa_tdep.patch b/patches/gdb/7.10/110-xtensa-initialize-call_abi-in-xtensa_tdep.patch
new file mode 100644
index 0000000..1182a45
--- /dev/null
+++ b/patches/gdb/7.10/110-xtensa-initialize-call_abi-in-xtensa_tdep.patch
@@ -0,0 +1,39 @@
+From 7f8c0d8984bf5754807d3bb543cbc3ffc634e9e4 Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Sat, 30 May 2015 13:00:32 +0300
+Subject: [PATCH] xtensa: initialize call_abi in xtensa_tdep
+
+Use XSHAL_ABI value provided by xtensa-config.h to correctly initialize
+xtensa_tdep.call_abi
+This fixes calls to functions from GDB that otherwise fail with the
+following assertion in call0 configuration:
+
+ gdb/regcache.c:602: internal-error: regcache_raw_read: Assertion
+ `regnum >= 0 && regnum < regcache->descr->nr_raw_registers' failed.
+
+gdb/
+ * xtensa-tdep.h (XTENSA_GDBARCH_TDEP_INSTANTIATE): Initialize
+ call_abi using XSHAL_ABI macro.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gdb/xtensa-tdep.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/gdb/xtensa-tdep.h b/gdb/xtensa-tdep.h
+index adacaf8..3b6ea66 100644
+--- a/gdb/xtensa-tdep.h
++++ b/gdb/xtensa-tdep.h
+@@ -246,7 +246,8 @@ struct gdbarch_tdep
+ .spill_location = -1, \
+ .spill_size = (spillsz), \
+ .unused = 0, \
+- .call_abi = 0, \
++ .call_abi = (XSHAL_ABI == XTHAL_ABI_CALL0) ? \
++ CallAbiCall0Only : CallAbiDefault, \
+ .debug_interrupt_level = XCHAL_DEBUGLEVEL, \
+ .icache_line_bytes = XCHAL_ICACHE_LINESIZE, \
+ .dcache_line_bytes = XCHAL_DCACHE_LINESIZE, \
+--
+1.8.1.4
+
diff --git a/patches/gdb/7.10/111-xtensa-make-sure-ar_base-is-initialized.patch b/patches/gdb/7.10/111-xtensa-make-sure-ar_base-is-initialized.patch
new file mode 100644
index 0000000..982bd7f
--- /dev/null
+++ b/patches/gdb/7.10/111-xtensa-make-sure-ar_base-is-initialized.patch
@@ -0,0 +1,35 @@
+From 208ea73d38c9c16cf983b6419f58050dbadcb6a9 Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Sun, 7 Jun 2015 22:43:49 +0300
+Subject: [PATCH 2/2] xtensa: make sure ar_base is initialized
+
+ar_base is uninitialized for cores w/o windowed registers as their
+regmap doesn't have register 0x0100.
+Check that ar_base is initialized and if not initialize it with a0_base.
+
+gdb/
+ * xtensa-tdep.c (xtensa_derive_tdep): Make sure ar_base is
+ initialized.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gdb/xtensa-tdep.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c
+index 55e7d98..41f5ec1 100644
+--- a/gdb/xtensa-tdep.c
++++ b/gdb/xtensa-tdep.c
+@@ -3175,6 +3175,9 @@ xtensa_derive_tdep (struct gdbarch_tdep *tdep)
+ tdep->num_regs = n;
+ }
+
++ if (tdep->ar_base == -1)
++ tdep->ar_base = tdep->a0_base;
++
+ /* Number of pseudo registers. */
+ tdep->num_pseudo_regs = n - tdep->num_regs;
+
+--
+1.8.1.4
+
diff --git a/patches/gdb/7.10/112-WIP-end-of-prologue-detection-hack.patch b/patches/gdb/7.10/112-WIP-end-of-prologue-detection-hack.patch
new file mode 100644
index 0000000..506a57c
--- /dev/null
+++ b/patches/gdb/7.10/112-WIP-end-of-prologue-detection-hack.patch
@@ -0,0 +1,31 @@
+From 7f8eacbb468575fb67db7fd1155a3aedaa91911b Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Sun, 7 Jun 2015 23:15:39 +0300
+Subject: [PATCH] WIP: *end of prologue* detection hack
+
+see
+ http://www.esp8266.com/viewtopic.php?p=18461#p18461
+ http://www.esp8266.com/viewtopic.php?p=19026#p19026
+ http://www.esp8266.com/viewtopic.php?p=19683#p19683
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gdb/xtensa-tdep.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c
+index 41f5ec1..6a7dba7 100644
+--- a/gdb/xtensa-tdep.c
++++ b/gdb/xtensa-tdep.c
+@@ -2410,7 +2410,7 @@ call0_analyze_prologue (struct gdbarch *gdbarch,
+ /* Find out, if we have an information about the prologue from DWARF. */
+ prologue_sal = find_pc_line (start, 0);
+ if (prologue_sal.line != 0) /* Found debug info. */
+- body_pc = prologue_sal.end;
++ body_pc = prologue_sal.end + 40;
+
+ /* If we are going to analyze the prologue in general without knowing about
+ the current PC, make the best assumtion for the end of the prologue. */
+--
+1.8.1.4
+