public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gdb] gdb-17.2-rebase-f44: Fix Python backtraces for 32-bit inferiors (Tom Tromey, RH BZ 1411094).
@ 2026-06-27 23:58 Jan Kratochvil
  0 siblings, 0 replies; only message in thread
From: Jan Kratochvil @ 2026-06-27 23:58 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/gdb
Branch : gdb-17.2-rebase-f44
Commit : a06a12e15b223443ac554c938d7d6b995974a0a5
Author : Jan Kratochvil <jan.kratochvil@redhat.com>
Date   : 2017-01-08T13:00:47+01:00
Stats  : +140/-1 in 2 file(s)
URL    : https://src.fedoraproject.org/rpms/gdb/c/a06a12e15b223443ac554c938d7d6b995974a0a5?branch=gdb-17.2-rebase-f44

Log:
Fix Python backtraces for 32-bit inferiors (Tom Tromey, RH BZ 1411094).

---
diff --git a/gdb-upstream.patch b/gdb-upstream.patch
index 2ba72db..3ab99e3 100644
--- a/gdb-upstream.patch
+++ b/gdb-upstream.patch
@@ -458,3 +458,139 @@ index 378eea0..7d9b198 100644
 
 --IS0zKkzwUGydFO0o--
 
+
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1411094
+http://sourceware.org/ml/gdb-patches/2016-11/msg00076.html
+Subject: Re: [RFA 1/2] Fix some error-handling bugs in python frame filters
+
+>>>>> "Tom" == Tom Tromey <tom@tromey.com> writes:
+
+Tom> I've included a test case for the first issue.
+
+I did a -m32 build here and have fixed up the test case.
+Here's the new patch.  This is ready to review now.
+
+Tom
+
+commit 981628a4af5f82a12351b9764437927d3a8c8169
+Author: Tom Tromey <tom@tromey.com>
+Date:   Mon Oct 31 11:10:35 2016 -0600
+
+    Fix some error-handling bugs in python frame filters
+    
+    While writing a Python frame filter, I found a few bugs in the current
+    frame filter code.  In particular:
+    
+    * One spot converts a Python long to a CORE_ADDR using PyLong_AsLong.
+      However, this can fail on overflow.  I changed this to use
+      get_addr_from_python.
+    
+    * Another spot is doing the same but with PyLong_AsUnsignedLongLong; I
+      changed this as well just for consistency.
+    
+    * Converting line numbers can print "-1" if conversion from long
+      fails.  This isn't fatal but just a bit ugly.
+    
+    I've included a test case for the first issue.  The line number one
+    didn't seem important enough to bother with.
+    
+    2016-10-31  Tom Tromey  <tom@tromey.com>
+    
+    	* python/py-framefilter.c (py_print_frame): Use
+    	get_addr_from_python.  Check for errors when getting line number.
+    
+    2016-10-31  Tom Tromey  <tom@tromey.com>
+    
+    	* gdb.python/py-framefilter.py (ElidingFrameDecorator.address):
+    	New method.
+
+diff --git a/gdb/ChangeLog b/gdb/ChangeLog
+index 1fd85ce..98fcd21 100644
+### a/gdb/ChangeLog
+### b/gdb/ChangeLog
+## -1,3 +1,8 @@
++2016-10-31  Tom Tromey  <tom@tromey.com>
++
++	* python/py-framefilter.c (py_print_frame): Use
++	get_addr_from_python.  Check for errors when getting line number.
++
+ 2016-11-03  Yao Qi  <yao.qi@linaro.org>
+ 
+ 	* Makefile.in (.y.c): Replace YY_NULL with YY_NULLPTR.
+diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
+index 6692ac5..4c7757c 100644
+--- a/gdb/python/py-framefilter.c
++++ b/gdb/python/py-framefilter.c
+@@ -1116,7 +1116,13 @@ py_print_frame (PyObject *filter, int flags,
+ 
+ 	  if (paddr != Py_None)
+ 	    {
+-	      address = PyLong_AsLong (paddr);
++	      if (get_addr_from_python (paddr, &address) < 0)
++		{
++		  Py_DECREF (paddr);
++		  do_cleanups (cleanup_stack);
++		  return EXT_LANG_BT_ERROR;
++		}
++
+ 	      has_addr = 1;
+ 	    }
+ 	  Py_DECREF (paddr);
+@@ -1213,10 +1219,10 @@ py_print_frame (PyObject *filter, int flags,
+ 	    }
+ 	  else if (PyLong_Check (py_func))
+ 	    {
+-	      CORE_ADDR addr = PyLong_AsUnsignedLongLong (py_func);
++	      CORE_ADDR addr;
+ 	      struct bound_minimal_symbol msymbol;
+ 
+-	      if (PyErr_Occurred ())
++	      if (get_addr_from_python (py_func, &addr) < 0)
+ 		{
+ 		  do_cleanups (cleanup_stack);
+ 		  return EXT_LANG_BT_ERROR;
+@@ -1340,6 +1346,12 @@ py_print_frame (PyObject *filter, int flags,
+ 	  if (py_line != Py_None)
+ 	    {
+ 	      line = PyLong_AsLong (py_line);
++	      if (PyErr_Occurred ())
++		{
++		  do_cleanups (cleanup_stack);
++		  return EXT_LANG_BT_ERROR;
++		}
++
+ 	      TRY
+ 		{
+ 		  ui_out_text (out, ":");
+diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
+index 52038e3..d8466f1 100644
+### a/gdb/testsuite/ChangeLog
+### b/gdb/testsuite/ChangeLog
+## -1,3 +1,8 @@
++2016-10-31  Tom Tromey  <tom@tromey.com>
++
++	* gdb.python/py-framefilter.py (ElidingFrameDecorator.address):
++	New method.
++
+ 2016-10-28  Pedro Alves  <palves@redhat.com>
+ 
+ 	* gdb.base/maint.exp <maint info line-table w/o a file name>: Use
+diff --git a/gdb/testsuite/gdb.python/py-framefilter.py b/gdb/testsuite/gdb.python/py-framefilter.py
+index 8fdff84..2580911 100644
+--- a/gdb/testsuite/gdb.python/py-framefilter.py
++++ b/gdb/testsuite/gdb.python/py-framefilter.py
+@@ -92,6 +92,12 @@ class ElidingFrameDecorator(FrameDecorator):
+     def elided(self):
+         return iter(self.elided_frames)
+ 
++    def address (self):
++        # Regression test for an overflow in the python layer.
++        bitsize = 8 * gdb.lookup_type('void').pointer().sizeof
++        mask = (1 << bitsize) - 1
++        return 0xffffffffffffffff & mask
++
+ class ElidingIterator:
+     def __init__(self, ii):
+         self.input_iterator = ii
+

diff --git a/gdb.spec b/gdb.spec
index c3ed25f..efa2d68 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -26,7 +26,7 @@ Version: 7.12
 
 # The release always contains a leading reserved number, start it at 1.
 # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 34%{?dist}
+Release: 35%{?dist}
 
 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain and GFDL
 Group: Development/Debuggers
@@ -1583,6 +1583,9 @@ then
 fi
 
 %changelog
+* Sun Jan  8 2017 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.12-35.fc25
+- Fix Python backtraces for 32-bit inferiors (Tom Tromey, RH BZ 1411094).
+
 * Fri Jan  6 2017 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.12-34.fc25
 - Fix gdb-add-index for 444 *.debug files.
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-27 23:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-27 23:58 [rpms/gdb] gdb-17.2-rebase-f44: Fix Python backtraces for 32-bit inferiors (Tom Tromey, RH BZ 1411094) Jan Kratochvil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox