blob: ba00efe7b375adf7f6e7a693bf6e04c74dcfae02 [file] [log] [blame]
From 0ec74744a4cba7c5fdfaa2685995119a4fca0260 Mon Sep 17 00:00:00 2001
From: Amarnath Valluri <amarnath.valluri@intel.com>
Date: Wed, 18 Jan 2017 16:14:37 +0200
Subject: [PATCH] Make dynamic linker a relative symlink to libc
absolute symlink into $(libdir) fails to load in a cross build
environment, especially when executing qemu in usermode to run target
applications, which cross build systems often do, since not everything
can be computed during cross builds, qemu in usermode often comes to aid
in such situations to feed into cross builds.
V2:
Make use of 'ln -r' to create relative symlinks, as most fo the distros
shipping coreutils 8.16+
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
---
Upstream-Status: Pending
---
Makefile | 2 +-
tools/install.sh | 8 +++++---
2 files changed, 6 insertions(+), 4 deletions(-)
--- a/Makefile
+++ b/Makefile
@@ -210,7 +210,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc
$(INSTALL) -D -m 644 $< $@
$(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so
- $(INSTALL) -D -l $(libdir)/libc.so $@ || true
+ $(INSTALL) -D -r $(DESTDIR)$(libdir)/libc.so $@ || true
install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),)
--- a/tools/install.sh
+++ b/tools/install.sh
@@ -6,18 +6,20 @@
#
usage() {
-printf "usage: %s [-D] [-l] [-m mode] src dest\n" "$0" 1>&2
+printf "usage: %s [-D] [-l] [-r] [-m mode] src dest\n" "$0" 1>&2
exit 1
}
mkdirp=
symlink=
+symlinkflags="-s"
mode=755
-while getopts Dlm: name ; do
+while getopts Dlrm: name ; do
case "$name" in
D) mkdirp=yes ;;
l) symlink=yes ;;
+r) symlink=yes; symlinkflags="$symlinkflags -r" ;;
m) mode=$OPTARG ;;
?) usage ;;
esac
@@ -48,7 +50,7 @@ trap 'rm -f "$tmp"' EXIT INT QUIT TERM H
umask 077
if test "$symlink" ; then
-ln -s "$1" "$tmp"
+ln $symlinkflags "$1" "$tmp"
else
cat < "$1" > "$tmp"
chmod "$mode" "$tmp"