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

standard_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 "failed to prepare" ${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_call_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_call_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 $pc adjustment which is now right after the function end.
# Also verify the current PC indicator "=> " is not displayed anywhere.
gdb_test "down" "\r\n#2 .*"
set test "disassemble"
gdb_test_multiple $test $test {
    -re "^$test\r\n" {
	exp_continue
    }
    -re "^Dump of assembler code for function b\\(int, double\\):\r\n" {
	exp_continue
    }
    -re "^   0x\[^\r\n\]*\r\n" {
	exp_continue
    }
    -re "^End of assembler dump\\.\r\n$gdb_prompt $" {
	pass $test
    }
}


# 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_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"
