1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- Feeble attempt to document the horde of #defines we deal with.
- Editors, please make your descriptions short but informative.
- __BEGIN_DECLS, __END_DECLS
- Defined to either empty or 'extern "C" {' and '}' if included by C++.
- __USE_GNU, __USE_BSD, __USE_XOPEN[2K], __USE_SVID, __USE_POSIX...
- If defined, user program which included us requests compat additions
- from relevant standard or Unix flavor. See features.h for full list.
- __USE_FILE_OFFSET64
- __USE_LARGEFILE[64]
- _LARGEFILE[64]_SOURCE
- _FILE_OFFSET_BITS
- ???
- __THROW
- Function annotation "I do not throw anything".
- __NTH(func(params))
- Function annotation "I do not throw anything".
- Needed for situatuons when it's unclear on what side of "func(params)"
- the "throw()" or "attribute((nothrow))" should eventually appear.
- Messy, eh?
- return_type __REDIRECT(name, (params), alias)
- declare alias to "name(params)"
- return_type __REDIRECT_NTH(name, (params), alias)
- declare alias to "name(params) __THROW"
- __BIG_ENDIAN 4321
- __LITTLE_ENDIAN 1234
- Should be always as shown. __PDP_ENDIAN is historic, ignore?
- __BYTE_ORDER, __FLOAT_WORD_ORDER
- Should be defined to __BIG_ENDIAN or __LITTLE_ENDIAN.
- Usage: "#if __BYTE_ORDER == __LITTLE_ENDIAN ..."
- __USE_BSD adds versions without leading "__" for above four defines.
- _BIG_ENDIAN, __BIG_ENDIAN__
- _LITTLE_ENDIAN, __LITTLE_ENDIAN__
- Defined (to what?) by gcc for some architectures to indicate endianness.
- Seems that the fact of defined-ness is an indicator, not the value.
- __USE_EXTERN_INLINES
- If defined, headers will supply some function as inlines.
- uclibc itself is built with this option off and provides
- out-of-line version of every inlined function in case user program
- calls it instead of using an inline.
- _EXTERN_INLINE
- If not defined by user prior to #include, will be defined to
- "extern inline" or equivalent. IOW, if user defines it prior
- #include, it replaces "extern __inline" string in inline definitions
- (those enabled by __USE_EXTERN_INLINES) with something else.
- A few uclibc .c files use it to create non-inlined functions
- by defining it to "".
- __extern_inline
- Defined to "extern inline", modulo gcc/C standard deviations.
- Can't be used by user to play tricks as with _EXTERN_INLINE.
- internal_function
- Used to modify function's calling convention, if "standard" one
- is suboptimal. Examples:
- int func(params) internal_function;
- int internal_function func(params) { body }
- _LIBC
- Defined only at libc build time. It is physically deleted
- from the headers (using unifdef tool) in installed headers ("make install").
- __UCLIBC_XXX
- uclibc-internal and uclibc-specific defines. In particular:
- __UCLIBC_HAS_XXX__, __UCLIBC_HAVE_XXX__
- __UCLIBC_HAS_XXX__ are booleans (defined/undefined), defined in
- uClibc_config.h and generated from uclibc .config file.
- __UCLIBC_HAVE_XXX__ are booleans from bits/uClibc_arch_features.h
- (there are more __UCLIBC_XXX defines there)
- __LDBL_COMPAT
- Never defined, TODO: remove?
- __SSP_ALL__
- All functions, even small ones, have stack smashing protection
- prologue enabled.
|