Add set/show debug dwarf-line.
[deliverable/binutils-gdb.git] / gdb / dwarf2loc.c
index fc0f1122ae9afdb1f05de357222ebed9df999e22..3aa8ddd5b8276a66e12e0958496b63356101767c 100644 (file)
@@ -39,9 +39,9 @@
 #include "dwarf2-frame.h"
 #include "compile/compile.h"
 
-extern int dwarf2_always_disassemble;
+extern int dwarf_always_disassemble;
 
-static const struct dwarf_expr_context_funcs dwarf_expr_ctx_funcs;
+extern const struct dwarf_expr_context_funcs dwarf_expr_ctx_funcs;
 
 static struct value *dwarf2_evaluate_loc_desc_full (struct type *type,
                                                    struct frame_info *frame,
@@ -983,14 +983,13 @@ struct call_site_chain *
 call_site_find_chain (struct gdbarch *gdbarch, CORE_ADDR caller_pc,
                      CORE_ADDR callee_pc)
 {
-  volatile struct gdb_exception e;
   struct call_site_chain *retval = NULL;
 
-  TRY_CATCH (e, RETURN_MASK_ERROR)
+  TRY
     {
       retval = call_site_find_chain_1 (gdbarch, caller_pc, callee_pc);
     }
-  if (e.reason < 0)
+  CATCH (e, RETURN_MASK_ERROR)
     {
       if (e.error == NO_ENTRY_VALUE_ERROR)
        {
@@ -1002,6 +1001,8 @@ call_site_find_chain (struct gdbarch *gdbarch, CORE_ADDR caller_pc,
       else
        throw_exception (e);
     }
+  END_CATCH
+
   return retval;
 }
 
@@ -2151,7 +2152,7 @@ static const struct lval_funcs pieced_value_funcs = {
 
 /* Virtual method table for dwarf2_evaluate_loc_desc_full below.  */
 
-static const struct dwarf_expr_context_funcs dwarf_expr_ctx_funcs =
+const struct dwarf_expr_context_funcs dwarf_expr_ctx_funcs =
 {
   dwarf_expr_read_addr_from_reg,
   dwarf_expr_get_reg_value,
@@ -2183,7 +2184,6 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
   struct dwarf_expr_context *ctx;
   struct cleanup *old_chain, *value_chain;
   struct objfile *objfile = dwarf2_per_cu_objfile (per_cu);
-  volatile struct gdb_exception ex;
 
   if (byte_offset < 0)
     invalid_synthetic_pointer ();
@@ -2206,11 +2206,11 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
   ctx->baton = &baton;
   ctx->funcs = &dwarf_expr_ctx_funcs;
 
-  TRY_CATCH (ex, RETURN_MASK_ERROR)
+  TRY
     {
       dwarf_expr_eval (ctx, data, size);
     }
-  if (ex.reason < 0)
+  CATCH (ex, RETURN_MASK_ERROR)
     {
       if (ex.error == NOT_AVAILABLE_ERROR)
        {
@@ -2229,6 +2229,7 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
       else
        throw_exception (ex);
     }
+  END_CATCH
 
   if (ctx->num_pieces > 0)
     {
@@ -2525,8 +2526,13 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
            break;
        if (pinfo == NULL)
          error (_("cannot find reference address for offset property"));
-       val = value_at (baton->offset_info.type,
-                       pinfo->addr + baton->offset_info.offset);
+       if (pinfo->valaddr != NULL)
+         val = value_from_contents
+                 (baton->offset_info.type,
+                  pinfo->valaddr + baton->offset_info.offset);
+       else
+         val = value_at (baton->offset_info.type,
+                         pinfo->addr + baton->offset_info.offset);
        *value = value_as_address (val);
        return 1;
       }
@@ -4131,7 +4137,7 @@ locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr,
       else
        fprintf_filtered (stream, _(", and "));
 
-      if (!dwarf2_always_disassemble)
+      if (!dwarf_always_disassemble)
        {
          data = locexpr_describe_location_piece (symbol, stream,
                                                  addr, objfile, per_cu,
@@ -4150,7 +4156,7 @@ locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr,
                                               get_objfile_arch (objfile),
                                               addr_size, offset_size, data,
                                               data, end, 0,
-                                              dwarf2_always_disassemble,
+                                              dwarf_always_disassemble,
                                               per_cu);
        }
 
This page took 0.02725 seconds and 4 git commands to generate.