kumquat-buildroot/package/uclibc/0001-remove-__FAVOR_BSD.patch

374 lines
10 KiB
Diff
Raw Normal View History

From 58a5ba12bffad5916d9897c2870fc483f1db8282 Mon Sep 17 00:00:00 2001
From: Waldemar Brodkorb <wbx@openadk.org>
Date: Thu, 22 Jun 2017 22:20:20 +0200
Subject: [PATCH] remove __FAVOR_BSD
Remove __FAVOR_BSD and sync with GNU C library
Some issues compiling knock application fixed.
Reported-By: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
include/features.h | 10 ----
include/netinet/tcp.h | 123 ++++++++++++++++++++++++++------------------------
include/netinet/udp.h | 33 +++++++-------
include/setjmp.h | 10 +---
include/signal.h | 18 ++------
include/unistd.h | 30 ++----------
6 files changed, 88 insertions(+), 136 deletions(-)
diff --git a/include/features.h b/include/features.h
index 3a99593..7dc913f 100644
--- a/include/features.h
+++ b/include/features.h
@@ -78,7 +78,6 @@
__USE_GNU Define GNU extensions.
__USE_REENTRANT Define reentrant/thread-safe *_r functions.
__USE_FORTIFY_LEVEL Additional security measures used, according to level.
- __FAVOR_BSD Favor 4.3BSD things in cases of conflict.
The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
defined by this file unconditionally. `__GNU_LIBRARY__' is provided
@@ -115,7 +114,6 @@
#undef __USE_GNU
#undef __USE_REENTRANT
#undef __USE_FORTIFY_LEVEL
-#undef __FAVOR_BSD
#undef __KERNEL_STRICT_NAMES
/* Suppress kernel-name space pollution unless user expressedly asks
@@ -155,14 +153,6 @@
# define _DEFAULT_SOURCE 1
#endif
-/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */
-#if defined _BSD_SOURCE && \
- !(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \
- defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \
- defined _GNU_SOURCE || defined _SVID_SOURCE)
-# define __FAVOR_BSD 1
-#endif
-
/* If _GNU_SOURCE was defined by the user, turn on all the other features. */
#ifdef _GNU_SOURCE
# undef _ISOC99_SOURCE
diff --git a/include/netinet/tcp.h b/include/netinet/tcp.h
index 04032bb..ade01cd 100644
--- a/include/netinet/tcp.h
+++ b/include/netinet/tcp.h
@@ -65,75 +65,78 @@
#ifdef __USE_MISC
# include <sys/types.h>
# include <sys/socket.h>
+# include <stdint.h>
-# ifdef __FAVOR_BSD
-typedef u_int32_t tcp_seq;
+typedef uint32_t tcp_seq;
/*
* TCP header.
* Per RFC 793, September, 1981.
*/
struct tcphdr
{
- u_int16_t th_sport; /* source port */
- u_int16_t th_dport; /* destination port */
- tcp_seq th_seq; /* sequence number */
- tcp_seq th_ack; /* acknowledgement number */
-# if __BYTE_ORDER == __LITTLE_ENDIAN
- u_int8_t th_x2:4; /* (unused) */
- u_int8_t th_off:4; /* data offset */
-# endif
-# if __BYTE_ORDER == __BIG_ENDIAN
- u_int8_t th_off:4; /* data offset */
- u_int8_t th_x2:4; /* (unused) */
-# endif
- u_int8_t th_flags;
-# define TH_FIN 0x01
-# define TH_SYN 0x02
-# define TH_RST 0x04
-# define TH_PUSH 0x08
-# define TH_ACK 0x10
-# define TH_URG 0x20
- u_int16_t th_win; /* window */
- u_int16_t th_sum; /* checksum */
- u_int16_t th_urp; /* urgent pointer */
+ __extension__ union
+ {
+ struct
+ {
+ uint16_t th_sport; /* source port */
+ uint16_t th_dport; /* destination port */
+ tcp_seq th_seq; /* sequence number */
+ tcp_seq th_ack; /* acknowledgement number */
+# if __BYTE_ORDER == __LITTLE_ENDIAN
+ uint8_t th_x2:4; /* (unused) */
+ uint8_t th_off:4; /* data offset */
+# endif
+# if __BYTE_ORDER == __BIG_ENDIAN
+ uint8_t th_off:4; /* data offset */
+ uint8_t th_x2:4; /* (unused) */
+# endif
+ uint8_t th_flags;
+# define TH_FIN 0x01
+# define TH_SYN 0x02
+# define TH_RST 0x04
+# define TH_PUSH 0x08
+# define TH_ACK 0x10
+# define TH_URG 0x20
+ uint16_t th_win; /* window */
+ uint16_t th_sum; /* checksum */
+ uint16_t th_urp; /* urgent pointer */
+ };
+ struct
+ {
+ uint16_t source;
+ uint16_t dest;
+ uint32_t seq;
+ uint32_t ack_seq;
+# if __BYTE_ORDER == __LITTLE_ENDIAN
+ uint16_t res1:4;
+ uint16_t doff:4;
+ uint16_t fin:1;
+ uint16_t syn:1;
+ uint16_t rst:1;
+ uint16_t psh:1;
+ uint16_t ack:1;
+ uint16_t urg:1;
+ uint16_t res2:2;
+# elif __BYTE_ORDER == __BIG_ENDIAN
+ uint16_t doff:4;
+ uint16_t res1:4;
+ uint16_t res2:2;
+ uint16_t urg:1;
+ uint16_t ack:1;
+ uint16_t psh:1;
+ uint16_t rst:1;
+ uint16_t syn:1;
+ uint16_t fin:1;
+# else
+# error "Adjust your <bits/endian.h> defines"
+# endif
+ uint16_t window;
+ uint16_t check;
+ uint16_t urg_ptr;
+ };
+ };
};
-# else /* !__FAVOR_BSD */
-struct tcphdr
- {
- u_int16_t source;
- u_int16_t dest;
- u_int32_t seq;
- u_int32_t ack_seq;
-# if __BYTE_ORDER == __LITTLE_ENDIAN
- u_int16_t res1:4;
- u_int16_t doff:4;
- u_int16_t fin:1;
- u_int16_t syn:1;
- u_int16_t rst:1;
- u_int16_t psh:1;
- u_int16_t ack:1;
- u_int16_t urg:1;
- u_int16_t res2:2;
-# elif __BYTE_ORDER == __BIG_ENDIAN
- u_int16_t doff:4;
- u_int16_t res1:4;
- u_int16_t res2:2;
- u_int16_t urg:1;
- u_int16_t ack:1;
- u_int16_t psh:1;
- u_int16_t rst:1;
- u_int16_t syn:1;
- u_int16_t fin:1;
-# else
-# error "Adjust your <bits/endian.h> defines"
-# endif
- u_int16_t window;
- u_int16_t check;
- u_int16_t urg_ptr;
-};
-# endif /* __FAVOR_BSD */
-
enum
{
TCP_ESTABLISHED = 1,
diff --git a/include/netinet/udp.h b/include/netinet/udp.h
index 7d49768..ac6f234 100644
--- a/include/netinet/udp.h
+++ b/include/netinet/udp.h
@@ -52,27 +52,28 @@
/* UDP header as specified by RFC 768, August 1980. */
-#ifdef __FAVOR_BSD
struct udphdr
{
- u_int16_t uh_sport; /* source port */
- u_int16_t uh_dport; /* destination port */
- u_int16_t uh_ulen; /* udp length */
- u_int16_t uh_sum; /* udp checksum */
+ __extension__ union
+ {
+ struct
+ {
+ uint16_t uh_sport; /* source port */
+ uint16_t uh_dport; /* destination port */
+ uint16_t uh_ulen; /* udp length */
+ uint16_t uh_sum; /* udp checksum */
+ };
+ struct
+ {
+ uint16_t source;
+ uint16_t dest;
+ uint16_t len;
+ uint16_t check;
+ };
+ };
};
-#else
-
-struct udphdr
-{
- u_int16_t source;
- u_int16_t dest;
- u_int16_t len;
- u_int16_t check;
-};
-#endif
-
/* UDP socket options */
#define UDP_CORK 1 /* Never send partially complete segments. */
#define UDP_ENCAP 100 /* Set the socket to accept
diff --git a/include/setjmp.h b/include/setjmp.h
index 71c1d35..27cac95 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -59,21 +59,13 @@ __END_NAMESPACE_STD
extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask)
__THROWNL;
-#ifndef __FAVOR_BSD
/* Store the calling environment in ENV, not saving the signal mask.
Return 0. */
extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL;
/* Do not save the signal mask. This is equivalent to the `_setjmp'
BSD function. */
-# define setjmp(env) _setjmp (env)
-#else
-/* We are in 4.3 BSD-compatibility mode in which `setjmp'
- saves the signal mask like `sigsetjmp (ENV, 1)'. We have to
- define a macro since ISO C says `setjmp' is one. */
-# define setjmp(env) setjmp (env)
-#endif /* Favor BSD. */
-
+#define setjmp(env) _setjmp (env)
__BEGIN_NAMESPACE_STD
diff --git a/include/signal.h b/include/signal.h
index 38292a7..d2d5e4a 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -191,27 +191,15 @@ extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
/* The `sigpause' function has two different interfaces. The original
BSD definition defines the argument as a mask of the signal, while
the more modern interface in X/Open defines it as the signal
- number. We go with the BSD version unless the user explicitly
- selects the X/Open version.
+ number. We go with the X/Open version.
This function is a cancellation point and therefore not marked with
__THROW. */
-/*extern int __sigpause (int __sig_or_mask, int __is_sig);*/
-
-#ifdef __FAVOR_BSD
-/* Set the mask of blocked signals to MASK,
- wait for a signal to arrive, and then restore the mask. */
-/*extern int sigpause (int __mask) __THROW __attribute_deprecated__;
-# define sigpause(mask) __sigpause ((mask), 0)*/
-/* uClibc note: BSD sigpause is available as __bsd_sigpause.
- * It is intentionally not prototyped */
-#else
-# ifdef __USE_XOPEN
+
+# ifdef __USE_XOPEN_EXTENDED
/* Remove a signal from the signal mask and suspend the process. */
extern int sigpause(int __sig);
-/*# define sigpause(sig) __sigpause ((sig), 1)*/
# endif
-#endif
#endif /* __UCLIBC_SUSV4_LEGACY__ */
#if 0 /*def __USE_BSD*/
diff --git a/include/unistd.h b/include/unistd.h
index 8e4daf6..f48ce21 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -673,17 +673,8 @@ libc_hidden_proto(getpid)
/* Get the process ID of the calling process's parent. */
extern __pid_t getppid (void) __THROW;
-/* Get the process group ID of the calling process.
- This function is different on old BSD. */
-#ifndef __FAVOR_BSD
+/* Get the process group ID of the calling process. */
extern __pid_t getpgrp (void) __THROW;
-#else
-# ifdef __REDIRECT_NTH
-extern __pid_t __REDIRECT_NTH (getpgrp, (__pid_t __pid), __getpgid);
-# else
-# define getpgrp __getpgid
-# endif
-#endif
/* Get the process group ID of process PID. */
extern __pid_t __getpgid (__pid_t __pid) __THROW;
@@ -698,7 +689,7 @@ extern __pid_t getpgid (__pid_t __pid) __THROW;
extern int setpgid (__pid_t __pid, __pid_t __pgid) __THROW;
libc_hidden_proto(setpgid)
-#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
/* Both System V and BSD have `setpgrp' functions, but with different
calling conventions. The BSD function is the same as POSIX.1 `setpgid'
(above). The System V function takes no arguments and puts the calling
@@ -706,26 +697,13 @@ libc_hidden_proto(setpgid)
New programs should always use `setpgid' instead.
- The default in GNU is to provide the System V function. The BSD
- function is available under -D_BSD_SOURCE. */
-
-# ifndef __FAVOR_BSD
+ GNU provides the POSIX.1 function. */
/* Set the process group ID of the calling process to its own PID.
This is exactly the same as `setpgid (0, 0)'. */
extern int setpgrp (void) __THROW;
-# else
-
-/* Another name for `setpgid' (above). */
-# ifdef __REDIRECT_NTH
-extern int __REDIRECT_NTH (setpgrp, (__pid_t __pid, __pid_t __pgrp), setpgid);
-# else
-# define setpgrp setpgid
-# endif
-
-# endif /* Favor BSD. */
-#endif /* Use SVID or BSD. */
+#endif /* Use misc or X/Open. */
/* Create a new session with the calling process as its leader.
The process group IDs of the session and the calling process
--
2.1.4