frame: add frame_id_build_unavailable_stack_special
authorMarkus Metzger <markus.t.metzger@intel.com>
Wed, 18 Dec 2013 13:13:54 +0000 (14:13 +0100)
committerMarkus Metzger <markus.t.metzger@intel.com>
Thu, 16 Jan 2014 11:45:11 +0000 (12:45 +0100)
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.

gdb/ChangeLog
gdb/frame.c
gdb/frame.h

index d80ab85816ef05d7c27c231170c9fa911de5a0be..4a6ef7ff3786cf34dfcd9d77ceba3460d0dceefd 100644 (file)
@@ -1,3 +1,8 @@
+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)
index 10d486c3707f7df92f7e5cef39d69e65a4a9a7b4..b72d5e4aad3f18773ba97879dc4f95442b20e2a8 100644 (file)
@@ -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)
 {
index f7e46d5e001de6e5670ac1222744fb65e4335e7d..e451a9395e99df36e2d72eed97f9effbb5c62f38 100644 (file)
@@ -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.  */