40 lines
767 B
Ada
40 lines
767 B
Ada
-- { dg-do run }
|
|
-- { dg-require-stack-check "" }
|
|
-- { dg-options "-fstack-check" }
|
|
|
|
-- This test requires architecture- and OS-specific support code for unwinding
|
|
-- through signal frames (typically located in *-unwind.h) to pass. Feel free
|
|
-- to disable it if this code hasn't been implemented yet.
|
|
|
|
procedure Stack_Check1 is
|
|
|
|
type A is Array (1..2048) of Integer;
|
|
|
|
procedure Consume_Stack (N : Integer) is
|
|
My_A : A; -- 8 KB static
|
|
begin
|
|
My_A (1) := 0;
|
|
if N <= 0 then
|
|
return;
|
|
end if;
|
|
Consume_Stack (N-1);
|
|
end;
|
|
|
|
Task T;
|
|
|
|
Task body T is
|
|
begin
|
|
begin
|
|
Consume_Stack (Integer'Last);
|
|
raise Program_Error;
|
|
exception
|
|
when Storage_Error => null;
|
|
end;
|
|
|
|
Consume_Stack (128);
|
|
end;
|
|
|
|
begin
|
|
null;
|
|
end;
|