diff options
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2')
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/atomic-type.exp | 89 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/atomic.c | 34 |
2 files changed, 123 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/atomic-type.exp b/gdb/testsuite/gdb.dwarf2/atomic-type.exp new file mode 100644 index 0000000..fb315e3 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/atomic-type.exp @@ -0,0 +1,89 @@ +# Copyright 2014, 2015 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/>. +load_lib dwarf.exp + +# This test can only be run on targets which support DWARF-2 and use gas. +if {![dwarf2_support]} { + return 0 +} + +standard_testfile atomic.c atomic-type-dw.S + +# Make some DWARF for the test. + +set asm_file [standard_output_file $srcfile2] +Dwarf::assemble $asm_file { + cu {} { + DW_TAG_compile_unit { + {DW_AT_language @DW_LANG_C11} + {DW_AT_name atomic-type-dw.c} + {DW_AT_comp_dir /tmp} + } { + declare_labels i_l c_l c_c_l ac_c_l pac_c_l vpac_c_l avpac_c_l + + i_l: DW_TAG_base_type { + {DW_AT_byte_size 4 DW_FORM_sdata} + {DW_AT_encoding @DW_ATE_signed} + {DW_AT_name int} + } + + c_l: DW_TAG_base_type { + {DW_AT_byte_size 2 DW_FORM_sdata} + {DW_AT_encoding @DW_ATE_unsigned} + {DW_AT_name char} + } + + c_c_l: DW_TAG_const_type { + {DW_AT_type :$c_l} + } + + ac_c_l: DW_TAG_atomic_type { + {DW_AT_type :$c_c_l} + } + + pac_c_l: DW_TAG_pointer_type { + {DW_AT_byte_size 8 DW_FORM_sdata} + {DW_AT_type :$ac_c_l} + } + + vpac_c_l: DW_TAG_volatile_type { + {DW_AT_type :$pac_c_l} + } + + avpac_c_l: DW_TAG_atomic_type { + {DW_AT_type :$vpac_c_l} + } + + DW_TAG_subprogram { + {name f} + {low_pc f addr} + {high_pc f_end_lbl addr} + {type :$i_l} + } { + DW_TAG_formal_parameter { + {type :$avpac_c_l} + {name x} + } + } + } + } +} + +if { [prepare_for_testing ${testfile}.exp ${testfile} \ + [list $srcfile $asm_file] {nodebug}] } { + return -1 +} + +gdb_test "ptype f" "int \\(const _Atomic char \\\* volatile _Atomic\\)" diff --git a/gdb/testsuite/gdb.dwarf2/atomic.c b/gdb/testsuite/gdb.dwarf2/atomic.c new file mode 100644 index 0000000..3553cdf --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/atomic.c @@ -0,0 +1,34 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2004-2015 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/>. */ + +/* Dummy main function. */ + +int +main (void) +{ + asm ("main_label: .globl main_label"); + return 0; +} + +/* dummy f function, DWARF will describe arguments and type differently. */ +int +f (char *x) +{ + asm (".global f_end_lbl\nf_end_lbl:"); + return 0; +} + |