Branch data Line data Source code
1 : : /* Return note type name.
2 : : Copyright (C) 2002, 2007, 2008, 2012, 2013 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 : 118 : ebl_core_note_type_name (Ebl *ebl, uint32_t type, char *buf, size_t len)
40 : : {
41 : 118 : const char *res = ebl->core_note_type_name (type, buf, len);
42 : :
43 [ + - ]: 118 : if (res == NULL)
44 : : {
45 : 118 : static const char *knowntypes[] =
46 : : {
47 : : #define KNOWNSTYPE(name) [NT_##name] = #name
48 : : KNOWNSTYPE (PRSTATUS),
49 : : KNOWNSTYPE (FPREGSET),
50 : : KNOWNSTYPE (PRPSINFO),
51 : : KNOWNSTYPE (TASKSTRUCT),
52 : : KNOWNSTYPE (PLATFORM),
53 : : KNOWNSTYPE (AUXV),
54 : : KNOWNSTYPE (GWINDOWS),
55 : : KNOWNSTYPE (ASRS),
56 : : KNOWNSTYPE (PSTATUS),
57 : : KNOWNSTYPE (PSINFO),
58 : : KNOWNSTYPE (PRCRED),
59 : : KNOWNSTYPE (UTSNAME),
60 : : KNOWNSTYPE (LWPSTATUS),
61 : : KNOWNSTYPE (LWPSINFO),
62 : : KNOWNSTYPE (PRFPXREG)
63 : : #undef KNOWNSTYPE
64 : : };
65 : :
66 : : /* Handle standard names. */
67 [ + + ]: 118 : if (type < sizeof (knowntypes) / sizeof (knowntypes[0])
68 [ + + ]: 72 : && knowntypes[type] != NULL)
69 : : res = knowntypes[type];
70 : : else
71 [ - - - - : 48 : switch (type)
+ - + + -
- - - - +
+ + + + +
- - - - -
- - + + +
- ]
72 : : {
73 : : #define KNOWNSTYPE(name) case NT_##name: res = #name; break
74 : : KNOWNSTYPE (PRXFPREG);
75 : 0 : KNOWNSTYPE (PPC_VMX);
76 : 0 : KNOWNSTYPE (PPC_SPE);
77 : 0 : KNOWNSTYPE (PPC_VSX);
78 : 0 : KNOWNSTYPE (PPC_TM_SPR);
79 : 2 : KNOWNSTYPE (386_TLS);
80 : 0 : KNOWNSTYPE (386_IOPERM);
81 : 2 : KNOWNSTYPE (X86_XSTATE);
82 : 2 : KNOWNSTYPE (S390_HIGH_GPRS);
83 : 0 : KNOWNSTYPE (S390_TIMER);
84 : 0 : KNOWNSTYPE (S390_TODCMP);
85 : 0 : KNOWNSTYPE (S390_TODPREG);
86 : 0 : KNOWNSTYPE (S390_CTRS);
87 : 0 : KNOWNSTYPE (S390_PREFIX);
88 : 4 : KNOWNSTYPE (S390_LAST_BREAK);
89 : 4 : KNOWNSTYPE (S390_SYSTEM_CALL);
90 : 2 : KNOWNSTYPE (ARM_VFP);
91 : 2 : KNOWNSTYPE (ARM_TLS);
92 : 2 : KNOWNSTYPE (ARM_HW_BREAK);
93 : 2 : KNOWNSTYPE (ARM_HW_WATCH);
94 : 0 : KNOWNSTYPE (ARM_SYSTEM_CALL);
95 : 0 : KNOWNSTYPE (ARM_TAGGED_ADDR_CTRL);
96 : 0 : KNOWNSTYPE (ARM_SVE);
97 : 0 : KNOWNSTYPE (ARM_SSVE);
98 : 0 : KNOWNSTYPE (ARM_ZA);
99 : 0 : KNOWNSTYPE (ARM_PAC_ENABLED_KEYS);
100 : 0 : KNOWNSTYPE (ARM_PAC_MASK);
101 : 12 : KNOWNSTYPE (SIGINFO);
102 : 12 : KNOWNSTYPE (FILE);
103 : : #undef KNOWNSTYPE
104 : :
105 : 2 : default:
106 : 2 : snprintf (buf, len, "%s: %" PRIu32, _("<unknown>"), type);
107 : :
108 : 2 : res = buf;
109 : : }
110 : : }
111 : :
112 : 118 : return res;
113 : : }
|