You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
4.9 KiB
180 lines
4.9 KiB
#! /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
|
|
|