binutils-gdb/gdb/testsuite/gdb.base/solib-weak.exp
Joel Brobecker 61baf725ec update copyright year range in GDB files
This applies the second part of GDB's End of Year Procedure, which
updates the copyright year range in all of GDB's files.

gdb/ChangeLog:

        Update copyright year range in all GDB files.
2017-01-01 10:52:34 +04:00

114 lines
3.2 KiB
Text

# Copyright 2006-2017 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 3 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, see <http://www.gnu.org/licenses/>.
# Test setting breakpoints on shared library functions provided by more
# than one shared library, when one of the implementations is a "weak"
# symbol. GDB should set a breakpoint at the first copy it finds.
if {[skip_shlib_tests]} {
return 0
}
# These targets have shared libraries, but weak symbols are not meaningful.
if {([istarget arm*-*-symbianelf*]
|| [istarget *-*-mingw*]
|| [istarget *-*-cygwin*]
|| [istarget *-*-pe*])} {
return 0
}
# This test uses GCC-specific syntax.
if [get_compiler_info] {
return -1
}
if {![test_compiler_info "gcc-*"]} {
return 0
}
proc do_test { lib1opts lib2opts lib1first } {
global srcdir subdir
set testfile "solib-weak"
set srcfile ${testfile}.c
set libfile1 "weaklib1"
set libfile2 "weaklib2"
set lib1src ${srcdir}/${subdir}/${libfile1}.c
set lib2src ${srcdir}/${subdir}/${libfile2}.c
# Select a unique name for this test. Give each library and
# executable a name reflecting its options, so that file caching
# on the target system does not pick up the wrong file.
set testopts ""
if {$lib1opts == ""} {
append testopts "lib1 nodebug, "
} else {
append testopts "lib1 debug, "
append lib1 "-dbg"
}
if {$lib2opts == ""} {
append testopts "lib2 nodebug, "
} else {
append testopts "lib2 debug, "
append lib2 "-dbg"
}
if {$lib1first} {
append testopts "lib1 first"
} else {
append testopts "lib2 first"
append testfile "-lib2"
}
set binfile [standard_output_file ${testfile}]
set lib1 [standard_output_file ${libfile1}.sl]
set lib2 [standard_output_file ${libfile2}.sl]
if $lib1first {
set exec_opts [list debug shlib=${lib1} shlib=${lib2}]
set expected_file ${libfile1}
} else {
set exec_opts [list debug shlib=${lib2} shlib=${lib1}]
set expected_file ${libfile2}
}
if { [gdb_compile_shlib ${lib1src} ${lib1} ${lib1opts}] != ""
|| [gdb_compile_shlib ${lib2src} ${lib2} ${lib2opts}] != ""
|| [gdb_compile "${srcdir}/${subdir}/${srcfile}" ${binfile} executable $exec_opts] != ""} {
return -1
}
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
gdb_load_shlib $lib1
gdb_load_shlib $lib2
runto_main
gdb_breakpoint "bar"
gdb_test "continue" "Breakpoint .* \\.?bar .*${expected_file}\\..*" \
"run to breakpoint - $testopts"
}
foreach lib1opts {{} {debug}} {
foreach lib2opts {{} {debug}} {
foreach lib1first {1 0} {
do_test $lib1opts $lib2opts $lib1first
}
}
}