Go to the source code of this file.
◆ is_native_type
Definition at line 6 of file java.c.
◆ is_varargs
#define is_varargs |
( |
|
x | ) |
((x)[0] == '.' && (x)[1] == '.' && (x)[2] == '.') |
Definition at line 7 of file java.c.
◆ demangle_any()
static char* demangle_any |
( |
char * |
mangled | ) |
|
|
static |
Definition at line 231 of file java.c.
char * dem_string_drain(DemString *ds)
void dem_string_free(DemString *ds)
DemString * dem_string_new()
void dem_string_replace_char(DemString *ds, char ch, char rp)
RZ_API void Ht_() free(HtName_(Ht) *ht)
static bool demangle_type(char *type, DemString *sb, size_t *used)
References dem_string_drain(), dem_string_free(), dem_string_new(), dem_string_replace_char(), demangle_type(), free(), NULL, and sb.
Referenced by libdemangle_handler_java().
◆ demangle_class_object()
static char* demangle_class_object |
( |
char * |
object, |
|
|
char * |
name |
|
) |
| |
|
static |
Definition at line 162 of file java.c.
171 goto demangle_class_object_bad;
180 goto demangle_class_object_bad;
188 goto demangle_class_object_bad;
198 demangle_class_object_bad:
bool dem_string_appendf(DemString *ds, const char *fmt,...)
References dem_string_appendf(), dem_string_drain(), dem_string_free(), dem_string_new(), dem_string_replace_char(), demangle_type(), free(), NULL, sb, and type.
Referenced by libdemangle_handler_java().
◆ demangle_method()
static char* demangle_method |
( |
char * |
name, |
|
|
char * |
arguments, |
|
|
char * |
return_type |
|
) |
| |
|
static |
Definition at line 105 of file java.c.
111 size_t args_length = 0;
115 goto demangle_method_bad;
120 args_length = return_type - arguments;
126 goto demangle_method_bad;
131 const char *t =
NULL;
133 goto demangle_method_bad;
134 }
else if (
name[0] ==
'L' && t) {
141 for (
size_t pos = 0, used = 0;
pos < args_length;) {
143 goto demangle_method_bad;
146 if (
pos < args_length) {
bool dem_string_append(DemString *ds, const char *string)
References dem_string_append(), dem_string_drain(), dem_string_free(), dem_string_new(), dem_string_replace_char(), demangle_type(), free(), NULL, pos, and sb.
Referenced by libdemangle_handler_java().
◆ demangle_object_with_type()
static char* demangle_object_with_type |
( |
char * |
name, |
|
|
char * |
object |
|
) |
| |
|
static |
◆ demangle_type()
Definition at line 9 of file java.c.
10 bool array =
false, varargs =
false;
24 if (!(
end = strchr(
type,
';'))) {
28 type_len = strlen(
type);
bool dem_string_append_n(DemString *ds, const char *string, size_t size)
#define is_native_type(x)
References dem_string_append(), dem_string_append_n(), test_evm::end, is_native_type, is_varargs, NULL, sb, and type.
Referenced by demangle_any(), demangle_class_object(), demangle_method(), and demangle_object_with_type().
◆ libdemangle_handler_java()
char* libdemangle_handler_java |
( |
const char * |
mangled | ) |
|
Demangles java classes/methods/fields.
Demangles java classes/methods/fields
Supported formats:
- Lsome/class/Object; some.class.Object.myField
- F float
- Lsome/class/Object;.myField.I some.class.Object.myField:int
- myField.I myField:int
- Lsome/class/Object;.myMethod([F)I int some.class.Object.myMethod(float[])
Definition at line 260 of file java.c.
266 char *arguments =
NULL;
267 char *return_type =
NULL;
275 if ((arguments = strchr(
name,
'(')) && (return_type = strchr(arguments,
')'))) {
277 }
else if (
name[0] ==
'L' && (arguments = strchr(
name,
'.'))) {
279 }
else if ((arguments = strchr(
name,
'.'))) {
char * dem_str_replace(char *str, const char *key, const char *val, int g)
static char * demangle_class_object(char *object, char *name)
static char * demangle_object_with_type(char *name, char *object)
static char * demangle_any(char *mangled)
static char * demangle_method(char *name, char *arguments, char *return_type)
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
References dem_str_replace(), demangle_any(), demangle_class_object(), demangle_method(), demangle_object_with_type(), NULL, and strdup().
Referenced by rz_demangler_java().