public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
* [SCM]  archer-jankratochvil-entryval: .
@ 2011-09-05  0:41 jkratoch
  0 siblings, 0 replies; 3+ messages in thread
From: jkratoch @ 2011-09-05  0:41 UTC (permalink / raw)
  To: archer-commits

The branch, archer-jankratochvil-entryval has been updated
       via  d84188a6cafd076077f90027925a9581c3623ec9 (commit)
      from  f5fbe69439685c8bd7baa5d859e4b1118ee27903 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit d84188a6cafd076077f90027925a9581c3623ec9
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Mon Sep 5 02:41:08 2011 +0200

    .

-----------------------------------------------------------------------

Summary of changes:
 gdb/dwarf2-frame.c |    2 +-
 gdb/dwarf2expr.c   |  215 +++++-----------------------------------
 gdb/dwarf2expr.h   |   26 ++----
 gdb/dwarf2loc.c    |  279 ++++++++++++++++++++++++++++++----------------------
 gdb/dwarf2read.c   |   59 ++++-------
 gdb/gdbtypes.h     |   20 ++--
 6 files changed, 229 insertions(+), 372 deletions(-)

First 500 lines of diff:
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c
index 74853d9..ff04eb8 100644
--- a/gdb/dwarf2-frame.c
+++ b/gdb/dwarf2-frame.c
@@ -355,7 +355,7 @@ static const struct dwarf_expr_context_funcs dwarf2_frame_ctx_funcs =
   ctx_no_get_tls_address,
   ctx_no_dwarf_call,
   ctx_no_get_base_type,
-  ctx_no_push_dwarf_reg_entry_value
+  ctx_no_push_dwarf_block_entry_value
 };
 
 static CORE_ADDR
diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c
index b8d3e15..91ab616 100644
--- a/gdb/dwarf2expr.c
+++ b/gdb/dwarf2expr.c
@@ -391,7 +391,8 @@ read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end, ULONGEST * r)
 	break;
       shift += 7;
     }
-  *r = result;
+  if (r)
+    *r = result;
   return buf;
 }
 
@@ -481,165 +482,6 @@ dwarf_get_base_type (struct dwarf_expr_context *ctx, ULONGEST die, int size)
   return result;
 }
 
-/* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_reg* or single
-   DW_OP_GNU_regval_type return the DWARF register number.
-   Otherwise return -1.  */
-
-int
-dwarf_block_to_dwarf_reg (const gdb_byte *buf, const gdb_byte *buf_end)
-{
-  ULONGEST dwarf_reg;
-
-  if (buf_end <= buf)
-    return -1;
-  if (*buf >= DW_OP_reg0 && *buf <= DW_OP_reg31)
-    {
-      if (buf_end - buf != 1)
-	return -1;
-      return *buf - DW_OP_reg0;
-    }
-  if (*buf == DW_OP_regx)
-    {
-      buf++;
-      buf = read_uleb128 (buf, buf_end, &dwarf_reg);
-      if (buf != buf_end || (int) dwarf_reg != dwarf_reg)
-	return -1;
-      return dwarf_reg;
-    }
-  if (*buf == DW_OP_GNU_regval_type)
-    {
-      /* Ignored.  */
-      ULONGEST type_die;
-
-      buf++;
-      buf = read_uleb128 (buf, buf_end, &dwarf_reg);
-      buf = read_uleb128 (buf, buf_end, &type_die);
-      if (buf != buf_end || (int) dwarf_reg != dwarf_reg)
-	return -1;
-      return dwarf_reg;
-    }
-  return -1;
-}
-
-/* If <BUF..BUF_END] contains DW_FORM_block* with just DW_OP_breg*(0) and
-   DW_OP_deref* return the DWARF register number.  Otherwise return -1.
-   DEREF_SIZE_RETURN contains -1 for DW_OP_deref; otherwise it contains the
-   size from DW_OP_deref_size.  */
-
-int
-dwarf_block_to_dwarf_reg_deref (const gdb_byte *buf, const gdb_byte *buf_end,
-				CORE_ADDR *deref_size_return)
-{
-  ULONGEST dwarf_reg;
-  LONGEST offset;
-
-  if (buf_end <= buf)
-    return -1;
-  if (*buf >= DW_OP_breg0 && *buf <= DW_OP_breg31)
-    {
-      dwarf_reg = *buf - DW_OP_breg0;
-      buf++;
-    }
-  else if (*buf == DW_OP_bregx)
-    {
-      buf++;
-      buf = read_uleb128 (buf, buf_end, &dwarf_reg);
-      if ((int) dwarf_reg != dwarf_reg)
-	return -1;
-    }
-  else
-    return -1;
-
-  buf = read_sleb128 (buf, buf_end, &offset);
-  if (offset != 0)
-    return -1;
-
-  if (buf >= buf_end)
-    return -1;
-
-  if (*buf == DW_OP_deref)
-    {
-      buf++;
-      *deref_size_return = -1;
-    }
-  else if (*buf == DW_OP_deref_size)
-    {
-      buf++;
-      if (buf >= buf_end)
-	return -1;
-      *deref_size_return = *buf++;
-    }
-  else
-    return -1;
-
-  if (buf != buf_end)
-    return -1;
-
-  return dwarf_reg;
-}
-
-/* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_bregSP(X) fill
-   in SP_OFFSET_RETURN with the X offset and return 1.  Otherwise return 0.
-   The matched SP register number depends on GDBARCH.  */
-
-int
-dwarf_block_to_sp_offset (struct gdbarch *gdbarch, const gdb_byte *buf,
-			  const gdb_byte *buf_end, CORE_ADDR *sp_offset_return)
-{
-  ULONGEST dwarf_reg;
-  LONGEST sp_offset;
-
-  if (buf_end <= buf)
-    return 0;
-  if (*buf >= DW_OP_breg0 && *buf <= DW_OP_breg31)
-    {
-      dwarf_reg = *buf - DW_OP_breg0;
-      buf++;
-    }
-  else
-    {
-      if (*buf != DW_OP_bregx)
-	return 0;
-      buf++;
-      buf = read_uleb128 (buf, buf_end, &dwarf_reg);
-    }
-
-  if (gdbarch_dwarf2_reg_to_regnum (gdbarch, dwarf_reg)
-      != gdbarch_sp_regnum (gdbarch))
-    return 0;
-
-  buf = read_sleb128 (buf, buf_end, &sp_offset);
-  *sp_offset_return = sp_offset;
-  if (buf != buf_end || sp_offset != (LONGEST) *sp_offset_return)
-    return 0;
-
-  return 1;
-}
-
-/* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_fbreg(X) fill
-   in FB_OFFSET_RETURN with the X offset and return 1.  Otherwise return 0.  */
-
-int
-dwarf_block_to_fb_offset (const gdb_byte *buf, const gdb_byte *buf_end,
-			  CORE_ADDR *fb_offset_return)
-{
-  LONGEST fb_offset;
-
-  if (buf_end <= buf)
-    return 0;
-
-  if (*buf != DW_OP_fbreg)
-    return 0;
-  buf++;
-
-  buf = read_sleb128 (buf, buf_end, &fb_offset);
-  *fb_offset_return = fb_offset;
-  if (buf != buf_end || fb_offset != (LONGEST) *fb_offset_return)
-    return 0;
-
-  return 1;
-}
-
 /* The engine for the expression evaluator.  Using the context in CTX,
    evaluate the expression between OP_PTR and OP_END.  */
 
@@ -1348,38 +1190,37 @@ execute_stack_op (struct dwarf_expr_context *ctx,
 	case DW_OP_GNU_entry_value:
 	  {
 	    ULONGEST len;
-	    int dwarf_reg;
-	    CORE_ADDR deref_size;
 
 	    op_ptr = read_uleb128 (op_ptr, op_end, &len);
 	    if (op_ptr + len > op_end)
 	      error (_("DW_OP_GNU_entry_value: too few bytes available."));
 
-	    dwarf_reg = dwarf_block_to_dwarf_reg (op_ptr, op_ptr + len);
-	    if (dwarf_reg != -1)
+	    if (len >= 1 && op_ptr[0] == DW_OP_GNU_regval_type)
 	      {
-		op_ptr += len;
-		ctx->funcs->push_dwarf_reg_entry_value (ctx, dwarf_reg,
-							0 /* unused */, -1);
-		goto no_push;
-	      }
+		ULONGEST reg;
+		const gdb_byte *reg_start, *reg_end;
 
-	    dwarf_reg = dwarf_block_to_dwarf_reg_deref (op_ptr, op_ptr + len,
-							&deref_size);
-	    if (dwarf_reg != -1)
-	      {
-		if (deref_size == -1)
-		  deref_size = ctx->addr_size;
-		op_ptr += len;
-		ctx->funcs->push_dwarf_reg_entry_value (ctx, dwarf_reg,
-							0 /* unused */,
-							deref_size);
-		goto no_push;
+		reg_start = ++op_ptr;
+		op_ptr = read_uleb128 (op_ptr, op_end, &reg);
+		reg_end = op_ptr;
+		op_ptr = read_uleb128 (op_ptr, op_end, NULL);
+		if (op_ptr == reg_start - 1 + len)
+		  {
+		    size_t fake_len = 1 + reg_end - reg_start;
+		    gdb_byte *fake = alloca (fake_len);
+
+		    fake[0] = DW_OP_regx;
+		    memcpy (&fake[1], reg_start, reg_end - reg_start);
+		    ctx->funcs->push_dwarf_block_entry_value (ctx, fake,
+		                                              fake_len);
+		    goto no_push;
+		  }
+		op_ptr = reg_start - 1;
 	      }
 
-	    error (_("DWARF-2 expression error: DW_OP_GNU_entry_value is "
-		     "supported only for single DW_OP_reg* "
-		     "or for DW_OP_breg*(0)+DW_OP_deref*"));
+	    ctx->funcs->push_dwarf_block_entry_value (ctx, op_ptr, len);
+	    op_ptr += len;
+	    goto no_push;
 	  }
 
 	case DW_OP_GNU_const_type:
@@ -1525,12 +1366,12 @@ ctx_no_get_base_type (struct dwarf_expr_context *ctx, size_t die)
   error (_("Support for typed DWARF is not supported in this context"));
 }
 
-/* Stub dwarf_expr_context_funcs.push_dwarf_reg_entry_value implementation.  */
+/* Stub dwarf_expr_context_funcs.push_dwarf_block_entry_value
+   implementation.  */
 
 void
-ctx_no_push_dwarf_reg_entry_value (struct dwarf_expr_context *ctx,
-				   int dwarf_reg, CORE_ADDR fb_offset,
-				   CORE_ADDR deref_size)
+ctx_no_push_dwarf_block_entry_value (struct dwarf_expr_context *ctx,
+				     const gdb_byte *block, size_t block_len)
 {
   internal_error (__FILE__, __LINE__,
 		  _("Support for DW_OP_GNU_entry_value is unimplemented"));
diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h
index 1f7f15a..88a6e5a 100644
--- a/gdb/dwarf2expr.h
+++ b/gdb/dwarf2expr.h
@@ -63,15 +63,16 @@ struct dwarf_expr_context_funcs
   struct type *(*get_base_type) (struct dwarf_expr_context *ctx, size_t die);
 
   /* Push on DWARF stack an entry evaluated for DW_TAG_GNU_call_site's
+FIXME
      DWARF_REG/FB_OFFSET at the caller of specified BATON.  If DWARF register
      number DWARF_REG specifying the push_dwarf_reg_entry_value parameter is
      not -1 FB_OFFSET is ignored.  Otherwise FB_OFFSET specifies stack
      parameter offset against caller's stack pointer (which equals the callee's
      frame base).  If DEREF_SIZE is not -1 then use
      DW_AT_GNU_call_site_data_value instead of DW_AT_GNU_call_site_value.  */
-  void (*push_dwarf_reg_entry_value) (struct dwarf_expr_context *ctx,
-				      int dwarf_reg, CORE_ADDR fb_offset,
-				      CORE_ADDR deref_size);
+  void (*push_dwarf_block_entry_value) (struct dwarf_expr_context *ctx,
+					const gdb_byte *block,
+					size_t block_len);
 
 #if 0
   /* Not yet implemented.  */
@@ -264,19 +265,6 @@ const char *dwarf_stack_op_name (unsigned int);
 void dwarf_expr_require_composition (const gdb_byte *, const gdb_byte *,
 				     const char *);
 
-int dwarf_block_to_dwarf_reg (const gdb_byte *buf, const gdb_byte *buf_end);
-
-int dwarf_block_to_sp_offset (struct gdbarch *gdbarch, const gdb_byte *buf,
-			      const gdb_byte *buf_end,
-			      CORE_ADDR *sp_offset_return);
-
-int dwarf_block_to_fb_offset (const gdb_byte *buf, const gdb_byte *buf_end,
-			      CORE_ADDR *fb_offset_return);
-
-int dwarf_block_to_dwarf_reg_deref (const gdb_byte *buf,
-				    const gdb_byte *buf_end,
-				    CORE_ADDR *deref_size_return);
-
 /* Stub dwarf_expr_context_funcs implementations.  */
 
 CORE_ADDR ctx_no_read_reg (void *baton, int regnum);
@@ -287,8 +275,8 @@ CORE_ADDR ctx_no_get_frame_pc (void *baton);
 CORE_ADDR ctx_no_get_tls_address (void *baton, CORE_ADDR offset);
 void ctx_no_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset);
 struct type *ctx_no_get_base_type (struct dwarf_expr_context *ctx, size_t die);
