1/* List of types and symbols in libc examined by libthread_db.
2   Copyright (C) 2003-2022 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   <https://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/* DB_MAIN_VARIABLE, DB_MAIN_SYMBOL, DB_MAIN_ARRAY_VARIABLE are not
26   covered by the libc symbol check in db-symbols.awk.  */
27#ifndef DB_MAIN_VARIABLE
28# define DB_MAIN_VARIABLE(name) DB_VARIABLE (name)
29#endif
30#ifndef DB_MAIN_SYMBOL
31# define DB_MAIN_SYMBOL(name) DB_SYMBOL (name)
32#endif
33#ifndef DB_MAIN_ARRAY_VARIABLE
34# define DB_MAIN_ARRAY_VARIABLE(name) DB_ARRAY_VARIABLE (name)
35#endif
36
37#ifndef DB_RTLD_GLOBAL_FIELD
38# if !IS_IN (libc)
39#  define DB_RTLD_GLOBAL_FIELD(field)		\
40  DB_STRUCT_FIELD (rtld_global, _##field)	\
41  DB_MAIN_VARIABLE (_##field)
42# elif defined SHARED
43#  define DB_RTLD_GLOBAL_FIELD(field)		\
44  DB_STRUCT_FIELD (rtld_global, _##field)
45# else
46#  define DB_RTLD_GLOBAL_FIELD(field)		\
47  DB_MAIN_VARIABLE (_##field)
48# endif
49#endif /* DB_RTLD_GLOBAL_FIELD */
50
51DB_STRUCT (pthread)
52DB_STRUCT_FIELD (pthread, list)
53DB_STRUCT_FIELD (pthread, report_events)
54DB_STRUCT_FIELD (pthread, tid)
55DB_STRUCT_FIELD (pthread, start_routine)
56DB_STRUCT_FIELD (pthread, cancelhandling)
57DB_STRUCT_FIELD (pthread, schedpolicy)
58DB_STRUCT_FIELD (pthread, schedparam_sched_priority)
59DB_STRUCT_FIELD (pthread, specific)
60DB_STRUCT_FIELD (pthread, eventbuf)
61DB_STRUCT_FIELD (pthread, eventbuf_eventmask)
62DB_STRUCT_ARRAY_FIELD (pthread, eventbuf_eventmask_event_bits)
63DB_STRUCT_FIELD (pthread, nextevent)
64
65DB_STRUCT (list_t)
66DB_STRUCT_FIELD (list_t, next)
67DB_STRUCT_FIELD (list_t, prev)
68
69DB_STRUCT (td_thr_events_t)
70DB_STRUCT_ARRAY_FIELD (td_thr_events_t, event_bits)
71
72DB_STRUCT (td_eventbuf_t)
73DB_STRUCT_FIELD (td_eventbuf_t, eventnum)
74DB_STRUCT_FIELD (td_eventbuf_t, eventdata)
75
76DB_SYMBOL (__nptl_version)
77DB_SYMBOL (__nptl_create_event)
78DB_SYMBOL (__nptl_death_event)
79DB_SYMBOL (__nptl_threads_events)
80DB_VARIABLE (__nptl_nthreads)
81DB_VARIABLE (__nptl_last_event)
82DB_MAIN_VARIABLE (__nptl_initial_report_events)
83
84DB_ARRAY_VARIABLE (__pthread_keys)
85DB_STRUCT (pthread_key_struct)
86DB_STRUCT_FIELD (pthread_key_struct, seq)
87DB_STRUCT_FIELD (pthread_key_struct, destr)
88
89DB_STRUCT (pthread_key_data)
90DB_STRUCT_FIELD (pthread_key_data, seq)
91DB_STRUCT_FIELD (pthread_key_data, data)
92DB_STRUCT (pthread_key_data_level2)
93DB_STRUCT_ARRAY_FIELD (pthread_key_data_level2, data)
94
95DB_STRUCT_FIELD (link_map, l_tls_modid)
96DB_STRUCT_FIELD (link_map, l_tls_offset)
97
98DB_STRUCT_ARRAY_FIELD (dtv, dtv)
99#define pointer_val pointer.val /* Field of anonymous struct in dtv_t.  */
100DB_STRUCT_FIELD (dtv_t, pointer_val)
101DB_STRUCT_FIELD (dtv_t, counter)
102#if !IS_IN (libc) || TLS_TCB_AT_TP
103DB_STRUCT_FIELD (pthread, dtvp)
104#endif
105
106#if !(IS_IN (libc) && !defined SHARED)
107DB_VARIABLE (__nptl_rtld_global)
108#endif
109DB_RTLD_GLOBAL_FIELD (dl_tls_dtv_slotinfo_list)
110DB_RTLD_GLOBAL_FIELD (dl_stack_user)
111DB_RTLD_GLOBAL_FIELD (dl_stack_used)
112
113DB_STRUCT (dtv_slotinfo_list)
114DB_STRUCT_FIELD (dtv_slotinfo_list, len)
115DB_STRUCT_FIELD (dtv_slotinfo_list, next)
116DB_STRUCT_FLEXIBLE_ARRAY (dtv_slotinfo_list, slotinfo)
117
118DB_STRUCT (dtv_slotinfo)
119DB_STRUCT_FIELD (dtv_slotinfo, gen)
120DB_STRUCT_FIELD (dtv_slotinfo, map)
121
122#ifdef STRUCTS_DEF_DEFAULTS
123# undef DB_STRUCT_ARRAY_FIELD
124# undef DB_ARRAY_VARIABLE
125# undef STRUCTS_DEF_DEFAULTS
126#endif
127