2017-01-01 07:50:51 +01:00
|
|
|
# Copyright 2002-2017 Free Software Foundation, Inc.
|
2002-04-05 04:45:48 +02:00
|
|
|
|
|
|
|
# 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
|
2007-08-23 20:14:19 +02:00
|
|
|
# the Free Software Foundation; either version 3 of the License, or
|
2002-04-05 04:45:48 +02:00
|
|
|
# (at your option) any later version.
|
2007-08-23 20:14:19 +02:00
|
|
|
#
|
2002-04-05 04:45:48 +02:00
|
|
|
# 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.
|
2007-08-23 20:14:19 +02:00
|
|
|
#
|
2002-04-05 04:45:48 +02:00
|
|
|
# You should have received a copy of the GNU General Public License
|
2007-08-23 20:14:19 +02:00
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
2002-04-05 04:45:48 +02:00
|
|
|
|
|
|
|
# relocate.exp -- Expect script to test loading symbols from unrelocated
|
|
|
|
# object files.
|
|
|
|
|
test suite update - gdb.base/[n-r]
Convert files gdb.base/[n-r]*.exp to use standard_output_file et al.
* gdb.base/nextoverexit.exp, gdb.base/nextoverexit.exp,
gdb.base/nodebug.exp, gdb.base/nofield.exp, gdb.base/nostdlib.exp,
gdb.base/opaque.exp, gdb.base/overlays.exp, gdb.base/pc-fp.exp,
gdb.base/pending.exp, gdb.base/permissions.exp,
gdb.base/pie-execl.exp, gdb.base/pointers.exp,
gdb.base/pr11022.exp, gdb.base/print-file-var.exp,
gdb.base/printcmds.exp, gdb.base/prologue.exp,
gdb.base/psymtab.exp, gdb.base/ptr-typedef.exp,
gdb.base/ptype.exp, gdb.base/randomize.exp,
gdb.base/readline-ask.exp, gdb.base/recpar.exp,
gdb.base/recurse.exp, gdb.base/relativedebug.exp,
gdb.base/relocate.exp, gdb.base/remote.exp, gdb.base/reread.exp,
gdb.base/return-nodebug.exp, gdb.base/return2.exp: Use
standard_testfile, standard_output_file, prepare_for_testing,
clean_restart.
2013-06-27 20:53:49 +02:00
|
|
|
standard_testfile .c
|
|
|
|
append binfile .o
|
2002-04-05 04:45:48 +02:00
|
|
|
|
|
|
|
remote_exec build "rm -f ${binfile}"
|
2003-01-20 16:40:07 +01:00
|
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" object {debug}] != "" } {
|
2016-12-01 21:47:50 +01:00
|
|
|
untested "failed to compile"
|
2006-08-10 07:27:22 +02:00
|
|
|
return -1
|
2002-04-05 04:45:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
gdb_exit
|
|
|
|
gdb_start
|
|
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
|
|
|
2013-09-04 08:17:08 +02:00
|
|
|
#Check that invalid options are rejected.
|
|
|
|
foreach x {"-raednow" "readnow" "foo" "-readnow s"} {
|
|
|
|
gdb_test "add-symbol-file ${binfile} 0 $x" \
|
|
|
|
"USAGE: add-symbol-file <filename> <textaddress>.*-readnow.*-s <secname> <addr>.*" \
|
|
|
|
"add-symbol-file: unknown option $x"
|
|
|
|
}
|
|
|
|
|
2002-04-05 04:45:48 +02:00
|
|
|
# Load the object file.
|
|
|
|
gdb_test "add-symbol-file ${binfile} 0" \
|
2003-09-11 20:59:02 +02:00
|
|
|
"Reading symbols from .*${testfile}\\.o\\.\\.\\.done\\.(|\r\nUsing host libthread_db library .*libthread_db.so.*\\.)" \
|
2002-04-05 04:45:48 +02:00
|
|
|
"add-symbol-file ${testfile}.o 0" \
|
|
|
|
"add symbol table from file \".*${testfile}\\.o\" at\[ \t\r\n\]+\.text_addr = 0x0\[\r\n\]+\\(y or n\\) " \
|
|
|
|
"y"
|
|
|
|
|
|
|
|
# Print the addresses of static variables.
|
|
|
|
set static_foo_addr [get_var_address static_foo]
|
|
|
|
set static_bar_addr [get_var_address static_bar]
|
|
|
|
|
|
|
|
# Make sure they have different addresses.
|
|
|
|
if { "${static_foo_addr}" == "${static_bar_addr}" } {
|
|
|
|
fail "static variables have different addresses"
|
|
|
|
} else {
|
|
|
|
pass "static variables have different addresses"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Print the addresses of global variables.
|
|
|
|
set global_foo_addr [get_var_address global_foo]
|
|
|
|
set global_bar_addr [get_var_address global_bar]
|
|
|
|
|
|
|
|
# Make sure they have different addresses.
|
|
|
|
if { "${global_foo_addr}" == "${global_bar_addr}" } {
|
|
|
|
fail "global variables have different addresses"
|
|
|
|
} else {
|
|
|
|
pass "global variables have different addresses"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Print the addresses of functions.
|
|
|
|
set function_foo_addr [get_var_address function_foo]
|
|
|
|
set function_bar_addr [get_var_address function_bar]
|
|
|
|
|
|
|
|
# Make sure they have different addresses.
|
|
|
|
if { "${function_foo_addr}" == "${function_bar_addr}" } {
|
|
|
|
fail "functions have different addresses"
|
|
|
|
} else {
|
|
|
|
pass "functions have different addresses"
|
|
|
|
}
|
|
|
|
|
2003-06-22 20:32:38 +02:00
|
|
|
# Now use a variable as an offset to add-symbol-file, and check that
|
|
|
|
# the functions' addresses change.
|
|
|
|
|
|
|
|
gdb_exit
|
|
|
|
gdb_start
|
|
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
|
|
|
2010-06-01 23:29:21 +02:00
|
|
|
gdb_test_no_output "set \$offset = 0x10000"
|
2003-06-22 20:32:38 +02:00
|
|
|
|
|
|
|
# Load the object file.
|
|
|
|
gdb_test "add-symbol-file ${binfile} \$offset" \
|
2003-09-11 20:59:02 +02:00
|
|
|
"Reading symbols from .*${testfile}\\.o\\.\\.\\.done\\.(|\r\nUsing host libthread_db library .*libthread_db.so.*\\.)" \
|
2003-06-22 20:32:38 +02:00
|
|
|
"add-symbol-file ${testfile}.o \$offset" \
|
|
|
|
"add symbol table from file \".*${testfile}\\.o\" at\[ \t\r\n\]+\.text_addr = 0x10000\[\r\n\]+\\(y or n\\) " \
|
|
|
|
"y"
|
|
|
|
|
|
|
|
# Print the addresses of functions.
|
|
|
|
set new_function_foo_addr [get_var_address function_foo]
|
|
|
|
|
|
|
|
# Make sure they have different addresses.
|
|
|
|
if { "${function_foo_addr}" == "${new_function_foo_addr}" } {
|
|
|
|
fail "function foo has a different address"
|
|
|
|
} else {
|
|
|
|
pass "function foo has a different address"
|
|
|
|
}
|
|
|
|
|
2005-06-13 18:15:40 +02:00
|
|
|
# Now try loading the object as an exec-file; we should be able to print
|
|
|
|
# the values of variables after we do this.
|
|
|
|
|
|
|
|
gdb_exit
|
|
|
|
gdb_start
|
|
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
2006-05-18 01:59:40 +02:00
|
|
|
gdb_file_cmd ${binfile}
|
2005-06-13 18:15:40 +02:00
|
|
|
|
|
|
|
# Check the values of the variables.
|
|
|
|
gdb_test "print static_foo" "\\\$$decimal = 1"
|
|
|
|
gdb_test "print static_bar" "\\\$$decimal = 2"
|
|
|
|
gdb_test "print global_foo" "\\\$$decimal = 3"
|
|
|
|
gdb_test "print global_bar" "\\\$$decimal = 4"
|