Coverage Report

Created: 2026-08-13 06:55

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/elfutils/backends/linux-core-note.c
Line
Count
Source
1
/* Common core note type descriptions for Linux.
2
   Copyright (C) 2007-2010 Red Hat, Inc.
3
   Copyright (C) H.J. Lu <hjl.tools@gmail.com>, 2015.
4
   This file is part of elfutils.
5
6
   This file is free software; you can redistribute it and/or modify
7
   it under the terms of either
8
9
     * the GNU Lesser General Public License as published by the Free
10
       Software Foundation; either version 3 of the License, or (at
11
       your option) any later version
12
13
   or
14
15
     * the GNU General Public License as published by the Free
16
       Software Foundation; either version 2 of the License, or (at
17
       your option) any later version
18
19
   or both in parallel, as here.
20
21
   elfutils is distributed in the hope that it will be useful, but
22
   WITHOUT ANY WARRANTY; without even the implied warranty of
23
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24
   General Public License for more details.
25
26
   You should have received copies of the GNU General Public License and
27
   the GNU Lesser General Public License along with this program.  If
28
   not, see <http://www.gnu.org/licenses/>.  */
29
30
#include <string.h>
31
32
/* The including CPU_corenote.c file provides prstatus_regs and
33
   defines macros ULONG, [PUG]ID_T, and ALIGN_*, TYPE_*.
34
35
   Here we describe the common layout used in <linux/elfcore.h>.  */
36
37
#define CHAR      int8_t
38
#define ALIGN_CHAR    1
39
#define TYPE_CHAR   ELF_T_BYTE
40
#define SHORT     uint16_t
41
#define ALIGN_SHORT   2
42
#define TYPE_SHORT    ELF_T_HALF
43
#define INT     int32_t
44
#ifndef ALIGN_INT
45
# define ALIGN_INT    4
46
#endif
47
#define TYPE_INT    ELF_T_SWORD
48
#ifndef PR_REG
49
# define PR_REG     ULONG
50
#endif
51
#ifndef ALIGN_PR_REG
52
# define ALIGN_PR_REG   ALIGN_ULONG
53
#endif
54
#ifndef PRPSINFO_UID_T
55
# define PRPSINFO_UID_T   UID_T
56
# define ALIGN_PRPSINFO_UID_T ALIGN_UID_T
57
# define TYPE_PRPSINFO_UID_T  TYPE_UID_T
58
#endif
59
#ifndef PRPSINFO_GID_T
60
# define PRPSINFO_GID_T   GID_T
61
# define ALIGN_PRPSINFO_GID_T ALIGN_GID_T
62
# define TYPE_PRPSINFO_GID_T  TYPE_GID_T
63
#endif
64
65
#define FIELD(type, name) type name __attribute__ ((aligned (ALIGN_##type)))
66
67
struct EBLHOOK(siginfo)
68
{
69
  FIELD (INT, si_signo);
70
  FIELD (INT, si_code);
71
  FIELD (INT, si_errno);
72
};
73
74
struct EBLHOOK(timeval)
75
{
76
  FIELD (ULONG, tv_sec);
77
  FIELD (ULONG, tv_usec);
78
};
79
80
/* On sparc64, tv_usec (suseconds_t) is actually 32 bits with 32 bits padding.
81
   The 'T'|0x80 value for .format indicates this as a special kludge.  */
82
#if SUSECONDS_HALF
83
# define TIMEVAL_FIELD(name)  FIELD (time, ULONG, name, 'T'|0x80, .count = 2)
84
#else
85
# define TIMEVAL_FIELD(name)  FIELD (time, ULONG, name, 'T', .count = 2)
86
#endif
87
88
89
struct EBLHOOK(prstatus)
90
{
91
  struct EBLHOOK(siginfo) pr_info;
92
  FIELD (SHORT, pr_cursig);
93
  FIELD (ULONG, pr_sigpend);
94
  FIELD (ULONG, pr_sighold);
95
  FIELD (PID_T, pr_pid);
96
  FIELD (PID_T, pr_ppid);
97
  FIELD (PID_T, pr_pgrp);
98
  FIELD (PID_T, pr_sid);
99
  struct EBLHOOK(timeval) pr_utime;
100
  struct EBLHOOK(timeval) pr_stime;
101
  struct EBLHOOK(timeval) pr_cutime;
102
  struct EBLHOOK(timeval) pr_cstime;
103
  struct
104
  {
105
    FIELD (PR_REG, pr_reg[PRSTATUS_REGS_SIZE / sizeof (PR_REG)]);
106
  }
107
#ifdef ALIGN_PR_REG
108
    __attribute__ ((aligned (ALIGN_PR_REG)))
109
#endif
110
    ;
111
  FIELD (INT, pr_fpvalid);
112
}
113
#ifdef ALIGN_PRSTATUS
114
  attribute_packed __attribute__ ((aligned (ALIGN_PRSTATUS)))
