From: Nick Clifton Date: Mon, 5 Oct 2020 12:53:59 +0000 (+0100) Subject: Update the BFD linker so that it deprecates grouped short options. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=983d925db6a09ac90f6bed90be16eb69267b58e0;p=binutils-gdb.git Update the BFD linker so that it deprecates grouped short options. * lexsup.c (parse_args): Generate an error or warning message when multiple short options are used together. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index a6beac08449..0d5953a11b7 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2020-10-05 Nick Clifton + + * lexsup.c (parse_args): Generate an error or warning message when + multiple short options are used together. + 2020-10-01 H.J. Lu PR 26681 diff --git a/ld/lexsup.c b/ld/lexsup.c index b8f066745f3..68943994846 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -735,6 +735,20 @@ parse_args (unsigned argc, char **argv) optind = last_optind; optc = getopt_long (argc, argv, "-", really_longopts, &longind); } + /* Attempt to detect grouped short options, eg: "-non-start". + Accepting such options is error prone as it is not clear if the user + intended "-n -o n-start" or "--non-start". */ + else if (longind == 0 /* This is a short option. */ + && optc > 32 /* It is a valid option. */ + /* The character is not the second character of argv[last_optind]. */ + && optc != argv[last_optind][1]) + { + if (optarg) + einfo (_("%F%P: Error: unable to disambiguate: %s (did you mean -%s ?)\n"), + argv[last_optind], argv[last_optind]); + else + einfo (_("%P: Warning: grouped short command line options are deprecated: %s\n"), argv[last_optind]); + } if (ldemul_handle_option (optc)) continue;