summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2004-10-12 14:41:42 +0000
committerDaniel Jacobowitz <dan@debian.org>2004-10-12 14:41:42 +0000
commiteab3e20ab670292f93c0b95cf6e616b1a50a52b4 (patch)
treef4a075e8d90e848f20761ae495393c651f6855a8
parent6187a6c231af9bbef3815ff052f4da5aaa31cb6f (diff)
downloadgdb-eab3e20ab670292f93c0b95cf6e616b1a50a52b4.tar.gz
* configure.in: Add gdb.dwarf2.
* configure: Regenerated. * Makefile.in: Add gdb.dwarf2. * gdb.dwarf2/Makefile.in, gdb.dwarf2/dw2-basic.S, gdb.dwarf2/dw2-basic.exp, gdb.dwarf2/main.c, gdb.dwarf2/file1.txt: New files.
-rw-r--r--gdb/testsuite/ChangeLog9
-rw-r--r--gdb/testsuite/Makefile.in1
-rwxr-xr-xgdb/testsuite/configure8
-rw-r--r--gdb/testsuite/configure.in4
-rw-r--r--gdb/testsuite/gdb.dwarf2/Makefile.in38
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-basic.S201
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-basic.exp52
-rw-r--r--gdb/testsuite/gdb.dwarf2/file1.txt8
-rw-r--r--gdb/testsuite/gdb.dwarf2/main.c26
9 files changed, 341 insertions, 6 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index c26f30c79b9..01fc5d6bc2a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2004-10-12 Daniel Jacobowitz <dan@debian.org>
+
+ * configure.in: Add gdb.dwarf2.
+ * configure: Regenerated.
+ * Makefile.in: Add gdb.dwarf2.
+ * gdb.dwarf2/Makefile.in, gdb.dwarf2/dw2-basic.S,
+ gdb.dwarf2/dw2-basic.exp, gdb.dwarf2/main.c,
+ gdb.dwarf2/file1.txt: New files.
+
2004-10-11 Orjan Friberg <orjanf@axis.com>
* gdb.threads/bp_in_thread.exp: Use runto_main and "continue" instead
diff --git a/gdb/testsuite/Makefile.in b/gdb/testsuite/Makefile.in
index d9be89c5e7b..5aa82622dd7 100644
--- a/gdb/testsuite/Makefile.in
+++ b/gdb/testsuite/Makefile.in
@@ -36,6 +36,7 @@ EXEEXT = @EXEEXT@
SUBDIRS = @subdirs@
RPATH_ENVVAR = @RPATH_ENVVAR@
ALL_SUBDIRS = gdb.ada gdb.arch gdb.asm gdb.base gdb.cp gdb.disasm \
+ gdb.dwarf2 \
gdb.fortran gdb.java gdb.mi gdb.objc gdb.threads gdb.trace \
$(SUBDIRS)
diff --git a/gdb/testsuite/configure b/gdb/testsuite/configure
index 271e11d1281..43a843f3d8f 100755
--- a/gdb/testsuite/configure
+++ b/gdb/testsuite/configure
@@ -1052,8 +1052,8 @@ ac_given_srcdir=$srcdir
trap 'rm -fr `echo "Makefile \
gdb.ada/Makefile gdb.ada/gnat_ada.gpr:gdb.ada/gnat_ada.gin \
gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile \
- gdb.cp/Makefile gdb.disasm/Makefile gdb.fortran/Makefile \
- gdb.java/Makefile gdb.mi/Makefile \
+ gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile \
+ gdb.fortran/Makefile gdb.java/Makefile gdb.mi/Makefile \
gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -1149,8 +1149,8 @@ cat >> $CONFIG_STATUS <<EOF
CONFIG_FILES=\${CONFIG_FILES-"Makefile \
gdb.ada/Makefile gdb.ada/gnat_ada.gpr:gdb.ada/gnat_ada.gin \
gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile \
- gdb.cp/Makefile gdb.disasm/Makefile gdb.fortran/Makefile \
- gdb.java/Makefile gdb.mi/Makefile \
+ gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile \
+ gdb.fortran/Makefile gdb.java/Makefile gdb.mi/Makefile \
gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile"}
EOF
cat >> $CONFIG_STATUS <<\EOF
diff --git a/gdb/testsuite/configure.in b/gdb/testsuite/configure.in
index 8b90e04484c..02c0a04e9e0 100644
--- a/gdb/testsuite/configure.in
+++ b/gdb/testsuite/configure.in
@@ -121,6 +121,6 @@ AC_CONFIG_SUBDIRS($configdirs)
AC_OUTPUT([Makefile \
gdb.ada/Makefile gdb.ada/gnat_ada.gpr:gdb.ada/gnat_ada.gin \
gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile \
- gdb.cp/Makefile gdb.disasm/Makefile gdb.fortran/Makefile \
- gdb.java/Makefile gdb.mi/Makefile \
+ gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile \
+ gdb.fortran/Makefile gdb.java/Makefile gdb.mi/Makefile \
gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile])
diff --git a/gdb/testsuite/gdb.dwarf2/Makefile.in b/gdb/testsuite/gdb.dwarf2/Makefile.in
new file mode 100644
index 00000000000..c338e0274f4
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/Makefile.in
@@ -0,0 +1,38 @@
+# Makefile for regression testing the GNU debugger.
+# Copyright 1992, 1993, 1994, 1995, 1996, 1999, 2001, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This file is part of GDB.
+
+# GDB 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 2, or (at your option)
+# any later version.
+
+# GDB 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+VPATH = @srcdir@
+srcdir = @srcdir@
+
+EXECUTABLES = *.x
+
+all info install-info dvi install uninstall installcheck check:
+ @echo "Nothing to be done for $@..."
+
+clean mostlyclean:
+ -rm -f *~ *.o a.out *.x *.ci *.tmp
+ -rm -f core core.coremaker coremaker.core corefile
+ -rm -f $(EXECUTABLES)
+
+distclean maintainer-clean realclean: clean
+ -rm -f *~ core
+ -rm -f Makefile config.status config.log
+ -rm -f *-init.exp
+ -rm -fr *.log summary detail *.plog *.sum *.psum site.*
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-basic.S b/gdb/testsuite/gdb.dwarf2/dw2-basic.S
new file mode 100644
index 00000000000..1e98a4d6edf
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-basic.S
@@ -0,0 +1,201 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2004 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 2 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, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ USA. */
+
+/* Test a minimal file containing DWARF-2 information. This test also
+ serves as a skeleton for other DWARF-2 tests. Most other tests will
+ not be this extensively itemized and commented... */
+
+/* Dummy function to provide debug information for. */
+
+ .text
+.Lbegin_text1:
+ .globl func_cu1
+ .type func_cu1, %function
+func_cu1:
+.Lbegin_func_cu1:
+ .int 0
+.Lend_func_cu1:
+ .size func_cu1, .-func_cu1
+.Lend_text1:
+
+/* Debug information */
+
+ .section .debug_info
+.Lcu1_begin:
+ /* CU header */
+ .int .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
+.Lcu1_start:
+ .short 2 /* DWARF Version */
+ .int .Labbrev1_begin /* Offset into abbrev section */
+ .byte 4 /* Pointer size */
+
+ /* CU die */
+ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */
+ .int .Lline1_begin /* DW_AT_stmt_list */
+ .int .Lend_text1 /* DW_AT_high_pc */
+ .int .Lbegin_text1 /* DW_AT_low_pc */
+ .ascii "file1.txt\0" /* DW_AT_name */
+ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */
+ .byte 1 /* DW_AT_language (C) */
+
+ /* func_cu1 */
+ .uleb128 2 /* Abbrev: DW_TAG_subprogram */
+ .byte 1 /* DW_AT_external */
+ .byte 1 /* DW_AT_decl_file */
+ .byte 2 /* DW_AT_decl_line */
+ .ascii "func_cu1\0" /* DW_AT_name */
+ .int .Ltype_int-.Lcu1_begin /* DW_AT_type */
+ .int .Lbegin_func_cu1 /* DW_AT_low_pc */
+ .int .Lend_func_cu1 /* DW_AT_high_pc */
+ .byte 1 /* DW_AT_frame_base: length */
+ .byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */
+
+.Ltype_int:
+ .uleb128 3 /* Abbrev: DW_TAG_base_type */
+ .ascii "int\0" /* DW_AT_name */
+ .byte 4 /* DW_AT_byte_size */
+ .byte 5 /* DW_AT_encoding */
+
+ .byte 0 /* End of children of CU */
+
+.Lcu1_end:
+
+/* Abbrev table */
+ .section .debug_abbrev
+.Labbrev1_begin:
+ .uleb128 1 /* Abbrev code */
+ .uleb128 0x11 /* DW_TAG_compile_unit */
+ .byte 1 /* has_children */
+ .uleb128 0x10 /* DW_AT_stmt_list */
+ .uleb128 0x6 /* DW_FORM_data4 */
+ .uleb128 0x12 /* DW_AT_high_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x11 /* DW_AT_low_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x25 /* DW_AT_producer */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x13 /* DW_AT_language */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .uleb128 2 /* Abbrev code */
+ .uleb128 0x2e /* DW_TAG_subprogram */
+ .byte 0 /* has_children */
+ .uleb128 0x3f /* DW_AT_external */
+ .uleb128 0xc /* DW_FORM_flag */
+ .uleb128 0x3a /* DW_AT_decl_file */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3b /* DW_AT_decl_line */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x49 /* DW_AT_type */
+ .uleb128 0x13 /* DW_FORM_ref4 */
+ .uleb128 0x11 /* DW_AT_low_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x12 /* DW_AT_high_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x40 /* DW_AT_frame_base */
+ .uleb128 0xa /* DW_FORM_block1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .uleb128 3 /* Abbrev code */
+ .uleb128 0x24 /* DW_TAG_base_type */
+ .byte 0 /* has_children */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0xb /* DW_AT_byte_size */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3e /* DW_AT_encoding */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+/* Line table */
+ .section .debug_line
+.Lline1_begin:
+ .int .Lline1_end - .Lline1_start /* Initial length */
+.Lline1_start:
+ .short 2 /* Version */
+ .int .Lline1_lines - .Lline1_hdr /* header_length */
+.Lline1_hdr:
+ .byte 1 /* Minimum insn length */
+ .byte 1 /* default_is_stmt */
+ .byte 1 /* line_base */
+ .byte 1 /* line_range */
+ .byte 0x10 /* opcode_base */
+
+ /* Standard lengths */
+ .byte 0
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+
+ /* Include directories */
+ .byte 0
+
+ /* File names */
+ .ascii "file1.txt\0"
+ .uleb128 0
+ .uleb128 0
+ .uleb128 0
+
+ .byte 0
+
+.Lline1_lines:
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .int .Lbegin_func_cu1
+
+ .byte 3 /* DW_LNS_advance_line */
+ .sleb128 3 /* ... to 4 */
+
+ .byte 1 /* DW_LNS_copy */
+
+ .byte 1 /* DW_LNS_copy (second time as an end-of-prologue marker) */
+
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .int .Lend_func_cu1
+
+ .byte 0 /* DW_LNE_end_of_sequence */
+ .uleb128 1
+ .byte 1
+
+.Lline1_end:
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-basic.exp b/gdb/testsuite/gdb.dwarf2/dw2-basic.exp
new file mode 100644
index 00000000000..ff4b37ee050
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-basic.exp
@@ -0,0 +1,52 @@
+# Copyright 2004
+# 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 2 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Minimal DWARF-2 unit test
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+# For now pick a sampling of likely targets.
+if {![istarget *-*-linux*]
+ && ![istarget *-*-elf*]
+ && ![istarget arm-*-eabi*]
+ && ![istarget powerpc-*-eabi*]} {
+ return 0
+}
+
+set testfile "dw2-basic"
+set srcfile ${testfile}.S
+set binfile ${objdir}/${subdir}/${testfile}.x
+
+if { [gdb_compile "${srcdir}/${subdir}/main.c" "main.o" object {debug}] != "" } {
+ return -1
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${testfile}.o" object {nodebug}] != "" } {
+ return -1
+}
+
+if { [gdb_compile "${testfile}.o main.o" "${binfile}" executable {debug}] != "" } {
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+gdb_test "set listsize 1" ""
+gdb_test "list func_cu1" "4\tFile 1 Line 4"
+gdb_test "ptype func_cu1" "type = int \\(\\)"
diff --git a/gdb/testsuite/gdb.dwarf2/file1.txt b/gdb/testsuite/gdb.dwarf2/file1.txt
new file mode 100644
index 00000000000..b745e3abefe
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/file1.txt
@@ -0,0 +1,8 @@
+File 1 Line 1
+File 1 Line 2
+File 1 Line 3
+File 1 Line 4
+File 1 Line 5
+File 1 Line 6
+File 1 Line 7
+File 1 Line 8
diff --git a/gdb/testsuite/gdb.dwarf2/main.c b/gdb/testsuite/gdb.dwarf2/main.c
new file mode 100644
index 00000000000..87442ac0a59
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/main.c
@@ -0,0 +1,26 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2004 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 2 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, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ USA. */
+
+/* Dummy main function. */
+
+int
+main()
+{
+ return 0;
+}