rpms/gdb/F-10 gdb-6.8-bz377541-vla.patch, 1.2, 1.3 gdb-6.8-bz466901-backtrace-full-prelinked.patch, 1.1, 1.2 gdb.spec, 1.311, 1.312 gdb-6.8-bz466901-backtrace-never-aborts.patch, 1.2, NONE

Jan Kratochvil jkratoch at fedoraproject.org
Sun Nov 9 15:22:32 UTC 2008


Author: jkratoch

Update of /cvs/pkgs/rpms/gdb/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv17958

Modified Files:
	gdb-6.8-bz377541-vla.patch 
	gdb-6.8-bz466901-backtrace-full-prelinked.patch gdb.spec 
Removed Files:
	gdb-6.8-bz466901-backtrace-never-aborts.patch 
Log Message:
* Sun Nov  9 2008 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8-29
- Fix more the variable-length-arrays support (BZ 468266, feature BZ 377541).
- Integrate the `bt full' protection (for BZ 466901) into the VLA patch.


gdb-6.8-bz377541-vla.patch:

Index: gdb-6.8-bz377541-vla.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-10/gdb-6.8-bz377541-vla.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- gdb-6.8-bz377541-vla.patch	6 Nov 2008 20:52:35 -0000	1.2
+++ gdb-6.8-bz377541-vla.patch	9 Nov 2008 15:22:32 -0000	1.3
@@ -1,9 +1,9 @@
 Based on:
 http://people.redhat.com/jkratoch/vla/
-fortran-dynamic-arrays-HEAD-j.patch
+fortran-dynamic-arrays-HEAD-l.patch
 
---- ./gdb/c-typeprint.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/c-typeprint.c	2008-11-06 20:51:03.000000000 +0100
+--- ./gdb/c-typeprint.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/c-typeprint.c	2008-11-08 22:39:57.000000000 +0100
 @@ -541,7 +541,12 @@ c_type_print_varspec_suffix (struct type
  	fprintf_filtered (stream, ")");
  
@@ -18,8 +18,8 @@
  	&& !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
  	fprintf_filtered (stream, "%d",
  			  (TYPE_LENGTH (type)
---- ./gdb/dwarf2expr.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/dwarf2expr.c	2008-11-06 20:51:03.000000000 +0100
+--- ./gdb/dwarf2expr.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/dwarf2expr.c	2008-11-08 22:39:57.000000000 +0100
 @@ -750,6 +750,13 @@ execute_stack_op (struct dwarf_expr_cont
  	  ctx->initialized = 0;
  	  goto no_push;
@@ -34,8 +34,8 @@
  	default:
  	  error (_("Unhandled dwarf expression opcode 0x%x"), op);
  	}
---- ./gdb/dwarf2expr.h	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/dwarf2expr.h	2008-11-06 20:51:03.000000000 +0100
+--- ./gdb/dwarf2expr.h	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/dwarf2expr.h	2008-11-08 22:39:57.000000000 +0100
 @@ -61,10 +61,10 @@ struct dwarf_expr_context
       The result must be live until the current expression evaluation
       is complete.  */
@@ -48,9 +48,9 @@
  
    /* The current depth of dwarf expression recursion, via DW_OP_call*,
       DW_OP_fbreg, DW_OP_push_object_address, etc., and the maximum
---- ./gdb/dwarf2loc.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/dwarf2loc.c	2008-11-06 20:51:35.000000000 +0100
-@@ -106,6 +106,9 @@ struct dwarf_expr_baton
+--- ./gdb/dwarf2loc.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/dwarf2loc.c	2008-11-08 22:39:57.000000000 +0100
+@@ -105,6 +105,9 @@ struct dwarf_expr_baton
  {
    struct frame_info *frame;
    struct objfile *objfile;
@@ -60,7 +60,7 @@
  };
  
  /* Helper functions for dwarf2_evaluate_loc_desc.  */
-@@ -164,22 +167,32 @@ dwarf_expr_frame_base (void *baton, gdb_
+@@ -160,22 +163,32 @@ dwarf_expr_frame_base (void *baton, gdb_
        *start = find_location_expression (symbaton, length,
  					 get_frame_address_in_block (frame));
      }
@@ -102,7 +102,7 @@
  }
  
  /* Using the objfile specified in BATON, find the address for the
-@@ -192,6 +205,117 @@ dwarf_expr_tls_address (void *baton, COR
+@@ -188,6 +201,117 @@ dwarf_expr_tls_address (void *baton, COR
    return target_translate_tls_address (debaton->objfile, offset);
  }
  
@@ -220,7 +220,7 @@
  /* Evaluate a location description, starting at DATA and with length
     SIZE, to find the current location of variable VAR in the context
     of FRAME.  */
-@@ -202,8 +326,8 @@ dwarf2_evaluate_loc_desc (struct symbol 
+@@ -198,8 +322,8 @@ dwarf2_evaluate_loc_desc (struct symbol 
  {
    struct gdbarch *arch = get_frame_arch (frame);
    struct value *retval;
@@ -230,7 +230,7 @@
  
    if (size == 0)
      {
-@@ -213,17 +337,8 @@ dwarf2_evaluate_loc_desc (struct symbol 
+@@ -209,17 +333,8 @@ dwarf2_evaluate_loc_desc (struct symbol 
        return retval;
      }
  
@@ -249,7 +249,7 @@
    if (ctx->num_pieces > 0)
      {
        int i;
-@@ -261,6 +376,10 @@ dwarf2_evaluate_loc_desc (struct symbol 
+@@ -257,6 +372,10 @@ dwarf2_evaluate_loc_desc (struct symbol 
      {
        CORE_ADDR address = dwarf_expr_fetch (ctx, 0);
  
@@ -260,7 +260,7 @@
        retval = allocate_value (SYMBOL_TYPE (var));
        VALUE_LVAL (retval) = lval_memory;
        set_value_lazy (retval, 1);
-@@ -269,7 +388,7 @@ dwarf2_evaluate_loc_desc (struct symbol 
+@@ -265,7 +384,7 @@ dwarf2_evaluate_loc_desc (struct symbol 
  
    set_value_initialized (retval, ctx->initialized);
  
@@ -269,7 +269,7 @@
  
    return retval;
  }
-@@ -578,7 +697,7 @@ static int
+@@ -574,7 +693,7 @@ static int
  loclist_describe_location (struct symbol *symbol, struct ui_file *stream)
  {
    /* FIXME: Could print the entire list of locations.  */
@@ -278,7 +278,7 @@
    return 1;
  }
  
-@@ -594,16 +713,56 @@ loclist_tracepoint_var_ref (struct symbo
+@@ -590,16 +709,56 @@ loclist_tracepoint_var_ref (struct symbo
  
    data = find_location_expression (dlbaton, &size, ax->scope);
    if (data == NULL)
@@ -338,8 +338,8 @@
 +  missing_describe_location,
 +  missing_tracepoint_var_ref
 +};
---- ./gdb/dwarf2loc.h	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/dwarf2loc.h	2008-11-06 20:52:23.000000000 +0100
+--- ./gdb/dwarf2loc.h	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/dwarf2loc.h	2008-11-08 22:39:57.000000000 +0100
 @@ -65,5 +65,11 @@ struct dwarf2_loclist_baton
  
  extern const struct symbol_ops dwarf2_locexpr_funcs;
@@ -352,9 +352,9 @@
 +  (struct dwarf2_locexpr_baton *dlbaton);
  
  #endif /* dwarf2loc.h */
---- ./gdb/dwarf2read.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/dwarf2read.c	2008-11-06 20:51:35.000000000 +0100
-@@ -1005,7 +1005,14 @@ static void store_in_ref_table (unsigned
+--- ./gdb/dwarf2read.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/dwarf2read.c	2008-11-08 22:47:45.000000000 +0100
+@@ -1004,7 +1004,14 @@ static void store_in_ref_table (unsigned
  static unsigned int dwarf2_get_ref_die_offset (struct attribute *,
  					       struct dwarf2_cu *);
  
@@ -370,7 +370,7 @@
  
  static struct die_info *follow_die_ref (struct die_info *,
  					struct attribute *,
-@@ -1060,6 +1067,9 @@ static void age_cached_comp_units (void)
+@@ -1059,6 +1066,9 @@ static void age_cached_comp_units (void)
  
  static void free_one_cached_comp_unit (void *);
  
@@ -380,7 +380,7 @@
  static void set_die_type (struct die_info *, struct type *,
  			  struct dwarf2_cu *);
  
-@@ -1083,6 +1093,9 @@ static void dwarf2_clear_marks (struct d
+@@ -1082,6 +1092,9 @@ static void dwarf2_clear_marks (struct d
  static void read_set_type (struct die_info *, struct dwarf2_cu *);
  
  
@@ -390,7 +390,7 @@
  /* Try to locate the sections we need for DWARF 2 debugging
     information and return true if we have enough to do something.  */
  
-@@ -4402,6 +4415,26 @@ process_enumeration_scope (struct die_in
+@@ -4387,6 +4400,26 @@ process_enumeration_scope (struct die_in
    new_symbol (die, die->type, cu);
  }
  
@@ -417,7 +417,7 @@
  /* Extract all information from a DW_TAG_array_type DIE and put it in
     the DIE's type field.  For now, this only handles one dimensional
     arrays.  */
-@@ -4415,7 +4448,7 @@ read_array_type (struct die_info *die, s
+@@ -4400,7 +4433,7 @@ read_array_type (struct die_info *die, s
    struct type *element_type, *range_type, *index_type;
    struct type **range_types = NULL;
    struct attribute *attr;
@@ -426,7 +426,7 @@
    struct cleanup *back_to;
    char *name;
  
-@@ -4470,16 +4503,11 @@ read_array_type (struct die_info *die, s
+@@ -4455,16 +4488,11 @@ read_array_type (struct die_info *die, s
    type = element_type;
  
    if (read_array_order (die, cu) == DW_ORD_col_major)
@@ -448,7 +448,7 @@
  
    /* Understand Dwarf2 support for vector types (like they occur on
       the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
-@@ -4841,34 +4869,98 @@ read_tag_string_type (struct die_info *d
+@@ -4826,34 +4854,98 @@ read_tag_string_type (struct die_info *d
    struct objfile *objfile = cu->objfile;
    struct type *type, *range_type, *index_type, *char_type;
    struct attribute *attr;
@@ -470,12 +470,12 @@
 +
    attr = dwarf2_attr (die, DW_AT_string_length, cu);
 -  if (attr)
-+  switch (dwarf2_get_attr_constant_value (attr, &length))
-     {
+-    {
 -      length = DW_UNSND (attr);
 -    }
 -  else
--    {
++  switch (dwarf2_get_attr_constant_value (attr, &length))
+     {
 -      /* check for the DW_AT_byte_size attribute */
 +    case dwarf2_attr_const:
 +      /* We currently do not support a constant address where the location
@@ -564,7 +564,7 @@
    type = create_string_type (NULL, range_type);
  
    set_die_type (die, type, cu);
-@@ -4961,7 +5053,6 @@ static void
+@@ -4946,7 +5038,6 @@ static void
  read_typedef (struct die_info *die, struct dwarf2_cu *cu)
  {
    struct objfile *objfile = cu->objfile;
@@ -572,7 +572,7 @@
    char *name = NULL;
  
    if (!die->type)
-@@ -5067,9 +5158,9 @@ read_subrange_type (struct die_info *die
+@@ -5052,9 +5143,9 @@ read_subrange_type (struct die_info *die
  {
    struct type *base_type;
    struct type *range_type;
@@ -585,7 +585,7 @@
    char *name;
    
    /* If we have already decoded this die, then nothing more to do.  */
-@@ -5086,42 +5177,87 @@ read_subrange_type (struct die_info *die
+@@ -5071,42 +5162,89 @@ read_subrange_type (struct die_info *die
  		     0, NULL, cu->objfile);
      }
  
@@ -663,7 +663,9 @@
 +    {
 +      attr = dwarf2_attr (die, DW_AT_count, cu);
 +      high_type = dwarf2_get_attr_constant_value (attr, &high);
-+      TYPE_FLAGS (range_type) |= TYPE_FLAG_RANGE_HIGH_BOUND_IS_COUNT;
++      /* It does not hurt but it is needlessly ineffective in check_typedef.  */
++      if (high_type != dwarf2_attr_unknown)
++	TYPE_FLAGS (range_type) |= TYPE_FLAG_RANGE_HIGH_BOUND_IS_COUNT;
 +      /* Pass it now as the regular DW_AT_upper_bound.  */
 +    }
 +  switch (high_type)
@@ -703,7 +705,7 @@
  
    name = dwarf2_name (die, cu);
    if (name)
-@@ -7256,10 +7392,12 @@ var_decode_location (struct attribute *a
+@@ -7237,10 +7375,12 @@ var_decode_location (struct attribute *a
       (i.e. when the value of a register or memory location is
       referenced, or a thread-local block, etc.).  Then again, it might
       not be worthwhile.  I'm assuming that it isn't unless performance
@@ -718,7 +720,16 @@
  }
  
  /* Given a pointer to a DWARF information entry, figure out if we need
-@@ -9120,26 +9258,35 @@ dwarf2_get_ref_die_offset (struct attrib
+@@ -7272,6 +7412,8 @@ new_symbol (struct die_info *die, struct
+ 					     sizeof (struct symbol));
+       OBJSTAT (objfile, n_syms++);
+       memset (sym, 0, sizeof (struct symbol));
++      /* Some methods are called without checking SYMBOL_OPS validity.  */
++      SYMBOL_OPS (sym) = &dwarf2_missing_funcs;
+ 
+       /* Cache this symbol's name and the name's demangled form (if any).  */
+       SYMBOL_LANGUAGE (sym) = cu->language;
+@@ -9079,26 +9221,35 @@ dwarf2_get_ref_die_offset (struct attrib
    return result;
  }
  
@@ -748,7 +759,7 @@
 -      return default_value;
 +      *val_return = DW_SND (attr);
 +      return dwarf2_attr_const;
-+    }
+     }
 +  if (attr->form == DW_FORM_udata
 +      || attr->form == DW_FORM_data1
 +      || attr->form == DW_FORM_data2
@@ -757,7 +768,7 @@
 +    {
 +      *val_return = DW_UNSND (attr);
 +      return dwarf2_attr_const;
-     }
++    }
 +  if (attr->form == DW_FORM_block
 +      || attr->form == DW_FORM_block1
 +      || attr->form == DW_FORM_block2
@@ -769,7 +780,7 @@
  }
  
  static struct die_info *
-@@ -9903,6 +10050,34 @@ attr_form_is_constant (struct attribute 
+@@ -9862,6 +10013,34 @@ attr_form_is_constant (struct attribute 
      }
  }
  
@@ -804,7 +815,7 @@
  static void
  dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
  			     struct dwarf2_cu *cu)
-@@ -9938,34 +10113,24 @@ dwarf2_symbol_mark_computed (struct attr
+@@ -9897,34 +10076,24 @@ dwarf2_symbol_mark_computed (struct attr
        SYMBOL_OPS (sym) = &dwarf2_loclist_funcs;
        SYMBOL_LOCATION_BATON (sym) = baton;
      }
@@ -853,7 +864,7 @@
      }
  }
  
-@@ -10205,6 +10370,27 @@ offset_and_type_eq (const void *item_lhs
+@@ -10164,6 +10333,27 @@ offset_and_type_eq (const void *item_lhs
    return ofs_lhs->offset == ofs_rhs->offset;
  }
  
@@ -881,7 +892,7 @@
  /* Set the type associated with DIE to TYPE.  Save it in CU's hash
     table if necessary.  */
  
-@@ -10215,6 +10401,8 @@ set_die_type (struct die_info *die, stru
+@@ -10174,6 +10364,8 @@ set_die_type (struct die_info *die, stru
  
    die->type = type;
  
@@ -890,8 +901,8 @@
    if (cu->per_cu == NULL)
      return;
  
---- ./gdb/eval.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/eval.c	2008-11-06 20:51:35.000000000 +0100
+--- ./gdb/eval.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/eval.c	2008-11-08 22:39:57.000000000 +0100
 @@ -38,6 +38,7 @@
  #include "ui-out.h"
  #include "exceptions.h"
@@ -1007,8 +1018,8 @@
  
      default:
        val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
---- ./gdb/f-lang.h	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/f-lang.h	2008-11-06 20:51:03.000000000 +0100
+--- ./gdb/f-lang.h	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/f-lang.h	2008-11-08 22:39:57.000000000 +0100
 @@ -28,6 +28,10 @@ extern void f_error (char *);	/* Defined
  extern void f_print_type (struct type *, char *, struct ui_file *, int,
  			  int);
@@ -1020,8 +1031,8 @@
  extern int f_val_print (struct type *, const gdb_byte *, int, CORE_ADDR,
  			struct ui_file *, int, int, int,
  			enum val_prettyprint);
---- ./gdb/f-typeprint.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/f-typeprint.c	2008-11-06 20:51:03.000000000 +0100
+--- ./gdb/f-typeprint.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/f-typeprint.c	2008-11-08 22:39:57.000000000 +0100
 @@ -31,7 +31,7 @@
  #include "gdbcore.h"
  #include "target.h"
@@ -1157,8 +1168,8 @@
        if (passed_a_ptr)
  	fprintf_filtered (stream, ")");
  
---- ./gdb/f-valprint.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/f-valprint.c	2008-11-06 20:51:03.000000000 +0100
+--- ./gdb/f-valprint.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/f-valprint.c	2008-11-08 22:48:10.000000000 +0100
 @@ -54,15 +54,17 @@ int f77_array_offset_tbl[MAX_FORTRAN_DIM
  /* The following macro gives us the size of the nth dimension, Where 
     n is 1 based. */
@@ -1278,8 +1289,18 @@
    CHECK_TYPEDEF (type);
    switch (TYPE_CODE (type))
      {
---- ./gdb/findvar.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/findvar.c	2008-11-06 20:51:03.000000000 +0100
+@@ -599,8 +611,7 @@ info_common_command (char *comname, int 
+       while (entry != NULL)
+ 	{
+ 	  printf_filtered ("%s = ", DEPRECATED_SYMBOL_NAME (entry->symbol));
+-	  print_variable_value (entry->symbol, fi, gdb_stdout);
+-	  printf_filtered ("\n");
++	  print_variable_value_nl (entry->symbol, fi, gdb_stdout);
+ 	  entry = entry->next;
+ 	}
+     }
+--- ./gdb/findvar.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/findvar.c	2008-11-08 22:39:57.000000000 +0100
 @@ -34,6 +34,7 @@
  #include "regcache.h"
  #include "user-regs.h"
@@ -1411,7 +1432,7 @@
  
      case LOC_REGISTER:
      case LOC_REGPARM:
-@@ -530,7 +537,6 @@ addresses have not been bound by the dyn
+@@ -532,7 +539,6 @@ addresses have not been bound by the dyn
  	      error (_("Value of register variable not available."));
  
  	    addr = value_as_address (regval);
@@ -1419,7 +1440,7 @@
  	  }
  	else
  	  {
-@@ -570,18 +576,33 @@ addresses have not been bound by the dyn
+@@ -572,18 +578,33 @@ addresses have not been bound by the dyn
        break;
  
      case LOC_OPTIMIZED_OUT:
@@ -1459,7 +1480,7 @@
  }
  
  /* Install default attributes for register values.  */
-@@ -618,10 +639,11 @@ struct value *
+@@ -620,10 +641,11 @@ struct value *
  value_from_register (struct type *type, int regnum, struct frame_info *frame)
  {
    struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -1473,7 +1494,7 @@
      {
        /* The ISA/ABI need to something weird when obtaining the
           specified value from this register.  It might need to
-@@ -635,7 +657,7 @@ value_from_register (struct type *type, 
+@@ -637,7 +659,7 @@ value_from_register (struct type *type, 
        VALUE_FRAME_ID (v) = get_frame_id (frame);
        VALUE_REGNUM (v) = regnum;
        gdbarch_register_to_value (gdbarch,
@@ -1482,8 +1503,8 @@
      }
    else
      {
---- ./gdb/gdbtypes.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/gdbtypes.c	2008-11-06 20:51:03.000000000 +0100
+--- ./gdb/gdbtypes.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/gdbtypes.c	2008-11-08 22:46:45.000000000 +0100
 @@ -38,6 +38,8 @@
  #include "cp-abi.h"
  #include "gdb_assert.h"
@@ -1733,7 +1754,7 @@
  
  struct type *
  check_typedef (struct type *type)
-@@ -1505,34 +1621,85 @@ check_typedef (struct type *type)
+@@ -1505,34 +1621,87 @@ check_typedef (struct type *type)
          }
      }
  
@@ -1744,10 +1765,13 @@
 +      struct type *ntype;
 +
 +      /* make_cv_type does not copy the contents of TYPE_MAIN_TYPE while we are
-+	 changing fields in it below.  Do a full TYPE_MAIN_TYPE copy.  */
++	 changing fields in it below.  Do a full TYPE_MAIN_TYPE copy.
++	 Sure FIXME as it is at least a memory leak.  */
 +
 +      ntype = alloc_type (TYPE_OBJFILE (type));
 +      *TYPE_MAIN_TYPE (ntype) = *TYPE_MAIN_TYPE (type);
++      TYPE_LENGTH (ntype) = TYPE_LENGTH (type);
++      TYPE_INSTANCE_FLAGS (ntype) = TYPE_INSTANCE_FLAGS (type);
 +      if (TYPE_NFIELDS (type))
 +	{
 +	  size_t size = sizeof (*TYPE_FIELDS (type)) * TYPE_NFIELDS (type);
@@ -1759,7 +1783,6 @@
 +	    TYPE_FIELDS (ntype) = xzalloc (size);
 +	  memcpy (TYPE_FIELDS (ntype), TYPE_FIELDS (type), size);
 +	}
-+      TYPE_INSTANCE_FLAGS (ntype) = TYPE_INSTANCE_FLAGS (type);
 +      type = ntype;
 +
 +      if (TYPE_CODE (type) == TYPE_CODE_ARRAY
@@ -1837,7 +1860,7 @@
  	  TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
  	}
        else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
-@@ -1540,9 +1707,12 @@ check_typedef (struct type *type)
+@@ -1540,9 +1709,12 @@ check_typedef (struct type *type)
  	  TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
  	  TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
  	}
@@ -1850,9 +1873,9 @@
    return type;
  }
  
---- ./gdb/gdbtypes.h	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/gdbtypes.h	2008-11-06 20:51:03.000000000 +0100
-@@ -310,6 +310,16 @@ enum type_code
+--- ./gdb/gdbtypes.h	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/gdbtypes.h	2008-11-08 22:39:57.000000000 +0100
+@@ -295,6 +295,16 @@ enum type_code
  #define TYPE_FLAG_NOTTEXT	(1 << 17)
  #define TYPE_NOTTEXT(t)		(TYPE_FLAGS (t) & TYPE_FLAG_NOTTEXT)
  
@@ -1869,7 +1892,7 @@
  /* Determine which field of the union main_type.fields[x].loc is used.  */
  
  enum field_loc_kind
-@@ -391,6 +401,15 @@ struct main_type
+@@ -376,6 +386,15 @@ struct main_type
  
    short vptr_fieldno;
  
@@ -1885,7 +1908,7 @@
    /* For structure and union types, a description of each field.
       For set and pascal array types, there is one "field",
       whose type is the domain type of the set or array.
-@@ -778,9 +797,9 @@ extern void allocate_cplus_struct_type (
+@@ -763,9 +782,9 @@ extern void allocate_cplus_struct_type (
  #define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
  #define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
  #define TYPE_CHAIN(thistype) (thistype)->chain
@@ -1898,7 +1921,7 @@
     calls check_typedef, TYPE_LENGTH (VALUE_TYPE (X)) is safe.  */
  #define TYPE_LENGTH(thistype) (thistype)->length
  #define TYPE_OBJFILE(thistype) TYPE_MAIN_TYPE(thistype)->objfile
-@@ -792,23 +811,49 @@ extern void allocate_cplus_struct_type (
+@@ -777,23 +796,49 @@ extern void allocate_cplus_struct_type (
  #define TYPE_FIELDS(thistype) TYPE_MAIN_TYPE(thistype)->fields
  #define TYPE_TEMPLATE_ARGS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->template_args
  #define TYPE_INSTANTIATIONS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->instantiations
@@ -1957,7 +1980,7 @@
  
  /* C++ */
  
-@@ -1271,12 +1316,26 @@ extern struct type *make_function_type (
+@@ -1256,12 +1301,26 @@ extern struct type *make_function_type (
  
  extern struct type *lookup_function_type (struct type *);
  
@@ -1984,9 +2007,17 @@
  extern struct type *create_string_type (struct type *, struct type *);
  
  extern struct type *create_set_type (struct type *, struct type *);
---- ./gdb/printcmd.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/printcmd.c	2008-11-06 20:51:03.000000000 +0100
-@@ -888,6 +888,11 @@ print_command_1 (char *exp, int inspect,
+--- ./gdb/printcmd.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/printcmd.c	2008-11-08 22:49:51.000000000 +0100
+@@ -42,6 +42,7 @@
+ #include "block.h"
+ #include "disasm.h"
+ #include "dfp.h"
++#include "exceptions.h"
+ 
+ #ifdef TUI
+ #include "tui/tui.h"		/* For tui_active et.al.   */
+@@ -888,6 +889,11 @@ print_command_1 (char *exp, int inspect,
    else
      val = access_value_history (0);
  
@@ -1998,8 +2029,62 @@
    if (voidprint || (val && value_type (val) &&
  		    TYPE_CODE (value_type (val)) != TYPE_CODE_VOID))
      {
+@@ -1716,15 +1722,26 @@ disable_display_command (char *args, int
+ 
+ 
+ /* Print the value in stack frame FRAME of a variable specified by a
+-   struct symbol.  */
++   struct symbol.  Printed value gets terminated by a newline.  */
+ 
+ void
+-print_variable_value (struct symbol *var, struct frame_info *frame,
+-		      struct ui_file *stream)
++print_variable_value_nl (struct symbol *var, struct frame_info *frame,
++			 struct ui_file *stream)
+ {
+-  struct value *val = read_var_value (var, frame);
++  struct value *val = NULL;	/* A false GCC warning.  */
++  struct gdb_exception e;
+ 
+-  value_print (val, stream, 0, Val_pretty_default);
++  TRY_CATCH (e, RETURN_MASK_ERROR)
++    {
++      val = read_var_value (var, frame);
++    }
++  if (e.reason < 0)
++    exception_print (stream, e);
++  else
++    {
++      value_print (val, stream, 0, Val_pretty_default);
++      fputc_filtered ('\n', stream);
++    }
+ }
+ 
+ static void
+--- ./gdb/stack.c	2008-03-17 16:06:24.000000000 +0100
++++ ./gdb/stack.c	2008-11-08 22:48:28.000000000 +0100
+@@ -1381,8 +1381,7 @@ print_block_frame_locals (struct block *
+ 	    fputs_filtered ("\t", stream);
+ 	  fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
+ 	  fputs_filtered (" = ", stream);
+-	  print_variable_value (sym, frame, stream);
+-	  fprintf_filtered (stream, "\n");
++	  print_variable_value_nl (sym, frame, stream);
+ 	  break;
+ 
+ 	default:
+@@ -1598,8 +1597,7 @@ print_frame_arg_vars (struct frame_info 
+ 
+ 	  sym2 = lookup_symbol (DEPRECATED_SYMBOL_NAME (sym),
+ 				b, VAR_DOMAIN, NULL, NULL);
+-	  print_variable_value (sym2, frame, stream);
+-	  fprintf_filtered (stream, "\n");
++	  print_variable_value_nl (sym2, frame, stream);
+ 	  break;
+ 
+ 	default:
 --- ./gdb/testsuite/gdb.base/vla-overflow.c	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.base/vla-overflow.c	2008-11-06 20:51:03.000000000 +0100
++++ ./gdb/testsuite/gdb.base/vla-overflow.c	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,30 @@
 +/* This testcase is part of GDB, the GNU debugger.
 +
@@ -2032,7 +2117,7 @@
 +  return 0;
 +}
 --- ./gdb/testsuite/gdb.base/vla-overflow.exp	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.base/vla-overflow.exp	2008-11-06 20:51:35.000000000 +0100
++++ ./gdb/testsuite/gdb.base/vla-overflow.exp	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,108 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -2143,7 +2228,7 @@
 +
 +verbose -log "kb_found in bt after abort() = [expr [memory_v_pages_get] * $pagesize / 1024]"
 --- ./gdb/testsuite/gdb.base/vla.c	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.base/vla.c	2008-11-06 20:51:03.000000000 +0100
++++ ./gdb/testsuite/gdb.base/vla.c	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,55 @@
 +/* This testcase is part of GDB, the GNU debugger.
 +
@@ -2201,7 +2286,7 @@
 +  return 0;
 +}
 --- ./gdb/testsuite/gdb.base/vla.exp	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.base/vla.exp	2008-11-06 20:51:03.000000000 +0100
++++ ./gdb/testsuite/gdb.base/vla.exp	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,62 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -2265,8 +2350,462 @@
 +gdb_test "p temp1" " = '1' <repeats 78 times>" "second: print temp1"
 +gdb_test "p temp2" " = '2' <repeats 78 times>" "second: print temp2"
 +gdb_test "p temp3" " = '3' <repeats 48 times>" "second: print temp3"
+--- ./gdb/testsuite/gdb.dwarf2/dw2-framebase-missing-func.S	1970-01-01 01:00:00.000000000 +0100
++++ ./gdb/testsuite/gdb.dwarf2/dw2-framebase-missing-func.S	2008-11-08 22:46:45.000000000 +0100
+@@ -0,0 +1,336 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++   Copyright 2008 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/>.  */
++
++/*
++#include <stdlib.h>
++
++void
++func (void)
++{
++  int i;
++
++  abort ();
++}
++*/
++	.file	"dw2-loclist-prelinked.c"
++	.section	.debug_abbrev,"", at progbits
++.Ldebug_abbrev0:
++	.section	.debug_info,"", at progbits
++.Ldebug_info0:
++	.section	.debug_line,"", at progbits
++.Ldebug_line0:
++	.text
++.Ltext0:
++.globl func
++	.type	func, @function
++func:
++.LFB2:
++	.file 1 "dw2-loclist-prelinked.c"
++	.loc 1 5 0
++	pushl	%ebp
++.LCFI0:
++	movl	%esp, %ebp
++.LCFI1:
++	subl	$24, %esp
++.LCFI2:
++	.loc 1 8 0
++	call	abort
++.LFE2:
++	.size	func, .-func
++	.section	.debug_frame,"", at progbits
++.Lframe0:
++	.long	.LECIE0-.LSCIE0
++.LSCIE0:
++	.long	0xffffffff
++	.byte	0x1
++	.string	""
++	.uleb128 0x1
++	.sleb128 -4
++	.byte	0x8
++	.byte	0xc
++	.uleb128 0x4
++	.uleb128 0x4
++	.byte	0x88
++	.uleb128 0x1
++	.align 4
++.LECIE0:
++.LSFDE0:
++	.long	.LEFDE0-.LASFDE0
++.LASFDE0:
++	.long	.Lframe0
++	.long	.LFB2
++	.long	.LFE2-.LFB2
++	.byte	0x4
++	.long	.LCFI0-.LFB2
++	.byte	0xe
++	.uleb128 0x8
++	.byte	0x85
++	.uleb128 0x2
++	.byte	0x4
++	.long	.LCFI1-.LCFI0
++	.byte	0xd
++	.uleb128 0x5
++	.align 4
++.LEFDE0:
++	.text
++.Letext0:
++#if 0 /* FRAMEBASE_MISSING */
++	.section	.debug_loc,"", at progbits
++.Ldebug_loc0:
++.LLST0:
++	.long	.LFB2-.Ltext0
++	.long	.LCFI0-.Ltext0
++	.value	0x2
++	.byte	0x74
++	.sleb128 4
++	.long	.LCFI0-.Ltext0
++	.long	.LCFI1-.Ltext0
++	.value	0x2
++	.byte	0x74
++	.sleb128 8
++	.long	.LCFI1-.Ltext0
++	.long	.LFE2-.Ltext0
++	.value	0x2
++	.byte	0x75
++	.sleb128 8
++	.long	0x0
++	.long	0x0
++#endif /* FRAMEBASE_MISSING */
++	.section	.debug_info
++	.long	.Ldebug_info_end - .Ldebug_info_start
++.Ldebug_info_start:
++	.value	0x2
++	.long	.Ldebug_abbrev0
++	.byte	0x4
++	.uleb128 0x1
++	.long	.LASF10
++	.byte	0x1
++	.long	.LASF11
++	.long	.LASF12
++	.long	.Ltext0
++	.long	.Letext0
++	.long	.Ldebug_line0
++	.uleb128 0x2
++	.byte	0x4
++	.byte	0x7
++	.long	.LASF0
++	.uleb128 0x3
++	.byte	0x4
++	.byte	0x5
++	.string	"int"
++	.uleb128 0x2
++	.byte	0x4
++	.byte	0x5
++	.long	.LASF1
++	.uleb128 0x2
++	.byte	0x1
++	.byte	0x8
++	.long	.LASF2
++	.uleb128 0x2
++	.byte	0x2
++	.byte	0x7
++	.long	.LASF3
++	.uleb128 0x2
++	.byte	0x4
++	.byte	0x7
++	.long	.LASF4
++	.uleb128 0x2
++	.byte	0x1
++	.byte	0x6
++	.long	.LASF5
++	.uleb128 0x2
++	.byte	0x2
++	.byte	0x5
++	.long	.LASF6
++	.uleb128 0x2
++	.byte	0x8
++	.byte	0x5
++	.long	.LASF7
++	.uleb128 0x2
++	.byte	0x8
++	.byte	0x7
++	.long	.LASF8
++	.uleb128 0x4
++	.byte	0x4
++	.byte	0x7
++	.uleb128 0x2
++	.byte	0x1
++	.byte	0x6
++	.long	.LASF9
++	.uleb128 0x5
++	.byte	0x1
++	.long	.LASF13
++	.byte	0x1
++	.byte	0x5
++	.byte	0x1
++	.long	.LFB2
++	.long	.LFE2
++#if 0 /* FRAMEBASE_MISSING */
++	.long	.LLST0		/* DW_AT_frame_base : 0x0 (location list) */
++#endif /* FRAMEBASE_MISSING */
++	.uleb128 0x6
++	.string	"i"
++	.byte	0x1
++	.byte	0x6
++	.long	0x2c
++	.byte	0x2
++	.byte	0x91
++	.sleb128 -12
++	.byte	0x0
++	.byte	0x0
++.Ldebug_info_end:
++	.section	.debug_abbrev
++	.uleb128 0x1
++	.uleb128 0x11
++	.byte	0x1
++	.uleb128 0x25
++	.uleb128 0xe
++	.uleb128 0x13
++	.uleb128 0xb
++	.uleb128 0x3
++	.uleb128 0xe
++	.uleb128 0x1b
++	.uleb128 0xe
++	.uleb128 0x11
++	.uleb128 0x1
++	.uleb128 0x12
++	.uleb128 0x1
++	.uleb128 0x10
++	.uleb128 0x6
++	.byte	0x0
++	.byte	0x0
++	.uleb128 0x2
++	.uleb128 0x24
++	.byte	0x0
++	.uleb128 0xb
++	.uleb128 0xb
++	.uleb128 0x3e
++	.uleb128 0xb
++	.uleb128 0x3
++	.uleb128 0xe
++	.byte	0x0
++	.byte	0x0
++	.uleb128 0x3
++	.uleb128 0x24
++	.byte	0x0
++	.uleb128 0xb
++	.uleb128 0xb
++	.uleb128 0x3e
++	.uleb128 0xb
++	.uleb128 0x3
++	.uleb128 0x8
++	.byte	0x0
++	.byte	0x0
++	.uleb128 0x4
++	.uleb128 0x24
++	.byte	0x0
++	.uleb128 0xb
++	.uleb128 0xb
++	.uleb128 0x3e
++	.uleb128 0xb
++	.byte	0x0
++	.byte	0x0
++	.uleb128 0x5
++	.uleb128 0x2e
++	.byte	0x1
++	.uleb128 0x3f
++	.uleb128 0xc
++	.uleb128 0x3
++	.uleb128 0xe
++	.uleb128 0x3a
++	.uleb128 0xb
++	.uleb128 0x3b
++	.uleb128 0xb
++	.uleb128 0x27
++	.uleb128 0xc
++	.uleb128 0x11
++	.uleb128 0x1
++	.uleb128 0x12
++	.uleb128 0x1
++#if 0 /* FRAMEBASE_MISSING */
++	.uleb128 0x40
++	.uleb128 0x6
++#endif /* FRAMEBASE_MISSING */
++	.byte	0x0
++	.byte	0x0
++	.uleb128 0x6
++	.uleb128 0x34
++	.byte	0x0
++	.uleb128 0x3
++	.uleb128 0x8
++	.uleb128 0x3a
++	.uleb128 0xb
++	.uleb128 0x3b
++	.uleb128 0xb
++	.uleb128 0x49
++	.uleb128 0x13
++	.uleb128 0x2
++	.uleb128 0xa
++	.byte	0x0
++	.byte	0x0
++	.byte	0x0
++	.section	.debug_pubnames,"", at progbits
++	.long	0x17
++	.value	0x2
++	.long	.Ldebug_info0
++	.long	0x98
++	.long	0x75
++	.string	"func"
++	.long	0x0
++	.section	.debug_aranges,"", at progbits
++	.long	0x1c
++	.value	0x2
++	.long	.Ldebug_info0
++	.byte	0x4
++	.byte	0x0
++	.value	0x0
++	.value	0x0
++	.long	.Ltext0
++	.long	.Letext0-.Ltext0
++	.long	0x0
++	.long	0x0
++	.section	.debug_str,"MS", at progbits,1
++.LASF7:
++	.string	"long long int"
++.LASF0:
++	.string	"unsigned int"
++.LASF11:
++	.string	"dw2-framebase-missing-func.c"
++.LASF12:
++	.string	"gdb-6.8/gdb/testsuite/gdb.dwarf2"
++.LASF4:
++	.string	"long unsigned int"
++.LASF8:
++	.string	"long long unsigned int"
++.LASF2:
++	.string	"unsigned char"
++.LASF9:
++	.string	"char"
++.LASF1:
++	.string	"long int"
++.LASF3:
++	.string	"short unsigned int"
++.LASF5:
++	.string	"signed char"
++.LASF10:
++	.string	"GNU C 4.3.2 20081007 (Red Hat 4.3.2-6)"
++.LASF13:
++	.string	"func"
++.LASF6:
++	.string	"short int"
++	.ident	"GCC: (GNU) 4.3.2 20081007 (Red Hat 4.3.2-6)"
++	.section	.note.GNU-stack,"", at progbits
+--- ./gdb/testsuite/gdb.dwarf2/dw2-framebase-missing-main.c	1970-01-01 01:00:00.000000000 +0100
++++ ./gdb/testsuite/gdb.dwarf2/dw2-framebase-missing-main.c	2008-11-08 22:46:45.000000000 +0100
+@@ -0,0 +1,26 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++   Copyright 2008 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/>.  */
++
++/* dw2-framebase-missing-func.S */
++extern void func (void);
++
++int
++main (void)
++{
++  func ();
++  return 0;
++}
+--- ./gdb/testsuite/gdb.dwarf2/dw2-framebase-missing.exp	1970-01-01 01:00:00.000000000 +0100
++++ ./gdb/testsuite/gdb.dwarf2/dw2-framebase-missing.exp	2008-11-08 22:46:45.000000000 +0100
+@@ -0,0 +1,83 @@
++# Copyright 2008 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 2 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, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++# Minimal DWARF-2 unit test
++
++# This test can only be run on i386/x86_64 targets which support DWARF-2.
++# For now pick a sampling of likely targets.
++if {(![istarget *-*-linux*]
++     && ![istarget *-*-gnu*]
++     && ![istarget *-*-elf*]
++     && ![istarget *-*-openbsd*])
++    || (![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"])} {
++    return 0  
++}
++
++set testfile "dw2-framebase-missing"
++set srcfuncfile ${testfile}-func.S
++set srcmainfile ${testfile}-main.c
++set binfile ${objdir}/${subdir}/${testfile}
++
++remote_exec build "rm -f ${binfile}"
++
++# get the value of gcc_compiled
++if [get_compiler_info ${binfile}] {
++    return -1
++}
++
++# This test can only be run on gcc as we use additional_flags=FIXME
++if {$gcc_compiled == 0} {
++    return 0
++}
++
++if  { [gdb_compile "${srcdir}/${subdir}/${srcmainfile} ${srcdir}/${subdir}/${srcfuncfile}" \
++		   "${binfile}" executable [list debug additional_flags=-m32]] != "" } {
++    return -1
++}
++
++gdb_exit
++gdb_start
++gdb_reinitialize_dir $srcdir/$subdir
++gdb_load ${binfile}
++
++gdb_run_cmd
++
++gdb_test "" "Program received signal SIGABRT, Aborted..*" "Enter abort()"
++
++# Incorrect:
++# #0  0x00110430 in __kernel_vsyscall ()
++# No symbol table info available.
++# #1  0x003d44c0 in raise () from /lib/libc.so.6
++# No symbol table info available.
++# #2  0x003d5e88 in abort () from /lib/libc.so.6
++# No symbol table info available.
++# #3  0x44f10437 in func () at dw2-framebase-missing.c:8
++# 	i = Could not find the frame base for "func".
++
++# Correct:
++# #0  0x00110430 in __kernel_vsyscall ()
++# No symbol table info available.
++# #1  0x003d44c0 in raise () from /lib/libc.so.6
++# No symbol table info available.
++# #2  0x003d5e88 in abort () from /lib/libc.so.6
++# No symbol table info available.
++# #3  0x4ae36437 in func () at dw2-framebase-missing.c:8
++# 	i = Could not find the frame base for "func".
++# #4  0x0804851a in main () at ../../../gdb/testsuite/gdb.dwarf2/dw2-framebase-missing-main.c:24
++# No locals.
++
++# `abort' can get expressed as `*__GI_abort'.
++gdb_test "bt full" "in \[^ \]*abort \\(.*in func \\(.*\ti = Could not find the frame base for \"func\".\r\n.*in main \\(.*" "Backtrace after abort()"
 --- ./gdb/testsuite/gdb.dwarf2/dw2-stripped.c	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.dwarf2/dw2-stripped.c	2008-11-06 20:51:35.000000000 +0100
