diff options
author | Siddhesh Poyarekar <siddhesh@redhat.com> | 2014-11-19 12:13:54 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@redhat.com> | 2014-11-19 12:13:54 +0530 |
commit | 9cd4747089e6b0d6ed6b2b6c75798912489c7bab (patch) | |
tree | b8804d1fcbe700d16978f82cb76aa8a5bbcf8544 /include | |
parent | d71035bd9a3a1dc5077ab8d978398f2f960d3555 (diff) | |
download | glibc-9cd4747089e6b0d6ed6b2b6c75798912489c7bab.zip glibc-9cd4747089e6b0d6ed6b2b6c75798912489c7bab.tar.gz glibc-9cd4747089e6b0d6ed6b2b6c75798912489c7bab.tar.bz2 |
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.h | 41 | ||||
-rw-r--r-- | include/libc-symbols.h | 25 |
2 files changed, 56 insertions, 10 deletions
diff --git a/include/libc-modules.h b/include/libc-modules.h new file mode 100644 index 0000000..029b600 --- /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 b1ac9db..58c3577 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) |