aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-07-27 17:08:06 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-07-27 17:08:06 +0000
commit3c6e0cb359c01c16799d3aac21e0624c8a5477b4 (patch)
tree9701bb42b33ff4ba13c34555d5206c76ca92daa1 /gdb/testsuite
parent523f3620b87ac8de01a68777bed56e2ede6f68b7 (diff)
downloadbinutils-3c6e0cb359c01c16799d3aac21e0624c8a5477b4.zip
binutils-3c6e0cb359c01c16799d3aac21e0624c8a5477b4.tar.gz
binutils-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/ChangeLog7
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.S201
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp33
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp2
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"