++++ ./gdb/testsuite/gdb.dwarf2/dw2-stripped.c	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,42 @@
 +/* This testcase is part of GDB, the GNU debugger.
 +
@@ -2311,7 +2850,7 @@
 +  return 0;
 +}
 --- ./gdb/testsuite/gdb.dwarf2/dw2-stripped.exp	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.dwarf2/dw2-stripped.exp	2008-11-06 20:51:35.000000000 +0100
++++ ./gdb/testsuite/gdb.dwarf2/dw2-stripped.exp	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,79 @@
 +# Copyright 2006 Free Software Foundation, Inc.
 +
@@ -2393,7 +2932,7 @@
 +         "func.* \\(.*\\) at .*" \
 +         "step"
 --- ./gdb/testsuite/gdb.fortran/dynamic.exp	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.fortran/dynamic.exp	2008-11-06 20:51:03.000000000 +0100
++++ ./gdb/testsuite/gdb.fortran/dynamic.exp	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,141 @@
 +# Copyright 2007 Free Software Foundation, Inc.
 +
@@ -2537,7 +3076,7 @@
 +# maps to foo::vary(1,3)
 +gdb_test "p vart(2,9)" "\\$\[0-9\]* = 10"
 --- ./gdb/testsuite/gdb.fortran/dynamic.f90	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.fortran/dynamic.f90	2008-11-06 20:51:03.000000000 +0100
++++ ./gdb/testsuite/gdb.fortran/dynamic.f90	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,97 @@
 +! Copyright 2007 Free Software Foundation, Inc.
 +!
@@ -2637,7 +3176,7 @@
 +  if (x (3, 1) .ne. 10) call abort
 +end
 --- ./gdb/testsuite/gdb.fortran/string.exp	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.fortran/string.exp	2008-11-06 20:51:03.000000000 +0100
++++ ./gdb/testsuite/gdb.fortran/string.exp	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,59 @@
 +# Copyright 2008 Free Software Foundation, Inc.
 +
@@ -2699,7 +3238,7 @@
 +gdb_test "p e" "\\$\[0-9\]* = 'e   '" "p e re-set"
 +gdb_test "p f" "\\$\[0-9\]* = \\(\\( 'f   ', 'f   ', 'f   ', 'f   ', 'f   ', 'f   ', 'f   '\\) \\( 'f2  ', 'f   ', 'f   ', 'f   ', 'f   ', 'f   ', 'f   '\\) \\( 'f   ', 'f   ', 'f   ', 'f   ', 'f   ', 'f   ', 'f   '\\) \\)" "p *f re-set"
 --- ./gdb/testsuite/gdb.fortran/string.f90	1970-01-01 01:00:00.000000000 +0100
-+++ ./gdb/testsuite/gdb.fortran/string.f90	2008-11-06 20:51:03.000000000 +0100
++++ ./gdb/testsuite/gdb.fortran/string.f90	2008-11-08 22:39:57.000000000 +0100
 @@ -0,0 +1,37 @@
 +! Copyright 2008 Free Software Foundation, Inc.
 +!
@@ -2738,8 +3277,8 @@
 +  h = 'h'
 +  call foo (g, h)
 +end
---- ./gdb/typeprint.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/typeprint.c	2008-11-06 20:51:35.000000000 +0100
+--- ./gdb/typeprint.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/typeprint.c	2008-11-08 22:39:57.000000000 +0100
 @@ -33,6 +33,7 @@
  #include "cp-abi.h"
  #include "typeprint.h"
@@ -2793,8 +3332,8 @@
  }
  
  static void
---- ./gdb/valarith.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/valarith.c	2008-11-06 20:51:03.000000000 +0100
+--- ./gdb/valarith.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/valarith.c	2008-11-08 22:39:57.000000000 +0100
 @@ -39,7 +39,6 @@
  #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
  #endif
@@ -2930,8 +3469,8 @@
    return v;
  }
  
---- ./gdb/valops.c	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/valops.c	2008-11-06 20:51:35.000000000 +0100
+--- ./gdb/valops.c	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/valops.c	2008-11-08 22:39:57.000000000 +0100
 @@ -37,6 +37,7 @@
  #include "dictionary.h"
  #include "cp-support.h"
@@ -3036,8 +3575,8 @@
  }
  
  /* Given a value which is a function, return a value which is a pointer
---- ./gdb/value.h	2008-11-06 20:50:14.000000000 +0100
-+++ ./gdb/value.h	2008-11-06 20:51:03.000000000 +0100
+--- ./gdb/value.h	2008-11-08 22:46:06.000000000 +0100
++++ ./gdb/value.h	2008-11-08 22:46:45.000000000 +0100
 @@ -284,6 +284,10 @@ extern struct value *value_from_decfloat
  					  const gdb_byte *decbytes);
  extern struct value *value_from_string (char *string);
@@ -3049,6 +3588,19 @@
  extern struct value *value_at (struct type *type, CORE_ADDR addr);
  extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr);
  
+@@ -522,9 +526,9 @@ extern int common_val_print (struct valu
+ extern int val_print_string (CORE_ADDR addr, int len, int width,
+ 			     struct ui_file *stream);
+ 
+-extern void print_variable_value (struct symbol *var,
+-				  struct frame_info *frame,
+-				  struct ui_file *stream);
++extern void print_variable_value_nl (struct symbol *var,
++				     struct frame_info *frame,
++				     struct ui_file *stream);
+ 
+ extern int check_field (struct value *, const char *);
+ 
 @@ -554,4 +558,7 @@ extern struct value *value_allocate_spac
  
  extern struct value *value_of_local (const char *name, int complain);

gdb-6.8-bz466901-backtrace-full-prelinked.patch:

Index: gdb-6.8-bz466901-backtrace-full-prelinked.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-10/gdb-6.8-bz466901-backtrace-full-prelinked.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gdb-6.8-bz466901-backtrace-full-prelinked.patch	6 Nov 2008 22:15:31 -0000	1.1
+++ gdb-6.8-bz466901-backtrace-full-prelinked.patch	9 Nov 2008 15:22:32 -0000	1.2
@@ -20,7 +20,7 @@
 --- /dev/null	2008-11-06 15:02:28.406299691 +0100
 +++ gdb-6.8/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked.exp	2008-11-06 23:11:02.000000000 +0100
 @@ -0,0 +1,102 @@
-+# Copyright 2006 Free Software Foundation, Inc.
++# Copyright 2008 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


Index: gdb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-10/gdb.spec,v
retrieving revision 1.311
retrieving revision 1.312
diff -u -r1.311 -r1.312
--- gdb.spec	6 Nov 2008 22:35:31 -0000	1.311
+++ gdb.spec	9 Nov 2008 15:22:32 -0000	1.312
@@ -13,7 +13,7 @@
 
 # The release always contains a leading reserved number, start it at 1.
 # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 28%{?_with_upstream:.upstream}%{?dist}
+Release: 29%{?_with_upstream:.upstream}%{?dist}
 
 License: GPLv3+
 Group: Development/Debuggers
@@ -422,9 +422,6 @@
 # Test the watchpoints conditionals works.
 Patch343: gdb-6.8-watchpoint-conditionals-test.patch
 
-# Never terminate `bt full' on a problem of variable resolving (for BZ 466901).
-Patch347: gdb-6.8-bz466901-backtrace-never-aborts.patch
-
 # Fix resolving of variables at locations lists in prelinked libs (BZ 466901).
 Patch348: gdb-6.8-bz466901-backtrace-full-prelinked.patch
 
@@ -631,7 +628,6 @@
 %patch338 -p1
 %patch342 -p1
 %patch343 -p1
-%patch347 -p1
 %patch348 -p1
 %patch124 -p1
 
@@ -896,6 +892,10 @@
 %endif
 
 %changelog
+* Sun Nov  9 2008 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8-29
+- Fix more the variable-length-arrays support (BZ 468266, feature BZ 377541).
+- Integrate the `bt full' protection (for BZ 466901) into the VLA patch.
+
 * Thu Nov  6 2008 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8-28
 - Fix the "never terminate `bt full'" patch false GCC warning / build error.
 


--- gdb-6.8-bz466901-backtrace-never-aborts.patch DELETED ---




More information about the fedora-extras-commits mailing list