binutils: backport a patch to fix file matching problem
cover binutils: backport a patch to fix file matching problem
Fixed accidental build failures when /tmp/ and build dir are on different filesystems:
Assembler messages:
Fatal error: The input and output files must be distinct
// Robert
The following changes since commit 125789b6ee6d47ab84192230f63971c4e22418ba:
cve-check.bbclass: do not download the CVE DB in package-specific tasks (2018-08-15 21:45:10 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib rbt/binutils
http://cgit.openembedded.org/openembedded-core-contrib/log/?h=rbt/binutils
Robert Yang (1):
binutils: Improve check for input file matching output file
meta/recipes-devtools/binutils/binutils-2.31.inc | 1 + ...check-for-input-file-matching-output-file.patch | 59 ++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch
Signature · 1 line
2.7.4
PATCH 1/1 binutils: Improve check for input file matching output file
When the assembler reports that the input and output are the same, report the file names involved, in order to help debugging. Also do not equate two files are the same if the have the same inode value but reside on different file systems.
--- meta/recipes-devtools/binutils/binutils-2.31.inc | 1 + ...check-for-input-file-matching-output-file.patch | 59 ++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch
meta/recipes-devtools/binutils/binutils-2.31.inc +1 -0
@@ -36,6 +36,7 @@ SRC_URI = "\ file://0014-Detect-64-bit-MIPS-targets.patch \ file://0015-sync-with-OE-libtool-changes.patch \ file://0016-add-i386pep-emulation-for-x86_64.patch \ + file://0017-improve-check-for-input-file-matching-output-file.patch \ " S = "${WORKDIR}/git"
meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch new file +59 -0
59 lines not on this page · raw message
Signature · 1 line
2.7.4
Re: [PATCH 1/1] binutils: Improve check for input file matching output file
Quoted 33 lines · Robert Yang
When the assembler reports that the input and output are the same, report the file names involved, in order to help debugging. Also do not equate two files are the same if the have the same inode value but reside on different file systems.
Signed-off-by Robert Yang <[email protected]>--- meta/recipes-devtools/binutils/binutils-2.31.inc | 1 + ...check-for-input-file-matching-output-file.patch | 59 ++++++++++++++++++++++ 2 files changed, 60 insertions(+)create mode 100644
meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patchmeta/recipes-devtools/binutils/binutils-2.31.inc +1
-0@@ -36,6 +36,7 @@ SRC_URI = "\ file://0014-Detect-64-bit-MIPS-targets.patch \ file://0015-sync-with-OE-libtool-changes.patch \ file://0016-add-i386pep-emulation-for-x86_64.patch \ + file://0017-improve-check-for-input-file-matching-output-file.patch \ " S = "${WORKDIR}/git"meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch new file +3
-0@@ -0,0 +1,59 @@ +From 2a50366ded329bfb39d387253450c9d5302c3503 Mon Sep 17 00:00:00 2001 +From: Robert Yang <[email protected]> +Date: Tue, 14 Aug 2018 12:22:35 +0100
meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch line 13
Quoted 10 lines
meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch new file +10
-0+Subject: [PATCH] as.c: Improve check for input file matching output file. + +When the assembler reports that the input and output are the same, report the +file names involved, in order to help debugging. Also do not equate two files +are the same if the have the same inode value but reside on different file +systems. + +Upstream-Status: Backport + +Robert Yang <[email protected]>
Sorry, here missed a SOB, I fixed it in the repo:
// Robert
Quoted 47 lines
meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch new file +46
-0+--- + gas/as.c | 27 ++++++++++++++++++++------- + 2 files changed, 20 insertions(+), 7 deletions(-) + +diff --git a/gas/as.c b/gas/as.c +index b2a908a..3105d06 100644 +--- a/gas/as.c ++++ b/gas/as.c +@@ -1259,14 +1259,27 @@ main (int argc, char ** argv) + { + struct stat sib; + +- if (stat (argv[i], &sib) == 0) ++ /* Check that the input file and output file are different. */ ++ if (stat (argv[i], &sib) == 0 ++ && sib.st_ino == sob.st_ino ++ /* POSIX emulating systems may support stat() but if the ++ underlying file system does not support a file serial number ++ of some kind then they will return 0 for the inode. So ++ two files with an inode of 0 may not actually be the same. ++ On real POSIX systems no ordinary file will ever have an ++ inode of 0. */ ++ && sib.st_ino != 0 ++ /* Different files may have the same inode number if they ++ reside on different devices, so check the st_dev field as ++ well. */ ++ && sib.st_dev == sob.st_dev) + { +- if (sib.st_ino == sob.st_ino && sib.st_ino != 0) +- { +- /* Don't let as_fatal remove the output file! */ +- out_file_name = NULL; +- as_fatal (_("The input and output files must be distinct")); +- } ++ const char *saved_out_file_name = out_file_name; ++ ++ /* Don't let as_fatal remove the output file! */ ++ out_file_name = NULL; ++ as_fatal (_("The input '%s' and output '%s' files are the same"), ++ argv[i], saved_out_file_name); + } + } + } +-- +2.7.4 +
Re: [PATCH 1/1] binutils: Improve check for input file matching output file
Quoted 65 lines · Robert Yang
Quoted 54 lines · Robert Yang
When the assembler reports that the input and output are the same, report the
file names involved, in order to help debugging. Also do not equate two files
are the same if the have the same inode value but reside on different file
systems.Signed-off-by Robert Yang <[email protected]>---
meta/recipes-devtools/binutils/binutils-2.31.inc | 1 + ...check-for-input-file-matching-output-file.patch | 59
++++++++++++++++++++++2 files changed, 60 insertions(+)create mode 100644
meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patchmeta/recipes-devtools/binutils/binutils-2.31.inc +1
-0@@ -36,6 +36,7 @@ SRC_URI = "\ file://0014-Detect-64-bit-MIPS-targets.patch \ file://0015-sync-with-OE-libtool-changes.patch \ file://0016-add-i386pep-emulation-for-x86_64.patch \ + file://0017-improve-check-for-input-file-matching-output-file.patch \"
S = "${WORKDIR}/git"
diff --gita/meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patchb/meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patchnew file mode 100644
index 0000000..6d8d8a3
---/dev/null
+++b/meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patchmeta/recipes-devtools/binutils/binutils-2.31.inc +4
-0@@ -0,0 +1,59 @@ +From 2a50366ded329bfb39d387253450c9d5302c3503 Mon Sep 17 00:00:00 2001 +From: Robert Yang <[email protected]> +Date: Tue, 14 Aug 2018 12:22:35 +0100 +Subject: [PATCH] as.c: Improve check for input file matching outputfile.
meta/recipes-devtools/binutils/binutils-2.31.inc +2
-0+ +When the assembler reports that the input and output are the same,report the
+file names involved, in order to help debugging. Also do not equate two files
+are the same if the have the same inode value but reside on different filemeta/recipes-devtools/binutils/binutils-2.31.inc
Quoted 5 lines
meta/recipes-devtools/binutils/binutils-2.31.inc +5
-0+systems. + +Upstream-Status: Backport + +Robert Yang <[email protected]>Sorry, here missed a SOB, I fixed it in the repo:
Quoted 1 line
Signed-off-by Robert Yang <[email protected]>
patch is ok
Quoted 51 lines
// Robert
Quoted 48 lines
+--- + gas/as.c | 27 ++++++++++++++++++++-------+ 2 files changed, 20 insertions(+), 7 deletions(-)
meta/recipes-devtools/binutils/binutils-2.31.inc +36
-0+ +diff --git a/gas/as.c b/gas/as.c +index b2a908a..3105d06 100644 +--- a/gas/as.c ++++ b/gas/as.c +@@ -1259,14 +1259,27 @@ main (int argc, char ** argv) + { + struct stat sib; + +- if (stat (argv[i], &sib) == 0) ++ /* Check that the input file and output file are different. */ ++ if (stat (argv[i], &sib) == 0 ++ && sib.st_ino == sob.st_ino ++ /* POSIX emulating systems may support stat() but if the ++ underlying file system does not support a file serial number ++ of some kind then they will return 0 for the inode. So ++ two files with an inode of 0 may not actually be the same. ++ On real POSIX systems no ordinary file will ever have an ++ inode of 0. */ ++ && sib.st_ino != 0 ++ /* Different files may have the same inode number if they ++ reside on different devices, so check the st_dev field as ++ well. */ ++ && sib.st_dev == sob.st_dev) + { +- if (sib.st_ino == sob.st_ino && sib.st_ino != 0) +- { +- /* Don't let as_fatal remove the output file! */ +- out_file_name = NULL; +- as_fatal (_("The input and output files must be distinct")); +- } ++ const char *saved_out_file_name = out_file_name; ++ ++ /* Don't let as_fatal remove the output file! */ ++ out_file_name = NULL; ++ as_fatal (_("The input '%s' and output '%s' files are thesame"),
++ argv[i],saved_out_file_name);
+ }
+ }
+ }
+--
+2.7.4
+
✗ patchtest: failure for binutils: backport a patch to fix file matching problem
In reply to Robert Yang== Series Details ==
Series: binutils: backport a patch to fix file matching problem
Revision: 1
URL : https://patchwork.openembedded.org/series/13548/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue A patch file has been added, but does not have a Signed-off-by tag [test_signed_off_by_presence]
Suggested fix Sign off the added patch file (meta/recipes-devtools/binutils/binutils/0017-improve-check-for-input-file-matching-output-file.patch)
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Guidelines: https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe