mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-08 14:58:54 +00:00
R_BIN_NM -> R_BIN_LANG ##api
This commit is contained in:
parent
34b0caa32d
commit
d0de591dc7
@ -1077,7 +1077,7 @@ R_API RBinSymbol *r_bin_file_add_method(RBinFile *bf, const char *klass, const c
|
||||
R_LOG_ERROR ("Cannot allocate class %s", klass);
|
||||
return NULL;
|
||||
}
|
||||
int lang = (strstr (method, "JNI") || strstr (klass, "JNI"))? R_BIN_NM_JNI: R_BIN_NM_CXX;
|
||||
int lang = (strstr (method, "JNI") || strstr (klass, "JNI"))? R_BIN_LANG_JNI: R_BIN_LANG_CXX;
|
||||
c->lang = lang;
|
||||
RBinSymbol *sym = __getMethod (bf, klass, method);
|
||||
if (!sym) {
|
||||
@ -1095,7 +1095,7 @@ R_API RBinSymbol *r_bin_file_add_method(RBinFile *bf, const char *klass, const c
|
||||
}
|
||||
|
||||
R_API RBinField *r_bin_file_add_field(RBinFile *binfile, const char *classname, const char *name) {
|
||||
R_LOG_ERROR ("TODO: RBinFile.addField() is not implemented");
|
||||
R_LOG_TODO ("RBinFile.addField() is not implemented");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -82,9 +82,9 @@ static inline bool check_pascal(RBinSymbol *sym) {
|
||||
|
||||
/* This is about 10% of the loading time, optimize if possible */
|
||||
R_API int r_bin_load_languages(RBinFile *binfile) {
|
||||
r_return_val_if_fail (binfile, R_BIN_NM_NONE);
|
||||
r_return_val_if_fail (binfile->o, R_BIN_NM_NONE);
|
||||
r_return_val_if_fail (binfile->o->info, R_BIN_NM_NONE);
|
||||
r_return_val_if_fail (binfile, R_BIN_LANG_NONE);
|
||||
r_return_val_if_fail (binfile->o, R_BIN_LANG_NONE);
|
||||
r_return_val_if_fail (binfile->o->info, R_BIN_LANG_NONE);
|
||||
RBinObject *o = binfile->o;
|
||||
RBinInfo *info = o->info;
|
||||
RBinSymbol *sym = NULL;
|
||||
@ -105,7 +105,7 @@ R_API int r_bin_load_languages(RBinFile *binfile) {
|
||||
bool isObjC = false;
|
||||
|
||||
if (unknownType || !(isMacho || isElf || isPe)) {
|
||||
return R_BIN_NM_NONE;
|
||||
return R_BIN_LANG_NONE;
|
||||
}
|
||||
|
||||
// check in imports . can be slow
|
||||
@ -124,12 +124,12 @@ R_API int r_bin_load_languages(RBinFile *binfile) {
|
||||
if (!cantbe.rust) {
|
||||
if (check_rust (sym)) {
|
||||
info->lang = "rust";
|
||||
return R_BIN_NM_RUST;
|
||||
return R_BIN_LANG_RUST;
|
||||
}
|
||||
}
|
||||
if (check_golang (sym)) {
|
||||
info->lang = "go";
|
||||
return R_BIN_NM_GO;
|
||||
return R_BIN_LANG_GO;
|
||||
}
|
||||
if (!cantbe.swift) {
|
||||
bool hasswift = false;
|
||||
@ -144,7 +144,7 @@ R_API int r_bin_load_languages(RBinFile *binfile) {
|
||||
}
|
||||
if (hasswift || check_swift (sym)) {
|
||||
info->lang = "swift";
|
||||
return R_BIN_NM_SWIFT;
|
||||
return R_BIN_LANG_SWIFT;
|
||||
}
|
||||
}
|
||||
if (!cantbe.cxx) {
|
||||
@ -158,7 +158,7 @@ R_API int r_bin_load_languages(RBinFile *binfile) {
|
||||
}
|
||||
if (strstr (lib, "msvcp")) {
|
||||
info->lang = "msvc";
|
||||
return R_BIN_NM_MSVC;
|
||||
return R_BIN_LANG_MSVC;
|
||||
}
|
||||
}
|
||||
cxxIsChecked = true;
|
||||
@ -171,7 +171,7 @@ R_API int r_bin_load_languages(RBinFile *binfile) {
|
||||
if (!cantbe.objc) {
|
||||
if (check_objc (sym)) {
|
||||
info->lang = "objc";
|
||||
return R_BIN_NM_OBJC;
|
||||
return R_BIN_LANG_OBJC;
|
||||
}
|
||||
}
|
||||
if (!cantbe.dlang) {
|
||||
@ -187,7 +187,7 @@ R_API int r_bin_load_languages(RBinFile *binfile) {
|
||||
}
|
||||
if (hasdlang || check_dlang (sym)) {
|
||||
info->lang = "dlang";
|
||||
return R_BIN_NM_DLANG;
|
||||
return R_BIN_LANG_DLANG;
|
||||
}
|
||||
}
|
||||
if (!cantbe.msvc) {
|
||||
@ -197,33 +197,33 @@ R_API int r_bin_load_languages(RBinFile *binfile) {
|
||||
}
|
||||
}
|
||||
if (isObjC) {
|
||||
return R_BIN_NM_OBJC | (isBlocks?R_BIN_NM_BLOCKS:0);
|
||||
return R_BIN_LANG_OBJC | (isBlocks?R_BIN_LANG_BLOCKS:0);
|
||||
}
|
||||
if (sym) {
|
||||
if (check_kotlin (sym)) {
|
||||
info->lang = "kotlin";
|
||||
return R_BIN_NM_KOTLIN;
|
||||
return R_BIN_LANG_KOTLIN;
|
||||
}
|
||||
if (check_groovy (sym)) {
|
||||
info->lang = "groovy";
|
||||
return R_BIN_NM_GROOVY;
|
||||
return R_BIN_LANG_GROOVY;
|
||||
}
|
||||
if (check_dart (sym)) {
|
||||
info->lang = "dart";
|
||||
return R_BIN_NM_DART;
|
||||
return R_BIN_LANG_DART;
|
||||
}
|
||||
if (check_pascal (sym)) {
|
||||
info->lang = "pascal";
|
||||
return R_BIN_NM_PASCAL;
|
||||
return R_BIN_LANG_PASCAL;
|
||||
}
|
||||
}
|
||||
if (canBeCxx) {
|
||||
return R_BIN_NM_CXX | (isBlocks?R_BIN_NM_BLOCKS:0);
|
||||
return R_BIN_LANG_CXX | (isBlocks?R_BIN_LANG_BLOCKS:0);
|
||||
}
|
||||
if (isMsvc) {
|
||||
return R_BIN_NM_MSVC;
|
||||
return R_BIN_LANG_MSVC;
|
||||
}
|
||||
return R_BIN_NM_C | (isBlocks?R_BIN_NM_BLOCKS:0);
|
||||
return R_BIN_LANG_C | (isBlocks?R_BIN_LANG_BLOCKS:0);
|
||||
}
|
||||
|
||||
// if its ipi no need to be prefixed with r_
|
||||
@ -231,11 +231,11 @@ R_IPI int r_bin_lang_type(RBinFile *binfile, const char *def, const char *sym) {
|
||||
int type = 0;
|
||||
RBinPlugin *plugin;
|
||||
if (sym && sym[0] == sym[1] && sym[0] == '_') {
|
||||
type = R_BIN_NM_CXX;
|
||||
type = R_BIN_LANG_CXX;
|
||||
}
|
||||
if (def && *def) {
|
||||
type = r_bin_demangle_type (def);
|
||||
if (type != R_BIN_NM_NONE) {
|
||||
if (type != R_BIN_LANG_NONE) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
@ -247,7 +247,7 @@ R_IPI int r_bin_lang_type(RBinFile *binfile, const char *def, const char *sym) {
|
||||
type = r_bin_demangle_type (binfile->o->info->lang);
|
||||
}
|
||||
}
|
||||
if (type == R_BIN_NM_NONE) {
|
||||
if (type == R_BIN_LANG_NONE) {
|
||||
type = r_bin_demangle_type (def);
|
||||
}
|
||||
return type;
|
||||
@ -255,31 +255,31 @@ R_IPI int r_bin_lang_type(RBinFile *binfile, const char *def, const char *sym) {
|
||||
|
||||
R_API const char *r_bin_lang_tostring(int lang) {
|
||||
switch (lang & 0xffff) {
|
||||
case R_BIN_NM_SWIFT:
|
||||
case R_BIN_LANG_SWIFT:
|
||||
return "swift";
|
||||
case R_BIN_NM_GO:
|
||||
case R_BIN_LANG_GO:
|
||||
return "go";
|
||||
case R_BIN_NM_JAVA:
|
||||
case R_BIN_LANG_JAVA:
|
||||
return "java";
|
||||
case R_BIN_NM_KOTLIN:
|
||||
case R_BIN_LANG_KOTLIN:
|
||||
return "kotlin";
|
||||
case R_BIN_NM_DART:
|
||||
case R_BIN_LANG_DART:
|
||||
return "dart";
|
||||
case R_BIN_NM_GROOVY:
|
||||
case R_BIN_LANG_GROOVY:
|
||||
return "groovy";
|
||||
case R_BIN_NM_JNI:
|
||||
case R_BIN_LANG_JNI:
|
||||
return "jni";
|
||||
case R_BIN_NM_C:
|
||||
return (lang & R_BIN_NM_BLOCKS)? "c with blocks": "c";
|
||||
case R_BIN_NM_CXX:
|
||||
return (lang & R_BIN_NM_BLOCKS)? "c++ with blocks": "c++";
|
||||
case R_BIN_NM_DLANG:
|
||||
case R_BIN_LANG_C:
|
||||
return (lang & R_BIN_LANG_BLOCKS)? "c with blocks": "c";
|
||||
case R_BIN_LANG_CXX:
|
||||
return (lang & R_BIN_LANG_BLOCKS)? "c++ with blocks": "c++";
|
||||
case R_BIN_LANG_DLANG:
|
||||
return "d";
|
||||
case R_BIN_NM_OBJC:
|
||||
return (lang & R_BIN_NM_BLOCKS)? "objc with blocks": "objc";
|
||||
case R_BIN_NM_MSVC:
|
||||
case R_BIN_LANG_OBJC:
|
||||
return (lang & R_BIN_LANG_BLOCKS)? "objc with blocks": "objc";
|
||||
case R_BIN_LANG_MSVC:
|
||||
return "msvc";
|
||||
case R_BIN_NM_RUST:
|
||||
case R_BIN_LANG_RUST:
|
||||
return "rust";
|
||||
}
|
||||
return "?";
|
||||
|
@ -417,7 +417,7 @@ R_API int r_bin_object_set_items(RBinFile *bf, RBinObject *bo) {
|
||||
bo->mem = p->mem (bf);
|
||||
}
|
||||
if (bo->info && bin->filter_rules & (R_BIN_REQ_INFO | R_BIN_REQ_SYMBOLS | R_BIN_REQ_IMPORTS)) {
|
||||
bo->lang = isSwift? R_BIN_NM_SWIFT: r_bin_load_languages (bf);
|
||||
bo->lang = isSwift? R_BIN_LANG_SWIFT: r_bin_load_languages (bf);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -50,40 +50,40 @@ R_API char *r_bin_demangle_plugin(RBin *bin, const char *name, const char *str)
|
||||
R_API int r_bin_demangle_type(const char *str) {
|
||||
if (str && *str) {
|
||||
if (!strcmp (str, "swift")) {
|
||||
return R_BIN_NM_SWIFT;
|
||||
return R_BIN_LANG_SWIFT;
|
||||
}
|
||||
if (!strcmp (str, "java")) {
|
||||
return R_BIN_NM_JAVA;
|
||||
return R_BIN_LANG_JAVA;
|
||||
}
|
||||
if (!strcmp (str, "kotlin")) {
|
||||
return R_BIN_NM_KOTLIN;
|
||||
return R_BIN_LANG_KOTLIN;
|
||||
}
|
||||
if (!strcmp (str, "groovy")) {
|
||||
return R_BIN_NM_GROOVY;
|
||||
return R_BIN_LANG_GROOVY;
|
||||
}
|
||||
if (!strcmp (str, "dart")) {
|
||||
return R_BIN_NM_DART;
|
||||
return R_BIN_LANG_DART;
|
||||
}
|
||||
if (!strcmp (str, "objc")) {
|
||||
return R_BIN_NM_OBJC;
|
||||
return R_BIN_LANG_OBJC;
|
||||
}
|
||||
if (!strcmp (str, "pascal") || !strcmp (str, "freepascal")) {
|
||||
return R_BIN_NM_PASCAL;
|
||||
return R_BIN_LANG_PASCAL;
|
||||
}
|
||||
if (!strcmp (str, "cxx") || !strcmp (str, "c++")) {
|
||||
return R_BIN_NM_CXX;
|
||||
return R_BIN_LANG_CXX;
|
||||
}
|
||||
if (!strcmp (str, "dlang")) {
|
||||
return R_BIN_NM_DLANG;
|
||||
return R_BIN_LANG_DLANG;
|
||||
}
|
||||
if (!strcmp (str, "msvc")) {
|
||||
return R_BIN_NM_MSVC;
|
||||
return R_BIN_LANG_MSVC;
|
||||
}
|
||||
if (!strcmp (str, "rust")) {
|
||||
return R_BIN_NM_RUST;
|
||||
return R_BIN_LANG_RUST;
|
||||
}
|
||||
}
|
||||
return R_BIN_NM_NONE;
|
||||
return R_BIN_LANG_NONE;
|
||||
}
|
||||
|
||||
R_API char *r_bin_demangle(RBinFile *bf, const char *def, const char *str, ut64 vaddr, bool libs) {
|
||||
@ -131,9 +131,9 @@ R_API char *r_bin_demangle(RBinFile *bf, const char *def, const char *str, ut64
|
||||
}
|
||||
if (!strncmp (str, "__", 2)) {
|
||||
if (str[2] == 'T') {
|
||||
type = R_BIN_NM_SWIFT;
|
||||
type = R_BIN_LANG_SWIFT;
|
||||
} else {
|
||||
type = R_BIN_NM_CXX;
|
||||
type = R_BIN_LANG_CXX;
|
||||
// str++;
|
||||
}
|
||||
}
|
||||
@ -146,14 +146,14 @@ R_API char *r_bin_demangle(RBinFile *bf, const char *def, const char *str, ut64
|
||||
}
|
||||
char *demangled = NULL;
|
||||
switch (type) {
|
||||
case R_BIN_NM_JAVA: demangled = r_bin_demangle_java (str); break;
|
||||
case R_BIN_NM_RUST: demangled = r_bin_demangle_rust (bf, str, vaddr); break;
|
||||
case R_BIN_NM_OBJC: demangled = r_bin_demangle_objc (NULL, str); break;
|
||||
case R_BIN_NM_SWIFT: demangled = r_bin_demangle_swift (str, bin? bin->demangle_usecmd: false, trylib); break;
|
||||
case R_BIN_NM_CXX: demangled = r_bin_demangle_cxx (bf, str, vaddr); break;
|
||||
case R_BIN_NM_PASCAL: demangled = r_bin_demangle_freepascal (str); break;
|
||||
case R_BIN_NM_MSVC: demangled = r_bin_demangle_msvc (str); break;
|
||||
case R_BIN_NM_DLANG: demangled = r_bin_demangle_plugin (bin, "dlang", str); break;
|
||||
case R_BIN_LANG_JAVA: demangled = r_bin_demangle_java (str); break;
|
||||
case R_BIN_LANG_RUST: demangled = r_bin_demangle_rust (bf, str, vaddr); break;
|
||||
case R_BIN_LANG_OBJC: demangled = r_bin_demangle_objc (NULL, str); break;
|
||||
case R_BIN_LANG_SWIFT: demangled = r_bin_demangle_swift (str, bin? bin->demangle_usecmd: false, trylib); break;
|
||||
case R_BIN_LANG_CXX: demangled = r_bin_demangle_cxx (bf, str, vaddr); break;
|
||||
case R_BIN_LANG_PASCAL: demangled = r_bin_demangle_freepascal (str); break;
|
||||
case R_BIN_LANG_MSVC: demangled = r_bin_demangle_msvc (str); break;
|
||||
case R_BIN_LANG_DLANG: demangled = r_bin_demangle_plugin (bin, "dlang", str); break;
|
||||
}
|
||||
if (libs && demangled && lib) {
|
||||
char *d = r_str_newf ("%s_%s", lib, demangled);
|
||||
|
@ -2848,7 +2848,7 @@ const RList *MACH0_(get_symbols_list)(struct MACH0_(obj_t) *bin) {
|
||||
if (!sym) {
|
||||
break;
|
||||
}
|
||||
sym->lang = R_BIN_NM_C;
|
||||
sym->lang = R_BIN_LANG_C;
|
||||
sym->vaddr = symbol.addr;
|
||||
sym->paddr = symbol.offset;
|
||||
sym->name = symbol.name;
|
||||
|
@ -698,7 +698,7 @@ static void get_method_list_t(mach0_ut p, RBinFile *bf, char *class_name, RBinCl
|
||||
method->rtype = strdup (rtype);
|
||||
R_FREE (rtype);
|
||||
}
|
||||
method->lang = R_BIN_NM_OBJC;
|
||||
method->lang = R_BIN_LANG_OBJC;
|
||||
method->vaddr = m.imp;
|
||||
if (!method->vaddr) {
|
||||
R_FREE (method);
|
||||
@ -1303,7 +1303,7 @@ static void parse_type(RList *list, RBinFile *bf, SwiftType st) {
|
||||
RBinClass *klass = r_bin_class_new (typename, NULL, false);
|
||||
// eprintf ("Type name (%s)\n", typename);
|
||||
klass->addr = st.addr;
|
||||
klass->lang = R_BIN_NM_SWIFT;
|
||||
klass->lang = R_BIN_LANG_SWIFT;
|
||||
// eprintf ("methods:\n");
|
||||
if (st.members != UT64_MAX) {
|
||||
ut8 buf[512];
|
||||
@ -1330,7 +1330,7 @@ static void parse_type(RList *list, RBinFile *bf, SwiftType st) {
|
||||
}
|
||||
}
|
||||
sym = r_bin_symbol_new (method_name, method_addr, method_addr);
|
||||
sym->lang = R_BIN_NM_SWIFT;
|
||||
sym->lang = R_BIN_LANG_SWIFT;
|
||||
r_list_append (klass->methods, sym);
|
||||
#if 0
|
||||
// TODO. try to resolve the method name by symbol table or debug info
|
||||
@ -1489,7 +1489,7 @@ RList *MACH0_(parse_classes)(RBinFile *bf, objc_cache_opt_info *oi) {
|
||||
// retain just for debug
|
||||
goto get_classes_error;
|
||||
}
|
||||
klass->lang = R_BIN_NM_OBJC;
|
||||
klass->lang = R_BIN_LANG_OBJC;
|
||||
if (!(klass->methods = r_list_new ())) {
|
||||
// retain just for debug
|
||||
goto get_classes_error;
|
||||
|
@ -1090,7 +1090,7 @@ static void parse_dex_class_fields(RBinFile *bf, RBinDexClass *c, RBinClass *cls
|
||||
sym->name = r_str_replace (sym->name, "method.", "", 0);
|
||||
r_str_replace_char (sym->name, ';', 0);
|
||||
sym->paddr = sym->vaddr = total;
|
||||
sym->lang = R_BIN_NM_JAVA;
|
||||
sym->lang = R_BIN_LANG_JAVA;
|
||||
sym->ordinal = (*sym_count)++;
|
||||
|
||||
if (dex->dexdump) {
|
||||
@ -1369,7 +1369,7 @@ static void parse_dex_class_method(RBinFile *bf, RBinDexClass *c, RBinClass *cls
|
||||
sym->vaddr = encoded_method_addr;
|
||||
}
|
||||
dex->code_from = R_MIN (dex->code_from, sym->paddr);
|
||||
sym->lang = R_BIN_NM_JAVA;
|
||||
sym->lang = R_BIN_LANG_JAVA;
|
||||
sym->bind = ((MA & 1) == 1) ? R_BIN_BIND_GLOBAL_STR : R_BIN_BIND_LOCAL_STR;
|
||||
sym->method_flags = get_method_flags (MA);
|
||||
sym->ordinal = (*sym_count)++;
|
||||
@ -1423,7 +1423,7 @@ static void parse_dex_class_method(RBinFile *bf, RBinDexClass *c, RBinClass *cls
|
||||
} else {
|
||||
sym->size = 0;
|
||||
r_list_append (dex->methods_list, sym);
|
||||
sym->lang = R_BIN_NM_JAVA;
|
||||
sym->lang = R_BIN_LANG_JAVA;
|
||||
r_list_append (cls->methods, sym);
|
||||
}
|
||||
if (MC > 0 && debug_info_off > 0 && dex->header.data_offset < debug_info_off &&
|
||||
@ -1458,7 +1458,7 @@ static void parse_class(RBinFile *bf, RBinDexClass *c, int class_index, int *met
|
||||
goto beach;
|
||||
}
|
||||
cls->name = dex_class_name (dex, c);
|
||||
cls->lang = R_BIN_NM_JAVA;
|
||||
cls->lang = R_BIN_LANG_JAVA;
|
||||
if (!cls->name) {
|
||||
goto beach;
|
||||
}
|
||||
@ -1724,7 +1724,7 @@ static bool dex_loadcode(RBinFile *bf) {
|
||||
//XXX use r_buf API!!
|
||||
sym->paddr = sym->vaddr = dex->header.method_offset + (sizeof (struct dex_method_t) * i) ;
|
||||
sym->ordinal = sym_count++;
|
||||
sym->lang = R_BIN_NM_JAVA;
|
||||
sym->lang = R_BIN_LANG_JAVA;
|
||||
r_list_append (dex->methods_list, sym);
|
||||
r_strf_var (mname, 64, "method.%"PFMT64d, (ut64)i);
|
||||
sdb_num_set (dex->mdb, mname, sym->paddr, 0);
|
||||
|
@ -152,7 +152,7 @@ static bool check_buffer(RBinFile *bf, RBuffer *b) {
|
||||
}
|
||||
|
||||
static int retdemangle(const char *str) {
|
||||
return R_BIN_NM_JAVA;
|
||||
return R_BIN_LANG_JAVA;
|
||||
}
|
||||
|
||||
static RBinAddr *binsym(RBinFile *bf, int sym) {
|
||||
|
@ -3554,7 +3554,7 @@ static int bin_classes(RCore *r, PJ *pj, int mode) {
|
||||
if (bf && bf->o) {
|
||||
if (IS_MODE_RAD (mode)) {
|
||||
classdump_c (r, c);
|
||||
} else if (bf->o->lang == R_BIN_NM_JAVA || (bf->o->info && bf->o->info->lang && strstr (bf->o->info->lang, "dalvik"))) {
|
||||
} else if (bf->o->lang == R_BIN_LANG_JAVA || (bf->o->info && bf->o->info->lang && strstr (bf->o->info->lang, "dalvik"))) {
|
||||
classdump_java (r, c);
|
||||
} else {
|
||||
classdump_objc (r, c);
|
||||
|
@ -96,14 +96,14 @@ static bool demangle_internal(RCore *core, const char *lang, const char *s) {
|
||||
char *res = NULL;
|
||||
int type = r_bin_demangle_type (lang);
|
||||
switch (type) {
|
||||
case R_BIN_NM_CXX: res = r_bin_demangle_cxx (core->bin->cur, s, 0); break;
|
||||
case R_BIN_NM_JAVA: res = r_bin_demangle_java (s); break;
|
||||
case R_BIN_NM_OBJC: res = r_bin_demangle_objc (NULL, s); break;
|
||||
case R_BIN_NM_SWIFT: res = r_bin_demangle_swift (s, core->bin->demangle_usecmd, core->bin->demangle_trylib); break;
|
||||
case R_BIN_NM_DLANG: res = r_bin_demangle_plugin (core->bin, "dlang", s); break;
|
||||
case R_BIN_NM_MSVC: res = r_bin_demangle_msvc (s); break;
|
||||
case R_BIN_NM_RUST: res = r_bin_demangle_rust (core->bin->cur, s, 0); break;
|
||||
case R_BIN_NM_PASCAL: res = r_bin_demangle_freepascal (s); break;
|
||||
case R_BIN_LANG_CXX: res = r_bin_demangle_cxx (core->bin->cur, s, 0); break;
|
||||
case R_BIN_LANG_JAVA: res = r_bin_demangle_java (s); break;
|
||||
case R_BIN_LANG_OBJC: res = r_bin_demangle_objc (NULL, s); break;
|
||||
case R_BIN_LANG_SWIFT: res = r_bin_demangle_swift (s, core->bin->demangle_usecmd, core->bin->demangle_trylib); break;
|
||||
case R_BIN_LANG_DLANG: res = r_bin_demangle_plugin (core->bin, "dlang", s); break;
|
||||
case R_BIN_LANG_MSVC: res = r_bin_demangle_msvc (s); break;
|
||||
case R_BIN_LANG_RUST: res = r_bin_demangle_rust (core->bin->cur, s, 0); break;
|
||||
case R_BIN_LANG_PASCAL: res = r_bin_demangle_freepascal (s); break;
|
||||
default:
|
||||
r_bin_demangle_list (core->bin);
|
||||
return true;
|
||||
|
@ -134,23 +134,23 @@ typedef enum {
|
||||
// name mangling types
|
||||
// TODO: Rename to R_BIN_LANG_
|
||||
typedef enum {
|
||||
R_BIN_NM_NONE = 0,
|
||||
R_BIN_NM_JAVA = 1,
|
||||
R_BIN_NM_C = 1<<1,
|
||||
R_BIN_NM_GO = 1<<2,
|
||||
R_BIN_NM_CXX = 1<<3,
|
||||
R_BIN_NM_OBJC = 1<<4,
|
||||
R_BIN_NM_SWIFT = 1<<5,
|
||||
R_BIN_NM_DLANG = 1<<6,
|
||||
R_BIN_NM_MSVC = 1<<7,
|
||||
R_BIN_NM_RUST = 1<<8,
|
||||
R_BIN_NM_KOTLIN = 1<<9,
|
||||
R_BIN_NM_PASCAL = 1<<10,
|
||||
R_BIN_NM_DART = 1<<11,
|
||||
R_BIN_NM_GROOVY = 1<<12,
|
||||
R_BIN_NM_JNI = 1U<<13,
|
||||
R_BIN_NM_BLOCKS = 1U<<31,
|
||||
R_BIN_NM_ANY = -1,
|
||||
R_BIN_LANG_NONE = 0,
|
||||
R_BIN_LANG_JAVA = 1,
|
||||
R_BIN_LANG_C = 1<<1,
|
||||
R_BIN_LANG_GO = 1<<2,
|
||||
R_BIN_LANG_CXX = 1<<3,
|
||||
R_BIN_LANG_OBJC = 1<<4,
|
||||
R_BIN_LANG_SWIFT = 1<<5,
|
||||
R_BIN_LANG_DLANG = 1<<6,
|
||||
R_BIN_LANG_MSVC = 1<<7,
|
||||
R_BIN_LANG_RUST = 1<<8,
|
||||
R_BIN_LANG_KOTLIN = 1<<9,
|
||||
R_BIN_LANG_PASCAL = 1<<10,
|
||||
R_BIN_LANG_DART = 1<<11,
|
||||
R_BIN_LANG_GROOVY = 1<<12,
|
||||
R_BIN_LANG_JNI = 1U<<13,
|
||||
R_BIN_LANG_BLOCKS = 1U<<31,
|
||||
R_BIN_LANG_ANY = -1,
|
||||
} RBinNameMangling;
|
||||
|
||||
typedef enum {
|
||||
|
@ -519,7 +519,7 @@ static int __lib_bin_ldr_dt(RLibPlugin *pl, void *p, void *u) {
|
||||
|
||||
static void setup_trylib_from_environment(RBin *bin, int type) {
|
||||
bool trylib = false;
|
||||
if (type == R_BIN_NM_SWIFT) {
|
||||
if (type == R_BIN_LANG_SWIFT) {
|
||||
trylib = true;
|
||||
char *swiftlib = r_sys_getenv ("RABIN2_TRYLIB");
|
||||
if (swiftlib) {
|
||||
@ -534,12 +534,12 @@ static char *__demangleAs(RBin *bin, int type, const char *file) {
|
||||
bool syscmd = bin->demangle_usecmd;
|
||||
char *res = NULL;
|
||||
switch (type) {
|
||||
case R_BIN_NM_CXX: res = r_bin_demangle_cxx (NULL, file, 0); break;
|
||||
case R_BIN_NM_JAVA: res = r_bin_demangle_java (file); break;
|
||||
case R_BIN_NM_OBJC: res = r_bin_demangle_objc (NULL, file); break;
|
||||
case R_BIN_NM_SWIFT: res = r_bin_demangle_swift (file, syscmd, bin->demangle_trylib); break;
|
||||
case R_BIN_NM_MSVC: res = r_bin_demangle_msvc (file); break;
|
||||
case R_BIN_NM_RUST: res = r_bin_demangle_rust (NULL, file, 0); break;
|
||||
case R_BIN_LANG_CXX: res = r_bin_demangle_cxx (NULL, file, 0); break;
|
||||
case R_BIN_LANG_JAVA: res = r_bin_demangle_java (file); break;
|
||||
case R_BIN_LANG_OBJC: res = r_bin_demangle_objc (NULL, file); break;
|
||||
case R_BIN_LANG_SWIFT: res = r_bin_demangle_swift (file, syscmd, bin->demangle_trylib); break;
|
||||
case R_BIN_LANG_MSVC: res = r_bin_demangle_msvc (file); break;
|
||||
case R_BIN_LANG_RUST: res = r_bin_demangle_rust (NULL, file, 0); break;
|
||||
default:
|
||||
R_LOG_ERROR ("Unsupported demangler");
|
||||
break;
|
||||
|
@ -2772,7 +2772,7 @@ R_API RList *r_bin_java_enum_class_methods(RBinJavaObj *bin, ut16 class_idx) {
|
||||
break;
|
||||
}
|
||||
sym->name = strdup (field->name);
|
||||
sym->lang = R_BIN_NM_JAVA;
|
||||
sym->lang = R_BIN_LANG_JAVA;
|
||||
// func defintion
|
||||
// sym->paddr = field->file_offset + bin->loadaddr;
|
||||
// code implementation
|
||||
@ -2885,7 +2885,7 @@ R_API RList *r_bin_java_get_classes(RBinJavaObj *bin) {
|
||||
k->name = r_bin_java_get_this_class_name (bin);
|
||||
k->super = r_bin_java_get_name_from_bin_cp_list (bin, bin->cf2.super_class);
|
||||
k->index = (idx++);
|
||||
k->lang = R_BIN_NM_JAVA;
|
||||
k->lang = R_BIN_LANG_JAVA;
|
||||
r_list_append (classes, k);
|
||||
r_list_foreach (bin->cp_list, iter, cp_obj) {
|
||||
if (cp_obj && cp_obj->tag == R_BIN_JAVA_CP_CLASS
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include <r_util/r_sys.h>
|
||||
#include <r_util/r_sandbox.h>
|
||||
|
||||
static int demangle_type = R_BIN_NM_CXX;
|
||||
static int demangle_type = R_BIN_LANG_CXX;
|
||||
|
||||
static void usage() {
|
||||
printf (
|
||||
@ -73,12 +73,12 @@ int LLVMFuzzerTestOneInput(const ut8 *data, size_t len) {
|
||||
char *demangled = NULL;
|
||||
// TODO: replace with r_bin_demangle
|
||||
switch (demangle_type) {
|
||||
case R_BIN_NM_JAVA: demangled = r_bin_demangle_java (str); break;
|
||||
case R_BIN_NM_RUST: demangled = r_bin_demangle_rust (NULL, str, vaddr); break;
|
||||
case R_BIN_NM_OBJC: demangled = r_bin_demangle_objc (NULL, str); break;
|
||||
case R_BIN_NM_SWIFT: demangled = r_bin_demangle_swift (str, false, false); break;
|
||||
case R_BIN_NM_CXX: demangled = r_bin_demangle_cxx (NULL, str, vaddr); break;
|
||||
case R_BIN_NM_MSVC: demangled = r_bin_demangle_msvc (str); break;
|
||||
case R_BIN_LANG_JAVA: demangled = r_bin_demangle_java (str); break;
|
||||
case R_BIN_LANG_RUST: demangled = r_bin_demangle_rust (NULL, str, vaddr); break;
|
||||
case R_BIN_LANG_OBJC: demangled = r_bin_demangle_objc (NULL, str); break;
|
||||
case R_BIN_LANG_SWIFT: demangled = r_bin_demangle_swift (str, false, false); break;
|
||||
case R_BIN_LANG_CXX: demangled = r_bin_demangle_cxx (NULL, str, vaddr); break;
|
||||
case R_BIN_LANG_MSVC: demangled = r_bin_demangle_msvc (str); break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
@ -86,7 +86,7 @@ int LLVMFuzzerTestOneInput(const ut8 *data, size_t len) {
|
||||
free (str);
|
||||
free (demangled);
|
||||
|
||||
if (demangle_type == R_BIN_NM_MSVC) {
|
||||
if (demangle_type == R_BIN_LANG_MSVC) {
|
||||
// Flush out globals
|
||||
free (r_bin_demangle_msvc ("."));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user