[Glibc-bsd-commits] r4977 - in trunk/kfreebsd-10/debian: . patches
Robert Millan
rmh at alioth.debian.org
Sun Sep 29 00:16:37 UTC 2013
Author: rmh
Date: 2013-09-29 00:16:36 +0000 (Sun, 29 Sep 2013)
New Revision: 4977
Added:
trunk/kfreebsd-10/debian/patches/userland.diff
Modified:
trunk/kfreebsd-10/debian/changelog
trunk/kfreebsd-10/debian/patches/series
Log:
userland.diff: Import selection of header fixes needed by userland.
Modified: trunk/kfreebsd-10/debian/changelog
===================================================================
--- trunk/kfreebsd-10/debian/changelog 2013-09-28 22:46:23 UTC (rev 4976)
+++ trunk/kfreebsd-10/debian/changelog 2013-09-29 00:16:36 UTC (rev 4977)
@@ -9,6 +9,7 @@
* Properly set CLANG_IS_CC knob according to selected compiler.
* Re-enable -O2.
* Build kfreebsd-headers-\* only on kfreebsd- at arch@.
+ * userland.diff: Import selection of header fixes needed by userland.
[ Steven Chamberlain ]
* Improve repeatability of builds:
Modified: trunk/kfreebsd-10/debian/patches/series
===================================================================
--- trunk/kfreebsd-10/debian/patches/series 2013-09-28 22:46:23 UTC (rev 4976)
+++ trunk/kfreebsd-10/debian/patches/series 2013-09-29 00:16:36 UTC (rev 4977)
@@ -4,6 +4,7 @@
mount_remount.diff
# Other patches that might or might not be mergeable
+userland.diff
001_misc.diff
002_maxpathlen.diff
003_glibc_dev_aicasm.diff
Added: trunk/kfreebsd-10/debian/patches/userland.diff
===================================================================
--- trunk/kfreebsd-10/debian/patches/userland.diff (rev 0)
+++ trunk/kfreebsd-10/debian/patches/userland.diff 2013-09-29 00:16:36 UTC (rev 4977)
@@ -0,0 +1,1086 @@
+
+Staging area for fixes needed by userland.
+
+--- a/sys/ia64/include/_types.h
++++ b/sys/ia64/include/_types.h
+@@ -74,7 +74,9 @@
+ typedef __int32_t __int_least32_t;
+ typedef __int64_t __int_least64_t;
+ typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */
++#ifdef __FreeBSD__
+ typedef __int64_t __register_t;
++#endif
+ typedef __int64_t __segsz_t; /* segment size (in pages) */
+ typedef __uint64_t __size_t; /* sizeof() */
+ typedef __int64_t __ssize_t; /* byte count or error */
+--- a/sys/mips/include/_types.h
++++ b/sys/mips/include/_types.h
+@@ -94,10 +94,14 @@
+ typedef __int32_t __int_least32_t;
+ typedef __int64_t __int_least64_t;
+ #if defined(__mips_n64) || defined(__mips_n32)
++# ifdef __FreeBSD__
+ typedef __int64_t __register_t;
++# endif
+ typedef __int64_t f_register_t;
+ #else
++# ifdef __FreeBSD__
+ typedef __int32_t __register_t;
++# endif
+ typedef __int32_t f_register_t;
+ #endif
+ #ifdef __mips_n64
+--- a/sys/powerpc/include/_types.h
++++ b/sys/powerpc/include/_types.h
+@@ -94,7 +94,9 @@
+ typedef __int64_t __int_least64_t;
+ #ifdef __LP64__
+ typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */
++#ifdef __FreeBSD__
+ typedef __int64_t __register_t;
++#endif
+ typedef __int64_t __segsz_t; /* segment size (in pages) */
+ typedef __uint64_t __size_t; /* sizeof() */
+ typedef __int64_t __ssize_t; /* byte count or error */
+@@ -103,7 +105,9 @@
+ typedef __uint64_t __uintptr_t;
+ #else
+ typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */
++#ifdef __FreeBSD__
+ typedef __int32_t __register_t;
++#endif
+ typedef __int32_t __segsz_t; /* segment size (in pages) */
+ typedef __uint32_t __size_t; /* sizeof() */
+ typedef __int32_t __ssize_t; /* byte count or error */
+--- a/sys/sparc64/include/_types.h
++++ b/sys/sparc64/include/_types.h
+@@ -70,7 +70,9 @@
+ typedef __int32_t __int_least32_t;
+ typedef __int64_t __int_least64_t;
+ typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */
++#ifdef __FreeBSD__
+ typedef __int64_t __register_t;
++#endif
+ typedef __int64_t __segsz_t; /* segment size (in pages) */
+ typedef __uint64_t __size_t; /* sizeof() */
+ typedef __int64_t __ssize_t; /* byte count or error */
+--- a/sys/sys/_timespec.h
++++ b/sys/sys/_timespec.h
+@@ -41,9 +41,14 @@
+ #define _TIME_T_DECLARED
+ #endif
+
++#ifndef __FreeBSD__
++#define __need_timespec
++#include <time.h>
++#else
+ struct timespec {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* and nanoseconds */
+ };
++#endif
+
+ #endif /* !_SYS__TIMESPEC_H_ */
+--- a/sys/sys/_timeval.h
++++ b/sys/sys/_timeval.h
+@@ -41,6 +41,10 @@
+ #define _TIME_T_DECLARED
+ #endif
+
++#ifndef __FreeBSD__
++#define __need_timeval
++#include <bits/time.h>
++#else
+ /*
+ * Structure returned by gettimeofday(2) system call, and used in other calls.
+ */
+@@ -48,5 +52,6 @@
+ time_t tv_sec; /* seconds */
+ suseconds_t tv_usec; /* and microseconds */
+ };
++#endif
+
+ #endif /* !_SYS__TIMEVAL_H_ */
+--- a/sys/sys/_types.h
++++ b/sys/sys/_types.h
+@@ -39,10 +39,19 @@
+ typedef __int64_t __blkcnt_t; /* file block count */
+ typedef __int32_t __clockid_t; /* clock_gettime()... */
+ typedef __uint32_t __fflags_t; /* file flags */
++#if defined(__GLIBC__) && !defined(_KERNEL)
++/* User-selectable types. Leave them to Glibc headers. */
++#else
+ typedef __uint64_t __fsblkcnt_t;
+ typedef __uint64_t __fsfilcnt_t;
++#endif
+ typedef __uint32_t __gid_t;
++#if defined(__GLIBC__) && !defined(_KERNEL)
++/* This divergence is probably accidental, but it can't be fixed now. */
++typedef __uint32_t __id_t;
++#else
+ typedef __int64_t __id_t; /* can hold a gid_t, pid_t, or uid_t */
++#endif
+ typedef __uint32_t __ino_t; /* inode number */
+ typedef long __key_t; /* IPC key (for Sys V IPC) */
+ typedef __int32_t __lwpid_t; /* Thread ID (a.k.a. LWP) */
+@@ -58,7 +67,11 @@
+ typedef __uint8_t __sa_family_t;
+ typedef __uint32_t __socklen_t;
+ typedef long __suseconds_t; /* microseconds (signed) */
++#if defined(__GLIBC__) && !defined(_KERNEL)
++typedef __int32_t __timer_t;
++#else
+ typedef struct __timer *__timer_t; /* timer_gettime()... */
++#endif
+ typedef struct __mq *__mqd_t; /* mq_open()... */
+ typedef __uint32_t __uid_t;
+ typedef unsigned int __useconds_t; /* microseconds (unsigned) */
+@@ -107,9 +120,13 @@
+ * mbstate_t is an opaque object to keep conversion state during multibyte
+ * stream conversions.
+ */
++#if defined(__GLIBC__) && !defined(_KERNEL)
++/* Defined in <wchar.h> */
++#else
+ typedef union {
+ char __mbstate8[128];
+ __int64_t _mbstateL; /* for alignment */
+ } __mbstate_t;
++#endif
+
+ #endif /* !_SYS__TYPES_H_ */
+--- a/sys/sys/elf32.h
++++ b/sys/sys/elf32.h
+@@ -31,15 +31,21 @@
+
+ #include <sys/elf_common.h>
+
++#ifndef __FreeBSD__
++#include <elf.h>
++#endif
++
+ /*
+ * ELF definitions common to all 32-bit architectures.
+ */
+
++#ifdef __FreeBSD__
+ typedef uint32_t Elf32_Addr;
+ typedef uint16_t Elf32_Half;
+ typedef uint32_t Elf32_Off;
+ typedef int32_t Elf32_Sword;
+ typedef uint32_t Elf32_Word;
++#endif
+ typedef uint64_t Elf32_Lword;
+
+ typedef Elf32_Word Elf32_Hashelt;
+@@ -48,6 +54,7 @@
+ typedef Elf32_Word Elf32_Size;
+ typedef Elf32_Sword Elf32_Ssize;
+
++#ifdef __FreeBSD__
+ /*
+ * ELF header.
+ */
+@@ -165,6 +172,8 @@
+ #define ELF32_M_SIZE(info) ((unsigned char)(info))
+ #define ELF32_M_INFO(sym, size) (((sym)<<8)+(unsigned char)(size))
+
++#endif
++
+ /*
+ * Hardware/Software capabilities entry
+ */
+@@ -176,6 +185,7 @@
+ } c_un;
+ } Elf32_Cap;
+
++#ifdef __FreeBSD__
+ /*
+ * Symbol table entries.
+ */
+@@ -234,12 +244,15 @@
+ Elf32_Word vna_name;
+ Elf32_Word vna_next;
+ } Elf32_Vernaux;
++#endif
+
+ typedef Elf32_Half Elf32_Versym;
+
++#ifdef __FreeBSD__
+ typedef struct {
+ Elf32_Half si_boundto; /* direct bindings - symbol bound to */
+ Elf32_Half si_flags; /* per symbol flags */
+ } Elf32_Syminfo;
++#endif
+
+ #endif /* !_SYS_ELF32_H_ */
+--- a/sys/sys/elf64.h
++++ b/sys/sys/elf64.h
+@@ -31,18 +31,26 @@
+
+ #include <sys/elf_common.h>
+
++#ifndef __FreeBSD__
++#include <elf.h>
++#endif
++
+ /*
+ * ELF definitions common to all 64-bit architectures.
+ */
+
++#ifdef __FreeBSD__
+ typedef uint64_t Elf64_Addr;
+ typedef uint16_t Elf64_Half;
+ typedef uint64_t Elf64_Off;
+ typedef int32_t Elf64_Sword;
+ typedef int64_t Elf64_Sxword;
+ typedef uint32_t Elf64_Word;
++#endif
+ typedef uint64_t Elf64_Lword;
++#ifdef __FreeBSD__
+ typedef uint64_t Elf64_Xword;
++#endif
+
+ /*
+ * Types of dynamic symbol hash table bucket and chain elements.
+@@ -57,6 +65,7 @@
+ typedef Elf64_Xword Elf64_Size;
+ typedef Elf64_Sxword Elf64_Ssize;
+
++#ifdef __FreeBSD__
+ /*
+ * ELF header.
+ */
+@@ -172,6 +181,8 @@
+ #define ELF64_M_SIZE(info) ((unsigned char)(info))
+ #define ELF64_M_INFO(sym, size) (((sym)<<8)+(unsigned char)(size))
+
++#endif
++
+ /*
+ * Hardware/Software capabilities entry
+ */
+@@ -183,6 +194,7 @@
+ } c_un;
+ } Elf64_Cap;
+
++#ifdef __FreeBSD__
+ /*
+ * Symbol table entries.
+ */
+@@ -237,12 +249,15 @@
+ Elf64_Word vna_name;
+ Elf64_Word vna_next;
+ } Elf64_Vernaux;
++#endif
+
+ typedef Elf64_Half Elf64_Versym;
+
++#ifdef __FreeBSD__
+ typedef struct {
+ Elf64_Half si_boundto; /* direct bindings - symbol bound to */
+ Elf64_Half si_flags; /* per symbol flags */
+ } Elf64_Syminfo;
++#endif
+
+ #endif /* !_SYS_ELF64_H_ */
+--- a/sys/sys/endian.h
++++ b/sys/sys/endian.h
+@@ -53,6 +53,10 @@
+ #define _UINT64_T_DECLARED
+ #endif
+
++#if !defined(_KERNEL) && defined(__GLIBC__)
++/* Avoid conflicting (but functionally equivalent) definitions below. */
++#include <endian.h>
++#else
+ /*
+ * General byte order swapping functions.
+ */
+@@ -93,6 +97,7 @@
+ #define le32toh(x) bswap32((x))
+ #define le64toh(x) bswap64((x))
+ #endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
++#endif
+
+ /* Alignment-agnostic encode/decode bytestream to/from little/big endian. */
+
+--- a/sys/sys/limits.h
++++ b/sys/sys/limits.h
+@@ -35,6 +35,11 @@
+ #include <sys/cdefs.h>
+ #include <machine/_limits.h>
+
++#ifndef __FreeBSD__
++#include <limits.h>
++#endif
++
++#ifdef __FreeBSD__
+ #define CHAR_BIT __CHAR_BIT /* number of bits in a char */
+
+ #define SCHAR_MAX __SCHAR_MAX /* max value for a signed char */
+@@ -71,6 +76,7 @@
+ #if __POSIX_VISIBLE || __XSI_VISIBLE
+ #define SSIZE_MAX __SSIZE_MAX /* max value for an ssize_t */
+ #endif
++#endif /* 0 */
+
+ #if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
+ #define SIZE_T_MAX __SIZE_T_MAX /* max value for a size_t */
+--- a/sys/sys/param.h
++++ b/sys/sys/param.h
+@@ -40,9 +40,15 @@
+
+ #include <sys/_null.h>
+
++#ifndef __FreeBSD__
++#include <sys/param.h>
++#endif
++
++#ifdef __FreeBSD__
+ #define BSD 199506 /* System version (year & month). */
+-#define BSD4_3 1
+-#define BSD4_4 1
++#define BSD4_3 1
++#define BSD4_4 1
++#endif
+
+ /*
+ * __FreeBSD_version numbers are documented in the Porter's Handbook.
+@@ -95,11 +101,15 @@
+ #include <sys/syslimits.h>
+
+ #define MAXCOMLEN 19 /* max command name remembered */
++#ifdef __FreeBSD__
+ #define MAXINTERP PATH_MAX /* max interpreter file name length */
++#endif
+ #define MAXLOGNAME 33 /* max login name length (incl. NUL) */
+ #define MAXUPRC CHILD_MAX /* max simultaneous processes */
+ #define NCARGS ARG_MAX /* max bytes for an exec function */
++#ifdef __FreeBSD__
+ #define NGROUPS (NGROUPS_MAX+1) /* max number groups */
++#endif
+ #define NOFILE OPEN_MAX /* max open files per process */
+ #define NOGROUP 65535 /* marker for empty group set member */
+ #define MAXHOSTNAMELEN 256 /* max hostname size */
+@@ -136,7 +146,9 @@
+ #ifndef DEV_BSHIFT
+ #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
+ #endif
++#ifdef __FreeBSD__
+ #define DEV_BSIZE (1<<DEV_BSHIFT)
++#endif
+
+ #ifndef BLKDEV_IOSIZE
+ #define BLKDEV_IOSIZE PAGE_SIZE /* default block device I/O size */
+@@ -212,9 +224,11 @@
+ #define PCATCH 0x100 /* OR'd with pri for tsleep to check signals */
+ #define PDROP 0x200 /* OR'd with pri to stop re-entry of interlock mutex */
+
++#ifdef __FreeBSD__
+ #define NZERO 0 /* default "nice" */
+
+ #define NBBY 8 /* number of bits in a byte */
++#endif
+ #define NBPW sizeof(int) /* number of bytes per word (integer) */
+
+ #define CMASK 022 /* default file mask: S_IWGRP|S_IWOTH */
+@@ -260,6 +274,7 @@
+ #define MAXPATHLEN PATH_MAX
+ #define MAXSYMLINKS 32
+
++#ifdef __FreeBSD__
+ /* Bit map related macros. */
+ #define setbit(a,i) (((unsigned char *)(a))[(i)/NBBY] |= 1<<((i)%NBBY))
+ #define clrbit(a,i) (((unsigned char *)(a))[(i)/NBBY] &= ~(1<<((i)%NBBY)))
+@@ -267,6 +282,7 @@
+ (((const unsigned char *)(a))[(i)/NBBY] & (1<<((i)%NBBY)))
+ #define isclr(a,i) \
+ ((((const unsigned char *)(a))[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
++#endif
+
+ /* Macros for counting and rounding. */
+ #ifndef howmany
+@@ -275,9 +291,13 @@
+ #define nitems(x) (sizeof((x)) / sizeof((x)[0]))
+ #define rounddown(x, y) (((x)/(y))*(y))
+ #define rounddown2(x, y) ((x)&(~((y)-1))) /* if y is power of two */
++#ifdef __FreeBSD__
+ #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) /* to any y */
++#endif
+ #define roundup2(x, y) (((x)+((y)-1))&(~((y)-1))) /* if y is powers of two */
++#ifdef __FreeBSD__
+ #define powerof2(x) ((((x)-1)&(x))==0)
++#endif
+
+ /* Macros for min/max. */
+ #define MIN(a,b) (((a)<(b))?(a):(b))
+--- a/sys/sys/queue.h
++++ b/sys/sys/queue.h
+@@ -30,8 +30,12 @@
+ * $FreeBSD$
+ */
+
+-#ifndef _SYS_QUEUE_H_
+-#define _SYS_QUEUE_H_
++#ifndef __SYS_QUEUE_H_
++#define __SYS_QUEUE_H_
++
++#ifndef __FreeBSD__
++#include <sys/queue.h>
++#endif
+
+ #include <sys/cdefs.h>
+
+@@ -166,10 +170,12 @@
+
+ #define SLIST_FIRST(head) ((head)->slh_first)
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define SLIST_FOREACH(var, head, field) \
+ for ((var) = SLIST_FIRST((head)); \
+ (var); \
+ (var) = SLIST_NEXT((var), field))
++#endif
+
+ #define SLIST_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) ? (var) : SLIST_FIRST((head))); \
+@@ -191,6 +197,7 @@
+ ((var) = *(varp)) != NULL; \
+ (varp) = &SLIST_NEXT((var), field))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define SLIST_INIT(head) do { \
+ SLIST_FIRST((head)) = NULL; \
+ } while (0)
+@@ -204,9 +211,11 @@
+ SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
+ SLIST_FIRST((head)) = (elm); \
+ } while (0)
++#endif
+
+ #define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define SLIST_REMOVE(head, elm, type, field) do { \
+ QMD_SAVELINK(oldnext, (elm)->field.sle_next); \
+ if (SLIST_FIRST((head)) == (elm)) { \
+@@ -220,7 +229,9 @@
+ } \
+ TRASHIT(*oldnext); \
+ } while (0)
++#endif
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define SLIST_REMOVE_AFTER(elm, field) do { \
+ SLIST_NEXT(elm, field) = \
+ SLIST_NEXT(SLIST_NEXT(elm, field), field); \
+@@ -229,6 +240,7 @@
+ #define SLIST_REMOVE_HEAD(head, field) do { \
+ SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
+ } while (0)
++#endif
+
+ #define SLIST_SWAP(head1, head2, type) do { \
+ struct type *swap_first = SLIST_FIRST(head1); \
+@@ -256,6 +268,7 @@
+ /*
+ * Singly-linked Tail queue functions.
+ */
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define STAILQ_CONCAT(head1, head2) do { \
+ if (!STAILQ_EMPTY((head2))) { \
+ *(head1)->stqh_last = (head2)->stqh_first; \
+@@ -263,36 +276,44 @@
+ STAILQ_INIT((head2)); \
+ } \
+ } while (0)
++#endif
+
+ #define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
+
+ #define STAILQ_FIRST(head) ((head)->stqh_first)
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define STAILQ_FOREACH(var, head, field) \
+ for((var) = STAILQ_FIRST((head)); \
+ (var); \
+ (var) = STAILQ_NEXT((var), field))
++#endif
+
+ #define STAILQ_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \
+ (var); \
+ (var) = STAILQ_NEXT((var), field))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = STAILQ_FIRST((head)); \
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
++#endif
+
+ #define STAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \
+ for ((var) = ((var) ? (var) : STAILQ_FIRST((head))); \
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define STAILQ_INIT(head) do { \
+ STAILQ_FIRST((head)) = NULL; \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+ } while (0)
++#endif
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
+ if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+@@ -310,6 +331,7 @@
+ *(head)->stqh_last = (elm); \
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ } while (0)
++#endif
+
+ #define STAILQ_LAST(head, type, field) \
+ (STAILQ_EMPTY((head)) ? NULL : \
+@@ -317,6 +339,7 @@
+
+ #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define STAILQ_REMOVE(head, elm, type, field) do { \
+ QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \
+ if (STAILQ_FIRST((head)) == (elm)) { \
+@@ -330,6 +353,7 @@
+ } \
+ TRASHIT(*oldnext); \
+ } while (0)
++#endif
+
+ #define STAILQ_REMOVE_AFTER(head, elm, field) do { \
+ if ((STAILQ_NEXT(elm, field) = \
+@@ -337,11 +361,13 @@
+ (head)->stqh_last = &STAILQ_NEXT((elm), field); \
+ } while (0)
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define STAILQ_REMOVE_HEAD(head, field) do { \
+ if ((STAILQ_FIRST((head)) = \
+ STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
+ (head)->stqh_last = &STAILQ_FIRST((head)); \
+ } while (0)
++#endif
+
+ #define STAILQ_SWAP(head1, head2, type) do { \
+ struct type *swap_first = STAILQ_FIRST(head1); \
+@@ -407,30 +433,37 @@
+
+ #define LIST_FIRST(head) ((head)->lh_first)
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define LIST_FOREACH(var, head, field) \
+ for ((var) = LIST_FIRST((head)); \
+ (var); \
+ (var) = LIST_NEXT((var), field))
++#endif
+
+ #define LIST_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) ? (var) : LIST_FIRST((head))); \
+ (var); \
+ (var) = LIST_NEXT((var), field))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define LIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = LIST_FIRST((head)); \
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
+ (var) = (tvar))
++#endif
+
+ #define LIST_FOREACH_FROM_SAFE(var, head, field, tvar) \
+ for ((var) = ((var) ? (var) : LIST_FIRST((head))); \
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
+ (var) = (tvar))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define LIST_INIT(head) do { \
+ LIST_FIRST((head)) = NULL; \
+ } while (0)
++#endif
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define LIST_INSERT_AFTER(listelm, elm, field) do { \
+ QMD_LIST_CHECK_NEXT(listelm, field); \
+ if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
+@@ -455,6 +488,7 @@
+ LIST_FIRST((head)) = (elm); \
+ (elm)->field.le_prev = &LIST_FIRST((head)); \
+ } while (0)
++#endif
+
+ #define LIST_NEXT(elm, field) ((elm)->field.le_next)
+
+@@ -462,6 +496,7 @@
+ ((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \
+ __containerof((elm)->field.le_prev, struct type, field.le_next))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define LIST_REMOVE(elm, field) do { \
+ QMD_SAVELINK(oldnext, (elm)->field.le_next); \
+ QMD_SAVELINK(oldprev, (elm)->field.le_prev); \
+@@ -474,6 +509,7 @@
+ TRASHIT(*oldnext); \
+ TRASHIT(*oldprev); \
+ } while (0)
++#endif
+
+ #define LIST_SWAP(head1, head2, type, field) do { \
+ struct type *swap_tmp = LIST_FIRST((head1)); \
+@@ -488,22 +524,26 @@
+ /*
+ * Tail queue declarations.
+ */
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define TAILQ_HEAD(name, type) \
+ struct name { \
+ struct type *tqh_first; /* first element */ \
+ struct type **tqh_last; /* addr of last next element */ \
+ TRACEBUF \
+ }
++#endif
+
+ #define TAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).tqh_first, TRACEBUF_INITIALIZER }
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define TAILQ_ENTRY(type) \
+ struct { \
+ struct type *tqe_next; /* next element */ \
+ struct type **tqe_prev; /* address of previous next element */ \
+ TRACEBUF \
+ }
++#endif
+
+ /*
+ * Tail queue functions.
+@@ -539,6 +579,7 @@
+ #define QMD_TAILQ_CHECK_PREV(elm, field)
+ #endif /* (_KERNEL && INVARIANTS) */
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define TAILQ_CONCAT(head1, head2, field) do { \
+ if (!TAILQ_EMPTY(head2)) { \
+ *(head1)->tqh_last = (head2)->tqh_first; \
+@@ -549,51 +590,61 @@
+ QMD_TRACE_HEAD(head2); \
+ } \
+ } while (0)
++#endif
+
+ #define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
+
+ #define TAILQ_FIRST(head) ((head)->tqh_first)
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define TAILQ_FOREACH(var, head, field) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var); \
+ (var) = TAILQ_NEXT((var), field))
++#endif
+
+ #define TAILQ_FOREACH_FROM(var, head, field) \
+ for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \
+ (var); \
+ (var) = TAILQ_NEXT((var), field))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
++#endif
+
+ #define TAILQ_FOREACH_FROM_SAFE(var, head, field, tvar) \
+ for ((var) = ((var) ? (var) : TAILQ_FIRST((head))); \
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var); \
+ (var) = TAILQ_PREV((var), headname, field))
++#endif
+
+ #define TAILQ_FOREACH_REVERSE_FROM(var, head, headname, field) \
+ for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \
+ (var); \
+ (var) = TAILQ_PREV((var), headname, field))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
+ (var) = (tvar))
++#endif
+
+ #define TAILQ_FOREACH_REVERSE_FROM_SAFE(var, head, headname, field, tvar) \
+ for ((var) = ((var) ? (var) : TAILQ_LAST((head), headname)); \
+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
+ (var) = (tvar))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define TAILQ_INIT(head) do { \
+ TAILQ_FIRST((head)) = NULL; \
+ (head)->tqh_last = &TAILQ_FIRST((head)); \
+@@ -647,6 +698,7 @@
+ QMD_TRACE_HEAD(head); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+ } while (0)
++#endif
+
+ #define TAILQ_LAST(head, headname) \
+ (*(((struct headname *)((head)->tqh_last))->tqh_last))
+@@ -656,6 +708,7 @@
+ #define TAILQ_PREV(elm, headname, field) \
+ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
+
++#if !defined(__GLIBC__) || defined(_KERNEL)
+ #define TAILQ_REMOVE(head, elm, field) do { \
+ QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \
+ QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \
+@@ -673,6 +726,7 @@
+ TRASHIT(*oldprev); \
+ QMD_TRACE_ELEM(&(elm)->field); \
+ } while (0)
++#endif
+
+ #define TAILQ_SWAP(head1, head2, type, field) do { \
+ struct type *swap_first = (head1)->tqh_first; \
+--- a/sys/sys/time.h
++++ b/sys/sys/time.h
+@@ -37,10 +37,16 @@
+ #include <sys/types.h>
+ #include <sys/timespec.h>
+
++#ifndef __FreeBSD__
++#include <sys/time.h>
++#endif
++
++#ifdef __FreeBSD__
+ struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+ };
++#endif
+ #define DST_NONE 0 /* not on dst */
+ #define DST_USA 1 /* USA style dst */
+ #define DST_AUST 2 /* Australian style dst */
+@@ -49,7 +55,7 @@
+ #define DST_EET 5 /* Eastern European dst */
+ #define DST_CAN 6 /* Canada */
+
+-#if __BSD_VISIBLE
++#if 1 /* used by sys/devicestat.h and others */
+ struct bintime {
+ time_t sec;
+ uint64_t frac;
+@@ -281,7 +287,7 @@
+
+ #endif /* _KERNEL */
+
+-#ifndef _KERNEL /* NetBSD/OpenBSD compatible interfaces */
++#if 0
+
+ #define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
+ #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+@@ -309,6 +315,7 @@
+ } while (0)
+ #endif
+
++#ifdef __FreeBSD__
+ /*
+ * Names of the interval timers, and structure
+ * defining a timer setting.
+@@ -361,6 +368,8 @@
+ #define CPUCLOCK_WHICH_TID 1
+ #endif
+
++#endif
++
+ #ifdef _KERNEL
+
+ /*
+@@ -472,6 +481,7 @@
+ #include <sys/cdefs.h>
+ #include <sys/select.h>
+
++#if 0
+ __BEGIN_DECLS
+ int setitimer(int, const struct itimerval *, struct itimerval *);
+ int utimes(const char *, const struct timeval *);
+@@ -491,6 +501,7 @@
+ #endif
+
+ __END_DECLS
++#endif
+
+ #endif /* !_KERNEL */
+
+--- a/sys/sys/timespec.h
++++ b/sys/sys/timespec.h
+@@ -37,7 +37,9 @@
+ #include <sys/cdefs.h>
+ #include <sys/_timespec.h>
+
+-#if __BSD_VISIBLE
++#ifndef __FreeBSD__
++#include <sys/time.h>
++#else
+ #define TIMEVAL_TO_TIMESPEC(tv, ts) \
+ do { \
+ (ts)->tv_sec = (tv)->tv_sec; \
+@@ -51,6 +53,7 @@
+
+ #endif /* __BSD_VISIBLE */
+
++#ifdef __FreeBSD__
+ /*
+ * Structure defined by POSIX.1b to be like a itimerval, but with
+ * timespecs. Used in the timer_*() system calls.
+@@ -59,5 +62,6 @@
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
++#endif
+
+ #endif /* _SYS_TIMESPEC_H_ */
+--- a/sys/sys/types.h
++++ b/sys/sys/types.h
+@@ -44,7 +44,21 @@
+ #include <machine/endian.h>
+ #include <sys/_types.h>
+
++#ifdef __FreeBSD__
+ #include <sys/_pthreadtypes.h>
++#endif
++
++#ifndef __FreeBSD__
++/* Allow conflicting declarations in glibc <sys/types.h> to override us. */
++#include <sys/types.h>
++#define _CLOCK_T_DECLARED
++#define _FSBLKCNT_T_DECLARED
++#define _ID_T_DECLARED
++#define _TIME_T_DECLARED
++#define _TIMER_T_DECLARED
++#define _MQD_T_DECLARED
++#define _INO_T_DECLARED
++#endif
+
+ #if __BSD_VISIBLE
+ typedef unsigned char u_char;
+@@ -179,7 +193,9 @@
+ #define _PID_T_DECLARED
+ #endif
+
++#ifdef __FreeBSD__
+ typedef __register_t register_t;
++#endif
+
+ #ifndef _RLIM_T_DECLARED
+ typedef __rlim_t rlim_t; /* resource limit */
+@@ -285,10 +301,10 @@
+ * The following are all things that really shouldn't exist in this header,
+ * since its purpose is to provide typedefs, not miscellaneous doodads.
+ */
+-#if __BSD_VISIBLE
+
+ #include <sys/select.h>
+
++#ifdef __FreeBSD__
+ /*
+ * minor() gives a cookie instead of an index since we don't want to
+ * change the meanings of bits 0-15 or waste time and space shifting
+@@ -303,7 +319,7 @@
+ * <stdio.h> to give broken programs a better chance of working with
+ * 64-bit off_t's.
+ */
+-#ifndef _KERNEL
++#if 0
+ __BEGIN_DECLS
+ #ifndef _FTRUNCATE_DECLARED
+ #define _FTRUNCATE_DECLARED
+--- a/sys/sys/_sigset.h
++++ b/sys/sys/_sigset.h
+@@ -48,9 +48,11 @@
+ #define _SIG_BIT(sig) (1 << (_SIG_IDX(sig) & 31))
+ #define _SIG_VALID(sig) ((sig) <= _SIG_MAXSIG && (sig) > 0)
+
++#ifdef __FreeBSD__
+ typedef struct __sigset {
+ __uint32_t __bits[_SIG_WORDS];
+ } __sigset_t;
++#endif
+
+ #if defined(_KERNEL) && defined(COMPAT_43)
+ typedef unsigned int osigset_t;
+--- a/sys/sys/socket.h
++++ b/sys/sys/socket.h
+@@ -38,6 +38,8 @@
+ #include <sys/_iovec.h>
+ #include <machine/_align.h>
+
++#ifdef __FreeBSD__
++
+ /*
+ * Definitions related to sockets: types, address families, options.
+ */
+@@ -360,6 +362,10 @@
+
+ #define PF_MAX AF_MAX
+
++#endif /* __BSD_VISIBLE */
++#endif /* 0 */
++
++#if __BSD_VISIBLE
+ /*
+ * Definitions for network related sysctl, CTL_NET.
+ *
+@@ -388,6 +394,8 @@
+
+ #endif /* __BSD_VISIBLE */
+
++#ifdef __FreeBSD__
++
+ /*
+ * Maximum queue length specifiable by listen.
+ */
+@@ -661,5 +669,6 @@
+
+ #endif
+
++#endif
+
+ #endif /* !_SYS_SOCKET_H_ */
+--- a/sys/sys/_iovec.h
++++ b/sys/sys/_iovec.h
+@@ -40,9 +40,13 @@
+ #define _SIZE_T_DECLARED
+ #endif
+
++#ifndef __FreeBSD__
++#include <sys/uio.h>
++#else
+ struct iovec {
+ void *iov_base; /* Base address. */
+ size_t iov_len; /* Length. */
+ };
++#endif
+
+ #endif /* !_SYS__IOVEC_H_ */
+--- a/sys/x86/include/_types.h
++++ b/sys/x86/include/_types.h
+@@ -81,7 +81,10 @@
+ typedef __int64_t __intfptr_t;
+ typedef __int64_t __intptr_t;
+ #else
++#ifdef __FreeBSD__
++/* This divergence is probably accidental, but it can't be fixed now. */
+ typedef unsigned long __clock_t;
++#endif
+ typedef __int32_t __critical_t;
+ typedef long double __double_t;
+ typedef long double __float_t;
+@@ -99,11 +102,15 @@
+ typedef __int64_t __int_least64_t;
+ #ifdef __LP64__
+ typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */
++#ifdef __FreeBSD__
+ typedef __int64_t __register_t;
++#endif
+ typedef __int64_t __segsz_t; /* segment size (in pages) */
+ typedef __uint64_t __size_t; /* sizeof() */
+ typedef __int64_t __ssize_t; /* byte count or error */
++# ifdef __FreeBSD__
+ typedef __int64_t __time_t; /* time()... */
++# endif
+ typedef __uint64_t __uintfptr_t;
+ typedef __uint64_t __uintptr_t;
+ #else
+@@ -112,7 +119,9 @@
+ typedef __int32_t __segsz_t;
+ typedef __uint32_t __size_t;
+ typedef __int32_t __ssize_t;
++# ifdef __FreeBSD__
+ typedef __int32_t __time_t;
++# endif
+ typedef __uint32_t __uintfptr_t;
+ typedef __uint32_t __uintptr_t;
+ #endif
+--- a/sys/x86/include/signal.h
++++ b/sys/x86/include/signal.h
+@@ -46,9 +46,15 @@
+ #endif
+
+ #ifdef __i386__
++
++#ifndef __FreeBSD__
++#define __need_sig_atomic_t
++#include <signal.h>
++#else
+ typedef int sig_atomic_t;
++#endif
+
+-#if __BSD_VISIBLE
++#ifdef __FreeBSD__
+ struct sigcontext {
+ struct __sigset sc_mask; /* signal mask to restore */
+ int sc_onstack; /* sigstack state to restore */
+@@ -100,9 +106,15 @@
+ #endif /* __i386__ */
+
+ #ifdef __amd64__
++
++#ifndef __FreeBSD__
++#define __need_sig_atomic_t
++#include <signal.h>
++#else
+ typedef long sig_atomic_t;
++#endif
+
+-#if __BSD_VISIBLE
++#ifdef __FreeBSD__
+ /*
+ * Information pushed on stack when a signal is delivered.
+ * This is used by the kernel to restore state following
+--- a/sys/x86/include/endian.h
++++ b/sys/x86/include/endian.h
+@@ -56,7 +56,9 @@
+ * Deprecated variants that don't have enough underscores to be useful in more
+ * strict namespaces.
+ */
+-#if __BSD_VISIBLE
++#ifndef __FreeBSD__
++#include <endian.h>
++#else
+ #define LITTLE_ENDIAN _LITTLE_ENDIAN
+ #define BIG_ENDIAN _BIG_ENDIAN
+ #define PDP_ENDIAN _PDP_ENDIAN
+--- a/sys/x86/include/stdarg.h
++++ b/sys/x86/include/stdarg.h
+@@ -34,6 +34,8 @@
+ #include <sys/cdefs.h>
+ #include <sys/_types.h>
+
++#ifdef __FreeBSD__
++
+ #ifndef _VA_LIST_DECLARED
+ #define _VA_LIST_DECLARED
+ typedef __va_list va_list;
+@@ -72,4 +74,6 @@
+ #error this file needs to be ported to your compiler
+ #endif
+
++#endif
++
+ #endif /* !_MACHINE_STDARG_H_ */
More information about the Glibc-bsd-commits
mailing list