-void ctx_no_push_dwarf_reg_entry_value (struct dwarf_expr_context *ctx,
-					int dwarf_reg, CORE_ADDR fb_offset,
-					CORE_ADDR deref_size);
+void ctx_no_push_dwarf_block_entry_value (struct dwarf_expr_context *ctx,
+					  const gdb_byte *block,
+					  size_t block_len);
 
 #endif /* dwarf2expr.h */
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index 583a6ba..c175dc8 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -50,6 +50,11 @@ static void dwarf_expr_frame_base_1 (struct symbol *framefunc, CORE_ADDR pc,
 
 static const struct dwarf_expr_context_funcs dwarf_expr_ctx_funcs;
 
+static void dwarf2_expr_setup_and_eval (struct dwarf_expr_context *ctx,
+					const gdb_byte *block, size_t block_len,
+					struct dwarf2_per_cu_data *per_cu,
+					struct frame_info *frame);
+
 static struct value *dwarf2_evaluate_loc_desc_full (struct type *type,
 						    struct frame_info *frame,
 						    const gdb_byte *data,
@@ -789,18 +794,20 @@ call_site_find_chain (struct gdbarch *gdbarch, CORE_ADDR caller_pc,
 
 /* Fetch call_site_parameter from caller matching the parameters.  FRAME is for
    callee.  See DWARF_REG and FB_OFFSET description at struct
-   dwarf_expr_context_funcs->push_dwarf_reg_entry_value.
+   dwarf_expr_context_funcs->push_dwarf_block_entry_value.
 
    Function always returns non-NULL, it throws NO_ENTRY_VALUE_ERROR
    otherwise.  */
 
 static struct call_site_parameter *
-dwarf_expr_dwarf_reg_entry_value (struct frame_info *frame, int dwarf_reg,
-				  CORE_ADDR fb_offset)
+dwarf_block_to_entry_parameter (struct frame_info *frame, const gdb_byte *block,
+				size_t block_len,
+				struct dwarf2_per_cu_data *block_per_cu,
+				struct dwarf2_per_cu_data **per_cu_return)
 {
   CORE_ADDR func_addr = get_frame_func (frame);
   CORE_ADDR caller_pc;
-  struct gdbarch *caller_gdbarch = frame_unwind_arch (frame);
+  struct gdbarch *gdbarch = get_frame_arch (frame);
   struct frame_info *caller_frame = get_prev_frame (frame);
   struct call_site *call_site;
   int iparams;
@@ -808,6 +815,28 @@ dwarf_expr_dwarf_reg_entry_value (struct frame_info *frame, int dwarf_reg,
   struct dwarf2_locexpr_baton *dwarf_block;
   struct call_site_parameter *parameter;
   CORE_ADDR target_addr;
+  struct dwarf_expr_context *callee_ctx;
+  struct cleanup *old_chain;
+
+  if (gdbarch != frame_unwind_arch (frame))
+    {
+      struct minimal_symbol *msym = lookup_minimal_symbol_by_pc (func_addr);
+      struct gdbarch *caller_gdbarch = frame_unwind_arch (frame);
+
+      throw_error (NO_ENTRY_VALUE_ERROR,
+		   _("DW_OP_GNU_entry_value resolving callee gdbarch %s "
+		     "(of %s (%s)) does not match caller gdbarch %s"),
+		   gdbarch_bfd_arch_info (gdbarch)->printable_name,
+		   paddress (gdbarch, func_addr),
+		   msym == NULL ? "???" : SYMBOL_PRINT_NAME (msym),
+		   gdbarch_bfd_arch_info (caller_gdbarch)->printable_name);
+    }
+
+  callee_ctx = new_dwarf_expr_context ();
+  old_chain = make_cleanup_free_dwarf_expr_context (callee_ctx);
+  make_cleanup_value_free_to_mark (value_mark ());
+  dwarf2_expr_setup_and_eval (callee_ctx, block, block_len, block_per_cu,
+			      frame);
 
   if (caller_frame == NULL)
     {
@@ -815,7 +844,7 @@ dwarf_expr_dwarf_reg_entry_value (struct frame_info *frame, int dwarf_reg,
 
       throw_error (NO_ENTRY_VALUE_ERROR, _("DW_OP_GNU_entry_value resolving "
 					   "requires caller of %s (%s)"),
-		   paddress (get_frame_arch (frame), func_addr),
+		   paddress (gdbarch, func_addr),
 		   msym == NULL ? "???" : SYMBOL_PRINT_NAME (msym));
     }
   caller_pc = get_frame_pc (caller_frame);
@@ -830,7 +859,7 @@ dwarf_expr_dwarf_reg_entry_value (struct frame_info *frame, int dwarf_reg,
       throw_error (NO_ENTRY_VALUE_ERROR,
 		   _("DW_OP_GNU_entry_value resolving cannot find "
 		     "DW_TAG_GNU_call_site %s in %s"),
-		   paddress (caller_gdbarch, caller_pc),
+		   paddress (gdbarch, caller_pc),
 		   msym == NULL ? "???" : SYMBOL_PRINT_NAME (msym));
     }
 
@@ -846,24 +875,61 @@ dwarf_expr_dwarf_reg_entry_value (struct frame_info *frame, int dwarf_reg,
 		     "but the called frame is for %s at %s"),
 		   (target_msym == NULL ? "???"
 					: SYMBOL_PRINT_NAME (target_msym)),
-		   paddress (caller_gdbarch, target_addr),
+		   paddress (gdbarch, target_addr),
 		   func_msym == NULL ? "???" : SYMBOL_PRINT_NAME (func_msym),
-		   paddress (caller_gdbarch, func_addr));
+		   paddress (gdbarch, func_addr));
     }
 
   /* No entry value based parameters would be reliable if this function can
      call itself via tail calls.  */
-  func_verify_no_selftailcall (caller_gdbarch, func_addr);
+  func_verify_no_selftailcall (gdbarch, func_addr);
 
   for (iparams = 0; iparams < call_site->parameter_count; iparams++)
     {
+      struct dwarf_expr_context *caller_ctx;
+      struct cleanup *caller_chain;
+      int match = 0;
+
       parameter = &call_site->parameter[iparams];
-      if (parameter->dwarf_reg == -1 && dwarf_reg == -1)
-	{
-	  if (parameter->fb_offset == fb_offset)
-	    break;
-	}
-      else if (parameter->dwarf_reg == dwarf_reg)
+
+      caller_ctx = new_dwarf_expr_context ();
+      caller_chain = make_cleanup_free_dwarf_expr_context (caller_ctx);
+      make_cleanup_value_free_to_mark (value_mark ());
+      dwarf2_expr_setup_and_eval (caller_ctx, parameter->location,
+                                  parameter->location_size, call_site->per_cu,
+				  caller_frame);
+
+      if (callee_ctx->num_pieces == 0 && caller_ctx->num_pieces == 0
+          && callee_ctx->location == caller_ctx->location)
+	switch (callee_ctx->location)
+	  {
+	  case DWARF_VALUE_REGISTER:
+	    {
+	      LONGEST callee_dwarf_reg, caller_dwarf_reg;
+
+	      callee_dwarf_reg = value_as_long (dwarf_expr_fetch (callee_ctx, 0));
+	      caller_dwarf_reg = value_as_long (dwarf_expr_fetch (caller_ctx, 0));
+	      if (callee_dwarf_reg == caller_dwarf_reg)
+		match = 1;
+
+	      break;
+	    }
+
+	  case DWARF_VALUE_MEMORY:
+	    {
+	      CORE_ADDR callee_address = dwarf_expr_fetch_address (callee_ctx, 0);
+	      CORE_ADDR caller_address = dwarf_expr_fetch_address (caller_ctx, 0);
+
+	      if (callee_address == caller_address)
+		match = 1;
+
+	      break;
+	    }
+	  }
+
+      do_cleanups (caller_chain);
+
+      if (match)
 	break;
     }
   if (iparams == call_site->parameter_count)
@@ -872,46 +938,20 @@ dwarf_expr_dwarf_reg_entry_value (struct frame_info *frame, int dwarf_reg,
 
       /* DW_TAG_GNU_call_site_parameter will be missing just if GCC could not
 	 determine its value.  */
-      throw_error (NO_ENTRY_VALUE_ERROR, _("Cannot find DWARF reg%d/fbreg(%s) "
+      throw_error (NO_ENTRY_VALUE_ERROR, _("Cannot find matching parameter "
 					   "at DW_TAG_GNU_call_site %s at %s"),
-		   dwarf_reg, paddress (caller_gdbarch, fb_offset),
-		   paddress (caller_gdbarch, caller_pc),
+		   paddress (gdbarch, caller_pc),
 		   msym == NULL ? "???" : SYMBOL_PRINT_NAME (msym)); 
     }
 
+  do_cleanups (old_chain);


hooks/post-receive
--
Repository for Project Archer.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [SCM]  archer-jankratochvil-entryval: .
@ 2011-09-08 22:28 jkratoch
  0 siblings, 0 replies; 3+ messages in thread
From: jkratoch @ 2011-09-08 22:28 UTC (permalink / raw)
  To: archer-commits

The branch, archer-jankratochvil-entryval has been updated
       via  9de17981e9a98698994ddfb36914414168110033 (commit)
       via  eae2ff380ea0ffcea465233ab1134d02181f4384 (commit)
       via  4cd66160f11e988b9a449a01e2042466971f0de0 (commit)
       via  c0d349bb5678e16c815fecc4e04cc4c2bef3ca8c (commit)
       via  a50d0e8f3345c82429c82721415715dd133db7ef (commit)
       via  06b548ffbeeba784a82a39e78860a45d3f9ea6e7 (commit)
       via  c409b627eb40bacecae954a6e6e1cabc85da2d54 (commit)
       via  2b5115d18dfafaf2d108841ba863a2347bf0a8e3 (commit)
       via  d174d45a684070a22bf3bffa26cbea4925208874 (commit)
       via  891b80e4d19887c85bc64293fd71a2b6fc6939d7 (commit)
       via  1a354352950c69e5e2e4d37c784cbfb9ee5c04ca (commit)
       via  618b0d0879a0d934a4db2b5d2c8c9ad7b57c4d9e (commit)
       via  fa3edaa7690a540eac2816966cb108cd31bbe0a0 (commit)
       via  4298b223a47af9fddbe594fc626c4254de66997b (commit)
       via  e8783d97abca24e7353d69011ac303a37172f086 (commit)
       via  42a00004a19d04d04b5f3f0bd08406013b09e7f6 (commit)
       via  563691598bc098149e1210ca4e4785a1a5e8443d (commit)
       via  0c9a0f75f08338582a3f572d003dae8743b41cbc (commit)
       via  34681a565422825ae0722787d5387fdd43d1b799 (commit)
       via  aa5d6ed0de52ab818e63224afd802b936e3b4644 (commit)
       via  ab9608258b8a7fdb40d55559c4faa9711b1c0db4 (commit)
       via  c32085d92e6ddef4d514838322ecd1aea70ffb77 (commit)
       via  8523d0d4e0b223e37c21870e4eb17c5094c317e2 (commit)
       via  118b36d826dc33e6a9d568be292f5f3d8f62c4b3 (commit)
       via  ee8c4f05f2bf94f34924848fb2e8bfe3bbecd6e5 (commit)
       via  e924e66b5c9cb1edb92de58410107aaf53d11e6c (commit)
       via  045bfe92b0f4990510c84dfe7b8470bfbf8c320d (commit)
       via  550563c1c966faa2594a2b8902df95ad71b36131 (commit)
       via  564e210c52b1e2de45498a2a2360bcb8b521c13c (commit)
       via  b84a0f4d1e9b180dff1b07989e956b4859cf5809 (commit)
       via  a18820d1dd7047686fa70245faad7ebaebebc165 (commit)
       via  af7d02ee36c4c7715bbbc8eb6729389133200274 (commit)
       via  893bd2e5357bad588bbcdd61da8315f483be3e08 (commit)
       via  29b937e31d78b4a9d036fe425b0ee4e3ab1a9609 (commit)
       via  fdb1dad9291bd20666ec8938137c3e9852328f37 (commit)
       via  07f24d5ce79067e7753199cd2fabcd97d60a3e69 (commit)
       via  4d0765fe27f5de1ff94db3c76c0386821ae13b7f (commit)
       via  99c4255f19047c004b50c2672353df7a1ed98389 (commit)
       via  1c7ceb7dc272ef5dc37e759bda204b7fa52982d4 (commit)
       via  341eac093386bf8a9fc40371f1d96a5c6f244024 (commit)
       via  7abfa7a472e202528e07b9b8d0c89920a8813241 (commit)
       via  8616609ce4b0e9b0e3f0651d01e3ee4507d021af (commit)
       via  81554f3fd59ad04ac0b3fa3295a7e35ac11fe6f4 (commit)
       via  3d0a5ee6551a1f2036a574f7802c1abc47eada41 (commit)
       via  32c2066039dab949ffee3f229caae170c283b422 (commit)
       via  997e2329080d16647f6a466b2dce1657ce4d2183 (commit)
       via  17174e6aac2869b41398d66e542b2e924396eecc (commit)
       via  ac07666749fcad712775b5a64a4c58abb3af15ad (commit)
       via  c4eb8a1ab95ffd9876cc11744daf433bd946194c (commit)
       via  b0106514bfeb2e4d3b24e923aba92ef4c635a179 (commit)
       via  e53e633a3f09f7fba923872f536a4f4276d6ea2c (commit)
       via  8ac81feb44e603695f2c04f243453b159382dcf4 (commit)
       via  44a017f92479a01b43ed9012b36ffbbf72b242b3 (commit)
       via  ea9812279fe436be9a010d07ef1dbe465199a3d7 (commit)
       via  223b94cd31189790fd589618830f9d7a987f20a2 (commit)
       via  0d0c9d4edec15d0f470bf193d541444c00d6bb52 (commit)
       via  e6297a6a3a9bbf2b4c4f38c0f6590fcf3551719a (commit)
       via  09ddc54333cdbc2f695fd83cbf091a7d5a1c3604 (commit)
       via  1ba50975b735290741c573d101b3339407ccc84d (commit)
       via  9d1f51be0b0f3c47098cc061dd29c1ed29cd04ed (commit)
      from  c8087d16f579f754a7f235854fa1fc7d3ef1c00f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 9de17981e9a98698994ddfb36914414168110033
Merge: eae2ff3 c8087d1
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:27:13 2011 +0200

    .

commit eae2ff380ea0ffcea465233ab1134d02181f4384
Merge: 42a0000 4cd6616
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:12 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp-entrybtref' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp-entrybtref-final

commit 4cd66160f11e988b9a449a01e2042466971f0de0
Merge: 5636915 c0d349b
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:11 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp-entrybtref

commit c0d349bb5678e16c815fecc4e04cc4c2bef3ca8c
Merge: 0c9a0f7 a50d0e8
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:11 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp

commit a50d0e8f3345c82429c82721415715dd133db7ef
Merge: 34681a5 06b548f
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:11 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref

commit 06b548ffbeeba784a82a39e78860a45d3f9ea6e7
Merge: aa5d6ed c409b62
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:10 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull

commit c409b627eb40bacecae954a6e6e1cabc85da2d54
Merge: 618b0d0 2b5115d
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:10 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt

commit 2b5115d18dfafaf2d108841ba863a2347bf0a8e3
Merge: 8523d0d d174d45
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:09 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg

commit d174d45a684070a22bf3bffa26cbea4925208874
Merge: 118b36d 891b80e
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:08 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe' into pending-funcstuff-basic-tailread-tailframe-selftail

commit 891b80e4d19887c85bc64293fd71a2b6fc6939d7
Merge: 550563c 1a35435
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:08 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread' into pending-funcstuff-basic-tailread-tailframe

commit 1a354352950c69e5e2e4d37c784cbfb9ee5c04ca
Merge: 564e210 fa3edaa
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:07 2011 +0200

    Merge branch 'pending-funcstuff-basic' into pending-funcstuff-basic-tailread

commit 618b0d0879a0d934a4db2b5d2c8c9ad7b57c4d9e
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:21:00 2011 +0200

    .

commit fa3edaa7690a540eac2816966cb108cd31bbe0a0
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:20:32 2011 +0200

    .

commit 4298b223a47af9fddbe594fc626c4254de66997b
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:19:31 2011 +0200

    .

commit e8783d97abca24e7353d69011ac303a37172f086
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:18:40 2011 +0200

    .

commit 42a00004a19d04d04b5f3f0bd08406013b09e7f6
Merge: e120000 5636915
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:12:49 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp-entrybtref' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp-entrybtref-final

commit 563691598bc098149e1210ca4e4785a1a5e8443d
Merge: 51d4b8d 0c9a0f7
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:12:37 2011 +0200

    .

commit 0c9a0f75f08338582a3f572d003dae8743b41cbc
Merge: 148fde3 34681a5
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:10:01 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp

commit 34681a565422825ae0722787d5387fdd43d1b799
Merge: b5d3b5f aa5d6ed
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:09:58 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref

commit aa5d6ed0de52ab818e63224afd802b936e3b4644
Merge: 8a5851c ab96082
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:09:56 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull

commit ab9608258b8a7fdb40d55559c4faa9711b1c0db4
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:09:40 2011 +0200

    .

commit c32085d92e6ddef4d514838322ecd1aea70ffb77
Merge: ee8c4f0 8523d0d
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:02:43 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt

commit 8523d0d4e0b223e37c21870e4eb17c5094c317e2
Merge: e924e66 118b36d
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:02:09 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg

commit 118b36d826dc33e6a9d568be292f5f3d8f62c4b3
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:02:02 2011 +0200

    .

commit ee8c4f05f2bf94f34924848fb2e8bfe3bbecd6e5
Merge: 091f633 e924e66
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 9 00:00:22 2011 +0200

    .

commit e924e66b5c9cb1edb92de58410107aaf53d11e6c
Merge: e509b30 045bfe9
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 23:48:44 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg

commit 045bfe92b0f4990510c84dfe7b8470bfbf8c320d
Merge: bbf4127 550563c
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 23:48:43 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe' into pending-funcstuff-basic-tailread-tailframe-selftail

commit 550563c1c966faa2594a2b8902df95ad71b36131
Merge: 7ae7434 564e210
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 23:48:40 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread' into pending-funcstuff-basic-tailread-tailframe

commit 564e210c52b1e2de45498a2a2360bcb8b521c13c
Merge: 304d54c b84a0f4
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 23:47:44 2011 +0200

    Merge branch 'pending-funcstuff-basic' into pending-funcstuff-basic-tailread

commit b84a0f4d1e9b180dff1b07989e956b4859cf5809
Merge: 893bd2e a18820d
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 23:46:22 2011 +0200

    .

commit a18820d1dd7047686fa70245faad7ebaebebc165
Merge: 63013ca af7d02e
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 23:45:38 2011 +0200

    Merge branch 'pending' into pending-funcstuff

commit af7d02ee36c4c7715bbbc8eb6729389133200274
Merge: 787df05 29b937e
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 23:45:28 2011 +0200

    Merge remote-tracking branch 'gdb/master' into pending

commit 893bd2e5357bad588bbcdd61da8315f483be3e08
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 23:45:00 2011 +0200

    .

commit 29b937e31d78b4a9d036fe425b0ee4e3ab1a9609
Author: Doug Evans <dje@google.com>
Date:   Thu Sep 8 19:51:25 2011 +0000

    	* py-cmd.c: Some minor formatting fixes.
    	(gdbpy_parse_command_name): Rename text arg to name, make const.
    	All callers updated.
    	* python-internal.h (gdbpy_parse_command_name): Update.

commit fdb1dad9291bd20666ec8938137c3e9852328f37
Author: David S. Miller <davem@redhat.com>
Date:   Thu Sep 8 19:03:17 2011 +0000

    opcodes/
    
    	* sparc-opc.c (sparc_opcodes): Add entry for 'save simm13,regrs1,regrd'
    	This has been reported as being accepted by the Sun assmebler.
    
    gas/testsuite/
    
    	* gas/sparc/save-args.[sd]: New test.
    	* gas/sparc/sparc.exp: Run new test.

commit 07f24d5ce79067e7753199cd2fabcd97d60a3e69
Author: David S. Miller <davem@redhat.com>
Date:   Thu Sep 8 19:01:10 2011 +0000

    opcodes/
    
    	The changes below bring 'mov' and 'ticc' instructions into line
    	with the V8 SPARC Architecture Manual.
    	* sparc-opc.c (sparc_opcodes): Add entry for 'ticc imm + regrs1'.
    	* sparc-opc.c (sparc_opcodes): Add alias entries for
    	'mov regrs2,%asrX'; 'mov regrs2,%y'; 'mov regrs2,%prs';
    	'mov regrs2,%wim' and 'mov regrs2,%tbr'.
    	* sparc-opc.c (sparc_opcodes): Move/Change entries for
    	'mov imm,%asrX'; 'mov imm,%y'; 'mov imm,%prs'; 'mov imm,%wim'
    	and 'mov imm,%tbr'.
    	* sparc-opc.c (sparc_opcodes): Add wr alias entries to match above
    	mov aliases.
    
    gas/testsuite/
    
    	* gas/sparc/ticc-imm-reg.[sd]: New test.
    	* gas/sparc/v8-movwr-imm.[sd]: New test.
    	* gas/sparc/sparc.exp: Run new tests.

commit 4d0765fe27f5de1ff94db3c76c0386821ae13b7f
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 17:40:52 2011 +0000

    gdb/testsuite/
    	Fix compatibility with x32 arch.
    	* testsuite/gdb.dwarf2/typeddwarf.exp: Check also is_lp64_target.
    	* testsuite/gdb.trace/backtrace.exp: Use is_amd64_regs_target and
    	is_x86_like_target.
    	* testsuite/gdb.trace/collection.exp: Likewise.
    	* testsuite/gdb.trace/report.exp: Likewise.
    	* testsuite/gdb.trace/unavailable.exp: Likewise.
    	* testsuite/gdb.trace/while-dyn.exp: Likewise.
    	* testsuite/lib/gdb.exp (is_amd64_regs_target): New function.
    	(is_x86_like_target): Check also is_amd64_regs_target.

commit 99c4255f19047c004b50c2672353df7a1ed98389
Author: Doug Evans <dje@google.com>
Date:   Thu Sep 8 17:20:35 2011 +0000

    	* cli/cli-decode.c (add_cmd): Add comment.

commit 1c7ceb7dc272ef5dc37e759bda204b7fa52982d4
Author: David S. Miller <davem@redhat.com>
Date:   Thu Sep 8 16:40:46 2011 +0000

    opcodes/
    
    	* sparc-opc.c (pdistn): Destination is integer not float register.
    
    gas/testsuite/
    
    	* gas/sparc/hpcvis3.s: Correct pdistn test.
    	* gas/sparc/hpcvis3.d: Likewise.

commit 341eac093386bf8a9fc40371f1d96a5c6f244024
Author: Nick Clifton <nickc@redhat.com>
Date:   Thu Sep 8 16:06:08 2011 +0000

    	* bfdwin.c (bfd_get_file_window): Fix memory leak.

commit 7abfa7a472e202528e07b9b8d0c89920a8813241
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 15:38:13 2011 +0000

    gdb/
    	PR breakpoints/12435
    	* amd64-tdep.c (amd64_skip_prologue): New variables start_pc_sal,
    	next_sal, buf, offset and xmmreg.  Advance PC if it sees the PR.
    	* dwarf2read.c (process_full_comp_unit): Initialize
    	amd64_prologue_line_bug.
    	* symtab.h (struct symtab): New field amd64_prologue_line_bug.
    
    gdb/testsuite/
    	PR breakpoints/12435
    	* gdb.arch/amd64-prologue-xmm.c: New file.
    	* gdb.arch/amd64-prologue-xmm.exp: New file.
    	* gdb.arch/amd64-prologue-xmm.s: New file.

commit 8616609ce4b0e9b0e3f0651d01e3ee4507d021af
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 15:27:46 2011 +0000

    gdb/
    	Fix TUI screen corruption.
    	* utils.c (fputs_maybe_filtered): Replace !input_from_terminal_p by
    	batch_flag.

commit 81554f3fd59ad04ac0b3fa3295a7e35ac11fe6f4
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 15:26:07 2011 +0000

    gdb/
    	* findvar.c (read_var_value): Never return NULL, throw an error
    	instead.  Update the function comment.  State symbol name in the error
    	messages.
    	* python/py-frame.c (frapy_read_var): Remove handling of NULL from
    	read_var_value.
    	* stack.c (print_frame_args): Likewise.
    	* valops.c (value_of_variable): Likewise.

commit 3d0a5ee6551a1f2036a574f7802c1abc47eada41
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 15:24:19 2011 +0000

    gdb/
    	* stack.c (print_frame_args): New variable except.  Wrap
    	read_var_value and common_val_print into TRY_CATCH.
    
    gdb/testsuite/
    	* gdb.dwarf2/dw2-param-error-main.c: New file.
    	* gdb.dwarf2/dw2-param-error.S: New file.
    	* gdb.dwarf2/dw2-param-error.exp: New file.

commit 32c2066039dab949ffee3f229caae170c283b422
Author: Pedro Alves <pedro@codesourcery.com>
Date:   Thu Sep 8 14:56:33 2011 +0000

    2011-09-08  Pedro Alves  <pedro@codesourcery.com>
    
    	* gdb.base/annota1.exp, gdb.base/annota3.exp: Extract the
    	inferior's pid and look for a core dump named core.$pid.  Use
    	`remote_file' commands on the host instead of hand coding shell
    	commands on the build.
    	* gdb.base/valgrind-db-attach.exp: Kill the program before
    	finishing the test.

commit 997e2329080d16647f6a466b2dce1657ce4d2183
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Thu Sep 8 14:54:16 2011 +0000

    gdb/
    	* eval.c (evaluate_subexp_standard) <OP_THIS>: Update the value_of_this
    	caller to value_of_this.
    	* p-exp.y: Update the value_of_this caller to value_of_this_silent.
    	Twice.
    	* valops.c (value_of_this): Remove parameter complain and variable ret.
    	Update function comment.  Never return NULL by this code.
    	(value_of_this_silent): New function.
    	* value.h (value_of_this): Remove parameter complain.
    	(value_of_this_silent): New declaration.

commit 17174e6aac2869b41398d66e542b2e924396eecc
Author: gdbadmin <gdbadmin@sourceware.org>
Date:   Thu Sep 8 00:00:33 2011 +0000

    *** empty log message ***

commit ac07666749fcad712775b5a64a4c58abb3af15ad
Author: Alan Modra <amodra@bigpond.net.au>
Date:   Thu Sep 8 00:00:06 2011 +0000

    daily update

commit c4eb8a1ab95ffd9876cc11744daf433bd946194c
Author: Andreas Schwab <schwab@suse.de>
Date:   Wed Sep 7 20:56:09 2011 +0000

    * gas/testsuite/gas/m68k/all.exp: Run "mode5" test also with -mcpu=5200.
    * gas/testsuite/gas/m68k/mode5.s: Add moveml testcases.
    * gas/testsuite/gas/m68k/mode5.d: Update.
    
    * opcodes/m68k-opc.c: Use "y" in moveml pattern for mcfisa_a.

commit b0106514bfeb2e4d3b24e923aba92ef4c635a179
Author: qiyao <qiyao>
Date:   Wed Sep 7 14:24:43 2011 +0000

    	gdb/
    	* gdbthread.h (struct thread_info): Remove fields
    	`stepping_through_solib_after_catch' and
    	`stepping_through_solib_catchpoints'.
    	* infrun.c (init_thread_stepping_state): Update.
    	(process_event_stop_test, currently_stepping): Update.
    	(currently_stepping_or_nexting_callback): Update.

commit e53e633a3f09f7fba923872f536a4f4276d6ea2c
Author: Alan Modra <amodra@bigpond.net.au>
Date:   Wed Sep 7 13:56:07 2011 +0000

    	PR ld/13131
    	* bfd/elf64-ppc.c (adjust_toc_syms): Ensure ppc64_elf_howto_table
    	is initialized.

commit 8ac81feb44e603695f2c04f243453b159382dcf4
Author: qiyao <qiyao>
Date:   Wed Sep 7 13:36:46 2011 +0000

    	gdb/
    	* gdbthread.h (struct thread_info): Comment on field
    	`step_after_step_resume_breakpoint'.

commit 44a017f92479a01b43ed9012b36ffbbf72b242b3
Author: Pedro Alves <pedro@codesourcery.com>
Date:   Wed Sep 7 10:34:13 2011 +0000

    2011-09-07  Abhijit Halder  <abhijit.k.halder@gmail.com>
    
    	* remote.c (remote_console_output): Reindent.

commit ea9812279fe436be9a010d07ef1dbe465199a3d7
Author: Luis Machado <luisgpm@br.ibm.com>
Date:   Wed Sep 7 02:33:56 2011 +0000

    2011-09-06  Luis Machado  <lgustavo@codesourcery.com>
    
    	* frame.c (has_stack_frames): Check for currently selected
    	traceframe.

commit 223b94cd31189790fd589618830f9d7a987f20a2
Author: Alan Modra <amodra@bigpond.net.au>
Date:   Wed Sep 7 00:00:06 2011 +0000

    daily update

commit 0d0c9d4edec15d0f470bf193d541444c00d6bb52
Author: gdbadmin <gdbadmin@sourceware.org>
Date:   Wed Sep 7 00:00:03 2011 +0000

    *** empty log message ***

commit e6297a6a3a9bbf2b4c4f38c0f6590fcf3551719a
Author: Pedro Alves <pedro@codesourcery.com>
Date:   Tue Sep 6 14:48:57 2011 +0000

    2011-09-06  Pedro Alves  <pedro@codesourcery.com>
    
    	* event-top.h (MAXPROMPTS, struct prompts): Delete.
    	(set_async_annotation_level, set_async_prompt, pop_prompt)
    	(push_prompt, new_async_prompt): Delete declarations.
    	* top.h (get_prompt, set_prompt): Change prototype.
    	(get_prefix, set_prefix, get_suffix, set_suffix): Delete
    	declarations.
    	* top.c (command_loop):
    	(top_prompt): New global.
    	(get_prefix, set_prefix, get_suffix, ): Delete.
    	(get_prompt, set_prompt): Rewrite.
    	(show_new_async_prompt): Rename to ...
    	(show_prompt): ... this.
    	(init_main): Adjust.  Don't handle --annotate=2 here.
    	* event-top.c (new_async_prompt): Delete.
    	(the_prompts): Delete.
    	(more_to_come): Make static.
    	(display_gdb_prompt): Use top_level_prompt() to compute the top
    	level prompt, and don't notify the before_prompt observers
    	directly here.  Always trick readline into not trying to display
    	the prompt if sync_execution and displaying the primary prompt.
    	If displaying a local/secondary prompt, always show it, even if
    	sync_execution is set.
    	(change_annotation_level): Delete.
    	(top_level_prompt): New, based on change_annotation_level.
    	(push_prompt, pop_prompt): Delete.
    	(async_disable_stdin): No longer pushes prompt.
    	(command_line_handler): No longer pushes or pops prompt.  If more
    	input is expected, call display_gdb_prompt with an explicit empty
    	prompt.
    	(async_stop_sig): Adjust.
    	(set_async_annotation_level, set_async_prompt): Delete.
    	* python/python.c (before_prompt_hook): Adjust.

commit 09ddc54333cdbc2f695fd83cbf091a7d5a1c3604
Author: Alan Modra <amodra@bigpond.net.au>
Date:   Tue Sep 6 07:41:23 2011 +0000

    	PR ld/13131
    	* elf64-ppc.c (adjust_toc_syms): Delete redundant code.
    	(ppc64_elf_edit_toc): Fix style nit.  Report some details
    	on linker failure due to reference in debug or non-alloc
    	sections to optimized away toc entry, and don't abort.

commit 1ba50975b735290741c573d101b3339407ccc84d
Author: gdbadmin <gdbadmin@sourceware.org>
Date:   Tue Sep 6 00:00:32 2011 +0000

    *** empty log message ***

commit 9d1f51be0b0f3c47098cc061dd29c1ed29cd04ed
Author: Alan Modra <amodra@bigpond.net.au>
Date:   Tue Sep 6 00:00:04 2011 +0000

    daily update

-----------------------------------------------------------------------

Summary of changes:
 bfd/ChangeLog                                 |   18 ++
 bfd/bfdwin.c                                  |   41 ++-
 bfd/elf64-ppc.c                               |   15 +-
 bfd/version.h                                 |    2 +-
 gdb/ChangeLog                                 |  109 +++++++
 gdb/amd64-tdep.c                              |   69 +++++-
 gdb/cli/cli-decode.c                          |    1 +
 gdb/dwarf2loc.c                               |   12 +-
 gdb/dwarf2read.c                              |    3 +
 gdb/event-top.c                               |  277 ++++++------------
 gdb/event-top.h                               |   52 ----
 gdb/frame.c                                   |   22 +-
 gdb/gdbthread.h                               |   20 +-
 gdb/infrun.c                                  |   37 +---
 gdb/python/py-cmd.c                           |   40 ++--
 gdb/python/py-param.c                         |   12 +-
 gdb/python/python-internal.h                  |    2 +-
 gdb/python/python.c                           |    2 +-
 gdb/remote.c                                  |    4 +-
 gdb/symtab.h                                  |    5 +
 gdb/testsuite/ChangeLog                       |   35 +++
 gdb/testsuite/gdb.arch/amd64-prologue-xmm.c   |   38 +++
 gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp |   46 +++
 gdb/testsuite/gdb.arch/amd64-prologue-xmm.s   |  400 +++++++++++++++++++++++++
 gdb/testsuite/gdb.base/annota1.exp            |   29 ++-
 gdb/testsuite/gdb.base/annota3.exp            |   28 ++-
 gdb/testsuite/gdb.base/valgrind-db-attach.exp |    3 +
 gdb/testsuite/gdb.dwarf2/typeddwarf.exp       |    4 +-
 gdb/testsuite/gdb.trace/backtrace.exp         |    4 +-
 gdb/testsuite/gdb.trace/collection.exp        |    4 +-
 gdb/testsuite/gdb.trace/report.exp            |    4 +-
 gdb/testsuite/gdb.trace/unavailable.exp       |    8 +-
 gdb/testsuite/gdb.trace/while-dyn.exp         |    4 +-
 gdb/testsuite/lib/gdb.exp                     |   45 +++-
 gdb/top.c                                     |  124 ++-------
 gdb/top.h                                     |   22 +--
 gdb/utils.c                                   |    4 +-
 gdb/version.in                                |    2 +-
 opcodes/ChangeLog                             |   25 ++
 opcodes/m68k-opc.c                            |   15 +-
 opcodes/sparc-opc.c                           |   29 ++-
 41 files changed, 1084 insertions(+), 532 deletions(-)
 create mode 100644 gdb/testsuite/gdb.arch/amd64-prologue-xmm.c
 create mode 100644 gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp
 create mode 100644 gdb/testsuite/gdb.arch/amd64-prologue-xmm.s

First 500 lines of diff:
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7f97fa4..d3c38e7 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,21 @@
+2011-09-08  Bernd Jendrissek  <bernd.jendrissek@gmail.com>
+
+	* bfdwin.c (bfd_get_file_window): Fix memory leak.
+
+2011-09-07  Alan Modra  <amodra@gmail.com>
+
+	PR ld/13131
+	* bfd/elf64-ppc.c (adjust_toc_syms): Ensure ppc64_elf_howto_table
+	is initialized.
+
+2011-09-06  Alan Modra  <amodra@gmail.com>
+
+	PR ld/13131
+	* elf64-ppc.c (adjust_toc_syms): Delete redundant code.
+	(ppc64_elf_edit_toc): Fix style nit.  Report some details
+	on linker failure due to reference in debug or non-alloc
+	sections to optimized away toc entry, and don't abort.
+
 2011-09-01  Christophe Lyon  <christophe.lyon@st.com>
 
 	* elf32-arm.c (elf32_arm_output_arch_local_syms): Skip excluded
diff --git a/bfd/bfdwin.c b/bfd/bfdwin.c
index 63ad5ed..4103e9c 100644
--- a/bfd/bfdwin.c
+++ b/bfd/bfdwin.c
@@ -1,5 +1,5 @@
 /* Support for memory-mapped windows into a BFD.
-   Copyright 1995, 1996, 2001, 2002, 2003, 2005, 2007, 2008, 2009
+   Copyright 1995, 1996, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2011
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
@@ -128,17 +128,16 @@ bfd_get_file_window (bfd *abfd,
   if (pagesize == 0)
     abort ();
 
-  if (i == 0)
+  if (i == NULL)
     {
       i = bfd_zmalloc (sizeof (bfd_window_internal));
-      windowp->i = i;
-      if (i == 0)
+      if (i == NULL)
 	return FALSE;
-      i->data = 0;
+      i->data = NULL;
     }
 #ifdef HAVE_MMAP
   if (ok_to_map
-      && (i->data == 0 || i->mapped == 1)
+      && (i->data == NULL || i->mapped == 1)
       && (abfd->flags & BFD_IN_MEMORY) == 0)
     {
       file_ptr file_offset, offset2;
@@ -156,9 +155,9 @@ bfd_get_file_window (bfd *abfd,
       if (abfd->iostream == NULL
 	  && (abfd->iovec == NULL
 	      || abfd->iovec->bseek (abfd, offset, SEEK_SET) != 0))
-	return FALSE;
-      fd = fileno ((FILE *) abfd->iostream);
+	goto free_and_fail;
 
+      fd = fileno ((FILE *) abfd->iostream);
       /* Compute offsets and size for mmap and for the user's data.  */
       offset2 = offset % pagesize;
       if (offset2 < 0)
@@ -169,10 +168,10 @@ bfd_get_file_window (bfd *abfd,
       real_size -= real_size % pagesize;
 
       /* If we're re-using a memory region, make sure it's big enough.  */
-      if (i->data && i->size < size)
+      if (i->data != NULL && i->size < size)
 	{
 	  munmap (i->data, i->size);
-	  i->data = 0;
+	  i->data = NULL;
 	}
       i->data = mmap (i->data, real_size,
 		      writable ? PROT_WRITE | PROT_READ : PROT_READ,
@@ -185,11 +184,10 @@ bfd_get_file_window (bfd *abfd,
 	  /* An error happened.  Report it, or try using malloc, or
 	     something.  */
 	  bfd_set_error (bfd_error_system_call);
-	  i->data = 0;
 	  windowp->data = 0;
 	  if (debug_windows)
 	    fprintf (stderr, "\t\tmmap failed!\n");
-	  return FALSE;
+	  goto free_and_fail;
 	}
       if (debug_windows)
 	fprintf (stderr, "\n\tmapped %ld at %p, offset is %ld\n",
@@ -198,6 +196,8 @@ bfd_get_file_window (bfd *abfd,
       windowp->data = (bfd_byte *) i->data + offset2;
       windowp->size = size;
       i->mapped = 1;
+      i->refcount = 1;
+      windowp->i = i;
       return TRUE;
     }
   else if (debug_windows)
@@ -228,15 +228,18 @@ bfd_get_file_window (bfd *abfd,
   if (i->data == NULL)
     {
       if (size_to_alloc == 0)
-	return TRUE;
-      return FALSE;
+	{
+	  windowp->i = i;
+	  return TRUE;
+	}
+      goto free_and_fail;
     }
   i->refcount = 1;
   if (bfd_seek (abfd, offset, SEEK_SET) != 0)
-    return FALSE;
+    goto free_and_fail;
   i->size = bfd_bread (i->data, size, abfd);
   if (i->size != size)
-    return FALSE;
+    goto free_and_fail;
   i->mapped = 0;
 #ifdef HAVE_MPROTECT
   if (!writable)
@@ -249,7 +252,13 @@ bfd_get_file_window (bfd *abfd,
 #endif
   windowp->data = i->data;
   windowp->size = i->size;
+  windowp->i = i;
   return TRUE;
+
+ free_and_fail:
+  /* We have a bfd_window_internal, but an error occurred.  Free it. */
+  free (i);
+  return FALSE;
 }
 
 #endif /* USE_MMAP */
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index b71a11b..5992f08 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -7881,9 +7881,6 @@ adjust_toc_syms (struct elf_link_hash_entry *h, void *inf)
   struct adjust_toc_info *toc_inf = (struct adjust_toc_info *) inf;
   unsigned long i;
 
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
   if (h->root.type != bfd_link_hash_defined
       && h->root.type != bfd_link_hash_defweak)
     return TRUE;
@@ -8267,7 +8264,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
 		some_unused = 1;
 	      last = 0;
 	    }
-	  else if (*drop & ref_from_discarded)
+	  else if ((*drop & ref_from_discarded) != 0)
 	    {
 	      some_unused = 1;
 	      last = ref_from_discarded;
@@ -8385,7 +8382,15 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
 			  break;
 
 			default:
-			  abort ();
+			  if (!ppc64_elf_howto_table[R_PPC64_ADDR32])
+			    ppc_howto_init ();
+			  info->callbacks->einfo
+			    (_("%P: %H: %s relocation references "
+			       "optimized away TOC entry\n"),
+			     ibfd, sec, rel->r_offset,
+			     ppc64_elf_howto_table[r_type]->name);
+			  bfd_set_error (bfd_error_bad_value);
+			  goto error_ret;
 			}
 		      rel->r_addend = tocrel->r_addend;
 		      elf_section_data (sec)->relocs = relstart;
diff --git a/bfd/version.h b/bfd/version.h
index 6e07590..af68edf 100644
--- a/bfd/version.h
+++ b/bfd/version.h
@@ -1,4 +1,4 @@
-#define BFD_VERSION_DATE 20110905
+#define BFD_VERSION_DATE 20110908
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_STRING  @bfd_version_package@ @bfd_version_string@
 #define REPORT_BUGS_TO @report_bugs_to@
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 80fc406..6bcde92 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,112 @@
+2011-09-08  Doug Evans  <dje@google.com>
+
+	* py-cmd.c: Some minor formatting fixes.
+	(gdbpy_parse_command_name): Rename text arg to name, make const.
+	All callers updated.
+	* python-internal.h (gdbpy_parse_command_name): Update.
+
+	* cli/cli-decode.c (add_cmd): Add comment.
+
+2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	PR breakpoints/12435
+	* amd64-tdep.c (amd64_skip_prologue): New variables start_pc_sal,
+	next_sal, buf, offset and xmmreg.  Advance PC if it sees the PR.
+	* dwarf2read.c (process_full_comp_unit): Initialize
+	amd64_prologue_line_bug.
+	* symtab.h (struct symtab): New field amd64_prologue_line_bug.
+
+2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Fix TUI screen corruption.
+	* utils.c (fputs_maybe_filtered): Replace !input_from_terminal_p by
+	batch_flag.
+
+2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* findvar.c (read_var_value): Never return NULL, throw an error
+	instead.  Update the function comment.  State symbol name in the error
+	messages.
+	* python/py-frame.c (frapy_read_var): Remove handling of NULL from
+	read_var_value.
+	* stack.c (print_frame_args): Likewise.
+	* valops.c (value_of_variable): Likewise.
+
+2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* stack.c (print_frame_args): New variable except.  Wrap
+	read_var_value and common_val_print into TRY_CATCH.
+
+2011-09-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* eval.c (evaluate_subexp_standard) <OP_THIS>: Update the value_of_this
+	caller to value_of_this.
+	* p-exp.y: Update the value_of_this caller to value_of_this_silent.
+	Twice.
+	* valops.c (value_of_this): Remove parameter complain and variable ret.
+	Update function comment.  Never return NULL by this code.
+	(value_of_this_silent): New function.
+	* value.h (value_of_this): Remove parameter complain.
+	(value_of_this_silent): New declaration.
+
+2011-09-07  Yao Qi  <yao@codesourcery.com>
+
+	* gdbthread.h (struct thread_info): Remove fields
+	`stepping_through_solib_after_catch' and
+	`stepping_through_solib_catchpoints'.
+	* infrun.c (init_thread_stepping_state): Update.
+	(process_event_stop_test, currently_stepping): Update.
+	(currently_stepping_or_nexting_callback): Update.
+
+2011-09-07  Yao Qi  <yao@codesourcery.com>
+
+	* gdbthread.h (struct thread_info): Comment on field
+	`step_after_step_resume_breakpoint'.
+
+2011-09-07  Abhijit Halder  <abhijit.k.halder@gmail.com>
+
+	* remote.c (remote_console_output): Reindent.
+
+2011-09-06  Luis Machado  <lgustavo@codesourcery.com>
+
+	* frame.c (has_stack_frames): Check for currently selected
+	traceframe.
+
+2011-09-06  Pedro Alves  <pedro@codesourcery.com>
+
+	* event-top.h (MAXPROMPTS, struct prompts): Delete.
+	(set_async_annotation_level, set_async_prompt, pop_prompt)
+	(push_prompt, new_async_prompt): Delete declarations.
+	* top.h (get_prompt, set_prompt): Change prototype.
+	(get_prefix, set_prefix, get_suffix, set_suffix): Delete
+	declarations.
+	* top.c (command_loop):
+	(top_prompt): New global.
+	(get_prefix, set_prefix, get_suffix, ): Delete.
+	(get_prompt, set_prompt): Rewrite.
+	(show_new_async_prompt): Rename to ...
+	(show_prompt): ... this.
+	(init_main): Adjust.  Don't handle --annotate=2 here.
+	* event-top.c (new_async_prompt): Delete.
+	(the_prompts): Delete.
+	(more_to_come): Make static.
+	(display_gdb_prompt): Use top_level_prompt() to compute the top
+	level prompt, and don't notify the before_prompt observers
+	directly here.  Always trick readline into not trying to display
+	the prompt if sync_execution and displaying the primary prompt.
+	If displaying a local/secondary prompt, always show it, even if
+	sync_execution is set.
+	(change_annotation_level): Delete.
+	(top_level_prompt): New, based on change_annotation_level.
+	(push_prompt, pop_prompt): Delete.
+	(async_disable_stdin): No longer pushes prompt.
+	(command_line_handler): No longer pushes or pops prompt.  If more
+	input is expected, call display_gdb_prompt with an explicit empty
+	prompt.
+	(async_stop_sig): Adjust.
+	(set_async_annotation_level, set_async_prompt): Delete.
+	* python/python.c (before_prompt_hook): Adjust.
+
 2011-09-05  Pedro Alves  <pedro@codesourcery.com>
 
 	PR cli/13110
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index 051fb13..14be776 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
@@ -1917,6 +1917,9 @@ amd64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 {
   struct amd64_frame_cache cache;
   CORE_ADDR pc;
+  struct symtab_and_line start_pc_sal, next_sal;
+  gdb_byte buf[4 + 8 * 7];
+  int offset, xmmreg;
 
   amd64_init_frame_cache (&cache);
   pc = amd64_analyze_prologue (gdbarch, start_pc, 0xffffffffffffffffLL,
@@ -1924,7 +1927,71 @@ amd64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
   if (cache.frameless_p)
     return start_pc;
 
-  return pc;
+  /* GCC PR debug/48827 produced false prologue end:
+     84 c0                test   %al,%al
+     74 23                je     after
+     <-- here is 0 lines advance - the false prologue end marker.
+     0f 29 85 70 ff ff ff movaps %xmm0,-0x90(%rbp)
+     0f 29 4d 80          movaps %xmm1,-0x80(%rbp)
+     0f 29 55 90          movaps %xmm2,-0x70(%rbp)
+     0f 29 5d a0          movaps %xmm3,-0x60(%rbp)
+     0f 29 65 b0          movaps %xmm4,-0x50(%rbp)
+     0f 29 6d c0          movaps %xmm5,-0x40(%rbp)
+     0f 29 75 d0          movaps %xmm6,-0x30(%rbp)
+     0f 29 7d e0          movaps %xmm7,-0x20(%rbp)
+     after:  */
+
+  if (pc == start_pc)
+    return pc;
+
+  start_pc_sal = find_pc_sect_line (start_pc, NULL, 0);
+  if (start_pc_sal.symtab == NULL
+      || !start_pc_sal.symtab->amd64_prologue_line_bug
+      || start_pc_sal.pc != start_pc || pc >= start_pc_sal.end)
+    return pc;
+
+  next_sal = find_pc_sect_line (start_pc_sal.end, NULL, 0);
+  if (next_sal.line != start_pc_sal.line)
+    return pc;
+
+  /* START_PC can be from overlayed memory, ignored here.  */
+  if (target_read_memory (next_sal.pc - 4, buf, sizeof (buf)) != 0)
+    return pc;
+
+  /* test %al,%al */
+  if (buf[0] != 0x84 || buf[1] != 0xc0)
+    return pc;
+  /* je AFTER */
+  if (buf[2] != 0x74)
+    return pc;
+
+  offset = 4;
+  for (xmmreg = 0; xmmreg < 8; xmmreg++)
+    {
+      /* movaps %xmmreg?,-0x??(%rbp) */
+      if (buf[offset] != 0x0f || buf[offset + 1] != 0x29
+          || (buf[offset + 2] & 0b00111111) != (xmmreg << 3 | 0b101))
+	return pc;
+
+      if ((buf[offset + 2] & 0b11000000) == 0b01000000)
+	{
+	  /* 8-bit displacement.  */
+	  offset += 4;
+	}
+      else if ((buf[offset + 2] & 0b11000000) == 0b10000000)
+	{
+	  /* 32-bit displacement.  */
+	  offset += 7;
+	}
+      else
+	return pc;
+    }
+
+  /* je AFTER */
+  if (offset - 4 != buf[3])
+    return pc;
+
+  return next_sal.end;
 }
 \f
 
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index 622ee68..95996e8 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -128,6 +128,7 @@ set_cmd_completer (struct cmd_list_element *cmd,
 
 
 /* Add element named NAME.
+   Space for NAME and DOC must be allocated by the caller.
    CLASS is the top level category into which commands are broken down
    for "help" purposes.
    FUN should be the function to execute the command;
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index c175dc8..470c3a3 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -949,9 +949,9 @@ dwarf_block_to_entry_parameter (struct frame_info *frame, const gdb_byte *block,
   return parameter;
 }
 
-/* Return value for PARAMETER matching DEREF_SIZE.  If DEREF_SIZE is -1, return
-   the normal DW_AT_GNU_call_site_value block.  Otherwise return the
-   DW_AT_GNU_call_site_data_value (dereferenced) block.
+/* Execute DWARF_BLOCK for caller of the CTX's frame.  CTX must be of
+   dwarf_expr_ctx_funcs kind.  See DWARF_REG, FB_OFFSET and DEREF_SIZE
+   description at struct dwarf_expr_context_funcs->push_dwarf_block_entry_value.
 
    TYPE and CALLER_FRAME specify how to evaluate the DWARF block into returned
    struct value.
@@ -987,9 +987,9 @@ dwarf_entry_parameter_to_value (struct call_site_parameter *parameter,
   return dwarf2_evaluate_loc_desc (type, caller_frame, data, size + 1, per_cu);
 }
 
-/* Execute DWARF_BLOCK for caller of the CTX's frame.  CTX must be of
-   dwarf_expr_ctx_funcs kind.  See DWARF_REG, FB_OFFSET and DEREF_SIZE
-   description at struct dwarf_expr_context_funcs->push_dwarf_block_entry_value.
+/* Return value for PARAMETER matching DEREF_SIZE.  If DEREF_SIZE is -1, return
+   the normal DW_AT_GNU_call_site_value block.  Otherwise return the
+   DW_AT_GNU_call_site_data_value (dereferenced) block.
 
    The CTX caller can be from a different CU - per_cu_dwarf_call is simpler as
    it does not support cross-CU DWARF executions.  */
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 339f519..8a3f260 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -4835,6 +4835,9 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
       if (gcc_4_minor >= 5)
 	symtab->epilogue_unwind_valid = 1;
 
+      if (gcc_4_minor >= 6)
+	symtab->amd64_prologue_line_bug = 1;
+
       symtab->call_site_htab = cu->call_site_htab;
     }
 
diff --git a/gdb/event-top.c b/gdb/event-top.c
index 09bd89f..ff2aefb 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -47,8 +47,8 @@
 static void rl_callback_read_char_wrapper (gdb_client_data client_data);
 static void command_line_handler (char *rl);
 static void change_line_handler (void);
-static void change_annotation_level (void);
 static void command_handler (char *command);
+static char *top_level_prompt (void);
 
 /* Signal handlers.  */
 #ifdef SIGQUIT
@@ -108,10 +108,6 @@ void (*call_readline) (gdb_client_data);
    loop as default engine, and event-top.c is merged into top.c.  */
 int async_command_editing_p;
 
-/* This variable contains the new prompt that the user sets with the
-   set prompt command.  */
-char *new_async_prompt;
-
 /* This is the annotation suffix that will be used when the
    annotation_level is 2.  */
 char *async_annotation_suffix;
@@ -124,11 +120,6 @@ int exec_done_display_p = 0;
    read commands from.  */
 int input_fd;
 
-/* This is the prompt stack.  Prompts will be pushed on the stack as
-   needed by the different 'kinds' of user inputs GDB is asking
-   for.  See event-loop.h.  */
-struct prompts the_prompts;
-
 /* Signal handling variables.  */
 /* Each of these is a pointer to a function that the event loop will
    invoke if the corresponding signal has received.  The real signal
@@ -155,7 +146,7 @@ void *sigtstp_token;
    because each line of input is handled by a different call to
    command_line_handler, and normally there is no state retained
    between different calls.  */
-int more_to_come = 0;
+static int more_to_come = 0;
 
 struct readline_input_state
   {
@@ -224,22 +215,28 @@ change_line_handler (void)


hooks/post-receive
--
Repository for Project Archer.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [SCM]  archer-jankratochvil-entryval: .
@ 2011-09-01 23:22 jkratoch
  0 siblings, 0 replies; 3+ messages in thread
From: jkratoch @ 2011-09-01 23:22 UTC (permalink / raw)
  To: archer-commits

The branch, archer-jankratochvil-entryval has been updated
       via  8a42c87d60a4612dbaf33878f0f28523e2bd64c2 (commit)
       via  57db296777f64bc7b94e31f2022a421d751cf0b5 (commit)
       via  2329ea8e4ce08d918d4171f3b7aa8778228a284e (commit)
       via  6e203680011686fc3d0e118756c72f10b83588dd (commit)
       via  abc39937cc2ffbdf84551d71158e260e04d3718b (commit)
       via  a7da6203a0496c27380395d7bd445a09759f267c (commit)
       via  506c3c2c7edf3db0f30654c31f56e730500c4c73 (commit)
      from  378d78b5515d8bfa2de9f19817b739d228bd3ad5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 8a42c87d60a4612dbaf33878f0f28523e2bd64c2
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 2 01:21:31 2011 +0200

    .

commit 57db296777f64bc7b94e31f2022a421d751cf0b5
Merge: 378d78b 2329ea8
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 2 01:11:59 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp-entrybtref' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp-entrybtref-final

commit 2329ea8e4ce08d918d4171f3b7aa8778228a284e
Merge: e0591f9 6e20368
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 2 01:11:52 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp-entrybtref

commit 6e203680011686fc3d0e118756c72f10b83588dd
Merge: b12b0bb abc3993
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 2 01:11:49 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref-entryexp

commit abc39937cc2ffbdf84551d71158e260e04d3718b
Merge: b0fca86 a7da620
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 2 01:11:46 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull-dispref

commit a7da6203a0496c27380395d7bd445a09759f267c
Merge: 37a73ef 506c3c2
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 2 01:11:44 2011 +0200

    Merge branch 'pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt' into pending-funcstuff-basic-tailread-tailframe-selftail-printarg-entrybt-lvalnull

commit 506c3c2c7edf3db0f30654c31f56e730500c4c73
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Fri Sep 2 01:09:29 2011 +0200

    .

-----------------------------------------------------------------------

Summary of changes:
 gdb/testsuite/gdb.arch/amd64-entry-value.s         |   28 +-
 ...md64-entry-value.cc => mi2-amd64-entry-value.c} |    0
 gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp     |  200 +++--
 gdb/testsuite/gdb.mi/mi2-amd64-entry-value.s       |  899 ++++++++++++++++++++
 4 files changed, 1032 insertions(+), 95 deletions(-)
 rename gdb/testsuite/gdb.mi/{mi2-amd64-entry-value.cc => mi2-amd64-entry-value.c} (100%)
 create mode 100644 gdb/testsuite/gdb.mi/mi2-amd64-entry-value.s

First 500 lines of diff:
diff --git a/gdb/testsuite/gdb.arch/amd64-entry-value.s b/gdb/testsuite/gdb.arch/amd64-entry-value.s
index fe28fba..fe5ca6b 100644
--- a/gdb/testsuite/gdb.arch/amd64-entry-value.s
+++ b/gdb/testsuite/gdb.arch/amd64-entry-value.s
@@ -15,7 +15,7 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-/* This file is compiled form gdb.arch/amd64-entry-value.c
+/* This file is compiled from gdb.arch/amd64-entry-value.c
    using -g -dA -S -O2.  */
 
 	.file	"amd64-entry-value.cc"
@@ -495,8 +495,8 @@ _ZL9referenceRiS_iiiiS_S_:
 .LVL57:
 	# gdb.arch/amd64-entry-value.cc:147
 	.loc 1 147 0
-	movl	(%rax), %ebx
-	movl	(%rdx), %ebp
+	movl	(%rax), %ebp
+	movl	(%rdx), %ebx
 .LVL58:
 	# gdb.arch/amd64-entry-value.cc:149
 	.loc 1 149 0
@@ -534,19 +534,19 @@ _ZL9referenceRiS_iiiiS_S_:
 .LVL61:
 	addl	%r13d, %r12d
 .LVL62:
-	addl	%r12d, %ebp
+	addl	%r12d, %ebx
 .LVL63:
-	leal	0(%rbp,%rbx), %edi
+	leal	(%rbx,%rbp), %edi
 .LBE3:
 	# gdb.arch/amd64-entry-value.cc:156
 	.loc 1 156 0
 	popq	%rbx
 .LCFI8:
 	.cfi_def_cfa_offset 32
-.LVL64:
 	popq	%rbp
 .LCFI9:
 	.cfi_def_cfa_offset 24
+.LVL64:
 	popq	%r12
 .LCFI10:
 	.cfi_def_cfa_offset 16
@@ -1009,7 +1009,7 @@ _ZZL5datapvE3two:
 	.long	.Ldebug_abbrev0	# Offset Into Abbrev. Section
 	.byte	0x8	# Pointer Size (in bytes)
 	.uleb128 0x1	# (DIE (0xb) DW_TAG_compile_unit)
-	.long	.LASF1	# DW_AT_producer: "GNU C++ 4.7.0 20110804 (experimental)"
+	.long	.LASF1	# DW_AT_producer: "GNU C++ 4.7.0 20110831 (experimental)"
 	.byte	0x4	# DW_AT_language
 	.long	.LASF2	# DW_AT_name: "gdb.arch/amd64-entry-value.cc"
 	.long	.LASF3	# DW_AT_comp_dir: ""
@@ -3626,7 +3626,7 @@ _ZZL5datapvE3two:
 	.quad	.LVL60-1	# Location list begin address (*.LLST44)
 	.quad	.LVL63	# Location list end address (*.LLST44)
 	.value	0x1	# Location expression size
-	.byte	0x56	# DW_OP_reg6
+	.byte	0x53	# DW_OP_reg3
 	.quad	0	# Location list terminator begin (*.LLST44)
 	.quad	0	# Location list terminator end (*.LLST44)
 .LLST45:
@@ -3639,7 +3639,7 @@ _ZZL5datapvE3two:
 	.quad	.LVL60-1	# Location list begin address (*.LLST45)
 	.quad	.LVL64	# Location list end address (*.LLST45)
 	.value	0x1	# Location expression size
-	.byte	0x53	# DW_OP_reg3
+	.byte	0x56	# DW_OP_reg6
 	.quad	0	# Location list terminator begin (*.LLST45)
 	.quad	0	# Location list terminator end (*.LLST45)
 .LLST46:
@@ -3812,24 +3812,24 @@ _ZZL5datapvE3two:
 	.section	.debug_str,"MS",@progbits,1
 .LASF4:
 	.string	"locexpr"
-.LASF1:
-	.string	"GNU C++ 4.7.0 20110804 (experimental)"
 .LASF13:
 	.string	"reference"
 .LASF18:
 	.string	"regcopy"
-.LASF24:
-	.string	"data"
 .LASF30:
 	.string	"invalid"
 .LASF29:
 	.string	"born"
 .LASF17:
 	.string	"stackparam2"
+.LASF24:
+	.string	"data"
 .LASF20:
 	.string	"stackcopy1"
 .LASF2:
 	.string	"gdb.arch/amd64-entry-value.cc"
+.LASF1:
+	.string	"GNU C++ 4.7.0 20110831 (experimental)"
 .LASF23:
 	.string	"datap"
 .LASF28:
@@ -3882,5 +3882,5 @@ _ZZL5datapvE3two:
 	.string	"datap_input"
 .LASF27:
 	.string	"validity"
-	.ident	"GCC: (GNU) 4.7.0 20110804 (experimental)"
+	.ident	"GCC: (GNU) 4.7.0 20110831 (experimental)"
 	.section	.note.GNU-stack,"",@progbits
diff --git a/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.cc b/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.c
similarity index 100%
rename from gdb/testsuite/gdb.mi/mi2-amd64-entry-value.cc
rename to gdb/testsuite/gdb.mi/mi2-amd64-entry-value.c
diff --git a/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp b/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp
index 53acaff..6f22ea7 100644
--- a/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp
+++ b/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp
@@ -27,7 +27,7 @@ set opts {}
 
 if [info exists COMPILE] {
     # make check RUNTESTFLAGS="gdb.mi/mi2-amd64-entry-value.exp COMPILE=1"
-    set srcfile ${testfile}.cc
+    set srcfile ${testfile}.c
     lappend opts debug optimize=-O2
 } elseif { ![istarget x86_64-*-* ] || ![is_lp64_target] } {
     verbose "Skipping amd64-entry-value."
@@ -44,90 +44,128 @@ if [build_executable ${testfile}.exp ${executable} ${srcfile} $opts] {
 mi_gdb_reinitialize_dir $srcdir/$subdir
 mi_gdb_load ${binfile}
 
+foreach name {different breakhere_different breakhere_validity breakhere_invalid} {
+    mi_create_breakpoint $name .* .* .* .* .* .* "break $name"
+}
+
+
+# Test various kinds of `set print entry-values'.
+
 if {[mi_runto main] == -1} {
     return -1
 }
+mi_gdb_test "-gdb-set print entry-values no" {\^done} "no: set print entry-values"
+mi_send_resuming_command "exec-continue" "no: entry_equal: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="5"}} .* .* {.* disp="keep"} "no: entry_equal: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="5"}\]} "no: entry_equal: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "no: entry_different: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="6"}} .* .* {.* disp="keep"} "no: entry_different: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="6"}\]} "no: entry_different: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "no: validity: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="lost",value="<optimized out>"},{name="born",value="10"}} .* .* {.* disp="keep"} "no: validity: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="lost",arg="1",value="<optimized out>"},{name="born",arg="1",value="10"}\]} "no: validity: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "no: invalid: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="inv",value="<optimized out>"}} .* .* {.* disp="keep"} "no: invalid: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="inv",arg="1",value="<optimized out>"}\]} "no: invalid: -stack-list-variables"
 
