gdb/
[deliverable/binutils-gdb.git] / gdb / dwarf2loc.c
index 67a31f8d050e674900addc77afe8918f0755de23..cadcc17e0bdfcf7621d5327dab744cda4a341d22 100644 (file)
@@ -458,7 +458,7 @@ dwarf_expr_get_base_type (struct dwarf_expr_context *ctx,
 
 /* See dwarf2loc.h.  */
 
-int entry_values_debug = 0;
+unsigned int entry_values_debug = 0;
 
 /* Helper to set entry_values_debug.  */
 
@@ -980,16 +980,24 @@ dwarf_expr_reg_to_entry_parameter (struct frame_info *frame,
                                   union call_site_parameter_u kind_u,
                                   struct dwarf2_per_cu_data **per_cu_return)
 {
-  CORE_ADDR func_addr = get_frame_func (frame);
-  CORE_ADDR caller_pc;
-  struct gdbarch *gdbarch = get_frame_arch (frame);
-  struct frame_info *caller_frame = get_prev_frame (frame);
+  CORE_ADDR func_addr, caller_pc;
+  struct gdbarch *gdbarch;
+  struct frame_info *caller_frame;
   struct call_site *call_site;
   int iparams;
   /* Initialize it just to avoid a GCC false warning.  */
   struct call_site_parameter *parameter = NULL;
   CORE_ADDR target_addr;
 
+  while (get_frame_type (frame) == INLINE_FRAME)
+    {
+      frame = get_prev_frame (frame);
+      gdb_assert (frame != NULL);
+    }
+
+  func_addr = get_frame_func (frame);
+  gdbarch = get_frame_arch (frame);
+  caller_frame = get_prev_frame (frame);
   if (gdbarch != frame_unwind_arch (frame))
     {
       struct minimal_symbol *msym = lookup_minimal_symbol_by_pc (func_addr);
@@ -3430,7 +3438,7 @@ locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream,
           && data[1 + leb128_size] == DW_OP_GNU_push_tls_address
           && piece_end_p (data + 2 + leb128_size, end))
     {
-      ULONGEST offset;
+      uint64_t offset;
 
       data = safe_read_uleb128 (data + 1, end, &offset);
       offset = dwarf2_read_addr_index (per_cu, offset);
@@ -4146,16 +4154,16 @@ extern initialize_file_ftype _initialize_dwarf2loc;
 void
 _initialize_dwarf2loc (void)
 {
-  add_setshow_zinteger_cmd ("entry-values", class_maintenance,
-                           &entry_values_debug,
-                           _("Set entry values and tail call frames "
-                             "debugging."),
-                           _("Show entry values and tail call frames "
-                             "debugging."),
-                           _("When non-zero, the process of determining "
-                             "parameter values from function entry point "
-                             "and tail call frames will be printed."),
-                           NULL,
-                           show_entry_values_debug,
-                           &setdebuglist, &showdebuglist);
+  add_setshow_zuinteger_cmd ("entry-values", class_maintenance,
+                            &entry_values_debug,
+                            _("Set entry values and tail call frames "
+                              "debugging."),
+                            _("Show entry values and tail call frames "
+                              "debugging."),
+                            _("When non-zero, the process of determining "
+                              "parameter values from function entry point "
+                              "and tail call frames will be printed."),
+                            NULL,
+                            show_entry_values_debug,
+                            &setdebuglist, &showdebuglist);
 }
This page took 0.026314 seconds and 4 git commands to generate.