diff options
author | Siddhesh Poyarekar <siddhesh@redhat.com> | 2014-11-20 12:03:11 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@redhat.com> | 2014-11-24 11:41:42 +0530 |
commit | a10178bda190a62e7e3f56773f55f23cf06848a7 (patch) | |
tree | aec76d63ed6098f2ec59bd6a057a537ec8cd38e8 /include/libc-symbols.h | |
parent | 279bc5b3c384c09746fbadb2b68c6db9e833c064 (diff) | |
download | glibc-a10178bda190a62e7e3f56773f55f23cf06848a7.zip glibc-a10178bda190a62e7e3f56773f55f23cf06848a7.tar.gz glibc-a10178bda190a62e7e3f56773f55f23cf06848a7.tar.bz2 |
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.
Diffstat (limited to 'include/libc-symbols.h')
-rw-r--r-- | include/libc-symbols.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/libc-symbols.h b/include/libc-symbols.h index 5cbf473..52350d3 100644 --- a/include/libc-symbols.h +++ b/include/libc-symbols.h @@ -23,6 +23,11 @@ #define IN_MODULE PASTE_NAME (MODULE_, MODULE_NAME) #define IS_IN(lib) (IN_MODULE == MODULE_##lib) +/* Returns true if the current module is a versioned library. Versioned + library names culled from shlib-versions files are assigned a MODULE_* + value lower than MODULE_LIBS_BEGIN. */ +#define IS_IN_LIB (IN_MODULE > MODULE_LIBS_BEGIN) + #define PASTE_NAME(a,b) PASTE_NAME1 (a,b) #define PASTE_NAME1(a,b) a##b |