public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Fixed gdb to print arrays with very high indexes
       [not found] <DM6PR12MB312912C12E60E8EB91778B909E050@DM6PR12MB3129.namprd12.prod.outlook.com>
@ 2020-01-29 11:31 ` Sharma, Alok Kumar
  2020-01-31 10:28   ` Tom Tromey
  0 siblings, 1 reply; 6+ messages in thread
From: Sharma, Alok Kumar @ 2020-01-29 11:31 UTC (permalink / raw)
  To: gdb-patches; +Cc: George, Jini Susan, Achra, Nitika

[-- Attachment #1: Type: text/plain, Size: 2044 bytes --]


Hi all,

Problem description:

Due to a bug GDB is not able to print arrays with very high indexes (lower/upper bounds). As explained below.

A) gdb crashes while printing arrays with very high positive index
program main
      integer(4) :: arr(4294967296_8:4294967297_8)
      integer(8) :: lb, ub
      arr = 99
      lb = lbound (arr, dim = 1, kind = 8)
      ub = ubound (arr, dim = 1, kind = 8)
      print *, 'bounds of arr - ', lb, ':', ub
end

Actual output: it crashes while printing array
GNU gdb (GDB) 10.0.50.20200127-git
(gdb) p arr
Aborted (core dumped)
Expected output
(gdb) p arr
$1 = (99, 99)

B) gdb is not able to print arrays with very high negative indexes
program main
      integer(4) :: arr(-4294967297_8:-4294967296_8)
      integer(8) :: lb, ub
      arr = 99
      lb = lbound (arr, dim = 1, kind = 8)
      ub = ubound (arr, dim = 1, kind = 8)
      print *, 'bounds of arr - ', lb, ':', ub
end

Actual output: it displays empty array.
(gdb) p arr
$1 = ()

Expected output
(gdb) p arr
$1 = (99, 99)

Root cause:

     In the function f77_print_array_1, the variable 'i' which holds the
    index is of datatype 'int', while bounds are of datatype LONGEST. Due
    to size of int being smaller than LONGEST, the variable 'i' stores
    incorrect values for high indexes (higher than max limit of int).
     Due to this issue in sources, two abnormal behaviors are seen while
    printing arrays with high indexes (please check array-bounds-high.f90)
     For high indexes with negative sign, gdb prints empty array even if
    the array has elements,
    (gdb) p arr
    $1 = ()
     For high indexes with positive sign, gdb crashes.

Resolution:

     We have now changed the datatype of 'i' to LONGEST which is same as
    datatype of bounds.

Testing:

- New test-case (gdb.fortran/array-bounds-high.exp) is added to test (+/-) high indexed array printing
- There was no regression seen

Please let me know your comments.

Regards,
Alok



