Hi! These 3 *.opt messages are printed using: opts-common.c: error_at (loc, option->missing_argument_error, opt); opts-common.c: error_at (loc, e->unknown_error, arg); opts-common.c: warning_at (loc, 0, decoded->warn_message, opt); and so they do support the various gcc-internal-format format string specifiers like %<, %>, %qs etc.
The following patch tweaks exgettext so that it marks them as such and also adjusts c.opt so that it passes contrib/check-internal-format-escaping.py after such a change. Tested on x86_64-linux using make gcc.pot, eyeballing the resulting file and trying ./xgcc -B ./ -S hello.c -fhandle-exceptions Ok for trunk? 2019-04-11 Jakub Jelinek <ja...@redhat.com> PR translation/90041 * po/exgettext: Print MissingArgError, UnknownError or Warn *.opt argument using error or warning instead of _ to mark it as gcc-internal-format. * c.opt (-fhandle-exceptions): Use %< and %> around option names in the Warn diagnostics. --- gcc/po/exgettext.jj 2019-01-01 12:37:21.728899953 +0100 +++ gcc/po/exgettext 2019-04-11 13:39:14.361331358 +0200 @@ -252,7 +252,7 @@ echo "scanning option files..." >&2 } else sub("\\).*", "", line) printf("#line %d \"%s\"\n", lineno, file) - printf("_(\"%s\")\n", line) + printf("error(\"%s\")\n", line) } if ((field == 1) && /UnknownError/) { line = $0 @@ -263,7 +263,7 @@ echo "scanning option files..." >&2 } else sub("\\).*", "", line) printf("#line %d \"%s\"\n", lineno, file) - printf("_(\"%s\")\n", line) + printf("error(\"%s\")\n", line) } if ((field == 1) && /Warn\(/) { line = $0 @@ -274,7 +274,7 @@ echo "scanning option files..." >&2 } else sub("\\).*", "", line) printf("#line %d \"%s\"\n", lineno, file) - printf("_(\"%s\")\n", line) + printf("warning(0, \"%s\")\n", line) } if (field == 2) { line = $0 --- gcc/c-family/c.opt.jj 2019-03-22 15:39:58.149990452 +0100 +++ gcc/c-family/c.opt 2019-04-11 14:06:38.234474269 +0200 @@ -1516,7 +1516,7 @@ fguiding-decls C++ ObjC++ Deprecated fhandle-exceptions -C++ ObjC++ Optimization Alias(fexceptions) Warn({-fhandle-exceptions has been renamed -fexceptions (and is now on by default)}) +C++ ObjC++ Optimization Alias(fexceptions) Warn({%<-fhandle-exceptions%> has been renamed %<-fexceptions%> (and is now on by default)}) fhonor-std C++ ObjC++ Deprecated Jakub