# Copyright 1998, 1999, 2000 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu


# This file is part of the gdb testsuite
# file written by Elena Zannoni (ezannoni@cygnus.com)

#
# tests for expressions with struct/array elements and mixed operator types
# with elementary types
# 

if $tracelevel then {
        strace $tracelevel
        }

# By default, the datastructures are allocated on the stack.  For targets
# with very small stack, that will not work.  In that case, just set
# storage to `-DSTORAGE=static' which changes the datastructures to be
# allocated in data segment.
set storage "-DSTORAGE="
if [target_info exists gdb,small_stack_section] {
    set storage "-DSTORAGE=static"
}

set additional_flags "additional_flags=-w ${storage}"

#
# test running programs
#
set prms_id 0
set bug_id 0

set testfile "miscexprs"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug ${additional_flags}]] != "" } {
    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

if [get_compiler_info ${binfile}] {
    return -1;
}

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}


#
# set it up at a breakpoint so we can play with the variable values
#
if ![runto_main] then {
    perror "couldn't run to breakpoint"
    continue
}

send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $"

    send_gdb "cont\n"
    gdb_expect {
        -re "Break.* marker1 \\(\\) at .*:$decimal.*$gdb_prompt $" {
            send_gdb "up\n"
            gdb_expect {
		-re ".*main.*$gdb_prompt $" {
		    pass "up from marker1"
		}
                -re ".*$gdb_prompt $" {
		    fail "up from marker1"
		}
                timeout { fail "up from marker1 (timeout)" }
            }
        }
        -re "$gdb_prompt $" { fail "continue to marker1"  }
        timeout { fail "(timeout) continue to marker1"  }
    }

global hex

send_gdb "print &ibig.i\[0\]\n"
gdb_expect {
    -re ".\[0-9\]* = \\(int \\*\\) $hex.*$gdb_prompt $" {
        pass "print value of &ibig.i\[0\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of &ibig.i\[0\]" }
    timeout           { fail "(timeout) print value of &ibig.i\[0\]" }
  }

send_gdb "print &cbig.c\[0\]\n"
gdb_expect {
    -re ".\[0-9\]* = $hex \"\".*$gdb_prompt $" {
        pass "print value of &cbig.c\[0\]"
      }
    -re ".\[0-9\]* = $hex \"*\".*$gdb_prompt $" {
        pass "print value of &cbig.c\[0\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of &cbig.c\[0\]" }
    timeout           { fail "(timeout) print value of &cbig.c\[0\]" }
  }

send_gdb "print &fbig.f\[0\]\n"
gdb_expect {
    -re ".\[0-9\]* = \\(float \\*\\) $hex.*$gdb_prompt $" {
        pass "print value of &fbig.f\[0\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of &fbig.f\[0\]" }
    timeout           { fail "(timeout) print value of &fbig.f\[0\]" }
  }

send_gdb "print &dbig.d\[0\]\n"
gdb_expect {
    -re ".\[0-9\]* = \\(double \\*\\) $hex.*$gdb_prompt $" {
        pass "print value of &dbig.d\[0\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of &dbig.d\[0\]" }
    timeout           { fail "(timeout) print value of &dbig.d\[0\]" }
  }

send_gdb "print &sbig.s\[0\]\n"
gdb_expect {
    -re ".\[0-9\]* = \\(short \\*\\) $hex.*$gdb_prompt $" {
        pass "print value of &sbig.s\[0\]"
    }
    -re ".\[0-9\]* = \\(short int \\*\\) $hex.*$gdb_prompt $" {
        pass "print value of &sbig.s\[0\]"
    }
    -re ".*$gdb_prompt $" { fail "print value of &sbig.s\[0\]" }
    timeout           { fail "(timeout) print value of &sbig.s\[0\]" }
  }

send_gdb "print &lbig.l\[0\]\n"
gdb_expect {
    -re ".\[0-9\]* = \\(long \\*\\) $hex.*$gdb_prompt $" {
        pass "print value of &lbig.l\[0\]"
    }
    -re ".\[0-9\]* = \\(long int \\*\\) $hex.*$gdb_prompt $" {
        pass "print value of &lbig.l\[0\]"
    }
    -re ".*$gdb_prompt $" { fail "print value of &lbig.l\[0\]" }
    timeout           { fail "(timeout) print value of &lbig.l\[0\]" }
  }


send_gdb "print ibig.i\[100\] | 1\n"
gdb_expect {
    -re ".\[0-9\]* = 5.*$gdb_prompt $" {
        pass "print value of ibig.i\[100\] | 1"
      }
    -re ".*$gdb_prompt $" { fail "print value of ibig.i\[100\] | 1" }
    timeout           { fail "(timeout) print value of ibig.i\[100\] | 1" }
  }


send_gdb "print sbig.s\[90\] & 127\n"
gdb_expect {
    -re ".\[0-9\]* = 127.*$gdb_prompt $" {
        pass "print value of sbig.s\[90\] & 127"
      }
    -re ".*$gdb_prompt $" { fail "print value of sbig.s\[90\] & 127" }
    timeout           { fail "(timeout) print value of sbig.s\[90\] & 127" }
  }

send_gdb "print !ibig.i\[100\]\n"
gdb_expect {
    -re ".\[0-9\]* = $false.*$gdb_prompt $" {
        pass "print value of !ibig.i\[100\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of !ibig.i\[100\]" }
    timeout           { fail "(timeout) print value of !ibig.i\[100\]" }
  }

