aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.ada/task_switch_in_core/crash.adb
blob: fce4f6a99979bc7dbf451f39a43d6648613ec52e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
--  Copyright 2017-2022 Free Software Foundation, Inc.
--
--  This program is free software; you can redistribute it and/or modify
--  it under the terms of the GNU General Public License as published by
--  the Free Software Foundation; either version 3 of the License, or
--  (at your option) any later version.
--
--  This program is distributed in the hope that it will be useful,
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--  GNU General Public License for more details.
--
--  You should have received a copy of the GNU General Public License
--  along with this program.  If not, see <http://www.gnu.org/licenses/>.

with Ada.Text_IO; use Ada.Text_IO;

procedure Crash is

   procedure Request_For_Crash is
   begin
      null; -- Just an anchor for the debugger...
   end Request_For_Crash;

   task type T is
      entry Done;
   end T;

   task body T is
   begin
      accept Done do
         null;
      end Done;
      Put_Line ("Task T: Rendez-vous completed.");
   end T;

   My_T : T;

begin

   --  Give some time for the task to be created, and start its execution,
   --  so that it reaches the accept statement.
   delay 0.01;

   Request_For_Crash;

   delay 0.01;
   Put_Line ("*** We didn't crash !?!");

   --  Complete the rendez-vous with our task, so it can complete.
   My_T.Done;

end Crash;