gdb patch for 64-bit enum values on 64-bit hosts (ia64-linux)

Elena Zannoni ezannoni@cygnus.com
Thu Jun 15 20:05:00 GMT 2000


Michael Snyder writes:
 > Elena Zannoni wrote:
 > > 
 > > Jim Wilson writes:
 > > 
 > > Jim, any chance you could turn the tests into a gdb testfile? 
 > 
 > Elena, 
 > 
 > I thought I would take a stab at it.  Seemed like it might
 > belong in exprs.exp.  I noticed that exprs.exp seems kind of
 > unfinished -- it sets up as if to do some enum tests, but 
 > doesn't actually do them!  So I added some, including some
 > for long enums.  See below.  You approve?

If they pass, yes :-)

 > 
 > Unfortunately I don't have Jim's compiler patch, so I can't
 > test my tests.  Jim, can you test them for me?
 > 

Anybody tried?

Elena


 > 2000-06-14  Michael Snyder  <msnyder@seadog.cygnus.com>
 > 
 >         * gdb.base/exprs.exp: Add tests for enum expressions.
 >         * gdb.base/exprs.c: Ditto.
 > Index: exprs.c
 > ===================================================================
 > RCS file: /cvs/src/src/gdb/testsuite/gdb.base/exprs.c,v
 > retrieving revision 1.1.1.2
 > diff -p -r1.1.1.2 exprs.c
 > *** exprs.c	1999/06/28 16:03:11	1.1.1.2
 > --- exprs.c	2000/06/15 00:52:29
 > *************** union tu_link {
 > *** 183,189 ****
 > --- 183,202 ----
 >   
 >   enum colors {red, green, blue} color;
 >   enum cars {chevy, ford, porsche} clunker;
 > + enum neg_colors {cyan = -3, magenta = -2, yellow = -1, black = 0} pigment;
 >   
 > + enum long_colors {
 > +   mauve = 0x1000000000000000L,
 > +   puce  = 0x1000000000000001L,
 > +   teal  = 0x1000000000000002L
 > + } shade;
 > + 
 > + enum neg_long_colors {
 > +   orange = -3L,
 > +   purple = -2L,
 > +   brown  = -1L,
 > +   white  = 0L
 > + } hue;
 >   
 >   void dummy()
 >   {
 > *************** void dummy()
 > *** 246,251 ****
 > --- 259,267 ----
 >   
 >     color = red;
 >     clunker = porsche;
 > +   pigment = magenta;
 > +   shade = puce;
 > +   hue = purple;
 >   
 >     u_link.next = s_link;
 >   
 > Index: exprs.exp
 > ===================================================================
 > RCS file: /cvs/src/src/gdb/testsuite/gdb.base/exprs.exp,v
 > retrieving revision 1.1.1.2
 > diff -p -r1.1.1.2 exprs.exp
 > *** exprs.exp	1999/06/28 16:03:12	1.1.1.2
 > --- exprs.exp	2000/06/15 00:52:29
 > *************** proc test_expr { args } {
 > *** 60,65 ****
 > --- 60,66 ----
 >       }
 >       set last_ent [expr [llength $args] - 1];
 >       set testname [lindex $args $last_ent];
 > +     # FIXME: this test does NOT detect failure of the assignment (setup).
 >       if [gdb_test [lindex $args 0] "" "$testname (setup)"] {
 >   	gdb_suppress_tests;
 >       }
 > *************** test_expr "set variable v_unsigned_long=
 > *** 215,217 ****
 > --- 216,386 ----
 >   test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long != 0" "\\$\[0-9\]* = $true"  "print v_unsigned_long != (unsigned long)~0" "\\$\[0-9\]* = $false"  "print unsigned long != (~0)"
 >   test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long < 0" "\\$\[0-9\]* = $false"  "print v_unsigned_long < 0x7FFF" "\\$\[0-9\]* = $false"  "print unsigned long < (~0)"
 >   test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long > 0" "\\$\[0-9\]* = $true"  "print v_unsigned_long > 0x7FFF" "\\$\[0-9\]* = $true"  "print unsigned long > (~0)"
 > + #
 > + # test expressions with "enum color" types
 > + #
 > + test_expr "set variable color=green" \
 > + 	"print color == red"   "\\$\[0-9\]* = $false" \
 > + 	"print color == green" "\\$\[0-9\]* = $true" \
 > + 	"print color == blue"  "\\$\[0-9\]* = $false" \
 > + 	"print color == enum"
 > + test_expr "set variable color=1" \
 > + 	"print color == 0" "\\$\[0-9\]* = $false" \
 > + 	"print color == 1" "\\$\[0-9\]* = $true" \
 > + 	"print color == 2" "\\$\[0-9\]* = $false" \
 > + 	"print color == int"
 > + test_expr "set variable color=green" \
 > + 	"print color != red"   "\\$\[0-9\]* = $true" \
 > + 	"print color != green" "\\$\[0-9\]* = $false" \
 > + 	"print color != blue"  "\\$\[0-9\]* = $true" \
 > + 	"print color != enum"
 > + test_expr "set variable color=1" \
 > + 	"print color != 0" "\\$\[0-9\]* = $true" \
 > + 	"print color != 1" "\\$\[0-9\]* = $false" \
 > + 	"print color != 2" "\\$\[0-9\]* = $true" \
 > + 	"print color != int"
 > + test_expr "set variable color=green" \
 > + 	"print color > red"   "\\$\[0-9\]* = $true" \
 > + 	"print color > green" "\\$\[0-9\]* = $false" \
 > + 	"print color > blue"  "\\$\[0-9\]* = $false" \
 > + 	"print color > enum"
 > + test_expr "set variable color=1" \
 > + 	"print color > 0" "\\$\[0-9\]* = $true" \
 > + 	"print color > 1" "\\$\[0-9\]* = $false" \
 > + 	"print color > 2" "\\$\[0-9\]* = $false" \
 > + 	"print color > int"
 > + test_expr "set variable color=green" \
 > + 	"print color < red"   "\\$\[0-9\]* = $false" \
 > + 	"print color < green" "\\$\[0-9\]* = $false" \
 > + 	"print color < blue"  "\\$\[0-9\]* = $true" \
 > + 	"print color < enum"
 > + test_expr "set variable color=1" \
 > + 	"print color < 0" "\\$\[0-9\]* = $false" \
 > + 	"print color < 1" "\\$\[0-9\]* = $false" \
 > + 	"print color < 2" "\\$\[0-9\]* = $true" \
 > + 	"print color < int"
 > + # make enum a minus
 > + test_expr "set variable pigment=magenta" \
 > + 	"print pigment == cyan"    "\\$\[0-9\]* = $false" \
 > + 	"print pigment == magenta" "\\$\[0-9\]* = $true" \
 > + 	"print pigment == black"   "\\$\[0-9\]* = $false" \
 > + 	"print pigment == enum"
 > + test_expr "set variable pigment=-2" \
 > + 	"print pigment == -3" "\\$\[0-9\]* = $false" \
 > + 	"print pigment == -2" "\\$\[0-9\]* = $true" \
 > + 	"print pigment == 0"  "\\$\[0-9\]* = $false" \
 > + 	"print pigment == int"
 > + test_expr "set variable pigment=magenta" \
 > + 	"print pigment != cyan"    "\\$\[0-9\]* = $true" \
 > + 	"print pigment != magenta" "\\$\[0-9\]* = $false" \
 > + 	"print pigment != black"   "\\$\[0-9\]* = $true" \
 > + 	"print pigment != enum"
 > + test_expr "set variable pigment=-2" \
 > + 	"print pigment != -3" "\\$\[0-9\]* = $true" \
 > + 	"print pigment != -2" "\\$\[0-9\]* = $false" \
 > + 	"print pigment != 0"  "\\$\[0-9\]* = $true" \
 > + 	"print pigment != int"
 > + test_expr "set variable pigment=magenta" \
 > + 	"print pigment > cyan"    "\\$\[0-9\]* = $true" \
 > + 	"print pigment > magenta" "\\$\[0-9\]* = $false" \
 > + 	"print pigment > black"   "\\$\[0-9\]* = $false" \
 > + 	"print pigment > enum"
 > + test_expr "set variable pigment=-2" \
 > + 	"print pigment > -3" "\\$\[0-9\]* = $true" \
 > + 	"print pigment > -2" "\\$\[0-9\]* = $false" \
 > + 	"print pigment > 0"  "\\$\[0-9\]* = $false" \
 > + 	"print pigment > int"
 > + test_expr "set variable pigment=magenta" \
 > + 	"print pigment < cyan"    "\\$\[0-9\]* = $false" \
 > + 	"print pigment < magenta" "\\$\[0-9\]* = $false" \
 > + 	"print pigment < black"   "\\$\[0-9\]* = $true" \
 > + 	"print pigment < enum"
 > + test_expr "set variable pigment=-2" \
 > + 	"print pigment < -3" "\\$\[0-9\]* = $false" \
 > + 	"print pigment < -2" "\\$\[0-9\]* = $false" \
 > + 	"print pigment < 0"  "\\$\[0-9\]* = $true" \
 > + 	"print pigment < int"
 > + #
 > + # test expressions with "long enum" types
 > + #
 > + test_expr "set variable shade=puce" \
 > + 	"print shade == mauve" "\\$\[0-9\]* = $false" \
 > + 	"print shade == puce"  "\\$\[0-9\]* = $true" \
 > + 	"print shade == teal"  "\\$\[0-9\]* = $false" \
 > + 	"print shade == enum"
 > + test_expr "set variable shade=0x1000000000000001L" \
 > + 	"print shade == 0x1000000000000000L" "\\$\[0-9\]* = $false" \
 > + 	"print shade == 0x1000000000000001L" "\\$\[0-9\]* = $true" \
 > + 	"print shade == 0x1000000000000002L" "\\$\[0-9\]* = $false" \
 > + 	"print shade == int"
 > + test_expr "set variable shade=puce" \
 > + 	"print shade != mauve" "\\$\[0-9\]* = $true" \
 > + 	"print shade != puce"  "\\$\[0-9\]* = $false" \
 > + 	"print shade != teal"  "\\$\[0-9\]* = $true" \
 > + 	"print shade != enum"
 > + test_expr "set variable shade=0x1000000000000001L" \
 > + 	"print shade != 0x1000000000000000L" "\\$\[0-9\]* = $true" \
 > + 	"print shade != 0x1000000000000001L" "\\$\[0-9\]* = $false" \
 > + 	"print shade != 0x1000000000000002L" "\\$\[0-9\]* = $true" \
 > + 	"print shade != int"
 > + test_expr "set variable shade=puce" \
 > + 	"print shade > mauve" "\\$\[0-9\]* = $true" \
 > + 	"print shade > puce"  "\\$\[0-9\]* = $false" \
 > + 	"print shade > teal"  "\\$\[0-9\]* = $false" \
 > + 	"print shade > enum"
 > + test_expr "set variable shade=0x1000000000000001L" \
 > + 	"print shade > 0x1000000000000000L" "\\$\[0-9\]* = $true" \
 > + 	"print shade > 0x1000000000000001L" "\\$\[0-9\]* = $false" \
 > + 	"print shade > 0x1000000000000002L" "\\$\[0-9\]* = $false" \
 > + 	"print shade > int"
 > + test_expr "set variable shade=puce" \
 > + 	"print shade < mauve" "\\$\[0-9\]* = $false" \
 > + 	"print shade < puce"  "\\$\[0-9\]* = $false" \
 > + 	"print shade < teal"  "\\$\[0-9\]* = $true" \
 > + 	"print shade < enum"
 > + test_expr "set variable shade=0x1000000000000001L" \
 > + 	"print shade < 0x1000000000000000L" "\\$\[0-9\]* = $false" \
 > + 	"print shade < 0x1000000000000001L" "\\$\[0-9\]* = $false" \
 > + 	"print shade < 0x1000000000000002L" "\\$\[0-9\]* = $true" \
 > + 	"print shade < int"
 > + # make enum a minus
 > + test_expr "set variable hue=purple" \
 > + 	"print hue == orange" "\\$\[0-9\]* = $false" \
 > + 	"print hue == purple" "\\$\[0-9\]* = $true" \
 > + 	"print hue == white"  "\\$\[0-9\]* = $false" \
 > + 	"print hue == enum"
 > + test_expr "set variable hue=-2L" \
 > + 	"print hue == -3" "\\$\[0-9\]* = $false" \
 > + 	"print hue == -2" "\\$\[0-9\]* = $true" \
 > + 	"print hue == 0"  "\\$\[0-9\]* = $false" \
 > + 	"print hue == int"
 > + test_expr "set variable hue=purple" \
 > + 	"print hue != orange" "\\$\[0-9\]* = $true" \
 > + 	"print hue != purple" "\\$\[0-9\]* = $false" \
 > + 	"print hue != white"  "\\$\[0-9\]* = $true" \
 > + 	"print hue != enum"
 > + test_expr "set variable hue=-2L" \
 > + 	"print hue != -3L" "\\$\[0-9\]* = $true" \
 > + 	"print hue != -2L" "\\$\[0-9\]* = $false" \
 > + 	"print hue != 0L"  "\\$\[0-9\]* = $true" \
 > + 	"print hue != int"
 > + test_expr "set variable hue=purple" \
 > + 	"print hue > orange" "\\$\[0-9\]* = $true" \
 > + 	"print hue > purple" "\\$\[0-9\]* = $false" \
 > + 	"print hue > white"  "\\$\[0-9\]* = $false" \
 > + 	"print hue > enum"
 > + test_expr "set variable hue=-2L" \
 > + 	"print hue > -3L" "\\$\[0-9\]* = $true" \
 > + 	"print hue > -2L" "\\$\[0-9\]* = $false" \
 > + 	"print hue > 0L"  "\\$\[0-9\]* = $false" \
 > + 	"print hue > int"
 > + test_expr "set variable hue=purple" \
 > + 	"print hue < orange" "\\$\[0-9\]* = $false" \
 > + 	"print hue < purple" "\\$\[0-9\]* = $false" \
 > + 	"print hue < white"  "\\$\[0-9\]* = $true" \
 > + 	"print hue < enum"
 > + test_expr "set variable hue=-2L" \
 > + 	"print hue < -3L" "\\$\[0-9\]* = $false" \
 > + 	"print hue < -2L" "\\$\[0-9\]* = $false" \
 > + 	"print hue < 0L"  "\\$\[0-9\]* = $true" \
 > + 	"print hue < int"


More information about the Gdb-patches mailing list