[2/2] guile: Add support for Guile 3.0.

Message ID 20200612132710.14364-3-ludo@gnu.org
State Superseded
Headers show
Series
  • Add support for Guile 3.0 and 2.2
Related show

Commit Message

Ludovic Courtès June 12, 2020, 1:27 p.m.
gdb/ChangeLog:

	* guile/scm-math.c (vlscm_integer_fits_p): Use 'uintmax_t'
	and 'intmax_t' instead of 'scm_t_uintmax' and 'scm_t_intmax',
	which are deprecated in Guile 3.0.
	* testsuite/gdb.guile/source2.scm: Add #f first argument to
	'format'.
	* testsuite/gdb.guile/types-module.exp: Remove "ERROR:" from
	regexps since Guile 3.0 no longer prints that.
	* configure.ac (try_guile_versions): Add "guile-3.0".
	* configure (try_guile_versions): Regenerate.
	* doc/guile.texi (Guile Introduction): Mention Guile 3.0.
---
 gdb/configure                            | 2 +-
 gdb/configure.ac                         | 2 +-
 gdb/doc/guile.texi                       | 2 +-
 gdb/guile/scm-math.c                     | 4 ++--
 gdb/testsuite/gdb.guile/source2.scm      | 2 +-
 gdb/testsuite/gdb.guile/types-module.exp | 6 +++---
 6 files changed, 9 insertions(+), 9 deletions(-)

-- 
2.26.2

Comments

Tom Tromey June 15, 2020, 3:02 p.m. | #1
>>>>> "Ludovic" == Ludovic Courtès <ludo@gnu.org> writes:


Ludovic> 	* testsuite/gdb.guile/source2.scm: Add #f first argument to
Ludovic> 	'format'.
Ludovic> 	* testsuite/gdb.guile/types-module.exp: Remove "ERROR:" from
Ludovic> 	regexps since Guile 3.0 no longer prints that.

testsuite/ (unfortunately IMO) has its own ChangeLog.

Ludovic>        /* If scm_is_unsigned_integer can't work with this type, just punt.  */
Ludovic> -      if (TYPE_LENGTH (type) > sizeof (scm_t_uintmax))
Ludovic> +      if (TYPE_LENGTH (type) > sizeof (uintmax_t))

I suppose these can't differ in Guile 2.0 or 2.2?

Anyway, this patch seems fine to me.

Tom
Ludovic Courtès June 15, 2020, 3:17 p.m. | #2
Hi,

Tom Tromey <tom@tromey.com> skribis:

>>>>>> "Ludovic" == Ludovic Courtès <ludo@gnu.org> writes:

>

> Ludovic> 	* testsuite/gdb.guile/source2.scm: Add #f first argument to

> Ludovic> 	'format'.

> Ludovic> 	* testsuite/gdb.guile/types-module.exp: Remove "ERROR:" from

> Ludovic> 	regexps since Guile 3.0 no longer prints that.

>

> testsuite/ (unfortunately IMO) has its own ChangeLog.


Oops, will change it.

> Ludovic>        /* If scm_is_unsigned_integer can't work with this type, just punt.  */

> Ludovic> -      if (TYPE_LENGTH (type) > sizeof (scm_t_uintmax))

> Ludovic> +      if (TYPE_LENGTH (type) > sizeof (uintmax_t))

>

> I suppose these can't differ in Guile 2.0 or 2.2?


Correct.  ‘scm_t_uintmax’ used to be provided by Guile but it no longer
makes sense now that C99 <stdint.h> and its C++ counterpart are widely
available.

> Anyway, this patch seems fine to me.


Thanks,
Ludo’.
Ludovic Courtès June 17, 2020, 4:58 p.m. | #3
Hello Tom & Eli,

Tom Tromey <tom@tromey.com> skribis:

>>>>>> "Ludovic" == Ludovic Courtès <ludo@gnu.org> writes:


[...]

> Anyway, this patch seems fine to me.


[...]

> The documentation parts are okay, thanks.

>

> I still am not convinced we should remove the description of those

> functions from the manual, but I'll let others speak up if they have

> an opinion.


We haven’t gotten more feedback.

Should I interpret your messages above as formal approval?  For the
first patch or both?  (I can also wait for more feedback, I just want to
make sure there’s no misunderstanding.)

Thanks,
Ludo’.
Eli Zaretskii June 17, 2020, 5:21 p.m. | #4
> From: Ludovic Courtès <ludo@gnu.org>

> Cc: gdb-patches@sourceware.org

> Date: Wed, 17 Jun 2020 18:58:15 +0200

> 

> > Anyway, this patch seems fine to me.

> 

> [...]

> 

> > The documentation parts are okay, thanks.

> >

> > I still am not convinced we should remove the description of those

> > functions from the manual, but I'll let others speak up if they have

> > an opinion.

> 

> We haven’t gotten more feedback.

> 

> Should I interpret your messages above as formal approval?  For the

> first patch or both?  (I can also wait for more feedback, I just want to

> make sure there’s no misunderstanding.)


I approved the documentation parts.  I'll leave it to Tom to decide
whether we need to wait for more opinions.