[-- Attachment #2: 0001-Fixed-gdb-to-print-arrays-with-very-high-indexes.patch --]
[-- Type: application/octet-stream, Size: 4879 bytes --]

From d5a44963d123f4ff3cf46bb942618f33bc147c95 Mon Sep 17 00:00:00 2001
From: alosharm <AlokKumar.Sharma@amd.com>
Date: Tue, 28 Jan 2020 21:52:01 +0530
Subject: [PATCH] Fixed gdb to print arrays with very high indexes

 In the function f77_print_array_1, the variable 'i' which holds the
index is of datatype 'int', while bounds are of datatype LONGEST. Due
to size of int being smaller than LONGEST, the variable 'i' stores
incorrect values for high indexes (higher than max limit of int).
 Due to this issue in sources, two abnormal behaviors are seen while
printing arrays with high indexes (please check array-bounds-high.f90)
 For high indexes with negative sign, gdb prints empty array even if
the array has elements,
(gdb) p arr
$1 = ()
 For high indexes with positive sign, gdb crashes.
 We have now changed the datatype of 'i' to LONGEST which is same as
datatype of bounds.

gdb/ChangeLog

	* f-valprint.c (f77_print_array_1): Changed datatype of index
	variable to LONGEST from int to enable it to contain bound
	values correctly.

gdb/testsuite/ChangeLog

	* gdb.fortran/array-bounds-high.exp: New file.
	* gdb.fortran/array-bounds-high.f90: New file.

Change-Id: Ie2dce9380a249e634e2684b9c90f225e104369b7
---
 gdb/f-valprint.c                              |  2 +-
 .../gdb.fortran/array-bounds-high.exp         | 39 +++++++++++++++++++
 .../gdb.fortran/array-bounds-high.f90         | 23 +++++++++++
 3 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 gdb/testsuite/gdb.fortran/array-bounds-high.exp
 create mode 100644 gdb/testsuite/gdb.fortran/array-bounds-high.f90

diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
index 168957f6fb..71247a7143 100644
--- a/gdb/f-valprint.c
+++ b/gdb/f-valprint.c
@@ -115,7 +115,7 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type,
   struct type *range_type = TYPE_INDEX_TYPE (check_typedef (type));
   CORE_ADDR addr = address + embedded_offset;
   LONGEST lowerbound, upperbound;
-  int i;
+  LONGEST i;
 
   get_discrete_bounds (range_type, &lowerbound, &upperbound);
 
diff --git a/gdb/testsuite/gdb.fortran/array-bounds-high.exp b/gdb/testsuite/gdb.fortran/array-bounds-high.exp
new file mode 100644
index 0000000000..3cdc389b10
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/array-bounds-high.exp
@@ -0,0 +1,39 @@
+# Copyright 2012-2020 Free Software Foundation, Inc.
+
+# This program 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.
+#
+# This program 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/>.
+
+# This file is part of the gdb testsuite.  It contains test to ensure that
+# array bounds accept LONGEST.
+
+if { [skip_fortran_tests] } { return -1 }
+
+set testfile "array-bounds-high"
+standard_testfile .f90
+
+if {[prepare_for_testing $testfile.exp $testfile $srcfile {f90 debug}]} {
+    return -1
+}
+
+if {![runto MAIN__]} {
+    perror "Could not run to breakpoint `MAIN__'."
+    continue
+}
+
+gdb_test "until 21" {21.*print.*}
+
+# Lets check whether too high (with - sign) indexed array are printed correctly
+gdb_test "print arr1" {.*\(11, 11\).*}
+
+# Lets check whether too high (with + sign) indexed array are printed correctly
+gdb_test "print arr2" {.*\(22, 22\).*}
diff --git a/gdb/testsuite/gdb.fortran/array-bounds-high.f90 b/gdb/testsuite/gdb.fortran/array-bounds-high.f90
new file mode 100644
index 0000000000..06370498c8
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/array-bounds-high.f90
@@ -0,0 +1,23 @@
+! Copyright 2012-2020 Free Software Foundation, Inc.
+
+! This program 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.
+!
+! This program 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/>.
+
+program main
+      integer(4) :: arr1(-4294967297_8:-4294967296_8)
+      integer(4) :: arr2(4294967296_8:4294967297_8)
+      arr1 = 11
+      arr2 = 22
+      print *, 'arr1 = ', arr1
+      print *, 'arr2 = ', arr2
+end
-- 
2.17.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Fixed gdb to print arrays with very high indexes
  2020-01-29 11:31 ` [PATCH] Fixed gdb to print arrays with very high indexes Sharma, Alok Kumar
@ 2020-01-31 10:28   ` Tom Tromey
  2020-02-02 16:06     ` Sharma, Alok Kumar
  0 siblings, 1 reply; 6+ messages in thread
From: Tom Tromey @ 2020-01-31 10:28 UTC (permalink / raw)
  To: Sharma, Alok Kumar; +Cc: gdb-patches, George, Jini Susan, Achra, Nitika

>>>>> ">" == Sharma, Alok Kumar <AlokKumar.Sharma@amd.com> writes:

[...]
>> Resolution:
>>      We have now changed the datatype of 'i' to LONGEST which is same as
>>     datatype of bounds.

Thank you for the patch and the explanation.

>> +# Copyright 2012-2020 Free Software Foundation, Inc.

The two new files should probably only mention 2020.
The patch is ok with that nit fixed.

Tom

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH] Fixed gdb to print arrays with very high indexes
  2020-01-31 10:28   ` Tom Tromey
@ 2020-02-02 16:06     ` Sharma, Alok Kumar
  0 siblings, 0 replies; 6+ messages in thread
From: Sharma, Alok Kumar @ 2020-02-02 16:06 UTC (permalink / raw)
  To: Tom Tromey; +Cc: gdb-patches, George, Jini Susan, Achra, Nitika

[-- Attachment #1: Type: text/plain, Size: 885 bytes --]

Thanks for your valuable feedback. Please find the updated patch as an attachment.

Regards,
Alok

-----Original Message-----
From: Tom Tromey <tom@tromey.com> 
Sent: Friday, January 31, 2020 3:43 PM
To: Sharma, Alok Kumar <AlokKumar.Sharma@amd.com>
Cc: gdb-patches@sourceware.org; George, Jini Susan <JiniSusan.George@amd.com>; Achra, Nitika <Nitika.Achra@amd.com>
Subject: Re: [PATCH] Fixed gdb to print arrays with very high indexes

[CAUTION: External Email]

>>>>> ">" == Sharma, Alok Kumar <AlokKumar.Sharma@amd.com> writes:

[...]
>> Resolution:
>>      We have now changed the datatype of 'i' to LONGEST which is same as
>>     datatype of bounds.

Thank you for the patch and the explanation.

>> +# Copyright 2012-2020 Free Software Foundation, Inc.

The two new files should probably only mention 2020.
The patch is ok with that nit fixed.

Tom

[-- Attachment #2: 0001-Fixed-gdb-to-print-arrays-with-very-high-indexes.patch --]
[-- Type: application/octet-stream, Size: 4869 bytes --]

From c3fed8c97bef7a92a1fe9c988027679a94e2941b Mon Sep 17 00:00:00 2001
From: alosharm <AlokKumar.Sharma@amd.com>
Date: Tue, 28 Jan 2020 21:52:01 +0530
Subject: [PATCH] Fixed gdb to print arrays with very high indexes

 In the function f77_print_array_1, the variable 'i' which holds the
index is of datatype 'int', while bounds are of datatype LONGEST. Due
to size of int being smaller than LONGEST, the variable 'i' stores
incorrect values for high indexes (higher than max limit of int).
 Due to this issue in sources, two abnormal behaviors are seen while
printing arrays with high indexes (please check array-bounds-high.f90)
 For high indexes with negative sign, gdb prints empty array even if
the array has elements,
(gdb) p arr
$1 = ()
 For high indexes with positive sign, gdb crashes.
 We have now changed the datatype of 'i' to LONGEST which is same as
datatype of bounds.

gdb/ChangeLog

	* f-valprint.c (f77_print_array_1): Changed datatype of index
	variable to LONGEST from int to enable it to contain bound
	values correctly.

gdb/testsuite/ChangeLog

	* gdb.fortran/array-bounds-high.exp: New file.
	* gdb.fortran/array-bounds-high.f90: New file.

Change-Id: Ie2dce9380a249e634e2684b9c90f225e104369b7
---
 gdb/f-valprint.c                              |  2 +-
 .../gdb.fortran/array-bounds-high.exp         | 39 +++++++++++++++++++
 .../gdb.fortran/array-bounds-high.f90         | 23 +++++++++++
 3 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 gdb/testsuite/gdb.fortran/array-bounds-high.exp
 create mode 100644 gdb/testsuite/gdb.fortran/array-bounds-high.f90

diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
index 168957f6fb..71247a7143 100644
--- a/gdb/f-valprint.c
+++ b/gdb/f-valprint.c
@@ -115,7 +115,7 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type,
   struct type *range_type = TYPE_INDEX_TYPE (check_typedef (type));
   CORE_ADDR addr = address + embedded_offset;
   LONGEST lowerbound, upperbound;
-  int i;
+  LONGEST i;
 
   get_discrete_bounds (range_type, &lowerbound, &upperbound);
 
diff --git a/gdb/testsuite/gdb.fortran/array-bounds-high.exp b/gdb/testsuite/gdb.fortran/array-bounds-high.exp
new file mode 100644
index 0000000000..81e2f87b89
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/array-bounds-high.exp
@@ -0,0 +1,39 @@
+# Copyright 2020 Free Software Foundation, Inc.
+
+# This program 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.
+#
+# This program 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/>.
+
+# This file is part of the gdb testsuite.  It contains test to ensure that
+# array bounds accept LONGEST.
+
+if { [skip_fortran_tests] } { return -1 }
+
+set testfile "array-bounds-high"
+standard_testfile .f90
+
+if {[prepare_for_testing $testfile.exp $testfile $srcfile {f90 debug}]} {
+    return -1
+}
+
+if {![runto MAIN__]} {
+    perror "Could not run to breakpoint `MAIN__'."
+    continue
+}
+
+gdb_test "until 21" {21.*print.*}
+
+# Lets check whether too high (with - sign) indexed array are printed correctly
+gdb_test "print arr1" {.*\(11, 11\).*}
+
+# Lets check whether too high (with + sign) indexed array are printed correctly
+gdb_test "print arr2" {.*\(22, 22\).*}
diff --git a/gdb/testsuite/gdb.fortran/array-bounds-high.f90 b/gdb/testsuite/gdb.fortran/array-bounds-high.f90
new file mode 100644
index 0000000000..b72cd1bb2b
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/array-bounds-high.f90
@@ -0,0 +1,23 @@
+! Copyright 2020 Free Software Foundation, Inc.
+
+! This program 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.
+!
+! This program 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/>.
+
+program main
+      integer(4) :: arr1(-4294967297_8:-4294967296_8)
+      integer(4) :: arr2(4294967296_8:4294967297_8)
+      arr1 = 11
+      arr2 = 22
+      print *, 'arr1 = ', arr1
+      print *, 'arr2 = ', arr2
+end
-- 
2.17.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH] Fixed gdb to print arrays with very high indexes
  2020-02-04  1:23 ` Simon Marchi
@ 2020-02-04  7:37   ` Sharma, Alok Kumar
  0 siblings, 0 replies; 6+ messages in thread
From: Sharma, Alok Kumar @ 2020-02-04  7:37 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches; +Cc: George, Jini Susan, Achra, Nitika, Tom Tromey

Hi Simon,

> I'll do that in a few minutes, once I confirms it builds on my machine.

Thanks a lot.

> If you plan on contributing patches regularly, it would be an option for you to get write access to the repo.  You could then push your own patches, once they are approved.  Let me know if you'd like to do that.

That would help. I request you to grant me the write permission. Please let me know if I need to do something for that.

> On another note, could you please fix your name in git?  It currently appears as `alosharm`, which I presume is your username.  You can do either:

Thanks for pointing this out, I have fixed it now.

Regards,
Alok



-----Original Message-----
From: Simon Marchi <simark@simark.ca> 
Sent: Tuesday, February 4, 2020 6:53 AM
To: Sharma, Alok Kumar <AlokKumar.Sharma@amd.com>; gdb-patches@sourceware.org
Cc: George, Jini Susan <JiniSusan.George@amd.com>; Achra, Nitika <Nitika.Achra@amd.com>; Tom Tromey <tom@tromey.com>
Subject: Re: [PATCH] Fixed gdb to print arrays with very high indexes

[CAUTION: External Email]

On 2020-02-03 12:20 a.m., Sharma, Alok Kumar wrote:
> As I don’t have required permission, It would be great if someone from the gdb-patches pushes this patch?
>
> Thanks in advance !!
>
> Regards,
> Alok

