diff options
author | Florian Weimer <fweimer@redhat.com> | 2015-08-19 15:00:24 +0200 |
---|---|---|
committer | Florian Weimer <fw@gcc.gnu.org> | 2015-08-19 15:00:24 +0200 |
commit | 4a5dc5994ead847874e87adb4a9904eaae3e3562 (patch) | |
tree | 6622ea45fa940aa861b6d804bc680a224647cba3 /gcc | |
parent | 3bbce100e955c1fe27bb03eee3695f853c6f413f (diff) | |
download | gcc-4a5dc5994ead847874e87adb4a9904eaae3e3562.zip gcc-4a5dc5994ead847874e87adb4a9904eaae3e3562.tar.gz gcc-4a5dc5994ead847874e87adb4a9904eaae3e3562.tar.bz2 |
Make the stack non-executable in GNAT tools
Due to PR67205, the deeply nested instantiations require trampolines,
which in turn requires an executable stack for the GNAT tools on
architectures such as x86_64.
From-SVN: r227004
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ada/prj-proc.adb | 4 | ||||
-rw-r--r-- | gcc/ada/prj.adb | 6 |
3 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ac7f802..a4d5a3e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2015-08-13 Florian Weimer <fweimer@redhat.com> + + * prj.adb (For_Every_Project_Imported_Context.Recursive_Check_Context): + Move Name_Id_Set instantiation to the Prj package, to avoid trampolines. + * prj-proc.adb (Process.Process_Expression_Variable_Decl): + Move Name_Ids instantiation to the Prj.Proc package, to avoid + trampolines. + 2015-08-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm.c (bounds_check): Use %wd print format diff --git a/gcc/ada/prj-proc.adb b/gcc/ada/prj-proc.adb index 57b88c6..3a014f1 100644 --- a/gcc/ada/prj-proc.adb +++ b/gcc/ada/prj-proc.adb @@ -72,6 +72,8 @@ package body Prj.Proc is Equal => "="); -- Stores the default values of 'Runtime names for the various languages + package Name_Ids is new Ada.Containers.Vectors (Positive, Name_Id); + procedure Add (To_Exp : in out Name_Id; Str : Name_Id); -- Concatenate two strings and returns another string if both -- arguments are not null string. @@ -2193,8 +2195,6 @@ package body Prj.Proc is if Is_Attribute and then Name = Snames.Name_Project_Path then if In_Tree.Is_Root_Tree then declare - package Name_Ids is - new Ada.Containers.Vectors (Positive, Name_Id); Val : String_List_Id := New_Value.Values; List : Name_Ids.Vector; begin diff --git a/gcc/ada/prj.adb b/gcc/ada/prj.adb index 9da0f44..0deb39b 100644 --- a/gcc/ada/prj.adb +++ b/gcc/ada/prj.adb @@ -76,6 +76,9 @@ package body Prj is All_Upper_Case => All_Upper_Case_Image'Access, Mixed_Case => Mixed_Case_Image'Access); + package Name_Id_Set is + new Ada.Containers.Ordered_Sets (Element_Type => Name_Id); + procedure Free (Project : in out Project_Id); -- Free memory allocated for Project @@ -589,9 +592,6 @@ package body Prj is In_Aggregate_Lib : Boolean; From_Encapsulated_Lib : Boolean) is - package Name_Id_Set is - new Ada.Containers.Ordered_Sets (Element_Type => Name_Id); - Seen_Name : Name_Id_Set.Set; -- This set is needed to ensure that we do not handle the same -- project twice in the context of aggregate libraries. |