Compare commits
5 Commits
a36b0fbe3a
...
6dc547f9f5
Author | SHA1 | Date |
---|---|---|
David Abdurachmanov | 6dc547f9f5 | |
Kevin Buettner | 46b67ac265 | |
Kevin Buettner | a84ff66cf3 | |
Alexandra Hájková | c01228012c | |
Alexandra Hájková | 9b90152921 |
|
@ -187,3 +187,15 @@ Patch042: gdb-rhbz-2232086-generate-gdb-index-consistently.patch
|
|||
# non-deterministic gdb-index generation (RH BZ 2232086).
|
||||
Patch043: gdb-rhbz-2232086-generate-dwarf-5-index-consistently.patch
|
||||
|
||||
|
||||
Patch044: gdb-rhbz2250652-gdbpy_gil.patch
|
||||
|
||||
|
||||
Patch045: gdb-rhbz2250652-avoid-PyOS_ReadlineTState.patch
|
||||
|
||||
# Backport potential fix for RH BZ 2257562.
|
||||
Patch046: gdb-rhbz2257562-cp-namespace-null-ptr-check.patch
|
||||
|
||||
|
||||
Patch047: gdb-ftbs-swapped-calloc-args.patch
|
||||
|
||||
|
|
|
@ -41,3 +41,7 @@
|
|||
%patch -p1 -P041
|
||||
%patch -p1 -P042
|
||||
%patch -p1 -P043
|
||||
%patch -p1 -P044
|
||||
%patch -p1 -P045
|
||||
%patch -p1 -P046
|
||||
%patch -p1 -P047
|
||||
|
|
|
@ -41,3 +41,7 @@ gdb-rhbz-2232086-reduce-size-of-gdb-index.patch
|
|||
gdb-rhbz-2232086-cpp-ify-mapped-symtab.patch
|
||||
gdb-rhbz-2232086-generate-gdb-index-consistently.patch
|
||||
gdb-rhbz-2232086-generate-dwarf-5-index-consistently.patch
|
||||
gdb-rhbz2250652-gdbpy_gil.patch
|
||||
gdb-rhbz2250652-avoid-PyOS_ReadlineTState.patch
|
||||
gdb-rhbz2257562-cp-namespace-null-ptr-check.patch
|
||||
gdb-ftbs-swapped-calloc-args.patch
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Buettner <kevinb@redhat.com>
|
||||
Date: Wed, 17 Jan 2024 12:53:53 -0700
|
||||
Subject: gdb-ftbs-swapped-calloc-args.patch
|
||||
|
||||
Backport upstream commit 54195469c18ec9873cc5ba6907f768509473fa9b
|
||||
which fixes a build problem in which arguments to calloc were swapped.
|
||||
|
||||
[opcodes] ARC + PPC: Fix -Walloc-size warnings
|
||||
|
||||
Recently, -Walloc-size warnings started to kick in. Fix these two
|
||||
calloc() calls to match the intended usage pattern.
|
||||
|
||||
opcodes/ChangeLog:
|
||||
|
||||
* arc-dis.c (init_arc_disasm_info): Fix calloc() call.
|
||||
* ppc-dis.c (powerpc_init_dialect): Ditto.
|
||||
|
||||
diff --git a/opcodes/arc-dis.c b/opcodes/arc-dis.c
|
||||
--- a/opcodes/arc-dis.c
|
||||
+++ b/opcodes/arc-dis.c
|
||||
@@ -147,7 +147,7 @@ static bool
|
||||
init_arc_disasm_info (struct disassemble_info *info)
|
||||
{
|
||||
struct arc_disassemble_info *arc_infop
|
||||
- = calloc (sizeof (*arc_infop), 1);
|
||||
+ = calloc (1, sizeof (*arc_infop));
|
||||
|
||||
if (arc_infop == NULL)
|
||||
return false;
|
||||
diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c
|
||||
--- a/opcodes/ppc-dis.c
|
||||
+++ b/opcodes/ppc-dis.c
|
||||
@@ -348,7 +348,7 @@ powerpc_init_dialect (struct disassemble_info *info)
|
||||
{
|
||||
ppc_cpu_t dialect = 0;
|
||||
ppc_cpu_t sticky = 0;
|
||||
- struct dis_private *priv = calloc (sizeof (*priv), 1);
|
||||
+ struct dis_private *priv = calloc (1, sizeof (*priv));
|
||||
|
||||
if (priv == NULL)
|
||||
return;
|
|
@ -0,0 +1,48 @@
|
|||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= <ahajkova@redhat.com>
|
||||
Date: Mon, 8 Jan 2024 13:24:05 +0100
|
||||
Subject: gdb-rhbz2250652-avoid-PyOS_ReadlineTState.patch
|
||||
|
||||
gdb/python: avoid use of _PyOS_ReadlineTState
|
||||
|
||||
In python/py-gdb-readline.c we make use of _PyOS_ReadlineTState,
|
||||
however, this variable is no longer public in Python 3.13, and so GDB
|
||||
no longer builds.
|
||||
|
||||
We are making use of _PyOS_ReadlineTState in order to re-acquire the
|
||||
Python Global Interpreter Lock (GIL). The _PyOS_ReadlineTState
|
||||
variable is set in Python's outer readline code prior to calling the
|
||||
user (GDB) supplied readline callback function, which for us is
|
||||
gdbpy_readline_wrapper. The gdbpy_readline_wrapper function is called
|
||||
without the GIL held.
|
||||
|
||||
Instead of using _PyOS_ReadlineTState, I propose that we switch to
|
||||
calling PyGILState_Ensure() and PyGILState_Release(). These functions
|
||||
will acquire the GIL based on the current thread. I think this should
|
||||
be sufficient; I can't imagine why we'd be running
|
||||
gdbpy_readline_wrapper on one thread on behalf of a different Python
|
||||
thread.... that would be unexpected I think.
|
||||
|
||||
Approved-By: Tom Tromey <tom@tromey.com>
|
||||
|
||||
diff --git a/gdb/python/py-gdb-readline.c b/gdb/python/py-gdb-readline.c
|
||||
--- a/gdb/python/py-gdb-readline.c
|
||||
+++ b/gdb/python/py-gdb-readline.c
|
||||
@@ -56,13 +56,11 @@ gdbpy_readline_wrapper (FILE *sys_stdin, FILE *sys_stdout,
|
||||
if (except.reason == RETURN_QUIT)
|
||||
return NULL;
|
||||
|
||||
- /* The thread state is nulled during gdbpy_readline_wrapper,
|
||||
- with the original value saved in the following undocumented
|
||||
- variable (see Python's Parser/myreadline.c and
|
||||
- Modules/readline.c). */
|
||||
- PyEval_RestoreThread (_PyOS_ReadlineTState);
|
||||
+
|
||||
+ /* This readline callback is called without the GIL held. */
|
||||
+ gdbpy_gil gil;
|
||||
+
|
||||
gdbpy_convert_exception (except);
|
||||
- PyEval_SaveThread ();
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= <ahajkova@redhat.com>
|
||||
Date: Mon, 8 Jan 2024 13:12:15 +0100
|
||||
Subject: gdb-rhbz2250652-gdbpy_gil.patch
|
||||
|
||||
gdb: move gdbpy_gil into python-internal.h
|
||||
|
||||
Move gdbpy_gil class into python-internal.h, the next
|
||||
commit wants to make use of this class from a file other
|
||||
than python.c.
|
||||
|
||||
Approved-By: Tom Tromey <tom@tromey.com>
|
||||
|
||||
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
|
||||
--- a/gdb/python/python-internal.h
|
||||
+++ b/gdb/python/python-internal.h
|
||||
@@ -754,6 +754,30 @@ class gdbpy_allow_threads
|
||||
PyThreadState *m_save;
|
||||
};
|
||||
|
||||
+/* A helper class to save and restore the GIL, but without touching
|
||||
+ the other globals that are handled by gdbpy_enter. */
|
||||
+
|
||||
+class gdbpy_gil
|
||||
+{
|
||||
+public:
|
||||
+
|
||||
+ gdbpy_gil ()
|
||||
+ : m_state (PyGILState_Ensure ())
|
||||
+ {
|
||||
+ }
|
||||
+
|
||||
+ ~gdbpy_gil ()
|
||||
+ {
|
||||
+ PyGILState_Release (m_state);
|
||||
+ }
|
||||
+
|
||||
+ DISABLE_COPY_AND_ASSIGN (gdbpy_gil);
|
||||
+
|
||||
+private:
|
||||
+
|
||||
+ PyGILState_STATE m_state;
|
||||
+};
|
||||
+
|
||||
/* Use this after a TRY_EXCEPT to throw the appropriate Python
|
||||
exception. */
|
||||
#define GDB_PY_HANDLE_EXCEPTION(Exception) \
|
||||
diff --git a/gdb/python/python.c b/gdb/python/python.c
|
||||
--- a/gdb/python/python.c
|
||||
+++ b/gdb/python/python.c
|
||||
@@ -257,30 +257,6 @@ gdbpy_enter::finalize ()
|
||||
python_gdbarch = target_gdbarch ();
|
||||
}
|
||||
|
||||
-/* A helper class to save and restore the GIL, but without touching
|
||||
- the other globals that are handled by gdbpy_enter. */
|
||||
-
|
||||
-class gdbpy_gil
|
||||
-{
|
||||
-public:
|
||||
-
|
||||
- gdbpy_gil ()
|
||||
- : m_state (PyGILState_Ensure ())
|
||||
- {
|
||||
- }
|
||||
-
|
||||
- ~gdbpy_gil ()
|
||||
- {
|
||||
- PyGILState_Release (m_state);
|
||||
- }
|
||||
-
|
||||
- DISABLE_COPY_AND_ASSIGN (gdbpy_gil);
|
||||
-
|
||||
-private:
|
||||
-
|
||||
- PyGILState_STATE m_state;
|
||||
-};
|
||||
-
|
||||
/* Set the quit flag. */
|
||||
|
||||
static void
|
|
@ -0,0 +1,113 @@
|
|||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Buettner <kevinb@redhat.com>
|
||||
Date: Tue, 16 Jan 2024 20:07:53 -0700
|
||||
Subject: gdb-rhbz2257562-cp-namespace-null-ptr-check.patch
|
||||
|
||||
;; Backport potential fix for RH BZ 2257562.
|
||||
|
||||
Fix printing of global variable stubs if no inferior is running
|
||||
|
||||
Since 3c45e9f915ae4aeab7312d6fc55a947859057572 gdb crashes when trying
|
||||
to print a global variable stub without a running inferior, because of
|
||||
a missing nullptr-check (the block_scope function took care of that
|
||||
check before it was converted to a method).
|
||||
|
||||
With this check it works again:
|
||||
```
|
||||
(gdb) print s
|
||||
$1 = <incomplete type>
|
||||
```
|
||||
|
||||
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31128
|
||||
Approved-By: Tom Tromey <tom@tromey.com>
|
||||
(cherry picked from commit 576745e26c0ec76a53ba45b20af464628a50b3e4)
|
||||
|
||||
diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c
|
||||
--- a/gdb/cp-namespace.c
|
||||
+++ b/gdb/cp-namespace.c
|
||||
@@ -1026,7 +1026,11 @@ cp_lookup_transparent_type (const char *name)
|
||||
|
||||
/* If that doesn't work and we're within a namespace, look there
|
||||
instead. */
|
||||
- scope = get_selected_block (0)->scope ();
|
||||
+ const block *block = get_selected_block (0);
|
||||
+ if (block == nullptr)
|
||||
+ return nullptr;
|
||||
+
|
||||
+ scope = block->scope ();
|
||||
|
||||
if (scope[0] == '\0')
|
||||
return NULL;
|
||||
diff --git a/gdb/testsuite/gdb.cp/print-global-stub.cc b/gdb/testsuite/gdb.cp/print-global-stub.cc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.cp/print-global-stub.cc
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2023 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/>. */
|
||||
+
|
||||
+struct S
|
||||
+{
|
||||
+ S (int);
|
||||
+ virtual ~S ();
|
||||
+
|
||||
+ int m_i;
|
||||
+};
|
||||
+
|
||||
+S s (5);
|
||||
+
|
||||
+int main ()
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/gdb/testsuite/gdb.cp/print-global-stub.exp b/gdb/testsuite/gdb.cp/print-global-stub.exp
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.cp/print-global-stub.exp
|
||||
@@ -0,0 +1,32 @@
|
||||
+# Copyright (C) 2023 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 tests printing of a global stub without inferior.
|
||||
+
|
||||
+require allow_cplus_tests
|
||||
+
|
||||
+standard_testfile .cc
|
||||
+set objfile [standard_output_file ${testfile}.o]
|
||||
+
|
||||
+if { [gdb_compile $srcdir/$subdir/$srcfile $objfile object \
|
||||
+ {c++ debug}] != "" } {
|
||||
+ untested "failed to compile"
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+clean_restart $objfile
|
||||
+
|
||||
+gdb_test "print s" " = <incomplete type>"
|
17
gdb.spec
17
gdb.spec
|
@ -57,9 +57,9 @@ Version: 14.1
|
|||
|
||||
# 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: 1.0.riscv64%{?dist}
|
||||
Release: 4.0.riscv64%{?dist}
|
||||
|
||||
License: GPL-3.0-or-later AND BSD-3-clause AND FSFAP AND LGPL-2.1-or-later AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LicenseRef-Fedora-Public-Domain AND GFDL-1.3-or-later AND LGPL-2.0-or-later WITH GCC-exception-2.0 AND GPL-3.0-or-later WITH GCC-exception-3.1 AND GPL-2.0-or-later WITH GNU-compiler-exception
|
||||
License: GPL-3.0-or-later AND BSD-3-Clause AND FSFAP AND LGPL-2.1-or-later AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LicenseRef-Fedora-Public-Domain AND GFDL-1.3-or-later AND LGPL-2.0-or-later WITH GCC-exception-2.0 AND GPL-3.0-or-later WITH GCC-exception-3.1 AND GPL-2.0-or-later WITH GNU-compiler-exception
|
||||
# Do not provide URL for snapshots as the file lasts there only for 2 days.
|
||||
# ftp://sourceware.org/pub/gdb/releases/FIXME{tarname}.tar.xz
|
||||
#Source: %{tarname}.tar.xz
|
||||
|
@ -1250,9 +1250,20 @@ fi
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Thu Dec 14 2023 David Abdurachmanov <davidlt@rivosinc.com> - 14.1-1.0.riscv64
|
||||
* Tue Jan 23 2024 David Abdurachmanov <davidlt@rivosinc.com> - 14.1-4.0.riscv64
|
||||
- Add riscv64 support
|
||||
|
||||
* Tue Jan 16 2024 Kevin Buettner <kevinb@redhat.com> - 14.1-4
|
||||
- Backport upstream commit bc23ea51f8a83e9524dfb553baa8baacb29e68a9,
|
||||
potentially fixing RHBZ 2257562.
|
||||
|
||||
* Thu Jan 11 2024 Alexandra Hájková <ahajkova@redhat.com> - 14.1-3
|
||||
- Fix typo in gdb.spec.
|
||||
|
||||
* Mon Jan 8 2024 Alexandra Hájková <ahajkova@redhat.com> - 14.1-2
|
||||
- Backport upstream commits 7ae9ecfd801 and 8170efad364 to avoid
|
||||
using _PyOS_ReadlineTState (RHBZ 2250652).
|
||||
|
||||
* Fri Dec 8 2023 Kevin Buettner <kevinb@redhat.com> - 14.1-1
|
||||
- Rebase to FSF GDB 14.1.
|
||||
- Update local patches:
|
||||
|
|
Loading…
Reference in New Issue