send_gdb "print !sbig.s\[90\]\n"
gdb_expect {
    -re ".\[0-9\]* = $false.*$gdb_prompt $" {
        pass "print value of !sbig.s\[90\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of !sbig.s\[90\]" }
    timeout           { fail "(timeout) print value of !sbig.s\[90\]" }
  }


send_gdb "print !fbig.f\[100\]\n"
gdb_expect {
    -re ".\[0-9\]* = $false.*$gdb_prompt $" {
        pass "print value of !ibig.i\[100\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of !ibig.i\[100\]" }
    timeout           { fail "(timeout) print value of !ibig.i\[100\]" }
  }

send_gdb "print !dbig.d\[202\]\n"
gdb_expect {
    -re ".\[0-9\]* = $false.*$gdb_prompt $" {
        pass "print value of !ibig.i\[100\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of !ibig.i\[100\]" }
    timeout           { fail "(timeout) print value of !ibig.i\[100\]" }
  }



send_gdb "print sbig.s\[90\] * 10\n"
gdb_expect {
    -re ".\[0-9\]* = 2550.*$gdb_prompt $" {
        pass "print value of !sbig.s\[90\] * 10"
      }
    -re ".*$gdb_prompt $" { fail "print value of !sbig.s\[90\] * 10" }
    timeout           { fail "(timeout) print value of !sbig.s\[90\] * 10" }
  }

send_gdb "print ibig.i\[100\] * sbig.s\[90\]\n"
gdb_expect {
    -re ".\[0-9\]* = 1275.*$gdb_prompt $" {
        pass "print value of ibig.i\[100\] * sbig.s\[90\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of ibig.i\[100\] * sbig.s\[90\]" }
    timeout           { fail "(timeout) print value of ibig.i\[100\] * sbig.s\[90\]" }
  }

send_gdb "print fbig.f\[100\] * dbig.d\[202\]\n"
gdb_expect {
    -re ".\[0-9\]* = 119.99\[0-9\]*.*$gdb_prompt $" {
        pass "print value of fbig.f\[100\] * dbig.d\[202\]"
      }
    -re ".*$gdb_prompt $" { fail "print value of fbig.f\[100\] * dbig.d\[202\]" }
    timeout           { fail "(timeout) print value of fbig.f\[100\] * dbig.d\[202\]" }
  }

send_gdb "print !(sbig.s\[90\] * 2)\n"
gdb_expect {
    -re ".\[0-9\]* = $false.*$gdb_prompt $" {
        pass "print value of !(sbig.s\[90\] * 2)"
      }
    -re ".*$gdb_prompt $" { fail "print value of !(sbig.s\[90\] * 2)" }
    timeout           { fail "(timeout) print value of !(sbig.s\[90\] * 2)" }
  }


send_gdb "print sizeof(sbig)\n"
gdb_expect {
    -re ".\[0-9\]* = 800.*$gdb_prompt $" {
        pass "print value of sizeof(sbig)"
      }
    -re ".*$gdb_prompt $" { fail "print value of sizeof(sbig)" }
    timeout           { fail "(timeout) print value of sizeof(sbig)" }
  }


send_gdb "print sizeof(cbig)\n"
gdb_expect {
    -re ".\[0-9\]* = 100.*$gdb_prompt $" {
        pass "print value of sizeof(cbig)"
      }
    -re ".*$gdb_prompt $" { fail "print value of sizeof(cbig)" }
    timeout           { fail "(timeout) print value of sizeof(cbig)" }
  }


send_gdb "print sizeof(lbig)/sizeof(long)\n"
gdb_expect {
    -re ".\[0-9\]* = 900.*$gdb_prompt $" {
        pass "print value of sizeof(lbig)/sizeof(long)"
      }
    -re ".*$gdb_prompt $" { fail "print value of sizeof(lbig)/sizeof(long)" }
    timeout     { fail "(timeout) print value of sizeof(lbig)/sizeof(long)" }
  }

send_gdb "print ibig.i\[100\] << 2\n"
gdb_expect {
    -re ".\[0-9\]* = 20.*$gdb_prompt $" {
        pass "print value of ibig.i\[100\] << 2"
      }
    -re ".*$gdb_prompt $" { fail "print value of ibig.i\[100\] << 2" }
    timeout           { fail "(timeout) print value of ibig.i\[100\] << 2" }
  }

send_gdb "print sbig.s\[90\] >> 4\n"
gdb_expect {
    -re ".\[0-9\]* = 15.*$gdb_prompt $" {
        pass "print value of sbig.s\[90\] >> 4"
      }
    -re ".*$gdb_prompt $" { fail "print value of sbig.s\[90\] >> 4" }
    timeout           { fail "(timeout) print value of sbig.s\[90\] >> 4" }
  }

send_gdb "print lbig.l\[333\] >> 6\n"
gdb_expect {
    -re ".\[0-9\]* = 15624999.*$gdb_prompt $" {
        pass "print value of lbig.l\[333\] >> 6"
      }
    -re ".*$gdb_prompt $" { fail "print value of lbig.l\[333\] >> 6" }
    timeout           { fail "(timeout) print value of lbig.l\[333\] >> 6" }
  }
