gentoo/dev-libs/libdnet/files/libdnet-1.18.0-fix-incompatible-function-pointer.patch
Z. Liu 02082e65bf
dev-libs/libdnet: fix errors on -Wincompatible-pointer-types
update last patch which fix -Wincompatible-function-pointer-types for
clang only

Closes: https://bugs.gentoo.org/933360
Signed-off-by: Z. Liu <zhixu.liu@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/41442
Signed-off-by: Sam James <sam@gentoo.org>
2025-04-10 11:17:13 +01:00

184 lines
7.2 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

https://github.com/ofalk/libdnet/pull/104
From de57a2349172148496386e284db91abe6406b02a Mon Sep 17 00:00:00 2001
From: "Z. Liu" <zhixu.liu@gmail.com>
Date: Wed, 19 Feb 2025 11:37:37 +0800
Subject: [PATCH 1/2] python/dnet.pyx: fix incompatible-function-pointer-types
for modern compiler
which is error now, see https://bugs.gentoo.org/933360,
clang 19 (maybe earlier) has the same problem too
Signed-off-by: Z. Liu <zhixu.liu@gmail.com>
---
python/dnet.pyx | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/python/dnet.pyx b/python/dnet.pyx
index 4e3604f..04db2c6 100644
--- a/python/dnet.pyx
+++ b/python/dnet.pyx
@@ -661,7 +661,7 @@ cdef extern from *:
addr_t arp_ha
ctypedef struct arp_t:
int __xxx
- ctypedef int (*arp_handler)(arp_entry *entry, void *arg) except -1
+ ctypedef int (*arp_handler)(const arp_entry *entry, void *arg) except -1
arp_t *arp_open()
int arp_add(arp_t *arp, arp_entry *entry)
@@ -687,7 +687,7 @@ ARP_OP_REPLY = 2 # /* response giving hardware address */
ARP_OP_REVREQUEST = 3 # /* request to resolve pa given ha */
ARP_OP_REVREPLY = 4 # /* response giving protocol address */
-cdef int __arp_callback(arp_entry *entry, void *arg) except -1:
+cdef int __arp_callback(const arp_entry *entry, void *arg) except -1:
f, a = <object>arg
pa, ha = addr(), addr()
(<addr>pa)._addr = entry.arp_pa
@@ -911,7 +911,7 @@ cdef extern from *:
addr_t intf_alias_addrs[8] # XXX
ctypedef struct intf_t:
int __xxx
- ctypedef int (*intf_handler)(intf_entry *entry, void *arg) except -1
+ ctypedef int (*intf_handler)(const intf_entry *entry, void *arg) except -1
intf_t *intf_open()
int intf_get(intf_t *intf, intf_entry *entry)
@@ -933,7 +933,7 @@ INTF_FLAG_NOARP = 0x08 # /* disable ARP */
INTF_FLAG_BROADCAST = 0x10 # /* supports broadcast (r/o) */
INTF_FLAG_MULTICAST = 0x20 # /* supports multicast (r/o) */
-cdef object ifent_to_dict(intf_entry *entry):
+cdef object ifent_to_dict(const intf_entry *entry):
d = {}
d['name'] = entry.intf_name
d['type'] = entry.intf_type
@@ -970,7 +970,7 @@ cdef dict_to_ifent(object d, intf_entry *entry):
for i from 0 <= i < entry.intf_alias_num:
entry.intf_alias_addrs[i] = (<addr>d['alias_addrs'][i])._addr
-cdef int __intf_callback(intf_entry *entry, void *arg) except -1:
+cdef int __intf_callback(const intf_entry *entry, void *arg) except -1:
f, a = <object>arg
ret = f(ifent_to_dict(entry), a)
if not ret:
@@ -1077,7 +1077,7 @@ cdef extern from *:
addr_t route_gw
ctypedef struct route_t:
int __xxx
- ctypedef int (*route_handler)(route_entry *entry, void *arg) except -1
+ ctypedef int (*route_handler)(const route_entry *entry, void *arg) except -1
route_t *route_open()
int route_add(route_t *route, route_entry *entry)
@@ -1086,7 +1086,7 @@ cdef extern from *:
int route_loop(route_t *route, route_handler callback, void *arg)
route_t *route_close(route_t *route)
-cdef int __route_callback(route_entry *entry, void *arg) except -1:
+cdef int __route_callback(const route_entry *entry, void *arg) except -1:
f, a = <object>arg
dst, gw = addr(), addr()
(<addr>dst)._addr = entry.route_dst
@@ -1183,7 +1183,7 @@ cdef extern from *:
ctypedef struct fw_t:
int __xxx
- ctypedef int (*fw_handler)(fw_rule *rule, void *arg) except -1
+ ctypedef int (*fw_handler)(const fw_rule *rule, void *arg) except -1
fw_t *fw_open()
int fw_add(fw_t *f, fw_rule *rule)
@@ -1197,7 +1197,7 @@ FW_OP_BLOCK = 2
FW_DIR_IN = 1
FW_DIR_OUT = 2
-cdef object rule_to_dict(fw_rule *rule):
+cdef object rule_to_dict(const fw_rule *rule):
d = {}
d['device'] = rule.fw_device
d['op'] = rule.fw_op
@@ -1235,7 +1235,7 @@ cdef dict_to_rule(object d, fw_rule *rule):
rule.fw_dport[0] = d['dport'][0]
rule.fw_dport[1] = d['dport'][1]
-cdef int __fw_callback(fw_rule *rule, void *arg) except -1:
+cdef int __fw_callback(const fw_rule *rule, void *arg) except -1:
f, a = <object>arg
ret = f(rule_to_dict(rule), a)
if not ret:
--
2.45.2
From 0a742400b2167f67067e13bfcbecb9f17a7eefe8 Mon Sep 17 00:00:00 2001
From: "Z. Liu" <zhixu.liu@gmail.com>
Date: Thu, 3 Apr 2025 08:09:26 +0000
Subject: [PATCH 2/2] python/dnet.pyx: fix -Wincompatible-pointer-types
reported by gcc14
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
./dnet.c:8451:52: error: passing argument 2 of PyObject_AsReadBuffer from incompatible pointer type [-Wincompatible-pointer-types]
8451 | __pyx_t_1 = (PyObject_AsReadBuffer(__pyx_v_pkt, (&__pyx_v_p), (&__pyx_v_n)) == 0);
| ~^~~~~~~~~~~
| |
| char **
/usr/include/python3.12/abstract.h:370:52: note: expected const void ** but argument is of type char **
370 | const void **buffer,
| ~~~~~~~~~~~~~^~~~~~
./dnet.c:8451:66: error: passing argument 3 of PyObject_AsReadBuffer from incompatible pointer type [-Wincompatible-pointer-types]
8451 | __pyx_t_1 = (PyObject_AsReadBuffer(__pyx_v_pkt, (&__pyx_v_p), (&__pyx_v_n)) == 0);
| ~^~~~~~~~~~~
| |
| int *
/usr/include/python3.12/abstract.h:371:51: note: expected Py_ssize_t * {aka long int *} but argument is of type int *
371 | Py_ssize_t *buffer_len);
| ~~~~~~~~~~~~^~~~~~~~~~
Signed-off-by: Z. Liu <zhixu.liu@gmail.com>
---
python/dnet.pyx | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/python/dnet.pyx b/python/dnet.pyx
index 04db2c6..6aefaa2 100644
--- a/python/dnet.pyx
+++ b/python/dnet.pyx
@@ -25,7 +25,7 @@ cdef extern from "dnet.h":
cdef extern from "Python.h":
object PyBytes_FromStringAndSize(char *s, int len)
int PyBytes_Size(object o)
- int PyObject_AsReadBuffer(object o, char **pp, int *lenp)
+ int PyObject_AsReadBuffer(object o, const void **pp, ssize_t *lenp)
int PyLong_Check(object o)
int PyLong_Check(object o)
long PyLong_AsLong(object o)
@@ -294,8 +294,8 @@ def ip_checksum(pkt):
"""
cdef char buf[2048]
cdef char *p
- cdef int n
- if PyObject_AsReadBuffer(pkt, &p, &n) == 0:
+ cdef ssize_t n
+ if PyObject_AsReadBuffer(pkt, <const void **>&p, &n) == 0:
if n < 2048:
memcpy(buf, p, n)
__ip_checksum(buf, n)
@@ -310,8 +310,8 @@ def ip_checksum(pkt):
def ip_cksum_add(buf, int sum):
cdef char *p
- cdef int n
- if PyObject_AsReadBuffer(buf, &p, &n) == 0:
+ cdef ssize_t n
+ if PyObject_AsReadBuffer(buf, <const void **>&p, &n) == 0:
return __ip_cksum_add(p, n, sum)
else:
raise TypeError
--
2.45.2