# Copyright (C) 2011-2012 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/>.

set testfile amd64-entry-value
set srcfile ${testfile}.s
set opts {}

if [info exists COMPILE] {
    # make check RUNTESTFLAGS="gdb.arch/amd64-entry-value.exp COMPILE=1"
    set srcfile ${testfile}.cc
    lappend opts debug optimize=-O2
} elseif { ![istarget x86_64-*-* ] || ![is_lp64_target] } {
    verbose "Skipping amd64-entry-value."
    return
}

if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} $opts] } {
    return -1
}

if ![runto_main] {
    return -1
}

gdb_breakpoint "breakhere"
gdb_breakpoint "breakhere_locexpr"
gdb_breakpoint "stacktest"
gdb_breakpoint "breakhere_stacktest"
gdb_breakpoint "different"
gdb_breakpoint "breakhere_different"
gdb_breakpoint "breakhere_validity"
gdb_breakpoint "breakhere_invalid"
gdb_breakpoint "reference"
gdb_breakpoint "breakhere_reference"


# Test @entry values for register passed parameters.

gdb_continue_to_breakpoint "entry: breakhere"

gdb_test "bt" "^bt\r\n#0 +d *\\(i=31, i@entry=30, j=31\\.5, j@entry=30\\.5\\) \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in main .*" \
	 "entry: bt"
gdb_test "p i" " = 31" "entry: p i"
gdb_test "p i@entry" " = 30" "entry: p i@entry"
gdb_test "p j" { = 31\.5} "entry: p j"
gdb_test "p j@entry" { = 30\.5} "entry: p j@entry"


# Test @entry values when parameter in function is locexpr (and not loclist).

gdb_continue_to_breakpoint "entry_locexpr: breakhere_locexpr"
gdb_test "p i" " = 30" "entry_locexpr: p i"
gdb_test_no_output "set variable i = 0" "entry_locexpr: set variable i = 0"
gdb_test "bt" "^bt\r\n#0 +locexpr *\\(i=0, i@entry=30\\) \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in main .*" \
	 "entry_locexpr: bt"


# Test @entry values for stack passed parameters.

gdb_continue_to_breakpoint "entry_stack: stacktest"

gdb_test "bt" "^bt\r\n#0 +stacktest *\\(r1=r1@entry=1, r2=r2@entry=2, \[^\r\n\]+, s1=s1@entry=11, s2=s2@entry=12, \[^\r\n\]+, d9=d9@entry=11\\.5, da=da@entry=12\\.5\\) \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in main .*" \
	 "entry_stack: bt at entry"

gdb_continue_to_breakpoint "entry_stack: breakhere_stacktest"

gdb_test "bt" "^bt\r\n#0 +stacktest *\\(r1=r1@entry=1, r2=r2@entry=2, \[^\r\n\]+, s1=3, s1@entry=11, s2=4, s2@entry=12, \[^\r\n\]+, d9=3\\.5, d9@entry=11\\.5, da=4\\.5, da@entry=12\\.5\\) \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in main .*" \
	 "entry_stack: bt"

gdb_test "p s1" " = 3" "entry_stack: p s1"
gdb_test "p s1@entry" " = 11" "entry_stack: p s1@entry"
gdb_test "p s2" " = 4" "entry_stack: p s2"
gdb_test "p s2@entry" " = 12" "entry_stack: p s2@entry"
gdb_test "p d9" " = 3\\.5" "entry_stack: p d9"
gdb_test "p d9@entry" " = 11\\.5" "entry_stack: p d9@entry"
gdb_test "p da" " = 4\\.5" "entry_stack: p da"
gdb_test "p da@entry" " = 12\\.5" "entry_stack: p da@entry"


# Test various kinds of `set print entry-values'.

gdb_continue_to_breakpoint "entry_equal: breakhere"

gdb_test_no_output "set print entry-values no" "entry_equal: set print entry-values no"
gdb_test "frame" {\(val=5\).*} "entry_equal: frame: no"
gdb_test_no_output "set print entry-values only" "entry_equal: set print entry-values only"
gdb_test "frame" {\(val@entry=5\).*} "entry_equal: frame: only"
gdb_test_no_output "set print entry-values preferred" "entry_equal: set print entry-values preferred"
gdb_test "frame" {\(val@entry=5\).*} "entry_equal: frame: preferred"
gdb_test_no_output "set print entry-values if-needed" "entry_equal: set print entry-values if-needed"
gdb_test "frame" {\(val=5\).*} "entry_equal: frame: if-needed"
gdb_test_no_output "set print entry-values both" "entry_equal: set print entry-values both"
gdb_test "frame" {\(val=5, val@entry=5\).*} "entry_equal: frame: both"
gdb_test_no_output "set print entry-values compact" "entry_equal: set print entry-values compact"
gdb_test "frame" {\(val=val@entry=5\).*} "entry_equal: frame: compact"
gdb_test_no_output "set print entry-values default" "entry_equal: set print entry-values default"
gdb_test "frame" {\(val=val@entry=5\).*} "entry_equal: frame: default"

