gdb/
[deliverable/binutils-gdb.git] / gdb / dwarf2expr.c
index a9691bdb4a2f24cebbc1c6a057b69770e51bc3eb..6401e722c4220bbcd339b238b84feffc2ac50208 100644 (file)
@@ -25,7 +25,7 @@
 #include "gdbtypes.h"
 #include "value.h"
 #include "gdbcore.h"
-#include "elf/dwarf2.h"
+#include "dwarf2.h"
 #include "dwarf2expr.h"
 #include "gdb_assert.h"
 
@@ -61,6 +61,22 @@ free_dwarf_expr_context (struct dwarf_expr_context *ctx)
   xfree (ctx);
 }
 
+/* Helper for make_cleanup_free_dwarf_expr_context.  */
+
+static void
+free_dwarf_expr_context_cleanup (void *arg)
+{
+  free_dwarf_expr_context (arg);
+}
+
+/* Return a cleanup that calls free_dwarf_expr_context.  */
+
+struct cleanup *
+make_cleanup_free_dwarf_expr_context (struct dwarf_expr_context *ctx)
+{
+  return make_cleanup (free_dwarf_expr_context_cleanup, ctx);
+}
+
 /* Expand the memory allocated to CTX's stack to contain at least
    NEED more elements than are currently used.  */
 
@@ -700,6 +716,10 @@ execute_stack_op (struct dwarf_expr_context *ctx,
          }
          break;
 
+       case DW_OP_call_frame_cfa:
+         result = (ctx->get_frame_cfa) (ctx->baton);
+         break;
+
        case DW_OP_GNU_push_tls_address:
          /* Variable is at a constant offset in the thread-local
          storage block into the objfile for the current thread and
This page took 0.025148 seconds and 4 git commands to generate.