1# Copyright 2013-2020 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15load_lib dwarf.exp 16 17# This test can only be run on targets which support DWARF-2 and use gas. 18if {![dwarf2_support]} { 19 return 0 20} 21 22if { [skip_cplus_tests] } { continue } 23 24standard_testfile .cc method-ptr-dw.S 25 26# Make some DWARF for the test. 27set asm_file [standard_output_file $srcfile2] 28Dwarf::assemble $asm_file { 29 declare_labels int_label float_label struct_label 30 declare_labels ptr_label subr_label memptr_label 31 32 cu {} { 33 compile_unit {{language @DW_LANG_C_plus_plus}} { 34 int_label: base_type { 35 {name int} 36 {encoding @DW_ATE_signed} 37 {byte_size 4 DW_FORM_sdata} 38 } 39 40 float_label: base_type { 41 {name float} 42 {encoding @DW_ATE_float} 43 {byte_size 4 DW_FORM_sdata} 44 } 45 46 struct_label: structure_type { 47 {name S} 48 {byte_size 1 DW_FORM_sdata} 49 } 50 51 ptr_label: pointer_type { 52 {type :$struct_label} 53 } 54 55 subr_label: subroutine_type { 56 {type :$int_label} 57 } { 58 formal_parameter { 59 {type :$ptr_label} 60 {artificial 1 DW_FORM_flag_present} 61 } 62 formal_parameter { 63 {type :$float_label} 64 } 65 } 66 67 memptr_label: ptr_to_member_type { 68 {type :$subr_label} 69 {containing_type :$struct_label} 70 } 71 72 typedef { 73 {name the_typedef} 74 {type :$memptr_label} 75 } 76 } 77 } 78} 79 80if { [prepare_for_testing "failed to prepare" ${testfile} \ 81 [list $srcfile $asm_file] {nodebug}] } { 82 return -1 83} 84 85gdb_test_no_output "set language c++" 86gdb_test "ptype the_typedef" \ 87 "type = int \\(S::\\*\\)\\(S \\* const, float\\)" 88