re PR ada/66205 (gnatbind generates invalid code when finalization is enabled in restricted runtime)

PR ada/66205
	* bindgen.adb (Gen_AdaFinal): If the restriction No_Task_Termination is
	set, generate a null body.

From-SVN: r255441
This commit is contained in:
Simon Wright 2017-12-06 09:42:57 +00:00 committed by Eric Botcazou
parent 67acacee0e
commit 40242256f1
2 changed files with 18 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2017-12-06 Simon Wright <simon@pushface.org>
PR ada/66205
* bindgen.adb (Gen_AdaFinal): If the restriction No_Task_Termination is
set, generate a null body.
2017-12-05 Piotr Trojanek <trojanek@adacore.com>
* sem_util.adb (Contains_Refined_State): Remove.

View file

@ -450,6 +450,18 @@ package body Bindgen is
begin
WBI (" procedure " & Ada_Final_Name.all & " is");
-- If task termination is not allowed, as is the case in restricted
-- runtimes, such as Ravenscar or ZFP, but may not be the case for all
-- configurable runtimes, we do not need program-level finalization.
if Cumulative_Restrictions.Set (No_Task_Termination) then
WBI (" begin");
WBI (" null;");
WBI (" end " & Ada_Final_Name.all & ";");
WBI ("");
return;
end if;
-- Call s_stalib_adafinal to await termination of tasks and so on. We
-- want to do this if there is a main program, either in Ada or in some
-- other language. (Note that Bind_Main_Program is True for Ada mains,