1 /* This testcase is part of GDB, the GNU debugger.
3 Copyright 2012-2021 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")));
34 int relocation_marker
__attribute__ ((unused
));
43 /* We only support SystemTap and only the v3 form. */
44 #if _SDT_NOTE_TYPE != 3
45 #error "not using SystemTap v3 probes"
52 const char *(*ps
) (int);
58 /* m1 and m2 are equivalent, but because of some compiler
59 optimizations we have to make each of them unique. This is why
60 we have this dummy variable here. */
61 volatile int dummy
= 0;
64 STAP_PROBE1 (test
, two
, dummy
);
71 STAP_PROBE (test
, two
);
78 STAP_PROBE1 (test
, user
, x
);
85 const char *a
= "This is a test message.";
86 const char *b
= "This is another test message.";
88 STAP_PROBE3 (test
, ps
, a
, b
, val
);
90 return val
== 0 ? a
: b
;
94 m4 (const struct funcs
*fs
, int v
)
96 STAP_PROBE3 (test
, m4
, fs
->val
, fs
->ps (v
), v
);
114 return 0; /* last break here */