When a compilation switch is wrongly passed to GNATprove without the
leading hyphen, this patch issues a clear error message instead of the
obscure 'usage' message previously displayed.
There is no impact on compilation.
Tested on x86_64-pc-linux-gnu, committed on trunk
2018-12-11 Yannick Moy <m...@adacore.com>
gcc/ada/
* gnat1drv.adb (Gnat1drv): Issue specific error message in
GNATprove mode when multiple file names on the command line.
* osint.adb, osint.ads (Dump_Command_Line_Source_File_Names):
New procedure to print file names on the command line.
--- gcc/ada/gnat1drv.adb
+++ gcc/ada/gnat1drv.adb
@@ -1161,8 +1161,21 @@ begin
-- gnat1 is invoked from gcc in the normal case.
if Osint.Number_Of_Files /= 1 then
- Usage;
- Write_Eol;
+
+ -- In GNATprove mode, gcc is not called, so we may end up with
+ -- switches wrongly interpreted as source file names when they are
+ -- written by mistake without a starting hyphen. Issue a specific
+ -- error message but do not print the internal 'usage' message.
+
+ if GNATprove_Mode then
+ Write_Str ("one of the following is not a valid switch"
+ & " or source file name: ");
+ Osint.Dump_Command_Line_Source_File_Names;
+ else
+ Usage;
+ Write_Eol;
+ end if;
+
Osint.Fail ("you must provide one source file");
elsif Usage_Requested then
--- gcc/ada/osint.adb
+++ gcc/ada/osint.adb
@@ -787,6 +787,17 @@ package body Osint is
end if;
end Dir_In_Src_Search_Path;
+ -----------------------------------------
+ -- Dump_Command_Line_Source_File_Names --
+ -----------------------------------------
+
+ procedure Dump_Command_Line_Source_File_Names is
+ begin
+ for J in 1 .. Number_Of_Files loop
+ Write_Str (File_Names (J).all & " ");
+ end loop;
+ end Dump_Command_Line_Source_File_Names;
+
----------------------------
-- Dump_Source_File_Names --
----------------------------
--- gcc/ada/osint.ads
+++ gcc/ada/osint.ads
@@ -508,6 +508,9 @@ package Osint is
-- (i.e. Include_Dir_Default_Prefix). The text is sent to whatever Output
-- is currently using (e.g. standard output or standard error).
+ procedure Dump_Command_Line_Source_File_Names;
+ -- Prints out the names of all source files on the command-line
+
-------------------------------------------
-- Representation of Library Information --
-------------------------------------------