Patch

diff --git a/gdb/configure b/gdb/configure
index bd12695291..5ad1e53ac4 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -10954,7 +10954,7 @@  fi
 
 
 
-try_guile_versions="guile-2.2 guile-2.0"
+try_guile_versions="guile-3.0 guile-2.2 guile-2.0"
 have_libguile=no
 case "${with_guile}" in
 no)
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 87afc26581..d8cef1e914 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -1088,7 +1088,7 @@  AC_MSG_RESULT([$with_guile])
 dnl We check guile with pkg-config.
 AC_PATH_PROG(pkg_config_prog_path, pkg-config, missing)
 
-try_guile_versions="guile-2.2 guile-2.0"
+try_guile_versions="guile-3.0 guile-2.2 guile-2.0"
 have_libguile=no
 case "${with_guile}" in
 no)
diff --git a/gdb/doc/guile.texi b/gdb/doc/guile.texi
index 0e6c74ef8b..45c8f3f197 100644
--- a/gdb/doc/guile.texi
+++ b/gdb/doc/guile.texi
@@ -38,7 +38,7 @@  Guile support in @value{GDBN} follows the Python support in @value{GDBN}
 reasonably closely, so concepts there should carry over.
 However, some things are done differently where it makes sense.
 
-@value{GDBN} requires Guile version 2.2 or 2.0.
+@value{GDBN} requires Guile version 3.0, 2.2, or 2.0.
 
 @cindex guile scripts directory
 Guile scripts used by @value{GDBN} should be installed in
diff --git a/gdb/guile/scm-math.c b/gdb/guile/scm-math.c
index 7c63fa2ae0..419f5099bf 100644
--- a/gdb/guile/scm-math.c
+++ b/gdb/guile/scm-math.c
@@ -578,7 +578,7 @@  vlscm_integer_fits_p (SCM obj, struct type *type)
       ULONGEST max;
 
       /* If scm_is_unsigned_integer can't work with this type, just punt.  */
-      if (TYPE_LENGTH (type) > sizeof (scm_t_uintmax))
+      if (TYPE_LENGTH (type) > sizeof (uintmax_t))
 	return 0;
       get_unsigned_type_max (type, &max);
       return scm_is_unsigned_integer (obj, 0, max);
@@ -588,7 +588,7 @@  vlscm_integer_fits_p (SCM obj, struct type *type)
       LONGEST min, max;
 
       /* If scm_is_signed_integer can't work with this type, just punt.  */
-      if (TYPE_LENGTH (type) > sizeof (scm_t_intmax))
+      if (TYPE_LENGTH (type) > sizeof (intmax_t))
 	return 0;
       get_signed_type_minmax (type, &min, &max);
       return scm_is_signed_integer (obj, min, max);
diff --git a/gdb/testsuite/gdb.guile/source2.scm b/gdb/testsuite/gdb.guile/source2.scm
index 39638053d9..c39f03801a 100644
--- a/gdb/testsuite/gdb.guile/source2.scm
+++ b/gdb/testsuite/gdb.guile/source2.scm
@@ -15,5 +15,5 @@ 
 ;; You should have received a copy of the GNU General Public License
 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-(display (format "y~As" "e"))
+(display (format #f "y~As" "e"))
 (newline)
diff --git a/gdb/testsuite/gdb.guile/types-module.exp b/gdb/testsuite/gdb.guile/types-module.exp
index 5a631dca8e..8ced6fbffb 100644
--- a/gdb/testsuite/gdb.guile/types-module.exp
+++ b/gdb/testsuite/gdb.guile/types-module.exp
@@ -44,7 +44,7 @@  gdb_test "guile (print (type-has-field-deep? d \"base_member\"))" \
     "= #t" "type-has-field-deep? member in baseclass"
 
 gdb_test "guile (print (type-has-field-deep? (lookup-type \"int\") \"base_member\"))" \
-    "ERROR: .*Wrong type argument in position 1 \\(expecting struct or union\\): #<gdb:type int>.*" \
+    "Wrong type argument in position 1 \\(expecting struct or union\\): #<gdb:type int>.*" \
     "type-has-field-deep? from int"
 
 gdb_scm_test_silent_cmd "guile (define enum-htab (make-enum-hashtable (lookup-type \"enum_type\")))" \
@@ -54,9 +54,9 @@  gdb_test "guile (print (hash-ref enum-htab \"B\"))" \
     "= 1" "verify make-enum-hashtable"
 
 gdb_test "guile (define bad-enum-htab (make-enum-hashtable #f))" \
-    "ERROR: .*Wrong type argument in position 1 \\(expecting gdb:type\\): #f.*" \
+    "Wrong type argument in position 1 \\(expecting gdb:type\\): #f.*" \
     "make-enum-hashtable from #f"
 
 gdb_test "guile (define bad-enum-htab (make-enum-hashtable (lookup-type \"int\")))" \
-    "ERROR: .*Wrong type argument in position 1 \\(expecting enum\\): #<gdb:type int>.*" \
+    "Wrong type argument in position 1 \\(expecting enum\\): #<gdb:type int>.*" \
     "make-enum-hashtable from int"