* pr 11067 patch
@ 2010-02-11 2:55 Chris Moller
2010-02-11 9:30 ` Joel Brobecker
0 siblings, 1 reply; 18+ messages in thread
From: Chris Moller @ 2010-02-11 2:55 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 240 bytes --]
Provides a little more info on enums for simple 'p <enum>' cases; keeps
the old format for complex cases like structs and arrays:
(gdb) p e
$1 = Val1 = (enum E)56
(gdb) p ea
$2 = {Val1, Val2, Val1}
(gdb) p es
$3 = {v = 5, e = Val2}
(gdb)
[-- Attachment #2: pr11067.patch --]
[-- Type: text/plain, Size: 16123 bytes --]
Index: gdb/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/ChangeLog,v
retrieving revision 1.11340
diff -u -r1.11340 ChangeLog
--- gdb/ChangeLog 9 Feb 2010 15:52:57 -0000 1.11340
+++ gdb/ChangeLog 11 Feb 2010 02:44:21 -0000
@@ -1,3 +1,10 @@
+Wed Feb 10 17:13:44 2010 Chris Moller <moller@mollerware.com>
+
+ PR gdb/11067
+ * c-valprint.c (c_val_print): In case TYPE_CODE_ENUM, add code to
+ print the numeric value of the enum and the enum tag for
+ top-level, non-summary "print enum"s.
+
2010-02-09 Tristan Gingold <gingold@adacore.com>
* machoread.c (macho_symfile_relocate): New function.
Index: gdb/c-valprint.c
===================================================================
RCS file: /cvs/src/src/gdb/c-valprint.c,v
retrieving revision 1.67
diff -u -r1.67 c-valprint.c
--- gdb/c-valprint.c 2 Feb 2010 16:45:16 -0000 1.67
+++ gdb/c-valprint.c 11 Feb 2010 02:44:22 -0000
@@ -412,9 +412,23 @@
}
}
if (i < len)
- {
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
- }
+ if (options->summary || recurse != 0)
+ {
+ fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+ }
+ else
+ {
+ char *enum_name;
+
+ if (TYPE_NAME (type)) enum_name = TYPE_NAME (type);
+ else if (TYPE_TAG_NAME(type)) enum_name = TYPE_TAG_NAME(type);
+ else enum_name = "<unknown>";
+
+ fprintf_filtered (stream, "%s = (enum %s)%lld",
+ TYPE_FIELD_NAME (type, i),
+ enum_name,
+ val);
+ }
else
{
print_longest (stream, 'd', 0, val);
Index: gdb/testsuite/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/ChangeLog,v
retrieving revision 1.2128
diff -u -r1.2128 ChangeLog
--- gdb/testsuite/ChangeLog 9 Feb 2010 13:16:33 -0000 1.2128
+++ gdb/testsuite/ChangeLog 11 Feb 2010 02:44:39 -0000
@@ -1,3 +1,20 @@
+Wed Feb 10 17:18:17 2010 Chris Moller <moller@mollerware.com>
+
+ PR gdb/11067
+ * gdb.base/pr11067.c: New file.
+ * gdb.base/pr11067.exp: New file.
+ * gdb.base/Makefile.in (EXECUTABLES): Added pr11067
+ * gdb.cp/classes.exp (multiple places):
+ * gdb.cp/m-data.exp (multiple places):
+ * gdb.cp/m-static.exp (multiple places):
+ * gdb.cp/namespace.exp (multiple places):
+ * gdb.mi/mi-var-display.exp (multiple places):
+ * gdb.mi/mi2-var-display.exp (multiple places):
+ * gdb.python/py-value.exp (multiple places):
+ * gdb.base/setvar.exp (multiple places): Updated expects to new
+ enum format.
+
+
2010-02-09 Joel Brobecker <brobecker@adacore.com>
* gdb.ada/ptype_tagged_param: New testcase.
Index: gdb/testsuite/gdb.base/Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/Makefile.in,v
retrieving revision 1.5
diff -u -r1.5 Makefile.in
--- gdb/testsuite/gdb.base/Makefile.in 15 Sep 2009 03:30:08 -0000 1.5
+++ gdb/testsuite/gdb.base/Makefile.in 11 Feb 2010 02:44:39 -0000
@@ -12,7 +12,8 @@
scope section_command setshow setvar shmain sigall signals \
solib solib_sl so-impl-ld so-indr-cl \
step-line step-test structs structs2 \
- twice-tmp varargs vforked-prog watchpoint whatis catch-syscall
+ twice-tmp varargs vforked-prog watchpoint whatis catch-syscall \
+ pr11067
MISCELLANEOUS = coremmap.data ../foobar.baz \
shr1.sl shr2.sl solib_sl.sl solib1.sl solib2.sl
Index: gdb/testsuite/gdb.base/pr11067.c
===================================================================
RCS file: gdb/testsuite/gdb.base/pr11067.c
diff -N gdb/testsuite/gdb.base/pr11067.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb/testsuite/gdb.base/pr11067.c 11 Feb 2010 02:44:40 -0000
@@ -0,0 +1,37 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 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/>. */
+
+enum E {
+ Val1 = 56,
+ Val2
+};
+
+struct Es {
+ int v;
+ enum E e;
+};
+
+enum E e = Val1;
+
+enum E ea[] = { Val1, Val2, Val1 };
+
+struct Es es = { 5, Val2 };
+
+int main() {
+ return 0;
+}
+
Index: gdb/testsuite/gdb.base/pr11067.exp
===================================================================
RCS file: gdb/testsuite/gdb.base/pr11067.exp
diff -N gdb/testsuite/gdb.base/pr11067.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb/testsuite/gdb.base/pr11067.exp 11 Feb 2010 02:44:40 -0000
@@ -0,0 +1,48 @@
+# Copyright 2010 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/>.
+
+if { [skip_cplus_tests] } { continue }
+
+load_lib "cp-support.exp"
+
+set testfile "pr11067"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {c++ debug}] != "" } {
+ untested pr11067.exp
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+if ![runto_main] then {
+ perror "couldn't run to breakpoint"
+ continue
+}
+
+# set a breakpoint at the return stmt
+
+gdb_test "print e" "Val1 = \\(enum E\\)56"
+
+gdb_test "print ea" "{Val1, Val2, Val1}"
+
+gdb_test "print es" "v = 5, e = Val2}"
+
+gdb_exit
+return 0
Index: gdb/testsuite/gdb.base/setvar.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/setvar.exp,v
retrieving revision 1.19
diff -u -r1.19 setvar.exp
--- gdb/testsuite/gdb.base/setvar.exp 29 Jan 2010 15:38:37 -0000 1.19
+++ gdb/testsuite/gdb.base/setvar.exp 11 Feb 2010 02:44:40 -0000
@@ -399,18 +399,22 @@
# GNU C supports them, some other compilers don't.
if {$gcc_compiled} then {
- gdb_test "print sef.field=sm1" ".*.\[0-9\]* = sm1"
- gdb_test "print sef.field" ".*.\[0-9\]* = sm1" "print sef.field (sm1)"
- gdb_test "print sef.field=s1" ".*.\[0-9\]* = s1"
- gdb_test "print sef.field" ".*.\[0-9\]* = s1" "print sef.field (s1)"
- gdb_test "print uef.field=u2" ".*.\[0-9\]* = u2"
- gdb_test "print uef.field" ".*.\[0-9\]* = u2" "print uef.field (u2)"
- gdb_test "print uef.field=u1" ".*.\[0-9\]* = u1"
- gdb_test "print uef.field" ".*.\[0-9\]* = u1" "print uef.field (u1)"
+ gdb_test "print sef.field=sm1" ".*.\[0-9\]* = sm1 = \\(enum senum\\)-1"
+ gdb_test "print sef.field" ".*.\[0-9\]* = sm1 = \\(enum senum\\)-1" \
+ "print sef.field (sm1)"
+ gdb_test "print sef.field=s1" ".*.\[0-9\]* = s1 = \\(enum senum\\)1"
+ gdb_test "print sef.field" ".*.\[0-9\]* = s1 = \\(enum senum\\)1" \
+ "print sef.field (s1)"
+ gdb_test "print uef.field=u2" ".*.\[0-9\]* = u2 = \\(enum uenum\\)2"
+ gdb_test "print uef.field" ".*.\[0-9\]* = u2 = \\(enum uenum\\)2" \
+ "print uef.field (u2)"
+ gdb_test "print uef.field=u1" ".*.\[0-9\]* = u1 = \\(enum uenum\\)1"
+ gdb_test "print uef.field" ".*.\[0-9\]* = u1 = \\(enum uenum\\)1" \
+ "print uef.field (u1)"
# Test for truncation when assigning invalid values to bitfields.
gdb_test "print sef.field=7" \
- ".*warning: Value does not fit in 2 bits.*\[0-9\]* = sm1"
+ ".*warning: Value does not fit in 2 bits.*\[0-9\]* = sm1 = \\(enum senum\\)-1"
gdb_test "print uef.field=6" \
- ".*warning: Value does not fit in 2 bits.*\[0-9\]* = u2"
+ ".*warning: Value does not fit in 2 bits.*\[0-9\]* = u2 = \\(enum uenum\\)2"
}
Index: gdb/testsuite/gdb.cp/classes.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/classes.exp,v
retrieving revision 1.24
diff -u -r1.24 classes.exp
--- gdb/testsuite/gdb.cp/classes.exp 1 Jan 2010 07:32:01 -0000 1.24
+++ gdb/testsuite/gdb.cp/classes.exp 11 Feb 2010 02:44:41 -0000
@@ -413,7 +413,7 @@
# print the enum member
- gdb_test "print obj_with_enum.priv_enum" "\\$\[0-9\]+ = (ClassWithEnum::)?green"
+ gdb_test "print obj_with_enum.priv_enum" "\\$\[0-9\]+ = (ClassWithEnum::)?green = \\(enum ClassWithEnum::PrivEnum\\)1"
# ptype on the enum member
@@ -482,7 +482,7 @@
}
gdb_test_multiple "print ('ClassWithEnum::PrivEnum') 42" "print ('ClassWithEnum::PrivEnum') 42" {
- -re "\\$\[0-9\]+ = (ClassWithEnum::)?yellow$nl$gdb_prompt $" {
+ -re "\\$\[0-9\]+ = (ClassWithEnum::)?yellow = \\(enum ClassWithEnum::PrivEnum\\)42$nl$gdb_prompt $" {
# gcc 3.3.2 -gstabs+
# gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "print ('ClassWithEnum::PrivEnum') 42"
Index: gdb/testsuite/gdb.cp/m-data.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/m-data.exp,v
retrieving revision 1.7
diff -u -r1.7 m-data.exp
--- gdb/testsuite/gdb.cp/m-data.exp 1 Jan 2010 07:32:01 -0000 1.7
+++ gdb/testsuite/gdb.cp/m-data.exp 11 Feb 2010 02:44:41 -0000
@@ -71,7 +71,7 @@
gdb_test "print test1.key2" "\\$\[0-9\]* = 4589" "simple object, long"
# simple object, enum
-gdb_test "print test1.value" "\\$\[0-9\]* = egyptian" "simple object, enum"
+gdb_test "print test1.value" "\\$\[0-9\]* = egyptian = \\(enum region\\)1" "simple object, enum"
# Two.
@@ -85,10 +85,10 @@
gdb_test "print test2.key2" "\\$\[0-9\]* = 7" "derived template object, base long"
# derived template object, base enum
-gdb_test "print test2.value" "\\$\[0-9\]* = oriental" "derived template object, base enum"
+gdb_test "print test2.value" "\\$\[0-9\]* = oriental = \\(enum region\\)0" "derived template object, base enum"
# derived template object, enum
-gdb_test "print test2.value_derived" "\\$\[0-9\]* = roman" "derived template object, derived enum"
+gdb_test "print test2.value_derived" "\\$\[0-9\]* = roman = \\(enum region\\)4" "derived template object, derived enum"
# Three.
@@ -102,10 +102,10 @@
gdb_test "print test3.data.key2" "\\$\[0-9\]* = 7" "template object, long"
# template object, derived template data member's base enum
-gdb_test "print test3.data.value" "\\$\[0-9\]* = oriental" "template object, base enum"
+gdb_test "print test3.data.value" "\\$\[0-9\]* = oriental = \\(enum region\\)0" "template object, base enum"
# template object, derived template data member's enum
-gdb_test "print test3.data.value_derived" "\\$\[0-9]\* = etruscan" "template object, derived enum"
+gdb_test "print test3.data.value_derived" "\\$\[0-9]\* = etruscan = \\(enum region\\)3" "template object, derived enum"
# Now some tests for shadowing (see PR gdb/804):
Index: gdb/testsuite/gdb.cp/m-static.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/m-static.exp,v
retrieving revision 1.9
diff -u -r1.9 m-static.exp
--- gdb/testsuite/gdb.cp/m-static.exp 1 Jan 2010 07:32:01 -0000 1.9
+++ gdb/testsuite/gdb.cp/m-static.exp 11 Feb 2010 02:44:41 -0000
@@ -82,7 +82,7 @@
gdb_test "print test1.key2" "\\$\[0-9\]* = 77" "simple object, static long"
# simple object, static enum
-gdb_test "print test1.value" "\\$\[0-9\]* = oriental" "simple object, static enum"
+gdb_test "print test1.value" "\\$\[0-9\]* = oriental = \\(enum region\\)0" "simple object, static enum"
# Two.
@@ -96,10 +96,10 @@
gdb_test "print test2.key2" "\\$\[0-9\]* = 77" "derived template object, base static long"
# derived template object, base static enum
-gdb_test "print test2.value" "\\$\[0-9\].* = oriental" "derived template object, base static enum"
+gdb_test "print test2.value" "\\$\[0-9\].* = oriental = \\(enum region\\)0" "derived template object, base static enum"
# derived template object, static enum
-gdb_test "print test2.value_derived" "\\$\[0-9\].* = etruscan" "derived template object, static enum"
+gdb_test "print test2.value_derived" "\\$\[0-9\].* = etruscan = \\(enum region\\)3" "derived template object, static enum"
# Three.
@@ -113,10 +113,10 @@
gdb_test "print test3.data.key2" "\\$\[0-9\].* = 77" "template object, static long"
# template object, static derived template data member's base static enum
-gdb_test "print test3.data.value" "\\$\[0-9\].* = oriental" "template object, static enum"
+gdb_test "print test3.data.value" "\\$\[0-9\].* = oriental = \\(enum region\\)0" "template object, static enum"
# template object, static derived template data member's static enum
-gdb_test "print test3.data.value_derived" "\\$\[0-9\].* = etruscan" "template object, static derived enum"
+gdb_test "print test3.data.value_derived" "\\$\[0-9\].* = etruscan = \\(enum region\\)3" "template object, static derived enum"
# 2002-08-16
# Four.
Index: gdb/testsuite/gdb.cp/namespace.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/namespace.exp,v
retrieving revision 1.16
diff -u -r1.16 namespace.exp
--- gdb/testsuite/gdb.cp/namespace.exp 19 Jan 2010 18:11:19 -0000 1.16
+++ gdb/testsuite/gdb.cp/namespace.exp 11 Feb 2010 02:44:41 -0000
@@ -273,4 +273,4 @@
gdb_test "print XOtherFile" "No symbol \"XOtherFile\" in current context."
# Enum tests.
-gdb_test "print AAA::ALPHA" "\\$\[0-9\].* = AAA::ALPHA"
+gdb_test "print AAA::ALPHA" "\\$\[0-9\].* = AAA::ALPHA = \\(enum AAA::SomeEnum\\)0"
Index: gdb/testsuite/gdb.mi/mi-var-display.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-var-display.exp,v
retrieving revision 1.34
diff -u -r1.34 mi-var-display.exp
--- gdb/testsuite/gdb.mi/mi-var-display.exp 1 Jan 2010 07:32:03 -0000 1.34
+++ gdb/testsuite/gdb.mi/mi-var-display.exp 11 Feb 2010 02:44:42 -0000
@@ -568,7 +568,7 @@
# Test: c_variable-7.61
# Desc: value of anone
mi_gdb_test "-var-evaluate-expression anone" \
- "\\^done,value=\"A\"" \
+ "\\^done,value=\"A = \\(enum <unknown>\\)0\"" \
"eval variable anone"
# Test: c_variable-7.70
Index: gdb/testsuite/gdb.mi/mi2-var-display.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-var-display.exp,v
retrieving revision 1.27
diff -u -r1.27 mi2-var-display.exp
--- gdb/testsuite/gdb.mi/mi2-var-display.exp 1 Jan 2010 07:32:03 -0000 1.27
+++ gdb/testsuite/gdb.mi/mi2-var-display.exp 11 Feb 2010 02:44:43 -0000
@@ -567,7 +567,7 @@
# Test: c_variable-7.61
# Desc: value of anone
mi_gdb_test "-var-evaluate-expression anone" \
- "\\^done,value=\"A\"" \
+ "\\^done,value=\"A = \\(enum <unknown>\\)0\"" \
"eval variable anone"
# Test: c_variable-7.70
Index: gdb/testsuite/gdb.python/py-value.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-value.exp,v
retrieving revision 1.5
diff -u -r1.5 py-value.exp
--- gdb/testsuite/gdb.python/py-value.exp 14 Jan 2010 08:03:37 -0000 1.5
+++ gdb/testsuite/gdb.python/py-value.exp 11 Feb 2010 02:44:43 -0000
@@ -115,7 +115,7 @@
gdb_test "python print 'result = ' + str(1.5+f)" " = 2.75" "add python float with double value"
# Conversion test.
- gdb_test "print evalue" " = TWO"
+ gdb_test "print evalue" " = TWO = \\(enum e\\)2"
gdb_test "python evalue = gdb.history (0)" ""
gdb_test "python print int (evalue)" "2"
[-- Attachment #3: pr11067-check.diff --]
[-- Type: text/plain, Size: 487 bytes --]
1c1
< Test Run By moller on Wed Feb 10 08:49:14 2010
---
> Test Run By moller on Wed Feb 10 21:27:30 2010
5648a5649,5652
> Running ../../../src/gdb/testsuite/gdb.base/pr11067.exp ...
> PASS: gdb.base/pr11067.exp: print e
> PASS: gdb.base/pr11067.exp: print ea
> PASS: gdb.base/pr11067.exp: print es
15512c15516
< PASS: gdb.threads/watchthreads.exp: disable 3
---
> PASS: gdb.threads/watchthreads.exp: disable 2
15716c15720
< # of expected passes 14910
---
> # of expected passes 14913
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-11 2:55 pr 11067 patch Chris Moller
@ 2010-02-11 9:30 ` Joel Brobecker
2010-02-11 14:19 ` Chris Moller
2010-02-11 19:50 ` Tom Tromey
0 siblings, 2 replies; 18+ messages in thread
From: Joel Brobecker @ 2010-02-11 9:30 UTC (permalink / raw)
To: Chris Moller; +Cc: gdb-patches
> Provides a little more info on enums for simple 'p <enum>' cases;
> keeps the old format for complex cases like structs and arrays:
I feel really bad about this, and I really apologize - I am just only
suddenly wondering why this is considered a good idea, was that discussed?
Please understand that this is not an objection, but I just had a look
at the PR, and I happen to disagree with the reporter. According to me,
he said:
1. If I print 'e', GDB prints 'Val1' and that's OK.
2. If I print 'Val1', GDB prints also prints 'Val1' and he says
that, instead, GDB should print its numerical value.
I disagree on (2) because, if he wanted the numerical value, he should
have told GDB. For instance:
(gdb) p GREEN
$1 = GREEN
(gdb) p /d GREEN
$2 = 1
If people still think that this suggestion is a good one, I looked at
the patch (the least I could do)...
> +Wed Feb 10 17:13:44 2010 Chris Moller <moller@mollerware.com>
> +
> + PR gdb/11067
> + * c-valprint.c (c_val_print): In case TYPE_CODE_ENUM, add code to
> + print the numeric value of the enum and the enum tag for
> + top-level, non-summary "print enum"s.
> + if (options->summary || recurse != 0)
> + {
> + fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
> + }
We do not use the curly braces in this case, when the block only contains
one statement.
> + else
> + {
> + char *enum_name;
> +
> + if (TYPE_NAME (type)) enum_name = TYPE_NAME (type);
> + else if (TYPE_TAG_NAME(type)) enum_name = TYPE_TAG_NAME(type);
> + else enum_name = "<unknown>";
Can you place each statement on their own line? I am guessing that
GNU indent will fix that anyway, and I also think that this is harder
to read.
Rather than "unknown", I wonder if we shouldn't be using "<anonymous>".
> + fprintf_filtered (stream, "%s = (enum %s)%lld",
> + TYPE_FIELD_NAME (type, i),
> + enum_name,
> + val);
Just a gotcha, here: val is a LONGEST, which is not necessarily
a long long. Use plongest to format your value into a string.
Also, would you mind adding a short comment explaining why you are
doing all this (we want to be concise if printing this enum as part
of a larger data structure or while in summary mode).
> + * gdb.cp/classes.exp (multiple places):
> + * gdb.cp/m-data.exp (multiple places):
> + * gdb.cp/m-static.exp (multiple places):
> + * gdb.cp/namespace.exp (multiple places):
> + * gdb.mi/mi-var-display.exp (multiple places):
> + * gdb.mi/mi2-var-display.exp (multiple places):
> + * gdb.python/py-value.exp (multiple places):
> + * gdb.base/setvar.exp (multiple places): Updated expects to new
> + enum format.
Hmmm, I don't think you need the "multiple places". IIRC, the GCS allow
you to just say:
* gdb.base/setvar.exp: Update throughout to match new enum format.
> +enum E e = Val1;
> +
> +enum E ea[] = { Val1, Val2, Val1 };
> +
> +struct Es es = { 5, Val2 };
> +
> +int main() {
> + return 0;
> +}
I can see some linkers optimizing away your global variables, causing
the testcase to fail... The AIX linker, for instance, does that.
You have a look at exprs.c, or grep for AIX in gdb.base/*.c for some
ideas on how to deceive the linker and prevent this unwanted optimization.
> +if { [skip_cplus_tests] } { continue }
> +
> +load_lib "cp-support.exp"
I don't think this is right, is it? Since this is a C test, I don't
understand why that would be needed...
> +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {c++ debug}] != "" } {
> + untested pr11067.exp
> + return -1
Same here, you're doing a C++ build for a C program.
Have a look at http://sourceware.org/gdb/wiki/GDBTestcaseCookbook.
If I were you, I'd just do the following to build your program:
set testfile template
set srcfile ${testfile}.c
if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
return -1
}
The above also includes the calls to gdb_exit/gdb_start/etc, so they
can also go.
> +# set a breakpoint at the return stmt
Superfluous comment :).
> +gdb_exit
> +return 0
Also superfluous...
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-11 9:30 ` Joel Brobecker
@ 2010-02-11 14:19 ` Chris Moller
2010-02-11 19:50 ` Tom Tromey
1 sibling, 0 replies; 18+ messages in thread
From: Chris Moller @ 2010-02-11 14:19 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
On 02/11/10 04:29, Joel Brobecker wrote:
>> Provides a little more info on enums for simple 'p<enum>' cases;
>> keeps the old format for complex cases like structs and arrays:
>>
>
> I feel really bad about this, and I really apologize - I am just only
> suddenly wondering why this is considered a good idea, was that discussed?
> Please understand that this is not an objection, but I just had a look
> at the PR, and I happen to disagree with the reporter. According to me,
> he said:
>
> 1. If I print 'e', GDB prints 'Val1' and that's OK.
> 2. If I print 'Val1', GDB prints also prints 'Val1' and he says
> that, instead, GDB should print its numerical value.
>
> I disagree on (2) because, if he wanted the numerical value, he should
> have told GDB. For instance:
>
> (gdb) p GREEN
> $1 = GREEN
> (gdb) p /d GREEN
> $2 = 1
>
> If people still think that this suggestion is a good one, I looked at
> the patch (the least I could do)...
>
I personally don't have much of an opinion either way about whether the
patch is a good idea--it was on the bug list, they told me to shoot
bugs, so I did.
But for such a trivial thing, it sure has wasted a lot of bandwidth...
I'll fold in your comments below, thx.
>
>> +Wed Feb 10 17:13:44 2010 Chris Moller<moller@mollerware.com>
>> +
>> + PR gdb/11067
>> + * c-valprint.c (c_val_print): In case TYPE_CODE_ENUM, add code to
>> + print the numeric value of the enum and the enum tag for
>> + top-level, non-summary "print enum"s.
>>
>
>
>
>
>> + if (options->summary || recurse != 0)
>> + {
>> + fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
>> + }
>>
>
> We do not use the curly braces in this case, when the block only contains
> one statement.
>
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-11 9:30 ` Joel Brobecker
2010-02-11 14:19 ` Chris Moller
@ 2010-02-11 19:50 ` Tom Tromey
2010-02-12 4:11 ` Joel Brobecker
1 sibling, 1 reply; 18+ messages in thread
From: Tom Tromey @ 2010-02-11 19:50 UTC (permalink / raw)
To: Joel Brobecker; +Cc: Chris Moller, gdb-patches
>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes:
>> Provides a little more info on enums for simple 'p <enum>' cases;
>> keeps the old format for complex cases like structs and arrays:
Joel> I feel really bad about this, and I really apologize - I am just
Joel> only suddenly wondering why this is considered a good idea, was
Joel> that discussed?
A little bit on the archer list, but not really directly.
Joel> 1. If I print 'e', GDB prints 'Val1' and that's OK.
Joel> 2. If I print 'Val1', GDB prints also prints 'Val1' and he says
Joel> that, instead, GDB should print its numerical value.
Joel> I disagree on (2) because, if he wanted the numerical value, he should
Joel> have told GDB. For instance:
Joel> (gdb) p GREEN
Joel> $1 = GREEN
Joel> (gdb) p /d GREEN
Joel> $2 = 1
Joel> If people still think that this suggestion is a good one, I looked at
Joel> the patch (the least I could do)...
I asked Chris to work on this because I run into this with some
frequency. I often will print some enum-typed value and get a symbolic
answer. Then I have to type another command to get the numeric answer.
It seems mildly friendlier to simply always print it, at least at the
top level. (In stack traces and in structures it may wind up being too
verbose, hence that decision.)
Differentiating cases 1 and 2 above is not really practical because the
evaluation and printing code are kept separate.
If you disagree strongly, then we could just close the PR and drop it, I
suppose. I am not very intent on this, I just thought it would be a
nice, if minor, enhancement. I didn't see a real downside.
Joel> Can you place each statement on their own line? I am guessing that
Joel> GNU indent will fix that anyway, and I also think that this is harder
Joel> to read.
I think we've abandoned any hope of using GNU indent.
Thanks for reviewing this.
Tom
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-11 19:50 ` Tom Tromey
@ 2010-02-12 4:11 ` Joel Brobecker
2010-02-12 15:48 ` Chris Moller
0 siblings, 1 reply; 18+ messages in thread
From: Joel Brobecker @ 2010-02-12 4:11 UTC (permalink / raw)
To: Tom Tromey; +Cc: Chris Moller, gdb-patches
> If you disagree strongly, then we could just close the PR and drop it, I
> suppose. I am not very intent on this, I just thought it would be a
> nice, if minor, enhancement. I didn't see a real downside.
Not at all, I cannot say I like the idea, but if it's useful to others,
this is all that really matters. Let's go ahead, then.
Regarding GNU indent - I know. But I try to keep formatting the code
the way GNU indent would do it in sane situations, as it helps keeping
some uniformity to our code. There are some rules I don't like (ahem,
ask me about spaces and tabs), but I think that uniformity is more
important...
I'm happy I contributed just a little bit towards this patch - I really
felt bad reacting to it so so late in the game.
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-12 4:11 ` Joel Brobecker
@ 2010-02-12 15:48 ` Chris Moller
2010-02-13 11:49 ` Jan Kratochvil
0 siblings, 1 reply; 18+ messages in thread
From: Chris Moller @ 2010-02-12 15:48 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1236 bytes --]
Herewith, if anyone is interested, is what I expect is the final version
of this patch, incorporating Joel's comments. Absent any objections, I
expect I'll commit it Monday (just to give people time to object :-) ).
[Joel, thanks for the link to the GDBTestcaseCookbook--extracting
coherence from lots of oral tradition and examples dating from the mists
of the distant past wasn't working well.]
On 02/11/10 23:11, Joel Brobecker wrote:
>> If you disagree strongly, then we could just close the PR and drop it, I
>> suppose. I am not very intent on this, I just thought it would be a
>> nice, if minor, enhancement. I didn't see a real downside.
>>
>
> Not at all, I cannot say I like the idea, but if it's useful to others,
> this is all that really matters. Let's go ahead, then.
>
> Regarding GNU indent - I know. But I try to keep formatting the code
> the way GNU indent would do it in sane situations, as it helps keeping
> some uniformity to our code. There are some rules I don't like (ahem,
> ask me about spaces and tabs), but I think that uniformity is more
> important...
>
> I'm happy I contributed just a little bit towards this patch - I really
> felt bad reacting to it so so late in the game.
>
>
[-- Attachment #2: pr11067.patch --]
[-- Type: text/plain, Size: 16075 bytes --]
Index: gdb/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/ChangeLog,v
retrieving revision 1.11340
diff -u -r1.11340 ChangeLog
--- gdb/ChangeLog 9 Feb 2010 15:52:57 -0000 1.11340
+++ gdb/ChangeLog 12 Feb 2010 15:37:46 -0000
@@ -1,3 +1,10 @@
+Wed Feb 10 17:13:44 2010 Chris Moller <moller@mollerware.com>
+
+ PR gdb/11067
+ * c-valprint.c (c_val_print): In case TYPE_CODE_ENUM, add code to
+ print the numeric value of the enum and the enum tag for
+ top-level, non-summary "print enum"s.
+
2010-02-09 Tristan Gingold <gingold@adacore.com>
* machoread.c (macho_symfile_relocate): New function.
Index: gdb/c-valprint.c
===================================================================
RCS file: /cvs/src/src/gdb/c-valprint.c,v
retrieving revision 1.67
diff -u -r1.67 c-valprint.c
--- gdb/c-valprint.c 2 Feb 2010 16:45:16 -0000 1.67
+++ gdb/c-valprint.c 12 Feb 2010 15:37:47 -0000
@@ -412,9 +412,30 @@
}
}
if (i < len)
- {
+ /*
+ When printing a simple enum value, the following code includes, in
+ addition to the symbolic value, the numeric value and the enum tag.
+ Under other-than-simple circumstances--in structs, arrays, etc.--
+ it does what's always done and prints just the symbolic value.
+ */
+ if (options->summary || recurse != 0)
fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
- }
+ else
+ {
+ char *enum_name;
+
+ if (TYPE_NAME (type))
+ enum_name = TYPE_NAME (type);
+ else if (TYPE_TAG_NAME(type))
+ enum_name = TYPE_TAG_NAME(type);
+ else
+ enum_name = "<anonymous>";
+
+ fprintf_filtered (stream, "%s = (enum %s)%s",
+ TYPE_FIELD_NAME (type, i),
+ enum_name,
+ plongest (val));
+ }
else
{
print_longest (stream, 'd', 0, val);
Index: gdb/testsuite/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/ChangeLog,v
retrieving revision 1.2128
diff -u -r1.2128 ChangeLog
--- gdb/testsuite/ChangeLog 9 Feb 2010 13:16:33 -0000 1.2128
+++ gdb/testsuite/ChangeLog 12 Feb 2010 15:38:04 -0000
@@ -1,3 +1,19 @@
+Wed Feb 10 17:18:17 2010 Chris Moller <moller@mollerware.com>
+
+ PR gdb/11067
+ * gdb.base/pr11067.c: New file.
+ * gdb.base/pr11067.exp: New file.
+ * gdb.base/Makefile.in (EXECUTABLES): Added pr11067
+ * gdb.cp/classes.exp:
+ * gdb.cp/m-data.exp:
+ * gdb.cp/m-static.exp:
+ * gdb.cp/namespace.exp:
+ * gdb.mi/mi-var-display.exp:
+ * gdb.mi/mi2-var-display.exp:
+ * gdb.python/py-value.exp:
+ * gdb.base/setvar.exp: Updated expects to the new enum format.
+
+
2010-02-09 Joel Brobecker <brobecker@adacore.com>
* gdb.ada/ptype_tagged_param: New testcase.
Index: gdb/testsuite/gdb.base/Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/Makefile.in,v
retrieving revision 1.5
diff -u -r1.5 Makefile.in
--- gdb/testsuite/gdb.base/Makefile.in 15 Sep 2009 03:30:08 -0000 1.5
+++ gdb/testsuite/gdb.base/Makefile.in 12 Feb 2010 15:38:04 -0000
@@ -12,7 +12,8 @@
scope section_command setshow setvar shmain sigall signals \
solib solib_sl so-impl-ld so-indr-cl \
step-line step-test structs structs2 \
- twice-tmp varargs vforked-prog watchpoint whatis catch-syscall
+ twice-tmp varargs vforked-prog watchpoint whatis catch-syscall \
+ pr11067
MISCELLANEOUS = coremmap.data ../foobar.baz \
shr1.sl shr2.sl solib_sl.sl solib1.sl solib2.sl
Index: gdb/testsuite/gdb.base/pr11067.c
===================================================================
RCS file: gdb/testsuite/gdb.base/pr11067.c
diff -N gdb/testsuite/gdb.base/pr11067.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb/testsuite/gdb.base/pr11067.c 12 Feb 2010 15:38:05 -0000
@@ -0,0 +1,48 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 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/>. */
+
+enum E {
+ Val1 = 56,
+ Val2
+};
+
+struct Es {
+ int v;
+ enum E e;
+};
+
+enum E e = Val1;
+
+enum E ea[] = { Val1, Val2, Val1 };
+
+struct Es es = { 5, Val2 };
+
+int main() {
+ /*
+ The following is a fake-out for linkers (such as, apparently, the AIX
+ linker) that optimises out unreference variables.
+ */
+
+ e = Val2;
+
+ ea[0] = Val2;
+
+ es.v = 99;
+
+ return 0;
+}
+
Index: gdb/testsuite/gdb.base/pr11067.exp
===================================================================
RCS file: gdb/testsuite/gdb.base/pr11067.exp
diff -N gdb/testsuite/gdb.base/pr11067.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb/testsuite/gdb.base/pr11067.exp 12 Feb 2010 15:38:05 -0000
@@ -0,0 +1,31 @@
+# Copyright 2010 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 testfile "pr11067"
+set srcfile ${testfile}.c
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
+ return -1
+}
+
+if ![runto_main] {
+ return -1
+}
+
+gdb_test "print e" "Val1 = \\(enum E\\)56"
+
+gdb_test "print ea" "{Val1, Val2, Val1}"
+
+gdb_test "print es" "v = 5, e = Val2}"
Index: gdb/testsuite/gdb.base/setvar.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/setvar.exp,v
retrieving revision 1.19
diff -u -r1.19 setvar.exp
--- gdb/testsuite/gdb.base/setvar.exp 29 Jan 2010 15:38:37 -0000 1.19
+++ gdb/testsuite/gdb.base/setvar.exp 12 Feb 2010 15:38:05 -0000
@@ -399,18 +399,22 @@
# GNU C supports them, some other compilers don't.
if {$gcc_compiled} then {
- gdb_test "print sef.field=sm1" ".*.\[0-9\]* = sm1"
- gdb_test "print sef.field" ".*.\[0-9\]* = sm1" "print sef.field (sm1)"
- gdb_test "print sef.field=s1" ".*.\[0-9\]* = s1"
- gdb_test "print sef.field" ".*.\[0-9\]* = s1" "print sef.field (s1)"
- gdb_test "print uef.field=u2" ".*.\[0-9\]* = u2"
- gdb_test "print uef.field" ".*.\[0-9\]* = u2" "print uef.field (u2)"
- gdb_test "print uef.field=u1" ".*.\[0-9\]* = u1"
- gdb_test "print uef.field" ".*.\[0-9\]* = u1" "print uef.field (u1)"
+ gdb_test "print sef.field=sm1" ".*.\[0-9\]* = sm1 = \\(enum senum\\)-1"
+ gdb_test "print sef.field" ".*.\[0-9\]* = sm1 = \\(enum senum\\)-1" \
+ "print sef.field (sm1)"
+ gdb_test "print sef.field=s1" ".*.\[0-9\]* = s1 = \\(enum senum\\)1"
+ gdb_test "print sef.field" ".*.\[0-9\]* = s1 = \\(enum senum\\)1" \
+ "print sef.field (s1)"
+ gdb_test "print uef.field=u2" ".*.\[0-9\]* = u2 = \\(enum uenum\\)2"
+ gdb_test "print uef.field" ".*.\[0-9\]* = u2 = \\(enum uenum\\)2" \
+ "print uef.field (u2)"
+ gdb_test "print uef.field=u1" ".*.\[0-9\]* = u1 = \\(enum uenum\\)1"
+ gdb_test "print uef.field" ".*.\[0-9\]* = u1 = \\(enum uenum\\)1" \
+ "print uef.field (u1)"
# Test for truncation when assigning invalid values to bitfields.
gdb_test "print sef.field=7" \
- ".*warning: Value does not fit in 2 bits.*\[0-9\]* = sm1"
+ ".*warning: Value does not fit in 2 bits.*\[0-9\]* = sm1 = \\(enum senum\\)-1"
gdb_test "print uef.field=6" \
- ".*warning: Value does not fit in 2 bits.*\[0-9\]* = u2"
+ ".*warning: Value does not fit in 2 bits.*\[0-9\]* = u2 = \\(enum uenum\\)2"
}
Index: gdb/testsuite/gdb.cp/classes.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/classes.exp,v
retrieving revision 1.24
diff -u -r1.24 classes.exp
--- gdb/testsuite/gdb.cp/classes.exp 1 Jan 2010 07:32:01 -0000 1.24
+++ gdb/testsuite/gdb.cp/classes.exp 12 Feb 2010 15:38:06 -0000
@@ -413,7 +413,7 @@
# print the enum member
- gdb_test "print obj_with_enum.priv_enum" "\\$\[0-9\]+ = (ClassWithEnum::)?green"
+ gdb_test "print obj_with_enum.priv_enum" "\\$\[0-9\]+ = (ClassWithEnum::)?green = \\(enum ClassWithEnum::PrivEnum\\)1"
# ptype on the enum member
@@ -482,7 +482,7 @@
}
gdb_test_multiple "print ('ClassWithEnum::PrivEnum') 42" "print ('ClassWithEnum::PrivEnum') 42" {
- -re "\\$\[0-9\]+ = (ClassWithEnum::)?yellow$nl$gdb_prompt $" {
+ -re "\\$\[0-9\]+ = (ClassWithEnum::)?yellow = \\(enum ClassWithEnum::PrivEnum\\)42$nl$gdb_prompt $" {
# gcc 3.3.2 -gstabs+
# gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "print ('ClassWithEnum::PrivEnum') 42"
Index: gdb/testsuite/gdb.cp/m-data.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/m-data.exp,v
retrieving revision 1.7
diff -u -r1.7 m-data.exp
--- gdb/testsuite/gdb.cp/m-data.exp 1 Jan 2010 07:32:01 -0000 1.7
+++ gdb/testsuite/gdb.cp/m-data.exp 12 Feb 2010 15:38:06 -0000
@@ -71,7 +71,7 @@
gdb_test "print test1.key2" "\\$\[0-9\]* = 4589" "simple object, long"
# simple object, enum
-gdb_test "print test1.value" "\\$\[0-9\]* = egyptian" "simple object, enum"
+gdb_test "print test1.value" "\\$\[0-9\]* = egyptian = \\(enum region\\)1" "simple object, enum"
# Two.
@@ -85,10 +85,10 @@
gdb_test "print test2.key2" "\\$\[0-9\]* = 7" "derived template object, base long"
# derived template object, base enum
-gdb_test "print test2.value" "\\$\[0-9\]* = oriental" "derived template object, base enum"
+gdb_test "print test2.value" "\\$\[0-9\]* = oriental = \\(enum region\\)0" "derived template object, base enum"
# derived template object, enum
-gdb_test "print test2.value_derived" "\\$\[0-9\]* = roman" "derived template object, derived enum"
+gdb_test "print test2.value_derived" "\\$\[0-9\]* = roman = \\(enum region\\)4" "derived template object, derived enum"
# Three.
@@ -102,10 +102,10 @@
gdb_test "print test3.data.key2" "\\$\[0-9\]* = 7" "template object, long"
# template object, derived template data member's base enum
-gdb_test "print test3.data.value" "\\$\[0-9\]* = oriental" "template object, base enum"
+gdb_test "print test3.data.value" "\\$\[0-9\]* = oriental = \\(enum region\\)0" "template object, base enum"
# template object, derived template data member's enum
-gdb_test "print test3.data.value_derived" "\\$\[0-9]\* = etruscan" "template object, derived enum"
+gdb_test "print test3.data.value_derived" "\\$\[0-9]\* = etruscan = \\(enum region\\)3" "template object, derived enum"
# Now some tests for shadowing (see PR gdb/804):
Index: gdb/testsuite/gdb.cp/m-static.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/m-static.exp,v
retrieving revision 1.9
diff -u -r1.9 m-static.exp
--- gdb/testsuite/gdb.cp/m-static.exp 1 Jan 2010 07:32:01 -0000 1.9
+++ gdb/testsuite/gdb.cp/m-static.exp 12 Feb 2010 15:38:06 -0000
@@ -82,7 +82,7 @@
gdb_test "print test1.key2" "\\$\[0-9\]* = 77" "simple object, static long"
# simple object, static enum
-gdb_test "print test1.value" "\\$\[0-9\]* = oriental" "simple object, static enum"
+gdb_test "print test1.value" "\\$\[0-9\]* = oriental = \\(enum region\\)0" "simple object, static enum"
# Two.
@@ -96,10 +96,10 @@
gdb_test "print test2.key2" "\\$\[0-9\]* = 77" "derived template object, base static long"
# derived template object, base static enum
-gdb_test "print test2.value" "\\$\[0-9\].* = oriental" "derived template object, base static enum"
+gdb_test "print test2.value" "\\$\[0-9\].* = oriental = \\(enum region\\)0" "derived template object, base static enum"
# derived template object, static enum
-gdb_test "print test2.value_derived" "\\$\[0-9\].* = etruscan" "derived template object, static enum"
+gdb_test "print test2.value_derived" "\\$\[0-9\].* = etruscan = \\(enum region\\)3" "derived template object, static enum"
# Three.
@@ -113,10 +113,10 @@
gdb_test "print test3.data.key2" "\\$\[0-9\].* = 77" "template object, static long"
# template object, static derived template data member's base static enum
-gdb_test "print test3.data.value" "\\$\[0-9\].* = oriental" "template object, static enum"
+gdb_test "print test3.data.value" "\\$\[0-9\].* = oriental = \\(enum region\\)0" "template object, static enum"
# template object, static derived template data member's static enum
-gdb_test "print test3.data.value_derived" "\\$\[0-9\].* = etruscan" "template object, static derived enum"
+gdb_test "print test3.data.value_derived" "\\$\[0-9\].* = etruscan = \\(enum region\\)3" "template object, static derived enum"
# 2002-08-16
# Four.
Index: gdb/testsuite/gdb.cp/namespace.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/namespace.exp,v
retrieving revision 1.16
diff -u -r1.16 namespace.exp
--- gdb/testsuite/gdb.cp/namespace.exp 19 Jan 2010 18:11:19 -0000 1.16
+++ gdb/testsuite/gdb.cp/namespace.exp 12 Feb 2010 15:38:06 -0000
@@ -273,4 +273,4 @@
gdb_test "print XOtherFile" "No symbol \"XOtherFile\" in current context."
# Enum tests.
-gdb_test "print AAA::ALPHA" "\\$\[0-9\].* = AAA::ALPHA"
+gdb_test "print AAA::ALPHA" "\\$\[0-9\].* = AAA::ALPHA = \\(enum AAA::SomeEnum\\)0"
Index: gdb/testsuite/gdb.mi/mi-var-display.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-var-display.exp,v
retrieving revision 1.34
diff -u -r1.34 mi-var-display.exp
--- gdb/testsuite/gdb.mi/mi-var-display.exp 1 Jan 2010 07:32:03 -0000 1.34
+++ gdb/testsuite/gdb.mi/mi-var-display.exp 12 Feb 2010 15:38:07 -0000
@@ -568,7 +568,7 @@
# Test: c_variable-7.61
# Desc: value of anone
mi_gdb_test "-var-evaluate-expression anone" \
- "\\^done,value=\"A\"" \
+ "\\^done,value=\"A = \\(enum <anonymous>\\)0\"" \
"eval variable anone"
# Test: c_variable-7.70
Index: gdb/testsuite/gdb.mi/mi2-var-display.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-var-display.exp,v
retrieving revision 1.27
diff -u -r1.27 mi2-var-display.exp
--- gdb/testsuite/gdb.mi/mi2-var-display.exp 1 Jan 2010 07:32:03 -0000 1.27
+++ gdb/testsuite/gdb.mi/mi2-var-display.exp 12 Feb 2010 15:38:08 -0000
@@ -567,7 +567,7 @@
# Test: c_variable-7.61
# Desc: value of anone
mi_gdb_test "-var-evaluate-expression anone" \
- "\\^done,value=\"A\"" \
+ "\\^done,value=\"A = \\(enum <anonymous>\\)0\"" \
"eval variable anone"
# Test: c_variable-7.70
Index: gdb/testsuite/gdb.python/py-value.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.python/py-value.exp,v
retrieving revision 1.5
diff -u -r1.5 py-value.exp
--- gdb/testsuite/gdb.python/py-value.exp 14 Jan 2010 08:03:37 -0000 1.5
+++ gdb/testsuite/gdb.python/py-value.exp 12 Feb 2010 15:38:08 -0000
@@ -115,7 +115,7 @@
gdb_test "python print 'result = ' + str(1.5+f)" " = 2.75" "add python float with double value"
# Conversion test.
- gdb_test "print evalue" " = TWO"
+ gdb_test "print evalue" " = TWO = \\(enum e\\)2"
gdb_test "python evalue = gdb.history (0)" ""
gdb_test "python print int (evalue)" "2"
[-- Attachment #3: pr11067-check.diff --]
[-- Type: text/plain, Size: 1917 bytes --]
--- gdb-virgin.sum 2010-02-10 08:57:04.980039916 -0500
+++ gdb-patched.sum 2010-02-12 10:36:03.075165127 -0500
@@ -1,4 +1,4 @@
-Test Run By moller on Wed Feb 10 08:49:14 2010
+Test Run By moller on Fri Feb 12 10:27:31 2010
Native configuration is i686-pc-linux-gnu
=== gdb tests ===
@@ -5646,6 +5646,10 @@
PASS: gdb.base/pr11022.exp: breakpoint hit 2
PASS: gdb.base/pr11022.exp: set var x = 1
PASS: gdb.base/pr11022.exp: watchpoint hit 2
+Running ../../../src/gdb/testsuite/gdb.base/pr11067.exp ...
+PASS: gdb.base/pr11067.exp: print e
+PASS: gdb.base/pr11067.exp: print ea
+PASS: gdb.base/pr11067.exp: print es
Running ../../../src/gdb/testsuite/gdb.base/prelink.exp ...
PASS: gdb.base/prelink.exp: prelink
Running ../../../src/gdb/testsuite/gdb.base/printcmds.exp ...
@@ -12669,6 +12673,7 @@
PASS: gdb.mi/mi-simplerun.exp: step at main
PASS: gdb.mi/mi-simplerun.exp: step to callee4
PASS: gdb.mi/mi-simplerun.exp: exec-finish
+FAIL: gdb.mi/mi-simplerun.exp: continue to end (failed to resume)
PASS: gdb.mi/mi-simplerun.exp: continue to end
Running ../../../src/gdb/testsuite/gdb.mi/mi-stack.exp ...
PASS: gdb.mi/mi-stack.exp: breakpoint at callee4
@@ -15509,7 +15514,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 3
+PASS: gdb.threads/watchthreads.exp: disable 2
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
@@ -15713,8 +15718,8 @@
=== gdb Summary ===
-# of expected passes 14910
-# of unexpected failures 22
+# of expected passes 14913
+# of unexpected failures 23
# of expected failures 41
# of untested testcases 3
# of unsupported tests 64
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-12 15:48 ` Chris Moller
@ 2010-02-13 11:49 ` Jan Kratochvil
2010-02-13 18:56 ` Chris Moller
0 siblings, 1 reply; 18+ messages in thread
From: Jan Kratochvil @ 2010-02-13 11:49 UTC (permalink / raw)
To: Chris Moller; +Cc: gdb-patches
Hi Chris,
On Fri, 12 Feb 2010 16:48:13 +0100, Chris Moller wrote:
> --- gdb/testsuite/gdb.mi/mi-var-display.exp 1 Jan 2010 07:32:03 -0000 1.34
> +++ gdb/testsuite/gdb.mi/mi-var-display.exp 12 Feb 2010 15:38:07 -0000
> mi_gdb_test "-var-evaluate-expression anone" \
> - "\\^done,value=\"A\"" \
> + "\\^done,value=\"A = \\(enum <anonymous>\\)0\"" \
> "eval variable anone"
While it works with Eclipse should this format be used even for MI?
MI doc says:
returns its value as a string.
It is true it may be the same what `print' doc says:
By default, GDB prints a value according to its data type.
Still IMO the representation "A = (enum <anonymous>)0" is not suitable for MI
as it is not the intended type of a C expression.
But in practice for Eclipse it works and it brings better user experience - as
in CLI.
Some GNU Coding Standard nitpicks:
> Index: gdb/ChangeLog$
> +Wed Feb 10 17:13:44 2010 Chris Moller <moller@mollerware.com>
timestamp line does not follow GCS.
> + /*
> + When printing a simple enum value, the following code includes, in
> + addition to the symbolic value, the numeric value and the enum tag.
> + Under other-than-simple circumstances--in structs, arrays, etc.--
> + it does what's always done and prints just the symbolic value.
> + */
GCS comment should be formatted:
/* text...
text. */
> + else if (TYPE_TAG_NAME(type))
> + enum_name = TYPE_TAG_NAME(type);
GCS spacing: -> "TYPE_TAG_NAME (type)"
> + else
> + enum_name = "<anonymous>";
> +
= +^I $
git diff --check says:
gdb/c-valprint.c:433: trailing whitespace.
(but unaware how to check an already axisting .patch file)
> + fprintf_filtered (stream, "%s = (enum %s)%s",
->
# + fprintf_filtered (stream, "%s = (enum %s) %s",
while PR 11067 shows it that way GCS 5.3 suggests a whitespace there:
foo = (char *) malloc (sizeof *foo);
> +++ gdb/testsuite/gdb.base/pr11067.c 12 Feb 2010 15:38:05 -0000
> @@ -0,0 +1,48 @@
> +enum E {
> + Val1 = 56,
> + Val2
> +};
According to GNU indent it should be:
enum E
{
Val1 = 56,
Val2
};
> +struct Es {
ditto
> +int main() {
GCS:
int
main ()
{
> + /*
> + The following is a fake-out for linkers (such as, apparently, the AIX
> + linker) that optimises out unreference variables.
> + */
Comment -> GCS.
> + return 0;
> +}
> +
trailing whitespace line.
> +++ gdb/testsuite/gdb.base/pr11067.exp 12 Feb 2010 15:38:05 -0000
> +gdb_test "print e" "Val1 = \\(enum E\\)56"
> +
> +gdb_test "print ea" "{Val1, Val2, Val1}"
> +
Two spaces.
GDB testscases use more a practice to expect also leading " = ":
gdb_test "print e" " = Val1 = \\(enum E\\)56"
gdb_test "print ea" " = {Val1, Val2, Val1}"
> +gdb_test "print es" "v = 5, e = Val2}"
+ IMO missing opening bracket.
gdb_test "print es" " = {v = 5, e = Val2}"
Regards,
Jan
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-13 11:49 ` Jan Kratochvil
@ 2010-02-13 18:56 ` Chris Moller
2010-02-19 14:28 ` Joel Brobecker
0 siblings, 1 reply; 18+ messages in thread
From: Chris Moller @ 2010-02-13 18:56 UTC (permalink / raw)
To: Jan Kratochvil; +Cc: gdb-patches
On 02/13/10 06:49, Jan Kratochvil wrote:
> Hi Chris,
>
> On Fri, 12 Feb 2010 16:48:13 +0100, Chris Moller wrote:
>
>> --- gdb/testsuite/gdb.mi/mi-var-display.exp 1 Jan 2010 07:32:03 -0000 1.34
>> +++ gdb/testsuite/gdb.mi/mi-var-display.exp 12 Feb 2010 15:38:07 -0000
>> mi_gdb_test "-var-evaluate-expression anone" \
>> - "\\^done,value=\"A\"" \
>> + "\\^done,value=\"A = \\(enum<anonymous>\\)0\"" \
>> "eval variable anone"
>>
>
> While it works with Eclipse should this format be used even for MI?
> MI doc says:
> returns its value as a string.
>
> It is true it may be the same what `print' doc says:
> By default, GDB prints a value according to its data type.
>
> Still IMO the representation "A = (enum<anonymous>)0" is not suitable for MI
> as it is not the intended type of a C expression.
Yeah, as I said last week, I've never been a fan of breaking historical
behaviour, something my original patch was designed to avoid.
This has gone way past ridiculous--it's time this whole thing was
resolved as WONTFIX and closed.
cm
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-13 18:56 ` Chris Moller
@ 2010-02-19 14:28 ` Joel Brobecker
2010-02-19 14:36 ` Jan Kratochvil
0 siblings, 1 reply; 18+ messages in thread
From: Joel Brobecker @ 2010-02-19 14:28 UTC (permalink / raw)
To: Chris Moller; +Cc: Jan Kratochvil, gdb-patches
Hi Chris,
I finally had a bit of time to look at your last patch. I agree with
Jan's comments on the patch (formatting issues, mostly, right?), and
I have no other comments. The C code in the testsuite doesn't necessarily
need to follow the GCS, I think, but it's probably not much trouble
fixing it.
> This has gone way past ridiculous--it's time this whole thing was
> resolved as WONTFIX and closed.
I respect either decision you might take. Again, I feel guilty about
jumping in the discussion really late. However, I should say that I am OK
with your latest version with the little tweaks suggested by Jan, if
you want to commit that. Jan's question, IMO (Jan, please correct me if
I am wrong), were meant as a discussion starter, rather than an objection.
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-19 14:28 ` Joel Brobecker
@ 2010-02-19 14:36 ` Jan Kratochvil
2010-02-19 14:45 ` Joel Brobecker
2010-02-19 14:54 ` Chris Moller
0 siblings, 2 replies; 18+ messages in thread
From: Jan Kratochvil @ 2010-02-19 14:36 UTC (permalink / raw)
To: Joel Brobecker; +Cc: Chris Moller, gdb-patches
Hi Chris,
On Fri, 19 Feb 2010 15:28:46 +0100, Joel Brobecker wrote:
> Jan's question, IMO (Jan, please correct me if I am wrong), were meant as
> a discussion starter, rather than an objection.
yes. As I said in practice it is an improvement even for MI (at least for
Eclipse CDT (CDI)) but formally I do not find it right for MI (as such diplay
feature should be done by MI frontend and not the MI backend IMO).
IMHO I would do the change for CLI but not for the MI. But besides no
approval rights I am even not a regular MI/frontend user. So just my $0.02.
Regards,
Jan
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-19 14:36 ` Jan Kratochvil
@ 2010-02-19 14:45 ` Joel Brobecker
2010-02-19 14:54 ` Chris Moller
1 sibling, 0 replies; 18+ messages in thread
From: Joel Brobecker @ 2010-02-19 14:45 UTC (permalink / raw)
To: Jan Kratochvil; +Cc: Chris Moller, gdb-patches
> IMHO I would do the change for CLI but not for the MI. But besides no
> approval rights I am even not a regular MI/frontend user. So just my $0.02.
If I'm sensing things right, I don't think that Chris actually disagrees
with you, it's just that we've been um'ing and am'ing back and forth
a little too much and discouraged him as a result. I'm ready to bet that
Chris would be happy letting anyone take his patch over and improve it.
(I tend to agree with you on your comment, btw)
--
Joel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-19 14:36 ` Jan Kratochvil
2010-02-19 14:45 ` Joel Brobecker
@ 2010-02-19 14:54 ` Chris Moller
2010-02-19 18:50 ` Jan Kratochvil
1 sibling, 1 reply; 18+ messages in thread
From: Chris Moller @ 2010-02-19 14:54 UTC (permalink / raw)
To: Jan Kratochvil; +Cc: Joel Brobecker, gdb-patches
On 02/19/10 09:36, Jan Kratochvil wrote:
> Hi Chris,
>
> On Fri, 19 Feb 2010 15:28:46 +0100, Joel Brobecker wrote:
>
>> Jan's question, IMO (Jan, please correct me if I am wrong), were meant as
>> a discussion starter, rather than an objection.
>>
>
> yes. As I said in practice it is an improvement even for MI (at least for
> Eclipse CDT (CDI)) but formally I do not find it right for MI (as such diplay
> feature should be done by MI frontend and not the MI backend IMO).
>
> IMHO I would do the change for CLI but not for the MI.
The problem is that I don't know any way to change the enum formatting
for CLI but leave it alone for MI-. That's one of the reasons I
proposed the "set enum-fmt" solution to, avoid breaking historical
default behaviour but still giving users who wanted it the option to use
a more informative format.
I'll be glad to dust the patch off--I haven't deleted either version--if
people want it, and I'll even look around for some way to distinguish
between running under CLI vs. MI if that's the right thing to do. It
had just gotten to the point where making a really trivial change was
taking way more effort than it was worth.
Chris
> But besides no
> approval rights I am even not a regular MI/frontend user. So just my $0.02.
>
>
> Regards,
> Jan
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-19 14:54 ` Chris Moller
@ 2010-02-19 18:50 ` Jan Kratochvil
2010-02-19 19:52 ` Chris Moller
0 siblings, 1 reply; 18+ messages in thread
From: Jan Kratochvil @ 2010-02-19 18:50 UTC (permalink / raw)
To: Chris Moller; +Cc: Joel Brobecker, gdb-patches
On Fri, 19 Feb 2010 15:53:45 +0100, Chris Moller wrote:
> The problem is that I don't know any way to change the enum
> formatting for CLI but leave it alone for MI-.
...
> some way to distinguish between running under CLI vs. MI if that's the right
> thing to do.
After I wrote the patch below according to Tom Tromey the Python pretty
printing applies even to the MI protocol values, therefore IMO it should also
apply to this new enum printing which is also some form of pretty printing.
Therefore my MI / CLI suggestion has been already rejected by the Python
pretty printing precedence and the patch below should be dropped.
Thanks,
Jan
ChangeLogged only changes to the patch:
gdb/
* c-valprint.c (c_val_print) <TYPE_CODE_ENUM>: Add conditional
!ENUM_NUMERIC_PRINT.
* mi/mi-main.c (mi_cmd_data_evaluate_expression): Clear
ENUM_NUMERIC_PRINT.
* valprint.c (user_print_options) <enum_numeric_print>: New.
(get_raw_print_options): Clear ENUM_NUMERIC_PRINT.
(show_enum_numeric_print): New.
(_initialize_valprint): Call add_setshow_boolean_cmd for
"enum-numeric-print"..
* valprint.h (struct value_print_options) <enum_numeric_print>: New.
* varobj.c (value_get_print_value): Clear OPTS.ENUM_NUMERIC_PRINT.
Gdb/testsuite/
* gdb.mi/basics.c (E): New.
* gdb.mi/mi2-eval.exp (eval E): New.
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -412,9 +412,30 @@ c_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
}
}
if (i < len)
- {
+ /*
+ When printing a simple enum value, the following code includes, in
+ addition to the symbolic value, the numeric value and the enum tag.
+ Under other-than-simple circumstances--in structs, arrays, etc.--
+ it does what's always done and prints just the symbolic value.
+ */
+ if (!options->enum_numeric_print || options->summary || recurse != 0)
fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
- }
+ else
+ {
+ char *enum_name;
+
+ if (TYPE_NAME (type))
+ enum_name = TYPE_NAME (type);
+ else if (TYPE_TAG_NAME(type))
+ enum_name = TYPE_TAG_NAME(type);
+ else
+ enum_name = "<anonymous>";
+
+ fprintf_filtered (stream, "%s = (enum %s)%s",
+ TYPE_FIELD_NAME (type, i),
+ enum_name,
+ plongest (val));
+ }
else
{
print_longest (stream, 'd', 0, val);
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -1122,6 +1122,7 @@ mi_cmd_data_evaluate_expression (char *command, char **argv, int argc)
/* Print the result of the expression evaluation. */
get_user_print_options (&opts);
opts.deref_ref = 0;
+ opts.enum_numeric_print = 0;
val_print (value_type (val), value_contents (val),
value_embedded_offset (val), value_address (val),
stb->stream, 0, &opts, current_language);
--- a/gdb/testsuite/gdb.base/Makefile.in
+++ b/gdb/testsuite/gdb.base/Makefile.in
@@ -12,7 +12,8 @@ EXECUTABLES = all-types annota1 bitfields break \
scope section_command setshow setvar shmain sigall signals \
solib solib_sl so-impl-ld so-indr-cl \
step-line step-test structs structs2 \
- twice-tmp varargs vforked-prog watchpoint whatis catch-syscall
+ twice-tmp varargs vforked-prog watchpoint whatis catch-syscall \
+ pr11067
MISCELLANEOUS = coremmap.data ../foobar.baz \
shr1.sl shr2.sl solib_sl.sl solib1.sl solib2.sl
--- /dev/null
+++ b/gdb/testsuite/gdb.base/pr11067.c
@@ -0,0 +1,48 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 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/>. */
+
+enum E {
+ Val1 = 56,
+ Val2
+};
+
+struct Es {
+ int v;
+ enum E e;
+};
+
+enum E e = Val1;
+
+enum E ea[] = { Val1, Val2, Val1 };
+
+struct Es es = { 5, Val2 };
+
+int main() {
+ /*
+ The following is a fake-out for linkers (such as, apparently, the AIX
+ linker) that optimises out unreference variables.
+ */
+
+ e = Val2;
+
+ ea[0] = Val2;
+
+ es.v = 99;
+
+ return 0;
+}
+
--- /dev/null
+++ b/gdb/testsuite/gdb.base/pr11067.exp
@@ -0,0 +1,31 @@
+# Copyright 2010 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 testfile "pr11067"
+set srcfile ${testfile}.c
+
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
+ return -1
+}
+
+if ![runto_main] {
+ return -1
+}
+
+gdb_test "print e" "Val1 = \\(enum E\\)56"
+
+gdb_test "print ea" "{Val1, Val2, Val1}"
+
+gdb_test "print es" "v = 5, e = Val2}"
--- a/gdb/testsuite/gdb.base/setvar.exp
+++ b/gdb/testsuite/gdb.base/setvar.exp
@@ -399,18 +399,22 @@ set timeout $prev_timeout
# GNU C supports them, some other compilers don't.
if {$gcc_compiled} then {
- gdb_test "print sef.field=sm1" ".*.\[0-9\]* = sm1"
- gdb_test "print sef.field" ".*.\[0-9\]* = sm1" "print sef.field (sm1)"
- gdb_test "print sef.field=s1" ".*.\[0-9\]* = s1"
- gdb_test "print sef.field" ".*.\[0-9\]* = s1" "print sef.field (s1)"
- gdb_test "print uef.field=u2" ".*.\[0-9\]* = u2"
- gdb_test "print uef.field" ".*.\[0-9\]* = u2" "print uef.field (u2)"
- gdb_test "print uef.field=u1" ".*.\[0-9\]* = u1"
- gdb_test "print uef.field" ".*.\[0-9\]* = u1" "print uef.field (u1)"
+ gdb_test "print sef.field=sm1" ".*.\[0-9\]* = sm1 = \\(enum senum\\)-1"
+ gdb_test "print sef.field" ".*.\[0-9\]* = sm1 = \\(enum senum\\)-1" \
+ "print sef.field (sm1)"
+ gdb_test "print sef.field=s1" ".*.\[0-9\]* = s1 = \\(enum senum\\)1"
+ gdb_test "print sef.field" ".*.\[0-9\]* = s1 = \\(enum senum\\)1" \
+ "print sef.field (s1)"
+ gdb_test "print uef.field=u2" ".*.\[0-9\]* = u2 = \\(enum uenum\\)2"
+ gdb_test "print uef.field" ".*.\[0-9\]* = u2 = \\(enum uenum\\)2" \
+ "print uef.field (u2)"
+ gdb_test "print uef.field=u1" ".*.\[0-9\]* = u1 = \\(enum uenum\\)1"
+ gdb_test "print uef.field" ".*.\[0-9\]* = u1 = \\(enum uenum\\)1" \
+ "print uef.field (u1)"
# Test for truncation when assigning invalid values to bitfields.
gdb_test "print sef.field=7" \
- ".*warning: Value does not fit in 2 bits.*\[0-9\]* = sm1"
+ ".*warning: Value does not fit in 2 bits.*\[0-9\]* = sm1 = \\(enum senum\\)-1"
gdb_test "print uef.field=6" \
- ".*warning: Value does not fit in 2 bits.*\[0-9\]* = u2"
+ ".*warning: Value does not fit in 2 bits.*\[0-9\]* = u2 = \\(enum uenum\\)2"
}
--- a/gdb/testsuite/gdb.cp/classes.exp
+++ b/gdb/testsuite/gdb.cp/classes.exp
@@ -413,7 +413,7 @@ proc test_enums {} {
# print the enum member
- gdb_test "print obj_with_enum.priv_enum" "\\$\[0-9\]+ = (ClassWithEnum::)?green"
+ gdb_test "print obj_with_enum.priv_enum" "\\$\[0-9\]+ = (ClassWithEnum::)?green = \\(enum ClassWithEnum::PrivEnum\\)1"
# ptype on the enum member
@@ -482,7 +482,7 @@ proc test_enums {} {
}
gdb_test_multiple "print ('ClassWithEnum::PrivEnum') 42" "print ('ClassWithEnum::PrivEnum') 42" {
- -re "\\$\[0-9\]+ = (ClassWithEnum::)?yellow$nl$gdb_prompt $" {
+ -re "\\$\[0-9\]+ = (ClassWithEnum::)?yellow = \\(enum ClassWithEnum::PrivEnum\\)42$nl$gdb_prompt $" {
# gcc 3.3.2 -gstabs+
# gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "print ('ClassWithEnum::PrivEnum') 42"
--- a/gdb/testsuite/gdb.cp/m-data.exp
+++ b/gdb/testsuite/gdb.cp/m-data.exp
@@ -71,7 +71,7 @@ gdb_test "print test1.key1" "\\$\[0-9\]* = 5" "simple object, const int"
gdb_test "print test1.key2" "\\$\[0-9\]* = 4589" "simple object, long"
# simple object, enum
-gdb_test "print test1.value" "\\$\[0-9\]* = egyptian" "simple object, enum"
+gdb_test "print test1.value" "\\$\[0-9\]* = egyptian = \\(enum region\\)1" "simple object, enum"
# Two.
@@ -85,10 +85,10 @@ gdb_test "print test2.key1" "\\$\[0-9\]* = 5" "derived template object, base con
gdb_test "print test2.key2" "\\$\[0-9\]* = 7" "derived template object, base long"
# derived template object, base enum
-gdb_test "print test2.value" "\\$\[0-9\]* = oriental" "derived template object, base enum"
+gdb_test "print test2.value" "\\$\[0-9\]* = oriental = \\(enum region\\)0" "derived template object, base enum"
# derived template object, enum
-gdb_test "print test2.value_derived" "\\$\[0-9\]* = roman" "derived template object, derived enum"
+gdb_test "print test2.value_derived" "\\$\[0-9\]* = roman = \\(enum region\\)4" "derived template object, derived enum"
# Three.
@@ -102,10 +102,10 @@ gdb_test "print test3.data.key1" "\\$\[0-9\]* = 5" "template object, const int"
gdb_test "print test3.data.key2" "\\$\[0-9\]* = 7" "template object, long"
# template object, derived template data member's base enum
-gdb_test "print test3.data.value" "\\$\[0-9\]* = oriental" "template object, base enum"
+gdb_test "print test3.data.value" "\\$\[0-9\]* = oriental = \\(enum region\\)0" "template object, base enum"
# template object, derived template data member's enum
-gdb_test "print test3.data.value_derived" "\\$\[0-9]\* = etruscan" "template object, derived enum"
+gdb_test "print test3.data.value_derived" "\\$\[0-9]\* = etruscan = \\(enum region\\)3" "template object, derived enum"
# Now some tests for shadowing (see PR gdb/804):
--- a/gdb/testsuite/gdb.cp/m-static.exp
+++ b/gdb/testsuite/gdb.cp/m-static.exp
@@ -82,7 +82,7 @@ gdb_test "print test1.key1" "\\$\[0-9\]* = 5" "simple object, static const int"
gdb_test "print test1.key2" "\\$\[0-9\]* = 77" "simple object, static long"
# simple object, static enum
-gdb_test "print test1.value" "\\$\[0-9\]* = oriental" "simple object, static enum"
+gdb_test "print test1.value" "\\$\[0-9\]* = oriental = \\(enum region\\)0" "simple object, static enum"
# Two.
@@ -96,10 +96,10 @@ gdb_test "print test2.key1" "\\$\[0-9\]* = 5" "derived template object, base sta
gdb_test "print test2.key2" "\\$\[0-9\]* = 77" "derived template object, base static long"
# derived template object, base static enum
-gdb_test "print test2.value" "\\$\[0-9\].* = oriental" "derived template object, base static enum"
+gdb_test "print test2.value" "\\$\[0-9\].* = oriental = \\(enum region\\)0" "derived template object, base static enum"
# derived template object, static enum
-gdb_test "print test2.value_derived" "\\$\[0-9\].* = etruscan" "derived template object, static enum"
+gdb_test "print test2.value_derived" "\\$\[0-9\].* = etruscan = \\(enum region\\)3" "derived template object, static enum"
# Three.
@@ -113,10 +113,10 @@ gdb_test "print test3.data.key1" "\\$\[0-9\].* = 5" "template object, static con
gdb_test "print test3.data.key2" "\\$\[0-9\].* = 77" "template object, static long"
# template object, static derived template data member's base static enum
-gdb_test "print test3.data.value" "\\$\[0-9\].* = oriental" "template object, static enum"
+gdb_test "print test3.data.value" "\\$\[0-9\].* = oriental = \\(enum region\\)0" "template object, static enum"
# template object, static derived template data member's static enum
-gdb_test "print test3.data.value_derived" "\\$\[0-9\].* = etruscan" "template object, static derived enum"
+gdb_test "print test3.data.value_derived" "\\$\[0-9\].* = etruscan = \\(enum region\\)3" "template object, static derived enum"
# 2002-08-16
# Four.
--- a/gdb/testsuite/gdb.cp/namespace.exp
+++ b/gdb/testsuite/gdb.cp/namespace.exp
@@ -273,4 +273,4 @@ gdb_test "print cXOtherFile" "No symbol \"cXOtherFile\" in current context."
gdb_test "print XOtherFile" "No symbol \"XOtherFile\" in current context."
# Enum tests.
-gdb_test "print AAA::ALPHA" "\\$\[0-9\].* = AAA::ALPHA"
+gdb_test "print AAA::ALPHA" "\\$\[0-9\].* = AAA::ALPHA = \\(enum AAA::SomeEnum\\)0"
--- a/gdb/testsuite/gdb.mi/basics.c
+++ b/gdb/testsuite/gdb.mi/basics.c
@@ -24,6 +24,8 @@ Free Software Foundation, Inc.
#include <stdio.h>
#include <unistd.h>
+static enum enum_name { enumerator } E = enumerator;
+
int callee4 (void)
{
int A=1;
--- a/gdb/testsuite/gdb.mi/mi2-eval.exp
+++ b/gdb/testsuite/gdb.mi/mi2-eval.exp
@@ -58,6 +58,8 @@ mi_gdb_test "411-data-evaluate-expression A+3" "411\\^done,value=\"4\"" "eval A+
mi_gdb_test "511-data-evaluate-expression \"A + 3\"" "511\\^done,value=\"4\"" "eval A + 3"
+mi_gdb_test "611-data-evaluate-expression \"E\"" "611\\^done,value=\"enumerator\"" "eval E"
+
mi_gdb_exit
return 0
--- a/gdb/testsuite/gdb.python/py-value.exp
+++ b/gdb/testsuite/gdb.python/py-value.exp
@@ -115,7 +115,7 @@ proc test_value_numeric_ops {} {
gdb_test "python print 'result = ' + str(1.5+f)" " = 2.75" "add python float with double value"
# Conversion test.
- gdb_test "print evalue" " = TWO"
+ gdb_test "print evalue" " = TWO = \\(enum e\\)2"
gdb_test "python evalue = gdb.history (0)" ""
gdb_test "python print int (evalue)" "2"
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
@@ -83,7 +83,8 @@ struct value_print_options user_print_options =
1, /* static_field_print */
1, /* pascal_static_field_print */
0, /* raw */
- 0 /* summary */
+ 0, /* summary */
+ 1 /* enum_numeric_print */
};
/* Initialize *OPTS to be a copy of the user print options. */
@@ -100,6 +101,7 @@ get_raw_print_options (struct value_print_options *opts)
{
*opts = user_print_options;
opts->pretty = Val_no_prettyprint;
+ opts->enum_numeric_print = 0;
}
/* Initialize *OPTS to be a copy of the user print options, but using
@@ -154,6 +156,17 @@ show_print_array_indexes (struct ui_file *file, int from_tty,
fprintf_filtered (file, _("Printing of array indexes is %s.\n"), value);
}
+/* If nonzero print also the numeric value of enum elements. */
+
+static void
+show_enum_numeric_print (struct ui_file *file, int from_tty,
+ struct cmd_list_element *c, const char *value)
+{
+ fprintf_filtered (file, _("\
+Printing of enum values with their numerical values is %s.\n"),
+ value);
+}
+
/* Print repeat counts if there are more than this many repetitions of an
element in an array. Referenced by the low level language dependent
print routines. */
@@ -1734,4 +1747,12 @@ Use 'show input-radix' or 'show output-radix' to independently show each."),
Set printing of array indexes."), _("\
Show printing of array indexes"), NULL, NULL, show_print_array_indexes,
&setprintlist, &showprintlist);
+
+ add_setshow_boolean_cmd ("enum-numeric-print", class_support,
+ &user_print_options.enum_numeric_print, _("\
+Set printing of enum values with their numerical values."), _("\
+Show printing of enum values with their numerical values."), NULL,
+ NULL,
+ show_enum_numeric_print,
+ &setprintlist, &showprintlist);
}
--- a/gdb/valprint.h
+++ b/gdb/valprint.h
@@ -90,6 +90,9 @@ struct value_print_options
/* If nonzero, print the value in "summary" form. */
int summary;
+
+ /* If nonzero print also the numeric value of enum elements. */
+ int enum_numeric_print;
};
/* The global print options set by the user. In general this should
--- a/gdb/varobj.c
+++ b/gdb/varobj.c
@@ -2544,6 +2544,7 @@ value_get_print_value (struct value *value, enum varobj_display_formats format,
get_formatted_print_options (&opts, format_code[(int) format]);
opts.deref_ref = 0;
opts.raw = 1;
+ opts.enum_numeric_print = 0;
if (thevalue)
{
make_cleanup (xfree, thevalue);
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-19 18:50 ` Jan Kratochvil
@ 2010-02-19 19:52 ` Chris Moller
2010-02-19 20:11 ` Jan Kratochvil
0 siblings, 1 reply; 18+ messages in thread
From: Chris Moller @ 2010-02-19 19:52 UTC (permalink / raw)
To: Jan Kratochvil; +Cc: Joel Brobecker, gdb-patches
On 02/19/10 13:50, Jan Kratochvil wrote:
> On Fri, 19 Feb 2010 15:53:45 +0100, Chris Moller wrote:
>
>> The problem is that I don't know any way to change the enum
>> formatting for CLI but leave it alone for MI-.
>>
> ...
>
>> some way to distinguish between running under CLI vs. MI if that's the right
>> thing to do.
>>
>
> After I wrote the patch below according to Tom Tromey the Python pretty
> printing applies even to the MI protocol values, therefore IMO it should also
> apply to this new enum printing which is also some form of pretty printing.
>
> Therefore my MI / CLI suggestion has been already rejected by the Python
> pretty printing precedence and the patch below should be dropped.
>
How about this: The existing patch contains a test
if (options->summary || recurse != 0)
fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
else {
/* new formatting stuff */
}
That limited the format change to unsummarised top-level "p <enum
thingy>" circumstances. If I make that test
if (options->summary || recurse != 0 ||
ui_out_is_mi_like_p (interp_ui_out
(top_level_interpreter ())))
i.e., checking if the print is to an MI whatever-it-is, the MI tests
that failed under the original patch (mi-var-display and
mi2-var-display) run okay as they originally were, which suggests to me
that MI will go on getting enums formatted the way it expects them.
Will that work?
Chris
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-19 19:52 ` Chris Moller
@ 2010-02-19 20:11 ` Jan Kratochvil
2010-02-22 9:22 ` Vladimir Prus
2010-02-23 23:55 ` Tom Tromey
0 siblings, 2 replies; 18+ messages in thread
From: Jan Kratochvil @ 2010-02-19 20:11 UTC (permalink / raw)
To: Vladimir Prus; +Cc: Joel Brobecker, gdb-patches, Chris Moller
On Fri, 19 Feb 2010 20:51:36 +0100, Chris Moller wrote:
> That limited the format change to unsummarised top-level "p <enum
> thingy>" circumstances. If I make that test
>
> if (options->summary || recurse != 0 ||
> ui_out_is_mi_like_p (interp_ui_out
> (top_level_interpreter ())))
>
> i.e., checking if the print is to an MI whatever-it-is, the MI tests
> that failed under the original patch (mi-var-display and
> mi2-var-display) run okay as they originally were, which suggests to
> me that MI will go on getting enums formatted the way it expects
> them. Will that work?
I would prefer the value_print_options way but rather:
Vladimir, if CLI start print instead of
(gdb) p enum_var
$1 = enumerator2
now:
(gdb) p enum_var
$1 = enumerator2 = (enum uenum) 2
should MI also print this "pretty printed" enum syntax or should it stick with
the original one? Therefore should be made this change?
mi_gdb_test "-var-evaluate-expression anone" \
- "\\^done,value=\"A\"" \
+ "\\^done,value=\"A = \\(enum <anonymous>\\)0\"" \
"eval variable anone"
Thanks,
Jan
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-19 20:11 ` Jan Kratochvil
@ 2010-02-22 9:22 ` Vladimir Prus
2010-02-23 23:55 ` Tom Tromey
1 sibling, 0 replies; 18+ messages in thread
From: Vladimir Prus @ 2010-02-22 9:22 UTC (permalink / raw)
To: Jan Kratochvil; +Cc: Joel Brobecker, gdb-patches, Chris Moller
On Friday 19 February 2010 23:11:05 Jan Kratochvil wrote:
> On Fri, 19 Feb 2010 20:51:36 +0100, Chris Moller wrote:
> > That limited the format change to unsummarised top-level "p <enum
> > thingy>" circumstances. If I make that test
> >
> > if (options->summary || recurse != 0 ||
> > ui_out_is_mi_like_p (interp_ui_out
> > (top_level_interpreter ())))
> >
> > i.e., checking if the print is to an MI whatever-it-is, the MI tests
> > that failed under the original patch (mi-var-display and
> > mi2-var-display) run okay as they originally were, which suggests to
> > me that MI will go on getting enums formatted the way it expects
> > them. Will that work?
>
> I would prefer the value_print_options way but rather:
>
>
> Vladimir, if CLI start print instead of
> (gdb) p enum_var
> $1 = enumerator2
> now:
> (gdb) p enum_var
> $1 = enumerator2 = (enum uenum) 2
>
> should MI also print this "pretty printed" enum syntax or should it stick with
> the original one? Therefore should be made this change?
>
> mi_gdb_test "-var-evaluate-expression anone" \
> - "\\^done,value=\"A\"" \
> + "\\^done,value=\"A = \\(enum <anonymous>\\)0\"" \
> "eval variable anone"
Hi Jan,
I am not 100% sure but I am concerned about the above output having 'enum uenum' --
which is essentially the type of the variable. And MI already reports type separately.
I recall I've made some changed before to specifically stop GDB from including the
type of variable inside value field when the type is function. So, I suggest that
this output is not included for MI. It might be OK to output a separate
field, e.g. "enum_integer_value" -- with the integer value as printed above -- but
I don't have a feeling if frontends really need that at this point.
Thanks,
--
Vladimir Prus
CodeSourcery
vladimir@codesourcery.com
(650) 331-3385 x722
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch
2010-02-19 20:11 ` Jan Kratochvil
2010-02-22 9:22 ` Vladimir Prus
@ 2010-02-23 23:55 ` Tom Tromey
2010-03-11 15:44 ` pr 11067 patch resurrected from the dead Chris Moller
1 sibling, 1 reply; 18+ messages in thread
From: Tom Tromey @ 2010-02-23 23:55 UTC (permalink / raw)
To: Jan Kratochvil; +Cc: Vladimir Prus, Joel Brobecker, gdb-patches, Chris Moller
>>>>> "Jan" == Jan Kratochvil <jan.kratochvil@redhat.com> writes:
Finally catching up on this thread...
Jan> I would prefer the value_print_options way but rather:
Yes, I think value_print_options is preferable to checking
ui_out_is_mi_like_p. My reason is that getting the ui-out object
involves looking at some global state, whereas value_print_options is
local to the call hierarchy. This means that it is simpler to reason
about and modify.
Tom
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: pr 11067 patch resurrected from the dead
2010-02-23 23:55 ` Tom Tromey
@ 2010-03-11 15:44 ` Chris Moller
0 siblings, 0 replies; 18+ messages in thread
From: Chris Moller @ 2010-03-11 15:44 UTC (permalink / raw)
To: tromey; +Cc: Jan Kratochvil, Vladimir Prus, Joel Brobecker, gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1520 bytes --]
On 02/23/10 18:54, Tom Tromey wrote:
>>>>>> "Jan" == Jan Kratochvil<jan.kratochvil@redhat.com> writes:
>>>>>>
>
> Finally catching up on this thread...
>
> Jan> I would prefer the value_print_options way but rather:
>
Okay, folks, I dusted this off and spun another simple patch using
value_print_options. Given an enum:
enum tt {
T0,
T1,
T2
};
enum tt tf = T1;
If you do
p /f tf
you'll get
$1 = T1 = (enum tt)1
of instead of the
$2 = T1
you'd get without the /f flag. (It's "/f" because 'f' isn't otherwise
used for enums--'f' for "fancy" or something like that.)
It also doesn't differentiate between printing single enums and enums in
more complex things like arrays. Given
enum tt ta[] = { T1, T0, T2 };
The result would be:
p /f ta
$3 = {T1 = (enum tt)1, T0 = (enum tt)0, T2 = (enum tt)2}
As an alternative, maybe it could print something like
$2 = (enum tt)1 <T1>
which kind looks like the result of printing a character.
As you can see in the attached check summary diff, this patch doesn't do
a thing to MI or anything else.
If people like this, great. Otherwise, I'll leave it dead and buried.
> Yes, I think value_print_options is preferable to checking
> ui_out_is_mi_like_p. My reason is that getting the ui-out object
> involves looking at some global state, whereas value_print_options is
> local to the call hierarchy. This means that it is simpler to reason
> about and modify.
>
> Tom
>
[-- Attachment #2: pr11067.patch --]
[-- Type: text/x-patch, Size: 3815 bytes --]
Index: printcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/printcmd.c,v
retrieving revision 1.173
diff -u -r1.173 printcmd.c
--- printcmd.c 5 Mar 2010 20:18:14 -0000 1.173
+++ printcmd.c 11 Mar 2010 15:20:44 -0000
@@ -373,6 +373,46 @@
current_language);
return;
}
+
+ if (TYPE_CODE (type) == TYPE_CODE_ENUM
+ && options->format == 'f')
+ {
+ unsigned flen, i;
+ LONGEST val;
+
+ flen = TYPE_NFIELDS (type);
+ val = unpack_long (type, valaddr);
+
+ for (i = 0; i < flen; i++)
+ {
+ if (val == TYPE_FIELD_BITPOS (type, i))
+ {
+ break;
+ }
+ }
+ if (i < flen)
+ {
+ char *enum_name;
+
+ if (TYPE_NAME (type))
+ enum_name = TYPE_NAME (type);
+ else if (TYPE_TAG_NAME(type))
+ enum_name = TYPE_TAG_NAME(type);
+ else
+ enum_name = "<anonymous>";
+
+ fprintf_filtered (stream, "%s = (enum %s)%s",
+ TYPE_FIELD_NAME (type, i),
+ enum_name,
+ plongest (val));
+ }
+ else
+ {
+ warning (_("Enum fancy formatting failed, using simple format."));
+ print_longest (stream, 'd', 0, val);
+ }
+ return;
+ }
if (len > sizeof(LONGEST) &&
(TYPE_CODE (type) == TYPE_CODE_INT
Index: testsuite/gdb.base/Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/Makefile.in,v
retrieving revision 1.5
diff -u -r1.5 Makefile.in
--- testsuite/gdb.base/Makefile.in 15 Sep 2009 03:30:08 -0000 1.5
+++ testsuite/gdb.base/Makefile.in 11 Mar 2010 15:20:45 -0000
@@ -12,7 +12,8 @@
scope section_command setshow setvar shmain sigall signals \
solib solib_sl so-impl-ld so-indr-cl \
step-line step-test structs structs2 \
- twice-tmp varargs vforked-prog watchpoint whatis catch-syscall
+ twice-tmp varargs vforked-prog watchpoint whatis catch-syscall \
+ pr11067
MISCELLANEOUS = coremmap.data ../foobar.baz \
shr1.sl shr2.sl solib_sl.sl solib1.sl solib2.sl
Index: testsuite/gdb.base/pr11067.c
===================================================================
RCS file: testsuite/gdb.base/pr11067.c
diff -N testsuite/gdb.base/pr11067.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.base/pr11067.c 11 Mar 2010 15:20:45 -0000
@@ -0,0 +1,18 @@
+#include <stdio.h>
+
+typedef enum { E0, E1, E2 } ex_e;
+ex_e ef = E2;
+
+enum tt {
+ T0,
+ T1,
+ T2
+};
+
+enum tt tf = T1;
+
+int
+main()
+{
+ return 0;
+}
Index: testsuite/gdb.base/pr11067.exp
===================================================================
RCS file: testsuite/gdb.base/pr11067.exp
diff -N testsuite/gdb.base/pr11067.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.base/pr11067.exp 11 Mar 2010 15:20:45 -0000
@@ -0,0 +1,28 @@
+# Copyright 2010 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 testfile pr11067
+set srcfile ${testfile}.c
+if [prepare_for_testing $testfile.exp $testfile $srcfile {debug}] {
+ return -1
+}
+
+if ![runto_main] then {
+ fail "Can't run to main"
+ return
+}
+
+gdb_test "p /f tf" "T1 = \\(enum tt\\)1.*"
+gdb_test "p /f ef" "E2 = \\(enum <anonymous>\\)2.*"
[-- Attachment #3: pr11067-check.diff --]
[-- Type: text/x-patch, Size: 1475 bytes --]
--- ../../../gdb-virgin.sum 2010-03-09 21:36:05.994326240 -0500
+++ gdb.sum 2010-03-11 10:26:51.188200869 -0500
@@ -1,4 +1,4 @@
-Test Run By moller on Tue Mar 9 19:14:09 2010
+Test Run By moller on Thu Mar 11 10:18:45 2010
Native configuration is i686-pc-linux-gnu
=== gdb tests ===
@@ -5703,6 +5703,9 @@
PASS: gdb.base/pr11022.exp: breakpoint hit 2
PASS: gdb.base/pr11022.exp: set var x = 1
PASS: gdb.base/pr11022.exp: watchpoint hit 2
+Running ../../../src/gdb/testsuite/gdb.base/pr11067.exp ...
+PASS: gdb.base/pr11067.exp: p /f tf
+PASS: gdb.base/pr11067.exp: p /f ef
Running ../../../src/gdb/testsuite/gdb.base/prelink.exp ...
PASS: gdb.base/prelink.exp: set verbose on
PASS: gdb.base/prelink.exp: prelink
@@ -16058,7 +16061,7 @@
PASS: gdb.threads/watchthreads2.exp: all threads started
PASS: gdb.threads/watchthreads2.exp: watch x
PASS: gdb.threads/watchthreads2.exp: set var test_ready = 1
-PASS: gdb.threads/watchthreads2.exp: all threads incremented x
+KFAIL: gdb.threads/watchthreads2.exp: gdb can drop watchpoints in multithreaded app (PRMS: gdb/10116)
Running ../../../src/gdb/testsuite/gdb.trace/actions.exp ...
PASS: gdb.trace/actions.exp: 5.1a: set three tracepoints, no actions
PASS: gdb.trace/actions.exp: 5.1b: set actions for first tracepoint
@@ -16259,7 +16262,7 @@
=== gdb Summary ===
-# of expected passes 15452
+# of expected passes 15453
# of unexpected failures 16
# of expected failures 43
# of untested testcases 3
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2010-03-11 15:44 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-11 2:55 pr 11067 patch Chris Moller
2010-02-11 9:30 ` Joel Brobecker
2010-02-11 14:19 ` Chris Moller
2010-02-11 19:50 ` Tom Tromey
2010-02-12 4:11 ` Joel Brobecker
2010-02-12 15:48 ` Chris Moller
2010-02-13 11:49 ` Jan Kratochvil
2010-02-13 18:56 ` Chris Moller
2010-02-19 14:28 ` Joel Brobecker
2010-02-19 14:36 ` Jan Kratochvil
2010-02-19 14:45 ` Joel Brobecker
2010-02-19 14:54 ` Chris Moller
2010-02-19 18:50 ` Jan Kratochvil
2010-02-19 19:52 ` Chris Moller
2010-02-19 20:11 ` Jan Kratochvil
2010-02-22 9:22 ` Vladimir Prus
2010-02-23 23:55 ` Tom Tromey
2010-03-11 15:44 ` pr 11067 patch resurrected from the dead Chris Moller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox