1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
# Copyright 2013-2015 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/>.
# PR 11786 (Gold and strip differ on flags,align fields of PT_GNU_RELRO).
# Generate a core file from the stripped version of the program,
# and then try to debug the core with the unstripped version.
standard_testfile
if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug additional_flags=-fpie "ldflags=-pie -Wl,-z,relro"}]} {
return -1
}
set stripped_binfile ${binfile}.stripped
set gcorefile ${binfile}.gcore
set strip_program [transform strip]
remote_file host delete ${stripped_binfile}
if [run_on_host "strip" "$strip_program" "-g -o ${stripped_binfile} $binfile"] {
return -1
}
# Workaround PR binutils/10802:
# Preserve the 'x' bit also for PIEs (Position Independent Executables).
set perm [file attributes ${binfile} -permissions]
file attributes ${stripped_binfile} -permissions $perm
clean_restart ${stripped_binfile}
# The binary is stripped of debug info, but not minsyms.
if ![runto break_here] {
fail "Can't run to break_here"
return -1
}
if {![gdb_gcore_cmd $gcorefile "save a corefile"]} {
return -1
}
# Now restart gdb with the unstripped binary and load the corefile.
clean_restart ${binfile}
gdb_test "core ${gcorefile}" \
"Core was generated by .*" "re-load generated corefile"
# Put $pc in gdb.log for debug purposes for comparison with stripped case.
gdb_test "x/i \$pc" "break_here.*"
gdb_test "frame" "#0 \[^\r\n\]* break_here .*" "unstripped + core ok"
|