https://github.com/ptesarik/libkdumpfile/commit/3682f5cad70146ab35d05af251d4461ef650b4b5

From 3682f5cad70146ab35d05af251d4461ef650b4b5 Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Thu, 4 Jan 2024 12:36:53 +0100
Subject: [PATCH] Python 3 does not have a tp_print member in PyTypeObject

This avoids an int-conversion compiler error with current
compilers:

./kdumpfile.c:1449:9: error: initialization of 'long int' from 'int (*)(PyObject *, FILE *, int)' {aka 'int (*)(struct _object *, FILE *, int)'} makes integer from pointer without a cast
 1449 |         attr_dir_print,                 /* tp_print*/
      |         ^~~~~~~~~~~~~~


In Python 3.11, the field at this position is called tp_vectorcall_offset
and has type Py_ssize_t, hence the error.
--- a/python/kdumpfile.c
+++ b/python/kdumpfile.c
@@ -1143,7 +1143,6 @@ attr_dir_repr(PyObject *_self)
 	Py_XDECREF(colon);
 	return result;
 }
-#endif
 
 static int
 attr_dir_print(PyObject *_self, FILE *fp, int flags)
@@ -1214,6 +1213,7 @@ attr_dir_print(PyObject *_self, FILE *fp, int flags)
 	kdump_attr_iter_end(ctx, &iter);
 	return -1;
 }
+#endif
 
 static PyObject *
 attr_iterkey_new(PyObject *_self)
@@ -1446,7 +1446,11 @@ static PyTypeObject attr_dir_object_type =
 	sizeof(char),			/* tp_itemsize*/
 	/* methods */
 	attr_dir_dealloc,		/* tp_dealloc*/
+#if PY_MAJOR_VERSION < 3
 	attr_dir_print,			/* tp_print*/
+#else
+	0,
+#endif
 	0,				/* tp_getattr*/
 	0,				/* tp_setattr*/
 	0,				/* tp_compare*/

