aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/mips-tdep.c15
2 files changed, 14 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index cd9507a..03ab880 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2011-12-06 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * mips-tdep.c (mips_pc_is_mips16): Reverse the order of checks
+ performed to determine whether an address refers to standard
+ MIPS or MIPS16 code.
+ (mips16_next_pc): Use mips_pc_is_mips16 instead of
+ is_mips16_addr.
+
2011-12-06 Pedro Alves <pedro@codesourcery.com>
* breakpoint.c (breakpoint_restore_shadows): Rename to ...
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 7e74bc4..2e23836 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -989,18 +989,15 @@ mips_pc_is_mips16 (CORE_ADDR memaddr)
{
struct minimal_symbol *sym;
- /* If bit 0 of the address is set, assume this is a MIPS16 address. */
- if (is_mips16_addr (memaddr))
- return 1;
-
- /* A flag indicating that this is a MIPS16 function is stored by elfread.c in
- the high bit of the info field. Use this to decide if the function is
- MIPS16 or normal MIPS. */
+ /* A flag indicating that this is a MIPS16 function is stored by
+ elfread.c in the high bit of the info field. Use this to decide
+ if the function is MIPS16 or normal MIPS. Otherwise if bit 0 of
+ the address is set, assume this is a MIPS16 address. */
sym = lookup_minimal_symbol_by_pc (memaddr);
if (sym)
return msymbol_is_special (sym);
else
- return 0;
+ return is_mips16_addr (memaddr);
}
/* MIPS believes that the PC has a sign extended value. Perhaps the
@@ -1579,7 +1576,7 @@ mips16_next_pc (struct frame_info *frame, CORE_ADDR pc)
static CORE_ADDR
mips_next_pc (struct frame_info *frame, CORE_ADDR pc)
{
- if (is_mips16_addr (pc))
+ if (mips_pc_is_mips16 (pc))
return mips16_next_pc (frame, pc);
else
return mips32_next_pc (frame, pc);