# Test for printing alias symbols. # Copyright 2017-2023 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 . standard_testfile symbol-alias.c symbol-alias2.c # Clang versions prior to v15 do not emit debug info for aliases. set old_clang [expr [test_compiler_info {clang-1[0-4]-*-*}] \ || [test_compiler_info {clang-[1-9]-*}]] if { [prepare_for_testing "failed to prepare" ${testfile} [list $srcfile $srcfile2]] } { return -1 } if {![runto_main]} { return } # Functions. foreach f {"func" "func_alias"} { gdb_test "p $f" " = {(struct )?S \\*\\(void\\)} $hex " gdb_test "p *${f}()" "= {field1 = 1, field2 = 2}" } # Extern global variable. gdb_test "p g_var_s" "= {field1 = 1, field2 = 2}" foreach v {"g_var_s_alias" "g_var_s_alias2"} { gdb_test_multiple "p $v" "print alias variable $v" { -re -wrap " = {field1 = 1, field2 = 2}" { pass $gdb_test_name } -re -wrap "has unknown type; cast it to its declared type" { if { $old_clang } { xfail $gdb_test_name } else { fail $gdb_test_name } } } } # Static global variable. gdb_test "p g_var" " = 1" gdb_test_multiple "p g_var_alias" "print alias of static variable" { -re -wrap " = 1" { pass $gdb_test_name } -re -wrap "has unknown type; cast it to its declared type" { if { $old_clang } { xfail $gdb_test_name } else { fail $gdb_test_name } } } # Alias of a variable that is declared later in the scope. gdb_test "p g_def_var" " = 2" gdb_test_multiple "p g_def_var_alias" "print g_def_var_alias" { -re -wrap " = 2" { pass $gdb_test_name } -re -wrap "has unknown type; cast it to its declared type" { if { $old_clang } { xfail $gdb_test_name } else { fail $gdb_test_name } } } gdb_test_multiple "p g_def_var_alias2" "print g_def_var_alias2" { -re -wrap " = 2" { pass $gdb_test_name } -re -wrap "has unknown type; cast it to its declared type" { if { $old_clang } { xfail $gdb_test_name } else { fail $gdb_test_name } } }