mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2025-12-11 00:07:51 +03:00
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>
184 lines
7.2 KiB
Diff
184 lines
7.2 KiB
Diff
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
|
||
|