diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2007-07-03 12:14:44 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2007-07-03 12:14:44 +0000 |
commit | 3a40aaa0eb849a9aacd6f1e83b94fb8b0947cdfb (patch) | |
tree | 24c19c39630f502332f0e3042a9662c3f20019ad /gdb/testsuite/gdb.base/solib-symbol.exp | |
parent | 3ccac826a3edc921e1e6c5ded9502781cca509af (diff) | |
download | gdb-3a40aaa0eb849a9aacd6f1e83b94fb8b0947cdfb.zip gdb-3a40aaa0eb849a9aacd6f1e83b94fb8b0947cdfb.tar.gz gdb-3a40aaa0eb849a9aacd6f1e83b94fb8b0947cdfb.tar.bz2 |
2007-07-03 Markus Deuling <deuling@de.ibm.com>
* cp-namespace.c (lookup_symbol_file): Add block to
lookup_symbol_global call.
* Makefile.in (solist_h): Add dependency on symtab header.
(symtab.o): Add dependency on solist header.
* solib.c (solib_global_lookup): New function.
* solib-svr4.c (scan_dyntag): Likewise.
(elf_locate_base): Call helper routine scan_dyntag.
(elf_lookup_lib_symbol): New function.
(_initialize_svr4_solib): Add elf_lookup_lib_symbol to svr4_so_ops.
* solist.h (symtab.h): New include.
(struct target_so_ops): New member lookup_lib_global_symbol.
(solib_global_lookup): New prototype.
* symtab.c: New include solist.h.
(lookup_objfile_from_block): New function.
(lookup_global_symbol_from_objfile): New function.
(basic_lookup_symbol_nonlocal): Add block to lookup_symbol_global call.
(lookup_symbol_global): Call library-specific lookup procedure.
* symtab.h (lookup_global_symbol_from_objfile): New prototype.
* NEWS: Document framework.
testsuite/
* gdb.base/solib-symbol.exp: New file (testcase multiple symbol lookup).
* gdb.base/solib-symbol-lib.c: Likewise.
* gdb.base/solib-symbol-main.c: Likewise.
Diffstat (limited to 'gdb/testsuite/gdb.base/solib-symbol.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/solib-symbol.exp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/solib-symbol.exp b/gdb/testsuite/gdb.base/solib-symbol.exp new file mode 100644 index 0000000..0aeeaa1 --- /dev/null +++ b/gdb/testsuite/gdb.base/solib-symbol.exp @@ -0,0 +1,80 @@ +# Copyright 2007 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. +# +# Contributed by Markus Deuling <deuling@de.ibm.com>. +# + +if {[skip_shlib_tests]} { + return 0 +} + +# Library file. +set libname "solib-symbol-lib" +set srcfile_lib ${srcdir}/${subdir}/${libname}.c +set binfile_lib ${objdir}/${subdir}/${libname}.so +set lib_flags [list debug ldflags=-Wl,-Bsymbolic] +# Binary file. +set testfile "solib-symbol-main" +set srcfile ${srcdir}/${subdir}/${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +set bin_flags [list debug shlib=${binfile_lib}] + +if [get_compiler_info ${binfile}] { + return -1 +} + +if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib} $lib_flags] != "" + || [gdb_compile ${srcfile} ${binfile} executable $bin_flags] != "" } { + untested "Could not compile $binfile_lib or $binfile." + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} +gdb_load_shlibs $binfile_lib + +if ![runto_main] then { + fail "Can't run to main" + return 0 +} + +# Set a breakpoint in the binary. +gdb_test "br foo2" \ + "Breakpoint.*file.*${srcfile}.*" \ + "foo2 in main" + +delete_breakpoints + +# Break in the library. +gdb_test "br foo" \ + "" \ + "foo in libmd" + +gdb_test "continue" \ + "Continuing.*" \ + "continue" + +# This symbol is now looked up in the ELF library. +gdb_test "br foo2" \ + "Breakpoint.*file.*${srcfile_lib}.*" \ + "foo2 in mdlib" + +gdb_exit + +return 0 + + |