diff options
author | Breno Rodrigues Guimaraes <brenorg@gmail.com> | 2023-03-04 13:10:16 -0300 |
---|---|---|
committer | Breno Rodrigues Guimaraes <brenorg@gmail.com> | 2023-03-04 14:04:07 -0300 |
commit | fcb8fb73179ca8edbef066beb134e64ae04a8531 (patch) | |
tree | 93c5265cf56b9cf6ffdf188cb4cc15675bec8930 | |
parent | 69a7ae54d27513d7553b4d8bd77ade017e674e22 (diff) | |
download | patchelf-fcb8fb73179ca8edbef066beb134e64ae04a8531.tar.gz |
Other switches might set changed as true. Use extraStrings size
-rw-r--r-- | src/patchelf.cc | 2 | ||||
-rwxr-xr-x | tests/rename-dynamic-symbols.sh | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/patchelf.cc b/src/patchelf.cc index ca247c1..405e2e6 100644 --- a/src/patchelf.cc +++ b/src/patchelf.cc @@ -2134,7 +2134,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 + |