Hi Alok,

I'll do that in a few minutes, once I confirms it builds on my machine.

If you plan on contributing patches regularly, it would be an option for you to get write access to the repo.  You could then push your own patches, once they are approved.  Let me know if you'd like to do that.

On another note, could you please fix your name in git?  It currently appears as `alosharm`, which I presume is your username.  You can do either:

  $ git config user.name "Alok Kumar Sharma"

in the binutils-gdb repository, to apply it only to that repo, or:

  $ git config --global user.name "Alok Kumar Sharma"

to apply it to all your repos.

Simon

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] Fixed gdb to print arrays with very high indexes
  2020-02-03  5:20 Sharma, Alok Kumar
@ 2020-02-04  1:23 ` Simon Marchi
  2020-02-04  7:37   ` Sharma, Alok Kumar
  0 siblings, 1 reply; 6+ messages in thread
From: Simon Marchi @ 2020-02-04  1:23 UTC (permalink / raw)
  To: Sharma, Alok Kumar, gdb-patches
  Cc: George, Jini Susan, Achra, Nitika, Tom Tromey

On 2020-02-03 12:20 a.m., Sharma, Alok Kumar wrote:
> As I don’t have required permission, It would be great if someone from the gdb-patches pushes this patch?
> 
> Thanks in advance !!
> 
> Regards,
> Alok

