diff options
author | Markus Metzger <markus.t.metzger@intel.com> | 2013-12-18 14:13:54 +0100 |
---|---|---|
committer | Markus Metzger <markus.t.metzger@intel.com> | 2014-01-16 12:45:11 +0100 |
commit | 8372a7cb96e9d193cb1f85f3fd2c01e38c33a750 (patch) | |
tree | dc53a909accb0c08530724fda6a366c08ca4eb82 | |
parent | c2170eeffa616c51ca4c7ab7142523c04b762603 (diff) | |
download | gdb-8372a7cb96e9d193cb1f85f3fd2c01e38c33a750.zip gdb-8372a7cb96e9d193cb1f85f3fd2c01e38c33a750.tar.gz gdb-8372a7cb96e9d193cb1f85f3fd2c01e38c33a750.tar.bz2 |
frame: add frame_id_build_unavailable_stack_special
Add a function to build a frame_id for a frame with unavailable stack
and with a special identifier address.
2014-01-16 Markus Metzger <markus.t.metzger@intel.com>
* frame.h (frame_id_build_unavailable_stack_special): New.
* frame.c (frame_id_build_unavailable_stack_special): New.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/frame.c | 16 | ||||
-rw-r--r-- | gdb/frame.h | 8 |
3 files changed, 29 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d80ab85..4a6ef7f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2014-01-16 Markus Metzger <markus.t.metzger@intel.com> + * frame.h (frame_id_build_unavailable_stack_special): New. + * frame.c (frame_id_build_unavailable_stack_special): New. + +2014-01-16 Markus Metzger <markus.t.metzger@intel.com> + * amd64-tdep.c (amd64_classify_insn_at, amd64_insn_is_call) (amd64_insn_is_ret, amd64_insn_is_jump, amd64_jmp_p): New. (amd64_init_abi): Add insn_is_call, insn_is_ret, and insn_is_jump diff --git a/gdb/frame.c b/gdb/frame.c index 10d486c..b72d5e4 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -528,6 +528,22 @@ frame_id_build_unavailable_stack (CORE_ADDR code_addr) return id; } +/* See frame.h. */ + +struct frame_id +frame_id_build_unavailable_stack_special (CORE_ADDR code_addr, + CORE_ADDR special_addr) +{ + struct frame_id id = null_frame_id; + + id.stack_status = FID_STACK_UNAVAILABLE; + id.code_addr = code_addr; + id.code_addr_p = 1; + id.special_addr = special_addr; + id.special_addr_p = 1; + return id; +} + struct frame_id frame_id_build (CORE_ADDR stack_addr, CORE_ADDR code_addr) { diff --git a/gdb/frame.h b/gdb/frame.h index f7e46d5..e451a93 100644 --- a/gdb/frame.h +++ b/gdb/frame.h @@ -193,6 +193,14 @@ extern struct frame_id frame_id_build_special (CORE_ADDR stack_addr, address is set to indicate a wild card. */ extern struct frame_id frame_id_build_unavailable_stack (CORE_ADDR code_addr); +/* Construct a frame ID representing a frame where the stack address + exists, but is unavailable. CODE_ADDR is the frame's constant code + address (typically the entry point). SPECIAL_ADDR is the special + identifier address. */ +extern struct frame_id + frame_id_build_unavailable_stack_special (CORE_ADDR code_addr, + CORE_ADDR special_addr); + /* Construct a wild card frame ID. The parameter is the frame's constant stack address (typically the outer-bound). The code address as well as the special identifier address are set to indicate wild cards. */ |