aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2020-03-06 10:44:12 +0000
committerNick Clifton <nickc@redhat.com>2020-03-06 10:44:12 +0000
commit3c968de5c7d1719b2f9b538f2f7f5f5922e5f311 (patch)
tree1b8d480e10ef3daec9459d1d97ef6aee90bea959 /gas
parenta0dcf2970562c19140460a07b2c987714639cd7b (diff)
downloadbinutils-3c968de5c7d1719b2f9b538f2f7f5f5922e5f311.zip
binutils-3c968de5c7d1719b2f9b538f2f7f5f5922e5f311.tar.gz
binutils-3c968de5c7d1719b2f9b538f2f7f5f5922e5f311.tar.bz2
Stop the assembler from complaining that the input and output files are the same, if neither of them are regular files.
PR 25572 * as.c (main): Allow matching input and outputs when they are not regular files.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/as.c8
2 files changed, 13 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index f81ec12..e2984b5 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2020-03-06 Nick Clifton <nickc@redhat.com>
+
+ PR 25572
+ * as.c (main): Allow matching input and outputs when they are
+ not regular files.
+
2020-03-06 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (match_mem_size): Generalize broadcast special
diff --git a/gas/as.c b/gas/as.c
index d8d20cc..51bb721 100644
--- a/gas/as.c
+++ b/gas/as.c
@@ -1290,7 +1290,13 @@ main (int argc, char ** argv)
/* 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)
+ && sib.st_dev == sob.st_dev
+ /* PR 25572: Only check regular files. Devices, sockets and so
+ on might actually work as both input and output. Plus there
+ is a use case for using /dev/null as both input and output
+ when checking for command line option support in a script:
+ as --foo /dev/null -o /dev/null; if $? then ... */
+ && S_ISREG (sib.st_mode))
{
const char *saved_out_file_name = out_file_name;