* gdb.arch/i386-prologue.exp (skip_breakpoint): New function. Use
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / volatile.exp
index c17c05c40eb267ad15efcfe17e955a21c34cb7d3..c12e3d88eaefd7a3125844cb4c7a1858aa6322a9 100644 (file)
@@ -1,4 +1,4 @@
-#   Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+# Copyright 1997, 1998, 1999, 2003, 2004 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
@@ -43,17 +43,20 @@ if $tracelevel then {
 set prms_id 0
 set bug_id 0
 
+# Use the same test program constvars.c.
+
 set testfile "constvars"
 set srcfile ${testfile}.c
 set binfile ${objdir}/${subdir}/${testfile}
 
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+# Create and source the file that provides information about the compiler
+# used to compile the test case.
+if [get_compiler_info ${binfile}] {
+    return -1;
 }
 
-remote_exec build "rm -f ${binfile}.ci"
-if  [get_compiler_info ${binfile}] {
-    return -1
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable debug ] != "" } {
+     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
 }
 
 gdb_exit
@@ -61,8 +64,6 @@ gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
 gdb_load ${binfile}
 
-source ${binfile}.ci
-
 #
 # set it up at a breakpoint so we can play with the variable values
 #
@@ -71,6 +72,22 @@ if ![runto_main] then {
     continue
 }
 
+get_debug_format
+
+proc local_compiler_xfail_check { } {
+    if { [test_compiler_info gcc-2-*] } then {
+       if { ![test_debug_format "HP"] \
+               && ![test_debug_format "DWARF 2"] } then {
+           setup_xfail "*-*-*" 
+       }
+    }
+
+    global hp_cc_compiler
+    if { $hp_cc_compiler } {
+       setup_xfail "hppa*-*-hpux*"
+    }
+}
+
 send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $"
 
     send_gdb "cont\n"
@@ -94,323 +111,153 @@ send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $"
         timeout { fail "(timeout) continue to marker1"  }
     }
 
+# 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
 
-send_gdb "ptype vox\n"
-gdb_expect {
-    -re "type = volatile char.*$gdb_prompt $"  { pass "ptype vox" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vox" }
-    timeout             { fail "(timeout) ptype vox" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vox" "type = volatile char.*"
 
-send_gdb "ptype victuals\n"
-gdb_expect {
-    -re "type = volatile unsigned char.*$gdb_prompt $"  { pass "ptype victuals" }
-    -re ".*$gdb_prompt $"   {  fail "ptype victuals" }
-    timeout             { fail "(timeout) ptype victuals" }
-}
+local_compiler_xfail_check
+gdb_test "ptype victuals" "type = volatile unsigned char.*"
 
-send_gdb "ptype vixen\n"
-gdb_expect {
-    -re "type = volatile short.*$gdb_prompt $"  { pass "ptype vixen" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vixen" }
-    timeout             { fail "(timeout) ptype vixen" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vixen" "type = volatile short.*"
 
-send_gdb "ptype vitriol\n"
-gdb_expect {
-    -re "type = volatile unsigned short.*$gdb_prompt $"  { pass "ptype vitriol" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vitriol" }
-    timeout             { fail "(timeout) ptype vitriol" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vitriol" "type = volatile (unsigned short|short unsigned)( int)?.*"
 
-send_gdb "ptype vellum\n"
-gdb_expect {
-    -re "type = volatile long.*$gdb_prompt $"  { pass "ptype vellum" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vellum" }
-    timeout             { fail "(timeout) ptype vellum" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vellum" "type = volatile long.*"
 
-send_gdb "ptype valve\n"
-gdb_expect {
-    -re "type = volatile unsigned long.*$gdb_prompt $"  { pass "ptype valve" }
-    -re ".*$gdb_prompt $"   {  fail "ptype valve" }
-    timeout             { fail "(timeout) ptype valve" }
-}
+local_compiler_xfail_check
+gdb_test "ptype valve" "type = volatile (unsigned long|long unsigned)( int)?.*"
 
-send_gdb "ptype vacuity\n"
-gdb_expect {
-    -re "type = volatile float.*$gdb_prompt $"  { pass "ptype vacuity" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vacuity" }
-    timeout             { fail "(timeout) ptype vacuity" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vacuity" "type = volatile float.*"
 
-send_gdb "ptype vertigo\n"
-gdb_expect {
-    -re "type = volatile double.*$gdb_prompt $"  { pass "ptype vertigo" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vertigo" }
-    timeout             { fail "(timeout) ptype vertigo" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vertigo" "type = volatile double.*"
 
-send_gdb "ptype vampire\n"
-gdb_expect {
-    -re "type = volatile char \\*.*$gdb_prompt $"  { pass "ptype vampire" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vampire" }
-    timeout             { fail "(timeout) ptype vampire" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vampire" "type = volatile char \\*.*"
 
-send_gdb "ptype viper\n"
-gdb_expect {
-    -re "type = volatile unsigned char \\*.*$gdb_prompt $"  { pass "ptype viper" }
-    -re ".*$gdb_prompt $"   {  fail "ptype viper" }
-    timeout             { fail "(timeout) ptype viper" }
-}
+local_compiler_xfail_check
+gdb_test "ptype viper" "type = volatile unsigned char \\*.*"
 
-send_gdb "ptype vigour\n"
-gdb_expect {
-    -re "type = volatile short \\*.*$gdb_prompt $"  { pass "ptype vigour" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vigour" }
-    timeout             { fail "(timeout) ptype vigour" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vigour" "type = volatile short( int)? \\*.*"
 
-send_gdb "ptype vapour\n"
-gdb_expect {
-    -re "type = volatile unsigned short \\*.*$gdb_prompt $"  { pass "ptype vapour" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vapour" }
-    timeout             { fail "(timeout) ptype vapour" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vapour" "type = volatile (unsigned short|short unsigned)( int)? \\*.*"
 
-send_gdb "ptype ventricle\n"
-gdb_expect {
-    -re "type = volatile long \\*.*$gdb_prompt $"  { pass "ptype ventricle" }
-    -re ".*$gdb_prompt $"   {  fail "ptype ventricle" }
-    timeout             { fail "(timeout) ptype ventricle" }
-}
+local_compiler_xfail_check
+gdb_test "ptype ventricle" "type = volatile long( int)? \\*.*"
 
-send_gdb "ptype vigintillion\n"
-gdb_expect {
-    -re "type = volatile unsigned long \\*.*$gdb_prompt $"  { pass "ptype vigintillion" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vigintillion" }
-    timeout             { fail "(timeout) ptype vigintillion" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vigintillion" "type = volatile (unsigned long|long unsigned)( int)? \\*.*"
 
-send_gdb "ptype vocation\n"
-gdb_expect {
-    -re "type = volatile float \\*.*$gdb_prompt $"  { pass "ptype vocation" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vocation" }
-    timeout             { fail "(timeout) ptype vocation" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vocation" "type = volatile float \\*.*"
 
-send_gdb "ptype veracity\n"
-gdb_expect {
-    -re "type = volatile double \\*.*$gdb_prompt $"  { pass "ptype veracity" }
-    -re ".*$gdb_prompt $"   {  fail "ptype veracity" }
-    timeout             { fail "(timeout) ptype veracity" }
-}
+local_compiler_xfail_check
+gdb_test "ptype veracity" "type = volatile double \\*.*"
 
-send_gdb "ptype vapidity\n"
-gdb_expect {
-    -re "type = volatile char \\* volatile.*$gdb_prompt $"  { pass "ptype vapidity" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vapidity" }
-    timeout             { fail "(timeout) ptype vapidity" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vapidity" "type = volatile char \\* volatile.*"
 
-send_gdb "ptype velocity\n"
-gdb_expect {
-    -re "type = volatile unsigned char \\* volatile.*$gdb_prompt $"  { pass "ptype velocity" }
-    -re ".*$gdb_prompt $"   {  fail "ptype velocity" }
-    timeout             { fail "(timeout) ptype velocity" }
-}
+local_compiler_xfail_check
+gdb_test "ptype velocity" "type = volatile unsigned char \\* volatile.*"
 
-send_gdb "ptype veneer\n"
-gdb_expect {
-    -re "type = volatile short \\* volatile.*$gdb_prompt $"  { pass "ptype veneer" }
-    -re ".*$gdb_prompt $"   {  fail "ptype veneer" }
-    timeout             { fail "(timeout) ptype veneer" }
-}
+local_compiler_xfail_check
+gdb_test "ptype veneer" "type = volatile short( int)? \\* volatile.*"
 
-send_gdb "ptype video\n"
-gdb_expect {
-    -re "type = volatile unsigned short \\* volatile.*$gdb_prompt $"  { pass "ptype video" }
-    -re ".*$gdb_prompt $"   {  fail "ptype video" }
-    timeout             { fail "(timeout) ptype video" }
-}
+local_compiler_xfail_check
+gdb_test "ptype video" "type = volatile (unsigned short|short unsigned)( int) \\* volatile.*"
 
-send_gdb "ptype vacuum\n"
-gdb_expect {
-    -re "type = volatile long \\* volatile.*$gdb_prompt $"  { pass "ptype vacuum" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vacuum" }
-    timeout             { fail "(timeout) ptype vacuum" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vacuum" "type = volatile long( int)? \\* volatile.*"
 
-send_gdb "ptype veniality\n"
-gdb_expect {
-    -re "type = volatile unsigned long \\* volatile.*$gdb_prompt $"  { pass "ptype veniality" }
-    -re ".*$gdb_prompt $"   {  fail "ptype veniality" }
-    timeout             { fail "(timeout) ptype veniality" }
-}
+local_compiler_xfail_check
+gdb_test "ptype veniality" "type = volatile (unsigned long|long unsigned)( int)? \\* volatile.*"
 
-send_gdb "ptype vitality\n"
-gdb_expect {
-    -re "type = volatile float \\* volatile.*$gdb_prompt $"  { pass "ptype vitality" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vitality" }
-    timeout             { fail "(timeout) ptype vitality" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vitality" "type = volatile float \\* volatile.*"
 
-send_gdb "ptype voracity\n"
-gdb_expect {
-    -re "type = volatile double \\* volatile.*$gdb_prompt $"  { pass "ptype voracity" }
-    -re ".*$gdb_prompt $"   {  fail "ptype voracity" }
-    timeout             { fail "(timeout) ptype voracity" }
-}
+local_compiler_xfail_check
+gdb_test "ptype voracity" "type = volatile double \\* volatile.*"
 
-send_gdb "ptype victor\n"
-gdb_expect {
-    -re "type = const volatile char.*$gdb_prompt $"  { pass "ptype victor" }
-    -re ".*$gdb_prompt $"   {  fail "ptype victor" }
-    timeout             { fail "(timeout) ptype victor" }
-}
+local_compiler_xfail_check
+gdb_test "ptype victor" "type = const volatile char.*"
 
-send_gdb "ptype vicar\n"
-gdb_expect {
-    -re "type = const volatile unsigned char.*$gdb_prompt $"  { pass "ptype vicar" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vicar" }
-    timeout             { fail "(timeout) ptype vicar" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vicar" "type = const volatile unsigned char.*"
 
-send_gdb "ptype victory\n"
-gdb_expect {
-    -re "type = const volatile char \\*.*$gdb_prompt $"  { pass "ptype victory" }
-    -re ".*$gdb_prompt $"   {  fail "ptype victory" }
-    timeout             { fail "(timeout) ptype victory" }
-}
+local_compiler_xfail_check
+gdb_test "ptype victory" "type = const volatile char \\*.*"
 
-send_gdb "ptype vicarage\n"
-gdb_expect {
-    -re "type = const volatile unsigned char \\*.*$gdb_prompt $"  { pass "ptype vicarage" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vicarage" }
-    timeout             { fail "(timeout) ptype vicarage" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vicarage" "type = const volatile unsigned char \\*.*"
 
-send_gdb "ptype vein\n"
-gdb_expect {
-    -re "type = volatile char \\* const.*$gdb_prompt $"  { pass "ptype vein" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vein" }
-    timeout             { fail "(timeout) ptype vein" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vein" "type = volatile char \\* const.*"
 
-send_gdb "ptype vogue\n"
-gdb_expect {
-    -re "type = volatile unsigned char \\* const.*$gdb_prompt $"  { pass "ptype vogue" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vogue" }
-    timeout             { fail "(timeout) ptype vogue" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vogue" "type = volatile unsigned char \\* const.*"
 
-send_gdb "ptype cavern\n"
-gdb_expect {
-    -re "type = const volatile char \\* const.*$gdb_prompt $"  { pass "ptype cavern" }
-    -re ".*$gdb_prompt $"   {  fail "ptype cavern" }
-    timeout             { fail "(timeout) ptype cavern" }
-}
+local_compiler_xfail_check
+gdb_test "ptype cavern" "type = const volatile char \\* const.*"
 
-send_gdb "ptype coverlet\n"
-gdb_expect {
-    -re "type = const volatile unsigned char \\* const.*$gdb_prompt $"  { pass "ptype coverlet" }
-    -re ".*$gdb_prompt $"   {  fail "ptype coverlet" }
-    timeout             { fail "(timeout) ptype coverlet" }
-}
+local_compiler_xfail_check
+gdb_test "ptype coverlet" "type = const volatile unsigned char \\* const.*"
 
-send_gdb "ptype caveat\n"
-gdb_expect {
-    -re "type = const char \\* volatile.*$gdb_prompt $"  { pass "ptype caveat" }
-    -re ".*$gdb_prompt $"   {  fail "ptype caveat" }
-    timeout             { fail "(timeout) ptype caveat" }
-}
+local_compiler_xfail_check
+gdb_test "ptype caveat" "type = const char \\* volatile.*"
 
-send_gdb "ptype covenant\n"
-gdb_expect {
-    -re "type = const unsigned char \\* volatile.*$gdb_prompt $"  { pass "ptype covenant" }
-    -re ".*$gdb_prompt $"   {  fail "ptype covenant" }
-    timeout             { fail "(timeout) ptype covenant" }
-}
+local_compiler_xfail_check
+gdb_test "ptype covenant" "type = const unsigned char \\* volatile.*"
 
-send_gdb "ptype vizier\n"
-gdb_expect {
-    -re "type = const volatile char \\* volatile.*$gdb_prompt $"  { pass "ptype vizier" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vizier" }
-    timeout             { fail "(timeout) ptype vizier" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vizier" "type = const volatile char \\* volatile.*"
 
-send_gdb "ptype vanadium\n"
-gdb_expect {
-    -re "type = const volatile unsigned char \\* volatile.*$gdb_prompt $"  { pass "ptype vanadium" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vanadium" }
-    timeout             { fail "(timeout) ptype vanadium" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vanadium" "type = const volatile unsigned char \\* volatile.*"
 
-send_gdb "ptype vane\n"
-gdb_expect {
-    -re "type = char \\* const volatile.*$gdb_prompt $"  { pass "ptype vane" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vane" }
-    timeout             { fail "(timeout) ptype vane" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vane" "type = char \\* const volatile.*"
 
-send_gdb "ptype veldt\n"
-gdb_expect {
-    -re "type = unsigned char \\* const volatile.*$gdb_prompt $"  { pass "ptype veldt" }
-    -re ".*$gdb_prompt $"   {  fail "ptype veldt" }
-    timeout             { fail "(timeout) ptype veldt" }
-}
+local_compiler_xfail_check
+gdb_test "ptype veldt" "type = unsigned char \\* const volatile.*"
 
-send_gdb "ptype cove\n"
-gdb_expect {
-    -re "type = const char \\* const volatile.*$gdb_prompt $"  { pass "ptype cove" }
-    -re ".*$gdb_prompt $"   {  fail "ptype cove" }
-    timeout             { fail "(timeout) ptype cove" }
-}
+local_compiler_xfail_check
+gdb_test "ptype cove" "type = const char \\* const volatile.*"
 
-send_gdb "ptype cavity\n"
-gdb_expect {
-    -re "type = const unsigned char \\* const volatile.*$gdb_prompt $"  { pass "ptype cavity" }
-    -re ".*$gdb_prompt $"   {  fail "ptype cavity" }
-    timeout             { fail "(timeout) ptype cavity" }
-}
+local_compiler_xfail_check
+gdb_test "ptype cavity" "type = const unsigned char \\* const volatile.*"
 
-send_gdb "ptype vagus\n"
-gdb_expect {
-    -re "type = volatile char \\* const volatile.*$gdb_prompt $"  { pass "ptype vagus" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vagus" }
-    timeout             { fail "(timeout) ptype vagus" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vagus" "type = volatile char \\* const volatile.*"
 
-send_gdb "ptype vagrancy\n"
-gdb_expect {
-    -re "type = volatile unsigned char \\* const volatile.*$gdb_prompt $"  { pass "ptype vagrancy" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vagrancy" }
-    timeout             { fail "(timeout) ptype vagrancy" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vagrancy" "type = volatile unsigned char \\* const volatile.*"
 
-send_gdb "ptype vagary\n"
-gdb_expect {
-    -re "type = const volatile char \\* const volatile.*$gdb_prompt $"  { pass "ptype vagary" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vagary" }
-    timeout             { fail "(timeout) ptype vagary" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vagary" "type = const volatile char \\* const volatile.*"
 
-send_gdb "ptype vendor\n"
-gdb_expect {
-    -re "type = const volatile unsigned char \\* const volatile.*$gdb_prompt $"  { pass "ptype vendor" }
-    -re ".*$gdb_prompt $"   {  fail "ptype vendor" }
-    timeout             { fail "(timeout) ptype vendor" }
-}
+local_compiler_xfail_check
+gdb_test "ptype vendor" "type = const volatile unsigned char \\* const volatile.*"
 
 # test function parameters
+local_compiler_xfail_check
+if { [test_compiler_info gcc-3-*] && [test_debug_format "stabs"] } then {
+    # For reasons unknown, GCC 3 with stabs mangles several cv-qualified
+    # arguments to this function.
+    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\\)" {
+    -re "type = int \\(volatile unsigned char, const volatile int, volatile short( int)?, volatile long( int)? \\*, float \\* volatile, const volatile signed char \\* const volatile\\).*$gdb_prompt $" {
         pass "ptype qux2"
     }
     -re ".*$gdb_prompt $" { fail "ptype qux2" }
     timeout           { fail "(timeout) ptype qux2" }
   }   
-
-
This page took 0.027828 seconds and 4 git commands to generate.