bug-gnulib@gnu.org mirror (unofficial)
 help / color / mirror / Atom feed
From: Bruno Haible <bruno@clisp.org>
To: Ben Pfaff <blp@cs.stanford.edu>
Cc: bug-gnulib@gnu.org
Subject: Re: [PATCH] reloc-ldflags: Fix handling of multiple relocatable library directories.
Date: Sun, 20 Sep 2020 16:49:58 +0200	[thread overview]
Message-ID: <2059262.66RfUa1sB5@omega> (raw)
In-Reply-To: <20200914005236.3852819-1-blp@cs.stanford.edu>

Hi Ben,

Thanks for the patch! You are right: since none of the platforms for which
reloc-ldflags is being used is AIX, HP-UX, IRIX — these are the platforms
for which libtool.m4 defines hardcode_libdir_separator to ':' —, the rpath
options are cumulative.

I applied your patch, revising comments and a variable name.


2020-09-19  Ben Pfaff  <blp@cs.stanford.edu>
            Bruno Haible  <bruno@clisp.org>

	relocatable-prog: Fix for multiple relocatable library directories.
	* build-aux/reloc-ldflags: Fix handling of multiple relocatable library
	directories.  Each one needs its own -Wl,-rpath,$dir option, instead of
	being attached to a single one.

diff --git a/build-aux/reloc-ldflags b/build-aux/reloc-ldflags
index 145e741..cdb2f47 100755
--- a/build-aux/reloc-ldflags
+++ b/build-aux/reloc-ldflags
@@ -68,7 +68,9 @@ case "$host_os" in
     ;;
 esac
 if test -n "$origin_token"; then
-  rpath=
+  # We are not on AIX, HP-UX, or IRIX. Therefore the -rpath options are
+  # cumulative.
+  rpath_options=
   save_IFS="$IFS"; IFS=":"
   for dir in $library_path_value; do
     IFS="$save_IFS"
@@ -89,8 +91,8 @@ if test -n "$origin_token"; then
           idir=`echo "$idir" | sed -e 's,^//*[^/]*,,'`
         done
         dir="$origin_token"`echo "$idir" | sed -e 's,//*[^/]*,/..,g'`"$dir"
-        # Add dir to rpath.
-        rpath="${rpath}${rpath:+ }$dir"
+        # Augment rpath_options with dir.
+        rpath_options="${rpath_options}${rpath_options:+ }-Wl,-rpath,$dir"
         ;;
       *)
         if test -n "$dir"; then
@@ -101,15 +103,14 @@ if test -n "$origin_token"; then
   done
   IFS="$save_IFS"
   # Output it.
-  if test -n "$rpath"; then
+  if test -n "$rpath_options"; then
     case "$host_os" in
       # At least some versions of FreeBSD, DragonFly, and OpenBSD need the
       # linker option "-z origin". See <https://lekensteyn.nl/rpath.html>.
       freebsd* | dragonfly* | openbsd*)
-        echo "-Wl,-z,origin -Wl,-rpath,$rpath" ;;
-      *)
-        echo "-Wl,-rpath,$rpath" ;;
+        rpath_options="-Wl,-z,origin $rpath_options" ;;
     esac
+    echo "$rpath_options"
   fi
 else
   echo "relocation via rpath not supported on this system: $host" 1>&2



  reply	other threads:[~2020-09-20 14:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-14  0:52 [PATCH] reloc-ldflags: Fix handling of multiple relocatable library directories Ben Pfaff
2020-09-20 14:49 ` Bruno Haible [this message]
2020-09-20 23:33   ` Ben Pfaff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.gnu.org/mailman/listinfo/bug-gnulib

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2059262.66RfUa1sB5@omega \
    --to=bruno@clisp.org \
    --cc=blp@cs.stanford.edu \
    --cc=bug-gnulib@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).