summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2023-03-07 11:22:56 +0000
committerGitHub <noreply@github.com>2023-03-07 11:22:56 +0000
commitea2fca765c440fff1ff74e1463444dea7b819db2 (patch)
treeb3da31990cd6df59e00fed9cc253338ad75e65ff
parent12c1fe706bc2e87a38555a0af33aba304bf36449 (diff)
parentfcb8fb73179ca8edbef066beb134e64ae04a8531 (diff)
downloadpatchelf-ea2fca765c440fff1ff74e1463444dea7b819db2.tar.gz
Merge #473
473: Other switches might set changed as true. Use extraStrings size. #416 r=Mic92 a=brenoguim Co-authored-by: Breno Rodrigues Guimaraes <brenorg@gmail.com>
-rw-r--r--src/patchelf.cc2
-rwxr-xr-xtests/rename-dynamic-symbols.sh6
2 files changed, 7 insertions, 1 deletions
diff --git a/src/patchelf.cc b/src/patchelf.cc
index 5dd320d..d814d3f 100644
--- a/src/patchelf.cc
+++ b/src/patchelf.cc
@@ -2163,7 +2163,7 @@ void ElfFile<ElfFileParamNames>::renameDynamicSymbols(const std::unordered_map<s
}
}
- if (changed)
+ if (!extraStrings.empty())
{
auto newStrTabSize = strTab.size() + extraStrings.size();
auto& newSec = replaceSection(".dynstr", newStrTabSize);
diff --git a/tests/rename-dynamic-symbols.sh b/tests/rename-dynamic-symbols.sh
index 6fabb33..dc33e1b 100755
--- a/tests/rename-dynamic-symbols.sh
+++ b/tests/rename-dynamic-symbols.sh
@@ -82,3 +82,9 @@ ${PATCHELF} --rename-dynamic-symbols ../map *
echo "# Run the patched tool and libraries"
env LD_BIND_NOW=1 LD_LIBRARY_PATH=${PWD} ./many-syms-main
+
+# Test that other switches still work when --rename-dynamic-symbols has no effect
+echo "SYMBOL_THAT_DOESNT_EXIST ANOTHER_NAME" > map
+${PATCHELF} --set-rpath changed_rpath --rename-dynamic-symbols map --output libnewrpath.so "$full_lib_name"
+[ "$(${PATCHELF} --print-rpath libnewrpath.so)" = changed_rpath ] || exit 1
+