Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-python-ptrace for 
openSUSE:Factory checked in at 2025-12-11 18:39:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-ptrace (Old)
 and      /work/SRC/openSUSE:Factory/.python-python-ptrace.new.1939 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-python-ptrace"

Thu Dec 11 18:39:06 2025 rev:9 rq:1322100 version:0.9.9

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-python-ptrace/python-python-ptrace.changes    
    2024-03-06 23:05:12.514786432 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-python-ptrace.new.1939/python-python-ptrace.changes
      2025-12-11 18:40:56.196452671 +0100
@@ -1,0 +2,16 @@
+Thu Dec 11 06:00:41 UTC 2025 - Steve Kowalik <[email protected]>
+
+- Update to 0.9.9:
+  * Fix PROC_MAP_REGEX for three digit minor device id by @fab1ano in #73
+  * Add support for RISC-V by @yuzibo in #76
+  * Fix arguments of pipe/pipe2 system calls. by @jopereira in #78
+  * do not raise an exception for a valid process status by @duanev in #80
+  * Remove deprecated imp module by @hamarituc in #81
+  * Use importlib instead of imp in setup_cptrace.py by @skitt in #83
+- Drop patches, included upstream:
+  * python-ptrace-pr81-importlib.patch
+  * python-ptrace-pr83-importlib.patch
+- Add patch support-python314.patch:
+  * Support new Python 3.14 linkat.
+
+-------------------------------------------------------------------

Old:
----
  python-ptrace-0.9.8.tar.gz
  python-ptrace-pr81-importlib.patch
  python-ptrace-pr83-importlib.patch

New:
----
  python-ptrace-0.9.9.tar.gz
  support-python314.patch

----------(Old B)----------
  Old:- Drop patches, included upstream:
  * python-ptrace-pr81-importlib.patch
  * python-ptrace-pr83-importlib.patch
  Old:  * python-ptrace-pr81-importlib.patch
  * python-ptrace-pr83-importlib.patch
- Add patch support-python314.patch:
----------(Old E)----------

----------(New B)----------
  New:  * python-ptrace-pr83-importlib.patch
- Add patch support-python314.patch:
  * Support new Python 3.14 linkat.
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-python-ptrace.spec ++++++
--- /var/tmp/diff_new_pack.O0CDI5/_old  2025-12-11 18:40:57.012486962 +0100
+++ /var/tmp/diff_new_pack.O0CDI5/_new  2025-12-11 18:40:57.016487130 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-python-ptrace
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 %global flavor @BUILD_FLAVOR@%{nil}
-%define pyversion 0.9.8
+%define pyversion 0.9.9
 %define cversion 0.6.1
 %if "%{flavor}" == ""
 %define pkgname python-ptrace
@@ -41,13 +41,10 @@
 Release:        0
 Summary:        Python binding for ptrace
 License:        GPL-2.0-only
-Group:          Development/Languages/Python
 URL:            https://github.com/vstinner/python-ptrace
 Source:         
https://github.com/haypo/python-ptrace/archive/%{pyversion}.tar.gz#/python-ptrace-%{pyversion}.tar.gz
-# PATCH-FIX-UPSTREAM - Add python-ptrace-pr81-importlib.patch 
gh#vstinner/python-ptrace#81
-Patch0:         
https://github.com/vstinner/python-ptrace/pull/81.patch#/python-ptrace-pr81-importlib.patch
-# PATCH-FIX-UPSTREAM - Add python-ptrace-pr83-importlib.patch 
gh#vstinner/python-ptrace#83
-Patch1:         
https://github.com/vstinner/python-ptrace/pull/83.patch#/python-ptrace-pr83-importlib.patch
+# PATCH-FIX-UPSTREAM gh#vstinner/python-ptrace#91
+Patch0:         support-python314.patch
 %if "%{flavor}" == "cptrace"
 BuildRequires:  %{python_module devel}
 %else

