* [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/
@ 2022-07-22 20:20 Anthony G. Basile
0 siblings, 0 replies; 9+ messages in thread
From: Anthony G. Basile @ 2022-07-22 20:20 UTC (permalink / raw
To: gentoo-commits
commit: 6a7155d70855eaba1d9dbf809fef294187cf28f0
Author: Alfred Persson Forsberg <cat <AT> catcream <DOT> org>
AuthorDate: Thu Jul 21 19:46:43 2022 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Fri Jul 22 20:19:12 2022 +0000
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=6a7155d7
dev-qt/qtwebengine: comment on remove-glibc-check
Signed-off-by: Alfred Persson Forsberg <cat <AT> catcream.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>
.../qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch
index 1d94b6b9..01dddd98 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch
@@ -1,8 +1,9 @@
Qt checks if glibc is available and if not disables large part of Qt5WebEngine and thus cripples functionality.
-However these parts work fine with Musl so there is no need to disable them.
-Just remove the check so it builds again. Since 5.15.1 is the last version of Qt to be released with this build system it'll be obsolete with Qt6 and there is no real point in fixing this upstream.
+However these parts work fine with Musl so there is no need to disable them. - Alpine
+Just remove the check so it builds again. Since 5.15 is the last version of Qt to be released with this build system it'll be obsolete with Qt6 so there is no real point in fixing this upstream except adding to Qt5PatchCollection.
+https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/remove-glibc-check.patch
diff --git a/src/buildtools/config/support.pri b/src/buildtools/config/support.pri
index e7f869a1..de18523d 100644
--- a/src/buildtools/config/support.pri
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/
@ 2022-07-22 20:20 Anthony G. Basile
0 siblings, 0 replies; 9+ messages in thread
From: Anthony G. Basile @ 2022-07-22 20:20 UTC (permalink / raw
To: gentoo-commits
commit: bbcb0d264007fde674018809d80887ac37e667f4
Author: Alfred Persson Forsberg <cat <AT> catcream <DOT> org>
AuthorDate: Thu Jul 21 19:53:36 2022 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Fri Jul 22 20:19:12 2022 +0000
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=bbcb0d26
dev-qt/qtwebengine: comment pvalloc patch
Signed-off-by: Alfred Persson Forsberg <cat <AT> catcream.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>
.../files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch
index 310ea8d3..991d08fc 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch
@@ -1,4 +1,6 @@
-https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/qt-musl-pvalloc.patch?id=65f58742e6e669c7d0f5b23c0764f4f73661980b
+The obsolete function pvalloc() is similar to valloc(), but rounds the size of the allocation up to the next multiple of the system page size. (https://linux.die.net/man/3/pvalloc)
+
+See: https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/qt-musl-pvalloc.patch?id=65f58742e6e669c7d0f5b23c0764f4f73661980b
---
src/core/api/qtbug-61521.cpp | 4 ++++
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/
@ 2022-07-22 20:20 Anthony G. Basile
0 siblings, 0 replies; 9+ messages in thread
From: Anthony G. Basile @ 2022-07-22 20:20 UTC (permalink / raw
To: gentoo-commits
commit: 91be344fd39321ffdf20dd42c45569e633582e4d
Author: Alfred Persson Forsberg <cat <AT> catcream <DOT> org>
AuthorDate: Thu Jul 21 20:00:10 2022 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Fri Jul 22 20:19:12 2022 +0000
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=91be344f
dev-qt/qtwebengine: comment on musl-sandbox
Signed-off-by: Alfred Persson Forsberg <cat <AT> catcream.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>
.../files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch
index 07e5b847..d56fa40a 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch
@@ -1,7 +1,7 @@
-From a381e9d12fb3bb489f12e119c3ae6e2318f429e9 Mon Sep 17 00:00:00 2001
-From: Your Name <you@example.com>
-Date: Wed, 20 Jul 2022 18:47:15 +0200
-Subject: [PATCH 2/2] musl sandbox
+This should be fine for all non-Android platforms.
+TODO: not okay for upstreaming.
+
+https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/musl-sandbox.patch
---
.../syscall_parameters_restrictions.cc | 22 +++++--------------
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/
@ 2022-07-22 20:20 Anthony G. Basile
0 siblings, 0 replies; 9+ messages in thread
From: Anthony G. Basile @ 2022-07-22 20:20 UTC (permalink / raw
To: gentoo-commits
commit: 602466dc009c9cab64eae4874ca0579a44a5c061
Author: Alfred Persson Forsberg <cat <AT> catcream <DOT> org>
AuthorDate: Thu Jul 21 20:16:20 2022 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Fri Jul 22 20:19:12 2022 +0000
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=602466dc
dev-qt/qtwebengine: Add links to some patches
Many patches are from Alpine.
Signed-off-by: Alfred Persson Forsberg <cat <AT> catcream.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>
.../files/qtwebengine-5.15.5_p20220618-backtrace-execinfo.patch | 2 ++
.../files/qtwebengine-5.15.5_p20220618-musl-canonicalize-filename.patch | 2 ++
dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks.patch | 2 --
.../qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch | 2 ++
.../qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch | 2 ++
.../qtwebengine/files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch | 2 ++
.../files/qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch | 2 ++
7 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-backtrace-execinfo.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-backtrace-execinfo.patch
index 1e827e59..88e5565c 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-backtrace-execinfo.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-backtrace-execinfo.patch
@@ -1,3 +1,5 @@
+https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/qt-musl-execinfo.patch
+
The backtrace api is not available in musl libc. This can be added with
libexecinfo but that needs changes in the build system. As qmake is being swapped
for CMake in Qt6 it makes sense to just check for glibc
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-canonicalize-filename.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-canonicalize-filename.patch
index 1d58af61..9a27db6d 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-canonicalize-filename.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-canonicalize-filename.patch
@@ -1,3 +1,5 @@
+https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/nasm.patch
+
diff --git a/src/3rdparty/chromium/third_party/nasm/config/config-linux.h b/src/3rdparty/chromium/third_party/nasm/config/config-linux.h
index 7eb7c20ff..3bdc2eb39 100644
--- a/src/3rdparty/chromium/third_party/nasm/config/config-linux.h
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks.patch
index 74908d6c..49912a22 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks.patch
@@ -1,7 +1,5 @@
https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/musl-hacks.patch
-
-
---
src/3rdparty/chromium/net/socket/udp_socket_posix.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch
index eea2db90..4f8e5ce6 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch
@@ -1,3 +1,5 @@
+https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/qt-musl-mallinfo.patch
+
musl does not support mallinfo, this patch changes OS_LINUX check to include
checking for glibc too.
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch
index d56fa40a..e0d877e0 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-sandbox.patch
@@ -1,3 +1,5 @@
+https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/musl-sandbox.patch
+
This should be fine for all non-Android platforms.
TODO: not okay for upstreaming.
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch
index 991d08fc..a5126127 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-pvalloc-patch.patch
@@ -1,3 +1,5 @@
+https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/qt-musl-pvalloc.patch
+
The obsolete function pvalloc() is similar to valloc(), but rounds the size of the allocation up to the next multiple of the system page size. (https://linux.die.net/man/3/pvalloc)
See: https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/qt-musl-pvalloc.patch?id=65f58742e6e669c7d0f5b23c0764f4f73661980b
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch
index 01dddd98..13989724 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-qmake-remove-glibc-check.patch
@@ -1,3 +1,5 @@
+https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/remove-glibc-check.patch
+
Qt checks if glibc is available and if not disables large part of Qt5WebEngine and thus cripples functionality.
However these parts work fine with Musl so there is no need to disable them. - Alpine
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/
@ 2022-07-22 20:20 Anthony G. Basile
0 siblings, 0 replies; 9+ messages in thread
From: Anthony G. Basile @ 2022-07-22 20:20 UTC (permalink / raw
To: gentoo-commits
commit: add161cf0503ce554cd413a5cda7a9a3177cdc09
Author: Alfred Persson Forsberg <cat <AT> catcream <DOT> org>
AuthorDate: Thu Jul 21 23:21:24 2022 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Fri Jul 22 20:19:12 2022 +0000
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=add161cf
dev-qt/qtwebengine: remove duplicate+unused patch
Signed-off-by: Alfred Persson Forsberg <cat <AT> catcream.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>
.../qtwebengine-5.15.5_p20220618-fix-sys-queue.h | 1020 --------------------
1 file changed, 1020 deletions(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-fix-sys-queue.h b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-fix-sys-queue.h
deleted file mode 100644
index 57ca2cdf..00000000
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-fix-sys-queue.h
+++ /dev/null
@@ -1,1020 +0,0 @@
-From 005bce88c9b1c70b108c66a85335ca434a3c8f27 Mon Sep 17 00:00:00 2001
-From: Your Name <you@example.com>
-Date: Mon, 18 Jul 2022 21:39:44 +0200
-Subject: [PATCH] fix libevent sys/queue.h
-
----
- .../third_party/libevent/compat_sys_queue.h | 846 ++++++++++++++++++
- .../base/third_party/libevent/epoll.c | 4 +
- .../base/third_party/libevent/event.c | 7 +
- .../base/third_party/libevent/event_tagging.c | 4 +
- .../base/third_party/libevent/evrpc.c | 4 +
- .../base/third_party/libevent/evutil.c | 4 +
- .../chromium/base/third_party/libevent/http.c | 4 +
- .../chromium/base/third_party/libevent/poll.c | 4 +
- .../base/third_party/libevent/select.c | 4 +
- .../base/third_party/libevent/signal.c | 4 +
- 10 files changed, 885 insertions(+)
- create mode 100644 src/3rdparty/chromium/base/third_party/libevent/compat_sys_queue.h
-
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/compat_sys_queue.h b/src/3rdparty/chromium/base/third_party/libevent/compat_sys_queue.h
-new file mode 100644
-index 000000000..99d01a55b
---- /dev/null
-+++ b/src/3rdparty/chromium/base/third_party/libevent/compat_sys_queue.h
-@@ -0,0 +1,846 @@
-+/* $NetBSD: queue.h,v 1.68 2014/11/19 08:10:01 uebayasi Exp $ */
-+
-+/*
-+ * Copyright (c) 1991, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ *
-+ * @(#)queue.h 8.5 (Berkeley) 8/20/94
-+ */
-+
-+#ifndef _SYS_QUEUE_H_
-+#define _SYS_QUEUE_H_
-+
-+/*
-+ * This file defines five types of data structures: singly-linked lists,
-+ * lists, simple queues, tail queues, and circular queues.
-+ *
-+ * A singly-linked list is headed by a single forward pointer. The
-+ * elements are singly linked for minimum space and pointer manipulation
-+ * overhead at the expense of O(n) removal for arbitrary elements. New
-+ * elements can be added to the list after an existing element or at the
-+ * head of the list. Elements being removed from the head of the list
-+ * should use the explicit macro for this purpose for optimum
-+ * efficiency. A singly-linked list may only be traversed in the forward
-+ * direction. Singly-linked lists are ideal for applications with large
-+ * datasets and few or no removals or for implementing a LIFO queue.
-+ *
-+ * A list is headed by a single forward pointer (or an array of forward
-+ * pointers for a hash table header). The elements are doubly linked
-+ * so that an arbitrary element can be removed without a need to
-+ * traverse the list. New elements can be added to the list before
-+ * or after an existing element or at the head of the list. A list
-+ * may only be traversed in the forward direction.
-+ *
-+ * A simple queue is headed by a pair of pointers, one the head of the
-+ * list and the other to the tail of the list. The elements are singly
-+ * linked to save space, so elements can only be removed from the
-+ * head of the list. New elements can be added to the list after
-+ * an existing element, at the head of the list, or at the end of the
-+ * list. A simple queue may only be traversed in the forward direction.
-+ *
-+ * A tail queue is headed by a pair of pointers, one to the head of the
-+ * list and the other to the tail of the list. The elements are doubly
-+ * linked so that an arbitrary element can be removed without a need to
-+ * traverse the list. New elements can be added to the list before or
-+ * after an existing element, at the head of the list, or at the end of
-+ * the list. A tail queue may be traversed in either direction.
-+ *
-+ * A circle queue is headed by a pair of pointers, one to the head of the
-+ * list and the other to the tail of the list. The elements are doubly
-+ * linked so that an arbitrary element can be removed without a need to
-+ * traverse the list. New elements can be added to the list before or after
-+ * an existing element, at the head of the list, or at the end of the list.
-+ * A circle queue may be traversed in either direction, but has a more
-+ * complex end of list detection.
-+ *
-+ * For details on the use of these macros, see the queue(3) manual page.
-+ */
-+
-+/*
-+ * Include the definition of NULL only on NetBSD because sys/null.h
-+ * is not available elsewhere. This conditional makes the header
-+ * portable and it can simply be dropped verbatim into any system.
-+ * The caveat is that on other systems some other header
-+ * must provide NULL before the macros can be used.
-+ */
-+#ifdef __NetBSD__
-+#include <sys/null.h>
-+#endif
-+
-+#if defined(QUEUEDEBUG)
-+# if defined(_KERNEL)
-+# define QUEUEDEBUG_ABORT(...) panic(__VA_ARGS__)
-+# else
-+# include <err.h>
-+# define QUEUEDEBUG_ABORT(...) err(1, __VA_ARGS__)
-+# endif
-+#endif
-+
-+/*
-+ * Singly-linked List definitions.
-+ */
-+#define SLIST_HEAD(name, type) \
-+struct name { \
-+ struct type *slh_first; /* first element */ \
-+}
-+
-+#define SLIST_HEAD_INITIALIZER(head) \
-+ { NULL }
-+
-+#define SLIST_ENTRY(type) \
-+struct { \
-+ struct type *sle_next; /* next element */ \
-+}
-+
-+/*
-+ * Singly-linked List access methods.
-+ */
-+#define SLIST_FIRST(head) ((head)->slh_first)
-+#define SLIST_END(head) NULL
-+#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
-+#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
-+
-+#define SLIST_FOREACH(var, head, field) \
-+ for((var) = (head)->slh_first; \
-+ (var) != SLIST_END(head); \
-+ (var) = (var)->field.sle_next)
-+
-+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = SLIST_FIRST((head)); \
-+ (var) != SLIST_END(head) && \
-+ ((tvar) = SLIST_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
-+/*
-+ * Singly-linked List functions.
-+ */
-+#define SLIST_INIT(head) do { \
-+ (head)->slh_first = SLIST_END(head); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
-+ (elm)->field.sle_next = (slistelm)->field.sle_next; \
-+ (slistelm)->field.sle_next = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_INSERT_HEAD(head, elm, field) do { \
-+ (elm)->field.sle_next = (head)->slh_first; \
-+ (head)->slh_first = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_REMOVE_AFTER(slistelm, field) do { \
-+ (slistelm)->field.sle_next = \
-+ SLIST_NEXT(SLIST_NEXT((slistelm), field), field); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_REMOVE_HEAD(head, field) do { \
-+ (head)->slh_first = (head)->slh_first->field.sle_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SLIST_REMOVE(head, elm, type, field) do { \
-+ if ((head)->slh_first == (elm)) { \
-+ SLIST_REMOVE_HEAD((head), field); \
-+ } \
-+ else { \
-+ struct type *curelm = (head)->slh_first; \
-+ while(curelm->field.sle_next != (elm)) \
-+ curelm = curelm->field.sle_next; \
-+ curelm->field.sle_next = \
-+ curelm->field.sle_next->field.sle_next; \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+
-+/*
-+ * List definitions.
-+ */
-+#define LIST_HEAD(name, type) \
-+struct name { \
-+ struct type *lh_first; /* first element */ \
-+}
-+
-+#define LIST_HEAD_INITIALIZER(head) \
-+ { NULL }
-+
-+#define LIST_ENTRY(type) \
-+struct { \
-+ struct type *le_next; /* next element */ \
-+ struct type **le_prev; /* address of previous next element */ \
-+}
-+
-+/*
-+ * List access methods.
-+ */
-+#define LIST_FIRST(head) ((head)->lh_first)
-+#define LIST_END(head) NULL
-+#define LIST_EMPTY(head) ((head)->lh_first == LIST_END(head))
-+#define LIST_NEXT(elm, field) ((elm)->field.le_next)
-+
-+#define LIST_FOREACH(var, head, field) \
-+ for ((var) = ((head)->lh_first); \
-+ (var) != LIST_END(head); \
-+ (var) = ((var)->field.le_next))
-+
-+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = LIST_FIRST((head)); \
-+ (var) != LIST_END(head) && \
-+ ((tvar) = LIST_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
-+#define LIST_MOVE(head1, head2) do { \
-+ LIST_INIT((head2)); \
-+ if (!LIST_EMPTY((head1))) { \
-+ (head2)->lh_first = (head1)->lh_first; \
-+ LIST_INIT((head1)); \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+/*
-+ * List functions.
-+ */
-+#if defined(QUEUEDEBUG)
-+#define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field) \
-+ if ((head)->lh_first && \
-+ (head)->lh_first->field.le_prev != &(head)->lh_first) \
-+ QUEUEDEBUG_ABORT("LIST_INSERT_HEAD %p %s:%d", (head), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_LIST_OP(elm, field) \
-+ if ((elm)->field.le_next && \
-+ (elm)->field.le_next->field.le_prev != \
-+ &(elm)->field.le_next) \
-+ QUEUEDEBUG_ABORT("LIST_* forw %p %s:%d", (elm), \
-+ __FILE__, __LINE__); \
-+ if (*(elm)->field.le_prev != (elm)) \
-+ QUEUEDEBUG_ABORT("LIST_* back %p %s:%d", (elm), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_LIST_POSTREMOVE(elm, field) \
-+ (elm)->field.le_next = (void *)1L; \
-+ (elm)->field.le_prev = (void *)1L;
-+#else
-+#define QUEUEDEBUG_LIST_INSERT_HEAD(head, elm, field)
-+#define QUEUEDEBUG_LIST_OP(elm, field)
-+#define QUEUEDEBUG_LIST_POSTREMOVE(elm, field)
-+#endif
-+
-+#define LIST_INIT(head) do { \
-+ (head)->lh_first = LIST_END(head); \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_INSERT_AFTER(listelm, elm, field) do { \
-+ QUEUEDEBUG_LIST_OP((listelm), field) \
-+ if (((elm)->field.le_next = (listelm)->field.le_next) != \
-+ LIST_END(head)) \
-+ (listelm)->field.le_next->field.le_prev = \
-+ &(elm)->field.le_next; \
-+ (listelm)->field.le_next = (elm); \
-+ (elm)->field.le_prev = &(listelm)->field.le_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
-+ QUEUEDEBUG_LIST_OP((listelm), field) \
-+ (elm)->field.le_prev = (listelm)->field.le_prev; \
-+ (elm)->field.le_next = (listelm); \
-+ *(listelm)->field.le_prev = (elm); \
-+ (listelm)->field.le_prev = &(elm)->field.le_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_INSERT_HEAD(head, elm, field) do { \
-+ QUEUEDEBUG_LIST_INSERT_HEAD((head), (elm), field) \
-+ if (((elm)->field.le_next = (head)->lh_first) != LIST_END(head))\
-+ (head)->lh_first->field.le_prev = &(elm)->field.le_next;\
-+ (head)->lh_first = (elm); \
-+ (elm)->field.le_prev = &(head)->lh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_REMOVE(elm, field) do { \
-+ QUEUEDEBUG_LIST_OP((elm), field) \
-+ if ((elm)->field.le_next != NULL) \
-+ (elm)->field.le_next->field.le_prev = \
-+ (elm)->field.le_prev; \
-+ *(elm)->field.le_prev = (elm)->field.le_next; \
-+ QUEUEDEBUG_LIST_POSTREMOVE((elm), field) \
-+} while (/*CONSTCOND*/0)
-+
-+#define LIST_REPLACE(elm, elm2, field) do { \
-+ if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \
-+ (elm2)->field.le_next->field.le_prev = \
-+ &(elm2)->field.le_next; \
-+ (elm2)->field.le_prev = (elm)->field.le_prev; \
-+ *(elm2)->field.le_prev = (elm2); \
-+ QUEUEDEBUG_LIST_POSTREMOVE((elm), field) \
-+} while (/*CONSTCOND*/0)
-+
-+/*
-+ * Simple queue definitions.
-+ */
-+#define SIMPLEQ_HEAD(name, type) \
-+struct name { \
-+ struct type *sqh_first; /* first element */ \
-+ struct type **sqh_last; /* addr of last next element */ \
-+}
-+
-+#define SIMPLEQ_HEAD_INITIALIZER(head) \
-+ { NULL, &(head).sqh_first }
-+
-+#define SIMPLEQ_ENTRY(type) \
-+struct { \
-+ struct type *sqe_next; /* next element */ \
-+}
-+
-+/*
-+ * Simple queue access methods.
-+ */
-+#define SIMPLEQ_FIRST(head) ((head)->sqh_first)
-+#define SIMPLEQ_END(head) NULL
-+#define SIMPLEQ_EMPTY(head) ((head)->sqh_first == SIMPLEQ_END(head))
-+#define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next)
-+
-+#define SIMPLEQ_FOREACH(var, head, field) \
-+ for ((var) = ((head)->sqh_first); \
-+ (var) != SIMPLEQ_END(head); \
-+ (var) = ((var)->field.sqe_next))
-+
-+#define SIMPLEQ_FOREACH_SAFE(var, head, field, next) \
-+ for ((var) = ((head)->sqh_first); \
-+ (var) != SIMPLEQ_END(head) && \
-+ ((next = ((var)->field.sqe_next)), 1); \
-+ (var) = (next))
-+
-+/*
-+ * Simple queue functions.
-+ */
-+#define SIMPLEQ_INIT(head) do { \
-+ (head)->sqh_first = NULL; \
-+ (head)->sqh_last = &(head)->sqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \
-+ if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
-+ (head)->sqh_last = &(elm)->field.sqe_next; \
-+ (head)->sqh_first = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \
-+ (elm)->field.sqe_next = NULL; \
-+ *(head)->sqh_last = (elm); \
-+ (head)->sqh_last = &(elm)->field.sqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
-+ if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
-+ (head)->sqh_last = &(elm)->field.sqe_next; \
-+ (listelm)->field.sqe_next = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_REMOVE_HEAD(head, field) do { \
-+ if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
-+ (head)->sqh_last = &(head)->sqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \
-+ if (((elm)->field.sqe_next = (elm)->field.sqe_next->field.sqe_next) \
-+ == NULL) \
-+ (head)->sqh_last = &(elm)->field.sqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_REMOVE(head, elm, type, field) do { \
-+ if ((head)->sqh_first == (elm)) { \
-+ SIMPLEQ_REMOVE_HEAD((head), field); \
-+ } else { \
-+ struct type *curelm = (head)->sqh_first; \
-+ while (curelm->field.sqe_next != (elm)) \
-+ curelm = curelm->field.sqe_next; \
-+ if ((curelm->field.sqe_next = \
-+ curelm->field.sqe_next->field.sqe_next) == NULL) \
-+ (head)->sqh_last = &(curelm)->field.sqe_next; \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_CONCAT(head1, head2) do { \
-+ if (!SIMPLEQ_EMPTY((head2))) { \
-+ *(head1)->sqh_last = (head2)->sqh_first; \
-+ (head1)->sqh_last = (head2)->sqh_last; \
-+ SIMPLEQ_INIT((head2)); \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+#define SIMPLEQ_LAST(head, type, field) \
-+ (SIMPLEQ_EMPTY((head)) ? \
-+ NULL : \
-+ ((struct type *)(void *) \
-+ ((char *)((head)->sqh_last) - offsetof(struct type, field))))
-+
-+/*
-+ * Tail queue definitions.
-+ */
-+#define _TAILQ_HEAD(name, type, qual) \
-+struct name { \
-+ qual type *tqh_first; /* first element */ \
-+ qual type *qual *tqh_last; /* addr of last next element */ \
-+}
-+#define TAILQ_HEAD(name, type) _TAILQ_HEAD(name, struct type,)
-+
-+#define TAILQ_HEAD_INITIALIZER(head) \
-+ { TAILQ_END(head), &(head).tqh_first }
-+
-+#define _TAILQ_ENTRY(type, qual) \
-+struct { \
-+ qual type *tqe_next; /* next element */ \
-+ qual type *qual *tqe_prev; /* address of previous next element */\
-+}
-+#define TAILQ_ENTRY(type) _TAILQ_ENTRY(struct type,)
-+
-+/*
-+ * Tail queue access methods.
-+ */
-+#define TAILQ_FIRST(head) ((head)->tqh_first)
-+#define TAILQ_END(head) (NULL)
-+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
-+#define TAILQ_LAST(head, headname) \
-+ (*(((struct headname *)((head)->tqh_last))->tqh_last))
-+#define TAILQ_PREV(elm, headname, field) \
-+ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-+#define TAILQ_EMPTY(head) (TAILQ_FIRST(head) == TAILQ_END(head))
-+
-+
-+#define TAILQ_FOREACH(var, head, field) \
-+ for ((var) = ((head)->tqh_first); \
-+ (var) != TAILQ_END(head); \
-+ (var) = ((var)->field.tqe_next))
-+
-+#define TAILQ_FOREACH_SAFE(var, head, field, next) \
-+ for ((var) = ((head)->tqh_first); \
-+ (var) != TAILQ_END(head) && \
-+ ((next) = TAILQ_NEXT(var, field), 1); (var) = (next))
-+
-+#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
-+ for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last));\
-+ (var) != TAILQ_END(head); \
-+ (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
-+
-+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, prev) \
-+ for ((var) = TAILQ_LAST((head), headname); \
-+ (var) != TAILQ_END(head) && \
-+ ((prev) = TAILQ_PREV((var), headname, field), 1); (var) = (prev))
-+
-+/*
-+ * Tail queue functions.
-+ */
-+#if defined(QUEUEDEBUG)
-+#define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field) \
-+ if ((head)->tqh_first && \
-+ (head)->tqh_first->field.tqe_prev != &(head)->tqh_first) \
-+ QUEUEDEBUG_ABORT("TAILQ_INSERT_HEAD %p %s:%d", (head), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field) \
-+ if (*(head)->tqh_last != NULL) \
-+ QUEUEDEBUG_ABORT("TAILQ_INSERT_TAIL %p %s:%d", (head), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_TAILQ_OP(elm, field) \
-+ if ((elm)->field.tqe_next && \
-+ (elm)->field.tqe_next->field.tqe_prev != \
-+ &(elm)->field.tqe_next) \
-+ QUEUEDEBUG_ABORT("TAILQ_* forw %p %s:%d", (elm), \
-+ __FILE__, __LINE__); \
-+ if (*(elm)->field.tqe_prev != (elm)) \
-+ QUEUEDEBUG_ABORT("TAILQ_* back %p %s:%d", (elm), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field) \
-+ if ((elm)->field.tqe_next == NULL && \
-+ (head)->tqh_last != &(elm)->field.tqe_next) \
-+ QUEUEDEBUG_ABORT("TAILQ_PREREMOVE head %p elm %p %s:%d",\
-+ (head), (elm), __FILE__, __LINE__);
-+#define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field) \
-+ (elm)->field.tqe_next = (void *)1L; \
-+ (elm)->field.tqe_prev = (void *)1L;
-+#else
-+#define QUEUEDEBUG_TAILQ_INSERT_HEAD(head, elm, field)
-+#define QUEUEDEBUG_TAILQ_INSERT_TAIL(head, elm, field)
-+#define QUEUEDEBUG_TAILQ_OP(elm, field)
-+#define QUEUEDEBUG_TAILQ_PREREMOVE(head, elm, field)
-+#define QUEUEDEBUG_TAILQ_POSTREMOVE(elm, field)
-+#endif
-+
-+#define TAILQ_INIT(head) do { \
-+ (head)->tqh_first = TAILQ_END(head); \
-+ (head)->tqh_last = &(head)->tqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_INSERT_HEAD(head, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_INSERT_HEAD((head), (elm), field) \
-+ if (((elm)->field.tqe_next = (head)->tqh_first) != TAILQ_END(head))\
-+ (head)->tqh_first->field.tqe_prev = \
-+ &(elm)->field.tqe_next; \
-+ else \
-+ (head)->tqh_last = &(elm)->field.tqe_next; \
-+ (head)->tqh_first = (elm); \
-+ (elm)->field.tqe_prev = &(head)->tqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_INSERT_TAIL(head, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_INSERT_TAIL((head), (elm), field) \
-+ (elm)->field.tqe_next = TAILQ_END(head); \
-+ (elm)->field.tqe_prev = (head)->tqh_last; \
-+ *(head)->tqh_last = (elm); \
-+ (head)->tqh_last = &(elm)->field.tqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_OP((listelm), field) \
-+ if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != \
-+ TAILQ_END(head)) \
-+ (elm)->field.tqe_next->field.tqe_prev = \
-+ &(elm)->field.tqe_next; \
-+ else \
-+ (head)->tqh_last = &(elm)->field.tqe_next; \
-+ (listelm)->field.tqe_next = (elm); \
-+ (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_OP((listelm), field) \
-+ (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
-+ (elm)->field.tqe_next = (listelm); \
-+ *(listelm)->field.tqe_prev = (elm); \
-+ (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_REMOVE(head, elm, field) do { \
-+ QUEUEDEBUG_TAILQ_PREREMOVE((head), (elm), field) \
-+ QUEUEDEBUG_TAILQ_OP((elm), field) \
-+ if (((elm)->field.tqe_next) != TAILQ_END(head)) \
-+ (elm)->field.tqe_next->field.tqe_prev = \
-+ (elm)->field.tqe_prev; \
-+ else \
-+ (head)->tqh_last = (elm)->field.tqe_prev; \
-+ *(elm)->field.tqe_prev = (elm)->field.tqe_next; \
-+ QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field); \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_REPLACE(head, elm, elm2, field) do { \
-+ if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != \
-+ TAILQ_END(head)) \
-+ (elm2)->field.tqe_next->field.tqe_prev = \
-+ &(elm2)->field.tqe_next; \
-+ else \
-+ (head)->tqh_last = &(elm2)->field.tqe_next; \
-+ (elm2)->field.tqe_prev = (elm)->field.tqe_prev; \
-+ *(elm2)->field.tqe_prev = (elm2); \
-+ QUEUEDEBUG_TAILQ_POSTREMOVE((elm), field); \
-+} while (/*CONSTCOND*/0)
-+
-+#define TAILQ_CONCAT(head1, head2, field) do { \
-+ if (!TAILQ_EMPTY(head2)) { \
-+ *(head1)->tqh_last = (head2)->tqh_first; \
-+ (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
-+ (head1)->tqh_last = (head2)->tqh_last; \
-+ TAILQ_INIT((head2)); \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+/*
-+ * Singly-linked Tail queue declarations.
-+ */
-+#define STAILQ_HEAD(name, type) \
-+struct name { \
-+ struct type *stqh_first; /* first element */ \
-+ struct type **stqh_last; /* addr of last next element */ \
-+}
-+
-+#define STAILQ_HEAD_INITIALIZER(head) \
-+ { NULL, &(head).stqh_first }
-+
-+#define STAILQ_ENTRY(type) \
-+struct { \
-+ struct type *stqe_next; /* next element */ \
-+}
-+
-+/*
-+ * Singly-linked Tail queue access methods.
-+ */
-+#define STAILQ_FIRST(head) ((head)->stqh_first)
-+#define STAILQ_END(head) NULL
-+#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
-+#define STAILQ_EMPTY(head) (STAILQ_FIRST(head) == STAILQ_END(head))
-+
-+/*
-+ * Singly-linked Tail queue functions.
-+ */
-+#define STAILQ_INIT(head) do { \
-+ (head)->stqh_first = NULL; \
-+ (head)->stqh_last = &(head)->stqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_INSERT_HEAD(head, elm, field) do { \
-+ if (((elm)->field.stqe_next = (head)->stqh_first) == NULL) \
-+ (head)->stqh_last = &(elm)->field.stqe_next; \
-+ (head)->stqh_first = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_INSERT_TAIL(head, elm, field) do { \
-+ (elm)->field.stqe_next = NULL; \
-+ *(head)->stqh_last = (elm); \
-+ (head)->stqh_last = &(elm)->field.stqe_next; \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
-+ if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
-+ (head)->stqh_last = &(elm)->field.stqe_next; \
-+ (listelm)->field.stqe_next = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_REMOVE_HEAD(head, field) do { \
-+ if (((head)->stqh_first = (head)->stqh_first->field.stqe_next) == NULL) \
-+ (head)->stqh_last = &(head)->stqh_first; \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_REMOVE(head, elm, type, field) do { \
-+ if ((head)->stqh_first == (elm)) { \
-+ STAILQ_REMOVE_HEAD((head), field); \
-+ } else { \
-+ struct type *curelm = (head)->stqh_first; \
-+ while (curelm->field.stqe_next != (elm)) \
-+ curelm = curelm->field.stqe_next; \
-+ if ((curelm->field.stqe_next = \
-+ curelm->field.stqe_next->field.stqe_next) == NULL) \
-+ (head)->stqh_last = &(curelm)->field.stqe_next; \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_FOREACH(var, head, field) \
-+ for ((var) = ((head)->stqh_first); \
-+ (var); \
-+ (var) = ((var)->field.stqe_next))
-+
-+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
-+ for ((var) = STAILQ_FIRST((head)); \
-+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
-+ (var) = (tvar))
-+
-+#define STAILQ_CONCAT(head1, head2) do { \
-+ if (!STAILQ_EMPTY((head2))) { \
-+ *(head1)->stqh_last = (head2)->stqh_first; \
-+ (head1)->stqh_last = (head2)->stqh_last; \
-+ STAILQ_INIT((head2)); \
-+ } \
-+} while (/*CONSTCOND*/0)
-+
-+#define STAILQ_LAST(head, type, field) \
-+ (STAILQ_EMPTY((head)) ? \
-+ NULL : \
-+ ((struct type *)(void *) \
-+ ((char *)((head)->stqh_last) - offsetof(struct type, field))))
-+
-+
-+#ifndef _KERNEL
-+/*
-+ * Circular queue definitions. Do not use. We still keep the macros
-+ * for compatibility but because of pointer aliasing issues their use
-+ * is discouraged!
-+ */
-+
-+/*
-+ * __launder_type(): We use this ugly hack to work around the the compiler
-+ * noticing that two types may not alias each other and elide tests in code.
-+ * We hit this in the CIRCLEQ macros when comparing 'struct name *' and
-+ * 'struct type *' (see CIRCLEQ_HEAD()). Modern compilers (such as GCC
-+ * 4.8) declare these comparisons as always false, causing the code to
-+ * not run as designed.
-+ *
-+ * This hack is only to be used for comparisons and thus can be fully const.
-+ * Do not use for assignment.
-+ *
-+ * If we ever choose to change the ABI of the CIRCLEQ macros, we could fix
-+ * this by changing the head/tail sentinal values, but see the note above
-+ * this one.
-+ */
-+static __inline const void * __launder_type(const void *);
-+static __inline const void *
-+__launder_type(const void *__x)
-+{
-+ __asm __volatile("" : "+r" (__x));
-+ return __x;
-+}
-+
-+#if defined(QUEUEDEBUG)
-+#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field) \
-+ if ((head)->cqh_first != CIRCLEQ_ENDC(head) && \
-+ (head)->cqh_first->field.cqe_prev != CIRCLEQ_ENDC(head)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ head forw %p %s:%d", (head), \
-+ __FILE__, __LINE__); \
-+ if ((head)->cqh_last != CIRCLEQ_ENDC(head) && \
-+ (head)->cqh_last->field.cqe_next != CIRCLEQ_ENDC(head)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ head back %p %s:%d", (head), \
-+ __FILE__, __LINE__);
-+#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field) \
-+ if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) { \
-+ if ((head)->cqh_last != (elm)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ elm last %p %s:%d", \
-+ (elm), __FILE__, __LINE__); \
-+ } else { \
-+ if ((elm)->field.cqe_next->field.cqe_prev != (elm)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ elm forw %p %s:%d", \
-+ (elm), __FILE__, __LINE__); \
-+ } \
-+ if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) { \
-+ if ((head)->cqh_first != (elm)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ elm first %p %s:%d", \
-+ (elm), __FILE__, __LINE__); \
-+ } else { \
-+ if ((elm)->field.cqe_prev->field.cqe_next != (elm)) \
-+ QUEUEDEBUG_ABORT("CIRCLEQ elm prev %p %s:%d", \
-+ (elm), __FILE__, __LINE__); \
-+ }
-+#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field) \
-+ (elm)->field.cqe_next = (void *)1L; \
-+ (elm)->field.cqe_prev = (void *)1L;
-+#else
-+#define QUEUEDEBUG_CIRCLEQ_HEAD(head, field)
-+#define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field)
-+#define QUEUEDEBUG_CIRCLEQ_POSTREMOVE(elm, field)
-+#endif
-+
-+#define CIRCLEQ_HEAD(name, type) \
-+struct name { \
-+ struct type *cqh_first; /* first element */ \
-+ struct type *cqh_last; /* last element */ \
-+}
-+
-+#define CIRCLEQ_HEAD_INITIALIZER(head) \
-+ { CIRCLEQ_END(&head), CIRCLEQ_END(&head) }
-+
-+#define CIRCLEQ_ENTRY(type) \
-+struct { \
-+ struct type *cqe_next; /* next element */ \
-+ struct type *cqe_prev; /* previous element */ \
-+}
-+
-+/*
-+ * Circular queue functions.
-+ */
-+#define CIRCLEQ_INIT(head) do { \
-+ (head)->cqh_first = CIRCLEQ_END(head); \
-+ (head)->cqh_last = CIRCLEQ_END(head); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field) \
-+ (elm)->field.cqe_next = (listelm)->field.cqe_next; \
-+ (elm)->field.cqe_prev = (listelm); \
-+ if ((listelm)->field.cqe_next == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_last = (elm); \
-+ else \
-+ (listelm)->field.cqe_next->field.cqe_prev = (elm); \
-+ (listelm)->field.cqe_next = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field) \
-+ (elm)->field.cqe_next = (listelm); \
-+ (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
-+ if ((listelm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_first = (elm); \
-+ else \
-+ (listelm)->field.cqe_prev->field.cqe_next = (elm); \
-+ (listelm)->field.cqe_prev = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ (elm)->field.cqe_next = (head)->cqh_first; \
-+ (elm)->field.cqe_prev = CIRCLEQ_END(head); \
-+ if ((head)->cqh_last == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_last = (elm); \
-+ else \
-+ (head)->cqh_first->field.cqe_prev = (elm); \
-+ (head)->cqh_first = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ (elm)->field.cqe_next = CIRCLEQ_END(head); \
-+ (elm)->field.cqe_prev = (head)->cqh_last; \
-+ if ((head)->cqh_first == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_first = (elm); \
-+ else \
-+ (head)->cqh_last->field.cqe_next = (elm); \
-+ (head)->cqh_last = (elm); \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_REMOVE(head, elm, field) do { \
-+ QUEUEDEBUG_CIRCLEQ_HEAD((head), field) \
-+ QUEUEDEBUG_CIRCLEQ_ELM((head), (elm), field) \
-+ if ((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_last = (elm)->field.cqe_prev; \
-+ else \
-+ (elm)->field.cqe_next->field.cqe_prev = \
-+ (elm)->field.cqe_prev; \
-+ if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \
-+ (head)->cqh_first = (elm)->field.cqe_next; \
-+ else \
-+ (elm)->field.cqe_prev->field.cqe_next = \
-+ (elm)->field.cqe_next; \
-+ QUEUEDEBUG_CIRCLEQ_POSTREMOVE((elm), field) \
-+} while (/*CONSTCOND*/0)
-+
-+#define CIRCLEQ_FOREACH(var, head, field) \
-+ for ((var) = ((head)->cqh_first); \
-+ (var) != CIRCLEQ_ENDC(head); \
-+ (var) = ((var)->field.cqe_next))
-+
-+#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \
-+ for ((var) = ((head)->cqh_last); \
-+ (var) != CIRCLEQ_ENDC(head); \
-+ (var) = ((var)->field.cqe_prev))
-+
-+/*
-+ * Circular queue access methods.
-+ */
-+#define CIRCLEQ_FIRST(head) ((head)->cqh_first)
-+#define CIRCLEQ_LAST(head) ((head)->cqh_last)
-+/* For comparisons */
-+#define CIRCLEQ_ENDC(head) (__launder_type(head))
-+/* For assignments */
-+#define CIRCLEQ_END(head) ((void *)(head))
-+#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next)
-+#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev)
-+#define CIRCLEQ_EMPTY(head) \
-+ (CIRCLEQ_FIRST(head) == CIRCLEQ_ENDC(head))
-+
-+#define CIRCLEQ_LOOP_NEXT(head, elm, field) \
-+ (((elm)->field.cqe_next == CIRCLEQ_ENDC(head)) \
-+ ? ((head)->cqh_first) \
-+ : (elm->field.cqe_next))
-+#define CIRCLEQ_LOOP_PREV(head, elm, field) \
-+ (((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) \
-+ ? ((head)->cqh_last) \
-+ : (elm->field.cqe_prev))
-+#endif /* !_KERNEL */
-+
-+#endif /* !_SYS_QUEUE_H_ */
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/epoll.c b/src/3rdparty/chromium/base/third_party/libevent/epoll.c
-index 4387ef896..91be4c644 100644
---- a/src/3rdparty/chromium/base/third_party/libevent/epoll.c
-+++ b/src/3rdparty/chromium/base/third_party/libevent/epoll.c
-@@ -36,7 +36,11 @@
- #else
- #include <sys/_libevent_time.h>
- #endif
-+#if __has_include(<sys/queue.h>)
- #include <sys/queue.h>
-+#else
-+#include "compat_sys_queue.h"
-+#endif
- #include <sys/epoll.h>
- #include <signal.h>
- #include <stdio.h>
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/event.c b/src/3rdparty/chromium/base/third_party/libevent/event.c
-index 4aa326e0e..2f228aa92 100644
---- a/src/3rdparty/chromium/base/third_party/libevent/event.c
-+++ b/src/3rdparty/chromium/base/third_party/libevent/event.c
-@@ -39,6 +39,13 @@
- #else
- #include <sys/_libevent_time.h>
- #endif
-+
-+#if __has_include(<sys/queue.h>)
-+#include <sys/queue.h>
-+#else
-+#include "compat_sys_queue.h"
-+#endif
-+
- #include <sys/queue.h>
- #include <stdio.h>
- #include <stdlib.h>
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/event_tagging.c b/src/3rdparty/chromium/base/third_party/libevent/event_tagging.c
-index d436e3fd6..777fb037f 100644
---- a/src/3rdparty/chromium/base/third_party/libevent/event_tagging.c
-+++ b/src/3rdparty/chromium/base/third_party/libevent/event_tagging.c
-@@ -45,7 +45,11 @@
- #include <sys/ioctl.h>
- #endif
-
-+#if __has_include(<sys/queue.h>)
- #include <sys/queue.h>
-+#else
-+#include "compat_sys_queue.h"
-+#endif
- #ifdef HAVE_SYS_TIME_H
- #include <sys/time.h>
- #endif
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/evrpc.c b/src/3rdparty/chromium/base/third_party/libevent/evrpc.c
-index 070fd9e71..f63a43ca4 100644
---- a/src/3rdparty/chromium/base/third_party/libevent/evrpc.c
-+++ b/src/3rdparty/chromium/base/third_party/libevent/evrpc.c
-@@ -42,7 +42,11 @@
- #ifdef HAVE_SYS_TIME_H
- #include <sys/time.h>
- #endif
-+#if __has_include(<sys/queue.h>)
- #include <sys/queue.h>
-+#else
-+#include "compat_sys_queue.h"
-+#endif
- #include <stdio.h>
- #include <stdlib.h>
- #ifndef WIN32
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/evutil.c b/src/3rdparty/chromium/base/third_party/libevent/evutil.c
-index cc6d0f46a..13de43bb6 100644
---- a/src/3rdparty/chromium/base/third_party/libevent/evutil.c
-+++ b/src/3rdparty/chromium/base/third_party/libevent/evutil.c
-@@ -55,7 +55,11 @@
- #include <stdio.h>
- #include <signal.h>
-
-+#if __has_include(<sys/queue.h>)
- #include <sys/queue.h>
-+#else
-+#include "compat_sys_queue.h"
-+#endif
- #include "event.h"
- #include "event-internal.h"
- #include "evutil.h"
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/http.c b/src/3rdparty/chromium/base/third_party/libevent/http.c
-index 4abce2393..ac4d74798 100644
---- a/src/3rdparty/chromium/base/third_party/libevent/http.c
-+++ b/src/3rdparty/chromium/base/third_party/libevent/http.c
-@@ -50,7 +50,11 @@
- #include <sys/wait.h>
- #endif
-
-+#if __has_include(<sys/queue.h>)
- #include <sys/queue.h>
-+#else
-+#include "compat_sys_queue.h"
-+#endif
-
- #ifndef WIN32
- #include <netinet/in.h>
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/poll.c b/src/3rdparty/chromium/base/third_party/libevent/poll.c
-index 2aa245b37..9aa3e4833 100644
---- a/src/3rdparty/chromium/base/third_party/libevent/poll.c
-+++ b/src/3rdparty/chromium/base/third_party/libevent/poll.c
-@@ -36,7 +36,11 @@
- #else
- #include <sys/_libevent_time.h>
- #endif
-+#if __has_include(<sys/queue.h>)
- #include <sys/queue.h>
-+#else
-+#include "compat_sys_queue.h"
-+#endif
- #include <poll.h>
- #include <signal.h>
- #include <stdio.h>
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/select.c b/src/3rdparty/chromium/base/third_party/libevent/select.c
-index 3f7333131..6f8b9edfb 100644
---- a/src/3rdparty/chromium/base/third_party/libevent/select.c
-+++ b/src/3rdparty/chromium/base/third_party/libevent/select.c
-@@ -39,7 +39,11 @@
- #ifdef HAVE_SYS_SELECT_H
- #include <sys/select.h>
- #endif
-+#if __has_include(<sys/queue.h>)
- #include <sys/queue.h>
-+#else
-+#include "compat_sys_queue.h"
-+#endif
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
-diff --git a/src/3rdparty/chromium/base/third_party/libevent/signal.c b/src/3rdparty/chromium/base/third_party/libevent/signal.c
-index b8d51ab51..230b053eb 100644
---- a/src/3rdparty/chromium/base/third_party/libevent/signal.c
-+++ b/src/3rdparty/chromium/base/third_party/libevent/signal.c
-@@ -40,7 +40,11 @@
- #ifdef HAVE_SYS_TIME_H
- #include <sys/time.h>
- #endif
-+#if __has_include(<sys/queue.h>)
- #include <sys/queue.h>
-+#else
-+#include "compat_sys_queue.h"
-+#endif
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
---
-2.35.1
-
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/
@ 2022-07-22 20:20 Anthony G. Basile
0 siblings, 0 replies; 9+ messages in thread
From: Anthony G. Basile @ 2022-07-22 20:20 UTC (permalink / raw
To: gentoo-commits
commit: 08cbb8e20933a57164fe7bbaa255c20aa63f6008
Author: Alfred Persson Forsberg <cat <AT> catcream <DOT> org>
AuthorDate: Thu Jul 21 20:04:30 2022 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Fri Jul 22 20:19:12 2022 +0000
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=08cbb8e2
dev-qt/qtwebengine: comment mallinfo patch
Signed-off-by: Alfred Persson Forsberg <cat <AT> catcream.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>
.../files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch
index 5895f314..eea2db90 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-mallinfo.patch
@@ -1,7 +1,7 @@
-From 95c68a3b5f3bfe018bc38b7e138d47d21cd7e288 Mon Sep 17 00:00:00 2001
-From: Your Name <you@example.com>
-Date: Mon, 18 Jul 2022 22:56:44 +0200
-Subject: [PATCH 1/4] mallinfo
+musl does not support mallinfo, this patch changes OS_LINUX check to include
+checking for glibc too.
+
+Could probably be done in build system but not done because of Qt6 moving to CMake.
---
src/3rdparty/chromium/base/process/process_metrics_posix.cc | 4 ++--
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/
@ 2022-07-26 16:09 Anthony G. Basile
0 siblings, 0 replies; 9+ messages in thread
From: Anthony G. Basile @ 2022-07-26 16:09 UTC (permalink / raw
To: gentoo-commits
commit: de9b15821db95321b3d8dfea7b7c34cf2fa8a6e3
Author: Alfred Persson Forsberg <cat <AT> catcream <DOT> org>
AuthorDate: Mon Jul 25 19:09:00 2022 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Tue Jul 26 16:08:21 2022 +0000
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=de9b1582
dev-qt/qtwebengine: Remove unused patch
Signed-off-by: Alfred Persson Forsberg <cat <AT> catcream.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>
.../qtwebengine-5.15.5_p20220618-musl-hacks.patch | 22 ----------------------
1 file changed, 22 deletions(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks.patch
deleted file mode 100644
index 49912a22..00000000
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-https://git.alpinelinux.org/aports/tree/community/qt5-qtwebengine/musl-hacks.patch
-
----
- src/3rdparty/chromium/net/socket/udp_socket_posix.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/3rdparty/chromium/net/socket/udp_socket_posix.cc b/src/3rdparty/chromium/net/socket/udp_socket_posix.cc
-index 71265568b..b9043f4d1 100644
---- a/src/3rdparty/chromium/net/socket/udp_socket_posix.cc
-+++ b/src/3rdparty/chromium/net/socket/udp_socket_posix.cc
-@@ -1152,7 +1152,7 @@ SendResult UDPSocketPosixSender::InternalSendmmsgBuffers(
- msg_iov->push_back({const_cast<char*>(buffer->data()), buffer->length()});
- msgvec->reserve(buffers.size());
- for (size_t j = 0; j < buffers.size(); j++)
-- msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, nullptr, 0, 0}, 0});
-+ msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, 0, 0, 0}, 0});
- int result = HANDLE_EINTR(Sendmmsg(fd, &msgvec[0], buffers.size(), 0));
- SendResult send_result(0, 0, std::move(buffers));
- if (result < 0) {
---
-2.35.1
-
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/
@ 2022-07-27 13:56 Anthony G. Basile
0 siblings, 0 replies; 9+ messages in thread
From: Anthony G. Basile @ 2022-07-27 13:56 UTC (permalink / raw
To: gentoo-commits
commit: 380d10212c8635924678c6e6643e66c25d980059
Author: Alfred Persson Forsberg <cat <AT> catcream <DOT> org>
AuthorDate: Tue Jul 26 19:27:31 2022 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Wed Jul 27 13:55:51 2022 +0000
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=380d1021
dev-qt/qtwebengine: Update musl-hacks-ii
Signed-off-by: Alfred Persson Forsberg <cat <AT> catcream.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>
...twebengine-5.15.5_p20220618-musl-hacks-ii.patch | 43 ++++++++++++----------
1 file changed, 23 insertions(+), 20 deletions(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks-ii.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks-ii.patch
index b59d6c42..b54fcdf3 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks-ii.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-musl-hacks-ii.patch
@@ -1,35 +1,38 @@
-From 48104199ceb938ad21b4573958c16c224dfeff60 Mon Sep 17 00:00:00 2001
-From: Your Name <you@example.com>
-Date: Fri, 22 Jul 2022 18:13:11 +0200
-Subject: [PATCH] musl hacks ii
+From 91fcf20ad6923db94a228faa1cf3bcdcaa5f8cbc Mon Sep 17 00:00:00 2001
+From: Alfred Persson Forsberg <cat@catcream.org>
+Date: Tue, 26 Jul 2022 20:53:11 +0200
+Subject: [PATCH] Don't use initializer list for msghdr
+msghdr is defined with padding in musl libc. Using an initializer list
+will set an int padding (5th element) to nullptr and break the build
+because of implicit conversion error from ptr to int.
+
+Signed-off-by: Alfred Persson Forsberg <cat@catcream.org>
---
- .../chromium/net/socket/udp_socket_posix.cc | 16 ++++++++++++++--
- 1 file changed, 14 insertions(+), 2 deletions(-)
+ .../chromium/net/socket/udp_socket_posix.cc | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/3rdparty/chromium/net/socket/udp_socket_posix.cc b/src/3rdparty/chromium/net/socket/udp_socket_posix.cc
-index 71265568b..7d82331f9 100644
+index 71265568b..58b2b1cbf 100644
--- a/src/3rdparty/chromium/net/socket/udp_socket_posix.cc
+++ b/src/3rdparty/chromium/net/socket/udp_socket_posix.cc
-@@ -1151,8 +1151,20 @@ SendResult UDPSocketPosixSender::InternalSendmmsgBuffers(
+@@ -1151,8 +1151,18 @@ SendResult UDPSocketPosixSender::InternalSendmmsgBuffers(
for (auto& buffer : buffers)
msg_iov->push_back({const_cast<char*>(buffer->data()), buffer->length()});
msgvec->reserve(buffers.size());
- for (size_t j = 0; j < buffers.size(); j++)
- msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, nullptr, 0, 0}, 0});
+ for (size_t j = 0; j < buffers.size(); j++) {
-+ auto hdr = new msghdr;
-+ hdr->msg_name = nullptr;
-+ hdr->msg_namelen = 0;
-+ hdr->msg_iov = &msg_iov[j];
-+ hdr->msg_iovlen = 1;
-+ hdr->__pad1 = 0;
-+ hdr->msg_control = 0;
-+ hdr->msg_controllen = 0;
-+ hdr->__pad2 = 0;
-+ hdr->msg_flags = 0;
-+ msgvec->push_back({hdr, 0});
-+ // msgvec->push_back({{nullptr, 0, &msg_iov[j], 1, nullptr, 0, 0}, 0});
++ struct msghdr msg;
++ msg.msg_name = nullptr;
++ msg.msg_namelen = 0;
++ msg.msg_iov = &msg_iov[j];
++ msg.msg_iovlen = 1;
++ msg.msg_control = 0;
++ msg.msg_controllen = 0;
++ msg.msg_flags = 0;
++
++ msgvec->push_back({msg, 0});
+ }
int result = HANDLE_EINTR(Sendmmsg(fd, &msgvec[0], buffers.size(), 0));
SendResult send_result(0, 0, std::move(buffers));
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/
@ 2022-07-27 13:56 Anthony G. Basile
0 siblings, 0 replies; 9+ messages in thread
From: Anthony G. Basile @ 2022-07-27 13:56 UTC (permalink / raw
To: gentoo-commits
commit: 4bd7c0fcdd99abfebf60726d3b3206916948e80e
Author: Alfred Persson Forsberg <cat <AT> catcream <DOT> org>
AuthorDate: Tue Jul 26 19:48:58 2022 +0000
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Wed Jul 27 13:56:02 2022 +0000
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=4bd7c0fc
dev-qt/qtwebengine: Add links to msghdr patch
Signed-off-by: Alfred Persson Forsberg <cat <AT> catcream.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>
.../files/qtwebengine-5.15.5_p20220618-msghdr-padding-initlist.patch | 3 +++
1 file changed, 3 insertions(+)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-msghdr-padding-initlist.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-msghdr-padding-initlist.patch
index b54fcdf3..16158fd9 100644
--- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-msghdr-padding-initlist.patch
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-msghdr-padding-initlist.patch
@@ -7,6 +7,9 @@ msghdr is defined with padding in musl libc. Using an initializer list
will set an int padding (5th element) to nullptr and break the build
because of implicit conversion error from ptr to int.
+https://git.musl-libc.org/cgit/musl/tree/include/sys/socket.h#n22
+https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/bits/socket.h;h=4f1f810ea1d9bf00ff428e4e7c49a52c71620775;hb=6488f4d00653b489e7969c0a489dc665c26514a8#l262
+
Signed-off-by: Alfred Persson Forsberg <cat@catcream.org>
---
.../chromium/net/socket/udp_socket_posix.cc | 14 ++++++++++++--
^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-07-27 13:56 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-22 20:20 [gentoo-commits] proj/musl:master commit in: dev-qt/qtwebengine/files/ Anthony G. Basile
-- strict thread matches above, loose matches on Subject: below --
2022-07-27 13:56 Anthony G. Basile
2022-07-27 13:56 Anthony G. Basile
2022-07-26 16:09 Anthony G. Basile
2022-07-22 20:20 Anthony G. Basile
2022-07-22 20:20 Anthony G. Basile
2022-07-22 20:20 Anthony G. Basile
2022-07-22 20:20 Anthony G. Basile
2022-07-22 20:20 Anthony G. Basile
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox