This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] Backport AVR fixes
- From: Pierre Langlois <pierre dot langlois at embecosm dot com>
- To: gdb-patches at sourceware dot org
- Date: Thu, 10 Apr 2014 17:30:37 +0100
- Subject: [PATCH] Backport AVR fixes
- Authentication-results: sourceware.org; auth=none
Hi all,
Would it be OK to backport these two commits to gdb-7.7-branch for the next
7.7.1 release?
https://sourceware.org/ml/gdb-patches/2014-04/msg00097.html
https://sourceware.org/ml/gdb-patches/2014-03/msg00425.html
I am not yet familiar with the process of backporting patches in GDB, let me
know if I am doing this correctly. For instance, should I break this into
several commits?
Best,
Pierre
2014-04-08 Pierre Langlois <pierre.langlois@embecosm.com>
* avr-tdep.c (struct gdbarch_tdep): Mention avrxmega in the comment.
(avr_gdbarch_init): Add xmega architectures given by bfd_architecture
when setting the size of call_length.
(avr_scan_prologue): Accept push r1 instruction for small stack
allocation.
* MAINTAINERS (Write After Approval): Add "Pierre Langlois".
---
gdb/MAINTAINERS | 1 +
gdb/avr-tdep.c | 11 +++++++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/gdb/MAINTAINERS b/gdb/MAINTAINERS
index ffd310b..c0297c1 100644
--- a/gdb/MAINTAINERS
+++ b/gdb/MAINTAINERS
@@ -546,6 +546,7 @@ Jim Kingdon kingdon@panix.com
Paul Koning paul_koning@dell.com
Jan Kratochvil jan.kratochvil@redhat.com
Maxim Kuvyrkov maxim@kugelworks.com
+Pierre Langlois pierre.langlois@embecosm.com
Jonathan Larmour jifl@ecoscentric.com
Jeff Law law@redhat.com
Justin Lebar justin.lebar@gmail.com
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index cb330ea..1be9e7d 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
@@ -179,7 +179,7 @@ struct avr_unwind_cache
struct gdbarch_tdep
{
/* Number of bytes stored to the stack by call instructions.
- 2 bytes for avr1-5, 3 bytes for avr6. */
+ 2 bytes for avr1-5 and avrxmega1-5, 3 bytes for avr6 and avrxmega6-7. */
int call_length;
/* Type for void. */
@@ -719,7 +719,7 @@ avr_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR pc_beg, CORE_ADDR pc_end,
info->size += gdbarch_tdep (gdbarch)->call_length;
vpc += 2;
}
- else if (insn == 0x920f) /* push r0 */
+ else if (insn == 0x920f || insn == 0x921f) /* push r0 or push r1 */
{
info->size += 1;
vpc += 2;
@@ -1355,14 +1355,21 @@ avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
switch (info.bfd_arch_info->mach)
{
case bfd_mach_avr1:
+ case bfd_mach_avrxmega1:
case bfd_mach_avr2:
+ case bfd_mach_avrxmega2:
case bfd_mach_avr3:
+ case bfd_mach_avrxmega3:
case bfd_mach_avr4:
+ case bfd_mach_avrxmega4:
case bfd_mach_avr5:
+ case bfd_mach_avrxmega5:
default:
call_length = 2;
break;
case bfd_mach_avr6:
+ case bfd_mach_avrxmega6:
+ case bfd_mach_avrxmega7:
call_length = 3;
break;
}
--
1.8.3.1