++++++ python-ptrace-0.9.8.tar.gz -> python-ptrace-0.9.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/.github/workflows/setup_test.yml 
new/python-ptrace-0.9.9/.github/workflows/setup_test.yml
--- old/python-ptrace-0.9.8/.github/workflows/setup_test.yml    2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/.github/workflows/setup_test.yml    2024-03-13 
15:51:54.000000000 +0100
@@ -9,7 +9,7 @@
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [3.6, 3.7, 3.8, 3.9]
+        python-version: [3.7, 3.8, 3.9, '3.10']
     steps:
     - uses: actions/checkout@v2
     - name: Set up Python ${{ matrix.python-version }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/SYSCALL_PROTOTYPES.codegen.py 
new/python-ptrace-0.9.9/SYSCALL_PROTOTYPES.codegen.py
--- old/python-ptrace-0.9.8/SYSCALL_PROTOTYPES.codegen.py       2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/SYSCALL_PROTOTYPES.codegen.py       2024-03-13 
15:51:54.000000000 +0100
@@ -32,6 +32,9 @@
                 m2 = p2.match(arg)
                 arg_type = m2.group(1).strip()
                 arg_name = m2.group(2).strip()
+            # Workaround for pipe system call
+            if (call_name == 'pipe' or call_name == 'pipe2') and arg_type == 
"int *":
+                arg_type = "int[2]"
             args_tuple += ((arg_type, arg_name),)
     SYSCALL_PROTOTYPES[call_name] = ("long", args_tuple)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/doc/changelog.rst 
new/python-ptrace-0.9.9/doc/changelog.rst
--- old/python-ptrace-0.9.8/doc/changelog.rst   2021-03-17 21:19:45.000000000 
+0100
+++ new/python-ptrace-0.9.9/doc/changelog.rst   2024-03-13 15:51:54.000000000 
+0100
@@ -3,8 +3,22 @@
 Changelog
 =========
 
-python-ptrace 0.9.8
--------------------
+python-ptrace 0.9.9 (2024-03-13)
+--------------------------------
+
+* Fix arguments of pipe/pipe2 system calls for proper display in call format.
+  Patch by José Pereira.
+* Introduced support for three-digit minor device IDs in ``PROC_MAP_REGEX``.
+  Patch by fab1ano.
+* Added RISCV (riscv32/riscv64) support.
+  Patch by Andreas Schwab and vimer/yuzibo.
+* Fix stray exception raised by child processes terminating with exit code 255.
+  Patch by Duane Voth/duanev.
+* Removed usage of the ``imp`` module.
+  Collaboration between Mario Haustein/hamarituc and Stephen Kitt/skitt.
+
+python-ptrace 0.9.8 (2021-03-17)
+--------------------------------
 
 * Added Arm 64bit (AArch64) support.
 * Implemented ``PTRACE_GETREGSET`` and ``PTRACE_SETREGSET`` required on AArch64
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/doc/conf.py 
new/python-ptrace-0.9.9/doc/conf.py
--- old/python-ptrace-0.9.8/doc/conf.py 2021-03-17 21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/doc/conf.py 2024-03-13 15:51:54.000000000 +0100
@@ -41,7 +41,7 @@
 # built documents.
 #
 # The short X.Y version.
-version = release = '0.9.8'
+version = release = '0.9.9'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/binding/cpu.py 
new/python-ptrace-0.9.9/ptrace/binding/cpu.py
--- old/python-ptrace-0.9.8/ptrace/binding/cpu.py       2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/binding/cpu.py       2024-03-13 
15:51:54.000000000 +0100
@@ -1,5 +1,5 @@
 from ptrace.cpu_info import (
-    CPU_POWERPC, CPU_INTEL, CPU_X86_64, CPU_I386, CPU_ARM32, CPU_AARCH64)
+    CPU_POWERPC, CPU_INTEL, CPU_X86_64, CPU_I386, CPU_ARM32, CPU_AARCH64, 
CPU_RISCV)
 
 CPU_INSTR_POINTER = None
 CPU_STACK_POINTER = None
@@ -18,6 +18,10 @@
     CPU_INSTR_POINTER = 'pc'
     CPU_STACK_POINTER = 'sp'
     CPU_FRAME_POINTER = 'r29'
+elif CPU_RISCV:
+    CPU_INSTR_POINTER = 'pc'
+    CPU_STACK_POINTER = 'sp'
+    CPU_FRAME_POINTER = 's0'
 elif CPU_X86_64:
     CPU_INSTR_POINTER = "rip"
     CPU_STACK_POINTER = "rsp"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/binding/func.py 
new/python-ptrace-0.9.9/ptrace/binding/func.py
--- old/python-ptrace-0.9.8/ptrace/binding/func.py      2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/binding/func.py      2024-03-13 
15:51:54.000000000 +0100
@@ -3,7 +3,7 @@
 from ptrace import PtraceError
 from ptrace.ctypes_tools import formatAddress
 from ptrace.os_tools import RUNNING_LINUX, RUNNING_BSD, RUNNING_OPENBSD
-from ptrace.cpu_info import CPU_64BITS, CPU_WORD_SIZE, CPU_POWERPC, CPU_AARCH64
+from ptrace.cpu_info import CPU_64BITS, CPU_WORD_SIZE, CPU_POWERPC, 
CPU_AARCH64, CPU_RISCV
 
 if RUNNING_OPENBSD:
     from ptrace.binding.openbsd_struct import (
@@ -82,7 +82,7 @@
     PTRACE_IO = 12
 else:
     # Linux
-    if not CPU_AARCH64:
+    if not (CPU_AARCH64 or CPU_RISCV):
         HAS_PTRACE_GETREGS = True
         HAS_PTRACE_SETREGS = True
         PTRACE_GETREGS = 12
@@ -161,7 +161,7 @@
             # peek operations may returns -1 with errno=0:
             # it's not an error. For other operations, -1
             # is always an error
-            if not(check_errno) or errno:
+            if not (check_errno) or errno:
                 message = "ptrace(cmd=%s, pid=%s, %r, %r) error #%s: %s" % (
                     command, pid, arg1, arg2,
                     errno, strerror(errno))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/binding/linux_struct.py 
new/python-ptrace-0.9.9/ptrace/binding/linux_struct.py
--- old/python-ptrace-0.9.8/ptrace/binding/linux_struct.py      2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/binding/linux_struct.py      2024-03-13 
15:51:54.000000000 +0100
@@ -1,7 +1,7 @@
 from ctypes import (Structure, Union, sizeof,
                     c_char, c_ushort, c_int, c_uint, c_ulong, c_void_p,
                     c_uint16, c_uint32, c_uint64, c_size_t)
-from ptrace.cpu_info import CPU_64BITS, CPU_PPC32, CPU_PPC64, CPU_ARM32, 
CPU_AARCH64
+from ptrace.cpu_info import CPU_64BITS, CPU_PPC32, CPU_PPC64, CPU_ARM32, 
CPU_AARCH64, CPU_RISCV
 
 pid_t = c_int
 uid_t = c_ushort
@@ -123,6 +123,41 @@
                          ('pc', c_ulong),
                          ('pstate', c_ulong)]
                          )
