aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2014-08-01 12:08:23 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2014-08-01 12:08:23 +0200
commit3fe5ceadbbeb824a498db96fc7ee40faed0b45f3 (patch)
tree0247822eace17cf34469977f4d8fed4b47516f78
parent39521a94f844f6c6462b4b7849e7f1e2780be6fa (diff)
downloadgcc-3fe5ceadbbeb824a498db96fc7ee40faed0b45f3.zip
gcc-3fe5ceadbbeb824a498db96fc7ee40faed0b45f3.tar.gz
gcc-3fe5ceadbbeb824a498db96fc7ee40faed0b45f3.tar.bz2
[multiple changes]
2014-08-01 Robert Dewar <dewar@adacore.com> * inline.adb, s-os_lib.ads: Minor reformatting. 2014-08-01 Arnaud Charlet <charlet@adacore.com> * s-tasdeb.ads, s-tasdeb.adb (Master_Hook, Master_Completed_Hook): New. * s-tassta.adb (Task_Wrapper, Vulnerable_Complete_Master): Call new hooks. From-SVN: r213444
-rw-r--r--gcc/ada/ChangeLog10
-rw-r--r--gcc/ada/inline.adb8
-rw-r--r--gcc/ada/s-os_lib.ads4
-rw-r--r--gcc/ada/s-tasdeb.adb30
-rw-r--r--gcc/ada/s-tasdeb.ads17
-rw-r--r--gcc/ada/s-tassta.adb5
6 files changed, 71 insertions, 3 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 88c0e79..cd23166 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,13 @@
+2014-08-01 Robert Dewar <dewar@adacore.com>
+
+ * inline.adb, s-os_lib.ads: Minor reformatting.
+
+2014-08-01 Arnaud Charlet <charlet@adacore.com>
+
+ * s-tasdeb.ads, s-tasdeb.adb (Master_Hook, Master_Completed_Hook): New.
+ * s-tassta.adb (Task_Wrapper, Vulnerable_Complete_Master): Call new
+ hooks.
+
2014-08-01 Yannick Moy <moy@adacore.com>
* inline.adb (Cannot_Inline): Issue info message instead of
diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb
index b9531c6..36631c2 100644
--- a/gcc/ada/inline.adb
+++ b/gcc/ada/inline.adb
@@ -1239,10 +1239,14 @@ package body Inline is
and then Msg (Msg'First .. Msg'First + 12) = "cannot inline"
then
declare
- Len1 : constant Positive := 13; -- length of "cannot inline"
+ Len1 : constant Positive := 13;
+ -- Length of "cannot inline"
+
Len2 : constant Positive := 31;
- -- lenth of "info: no contextual analysis of"
+ -- Length of "info: no contextual analysis of"
+
New_Msg : String (1 .. Msg'Length + Len2 - Len1);
+
begin
New_Msg (1 .. Len2) := "info: no contextual analysis of";
New_Msg (Len2 + 1 .. Msg'Length + Len2 - Len1) :=
diff --git a/gcc/ada/s-os_lib.ads b/gcc/ada/s-os_lib.ads
index 77052cd..d3ded15 100644
--- a/gcc/ada/s-os_lib.ads
+++ b/gcc/ada/s-os_lib.ads
@@ -426,7 +426,9 @@ package System.OS_Lib is
-- to the current position (origin = SEEK_CUR), end of file (origin =
-- SEEK_END), or start of file (origin = SEEK_SET).
- type Large_File_Size is range -2 ** 63 .. 2 ** 63 - 1;
+ type Large_File_Size is range -2**63 .. 2**63 - 1;
+ -- Maximum supported size for a file (8 exabytes = 8 million terabytes,
+ -- should be enough to accomodate all possible needs for quite a while).
function File_Length (FD : File_Descriptor) return Long_Integer;
pragma Import (C, File_Length, "__gnat_file_length_long");
diff --git a/gcc/ada/s-tasdeb.adb b/gcc/ada/s-tasdeb.adb
index d56e0ca..a18b844 100644
--- a/gcc/ada/s-tasdeb.adb
+++ b/gcc/ada/s-tasdeb.adb
@@ -437,4 +437,34 @@ package body System.Tasking.Debug is
(Fd, S'Address, System.CRTL.size_t (Count));
end Write;
+ -----------------
+ -- Master_Hook --
+ -----------------
+
+ procedure Master_Hook
+ (Dependent : Task_Id;
+ Parent : Task_Id;
+ Master_Level : Integer)
+ is
+ pragma Inspection_Point (Dependent);
+ pragma Inspection_Point (Parent);
+ pragma Inspection_Point (Master_Level);
+ begin
+ null;
+ end Master_Hook;
+
+ ---------------------------
+ -- Master_Completed_Hook --
+ ---------------------------
+
+ procedure Master_Completed_Hook
+ (Self_ID : Task_Id;
+ Master_Level : Integer)
+ is
+ pragma Inspection_Point (Self_ID);
+ pragma Inspection_Point (Master_Level);
+ begin
+ null;
+ end Master_Completed_Hook;
+
end System.Tasking.Debug;
diff --git a/gcc/ada/s-tasdeb.ads b/gcc/ada/s-tasdeb.ads
index 2c43dc1..4302fde 100644
--- a/gcc/ada/s-tasdeb.ads
+++ b/gcc/ada/s-tasdeb.ads
@@ -145,4 +145,21 @@ package System.Tasking.Debug is
-- Enable or disable tracing for Flag. By default, flags in the range
-- 'A' .. 'Z' are disabled, others are enabled.
+ ---------------------------------
+ -- Hooks for Valgrind/Helgrind --
+ ---------------------------------
+
+ procedure Master_Hook
+ (Dependent : Task_Id;
+ Parent : Task_Id;
+ Master_Level : Integer);
+ -- Indicate to Valgrind/Helgrind that the master of Dependent
+ -- is Parent + Master_Level.
+
+ procedure Master_Completed_Hook
+ (Self_ID : Task_Id;
+ Master_Level : Integer);
+ -- Indicate to Valgrind/Helgrind that Self_ID has completed
+ -- the master Master_Level.
+
end System.Tasking.Debug;
diff --git a/gcc/ada/s-tassta.adb b/gcc/ada/s-tassta.adb
index 46a4be5..1cf83da 100644
--- a/gcc/ada/s-tassta.adb
+++ b/gcc/ada/s-tassta.adb
@@ -1119,6 +1119,9 @@ package body System.Tasking.Stages is
begin
pragma Assert (Self_ID.Deferral_Level = 1);
+ Debug.Master_Hook
+ (Self_ID, Self_ID.Common.Parent, Self_ID.Master_of_Task);
+
-- Assume a size of the stack taken at this stage
if not Parameters.Sec_Stack_Dynamic then
@@ -1985,6 +1988,8 @@ package body System.Tasking.Stages is
-- since the value is only updated by each task for itself.
Self_ID.Master_Within := CM - 1;
+
+ Debug.Master_Completed_Hook (Self_ID, CM);
end Vulnerable_Complete_Master;
------------------------------