projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb/testsuite/ChangeLog: Fix path to a few files in previous entries.
[deliverable/binutils-gdb.git]
/
gdb
/
avr-tdep.c
diff --git
a/gdb/avr-tdep.c
b/gdb/avr-tdep.c
index 6d243c476e2b0e83a365eed9f70f39673642d338..9b0bfafceed2fef95348f355b579c78203e1ec05 100644
(file)
--- a/
gdb/avr-tdep.c
+++ b/
gdb/avr-tdep.c
@@
-1,6
+1,6
@@
/* Target-dependent code for Atmel AVR, for GDB.
/* Target-dependent code for Atmel AVR, for GDB.
- Copyright (C) 1996-201
3
Free Software Foundation, Inc.
+ Copyright (C) 1996-201
4
Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-36,6
+36,7
@@
#include "regcache.h"
#include <string.h>
#include "dis-asm.h"
#include "regcache.h"
#include <string.h>
#include "dis-asm.h"
+#include "objfiles.h"
/* AVR Background:
/* AVR Background:
@@
-179,7
+180,7
@@
struct avr_unwind_cache
struct gdbarch_tdep
{
/* Number of bytes stored to the stack by call instructions.
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. */
int call_length;
/* Type for void. */
@@
-492,7
+493,7
@@
avr_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR pc_beg, CORE_ADDR pc_end,
int i;
unsigned short insn;
int scan_stage = 0;
int i;
unsigned short insn;
int scan_stage = 0;
- struct
minimal_symbol *
msymbol;
+ struct
bound_minimal_symbol
msymbol;
unsigned char prologue[AVR_MAX_PROLOGUE_SIZE];
int vpc = 0;
int len;
unsigned char prologue[AVR_MAX_PROLOGUE_SIZE];
int vpc = 0;
int len;
@@
-586,7
+587,7
@@
avr_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR pc_beg, CORE_ADDR pc_end,
pc_offset += 2;
msymbol = lookup_minimal_symbol ("__prologue_saves__", NULL, NULL);
pc_offset += 2;
msymbol = lookup_minimal_symbol ("__prologue_saves__", NULL, NULL);
- if (!msymbol)
+ if (!msymbol
.minsym
)
break;
insn = extract_unsigned_integer (&prologue[vpc + 8], 2, byte_order);
break;
insn = extract_unsigned_integer (&prologue[vpc + 8], 2, byte_order);
@@
-624,7
+625,7
@@
avr_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR pc_beg, CORE_ADDR pc_end,
/* Resolve offset (in words) from __prologue_saves__ symbol.
Which is a pushes count in `-mcall-prologues' mode */
/* Resolve offset (in words) from __prologue_saves__ symbol.
Which is a pushes count in `-mcall-prologues' mode */
- num_pushes = AVR_MAX_PUSHES - (i - SYMBOL_VALUE_ADDRESS (msymbol)) / 2;
+ num_pushes = AVR_MAX_PUSHES - (i -
BM
SYMBOL_VALUE_ADDRESS (msymbol)) / 2;
if (num_pushes > AVR_MAX_PUSHES)
{
if (num_pushes > AVR_MAX_PUSHES)
{
@@
-719,7
+720,7
@@
avr_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR pc_beg, CORE_ADDR pc_end,
info->size += gdbarch_tdep (gdbarch)->call_length;
vpc += 2;
}
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;
{
info->size += 1;
vpc += 2;
@@
-1355,14
+1356,21
@@
avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
switch (info.bfd_arch_info->mach)
{
case bfd_mach_avr1:
switch (info.bfd_arch_info->mach)
{
case bfd_mach_avr1:
+ case bfd_mach_avrxmega1:
case bfd_mach_avr2:
case bfd_mach_avr2:
+ case bfd_mach_avrxmega2:
case bfd_mach_avr3:
case bfd_mach_avr3:
+ case bfd_mach_avrxmega3:
case bfd_mach_avr4:
case bfd_mach_avr4:
+ case bfd_mach_avrxmega4:
case bfd_mach_avr5:
case bfd_mach_avr5:
+ case bfd_mach_avrxmega5:
default:
call_length = 2;
break;
case bfd_mach_avr6:
default:
call_length = 2;
break;
case bfd_mach_avr6:
+ case bfd_mach_avrxmega6:
+ case bfd_mach_avrxmega7:
call_length = 3;
break;
}
call_length = 3;
break;
}
@@
-1377,7
+1385,7
@@
avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
}
/* None found, create a new architecture from the information provided. */
}
/* None found, create a new architecture from the information provided. */
- tdep = X
MALLOC
(struct gdbarch_tdep);
+ tdep = X
NEW
(struct gdbarch_tdep);
gdbarch = gdbarch_alloc (&info, tdep);
tdep->call_length = call_length;
gdbarch = gdbarch_alloc (&info, tdep);
tdep->call_length = call_length;
This page took
0.031308 seconds
and
4
git commands to generate.