binutils-gdb/gdb/testsuite/gdb.arch/powerpc-fpscr-gcore.exp
Pedro Franco de Carvalho 0ec848ad25 [PowerPC] Recognize isa205 in linux core files
Currently the ppc linux core file target doesn't return target
descriptions with the lager FPSCR introduced in isa205.

This patch changes the core file target so that the auxv is read from
the core file to determine the size of FPSCR, so that the appropriate
target description is selected.

gdb/ChangeLog:
2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>

	* arch/ppc-linux-common.c (ppc_linux_has_isa205): Change the
	parameter type to CORE_ADDR.
	* arch/ppc-linux-common.h (ppc_linux_has_isa205): Change the
	parameter type in declaration to CORE_ADDR.
	* ppc-linux-tdep.c (ppc_linux_core_read_description): Call
	target_auxv_search to get AT_HWCAP and use the result to get the
	target description.
	* ppc-linux-nat.c (ppc_linux_get_hwcap): Change the return type
	to CORE_ADDR. Remove the cast of the return value to unsigned
	long. Fix error predicate of target_auxv_search.
	(ppc_linux_nat_target::read_description): Change the type of the
	hwcap variable to CORE_ADDR.

gdb/testsuite/ChangeLog:
2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>

	* gdb.arch/powerpc-fpscr-gcore.exp: New file.
2018-05-22 11:52:03 -03:00

94 lines
2.2 KiB
Plaintext

# Copyright (C) 2018 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/>.
# This file is part of the gdb testsuite.
# This tests checks that generating and loading a core file preserves
# the correct FPSCR size.
if {![istarget "powerpc*-*-linux*"]} then {
verbose "Skipping PowerPC test for corefiles with FPSCR."
return
}
standard_testfile .c
set gen_src [standard_output_file $srcfile]
gdb_produce_source $gen_src {
int main() {
return 0;
}
}
if {[build_executable "compile" $binfile $gen_src] == -1} {
return -1
}
clean_restart $binfile
if ![runto_main] then {
fail "could not run to main"
return -1
}
# Check if our target has FPSCR
proc check_fpscr_access {} {
global gdb_prompt
set test "fpscr register access"
gdb_test_multiple "info reg fpscr" "$test" {
-re "Invalid register.*\r\n$gdb_prompt $" {
unsupported "$test"
return 0
}
-re "\r\nfpscr.*\r\n$gdb_prompt $" {
pass "$test"
return 1
}
}
return 0
}
if { ![check_fpscr_access] } {
return -1
}
set fpscr_size_process [get_integer_valueof "sizeof(\$fpscr)" -1]
set core_filename [standard_output_file "$testfile.core"]
set core_generated [gdb_gcore_cmd "$core_filename" "generate core file"]
if { !$core_generated } {
return -1
}
clean_restart
set core_loaded [gdb_core_cmd "$core_filename" "load core file"]
if { $core_loaded != 1 } {
return -1
}
set fpscr_size_corefile [get_integer_valueof "sizeof(\$fpscr)" -2]
set test "fpscr size matches"
if {$fpscr_size_process == $fpscr_size_corefile} {
pass $test
} else {
fail $test
}