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 + + 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 * 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 = ""; + + 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 + + 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 * 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 . */ + +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 . + +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 \\)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 \\)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"