diff --git a/buildroot-2021.05/.gitignore b/buildroot-2021.05/.gitignore index bb02d9f57..1c1f60edf 100644 --- a/buildroot-2021.05/.gitignore +++ b/buildroot-2021.05/.gitignore @@ -1,5 +1,4 @@ /output -/dl /.auto.deps /.config.cmd /.config.old diff --git a/buildroot-2021.05/dl/acl/.lock b/buildroot-2021.05/dl/acl/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/acl/acl-2.3.1.tar.xz b/buildroot-2021.05/dl/acl/acl-2.3.1.tar.xz new file mode 100644 index 000000000..0135efa19 Binary files /dev/null and b/buildroot-2021.05/dl/acl/acl-2.3.1.tar.xz differ diff --git a/buildroot-2021.05/dl/attr/.lock b/buildroot-2021.05/dl/attr/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/attr/attr-2.5.1.tar.xz b/buildroot-2021.05/dl/attr/attr-2.5.1.tar.xz new file mode 100644 index 000000000..409b6ab74 Binary files /dev/null and b/buildroot-2021.05/dl/attr/attr-2.5.1.tar.xz differ diff --git a/buildroot-2021.05/dl/autoconf/.lock b/buildroot-2021.05/dl/autoconf/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/autoconf/autoconf-2.69.tar.xz b/buildroot-2021.05/dl/autoconf/autoconf-2.69.tar.xz new file mode 100644 index 000000000..407896a30 Binary files /dev/null and b/buildroot-2021.05/dl/autoconf/autoconf-2.69.tar.xz differ diff --git a/buildroot-2021.05/dl/automake/.lock b/buildroot-2021.05/dl/automake/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/automake/automake-1.15.1.tar.xz b/buildroot-2021.05/dl/automake/automake-1.15.1.tar.xz new file mode 100644 index 000000000..36d5fbbfe Binary files /dev/null and b/buildroot-2021.05/dl/automake/automake-1.15.1.tar.xz differ diff --git a/buildroot-2021.05/dl/bison/.lock b/buildroot-2021.05/dl/bison/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/bison/bison-3.7.6.tar.xz b/buildroot-2021.05/dl/bison/bison-3.7.6.tar.xz new file mode 100644 index 000000000..36d4e25d1 Binary files /dev/null and b/buildroot-2021.05/dl/bison/bison-3.7.6.tar.xz differ diff --git a/buildroot-2021.05/dl/busybox/.lock b/buildroot-2021.05/dl/busybox/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/busybox/busybox-1.33.0.tar.bz2 b/buildroot-2021.05/dl/busybox/busybox-1.33.0.tar.bz2 new file mode 100644 index 000000000..f239a2f1a Binary files /dev/null and b/buildroot-2021.05/dl/busybox/busybox-1.33.0.tar.bz2 differ diff --git a/buildroot-2021.05/dl/dropbear/.lock b/buildroot-2021.05/dl/dropbear/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/dropbear/dropbear-2020.81.tar.bz2 b/buildroot-2021.05/dl/dropbear/dropbear-2020.81.tar.bz2 new file mode 100644 index 000000000..f7df2961e Binary files /dev/null and b/buildroot-2021.05/dl/dropbear/dropbear-2020.81.tar.bz2 differ diff --git a/buildroot-2021.05/dl/e2fsprogs/.lock b/buildroot-2021.05/dl/e2fsprogs/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/e2fsprogs/e2fsprogs-1.46.2.tar.xz b/buildroot-2021.05/dl/e2fsprogs/e2fsprogs-1.46.2.tar.xz new file mode 100644 index 000000000..029efda58 Binary files /dev/null and b/buildroot-2021.05/dl/e2fsprogs/e2fsprogs-1.46.2.tar.xz differ diff --git a/buildroot-2021.05/dl/evtest/.lock b/buildroot-2021.05/dl/evtest/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/evtest/evtest-evtest-1.34.tar.gz b/buildroot-2021.05/dl/evtest/evtest-evtest-1.34.tar.gz new file mode 100644 index 000000000..0265e36b6 Binary files /dev/null and b/buildroot-2021.05/dl/evtest/evtest-evtest-1.34.tar.gz differ diff --git a/buildroot-2021.05/dl/fakeroot/.lock b/buildroot-2021.05/dl/fakeroot/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/fakeroot/fakeroot_1.25.3.orig.tar.gz b/buildroot-2021.05/dl/fakeroot/fakeroot_1.25.3.orig.tar.gz new file mode 100644 index 000000000..cf3090ae5 Binary files /dev/null and b/buildroot-2021.05/dl/fakeroot/fakeroot_1.25.3.orig.tar.gz differ diff --git a/buildroot-2021.05/dl/flex/.lock b/buildroot-2021.05/dl/flex/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/flex/flex-2.6.4.tar.gz b/buildroot-2021.05/dl/flex/flex-2.6.4.tar.gz new file mode 100644 index 000000000..fd328f959 Binary files /dev/null and b/buildroot-2021.05/dl/flex/flex-2.6.4.tar.gz differ diff --git a/buildroot-2021.05/dl/gdb/.lock b/buildroot-2021.05/dl/gdb/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/gdb/gdb-9.2.tar.xz b/buildroot-2021.05/dl/gdb/gdb-9.2.tar.xz new file mode 100644 index 000000000..45c82f860 Binary files /dev/null and b/buildroot-2021.05/dl/gdb/gdb-9.2.tar.xz differ diff --git a/buildroot-2021.05/dl/gettext-tiny/.lock b/buildroot-2021.05/dl/gettext-tiny/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/gettext-tiny/gettext-0.20.1.tar.xz b/buildroot-2021.05/dl/gettext-tiny/gettext-0.20.1.tar.xz new file mode 100644 index 000000000..c5d067038 Binary files /dev/null and b/buildroot-2021.05/dl/gettext-tiny/gettext-0.20.1.tar.xz differ diff --git a/buildroot-2021.05/dl/gettext-tiny/gettext-tiny-0.3.2.tar.gz b/buildroot-2021.05/dl/gettext-tiny/gettext-tiny-0.3.2.tar.gz new file mode 100644 index 000000000..9a642f969 Binary files /dev/null and b/buildroot-2021.05/dl/gettext-tiny/gettext-tiny-0.3.2.tar.gz differ diff --git a/buildroot-2021.05/dl/json-c/.lock b/buildroot-2021.05/dl/json-c/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/json-c/json-c-0.15.tar.gz b/buildroot-2021.05/dl/json-c/json-c-0.15.tar.gz new file mode 100644 index 000000000..839def055 Binary files /dev/null and b/buildroot-2021.05/dl/json-c/json-c-0.15.tar.gz differ diff --git a/buildroot-2021.05/dl/kmod/.lock b/buildroot-2021.05/dl/kmod/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/kmod/kmod-28.tar.xz b/buildroot-2021.05/dl/kmod/kmod-28.tar.xz new file mode 100644 index 000000000..ae5ff541b Binary files /dev/null and b/buildroot-2021.05/dl/kmod/kmod-28.tar.xz differ diff --git a/buildroot-2021.05/dl/libnl/.lock b/buildroot-2021.05/dl/libnl/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/libnl/libnl-3.5.0.tar.gz b/buildroot-2021.05/dl/libnl/libnl-3.5.0.tar.gz new file mode 100644 index 000000000..049b1cae2 Binary files /dev/null and b/buildroot-2021.05/dl/libnl/libnl-3.5.0.tar.gz differ diff --git a/buildroot-2021.05/dl/libtool/.lock b/buildroot-2021.05/dl/libtool/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/libtool/libtool-2.4.6.tar.xz b/buildroot-2021.05/dl/libtool/libtool-2.4.6.tar.xz new file mode 100644 index 000000000..8782cd4a7 Binary files /dev/null and b/buildroot-2021.05/dl/libtool/libtool-2.4.6.tar.xz differ diff --git a/buildroot-2021.05/dl/libzlib/.lock b/buildroot-2021.05/dl/libzlib/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/libzlib/zlib-1.2.11.tar.xz b/buildroot-2021.05/dl/libzlib/zlib-1.2.11.tar.xz new file mode 100644 index 000000000..305b7a058 Binary files /dev/null and b/buildroot-2021.05/dl/libzlib/zlib-1.2.11.tar.xz differ diff --git a/buildroot-2021.05/dl/m4/.lock b/buildroot-2021.05/dl/m4/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/m4/m4-1.4.18.tar.xz b/buildroot-2021.05/dl/m4/m4-1.4.18.tar.xz new file mode 100644 index 000000000..18f019e4a Binary files /dev/null and b/buildroot-2021.05/dl/m4/m4-1.4.18.tar.xz differ diff --git a/buildroot-2021.05/dl/musl-compat-headers/.lock b/buildroot-2021.05/dl/musl-compat-headers/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/musl-compat-headers/queue.h?rev=1.70 b/buildroot-2021.05/dl/musl-compat-headers/queue.h?rev=1.70 new file mode 100644 index 000000000..a38499a26 --- /dev/null +++ b/buildroot-2021.05/dl/musl-compat-headers/queue.h?rev=1.70 @@ -0,0 +1,846 @@ +/* $NetBSD: queue.h,v 1.70 2015/11/02 15:21:23 christos 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 +#endif + +#if defined(QUEUEDEBUG) +# if defined(_KERNEL) +# define QUEUEDEBUG_ABORT(...) panic(__VA_ARGS__) +# else +# include +# 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 *)(void *)((head)->tqh_last))->tqh_last)) +#define TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)(void *)((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) = TAILQ_LAST((head), headname); \ + (var) != TAILQ_END(head); \ + (var) = TAILQ_PREV((var), headname, field)) + +#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/buildroot-2021.05/dl/ncurses/.lock b/buildroot-2021.05/dl/ncurses/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190609-patch.sh.bz2 b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190609-patch.sh.bz2 new file mode 100644 index 000000000..16f504baf Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190609-patch.sh.bz2 differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190615.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190615.patch.gz new file mode 100644 index 000000000..151ac0c38 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190615.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190623.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190623.patch.gz new file mode 100644 index 000000000..d088ad59e Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190623.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190630.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190630.patch.gz new file mode 100644 index 000000000..7e805851e Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190630.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190706.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190706.patch.gz new file mode 100644 index 000000000..cfcc55946 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190706.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190713.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190713.patch.gz new file mode 100644 index 000000000..92b6c1b3c Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190713.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190720.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190720.patch.gz new file mode 100644 index 000000000..183de06d2 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190720.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190727.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190727.patch.gz new file mode 100644 index 000000000..416c1c747 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190727.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190728.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190728.patch.gz new file mode 100644 index 000000000..9ed088848 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190728.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190803.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190803.patch.gz new file mode 100644 index 000000000..e1df04c51 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190803.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190810.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190810.patch.gz new file mode 100644 index 000000000..b5ec13874 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190810.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190817.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190817.patch.gz new file mode 100644 index 000000000..a48976317 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190817.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190824.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190824.patch.gz new file mode 100644 index 000000000..8666e1485 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190824.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190831.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190831.patch.gz new file mode 100644 index 000000000..a94a6d3e1 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190831.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190907.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190907.patch.gz new file mode 100644 index 000000000..3b9a91340 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190907.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190914.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190914.patch.gz new file mode 100644 index 000000000..75ee40f38 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190914.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190921.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190921.patch.gz new file mode 100644 index 000000000..d9f7b9aee Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190921.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190928.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190928.patch.gz new file mode 100644 index 000000000..dedb3c857 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20190928.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191005.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191005.patch.gz new file mode 100644 index 000000000..cadbecb82 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191005.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191012.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191012.patch.gz new file mode 100644 index 000000000..8be1b60c7 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191012.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191015.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191015.patch.gz new file mode 100644 index 000000000..23c5c62c2 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191015.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191019.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191019.patch.gz new file mode 100644 index 000000000..caa8944a0 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191019.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191026.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191026.patch.gz new file mode 100644 index 000000000..59e84a4ae Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191026.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191102.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191102.patch.gz new file mode 100644 index 000000000..aa7b680bb Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191102.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191109.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191109.patch.gz new file mode 100644 index 000000000..37f21aa32 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191109.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191116.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191116.patch.gz new file mode 100644 index 000000000..0630f8019 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191116.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191123.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191123.patch.gz new file mode 100644 index 000000000..3c73938f7 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191123.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191130.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191130.patch.gz new file mode 100644 index 000000000..db39f9c1e Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191130.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191207.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191207.patch.gz new file mode 100644 index 000000000..ccb2e5afc Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191207.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191214.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191214.patch.gz new file mode 100644 index 000000000..fe8f18054 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191214.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191221.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191221.patch.gz new file mode 100644 index 000000000..79d77b1ec Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191221.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191228.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191228.patch.gz new file mode 100644 index 000000000..109dfa92d Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20191228.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20200104.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20200104.patch.gz new file mode 100644 index 000000000..4b1ad39f9 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20200104.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20200111.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20200111.patch.gz new file mode 100644 index 000000000..62caba92b Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20200111.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1-20200118.patch.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20200118.patch.gz new file mode 100644 index 000000000..78c906ebd Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1-20200118.patch.gz differ diff --git a/buildroot-2021.05/dl/ncurses/ncurses-6.1.tar.gz b/buildroot-2021.05/dl/ncurses/ncurses-6.1.tar.gz new file mode 100644 index 000000000..511c02700 Binary files /dev/null and b/buildroot-2021.05/dl/ncurses/ncurses-6.1.tar.gz differ diff --git a/buildroot-2021.05/dl/patchelf/.lock b/buildroot-2021.05/dl/patchelf/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/patchelf/patchelf-0.9.tar.bz2 b/buildroot-2021.05/dl/patchelf/patchelf-0.9.tar.bz2 new file mode 100644 index 000000000..2f8db21be Binary files /dev/null and b/buildroot-2021.05/dl/patchelf/patchelf-0.9.tar.bz2 differ diff --git a/buildroot-2021.05/dl/pkgconf/.lock b/buildroot-2021.05/dl/pkgconf/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/pkgconf/pkgconf-1.6.3.tar.xz b/buildroot-2021.05/dl/pkgconf/pkgconf-1.6.3.tar.xz new file mode 100644 index 000000000..7d420c107 Binary files /dev/null and b/buildroot-2021.05/dl/pkgconf/pkgconf-1.6.3.tar.xz differ diff --git a/buildroot-2021.05/dl/strace/.lock b/buildroot-2021.05/dl/strace/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/strace/strace-5.11.tar.xz b/buildroot-2021.05/dl/strace/strace-5.11.tar.xz new file mode 100644 index 000000000..7f37dd39f Binary files /dev/null and b/buildroot-2021.05/dl/strace/strace-5.11.tar.xz differ diff --git a/buildroot-2021.05/dl/util-linux/.lock b/buildroot-2021.05/dl/util-linux/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/util-linux/util-linux-2.36.2.tar.xz b/buildroot-2021.05/dl/util-linux/util-linux-2.36.2.tar.xz new file mode 100644 index 000000000..814ab26a8 Binary files /dev/null and b/buildroot-2021.05/dl/util-linux/util-linux-2.36.2.tar.xz differ diff --git a/buildroot-2021.05/dl/wpa_supplicant/.lock b/buildroot-2021.05/dl/wpa_supplicant/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/wpa_supplicant/0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch b/buildroot-2021.05/dl/wpa_supplicant/0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch new file mode 100644 index 000000000..1942bb3d5 --- /dev/null +++ b/buildroot-2021.05/dl/wpa_supplicant/0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch @@ -0,0 +1,50 @@ +From 8460e3230988ef2ec13ce6b69b687e941f6cdb32 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Tue, 8 Dec 2020 23:52:50 +0200 +Subject: [PATCH] P2P: Fix a corner case in peer addition based on PD Request + +p2p_add_device() may remove the oldest entry if there is no room in the +peer table for a new peer. This would result in any pointer to that +removed entry becoming stale. A corner case with an invalid PD Request +frame could result in such a case ending up using (read+write) freed +memory. This could only by triggered when the peer table has reached its +maximum size and the PD Request frame is received from the P2P Device +Address of the oldest remaining entry and the frame has incorrect P2P +Device Address in the payload. + +Fix this by fetching the dev pointer again after having called +p2p_add_device() so that the stale pointer cannot be used. + +Fixes: 17bef1e97a50 ("P2P: Add peer entry based on Provision Discovery Request") +Signed-off-by: Jouni Malinen +--- + src/p2p/p2p_pd.c | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/src/p2p/p2p_pd.c b/src/p2p/p2p_pd.c +index 3994ec03f86b..05fd593494ef 100644 +--- a/src/p2p/p2p_pd.c ++++ b/src/p2p/p2p_pd.c +@@ -595,14 +595,12 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa, + goto out; + } + ++ dev = p2p_get_device(p2p, sa); + if (!dev) { +- dev = p2p_get_device(p2p, sa); +- if (!dev) { +- p2p_dbg(p2p, +- "Provision Discovery device not found " +- MACSTR, MAC2STR(sa)); +- goto out; +- } ++ p2p_dbg(p2p, ++ "Provision Discovery device not found " ++ MACSTR, MAC2STR(sa)); ++ goto out; + } + } else if (msg.wfd_subelems) { + wpabuf_free(dev->info.wfd_subelems); +-- +2.25.1 + diff --git a/buildroot-2021.05/dl/wpa_supplicant/0001-P2P-Fix-copying-of-secondary-device-types-for-P2P-gr.patch b/buildroot-2021.05/dl/wpa_supplicant/0001-P2P-Fix-copying-of-secondary-device-types-for-P2P-gr.patch new file mode 100644 index 000000000..4657b55d8 --- /dev/null +++ b/buildroot-2021.05/dl/wpa_supplicant/0001-P2P-Fix-copying-of-secondary-device-types-for-P2P-gr.patch @@ -0,0 +1,38 @@ +From 947272febe24a8f0ea828b5b2f35f13c3821901e Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Mon, 9 Nov 2020 11:43:12 +0200 +Subject: [PATCH] P2P: Fix copying of secondary device types for P2P group + client + +Parsing and copying of WPS secondary device types list was verifying +that the contents is not too long for the internal maximum in the case +of WPS messages, but similar validation was missing from the case of P2P +group information which encodes this information in a different +attribute. This could result in writing beyond the memory area assigned +for these entries and corrupting memory within an instance of struct +p2p_device. This could result in invalid operations and unexpected +behavior when trying to free pointers from that corrupted memory. + +Credit to OSS-Fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=27269 +Fixes: e57ae6e19edf ("P2P: Keep track of secondary device types for peers") +Signed-off-by: Jouni Malinen +--- + src/p2p/p2p.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c +index 74b7b52ae05c..5cbfc217fc1f 100644 +--- a/src/p2p/p2p.c ++++ b/src/p2p/p2p.c +@@ -453,6 +453,8 @@ static void p2p_copy_client_info(struct p2p_device *dev, + dev->info.config_methods = cli->config_methods; + os_memcpy(dev->info.pri_dev_type, cli->pri_dev_type, 8); + dev->info.wps_sec_dev_type_list_len = 8 * cli->num_sec_dev_types; ++ if (dev->info.wps_sec_dev_type_list_len > WPS_SEC_DEV_TYPE_MAX_LEN) ++ dev->info.wps_sec_dev_type_list_len = WPS_SEC_DEV_TYPE_MAX_LEN; + os_memcpy(dev->info.wps_sec_dev_type_list, cli->sec_dev_types, + dev->info.wps_sec_dev_type_list_len); + } +-- +2.25.1 + diff --git a/buildroot-2021.05/dl/wpa_supplicant/wpa_supplicant-2.9.tar.gz b/buildroot-2021.05/dl/wpa_supplicant/wpa_supplicant-2.9.tar.gz new file mode 100644 index 000000000..157b3c8ea Binary files /dev/null and b/buildroot-2021.05/dl/wpa_supplicant/wpa_supplicant-2.9.tar.gz differ diff --git a/buildroot-2021.05/dl/xz/.lock b/buildroot-2021.05/dl/xz/.lock new file mode 100644 index 000000000..e69de29bb diff --git a/buildroot-2021.05/dl/xz/xz-5.2.5.tar.bz2 b/buildroot-2021.05/dl/xz/xz-5.2.5.tar.bz2 new file mode 100644 index 000000000..5a46fea36 Binary files /dev/null and b/buildroot-2021.05/dl/xz/xz-5.2.5.tar.bz2 differ