package: drop csky support in toolchain-related packages
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Guo Ren <ren_guo@c-sky.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>2022.08.x
parent
60fd212385
commit
84fe8e694e
|
@ -75,15 +75,6 @@ ABI := $(ABI)hf
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# For C-SKY abiv1 & abiv2
|
|
||||||
ifeq ($(BR2_csky),y)
|
|
||||||
ifeq ($(BR2_ck610),y)
|
|
||||||
ABI = abiv1
|
|
||||||
else
|
|
||||||
ABI = abiv2
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For FSL PowerPC there's SPE
|
# For FSL PowerPC there's SPE
|
||||||
ifeq ($(BR2_powerpc_SPE),y)
|
ifeq ($(BR2_powerpc_SPE),y)
|
||||||
ABI = spe
|
ABI = spe
|
||||||
|
|
|
@ -7,14 +7,13 @@ config BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Binutils Version"
|
prompt "Binutils Version"
|
||||||
default BR2_BINUTILS_VERSION_2_37_X if !BR2_arc && !BR2_csky
|
default BR2_BINUTILS_VERSION_2_37_X if !BR2_arc
|
||||||
default BR2_BINUTILS_VERSION_ARC if BR2_arc
|
default BR2_BINUTILS_VERSION_ARC if BR2_arc
|
||||||
help
|
help
|
||||||
Select the version of binutils you wish to use.
|
Select the version of binutils you wish to use.
|
||||||
|
|
||||||
config BR2_BINUTILS_VERSION_2_36_X
|
config BR2_BINUTILS_VERSION_2_36_X
|
||||||
bool "binutils 2.36.1"
|
bool "binutils 2.36.1"
|
||||||
depends on !BR2_csky
|
|
||||||
|
|
||||||
config BR2_BINUTILS_VERSION_2_37_X
|
config BR2_BINUTILS_VERSION_2_37_X
|
||||||
bool "binutils 2.37"
|
bool "binutils 2.37"
|
||||||
|
|
|
@ -27,10 +27,6 @@ config BR2_GCC_VERSION_10_X
|
||||||
# powerpc spe support has been deprecated since gcc 8.x.
|
# powerpc spe support has been deprecated since gcc 8.x.
|
||||||
# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html
|
# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html
|
||||||
depends on !BR2_powerpc_SPE
|
depends on !BR2_powerpc_SPE
|
||||||
# C-SKY sk610 needs abiv1, which is not supported in
|
|
||||||
# upstream gcc. C-SKY gcc upstream support not tested
|
|
||||||
# with upstream binutils and glibc.
|
|
||||||
depends on !BR2_csky
|
|
||||||
# ARC HS48 rel 31 only supported by gcc arc fork.
|
# ARC HS48 rel 31 only supported by gcc arc fork.
|
||||||
depends on !BR2_archs4x_rel31
|
depends on !BR2_archs4x_rel31
|
||||||
select BR2_TOOLCHAIN_GCC_AT_LEAST_10
|
select BR2_TOOLCHAIN_GCC_AT_LEAST_10
|
||||||
|
|
|
@ -1,193 +0,0 @@
|
||||||
From 8342feee01e4e8d38affcf35e47ad900567f42e0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kevin Buettner <kevinb@redhat.com>
|
|
||||||
Date: Wed, 27 May 2020 20:05:40 -0700
|
|
||||||
Subject: [PATCH] Fix Python3.9 related runtime problems
|
|
||||||
|
|
||||||
Python3.9b1 is now available on Rawhide. GDB w/ Python 3.9 support
|
|
||||||
can be built using the configure switch -with-python=/usr/bin/python3.9.
|
|
||||||
|
|
||||||
Attempting to run gdb/Python3.9 segfaults on startup:
|
|
||||||
|
|
||||||
#0 0x00007ffff7b0582c in PyEval_ReleaseLock () from /lib64/libpython3.9.so.1.0
|
|
||||||
#1 0x000000000069ccbf in do_start_initialization ()
|
|
||||||
at worktree-test1/gdb/python/python.c:1789
|
|
||||||
#2 _initialize_python ()
|
|
||||||
at worktree-test1/gdb/python/python.c:1877
|
|
||||||
#3 0x00000000007afb0a in initialize_all_files () at init.c:237
|
|
||||||
...
|
|
||||||
|
|
||||||
Consulting the the documentation...
|
|
||||||
|
|
||||||
https://docs.python.org/3/c-api/init.html
|
|
||||||
|
|
||||||
...we find that PyEval_ReleaseLock() has been deprecated since version
|
|
||||||
3.2. It recommends using PyEval_SaveThread or PyEval_ReleaseThread()
|
|
||||||
instead. In do_start_initialization, in gdb/python/python.c, we
|
|
||||||
can replace the calls to PyThreadState_Swap() and PyEval_ReleaseLock()
|
|
||||||
with a single call to PyEval_SaveThread. (Thanks to Keith Seitz
|
|
||||||
for working this out.)
|
|
||||||
|
|
||||||
With that in place, GDB gets a little bit further. It still dies
|
|
||||||
on startup, but the backtrace is different:
|
|
||||||
|
|
||||||
#0 0x00007ffff7b04306 in PyOS_InterruptOccurred ()
|
|
||||||
from /lib64/libpython3.9.so.1.0
|
|
||||||
#1 0x0000000000576e86 in check_quit_flag ()
|
|
||||||
at worktree-test1/gdb/extension.c:776
|
|
||||||
#2 0x0000000000576f8a in set_active_ext_lang (now_active=now_active@entry=0x983c00 <extension_language_python>)
|
|
||||||
at worktree-test1/gdb/extension.c:705
|
|
||||||
#3 0x000000000069d399 in gdbpy_enter::gdbpy_enter (this=0x7fffffffd2d0,
|
|
||||||
gdbarch=0x0, language=0x0)
|
|
||||||
at worktree-test1/gdb/python/python.c:211
|
|
||||||
#4 0x0000000000686e00 in python_new_inferior (inf=0xddeb10)
|
|
||||||
at worktree-test1/gdb/python/py-inferior.c:251
|
|
||||||
#5 0x00000000005d9fb9 in std::function<void (inferior*)>::operator()(inferior*) const (__args#0=<optimized out>, this=0xccad20)
|
|
||||||
at /usr/include/c++/10/bits/std_function.h:617
|
|
||||||
#6 gdb::observers::observable<inferior*>::notify (args#0=0xddeb10,
|
|
||||||
this=<optimized out>)
|
|
||||||
at worktree-test1/gdb/../gdbsupport/observable.h:106
|
|
||||||
#7 add_inferior_silent (pid=0)
|
|
||||||
at worktree-test1/gdb/inferior.c:113
|
|
||||||
#8 0x00000000005dbcb8 in initialize_inferiors ()
|
|
||||||
at worktree-test1/gdb/inferior.c:947
|
|
||||||
...
|
|
||||||
|
|
||||||
We checked with some Python Developers and were told that we should
|
|
||||||
acquire the GIL prior to calling any Python C API function. We
|
|
||||||
definitely don't have the GIL for calls of PyOS_InterruptOccurred().
|
|
||||||
|
|
||||||
I moved class_gdbpy_gil earlier in the file and use it in
|
|
||||||
gdbpy_check_quit_flag() to acquire (and automatically release) the
|
|
||||||
GIL.
|
|
||||||
|
|
||||||
With those changes in place, I was able to run to a GDB prompt. But,
|
|
||||||
when trying to quit, it segfaulted again due to due to some other
|
|
||||||
problems with gdbpy_check_quit_flag():
|
|
||||||
|
|
||||||
Thread 1 "gdb" received signal SIGSEGV, Segmentation fault.
|
|
||||||
0x00007ffff7bbab0c in new_threadstate () from /lib64/libpython3.9.so.1.0
|
|
||||||
(top-gdb) bt 8
|
|
||||||
#0 0x00007ffff7bbab0c in new_threadstate () from /lib64/libpython3.9.so.1.0
|
|
||||||
#1 0x00007ffff7afa5ea in PyGILState_Ensure.cold ()
|
|
||||||
from /lib64/libpython3.9.so.1.0
|
|
||||||
#2 0x000000000069b58c in gdbpy_gil::gdbpy_gil (this=<synthetic pointer>)
|
|
||||||
at worktree-test1/gdb/python/python.c:278
|
|
||||||
#3 gdbpy_check_quit_flag (extlang=<optimized out>)
|
|
||||||
at worktree-test1/gdb/python/python.c:278
|
|
||||||
#4 0x0000000000576e96 in check_quit_flag ()
|
|
||||||
at worktree-test1/gdb/extension.c:776
|
|
||||||
#5 0x000000000057700c in restore_active_ext_lang (previous=0xe9c050)
|
|
||||||
at worktree-test1/gdb/extension.c:729
|
|
||||||
#6 0x000000000088913a in do_my_cleanups (
|
|
||||||
pmy_chain=0xc31870 <final_cleanup_chain>,
|
|
||||||
old_chain=0xae5720 <sentinel_cleanup>)
|
|
||||||
at worktree-test1/gdbsupport/cleanups.cc:131
|
|
||||||
#7 do_final_cleanups ()
|
|
||||||
at worktree-test1/gdbsupport/cleanups.cc:143
|
|
||||||
|
|
||||||
In this case, we're trying to call a Python C API function after
|
|
||||||
Py_Finalize() has been called from finalize_python(). I made
|
|
||||||
finalize_python set gdb_python_initialized to false and then cause
|
|
||||||
check_quit_flag() to return early when it's false.
|
|
||||||
|
|
||||||
With these changes in place, GDB seems to be working again with
|
|
||||||
Python3.9b1. I think it likely that there are other problems lurking.
|
|
||||||
I wouldn't be surprised to find that there are other calls into Python
|
|
||||||
where we don't first make sure that we have the GIL. Further changes
|
|
||||||
may well be needed.
|
|
||||||
|
|
||||||
I see no regressions testing on Rawhide using a GDB built with the
|
|
||||||
default Python version (3.8.3) versus one built using Python 3.9b1.
|
|
||||||
|
|
||||||
I've also tested on Fedora 28, 29, 30, 31, and 32 (all x86_64) using
|
|
||||||
the default (though updated) system installed versions of Python on
|
|
||||||
those OSes. This means that I've tested against Python versions
|
|
||||||
2.7.15, 2.7.17, 2.7.18, 3.7.7, 3.8.2, and 3.8.3. In each case GDB
|
|
||||||
still builds without problem and shows no regressions after applying
|
|
||||||
this patch.
|
|
||||||
|
|
||||||
gdb/ChangeLog:
|
|
||||||
|
|
||||||
2020-MM-DD Kevin Buettner <kevinb@redhat.com>
|
|
||||||
Keith Seitz <keiths@redhat.com>
|
|
||||||
|
|
||||||
* python/python.c (do_start_initialization): For Python 3.9 and
|
|
||||||
later, call PyEval_SaveThread instead of PyEval_ReleaseLock.
|
|
||||||
(class gdbpy_gil): Move to earlier in file.
|
|
||||||
(finalize_python): Set gdb_python_initialized.
|
|
||||||
(gdbpy_check_quit_flag): Acquire GIL via gdbpy_gil. Return early
|
|
||||||
when not initialized.
|
|
||||||
|
|
||||||
[import into Buildroot, removing ChangeLog change to avoid conflict]
|
|
||||||
Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
|
|
||||||
---
|
|
||||||
gdb/python/python.c | 32 ++++++++++++++++++++++++++++++--
|
|
||||||
1 file changed, 30 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/gdb/python/python.c b/gdb/python/python.c
|
|
||||||
index b00b70be85b..0eee3f0397c 100644
|
|
||||||
--- a/gdb/python/python.c
|
|
||||||
+++ b/gdb/python/python.c
|
|
||||||
@@ -268,6 +268,30 @@ ensure_python_env (struct gdbarch *gdbarch,
|
|
||||||
return make_cleanup (restore_python_env, env);
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* 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
|
|
||||||
@@ -281,6 +305,10 @@ gdbpy_set_quit_flag (const struct extension_language_defn *extlang)
|
|
||||||
static int
|
|
||||||
gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
|
|
||||||
{
|
|
||||||
+ if (!gdb_python_initialized)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ gdbpy_gil gil;
|
|
||||||
return PyOS_InterruptOccurred ();
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1620,6 +1648,7 @@ finalize_python (void *ignore)
|
|
||||||
|
|
||||||
Py_Finalize ();
|
|
||||||
|
|
||||||
+ gdb_python_initialized = false;
|
|
||||||
restore_active_ext_lang (previous_active);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -1854,8 +1883,7 @@ message == an error message without a stack will be printed."),
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
/* Release the GIL while gdb runs. */
|
|
||||||
- PyThreadState_Swap (NULL);
|
|
||||||
- PyEval_ReleaseLock ();
|
|
||||||
+ PyEval_SaveThread ();
|
|
||||||
|
|
||||||
make_final_cleanup (finalize_python, NULL);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
|
@ -52,7 +52,6 @@ config BR2_PACKAGE_GDB_DEBUGGER
|
||||||
bool "full debugger"
|
bool "full debugger"
|
||||||
depends on BR2_USE_WCHAR
|
depends on BR2_USE_WCHAR
|
||||||
depends on !BR2_sh
|
depends on !BR2_sh
|
||||||
depends on !BR2_csky
|
|
||||||
select BR2_PACKAGE_GMP if BR2_GDB_VERSION_11
|
select BR2_PACKAGE_GMP if BR2_GDB_VERSION_11
|
||||||
select BR2_PACKAGE_NCURSES
|
select BR2_PACKAGE_NCURSES
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,6 @@ choice
|
||||||
prompt "GDB debugger Version"
|
prompt "GDB debugger Version"
|
||||||
default BR2_GDB_VERSION_10
|
default BR2_GDB_VERSION_10
|
||||||
depends on !BR2_arc
|
depends on !BR2_arc
|
||||||
depends on !BR2_csky
|
|
||||||
help
|
help
|
||||||
Select the version of gdb you wish to use.
|
Select the version of gdb you wish to use.
|
||||||
|
|
||||||
|
@ -67,7 +66,6 @@ endif
|
||||||
config BR2_GDB_VERSION
|
config BR2_GDB_VERSION
|
||||||
string
|
string
|
||||||
default "arc-2020.09-release-gdb" if BR2_arc
|
default "arc-2020.09-release-gdb" if BR2_arc
|
||||||
default "4ecb98fbc2f94dbe01b69384afbc515107de73df" if BR2_csky
|
|
||||||
default "9.2" if BR2_GDB_VERSION_9_2
|
default "9.2" if BR2_GDB_VERSION_9_2
|
||||||
default "10.2" if BR2_GDB_VERSION_10 || !BR2_PACKAGE_HOST_GDB
|
default "10.2" if BR2_GDB_VERSION_10 || !BR2_PACKAGE_HOST_GDB
|
||||||
default "11.2" if BR2_GDB_VERSION_11
|
default "11.2" if BR2_GDB_VERSION_11
|
||||||
|
|
|
@ -5,6 +5,3 @@ sha512 07e9026423438049b11f4f784d57401ece4e940570f613bd6958b3714fe7fbc2c048470b
|
||||||
|
|
||||||
# Locally calculated (fetched from Github)
|
# Locally calculated (fetched from Github)
|
||||||
sha512 5a2acf2fd33ab2ff589e1037ca40abda54328997dcff26b2b49b874bd3be980be5a63342962254f3c3bda98e32ce7a33af704d37353352833dee193135600458 gdb-arc-2020.09-release-gdb.tar.gz
|
sha512 5a2acf2fd33ab2ff589e1037ca40abda54328997dcff26b2b49b874bd3be980be5a63342962254f3c3bda98e32ce7a33af704d37353352833dee193135600458 gdb-arc-2020.09-release-gdb.tar.gz
|
||||||
|
|
||||||
# Locally calculated (fetched from https://github.com/c-sky/binutils-gdb)
|
|
||||||
sha512 c421e1f3c0d6cfb3c04544573c0c4b0075c8d8e3d563c6c234fcc1e4c2167ab203d1e57aec3b58abd348dc46f8cf9b47b753d3a43dba3ea970c9c9a6bd78c07b gdb-4ecb98fbc2f94dbe01b69384afbc515107de73df.tar.gz
|
|
||||||
|
|
|
@ -14,12 +14,6 @@ GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz
|
||||||
GDB_FROM_GIT = y
|
GDB_FROM_GIT = y
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(BR2_csky),y)
|
|
||||||
GDB_SITE = $(call github,c-sky,binutils-gdb,$(GDB_VERSION))
|
|
||||||
GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz
|
|
||||||
GDB_FROM_GIT = y
|
|
||||||
endif
|
|
||||||
|
|
||||||
GDB_LICENSE = GPL-2.0+, LGPL-2.0+, GPL-3.0+, LGPL-3.0+
|
GDB_LICENSE = GPL-2.0+, LGPL-2.0+, GPL-3.0+, LGPL-3.0+
|
||||||
GDB_LICENSE_FILES = COPYING COPYING.LIB COPYING3 COPYING3.LIB
|
GDB_LICENSE_FILES = COPYING COPYING.LIB COPYING3 COPYING3.LIB
|
||||||
GDB_CPE_ID_VENDOR = gnu
|
GDB_CPE_ID_VENDOR = gnu
|
||||||
|
|
|
@ -21,7 +21,6 @@ config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS
|
||||||
default y if BR2_microblaze
|
default y if BR2_microblaze
|
||||||
default y if BR2_nios2
|
default y if BR2_nios2
|
||||||
default y if BR2_arc && BR2_ARC_ATOMIC_EXT
|
default y if BR2_arc && BR2_ARC_ATOMIC_EXT
|
||||||
default y if BR2_csky
|
|
||||||
depends on !BR2_powerpc_SPE
|
depends on !BR2_powerpc_SPE
|
||||||
depends on BR2_RISCV_ISA_RVA || !BR2_riscv
|
depends on BR2_RISCV_ISA_RVA || !BR2_riscv
|
||||||
depends on BR2_USE_MMU
|
depends on BR2_USE_MMU
|
||||||
|
|
|
@ -30,18 +30,15 @@ config BR2_KERNEL_HEADERS_AS_KERNEL
|
||||||
config BR2_KERNEL_HEADERS_4_9
|
config BR2_KERNEL_HEADERS_4_9
|
||||||
bool "Linux 4.9.x kernel headers"
|
bool "Linux 4.9.x kernel headers"
|
||||||
depends on !BR2_riscv
|
depends on !BR2_riscv
|
||||||
depends on !BR2_csky
|
|
||||||
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
|
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
|
||||||
|
|
||||||
config BR2_KERNEL_HEADERS_4_14
|
config BR2_KERNEL_HEADERS_4_14
|
||||||
bool "Linux 4.14.x kernel headers"
|
bool "Linux 4.14.x kernel headers"
|
||||||
depends on !BR2_riscv
|
depends on !BR2_riscv
|
||||||
depends on !BR2_csky
|
|
||||||
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
|
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
|
||||||
|
|
||||||
config BR2_KERNEL_HEADERS_4_19
|
config BR2_KERNEL_HEADERS_4_19
|
||||||
bool "Linux 4.19.x kernel headers"
|
bool "Linux 4.19.x kernel headers"
|
||||||
depends on !BR2_csky
|
|
||||||
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
|
select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
|
||||||
|
|
||||||
config BR2_KERNEL_HEADERS_5_4
|
config BR2_KERNEL_HEADERS_5_4
|
||||||
|
|
Loading…
Reference in New Issue