diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-10-17 20:17:45 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-10-17 20:17:45 +0000 |
commit | 94277a38987e6809e7a80208ebb1f77cc2c17d46 (patch) | |
tree | 5c697071b847efa42f79a78f20bf087e27a48121 /gdb/testsuite/gdb.base | |
parent | 6bacc34ddf228e7ec5021e096b3deca26d213b22 (diff) | |
download | gdb-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.exp | 33 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/sepsymtab.c | 23 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/sepsymtab.exp | 53 |
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" + } +} |