gdb_continue_to_breakpoint "entry_different: breakhere"

gdb_test_no_output "set print entry-values no" "entry_different: set print entry-values no"
gdb_test "frame" {\(val=6\).*} "entry_different: frame: no"
gdb_test_no_output "set print entry-values only" "entry_different: set print entry-values only"
gdb_test "frame" {\(val@entry=5\).*} "entry_different: frame: only"
gdb_test_no_output "set print entry-values preferred" "entry_different: set print entry-values preferred"
gdb_test "frame" {\(val@entry=5\).*} "entry_different: frame: preferred"
gdb_test_no_output "set print entry-values if-needed" "entry_different: set print entry-values if-needed"
gdb_test "frame" {\(val=6\).*} "entry_different: frame: if-needed"
gdb_test_no_output "set print entry-values both" "entry_different: set print entry-values both"
gdb_test "frame" {\(val=6, val@entry=5\).*} "entry_different: frame: both"
gdb_test_no_output "set print entry-values compact" "entry_different: set print entry-values compact"
gdb_test "frame" {\(val=6, val@entry=5\).*} "entry_different: frame: compact"
gdb_test_no_output "set print entry-values default" "entry_different: set print entry-values default"
gdb_test "frame" {\(val=6, val@entry=5\).*} "entry_different: frame: default"

gdb_continue_to_breakpoint "entry_validity: breakhere"

gdb_test_no_output "set print entry-values no" "entry_validity: set print entry-values no"
gdb_test "frame" {\(lost=<optimized out>, born=10\).*} "entry_validity: frame: no"
gdb_test_no_output "set print entry-values only" "entry_validity: set print entry-values only"
gdb_test "frame" {\(lost@entry=5, born@entry=<optimized out>\).*} "entry_validity: frame: only"
gdb_test_no_output "set print entry-values preferred" "entry_validity: set print entry-values preferred"
gdb_test "frame" {\(lost@entry=5, born=10\).*} "entry_validity: frame: preferred"
gdb_test_no_output "set print entry-values if-needed" "entry_validity: set print entry-values if-needed"
gdb_test "frame" {\(lost@entry=5, born=10\).*} "entry_validity: frame: if-needed"
gdb_test_no_output "set print entry-values both" "entry_validity: set print entry-values both"
gdb_test "frame" {\(lost=<optimized out>, lost@entry=5, born=10, born@entry=<optimized out>\).*} "entry_validity: frame: both"
gdb_test_no_output "set print entry-values compact" "entry_validity: set print entry-values compact"
gdb_test "frame" {\(lost@entry=5, born=10\).*} "entry_validity: frame: compact"
gdb_test_no_output "set print entry-values default" "entry_validity: set print entry-values default"
gdb_test "frame" {\(lost=<optimized out>, lost@entry=5, born=10\).*} "entry_validity: frame: default"

gdb_continue_to_breakpoint "entry_invalid: breakhere"

gdb_test_no_output "set print entry-values no" "entry_invalid: set print entry-values no"
gdb_test "frame" {\(inv=<optimized out>\).*} "entry_invalid: frame: no"
gdb_test_no_output "set print entry-values only" "entry_invalid: set print entry-values only"
gdb_test "frame" {\(inv@entry=<optimized out>\).*} "entry_invalid: frame: only"
gdb_test_no_output "set print entry-values preferred" "entry_invalid: set print entry-values preferred"
gdb_test "frame" {\(inv@entry=<optimized out>\).*} "entry_invalid: frame: preferred"
gdb_test_no_output "set print entry-values if-needed" "entry_invalid: set print entry-values if-needed"
gdb_test "frame" {\(inv=<optimized out>\).*} "entry_invalid: frame: if-needed"
gdb_test_no_output "set print entry-values both" "entry_invalid: set print entry-values both"
gdb_test "frame" {\(inv=<optimized out>, inv@entry=<optimized out>\).*} "entry_invalid: frame: both"
gdb_test_no_output "set print entry-values compact" "entry_invalid: set print entry-values compact"
gdb_test "frame" {\(inv=<optimized out>\).*} "entry_invalid: frame: compact"
gdb_test_no_output "set print entry-values default" "entry_invalid: set print entry-values default"
gdb_test "frame" {\(inv=<optimized out>\).*} "entry_invalid: frame: default"


# Test @entry values for DW_AT_GNU_call_site_data_value parameters.

gdb_continue_to_breakpoint "entry_reference: reference"

# GCC PR debug/49980: Missing stackparam1@entry and stackparam2@entry.
gdb_test "bt" "#0 +reference \\(regparam=regparam@entry=@0x\[0-9a-f\]+: 1, nodataparam=@0x\[0-9a-f\]+: 2, \[^\r\n\]+, stackparam1=@0x\[0-9a-f\]+: 11, stackparam2=@0x\[0-9a-f\]+: 12\\) \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in main \\(\\) \[^\r\n\]*" \
	 "entry_reference: bt at entry"

