about summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2014-11-19 12:13:54 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2014-11-19 12:13:54 +0530
commit9cd4747089e6b0d6ed6b2b6c75798912489c7bab (patch)
treeb8804d1fcbe700d16978f82cb76aa8a5bbcf8544 /include
parentd71035bd9a3a1dc5077ab8d978398f2f960d3555 (diff)
downloadglibc-9cd4747089e6b0d6ed6b2b6c75798912489c7bab.tar.gz
glibc-9cd4747089e6b0d6ed6b2b6c75798912489c7bab.tar.xz
glibc-9cd4747089e6b0d6ed6b2b6c75798912489c7bab.zip
Add new macro IN_MODULE to identify module in which source is built
The current scheme to identify which module a translation unit is
built in depends on defining multiple macros IS_IN_* and also defining
NOT_IN_libc if we're building a non-libc module.  In addition, there
is an IN_LIB macro that does effectively the same thing, but for
different modules (notably the systemtap probes).  This macro scheme
unifies both ideas to use just one macro IN_MODULE and assign it a
value depending on the module it is being built into.  If the module
is not defined, it defaults to MODULE_libc.

Patches that follow will replace uses of IS_IN_* variables with the
IS_IN() macro.  libc-symbols.h has been converted already to give an
example of how such a transition will look.

Verified that there are no relevant binary changes.  One source change
that will crop up repeatedly is that of nscd_stat, since it uses the
build timestamp as a constant in its logic.

	* Makeconfig (in-module): Get value of libof set for the
	translation unit.
	(CPPFLAGS): Use $(in-module).
	* Makerules: Don't suffix routine names for nonlib.
	* include/libc-modules.h: New file.
	* include/libc-symbols.h: Include libc-modules.h
	(IS_IN): New macro to replace IS_IN_* macros.
	* elf/Makefile: Set libof-* for each routine.
	* elf/rtld-Rules: Likewise.
	* extra-modules.mk: Likewise.
	* iconv/Makefile: Likewise.
	* iconvdata/Makefile: Likewise.
	* locale/Makefile: Likewise.
	* malloc/Makefile: Likewise.
	* nss/Makefile: Likewise.
	* sysdeps/gnu/Makefile: Likewise.
	* sysdeps/ieee754/ldbl-opt/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/Makefile: Likewise.
	* sysdeps/s390/s390-64/Makefile: Likewise.
	* nscd/Makefile: Set libof-* for each routine.  Set CFLAGS and
	CPPFLAGS for nscd instead of nonlib.
Diffstat (limited to 'include')
-rw-r--r--include/libc-modules.h41
-rw-r--r--include/libc-symbols.h25
2 files changed, 56 insertions, 10 deletions
diff --git a/include/libc-modules.h b/include/libc-modules.h
new file mode 100644
index 0000000000..029b600bea
--- /dev/null
+++ b/include/libc-modules.h
@@ -0,0 +1,41 @@
+/* Valid values for the IN_MODULE macro, which is defined for each source file
+   during compilation to indicate which module it is to be built into.
+
+   TODO: This file should eventually be auto-generated.  */
+#define MODULE_libc		1
+#define MODULE_libpthread	2
+#define MODULE_rtld		3
+#define MODULE_libdl		4
+#define MODULE_libm		5
+#define MODULE_iconvprogs	6
+#define MODULE_iconvdata	7
+#define MODULE_lddlibc4		8
+#define MODULE_locale_programs	9
+#define MODULE_memusagestat	10
+#define MODULE_libutil		12
+#define MODULE_libBrokenLocale	13
+#define MODULE_libmemusage	15
+#define MODULE_libresolv	16
+#define MODULE_libnss_db	17
+#define MODULE_libnss_files	18
+#define	MODULE_libnss_dns	19
+#define MODULE_libnss_compat	20
+#define MODULE_libnss_hesiod	21
+#define MODULE_libnss_nis	22
+#define MODULE_libnss_nisplus	23
+#define MODULE_libanl		24
+#define MODULE_librt		25
+#define MODULE_libSegFault	26
+#define MODULE_libthread_db	27
+#define MODULE_libcidn		28
+#define MODULE_libcrypt		29
+#define MODULE_libnsl		30
+#define MODULE_libpcprofile	31
+#define MODULE_librpcsvc	32
+#define MODULE_nscd		33
+#define MODULE_ldconfig 	34
+#define MODULE_libnldbl 	35
+
+/* Catch-all for test modules and other binaries.  */
+#define MODULE_nonlib		98
+#define MODULE_extramodules	99
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index b1ac9db1b5..58c357725d 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -20,6 +20,11 @@
 #ifndef _LIBC_SYMBOLS_H
 #define _LIBC_SYMBOLS_H	1
 
