* Another obstack patch.
@ 2010-04-22 14:06 Chris Moller
2010-04-22 19:04 ` Tom Tromey
0 siblings, 1 reply; 3+ messages in thread
From: Chris Moller @ 2010-04-22 14:06 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 404 bytes --]
There are two separate recursion control obstacks in cp-valprint.c, both
originally incorrectly using obstack_next_free(). I fixed one of those
in the patch for pr9167, but the other one would have collided with the
patch for pr10687. Here is the fix for the second instance. (No new
testcases are required--the existing t/cs for pr9067, pr9167, and
pr10687 test the code in this patch.)
Chris
[-- Attachment #2: obstack.patch --]
[-- Type: text/x-patch, Size: 3186 bytes --]
Index: ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/ChangeLog,v
retrieving revision 1.11667
diff -u -r1.11667 ChangeLog
--- ChangeLog 22 Apr 2010 12:30:54 -0000 1.11667
+++ ChangeLog 22 Apr 2010 13:56:51 -0000
@@ -1,3 +1,10 @@
+2010-04-22 Chris Moller <cmoller@redhat.com>
+
+ * cp-valprint.c (cp_print_value_fields): Replaced obstack_base()
+ method of popping recursion-detection stack with a method based on
+ obstack_object_size(). (Similar to the PR9167 patch below, but for
+ the static array obstack rather than the static member obstack.)
+
2010-04-22 Pierre Muller <muller@ics.u-strasbg.fr>
PR stabs/11479.
Index: cp-valprint.c
===================================================================
RCS file: /cvs/src/src/gdb/cp-valprint.c,v
retrieving revision 1.66
diff -u -r1.66 cp-valprint.c
--- cp-valprint.c 21 Apr 2010 17:33:54 -0000 1.66
+++ cp-valprint.c 22 Apr 2010 13:56:51 -0000
@@ -81,7 +81,8 @@
static void cp_print_value (struct type *, struct type *, const gdb_byte *,
int, CORE_ADDR, struct ui_file *, int,
- const struct value_print_options *, struct type **);
+ const struct value_print_options *,
+ struct type **);
/* GCC versions after 2.4.5 use this. */
@@ -186,18 +187,18 @@
fprintf_filtered (stream, "<No data fields>");
else
{
- int obstack_initial_size = 0;
- void *stat_array_obstack_top = NULL;
+ int statmem_obstack_initial_size = 0;
+ int stat_array_obstack_initial_size = 0;
if (dont_print_statmem == 0)
{
- obstack_initial_size =
+ statmem_obstack_initial_size =
obstack_object_size (&dont_print_statmem_obstack);
if (last_set_recurse != recurse)
{
- stat_array_obstack_top
- = obstack_next_free (&dont_print_stat_array_obstack);
+ stat_array_obstack_initial_size =
+ obstack_object_size (&dont_print_stat_array_obstack);
last_set_recurse = recurse;
}
}
@@ -323,12 +324,12 @@
int obstack_final_size =
obstack_object_size (&dont_print_statmem_obstack);
- if (obstack_final_size > obstack_initial_size) {
+ if (obstack_final_size > statmem_obstack_initial_size) {
/* In effect, a pop of the printed-statics stack. */
void *free_to_ptr =
obstack_next_free (&dont_print_statmem_obstack) -
- (obstack_final_size - obstack_initial_size);
+ (obstack_final_size - statmem_obstack_initial_size);
obstack_free (&dont_print_statmem_obstack,
free_to_ptr);
@@ -336,9 +337,17 @@
if (last_set_recurse != recurse)
{
- if (obstack_object_size (&dont_print_stat_array_obstack) > 0)
+ int obstack_final_size =
+ obstack_object_size (&dont_print_stat_array_obstack);
+
+ if (obstack_final_size > stat_array_obstack_initial_size) {
+ void *free_to_ptr =
+ obstack_next_free (&dont_print_stat_array_obstack) -
+ (obstack_final_size - stat_array_obstack_initial_size);
+
obstack_free (&dont_print_stat_array_obstack,
- stat_array_obstack_top);
+ free_to_ptr);
+ }
last_set_recurse = -1;
}
}
[-- Attachment #3: obstack-sum.diff --]
[-- Type: text/x-patch, Size: 1983 bytes --]
--- virgin.sum 2010-04-22 09:38:17.519201307 -0400
+++ patched.sum 2010-04-22 09:49:38.613201404 -0400
@@ -1,4 +1,4 @@
-Test Run By moller on Thu Apr 22 09:04:28 2010
+Test Run By moller on Thu Apr 22 09:40:22 2010
Native configuration is i686-pc-linux-gnu
=== gdb tests ===
@@ -5997,7 +5997,7 @@
PASS: gdb.base/pr11022.exp: watchpoint hit 2
Running ../../../src/gdb/testsuite/gdb.base/prelink.exp ...
PASS: gdb.base/prelink.exp: set verbose on
-FAIL: gdb.base/prelink.exp: prelink
+PASS: gdb.base/prelink.exp: prelink
Running ../../../src/gdb/testsuite/gdb.base/printcmds.exp ...
PASS: gdb.base/printcmds.exp: print $pc
PASS: gdb.base/printcmds.exp: print "abc"
@@ -13430,7 +13430,7 @@
PASS: gdb.mi/mi-nsmoribund.exp: resume all, thread specific breakpoint
PASS: gdb.mi/mi-nsmoribund.exp: hit thread specific breakpoint
PASS: gdb.mi/mi-nsmoribund.exp: thread state: all running except the breakpoint thread
-FAIL: gdb.mi/mi-nsmoribund.exp: unexpected stop
+PASS: gdb.mi/mi-nsmoribund.exp: resume all, program exited normally
Running ../../../src/gdb/testsuite/gdb.mi/mi-nsthrexec.exp ...
PASS: gdb.mi/mi-nsthrexec.exp: successfully compiled posix threads test case
PASS: gdb.mi/mi-nsthrexec.exp: breakpoint at main
@@ -16468,7 +16468,7 @@
PASS: gdb.threads/watchthreads.exp: successfully compiled posix threads test case
PASS: gdb.threads/watchthreads.exp: watch args[0]
PASS: gdb.threads/watchthreads.exp: watch args[1]
-PASS: gdb.threads/watchthreads.exp: disable 2
+PASS: gdb.threads/watchthreads.exp: disable 3
PASS: gdb.threads/watchthreads.exp: threaded watch loop
PASS: gdb.threads/watchthreads.exp: first watchpoint on args[0] hit
PASS: gdb.threads/watchthreads.exp: first watchpoint on args[1] hit
@@ -16749,8 +16749,8 @@
=== gdb Summary ===
-# of expected passes 15916
-# of unexpected failures 18
+# of expected passes 15918
+# of unexpected failures 16
# of expected failures 44
# of untested testcases 6
# of unsupported tests 62
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Another obstack patch.
2010-04-22 14:06 Another obstack patch Chris Moller
@ 2010-04-22 19:04 ` Tom Tromey
2010-04-22 20:13 ` Chris Moller
0 siblings, 1 reply; 3+ messages in thread
From: Tom Tromey @ 2010-04-22 19:04 UTC (permalink / raw)
To: Chris Moller; +Cc: gdb-patches
>>>>> "Chris" == Chris Moller <cmoller@redhat.com> writes:
Chris> static void cp_print_value (struct type *, struct type *, const gdb_byte *,
Chris> int, CORE_ADDR, struct ui_file *, int,
Chris> - const struct value_print_options *, struct type **);
Chris> + const struct value_print_options *,
Chris> + struct type **);
Don't mix reformatting and semantic changes.
Chris> + if (obstack_final_size > stat_array_obstack_initial_size) {
Wrong brace placement.
Ok with those changes.
Tom
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Another obstack patch.
2010-04-22 19:04 ` Tom Tromey
@ 2010-04-22 20:13 ` Chris Moller
0 siblings, 0 replies; 3+ messages in thread
From: Chris Moller @ 2010-04-22 20:13 UTC (permalink / raw)
To: tromey; +Cc: gdb-patches
On 04/22/10 15:03, Tom Tromey wrote:
>>>>>> "Chris" == Chris Moller<cmoller@redhat.com> writes:
>>>>>>
>
> Chris> static void cp_print_value (struct type *, struct type *, const gdb_byte *,
> Chris> int, CORE_ADDR, struct ui_file *, int,
> Chris> - const struct value_print_options *, struct type **);
> Chris> + const struct value_print_options *,
> Chris> + struct type **);
>
> Don't mix reformatting and semantic changes.
>
> Chris> + if (obstack_final_size> stat_array_obstack_initial_size) {
>
> Wrong brace placement.
>
> Ok with those changes.
>
Fixed and committed.
cm
> Tom
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-04-22 20:13 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-22 14:06 Another obstack patch Chris Moller
2010-04-22 19:04 ` Tom Tromey
2010-04-22 20:13 ` Chris Moller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox