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 54 : ebl_core_note_type_name (Ebl *ebl, uint32_t type, char *buf, size_t len)
40 : {
41 54 : const char *res = ebl->core_note_type_name (type, buf, len);
42 :
43 54 : if (res == NULL)
44 : {
45 : 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 54 : if (type < sizeof (knowntypes) / sizeof (knowntypes[0])
68 33 : && knowntypes[type] != NULL)
69 : res = knowntypes[type];
70 : else
71 22 : 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 1 : KNOWNSTYPE (386_TLS);
80 0 : KNOWNSTYPE (386_IOPERM);
81 1 : KNOWNSTYPE (X86_XSTATE);
82 1 : 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 2 : KNOWNSTYPE (S390_LAST_BREAK);
89 2 : KNOWNSTYPE (S390_SYSTEM_CALL);
90 1 : KNOWNSTYPE (ARM_VFP);
91 1 : KNOWNSTYPE (ARM_TLS);
92 1 : KNOWNSTYPE (ARM_HW_BREAK);
93 1 : KNOWNSTYPE (ARM_HW_WATCH);
94 0 : KNOWNSTYPE (ARM_SYSTEM_CALL);
95 5 : KNOWNSTYPE (SIGINFO);
96 5 : KNOWNSTYPE (FILE);
97 : #undef KNOWNSTYPE
98 :
99 1 : default:
100 2 : snprintf (buf, len, "%s: %" PRIu32, gettext ("<unknown>"), type);
101 :
102 1 : res = buf;
103 : }
104 0 : }
105 :
106 54 : return res;
107 : }
|