mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 15:20:10 +00:00
a5a0310d8e
1997-09-30 18:03 Ulrich Drepper <drepper@cygnus.com> * Makerules: Undo last change. * csu/Makefile: Define before-compile at the right place. * aclocal.m4: Remove a.out file created by assembler test. * set-init.c: Find set-hooks.h using <...>. Update to db 2.3.10. * db2/Makefile: Update. * db2/db.h: Likewise. * db2/db_185.h: Likewise. * db2/db_int.h: Likewise. * db2/btree/bt_close.c: Likewise. * db2/btree/bt_conv.c: Likewise. * db2/btree/bt_cursor.c: Likewise. * db2/btree/bt_put.c: Likewise. * db2/btree/bt_rec.c: Likewise. * db2/btree/bt_recno.c: Likewise. * db2/btree/btree.src: Likewise. * db2/btree/btree_auto.c: Likewise. * db2/clib/getlong.c: Likewise. * db2/db/db.c: Likewise. * db2/db/db_auto.c: Likewise. * db2/db/db_conv.c: Likewise. * db2/db/db_pr.c: Likewise. * db2/db/db_ret.c: Likewise. * db2/db/db_thread.c: Likewise. * db2/hash/hash.c: Likewise. * db2/hash/hash_auto.c: Likewise. * db2/hash/hash_conv.c: Likewise. * db2/hash/hash_dup.c: Likewise. * db2/hash/hash_func.c: Likewise. * db2/hash/hash_page.c: Likewise. * db2/hash/hash_rec.c: Likewise. * db2/include/btree.h: Likewise. * db2/include/btree_ext.h: Likewise. * db2/include/db.h.src: Likewise. * db2/include/db_185.h.src: Likewise. * db2/include/db_cxx.h: Likewise. * db2/include/db_ext.h: Likewise. * db2/include/db_int.h.src: Likewise. * db2/include/db_page.h: Likewise. * db2/include/db_shash.h: Likewise. * db2/include/lock.h: Likewise. * db2/include/log.h: Likewise. * db2/include/log_ext.h: Likewise. * db2/include/mp.h: Likewise. * db2/include/shqueue.h: Likewise. * db2/include/txn.h: Likewise. * db2/lock/lock.c: Likewise. * db2/lock/lock_deadlock.c: Likewise. * db2/log/log.c: Likewise. * db2/log/log_archive.c: Likewise. * db2/log/log_auto.c: Likewise. * db2/log/log_get.c: Likewise. * db2/log/log_put.c: Likewise. * db2/log/log_register.c: Likewise. * db2/mp/mp_bh.c: Likewise. * db2/mp/mp_fget.c: Likewise. * db2/mp/mp_fopen.c: Likewise. * db2/mp/mp_fput.c: Likewise. * db2/mp/mp_fset.c: Likewise. * db2/mp/mp_open.c: Likewise. * db2/mutex/mutex.c: Likewise. * db2/os/db_os_dir.c: Likewise. * db2/progs/db_checkpoint/db_checkpoint.c: Likewise. * db2/progs/db_deadlock/db_deadlock.c: Likewise. * db2/progs/db_dump185/db_dump185.c: Likewise. * db2/progs/db_load/db_load.c: Likewise. * db2/progs/db_recover/db_recover.c: Likewise. * db2/txn/txn.c: Likewise. * db2/txn/txn_auto.c: Likewise. * elf/link.h: Define struct libname_list outside struct link_map to not confuse C++ compilers. * include/features.h: Recognize _XOPEN_SOURCE == 500 and set __USE_UNIX98. * manual/creature.texi: Explain this. * libc.map: Add new functions. * libio/Makefile (routines): Add fseeko and ftello. * libio/ftello.c: New file. * libio/fseeko.c: New file. * libio/stdio.h: Add prototypes for new functions. * manual/stdio.texi: Document fseeko and ftello. * posix/Makefile (routines): Add pread and pwrite. * sysdeps/posix/pread.c: New file. * sysdeps/posix/pwrite.c: New file. * sysdeps/stub/pread.c: New file. * sysdeps/stub/pwrite.c: New file. * posix/unistd.h: Add prototypes for pread and pwrite. Pretty print header. Define gid_t, uid_t, off_t, pid_t if __USE_UNIX98. Declare ctermid and cuserid if __USE_UNIX98. (swab): Change to take void * arguments. * string/swab.c: Change parameter to void *. * posix/sys/types: Define gid_t, uid_t, off_t, pid_t only if not already happened. * manual/llio.texi: Document pread and pwrite. * string/strings.h: Don't simply include string.h. Define BSD functions according to Unix98. * stdlib/tst-strtol.c: Include <string.h> not <strings.h>. * sunrpc/clnt_simp.c: Likewise. * malloc/Makefile (aux): Add set-freeres. * malloc/mtrace.c: Define function release_libc_mem which calls the __libc_subfreeres handler. (mtrace): Register release_libc_mem. * malloc/set-freeres.c: New file. * intl/dcgettext.c: Define free_mem function and add to __libc_subfreeres list. * intl/finddomain.c: Likewise. * intl/gettextP.h (struct loaded_domain): Add new fields use_mmap and mmap_size. Add prototype for _nl_unloaded_domain. * intl/loadmsgcat.c: Define new function _nl_unload_domain. (_nl_load_domain): Store informaiton about mmap use and file size. * intl/localealias.c (read_alias_file): Optimize locale alias file reading by avoid frequen mallocs. Define free_mem function and add to __libc_subfreeres list. * locale/localeinfo.h: Make a difference between MAX_USAGE_COUNT and undeletable. Add prototype for _nl_unload_locale. * locale/C-collate: Mark data as undeletable by using UNDELETABLE. * locale/C-ctype: Likewise. * locale/C-messages: Likewise. * locale/C-monetary: Likewise. * locale/C-numeric: Likewise. * locale/C-time: Likewise. * locale/findlocale.c (_nl_find_locale, _nl_remove_locale): Handle MAX_USAGE_COUNT and UNDELETABLE. (free_mem): New function. Add it to __libc_subfreeres list. * locale/loadlocale.c: Define _nl_unload_locale function. * misc/hsearch.c: Register hdestroy in __libc_subfreeres list. * stdlib/fmtmsg.c (addseverity): Handle illegal severity arguments correctly Define free_mem function and add to __libc_subfreeres list. * locale/programs/localedef.c (options): short form os verbose is v. Reported by Andreas Jaeger. * misc/sys/select.h: Define pselect only is __USE_POSIX since this header is used in some others as well for historical reasons. * resolv/resolv.h: Include <netinet/in.h> to make self-contained. * string/bits/string2.h: Add missing braces and optimize strcmp a bit more. * sysdeps/i386/i486/bits/string.h: Likewise. * sunrpc/rpc/auth_des.h: Include rpc/auth.h to be self-contained. Pretty print. * sysdeps/mach/hurd/cthreads.c: Add copyright text. * sysdeps/unix/sysv/linux/syscalls.list: Correct prctl entry. * sysdeps/unix/sysv/linux/sys/mman.h: Get definition of size_t. * time/time.h: Pretty print. 1997-09-29 Paul Eggert <eggert@twinsun.com> * time/strftime.c: Synchronize with GNU Emacs strftime.c. (HAVE_MEMCPY): Define if emacs is defined and HAVE_BCOPY isn't. (gmtime_r, localtime_r): Undef before defining. (iso_week_days): Use __inline__, not inline. 1997-09-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/bits/mathinline.h: Rename exp2{,l,f} to __ieee754_exp2{,l,f}. * sysdeps/m68k/fpu/s_exp2.c: Likewise. * sysdeps/m68k/fpu/s_exp2l.c: Likewise. * sysdeps/m68k/fpu/s_exp2f.c: Likewise. 1997-09-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/soinit.c (__EH_FRAME_BEGIN__): Don't make the .eh_frame section read-only, it contains relocations. * elf/sofini.c (__FRAME_END__): Likewise. 1997-09-29 03:08 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/i486/bits/string.h [__PIC__] (__strspn_cg, __strcspn_cg, __strpbrk_cg, __strstr_cg): Optimize even more. No spill register needed. Patch by NIIBE Yutaka <gniibe@mri.co.jp>. 1997-09-28 08:27 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis/nis_call.c (__do_niscall2): Fix return code, add missing break in switch case. * nis/nis_mkdir.c: Fix return codes to match Solaris version. * nis/nis_rmdir.c: Likewise. * nis/rpcsvc/yp_prot.h: Rename struct keydat to struct keydat_t for C++. 1997-09-28 04:32 Ulrich Drepper <drepper@cygnus.com> * configure.in: Fix typo. Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>. 1997-09-25 20:14 Philip Blundell <Philip.Blundell@pobox.com> * sysdeps/unix/sysv/linux/scsi/sg.h: New file. * sysdeps/unix/sysv/linux/Makefile: Install <scsi/sg.h>.
152 lines
6.2 KiB
Plaintext
152 lines
6.2 KiB
Plaintext
@node Feature Test Macros
|
|
@subsection Feature Test Macros
|
|
|
|
@cindex feature test macros
|
|
The exact set of features available when you compile a source file
|
|
is controlled by which @dfn{feature test macros} you define.
|
|
|
|
If you compile your programs using @samp{gcc -ansi}, you get only the
|
|
@w{ISO C} library features, unless you explicitly request additional
|
|
features by defining one or more of the feature macros.
|
|
@xref{Invoking GCC,, GNU CC Command Options, gcc.info, The GNU CC Manual},
|
|
for more information about GCC options.@refill
|
|
|
|
You should define these macros by using @samp{#define} preprocessor
|
|
directives at the top of your source code files. These directives
|
|
@emph{must} come before any @code{#include} of a system header file. It
|
|
is best to make them the very first thing in the file, preceded only by
|
|
comments. You could also use the @samp{-D} option to GCC, but it's
|
|
better if you make the source files indicate their own meaning in a
|
|
self-contained way.
|
|
|
|
@comment (none)
|
|
@comment POSIX.1
|
|
@defvr Macro _POSIX_SOURCE
|
|
If you define this macro, then the functionality from the POSIX.1
|
|
standard (IEEE Standard 1003.1) is available, as well as all of the
|
|
@w{ISO C} facilities.
|
|
@end defvr
|
|
|
|
@comment (none)
|
|
@comment POSIX.2
|
|
@defvr Macro _POSIX_C_SOURCE
|
|
If you define this macro with a value of @code{1}, then the
|
|
functionality from the POSIX.1 standard (IEEE Standard 1003.1) is made
|
|
available. If you define this macro with a value of @code{2}, then both
|
|
the functionality from the POSIX.1 standard and the functionality from
|
|
the POSIX.2 standard (IEEE Standard 1003.2) are made available. This is
|
|
in addition to the @w{ISO C} facilities.
|
|
@end defvr
|
|
|
|
@comment (none)
|
|
@comment GNU
|
|
@defvr Macro _BSD_SOURCE
|
|
If you define this macro, functionality derived from 4.3 BSD Unix is
|
|
included as well as the @w{ISO C}, POSIX.1, and POSIX.2 material.
|
|
|
|
Some of the features derived from 4.3 BSD Unix conflict with the
|
|
corresponding features specified by the POSIX.1 standard. If this
|
|
macro is defined, the 4.3 BSD definitions take precedence over the
|
|
POSIX definitions.
|
|
|
|
Due to the nature of some of the conflicts between 4.3 BSD and POSIX.1,
|
|
you need to use a special @dfn{BSD compatibility library} when linking
|
|
programs compiled for BSD compatibility. This is because some functions
|
|
must be defined in two different ways, one of them in the normal C
|
|
library, and one of them in the compatibility library. If your program
|
|
defines @code{_BSD_SOURCE}, you must give the option @samp{-lbsd-compat}
|
|
to the compiler or linker when linking the program, to tell it to find
|
|
functions in this special compatibility library before looking for them in
|
|
the normal C library.
|
|
@pindex -lbsd-compat
|
|
@pindex bsd-compat
|
|
@cindex BSD compatibility library.
|
|
@end defvr
|
|
|
|
@comment (none)
|
|
@comment GNU
|
|
@defvr Macro _SVID_SOURCE
|
|
If you define this macro, functionality derived from SVID is
|
|
included as well as the @w{ISO C}, POSIX.1, POSIX.2, and X/Open material.
|
|
@end defvr
|
|
|
|
@comment (none)
|
|
@comment XOPEN
|
|
@defvr Macro _XOPEN_SOURCE
|
|
@defvrx Macro _XOPEN_SOURCE_EXTENDED
|
|
If you define this macro, functionality described in the X/Open
|
|
Portability Guide is included. This is a superset of the POSIX.1 and
|
|
POSIX.2 functionality and in fact @code{_POSIX_SOURCE} and
|
|
@code{_POSIX_C_SOURCE} are automatically defined.
|
|
|
|
As the unification of all Unices, functionality only available in
|
|
BSD and SVID is also included.
|
|
|
|
If the macro @code{_XOPEN_SOURCE_EXTENDED} is also defined, even more
|
|
functionality is available. The extra functions will make all functions
|
|
available which are necessary for the X/Open Unix brand.
|
|
|
|
If the macro @code{_XOPEN_SOURCE} has the value @math{500} this includes
|
|
all functionality described so far plus some new definitions from the
|
|
Single Unix specification, @w{version 2}.
|
|
@end defvr
|
|
|
|
@comment (none)
|
|
@comment GNU
|
|
@defvr Macro _GNU_SOURCE
|
|
If you define this macro, everything is included: @w{ISO C}, POSIX.1,
|
|
POSIX.2, BSD, SVID, X/Open, and GNU extensions. In the cases where
|
|
POSIX.1 conflicts with BSD, the POSIX definitions take precedence.
|
|
|
|
If you want to get the full effect of @code{_GNU_SOURCE} but make the
|
|
BSD definitions take precedence over the POSIX definitions, use this
|
|
sequence of definitions:
|
|
|
|
@smallexample
|
|
#define _GNU_SOURCE
|
|
#define _BSD_SOURCE
|
|
#define _SVID_SOURCE
|
|
@end smallexample
|
|
|
|
Note that if you do this, you must link your program with the BSD
|
|
compatibility library by passing the @samp{-lbsd-compat} option to the
|
|
compiler or linker. @strong{Note:} If you forget to do this, you may
|
|
get very strange errors at run time.
|
|
@end defvr
|
|
|
|
@comment (none)
|
|
@comment GNU
|
|
@defvr Macro _REENTRANT
|
|
@defvrx Macro _THREAD_SAFE
|
|
If you define one of these macros, reentrant versions of several functions get
|
|
declared. Some of the functions are specified in POSIX.1c but many others
|
|
are only available on a few other systems or are unique to GNU libc.
|
|
The problem is that the standardization of the thread safe C library
|
|
interface still is behind.
|
|
|
|
Unlike on some other systems no special version of the C library must be
|
|
used for linking. There is only one version but while compiling this
|
|
it must have been specified to compile as thread safe.
|
|
@end defvr
|
|
|
|
We recommend you use @code{_GNU_SOURCE} in new programs. If you don't
|
|
specify the @samp{-ansi} option to GCC and don't define any of these
|
|
macros explicitly, the effect is the same as defining
|
|
@code{_POSIX_C_SOURCE} to 2 and @code{_POSIX_SOURCE},
|
|
@code{_SVID_SOURCE}, and @code{_BSD_SOURCE} to 1.
|
|
|
|
When you define a feature test macro to request a larger class of features,
|
|
it is harmless to define in addition a feature test macro for a subset of
|
|
those features. For example, if you define @code{_POSIX_C_SOURCE}, then
|
|
defining @code{_POSIX_SOURCE} as well has no effect. Likewise, if you
|
|
define @code{_GNU_SOURCE}, then defining either @code{_POSIX_SOURCE} or
|
|
@code{_POSIX_C_SOURCE} or @code{_SVID_SOURCE} as well has no effect.
|
|
|
|
Note, however, that the features of @code{_BSD_SOURCE} are not a subset of
|
|
any of the other feature test macros supported. This is because it defines
|
|
BSD features that take precedence over the POSIX features that are
|
|
requested by the other macros. For this reason, defining
|
|
@code{_BSD_SOURCE} in addition to the other feature test macros does have
|
|
an effect: it causes the BSD features to take priority over the conflicting
|
|
POSIX features.
|