------------------------------------------------------------------------------ -- -- -- GNATSTUB COMPONENTS -- -- -- -- G N A T S T U B . D R I V E R -- -- -- -- B o d y -- -- -- -- Copyright (C) 1997-2017, Free Software Foundation, Inc. -- -- -- -- Gnatstub is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- -- Software Foundation; either version 2, or (at your option) any later -- -- version. Gnatstub is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of MER- -- -- CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -- -- Public License for more details. You should have received a copy of the -- -- GNU General Public License distributed with GNAT; see file COPYING. If -- -- not, write to the Free Software Foundation, 51 Franklin Street, Fifth -- -- Floor, Boston, MA 02110-1301, USA. -- -- -- -- Gnatstub is distributed as a part of the ASIS implementation for GNAT -- -- (ASIS-for-GNAT). -- -- -- -- Gnatstub was originally developed by Alexei Kuchumov as a part of -- -- collaboration between Software Engineering Laboratory of the Swiss -- -- Federal Institute of Technology in Lausanne, Switzerland, and the -- -- Scientific Research Computer Center of the Moscow State University, -- -- Russia. This work was supported by a grant from the Swiss National -- -- Science Foundation, no 7SUPJ048247, funding a project "Development of -- -- ASIS for GNAT with industry quality". -- -- -- -- Gnatstub is now maintained by AdaCore (http://www.adacore.com). -- ------------------------------------------------------------------------------ with Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.Text_IO; with ASIS_UL.Common; use ASIS_UL.Common; with Gnatstub.Sampler; use Gnatstub.Sampler; with Gnatstub.Options; use Gnatstub.Options; procedure Gnatstub.Driver is begin Initialize; if not Initialized then return; end if; Create_Sample; Clean_Up; Gnatstub_Prj.Clean_Up; exception when Fatal_Error | Parameter_Error => -- Everything has already been reported Clean_Up; Gnatstub_Prj.Clean_Up; Ada.Command_Line.Set_Exit_Status (Ada.Command_Line.Failure); when Ex : others => Ada.Command_Line.Set_Exit_Status (Ada.Command_Line.Failure); declare Tmp_Output : constant File_Access := Current_Output; begin Set_Output (Standard_Error); New_Line; if Exception_Identity (Ex) = Program_Error'Identity and then Exception_Message (Ex) = "Inconsistent versions of GNAT and ASIS" then Put ("gnatstub is inconsistent with the GNAT version"); New_Line; Put ("Check your installation of GNAT, ASIS and the GNAT toolset"); New_Line; else Put ("Unexpected bug in gnatstub - "); Put (Exception_Name (Ex)); Put (" was raised: "); if Exception_Message (Ex)'Length = 0 then Put_Line ("(no exception message)"); else Put_Line (Exception_Message (Ex)); end if; Put_Line ("Please report to report@adacore.com"); Set_Output (Tmp_Output.all); end if; end; Clean_Up; Gnatstub_Prj.Clean_Up; end Gnatstub.Driver;