Hi Alok,

I'll do that in a few minutes, once I confirms it builds on my machine.

If you plan on contributing patches regularly, it would be an option for you
to get write access to the repo.  You could then push your own patches, once
they are approved.  Let me know if you'd like to do that.

On another note, could you please fix your name in git?  It currently appears
as `alosharm`, which I presume is your username.  You can do either:

  $ git config user.name "Alok Kumar Sharma"

in the binutils-gdb repository, to apply it only to that repo, or:

  $ git config --global user.name "Alok Kumar Sharma"

to apply it to all your repos.

Simon

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH] Fixed gdb to print arrays with very high indexes
@ 2020-02-03  5:20 Sharma, Alok Kumar
  2020-02-04  1:23 ` Simon Marchi
  0 siblings, 1 reply; 6+ messages in thread
From: Sharma, Alok Kumar @ 2020-02-03  5:20 UTC (permalink / raw)
  To: gdb-patches; +Cc: George, Jini Susan, Achra, Nitika, Tom Tromey

[-- Attachment #1: Type: text/plain, Size: 1356 bytes --]

As I don’t have required permission, It would be great if someone from the gdb-patches pushes this patch?

Thanks in advance !!

Regards,
Alok

-----Original Message-----
From: Sharma, Alok Kumar 
Sent: Sunday, February 2, 2020 9:36 PM
To: Tom Tromey <tom@tromey.com>
Cc: gdb-patches@sourceware.org; George, Jini Susan <JiniSusan.George@amd.com>; Achra, Nitika <Nitika.Achra@amd.com>
Subject: RE: [PATCH] Fixed gdb to print arrays with very high indexes

Thanks for your valuable feedback. Please find the updated patch as an attachment.

Regards,
Alok

-----Original Message-----
From: Tom Tromey <tom@tromey.com> 
Sent: Friday, January 31, 2020 3:43 PM
To: Sharma, Alok Kumar <AlokKumar.Sharma@amd.com>
Cc: gdb-patches@sourceware.org; George, Jini Susan <JiniSusan.George@amd.com>; Achra, Nitika <Nitika.Achra@amd.com>
Subject: Re: [PATCH] Fixed gdb to print arrays with very high indexes

[CAUTION: External Email]

>>>>> ">" == Sharma, Alok Kumar <AlokKumar.Sharma@amd.com> writes:

[...]
>> Resolution:
>>      We have now changed the datatype of 'i' to LONGEST which is same as
>>     datatype of bounds.

Thank you for the patch and the explanation.

>> +# Copyright 2012-2020 Free Software Foundation, Inc.

The two new files should probably only mention 2020.
The patch is ok with that nit fixed.

Tom

[-- Attachment #2: 0001-Fixed-gdb-to-print-arrays-with-very-high-indexes.patch --]
[-- Type: application/octet-stream, Size: 4869 bytes --]

From c3fed8c97bef7a92a1fe9c988027679a94e2941b Mon Sep 17 00:00:00 2001
From: alosharm <AlokKumar.Sharma@amd.com>
Date: Tue, 28 Jan 2020 21:52:01 +0530
Subject: [PATCH] Fixed gdb to print arrays with very high indexes

 In the function f77_print_array_1, the variable 'i' which holds the
index is of datatype 'int', while bounds are of datatype LONGEST. Due
to size of int being smaller than LONGEST, the variable 'i' stores
incorrect values for high indexes (higher than max limit of int).
 Due to this issue in sources, two abnormal behaviors are seen while
printing arrays with high indexes (please check array-bounds-high.f90)
 For high indexes with negative sign, gdb prints empty array even if
the array has elements,
(gdb) p arr
$1 = ()
 For high indexes with positive sign, gdb crashes.
 We have now changed the datatype of 'i' to LONGEST which is same as
datatype of bounds.

gdb/ChangeLog

	* f-valprint.c (f77_print_array_1): Changed datatype of index
	variable to LONGEST from int to enable it to contain bound
	values correctly.

gdb/testsuite/ChangeLog

	* gdb.fortran/array-bounds-high.exp: New file.
	* gdb.fortran/array-bounds-high.f90: New file.

Change-Id: Ie2dce9380a249e634e2684b9c90f225e104369b7
---
 gdb/f-valprint.c                              |  2 +-
 .../gdb.fortran/array-bounds-high.exp         | 39 +++++++++++++++++++
 .../gdb.fortran/array-bounds-high.f90         | 23 +++++++++++
 3 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 gdb/testsuite/gdb.fortran/array-bounds-high.exp
 create mode 100644 gdb/testsuite/gdb.fortran/array-bounds-high.f90

diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
index 168957f6fb..71247a7143 100644
--- a/gdb/f-valprint.c
+++ b/gdb/f-valprint.c
@@ -115,7 +115,7 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type,
   struct type *range_type = TYPE_INDEX_TYPE (check_typedef (type));
   CORE_ADDR addr = address + embedded_offset;
   LONGEST lowerbound, upperbound;
-  int i;
+  LONGEST i;
 
   get_discrete_bounds (range_type, &lowerbound, &upperbound);
 
diff --git a/gdb/testsuite/gdb.fortran/array-bounds-high.exp b/gdb/testsuite/gdb.fortran/array-bounds-high.exp
new file mode 100644
index 0000000000..81e2f87b89
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/array-bounds-high.exp
@@ -0,0 +1,39 @@
+# Copyright 2020 Free Software Foundation, Inc.
+
+# This program 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.
+#
+# This program 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/>.
+
+# This file is part of the gdb testsuite.  It contains test to ensure that
+# array bounds accept LONGEST.
+
+if { [skip_fortran_tests] } { return -1 }
+
+set testfile "array-bounds-high"
+standard_testfile .f90
+
+if {[prepare_for_testing $testfile.exp $testfile $srcfile {f90 debug}]} {
+    return -1
+}
+
+if {![runto MAIN__]} {
+    perror "Could not run to breakpoint `MAIN__'."
+    continue
+}
+
+gdb_test "until 21" {21.*print.*}
+
+# Lets check whether too high (with - sign) indexed array are printed correctly
+gdb_test "print arr1" {.*\(11, 11\).*}
+
+# Lets check whether too high (with + sign) indexed array are printed correctly
+gdb_test "print arr2" {.*\(22, 22\).*}
diff --git a/gdb/testsuite/gdb.fortran/array-bounds-high.f90 b/gdb/testsuite/gdb.fortran/array-bounds-high.f90
new file mode 100644
index 0000000000..b72cd1bb2b
--- /dev/null
+++ b/gdb/testsuite/gdb.fortran/array-bounds-high.f90
@@ -0,0 +1,23 @@
+! Copyright 2020 Free Software Foundation, Inc.
+
+! This program 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.
+!
+! This program 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/>.
+
+program main
+      integer(4) :: arr1(-4294967297_8:-4294967296_8)
+      integer(4) :: arr2(4294967296_8:4294967297_8)
+      arr1 = 11
+      arr2 = 22
+      print *, 'arr1 = ', arr1
+      print *, 'arr2 = ', arr2
+end
-- 
2.17.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-02-04  7:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <DM6PR12MB312912C12E60E8EB91778B909E050@DM6PR12MB3129.namprd12.prod.outlook.com>
2020-01-29 11:31 ` [PATCH] Fixed gdb to print arrays with very high indexes Sharma, Alok Kumar
2020-01-31 10:28   ` Tom Tromey
2020-02-02 16:06     ` Sharma, Alok Kumar
2020-02-03  5:20 Sharma, Alok Kumar
2020-02-04  1:23 ` Simon Marchi
2020-02-04  7:37   ` Sharma, Alok Kumar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).