diff options
Diffstat (limited to 'src/grt')
-rw-r--r-- | src/grt/grt-lib.ads | 4 | ||||
-rw-r--r-- | src/grt/grt-processes.adb | 10 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/grt/grt-lib.ads b/src/grt/grt-lib.ads index 4dac2c8..50be6a7 100644 --- a/src/grt/grt-lib.ads +++ b/src/grt/grt-lib.ads @@ -121,7 +121,7 @@ private "__ghdl_std_ulogic_to_boolean_array"); pragma Export (C, Ghdl_Get_Resolution_Limit, - "__ghdl_get_resolution_limit"); + "std__env__get_resolution_limit"); pragma Export (Ada, Ghdl_Control_Simulation, - "__ghdl_control_simulation"); + "std__env__control_simulation"); end Grt.Lib; diff --git a/src/grt/grt-processes.adb b/src/grt/grt-processes.adb index 0a905d8..4a124e6 100644 --- a/src/grt/grt-processes.adb +++ b/src/grt/grt-processes.adb @@ -564,14 +564,20 @@ package body Grt.Processes is is Lock : constant Object_Lock_Acc := To_Lock_Acc_Acc (Obj).all; begin - if Lock.Process = null then - if Lock.Count /= 0 then + if Lock.Count = 0 then + -- Protected object not locked. + if Lock.Process /= null then + -- Sanity check failed: count must be 0. Internal_Error ("protected_enter"); end if; + + -- Note: during elaboration, there is no current process. Lock.Process := Get_Current_Process; Lock.Count := 1; else + -- Protected object already locked. if Lock.Process /= Get_Current_Process then + -- Should be locked by the current process. Internal_Error ("protected_enter(2)"); end if; Lock.Count := Lock.Count + 1; |