diff options
author | Andreas Schwab <schwab@suse.de> | 2013-03-18 12:44:47 +0100 |
---|---|---|
committer | Andreas Schwab <schwab@suse.de> | 2013-03-19 12:07:26 +0100 |
commit | aaa8cb4b43511c62b11ac6f10e9beea3d5035a68 (patch) | |
tree | 19ca0e195c46f07ba377a8fc79d19048a75cd61e | |
parent | 5cebee5db0e891a91d947ef6015f1425fd2fd658 (diff) | |
download | glibc-aaa8cb4b43511c62b11ac6f10e9beea3d5035a68.tar.gz glibc-aaa8cb4b43511c62b11ac6f10e9beea3d5035a68.tar.xz glibc-aaa8cb4b43511c62b11ac6f10e9beea3d5035a68.zip |
Add support for rtld directory different from slib directory
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | Makeconfig | 10 | ||||
-rw-r--r-- | Makerules | 4 | ||||
-rw-r--r-- | config.make.in | 1 | ||||
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | configure.in | 1 | ||||
-rw-r--r-- | elf/Makefile | 11 | ||||
-rwxr-xr-x | scripts/rellns-sh | 17 |
8 files changed, 50 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog index e50ae01898..2fb09f6b3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2013-03-19 Andreas Schwab <schwab@suse.de> + + * configure.in: Substitute libc_cv_rtlddir. + * configure: Regenerate. + * config.make.in (rtlddir): Set from libc_cv_rtlddir. + * Makeconfig (rtlddir, inst_rtlddir): New variables. + (rtld-LDFLAGS): Use them with $(rtld-installed-name). + * elf/Makefile (install-others, CFLAGS-interp.c) + (ldso_install, common-ldd-rewrite): Likewise. + ($(inst_rtlddir)/$(rtld-installed-name)): Renamed from + $(inst_slibdir)/$(rtld-installed-name). + * scripts/rellns-sh: Add -p option. + * Makerules (make-shlib-link): Use rellns-sh to get relative name + for source. + 2013-03-19 Siddhesh Poyarekar <siddhesh@redhat.com> * manual/nptl.texi: Renamed to ... diff --git a/Makeconfig b/Makeconfig index 6c8891827e..70deb1e182 100644 --- a/Makeconfig +++ b/Makeconfig @@ -151,12 +151,18 @@ libdir = $(exec_prefix)/lib endif inst_libdir = $(install_root)$(libdir) -# Where to install the shared library and dynamic linker. +# Where to install the shared library. ifndef slibdir slibdir = $(exec_prefix)/lib endif inst_slibdir = $(install_root)$(slibdir) +# Where to install the dynamic linker. +ifndef rtlddir +rtlddir = $(slibdir) +endif +inst_rtlddir = $(install_root)$(rtlddir) + # Prefix to put on files installed in $(libdir). For libraries `libNAME.a', # the prefix is spliced between `lib' and the name, so the linker switch # `-l$(libprefix)NAME' finds the library; for other files the prefix is @@ -441,7 +447,7 @@ endif endif ifeq (yes,$(build-shared)) ifndef rtld-LDFLAGS -rtld-LDFLAGS = -Wl,-dynamic-linker=$(slibdir)/$(rtld-installed-name) +rtld-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name) endif ifndef rtld-tests-LDFLAGS ifeq (yes,$(build-hardcoded-path-in-tests)) diff --git a/Makerules b/Makerules index b115f1a92c..5ba670c1cc 100644 --- a/Makerules +++ b/Makerules @@ -864,7 +864,7 @@ ifeq (no,$(cross-compiling)) symbolic-link-prog := $(common-objpfx)elf/sln symbolic-link-list := $(common-objpfx)elf/symlink.list define make-shlib-link -echo $(<F) $@ >> $(symbolic-link-list) +echo `$(..)scripts/rellns-sh -p $< $@` $@ >> $(symbolic-link-list) endef else # cross-compiling # We need a definition that can be used by elf/Makefile's install rules. @@ -874,7 +874,7 @@ endif ifndef make-shlib-link define make-shlib-link rm -f $@ -$(LN_S) $(<F) $@ +$(LN_S) `$(..)scripts/rellns-sh -p $< $@` $@ endef endif diff --git a/config.make.in b/config.make.in index a966dcae23..2cab2f352e 100644 --- a/config.make.in +++ b/config.make.in @@ -11,6 +11,7 @@ exec_prefix = @exec_prefix@ datadir = @datadir@ libdir = @libdir@ slibdir = @libc_cv_slibdir@ +rtlddir = @libc_cv_rtlddir@ localedir = @libc_cv_localedir@ sysconfdir = @libc_cv_sysconfdir@ libexecdir = @libexecdir@ diff --git a/configure b/configure index e386c1a6f7..2dc7eeb977 100755 --- a/configure +++ b/configure @@ -594,6 +594,7 @@ libc_cv_rootsbindir libc_cv_localstatedir libc_cv_sysconfdir libc_cv_localedir +libc_cv_rtlddir libc_cv_slibdir old_glibc_headers use_nscd @@ -7374,6 +7375,7 @@ fi + if test x$use_ldconfig = xyes; then $as_echo "#define USE_LDCONFIG 1" >>confdefs.h diff --git a/configure.in b/configure.in index c57897974c..cb317308ab 100644 --- a/configure.in +++ b/configure.in @@ -2153,6 +2153,7 @@ fi AC_SUBST(old_glibc_headers) AC_SUBST(libc_cv_slibdir) +AC_SUBST(libc_cv_rtlddir) AC_SUBST(libc_cv_localedir) AC_SUBST(libc_cv_sysconfdir) AC_SUBST(libc_cv_localstatedir) diff --git a/elf/Makefile b/elf/Makefile index 6d4b365fbb..9477a4d96b 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -66,7 +66,7 @@ endif ifeq (yes,$(build-shared)) extra-objs = $(all-rtld-routines:%=%.os) soinit.os sofini.os interp.os generated += librtld.os dl-allobjs.os ld.so ldd -install-others = $(inst_slibdir)/$(rtld-installed-name) +install-others = $(inst_rtlddir)/$(rtld-installed-name) install-bin-script = ldd endif @@ -340,7 +340,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map) | $(AWK) '($$7 ~ /^UND(|EF)$$/ && $$1 != "0:" && $$4 != "REGISTER") { print; p=1 } END { exit p != 0 }' # interp.c exists just to get this string into the libraries. -CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \ +CFLAGS-interp.c = -D'RUNTIME_LINKER="$(rtlddir)/$(rtld-installed-name)"' \ -DNOT_IN_libc=1 $(objpfx)interp.os: $(common-objpfx)config.make @@ -372,18 +372,19 @@ $(inst_slibdir)/$(rtld-version-installed-name): $(objpfx)ld.so $(+force) $(make-target-directory) $(do-install-program) -$(inst_slibdir)/$(rtld-installed-name): \ +$(inst_rtlddir)/$(rtld-installed-name): \ $(inst_slibdir)/$(rtld-version-installed-name) \ $(inst_slibdir)/libc-$(version).so + $(make-target-directory) $(make-shlib-link) # Special target called by parent to install just the dynamic linker. .PHONY: ldso_install -ldso_install: $(inst_slibdir)/$(rtld-installed-name) +ldso_install: $(inst_rtlddir)/$(rtld-installed-name) endif -common-ldd-rewrite = -e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \ +common-ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \ -e 's%@VERSION@%$(version)%g' \ -e 's|@PKGVERSION@|$(PKGVERSION)|g' \ -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g' diff --git a/scripts/rellns-sh b/scripts/rellns-sh index 0e861b5fa5..9a1496a9fd 100755 --- a/scripts/rellns-sh +++ b/scripts/rellns-sh @@ -16,8 +16,17 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, see <http://www.gnu.org/licenses/>. +# With -p, instead of creating the link print the computed relative link +# name. +do_print=false +case $1 in + -p) + do_print=true + shift + ;; +esac if test $# -ne 2; then - echo "Usage: rellns SOURCE DEST" >&2 + echo "Usage: rellns [-p] SOURCE DEST" >&2 exit 1 fi @@ -70,4 +79,8 @@ while test -n "$from"; do from=`echo $from | sed 's%^[^/]*/*%%'` done -ln -s $rfrom$to $2 +if $do_print; then + echo "$rfrom$to" +else + ln -s $rfrom$to $2 +fi |