diff options
author | Mark Wielaard <mjw@redhat.com> | 2015-02-09 14:58:25 +0100 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2015-02-09 15:09:22 +0100 |
commit | a2c2acaf15e9cc40bae8a6eebba78aadd3a31b8e (patch) | |
tree | d83d74ca8ec983bc4abc4d401d816abb2eb53d48 /gdb/testsuite/gdb.dwarf2 | |
parent | e051a5b512a282642030720c69b5b4f9a85314ea (diff) | |
download | gdb-a2c2acaf15e9cc40bae8a6eebba78aadd3a31b8e.zip gdb-a2c2acaf15e9cc40bae8a6eebba78aadd3a31b8e.tar.gz gdb-a2c2acaf15e9cc40bae8a6eebba78aadd3a31b8e.tar.bz2 |
GCC5/DWARFv5 Handle DW_TAG_atomic_type for C11 _Atomic type qualifier.
gdb/ChangeLog
* c-typeprint.c (cp_type_print_method_args): Handle '_Atomic'.
(c_type_print_modifier): Likewise.
* dwarf2read.c (read_tag_atomic_type): New function.
(read_type_die_1): Handle DW_TAG_atomic_type.
* gdbtypes.c (make_atomic_type): New function.
(recursive_dump_type): Handle TYPE_ATOMIC.
* gdbtypes.h (enum type_flag_values): Renumber.
(enum type_instance_flag_value): Add TYPE_INSTANCE_FLAG_ATOMIC.
(TYPE_ATOMIC): New macro.
(make_atomic_type): Declare.
gdb/testsuite/ChangeLog
* gdb.dwarf2/atomic.c: New file.
* gdb.dwarf2/atomic-type.exp: Likewise.
include/ChangeLog
* dwarf2.def: Add DW_TAG_atomic_type.
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; +} + |