diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2016-09-29 21:21:26 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2016-09-29 21:21:26 (GMT) |
commit | 537ed969ad0305e70dc2d503dbc49df859892717 (patch) | |
tree | 4003d2ba03bbc7b372bdaf8dc4d9e04c15318983 /src/format/mangling/dex/type_gram.y | |
parent | 3ea1d4c6cf82a75409b667b8fe20fc0718e5d922 (diff) |
Added partial support for Dalvik MUTF-8 encodings.
Diffstat (limited to 'src/format/mangling/dex/type_gram.y')
-rw-r--r-- | src/format/mangling/dex/type_gram.y | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/format/mangling/dex/type_gram.y b/src/format/mangling/dex/type_gram.y index 1176bd2..d5c3f26 100644 --- a/src/format/mangling/dex/type_gram.y +++ b/src/format/mangling/dex/type_gram.y @@ -23,6 +23,7 @@ bool demangle_dex_type(GDexDemangler *, const char *); #include "../../../analysis/types/basic.h" #include "../../../analysis/types/cse.h" +#include "../../../common/extstr.h" } @@ -45,7 +46,7 @@ bool demangle_dex_type(GDexDemangler *, const char *); %type <type> type_descriptor field_type_descriptor non_array_field_type_descriptor full_class_name -%type <text> TEXT +%type <text> TEXT simple_name %{ @@ -87,18 +88,15 @@ non_array_field_type_descriptor: | L full_class_name SEMICOLON { $$ = $2; } full_class_name: - TEXT { $$ = g_class_enum_type_new(CET_CLASS, $1); } - | full_class_name SLASH TEXT { + simple_name { $$ = g_class_enum_type_new(CET_CLASS, $1); } + | full_class_name SLASH simple_name { $$ = g_class_enum_type_new(CET_CLASS, $3); g_data_type_set_namespace($$, $1); g_object_unref($1); } - | full_class_name DOLLAR TEXT { - $$ = g_class_enum_type_new(CET_CLASS, $3); - g_data_type_set_namespace($$, $1); - g_object_unref($1); - } - +simple_name: + TEXT { $$ = strdup($1); } + | simple_name TEXT { $$ = stradd($1, $2); } %% |