+    elif CPU_RISCV:
+        _fields_ = (
+            ("pc", c_ulong),
+            ("ra", c_ulong),
+            ("sp", c_ulong),
+            ("gp", c_ulong),
+            ("tp", c_ulong),
+            ("t0", c_ulong),
+            ("t1", c_ulong),
+            ("t2", c_ulong),
+            ("s0", c_ulong),
+            ("s1", c_ulong),
+            ("a0", c_ulong),
+            ("a1", c_ulong),
+            ("a2", c_ulong),
+            ("a3", c_ulong),
+            ("a4", c_ulong),
+            ("a5", c_ulong),
+            ("a6", c_ulong),
+            ("a7", c_ulong),
+            ("s2", c_ulong),
+            ("s3", c_ulong),
+            ("s4", c_ulong),
+            ("s5", c_ulong),
+            ("s6", c_ulong),
+            ("s7", c_ulong),
+            ("s8", c_ulong),
+            ("s9", c_ulong),
+            ("s10", c_ulong),
+            ("s11", c_ulong),
+            ("t3", c_ulong),
+            ("t4", c_ulong),
+            ("t5", c_ulong),
+            ("t6", c_ulong),
+        )
     elif CPU_64BITS:
         _fields_ = (
             ("r15", c_ulong),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/cpu_info.py 
new/python-ptrace-0.9.9/ptrace/cpu_info.py
--- old/python-ptrace-0.9.8/ptrace/cpu_info.py  2021-03-17 21:19:45.000000000 
+0100
+++ new/python-ptrace-0.9.9/ptrace/cpu_info.py  2024-03-13 15:51:54.000000000 
+0100
@@ -41,6 +41,8 @@
     CPU_X86_64 = (_machine in ("x86_64", "amd64"))  # compatible Intel 64 bits
     CPU_ARM32 = _machine.startswith('arm')
     CPU_AARCH64 = (_machine == 'aarch64')
+    CPU_RISCV32 = (_machine == 'riscv32')
+    CPU_RISCV64 = (_machine == 'riscv64')
     del _machine
 else:
     # uname() fallback for Windows
@@ -51,6 +53,8 @@
     CPU_X86_64 = False
     CPU_ARM32 = False
     CPU_AARCH64 = False
+    CPU_RISCV32 = False
+    CPU_RISCV64 = False
     bits, linkage = architecture()
     if bits == '32bit':
         CPU_I386 = True
@@ -62,3 +66,4 @@
 CPU_INTEL = (CPU_I386 or CPU_X86_64)
 CPU_POWERPC = (CPU_PPC32 or CPU_PPC64)
 CPU_ARM = (CPU_ARM32 or CPU_AARCH64)
+CPU_RISCV = (CPU_RISCV32 or CPU_RISCV64)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-ptrace-0.9.8/ptrace/debugger/memory_mapping.py 
new/python-ptrace-0.9.9/ptrace/debugger/memory_mapping.py
--- old/python-ptrace-0.9.8/ptrace/debugger/memory_mapping.py   2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/debugger/memory_mapping.py   2024-03-13 
15:51:54.000000000 +0100
@@ -15,7 +15,7 @@
     # Offset: '0804d000'
     r'([0-9a-f]+) '
     # Device (major:minor): 'fe:01 '
-    r'([0-9a-f]{2,3}):([0-9a-f]{2}) '
+    r'([0-9a-f]{2,3}):([0-9a-f]{2,3}) '
     # Inode: '3334030'
     r'([0-9]+)'
     # Filename: '  /usr/bin/synergyc'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/process_tools.py 
new/python-ptrace-0.9.9/ptrace/process_tools.py
--- old/python-ptrace-0.9.8/ptrace/process_tools.py     2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/process_tools.py     2024-03-13 
15:51:54.000000000 +0100
@@ -1,13 +1,21 @@
 from ptrace.os_tools import RUNNING_LINUX
 if RUNNING_LINUX:
-    from ptrace.linux_proc import (ProcError, openProc,
-                                   readProcessProcList, readProcessLink, 
readProcessStat)
-from ptrace.signames import signalName   # noqa
+    from ptrace.linux_proc import (
+        ProcError,
+        openProc,
+        readProcessLink,
+        readProcessProcList,
+        readProcessStat,
+    )
+from ptrace.signames import signalName  # noqa
 from os import (
-    WIFSTOPPED, WSTOPSIG,
-    WIFSIGNALED, WTERMSIG,
-    WIFEXITED, WEXITSTATUS,
-    WCOREDUMP)
+    WCOREDUMP,
+    WEXITSTATUS,
+    WIFSIGNALED,
+    WIFSTOPPED,
+    WSTOPSIG,
+    WTERMSIG,
+)
 
 
 def dumpProcessInfo(log, pid, max_length=None):
@@ -106,9 +114,6 @@
         signum = WTERMSIG(status)
         text = "%s killed by signal %s" % (title, signalName(signum))
     else:
-        if not WIFEXITED(status):
-            raise ValueError("Invalid status: %r" % status)
-
         exitcode = WEXITSTATUS(status)
         if exitcode:
             text = "%s exited with code %s" % (title, exitcode)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/syscall/linux/riscv32.py 
