181 lines
4.9 KiB
Bash
Executable File
181 lines
4.9 KiB
Bash
Executable File
#! /bin/sh
|
|
# Copyright (C) 2017 Red Hat, Inc.
|
|
# This file is part of elfutils.
|
|
#
|
|
# This file 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.
|
|
#
|
|
# elfutils 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/>.
|
|
|
|
. $srcdir/test-subr.sh
|
|
|
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77589
|
|
#
|
|
# program repro
|
|
# type small_stride
|
|
# character*40 long_string
|
|
# integer small_pad
|
|
# end type small_stride
|
|
# type(small_stride), dimension (20), target :: unpleasant
|
|
# character*40, pointer, dimension(:):: c40pt
|
|
# integer i
|
|
# do i = 0,19
|
|
# unpleasant(i+1)%small_pad = i+1
|
|
# unpleasant(i+1)%long_string = char (ichar('0') + i) // '-hello'
|
|
# end do
|
|
# c40pt => unpleasant%long_string
|
|
# print *, c40pt ! break-here
|
|
# end program repro
|
|
#
|
|
# Needs GCC7+
|
|
# gfortran -o testfile-stridex dwarf-stridex.f90 -Wall -g
|
|
|
|
testfiles testfile-stridex
|
|
|
|
testrun_compare ${abs_top_builddir}/tests/varlocs --exprlocs -e testfile-stridex <<\EOF
|
|
module 'testfile-stridex'
|
|
[b] CU 'dwarf-stridex.f90'@400717
|
|
producer (strp)
|
|
language (data1)
|
|
identifier_case (data1)
|
|
name (strp)
|
|
comp_dir (strp)
|
|
low_pc (addr)
|
|
high_pc (data8)
|
|
stmt_list (sec_offset)
|
|
[2e] base_type "integer(kind=8)"
|
|
byte_size (data1)
|
|
encoding (data1)
|
|
name (strp)
|
|
[35] structure_type "small_stride"
|
|
name (strp)
|
|
byte_size (data1)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
sibling (ref4)
|
|
[41] member "long_string"
|
|
name (strp)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
type (ref4)
|
|
data_member_location (data1) {plus_uconst(0)}
|
|
[4d] member "small_pad"
|
|
name (strp)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
type (ref4)
|
|
data_member_location (data1) {plus_uconst(40)}
|
|
[5a] string_type
|
|
byte_size (data1)
|
|
[5c] base_type "integer(kind=4)"
|
|
byte_size (data1)
|
|
encoding (data1)
|
|
name (strp)
|
|
[63] const_type
|
|
type (ref4)
|
|
[68] subprogram "main"
|
|
external (flag_present)
|
|
name (strp)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
type (ref4)
|
|
low_pc (addr)
|
|
high_pc (data8)
|
|
frame_base (exprloc) {call_frame_cfa {bregx(7,8)}}
|
|
GNU_all_tail_call_sites (flag_present)
|
|
sibling (ref4)
|
|
[89] formal_parameter "argc"
|
|
name (strp)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
type (ref4)
|
|
location (exprloc) {fbreg(-20)}
|
|
[97] formal_parameter "argv"
|
|
name (strp)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
type (ref4)
|
|
location (exprloc) {fbreg(-32), deref}
|
|
[a7] pointer_type
|
|
byte_size (data1)
|
|
type (ref4)
|
|
[ad] base_type "character(kind=1)"
|
|
byte_size (data1)
|
|
encoding (data1)
|
|
name (strp)
|
|
[b4] subprogram "repro"
|
|
name (strp)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
main_subprogram (flag_present)
|
|
calling_convention (data1)
|
|
low_pc (addr)
|
|
high_pc (data8)
|
|
frame_base (exprloc) {call_frame_cfa {bregx(7,8)}}
|
|
GNU_all_tail_call_sites (flag_present)
|
|
sibling (ref4)
|
|
[d2] variable "c40pt"
|
|
name (strp)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
type (ref4)
|
|
location (exprloc) {fbreg(-128)}
|
|
[e1] variable "span.0"
|
|
name (strp)
|
|
type (ref4)
|
|
artificial (flag_present)
|
|
location (exprloc) {fbreg(-80)}
|
|
[ee] variable "i"
|
|
name (string)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
type (ref4)
|
|
location (exprloc) {fbreg(-68)}
|
|
[fb] variable "unpleasant"
|
|
name (strp)
|
|
decl_file (data1)
|
|
decl_line (data1)
|
|
type (ref4)
|
|
location (exprloc) {fbreg(-1008)}
|
|
[10a] lexical_block
|
|
low_pc (addr)
|
|
high_pc (data8)
|
|
sibling (ref4)
|
|
[11f] lexical_block
|
|
low_pc (addr)
|
|
high_pc (data8)
|
|
[131] lexical_block
|
|
low_pc (addr)
|
|
high_pc (data8)
|
|
[142] lexical_block
|
|
low_pc (addr)
|
|
high_pc (data8)
|
|
[153] lexical_block
|
|
low_pc (addr)
|
|
high_pc (data8)
|
|
[167] array_type
|
|
data_location (exprloc) {push_object_address, deref}
|
|
associated (exprloc) {push_object_address, deref, lit0, ne}
|
|
type (ref4)
|
|
sibling (ref4)
|
|
[178] subrange_type
|
|
lower_bound (exprloc) {push_object_address, plus_uconst(32), deref}
|
|
upper_bound (exprloc) {push_object_address, plus_uconst(40), deref}
|
|
byte_stride (exprloc) {push_object_address, plus_uconst(24), deref, GNU_variable_value([e1]) {fbreg(-80)}, mul}
|
|
[18f] array_type
|
|
type (ref4)
|
|
[194] subrange_type
|
|
type (ref4)
|
|
upper_bound (sdata)
|
|
EOF
|
|
|
|
exit 0
|