libbb.h: use inlined sigfillset, sigemptyset, sigisemptyset on uclibc

text    data     bss     dec     hex filename
 875879     493    7584  883956   d7cf4 busybox_old
 875879     493    7584  883956   d7cf4 busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2011-05-12 23:03:18 +02:00
parent 279a7ac04e
commit 89f5bfd6c3
2 changed files with 89 additions and 76 deletions

View File

@ -20,6 +20,12 @@
#include <netdb.h>
#include <setjmp.h>
#include <signal.h>
#if defined __UCLIBC__ /* TODO: and glibc? */
/* use inlined versions of these: */
# define sigfillset(s) __sigfillset(s)
# define sigemptyset(s) __sigemptyset(s)
# define sigisemptyset(s) __sigisemptyset(s)
#endif
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

View File

@ -7,23 +7,6 @@
#ifndef BB_PLATFORM_H
#define BB_PLATFORM_H 1
/* Assume all these functions exist by default. Platforms where it is not
* true will #undef them below.
*/
#define HAVE_CLEARENV 1
#define HAVE_FDATASYNC 1
#define HAVE_DPRINTF 1
#define HAVE_MEMRCHR 1
#define HAVE_MKDTEMP 1
#define HAVE_PTSNAME_R 1
#define HAVE_SETBIT 1
#define HAVE_SIGHANDLER_T 1
#define HAVE_STPCPY 1
#define HAVE_STRCASESTR 1
#define HAVE_STRCHRNUL 1
#define HAVE_STRSEP 1
#define HAVE_STRSIGNAL 1
#define HAVE_VASPRINTF 1
/* Convenience macros to test the version of gcc. */
#undef __GNUC_PREREQ
@ -41,10 +24,6 @@
# endif
#endif
/* Define macros for some gcc attributes. This permits us to use the
macros freely, and know that they will come into play for the
version of gcc in which they are supported. */
#if !__GNUC_PREREQ(2,7)
# ifndef __attribute__
# define __attribute__(x)
@ -98,7 +77,7 @@
#endif
/* -fwhole-program makes all symbols local. The attribute externally_visible
forces a symbol global. */
* forces a symbol global. */
#if __GNUC_PREREQ(4,1)
# define EXTERNALLY_VISIBLE __attribute__(( visibility("default") ))
//__attribute__ ((__externally_visible__))
@ -114,22 +93,14 @@
#endif
/* We use __extension__ in some places to suppress -pedantic warnings
about GCC extensions. This feature didn't work properly before
gcc 2.8. */
* about GCC extensions. This feature didn't work properly before
* gcc 2.8. */
#if !__GNUC_PREREQ(2,8)
# ifndef __extension__
# define __extension__
# endif
#endif
/* gcc-2.95 had no va_copy but only __va_copy. */
#if !__GNUC_PREREQ(3,0)
# include <stdarg.h>
# if !defined va_copy && defined __va_copy
# define va_copy(d,s) __va_copy((d),(s))
# endif
#endif
/* FAST_FUNC is a qualifier which (possibly) makes function call faster
* and/or smaller by using modified ABI. It is usually only needed
* on non-static, busybox internal functions. Recent versions of gcc
@ -153,6 +124,15 @@
# define POP_SAVED_FUNCTION_VISIBILITY
#endif
/* gcc-2.95 had no va_copy but only __va_copy. */
#if !__GNUC_PREREQ(3,0)
# include <stdarg.h>
# if !defined va_copy && defined __va_copy
# define va_copy(d,s) __va_copy((d),(s))
# endif
#endif
/* ---- Endian Detection ------------------------------------ */
#include <limits.h>
@ -220,6 +200,7 @@
# define IF_LITTLE_ENDIAN(...) __VA_ARGS__
#endif
/* ---- Unaligned access ------------------------------------ */
#include <stdint.h>
@ -252,37 +233,9 @@ typedef uint32_t bb__aliased_uint32_t FIX_ALIASING;
} while (0)
#endif
/* ---- Compiler dependent settings ------------------------- */
#if (defined __digital__ && defined __unix__) \
|| defined __APPLE__ \
|| defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__
# undef HAVE_CLEARENV
# undef HAVE_FDATASYNC
# undef HAVE_MNTENT_H
# undef HAVE_PTSNAME_R
# undef HAVE_SYS_STATFS_H
# undef HAVE_SIGHANDLER_T
# undef HAVE_XTABS
# undef HAVE_DPRINTF
#else
# define HAVE_MNTENT_H 1
# define HAVE_SYS_STATFS_H 1
# define HAVE_XTABS 1
#endif
/* ---- Size-saving "small" ints (arch-dependent) ----------- */
/*----- Kernel versioning ------------------------------------*/
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
/* ---- Miscellaneous --------------------------------------- */
#if defined __GLIBC__ || defined __UCLIBC__ \
|| defined __dietlibc__ || defined _NEWLIB_VERSION
# include <features.h>
#endif
/* Size-saving "small" ints (arch-dependent) */
#if defined(i386) || defined(__x86_64__) || defined(__mips__) || defined(__cris__)
/* add other arches which benefit from this... */
typedef signed char smallint;
@ -302,7 +255,34 @@ typedef unsigned smalluint;
# include <stdbool.h>
#endif
/* Try to defeat gcc's alignment of "char message[]"-like data */
/*----- Kernel versioning ------------------------------------*/
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
/* ---- Miscellaneous --------------------------------------- */
#if defined __GLIBC__ \
|| defined __UCLIBC__ \
|| defined __dietlibc__ \
|| defined _NEWLIB_VERSION
# include <features.h>
#endif
/* Define bb_setpgrp */
#if defined(__digital__) && defined(__unix__)
/* use legacy setpgrp(pid_t, pid_t) for now. move to platform.c */
# define bb_setpgrp() do { pid_t __me = getpid(); setpgrp(__me, __me); } while (0)
#else
# define bb_setpgrp() setpgrp()
#endif
/* fdprintf is more readable, we used it before dprintf was standardized */
#include <unistd.h>
#define fdprintf dprintf
/* Useful for defeating gcc's alignment of "char message[]"-like data */
#if 1 /* if needed: !defined(arch1) && !defined(arch2) */
# define ALIGN1 __attribute__((aligned(1)))
# define ALIGN2 __attribute__((aligned(2)))
@ -314,8 +294,7 @@ typedef unsigned smalluint;
# define ALIGN4
#endif
/* uclibc does not implement daemon() for no-mmu systems.
/*
* For 0.9.29 and svn, __ARCH_USE_MMU__ indicates no-mmu reliably.
* For earlier versions there is no reliable way to check if we are building
* for a mmu-less system.
@ -333,12 +312,9 @@ typedef unsigned smalluint;
#endif
#if defined(__digital__) && defined(__unix__)
# include <standards.h>
# include <inttypes.h>
# define PRIu32 "u"
/* use legacy setpgrp(pid_t,pid_t) for now. move to platform.c */
# define bb_setpgrp() do { pid_t __me = getpid(); setpgrp(__me, __me); } while (0)
# if !defined ADJ_OFFSET_SINGLESHOT && defined MOD_CLKA && defined MOD_OFFSET
# define ADJ_OFFSET_SINGLESHOT (MOD_CLKA | MOD_OFFSET)
# endif
@ -351,17 +327,31 @@ typedef unsigned smalluint;
# if !defined ADJ_TICK && defined MOD_CLKB
# define ADJ_TICK MOD_CLKB
# endif
# undef HAVE_STPCPY
#else
# define bb_setpgrp() setpgrp()
#endif
#include <unistd.h>
#define fdprintf dprintf
/* ---- Who misses what? ------------------------------------ */
/* Assume all these functions exist by default. Platforms where it is not
* true will #undef them below.
*/
#define HAVE_CLEARENV 1
#define HAVE_FDATASYNC 1
#define HAVE_DPRINTF 1
#define HAVE_MEMRCHR 1
#define HAVE_MKDTEMP 1
#define HAVE_PTSNAME_R 1
#define HAVE_SETBIT 1
#define HAVE_SIGHANDLER_T 1
#define HAVE_STPCPY 1
#define HAVE_STRCASESTR 1
#define HAVE_STRCHRNUL 1
#define HAVE_STRSEP 1
#define HAVE_STRSIGNAL 1
#define HAVE_VASPRINTF 1
#define HAVE_MNTENT_H 1
#define HAVE_SYS_STATFS_H 1
#define HAVE_XTABS 1
#if defined(__dietlibc__)
# undef HAVE_STRCHRNUL
@ -384,6 +374,23 @@ typedef unsigned smalluint;
# undef HAVE_STRCHRNUL
#endif
#if (defined __digital__ && defined __unix__) \
|| defined __APPLE__ \
|| defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__
# undef HAVE_CLEARENV
# undef HAVE_FDATASYNC
# undef HAVE_MNTENT_H
# undef HAVE_PTSNAME_R
# undef HAVE_SYS_STATFS_H
# undef HAVE_SIGHANDLER_T
# undef HAVE_XTABS
# undef HAVE_DPRINTF
#endif
#if defined(__digital__) && defined(__unix__)
# undef HAVE_STPCPY
#endif
/*
* Now, define prototypes for all the functions defined in platform.c
* These must come after all the HAVE_* macros are defined (or not)