Blame tests/run-exprlocs.sh

Packit Service 97d2fb
#! /bin/sh
Packit Service 97d2fb
# Copyright (C) 2017 Red Hat, Inc.
Packit Service 97d2fb
# This file is part of elfutils.
Packit Service 97d2fb
#
Packit Service 97d2fb
# This file is free software; you can redistribute it and/or modify
Packit Service 97d2fb
# it under the terms of the GNU General Public License as published by
Packit Service 97d2fb
# the Free Software Foundation; either version 3 of the License, or
Packit Service 97d2fb
# (at your option) any later version.
Packit Service 97d2fb
#
Packit Service 97d2fb
# elfutils is distributed in the hope that it will be useful, but
Packit Service 97d2fb
# WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 97d2fb
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 97d2fb
# GNU General Public License for more details.
Packit Service 97d2fb
#
Packit Service 97d2fb
# You should have received a copy of the GNU General Public License
Packit Service 97d2fb
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit Service 97d2fb
Packit Service 97d2fb
. $srcdir/test-subr.sh
Packit Service 97d2fb
Packit Service 97d2fb
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77589
Packit Service 97d2fb
#
Packit Service 97d2fb
# program repro
Packit Service 97d2fb
#   type small_stride
Packit Service 97d2fb
#      character*40 long_string
Packit Service 97d2fb
#      integer      small_pad
Packit Service 97d2fb
#   end type small_stride
Packit Service 97d2fb
#   type(small_stride), dimension (20), target :: unpleasant
Packit Service 97d2fb
#   character*40, pointer, dimension(:):: c40pt
Packit Service 97d2fb
#   integer i
Packit Service 97d2fb
#   do i = 0,19
Packit Service 97d2fb
#      unpleasant(i+1)%small_pad = i+1
Packit Service 97d2fb
#      unpleasant(i+1)%long_string = char (ichar('0') + i) // '-hello'
Packit Service 97d2fb
#   end do
Packit Service 97d2fb
#   c40pt => unpleasant%long_string
Packit Service 97d2fb
#   print *, c40pt  ! break-here
Packit Service 97d2fb
# end program repro
Packit Service 97d2fb
#
Packit Service 97d2fb
# Needs GCC7+
Packit Service 97d2fb
# gfortran -o testfile-stridex dwarf-stridex.f90 -Wall -g
Packit Service 97d2fb
Packit Service 97d2fb
testfiles testfile-stridex
Packit Service 97d2fb
Packit Service 97d2fb
testrun_compare ${abs_top_builddir}/tests/varlocs --exprlocs -e testfile-stridex <<\EOF
Packit Service 97d2fb
module 'testfile-stridex'
Packit Service 97d2fb
[b] CU 'dwarf-stridex.f90'@400717
Packit Service 97d2fb
  producer (strp)
Packit Service 97d2fb
  language (data1)
Packit Service 97d2fb
  identifier_case (data1)
Packit Service 97d2fb
  name (strp)
Packit Service 97d2fb
  comp_dir (strp)
Packit Service 97d2fb
  low_pc (addr)
Packit Service 97d2fb
  high_pc (data8)
Packit Service 97d2fb
  stmt_list (sec_offset)
Packit Service 97d2fb
  [2e] base_type "integer(kind=8)"
Packit Service 97d2fb
    byte_size (data1)
Packit Service 97d2fb
    encoding (data1)
Packit Service 97d2fb
    name (strp)
Packit Service 97d2fb
  [35] structure_type "small_stride"
Packit Service 97d2fb
    name (strp)
Packit Service 97d2fb
    byte_size (data1)
Packit Service 97d2fb
    decl_file (data1)
Packit Service 97d2fb
    decl_line (data1)
Packit Service 97d2fb
    sibling (ref4)
Packit Service 97d2fb
    [41] member "long_string"
Packit Service 97d2fb
      name (strp)
Packit Service 97d2fb
      decl_file (data1)
Packit Service 97d2fb
      decl_line (data1)
Packit Service 97d2fb
      type (ref4)
Packit Service 97d2fb
      data_member_location (data1) {plus_uconst(0)}
Packit Service 97d2fb
    [4d] member "small_pad"
Packit Service 97d2fb
      name (strp)
Packit Service 97d2fb
      decl_file (data1)
Packit Service 97d2fb
      decl_line (data1)
Packit Service 97d2fb
      type (ref4)
Packit Service 97d2fb
      data_member_location (data1) {plus_uconst(40)}
Packit Service 97d2fb
  [5a] string_type
Packit Service 97d2fb
    byte_size (data1)
Packit Service 97d2fb
  [5c] base_type "integer(kind=4)"
Packit Service 97d2fb
    byte_size (data1)
Packit Service 97d2fb
    encoding (data1)
Packit Service 97d2fb
    name (strp)
Packit Service 97d2fb
  [63] const_type
Packit Service 97d2fb
    type (ref4)
Packit Service 97d2fb
  [68] subprogram "main"
Packit Service 97d2fb
    external (flag_present)
Packit Service 97d2fb
    name (strp)
Packit Service 97d2fb
    decl_file (data1)
Packit Service 97d2fb
    decl_line (data1)
Packit Service 97d2fb
    type (ref4)
Packit Service 97d2fb
    low_pc (addr)
Packit Service 97d2fb
    high_pc (data8)
Packit Service 97d2fb
    frame_base (exprloc) {call_frame_cfa {bregx(7,8)}}
