[multiple changes]

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Access): handle properly named
	access to protected subprograms in generic bodies.
	* sem_ch6.adb (Analyze_Subprogram_Declaration): If the context is a
	protected type, indicate that the convention of the subprogram is
	Convention_Protected, because it may be used in subsequent declarations
	within the protected declaration.

2011-08-01  Vincent Celier  <celier@adacore.com>

	* mlib-prj.adb (Build_Library): Use "ada_" as the prefix for the "init"
	and "final" procedures when the name of the library is "ada", to avoid
	duplicate symbols "adainit" and "adafinal" in executables.

From-SVN: r177002
This commit is contained in:
Arnaud Charlet 2011-08-01 11:04:40 +02:00
parent 67e28ef818
commit 1a265e7824
4 changed files with 46 additions and 12 deletions

View File

@ -1,3 +1,18 @@
2011-08-01 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Analyze_Attribute, case 'Access): Handle properly named
access to protected subprograms in generic bodies.
* sem_ch6.adb (Analyze_Subprogram_Declaration): If the context is a
protected type, indicate that the convention of the subprogram is
Convention_Protected, because it may be used in subsequent declarations
within the protected declaration.
2011-08-01 Vincent Celier <celier@adacore.com>
* mlib-prj.adb (Build_Library): Use "ada_" as the prefix for the "init"
and "final" procedures when the name of the library is "ada", to avoid
duplicate symbols "adainit" and "adafinal" in executables.
2011-08-01 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Analyze_Attribute, case 'Result): Handle properly a

View File

@ -862,7 +862,7 @@ package body MLib.Prj is
Arguments := new String_List (1 .. Initial_Argument_Max);
end if;
-- Add "-n -o b~<lib>.adb (b__<lib>.adb on VMS) -L<lib>"
-- Add "-n -o b~<lib>.adb (b__<lib>.adb on VMS) -L<lib>_"
Argument_Number := 2;
Arguments (1) := No_Main;
@ -875,7 +875,17 @@ package body MLib.Prj is
Add_Argument
(B_Start.all
& Get_Name_String (For_Project.Library_Name) & ".adb");
Add_Argument ("-L" & Get_Name_String (For_Project.Library_Name));
-- Make sure that the init procedure is never "adainit"
Get_Name_String (For_Project.Library_Name);
if Name_Buffer (1 .. Name_Len) = "ada" then
Add_Argument ("-Lada_");
else
Add_Argument
("-L" & Get_Name_String (For_Project.Library_Name));
end if;
if For_Project.Lib_Auto_Init and then SALs_Use_Constructors then
Add_Argument (Auto_Initialize);
@ -950,16 +960,15 @@ package body MLib.Prj is
then
if Check_Project (Unit.File_Names (Impl).Project) then
if Unit.File_Names (Spec) = null then
-- Add the ALI file only if it is not a subunit
declare
Src_Ind : Source_File_Index;
Src_Ind : constant Source_File_Index :=
Sinput.P.Load_Project_File
(Get_Name_String
(Unit.File_Names (Impl).Path.Name));
begin
Src_Ind := Sinput.P.Load_Project_File
(Get_Name_String
(Unit.File_Names (Impl).Path.Name));
-- Add the ALI file only if it is not a subunit
if not
Sinput.P.Source_File_Is_Subunit (Src_Ind)
then

View File

@ -7837,14 +7837,16 @@ package body Sem_Attr is
if Ekind_In (Btyp, E_Access_Subprogram_Type,
E_Anonymous_Access_Subprogram_Type,
E_Access_Protected_Subprogram_Type,
E_Anonymous_Access_Protected_Subprogram_Type)
then
-- Deal with convention mismatch
if Convention (Btyp) /= Convention (Entity (P)) then
if Convention (Designated_Type (Btyp)) /=
Convention (Entity (P))
then
Error_Msg_FE
("subprogram & has wrong convention", P, Entity (P));
Error_Msg_FE
("\does not match convention of access type &",
P, Btyp);

View File

@ -2929,6 +2929,14 @@ package body Sem_Ch6 is
Write_Eol;
end if;
if Is_Protected_Type (Current_Scope) then
-- Indicate that this is a protected operation, because it may be
-- used in subsequent declarations within the protected type.
Set_Convention (Designator, Convention_Protected);
end if;
List_Inherited_Pre_Post_Aspects (Designator);
Analyze_Aspect_Specifications (N, Designator, Aspect_Specifications (N));
end Analyze_Subprogram_Declaration;