annotate gcc/ada/vxlink.adb @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 ------------------------------------------------------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 -- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 -- GNAT COMPILER COMPONENTS --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 -- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 -- V X L I N K --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 -- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 -- B o d y --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 -- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 -- Copyright (C) 2018, AdaCore --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 -- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 -- GNAT is free software; you can redistribute it and/or modify it under --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 -- terms of the GNU General Public License as published by the Free Soft- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 -- for more details. You should have received a copy of the GNU General --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 -- Public License distributed with GNAT; see file COPYING3. If not, go to --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 -- http://www.gnu.org/licenses for a complete copy of the license. --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 -- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 -- GNAT was originally developed by the GNAT team at New York University. --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 -- Extensive contributions were provided by Ada Core Technologies Inc. --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 -- --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 ------------------------------------------------------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 pragma Ada_2012;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 with Ada.Command_Line;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 with Ada.Text_IO;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 with GNAT.Directory_Operations; use GNAT.Directory_Operations;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 with GNAT.Expect; use GNAT.Expect;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 with GNAT.OS_Lib; use GNAT.OS_Lib;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 package body VxLink is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 Target_Triplet : Unbounded_String := Null_Unbounded_String;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 Verbose : Boolean := False;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 Error_State : Boolean := False;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 function Triplet return String;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 -- ??? missing spec
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 function Which (Exe : String) return String;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 -- ??? missing spec
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 -------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 -- Triplet --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 -------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 function Triplet return String is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 if Target_Triplet = Null_Unbounded_String then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 declare
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 Exe : constant String := File_Name (Ada.Command_Line.Command_Name);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 for J in reverse Exe'Range loop
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 if Exe (J) = '-' then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 Target_Triplet := To_Unbounded_String (Exe (Exe'First .. J));
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 exit;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 end loop;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 end;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 return To_String (Target_Triplet);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 end Triplet;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 -----------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 -- Which --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 -----------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 function Which (Exe : String) return String is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 Suffix : GNAT.OS_Lib.String_Access := Get_Executable_Suffix;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 Basename : constant String := Exe & Suffix.all;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 Path : GNAT.OS_Lib.String_Access := Getenv ("PATH");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 Last : Natural := Path'First;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81 Free (Suffix);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 for J in Path'Range loop
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 if Path (J) = Path_Separator then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 declare
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 Full : constant String := Normalize_Pathname
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 (Name => Basename,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 Directory => Path (Last .. J - 1),
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 Resolve_Links => False,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 Case_Sensitive => True);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 if Is_Executable_File (Full) then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93 Free (Path);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 return Full;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
97 end;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
98
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
99 Last := J + 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
100 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
101 end loop;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
102
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
103 Free (Path);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
104
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
105 return "";
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
106 end Which;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
107
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
108 -----------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
109 -- Set_Verbose --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
110 -----------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
111
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
112 procedure Set_Verbose (Value : Boolean) is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
113 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
114 Verbose := Value;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
115 end Set_Verbose;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
116
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
117 ----------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
118 -- Is_Verbose --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
119 ----------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
120
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
121 function Is_Verbose return Boolean is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
122 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
123 return Verbose;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
124 end Is_Verbose;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
125
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
126 ---------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
127 -- Set_Error_State --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
128 ---------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
129
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
130 procedure Set_Error_State (Message : String) is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
131 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
132 Log_Error ("Error: " & Message);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
133 Error_State := True;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
134 Ada.Command_Line.Set_Exit_Status (1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
135 end Set_Error_State;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
136
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
137 --------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
138 -- Is_Error_State --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
139 --------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
140
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
141 function Is_Error_State return Boolean is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
142 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
143 return Error_State;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
144 end Is_Error_State;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
145
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
146 --------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
147 -- Log_Info --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
148 --------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
149
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
150 procedure Log_Info (S : String) is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
151 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
152 if Verbose then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
153 Ada.Text_IO.Put_Line (S);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
154 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
155 end Log_Info;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
156
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
157 ---------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
158 -- Log_Error --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
159 ---------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
160
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
161 procedure Log_Error (S : String) is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
162 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
163 Ada.Text_IO.Put_Line (Ada.Text_IO.Standard_Error, S);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
164 end Log_Error;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
165
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
166 ---------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
167 -- Run --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
168 ---------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
169
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
170 procedure Run (Arguments : Arguments_List) is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
171 Output : constant String := Run (Arguments);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
172 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
173 if not Is_Error_State then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
174 -- In case of erroneous execution, the function version of run will
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
175 -- have already displayed the output
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
176 Ada.Text_IO.Put (Output);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
177 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
178 end Run;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
179
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
180 ---------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
181 -- Run --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
182 ---------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
183
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
184 function Run (Arguments : Arguments_List) return String is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
185 Args : GNAT.OS_Lib.Argument_List_Access :=
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
186 new GNAT.OS_Lib.Argument_List
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
187 (1 .. Natural (Arguments.Length) - 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
188 Base : constant String := Base_Name (Arguments.First_Element);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
189
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
190 Debug_Line : Unbounded_String;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
191 Add_Quotes : Boolean;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
192
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
193 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
194 if Verbose then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
195 Append (Debug_Line, Base);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
196 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
197
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
198 for J in Arguments.First_Index + 1 .. Arguments.Last_Index loop
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
199 declare
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
200 Arg : String renames Arguments.Element (J);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
201 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
202 Args (J - 1) := new String'(Arg);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
203
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
204 if Verbose then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
205 Add_Quotes := False;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
206
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
207 for K in Arg'Range loop
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
208 if Arg (K) = ' ' then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
209 Add_Quotes := True;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
210 exit;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
211 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
212 end loop;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
213
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
214 Append (Debug_Line, ' ');
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
215
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
216 if Add_Quotes then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
217 Append (Debug_Line, '"' & Arg & '"');
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
218 else
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
219 Append (Debug_Line, Arg);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
220 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
221 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
222 end;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
223 end loop;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
224
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
225 if Verbose then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
226 Ada.Text_IO.Put_Line (To_String (Debug_Line));
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
227 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
228
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
229 declare
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
230 Status : aliased Integer := 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
231 Ret : constant String :=
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
232 Get_Command_Output
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
233 (Command => Arguments.First_Element,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
234 Arguments => Args.all,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
235 Input => "",
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
236 Status => Status'Access,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
237 Err_To_Out => True);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
238
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
239 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
240 GNAT.OS_Lib.Free (Args);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
241
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
242 if Status /= 0 then
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
243 Ada.Text_IO.Put_Line (Ret);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
244 Set_Error_State
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
245 (Base_Name (Arguments.First_Element) &
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
246 " returned" & Status'Image);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
247 end if;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
248
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
249 return Ret;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
250 end;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
251 end Run;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
252
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
253 ---------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
254 -- Gcc --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
255 ---------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
256
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
257 function Gcc return String is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
258 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
259 return Which (Triplet & "gcc");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
260 end Gcc;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
261
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
262 ---------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
263 -- Gxx --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
264 ---------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
265
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
266 function Gxx return String is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
267 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
268 return Which (Triplet & "g++");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
269 end Gxx;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
270
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
271 --------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
272 -- Nm --
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
273 --------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
274
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
275 function Nm return String is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
276 begin
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
277 return Which (Triplet & "nm");
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
278 end Nm;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
279
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
280 end VxLink;