Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Wu Zhou <woodzltc@cn.ibm.com>
To: fortran@gcc.gnu.org
Cc: gdb@sources.redhat.com
Subject: Re: About the debugging of gfortran arrays
Date: Wed, 29 Jun 2005 09:20:00 -0000	[thread overview]
Message-ID: <Pine.LNX.4.63.0506290807191.13910@wks190384wss.cn.ibm.com> (raw)
In-Reply-To: <Pine.LNX.4.63.0506250229170.7972@wks190384wss.cn.ibm.com>

Hi,

Is there any comments on theses two problems.  I believe that there should 
be one way for gdb and gfortran to work well together. 

Do you think that it is okay for me to file two PRs against them?  

TIA.

Cheers
- Wu Zhou

On Sat, 25 Jun 2005, Wu Zhou wrote:

> Hello all,
> 
> I am trying to use gdb to debug gfortran program and encountered some 
> problems with arrays:
> 
> 1. The first one is about the lower bound.  It seems that gfortran change 
> the lower bound of some arrays to 0 by default (I got this feeling from my 
> experience and I also see this kind of transfer in part of the code in 
> gcc/fortran/trans-type.c. Dunno know whether it apply to all arrays. 
> Anyone could confirm or deny this?  Thanks in advance!)
> 
> To handle this, GDB need to make responsive change.  But I have one 
> question here: is this kind of design (change the lower bound of array to 
> zero) indispensible here?  Is it ok to still output the original bounds in the 
> debug info?  
> 
> 2. The second one is about two-dimension array.  In the debuginfo output 
> by gfortran, two-dimension array will be flatten to one-dimension.  Take a 
> look at the following testcase please:
> 
>        program array2
>        integer a(5, 5)
> 
>        do i = 1, 5
>          do j = 1, 5
>            a(i, j) = i * j
>            write (*, *) a(i, j)
>          end do
>        end do
> 
>        end program
>        
> After using gfortran to compile this testcase, I can use readelf to get
> the following debuginfo:
> 
>  <2><89>: Abbrev Number: 3 (DW_TAG_variable)
>      DW_AT_name        : a
>      DW_AT_decl_file   : 1
>      DW_AT_decl_line   : 2
>      DW_AT_type        : <be>
>      DW_AT_location    : 3 byte block: 75 94 7f         (DW_OP_breg5: 
> -108)
>  ...
>  <1><be>: Abbrev Number: 7 (DW_TAG_array_type)
>      DW_AT_type        : <b6>
>  <2><c3>: Abbrev Number: 8 (DW_TAG_subrange_type)
>      DW_AT_type        : <b6>
>      DW_AT_lower_bound : 0
>      DW_AT_upper_bound : 24
>      
> From the above, we can see that two-dimension array a(5, 5) is changed to
> a one-dimension array with 25 elements (0 - 24).  
> 
> Although there is no problem for the output binary, but it make some 
> trouble for GDB.  So I am thinking of whether there is any solution
> for this in gfortran's side? 
> 
> For example, treat it as one-dimension array in the outputed binary, but
> still output two-dimension one in the debug information.  Maybe others? 
> 
> Just my two cents. Any comments are highly appreciated. 
> 
> Cheers
> - Wu Zhou
> 


  reply	other threads:[~2005-06-29  9:20 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-25  6:43 Wu Zhou
2005-06-29  9:20 ` Wu Zhou [this message]
2005-06-30  3:23 ` Feng Wang
2005-06-30  7:22   ` Wu Zhou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.63.0506290807191.13910@wks190384wss.cn.ibm.com \
    --to=woodzltc@cn.ibm.com \
    --cc=fortran@gcc.gnu.org \
    --cc=gdb@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox