6 #define is_native_type(x) ((x) && !IS_UPPER(x))
7 #define is_varargs(x) ((x)[0] == '.' && (x)[1] == '.' && (x)[2] == '.')
10 bool array =
false, varargs =
false;
24 if (!(
end = strchr(
type,
';'))) {
28 type_len = strlen(
type);
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) {
171 goto demangle_class_object_bad;
180 goto demangle_class_object_bad;
188 goto demangle_class_object_bad;
198 demangle_class_object_bad:
210 goto demangle_object_with_type_bad;
218 goto demangle_object_with_type_bad;
225 demangle_object_with_type_bad:
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_string_drain(DemString *ds)
char * dem_str_replace(char *str, const char *key, const char *val, int g)
void dem_string_free(DemString *ds)
DemString * dem_string_new()
bool dem_string_append(DemString *ds, const char *string)
bool dem_string_appendf(DemString *ds, const char *fmt,...)
bool dem_string_append_n(DemString *ds, const char *string, size_t size)
void dem_string_replace_char(DemString *ds, char ch, char rp)
RZ_API void Ht_() free(HtName_(Ht) *ht)
static char * demangle_class_object(char *object, char *name)
char * libdemangle_handler_java(const char *mangled)
Demangles java classes/methods/fields.
static char * demangle_object_with_type(char *name, char *object)
static char * demangle_any(char *mangled)
#define is_native_type(x)
static char * demangle_method(char *name, char *arguments, char *return_type)
static bool demangle_type(char *type, DemString *sb, size_t *used)
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")