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:
@@ -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))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user