binutils-gdb/gdb/testsuite/gdb.base/info-shared.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

147 lines
4.3 KiB
Plaintext

# Copyright 2012-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/>.
if { [skip_shlib_tests] } {
return 0
}
standard_testfile
set lib1name $testfile-solib1
set srcfile_lib1 $srcdir/$subdir/$lib1name.c
set binfile_lib1 [standard_output_file $lib1name.so]
set define1 -DSHLIB1_NAME=\"$binfile_lib1\"
set lib2name $testfile-solib2
set srcfile_lib2 $srcdir/$subdir/$lib2name.c
set binfile_lib2 [standard_output_file $lib2name.so]
set define2 -DSHLIB2_NAME=\"$binfile_lib2\"
if { [gdb_compile_shlib $srcfile_lib1 $binfile_lib1 \
[list additional_flags=-fPIC]] != "" } {
untested "failed to compile shared library 1"
return -1
}
if { [gdb_compile_shlib $srcfile_lib2 $binfile_lib2 \
[list additional_flags=-fPIC]] != "" } {
untested "failed to compile shared library 2"
return -1
}
set cflags "$define1 $define2"
if { [prepare_for_testing "failed to prepare" $testfile $srcfile \
[list additional_flags=$cflags libs=-ldl]] } {
return -1
}
# Run "info sharedlibrary" and check for the presence or absence of
# our libraries.
proc check_info_shared { test expect1 expect2 } {
global lib1name
global lib2name
global gdb_prompt
set actual1 0
set actual2 0
gdb_test_multiple "info sharedlibrary" $test {
-re $lib1name {
set actual1 1
exp_continue
}
-re $lib2name {
set actual2 1
exp_continue
}
-re "\r\n$gdb_prompt $" {
if { $actual1 == $expect1 && $actual2 == $expect2 } {
pass $test
} else {
fail $test
}
}
}
}
# Start the inferior, and check neither of the libraries are loaded at
# the start.
if ![runto_main] {
return 0
}
check_info_shared "info sharedlibrary #1" 0 0
# Set up breakpoints.
gdb_breakpoint "stop"
gdb_breakpoint "foo" allow-pending
gdb_breakpoint "bar" allow-pending
# Run to the first stop and check that only the first library is loaded.
gdb_continue_to_breakpoint "library load #1" "\\.?stop .*"
check_info_shared "info sharedlibrary #2" 1 0
# Run to the second stop and check that both libraries are loaded.
gdb_continue_to_breakpoint "library load #2" "\\.?stop .*"
check_info_shared "info sharedlibrary #3" 1 1
# Check that the next stop is in foo.
gdb_continue_to_breakpoint "library function #1" "\\.?foo .*"
# Check that the next stop is in bar.
gdb_continue_to_breakpoint "library function #2" "\\.?bar .*"
# Restart the inferior and make sure there are no breakpoint reset
# errors. These can happen with the probes-based runtime linker
# interface if the cache is not cleared correctly.
set test "restart"
gdb_run_cmd
gdb_test_multiple "" $test {
-re {Start it from the beginning\? \(y or n\) $} {
send_gdb "y\n"
exp_continue
}
-re {Error in re-setting breakpoint} {
fail $test
}
-re "\r\n$gdb_prompt $" {
pass $test
}
}
# Check that neither library is loaded.
check_info_shared "info sharedlibrary #4" 0 0
# Run to the first stop and check that only the first library is loaded.
gdb_continue_to_breakpoint "library load #3" "\\.?stop .*"
check_info_shared "info sharedlibrary #5" 1 0
# Run to the second stop and check that both libraries are loaded.
gdb_continue_to_breakpoint "library load #4" "\\.?stop .*"
check_info_shared "info sharedlibrary #6" 1 1
# Check that the next stop is in foo.
gdb_continue_to_breakpoint "library function #3" "\\.?foo .*"
# Check that the next stop is in bar.
gdb_continue_to_breakpoint "library function #4" "\\.?bar .*"
# Run to the next stop and check that the first library has been unloaded.
gdb_continue_to_breakpoint "library unload #1" "\\.?stop .*"
check_info_shared "info sharedlibrary #7" 0 1
# Run to the last stop and check that both libraries are gone.
gdb_continue_to_breakpoint "library unload #2" "\\.?stop .*"
check_info_shared "info sharedlibrary #8" 0 0