# Copyright 2018-2019 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/>.

# Test support for DW_OP_GNU_variable_value. 

load_lib dwarf.exp

# This test can only be run on targets which support DWARF-2 and use gas.
if ![dwarf2_support] {
    return 0
}

# We'll place the output of Dwarf::assemble in varval.S.
standard_testfile .c .S

# ${testfile} is now "varval".  srcfile2 is "varval.S".
set executable ${testfile}
set asm_file [standard_output_file ${srcfile2}]

# We need to know the size of integer and address types in order
# to write some of the debugging info we'd like to generate.
#
# For that, we ask GDB by debugging our varval program.
# Any program would do, but since we already have varval
# specifically for this testcase, might as well use that.
if [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] {
    return -1
}

proc setup_exec { arg_bad } {
    global asm_file executable srcfile bad
    set bad ${arg_bad}

    # Create the DWARF.  
    Dwarf::assemble ${asm_file} {
	global srcdir subdir srcfile bad

	cu {} {
	    DW_TAG_compile_unit {
		{DW_AT_language @DW_LANG_C_plus_plus}
	    } {
		declare_labels int_label ptr_label struct_label var_a_label \
		    var_b_label var_c_label var_p_label var_bad_label \
		    varval_label var_s_label var_untyped_label \
		    var_a_abstract_label var_a_concrete_label \
		    varval2_label

		set int_size [get_sizeof "int" -1]

		# gdb always assumes references are implemented as pointers.
		set addr_size [get_sizeof "void *" -1]

		int_label: DW_TAG_base_type {
		    {DW_AT_byte_size ${int_size} DW_FORM_udata}
		    {DW_AT_encoding @DW_ATE_signed}
		    {DW_AT_name "int"}
		}

		ptr_label: DW_TAG_pointer_type {
		    {DW_AT_type :$int_label}
		}

		var_a_label: DW_TAG_variable {
		    {DW_AT_name "var_a"}
		    {DW_AT_type :${int_label}}
		    {DW_AT_external 1 DW_FORM_flag}
		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_a"]} SPECIAL_expr}
		}

		var_a_abstract_label: DW_TAG_variable {
		    {DW_AT_type :${int_label}}
		    {DW_AT_external 1 DW_FORM_flag}
		}

		var_b_label: DW_TAG_variable {
		    {DW_AT_name "var_b"}
		    {DW_AT_type :${int_label}}
		    {DW_AT_external 1 DW_FORM_flag}
		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_b"]} SPECIAL_expr}
		}

		var_c_label: DW_TAG_variable {
		    {DW_AT_name "var_c"}
		    {DW_AT_type :${int_label}}
		    {DW_AT_external 1 DW_FORM_flag}
		    {DW_AT_const_value 53 DW_FORM_sdata}
		}

		var_p_label: DW_TAG_variable {
		    {DW_AT_name "var_p"}
		    {DW_AT_type :${ptr_label}}
		    {DW_AT_external 1 DW_FORM_flag}
		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_p"]} SPECIAL_expr}
		}

		if { $bad } {
		    var_bad_label: DW_TAG_variable {
			{DW_AT_name "var_bad"}
			{DW_AT_type :${int_label}}
			{DW_AT_external 1 DW_FORM_flag}
		    }
		}

		struct_label: DW_TAG_structure_type {
		    {DW_AT_byte_size 8*$int_size DW_FORM_sdata}
		} {
		    DW_TAG_member {
			{DW_AT_name "a"}
			{DW_AT_type :$int_label}
			{DW_AT_data_member_location 0*$int_size DW_FORM_udata}
		    }
		    DW_TAG_member {
			{DW_AT_name "b"}
			{DW_AT_type :$int_label}
			{DW_AT_data_member_location 1*$int_size DW_FORM_udata}
		    }
		    DW_TAG_member {
			{DW_AT_name "c"}
			{DW_AT_type :$int_label}
			{DW_AT_data_member_location 2*$int_size DW_FORM_udata}
		    }
		    DW_TAG_member {
			{DW_AT_name "d"}
			{DW_AT_type :$int_label}
			{DW_AT_data_member_location 3*$int_size DW_FORM_udata}
		    }
		    DW_TAG_member {
			{DW_AT_name "e"}
			{DW_AT_type :$int_label}
			{DW_AT_data_member_location 4*$int_size DW_FORM_udata}
		    }
		    DW_TAG_member {
			{DW_AT_name "f"}
			{DW_AT_type :$int_label}
			{DW_AT_data_member_location 5*$int_size DW_FORM_udata}
		    }
		    DW_TAG_member {
			{DW_AT_name "g"}
			{DW_AT_type :$int_label}
			{DW_AT_data_member_location 6*$int_size DW_FORM_udata}
		    }
		    DW_TAG_member {
			{DW_AT_name "h"}
			{DW_AT_type :$int_label}
			{DW_AT_data_member_location 7*$int_size DW_FORM_udata}
		    }
		}

		var_s_label: DW_TAG_variable {
		    {DW_AT_name "var_s"}
		    {DW_AT_type :${struct_label}}
		    {DW_AT_external 1 DW_FORM_flag}
		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_s"]} SPECIAL_expr}
		}

		var_untyped_label: DW_TAG_variable {
		    {DW_AT_name "var_untyped"}
		    {DW_AT_external 1 DW_FORM_flag}
		    {DW_AT_location {DW_OP_addr [gdb_target_symbol "var_b"]} SPECIAL_expr}
		}

		DW_TAG_subprogram {
		    {MACRO_AT_func { "main" "${srcdir}/${subdir}/${srcfile}" }}
		    {DW_AT_type :${int_label}}
		    {DW_AT_external 1 DW_FORM_flag}
		} {
		    varval_label: DW_TAG_variable {
			{DW_AT_name "varval"}
			{DW_AT_type :${int_label}}
			{DW_AT_location {
			    DW_OP_GNU_variable_value ${var_a_label}
			    DW_OP_stack_value
			} SPECIAL_expr}
		    }
		    varval2_label: DW_TAG_variable {
			{DW_AT_name "varval2"}
			{DW_AT_type :${int_label}}
			{DW_AT_location {
			    DW_OP_GNU_variable_value ${var_a_abstract_label}
			    DW_OP_stack_value
			} SPECIAL_expr}
		    }
		    var_a_concrete_label: DW_TAG_variable {
			{DW_AT_abstract_origin :${var_a_abstract_label}}
			{DW_AT_location {DW_OP_addr [gdb_target_symbol "var_a"]} SPECIAL_expr}
		    }
		    DW_TAG_variable {
			{DW_AT_name "constval"}
			{DW_AT_type :${int_label}}
			{DW_AT_location {
			    DW_OP_GNU_variable_value ${var_c_label}
			    DW_OP_stack_value
			} SPECIAL_expr}
		    }
		    DW_TAG_variable {
			{DW_AT_name "mixedval"}
			{DW_AT_type :${int_label}}
			{DW_AT_location {
			    DW_OP_GNU_variable_value ${var_c_label}
			    DW_OP_GNU_variable_value ${var_b_label}
			    DW_OP_div
			    DW_OP_GNU_variable_value ${varval_label}
			    DW_OP_plus
			    DW_OP_dup
			    DW_OP_plus
			    DW_OP_GNU_variable_value ${varval_label}
			    DW_OP_minus
			    DW_OP_stack_value
			} SPECIAL_expr}
		    }
		    DW_TAG_variable {
			{DW_AT_name "pointerval"}
			{DW_AT_type :${ptr_label}}
			{DW_AT_location {
			    DW_OP_GNU_variable_value ${var_p_label}
			    DW_OP_stack_value
			} SPECIAL_expr}
		    }
		    if { $bad } {
			DW_TAG_variable {
			    {DW_AT_name "badval"}
			    {DW_AT_type :${int_label}}
			    {DW_AT_location {
				DW_OP_GNU_variable_value ${var_bad_label}
				DW_OP_stack_value
			    } SPECIAL_expr}
			}
		    }
		    DW_TAG_variable {
			{DW_AT_name "structval"}
			{DW_AT_type :${struct_label}}
			{DW_AT_location {
			    DW_OP_GNU_variable_value ${var_s_label}
			    DW_OP_stack_value
			} SPECIAL_expr}
		    }
		    DW_TAG_variable {
			{DW_AT_name "untypedval"}
			{DW_AT_location {
			    DW_OP_GNU_variable_value ${var_untyped_label}
			    DW_OP_stack_value
			} SPECIAL_expr}
		    }
		    if { $bad } {
			DW_TAG_variable {
			    {DW_AT_name "bad_die_val1"}
			    {DW_AT_location {
				DW_OP_GNU_variable_value 0xabcdef11
				DW_OP_stack_value
			    } SPECIAL_expr}
			}
			DW_TAG_variable {
			    {DW_AT_name "bad_die_val2"}
			    {DW_AT_location {
				DW_OP_GNU_variable_value ${ptr_label}+1
				DW_OP_stack_value
			    } SPECIAL_expr}
			}
		    }
		}
	    }
	}
    }

    if [prepare_for_testing "failed to prepare" ${executable} [list ${asm_file} ${srcfile}] {}] {
	return -1
    }

    # DW_OP_GNU_variable_value implementation requires a valid frame.
    if ![runto_main] {
	return -1
    }
}

if { [setup_exec 0] == -1 } {
    return -1
}

gdb_test "print varval" "= 8"
gdb_test "print varval2" "= 8"
gdb_test "print constval" "= 53"
gdb_test "print mixedval" "= 42"
gdb_test "print pointerval" "= \\(int \\*\\) $hex <var_b>"
gdb_test "print *pointerval" "= 3"

# Jakub says:  "The intended behavior is that the debug info consumer
# computes the value of that referenced variable at the current PC,
# and if it can compute it and pushes the value as a generic type
# integer into the DWARF stack (it is really only meaningful when
# referring to integral/pointer typed variables)."

gdb_test "print structval" \
         "Type of DW_OP_GNU_variable_value DIE must be an integer or pointer\\."

gdb_test "print untypedval" \
         "Type of DW_OP_GNU_variable_value DIE must be an integer or pointer\\."

if { [setup_exec 1] == -1 } {
    return -1
}

gdb_test "print badval" "value has been optimized out"
gdb_test "print bad_die_val1" \
         "invalid dwarf2 offset 0xabcdef11"
gdb_test "print bad_die_val2" \
         "Bad DW_OP_GNU_variable_value DIE\\."
