[72053] trunk/dports/cross/avr-gdb
jmr at macports.org
jmr at macports.org
Fri Oct 1 08:26:31 PDT 2010
Revision: 72053
http://trac.macports.org/changeset/72053
Author: jmr at macports.org
Date: 2010-10-01 08:26:28 -0700 (Fri, 01 Oct 2010)
Log Message:
-----------
avr-gdb: commit patches (#26683)
Added Paths:
-----------
trunk/dports/cross/avr-gdb/files/
trunk/dports/cross/avr-gdb/files/patch-atmega256x-gdb
trunk/dports/cross/avr-gdb/files/patch-gdb::remote.c
Added: trunk/dports/cross/avr-gdb/files/patch-atmega256x-gdb
===================================================================
--- trunk/dports/cross/avr-gdb/files/patch-atmega256x-gdb (rev 0)
+++ trunk/dports/cross/avr-gdb/files/patch-atmega256x-gdb 2010-10-01 15:26:28 UTC (rev 72053)
@@ -0,0 +1,66 @@
+--- gdb/avr-tdep.c.orig 2008-01-11 14:19:59.000000000 +0100
++++ gdb/avr-tdep.c 2010-01-19 11:19:47.000000000 +0100
+@@ -181,8 +181,10 @@
+
+ struct gdbarch_tdep
+ {
+- /* FIXME: TRoth: is there anything to put here? */
+- int foo;
++ /* Size of the PC on the current AVR target. This is equal 2 for
++ most AVRs except for the ATmega256x devices that have a 3-byte
++ PC. */
++ int pcsize;
+ };
+
+ /* Lookup the name of a register given it's number. */
+@@ -1030,22 +1032,29 @@
+ on the stack is in big endian byte order, even though most
+ everything else about the avr is little endian. Ick! */
+
+- /* FIXME: number of bytes read here will need updated for the
+- mega256 when it is available. */
+-
++ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ ULONGEST pc;
+ unsigned char tmp;
+- unsigned char buf[2];
++ unsigned char buf[3];
+
+- read_memory (info->saved_regs[regnum].addr, buf, 2);
++ read_memory (info->saved_regs[regnum].addr, buf, tdep->pcsize);
+
+ /* Convert the PC read from memory as a big-endian to
+ little-endian order. */
+- tmp = buf[0];
+- buf[0] = buf[1];
+- buf[1] = tmp;
++ if (tdep->pcsize == 2)
++ {
++ tmp = buf[0];
++ buf[0] = buf[1];
++ buf[1] = tmp;
++ }
++ else
++ {
++ tmp = buf[0];
++ buf[0] = buf[2];
++ buf[2] = tmp;
++ }
+
+- pc = (extract_unsigned_integer (buf, 2) * 2);
++ pc = (extract_unsigned_integer (buf, tdep->pcsize) * 2);
+ store_unsigned_integer
+ (bufferp, register_size (get_frame_arch (next_frame), regnum),
+ pc);
+@@ -1280,6 +1289,11 @@
+ case bfd_mach_avr3:
+ case bfd_mach_avr4:
+ case bfd_mach_avr5:
++ tdep->pcsize = 2;
++ break;
++
++ case bfd_mach_avr6:
++ tdep->pcsize = 3;
+ break;
+ }
+
Added: trunk/dports/cross/avr-gdb/files/patch-gdb::remote.c
===================================================================
--- trunk/dports/cross/avr-gdb/files/patch-gdb::remote.c (rev 0)
+++ trunk/dports/cross/avr-gdb/files/patch-gdb::remote.c 2010-10-01 15:26:28 UTC (rev 72053)
@@ -0,0 +1,14 @@
+--- gdb/remote.c~ 2008-02-25 10:59:06.000000000 +0100
++++ gdb/remote.c 2010-01-19 11:30:19.000000000 +0100
+@@ -6102,8 +6102,9 @@
+ [PACKET_qXfer_spu_write]);
+ }
+
+- /* Only handle flash writes. */
+- if (writebuf != NULL)
++ /* Only handle flash writes. Zero OFFSET and LENGTH is just a size
++ * query only, so proceed anyway. */
++ if (writebuf != NULL && !(offset == 0 && len == 0))
+ {
+ LONGEST xfered;
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20101001/0139f7fc/attachment.html>
More information about the macports-changes
mailing list