1/* List of types and symbols in libpthread examined by libthread_db.
2 Copyright (C) 2003-2018 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library 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 GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
18
19#ifndef DB_STRUCT_ARRAY_FIELD
20# define DB_STRUCT_ARRAY_FIELD(type, field) DB_STRUCT_FIELD (type, field)
21# define DB_ARRAY_VARIABLE(name) DB_VARIABLE (name)
22# define STRUCTS_DEF_DEFAULTS 1
23#endif
24
25#ifndef DB_RTLD_VARIABLE
26# define DB_RTLD_VARIABLE(name) DB_VARIABLE (name)
27#endif
28
29#ifndef DB_MAIN_VARIABLE
30# define DB_MAIN_VARIABLE(name) DB_VARIABLE (name)
31#endif
32
33#ifndef DB_RTLD_GLOBAL_FIELD
34# if !IS_IN (libpthread)
35# define DB_RTLD_GLOBAL_FIELD(field) \
36 DB_STRUCT_FIELD (rtld_global, _##field) \
37 DB_MAIN_VARIABLE (_##field)
38# elif defined SHARED
39# define DB_RTLD_GLOBAL_FIELD(field) \
40 DB_STRUCT_FIELD (rtld_global, _##field)
41# else
42# define DB_RTLD_GLOBAL_FIELD(field) \
43 DB_MAIN_VARIABLE (_##field)
44# endif
45#endif /* DB_RTLD_GLOBAL_FIELD */
46
47DB_STRUCT (pthread)
48DB_STRUCT_FIELD (pthread, list)
49DB_STRUCT_FIELD (pthread, report_events)
50DB_STRUCT_FIELD (pthread, tid)
51DB_STRUCT_FIELD (pthread, start_routine)
52DB_STRUCT_FIELD (pthread, cancelhandling)
53DB_STRUCT_FIELD (pthread, schedpolicy)
54DB_STRUCT_FIELD (pthread, schedparam_sched_priority)
55DB_STRUCT_FIELD (pthread, specific)
56DB_STRUCT_FIELD (pthread, eventbuf)
57DB_STRUCT_FIELD (pthread, eventbuf_eventmask)
58DB_STRUCT_ARRAY_FIELD (pthread, eventbuf_eventmask_event_bits)
59DB_STRUCT_FIELD (pthread, nextevent)
60
61DB_STRUCT (list_t)
62DB_STRUCT_FIELD (list_t, next)
63DB_STRUCT_FIELD (list_t, prev)
64
65DB_STRUCT (td_thr_events_t)
66DB_STRUCT_ARRAY_FIELD (td_thr_events_t, event_bits)
67
68DB_STRUCT (td_eventbuf_t)
69DB_STRUCT_FIELD (td_eventbuf_t, eventnum)
70DB_STRUCT_FIELD (td_eventbuf_t, eventdata)
71
72DB_SYMBOL (stack_used)
73DB_SYMBOL (__stack_user)
74DB_SYMBOL (nptl_version)
75DB_FUNCTION (__nptl_create_event)
76DB_FUNCTION (__nptl_death_event)
77DB_SYMBOL (__nptl_threads_events)
78DB_VARIABLE (__nptl_nthreads)
79DB_VARIABLE (__nptl_last_event)
80DB_VARIABLE (__nptl_initial_report_events)
81
82DB_ARRAY_VARIABLE (__pthread_keys)
83DB_STRUCT (pthread_key_struct)
84DB_STRUCT_FIELD (pthread_key_struct, seq)
85DB_STRUCT_FIELD (pthread_key_struct, destr)
86
87DB_STRUCT (pthread_key_data)
88DB_STRUCT_FIELD (pthread_key_data, seq)
89DB_STRUCT_FIELD (pthread_key_data, data)
90DB_STRUCT (pthread_key_data_level2)
91DB_STRUCT_ARRAY_FIELD (pthread_key_data_level2, data)
92
93DB_STRUCT_FIELD (link_map, l_tls_modid)
94DB_STRUCT_FIELD (link_map, l_tls_offset)
95
96DB_STRUCT_ARRAY_FIELD (dtv, dtv)
97#define pointer_val pointer.val /* Field of anonymous struct in dtv_t. */
98DB_STRUCT_FIELD (dtv_t, pointer_val)
99DB_STRUCT_FIELD (dtv_t, counter)
100#if !IS_IN (libpthread) || TLS_TCB_AT_TP
101DB_STRUCT_FIELD (pthread, dtvp)
102#endif
103
104#if !(IS_IN (libpthread) && !defined SHARED)
105DB_STRUCT (rtld_global)
106DB_RTLD_VARIABLE (_rtld_global)
107#endif
108DB_RTLD_GLOBAL_FIELD (dl_tls_dtv_slotinfo_list)
109
110DB_STRUCT (dtv_slotinfo_list)
111DB_STRUCT_FIELD (dtv_slotinfo_list, len)
112DB_STRUCT_FIELD (dtv_slotinfo_list, next)
113DB_STRUCT_ARRAY_FIELD (dtv_slotinfo_list, slotinfo)
114
115DB_STRUCT (dtv_slotinfo)
116DB_STRUCT_FIELD (dtv_slotinfo, gen)
117DB_STRUCT_FIELD (dtv_slotinfo, map)
118
119#ifdef STRUCTS_DEF_DEFAULTS
120# undef DB_STRUCT_ARRAY_FIELD
121# undef DB_ARRAY_VARIABLE
122# undef STRUCTS_DEF_DEFAULTS
123#endif
124