Commit a113c55d by Arnaud Charlet

[multiple changes]

2010-09-10  Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Add new GNAT BIND qualifiers /32_MALLOC (for -H32) and
	/64_MALLOC (for -H64).

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Error_Msg_Internal): Test Parsing_Main_Subunit flag
	(Error_Msg_NW): Test Parsing_Main_Subunit flag
	* errout.ads (Parsing_Main_Subunit): New flag
	* lib-load.adb (Load_Unit): Set Parsing_Main_Subunit flag
	* par-ch6.adb: Minor style fix (remove redandant parentheses)
	* par-ch9.adb: Minor style fix (remove redundant parens)
	* par-load.adb: (Load): Deal with setting Parsing_Main_Subunit

2010-09-10  Vincent Celier  <celier@adacore.com>

	* make.adb (Create_Binder_Mapping_File): Remove procedure. Replaced by
	function of the same name in Makeutl.
	(Gnatmake): Call function Create_Binder_Mapping_File in Makeutl, instead
	of removed procedure when creating a binder mapping file.
	* makeutl.adb (Create_Binder_Mapping_File): New function. Was a
	procedure in Make.
	* makeutl.ads (Create_Binder_Mapping_File): New function

From-SVN: r164176
parent 08564036
2010-09-10 Vincent Celier <celier@adacore.com>
* vms_data.ads: Add new GNAT BIND qualifiers /32_MALLOC (for -H32) and
/64_MALLOC (for -H64).
2010-09-10 Robert Dewar <dewar@adacore.com>
* errout.adb (Error_Msg_Internal): Test Parsing_Main_Subunit flag
(Error_Msg_NW): Test Parsing_Main_Subunit flag
* errout.ads (Parsing_Main_Subunit): New flag
* lib-load.adb (Load_Unit): Set Parsing_Main_Subunit flag
* par-ch6.adb: Minor style fix (remove redandant parentheses)
* par-ch9.adb: Minor style fix (remove redundant parens)
* par-load.adb: (Load): Deal with setting Parsing_Main_Subunit
2010-09-10 Vincent Celier <celier@adacore.com>
* make.adb (Create_Binder_Mapping_File): Remove procedure. Replaced by
function of the same name in Makeutl.
(Gnatmake): Call function Create_Binder_Mapping_File in Makeutl, instead
of removed procedure when creating a binder mapping file.
* makeutl.adb (Create_Binder_Mapping_File): New function. Was a
procedure in Make.
* makeutl.ads (Create_Binder_Mapping_File): New function
2010-09-10 Jose Ruiz <ruiz@adacore.com> 2010-09-10 Jose Ruiz <ruiz@adacore.com>
* exp_cg.adb (Is_Predefined_Dispatching_Operation): Add the "__" scope * exp_cg.adb (Is_Predefined_Dispatching_Operation): Add the "__" scope
......
...@@ -748,7 +748,9 @@ package body Errout is ...@@ -748,7 +748,9 @@ package body Errout is
-- If the flag location is in the main extended source unit then for -- If the flag location is in the main extended source unit then for
-- sure we want the warning since it definitely belongs -- sure we want the warning since it definitely belongs
if In_Extended_Main_Source_Unit (Sptr) then if Parsing_Main_Subunit
or else In_Extended_Main_Source_Unit (Sptr)
then
null; null;
-- If the flag location is not in the main extended source unit, then -- If the flag location is not in the main extended source unit, then
...@@ -1157,7 +1159,8 @@ package body Errout is ...@@ -1157,7 +1159,8 @@ package body Errout is
is is
begin begin
if Eflag if Eflag
and then In_Extended_Main_Source_Unit (N) and then (Parsing_Main_Subunit
or else In_Extended_Main_Source_Unit (N))
and then Comes_From_Source (N) and then Comes_From_Source (N)
then then
Error_Msg_NEL (Msg, N, N, Sloc (N)); Error_Msg_NEL (Msg, N, N, Sloc (N));
......
...@@ -63,9 +63,17 @@ package Errout is ...@@ -63,9 +63,17 @@ package Errout is
type Compiler_State_Type is (Parsing, Analyzing); type Compiler_State_Type is (Parsing, Analyzing);
Compiler_State : Compiler_State_Type; Compiler_State : Compiler_State_Type;
-- Indicates current state of compilation. This is put in the Errout spec -- Indicates current state of compilation. This is put in the Errout spec
-- because it affects the action of the error message handling. In -- because it affects the handling of error messages. In particular, an
-- particular, an attempt is made by Errout to suppress cascaded error -- attempt is made by Errout to suppress cascaded error messages in Parsing
-- messages in Parsing mode, but not in the other modes. -- mode, but not in the other modes.
Parsing_Main_Subunit : Boolean := False;
-- Set True if we are currently parsing a subunit that is part of the main
-- extended source. We need this flag, since the In_Main_Extended_Source
-- test may produce an improper False value if called too early during the
-- parsing process. This is put in the Errout spec because it affects error
-- message handling. In particular, warnings and style messages during
-- parsing are only generated if this flag is set to True.
Current_Error_Source_File : Source_File_Index Current_Error_Source_File : Source_File_Index
renames Err_Vars.Current_Error_Source_File; renames Err_Vars.Current_Error_Source_File;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- -- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -513,7 +513,6 @@ package body Lib.Load is ...@@ -513,7 +513,6 @@ package body Lib.Load is
-- See if we already have an entry for this unit -- See if we already have an entry for this unit
Unum := Main_Unit; Unum := Main_Unit;
while Unum <= Units.Last loop while Unum <= Units.Last loop
exit when Uname_Actual = Units.Table (Unum).Unit_Name; exit when Uname_Actual = Units.Table (Unum).Unit_Name;
Unum := Unum + 1; Unum := Unum + 1;
...@@ -658,12 +657,22 @@ package body Lib.Load is ...@@ -658,12 +657,22 @@ package body Lib.Load is
-- Parse the new unit -- Parse the new unit
declare declare
Save_Index : constant Nat := Multiple_Unit_Index; Save_Index : constant Nat := Multiple_Unit_Index;
Save_PMS : constant Boolean := Parsing_Main_Subunit;
begin begin
Multiple_Unit_Index := Get_Unit_Index (Uname_Actual); Multiple_Unit_Index := Get_Unit_Index (Uname_Actual);
Units.Table (Unum).Munit_Index := Multiple_Unit_Index; Units.Table (Unum).Munit_Index := Multiple_Unit_Index;
Initialize_Scanner (Unum, Source_Index (Unum)); Initialize_Scanner (Unum, Source_Index (Unum));
if Calling_Unit = Main_Unit and then Subunit then
Parsing_Main_Subunit := True;
end if;
Discard_List (Par (Configuration_Pragmas => False)); Discard_List (Par (Configuration_Pragmas => False));
Parsing_Main_Subunit := Save_PMS;
Multiple_Unit_Index := Save_Index; Multiple_Unit_Index := Save_Index;
Set_Loading (Unum, False); Set_Loading (Unum, False);
end; end;
......
...@@ -4136,10 +4136,6 @@ package body Make is ...@@ -4136,10 +4136,6 @@ package body Make is
-- Check that the main subprograms do exist and that they all -- Check that the main subprograms do exist and that they all
-- belong to the same project file. -- belong to the same project file.
procedure Create_Binder_Mapping_File
(Args : in out Argument_List; Last_Arg : in out Natural);
-- Create a binder mapping file and add the necessary switch
----------------- -----------------
-- Check_Mains -- -- Check_Mains --
----------------- -----------------
...@@ -4282,185 +4278,6 @@ package body Make is ...@@ -4282,185 +4278,6 @@ package body Make is
end loop; end loop;
end Check_Mains; end Check_Mains;
--------------------------------
-- Create_Binder_Mapping_File --
--------------------------------
procedure Create_Binder_Mapping_File
(Args : in out Argument_List; Last_Arg : in out Natural)
is
Mapping_FD : File_Descriptor := Invalid_FD;
-- A File Descriptor for an eventual mapping file
ALI_Unit : Unit_Name_Type := No_Unit_Name;
-- The unit name of an ALI file
ALI_Name : File_Name_Type := No_File;
-- The file name of the ALI file
ALI_Project : Project_Id := No_Project;
-- The project of the ALI file
Bytes : Integer;
OK : Boolean := True;
Unit : Unit_Index;
Status : Boolean;
-- For call to Close
begin
Tempdir.Create_Temp_File (Mapping_FD, Mapping_Path);
Record_Temp_File (Project_Tree, Mapping_Path);
if Mapping_FD /= Invalid_FD then
-- Traverse all units
Unit := Units_Htable.Get_First (Project_Tree.Units_HT);
while Unit /= No_Unit_Index loop
if Unit.Name /= No_Name then
-- If there is a body, put it in the mapping
if Unit.File_Names (Impl) /= No_Source
and then Unit.File_Names (Impl).Project /=
No_Project
then
Get_Name_String (Unit.Name);
Add_Str_To_Name_Buffer ("%b");
ALI_Unit := Name_Find;
ALI_Name :=
Lib_File_Name
(Unit.File_Names (Impl).Display_File);
ALI_Project := Unit.File_Names (Impl).Project;
-- Otherwise, if there is a spec, put it in the mapping
elsif Unit.File_Names (Spec) /= No_Source
and then Unit.File_Names (Spec).Project /= No_Project
then
Get_Name_String (Unit.Name);
Add_Str_To_Name_Buffer ("%s");
ALI_Unit := Name_Find;
ALI_Name :=
Lib_File_Name
(Unit.File_Names (Spec).Display_File);
ALI_Project := Unit.File_Names (Spec).Project;
else
ALI_Name := No_File;
end if;
-- If we have something to put in the mapping then do it
-- now. However, if the project is extended, we don't put
-- anything in the mapping file, because we don't know where
-- the ALI file is: it might be in the extended project
-- object directory as well as in the extending project
-- object directory.
if ALI_Name /= No_File
and then ALI_Project.Extended_By = No_Project
and then ALI_Project.Extends = No_Project
then
-- First check if the ALI file exists. If it does not,
-- do not put the unit in the mapping file.
declare
ALI : constant String := Get_Name_String (ALI_Name);
begin
-- For library projects, use the library directory,
-- for other projects, use the object directory.
if ALI_Project.Library then
Get_Name_String (ALI_Project.Library_Dir.Name);
else
Get_Name_String
(ALI_Project.Object_Directory.Display_Name);
end if;
if not
Is_Directory_Separator (Name_Buffer (Name_Len))
then
Add_Char_To_Name_Buffer (Directory_Separator);
end if;
Add_Str_To_Name_Buffer (ALI);
Add_Char_To_Name_Buffer (ASCII.LF);
declare
ALI_Path_Name : constant String :=
Name_Buffer (1 .. Name_Len);
begin
if Is_Regular_File
(ALI_Path_Name (1 .. ALI_Path_Name'Last - 1))
then
-- First line is the unit name
Get_Name_String (ALI_Unit);
Add_Char_To_Name_Buffer (ASCII.LF);
Bytes :=
Write
(Mapping_FD,
Name_Buffer (1)'Address,
Name_Len);
OK := Bytes = Name_Len;
exit when not OK;
-- Second line it the ALI file name
Get_Name_String (ALI_Name);
Add_Char_To_Name_Buffer (ASCII.LF);
Bytes :=
Write
(Mapping_FD,
Name_Buffer (1)'Address,
Name_Len);
OK := (Bytes = Name_Len);
exit when not OK;
-- Third line it the ALI path name
Bytes :=
Write
(Mapping_FD,
ALI_Path_Name (1)'Address,
ALI_Path_Name'Length);
OK := (Bytes = ALI_Path_Name'Length);
-- If OK is False, it means we were unable to
-- write a line. No point in continuing with the
-- other units.
exit when not OK;
end if;
end;
end;
end if;
end if;
Unit := Units_Htable.Get_Next (Project_Tree.Units_HT);
end loop;
Close (Mapping_FD, Status);
OK := OK and Status;
-- If the creation of the mapping file was successful, we add the
-- switch to the arguments of gnatbind.
if OK then
Last_Arg := Last_Arg + 1;
Args (Last_Arg) :=
new String'("-F=" & Get_Name_String (Mapping_Path));
end if;
end if;
end Create_Binder_Mapping_File;
-- Start of processing for Gnatmake -- Start of processing for Gnatmake
-- This body is very long, should be broken down??? -- This body is very long, should be broken down???
...@@ -6013,7 +5830,13 @@ package body Make is ...@@ -6013,7 +5830,13 @@ package body Make is
-- If switch -C was specified, create a binder mapping file -- If switch -C was specified, create a binder mapping file
if Create_Mapping_File then if Create_Mapping_File then
Create_Binder_Mapping_File (Args, Last_Arg); Mapping_Path := Create_Binder_Mapping_File;
if Mapping_Path /= No_Path then
Last_Arg := Last_Arg + 1;
Args (Last_Arg) :=
new String'("-F=" & Get_Name_String (Mapping_Path));
end if;
end if; end if;
end if; end if;
......
...@@ -34,6 +34,7 @@ with Prj.Ext; ...@@ -34,6 +34,7 @@ with Prj.Ext;
with Prj.Util; with Prj.Util;
with Snames; use Snames; with Snames; use Snames;
with Table; with Table;
with Tempdir;
with Ada.Command_Line; use Ada.Command_Line; with Ada.Command_Line; use Ada.Command_Line;
...@@ -295,6 +296,183 @@ package body Makeutl is ...@@ -295,6 +296,183 @@ package body Makeutl is
return True; return True;
end Check_Source_Info_In_ALI; end Check_Source_Info_In_ALI;
--------------------------------
-- Create_Binder_Mapping_File --
--------------------------------
function Create_Binder_Mapping_File return Path_Name_Type is
Mapping_Path : Path_Name_Type := No_Path;
Mapping_FD : File_Descriptor := Invalid_FD;
-- A File Descriptor for an eventual mapping file
ALI_Unit : Unit_Name_Type := No_Unit_Name;
-- The unit name of an ALI file
ALI_Name : File_Name_Type := No_File;
-- The file name of the ALI file
ALI_Project : Project_Id := No_Project;
-- The project of the ALI file
Bytes : Integer;
OK : Boolean := False;
Unit : Unit_Index;
Status : Boolean;
-- For call to Close
begin
Tempdir.Create_Temp_File (Mapping_FD, Mapping_Path);
Record_Temp_File (Project_Tree, Mapping_Path);
if Mapping_FD /= Invalid_FD then
OK := True;
-- Traverse all units
Unit := Units_Htable.Get_First (Project_Tree.Units_HT);
while Unit /= No_Unit_Index loop
if Unit.Name /= No_Name then
-- If there is a body, put it in the mapping
if Unit.File_Names (Impl) /= No_Source
and then Unit.File_Names (Impl).Project /= No_Project
then
Get_Name_String (Unit.Name);
Add_Str_To_Name_Buffer ("%b");
ALI_Unit := Name_Find;
ALI_Name :=
Lib_File_Name (Unit.File_Names (Impl).Display_File);
ALI_Project := Unit.File_Names (Impl).Project;
-- Otherwise, if there is a spec, put it in the mapping
elsif Unit.File_Names (Spec) /= No_Source
and then Unit.File_Names (Spec).Project /= No_Project
then
Get_Name_String (Unit.Name);
Add_Str_To_Name_Buffer ("%s");
ALI_Unit := Name_Find;
ALI_Name :=
Lib_File_Name (Unit.File_Names (Spec).Display_File);
ALI_Project := Unit.File_Names (Spec).Project;
else
ALI_Name := No_File;
end if;
-- If we have something to put in the mapping then do it now.
-- However, if the project is extended, we don't put anything
-- in the mapping file, since we don't know where the ALI file
-- is: it might be in the extended project object directory as
-- well as in the extending project object directory.
if ALI_Name /= No_File
and then ALI_Project.Extended_By = No_Project
and then ALI_Project.Extends = No_Project
then
-- First check if the ALI file exists. If it does not, do
-- not put the unit in the mapping file.
declare
ALI : constant String := Get_Name_String (ALI_Name);
begin
-- For library projects, use the library ALI directory,
-- for other projects, use the object directory.
if ALI_Project.Library then
Get_Name_String
(ALI_Project.Library_ALI_Dir.Display_Name);
else
Get_Name_String
(ALI_Project.Object_Directory.Display_Name);
end if;
if not
Is_Directory_Separator (Name_Buffer (Name_Len))
then
Add_Char_To_Name_Buffer (Directory_Separator);
end if;
Add_Str_To_Name_Buffer (ALI);
Add_Char_To_Name_Buffer (ASCII.LF);
declare
ALI_Path_Name : constant String :=
Name_Buffer (1 .. Name_Len);
begin
if Is_Regular_File
(ALI_Path_Name (1 .. ALI_Path_Name'Last - 1))
then
-- First line is the unit name
Get_Name_String (ALI_Unit);
Add_Char_To_Name_Buffer (ASCII.LF);
Bytes :=
Write
(Mapping_FD,
Name_Buffer (1)'Address,
Name_Len);
OK := Bytes = Name_Len;
exit when not OK;
-- Second line it the ALI file name
Get_Name_String (ALI_Name);
Add_Char_To_Name_Buffer (ASCII.LF);
Bytes :=
Write
(Mapping_FD,
Name_Buffer (1)'Address,
Name_Len);
OK := (Bytes = Name_Len);
exit when not OK;
-- Third line it the ALI path name
Bytes :=
Write
(Mapping_FD,
ALI_Path_Name (1)'Address,
ALI_Path_Name'Length);
OK := (Bytes = ALI_Path_Name'Length);
-- If OK is False, it means we were unable to
-- write a line. No point in continuing with the
-- other units.
exit when not OK;
end if;
end;
end;
end if;
end if;
Unit := Units_Htable.Get_Next (Project_Tree.Units_HT);
end loop;
Close (Mapping_FD, Status);
OK := OK and Status;
end if;
-- If the creation of the mapping file was successful, we add the switch
-- to the arguments of gnatbind.
if OK then
return Mapping_Path;
else
return No_Path;
end if;
end Create_Binder_Mapping_File;
----------------- -----------------
-- Create_Name -- -- Create_Name --
----------------- -----------------
......
...@@ -70,6 +70,9 @@ package Makeutl is ...@@ -70,6 +70,9 @@ package Makeutl is
Last : in out Natural); Last : in out Natural);
-- Add a string to a list of strings -- Add a string to a list of strings
function Create_Binder_Mapping_File return Path_Name_Type;
-- Create a binder mapping file and returns its path name
function Create_Name (Name : String) return File_Name_Type; function Create_Name (Name : String) return File_Name_Type;
function Create_Name (Name : String) return Name_Id; function Create_Name (Name : String) return Name_Id;
function Create_Name (Name : String) return Path_Name_Type; function Create_Name (Name : String) return Path_Name_Type;
......
...@@ -211,7 +211,7 @@ package body Ch6 is ...@@ -211,7 +211,7 @@ package body Ch6 is
Is_Overriding := True; Is_Overriding := True;
end if; end if;
if (Is_Overriding or else Not_Overriding) then if Is_Overriding or else Not_Overriding then
-- Note that if we are not in Ada_05 mode, error messages have -- Note that if we are not in Ada_05 mode, error messages have
-- already been given, so no need to give another message here. -- already been given, so no need to give another message here.
......
...@@ -639,7 +639,7 @@ package body Ch9 is ...@@ -639,7 +639,7 @@ package body Ch9 is
Is_Overriding := True; Is_Overriding := True;
end if; end if;
if (Is_Overriding or else Not_Overriding) then if Is_Overriding or else Not_Overriding then
if Ada_Version < Ada_05 then if Ada_Version < Ada_05 then
Error_Msg_SP ("overriding indicator is an Ada 2005 extension"); Error_Msg_SP ("overriding indicator is an Ada 2005 extension");
Error_Msg_SP ("\unit must be compiled with -gnat05 switch"); Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
...@@ -823,7 +823,7 @@ package body Ch9 is ...@@ -823,7 +823,7 @@ package body Ch9 is
Is_Overriding := True; Is_Overriding := True;
end if; end if;
if (Is_Overriding or else Not_Overriding) then if Is_Overriding or else Not_Overriding then
if Ada_Version < Ada_05 then if Ada_Version < Ada_05 then
Error_Msg_SP ("overriding indicator is an Ada 2005 extension"); Error_Msg_SP ("overriding indicator is an Ada 2005 extension");
Error_Msg_SP ("\unit must be compiled with -gnat05 switch"); Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- -- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -268,9 +268,9 @@ begin ...@@ -268,9 +268,9 @@ begin
Error_Node => Curunit, Error_Node => Curunit,
Corr_Body => Cur_Unum); Corr_Body => Cur_Unum);
-- If we successfully load the unit, then set the spec/body -- If we successfully load the unit, then set the spec/body pointers.
-- pointers. Once again note that if the loaded unit has a fatal error, -- Once again note that if the loaded unit has a fatal error, Load will
-- Load will have set our Fatal_Error flag to propagate this condition. -- have set our Fatal_Error flag to propagate this condition.
if Unum /= No_Unit then if Unum /= No_Unit then
Set_Library_Unit (Curunit, Cunit (Unum)); Set_Library_Unit (Curunit, Cunit (Unum));
...@@ -342,17 +342,25 @@ begin ...@@ -342,17 +342,25 @@ begin
-- If current unit is a subunit, then load its parent body -- If current unit is a subunit, then load its parent body
elsif Nkind (Unit (Curunit)) = N_Subunit then elsif Nkind (Unit (Curunit)) = N_Subunit then
Body_Name := Get_Parent_Body_Name (Unit_Name (Cur_Unum)); declare
Unum := Save_PMS : constant Boolean := Parsing_Main_Subunit;
Load_Unit
(Load_Name => Body_Name,
Required => True,
Subunit => True,
Error_Node => Name (Unit (Curunit)));
if Unum /= No_Unit then begin
Set_Library_Unit (Curunit, Cunit (Unum)); Parsing_Main_Subunit := False;
end if; Body_Name := Get_Parent_Body_Name (Unit_Name (Cur_Unum));
Unum :=
Load_Unit
(Load_Name => Body_Name,
Required => True,
Subunit => False,
Error_Node => Name (Unit (Curunit)));
if Unum /= No_Unit then
Set_Library_Unit (Curunit, Cunit (Unum));
end if;
Parsing_Main_Subunit := Save_PMS;
end;
end if; end if;
-- Now we load with'ed units, with style/validity checks turned off -- Now we load with'ed units, with style/validity checks turned off
......
...@@ -353,6 +353,20 @@ package VMS_Data is ...@@ -353,6 +353,20 @@ package VMS_Data is
-- --
-- The main program is not in Ada. -- The main program is not in Ada.
S_Bind_Alloc32 : aliased constant S := "/32_MALLOC " &
"-H32";
-- /32_MALLOC
--
-- Use 32-bit allocations for `__gnat_malloc' (and thus for
-- access types).
S_Bind_Alloc64 : aliased constant S := "/64_MALLOC " &
"-H64";
-- /64_MALLOC
--
-- Use 64-bit allocations for `__gnat_malloc' (and thus for
-- access types).
S_Bind_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" & S_Bind_Mess : aliased constant S := "/MESSAGES_PROJECT_FILE=" &
"DEFAULT " & "DEFAULT " &
"-vP0 " & "-vP0 " &
...@@ -694,6 +708,8 @@ package VMS_Data is ...@@ -694,6 +708,8 @@ package VMS_Data is
S_Bind_Library 'Access, S_Bind_Library 'Access,
S_Bind_Linker 'Access, S_Bind_Linker 'Access,
S_Bind_Main 'Access, S_Bind_Main 'Access,
S_Bind_Alloc32 'Access,
S_Bind_Alloc64 'Access,
S_Bind_Mess 'Access, S_Bind_Mess 'Access,
S_Bind_Nostinc 'Access, S_Bind_Nostinc 'Access,
S_Bind_Nostlib 'Access, S_Bind_Nostlib 'Access,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment