Branch data Line data Source code
1 : : /* Return note type name.
2 : : Copyright (C) 2002, 2007, 2008, 2012 Red Hat, Inc.
3 : : This file is part of elfutils.
4 : : Written by Ulrich Drepper <drepper@redhat.com>, 2002.
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 : : #ifdef HAVE_CONFIG_H
31 : : # include <config.h>
32 : : #endif
33 : :
34 : : #include <inttypes.h>
35 : : #include <stdio.h>
36 : : #include <libeblP.h>
37 : :
38 : : const char *
39 : 21 : ebl_core_note_type_name (ebl, type, buf, len)
40 : : Ebl *ebl;
41 : : uint32_t type;
42 : : char *buf;
43 : : size_t len;
44 : : {
45 : 21 : const char *res = ebl->core_note_type_name (type, buf, len);
46 : :
47 [ + - ]: 21 : if (res == NULL)
48 : : {
49 : : static const char *knowntypes[] =
50 : : {
51 : : #define KNOWNSTYPE(name) [NT_##name] = #name
52 : : KNOWNSTYPE (PRSTATUS),
53 : : KNOWNSTYPE (FPREGSET),
54 : : KNOWNSTYPE (PRPSINFO),
55 : : KNOWNSTYPE (TASKSTRUCT),
56 : : KNOWNSTYPE (PLATFORM),
57 : : KNOWNSTYPE (AUXV),
58 : : KNOWNSTYPE (GWINDOWS),
59 : : KNOWNSTYPE (ASRS),
60 : : KNOWNSTYPE (PSTATUS),
61 : : KNOWNSTYPE (PSINFO),
62 : : KNOWNSTYPE (PRCRED),
63 : : KNOWNSTYPE (UTSNAME),
64 : : KNOWNSTYPE (LWPSTATUS),
65 : : KNOWNSTYPE (LWPSINFO),
66 : : KNOWNSTYPE (PRFPXREG)
67 : : #undef KNOWNSTYPE
68 : : };
69 : :
70 : : /* Handle standard names. */
71 [ + + ]: 21 : if (type < sizeof (knowntypes) / sizeof (knowntypes[0])
72 [ + + ]: 15 : && knowntypes[type] != NULL)
73 : : res = knowntypes[type];
74 : : else
75 [ - - - - : 7 : switch (type)
- - + - -
- - - + +
+ + - ]
76 : : {
77 : : #define KNOWNSTYPE(name) case NT_##name: res = #name; break
78 : : KNOWNSTYPE (PRXFPREG);
79 : 0 : KNOWNSTYPE (PPC_VMX);
80 : 0 : KNOWNSTYPE (PPC_SPE);
81 : 0 : KNOWNSTYPE (PPC_VSX);
82 : 0 : KNOWNSTYPE (386_TLS);
83 : 0 : KNOWNSTYPE (386_IOPERM);
84 : 0 : KNOWNSTYPE (X86_XSTATE);
85 : 1 : KNOWNSTYPE (S390_HIGH_GPRS);
86 : 0 : KNOWNSTYPE (S390_TIMER);
87 : 0 : KNOWNSTYPE (S390_TODCMP);
88 : 0 : KNOWNSTYPE (S390_TODPREG);
89 : 0 : KNOWNSTYPE (S390_CTRS);
90 : 0 : KNOWNSTYPE (S390_PREFIX);
91 : 2 : KNOWNSTYPE (S390_LAST_BREAK);
92 : 2 : KNOWNSTYPE (S390_SYSTEM_CALL);
93 : 1 : KNOWNSTYPE (ARM_VFP);
94 : : #undef KNOWNSTYPE
95 : :
96 : : default:
97 : 1 : snprintf (buf, len, "%s: %" PRIu32, gettext ("<unknown>"), type);
98 : :
99 : 1 : res = buf;
100 : : }
101 : : }
102 : :
103 : 21 : return res;
104 : : }
|