1 /* This testcase is part of GDB, the GNU debugger.
3 Copyright 2012-2019 Free Software Foundation, Inc.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20 #define _SDT_HAS_SEMAPHORES
21 __extension__
unsigned short test_user_semaphore
__attribute__ ((unused
)) __attribute__ ((section (".probes")));
22 #define TEST test_user_semaphore
24 __extension__
unsigned short test_two_semaphore
__attribute__ ((unused
)) __attribute__ ((section (".probes")));
25 #define TEST2 test_two_semaphore
27 __extension__
unsigned short test_m4_semaphore
__attribute__ ((unused
)) __attribute__ ((section (".probes")));
29 __extension__
unsigned short test_pstr_semaphore
__attribute__ ((unused
)) __attribute__ ((section (".probes")));
31 __extension__
unsigned short test_ps_semaphore
__attribute__ ((unused
)) __attribute__ ((section (".probes")));
41 /* We only support SystemTap and only the v3 form. */
42 #if _SDT_NOTE_TYPE != 3
43 #error "not using SystemTap v3 probes"
50 const char *(*ps
) (int);
56 /* m1 and m2 are equivalent, but because of some compiler
57 optimizations we have to make each of them unique. This is why
58 we have this dummy variable here. */
59 volatile int dummy
= 0;
62 STAP_PROBE1 (test
, two
, dummy
);
69 STAP_PROBE (test
, two
);
76 STAP_PROBE1 (test
, user
, x
);
83 const char *a
= "This is a test message.";
84 const char *b
= "This is another test message.";
86 STAP_PROBE3 (test
, ps
, a
, b
, val
);
88 return val
== 0 ? a
: b
;
92 m4 (const struct funcs
*fs
, int v
)
94 STAP_PROBE3 (test
, m4
, fs
->val
, fs
->ps (v
), v
);
112 return 0; /* last break here */