Coverage Report

Created: 2025-07-18 06:08

/src/elfutils/backends/linux-core-note.c
Line
Count
Source (jump to first uncovered line)
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
132k
{
218
132k
  switch (nhdr->n_namesz)
219
132k
    {
220
58.1k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
58.1k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
11.4k
  break;
223
46.7k
      return 0;
224
225
24.2k
    case sizeof "CORE":
226
24.2k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
10.4k
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
13.8k
      FALLTHROUGH;
230
231
16.9k
    case sizeof "LINUX":
232
16.9k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
8.04k
  break;
234
8.87k
      return 0;
235
236
4.89k
    case sizeof "VMCOREINFO":
237
4.89k
      if (nhdr->n_type != 0
238
4.89k
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
3.70k
  return 0;
240
1.18k
      *regs_offset = 0;
241
1.18k
      *nregloc = 0;
242
1.18k
      *reglocs = NULL;
243
1.18k
      *nitems = 1;
244
1.18k
      *items = vmcoreinfo_items;
245
1.18k
      return 1;
246
247
41.9k
    default:
248
41.9k
      return 0;
249
132k
    }
250
251
29.8k
  switch (nhdr->n_type)
252
29.8k
    {
253
8.09k
    case NT_PRSTATUS:
254
8.09k
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
7.91k
  return 0;
256
180
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
180
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
180
      *reglocs = prstatus_regs;
259
180
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
180
      *items = prstatus_items;
261
180
      return 1;
262
263
3.73k
    case NT_PRPSINFO:
264
3.73k
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
3.65k
  return 0;
266
81
      *regs_offset = 0;
267
81
      *nregloc = 0;
268
81
      *reglocs = NULL;
269
81
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
81
      *items = prpsinfo_items;
271
81
      return 1;
272
273
0
#define EXTRA_REGSET(type, size, table)               \
274
274
    case type:                      \
275
1.86k
      if (nhdr->n_descsz != size)               \
276
1.59k
  return 0;                   \
277
274
      *regs_offset = 0;                   \
278
274
      *nregloc = sizeof table / sizeof table[0];            \
279
274
      *reglocs = table;                   \
280
274
      *nitems = 0;                    \
281
274
      *items = NULL;                    \
282
274
      return 1;
283
284
0
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
36
    case type:                      \
286
429
      if (nhdr->n_descsz != size)               \
287
393
  return 0;                   \
288
36
      *regs_offset = 0;                   \
289
36
      *nregloc = sizeof table / sizeof table[0];            \
290
36
      *reglocs = table;                   \
291
36
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
36
      *items = extra_items;                 \
293
36
      return 1;
294
295
0
#define EXTRA_ITEMS(type, size, extra_items)              \
296
231
    case type:                      \
297
537
      if (nhdr->n_descsz != size)               \
298
306
  return 0;                   \
299
231
      *regs_offset = 0;                   \
300
231
      *nregloc = 0;                   \
301
231
      *reglocs = NULL;                    \
302
231
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
231
      *items = extra_items;                 \
304
231
      return 1;
305
306
#ifdef FPREGSET_SIZE
307
1.15k
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
#ifdef EXTRA_NOTES
311
215
    EXTRA_NOTES
312
#endif
313
29.8k
    }
314
315
14.9k
  return 0;
316
29.8k
}
i386_core_note
Line
Count
Source
217
9.18k
{
218
9.18k
  switch (nhdr->n_namesz)
219
9.18k
    {
220
3.50k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.50k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
940
  break;
223
2.56k
      return 0;
224
225
1.57k
    case sizeof "CORE":
226
1.57k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
680
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
895
      FALLTHROUGH;
230
231
1.19k
    case sizeof "LINUX":
232
1.19k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
385
  break;
234
805
      return 0;
235
236
298
    case sizeof "VMCOREINFO":
237
298
      if (nhdr->n_type != 0
238
298
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
227
  return 0;
240
71
      *regs_offset = 0;
241
71
      *nregloc = 0;
242
71
      *reglocs = NULL;
243
71
      *nitems = 1;
244
71
      *items = vmcoreinfo_items;
245
71
      return 1;
246
247
3.51k
    default:
248
3.51k
      return 0;
249
9.18k
    }
250
251
2.00k
  switch (nhdr->n_type)
252
2.00k
    {
253
529
    case NT_PRSTATUS:
254
529
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
518
  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
161
    case NT_PRPSINFO:
264
161
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
154
  return 0;
266
7
      *regs_offset = 0;
267
7
      *nregloc = 0;
268
7
      *reglocs = NULL;
269
7
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
7
      *items = prpsinfo_items;
271
7
      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
110
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
2.00k
    EXTRA_NOTES
312
2.00k
#endif
313
2.00k
    }
314
315
1.02k
  return 0;
316
2.00k
}
Unexecuted instantiation: sh_core_note
x86_64_core_note
Line
Count
Source
217
8.47k
{
218
8.47k
  switch (nhdr->n_namesz)
219
8.47k
    {
220
3.52k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.52k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
582
  break;
223
2.94k
      return 0;
224
225
1.66k
    case sizeof "CORE":
226
1.66k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
780
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
881
      FALLTHROUGH;
230
231
1.03k
    case sizeof "LINUX":
232
1.03k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
491
  break;
234
541
      return 0;
235
236
259
    case sizeof "VMCOREINFO":
237
259
      if (nhdr->n_type != 0
238
259
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
191
  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
2.87k
    default:
248
2.87k
      return 0;
249
8.47k
    }
250
251
1.85k
  switch (nhdr->n_type)
252
1.85k
    {
253
583
    case NT_PRSTATUS:
254
583
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
562
  return 0;
256
21
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
21
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
21
      *reglocs = prstatus_regs;
259
21
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
21
      *items = prstatus_items;
261
21
      return 1;
262
263
201
    case NT_PRPSINFO:
264
201
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
191
  return 0;
266
10
      *regs_offset = 0;
267
10
      *nregloc = 0;
268
10
      *reglocs = NULL;
269
10
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
10
      *items = prpsinfo_items;
271
10
      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
194
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.85k
    EXTRA_NOTES
312
1.85k
#endif
313
1.85k
    }
314
315
812
  return 0;
316
1.85k
}
x32_core_note
Line
Count
Source
217
9.48k
{
218
9.48k
  switch (nhdr->n_namesz)
219
9.48k
    {
220
4.23k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
4.23k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
767
  break;
223
3.46k
      return 0;
224
225
1.48k
    case sizeof "CORE":
226
1.48k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
464
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.02k
      FALLTHROUGH;
230
231
1.26k
    case sizeof "LINUX":
232
1.26k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
672
  break;
234
593
      return 0;
235
236
298
    case sizeof "VMCOREINFO":
237
298
      if (nhdr->n_type != 0
238
298
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
231
  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
3.22k
    default:
248
3.22k
      return 0;
249
9.48k
    }
250
251
1.90k
  switch (nhdr->n_type)
252
1.90k
    {
253
458
    case NT_PRSTATUS:
254
458
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
447
  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
309
    case NT_PRPSINFO:
264
309
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
306
  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
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
117
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.90k
    EXTRA_NOTES
312
1.90k
#endif
313
1.90k
    }
314
315
912
  return 0;
316
1.90k
}
Unexecuted instantiation: alpha_core_note
arm_core_note
Line
Count
Source
217
6.56k
{
218
6.56k
  switch (nhdr->n_namesz)
219
6.56k
    {
220
2.93k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.93k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
636
  break;
223
2.29k
      return 0;
224
225
1.23k
    case sizeof "CORE":
226
1.23k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
542
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
691
      FALLTHROUGH;
230
231
919
    case sizeof "LINUX":
232
919
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
408
  break;
234
511
      return 0;
235
236
241
    case sizeof "VMCOREINFO":
237
241
      if (nhdr->n_type != 0
238
241
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
175
  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.93k
    default:
248
1.93k
      return 0;
249
6.56k
    }
250
251
1.58k
  switch (nhdr->n_type)
252
1.58k
    {
253
484
    case NT_PRSTATUS:
254
484
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
474
  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
180
    case NT_PRPSINFO:
264
180
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
177
  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
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
84
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.58k
    EXTRA_NOTES
312
1.58k
#endif
313
1.58k
    }
314
315
805
  return 0;
316
1.58k
}
aarch64_core_note
Line
Count
Source
217
7.49k
{
218
7.49k
  switch (nhdr->n_namesz)
219
7.49k
    {
220
3.16k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.16k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
854
  break;
223
2.31k
      return 0;
224
225
1.50k
    case sizeof "CORE":
226
1.50k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
630
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
873
      FALLTHROUGH;
230
231
1.07k
    case sizeof "LINUX":
232
1.07k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
538
  break;
234
538
      return 0;
235
236
297
    case sizeof "VMCOREINFO":
237
297
      if (nhdr->n_type != 0
238
297
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
223
  return 0;
240
74
      *regs_offset = 0;
241
74
      *nregloc = 0;
242
74
      *reglocs = NULL;
243
74
      *nitems = 1;
244
74
      *items = vmcoreinfo_items;
245
74
      return 1;
246
247
2.31k
    default:
248
2.31k
      return 0;
249
7.49k
    }
250
251
2.02k
  switch (nhdr->n_type)
252
2.02k
    {
253
593
    case NT_PRSTATUS:
254
593
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
583
  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
169
    case NT_PRPSINFO:
264
169
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
168
  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
2.02k
    EXTRA_NOTES
312
2.02k
#endif
313
2.02k
    }
314
315
884
  return 0;
316
2.02k
}
sparc_core_note
Line
Count
Source
217
7.07k
{
218
7.07k
  switch (nhdr->n_namesz)
219
7.07k
    {
220
3.18k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.18k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
502
  break;
223
2.67k
      return 0;
224
225
1.27k
    case sizeof "CORE":
226
1.27k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
457
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
818
      FALLTHROUGH;
230
231
1.01k
    case sizeof "LINUX":
232
1.01k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
544
  break;
234
470
      return 0;
235
236
284
    case sizeof "VMCOREINFO":
237
284
      if (nhdr->n_type != 0
238
284
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
217
  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.13k
    default:
248
2.13k
      return 0;
249
7.07k
    }
250
251
1.50k
  switch (nhdr->n_type)
252
1.50k
    {
253
347
    case NT_PRSTATUS:
254
347
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
337
  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
247
    case NT_PRPSINFO:
264
247
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
245
  return 0;
266
2
      *regs_offset = 0;
267
2
      *nregloc = 0;
268
2
      *reglocs = NULL;
269
2
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
2
      *items = prpsinfo_items;
271
2
      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.50k
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
1.50k
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.50k
    }
314
315
810
  return 0;
316
1.50k
}
sparc64_core_note
Line
Count
Source
217
6.58k
{
218
6.58k
  switch (nhdr->n_namesz)
219
6.58k
    {
220
2.70k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.70k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
483
  break;
223
2.22k
      return 0;
224
225
1.36k
    case sizeof "CORE":
226
1.36k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
614
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
754
      FALLTHROUGH;
230
231
916
    case sizeof "LINUX":
232
916
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
418
  break;
234
498
      return 0;
235
236
278
    case sizeof "VMCOREINFO":
237
278
      if (nhdr->n_type != 0
238
278
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
209
  return 0;
240
69
      *regs_offset = 0;
241
69
      *nregloc = 0;
242
69
      *reglocs = NULL;
243
69
      *nitems = 1;
244
69
      *items = vmcoreinfo_items;
245
69
      return 1;
246
247
2.07k
    default:
248
2.07k
      return 0;
249
6.58k
    }
250
251
1.51k
  switch (nhdr->n_type)
252
1.51k
    {
253
440
    case NT_PRSTATUS:
254
440
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
437
  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
188
    case NT_PRPSINFO:
264
188
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
187
  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.51k
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
1.51k
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.51k
    }
314
315
673
  return 0;
316
1.51k
}
ppc_core_note
Line
Count
Source
217
8.57k
{
218
8.57k
  switch (nhdr->n_namesz)
219
8.57k
    {
220
3.87k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.87k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
960
  break;
223
2.91k
      return 0;
224
225
1.51k
    case sizeof "CORE":
226
1.51k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
787
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
724
      FALLTHROUGH;
230
231
918
    case sizeof "LINUX":
232
918
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
368
  break;
234
550
      return 0;
235
236
291
    case sizeof "VMCOREINFO":
237
291
      if (nhdr->n_type != 0
238
291
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
223
  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
2.70k
    default:
248
2.70k
      return 0;
249
8.57k
    }
250
251
2.11k
  switch (nhdr->n_type)
252
2.11k
    {
253
514
    case NT_PRSTATUS:
254
514
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
504
  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
197
    case NT_PRPSINFO:
264
197
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
195
  return 0;
266
2
      *regs_offset = 0;
267
2
      *nregloc = 0;
268
2
      *reglocs = NULL;
269
2
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
2
      *items = prpsinfo_items;
271
2
      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
114
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
2.11k
    EXTRA_NOTES
312
2.11k
#endif
313
2.11k
    }
314
315
974
  return 0;
316
2.11k
}
ppc64_core_note
Line
Count
Source
217
7.36k
{
218
7.36k
  switch (nhdr->n_namesz)
219
7.36k
    {
220
3.21k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.21k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
897
  break;
223
2.31k
      return 0;
224
225
1.21k
    case sizeof "CORE":
226
1.21k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
592
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
623
      FALLTHROUGH;
230
231
903
    case sizeof "LINUX":
232
903
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
389
  break;
234
514
      return 0;
235
236
300
    case sizeof "VMCOREINFO":
237
300
      if (nhdr->n_type != 0
238
300
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
234
  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.36k
    default:
248
2.36k
      return 0;
249
7.36k
    }
250
251
1.87k
  switch (nhdr->n_type)
252
1.87k
    {
253
484
    case NT_PRSTATUS:
254
484
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
474
  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
172
    case NT_PRPSINFO:
264
172
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
160
  return 0;
266
12
      *regs_offset = 0;
267
12
      *nregloc = 0;
268
12
      *reglocs = NULL;
269
12
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
12
      *items = prpsinfo_items;
271
12
      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
105
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
0
#endif
309
310
0
#ifdef EXTRA_NOTES
311
1.87k
    EXTRA_NOTES
312
1.87k
#endif
313
1.87k
    }
314
315
751
  return 0;
316
1.87k
}
s390_core_note
Line
Count
Source
217
7.99k
{
218
7.99k
  switch (nhdr->n_namesz)
219
7.99k
    {
220
3.76k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.76k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
727
  break;
223
3.04k
      return 0;
224
225
1.43k
    case sizeof "CORE":
226
1.43k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
608
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
830
      FALLTHROUGH;
230
231
1.01k
    case sizeof "LINUX":
232
1.01k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
539
  break;
234
476
      return 0;
235
236
279
    case sizeof "VMCOREINFO":
237
279
      if (nhdr->n_type != 0
238
279
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
212
  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.31k
    default:
248
2.31k
      return 0;
249
7.99k
    }
250
251
1.87k
  switch (nhdr->n_type)
252
1.87k
    {
253
445
    case NT_PRSTATUS:
254
445
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
427
  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
241
    case NT_PRPSINFO:
264
241
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
240
  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.87k
    EXTRA_NOTES
312
1.87k
#endif
313
1.87k
    }
314
315
904
  return 0;
316
1.87k
}
s390x_core_note
Line
Count
Source
217
7.31k
{
218
7.31k
  switch (nhdr->n_namesz)
219
7.31k
    {
220
2.86k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.86k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
540
  break;
223
2.32k
      return 0;
224
225
1.54k
    case sizeof "CORE":
226
1.54k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
761
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
782
      FALLTHROUGH;
230
231
916
    case sizeof "LINUX":
232
916
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
454
  break;
234
462
      return 0;
235
236
328
    case sizeof "VMCOREINFO":
237
328
      if (nhdr->n_type != 0
238
328
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
251
  return 0;
240
77
      *regs_offset = 0;
241
77
      *nregloc = 0;
242
77
      *reglocs = NULL;
243
77
      *nitems = 1;
244
77
      *items = vmcoreinfo_items;
245
77
      return 1;
246
247
2.44k
    default:
248
2.44k
      return 0;
249
7.31k
    }
250
251
1.75k
  switch (nhdr->n_type)
252
1.75k
    {
253
492
    case NT_PRSTATUS:
254
492
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
482
  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
191
    case NT_PRPSINFO:
264
191
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
190
  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.75k
    EXTRA_NOTES
312
1.75k
#endif
313
1.75k
    }
314
315
799
  return 0;
316
1.75k
}
m68k_core_note
Line
Count
Source
217
7.81k
{
218
7.81k
  switch (nhdr->n_namesz)
219
7.81k
    {
220
3.51k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.51k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
679
  break;
223
2.83k
      return 0;
224
225
1.42k
    case sizeof "CORE":
226
1.42k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
730
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
691
      FALLTHROUGH;
230
231
928
    case sizeof "LINUX":
232
928
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
428
  break;
234
500
      return 0;
235
236
293
    case sizeof "VMCOREINFO":
237
293
      if (nhdr->n_type != 0
238
293
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
227
  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.35k
    default:
248
2.35k
      return 0;
249
7.81k
    }
250
251
1.83k
  switch (nhdr->n_type)
252
1.83k
    {
253
567
    case NT_PRSTATUS:
254
567
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
557
  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
215
    case NT_PRPSINFO:
264
215
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
186
  return 0;
266
29
      *regs_offset = 0;
267
29
      *nregloc = 0;
268
29
      *reglocs = NULL;
269
29
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
29
      *items = prpsinfo_items;
271
29
      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.83k
    EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs)
308
1.83k
#endif
309
310
#ifdef EXTRA_NOTES
311
    EXTRA_NOTES
312
#endif
313
1.83k
    }
314
315
942
  return 0;
316
1.83k
}
riscv_core_note
Line
Count
Source
217
8.73k
{
218
8.73k
  switch (nhdr->n_namesz)
219
8.73k
    {
220
4.23k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
4.23k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
638
  break;
223
3.59k
      return 0;
224
225
1.60k
    case sizeof "CORE":
226
1.60k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
545
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.05k
      FALLTHROUGH;
230
231
1.13k
    case sizeof "LINUX":
232
1.13k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
635
  break;
234
498
      return 0;
235
236
323
    case sizeof "VMCOREINFO":
237
323
      if (nhdr->n_type != 0
238
323
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
250
  return 0;
240
73
      *regs_offset = 0;
241
73
      *nregloc = 0;
242
73
      *reglocs = NULL;
243
73
      *nitems = 1;
244
73
      *items = vmcoreinfo_items;
245
73
      return 1;
246
247
2.50k
    default:
248
2.50k
      return 0;
249
8.73k
    }
250
251
1.81k
  switch (nhdr->n_type)
252
1.81k
    {
253
435
    case NT_PRSTATUS:
254
435
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
425
  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
323
    case NT_PRPSINFO:
264
323
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
321
  return 0;
266
2
      *regs_offset = 0;
267
2
      *nregloc = 0;
268
2
      *reglocs = NULL;
269
2
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
2
      *items = prpsinfo_items;
271
2
      return 1;
272
273
1.81k
#define EXTRA_REGSET(type, size, table)               \
274
1.81k
    case type:                      \
275
1.81k
      if (nhdr->n_descsz != size)               \
276
1.81k
  return 0;                   \
277
1.81k
      *regs_offset = 0;                   \
278
1.81k
      *nregloc = sizeof table / sizeof table[0];            \
279
1.81k
      *reglocs = table;                   \
280
1.81k
      *nitems = 0;                    \
281
1.81k
      *items = NULL;                    \
282
1.81k
      return 1;
283
284
1.81k
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
1.81k
    case type:                      \
286
1.81k
      if (nhdr->n_descsz != size)               \
287
1.81k
  return 0;                   \
288
1.81k
      *regs_offset = 0;                   \
289
1.81k
      *nregloc = sizeof table / sizeof table[0];            \
290
1.81k
      *reglocs = table;                   \
291
1.81k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
1.81k
      *items = extra_items;                 \
293
1.81k
      return 1;
294
295
1.81k
#define EXTRA_ITEMS(type, size, extra_items)              \
296
1.81k
    case type:                      \
297
1.81k
      if (nhdr->n_descsz != size)               \
298
1.81k
  return 0;                   \
299
1.81k
      *regs_offset = 0;                   \
300
1.81k
      *nregloc = 0;                   \
301
1.81k
      *reglocs = NULL;                    \
302
1.81k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
1.81k
      *items = extra_items;                 \
304
1.81k
      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.81k
    }
314
315
1.06k
  return 0;
316
1.81k
}
riscv64_core_note
Line
Count
Source
217
6.69k
{
218
6.69k
  switch (nhdr->n_namesz)
219
6.69k
    {
220
2.84k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
2.84k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
465
  break;
223
2.37k
      return 0;
224
225
1.27k
    case sizeof "CORE":
226
1.27k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
607
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
671
      FALLTHROUGH;
230
231
753
    case sizeof "LINUX":
232
753
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
334
  break;
234
419
      return 0;
235
236
267
    case sizeof "VMCOREINFO":
237
267
      if (nhdr->n_type != 0
238
267
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
189
  return 0;
240
78
      *regs_offset = 0;
241
78
      *nregloc = 0;
242
78
      *reglocs = NULL;
243
78
      *nitems = 1;
244
78
      *items = vmcoreinfo_items;
245
78
      return 1;
246
247
2.22k
    default:
248
2.22k
      return 0;
249
6.69k
    }
250
251
1.40k
  switch (nhdr->n_type)
252
1.40k
    {
253
436
    case NT_PRSTATUS:
254
436
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
426
  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
171
    case NT_PRPSINFO:
264
171
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
168
  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.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
799
  return 0;
316
1.40k
}
csky_core_note
Line
Count
Source
217
7.33k
{
218
7.33k
  switch (nhdr->n_namesz)
219
7.33k
    {
220
3.26k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.26k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
584
  break;
223
2.68k
      return 0;
224
225
1.29k
    case sizeof "CORE":
226
1.29k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
553
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
745
      FALLTHROUGH;
230
231
926
    case sizeof "LINUX":
232
926
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
395
  break;
234
531
      return 0;
235
236
293
    case sizeof "VMCOREINFO":
237
293
      if (nhdr->n_type != 0
238
293
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
219
  return 0;
240
74
      *regs_offset = 0;
241
74
      *nregloc = 0;
242
74
      *reglocs = NULL;
243
74
      *nitems = 1;
244
74
      *items = vmcoreinfo_items;
245
74
      return 1;
246
247
2.29k
    default:
248
2.29k
      return 0;
249
7.33k
    }
250
251
1.53k
  switch (nhdr->n_type)
252
1.53k
    {
253
437
    case NT_PRSTATUS:
254
437
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
424
  return 0;
256
13
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
13
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
13
      *reglocs = prstatus_regs;
259
13
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
13
      *items = prstatus_items;
261
13
      return 1;
262
263
238
    case NT_PRPSINFO:
264
238
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
236
  return 0;
266
2
      *regs_offset = 0;
267
2
      *nregloc = 0;
268
2
      *reglocs = NULL;
269
2
      *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0];
270
2
      *items = prpsinfo_items;
271
2
      return 1;
272
273
1.53k
#define EXTRA_REGSET(type, size, table)               \
274
1.53k
    case type:                      \
275
1.53k
      if (nhdr->n_descsz != size)               \
276
1.53k
  return 0;                   \
277
1.53k
      *regs_offset = 0;                   \
278
1.53k
      *nregloc = sizeof table / sizeof table[0];            \
279
1.53k
      *reglocs = table;                   \
280
1.53k
      *nitems = 0;                    \
281
1.53k
      *items = NULL;                    \
282
1.53k
      return 1;
283
284
1.53k
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
1.53k
    case type:                      \
286
1.53k
      if (nhdr->n_descsz != size)               \
287
1.53k
  return 0;                   \
288
1.53k
      *regs_offset = 0;                   \
289
1.53k
      *nregloc = sizeof table / sizeof table[0];            \
290
1.53k
      *reglocs = table;                   \
291
1.53k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
1.53k
      *items = extra_items;                 \
293
1.53k
      return 1;
294
295
1.53k
#define EXTRA_ITEMS(type, size, extra_items)              \
296
1.53k
    case type:                      \
297
1.53k
      if (nhdr->n_descsz != size)               \
298
1.53k
  return 0;                   \
299
1.53k
      *regs_offset = 0;                   \
300
1.53k
      *nregloc = 0;                   \
301
1.53k
      *reglocs = NULL;                    \
302
1.53k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
1.53k
      *items = extra_items;                 \
304
1.53k
      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.53k
    }
314
315
857
  return 0;
316
1.53k
}
loongarch_core_note
Line
Count
Source
217
8.71k
{
218
8.71k
  switch (nhdr->n_namesz)
219
8.71k
    {
220
4.20k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
4.20k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
615
  break;
223
3.58k
      return 0;
224
225
1.53k
    case sizeof "CORE":
226
1.53k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
520
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
1.01k
      FALLTHROUGH;
230
231
1.15k
    case sizeof "LINUX":
232
1.15k
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
640
  break;
234
517
      return 0;
235
236
293
    case sizeof "VMCOREINFO":
237
293
      if (nhdr->n_type != 0
238
293
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
225
  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
2.54k
    default:
248
2.54k
      return 0;
249
8.71k
    }
250
251
1.77k
  switch (nhdr->n_type)
252
1.77k
    {
253
388
    case NT_PRSTATUS:
254
388
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
381
  return 0;
256
7
      *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg);
257
7
      *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0];
258
7
      *reglocs = prstatus_regs;
259
7
      *nitems = sizeof prstatus_items / sizeof prstatus_items[0];
260
7
      *items = prstatus_items;
261
7
      return 1;
262
263
293
    case NT_PRPSINFO:
264
293
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
292
  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.77k
#define EXTRA_REGSET(type, size, table)               \
274
1.77k
    case type:                      \
275
1.77k
      if (nhdr->n_descsz != size)               \
276
1.77k
  return 0;                   \
277
1.77k
      *regs_offset = 0;                   \
278
1.77k
      *nregloc = sizeof table / sizeof table[0];            \
279
1.77k
      *reglocs = table;                   \
280
1.77k
      *nitems = 0;                    \
281
1.77k
      *items = NULL;                    \
282
1.77k
      return 1;
283
284
1.77k
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
1.77k
    case type:                      \
286
1.77k
      if (nhdr->n_descsz != size)               \
287
1.77k
  return 0;                   \
288
1.77k
      *regs_offset = 0;                   \
289
1.77k
      *nregloc = sizeof table / sizeof table[0];            \
290
1.77k
      *reglocs = table;                   \
291
1.77k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
1.77k
      *items = extra_items;                 \
293
1.77k
      return 1;
294
295
1.77k
#define EXTRA_ITEMS(type, size, extra_items)              \
296
1.77k
    case type:                      \
297
1.77k
      if (nhdr->n_descsz != size)               \
298
1.77k
  return 0;                   \
299
1.77k
      *regs_offset = 0;                   \
300
1.77k
      *nregloc = 0;                   \
301
1.77k
      *reglocs = NULL;                    \
302
1.77k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
1.77k
      *items = extra_items;                 \
304
1.77k
      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.77k
    }
314
315
1.09k
  return 0;
316
1.77k
}
mips_core_note
Line
Count
Source
217
6.91k
{
218
6.91k
  switch (nhdr->n_namesz)
219
6.91k
    {
220
3.13k
    case sizeof "CORE" - 1: /* Buggy old Linux kernels.  */
221
3.13k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
222
543
  break;
223
2.58k
      return 0;
224
225
1.31k
    case sizeof "CORE":
226
1.31k
      if (memcmp (name, "CORE", nhdr->n_namesz) == 0)
227
561
  break;
228
      /* Buggy old Linux kernels didn't terminate "LINUX".  */
229
757
      FALLTHROUGH;
230
231
860
    case sizeof "LINUX":
232
860
      if (memcmp (name, "LINUX", nhdr->n_namesz) == 0)
233
406
  break;
234
454
      return 0;
235
236
269
    case sizeof "VMCOREINFO":
237
269
      if (nhdr->n_type != 0
238
269
    || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0)
239
202
  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.09k
    default:
248
2.09k
      return 0;
249
6.91k
    }
250
251
1.51k
  switch (nhdr->n_type)
252
1.51k
    {
253
462
    case NT_PRSTATUS:
254
462
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus)))
255
456
  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
241
    case NT_PRPSINFO:
264
241
      if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo)))
265
240
  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.51k
#define EXTRA_REGSET(type, size, table)               \
274
1.51k
    case type:                      \
275
1.51k
      if (nhdr->n_descsz != size)               \
276
1.51k
  return 0;                   \
277
1.51k
      *regs_offset = 0;                   \
278
1.51k
      *nregloc = sizeof table / sizeof table[0];            \
279
1.51k
      *reglocs = table;                   \
280
1.51k
      *nitems = 0;                    \
281
1.51k
      *items = NULL;                    \
282
1.51k
      return 1;
283
284
1.51k
#define EXTRA_REGSET_ITEMS(type, size, table, extra_items)          \
285
1.51k
    case type:                      \
286
1.51k
      if (nhdr->n_descsz != size)               \
287
1.51k
  return 0;                   \
288
1.51k
      *regs_offset = 0;                   \
289
1.51k
      *nregloc = sizeof table / sizeof table[0];            \
290
1.51k
      *reglocs = table;                   \
291
1.51k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
292
1.51k
      *items = extra_items;                 \
293
1.51k
      return 1;
294
295
1.51k
#define EXTRA_ITEMS(type, size, extra_items)              \
296
1.51k
    case type:                      \
297
1.51k
      if (nhdr->n_descsz != size)               \
298
1.51k
  return 0;                   \
299
1.51k
      *regs_offset = 0;                   \
300
1.51k
      *nregloc = 0;                   \
301
1.51k
      *reglocs = NULL;                    \
302
1.51k
      *nitems = sizeof extra_items / sizeof extra_items[0];         \
303
1.51k
      *items = extra_items;                 \
304
1.51k
      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.51k
    }
314
315
807
  return 0;
316
1.51k
}