aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-10-17 20:17:45 +0000
committerDaniel Jacobowitz <drow@false.org>2006-10-17 20:17:45 +0000
commit94277a38987e6809e7a80208ebb1f77cc2c17d46 (patch)
tree5c697071b847efa42f79a78f20bf087e27a48121 /gdb/testsuite/gdb.base
parent6bacc34ddf228e7ec5021e096b3deca26d213b22 (diff)
downloadgdb-94277a38987e6809e7a80208ebb1f77cc2c17d46.zip
gdb-94277a38987e6809e7a80208ebb1f77cc2c17d46.tar.gz
gdb-94277a38987e6809e7a80208ebb1f77cc2c17d46.tar.bz2
gdb/
* Makefile.in (symtab.o): Update. * symtab.h (matching_bfd_section): New prototype. * symtab.c (matching_bfd_section): New. (find_pc_sect_psymbol, find_pc_sect_symtab): Use it. * minsyms.c (lookup_minimal_symbol_by_pc_section): Likewise. * printcmd.c (sym_info): Ignore separate debug objfiles. gdb/testsuite/ * gdb.base/sepdebug.exp: Remove debug format test. * lib/gdb.exp (gdb_gnu_strip_debug): Perform debug format test. Handle no-symtab. * gdb.base/sepsymtab.c, gdb.base/sepsymtab.exp: New.
Diffstat (limited to 'gdb/testsuite/gdb.base')
-rw-r--r--gdb/testsuite/gdb.base/sepdebug.exp33
-rw-r--r--gdb/testsuite/gdb.base/sepsymtab.c23
-rw-r--r--gdb/testsuite/gdb.base/sepsymtab.exp53
3 files changed, 76 insertions, 33 deletions
diff --git a/gdb/testsuite/gdb.base/sepdebug.exp b/gdb/testsuite/gdb.base/sepdebug.exp
index 5bc00c5..4593549 100644
--- a/gdb/testsuite/gdb.base/sepdebug.exp
+++ b/gdb/testsuite/gdb.base/sepdebug.exp
@@ -47,39 +47,6 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
return -1
}
-# FIXME: this is nasty. We need to check for the stabs debug format.
-# To do this we must run gdb on the unstripped executable, list 'main'
-# (as to have a default source file), use get_debug_format (which does
-# 'info source') and then see if the debug info is stabs. If so, we
-# bail out. We cannot do this any other way because get_debug_format
-# finds out the debug format using gdb itself, and in case of stabs we
-# get an error loading the program if it is already stripped. An
-# alternative would be to find out the debug info from the flags
-# passed to dejagnu when the test is run.
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-gdb_test "list main" "" ""
-get_debug_format
-if { [test_debug_format "stabs"] } then {
- # the separate debug info feature doesn't work well in binutils with stabs.
- # It produces a corrupted debug info only file, and gdb chokes on it.
- # It is almost impossible to capture the failing message out of gdb,
- # because it happens inside gdb_load. At that point any error message
- # is intercepted by dejagnu itself, and, because of the error threshold,
- # any faulty test result is changed into an UNRESOLVED.
- # (see dejagnu/lib/framework.exp)
- unsupported "no separate debug info handling with stabs"
- return -1
-} elseif { [test_debug_format "unknown"] } then {
- # gdb doesn't know what the debug format is. We are out of luck here.
- unsupported "unknown debugging format"
- return -1
-}
-gdb_exit
-
# Note: the procedure gdb_gnu_strip_debug will produce an executable called
# ${binfile}, which is just like the executable ($binfile) but without
# the debuginfo. Instead $binfile has a .gnudebuglink section which contains
diff --git a/gdb/testsuite/gdb.base/sepsymtab.c b/gdb/testsuite/gdb.base/sepsymtab.c
new file mode 100644
index 0000000..1c53958
--- /dev/null
+++ b/gdb/testsuite/gdb.base/sepsymtab.c
@@ -0,0 +1,23 @@
+/* Copyright 2006
+ 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. */
+
+int
+main (int argc, char **argv, char **envp)
+{
+ return 0;
+}
diff --git a/gdb/testsuite/gdb.base/sepsymtab.exp b/gdb/testsuite/gdb.base/sepsymtab.exp
new file mode 100644
index 0000000..b386f3c
--- /dev/null
+++ b/gdb/testsuite/gdb.base/sepsymtab.exp
@@ -0,0 +1,53 @@
+# Copyright 2006
+# 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.
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+#
+# test running programs
+#
+
+set testfile "sepsymtab"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
+ executable {debug}] != "" } {
+ untested sepsymtab.exp
+ return -1
+}
+
+if [gdb_gnu_strip_debug $binfile no-main] {
+ # check that you have a recent version of strip and objcopy installed
+ unsupported "cannot produce separate debug info files"
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+set command "info sym main"
+set command_regex [string_to_regexp $command]
+gdb_test_multiple "$command" "$command" {
+ -re "^${command_regex}\[\r\n\]+main in section \[^\r\n\]+\[\r\n\]+$gdb_prompt \$" {
+ pass "$command"
+ }
+}