# Copyright 1998, 1999, 2000, 2007, 2008, 2009, 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 <http://www.gnu.org/licenses/>.


# 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=${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} nowarnings]] != "" } {
    untested miscexprs.exp
    return -1
}

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" }
  }
