aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTheodore A. Roth <troth@openavr.org>2002-08-05 17:27:55 +0000
committerTheodore A. Roth <troth@openavr.org>2002-08-05 17:27:55 +0000
commitced15480d01bd4e4650619a3c3c0df85d8cfaf50 (patch)
treeb568f4545559935f49811687bb5e46f953712934 /gdb
parentb4743822622cd693b81467bf255475295ec28e91 (diff)
downloadfsf-binutils-gdb-ced15480d01bd4e4650619a3c3c0df85d8cfaf50.zip
fsf-binutils-gdb-ced15480d01bd4e4650619a3c3c0df85d8cfaf50.tar.gz
fsf-binutils-gdb-ced15480d01bd4e4650619a3c3c0df85d8cfaf50.tar.bz2
* gdb/avr-tdep.c(avr_skip_prologue): Fix to return the correct pc.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/avr-tdep.c9
2 files changed, 12 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b999f73..80b4df3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2002-08-05 Theodore A. Roth <troth@verinet.com>
+
+ * gdb/avr-tdep.c(avr_skip_prologue): Fix to return the correct pc.
+
2002-08-05 Andrew Cagney <ac131313@redhat.com>
* mcore-tdep.c (mcore_gdbarch_init): Use
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index 21b179c..79d0af1 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
@@ -996,7 +996,14 @@ avr_skip_prologue (CORE_ADDR pc)
{
sal = find_pc_line (func_addr, 0);
- if (sal.line != 0 && sal.end < func_end)
+ /* troth/2002-08-05: For some very simple functions, gcc doesn't
+ generate a prologue and the sal.end ends up being the 2-byte ``ret''
+ instruction at the end of the function, but func_end ends up being
+ the address of the first instruction of the _next_ function. By
+ adjusting func_end by 2 bytes, we can catch these functions and not
+ return sal.end if it is the ``ret'' instruction. */
+
+ if (sal.line != 0 && sal.end < (func_end-2))
return sal.end;
}