PR25079, "ar s" stopped working
authorAlan Modra <amodra@gmail.com>
Tue, 8 Oct 2019 13:41:28 +0000 (00:11 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 8 Oct 2019 14:07:36 +0000 (00:37 +1030)
's' is both a command and a modifier.  If given as a command then we
aren't lacking an operation.  I think the same goes when mri mode is
selected: any following command line used to be ignored.

PR 25079
* ar.c (decode_options): Don't try for command options if
write_armap or mri_mode is selected.

(cherry picked from commit b7d9d3ee59236d6039d7d7ccd17ff6b47e07a8aa)

binutils/ChangeLog
binutils/ar.c

index 5de9732..aa2516d 100644 (file)
@@ -1,6 +1,11 @@
 2019-10-09  Alan Modra  <amodra@gmail.com>
 
        Apply from master
+       2019-10-09  Alan Modra  <amodra@gmail.com>
+       PR 25079
+       * ar.c (decode_options): Don't try for command options if
+       write_armap or mri_mode is selected.
+
        2019-09-30  Alan Modra  <amodra@gmail.com>
        PR 25046
        * readelf.c (process_program_headers): Clear dynamic_addr and
index 4e953c0..44a4d8f 100644 (file)
@@ -602,7 +602,8 @@ decode_options (int argc, char **argv)
   /* PR 13256: Allow for the possibility that the first command line option
      started with a dash (eg --plugin) but then the following option(s) are
      old style, non-dash-prefixed versions.  */
-  if (operation == none && optind > 0 && optind < argc)
+  if (operation == none && write_armap != 1 && !mri_mode
+      && optind > 0 && optind < argc)
     {
       argv += (optind - 1);
       argc -= (optind - 1);