+2018-04-12 John Darrington <john@darrington.wattle.id.au>
+
+ * as.c (main): Fail if the output is the same as one of the input
+ files.
+ * testsuite/gas/all/gas.exp: Test the new feature.
+
2018-04-12 Nick Clifton <nickc@redhat.com>
* po/es.po: Updated Spanish translation.
main (int argc, char ** argv)
{
char ** argv_orig = argv;
+ struct stat sob;
int macro_strip_at;
/* Call parse_args before any of the init/begin functions
so that switches like --hash-size can be honored. */
parse_args (&argc, &argv);
+
+ if (argc > 1 && stat (out_file_name, &sob) == 0)
+ {
+ int i;
+
+ for (i = 1; i < argc; ++i)
+ {
+ struct stat sib;
+
+ if (stat (argv[i], &sib) == 0)
+ {
+ if (sib.st_ino == sob.st_ino)
+ {
+ /* Don't let as_fatal remove the output file! */
+ out_file_name = NULL;
+ as_fatal (_("The input and output files must be distinct"));
+ }
+ }
+ }
+ }
+
symbol_begin ();
frag_init ();
subsegs_begin ();
gas_test_error "equiv1.s" "" ".equiv for symbol already set to another one"
gas_test_error "equiv2.s" "" ".equiv for symbol already set to an expression"
+gas_test_error "none.s" "-o $srcdir/$subdir/none.s" "Output file must be distinct from input"
+
# .equ works differently on some targets.
case $target_triplet in {
{ hppa*-*-* } { }