FreeBSD Bugzilla – Attachment 202853 Details for
Bug 236398
exp-run request for differential D19500
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
diff (text/plain), 4.79 KB, created by
Mark Johnston
on 2019-03-14 13:47:34 UTC
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Mark Johnston
Created:
2019-03-14 13:47:34 UTC
Size:
4.79 KB
patch
obsolete
>commit 534f5f7b9a976803607926927888e0ffd7367db3 >Author: Mark Johnston <markjdb@gmail.com> >Date: Thu Mar 7 15:43:23 2019 -0500 > > Add endian.h to LHDRS. > > Many applications expect to be able to include <endian.h> so this is a > compatibility sore. Just make a symlink, like OpenBSD does. NetBSD > uses a stub header which includes sys/endian.h, but I don't see a good > reason for that. We use symlinks for lots of headers today. > >diff --git a/include/Makefile b/include/Makefile >index d1b000cf8a8e..3dbbc591fb03 100644 >--- a/include/Makefile >+++ b/include/Makefile >@@ -12,8 +12,8 @@ SUBDIR= arpa protocols rpcsvc rpc xlocale > SUBDIR_PARALLEL= > INCS= a.out.h ar.h assert.h bitstring.h complex.h cpio.h _ctype.h ctype.h \ > db.h \ >- dirent.h dlfcn.h elf.h elf-hints.h err.h fmtmsg.h fnmatch.h fstab.h \ >- fts.h ftw.h getopt.h glob.h grp.h \ >+ dirent.h dlfcn.h elf.h elf-hints.h endian.h err.h fmtmsg.h fnmatch.h \ >+ fstab.h fts.h ftw.h getopt.h glob.h grp.h \ > ieeefp.h ifaddrs.h \ > inttypes.h iso646.h kenv.h langinfo.h libgen.h limits.h link.h \ > locale.h malloc.h malloc_np.h memory.h monetary.h mpool.h mqueue.h \ >diff --git a/include/endian.h b/include/endian.h >new file mode 100644 >index 000000000000..49ab540c2ec5 >--- /dev/null >+++ b/include/endian.h >@@ -0,0 +1,48 @@ >+/*- >+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD >+ * >+ * Copyright (c) 2019 The FreeBSD Foundation >+ * >+ * This software was developed by Mark Johnston under sponsorship from >+ * the FreeBSD Foundation. >+ * >+ * 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. >+ * >+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. >+ */ >+ >+#ifndef _ENDIAN_H_ >+#define _ENDIAN_H_ >+ >+#include <sys/endian.h> >+ >+/* >+ * Avoid polluting the namespace. Consumers can include sys/endian.h >+ * directly if they want the bswap*() macros. >+ */ >+#undef bswap16 >+#undef bswap32 >+#undef bswap64 >+ >+#define __BYTE_ORDER _BYTE_ORDER >+#define __BIG_ENDIAN _BIG_ENDIAN >+#define __LITTLE_ENDIAN _LITTLE_ENDIAN >+ >+#endif >diff --git a/sys/sys/endian.h b/sys/sys/endian.h >index 3cef6130cd15..b2be4bf843de 100644 >--- a/sys/sys/endian.h >+++ b/sys/sys/endian.h >@@ -67,16 +67,16 @@ typedef __uint64_t uint64_t; > * endian to host byte order functions as detailed in byteorder(9). > */ > #if _BYTE_ORDER == _LITTLE_ENDIAN >-#define htobe16(x) bswap16((x)) >-#define htobe32(x) bswap32((x)) >-#define htobe64(x) bswap64((x)) >+#define htobe16(x) __bswap16((x)) >+#define htobe32(x) __bswap32((x)) >+#define htobe64(x) __bswap64((x)) > #define htole16(x) ((uint16_t)(x)) > #define htole32(x) ((uint32_t)(x)) > #define htole64(x) ((uint64_t)(x)) > >-#define be16toh(x) bswap16((x)) >-#define be32toh(x) bswap32((x)) >-#define be64toh(x) bswap64((x)) >+#define be16toh(x) __bswap16((x)) >+#define be32toh(x) __bswap32((x)) >+#define be64toh(x) __bswap64((x)) > #define le16toh(x) ((uint16_t)(x)) > #define le32toh(x) ((uint32_t)(x)) > #define le64toh(x) ((uint64_t)(x)) >@@ -84,16 +84,16 @@ typedef __uint64_t uint64_t; > #define htobe16(x) ((uint16_t)(x)) > #define htobe32(x) ((uint32_t)(x)) > #define htobe64(x) ((uint64_t)(x)) >-#define htole16(x) bswap16((x)) >-#define htole32(x) bswap32((x)) >-#define htole64(x) bswap64((x)) >+#define htole16(x) __bswap16((x)) >+#define htole32(x) __bswap32((x)) >+#define htole64(x) __bswap64((x)) > > #define be16toh(x) ((uint16_t)(x)) > #define be32toh(x) ((uint32_t)(x)) > #define be64toh(x) ((uint64_t)(x)) >-#define le16toh(x) bswap16((x)) >-#define le32toh(x) bswap32((x)) >-#define le64toh(x) bswap64((x)) >+#define le16toh(x) __bswap16((x)) >+#define le32toh(x) __bswap32((x)) >+#define le64toh(x) __bswap64((x)) > #endif /* _BYTE_ORDER == _LITTLE_ENDIAN */ > > /* Alignment-agnostic encode/decode bytestream to/from little/big endian. */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 236398
:
202723
| 202853