gdb/gdb-do-not-import-py-curses-ascii-module.patch
Tom de Vries 8aea3c9b98 - Update to fedora rawhide @ 08bfd0a.
- Patches dropped:
  * fixup-gdb-6.3-gstack-20050411.patch
  * fixup-skip-tests.patch
  * gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
  * gdb-6.6-buildid-locate-rpm.patch
- Patches added:
  * gdb-add-missing-debug-ext-lang-hook.patch
  * gdb-add-missing-debug-info-python-hook.patch
  * gdb-add-rpm-suggestion-script.patch
  * gdb-do-not-import-py-curses-ascii-module.patch
  * gdb-handle-no-python-gdb-module.patch
  * gdb-merge-debug-symbol-lookup.patch
  * gdb-python-avoid-depending-on-the-curses-library.patch
  * gdb-refactor-find-and-add-separate-symbol-file.patch
  * gdb-reformat-missing-debug-py-file.patch
  * gdb-remove-path-in-test-name.patch
  * gdb-remove-use-of-py-isascii
  * gdb-sync-coffread-with-elfread.patch
- Patches updated:
  * fixup-gdb-bz634108-solib_address.patch
  * gdb-6.3-gstack-20050411.patch
  * gdb-6.6-buildid-locate-rpm-suse.patch
  * gdb-6.6-buildid-locate-solib-missing-ids.patch
  * gdb-6.6-buildid-locate.patch
  * gdb-archer-next-over-throw-cxx-exec.patch
  * gdb-bz634108-solib_address.patch
  * gdb-fedora-libncursesw.patch
  * gdb-glibc-strstr-workaround.patch
  * gdb-rhbz1007614-memleak-infpy_read_memory-test.patch

OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=409
2025-01-23 14:31:06 +00:00

65 lines
2.2 KiB
Diff

From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Tom de Vries <tdevries@suse.de>
Date: Wed, 22 Nov 2023 19:02:34 +0100
Subject: gdb-do-not-import-py-curses-ascii-module.patch
;; Backport upstream commit e8c3dafa5f5.
[gdb/python] Don't import curses.ascii module unless necessary
I ran into a failure in test-case gdb.python/py-missing-debug.exp with python
3.6, which was fixed by commit 7db795bc67a ("gdb/python: remove use of
str.isascii()").
However, I subsequently ran into a failure with python 3.11:
...
(gdb) PASS: $exp: initial checks: debug info no longer found
source py-missing-debug.py^M
Traceback (most recent call last):^M
File "py-missing-debug.py", line 17, in <module>^M
from gdb.missing_debug import MissingDebugHandler^M
File "missing_debug.py", line 21, in <module>^M
from curses.ascii import isascii, isalnum^M
File "/usr/lib64/python3.11/_import_failed/curses.py", line 16, in <module>^M
raise ImportError(f"""Module '{failed_name}' is not installed.^M
ImportError: Module 'curses' is not installed.^M
Use:^M
sudo zypper install python311-curses^M
to install it.^M
(gdb) FAIL: $exp: source python script
...
Apparently I have the curses module installed for 3.6, but not 3.11.
I could just install it, but the test-case worked fine with 3.11 before commit
7db795bc67a.
Fix this by only using the curses module when necessary, for python <= 3.7.
Tested on x86_64-linux, with both python 3.6 and 3.11.
diff --git a/gdb/python/lib/gdb/missing_debug.py b/gdb/python/lib/gdb/missing_debug.py
--- a/gdb/python/lib/gdb/missing_debug.py
+++ b/gdb/python/lib/gdb/missing_debug.py
@@ -18,8 +18,18 @@ MissingDebugHandler base class, and register_handler function.
"""
import gdb
-from curses.ascii import isascii, isalnum
-
+import sys
+if sys.version_info >= (3, 7):
+ # Functions str.isascii() and str.isalnum are available starting Python
+ # 3.7.
+ def isascii(ch):
+ return ch.isascii()
+ def isalnum(ch):
+ return ch.isalnum()
+else:
+ # Fall back to curses.ascii.isascii() and curses.ascii.isalnum() for
+ # earlier versions.
+ from curses.ascii import isascii, isalnum
def _validate_name(name):
"""Validate a missing debug handler name string.