+/* Pull in definitions for the MODULE_* macros.  */
+#include <libc-modules.h>
+
+#define IS_IN(lib) (IN_MODULE == MODULE_##lib)
+
 /* This file's macros are included implicitly in the compilation of every
    file in the C library by -imacros.
 
@@ -448,7 +453,7 @@ for linking")
    If the function should be internal to multiple objects, say ld.so and
    libc.so, the best way is to use:
 
-   #if !defined NOT_IN_libc || defined IS_IN_rtld
+   #if IS_IN (libc) || IS_IN (rtld)
    hidden_proto (foo)
    #endif
 
@@ -564,7 +569,7 @@ for linking")
 # define libc_hidden_data_ver(local, name)
 #endif
 
-#ifdef IS_IN_rtld
+#if IS_IN (rtld)
 # define rtld_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define rtld_hidden_tls_proto(name, attrs...) hidden_tls_proto (name, ##attrs)
 # define rtld_hidden_def(name) hidden_def (name)
@@ -584,7 +589,7 @@ for linking")
 # define rtld_hidden_data_ver(local, name)
 #endif
 
-#ifdef IS_IN_libm
+#if IS_IN (libm)
 # define libm_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define libm_hidden_tls_proto(name, attrs...) hidden_tls_proto (name, ##attrs)
 # define libm_hidden_def(name) hidden_def (name)
@@ -604,7 +609,7 @@ for linking")
 # define libm_hidden_data_ver(local, name)
 #endif
 
-#ifdef IS_IN_libresolv
+#if IS_IN (libresolv)
 # define libresolv_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define libresolv_hidden_tls_proto(name, attrs...) \
   hidden_tls_proto (name, ##attrs)
@@ -625,7 +630,7 @@ for linking")
 # define libresolv_hidden_data_ver(local, name)
 #endif
 
-#ifdef IS_IN_librt
+#if IS_IN (librt)
 # define librt_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define librt_hidden_tls_proto(name, attrs...) \
   hidden_tls_proto (name, ##attrs)
@@ -646,7 +651,7 @@ for linking")
 # define librt_hidden_data_ver(local, name)
 #endif
 
-#ifdef IS_IN_libdl
+#if IS_IN (libdl)
 # define libdl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define libdl_hidden_tls_proto(name, attrs...) \
   hidden_tls_proto (name, ##attrs)
@@ -667,7 +672,7 @@ for linking")
 # define libdl_hidden_data_ver(local, name)
 #endif
 
-#ifdef IS_IN_libnss_files
+#if IS_IN (libnss_files)
 # define libnss_files_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define libnss_files_hidden_tls_proto(name, attrs...) \
   hidden_tls_proto (name, ##attrs)
@@ -688,7 +693,7 @@ for linking")
 # define libnss_files_hidden_data_ver(local, name)
 #endif
 
-#ifdef IS_IN_libnsl
+#if IS_IN (libnsl)
 # define libnsl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define libnsl_hidden_tls_proto(name, attrs...) \
   hidden_tls_proto (name, ##attrs)
@@ -709,7 +714,7 @@ for linking")
 # define libnsl_hidden_data_ver(local, name)
 #endif
 
-#ifdef IS_IN_libnss_nisplus
+#if IS_IN (libnss_nisplus)
 # define libnss_nisplus_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define libnss_nisplus_hidden_tls_proto(name, attrs...) \
   hidden_tls_proto (name, ##attrs)
@@ -738,7 +743,7 @@ for linking")
 # define HIDDEN_BUILTIN_JUMPTARGET(name) HIDDEN_JUMPTARGET(name)
 #endif
 
-#ifdef IS_IN_libutil
+#if IS_IN (libutil)
 # define libutil_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
 # define libutil_hidden_tls_proto(name, attrs...) \
   hidden_tls_proto (name, ##attrs)