From patchwork Thu Jun 22 21:59:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waldemar Brodkorb X-Patchwork-Id: 779708 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from helium.openadk.org (helium.openadk.org [IPv6:2a00:1828:2000:679::23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wtwVW6CQqz9s03 for ; Fri, 23 Jun 2017 08:00:02 +1000 (AEST) Received: from helium.openadk.org (localhost [IPv6:::1]) by helium.openadk.org (Postfix) with ESMTP id 060C210049; Thu, 22 Jun 2017 23:59:59 +0200 (CEST) X-Original-To: devel@uclibc-ng.org Delivered-To: devel@helium.openadk.org Received: by helium.openadk.org (Postfix, from userid 1000) id 15A4410065; Thu, 22 Jun 2017 23:59:44 +0200 (CEST) Date: Thu, 22 Jun 2017 23:59:43 +0200 From: Waldemar Brodkorb To: "Anthony G. Basile" Message-ID: <20170622215943.GP26922@waldemar-brodkorb.de> References: <20170531234126.28218-1-basile@freeharbor.net> <20170621211633.167845e7@windsurf> <20170621201102.GK26922@waldemar-brodkorb.de> <20170622143702.62eb35f6@windsurf.lan> <8200e4ad-012a-5880-19ec-15ba93f1d8ed@freeharbor.net> <20170622150653.63daa2bd@windsurf.lan> <5d949f3f-4069-4fdb-3e66-4c28151b2280@gentoo.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <5d949f3f-4069-4fdb-3e66-4c28151b2280@gentoo.org> X-Operating-System: Linux 3.16.0-4-amd64 x86_64 User-Agent: Mutt/1.5.23 (2014-03-12) Cc: devel@uclibc-ng.org Subject: Re: [uclibc-ng-devel] [PATCH] include/features.h: add _DEFAULT_SOURCE macro X-BeenThere: devel@uclibc-ng.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: uClibc-ng Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: devel-bounces@uclibc-ng.org Sender: "devel" Hi Thomas, Anthony, Anthony G. Basile wrote, > On 6/22/17 9:06 AM, Thomas Petazzoni wrote: > > Hello, > > > > On Thu, 22 Jun 2017 08:47:06 -0400, Anthony G. Basile wrote: > > > >> Yes, I'm worried about regressions. __FAVOR_BSD is still used in the > >> following: > >> > >> include/setjmp.h > >> include/unistd.h > >> include/signal.h > >> include/features.h > >> include/netinet/udp.h Glibc removed __FAVOR_BSD for a while. I think we should just follow this way. I will add following patch soon. best regards Waldemar From 58a5ba12bffad5916d9897c2870fc483f1db8282 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb 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 Signed-off-by: Waldemar Brodkorb --- 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 # include +# include -# 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 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 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