[Ada] Make gnatbind -M a warning
Arnaud Charlet
charlet@adacore.com
Wed Feb 15 10:17:00 GMT 2006
Tested on i686-linux, committed on trunk
It turns out that some users are relying on the previous gnatbind behavior
to silently accept the -M switch for all configurations, even though this
switch was never intended to be used this way, so it is preferrable to
make the message a warning instead of a fatal error.
2006-02-13 Arnaud Charlet <charlet@adacore.com>
* gnatbind.adb (Scan_Bind_Arg): Replace error by warning on -M and
native platforms.
(Gnatbind): Do not call Exit_Program (E_Success) at the end, so that
finalization can occur normally.
-------------- next part --------------
Index: gnatbind.adb
===================================================================
--- gnatbind.adb (revision 110833)
+++ gnatbind.adb (working copy)
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2005, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2006, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -364,13 +364,14 @@
-- -Mname
elsif Argv'Length >= 3 and then Argv (2) = 'M' then
- if Is_Cross_Compiler then
- Opt.Bind_Alternate_Main_Name := True;
- Opt.Alternate_Main_Name := new String'(Argv (3 .. Argv'Last));
- else
- Fail ("-M option only valid for a cross-compiler");
+ if not Is_Cross_Compiler then
+ Write_Line
+ ("gnatbind: -M not expected to be used on native platforms");
end if;
+ Opt.Bind_Alternate_Main_Name := True;
+ Opt.Alternate_Main_Name := new String'(Argv (3 .. Argv'Last));
+
-- All other options are single character and are handled by
-- Scan_Binder_Switches.
@@ -525,7 +526,9 @@
Write_Str ("GNATBIND ");
Write_Str (Gnat_Version_String);
Write_Eol;
- Write_Str ("Copyright 1995-2005 Free Software Foundation, Inc.");
+ Write_Str ("Copyright 1995-" &
+ Current_Year &
+ ", Free Software Foundation, Inc.");
Write_Eol;
end if;
@@ -720,10 +723,15 @@
if Total_Errors > 0 then
Exit_Program (E_Errors);
+
elsif Total_Warnings > 0 then
Exit_Program (E_Warnings);
+
else
- Exit_Program (E_Success);
+ -- Do not call Exit_Program (E_Success), so that finalization occurs
+ -- normally.
+
+ null;
end if;
end Gnatbind;
More information about the Gcc-patches
mailing list