summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2022-02-11 13:42:54 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-02-11 13:45:04 +0000
commitbcdba091d99f9a3ae67c0ba17fcf27329698a0c0 (patch)
treea0f71d08fb5397afa8f1318743ab68f4b0b5f471 /meta/recipes-devtools
parentf4dbdb9774eb61a71289fe91b017b4caf9c34b16 (diff)
downloadopenembedded-core-contrib-bcdba091d99f9a3ae67c0ba17fcf27329698a0c0.tar.gz
patchelf: Fix corrupted file mode patch
The recent patchelf upgrades corrupted the file permissions patch we carry as upstream inserted an early exit to the funciton. This showed up as corrupted file modes when testing a new uninative tarball containing this patchelf. Rework and tweak the patch to fix this. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools')
-rw-r--r--meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch36
1 files changed, 23 insertions, 13 deletions
diff --git a/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch b/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
index 8d9a50a697..b755a263a4 100644
--- a/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
+++ b/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
@@ -14,11 +14,11 @@ Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
src/patchelf.cc | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
-diff --git a/src/patchelf.cc b/src/patchelf.cc
-index 1aeae88..6b77afe 100644
---- a/src/patchelf.cc
-+++ b/src/patchelf.cc
-@@ -534,9 +534,19 @@ void ElfFile<ElfFileParamNames>::sortShdrs()
+Index: git/src/patchelf.cc
+===================================================================
+--- git.orig/src/patchelf.cc
++++ git/src/patchelf.cc
+@@ -534,9 +534,19 @@ void ElfFile<ElfFileParamNames>::sortShd
static void writeFile(const std::string & fileName, const FileContents & contents)
{
@@ -39,17 +39,27 @@ index 1aeae88..6b77afe 100644
if (fd == -1)
error("open");
-@@ -564,6 +574,10 @@ static void writeFile(const std::string & fileName, const FileContents & content
- if (errno == EINTR)
- return;
- error("close");
+@@ -551,8 +561,6 @@ static void writeFile(const std::string
+ bytesWritten += portion;
+ }
+
+- if (close(fd) >= 0)
+- return;
+ /*
+ * Just ignore EINTR; a retry loop is the wrong thing to do.
+ *
+@@ -561,9 +569,11 @@ static void writeFile(const std::string
+ * http://utcc.utoronto.ca/~cks/space/blog/unix/CloseEINTR
+ * https://sites.google.com/site/michaelsafyan/software-engineering/checkforeintrwheninvokingclosethinkagain
+ */
+- if (errno == EINTR)
+- return;
+- error("close");
++ if ((close(fd) < 0) && errno != EINTR)
++ error("close");
+
+ if (chmod(fileName.c_str(), st.st_mode) != 0)
+ error("chmod");
-+
}
---
-2.25.1
-