new/python-ptrace-0.9.9/ptrace/syscall/linux/riscv32.py
--- old/python-ptrace-0.9.8/ptrace/syscall/linux/riscv32.py     1970-01-01 
01:00:00.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/syscall/linux/riscv32.py     2024-03-13 
15:51:54.000000000 +0100
@@ -0,0 +1,316 @@
+SYSCALL_NAMES = {
+    0: "io_setup",
+    1: "io_destroy",
+    2: "io_submit",
+    3: "io_cancel",
+    5: "setxattr",
+    6: "lsetxattr",
+    7: "fsetxattr",
+    8: "getxattr",
+    9: "lgetxattr",
+    10: "fgetxattr",
+    11: "listxattr",
+    12: "llistxattr",
+    13: "flistxattr",
+    14: "removexattr",
+    15: "lremovexattr",
+    16: "fremovexattr",
+    17: "getcwd",
+    18: "lookup_dcookie",
+    19: "eventfd2",
+    20: "epoll_create1",
+    21: "epoll_ctl",
+    22: "epoll_pwait",
+    23: "dup",
+    24: "dup3",
+    25: "fcntl64",
+    26: "inotify_init1",
+    27: "inotify_add_watch",
+    28: "inotify_rm_watch",
+    29: "ioctl",
+    30: "ioprio_set",
+    31: "ioprio_get",
+    32: "flock",
+    33: "mknodat",
+    34: "mkdirat",
+    35: "unlinkat",
+    36: "symlinkat",
+    37: "linkat",
+    39: "umount2",
+    40: "mount",
+    41: "pivot_root",
+    42: "nfsservctl",
+    43: "statfs64",
+    44: "fstatfs64",
+    45: "truncate64",
+    46: "ftruncate64",
+    47: "fallocate",
+    48: "faccessat",
+    49: "chdir",
+    50: "fchdir",
+    51: "chroot",
+    52: "fchmod",
+    53: "fchmodat",
+    54: "fchownat",
+    55: "fchown",
+    56: "openat",
+    57: "close",
+    58: "vhangup",
+    59: "pipe2",
+    60: "quotactl",
+    61: "getdents64",
+    62: "llseek",
+    63: "read",
+    64: "write",
+    65: "readv",
+    66: "writev",
+    67: "pread64",
+    68: "pwrite64",
+    69: "preadv",
+    70: "pwritev",
+    71: "sendfile64",
+    74: "signalfd4",
+    75: "vmsplice",
+    76: "splice",
+    77: "tee",
+    78: "readlinkat",
+    81: "sync",
+    82: "fsync",
+    83: "fdatasync",
+    84: "sync_file_range",
+    85: "timerfd_create",
+    89: "acct",
+    90: "capget",
+    91: "capset",
+    92: "personality",
+    93: "exit",
+    94: "exit_group",
+    95: "waitid",
+    96: "set_tid_address",
+    97: "unshare",
+    99: "set_robust_list",
+    100: "get_robust_list",
+    102: "getitimer",
+    103: "setitimer",
+    104: "kexec_load",
+    105: "init_module",
+    106: "delete_module",
+    107: "timer_create",
+    109: "timer_getoverrun",
+    111: "timer_delete",
+    116: "syslog",
+    117: "ptrace",
+    118: "sched_setparam",
+    119: "sched_setscheduler",
+    120: "sched_getscheduler",
+    121: "sched_getparam",
+    122: "sched_setaffinity",
+    123: "sched_getaffinity",
+    124: "sched_yield",
+    125: "sched_get_priority_max",
+    126: "sched_get_priority_min",
+    128: "restart_syscall",
+    129: "kill",
+    130: "tkill",
+    131: "tgkill",
+    132: "sigaltstack",
+    133: "rt_sigsuspend",
+    134: "rt_sigaction",
+    135: "rt_sigprocmask",
+    136: "rt_sigpending",
+    138: "rt_sigqueueinfo",
+    139: "rt_sigreturn",
+    140: "setpriority",
+    141: "getpriority",
+    142: "reboot",
+    143: "setregid",
+    144: "setgid",
+    145: "setreuid",
+    146: "setuid",
+    147: "setresuid",
+    148: "getresuid",
+    149: "setresgid",
+    150: "getresgid",
+    151: "setfsuid",
+    152: "setfsgid",
+    153: "times",
+    154: "setpgid",
+    155: "getpgid",
+    156: "getsid",
+    157: "setsid",
+    158: "getgroups",
+    159: "setgroups",
+    160: "uname",
+    161: "sethostname",
+    162: "setdomainname",
+    165: "getrusage",
+    166: "umask",
+    167: "prctl",
+    168: "getcpu",
+    172: "getpid",
+    173: "getppid",
+    174: "getuid",
+    175: "geteuid",
+    176: "getgid",
+    177: "getegid",
+    178: "gettid",
+    179: "sysinfo",
+    180: "mq_open",
+    181: "mq_unlink",
+    184: "mq_notify",
+    185: "mq_getsetattr",
+    186: "msgget",
+    187: "msgctl",
+    188: "msgrcv",
+    189: "msgsnd",
+    190: "semget",
+    191: "semctl",
+    193: "semop",
+    194: "shmget",
+    195: "shmctl",
+    196: "shmat",
+    197: "shmdt",
+    198: "socket",
+    199: "socketpair",
+    200: "bind",
+    201: "listen",
+    202: "accept",
+    203: "connect",
+    204: "getsockname",
+    205: "getpeername",
+    206: "sendto",
+    207: "recvfrom",
+    208: "setsockopt",
+    209: "getsockopt",
+    210: "shutdown",
+    211: "sendmsg",
+    212: "recvmsg",
+    213: "readahead",
+    214: "brk",
+    215: "munmap",
+    216: "mremap",
+    217: "add_key",
+    218: "request_key",
+    219: "keyctl",
+    220: "clone",
+    221: "execve",
+    222: "mmap2",
+    223: "fadvise64_64",
+    224: "swapon",
+    225: "swapoff",
+    226: "mprotect",
+    227: "msync",
+    228: "mlock",
+    229: "munlock",
+    230: "mlockall",
+    231: "munlockall",
+    232: "mincore",
+    233: "madvise",
+    234: "remap_file_pages",
+    235: "mbind",
+    236: "get_mempolicy",
+    237: "set_mempolicy",
+    238: "migrate_pages",
+    239: "move_pages",
+    240: "rt_tgsigqueueinfo",
+    241: "perf_event_open",
+    242: "accept4",
+    259: "riscv_flush_icache",
+    261: "prlimit64",
+    262: "fanotify_init",
+    263: "fanotify_mark",
+    264: "name_to_handle_at",
+    265: "open_by_handle_at",
+    267: "syncfs",
+    268: "setns",
+    269: "sendmmsg",
+    270: "process_vm_readv",
+    271: "process_vm_writev",
+    272: "kcmp",
+    273: "finit_module",
+    274: "sched_setattr",
+    275: "sched_getattr",
+    276: "renameat2",
+    277: "seccomp",
+    278: "getrandom",
+    279: "memfd_create",
+    280: "bpf",
+    281: "execveat",
+    282: "userfaultfd",
+    283: "membarrier",
+    284: "mlock2",
+    285: "copy_file_range",
+    286: "preadv2",
+    287: "pwritev2",
+    288: "pkey_mprotect",
+    289: "pkey_alloc",
+    290: "pkey_free",
+    291: "statx",
+    293: "rseq",
+    294: "kexec_file_load",
+    403: "clock_gettime64",
+    404: "clock_settime64",
+    405: "clock_adjtime64",
+    406: "clock_getres_time64",
+    407: "clock_nanosleep_time64",
+    408: "timer_gettime64",
+    409: "timer_settime64",
+    410: "timerfd_gettime64",
+    411: "timerfd_settime64",
+    412: "utimensat_time64",
+    413: "pselect6_time64",
+    414: "ppoll_time64",
+    416: "io_pgetevents_time64",
+    417: "recvmmsg_time64",
+    418: "mq_timedsend_time64",
+    419: "mq_timedreceive_time64",
+    420: "semtimedop_time64",
+    421: "rt_sigtimedwait_time64",
+    422: "futex_time64",
+    423: "sched_rr_get_interval_time64",
+    424: "pidfd_send_signal",
+    425: "io_uring_setup",
+    426: "io_uring_enter",
+    427: "io_uring_register",
+    428: "open_tree",
+    429: "move_mount",
+    430: "fsopen",
+    431: "fsconfig",
+    432: "fsmount",
+    433: "fspick",
+    434: "pidfd_open",
+    435: "clone3",
+    436: "close_range",
+    437: "openat2",
+    438: "pidfd_getfd",
+    439: "faccessat2",
+    440: "process_madvise",
+    441: "epoll_pwait2",
+    442: "mount_setattr",
+    443: "quotactl_fd",
+    444: "landlock_create_ruleset",
+    445: "landlock_add_rule",
+    446: "landlock_restrict_self",
+    447: "memfd_secret",
+    448: "process_mrelease",
+    449: "futex_waitv",
+    450: "set_mempolicy_home_node",
+}
+
+SOCKET_SYSCALL_NAMES = set((
+    "socket",
+    "socketpair",
+    "connect",
+    "sendto",
+    "recvfrom",
+    "sendmsg",
+    "recvmsg",
+    "bind",
+    "listen",
+    "accept",
+    "getsockname",
+    "getpeername",
+    "getsockopt",
+    "setsockopt",
+    "shutdown",
+))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/syscall/linux/riscv64.py 
new/python-ptrace-0.9.9/ptrace/syscall/linux/riscv64.py
--- old/python-ptrace-0.9.8/ptrace/syscall/linux/riscv64.py     1970-01-01 
01:00:00.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/syscall/linux/riscv64.py     2024-03-13 
15:51:54.000000000 +0100
@@ -0,0 +1,327 @@
+SYSCALL_NAMES = {
+    0: "io_setup",
+    1: "io_destroy",
+    2: "io_submit",
+    3: "io_cancel",
+    4: "io_getevents",
+    5: "setxattr",
+    6: "lsetxattr",
+    7: "fsetxattr",
+    8: "getxattr",
+    9: "lgetxattr",
+    10: "fgetxattr",
+    11: "listxattr",
+    12: "llistxattr",
+    13: "flistxattr",
+    14: "removexattr",
+    15: "lremovexattr",
+    16: "fremovexattr",
+    17: "getcwd",
+    18: "lookup_dcookie",
+    19: "eventfd2",
+    20: "epoll_create1",
+    21: "epoll_ctl",
+    22: "epoll_pwait",
+    23: "dup",
+    24: "dup3",
+    25: "fcntl",
+    26: "inotify_init1",
+    27: "inotify_add_watch",
+    28: "inotify_rm_watch",
+    29: "ioctl",
+    30: "ioprio_set",
+    31: "ioprio_get",
+    32: "flock",
+    33: "mknodat",
+    34: "mkdirat",
+    35: "unlinkat",
+    36: "symlinkat",
+    37: "linkat",
+    38: "renameat",
+    39: "umount2",
+    40: "mount",
+    41: "pivot_root",
+    42: "nfsservctl",
+    43: "statfs",
+    44: "fstatfs",
+    45: "truncate",
+    46: "ftruncate",
+    47: "fallocate",
+    48: "faccessat",
+    49: "chdir",
+    50: "fchdir",
+    51: "chroot",
+    52: "fchmod",
+    53: "fchmodat",
+    54: "fchownat",
+    55: "fchown",
+    56: "openat",
+    57: "close",
+    58: "vhangup",
+    59: "pipe2",
+    60: "quotactl",
+    61: "getdents64",
+    62: "lseek",
+    63: "read",
+    64: "write",
+    65: "readv",
+    66: "writev",
+    67: "pread64",
+    68: "pwrite64",
+    69: "preadv",
+    70: "pwritev",
+    71: "sendfile",
+    72: "pselect6",
+    73: "ppoll",
+    74: "signalfd4",
+    75: "vmsplice",
+    76: "splice",
+    77: "tee",
+    78: "readlinkat",
+    79: "newfstatat",
+    80: "fstat",
+    81: "sync",
+    82: "fsync",
+    83: "fdatasync",
+    84: "sync_file_range",
+    85: "timerfd_create",
+    86: "timerfd_settime",
+    87: "timerfd_gettime",
+    88: "utimensat",
+    89: "acct",
+    90: "capget",
+    91: "capset",
+    92: "personality",
+    93: "exit",
+    94: "exit_group",
+    95: "waitid",
+    96: "set_tid_address",
+    97: "unshare",
+    98: "futex",
+    99: "set_robust_list",
+    100: "get_robust_list",
+    101: "nanosleep",
+    102: "getitimer",
+    103: "setitimer",
+    104: "kexec_load",
+    105: "init_module",
+    106: "delete_module",
+    107: "timer_create",
+    108: "timer_gettime",
+    109: "timer_getoverrun",
+    110: "timer_settime",
+    111: "timer_delete",
+    112: "clock_settime",
+    113: "clock_gettime",
+    114: "clock_getres",
+    115: "clock_nanosleep",
+    116: "syslog",
+    117: "ptrace",
+    118: "sched_setparam",
+    119: "sched_setscheduler",
+    120: "sched_getscheduler",
+    121: "sched_getparam",
+    122: "sched_setaffinity",
+    123: "sched_getaffinity",
+    124: "sched_yield",
+    125: "sched_get_priority_max",
+    126: "sched_get_priority_min",
+    127: "sched_rr_get_interval",
+    128: "restart_syscall",
+    129: "kill",
+    130: "tkill",
+    131: "tgkill",
+    132: "sigaltstack",
+    133: "rt_sigsuspend",
+    134: "rt_sigaction",
+    135: "rt_sigprocmask",
+    136: "rt_sigpending",
+    137: "rt_sigtimedwait",
+    138: "rt_sigqueueinfo",
+    139: "rt_sigreturn",
+    140: "setpriority",
+    141: "getpriority",
+    142: "reboot",
+    143: "setregid",
+    144: "setgid",
+    145: "setreuid",
+    146: "setuid",
+    147: "setresuid",
+    148: "getresuid",
+    149: "setresgid",
+    150: "getresgid",
+    151: "setfsuid",
+    152: "setfsgid",
+    153: "times",
+    154: "setpgid",
+    155: "getpgid",
+    156: "getsid",
+    157: "setsid",
+    158: "getgroups",
+    159: "setgroups",
+    160: "uname",
+    161: "sethostname",
+    162: "setdomainname",
+    163: "getrlimit",
+    164: "setrlimit",
+    165: "getrusage",
+    166: "umask",
+    167: "prctl",
+    168: "getcpu",
+    169: "gettimeofday",
+    170: "settimeofday",
+    171: "adjtimex",
+    172: "getpid",
+    173: "getppid",
+    174: "getuid",
+    175: "geteuid",
+    176: "getgid",
+    177: "getegid",
+    178: "gettid",
+    179: "sysinfo",
+    180: "mq_open",
+    181: "mq_unlink",
+    182: "mq_timedsend",
+    183: "mq_timedreceive",
+    184: "mq_notify",
+    185: "mq_getsetattr",
+    186: "msgget",
+    187: "msgctl",
+    188: "msgrcv",
+    189: "msgsnd",
+    190: "semget",
+    191: "semctl",
+    192: "semtimedop",
+    193: "semop",
+    194: "shmget",
+    195: "shmctl",
+    196: "shmat",
+    197: "shmdt",
+    198: "socket",
+    199: "socketpair",
+    200: "bind",
+    201: "listen",
+    202: "accept",
+    203: "connect",
+    204: "getsockname",
+    205: "getpeername",
+    206: "sendto",
+    207: "recvfrom",
+    208: "setsockopt",
+    209: "getsockopt",
+    210: "shutdown",
+    211: "sendmsg",
+    212: "recvmsg",
+    213: "readahead",
+    214: "brk",
+    215: "munmap",
+    216: "mremap",
+    217: "add_key",
+    218: "request_key",
+    219: "keyctl",
+    220: "clone",
+    221: "execve",
+    222: "mmap",
+    223: "fadvise64",
+    224: "swapon",
+    225: "swapoff",
+    226: "mprotect",
+    227: "msync",
+    228: "mlock",
+    229: "munlock",
+    230: "mlockall",
+    231: "munlockall",
+    232: "mincore",
+    233: "madvise",
+    234: "remap_file_pages",
+    235: "mbind",
+    236: "get_mempolicy",
+    237: "set_mempolicy",
+    238: "migrate_pages",
+    239: "move_pages",
+    240: "rt_tgsigqueueinfo",
+    241: "perf_event_open",
+    242: "accept4",
+    259: "riscv_flush_icache",
+    243: "recvmmsg",
+    260: "wait4",
+    261: "prlimit64",
+    262: "fanotify_init",
+    263: "fanotify_mark",
+    264: "name_to_handle_at",
+    265: "open_by_handle_at",
+    266: "clock_adjtime",
+    267: "syncfs",
+    268: "setns",
+    269: "sendmmsg",
+    270: "process_vm_readv",
+    271: "process_vm_writev",
+    272: "kcmp",
+    273: "finit_module",
+    274: "sched_setattr",
+    275: "sched_getattr",
+    276: "renameat2",
+    277: "seccomp",
+    278: "getrandom",
+    279: "memfd_create",
+    280: "bpf",
+    281: "execveat",
+    282: "userfaultfd",
+    283: "membarrier",
+    284: "mlock2",
+    285: "copy_file_range",
+    286: "preadv2",
+    287: "pwritev2",
+    288: "pkey_mprotect",
+    289: "pkey_alloc",
+    290: "pkey_free",
+    291: "statx",
+    292: "io_pgetevents",
+    293: "rseq",
+    294: "kexec_file_load",
+    424: "pidfd_send_signal",
+    425: "io_uring_setup",
+    426: "io_uring_enter",
+    427: "io_uring_register",
+    428: "open_tree",
+    429: "move_mount",
+    430: "fsopen",
+    431: "fsconfig",
+    432: "fsmount",
+    433: "fspick",
+    434: "pidfd_open",
+    435: "clone3",
+    436: "close_range",
+    437: "openat2",
+    438: "pidfd_getfd",
+    439: "faccessat2",
+    440: "process_madvise",
+    441: "epoll_pwait2",
+    442: "mount_setattr",
+    443: "quotactl_fd",
+    444: "landlock_create_ruleset",
+    445: "landlock_add_rule",
+    446: "landlock_restrict_self",
+    447: "memfd_secret",
+    448: "process_mrelease",
+    449: "futex_waitv",
+    450: "set_mempolicy_home_node",
+}
+
+SOCKET_SYSCALL_NAMES = set((
+    "socket",
+    "socketpair",
+    "connect",
+    "sendto",
+    "recvfrom",
+    "sendmsg",
+    "recvmsg",
+    "bind",
+    "listen",
+    "accept",
+    "getsockname",
+    "getpeername",
+    "getsockopt",
+    "setsockopt",
+    "shutdown",
+))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/syscall/names.py 
new/python-ptrace-0.9.9/ptrace/syscall/names.py
--- old/python-ptrace-0.9.8/ptrace/syscall/names.py     2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/syscall/names.py     2024-03-13 
15:51:54.000000000 +0100
@@ -1,4 +1,4 @@
-from ptrace.cpu_info import CPU_X86_64, CPU_I386, CPU_PPC64, CPU_PPC32, 
CPU_AARCH64
+from ptrace.cpu_info import CPU_X86_64, CPU_I386, CPU_PPC64, CPU_PPC32, 
CPU_AARCH64, CPU_RISCV32, CPU_RISCV64
 from ptrace.os_tools import RUNNING_LINUX, RUNNING_FREEBSD
 if RUNNING_LINUX:
     if CPU_X86_64:
