|
@@ -0,0 +1,373 @@
|
|
|
|
+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
|
|
|
|
+
|