Remove redundant test in BFD_ASSERT
[deliverable/binutils-gdb.git] / gdb / tramp-frame.h
index 44e266eaab640226a8592b4661b6d41fd91979b5..9244701e9aa0cf0c517c8e9f88d1b8b3f3dfc887 100644 (file)
@@ -22,6 +22,8 @@
 #ifndef TRAMP_FRAME_H
 #define TRAMP_FRAME_H
 
+#include "frame.h"             /* For "enum frame_type".  */
+
 struct trad_frame;
 struct frame_info;
 struct trad_frame_cache;
@@ -39,17 +41,30 @@ struct trad_frame_cache;
 
 /* A trampoline descriptor.  */
 
+/* Magic instruction that to mark the end of the signal trampoline
+   instruction sequence.  */
+#define TRAMP_SENTINEL_INSN ((LONGEST) -1)
+
 struct tramp_frame
 {
-  /* The trampoline's entire instruction sequence.  Search for this in
-     the inferior at or around the frame's PC.  It is assumed that the
-     PC is INSN_SIZE aligned, and that each element of TRAMP contains
-     one INSN_SIZE instruction.  It is also assumed that TRAMP[0]
-     contains the first instruction of the trampoline and hence the
-     address of the instruction matching TRAMP[0] is the trampoline's
-     "func" address.  */
+  /* The trampoline's type, some a signal trampolines, some are normal
+     call-frame trampolines (aka thunks).  */
+  enum frame_type frame_type;
+  /* The trampoline's entire instruction sequence.  It consists of a
+     bytes/mask pair.  Search for this in the inferior at or around
+     the frame's PC.  It is assumed that the PC is INSN_SIZE aligned,
+     and that each element of TRAMP contains one INSN_SIZE
+     instruction.  It is also assumed that INSN[0] contains the first
+     instruction of the trampoline and hence the address of the
+     instruction matching INSN[0] is the trampoline's "func" address.
+     The instruction sequence is terminated by
+     TRAMP_SENTINEL_INSN.  */
   int insn_size;
-  ULONGEST insn[8];
+  struct
+  {
+    ULONGEST bytes;
+    ULONGEST mask;
+  } insn[8];
   /* Initialize a trad-frame cache corresponding to the tramp-frame.
      FUNC is the address of the instruction TRAMP[0] in memory.  */
   void (*init) (const struct tramp_frame *self,
@@ -58,7 +73,7 @@ struct tramp_frame
                CORE_ADDR func);
 };
 
-void tramp_frame_append (struct gdbarch *gdbarch,
-                        const struct tramp_frame *tramp);
+void tramp_frame_prepend_unwinder (struct gdbarch *gdbarch,
+                                  const struct tramp_frame *tramp);
 
 #endif
This page took 0.023626 seconds and 4 git commands to generate.