diff options
author | Stan Shebs <shebs@codesourcery.com> | 1999-05-05 14:45:51 +0000 |
---|---|---|
committer | Stan Shebs <shebs@codesourcery.com> | 1999-05-05 14:45:51 +0000 |
commit | b83266a0e1813b7f4891d5d6b0ed6b7302a3fe98 (patch) | |
tree | c59a94fbe917e0839329b872139198c2a7a05ab1 /gdb/vax-tdep.c | |
parent | e1346c8d0969dad58ddc13c9c741cb0f4e6345a5 (diff) | |
download | gdb-b83266a0e1813b7f4891d5d6b0ed6b7302a3fe98.zip gdb-b83266a0e1813b7f4891d5d6b0ed6b7302a3fe98.tar.gz gdb-b83266a0e1813b7f4891d5d6b0ed6b7302a3fe98.tar.bz2 |
import gdb-19990504 snapshot
Diffstat (limited to 'gdb/vax-tdep.c')
-rw-r--r-- | gdb/vax-tdep.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c index b378571..7e04260 100644 --- a/gdb/vax-tdep.c +++ b/gdb/vax-tdep.c @@ -29,6 +29,36 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static unsigned char *print_insn_arg (); +/* Advance PC across any function entry prologue instructions + to reach some "real" code. */ + +CORE_ADDR +vax_skip_prologue (pc) + CORE_ADDR pc; +{ + register int op = (unsigned char) read_memory_integer (pc, 1); + if (op == 0x11) + pc += 2; /* skip brb */ + if (op == 0x31) + pc += 3; /* skip brw */ + if (op == 0xC2 + && ((unsigned char) read_memory_integer (pc+2, 1)) == 0x5E) + pc += 3; /* skip subl2 */ + if (op == 0x9E + && ((unsigned char) read_memory_integer (pc+1, 1)) == 0xAE + && ((unsigned char) read_memory_integer(pc+3, 1)) == 0x5E) + pc += 4; /* skip movab */ + if (op == 0x9E + && ((unsigned char) read_memory_integer (pc+1, 1)) == 0xCE + && ((unsigned char) read_memory_integer(pc+4, 1)) == 0x5E) + pc += 5; /* skip movab */ + if (op == 0x9E + && ((unsigned char) read_memory_integer (pc+1, 1)) == 0xEE + && ((unsigned char) read_memory_integer(pc+6, 1)) == 0x5E) + pc += 7; /* skip movab */ + return pc; +} + /* Print the vax instruction at address MEMADDR in debugged memory, from disassembler info INFO. Returns length of the instruction, in bytes. */ |