From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Snyder To: gdb-patches@sources.redhat.com, fnasser@cygnus.com, vinschen@redhat.com Subject: [RFA] Further work on constvars.exp Date: Thu, 27 Sep 2001 13:56:00 -0000 Message-id: <3BB39277.F6EB2812@cygnus.com> X-SW-Source: 2001-09/msg00397.html Building on the start that Corinna Vinschen made -- 2001-09-27 Michael Snyder * lib/gdb.exp (test_debug_format): New proc. (setup_xfail_format): Use new proc test_debug_format. * gdb.base/constvars.exp (local_compiler_xfail_check): New proc; use new service proc test_debug_format. Replace all other "gcc_compiled" tests with this test. Index: lib/gdb.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v retrieving revision 1.12 diff -c -3 -p -r1.12 gdb.exp *** gdb.exp 2001/08/30 16:34:04 1.12 --- gdb.exp 2001/09/27 20:54:44 *************** proc get_debug_format { } { *** 1424,1438 **** # expected to fail, 0 otherwise (or if it is unknown). Must have # previously called get_debug_format. ! proc setup_xfail_format { format } { global debug_format if [string match $debug_format $format] then { - setup_xfail "*-*-*" return 1; } return 0 ! } proc gdb_step_for_stub { } { global gdb_prompt; --- 1424,1446 ---- # expected to fail, 0 otherwise (or if it is unknown). Must have # previously called get_debug_format. ! proc test_debug_format { format } { global debug_format if [string match $debug_format $format] then { return 1; } return 0 ! } ! ! proc setup_xfail_format { format } { ! set ret [test_debug_format format]; ! ! if [expr $ret != 0] then { ! setup_xfail "*-*-*" ! } ! return $ret; ! } proc gdb_step_for_stub { } { global gdb_prompt; Index: gdb.base/constvars.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/constvars.exp,v retrieving revision 1.5 diff -c -3 -p -r1.5 constvars.exp *** constvars.exp 2001/09/26 16:06:28 1.5 --- constvars.exp 2001/09/27 20:54:44 *************** if ![runto_main] then { *** 72,77 **** --- 72,90 ---- continue } + get_debug_format + + proc local_compiler_xfail_check { } { + global gcc_compiled; + + if {$gcc_compiled} then { + if { ![test_debug_format "HP"] \ + && ![test_debug_format "DWARF 2"] } then { + setup_xfail "*-*-*" + } + } + } + send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $" send_gdb "cont\n" *************** send_gdb "break marker1\n" ; gdb_expect *** 107,113 **** # test function parameters ! if {$gcc_compiled} then { setup_xfail "*-*-*" } send_gdb "ptype qux1\n" gdb_expect { -re "type = int \\(const char, const char, const char \\*, char \\* const\\).*$gdb_prompt $" { --- 120,126 ---- # test function parameters ! local_compiler_xfail_check send_gdb "ptype qux1\n" gdb_expect { -re "type = int \\(const char, const char, const char \\*, char \\* const\\).*$gdb_prompt $" { *************** gdb_expect { *** 120,127 **** # test vars and pointers proc do_constvar_tests {} { - global gcc_compiled - gdb_test "print lave" " = 66 'B'" gdb_test "ptype lave" "type = char" gdb_test "print lavish" " = 10 '\\\\n'" --- 133,138 ---- *************** proc do_constvar_tests {} { *** 129,264 **** gdb_test "print lax" " = 20" gdb_test "ptype lax" "type = short.*" gdb_test "print lecherous" " = 30" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lecherous" "type = (unsigned short|short unsigned)( int)?" gdb_test "print lechery" " = 40" gdb_test "ptype lechery" "type = long.*" gdb_test "print lectern" " = 50" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lectern" "type = (unsigned long|long unsigned)( int)?" gdb_test "print leeway" " = 60" gdb_test "ptype leeway" "type = float" gdb_test "print legacy" " = 70" gdb_test "ptype legacy" "type = double" gdb_test "print laconic" " = 65 'A'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype laconic" "type = const char" gdb_test "print laggard" " = 1 '.001'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype laggard" "type = const unsigned char" gdb_test "print lagoon" " = 2" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lagoon" "type = const short( int)?" gdb_test "print laity" " = 3" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype laity" "type = const (unsigned short|short unsigned)( int)?" gdb_test "print lambent" " = 4" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lambent" "type = const long( int)?" gdb_test "print laminated" " = 5" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype laminated" "type = const (unsigned long|long unsigned)( int)?" gdb_test "print lampoon" " = 6" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lampoon" "type = const float" gdb_test "print languid" " = 7" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype languid" "type = const double" gdb_test "print *legend" " = 66 'B'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype legend" "type = const char \\*" gdb_test "print *legerdemain" " = 10 '\\\\n'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype legerdemain" "type = const unsigned char \\*" gdb_test "print *leniency" " = 20" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype leniency" "type = const short( int)? \\*" gdb_test "print *leonine" " = 30" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype leonine" "type = const (unsigned short|short unsigned)( int)? \\*" gdb_test "print *lesion" " = 40" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lesion" "type = const long( int)? \\*" gdb_test "print *lethal" " = 50" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lethal" "type = const (unsigned long|long unsigned)( int)? \\*" gdb_test "print *lethargic" " = 60" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lethargic" "type = const float \\*" gdb_test "print *levity" " = 70" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype levity" "type = const double \\*" gdb_test "print *lewd" " = 65 'A'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lewd" "type = const char \\* const" gdb_test "print *lexicographer" " = 1 '.001'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lexicographer" "type = const unsigned char \\* const" gdb_test "print *lexicon" " = 2" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lexicon" "type = const short( int)? \\* const" gdb_test "print *liaison" " = 3" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype liaison" "type = const (unsigned short|short unsigned)( int)? \\* const" gdb_test "print *libation" " = 4" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype libation" "type = const long( int)? \\* const" gdb_test "print *libelous" " = 5" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype libelous" "type = const (unsigned long|long unsigned)( int)? \\* const" gdb_test "print *libertine" " = 6" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype libertine" "type = const float \\* const" gdb_test "print *libidinous" " = 7" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype libidinous" "type = const double \\* const" gdb_test "print *languish" " = 65 'A'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype languish" "type = const char \\*" gdb_test "print *languor" " = 1 '.001'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype languor" "type = const unsigned char \\*" gdb_test "print *lank" " = 2" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lank" "type = const short( int)? \\*" gdb_test "print *lapidary" " = 3" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lapidary" "type = const (unsigned short|short unsigned)( int)? \\*" gdb_test "print *larceny" " = 4" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype larceny" "type = const long( int)? \\*" gdb_test "print *largess" " = 5" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype largess" "type = const (unsigned long|long unsigned)( int)? \\*" gdb_test "print *lascivious" " = 6" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lascivious" "type = const float \\*" gdb_test "print *lassitude" " = 7" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lassitude" "type = const double \\*" gdb_test "print *lamprey" " = 66 'B'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lamprey" "type = char \\* const" gdb_test "print *lariat" " = 10 '\\\\n'" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lariat" "type = unsigned char \\* const" gdb_test "print *laudanum" " = 20" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype laudanum" "type = short( int)? \\* const" gdb_test "print *lecithin" " = 30" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lecithin" "type = (unsigned short|short unsigned)( int)? \\* const" gdb_test "print *leviathan" " = 40" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype leviathan" "type = long( int)? \\* const" gdb_test "print *libretto" " = 50" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype libretto" "type = (unsigned long|long unsigned)( int)? \\* const" gdb_test "print *lissome" " = 60" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype lissome" "type = float \\* const" gdb_test "print *locust" " = 70" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype locust" "type = double \\* const" } --- 140,276 ---- gdb_test "print lax" " = 20" gdb_test "ptype lax" "type = short.*" gdb_test "print lecherous" " = 30" ! local_compiler_xfail_check gdb_test "ptype lecherous" "type = (unsigned short|short unsigned)( int)?" gdb_test "print lechery" " = 40" gdb_test "ptype lechery" "type = long.*" gdb_test "print lectern" " = 50" ! local_compiler_xfail_check gdb_test "ptype lectern" "type = (unsigned long|long unsigned)( int)?" gdb_test "print leeway" " = 60" gdb_test "ptype leeway" "type = float" gdb_test "print legacy" " = 70" gdb_test "ptype legacy" "type = double" gdb_test "print laconic" " = 65 'A'" ! local_compiler_xfail_check gdb_test "ptype laconic" "type = const char" gdb_test "print laggard" " = 1 '.001'" ! local_compiler_xfail_check gdb_test "ptype laggard" "type = const unsigned char" gdb_test "print lagoon" " = 2" ! local_compiler_xfail_check gdb_test "ptype lagoon" "type = const short( int)?" gdb_test "print laity" " = 3" ! local_compiler_xfail_check gdb_test "ptype laity" "type = const (unsigned short|short unsigned)( int)?" gdb_test "print lambent" " = 4" ! local_compiler_xfail_check gdb_test "ptype lambent" "type = const long( int)?" gdb_test "print laminated" " = 5" ! local_compiler_xfail_check gdb_test "ptype laminated" "type = const (unsigned long|long unsigned)( int)?" gdb_test "print lampoon" " = 6" ! local_compiler_xfail_check gdb_test "ptype lampoon" "type = const float" gdb_test "print languid" " = 7" ! local_compiler_xfail_check gdb_test "ptype languid" "type = const double" gdb_test "print *legend" " = 66 'B'" ! local_compiler_xfail_check gdb_test "ptype legend" "type = const char \\*" gdb_test "print *legerdemain" " = 10 '\\\\n'" ! local_compiler_xfail_check gdb_test "ptype legerdemain" "type = const unsigned char \\*" gdb_test "print *leniency" " = 20" ! local_compiler_xfail_check gdb_test "ptype leniency" "type = const short( int)? \\*" gdb_test "print *leonine" " = 30" ! local_compiler_xfail_check gdb_test "ptype leonine" "type = const (unsigned short|short unsigned)( int)? \\*" gdb_test "print *lesion" " = 40" ! local_compiler_xfail_check gdb_test "ptype lesion" "type = const long( int)? \\*" gdb_test "print *lethal" " = 50" ! local_compiler_xfail_check gdb_test "ptype lethal" "type = const (unsigned long|long unsigned)( int)? \\*" gdb_test "print *lethargic" " = 60" ! local_compiler_xfail_check gdb_test "ptype lethargic" "type = const float \\*" gdb_test "print *levity" " = 70" ! local_compiler_xfail_check gdb_test "ptype levity" "type = const double \\*" gdb_test "print *lewd" " = 65 'A'" ! local_compiler_xfail_check gdb_test "ptype lewd" "type = const char \\* const" gdb_test "print *lexicographer" " = 1 '.001'" ! local_compiler_xfail_check gdb_test "ptype lexicographer" "type = const unsigned char \\* const" gdb_test "print *lexicon" " = 2" ! local_compiler_xfail_check gdb_test "ptype lexicon" "type = const short( int)? \\* const" gdb_test "print *liaison" " = 3" ! local_compiler_xfail_check gdb_test "ptype liaison" "type = const (unsigned short|short unsigned)( int)? \\* const" gdb_test "print *libation" " = 4" ! local_compiler_xfail_check gdb_test "ptype libation" "type = const long( int)? \\* const" gdb_test "print *libelous" " = 5" ! local_compiler_xfail_check gdb_test "ptype libelous" "type = const (unsigned long|long unsigned)( int)? \\* const" gdb_test "print *libertine" " = 6" ! local_compiler_xfail_check gdb_test "ptype libertine" "type = const float \\* const" gdb_test "print *libidinous" " = 7" ! local_compiler_xfail_check gdb_test "ptype libidinous" "type = const double \\* const" gdb_test "print *languish" " = 65 'A'" ! local_compiler_xfail_check gdb_test "ptype languish" "type = const char \\*" gdb_test "print *languor" " = 1 '.001'" ! local_compiler_xfail_check gdb_test "ptype languor" "type = const unsigned char \\*" gdb_test "print *lank" " = 2" ! local_compiler_xfail_check gdb_test "ptype lank" "type = const short( int)? \\*" gdb_test "print *lapidary" " = 3" ! local_compiler_xfail_check gdb_test "ptype lapidary" "type = const (unsigned short|short unsigned)( int)? \\*" gdb_test "print *larceny" " = 4" ! local_compiler_xfail_check gdb_test "ptype larceny" "type = const long( int)? \\*" gdb_test "print *largess" " = 5" ! local_compiler_xfail_check gdb_test "ptype largess" "type = const (unsigned long|long unsigned)( int)? \\*" gdb_test "print *lascivious" " = 6" ! local_compiler_xfail_check ! gdb_test "ptype lascivious" "type = const float \\*" gdb_test "print *lassitude" " = 7" ! local_compiler_xfail_check gdb_test "ptype lassitude" "type = const double \\*" gdb_test "print *lamprey" " = 66 'B'" ! local_compiler_xfail_check gdb_test "ptype lamprey" "type = char \\* const" gdb_test "print *lariat" " = 10 '\\\\n'" ! local_compiler_xfail_check gdb_test "ptype lariat" "type = unsigned char \\* const" gdb_test "print *laudanum" " = 20" ! local_compiler_xfail_check gdb_test "ptype laudanum" "type = short( int)? \\* const" gdb_test "print *lecithin" " = 30" ! local_compiler_xfail_check gdb_test "ptype lecithin" "type = (unsigned short|short unsigned)( int)? \\* const" gdb_test "print *leviathan" " = 40" ! local_compiler_xfail_check gdb_test "ptype leviathan" "type = long( int)? \\* const" gdb_test "print *libretto" " = 50" ! local_compiler_xfail_check gdb_test "ptype libretto" "type = (unsigned long|long unsigned)( int)? \\* const" gdb_test "print *lissome" " = 60" ! local_compiler_xfail_check gdb_test "ptype lissome" "type = float \\* const" gdb_test "print *locust" " = 70" ! local_compiler_xfail_check gdb_test "ptype locust" "type = double \\* const" } >From msnyder@cygnus.com Thu Sep 27 14:10:00 2001 From: Michael Snyder To: gdb-patches@sources.redhat.com Cc: fnasser@cygnus.com, vinschen@redhat.com Subject: [RFA] volatile.exp fix-ups Date: Thu, 27 Sep 2001 14:10:00 -0000 Message-id: <3BB395AC.6CC343C5@cygnus.com> X-SW-Source: 2001-09/msg00398.html Content-length: 11793 This extends the work that Corinna and I did on constvars.exp into volatile.exp (allowing the test to proceed if compiled with gcc and dwarf-2). Tested on Linux native with both stabs (xfail) and dwarf-2 (pass) 2001-09-27 Michael Snyder * gdb.base/volatile.exp (local_compiler_xfail_check): New proc; use new service proc test_debug_format. Replace all other "gcc_compiled" tests with this test. Index: gdb.base/volatile.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/volatile.exp,v retrieving revision 1.2 diff -c -3 -p -r1.2 volatile.exp *** volatile.exp 2001/03/06 08:21:51 1.2 --- volatile.exp 2001/09/27 21:07:48 *************** if ![runto_main] then { *** 79,84 **** --- 79,97 ---- continue } + get_debug_format + + proc local_compiler_xfail_check { } { + global gcc_compiled; + + if {$gcc_compiled} then { + if { ![test_debug_format "HP"] \ + && ![test_debug_format "DWARF 2"] } then { + setup_xfail "*-*-*" + } + } + } + send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $" send_gdb "cont\n" *************** send_gdb "break marker1\n" ; gdb_expect *** 105,244 **** # As of Feb 1999, GCC does not issue info about volatility of vars, so # these tests are all expected to fail if GCC is the compiler. -sts ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vox" "type = volatile char.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype victuals" "type = volatile unsigned char.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vixen" "type = volatile short.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype vitriol" "type = volatile unsigned short.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vellum" "type = volatile long.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype valve" "type = volatile unsigned long.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vacuity" "type = volatile float.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vertigo" "type = volatile double.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vampire" "type = volatile char \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype viper" "type = volatile unsigned char \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype vigour" "type = volatile short \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype vapour" "type = volatile unsigned short \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype ventricle" "type = volatile long \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype vigintillion" "type = volatile unsigned long \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vocation" "type = volatile float \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype veracity" "type = volatile double \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vapidity" "type = volatile char \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype velocity" "type = volatile unsigned char \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype veneer" "type = volatile short \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype video" "type = volatile unsigned short \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype vacuum" "type = volatile long \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } ! gdb_test "ptype veniality" "type = volatile unsigned long \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vitality" "type = volatile float \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype voracity" "type = volatile double \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype victor" "type = const volatile char.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vicar" "type = const volatile unsigned char.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype victory" "type = const volatile char \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vicarage" "type = const volatile unsigned char \\*.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vein" "type = volatile char \\* const.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vogue" "type = volatile unsigned char \\* const.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype cavern" "type = const volatile char \\* const.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype coverlet" "type = const volatile unsigned char \\* const.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype caveat" "type = const char \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype covenant" "type = const unsigned char \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vizier" "type = const volatile char \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vanadium" "type = const volatile unsigned char \\* volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vane" "type = char \\* const volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype veldt" "type = unsigned char \\* const volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype cove" "type = const char \\* const volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype cavity" "type = const unsigned char \\* const volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vagus" "type = volatile char \\* const volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vagrancy" "type = volatile unsigned char \\* const volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vagary" "type = const volatile char \\* const volatile.*" ! if {$gcc_compiled} then { setup_xfail "*-*-*" } gdb_test "ptype vendor" "type = const volatile unsigned char \\* const volatile.*" # test function parameters ! if {$gcc_compiled} then { setup_xfail "*-*-*" } send_gdb "ptype qux2\n" gdb_expect { -re "type = int \\(volatile unsigned char, const volatile int, volatile short, volatile long \\*, float \\* volatile, const volatile signed char \\* const volatile\\).*$gdb_prompt $" { --- 118,257 ---- # As of Feb 1999, GCC does not issue info about volatility of vars, so # these tests are all expected to fail if GCC is the compiler. -sts ! local_compiler_xfail_check gdb_test "ptype vox" "type = volatile char.*" ! local_compiler_xfail_check gdb_test "ptype victuals" "type = volatile unsigned char.*" ! local_compiler_xfail_check gdb_test "ptype vixen" "type = volatile short.*" ! local_compiler_xfail_check ! gdb_test "ptype vitriol" "type = volatile (unsigned short|short unsigned)( int)?.*" ! local_compiler_xfail_check gdb_test "ptype vellum" "type = volatile long.*" ! local_compiler_xfail_check ! gdb_test "ptype valve" "type = volatile (unsigned long|long unsigned)( int)?.*" ! local_compiler_xfail_check gdb_test "ptype vacuity" "type = volatile float.*" ! local_compiler_xfail_check gdb_test "ptype vertigo" "type = volatile double.*" ! local_compiler_xfail_check gdb_test "ptype vampire" "type = volatile char \\*.*" ! local_compiler_xfail_check gdb_test "ptype viper" "type = volatile unsigned char \\*.*" ! local_compiler_xfail_check ! gdb_test "ptype vigour" "type = volatile short( int)? \\*.*" ! local_compiler_xfail_check ! gdb_test "ptype vapour" "type = volatile (unsigned short|short unsigned)( int)? \\*.*" ! local_compiler_xfail_check ! gdb_test "ptype ventricle" "type = volatile long( int)? \\*.*" ! local_compiler_xfail_check ! gdb_test "ptype vigintillion" "type = volatile (unsigned long|long unsigned)( int)? \\*.*" ! local_compiler_xfail_check gdb_test "ptype vocation" "type = volatile float \\*.*" ! local_compiler_xfail_check gdb_test "ptype veracity" "type = volatile double \\*.*" ! local_compiler_xfail_check gdb_test "ptype vapidity" "type = volatile char \\* volatile.*" ! local_compiler_xfail_check gdb_test "ptype velocity" "type = volatile unsigned char \\* volatile.*" ! local_compiler_xfail_check ! gdb_test "ptype veneer" "type = volatile short( int)? \\* volatile.*" ! local_compiler_xfail_check ! gdb_test "ptype video" "type = volatile (unsigned short|short unsigned)( int) \\* volatile.*" ! local_compiler_xfail_check ! gdb_test "ptype vacuum" "type = volatile long( int)? \\* volatile.*" ! local_compiler_xfail_check ! gdb_test "ptype veniality" "type = volatile (unsigned long|long unsigned)( int)? \\* volatile.*" ! local_compiler_xfail_check gdb_test "ptype vitality" "type = volatile float \\* volatile.*" ! local_compiler_xfail_check gdb_test "ptype voracity" "type = volatile double \\* volatile.*" ! local_compiler_xfail_check gdb_test "ptype victor" "type = const volatile char.*" ! local_compiler_xfail_check gdb_test "ptype vicar" "type = const volatile unsigned char.*" ! local_compiler_xfail_check gdb_test "ptype victory" "type = const volatile char \\*.*" ! local_compiler_xfail_check gdb_test "ptype vicarage" "type = const volatile unsigned char \\*.*" ! local_compiler_xfail_check gdb_test "ptype vein" "type = volatile char \\* const.*" ! local_compiler_xfail_check gdb_test "ptype vogue" "type = volatile unsigned char \\* const.*" ! local_compiler_xfail_check gdb_test "ptype cavern" "type = const volatile char \\* const.*" ! local_compiler_xfail_check gdb_test "ptype coverlet" "type = const volatile unsigned char \\* const.*" ! local_compiler_xfail_check gdb_test "ptype caveat" "type = const char \\* volatile.*" ! local_compiler_xfail_check gdb_test "ptype covenant" "type = const unsigned char \\* volatile.*" ! local_compiler_xfail_check gdb_test "ptype vizier" "type = const volatile char \\* volatile.*" ! local_compiler_xfail_check gdb_test "ptype vanadium" "type = const volatile unsigned char \\* volatile.*" ! local_compiler_xfail_check gdb_test "ptype vane" "type = char \\* const volatile.*" ! local_compiler_xfail_check gdb_test "ptype veldt" "type = unsigned char \\* const volatile.*" ! local_compiler_xfail_check gdb_test "ptype cove" "type = const char \\* const volatile.*" ! local_compiler_xfail_check gdb_test "ptype cavity" "type = const unsigned char \\* const volatile.*" ! local_compiler_xfail_check gdb_test "ptype vagus" "type = volatile char \\* const volatile.*" ! local_compiler_xfail_check gdb_test "ptype vagrancy" "type = volatile unsigned char \\* const volatile.*" ! local_compiler_xfail_check gdb_test "ptype vagary" "type = const volatile char \\* const volatile.*" ! local_compiler_xfail_check gdb_test "ptype vendor" "type = const volatile unsigned char \\* const volatile.*" # test function parameters ! local_compiler_xfail_check send_gdb "ptype qux2\n" gdb_expect { -re "type = int \\(volatile unsigned char, const volatile int, volatile short, volatile long \\*, float \\* volatile, const volatile signed char \\* const volatile\\).*$gdb_prompt $" { >From msnyder@cygnus.com Thu Sep 27 14:11:00 2001 From: Michael Snyder To: gdb-patches@sources.redhat.com, dberlin@cgsoftware.com, jimb@redhat.com, taylor@candd.org Subject: Re: [RFA] Better parsing of const/volatile types Date: Thu, 27 Sep 2001 14:11:00 -0000 Message-id: <3BB395E7.345794D@cygnus.com> References: <3BAA9E22.EDF05C48@cygnus.com> X-SW-Source: 2001-09/msg00399.html Content-length: 7386 Michael Snyder wrote: > > These changes greatly increase GDB's ability to parse type expressions > containg 'const' and/or 'volatile'. For instance, we can now parse the > expression (const int * volatile * const *) foo. Having heard no objections, I will now check this in. > > I'm working on a new test script, which I'll submit separately. > > Michael > > ---------------------------------------------------------------------------------------------------- > Index: parse.c > =================================================================== > RCS file: /cvs/src/src/gdb/parse.c,v > retrieving revision 1.15 > diff -c -3 -p -r1.15 parse.c > *** parse.c 2001/08/01 18:39:23 1.15 > --- parse.c 2001/09/21 01:41:31 > *************** struct type * > *** 1255,1260 **** > --- 1256,1263 ---- > follow_types (struct type *follow_type) > { > int done = 0; > + int make_const = 0; > + int make_volatile = 0; > int array_size; > struct type *range_type; > > *************** follow_types (struct type *follow_type) > *** 1263,1274 **** > --- 1266,1305 ---- > { > case tp_end: > done = 1; > + if (make_const) > + follow_type = make_cv_type (make_const, > + TYPE_VOLATILE (follow_type), > + follow_type, 0); > + if (make_volatile) > + follow_type = make_cv_type (TYPE_CONST (follow_type), > + make_volatile, > + follow_type, 0); > break; > + case tp_const: > + make_const = 1; > + break; > + case tp_volatile: > + make_volatile = 1; > + break; > case tp_pointer: > follow_type = lookup_pointer_type (follow_type); > + if (make_const) > + follow_type = make_cv_type (make_const, > + TYPE_VOLATILE (follow_type), > + follow_type, 0); > + if (make_volatile) > + follow_type = make_cv_type (TYPE_CONST (follow_type), > + make_volatile, > + follow_type, 0); > + make_const = make_volatile = 0; > break; > case tp_reference: > follow_type = lookup_reference_type (follow_type); > + if (make_const) > + follow_type = make_cv_type (make_const, TYPE_VOLATILE (follow_type), follow_type, 0); > + if (make_volatile) > + follow_type = make_cv_type (TYPE_CONST (follow_type), make_volatile, follow_type, 0); > + make_const = make_volatile = 0; > break; > case tp_array: > array_size = pop_type_int (); > 2001-09-20 Michael Snyder > Changes by Daniel Berlin , to support > better parsing of const and volatile type expressions. > * c-exp.y (const_and_volatile, const_or_volatile_noopt, > const_or_volatile): New non-terminals. > (ptype): Use new rule for const_or_volatile. > (typebase): Use new rule for const_or_volatile_noopt. > * parser-defs.h (enum type_pieces): New values tp_const, tp_volatile. > * parse.c (follow_types): Handle tp_const and tp_volatile on the > type stack: call make_cv_type to create new const/volatile type. > > Index: parser-defs.h > =================================================================== > RCS file: /cvs/src/src/gdb/parser-defs.h,v > retrieving revision 1.4 > diff -c -3 -p -r1.4 parser-defs.h > *** parser-defs.h 2001/08/01 18:39:23 1.4 > --- parser-defs.h 2001/09/21 01:41:31 > *************** struct symtoken > *** 84,90 **** > An array should be preceded in the list by the size of the array. */ > enum type_pieces > { > ! tp_end = -1, tp_pointer, tp_reference, tp_array, tp_function > }; > /* The stack can contain either an enum type_pieces or an int. */ > union type_stack_elt > --- 84,96 ---- > An array should be preceded in the list by the size of the array. */ > enum type_pieces > { > ! tp_end = -1, > ! tp_pointer, > ! tp_reference, > ! tp_array, > ! tp_function, > ! tp_const, > ! tp_volatile > }; > /* The stack can contain either an enum type_pieces or an int. */ > union type_stack_elt > Index: c-exp.y > =================================================================== > RCS file: /cvs/src/src/gdb/c-exp.y,v > retrieving revision 1.4 > diff -c -3 -p -r1.4 c-exp.y > *** c-exp.y 2001/03/06 08:21:06 1.4 > --- c-exp.y 2001/09/21 01:41:31 > *************** variable: name_not_typename > *** 720,740 **** > > > ptype : typebase > ! /* "const" and "volatile" are curently ignored. A type qualifier > ! before the type is currently handled in the typebase rule. > ! The reason for recognizing these here (shift/reduce conflicts) > ! might be obsolete now that some pointer to member rules have > ! been deleted. */ > ! | typebase CONST_KEYWORD > ! | typebase VOLATILE_KEYWORD > ! | typebase abs_decl > { $$ = follow_types ($1); } > - | typebase CONST_KEYWORD abs_decl > - { $$ = follow_types ($1); } > - | typebase VOLATILE_KEYWORD abs_decl > - { $$ = follow_types ($1); } > ; > ! > abs_decl: '*' > { push_type (tp_pointer); $$ = 0; } > | '*' abs_decl > --- 720,741 ---- > > > ptype : typebase > ! | ptype const_or_volatile abs_decl const_or_volatile > { $$ = follow_types ($1); } > ; > ! const_and_volatile: CONST_KEYWORD VOLATILE_KEYWORD > ! | VOLATILE_KEYWORD CONST_KEYWORD > ! ; > ! const_or_volatile_noopt: const_and_volatile > ! { push_type (tp_const); push_type (tp_volatile);} > ! | CONST_KEYWORD > ! { push_type (tp_const);} > ! | VOLATILE_KEYWORD > ! { push_type (tp_volatile); } > ! ; > ! const_or_volatile: const_or_volatile_noopt > ! | > ! ; > abs_decl: '*' > { push_type (tp_pointer); $$ = 0; } > | '*' abs_decl > *************** typebase /* Implements (approximately): > *** 847,857 **** > { $$ = lookup_template_type(copy_name($2), $4, > expression_context_block); > } > ! /* "const" and "volatile" are curently ignored. A type qualifier > ! after the type is handled in the ptype rule. I think these could > ! be too. */ > ! | CONST_KEYWORD typebase { $$ = $2; } > ! | VOLATILE_KEYWORD typebase { $$ = $2; } > ; > > typename: TYPENAME > --- 848,855 ---- > { $$ = lookup_template_type(copy_name($2), $4, > expression_context_block); > } > ! | const_or_volatile_noopt typebase { $$ = follow_types ($2); } > ! | typebase const_or_volatile_noopt { $$ = follow_types ($1); } > ; > > typename: TYPENAME