binutils/binutils: do not fwd declare struct stat (2.22).
For canadian cross to host i686-mingw32 fwd declaring
struct stat is not possible.
Instead #include <sys/stat.h>
Signed-off-by: Titus von Boxberg <titus@v9g.de>
Message-Id: <417a15d4277913841ddd.1353100974@tschetwerikow.boxberg.lan>
Patchwork-Id: 199733
1 Original patch from: gentoo/src/patchsets/glibc/2.9/1010_all_glibc-queue-header-updates.patch
3 -= BEGIN original header =-
4 grab some updates from FreeBSD
6 http://bugs.gentoo.org/201979
8 -= END original header =-
10 diff -durN glibc-2_9.orig/misc/sys/queue.h glibc-2_9/misc/sys/queue.h
11 --- glibc-2_9.orig/misc/sys/queue.h 2008-03-05 06:50:30.000000000 +0100
12 +++ glibc-2_9/misc/sys/queue.h 2009-02-02 22:00:48.000000000 +0100
15 (var) = ((var)->field.le_next))
17 +#define LIST_FOREACH_SAFE(var, head, field, tvar) \
18 + for ((var) = LIST_FIRST((head)); \
19 + (var) && ((tvar) = LIST_NEXT((var), field), 1); \
23 * List access methods.
26 #define SLIST_FOREACH(var, head, field) \
27 for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
29 +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
30 + for ((var) = SLIST_FIRST((head)); \
31 + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
34 +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
35 + for ((varp) = &SLIST_FIRST((head)); \
36 + ((var) = *(varp)) != NULL; \
37 + (varp) = &SLIST_NEXT((var), field))
40 * Singly-linked List access methods.
43 (head)->stqh_last = &(elm)->field.stqe_next; \
44 } while (/*CONSTCOND*/0)
46 +#define STAILQ_LAST(head, type, field) \
47 + (STAILQ_EMPTY((head)) ? \
49 + ((struct type *)(void *) \
50 + ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
52 #define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
53 if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
54 (head)->stqh_last = &(elm)->field.stqe_next; \
56 #define STAILQ_FIRST(head) ((head)->stqh_first)
57 #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
59 +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
60 + for ((var) = STAILQ_FIRST((head)); \
61 + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
66 * Simple queue definitions.
69 (var) = ((var)->field.tqe_next))
71 +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
72 + for ((var) = TAILQ_FIRST((head)); \
73 + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
76 #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
77 for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \
79 (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
81 +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
82 + for ((var) = TAILQ_LAST((head), headname); \
83 + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
87 #define TAILQ_CONCAT(head1, head2, field) do { \
88 if (!TAILQ_EMPTY(head2)) { \
89 *(head1)->tqh_last = (head2)->tqh_first; \