patches/glibc/ports-2.12.1/150-queue-header-updates.patch
author "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
Thu Jul 28 22:09:31 2011 +0200 (2011-07-28)
changeset 2573 424fa2092ace
permissions -rw-r--r--
scripts/libc: do not build add-ons by default

Currently, no --enable-add-ons option is passed to libc configure when
"$(do_libc_add_ons_list ,)" is empty, which makes configure automatically search
for present add-ons. In that case, all present add-ons are built, although
no add-on was selected by the user in the config. Moreover, this can make the
configure fail if some non-standard add-ons like eglibc-localedef are present.

This behavior also leads to an inconsistency from a user point of view between
the following cases:
- LIBC_ADDONS_LIST="", LIBC_GLIBC_USE_PORTS=n and THREADS="none" in the config,
which makes "$(do_libc_add_ons_list ,)" return "", so all present add-ons
are built.
- LIBC_ADDONS_LIST="", LIBC_GLIBC_USE_PORTS=n and THREADS!="none" in the
config, which makes "$(do_libc_add_ons_list ,)" return the add-on supporting
the chosen threading implementation, e.g. "nptl", so only this add-on is
built.

This patch disables the building of all add-ons in that case.

It is still possible to build all present add-ons by adding --enable-add-ons to
LIBC_GLIBC_EXTRA_CONFIG_ARRAY.

Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
yann@2437
     1
grab some updates from FreeBSD
yann@2437
     2
yann@2437
     3
http://bugs.gentoo.org/201979
yann@2437
     4
yann@2437
     5
diff -durN glibc-2.12.1.orig/misc/sys/queue.h glibc-2.12.1/misc/sys/queue.h
yann@2437
     6
yann@2437
     7
diff -durN glibc-2.12.1.orig/misc/sys/queue.h glibc-2.12.1/misc/sys/queue.h
yann@2437
     8
--- glibc-2.12.1.orig/misc/sys/queue.h	2008-03-05 06:50:30.000000000 +0100
yann@2437
     9
+++ glibc-2.12.1/misc/sys/queue.h	2009-11-13 00:49:51.000000000 +0100
yann@2437
    10
@@ -136,6 +136,11 @@
yann@2437
    11
 		(var);							\
yann@2437
    12
 		(var) = ((var)->field.le_next))
yann@2437
    13
 
yann@2437
    14
+#define	LIST_FOREACH_SAFE(var, head, field, tvar)			\
yann@2437
    15
+	for ((var) = LIST_FIRST((head));				\
yann@2437
    16
+	    (var) && ((tvar) = LIST_NEXT((var), field), 1);		\
yann@2437
    17
+	    (var) = (tvar))
yann@2437
    18
+
yann@2437
    19
 /*
yann@2437
    20
  * List access methods.
yann@2437
    21
  */
yann@2437
    22
@@ -197,6 +202,16 @@
yann@2437
    23
 #define	SLIST_FOREACH(var, head, field)					\
yann@2437
    24
 	for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
yann@2437
    25
 
yann@2437
    26
+#define	SLIST_FOREACH_SAFE(var, head, field, tvar)			\
yann@2437
    27
+	for ((var) = SLIST_FIRST((head));				\
yann@2437
    28
+	    (var) && ((tvar) = SLIST_NEXT((var), field), 1);		\
yann@2437
    29
+	    (var) = (tvar))
yann@2437
    30
+
yann@2437
    31
+#define	SLIST_FOREACH_PREVPTR(var, varp, head, field)			\
yann@2437
    32
+	for ((varp) = &SLIST_FIRST((head));				\
yann@2437
    33
+	    ((var) = *(varp)) != NULL;					\
yann@2437
    34
+	    (varp) = &SLIST_NEXT((var), field))
yann@2437
    35
+
yann@2437
    36
 /*
yann@2437
    37
  * Singly-linked List access methods.
yann@2437
    38
  */
yann@2437
    39
@@ -242,6 +257,12 @@
yann@2437
    40
 	(head)->stqh_last = &(elm)->field.stqe_next;			\
yann@2437
    41
 } while (/*CONSTCOND*/0)
yann@2437
    42
 
yann@2437
    43
+#define	STAILQ_LAST(head, type, field)					\
yann@2437
    44
+	(STAILQ_EMPTY((head)) ?						\
yann@2437
    45
+		NULL :							\
yann@2437
    46
+	        ((struct type *)(void *)				\
yann@2437
    47
+		((char *)((head)->stqh_last) - __offsetof(struct type, field))))
yann@2437
    48
+
yann@2437
    49
 #define	STAILQ_INSERT_AFTER(head, listelm, elm, field) do {		\
yann@2437
    50
 	if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
yann@2437
    51
 		(head)->stqh_last = &(elm)->field.stqe_next;		\
yann@2437
    52
@@ -271,6 +292,11 @@
yann@2437
    53
 		(var);							\
yann@2437
    54
 		(var) = ((var)->field.stqe_next))
yann@2437
    55
 
yann@2437
    56
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar)			\
yann@2437
    57
+	for ((var) = STAILQ_FIRST((head));				\
yann@2437
    58
+		(var) && ((tvar) = STAILQ_NEXT((var), field), 1);	\
yann@2437
    59
+		(var) = (tvar))
yann@2437
    60
+
yann@2437
    61
 #define	STAILQ_CONCAT(head1, head2) do {				\
yann@2437
    62
 	if (!STAILQ_EMPTY((head2))) {					\
yann@2437
    63
 		*(head1)->stqh_last = (head2)->stqh_first;		\
yann@2437
    64
@@ -437,11 +463,21 @@
yann@2437
    65
 		(var);							\
yann@2437
    66
 		(var) = ((var)->field.tqe_next))
yann@2437
    67
 
yann@2437
    68
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar)			\
yann@2437
    69
+	for ((var) = TAILQ_FIRST((head));				\
yann@2437
    70
+		(var) && ((tvar) = TAILQ_NEXT((var), field), 1);	\
yann@2437
    71
+		(var) = (tvar))
yann@2437
    72
+
yann@2437
    73
 #define	TAILQ_FOREACH_REVERSE(var, head, headname, field)		\
yann@2437
    74
 	for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last));	\
yann@2437
    75
 		(var);							\
yann@2437
    76
 		(var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
yann@2437
    77
 
yann@2437
    78
+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar)	\
yann@2437
    79
+	for ((var) = TAILQ_LAST((head), headname);			\
yann@2437
    80
+		(var) && ((tvar) = TAILQ_PREV((var), headname, field), 1);	\
yann@2437
    81
+		(var) = (tvar))
yann@2437
    82
+
yann@2437
    83
 #define	TAILQ_CONCAT(head1, head2, field) do {				\
yann@2437
    84
 	if (!TAILQ_EMPTY(head2)) {					\
yann@2437
    85
 		*(head1)->tqh_last = (head2)->tqh_first;		\