[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