diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-10-13 16:26:28 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-10-13 16:26:28 +0000 |
commit | 22c05d8adc1cde13d7f7b8311604d77f64819d8c (patch) | |
tree | 5d85b6edbec20db0103f7d035e8670bb8b04d7f7 /gdb/testsuite/gdb.dwarf2 | |
parent | 9cf03b7e412b9cdeca8b5ea3f73c081e31078a28 (diff) | |
download | gdb-22c05d8adc1cde13d7f7b8311604d77f64819d8c.zip gdb-22c05d8adc1cde13d7f7b8311604d77f64819d8c.tar.gz gdb-22c05d8adc1cde13d7f7b8311604d77f64819d8c.tar.bz2 |
gdb/
Fix internal error regression.
* value.c (value_primitive_field): Handle value_optimized_out. Move
packed bitfields comment.
gdb/testsuite/
Fix internal error regression.
* gdb.dwarf2/implptr-optimized-out.S: New file.
* gdb.dwarf2/implptr-optimized-out.exp: New file.
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2')
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S | 166 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp | 37 |
2 files changed, 203 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S new file mode 100644 index 0000000..dc5b19b --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S @@ -0,0 +1,166 @@ +/* Copyright 2010, 2011 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/>. */ + + .section .debug_info +d: + .long debug_end - 1f /* Length of Compilation Unit Info */ +1: + .2byte 0x3 /* DWARF version number */ + .long .Ldebug_abbrev0 /* Offset Into Abbrev. Section */ + .byte 0x4 /* Pointer Size (in bytes) */ + .uleb128 0x1 /* (DIE (0xb) DW_TAG_compile_unit) */ + .ascii "GNU C 4.4.3\0" /* DW_AT_producer */ + .byte 0x1 /* DW_AT_language */ + .ascii "1.c\0" /* DW_AT_name */ + +.Ltype_int: + .uleb128 0x7 /* DW_TAG_base_type */ + .byte 0x4 /* DW_AT_byte_size */ + .byte 0x5 /* DW_AT_encoding */ + .ascii "int\0" /* DW_AT_name */ + +.Ltype_struct: + .uleb128 0x2 /* DW_TAG_structure_type */ + .ascii "s\0" /* DW_AT_name */ + .byte 4 /* DW_AT_byte_size */ + + .uleb128 0x3 /* DW_TAG_member */ + .ascii "f\0" /* DW_AT_name */ + .4byte .Ltype_int - d /* DW_AT_type */ + .byte 0 /* DW_AT_data_member_location */ + + .byte 0x0 /* end of children of DW_TAG_structure_type */ + + .uleb128 6 /* Abbrev: DW_TAG_subprogram */ + .ascii "main\0" /* DW_AT_name */ + .4byte main /* DW_AT_low_pc */ + .4byte main + 0x100 /* DW_AT_high_pc */ + .4byte .Ltype_int - d /* DW_AT_type */ + .byte 1 /* DW_AT_external */ + +.Ltype_structptr: + .uleb128 0x5 /* DW_TAG_pointer_type */ + .byte 0x4 /* DW_AT_byte_size */ + .long .Ltype_struct - d /* DW_AT_type */ + +.Lvar_out: + .uleb128 0x4 /* (DW_TAG_variable) */ + .ascii "v\0" /* DW_AT_name */ + .byte 0 /* DW_AT_location: DW_FORM_block1 */ + .4byte .Ltype_struct - d /* DW_AT_type */ + + .uleb128 0x4 /* (DW_TAG_variable) */ + .ascii "p\0" /* DW_AT_name */ + .byte 2f - 1f /* DW_AT_location: DW_FORM_block1 */ +1: + .byte 0xf2 /* DW_OP_GNU_implicit_pointer */ + .4byte .Lvar_out - d /* referenced DIE */ + .sleb128 0 /* offset */ +2: + .4byte .Ltype_structptr - d /* DW_AT_type */ + + .byte 0x0 /* end of children of main */ + + .byte 0x0 /* end of children of CU */ +debug_end: + + .section .debug_abbrev +.Ldebug_abbrev0: + + .uleb128 0x1 /* (abbrev code) */ + .uleb128 0x11 /* (TAG: DW_TAG_compile_unit) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x25 /* (DW_AT_producer) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x13 /* (DW_AT_language) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .byte 0x0 + .byte 0x0 + + .uleb128 0x2 /* (abbrev code) */ + .uleb128 0x13 /* (TAG: DW_TAG_structure_type) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0xb /* (DW_AT_byte_size) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .byte 0 + .byte 0 + + .uleb128 0x3 /* (abbrev code) */ + .uleb128 0xd /* (TAG: DW_TAG_member) */ + .byte 0 /* DW_children_no */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x38 /* (DW_AT_data_member_location) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .byte 0 + .byte 0 + + .uleb128 0x4 /* (abbrev code) */ + .uleb128 0x34 /* (TAG: DW_TAG_variable) */ + .byte 0x0 /* DW_children_yes */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x02 /* (DW_AT_location) */ + .uleb128 0xa /* (DW_FORM_block1) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0x0 + .byte 0x0 + + .uleb128 0x5 /* (abbrev code) */ + .uleb128 0xf /* (TAG: DW_TAG_pointer_type) */ + .byte 0x0 /* DW_children_no */ + .uleb128 0xb /* (DW_AT_byte_size) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0x0 + .byte 0x0 + + .uleb128 6 /* Abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogram */ + .byte 1 /* has_children */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x11 /* DW_AT_low_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x12 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .uleb128 0x7 /* (abbrev code) */ + .uleb128 0x24 /* (TAG: DW_TAG_base_type) */ + .byte 0 /* DW_children_no */ + .uleb128 0xb /* (DW_AT_byte_size) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3e /* (DW_AT_encoding) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .byte 0 + .byte 0 + + .byte 0x0 diff --git a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp new file mode 100644 index 0000000..b8673ec --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp @@ -0,0 +1,37 @@ +# Copyright 2011 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 +} + +set testfile "implptr-optimized-out" +set srcfile ${testfile}.S +set mainfile main.c +set executable ${testfile} +set binfile ${objdir}/${subdir}/${executable} + +if [prepare_for_testing ${testfile}.exp $executable "${srcfile} ${mainfile}" {}] { + return -1 +} + +# DW_OP_GNU_implicit_pointer implementation requires a valid frame. +if ![runto_main] { + return -1 +} + +gdb_test "p p->f" " = <optimized out>" |