From 0eb3658b8f6111c10a0edf1002e38e843c5bf5a0 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Tue, 12 Oct 2004 14:41:42 +0000 Subject: [PATCH] * 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. --- gdb/testsuite/ChangeLog | 9 ++ gdb/testsuite/Makefile.in | 1 + gdb/testsuite/configure | 8 +- gdb/testsuite/configure.in | 4 +- gdb/testsuite/gdb.dwarf2/Makefile.in | 38 +++++ gdb/testsuite/gdb.dwarf2/dw2-basic.S | 201 +++++++++++++++++++++++++ gdb/testsuite/gdb.dwarf2/dw2-basic.exp | 52 +++++++ gdb/testsuite/gdb.dwarf2/file1.txt | 8 + gdb/testsuite/gdb.dwarf2/main.c | 26 ++++ 9 files changed, 341 insertions(+), 6 deletions(-) create mode 100644 gdb/testsuite/gdb.dwarf2/Makefile.in create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-basic.S create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-basic.exp create mode 100644 gdb/testsuite/gdb.dwarf2/file1.txt create mode 100644 gdb/testsuite/gdb.dwarf2/main.c 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 + + * 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 * 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 <> $CONFIG_STATUS <> $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; +} -- 2.30.2