diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-07-27 17:08:06 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-07-27 17:08:06 +0000 |
commit | 3c6e0cb359c01c16799d3aac21e0624c8a5477b4 (patch) | |
tree | 9701bb42b33ff4ba13c34555d5206c76ca92daa1 /gdb/testsuite | |
parent | 523f3620b87ac8de01a68777bed56e2ede6f68b7 (diff) | |
download | gdb-3c6e0cb359c01c16799d3aac21e0624c8a5477b4.zip gdb-3c6e0cb359c01c16799d3aac21e0624c8a5477b4.tar.gz gdb-3c6e0cb359c01c16799d3aac21e0624c8a5477b4.tar.bz2 |
gdb/
* dwarf2expr.c (ctx_no_read_reg): New function.
* dwarf2expr.h (ctx_no_read_reg): New declaration.
* dwarf2read.c (read_2_signed_bytes, read_4_signed_bytes): Remove.
(decode_locdesc_read_mem, decode_locdesc_ctx_funcs): New.
(decode_locdesc): Replace by a caller of dwarf_expr_eval.
gdb/testsuite/
* gdb.dwarf2/dw2-simple-locdesc.S: New file.
* gdb.dwarf2/dw2-simple-locdesc.exp: New file.
* gdb.dwarf2/dw2-stack-boundary.exp (check partial symtab errors):
Change the expected string.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.S | 201 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp | 33 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp | 2 |
4 files changed, 242 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 8011247..16ab82e 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2011-07-27 Jan Kratochvil <jan.kratochvil@redhat.com> + + * gdb.dwarf2/dw2-simple-locdesc.S: New file. + * gdb.dwarf2/dw2-simple-locdesc.exp: New file. + * gdb.dwarf2/dw2-stack-boundary.exp (check partial symtab errors): + Change the expected string. + 2011-07-26 Pedro Alves <pedro@codesourcery.com> * gdb.base/watchpoint.exp diff --git a/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.S b/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.S new file mode 100644 index 0000000..029a9c5 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.S @@ -0,0 +1,201 @@ +/* This testcase is part of GDB, the GNU debugger. + + 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/>. */ + +/* This source file was generated by: + echo 'struct s { char a[1<<24]; int b; } s;' \ + | gcc -dA -o dw2-simple-locdesc.S -S -gdwarf-2 -x c - + */ + .text +var: + + .section .debug_info +.Ldebug_info0: +d: + .4byte .Lcu_end - 1f /* Length of Compilation Unit Info */ +1: + .value 0x2 /* DWARF version number */ + .4byte .Ldebug_abbrev0 /* Offset Into Abbrev. Section */ + .byte 0x4 /* Pointer Size (in bytes) */ + .uleb128 0x1 /* (DIE (0xb) DW_TAG_compile_unit) */ + .4byte .LASF2 /* DW_AT_producer: "GNU C 4.7.0 20110727 (experimental)" */ + .byte 0x1 /* DW_AT_language */ +.Ldie19: + .uleb128 0x2 /* (DIE (0x19) DW_TAG_structure_type) */ + .ascii "s\0" /* DW_AT_name */ + .4byte 0x1000004 /* DW_AT_byte_size */ + .byte 0x1 /* DW_AT_decl_file (<stdin>) */ + .byte 0x1 /* DW_AT_decl_line */ +.Ldie26: + .uleb128 0x3 /* (DIE (0x26) DW_TAG_member) */ + .ascii "a\0" /* DW_AT_name */ + .byte 0x1 /* DW_AT_decl_file (<stdin>) */ + .byte 0x1 /* DW_AT_decl_line */ + .4byte .Ldie41 - d /* DW_AT_type */ + .byte 0x2 /* DW_AT_data_member_location */ + .byte 0x23 /* DW_OP_plus_uconst */ + .uleb128 0 +.Ldie32: + .uleb128 0x3 /* (DIE (0x32) DW_TAG_member) */ + .ascii "b\0" /* DW_AT_name */ + .byte 0x1 /* DW_AT_decl_file (<stdin>) */ + .byte 0x1 /* DW_AT_decl_line */ + .4byte .Ldie62 - d /* DW_AT_type */ + .byte 0x4 /* DW_AT_data_member_location */ + .byte 0x40 /* DW_OP_lit16 */ + .byte 0x44 /* DW_OP_lit20 */ + .byte 0x24 /* DW_OP_shl */ + .byte 0x22 /* DW_OP_plus */ + .byte 0 /* end of children of DIE 0x19 */ +.Ldie41: + .uleb128 0x4 /* (DIE (0x41) DW_TAG_array_type) */ + .4byte .Ldie5b - d /* DW_AT_type */ +.Ldie4a: + .uleb128 0x5 /* (DIE (0x4a) DW_TAG_subrange_type) */ + .4byte .Ldie54 - d /* DW_AT_type */ + .4byte 0xffffff /* DW_AT_upper_bound */ + .byte 0 /* end of children of DIE 0x41 */ +.Ldie54: + .uleb128 0x6 /* (DIE (0x54) DW_TAG_base_type) */ + .byte 0x8 /* DW_AT_byte_size */ + .byte 0x7 /* DW_AT_encoding */ + .4byte .LASF0 /* DW_AT_name: "sizetype" */ +.Ldie5b: + .uleb128 0x6 /* (DIE (0x5b) DW_TAG_base_type) */ + .byte 0x1 /* DW_AT_byte_size */ + .byte 0x6 /* DW_AT_encoding */ + .4byte .LASF1 /* DW_AT_name: "char" */ +.Ldie62: + .uleb128 0x7 /* (DIE (0x62) DW_TAG_base_type) */ + .byte 0x4 /* DW_AT_byte_size */ + .byte 0x5 /* DW_AT_encoding */ + .ascii "int\0" /* DW_AT_name */ +.Ldie69: + .uleb128 0x8 /* (DIE (0x69) DW_TAG_variable) */ + .ascii "s\0" /* DW_AT_name */ + .byte 0x1 /* DW_AT_decl_file (<stdin>) */ + .byte 0x1 /* DW_AT_decl_line */ + .4byte .Ldie19 - d /* DW_AT_type */ + .byte 0x1 /* DW_AT_external */ + .byte 2f - 1f /* DW_AT_location */ +1: + .byte 0x3 /* DW_OP_addr */ + .4byte var +2: + .byte 0 /* end of children of DIE 0xb */ +.Lcu_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 0xe /* (DW_FORM_strp) */ + .uleb128 0x13 /* (DW_AT_language) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .byte 0 + .byte 0 + .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 0x6 /* (DW_FORM_data4) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .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 0x3a /* (DW_AT_decl_file) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x38 /* (DW_AT_data_member_location) */ + .uleb128 0xa /* (DW_FORM_block1) */ + .byte 0 + .byte 0 + .uleb128 0x4 /* (abbrev code) */ + .uleb128 0x1 /* (TAG: DW_TAG_array_type) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .byte 0 + .byte 0 + .uleb128 0x5 /* (abbrev code) */ + .uleb128 0x21 /* (TAG: DW_TAG_subrange_type) */ + .byte 0 /* DW_children_no */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x2f /* (DW_AT_upper_bound) */ + .uleb128 0x6 /* (DW_FORM_data4) */ + .byte 0 + .byte 0 + .uleb128 0x6 /* (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 0xe /* (DW_FORM_strp) */ + .byte 0 + .byte 0 + .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 + .uleb128 0x8 /* (abbrev code) */ + .uleb128 0x34 /* (TAG: DW_TAG_variable) */ + .byte 0 /* DW_children_no */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x3a /* (DW_AT_decl_file) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3b /* (DW_AT_decl_line) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x3f /* (DW_AT_external) */ + .uleb128 0xc /* (DW_FORM_flag) */ + .uleb128 0x2 /* (DW_AT_location) */ + .uleb128 0xa /* (DW_FORM_block1) */ + .byte 0 + .byte 0 + .byte 0 + .section .debug_str +.LASF2: + .string "GNU C 4.7.0 20110727 (experimental)" +.LASF0: + .string "sizetype" +.LASF1: + .string "char" diff --git a/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp b/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp new file mode 100644 index 0000000..9fbca1b --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp @@ -0,0 +1,33 @@ +# 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 "dw2-simple-locdesc" +set srcfile ${testfile}.S +set executable ${testfile}.x +set binfile ${objdir}/${subdir}/${executable} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" object {}] != "" } { + return -1 +} + +clean_restart $executable + +gdb_test "p &s.b" { = \(int \*\) 0x1000000} diff --git a/gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp b/gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp index 78bfefe..db11f71 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp @@ -41,7 +41,7 @@ if [is_remote host] { } } gdb_test_no_output "set complaints 100" -gdb_test "file $binfile" {Reading symbols from .*\.\.\.location description stack underflow\.\.\.location description stack overflow\.\.\.done\.} "check partial symtab errors" +gdb_test "file $binfile" {Reading symbols from .*\.\.\.Asked for position 0 of stack, stack only has 0 elements on it\..*\.\.\.done\.} "check partial symtab errors" gdb_test "p underflow" {Asked for position 0 of stack, stack only has 0 elements on it\.} gdb_test "p overflow" " = 2" |