-foreach name {different breakhere_different breakhere_validity breakhere_invalid} {
-    mi_create_breakpoint $name .* .* .* .* .* .* "break $name"
+if {[mi_runto main] == -1} {
+    return -1
 }
+mi_gdb_test "-gdb-set print entry-values only" {\^done} "only: set print entry-values"
+mi_send_resuming_command "exec-continue" "only: entry_equal: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",entry_value="5"}} .* .* {.* disp="keep"} "only: entry_equal: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",entry_value="5"}\]} "only: entry_equal: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "only: entry_different: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",entry_value="5"}} .* .* {.* disp="keep"} "only: entry_different: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",entry_value="5"}\]} "only: entry_different: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "only: validity: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="lost",entry_value="5"},{name="born",entry_value="<optimized out>"}} .* .* {.* disp="keep"} "only: validity: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="lost",arg="1",entry_value="5"},{name="born",arg="1",entry_value="<optimized out>"}\]} "only: validity: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "only: invalid: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="inv",entry_value="<optimized out>"}} .* .* {.* disp="keep"} "only: invalid: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="inv",arg="1",entry_value="<optimized out>"}\]} "only: invalid: -stack-list-variables"
 
-# Test various kinds of `set print entry-values'.
+if {[mi_runto main] == -1} {
+    return -1
+}
+mi_gdb_test "-gdb-set print entry-values preferred" {\^done} "preferred: set print entry-values"
+mi_send_resuming_command "exec-continue" "preferred: entry_equal: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",entry_value="5"}} .* .* {.* disp="keep"} "preferred: entry_equal: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",entry_value="5"}\]} "preferred: entry_equal: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "preferred: entry_different: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",entry_value="5"}} .* .* {.* disp="keep"} "preferred: entry_different: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",entry_value="5"}\]} "preferred: entry_different: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "preferred: validity: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="lost",entry_value="5"},{name="born",value="10"}} .* .* {.* disp="keep"} "preferred: validity: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="lost",arg="1",entry_value="5"},{name="born",arg="1",value="10"}\]} "preferred: validity: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "preferred: invalid: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="inv",entry_value="<optimized out>"}} .* .* {.* disp="keep"} "preferred: invalid: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="inv",arg="1",entry_value="<optimized out>"}\]} "preferred: invalid: -stack-list-variables"
 
