hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
kernel/tools/perf/util/demangle-java.c
....@@ -1,21 +1,21 @@
11 // SPDX-License-Identifier: GPL-2.0
22 #include <sys/types.h>
33 #include <stdio.h>
4
+#include <stdlib.h>
45 #include <string.h>
5
-#include "util.h"
6
-#include "debug.h"
76 #include "symbol.h"
87
98 #include "demangle-java.h"
109
11
-#include "sane_ctype.h"
10
+#include <linux/ctype.h>
11
+#include <linux/kernel.h>
1212
1313 enum {
1414 MODE_PREFIX = 0,
1515 MODE_CLASS = 1,
1616 MODE_FUNC = 2,
1717 MODE_TYPE = 3,
18
- MODE_CTYPE = 3, /* class arg */
18
+ MODE_CTYPE = 4, /* class arg */
1919 };
2020
2121 #define BASE_ENT(c, n) [c - 'A']=n
....@@ -27,7 +27,7 @@
2727 BASE_ENT('I', "int" ),
2828 BASE_ENT('J', "long" ),
2929 BASE_ENT('S', "short" ),
30
- BASE_ENT('Z', "bool" ),
30
+ BASE_ENT('Z', "boolean" ),
3131 };
3232
3333 /*
....@@ -59,15 +59,16 @@
5959
6060 switch (*q) {
6161 case 'L':
62
- if (mode == MODE_PREFIX || mode == MODE_CTYPE) {
63
- if (mode == MODE_CTYPE) {
62
+ if (mode == MODE_PREFIX || mode == MODE_TYPE) {
63
+ if (mode == MODE_TYPE) {
6464 if (narg)
6565 rlen += scnprintf(buf + rlen, maxlen - rlen, ", ");
6666 narg++;
6767 }
68
- rlen += scnprintf(buf + rlen, maxlen - rlen, "class ");
6968 if (mode == MODE_PREFIX)
7069 mode = MODE_CLASS;
70
+ else
71
+ mode = MODE_CTYPE;
7172 } else
7273 buf[rlen++] = *q;
7374 break;
....@@ -120,7 +121,7 @@
120121 if (mode != MODE_CLASS && mode != MODE_CTYPE)
121122 goto error;
122123 /* safe because at least one other char to process */
123
- if (isalpha(*(q + 1)))
124
+ if (isalpha(*(q + 1)) && mode == MODE_CLASS)
124125 rlen += scnprintf(buf + rlen, maxlen - rlen, ".");
125126 if (mode == MODE_CLASS)
126127 mode = MODE_FUNC;