@@ -11,6 +11,10 @@
         from ptrace.syscall.linux.powerpc32 import SYSCALL_NAMES, 
SOCKET_SYSCALL_NAMES
     elif CPU_AARCH64:
         from ptrace.syscall.linux.aarch64 import SYSCALL_NAMES, 
SOCKET_SYSCALL_NAMES
+    elif CPU_RISCV32:
+        from ptrace.syscall.linux.riscv32 import SYSCALL_NAMES, 
SOCKET_SYSCALL_NAMES
+    elif CPU_RISCV64:
+        from ptrace.syscall.linux.riscv64 import SYSCALL_NAMES, 
SOCKET_SYSCALL_NAMES
     else:
         raise NotImplementedError("Unsupported CPU architecture")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/syscall/prototypes.py 
new/python-ptrace-0.9.9/ptrace/syscall/prototypes.py
--- old/python-ptrace-0.9.8/ptrace/syscall/prototypes.py        2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/syscall/prototypes.py        2024-03-13 
15:51:54.000000000 +0100
@@ -962,10 +962,10 @@
         ("unsigned int", "personality"),
     )),
     "pipe": ("long", (
-        ("int *", "fildes"),
+        ("int[2]", "fildes"),
     )),
     "pipe2": ("long", (
-        ("int *", "fildes"),
+        ("int[2]", "fildes"),
         ("int", "flags"),
     )),
     "pivot_root": ("long", (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/syscall/ptrace_syscall.py 
new/python-ptrace-0.9.9/ptrace/syscall/ptrace_syscall.py
--- old/python-ptrace-0.9.8/ptrace/syscall/ptrace_syscall.py    2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/ptrace/syscall/ptrace_syscall.py    2024-03-13 
15:51:54.000000000 +0100
@@ -1,7 +1,7 @@
 from os import strerror
 from errno import errorcode
 
-from ptrace.cpu_info import CPU_X86_64, CPU_POWERPC, CPU_I386, CPU_ARM32, 
CPU_AARCH64
+from ptrace.cpu_info import CPU_X86_64, CPU_POWERPC, CPU_I386, CPU_ARM32, 
CPU_AARCH64, CPU_RISCV
 from ptrace.ctypes_tools import ulong2long, formatAddress, formatWordHex
 from ptrace.func_call import FunctionCall
 from ptrace.syscall import SYSCALL_NAMES, SYSCALL_PROTOTYPES, SyscallArgument
@@ -16,6 +16,8 @@
     SYSCALL_REGISTER = "r7"
 elif CPU_AARCH64:
     SYSCALL_REGISTER = "r8"
+elif CPU_RISCV:
+    SYSCALL_REGISTER = "a7"
 elif RUNNING_LINUX:
     if CPU_X86_64:
         SYSCALL_REGISTER = "orig_rax"
@@ -37,6 +39,8 @@
     RETURN_VALUE_REGISTER = "rax"
 elif CPU_POWERPC:
     RETURN_VALUE_REGISTER = "result"
+elif CPU_RISCV:
+    RETURN_VALUE_REGISTER = "a0"
 else:
     raise NotImplementedError("Unsupported CPU architecture")
 
@@ -92,6 +96,8 @@
             return (regs.r0, regs.r1, regs.r2, regs.r3, regs.r4, regs.r5, 
regs.r6)
         if CPU_AARCH64:
             return (regs.r0, regs.r1, regs.r2, regs.r3, regs.r4, regs.r5, 
regs.r6, regs.r7)
+        if CPU_RISCV:
+            return (regs.a0, regs.a1, regs.a2, regs.a3, regs.a4, regs.a5, 
regs.a6)
         if RUNNING_BSD:
             sp = self.process.getStackPointer()
             return [self.process.readWord(sp + index * CPU_WORD_SIZE)
@@ -139,7 +145,7 @@
                 errcode = -self.result
                 text = "%s %s (%s)" % (
                     self.result, errorcode[errcode], strerror(errcode))
-            elif not(0 <= self.result <= 9):
+            elif not (0 <= self.result <= 9):
                 text = "%s (%s)" % (self.result, formatWordHex(uresult))
             else:
                 text = str(self.result)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/ptrace/version.py 
new/python-ptrace-0.9.9/ptrace/version.py
--- old/python-ptrace-0.9.8/ptrace/version.py   2021-03-17 21:19:45.000000000 
+0100
+++ new/python-ptrace-0.9.9/ptrace/version.py   2024-03-13 15:51:54.000000000 
+0100
@@ -1,5 +1,5 @@
 PACKAGE = "python-ptrace"
-VERSION = (0, 9, 8)
+VERSION = (0, 9, 9)
 __version__ = '.'.join(map(str, VERSION))
 WEBSITE = "http://python-ptrace.readthedocs.io/";
 LICENSE = "GNU GPL v2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/setup.py 
new/python-ptrace-0.9.9/setup.py
--- old/python-ptrace-0.9.8/setup.py    2021-03-17 21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/setup.py    2024-03-13 15:51:54.000000000 +0100
@@ -28,7 +28,7 @@
 #  - git commit -a -m "post-release"
 #  - git push
 
-from imp import load_source
+import importlib.util
 from os import path
 try:
     # setuptools supports bdist_wheel
@@ -55,7 +55,10 @@
 with open('README.rst') as fp:
     LONG_DESCRIPTION = fp.read()
 
-ptrace = load_source("version", path.join("ptrace", "version.py"))
+ptrace_spec = importlib.util.spec_from_file_location("version", 
path.join("ptrace", "version.py"))
+ptrace = importlib.util.module_from_spec(ptrace_spec)
+ptrace_spec.loader.exec_module(ptrace)
+
 PACKAGES = {}
 for name in MODULES:
     PACKAGES[name] = name.replace(".", "/")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/setup_cptrace.py 
new/python-ptrace-0.9.9/setup_cptrace.py
--- old/python-ptrace-0.9.8/setup_cptrace.py    2021-03-17 21:19:45.000000000 
+0100
+++ new/python-ptrace-0.9.9/setup_cptrace.py    2024-03-13 15:51:54.000000000 
+0100
@@ -1,5 +1,7 @@
 #!/usr/bin/env python
 
+import importlib.util
+
 SOURCES = ['cptrace/cptrace.c']
 
 CLASSIFIERS = [
@@ -17,7 +19,6 @@
 
 
 def main():
-    from imp import load_source
     from os import path
     from sys import argv
 
@@ -29,7 +30,10 @@
 
     cptrace_ext = Extension('cptrace', sources=SOURCES)
 
-    cptrace = load_source("version", path.join("cptrace", "version.py"))
+    cptrace_spec = importlib.util.spec_from_file_location("version",
+                                                          path.join("cptrace", 
"version.py"))
+    cptrace = importlib.util.module_from_spec(cptrace_spec)
+    cptrace_spec.loader.exec_module(cptrace)
 
     install_options = {
         "name": cptrace.PACKAGE,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-ptrace-0.9.8/tests/test_strace.py 
new/python-ptrace-0.9.9/tests/test_strace.py
--- old/python-ptrace-0.9.8/tests/test_strace.py        2021-03-17 
21:19:45.000000000 +0100
+++ new/python-ptrace-0.9.9/tests/test_strace.py        2024-03-13 
15:51:54.000000000 +0100
@@ -11,6 +11,7 @@
     os.path.join(os.path.dirname(__file__), '..', 'strace.py'))
 
 AARCH64 = (getattr(os.uname(), 'machine', None) == 'aarch64')
+RISCV = (getattr(os.uname(), 'machine', None).startswith('riscv'))
 
 
 class TestStrace(unittest.TestCase):
@@ -78,19 +79,21 @@
         pattern = br"^rename\('oldpath', 'newpath'\)"
         if AARCH64:
             pattern = br"^renameat\(.*'oldpath'.*'newpath'\)"
+        if RISCV:
+            pattern = br"^renameat2\(.*'oldpath'.*'newpath', 0\)"
         self.assert_syscall("import os; os.rename('oldpath', 'newpath')",
                             pattern)
 
     def test_link(self):
         pattern = br"^link\('oldpath', 'newpath'\)"
-        if AARCH64:
+        if AARCH64 or RISCV:
             pattern = br"^linkat\(.*'oldpath'.*'newpath'.*\)"
         self.assert_syscall("import os; os.link('oldpath', 'newpath')",
                             pattern)
 
     def test_symlink(self):
         pattern = br"^symlink\('target', 'linkpath'\)"
-        if AARCH64:
+        if AARCH64 or RISCV:
             pattern = br"^symlinkat\(.*'target'.*'linkpath'\)"
         try:
             self.assert_syscall("import os; os.symlink('target', 'linkpath')",

++++++ support-python314.patch ++++++
>From 324404a3d7ca7d329f1595f2520e779412d6fa98 Mon Sep 17 00:00:00 2001
From: Stefano Rivera <[email protected]>
Date: Sat, 11 Oct 2025 15:36:41 +0200
Subject: [PATCH] Add support for Python 3.14

Python 3.14 now uses linkat() if it's available
https://github.com/python/cpython/issues/81793

I'm not quite sure why the ARM64 and RISC-V versions were using
linkat() there, previously, but that doesn't seem relevant to this
change :)
---
 tests/test_strace.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/test_strace.py b/tests/test_strace.py
index 2020a3b..89f77b6 100755
--- a/tests/test_strace.py
+++ b/tests/test_strace.py
@@ -86,7 +86,7 @@ def test_rename(self):
 
     def test_link(self):
         pattern = br"^link\('oldpath', 'newpath'\)"
-        if AARCH64 or RISCV:
+        if AARCH64 or RISCV or sys.version_info >= (3, 14):
             pattern = br"^linkat\(.*'oldpath'.*'newpath'.*\)"
         self.assert_syscall("import os; os.link('oldpath', 'newpath')",
                             pattern)

Reply via email to