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