gdb_continue_to_breakpoint "entry_reference: breakhere_reference"

# GCC PR debug/49980: Missing stackparam1@entry and stackparam2@entry.
gdb_test "bt" "#0 +reference \\(regparam=@0x\[0-9a-f\]+: 21, regparam@entry=@0x\[0-9a-f\]+: 1, nodataparam=@0x\[0-9a-f\]+: 22, \[^\r\n\]+, stackparam1=@0x\[0-9a-f\]+: 31, stackparam2=@0x\[0-9a-f\]+: 32\\) \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in main \\(\\) \[^\r\n\]*" \
	 "entry_reference: bt"
gdb_test "ptype regparam" " = int &" "entry_reference: ptype regparam"

set test "entry_reference: p regparam"
set addr ""
gdb_test_multiple "p regparam" $test {
    -re " = \\(int &\\) @(0x\[0-9a-f\]+): 21\r\n$gdb_prompt $" {
	set addr $expect_out(1,string)
	pass $test
    }
}

gdb_test "ptype regparam@entry" " = int &" "entry_reference: ptype regparam@entry"
gdb_test "p regparam@entry" " = \\(int &\\) @$addr: 1" "entry_reference: p regparam@entry"
gdb_test "p &regparam@entry" " = \\(int \\*\\) $addr" "entry_reference: p &regparam@entry"
gdb_test "p regcopy" " = 1" "entry_reference: p regcopy"
gdb_test "p nodataparam" " = \\(int &\\) @0x\[0-9a-f\]+: 22" "entry_reference: p nodataparam"
gdb_test "p nodataparam@entry" "Cannot resolve DW_AT_GNU_call_site_data_value" "entry_reference: p nodataparam@entry"


# Test virtual tail call frames.

gdb_continue_to_breakpoint "tailcall: breakhere"

gdb_test "bt" "^bt\r\n#0 +d *\\(i=71, i@entry=70, j=73\\.5, j@entry=72\\.5\\) \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in c \\(i=i@entry=7, j=j@entry=7\\.25\\) \[^\r\n\]*\r\n#2 +0x\[0-9a-f\]+ in b \\(i=i@entry=5, j=j@entry=5\\.25\\) \[^\r\n\]*\r\n#3 +0x\[0-9a-f\]+ in main \[^\r\n\]*" \
	 "tailcall: bt"
gdb_test "p i" " = 71" "tailcall: p i"
gdb_test "p i@entry" " = 70" "tailcall: p i@entry"
gdb_test "p j" " = 73\\.5" "tailcall: p j"
gdb_test "p j@entry" " = 72\\.5" "tailcall: p j@entry"

# Test $sp simulation for tail call frames.
#gdb_test {p/x $sp} " = 0x.*"
#gdb_test {p/x $pc} " = 0x.*"
gdb_test_no_output {set $sp0=$sp}
gdb_test "up" "\r\n#1 .*"
#gdb_test {p/x $sp} " = 0x.*"
gdb_test {p $sp0 == $sp} " = true"
gdb_test "frame 3" "\r\n#3 .*"
gdb_test {p $sp0 + sizeof (void *) == $sp} " = true"


# Test partial-ambiguous virtual tail call frames chain.

gdb_continue_to_breakpoint "ambiguous: breakhere"

gdb_test "bt" "^bt\r\n#0 +d \\(i=<optimized out>, j=<optimized out>\\)\[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in amb_z \\(i=<optimized out>\\)\[^\r\n\]*\r\n#2 +0x\[0-9a-f\]+ in amb_y \\(i=<optimized out>\\)\[^\r\n\]*\r\n#3 +0x\[0-9a-f\]+ in amb_x \\(i=<optimized out>\\)\[^\r\n\]*\r\n#4 +0x\[0-9a-f\]+ in amb_b \\(i=i@entry=101\\)\[^\r\n\]*\r\n#5 +0x\[0-9a-f\]+ in amb_a \\(i=i@entry=100\\)\[^\r\n\]*\r\n#6 +0x\[0-9a-f\]+ in main \\(\\)\[^\r\n\]*" \
	 "ambiguous: bt"


# Test self tail calls verification.
# GDB should not print the real value as it is ambiguous.

gdb_continue_to_breakpoint "self: breakhere"

gdb_test "bt" "^bt\r\n#0 +d \\(i=<optimized out>, j=<optimized out>\\)\[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in self \\(i=<optimized out>\\)\[^\r\n\]*\r\n#2 +0x\[0-9a-f\]+ in main \\(\\)\[^\r\n\]*" \
	 "self: bt"

gdb_test_no_output "set debug entry-values 1"
gdb_test "bt" "DW_OP_GNU_entry_value resolving has found function \"self\\(int\\)\" at 0x\[0-9a-f\]+ can call itself via tail calls\r\n.*" \
	 "self: bt debug entry-values"