Packit Service 97d2fb
    GNU_all_tail_call_sites (flag_present)
Packit Service 97d2fb
    sibling (ref4)
Packit Service 97d2fb
    [89] formal_parameter "argc"
Packit Service 97d2fb
      name (strp)
Packit Service 97d2fb
      decl_file (data1)
Packit Service 97d2fb
      decl_line (data1)
Packit Service 97d2fb
      type (ref4)
Packit Service 97d2fb
      location (exprloc) {fbreg(-20)}
Packit Service 97d2fb
    [97] formal_parameter "argv"
Packit Service 97d2fb
      name (strp)
Packit Service 97d2fb
      decl_file (data1)
Packit Service 97d2fb
      decl_line (data1)
Packit Service 97d2fb
      type (ref4)
Packit Service 97d2fb
      location (exprloc) {fbreg(-32), deref}
Packit Service 97d2fb
  [a7] pointer_type
Packit Service 97d2fb
    byte_size (data1)
Packit Service 97d2fb
    type (ref4)
Packit Service 97d2fb
  [ad] base_type "character(kind=1)"
Packit Service 97d2fb
    byte_size (data1)
Packit Service 97d2fb
    encoding (data1)
Packit Service 97d2fb
    name (strp)
Packit Service 97d2fb
  [b4] subprogram "repro"
Packit Service 97d2fb
    name (strp)
Packit Service 97d2fb
    decl_file (data1)
Packit Service 97d2fb
    decl_line (data1)
Packit Service 97d2fb
    main_subprogram (flag_present)
Packit Service 97d2fb
    calling_convention (data1)
Packit Service 97d2fb
    low_pc (addr)
Packit Service 97d2fb
    high_pc (data8)
Packit Service 97d2fb
    frame_base (exprloc) {call_frame_cfa {bregx(7,8)}}
Packit Service 97d2fb
    GNU_all_tail_call_sites (flag_present)
Packit Service 97d2fb
    sibling (ref4)
Packit Service 97d2fb
    [d2] variable "c40pt"
Packit Service 97d2fb
      name (strp)
Packit Service 97d2fb
      decl_file (data1)
Packit Service 97d2fb
      decl_line (data1)
Packit Service 97d2fb
      type (ref4)
Packit Service 97d2fb
      location (exprloc) {fbreg(-128)}
Packit Service 97d2fb
    [e1] variable "span.0"
Packit Service 97d2fb
      name (strp)
Packit Service 97d2fb
      type (ref4)
Packit Service 97d2fb
      artificial (flag_present)
Packit Service 97d2fb
      location (exprloc) {fbreg(-80)}
Packit Service 97d2fb
    [ee] variable "i"
Packit Service 97d2fb
      name (string)
Packit Service 97d2fb
      decl_file (data1)
Packit Service 97d2fb
      decl_line (data1)
Packit Service 97d2fb
      type (ref4)
Packit Service 97d2fb
      location (exprloc) {fbreg(-68)}
Packit Service 97d2fb
    [fb] variable "unpleasant"
Packit Service 97d2fb
      name (strp)
Packit Service 97d2fb
      decl_file (data1)
Packit Service 97d2fb
      decl_line (data1)
Packit Service 97d2fb
      type (ref4)
Packit Service 97d2fb
      location (exprloc) {fbreg(-1008)}
Packit Service 97d2fb
    [10a] lexical_block
Packit Service 97d2fb
      low_pc (addr)
Packit Service 97d2fb
      high_pc (data8)
Packit Service 97d2fb
      sibling (ref4)
Packit Service 97d2fb
      [11f] lexical_block
Packit Service 97d2fb
        low_pc (addr)
Packit Service 97d2fb
        high_pc (data8)
Packit Service 97d2fb
    [131] lexical_block
Packit Service 97d2fb
      low_pc (addr)
Packit Service 97d2fb
      high_pc (data8)
Packit Service 97d2fb
      [142] lexical_block
Packit Service 97d2fb
        low_pc (addr)
Packit Service 97d2fb
        high_pc (data8)
Packit Service 97d2fb
        [153] lexical_block
Packit Service 97d2fb
          low_pc (addr)
Packit Service 97d2fb
          high_pc (data8)
Packit Service 97d2fb
  [167] array_type
Packit Service 97d2fb
    data_location (exprloc) {push_object_address, deref}
Packit Service 97d2fb
    associated (exprloc) {push_object_address, deref, lit0, ne}
Packit Service 97d2fb
    type (ref4)
Packit Service 97d2fb
    sibling (ref4)
Packit Service 97d2fb
    [178] subrange_type
Packit Service 97d2fb
      lower_bound (exprloc) {push_object_address, plus_uconst(32), deref}
Packit Service 97d2fb
      upper_bound (exprloc) {push_object_address, plus_uconst(40), deref}
Packit Service 97d2fb
      byte_stride (exprloc) {push_object_address, plus_uconst(24), deref, GNU_variable_value([e1]) {fbreg(-80)}, mul}
Packit Service 97d2fb
  [18f] array_type
Packit Service 97d2fb
    type (ref4)
Packit Service 97d2fb
    [194] subrange_type
Packit Service 97d2fb
      type (ref4)
Packit Service 97d2fb
      upper_bound (sdata)
Packit Service 97d2fb
EOF
Packit Service 97d2fb
Packit Service 97d2fb
exit 0