115
#endif
116
;
117
118
#define FNAMESZ 16
119
#define PRARGSZ 80
120
121
struct EBLHOOK(prpsinfo)
122
{
123
  FIELD (CHAR, pr_state);
124
  FIELD (CHAR, pr_sname);
125
  FIELD (CHAR, pr_zomb);
126
  FIELD (CHAR, pr_nice);
127
  FIELD (ULONG, pr_flag);
128
  FIELD (PRPSINFO_UID_T, pr_uid);
129
  FIELD (PRPSINFO_GID_T, pr_gid);
130
  FIELD (PID_T, pr_pid);
131
  FIELD (PID_T, pr_ppid);
132
  FIELD (PID_T, pr_pgrp);
133
  FIELD (PID_T, pr_sid);
134
  FIELD (CHAR, pr_fname[FNAMESZ]);
135
  FIELD (CHAR, pr_psargs[PRARGSZ]);
136
};
137
138
#undef  FIELD
139
140
#define FIELD(igroup, itype, item, fmt, ...)      \
141
    {               \
142
      .name = #item,            \
143
      .group = #igroup,         \
144
      .offset = offsetof (struct EBLHOOK(prstatus), pr_##item), \
145
      .type = TYPE_##itype,         \
146
      .format = fmt,            \
147
      __VA_ARGS__           \
148
    }
149
150
static const Ebl_Core_Item prstatus_items[] =
151
  {
152
    FIELD (signal, INT, info.si_signo, 'd'),
153
    FIELD (signal, INT, info.si_code, 'd'),
154
    FIELD (signal, INT, info.si_errno, 'd'),
155
    FIELD (signal, SHORT, cursig, 'd'),
156
157
    /* Use different group name for a newline delimiter.  */
158
    FIELD (signal2, ULONG, sigpend, 'B'),
159
    FIELD (signal3, ULONG, sighold, 'B'),
160
    FIELD (identity, PID_T, pid, 'd', .thread_identifier = true),
161
    FIELD (identity, PID_T, ppid, 'd'),
162
    FIELD (identity, PID_T, pgrp, 'd'),
163
    FIELD (identity, PID_T, sid, 'd'),
164
    TIMEVAL_FIELD (utime),
165
    TIMEVAL_FIELD (stime),
166
    TIMEVAL_FIELD (cutime),
167
    TIMEVAL_FIELD (cstime),
168
#ifdef PRSTATUS_REGSET_ITEMS
169
    PRSTATUS_REGSET_ITEMS,
170
#endif
171
    FIELD (register, INT, fpvalid, 'd'),
172
  };
173
174
#undef  FIELD
175
176
#define FIELD(igroup, itype, item, fmt, ...)      \
177
    {               \
178
      .name = #item,            \
179
      .group = #igroup,         \
180
      .offset = offsetof (struct EBLHOOK(prpsinfo), pr_##item), \
181
      .type = TYPE_##itype,         \
182
      .format = fmt,            \
183
      __VA_ARGS__           \
184
    }
185
186
static const Ebl_Core_Item prpsinfo_items[] =
187
  {
188
    FIELD (state, CHAR, state, 'd'),
189
    FIELD (state, CHAR, sname, 'c'),
190
    FIELD (state, CHAR, zomb, 'd'),
191
    FIELD (state, CHAR, nice, 'd'),
192
    FIELD (state, ULONG, flag, 'x'),
193
    FIELD (identity, PRPSINFO_UID_T, uid, 'd'),
194
    FIELD (identity, PRPSINFO_GID_T, gid, 'd'),
195
    FIELD (identity, PID_T, pid, 'd'),
196
    FIELD (identity, PID_T, ppid, 'd'),
197
    FIELD (identity, PID_T, pgrp, 'd'),
198
    FIELD (identity, PID_T, sid, 'd'),
199
    FIELD (command, CHAR, fname, 's', .count = FNAMESZ),
200
    FIELD (command, CHAR, psargs, 's', .count = PRARGSZ),
201
  };
202
203
static const Ebl_Core_Item vmcoreinfo_items[] =
204
  {
205
    {
206
      .type = ELF_T_BYTE, .format = '\n'
207
    }
208
  };
209
210
#undef  FIELD
211
212
int
213
EBLHOOK(core_note) (const GElf_Nhdr *nhdr, const char *name,
214
        GElf_Word *regs_offset, size_t *nregloc,
215
        const Ebl_Register_Location **reglocs,
216
        size_t *nitems, const Ebl_Core_Item **items)
217
117k
{
218
117k
  switch (nhdr->n_namesz)
219
117k
    {
220
50.4k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
50.4k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
13.8k
  break;
223
36.5k
      return 0;
224
225
23.2k
    case sizeof "CORE":
226
23.2k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
6.62k
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
16.6k
      FALLTHROUGH;
230
231
22.0k
    case sizeof "LINUX":
232
22.0k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
8.49k
  break;
234
13.5k
      return 0;
235
236
9.04k
    case sizeof "VMCOREINFO":
237
9.04k
      if (nhdr->n_type != 0
238
6.83k
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
7.88k
  return 0;
240
1.16k
      *regs_offset = 0;
241
1.16k
      *nregloc = 0;
242
1.16k
      *reglocs = NULL;
243
1.16k
      *nitems = 1;
244
1.16k
      *items = vmcoreinfo_items;
245
1.16k
      return 1;
246
247
29.0k
    default:
248
29.0k
      return 0;
249
117k
    }
250
251
28.9k
  switch (nhdr->n_type)
252
28.9k
    {
253
5.62k
    case NT_PRSTATUS:
254
5.62k
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
5.43k
  return 0;
256
189
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
189
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
189
      *reglocs = prstatus_regs;
259
189
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
189
      *items = prstatus_items;
261
189
      return 1;
262
263
2.13k
    case NT_PRPSINFO:
264
2.13k
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
2.09k
  return 0;
266
41
      *regs_offset = 0;
267
41
      *nregloc = 0;
268
41
      *reglocs = NULL;
269
41
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
41
      *items = prpsinfo_items;
271
41
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
315
    case type:                      \
275
5.32k
      if (nhdr->n_descsz != size)               \
276
5.00k
  return 0;                   \
277
315
      *regs_offset = 0;                   \
278
315
      *nregloc = sizeof table / sizeof table[0];            \
279
315
      *reglocs = table;                   \
280
315
      *nitems = 0;                    \
281
315
      *items = NULL;                    \
282
315
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
32
    case type:                      \
286
1.58k
      if (nhdr->n_descsz != size)               \
287
1.55k
  return 0;                   \
288
32
      *regs_offset = 0;                   \
289
32
      *nregloc = sizeof table / sizeof table[0];            \
290
32
      *reglocs = table;                   \
291
32
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
32
      *items = extra_items;                 \
293
32
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
269
    case type:                      \
297
631
      if (nhdr->n_descsz != size)               \
298
362
  return 0;                   \
299
269
      *regs_offset = 0;                   \
300
269
      *nregloc = 0;                   \
301
269
      *reglocs = NULL;                    \
302
269
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
269
      *items = extra_items;                 \
304
269
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
4.70k
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
#ifdef EXTRA_NOTES
311
287
    EXTRA_NOTES
312
#endif
313
28.9k
    }
314
315
13.2k
  return 0;
316
28.9k
}
i386_core_note
Line
Count
Source
217
9.02k
{
218
9.02k
  switch (nhdr->n_namesz)
219
9.02k
    {
220
4.01k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
4.01k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
1.25k
  break;
223
2.76k
      return 0;
224
225
1.61k
    case sizeof "CORE":
226
1.61k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
406
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.20k
      FALLTHROUGH;
230
231
1.58k
    case sizeof "LINUX":
232
1.58k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
670
  break;
234
912
      return 0;
235
236
594
    case sizeof "VMCOREINFO":
237
594
      if (nhdr->n_type != 0
238
446
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
518
  return 0;
240
76
      *regs_offset = 0;
241
76
      *nregloc = 0;
242
76
      *reglocs = NULL;
243
76
      *nitems = 1;
244
76
      *items = vmcoreinfo_items;
245
76
      return 1;
246
247
2.43k
    default:
248
2.43k
      return 0;
249
9.02k
    }
250
251
2.32k
  switch (nhdr->n_type)
252
2.32k
    {
253
342
    case NT_PRSTATUS:
254
342
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
332
  return 0;
256
10
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
10
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
10
      *reglocs = prstatus_regs;
259
10
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
10
      *items = prstatus_items;
261
10
      return 1;
262
263
122
    case NT_PRPSINFO:
264
122
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
121
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
0
#ifdef FPREGSET_SIZE
307
665
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
2.32k
    EXTRA_NOTES
312
2.32k
#endif
313
2.32k
    }
314
315
962
  return 0;
316
2.32k
}
Unexecuted instantiation: sh_core_note
x86_64_core_note
Line
Count
Source
217
6.88k
{
218
6.88k
  switch (nhdr->n_namesz)
219
6.88k
    {
220
2.93k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.93k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
841
  break;
223
2.09k
      return 0;
224
225
1.42k
    case sizeof "CORE":
226
1.42k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
403
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.02k
      FALLTHROUGH;
230
231
1.30k
    case sizeof "LINUX":
232
1.30k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
482
  break;
234
825
      return 0;
235
236
375
    case sizeof "VMCOREINFO":
237
375
      if (nhdr->n_type != 0
238
264
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
307
  return 0;
240
68
      *regs_offset = 0;
241
68
      *nregloc = 0;
242
68
      *reglocs = NULL;
243
68
      *nitems = 1;
244
68
      *items = vmcoreinfo_items;
245
68
      return 1;
246
247
1.86k
    default:
248
1.86k
      return 0;
249
6.88k
    }
250
251
1.72k
  switch (nhdr->n_type)
252
1.72k
    {
253
332
    case NT_PRSTATUS:
254
332
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
315
  return 0;
256
17
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
17
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
17
      *reglocs = prstatus_regs;
259
17
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
17
      *items = prstatus_items;
261
17
      return 1;
262
263
115
    case NT_PRPSINFO:
264
115
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
110
  return 0;
266
5
      *regs_offset = 0;
267
5
      *nregloc = 0;
268
5
      *reglocs = NULL;
269
5
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
5
      *items = prpsinfo_items;
271
5
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
0
#ifdef FPREGSET_SIZE
307
468
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.72k
    EXTRA_NOTES
312
1.72k
#endif
313
1.72k
    }
314
315
743
  return 0;
316
1.72k
}
x32_core_note
Line
Count
Source
217
7.82k
{
218
7.82k
  switch (nhdr->n_namesz)
219
7.82k
    {
220
3.34k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.34k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
930
  break;
223
2.41k
      return 0;
224
225
1.33k
    case sizeof "CORE":
226
1.33k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
305
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.02k
      FALLTHROUGH;
230
231
1.37k
    case sizeof "LINUX":
232
1.37k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
573
  break;
234
798
      return 0;
235
236
510
    case sizeof "VMCOREINFO":
237
510
      if (nhdr->n_type != 0
238
378
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
444
  return 0;
240
66
      *regs_offset = 0;
241
66
      *nregloc = 0;
242
66
      *reglocs = NULL;
243
66
      *nitems = 1;
244
66
      *items = vmcoreinfo_items;
245
66
      return 1;
246
247
2.29k
    default:
248
2.29k
      return 0;
249
7.82k
    }
250
251
1.80k
  switch (nhdr->n_type)
252
1.80k
    {
253
269
    case NT_PRSTATUS:
254
269
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
263
  return 0;
256
6
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
6
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
6
      *reglocs = prstatus_regs;
259
6
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
6
      *items = prstatus_items;
261
6
      return 1;
262
263
196
    case NT_PRPSINFO:
264
196
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
195
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
0
#ifdef FPREGSET_SIZE
307
371
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.80k
    EXTRA_NOTES
312
1.80k
#endif
313
1.80k
    }
314
315
820
  return 0;
316
1.80k
}
Unexecuted instantiation: alpha_core_note
arm_core_note
Line
Count
Source
217
7.46k
{
218
7.46k
  switch (nhdr->n_namesz)
219
7.46k
    {
220
3.43k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.43k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
895
  break;
223
2.54k
      return 0;
224
225
1.39k
    case sizeof "CORE":
226
1.39k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
435
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
955
      FALLTHROUGH;
230
231
1.30k
    case sizeof "LINUX":
232
1.30k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
555
  break;
234
748
      return 0;
235
236
613
    case sizeof "VMCOREINFO":
237
613
      if (nhdr->n_type != 0
238
499
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
543
  return 0;
240
70
      *regs_offset = 0;
241
70
      *nregloc = 0;
242
70
      *reglocs = NULL;
243
70
      *nitems = 1;
244
70
      *items = vmcoreinfo_items;
245
70
      return 1;
246
247
1.67k
    default:
248
1.67k
      return 0;
249
7.46k
    }
250
251
1.88k
  switch (nhdr->n_type)
252
1.88k
    {
253
411
    case NT_PRSTATUS:
254
411
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
401
  return 0;
256
10
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
10
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
10
      *reglocs = prstatus_regs;
259
10
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
10
      *items = prstatus_items;
261
10
      return 1;
262
263
112
    case NT_PRPSINFO:
264
112
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
111
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
0
#ifdef FPREGSET_SIZE
307
537
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.88k
    EXTRA_NOTES
312
1.88k
#endif
313
1.88k
    }
314
315
790
  return 0;
316
1.88k
}
aarch64_core_note
Line
Count
Source
217
6.86k
{
218
6.86k
  switch (nhdr->n_namesz)
219
6.86k
    {
220
3.20k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.20k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
1.02k
  break;
223
2.17k
      return 0;
224
225
1.25k
    case sizeof "CORE":
226
1.25k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
384
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
870
      FALLTHROUGH;
230
231
1.22k
    case sizeof "LINUX":
232
1.22k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
539
  break;
234
682
      return 0;
235
236
492
    case sizeof "VMCOREINFO":
237
492
      if (nhdr->n_type != 0
238
383
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
425
  return 0;
240
67
      *regs_offset = 0;
241
67
      *nregloc = 0;
242
67
      *reglocs = NULL;
243
67
      *nitems = 1;
244
67
      *items = vmcoreinfo_items;
245
67
      return 1;
246
247
1.56k
    default:
248
1.56k
      return 0;
249
6.86k
    }
250
251
1.94k
  switch (nhdr->n_type)
252
1.94k
    {
253
329
    case NT_PRSTATUS:
254
329
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
318
  return 0;
256
11
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
11
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
11
      *reglocs = prstatus_regs;
259
11
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
11
      *items = prstatus_items;
261
11
      return 1;
262
263
152
    case NT_PRPSINFO:
264
152
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
151
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.94k
    EXTRA_NOTES
312
1.94k
#endif
313
1.94k
    }
314
315
679
  return 0;
316
1.94k
}
sparc_core_note
Line
Count
Source
217
7.93k
{
218
7.93k
  switch (nhdr->n_namesz)
219
7.93k
    {
220
3.54k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.54k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
891
  break;
223
2.65k
      return 0;
224
225
1.50k
    case sizeof "CORE":
226
1.50k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
422
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.08k
      FALLTHROUGH;
230
231
1.40k
    case sizeof "LINUX":
232
1.40k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
535
  break;
234
870
      return 0;
235
236
608
    case sizeof "VMCOREINFO":
237
608
      if (nhdr->n_type != 0
238
476
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
527
  return 0;
240
81
      *regs_offset = 0;
241
81
      *nregloc = 0;
242
81
      *reglocs = NULL;
243
81
      *nitems = 1;
244
81
      *items = vmcoreinfo_items;
245
81
      return 1;
246
247
1.95k
    default:
248
1.95k
      return 0;
249
7.93k
    }
250
251
1.84k
  switch (nhdr->n_type)
252
1.84k
    {
253
369
    case NT_PRSTATUS:
254
369
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
363
  return 0;
256
6
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
6
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
6
      *reglocs = prstatus_regs;
259
6
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
6
      *items = prstatus_items;
261
6
      return 1;
262
263
118
    case NT_PRPSINFO:
264
118
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
117
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
0
#ifdef FPREGSET_SIZE
307
1.84k
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
1.84k
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.84k
    }
314
315
808
  return 0;
316
1.84k
}
sparc64_core_note
Line
Count
Source
217
7.42k
{
218
7.42k
  switch (nhdr->n_namesz)
219
7.42k
    {
220
3.08k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.08k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
760
  break;
223
2.32k
      return 0;
224
225
1.64k
    case sizeof "CORE":
226
1.64k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
527
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.12k
      FALLTHROUGH;
230
231
1.43k
    case sizeof "LINUX":
232
1.43k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
559
  break;
234
872
      return 0;
235
236
524
    case sizeof "VMCOREINFO":
237
524
      if (nhdr->n_type != 0
238
393
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
458
  return 0;
240
66
      *regs_offset = 0;
241
66
      *nregloc = 0;
242
66
      *reglocs = NULL;
243
66
      *nitems = 1;
244
66
      *items = vmcoreinfo_items;
245
66
      return 1;
246
247
1.86k
    default:
248
1.86k
      return 0;
249
7.42k
    }
250
251
1.84k
  switch (nhdr->n_type)
252
1.84k
    {
253
490
    case NT_PRSTATUS:
254
490
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
471
  return 0;
256
19
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
19
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
19
      *reglocs = prstatus_regs;
259
19
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
19
      *items = prstatus_items;
261
19
      return 1;
262
263
101
    case NT_PRPSINFO:
264
101
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
100
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
0
#ifdef FPREGSET_SIZE
307
1.84k
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
1.84k
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.84k
    }
314
315
674
  return 0;
316
1.84k
}
ppc_core_note
Line
Count
Source
217
7.08k
{
218
7.08k
  switch (nhdr->n_namesz)
219
7.08k
    {
220
3.18k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.18k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
986
  break;
223
2.19k
      return 0;
224
225
1.35k
    case sizeof "CORE":
226
1.35k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
379
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
978
      FALLTHROUGH;
230
231
1.30k
    case sizeof "LINUX":
232
1.30k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
417
  break;
234
883
      return 0;
235
236
522
    case sizeof "VMCOREINFO":
237
522
      if (nhdr->n_type != 0
238
375
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
455
  return 0;
240
67
      *regs_offset = 0;
241
67
      *nregloc = 0;
242
67
      *reglocs = NULL;
243
67
      *nitems = 1;
244
67
      *items = vmcoreinfo_items;
245
67
      return 1;
246
247
1.70k
    default:
248
1.70k
      return 0;
249
7.08k
    }
250
251
1.78k
  switch (nhdr->n_type)
252
1.78k
    {
253
264
    case NT_PRSTATUS:
254
264
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
261
  return 0;
256
3
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
3
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
3
      *reglocs = prstatus_regs;
259
3
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
3
      *items = prstatus_items;
261
3
      return 1;
262
263
102
    case NT_PRPSINFO:
264
102
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
101
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
0
#ifdef FPREGSET_SIZE
307
438
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.78k
    EXTRA_NOTES
312
1.78k
#endif
313
1.78k
    }
314
315
685
  return 0;
316
1.78k
}
ppc64_core_note
Line
Count
Source
217
8.55k
{
218
8.55k
  switch (nhdr->n_namesz)
219
8.55k
    {
220
3.80k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.80k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
989
  break;
223
2.82k
      return 0;
224
225
1.82k
    case sizeof "CORE":
226
1.82k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
669
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.15k
      FALLTHROUGH;
230
231
1.45k
    case sizeof "LINUX":
232
1.45k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
605
  break;
234
845
      return 0;
235
236
623
    case sizeof "VMCOREINFO":
237
623
      if (nhdr->n_type != 0
238
459
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
556
  return 0;
240
67
      *regs_offset = 0;
241
67
      *nregloc = 0;
242
67
      *reglocs = NULL;
243
67
      *nitems = 1;
244
67
      *items = vmcoreinfo_items;
245
67
      return 1;
246
247
2.00k
    default:
248
2.00k
      return 0;
249
8.55k
    }
250
251
2.26k
  switch (nhdr->n_type)
252
2.26k
    {
253
506
    case NT_PRSTATUS:
254
506
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
488
  return 0;
256
18
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
18
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
18
      *reglocs = prstatus_regs;
259
18
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
18
      *items = prstatus_items;
261
18
      return 1;
262
263
139
    case NT_PRPSINFO:
264
139
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
120
  return 0;
266
19
      *regs_offset = 0;
267
19
      *nregloc = 0;
268
19
      *reglocs = NULL;
269
19
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
19
      *items = prpsinfo_items;
271
19
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
0
#ifdef FPREGSET_SIZE
307
579
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
2.26k
    EXTRA_NOTES
312
2.26k
#endif
313
2.26k
    }
314
315
741
  return 0;
316
2.26k
}
s390_core_note
Line
Count
Source
217
6.72k
{
218
6.72k
  switch (nhdr->n_namesz)
219
6.72k
    {
220
3.07k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.07k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
796
  break;
223
2.27k
      return 0;
224
225
1.31k
    case sizeof "CORE":
226
1.31k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
378
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
936
      FALLTHROUGH;
230
231
1.25k
    case sizeof "LINUX":
232
1.25k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
565
  break;
234
691
      return 0;
235
236
554
    case sizeof "VMCOREINFO":
237
554
      if (nhdr->n_type != 0
238
433
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
486
  return 0;
240
68
      *regs_offset = 0;
241
68
      *nregloc = 0;
242
68
      *reglocs = NULL;
243
68
      *nitems = 1;
244
68
      *items = vmcoreinfo_items;
245
68
      return 1;
246
247
1.47k
    default:
248
1.47k
      return 0;
249
6.72k
    }
250
251
1.73k
  switch (nhdr->n_type)
252
1.73k
    {
253
287
    case NT_PRSTATUS:
254
287
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
269
  return 0;
256
18
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
18
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
18
      *reglocs = prstatus_regs;
259
18
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
18
      *items = prstatus_items;
261
18
      return 1;
262
263
180
    case NT_PRPSINFO:
264
180
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
179
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.73k
    EXTRA_NOTES
312
1.73k
#endif
313
1.73k
    }
314
315
656
  return 0;
316
1.73k
}
s390x_core_note
Line
Count
Source
217
8.16k
{
218
8.16k
  switch (nhdr->n_namesz)
219
8.16k
    {
220
3.12k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.12k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
778
  break;
223
2.35k
      return 0;
224
225
1.79k
    case sizeof "CORE":
226
1.79k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
626
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.16k
      FALLTHROUGH;
230
231
1.59k
    case sizeof "LINUX":
232
1.59k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
562
  break;
234
1.03k
      return 0;
235
236
651
    case sizeof "VMCOREINFO":
237
651
      if (nhdr->n_type != 0
238
558
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
585
  return 0;
240
66
      *regs_offset = 0;
241
66
      *nregloc = 0;
242
66
      *reglocs = NULL;
243
66
      *nitems = 1;
244
66
      *items = vmcoreinfo_items;
245
66
      return 1;
246
247
2.16k
    default:
248
2.16k
      return 0;
249
8.16k
    }
250
251
1.96k
  switch (nhdr->n_type)
252
1.96k
    {
253
479
    case NT_PRSTATUS:
254
479
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
469
  return 0;
256
10
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
10
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
10
      *reglocs = prstatus_regs;
259
10
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
10
      *items = prstatus_items;
261
10
      return 1;
262
263
99
    case NT_PRPSINFO:
264
99
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
98
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.96k
    EXTRA_NOTES
312
1.96k
#endif
313
1.96k
    }
314
315
608
  return 0;
316
1.96k
}
m68k_core_note
Line
Count
Source
217
5.99k
{
218
5.99k
  switch (nhdr->n_namesz)
219
5.99k
    {
220
2.31k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.31k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
690
  break;
223
1.62k
      return 0;
224
225
1.36k
    case sizeof "CORE":
226
1.36k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
288
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.07k
      FALLTHROUGH;
230
231
1.43k
    case sizeof "LINUX":
232
1.43k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
493
  break;
234
937
      return 0;
235
236
479
    case sizeof "VMCOREINFO":
237
479
      if (nhdr->n_type != 0
238
343
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
413
  return 0;
240
66
      *regs_offset = 0;
241
66
      *nregloc = 0;
242
66
      *reglocs = NULL;
243
66
      *nitems = 1;
244
66
      *items = vmcoreinfo_items;
245
66
      return 1;
246
247
1.48k
    default:
248
1.48k
      return 0;
249
5.99k
    }
250
251
1.47k
  switch (nhdr->n_type)
252
1.47k
    {
253
245
    case NT_PRSTATUS:
254
245
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
235
  return 0;
256
10
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
10
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
10
      *reglocs = prstatus_regs;
259
10
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
10
      *items = prstatus_items;
261
10
      return 1;
262
263
109
    case NT_PRPSINFO:
264
109
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
108
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
0
    case type:                      \
275
0
      if (nhdr->n_descsz != size)               \
276
0
  return 0;                   \
277
0
      *regs_offset = 0;                   \
278
0
      *nregloc = sizeof table / sizeof table[0];            \
279
0
      *reglocs = table;                   \
280
0
      *nitems = 0;                    \
281
0
      *items = NULL;                    \
282
0
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
0
    case type:                      \
286
0
      if (nhdr->n_descsz != size)               \
287
0
  return 0;                   \
288
0
      *regs_offset = 0;                   \
289
0
      *nregloc = sizeof table / sizeof table[0];            \
290
0
      *reglocs = table;                   \
291
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
0
      *items = extra_items;                 \
293
0
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
0
    case type:                      \
297
0
      if (nhdr->n_descsz != size)               \
298
0
  return 0;                   \
299
0
      *regs_offset = 0;                   \
300
0
      *nregloc = 0;                   \
301
0
      *reglocs = NULL;                    \
302
0
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
0
      *items = extra_items;                 \
304
0
      return 1;
305
306
0
#ifdef FPREGSET_SIZE
307
1.47k
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
1.47k
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.47k
    }
314
315
602
  return 0;
316
1.47k
}
riscv_core_note
Line
Count
Source
217
5.88k
{
218
5.88k
  switch (nhdr->n_namesz)
219
5.88k
    {
220
2.51k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.51k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
610
  break;
223
1.90k
      return 0;
224
225
1.09k
    case sizeof "CORE":
226
1.09k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
239
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
860
      FALLTHROUGH;
230
231
1.14k
    case sizeof "LINUX":
232
1.14k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
476
  break;
234
667
      return 0;
235
236
541
    case sizeof "VMCOREINFO":
237
541
      if (nhdr->n_type != 0
238
391
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
474
  return 0;
240
67
      *regs_offset = 0;
241
67
      *nregloc = 0;
242
67
      *reglocs = NULL;
243
67
      *nitems = 1;
244
67
      *items = vmcoreinfo_items;
245
67
      return 1;
246
247
1.44k
    default:
248
1.44k
      return 0;
249
5.88k
    }
250
251
1.32k
  switch (nhdr->n_type)
252
1.32k
    {
253
275
    case NT_PRSTATUS:
254
275
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
265
  return 0;
256
10
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
10
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
10
      *reglocs = prstatus_regs;
259
10
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
10
      *items = prstatus_items;
261
10
      return 1;
262
263
157
    case NT_PRPSINFO:
264
157
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
156
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
1.32k
#define EXTRA_REGSET(type, size, table)               \
274
1.32k
    case type:                      \
275
1.32k
      if (nhdr->n_descsz != size)               \
276
1.32k
  return 0;                   \
277
1.32k
      *regs_offset = 0;                   \
278
1.32k
      *nregloc = sizeof table / sizeof table[0];            \
279
1.32k
      *reglocs = table;                   \
280
1.32k
      *nitems = 0;                    \
281
1.32k
      *items = NULL;                    \
282
1.32k
      return 1;
283
284
1.32k
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
1.32k
    case type:                      \
286
1.32k
      if (nhdr->n_descsz != size)               \
287
1.32k
  return 0;                   \
288
1.32k
      *regs_offset = 0;                   \
289
1.32k
      *nregloc = sizeof table / sizeof table[0];            \
290
1.32k
      *reglocs = table;                   \
291
1.32k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
1.32k
      *items = extra_items;                 \
293
1.32k
      return 1;
294
295
1.32k
#define EXTRA_ITEMS(type, size, extra_items)              \
296
1.32k
    case type:                      \
297
1.32k
      if (nhdr->n_descsz != size)               \
298
1.32k
  return 0;                   \
299
1.32k
      *regs_offset = 0;                   \
300
1.32k
      *nregloc = 0;                   \
301
1.32k
      *reglocs = NULL;                    \
302
1.32k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
1.32k
      *items = extra_items;                 \
304
1.32k
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.32k
    }
314
315
893
  return 0;
316
1.32k
}
riscv64_core_note
Line
Count
Source
217
4.56k
{
218
4.56k
  switch (nhdr->n_namesz)
219
4.56k
    {
220
1.83k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
1.83k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
474
  break;
223
1.35k
      return 0;
224
225
916
    case sizeof "CORE":
226
916
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
293
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
623
      FALLTHROUGH;
230
231
948
    case sizeof "LINUX":
232
948
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
368
  break;
234
580
      return 0;
235
236
340
    case sizeof "VMCOREINFO":
237
340
      if (nhdr->n_type != 0
238
209
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
274
  return 0;
240
66
      *regs_offset = 0;
241
66
      *nregloc = 0;
242
66
      *reglocs = NULL;
243
66
      *nitems = 1;
244
66
      *items = vmcoreinfo_items;
245
66
      return 1;
246
247
1.15k
    default:
248
1.15k
      return 0;
249
4.56k
    }
250
251
1.13k
  switch (nhdr->n_type)
252
1.13k
    {
253
271
    case NT_PRSTATUS:
254
271
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
261
  return 0;
256
10
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
10
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
10
      *reglocs = prstatus_regs;
259
10
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
10
      *items = prstatus_items;
261
10
      return 1;
262
263
107
    case NT_PRPSINFO:
264
107
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
104
  return 0;
266
3
      *regs_offset = 0;
267
3
      *nregloc = 0;
268
3
      *reglocs = NULL;
269
3
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
3
      *items = prpsinfo_items;
271
3
      return 1;
272
273
1.13k
#define EXTRA_REGSET(type, size, table)               \
274
1.13k
    case type:                      \
275
1.13k
      if (nhdr->n_descsz != size)               \
276
1.13k
  return 0;                   \
277
1.13k
      *regs_offset = 0;                   \
278
1.13k
      *nregloc = sizeof table / sizeof table[0];            \
279
1.13k
      *reglocs = table;                   \
280
1.13k
      *nitems = 0;                    \
281
1.13k
      *items = NULL;                    \
282
1.13k
      return 1;
283
284
1.13k
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
1.13k
    case type:                      \
286
1.13k
      if (nhdr->n_descsz != size)               \
287
1.13k
  return 0;                   \
288
1.13k
      *regs_offset = 0;                   \
289
1.13k
      *nregloc = sizeof table / sizeof table[0];            \
290
1.13k
      *reglocs = table;                   \
291
1.13k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
1.13k
      *items = extra_items;                 \
293
1.13k
      return 1;
294
295
1.13k
#define EXTRA_ITEMS(type, size, extra_items)              \
296
1.13k
    case type:                      \
297
1.13k
      if (nhdr->n_descsz != size)               \
298
1.13k
  return 0;                   \
299
1.13k
      *regs_offset = 0;                   \
300
1.13k
      *nregloc = 0;                   \
301
1.13k
      *reglocs = NULL;                    \
302
1.13k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
1.13k
      *items = extra_items;                 \
304
1.13k
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.13k
    }
314
315
757
  return 0;
316
1.13k
}
csky_core_note
Line
Count
Source
217
5.85k
{
218
5.85k
  switch (nhdr->n_namesz)
219
5.85k
    {
220
2.47k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.47k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
722
  break;
223
1.75k
      return 0;
224
225
1.21k
    case sizeof "CORE":
226
1.21k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
264
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
947
      FALLTHROUGH;
230
231
1.17k
    case sizeof "LINUX":
232
1.17k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
419
  break;
234
760
      return 0;
235
236
509
    case sizeof "VMCOREINFO":
237
509
      if (nhdr->n_type != 0
238
373
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
443
  return 0;
240
66
      *regs_offset = 0;
241
66
      *nregloc = 0;
242
66
      *reglocs = NULL;
243
66
      *nitems = 1;
244
66
      *items = vmcoreinfo_items;
245
66
      return 1;
246
247
1.42k
    default:
248
1.42k
      return 0;
249
5.85k
    }
250
251
1.40k
  switch (nhdr->n_type)
252
1.40k
    {
253
230
    case NT_PRSTATUS:
254
230
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
220
  return 0;
256
10
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
10
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
10
      *reglocs = prstatus_regs;
259
10
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
10
      *items = prstatus_items;
261
10
      return 1;
262
263
100
    case NT_PRPSINFO:
264
100
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
99
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
1.40k
#define EXTRA_REGSET(type, size, table)               \
274
1.40k
    case type:                      \
275
1.40k
      if (nhdr->n_descsz != size)               \
276
1.40k
  return 0;                   \
277
1.40k
      *regs_offset = 0;                   \
278
1.40k
      *nregloc = sizeof table / sizeof table[0];            \
279
1.40k
      *reglocs = table;                   \
280
1.40k
      *nitems = 0;                    \
281
1.40k
      *items = NULL;                    \
282
1.40k
      return 1;
283
284
1.40k
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
1.40k
    case type:                      \
286
1.40k
      if (nhdr->n_descsz != size)               \
287
1.40k
  return 0;                   \
288
1.40k
      *regs_offset = 0;                   \
289
1.40k
      *nregloc = sizeof table / sizeof table[0];            \
290
1.40k
      *reglocs = table;                   \
291
1.40k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
1.40k
      *items = extra_items;                 \
293
1.40k
      return 1;
294
295
1.40k
#define EXTRA_ITEMS(type, size, extra_items)              \
296
1.40k
    case type:                      \
297
1.40k
      if (nhdr->n_descsz != size)               \
298
1.40k
  return 0;                   \
299
1.40k
      *regs_offset = 0;                   \
300
1.40k
      *nregloc = 0;                   \
301
1.40k
      *reglocs = NULL;                    \
302
1.40k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
1.40k
      *items = extra_items;                 \
304
1.40k
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.40k
    }
314
315
1.07k
  return 0;
316
1.40k
}
loongarch_core_note
Line
Count
Source
217
5.35k
{
218
5.35k
  switch (nhdr->n_namesz)
219
5.35k
    {
220
2.19k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.19k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
587
  break;
223
1.60k
      return 0;
224
225
1.06k
    case sizeof "CORE":
226
1.06k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
298
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
767
      FALLTHROUGH;
230
231
1.00k
    case sizeof "LINUX":
232
1.00k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
308
  break;
234
701
      return 0;
235
236
568
    case sizeof "VMCOREINFO":
237
568
      if (nhdr->n_type != 0
238
436
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
502
  return 0;
240
66
      *regs_offset = 0;
241
66
      *nregloc = 0;
242
66
      *reglocs = NULL;
243
66
      *nitems = 1;
244
66
      *items = vmcoreinfo_items;
245
66
      return 1;
246
247
1.29k
    default:
248
1.29k
      return 0;
249
5.35k
    }
250
251
1.19k
  switch (nhdr->n_type)
252
1.19k
    {
253
245
    case NT_PRSTATUS:
254
245
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
235
  return 0;
256
10
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
10
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
10
      *reglocs = prstatus_regs;
259
10
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
10
      *items = prstatus_items;
261
10
      return 1;
262
263
124
    case NT_PRPSINFO:
264
124
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
123
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
1.19k
#define EXTRA_REGSET(type, size, table)               \
274
1.19k
    case type:                      \
275
1.19k
      if (nhdr->n_descsz != size)               \
276
1.19k
  return 0;                   \
277
1.19k
      *regs_offset = 0;                   \
278
1.19k
      *nregloc = sizeof table / sizeof table[0];            \
279
1.19k
      *reglocs = table;                   \
280
1.19k
      *nitems = 0;                    \
281
1.19k
      *items = NULL;                    \
282
1.19k
      return 1;
283
284
1.19k
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
1.19k
    case type:                      \
286
1.19k
      if (nhdr->n_descsz != size)               \
287
1.19k
  return 0;                   \
288
1.19k
      *regs_offset = 0;                   \
289
1.19k
      *nregloc = sizeof table / sizeof table[0];            \
290
1.19k
      *reglocs = table;                   \
291
1.19k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
1.19k
      *items = extra_items;                 \
293
1.19k
      return 1;
294
295
1.19k
#define EXTRA_ITEMS(type, size, extra_items)              \
296
1.19k
    case type:                      \
297
1.19k
      if (nhdr->n_descsz != size)               \
298
1.19k
  return 0;                   \
299
1.19k
      *regs_offset = 0;                   \
300
1.19k
      *nregloc = 0;                   \
301
1.19k
      *reglocs = NULL;                    \
302
1.19k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
1.19k
      *items = extra_items;                 \
304
1.19k
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.19k
    }
314
315
824
  return 0;
316
1.19k
}
mips_core_note
Line
Count
Source
217
5.63k
{
218
5.63k
  switch (nhdr->n_namesz)
219
5.63k
    {
220
2.40k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.40k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
656
  break;
223
1.74k
      return 0;
224
225
1.13k
    case sizeof "CORE":
226
1.13k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
308
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
823
      FALLTHROUGH;
230
231
1.07k
    case sizeof "LINUX":
232
1.07k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
365
  break;
234
707
      return 0;
235
236
546
    case sizeof "VMCOREINFO":
237
546
      if (nhdr->n_type != 0
238
415
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
479
  return 0;
240
67
      *regs_offset = 0;
241
67
      *nregloc = 0;
242
67
      *reglocs = NULL;
243
67
      *nitems = 1;
244
67
      *items = vmcoreinfo_items;
245
67
      return 1;
246
247
1.30k
    default:
248
1.30k
      return 0;
249
5.63k
    }
250
251
1.32k
  switch (nhdr->n_type)
252
1.32k
    {
253
284
    case NT_PRSTATUS:
254
284
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
273
  return 0;
256
11
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
11
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
11
      *reglocs = prstatus_regs;
259
11
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
11
      *items = prstatus_items;
261
11
      return 1;
262
263
103
    case NT_PRPSINFO:
264
103
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
102
  return 0;
266
1
      *regs_offset = 0;
267
1
      *nregloc = 0;
268
1
      *reglocs = NULL;
269
1
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
1
      *items = prpsinfo_items;
271
1
      return 1;
272
273
1.32k
#define EXTRA_REGSET(type, size, table)               \
274
1.32k
    case type:                      \
275
1.32k
      if (nhdr->n_descsz != size)               \
276
1.32k
  return 0;                   \
277
1.32k
      *regs_offset = 0;                   \
278
1.32k
      *nregloc = sizeof table / sizeof table[0];            \
279
1.32k
      *reglocs = table;                   \
280
1.32k
      *nitems = 0;                    \
281
1.32k
      *items = NULL;                    \
282
1.32k
      return 1;
283
284
1.32k
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
1.32k
    case type:                      \
286
1.32k
      if (nhdr->n_descsz != size)               \
287
1.32k
  return 0;                   \
288
1.32k
      *regs_offset = 0;                   \
289
1.32k
      *nregloc = sizeof table / sizeof table[0];            \
290
1.32k
      *reglocs = table;                   \
291
1.32k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
1.32k
      *items = extra_items;                 \
293
1.32k
      return 1;
294
295
1.32k
#define EXTRA_ITEMS(type, size, extra_items)              \
296
1.32k
    case type:                      \
297
1.32k
      if (nhdr->n_descsz != size)               \
298
1.32k
  return 0;                   \
299
1.32k
      *regs_offset = 0;                   \
300
1.32k
      *nregloc = 0;                   \
301
1.32k
      *reglocs = NULL;                    \
302
1.32k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
1.32k
      *items = extra_items;                 \
304
1.32k
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.32k
    }
314
315
942
  return 0;
316
1.32k
}