-mi_send_resuming_command "exec-continue" "continue to different"
-mi_expect_stop "breakpoint-hit" .* .* .* .* {.* disp="keep"} "stop at different"
-
-mi_gdb_test "-stack-list-variables --all-values" \
-  "\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"different\",file=\"\[^\"\]*${srcfile}\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \
-  "list stack frames"
-# ^done,variables=[{name="val",arg="1",value="5"}]
-mi_gdb_test {-interpreter-exec console "frame"}
-
-
-exit
-
-gdb_test_no_output "set print entry-values no" "entry_equal: set print entry-values no"
-gdb_test "frame" {\(val=5\).*} "entry_equal: frame: no"
-gdb_test_no_output "set print entry-values only" "entry_equal: set print entry-values only"
-gdb_test "frame" {\(val@entry=5\).*} "entry_equal: frame: only"
-gdb_test_no_output "set print entry-values preferred" "entry_equal: set print entry-values preferred"
-gdb_test "frame" {\(val@entry=5\).*} "entry_equal: frame: preferred"
-gdb_test_no_output "set print entry-values if-needed" "entry_equal: set print entry-values if-needed"
-gdb_test "frame" {\(val=5\).*} "entry_equal: frame: if-needed"
-gdb_test_no_output "set print entry-values both" "entry_equal: set print entry-values both"
-gdb_test "frame" {\(val=5, val@entry=5\).*} "entry_equal: frame: both"
-gdb_test_no_output "set print entry-values compact" "entry_equal: set print entry-values compact"
-gdb_test "frame" {\(val=val@entry=5\).*} "entry_equal: frame: compact"
-gdb_test_no_output "set print entry-values default" "entry_equal: set print entry-values default"
-gdb_test "frame" {\(val=val@entry=5\).*} "entry_equal: frame: default"
-
-gdb_continue_to_breakpoint "entry_different: breakhere"
-
-gdb_test_no_output "set print entry-values no" "entry_different: set print entry-values no"
-gdb_test "frame" {\(val=6\).*} "entry_different: frame: no"
-gdb_test_no_output "set print entry-values only" "entry_different: set print entry-values only"
-gdb_test "frame" {\(val@entry=5\).*} "entry_different: frame: only"
-gdb_test_no_output "set print entry-values preferred" "entry_different: set print entry-values preferred"
-gdb_test "frame" {\(val@entry=5\).*} "entry_different: frame: preferred"
-gdb_test_no_output "set print entry-values if-needed" "entry_different: set print entry-values if-needed"
-gdb_test "frame" {\(val=6\).*} "entry_different: frame: if-needed"
-gdb_test_no_output "set print entry-values both" "entry_different: set print entry-values both"
-gdb_test "frame" {\(val=6, val@entry=5\).*} "entry_different: frame: both"
-gdb_test_no_output "set print entry-values compact" "entry_different: set print entry-values compact"
-gdb_test "frame" {\(val=6, val@entry=5\).*} "entry_different: frame: compact"
-gdb_test_no_output "set print entry-values default" "entry_different: set print entry-values default"
-gdb_test "frame" {\(val=6, val@entry=5\).*} "entry_different: frame: default"
-
-gdb_continue_to_breakpoint "entry_validity: breakhere"
-
-gdb_test_no_output "set print entry-values no" "entry_validity: set print entry-values no"
-gdb_test "frame" {\(lost=<optimized out>, born=10\).*} "entry_validity: frame: no"
-gdb_test_no_output "set print entry-values only" "entry_validity: set print entry-values only"
-gdb_test "frame" {\(lost@entry=5, born@entry=<optimized out>\).*} "entry_validity: frame: only"
-gdb_test_no_output "set print entry-values preferred" "entry_validity: set print entry-values preferred"
-gdb_test "frame" {\(lost@entry=5, born=10\).*} "entry_validity: frame: preferred"
-gdb_test_no_output "set print entry-values if-needed" "entry_validity: set print entry-values if-needed"
-gdb_test "frame" {\(lost@entry=5, born=10\).*} "entry_validity: frame: if-needed"
-gdb_test_no_output "set print entry-values both" "entry_validity: set print entry-values both"
-gdb_test "frame" {\(lost=<optimized out>, lost@entry=5, born=10, born@entry=<optimized out>\).*} "entry_validity: frame: both"
-gdb_test_no_output "set print entry-values compact" "entry_validity: set print entry-values compact"
-gdb_test "frame" {\(lost@entry=5, born=10\).*} "entry_validity: frame: compact"
-gdb_test_no_output "set print entry-values default" "entry_validity: set print entry-values default"
-gdb_test "frame" {\(lost=<optimized out>, lost@entry=5, born=10\).*} "entry_validity: frame: default"
-
-gdb_continue_to_breakpoint "entry_invalid: breakhere"
-
-gdb_test_no_output "set print entry-values no" "entry_invalid: set print entry-values no"
-gdb_test "frame" {\(inv=<optimized out>\).*} "entry_invalid: frame: no"
-gdb_test_no_output "set print entry-values only" "entry_invalid: set print entry-values only"
-gdb_test "frame" {\(inv@entry=<optimized out>\).*} "entry_invalid: frame: only"
-gdb_test_no_output "set print entry-values preferred" "entry_invalid: set print entry-values preferred"
-gdb_test "frame" {\(inv@entry=<optimized out>\).*} "entry_invalid: frame: preferred"
-gdb_test_no_output "set print entry-values if-needed" "entry_invalid: set print entry-values if-needed"
-gdb_test "frame" {\(inv=<optimized out>\).*} "entry_invalid: frame: if-needed"
-gdb_test_no_output "set print entry-values both" "entry_invalid: set print entry-values both"
-gdb_test "frame" {\(inv=<optimized out>, inv@entry=<optimized out>\).*} "entry_invalid: frame: both"
-gdb_test_no_output "set print entry-values compact" "entry_invalid: set print entry-values compact"
-gdb_test "frame" {\(inv=<optimized out>\).*} "entry_invalid: frame: compact"
-gdb_test_no_output "set print entry-values default" "entry_invalid: set print entry-values default"
-gdb_test "frame" {\(inv=<optimized out>\).*} "entry_invalid: frame: default"
+if {[mi_runto main] == -1} {
+    return -1
+}
+mi_gdb_test "-gdb-set print entry-values if-needed" {\^done} "if-needed: set print entry-values"
+mi_send_resuming_command "exec-continue" "if-needed: entry_equal: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="5"}} .* .* {.* disp="keep"} "if-needed: entry_equal: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="5"}\]} "if-needed: entry_equal: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "if-needed: entry_different: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="6"}} .* .* {.* disp="keep"} "if-needed: entry_different: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="6"}\]} "if-needed: entry_different: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "if-needed: validity: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="lost",entry_value="5"},{name="born",value="10"}} .* .* {.* disp="keep"} "if-needed: validity: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="lost",arg="1",entry_value="5"},{name="born",arg="1",value="10"}\]} "if-needed: validity: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "if-needed: invalid: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="inv",value="<optimized out>"}} .* .* {.* disp="keep"} "if-needed: invalid: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="inv",arg="1",value="<optimized out>"}\]} "if-needed: invalid: -stack-list-variables"
+
+if {[mi_runto main] == -1} {
+    return -1
+}
+mi_gdb_test "-gdb-set print entry-values both" {\^done} "both: set print entry-values"
+mi_send_resuming_command "exec-continue" "both: entry_equal: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="5",entry_value="5"}} .* .* {.* disp="keep"} "both: entry_equal: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="5",entry_value="5"}\]} "both: entry_equal: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "both: entry_different: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="6",entry_value="5"}} .* .* {.* disp="keep"} "both: entry_different: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="6",entry_value="5"}\]} "both: entry_different: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "both: validity: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="lost",value="<optimized out>",entry_value="5"},{name="born",value="10",entry_value="<optimized out>"}} .* .* {.* disp="keep"} "both: validity: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="lost",arg="1",value="<optimized out>",entry_value="5"},{name="born",arg="1",value="10",entry_value="<optimized out>"}\]} "both: validity: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "both: invalid: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="inv",value="<optimized out>",entry_value="<optimized out>"}} .* .* {.* disp="keep"} "both: invalid: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="inv",arg="1",value="<optimized out>",entry_value="<optimized out>"}\]} "both: invalid: -stack-list-variables"
+
+if {[mi_runto main] == -1} {
+    return -1
+}
+mi_gdb_test "-gdb-set print entry-values compact" {\^done} "compact: set print entry-values"
+mi_send_resuming_command "exec-continue" "compact: entry_equal: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="5",entry_value="5"}} .* .* {.* disp="keep"} "compact: entry_equal: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="5",entry_value="5"}\]} "compact: entry_equal: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "compact: entry_different: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="6",entry_value="5"}} .* .* {.* disp="keep"} "compact: entry_different: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="6",entry_value="5"}\]} "compact: entry_different: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "compact: validity: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="lost",entry_value="5"},{name="born",value="10"}} .* .* {.* disp="keep"} "compact: validity: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="lost",arg="1",entry_value="5"},{name="born",arg="1",value="10"}\]} "compact: validity: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "compact: invalid: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="inv",value="<optimized out>"}} .* .* {.* disp="keep"} "compact: invalid: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="inv",arg="1",value="<optimized out>"}\]} "compact: invalid: -stack-list-variables"
+
+if {[mi_runto main] == -1} {
+    return -1
+}
+mi_gdb_test "-gdb-set print entry-values default" {\^done} "default: set print entry-values"
+mi_send_resuming_command "exec-continue" "default: entry_equal: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="5",entry_value="5"}} .* .* {.* disp="keep"} "default: entry_equal: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="5",entry_value="5"}\]} "default: entry_equal: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "default: entry_different: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="val",value="6",entry_value="5"}} .* .* {.* disp="keep"} "default: entry_different: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="val",arg="1",value="6",entry_value="5"}\]} "default: entry_different: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "default: validity: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="lost",value="<optimized out>",entry_value="5"},{name="born",value="10"}} .* .* {.* disp="keep"} "default: validity: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="lost",arg="1",value="<optimized out>",entry_value="5"},{name="born",arg="1",value="10"}\]} "default: validity: -stack-list-variables"
+mi_send_resuming_command "exec-continue" "default: invalid: continue"
+mi_expect_stop "breakpoint-hit" .* {{name="inv",value="<optimized out>"}} .* .* {.* disp="keep"} "default: invalid: stop"
+mi_gdb_test "-stack-list-variables --all-values" {\^done,variables=\[{name="inv",arg="1",value="<optimized out>"}\]} "default: invalid: -stack-list-variables"
diff --git a/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.s b/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.s
new file mode 100644
index 0000000..f20d327
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.s
@@ -0,0 +1,899 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2011 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* This file is compiled from gdb.mi/mi2-amd64-entry-value.c
+   using -g -dA -S -O2.  */
+
+	.file	"mi2-amd64-entry-value.c"
+	.text
+.Ltext0:
+	.p2align 4,,15
+	.type	e, @function
+e:
+.LFB0:
+	.file 1 "gdb.mi/mi2-amd64-entry-value.c"
+	# gdb.mi/mi2-amd64-entry-value.c:22
+	.loc 1 22 0
+	.cfi_startproc
+.LVL0:
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%]  (fallthru)
+	# gdb.mi/mi2-amd64-entry-value.c:23
+	.loc 1 23 0
+	movl	$0, v(%rip)
+# SUCC: EXIT [100.0%] 
+	# gdb.mi/mi2-amd64-entry-value.c:24
+	.loc 1 24 0
+	ret
+	.cfi_endproc
+.LFE0:
+	.size	e, .-e
+	.p2align 4,,15
+	.type	data, @function
+data:
+.LFB1:
+	# gdb.mi/mi2-amd64-entry-value.c:28
+	.loc 1 28 0
+	.cfi_startproc
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%]  (fallthru)
+	# gdb.mi/mi2-amd64-entry-value.c:30
+	.loc 1 30 0
+	movl	$10, %eax
+# SUCC: EXIT [100.0%] 
+	ret
+	.cfi_endproc
+.LFE1:
+	.size	data, .-data
+	.p2align 4,,15
+	.type	data2, @function
+data2:
+.LFB2:
+	# gdb.mi/mi2-amd64-entry-value.c:34
+	.loc 1 34 0
+	.cfi_startproc
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%]  (fallthru)
+	# gdb.mi/mi2-amd64-entry-value.c:36
+	.loc 1 36 0
+	movl	$20, %eax
+# SUCC: EXIT [100.0%] 
+	ret
+	.cfi_endproc
+.LFE2:
+	.size	data2, .-data2
+	.p2align 4,,15
+	.type	different, @function
+different:
+.LFB3:
+	# gdb.mi/mi2-amd64-entry-value.c:40
+	.loc 1 40 0
+	.cfi_startproc
+.LVL1:
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%]  (fallthru)
+	pushq	%rbx
+.LCFI0:
+	.cfi_def_cfa_offset 16
+	.cfi_offset 3, -16
+	# gdb.mi/mi2-amd64-entry-value.c:41
+	.loc 1 41 0
+	leal	1(%rdi), %ebx
+.LVL2:
+	# gdb.mi/mi2-amd64-entry-value.c:42
+	.loc 1 42 0
+	cvtsi2sd	%ebx, %xmm0
+	movl	%ebx, %edi
+	call	e
+.LVL3:
+	# gdb.mi/mi2-amd64-entry-value.c:43
+	.loc 1 43 0
+#APP
+# 43 "gdb.mi/mi2-amd64-entry-value.c" 1
+	breakhere_different:
+# 0 "" 2
+	# gdb.mi/mi2-amd64-entry-value.c:45
+	.loc 1 45 0
+#NO_APP
+	movl	%ebx, %eax
+	popq	%rbx
+.LCFI1:
+	.cfi_def_cfa_offset 8
+.LVL4:
+# SUCC: EXIT [100.0%] 
+	ret
+	.cfi_endproc
+.LFE3:
+	.size	different, .-different
+	.p2align 4,,15
+	.type	validity, @function
+validity:
+.LFB4:
+	# gdb.mi/mi2-amd64-entry-value.c:49
+	.loc 1 49 0
+	.cfi_startproc
+.LVL5:
+# BLOCK 2 freq:10000 seq:0
+# PRED: ENTRY [100.0%]  (fallthru)
+	# gdb.mi/mi2-amd64-entry-value.c:51
+	.loc 1 51 0
+	xorpd	%xmm0, %xmm0
+	# gdb.mi/mi2-amd64-entry-value.c:49
+	.loc 1 49 0
+	pushq	%rbx
+.LCFI2:
+	.cfi_def_cfa_offset 16
+	.cfi_offset 3, -16
+	# gdb.mi/mi2-amd64-entry-value.c:51
+	.loc 1 51 0
+	xorl	%edi, %edi
+	# gdb.mi/mi2-amd64-entry-value.c:49
+	.loc 1 49 0
+	movl	%esi, %ebx
+	# gdb.mi/mi2-amd64-entry-value.c:51
+	.loc 1 51 0
+	call	e
+.LVL6:
+	# gdb.mi/mi2-amd64-entry-value.c:52
+	.loc 1 52 0
+#APP
+# 52 "gdb.mi/mi2-amd64-entry-value.c" 1
+	breakhere_validity:
+# 0 "" 2
+	# gdb.mi/mi2-amd64-entry-value.c:54
+	.loc 1 54 0


hooks/post-receive
--
Repository for Project Archer.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-09-08 22:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-09-05  0:41 [SCM] archer-jankratochvil-entryval: jkratoch
  -- strict thread matches above, loose matches on Subject: below --
2011-09-08 22:28 jkratoch
2011-09-01 23:22 jkratoch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).