- [vla] Fix regression on fields of structs in internal vars (BZ 553338).
- archer-jankratochvil-fedora12 commit: 6e73988f653ba986e8742f208f17ec084292cbd5
This commit is contained in:
parent
2356bfea4c
commit
2fbfb7cad3
|
@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher
|
||||||
http://sourceware.org/gdb/wiki/ArcherBranchManagement
|
http://sourceware.org/gdb/wiki/ArcherBranchManagement
|
||||||
|
|
||||||
GIT snapshot:
|
GIT snapshot:
|
||||||
commit 200516d5be8a1cab02f0b18d607d1c1fb9cfa3e7
|
commit 6e73988f653ba986e8742f208f17ec084292cbd5
|
||||||
|
|
||||||
branch `archer' - the merge of branches:
|
branch `archer' - the merge of branches:
|
||||||
archer-tromey-call-frame-cfa
|
archer-tromey-call-frame-cfa
|
||||||
|
@ -21827,6 +21827,64 @@ index d76cc36..496ff18 100644
|
||||||
# test help stack
|
# test help stack
|
||||||
test_class_help "stack" {
|
test_class_help "stack" {
|
||||||
"Examining the stack\..*\[\r\n\]+"
|
"Examining the stack\..*\[\r\n\]+"
|
||||||
|
diff --git a/gdb/testsuite/gdb.base/internal-var-field-address.c b/gdb/testsuite/gdb.base/internal-var-field-address.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..eeb7b85
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gdb/testsuite/gdb.base/internal-var-field-address.c
|
||||||
|
@@ -0,0 +1,20 @@
|
||||||
|
+/* This testcase is part of GDB, the GNU debugger.
|
||||||
|
+
|
||||||
|
+ Copyright 2009 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/>. */
|
||||||
|
+
|
||||||
|
+struct {
|
||||||
|
+ int field;
|
||||||
|
+} staticstruct = { 1 };
|
||||||
|
diff --git a/gdb/testsuite/gdb.base/internal-var-field-address.exp b/gdb/testsuite/gdb.base/internal-var-field-address.exp
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..6d82e73
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gdb/testsuite/gdb.base/internal-var-field-address.exp
|
||||||
|
@@ -0,0 +1,26 @@
|
||||||
|
+# Copyright 2009 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/>.
|
||||||
|
+
|
||||||
|
+set test internal-var-field-address
|
||||||
|
+set binfile ${test}.x
|
||||||
|
+if { [gdb_compile "${srcdir}/${subdir}/${test}.c" "${objdir}/${subdir}/${binfile}" object {debug}] != "" } {
|
||||||
|
+ untested "Couldn't compile test program"
|
||||||
|
+ return -1
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+clean_restart $binfile
|
||||||
|
+
|
||||||
|
+gdb_test {set $varstruct = staticstruct}
|
||||||
|
+gdb_test {p $varstruct.field} " = 1"
|
||||||
diff --git a/gdb/testsuite/gdb.base/lineno-makeup-func.c b/gdb/testsuite/gdb.base/lineno-makeup-func.c
|
diff --git a/gdb/testsuite/gdb.base/lineno-makeup-func.c b/gdb/testsuite/gdb.base/lineno-makeup-func.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..1a0220e
|
index 0000000..1a0220e
|
||||||
|
@ -29155,7 +29213,7 @@ index cbb5d94..f9634ea 100644
|
||||||
++reps;
|
++reps;
|
||||||
++rep1;
|
++rep1;
|
||||||
diff --git a/gdb/value.c b/gdb/value.c
|
diff --git a/gdb/value.c b/gdb/value.c
|
||||||
index 589e03b..66013b7 100644
|
index 589e03b..62003fa 100644
|
||||||
--- a/gdb/value.c
|
--- a/gdb/value.c
|
||||||
+++ b/gdb/value.c
|
+++ b/gdb/value.c
|
||||||
@@ -37,8 +37,10 @@
|
@@ -37,8 +37,10 @@
|
||||||
|
@ -29239,18 +29297,20 @@ index 589e03b..66013b7 100644
|
||||||
if (VALUE_LVAL (whole) == lval_computed)
|
if (VALUE_LVAL (whole) == lval_computed)
|
||||||
{
|
{
|
||||||
struct lval_funcs *funcs = whole->location.computed.funcs;
|
struct lval_funcs *funcs = whole->location.computed.funcs;
|
||||||
@@ -776,6 +799,10 @@ set_value_component_location (struct value *component, struct value *whole)
|
@@ -776,6 +799,12 @@ set_value_component_location (struct value *component, struct value *whole)
|
||||||
if (funcs->copy_closure)
|
if (funcs->copy_closure)
|
||||||
component->location.computed.closure = funcs->copy_closure (whole);
|
component->location.computed.closure = funcs->copy_closure (whole);
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+ addr = value_raw_address (component);
|
+ addr = value_raw_address (component);
|
||||||
+ object_address_get_data (value_type (whole), &addr);
|
+ object_address_get_data (value_type (whole), &addr);
|
||||||
+ set_value_address (component, addr);
|
+ if (component->lval != lval_internalvar
|
||||||
|
+ && component->lval != lval_internalvar_component)
|
||||||
|
+ set_value_address (component, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -906,6 +933,29 @@ show_values (char *num_exp, int from_tty)
|
@@ -906,6 +935,29 @@ show_values (char *num_exp, int from_tty)
|
||||||
num_exp[1] = '\0';
|
num_exp[1] = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29280,7 +29340,7 @@ index 589e03b..66013b7 100644
|
||||||
|
|
||||||
/* Internal variables. These are variables within the debugger
|
/* Internal variables. These are variables within the debugger
|
||||||
that hold values assigned by debugger commands.
|
that hold values assigned by debugger commands.
|
||||||
@@ -1381,6 +1431,40 @@ call_internal_function (struct gdbarch *gdbarch,
|
@@ -1381,6 +1433,40 @@ call_internal_function (struct gdbarch *gdbarch,
|
||||||
return (*ifn->handler) (gdbarch, language, ifn->cookie, argc, argv);
|
return (*ifn->handler) (gdbarch, language, ifn->cookie, argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29321,7 +29381,7 @@ index 589e03b..66013b7 100644
|
||||||
/* The 'function' command. This does nothing -- it is just a
|
/* The 'function' command. This does nothing -- it is just a
|
||||||
placeholder to let "help function NAME" work. This is also used as
|
placeholder to let "help function NAME" work. This is also used as
|
||||||
the implementation of the sub-command that is created when
|
the implementation of the sub-command that is created when
|
||||||
@@ -1428,11 +1512,10 @@ preserve_one_value (struct value *value, struct objfile *objfile,
|
@@ -1428,11 +1514,10 @@ preserve_one_value (struct value *value, struct objfile *objfile,
|
||||||
htab_t copied_types)
|
htab_t copied_types)
|
||||||
{
|
{
|
||||||
if (TYPE_OBJFILE (value->type) == objfile)
|
if (TYPE_OBJFILE (value->type) == objfile)
|
||||||
|
@ -29335,7 +29395,7 @@ index 589e03b..66013b7 100644
|
||||||
copied_types);
|
copied_types);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1447,13 +1530,13 @@ preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
|
@@ -1447,13 +1532,13 @@ preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
|
||||||
case INTERNALVAR_INTEGER:
|
case INTERNALVAR_INTEGER:
|
||||||
if (var->u.integer.type && TYPE_OBJFILE (var->u.integer.type) == objfile)
|
if (var->u.integer.type && TYPE_OBJFILE (var->u.integer.type) == objfile)
|
||||||
var->u.integer.type
|
var->u.integer.type
|
||||||
|
@ -29351,7 +29411,7 @@ index 589e03b..66013b7 100644
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INTERNALVAR_VALUE:
|
case INTERNALVAR_VALUE:
|
||||||
@@ -1855,6 +1938,8 @@ value_change_enclosing_type (struct value *val, struct type *new_encl_type)
|
@@ -1855,6 +1940,8 @@ value_change_enclosing_type (struct value *val, struct type *new_encl_type)
|
||||||
val->contents =
|
val->contents =
|
||||||
(gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type));
|
(gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type));
|
||||||
|
|
||||||
|
@ -29360,7 +29420,7 @@ index 589e03b..66013b7 100644
|
||||||
val->enclosing_type = new_encl_type;
|
val->enclosing_type = new_encl_type;
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
@@ -1919,6 +2004,8 @@ value_primitive_field (struct value *arg1, int offset,
|
@@ -1919,6 +2006,8 @@ value_primitive_field (struct value *arg1, int offset,
|
||||||
memcpy (value_contents_all_raw (v), value_contents_all_raw (arg1),
|
memcpy (value_contents_all_raw (v), value_contents_all_raw (arg1),
|
||||||
TYPE_LENGTH (value_enclosing_type (arg1)));
|
TYPE_LENGTH (value_enclosing_type (arg1)));
|
||||||
}
|
}
|
||||||
|
@ -29369,7 +29429,7 @@ index 589e03b..66013b7 100644
|
||||||
v->type = type;
|
v->type = type;
|
||||||
v->offset = value_offset (arg1);
|
v->offset = value_offset (arg1);
|
||||||
v->embedded_offset = (offset + value_embedded_offset (arg1)
|
v->embedded_offset = (offset + value_embedded_offset (arg1)
|
||||||
@@ -2177,6 +2264,42 @@ pack_long (gdb_byte *buf, struct type *type, LONGEST num)
|
@@ -2177,6 +2266,42 @@ pack_long (gdb_byte *buf, struct type *type, LONGEST num)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -29412,7 +29472,7 @@ index 589e03b..66013b7 100644
|
||||||
/* Convert C numbers into newly allocated values. */
|
/* Convert C numbers into newly allocated values. */
|
||||||
|
|
||||||
struct value *
|
struct value *
|
||||||
@@ -2190,6 +2313,19 @@ value_from_longest (struct type *type, LONGEST num)
|
@@ -2190,6 +2315,19 @@ value_from_longest (struct type *type, LONGEST num)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -29432,7 +29492,7 @@ index 589e03b..66013b7 100644
|
||||||
/* Create a value representing a pointer of type TYPE to the address
|
/* Create a value representing a pointer of type TYPE to the address
|
||||||
ADDR. */
|
ADDR. */
|
||||||
struct value *
|
struct value *
|
||||||
@@ -2348,4 +2484,8 @@ VARIABLE is already initialized."));
|
@@ -2348,4 +2486,8 @@ VARIABLE is already initialized."));
|
||||||
add_prefix_cmd ("function", no_class, function_command, _("\
|
add_prefix_cmd ("function", no_class, function_command, _("\
|
||||||
Placeholder command for showing help on convenience functions."),
|
Placeholder command for showing help on convenience functions."),
|
||||||
&functionlist, "function ", 0, &cmdlist);
|
&functionlist, "function ", 0, &cmdlist);
|
||||||
|
|
6
gdb.spec
6
gdb.spec
|
@ -36,7 +36,7 @@ Version: 7.0.1
|
||||||
|
|
||||||
# The release always contains a leading reserved number, start it at 1.
|
# 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.
|
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||||
Release: 20%{?_with_upstream:.upstream}%{dist}
|
Release: 21%{?_with_upstream:.upstream}%{dist}
|
||||||
|
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
Group: Development/Debuggers
|
Group: Development/Debuggers
|
||||||
|
@ -1006,6 +1006,10 @@ fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 7 2010 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0.1-21.fc12
|
||||||
|
- [vla] Fix regression on fields of structs in internal vars (BZ 553338).
|
||||||
|
- archer-jankratochvil-fedora12 commit: 6e73988f653ba986e8742f208f17ec084292cbd5
|
||||||
|
|
||||||
* Thu Jan 7 2010 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0.1-20.fc12
|
* Thu Jan 7 2010 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0.1-20.fc12
|
||||||
- Fix crash reading broken stabs (it377671).
|
- Fix crash reading broken stabs (it377671).
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue