From f5df94952e87eaa390e5c845bc48fdb3dbc31cc2 Mon Sep 17 00:00:00 2001
From: Yuta Hayama <hayama@lineo.co.jp>
Date: Fri, 21 Jul 2023 10:47:02 +0900
Subject: [PATCH] Set interpreter only when necessary

If the given interpreter is already set, nothing needs to be done.
As with modifySoname(), it skips unnecessary processing.

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
Upstream-Status: Submitted [https://github.com/NixOS/patchelf/pull/508]

 src/patchelf.cc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/patchelf.cc b/src/patchelf.cc
index 86429c4..e562c49 100644
--- a/src/patchelf.cc
+++ b/src/patchelf.cc
@@ -1460,6 +1460,11 @@ void ElfFile<ElfFileParamNames>::modifySoname(sonameMode op, const std::string &
 template<ElfFileParams>
 void ElfFile<ElfFileParamNames>::setInterpreter(const std::string & newInterpreter)
 {
+    if (getInterpreter() == newInterpreter) {
+        debug("given interpreter is already set\n");
+        return;
+    }
+
     std::string & section = replaceSection(".interp", newInterpreter.size() + 1);
     setSubstr(section, 0, newInterpreter + '\0');
     changed = true;
