aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMarkus Metzger <markus.t.metzger@intel.com>2013-12-18 14:13:54 +0100
committerMarkus Metzger <markus.t.metzger@intel.com>2014-01-16 12:45:11 +0100
commit8372a7cb96e9d193cb1f85f3fd2c01e38c33a750 (patch)
treedc53a909accb0c08530724fda6a366c08ca4eb82 /gdb
parentc2170eeffa616c51ca4c7ab7142523c04b762603 (diff)
downloadgdb-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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/frame.c16
-rw-r--r--gdb/frame.h8
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. */