summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThomas Holder <thomas.holder@schrodinger.com>2020-06-03 11:15:33 (GMT)
committerThomas Holder <thomas.holder@schrodinger.com>2020-06-03 11:37:13 (GMT)
commit6e5e98ce774e728290680c46b44da86246f1d167 (patch)
tree0c5caad15b09bc310b0610654927b54f8754e8c3 /src
parentf3411a986e0d4869786cacc1e018f13d951d22bd (diff)
downloadpatchelf-6e5e98ce774e728290680c46b44da86246f1d167.zip
patchelf-6e5e98ce774e728290680c46b44da86246f1d167.tar.gz
patchelf-6e5e98ce774e728290680c46b44da86246f1d167.tar.bz2
Consistently use --force-rpath (fixes #94)
Diffstat (limited to 'src')
-rw-r--r--src/patchelf.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/patchelf.cc b/src/patchelf.cc
index d560587..80d40ab 100644
--- a/src/patchelf.cc
+++ b/src/patchelf.cc
@@ -1259,7 +1259,17 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op,
}
- if (std::string(rpath ? rpath : "") == newRPath) return;
+ if (!forceRPath && dynRPath && !dynRunPath) { /* convert DT_RPATH to DT_RUNPATH */
+ dynRPath->d_tag = DT_RUNPATH;
+ dynRunPath = dynRPath;
+ dynRPath = 0;
+ } else if (forceRPath && dynRunPath) { /* convert DT_RUNPATH to DT_RPATH */
+ dynRunPath->d_tag = DT_RPATH;
+ dynRPath = dynRunPath;
+ dynRunPath = 0;
+ } else if (std::string(rpath ? rpath : "") == newRPath) {
+ return;
+ }
changed = true;
@@ -1273,15 +1283,6 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op,
debug("new rpath is '%s'\n", newRPath.c_str());
- if (!forceRPath && dynRPath && !dynRunPath) { /* convert DT_RPATH to DT_RUNPATH */
- dynRPath->d_tag = DT_RUNPATH;
- dynRunPath = dynRPath;
- dynRPath = 0;
- }
-
- if (forceRPath && dynRPath && dynRunPath) { /* convert DT_RUNPATH to DT_RPATH */
- dynRunPath->d_tag = DT_IGNORE;
- }
if (newRPath.size() <= rpathSize) {
strcpy(rpath, newRPath.c_str());