646da0594c
The patch <https://sourceware.org/ml/gdb-patches/2014-03/msg00202.html> fixed dw2-ifort-parameter.exp on powerpc64 by adding some labels to get the start and end address of function func. This should also fix the fail on thumb mode, however, this style is quite specific to gcc, and other compiler, such as clang, may not guarantee the order of global asms and functions. The test fails with clang: $ make check RUNTESTFLAGS='dw2-ifort-parameter.exp CC_FOR_TARGET=clang' (gdb) p/x param^M No symbol "param" in current context.^M (gdb) FAIL: gdb.dwarf2/dw2-ifort-parameter.exp: p/x param With this patch applied, dw2-ifort-parameter.exp still passes for gcc on arm thumb mode and popwerpc64, and it also passes for clang on x86_linux. gdb/testsuite: 2014-11-14 Yao Qi <yao@codesourcery.com> * gdb.dwarf2/dw2-ifort-parameter.c: Remove inline asm. (func): Add label func_label. * gdb.dwarf2/dw2-ifort-parameter.exp (Dwarf::assemble): Replace low_pc and high_pc with MACRO_AT_range. Replace name, low_pc and high_pc with MACRO_AT_func.
74 lines
1.9 KiB
Text
74 lines
1.9 KiB
Text
# Copyright 2011-2014 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/>.
|
|
|
|
# Verify DW_AT_variable_parameter does not modify the data structures meaning
|
|
# for GDB, as being used by iFort.
|
|
load_lib dwarf.exp
|
|
|
|
# This test can only be run on targets which support DWARF-2 and use gas.
|
|
if {![dwarf2_support]} {
|
|
return 0
|
|
}
|
|
|
|
standard_testfile .c dw2-ifort-parameter-dw.S
|
|
|
|
# Make some DWARF for the test.
|
|
set asm_file [standard_output_file $srcfile2]
|
|
Dwarf::assemble $asm_file {
|
|
declare_labels int_label
|
|
|
|
extern func_start func_end ptr
|
|
global srcdir subdir srcfile
|
|
|
|
cu {} {
|
|
compile_unit {
|
|
{name file1.txt}
|
|
{language @DW_LANG_C}
|
|
{MACRO_AT_range { func ${srcdir}/${subdir}/${srcfile} }}
|
|
} {
|
|
int_label: base_type {
|
|
{name int}
|
|
{byte_size 4 sdata}
|
|
{encoding @DW_ATE_signed}
|
|
}
|
|
|
|
subprogram {
|
|
{external 1 flag}
|
|
{MACRO_AT_func { func ${srcdir}/${subdir}/${srcfile} }}
|
|
} {
|
|
formal_parameter {
|
|
{name param}
|
|
{variable_parameter 1 flag}
|
|
{type :$int_label}
|
|
{location {
|
|
addr ptr
|
|
deref
|
|
} SPECIAL_expr}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if { [prepare_for_testing ${testfile}.exp ${testfile} \
|
|
[list $srcfile $asm_file] {nodebug}] } {
|
|
return -1
|
|
}
|
|
|
|
if ![runto func] {
|
|
return -1
|
|
}
|
|
|
|
gdb_test "p/x param" " = 0xdeadf00d"
|