1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-12-24 17:51:17 +03:00

Remove IN_LIB

Replace with IS_IN and IS_IN_LIB macros instead.  This change results
in a change in generated code, because it fixes a subtle bug.  The bug
was introduced when systemtap probes were added to lowlevellock.h,
which resulted in stap-probe.h being included in a number of places.
stap-probe.h always defines IN_LIB, which breaks a check in errno.h
and netdb.h since they rely on that macro to decide whether to
implement an internal version of a declaration or an external one.

The components that see a code change due to this are:

iconv_prog
libmemusage.so
libpcprofile.so
libSegFault.so
libutil.so.1
locale
localedef
nscd

All other built components (i.e. libc, libpthread, etc.) remain
unchanged by this on x86_64.

	* elf/Makefile (CPPFLAGS-.os): Remove IN_LIB.
	* elf/rtld-Rules (rtld-CPPFLAGS): Likewise.
	* extra-lib.mk (CPPFLAGS-$(lib)): Likewise.
	* include/libc-symbols.h (IS_IN_LIB): New macro.
	* include/errno.h: Use IS_IN_LIB instead of IN_LIB.
	* include/netdb.h: Likewise.
	* include/stap-probe.h: Remove all uses of IN_LIB.
This commit is contained in:
Siddhesh Poyarekar
2014-11-20 12:03:11 +05:30
parent 279bc5b3c3
commit a10178bda1
8 changed files with 20 additions and 19 deletions

View File

@@ -22,7 +22,7 @@
# define errno rtld_errno
extern int rtld_errno attribute_hidden;
# elif !defined NOT_IN_libc || defined IN_LIB
# elif !defined NOT_IN_libc || IS_IN_LIB
# include <tls.h>
@@ -34,7 +34,7 @@ extern int rtld_errno attribute_hidden;
# endif
extern __thread int errno attribute_tls_model_ie;
# endif /* !NOT_IN_libc || IN_LIB */
# endif /* !NOT_IN_libc || IS_IN_LIB */
# define __set_errno(val) (errno = (val))