This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[ping4][PATCH 01/19 v2] Add new macro IN_MODULE to identify module in which source is built
- From: Siddhesh Poyarekar <siddhesh at redhat dot com>
- To: Roland McGrath <roland at hack dot frob dot com>
- Cc: libc-alpha at sourceware dot org
- Date: Tue, 14 Oct 2014 21:50:34 +0530
- Subject: [ping4][PATCH 01/19 v2] Add new macro IN_MODULE to identify module in which source is built
- Authentication-results: sourceware.org; auth=none
- References: <1408618663-2281-1-git-send-email-siddhesh at redhat dot com> <1408618663-2281-2-git-send-email-siddhesh at redhat dot com> <20140822182247 dot E0FCE2C398C at topped-with-meat dot com> <20140827171916 dot GE8020 at spoyarek dot pnq dot redhat dot com> <20140917123835 dot GU6586 at spoyarek dot pnq dot redhat dot com> <20141001081613 dot GG2217 at spoyarek dot pnq dot redhat dot com>
Ping!
On Wed, Oct 01, 2014 at 01:46:13PM +0530, Siddhesh Poyarekar wrote:
> Rebased on current master, the only change is an unnecessary
> whitespace addition I had missed earlier. Ping!
>
> Siddhesh
>
> commit 3be0b793dc7e72fde3e2c728ca42541bd0a29c9c
> Author: Siddhesh Poyarekar <siddhesh@redhat.com>
> Date: Thu Aug 21 10:19:31 2014 +0530
>
> 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 remove 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 source 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.
> (module-def): Set IN_MODULE based on value of libof-*.
> (CPPFLAGS): Add $(module-def) to CPPFLAGS.
> * 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.
>
> diff --git a/Makeconfig b/Makeconfig
> index 24a3b82..671eceb 100644
> --- a/Makeconfig
> +++ b/Makeconfig
> @@ -813,6 +813,11 @@ endif # $(+cflags) == ""
> # of many little headers in the include directory.
> libio-include = -I$(..)libio
>
> +in-module = $(strip $(foreach lib,$(libof-$(basename $(@F))) $(libof-$(<F)) \
> + $(libof-$(@F)),-DIN_MODULE=MODULE_$(lib)))
> +
> +module-def = $(if $(in-module),$(in-module),-DIN_MODULE=MODULE_libc)
> +
> # These are the variables that the implicit compilation rules use.
> # Note that we can't use -std=* in CPPFLAGS, because it overrides
> # the implicit -lang-asm and breaks cpp behavior for .S files--notably
> @@ -821,7 +826,7 @@ CPPFLAGS = $(config-extra-cppflags) $(CPPUNDEFS) $(CPPFLAGS-config) \
> $($(subdir)-CPPFLAGS) \
> $(+includes) $(defines) \
> -include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
> - $(CPPFLAGS-$(suffix $@)) \
> + $(CPPFLAGS-$(suffix $@)) $(module-def) \
> $(foreach lib,$(libof-$(basename $(@F))) \
> $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
> $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
> diff --git a/Makerules b/Makerules
> index 3951bb1..3f4b55b 100644
> --- a/Makerules
> +++ b/Makerules
> @@ -1156,7 +1156,7 @@ xcheck: xtests
>
> all-nonlib = $(strip $(tests) $(xtests) $(test-srcs) $(test-extras) $(others))
> ifneq (,$(all-nonlib))
> -cpp-srcs-left = $(all-nonlib:=.c) $(all-nonlib:=.cc)
> +cpp-srcs-left = $(all-nonlib)
> lib := nonlib
> include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
> endif
> diff --git a/elf/Makefile b/elf/Makefile
> index 94074f3..6263a47 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -436,7 +436,8 @@ $(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
>
> SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
> CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
> - -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1
> + -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1 -DNOT_IN_libc=1
> +libof-ldconfig = ldconfig
> CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
> CFLAGS-cache.c = $(SYSCONF-FLAGS)
> CFLAGS-rtld.c = $(SYSCONF-FLAGS)
> @@ -444,6 +445,10 @@ CFLAGS-rtld.c = $(SYSCONF-FLAGS)
> CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
> -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld)
>
> +cpp-srcs-left := $(all-rtld-routines:=.os)
> +lib := rtld
> +include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
> +
> test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
> generated += $(addsuffix .so,$(strip $(modules-names)))
>
> diff --git a/elf/rtld-Rules b/elf/rtld-Rules
> index 0a5d6af..4d78d90 100644
> --- a/elf/rtld-Rules
> +++ b/elf/rtld-Rules
> @@ -138,6 +138,11 @@ ifdef rtld-depfiles
> -include $(rtld-depfiles)
> endif
>
> +# Set libof-* for each routine.
> +cpp-srcs-left := $(subst .os,,$(rtld-modules))
> +lib := rtld
> +include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
> +
> # This here is the whole point of all the shenanigans.
> rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld
>
> diff --git a/extra-modules.mk b/extra-modules.mk
> index c7ed850..9c2e4d2 100644
> --- a/extra-modules.mk
> +++ b/extra-modules.mk
> @@ -6,4 +6,5 @@
> module := $(firstword $(extra-modules-left))
> extra-modules-left := $(filter-out $(module),$(extra-modules-left))
>
> +libof-$(notdir $(module)) := extramodules
> CPPFLAGS-$(module).c += -DNOT_IN_libc
> diff --git a/iconv/Makefile b/iconv/Makefile
> index 48d17d7..8031a88 100644
> --- a/iconv/Makefile
> +++ b/iconv/Makefile
> @@ -52,11 +52,12 @@ CFLAGS-gconv_cache.c += -DGCONV_DIR='"$(gconvdir)"'
> CFLAGS-gconv_conf.c = -DGCONV_PATH='"$(gconvdir)"'
> CFLAGS-iconvconfig.c = -DGCONV_PATH='"$(gconvdir)"' -DGCONV_DIR='"$(gconvdir)"'
>
> -CPPFLAGS-iconv_charmap = -DNOT_IN_libc
> -CPPFLAGS-linereader = -DNOT_IN_libc
> -CPPFLAGS-strtab = -DNOT_IN_libc
> -CPPFLAGS-charmap = -DNOT_IN_libc
> -CPPFLAGS-charmap-dir = -DNOT_IN_libc
> +CPPFLAGS-iconvprogs = -DNOT_IN_libc
> +
> +# Set libof-* for each routine.
> +cpp-srcs-left := $(iconv_prog-modules) $(iconvconfig-modules)
> +lib := iconvprogs
> +include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
>
> ifeq ($(run-built-tests),yes)
> xtests-special += $(objpfx)test-iconvconfig.out
> diff --git a/iconvdata/Makefile b/iconvdata/Makefile
> index b6327d6..e0252ee 100644
> --- a/iconvdata/Makefile
> +++ b/iconvdata/Makefile
> @@ -211,6 +211,7 @@ $(objpfx)iconv-rules: Makefile
> $(AWK) 'NR == 1 { \
> for (i = 1; i <= NF; i++) { \
> printf "%s-routines := %s\n", $$i, tolower($$i); \
> + printf "libof-%s := iconvdata\n", tolower($$i); \
> printf "%s-map := gconv.map\n", $$i; \
> } \
> }; \
> @@ -273,6 +274,11 @@ endif
>
> include ../Rules
>
> +# Set libof-* for each routine.
> +cpp-srcs-left := $(modules) $(generated-modules)
> +lib := iconvdata
> +include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
> +
> tst-loading-ENV = MALLOC_TRACE=$(objpfx)tst-loading.mtrace
> $(objpfx)mtrace-tst-loading.out: $(objpfx)tst-loading.out
> $(common-objpfx)malloc/mtrace $(objpfx)tst-loading.mtrace > $@; \
> diff --git a/include/libc-modules.h b/include/libc-modules.h
> new file mode 100644
> index 0000000..d12fb90
> --- /dev/null
> +++ b/include/libc-modules.h
> @@ -0,0 +1,37 @@
> +#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 d4ab1f3..131d7eb 100644
> --- a/include/libc-symbols.h
> +++ b/include/libc-symbols.h
> @@ -20,6 +20,10 @@
> #ifndef _LIBC_SYMBOLS_H
> #define _LIBC_SYMBOLS_H 1
>
> +#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.
>
> @@ -468,7 +472,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
>
> @@ -584,7 +588,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)
> @@ -604,7 +608,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)
> @@ -624,7 +628,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)
> @@ -645,7 +649,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)
> @@ -666,7 +670,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)
> @@ -687,7 +691,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)
> @@ -708,7 +712,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)
> @@ -729,7 +733,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)
> @@ -758,7 +762,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)
> diff --git a/locale/Makefile b/locale/Makefile
> index e4c3878..5cd18e0 100644
> --- a/locale/Makefile
> +++ b/locale/Makefile
> @@ -85,7 +85,7 @@ locale-CPPFLAGS = -DLOCALEDIR='"$(localedir)"' \
> -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \
> -Iprograms
>
> -CPPFLAGS-locale-programs = -DLOCALE_PATH='$(localepath)' \
> +CPPFLAGS-locale_programs = -DLOCALE_PATH='$(localepath)' \
> -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \
> -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \
> -DLOCSRCDIR='"$(i18ndir)/locales"' \
> @@ -96,7 +96,7 @@ CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts
> CFLAGS-charmap-dir.c = -Wno-write-strings
>
> # This makes sure -DNOT_IN_libc et al are passed for all these modules.
> -cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \
> - $(locale-modules) $(lib-modules))
> -lib := locale-programs
> +cpp-srcs-left := $(localedef-modules) $(localedef-aux) $(locale-modules) \
> + $(lib-modules)
> +lib := locale_programs
> include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
> diff --git a/malloc/Makefile b/malloc/Makefile
> index 9e93523..fbfada2 100644
> --- a/malloc/Makefile
> +++ b/malloc/Makefile
> @@ -89,6 +89,11 @@ endif
> do-memusagestat: $(objpfx)memusagestat
>
> memusagestat-modules = memusagestat
> +
> +cpp-srcs-left := $(memusagestat-modules)
> +lib := memusagestat
> +include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
> +
> $(objpfx)memusagestat: $(memusagestat-modules:%=$(objpfx)%.o)
> $(LINK.o) -o $@ $^ $(libgd-LDFLAGS) -lgd -lpng -lz -lm
>
> diff --git a/nscd/Makefile b/nscd/Makefile
> index 639d87b..7ab4e9d 100644
> --- a/nscd/Makefile
> +++ b/nscd/Makefile
> @@ -79,23 +79,22 @@ CFLAGS-nscd_gethst_r.c = -fexceptions
> CFLAGS-nscd_getai.c = -fexceptions
> CFLAGS-nscd_initgroups.c = -fexceptions
>
> -CPPFLAGS-nonlib += -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2
> +CPPFLAGS-nscd += -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2 -DNOT_IN_libc=1
>
> ifeq (yesyes,$(have-fpie)$(build-shared))
> -CFLAGS-nonlib += $(pie-ccflag)
> +CFLAGS-nscd += $(pie-ccflag)
> endif
> ifeq (yes,$(have-ssp))
> -CFLAGS-nonlib += -fstack-protector
> +CFLAGS-nscd += -fstack-protector
> endif
>
> ifeq (yesyes,$(have-fpie)$(build-shared))
> LDFLAGS-nscd = -Wl,-z,now
> endif
>
> -# This makes sure CPPFLAGS-nonlib and CFLAGS-nonlib are passed
> -# for all these modules.
> -cpp-srcs-left := $(nscd-modules:=.c)
> -lib := nonlib
> +# Set libof-nscd.
> +cpp-srcs-left := $(nscd-modules)
> +lib := nscd
> include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
>
> $(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o)
> diff --git a/nss/Makefile b/nss/Makefile
> index 1fa7f1f..7114d74 100644
> --- a/nss/Makefile
> +++ b/nss/Makefile
> @@ -105,7 +105,8 @@ $(objpfx)makedb: $(makedb-modules:%=$(objpfx)%.o)
> $(inst_vardbdir)/Makefile: db-Makefile $(+force)
> $(do-install)
>
> -CFLAGS-nss_test1.c = -DNOT_IN_libc=1
> +libof-nss_test1 = extramodules
> +CPPFLAGS-nss_test1 = -DNOT_IN_libc=1
> $(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(link-libc-deps)
> $(build-module)
> ifdef libnss_test1.so-version
> diff --git a/stdlib/Makefile b/stdlib/Makefile
> index 9b2271b..da6e076 100644
> --- a/stdlib/Makefile
> +++ b/stdlib/Makefile
> @@ -145,6 +145,7 @@ LDFLAGS-tst-putenv = $(no-as-needed)
>
> $(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os $(link-libc-deps)
> $(build-module)
> +libof-tst-putenvmod = extramodules
> CFLAGS-tst-putenvmod.c = -DNOT_IN_libc=1
>
> $(objpfx)bug-getcontext: $(libm)
> diff --git a/sysdeps/gnu/Makefile b/sysdeps/gnu/Makefile
> index c05708d..b5b2cf0 100644
> --- a/sysdeps/gnu/Makefile
> +++ b/sysdeps/gnu/Makefile
> @@ -29,6 +29,8 @@ ifeq ($(subdir),stdio-common)
>
> errlist-c = $(firstword $(wildcard $(addsuffix /errlist.c,$(sysdirs) .)))
>
> +libof-errlist-compat = extramodules
> +
> ifeq ($(build-shared),yes)
> $(objpfx)errlist-compat.c: $(errlist-c) $(..)sysdeps/gnu/errlist-compat.awk \
> $(common-objpfx)Versions.v.i $(before-compile)
> diff --git a/sysdeps/s390/s390-64/Makefile b/sysdeps/s390/s390-64/Makefile
> index fe5030e..ce4f0c5 100644
> --- a/sysdeps/s390/s390-64/Makefile
> +++ b/sysdeps/s390/s390-64/Makefile
> @@ -28,6 +28,10 @@ s390x-iconv-modules = ISO-8859-1_CP037_Z900 UTF8_UTF16_Z9 UTF16_UTF32_Z9 UTF8_UT
> extra-modules-left += $(s390x-iconv-modules)
> include extra-module.mk
>
> +cpp-srcs-left := $(foreach mod,$(s390x-iconv-modules),$($(mod)-routines))
> +lib := iconvdata
> +include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
> +
> extra-objs += $(addsuffix .so, $(s390x-iconv-modules))
> install-others += $(patsubst %, $(inst_gconvdir)/%.so, $(s390x-iconv-modules))
>
> diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
> index 9ad6d22..2d6d8bb 100644
> --- a/sysdeps/unix/sysv/linux/Makefile
> +++ b/sysdeps/unix/sysv/linux/Makefile
> @@ -178,6 +178,7 @@ ifeq ($(subdir),elf)
> sysdep-rtld-routines += dl-brk dl-sbrk dl-getcwd dl-openat64 dl-opendir \
> dl-fxstatat64
>
> +libof-lddlibc4 = lddlibc4
> CPPFLAGS-lddlibc4 += -DNOT_IN_libc
>
> others += pldd