* multidimensional fortran arrays @ 2010-09-02 17:29 Mathew Yeates 2010-09-03 5:47 ` Jan Kratochvil 0 siblings, 1 reply; 8+ messages in thread From: Mathew Yeates @ 2010-09-02 17:29 UTC (permalink / raw) To: gdb Hi I mentioned this before but got no reply. So I have been getting the address of the array and using "x/f". But now I am using 4 dimensional arrays and this is getting old. Anyone have any ideas how to fix this? print myarray(1,2) -> "so such vec element" -Mathew ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: multidimensional fortran arrays 2010-09-02 17:29 multidimensional fortran arrays Mathew Yeates @ 2010-09-03 5:47 ` Jan Kratochvil 2010-09-07 4:34 ` Mathew Yeates 0 siblings, 1 reply; 8+ messages in thread From: Jan Kratochvil @ 2010-09-03 5:47 UTC (permalink / raw) To: Mathew Yeates; +Cc: gdb On Thu, 02 Sep 2010 19:29:07 +0200, Mathew Yeates wrote: > I mentioned this before but got no reply. So I have been getting the > address of the array and using "x/f". > But now I am using 4 dimensional arrays and this is getting old. > > Anyone have any ideas how to fix this? print myarray(1,2) -> "so such > vec element" For some reason it really does not work even for static arrays. program a integer :: v (2, 3, 4) v (:, :, :) = 10 v (2, 3, 4) = 20 v (2, 3, 4) = 20 ! line 5 end (gdb) b 5 (gdb) r (gdb) p v(2,3,4) no such vector element It works on archer-jankratochvil-vla (gdb) p v(2,3,4) $1 = 20 available at http://sourceware.org/gdb/wiki/ArcherBranchManagement (or Fedora releases) but the support has some other problems and I should merge it to FSF GDB soon. Thanks, Jan ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: multidimensional fortran arrays 2010-09-03 5:47 ` Jan Kratochvil @ 2010-09-07 4:34 ` Mathew Yeates 2010-09-07 22:19 ` Andrew Burgess 0 siblings, 1 reply; 8+ messages in thread From: Mathew Yeates @ 2010-09-07 4:34 UTC (permalink / raw) To: Jan Kratochvil; +Cc: gdb gdb shouldn't claim to support gfortran until this is fixed. Seriously, I cant print the value of a multidimensional array? On Thu, Sep 2, 2010 at 10:46 PM, Jan Kratochvil <jan.kratochvil@redhat.com> wrote: > On Thu, 02 Sep 2010 19:29:07 +0200, Mathew Yeates wrote: >> I mentioned this before but got no reply. So I have been getting the >> address of the array and using "x/f". >> But now I am using 4 dimensional arrays and this is getting old. >> >> Anyone have any ideas how to fix this? print myarray(1,2) -> "so such >> vec element" > > For some reason it really does not work even for static arrays. > program a > integer :: v (2, 3, 4) > v (:, :, :) = 10 > v (2, 3, 4) = 20 > v (2, 3, 4) = 20 ! line 5 > end > (gdb) b 5 > (gdb) r > (gdb) p v(2,3,4) > no such vector element > > It works on archer-jankratochvil-vla > (gdb) p v(2,3,4) > $1 = 20 > available at > http://sourceware.org/gdb/wiki/ArcherBranchManagement > (or Fedora releases) but the support has some other problems and I should > merge it to FSF GDB soon. > > > Thanks, > Jan > ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: multidimensional fortran arrays 2010-09-07 4:34 ` Mathew Yeates @ 2010-09-07 22:19 ` Andrew Burgess 2010-09-09 16:37 ` Mathew Yeates 0 siblings, 1 reply; 8+ messages in thread From: Andrew Burgess @ 2010-09-07 22:19 UTC (permalink / raw) To: Mathew Yeates, Jan Kratochvil; +Cc: gdb [-- Attachment #1: Type: text/plain, Size: 1656 bytes --] The attached patch might fix the issue for you. It should apply cleanly to 7.2 I'll write a test and submit to the patches list in a couple of days. Let me know if you run into any problems. Andrew > -----Original Message----- > From: gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] On > Behalf Of Mathew Yeates > Sent: 07 September 2010 05:34 > To: Jan Kratochvil > Cc: gdb@sourceware.org > Subject: Re: multidimensional fortran arrays > > gdb shouldn't claim to support gfortran until this is fixed. > Seriously, I cant print the value of a multidimensional array? > > On Thu, Sep 2, 2010 at 10:46 PM, Jan Kratochvil > <jan.kratochvil@redhat.com> wrote: > > On Thu, 02 Sep 2010 19:29:07 +0200, Mathew Yeates wrote: > >> I mentioned this before but got no reply. So I have been getting the > >> address of the array and using "x/f". > >> But now I am using 4 dimensional arrays and this is getting old. > >> > >> Anyone have any ideas how to fix this? print myarray(1,2) -> "so > such > >> vec element" > > > > For some reason it really does not work even for static arrays. > > program a > > integer :: v (2, 3, 4) > > v (:, :, :) = 10 > > v (2, 3, 4) = 20 > > v (2, 3, 4) = 20 ! line 5 > > end > > (gdb) b 5 > > (gdb) r > > (gdb) p v(2,3,4) > > no such vector element > > > > It works on archer-jankratochvil-vla > > (gdb) p v(2,3,4) > > $1 = 20 > > available at > > http://sourceware.org/gdb/wiki/ArcherBranchManagement > > (or Fedora releases) but the support has some other problems and I > should > > merge it to FSF GDB soon. > > > > > > Thanks, > > Jan > > [-- Attachment #2: arrays.patch --] [-- Type: application/octet-stream, Size: 3641 bytes --] diff -rcp gdb-7.2-clean/gdb/ChangeLog gdb-7.2/gdb/ChangeLog *** gdb-7.2-clean/gdb/ChangeLog 2010-09-03 00:37:25.000000000 +0100 --- gdb-7.2/gdb/ChangeLog 2010-09-07 22:58:01.229977481 +0100 *************** *** 1,3 **** --- 1,13 ---- + 2010-09-07 Andrew Burgess <aburgess@broadcom.com> + + * valarith.c (value_subscripted_rvalue) Walk through + multi-dimensional arrays to find the element type for the + array. Allows the upper bound check to work with multi-dimensional + arrays. + * eval.c (evaluate_subexp_standard) Remove hack from + multi_f77_subscript case now that multi-dimensional arrays are + supported in valarith.c + 2010-09-02 Joel Brobecker <brobecker@adacore.com> * NEWS: Replace "Changes since GDB 7.1" by "Changes in GDB 7.2". diff -rcp gdb-7.2-clean/gdb/eval.c gdb-7.2/gdb/eval.c *** gdb-7.2-clean/gdb/eval.c 2010-07-07 17:15:15.000000000 +0100 --- gdb-7.2/gdb/eval.c 2010-09-07 22:44:31.493976944 +0100 *************** evaluate_subexp_standard (struct type *e *** 2296,2311 **** subscript_array[nargs - i - 1] -= lower; ! /* If we are at the bottom of a multidimensional ! array type then keep a ptr to the last ARRAY ! type around for use when calling value_subscript() ! below. This is done because we pretend to value_subscript ! that we actually have a one-dimensional array ! of base element type that we apply a simple ! offset to. */ ! ! if (i < nargs - 1) ! tmp_type = check_typedef (TYPE_TARGET_TYPE (tmp_type)); } /* Now let us calculate the offset for this item */ --- 2296,2302 ---- subscript_array[nargs - i - 1] -= lower; ! tmp_type = check_typedef (TYPE_TARGET_TYPE (tmp_type)); } /* Now let us calculate the offset for this item */ *************** evaluate_subexp_standard (struct type *e *** 2316,2329 **** offset_item = array_size_array[i - 1] * offset_item + subscript_array[i - 1]; - /* Let us now play a dirty trick: we will take arg1 - which is a value node pointing to the topmost level - of the multidimensional array-set and pretend - that it is actually a array of the final element - type, this will ensure that value_subscript() - returns the correct type value */ - - deprecated_set_value_type (arg1, tmp_type); return value_subscripted_rvalue (arg1, offset_item, 0); } --- 2307,2312 ---- diff -rcp gdb-7.2-clean/gdb/valarith.c gdb-7.2/gdb/valarith.c *** gdb-7.2-clean/gdb/valarith.c 2010-06-07 17:11:31.000000000 +0100 --- gdb-7.2/gdb/valarith.c 2010-09-07 22:52:25.154057798 +0100 *************** struct value * *** 193,199 **** value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound) { struct type *array_type = check_typedef (value_type (array)); ! struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type)); unsigned int elt_size = TYPE_LENGTH (elt_type); unsigned int elt_offs = elt_size * longest_to_int (index - lowerbound); struct value *v; --- 193,208 ---- value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound) { struct type *array_type = check_typedef (value_type (array)); ! struct type *elt_type = array_type; ! ! /* Peel of the array indices until we reach the array element type */ ! do { ! elt_type = TYPE_TARGET_TYPE(elt_type); ! } ! while ( TYPE_CODE(elt_type) == TYPE_CODE_ARRAY); ! ! elt_type = check_typedef(elt_type); ! unsigned int elt_size = TYPE_LENGTH (elt_type); unsigned int elt_offs = elt_size * longest_to_int (index - lowerbound); struct value *v; ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: multidimensional fortran arrays 2010-09-07 22:19 ` Andrew Burgess @ 2010-09-09 16:37 ` Mathew Yeates 2010-09-13 23:14 ` Mathew Yeates 0 siblings, 1 reply; 8+ messages in thread From: Mathew Yeates @ 2010-09-09 16:37 UTC (permalink / raw) To: Andrew Burgess; +Cc: Jan Kratochvil, gdb Thanks Jan. This appears to work. On Tue, Sep 7, 2010 at 3:19 PM, Andrew Burgess <aburgess@broadcom.com> wrote: > The attached patch might fix the issue for you. It should apply cleanly to 7.2 > > I'll write a test and submit to the patches list in a couple of days. Let me know if you run into any problems. > > > Andrew > > > >> -----Original Message----- >> From: gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] On >> Behalf Of Mathew Yeates >> Sent: 07 September 2010 05:34 >> To: Jan Kratochvil >> Cc: gdb@sourceware.org >> Subject: Re: multidimensional fortran arrays >> >> gdb shouldn't claim to support gfortran until this is fixed. >> Seriously, I cant print the value of a multidimensional array? >> >> On Thu, Sep 2, 2010 at 10:46 PM, Jan Kratochvil >> <jan.kratochvil@redhat.com> wrote: >> > On Thu, 02 Sep 2010 19:29:07 +0200, Mathew Yeates wrote: >> >> I mentioned this before but got no reply. So I have been getting the >> >> address of the array and using "x/f". >> >> But now I am using 4 dimensional arrays and this is getting old. >> >> >> >> Anyone have any ideas how to fix this? print myarray(1,2) -> "so >> such >> >> vec element" >> > >> > For some reason it really does not work even for static arrays. >> > program a >> > integer :: v (2, 3, 4) >> > v (:, :, :) = 10 >> > v (2, 3, 4) = 20 >> > v (2, 3, 4) = 20 ! line 5 >> > end >> > (gdb) b 5 >> > (gdb) r >> > (gdb) p v(2,3,4) >> > no such vector element >> > >> > It works on archer-jankratochvil-vla >> > (gdb) p v(2,3,4) >> > $1 = 20 >> > available at >> > http://sourceware.org/gdb/wiki/ArcherBranchManagement >> > (or Fedora releases) but the support has some other problems and I >> should >> > merge it to FSF GDB soon. >> > >> > >> > Thanks, >> > Jan >> > > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: multidimensional fortran arrays 2010-09-09 16:37 ` Mathew Yeates @ 2010-09-13 23:14 ` Mathew Yeates 2010-09-14 7:32 ` Andrew Burgess 2010-09-15 17:45 ` Tom Tromey 0 siblings, 2 replies; 8+ messages in thread From: Mathew Yeates @ 2010-09-13 23:14 UTC (permalink / raw) To: Andrew Burgess; +Cc: Jan Kratochvil, gdb uh oh. Doesn't seem to work for dimensions greater than 2. -Mathew On Thu, Sep 9, 2010 at 9:36 AM, Mathew Yeates <mat.yeates@gmail.com> wrote: > Thanks Jan. This appears to work. > > On Tue, Sep 7, 2010 at 3:19 PM, Andrew Burgess <aburgess@broadcom.com> wrote: >> The attached patch might fix the issue for you. It should apply cleanly to 7.2 >> >> I'll write a test and submit to the patches list in a couple of days. Let me know if you run into any problems. >> >> >> Andrew >> >> >> >>> -----Original Message----- >>> From: gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] On >>> Behalf Of Mathew Yeates >>> Sent: 07 September 2010 05:34 >>> To: Jan Kratochvil >>> Cc: gdb@sourceware.org >>> Subject: Re: multidimensional fortran arrays >>> >>> gdb shouldn't claim to support gfortran until this is fixed. >>> Seriously, I cant print the value of a multidimensional array? >>> >>> On Thu, Sep 2, 2010 at 10:46 PM, Jan Kratochvil >>> <jan.kratochvil@redhat.com> wrote: >>> > On Thu, 02 Sep 2010 19:29:07 +0200, Mathew Yeates wrote: >>> >> I mentioned this before but got no reply. So I have been getting the >>> >> address of the array and using "x/f". >>> >> But now I am using 4 dimensional arrays and this is getting old. >>> >> >>> >> Anyone have any ideas how to fix this? print myarray(1,2) -> "so >>> such >>> >> vec element" >>> > >>> > For some reason it really does not work even for static arrays. >>> > program a >>> > integer :: v (2, 3, 4) >>> > v (:, :, :) = 10 >>> > v (2, 3, 4) = 20 >>> > v (2, 3, 4) = 20 ! line 5 >>> > end >>> > (gdb) b 5 >>> > (gdb) r >>> > (gdb) p v(2,3,4) >>> > no such vector element >>> > >>> > It works on archer-jankratochvil-vla >>> > (gdb) p v(2,3,4) >>> > $1 = 20 >>> > available at >>> > http://sourceware.org/gdb/wiki/ArcherBranchManagement >>> > (or Fedora releases) but the support has some other problems and I >>> should >>> > merge it to FSF GDB soon. >>> > >>> > >>> > Thanks, >>> > Jan >>> > >> >> > ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: multidimensional fortran arrays 2010-09-13 23:14 ` Mathew Yeates @ 2010-09-14 7:32 ` Andrew Burgess 2010-09-15 17:45 ` Tom Tromey 1 sibling, 0 replies; 8+ messages in thread From: Andrew Burgess @ 2010-09-14 7:32 UTC (permalink / raw) To: Mathew Yeates; +Cc: Jan Kratochvil, gdb > On Tue, Sep 14, 2010 at 00:14, Mathew Yeates <mat.yeates@gmail.com> > > uh oh. Doesn't seem to work for dimensions greater than 2. Could you attach a test program, steps to compile, and the gdb commands and output please. The following test program: program a integer :: foo1 (2) integer :: foo2 (2,3) integer :: foo3 (2,3,4) integer :: foo4 (2,3,4,5) integer :: foo5 (2,3,4,5,6) integer :: foo6 (2,3,4,5,6,7) foo1 (:) = 10 foo2 (:, :) = 10 foo3 (:, :, :) = 10 foo4 (:, :, :, :) = 10 foo5 (:, :, :, :, :) = 10 foo6 (:, :, :, :, :, :) = 10 foo1 (2) = 20 foo2 (2,3) = 20 foo3 (2,3,4) = 20 foo4 (2,3,4,5) = 20 foo5 (2,3,4,5,6) = 20 foo6 (2,3,4,5,6,7) = 20 foo1 (2) = 20 ! Stop on line 20 end Behaves like this with a patched gdb: Reading symbols from /home/andrew/gdb-bug/myprog.x...done. (gdb) b 20 Breakpoint 1 at 0x8048847: file a.f90, line 20. (gdb) r Starting program: /home/andrew/gdb-bug/myprog.x Breakpoint 1, a () at a.f90:20 20 foo1 (2) = 20 ! Stop on line 20 (gdb) p foo6(2,3,4,5,6,7) $3 = 20 (gdb) p foo1(2) $4 = 20 (gdb) So I suspect we're trying to do different things. Cheers, Andrew ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: multidimensional fortran arrays 2010-09-13 23:14 ` Mathew Yeates 2010-09-14 7:32 ` Andrew Burgess @ 2010-09-15 17:45 ` Tom Tromey 1 sibling, 0 replies; 8+ messages in thread From: Tom Tromey @ 2010-09-15 17:45 UTC (permalink / raw) To: Mathew Yeates; +Cc: Andrew Burgess, Jan Kratochvil, gdb >>>>> "Mathew" == Mathew Yeates <mat.yeates@gmail.com> writes: Mathew> uh oh. Doesn't seem to work for dimensions greater than 2. Please file bugs like this in bugzilla. qIt is ideal if you can include a small(-ish) self-contained test case. Tom ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-09-15 17:45 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-09-02 17:29 multidimensional fortran arrays Mathew Yeates 2010-09-03 5:47 ` Jan Kratochvil 2010-09-07 4:34 ` Mathew Yeates 2010-09-07 22:19 ` Andrew Burgess 2010-09-09 16:37 ` Mathew Yeates 2010-09-13 23:14 ` Mathew Yeates 2010-09-14 7:32 ` Andrew Burgess 2010-09-15 17:45 ` Tom Tromey
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox