mirror of
https://git.yoctoproject.org/poky
synced 2026-04-09 02:02:26 +02:00
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. (From OE-Core rev: bcdba091d99f9a3ae67c0ba17fcf27329698a0c0) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user