diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-04 13:50:50 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-04 13:50:50 +0000 |
commit | f53dda320b61bb606a58ff461dc3d41cba0c536d (patch) | |
tree | bd9bf8ec7cc3d3b591ef5f5bd4457dbf781acc82 /gcc/ada/s-tassta.adb | |
parent | 79500ea01a1a06d39f68bd5445053a302a2ca901 (diff) | |
download | gcc-f53dda320b61bb606a58ff461dc3d41cba0c536d.tar.gz |
2011-08-04 Robert Dewar <dewar@adacore.com>
* exp_ch5.adb, exp_ch7.adb, exp_util.adb, bindgen.adb, sem_prag.adb,
s-tassta.adb, exp_ch4.adb, exp_disp.adb, s-stausa.adb: Minor
reformatting.
2011-08-04 Arnaud Charlet <charlet@adacore.com>
* make.adb (Linking_Phase): Set source search path before calling
gnatlink in CodePeer mode.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177388 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/s-tassta.adb')
-rw-r--r-- | gcc/ada/s-tassta.adb | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ada/s-tassta.adb b/gcc/ada/s-tassta.adb index 9a5b67d5284..8795ce7727d 100644 --- a/gcc/ada/s-tassta.adb +++ b/gcc/ada/s-tassta.adb @@ -1115,7 +1115,7 @@ package body System.Tasking.Stages is if System.Stack_Usage.Is_Enabled then declare - Guard_Page_Size : constant := 12 * 1024; + Guard_Page_Size : constant := 12 * 1024; -- Part of the stack used as a guard page. This is an OS dependent -- value, so we need to use the maximum. This value is only used -- when the stack address is known, that is currently Windows. @@ -1125,9 +1125,9 @@ package body System.Tasking.Stages is -- smaller values resulted in segmentation faults from dynamic -- stack analysis. - Big_Overflow_Guard : constant := 16 * 1024; - Small_Stack_Limit : constant := 64 * 1024; - -- ??? These three values are experimental, and seems to work on + Big_Overflow_Guard : constant := 16 * 1024; + Small_Stack_Limit : constant := 64 * 1024; + -- ??? These three values are experimental, and seem to work on -- most platforms. They still need to be analyzed further. They -- also need documentation, what are they??? @@ -1137,22 +1137,27 @@ package body System.Tasking.Stages is Stack_Base : Address; -- Address of the base of the stack + begin Stack_Base := Self_ID.Common.Compiler_Data.Pri_Stack_Info.Base; if Stack_Base = Null_Address then + -- On many platforms, we don't know the real stack base -- address. Estimate it using an address in the frame. + Stack_Base := Bottom_Of_Stack'Address; -- Also reduce the size of the stack to take into account the -- secondary stack array declared in this frame. This is for -- sure very conservative. + if not Parameters.Sec_Stack_Dynamic then Pattern_Size := Pattern_Size - Natural (Secondary_Stack_Size); end if; -- Adjustments for inner frames + Pattern_Size := Pattern_Size - (if Pattern_Size < Small_Stack_Limit then Small_Overflow_Guard |