Bump rz-libdemangle to get the dlang demangler (#6566)
Fix check_dlang() to check if the string starts with "_D" followed by any digit
This commit is contained in:
parent
202a827785
commit
478117db3b
8 changed files with 25 additions and 6 deletions
|
|
@ -106,6 +106,8 @@ RZ_API RZ_OWN char *rz_bin_demangle(RZ_NULLABLE RzBin *bin, RZ_NULLABLE const ch
|
|||
return rz_demangler_rust(mangled, flags);
|
||||
case RZ_BIN_LANGUAGE_CXX:
|
||||
return rz_demangler_cxx(mangled, flags);
|
||||
case RZ_BIN_LANGUAGE_DLANG:
|
||||
return rz_demangler_dlang(mangled, flags);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,10 +19,7 @@ static inline bool check_objc(RzBinSymbol *sym) {
|
|||
}
|
||||
|
||||
static inline bool check_dlang(RzBinSymbol *sym) {
|
||||
if (!strncmp(sym->name, "_D2", 3)) {
|
||||
return true;
|
||||
}
|
||||
return !strncmp(sym->name, "_D4", 3);
|
||||
return !strncmp(sym->name, "_D", 2) && IS_DIGIT(sym->name[2]);
|
||||
}
|
||||
|
||||
static inline bool check_swift(RzBinSymbol *sym) {
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ DEFINE_DEMANGLER_PLUGIN(java, "java", "LGPL3", "deroad", libdemangle_handler_jav
|
|||
DEFINE_DEMANGLER_PLUGIN(msvc, "msvc", "LGPL3", "inisider", libdemangle_handler_msvc);
|
||||
DEFINE_DEMANGLER_PLUGIN(objc, "objc", "LGPL3", "pancake", libdemangle_handler_objc);
|
||||
DEFINE_DEMANGLER_PLUGIN(pascal, "pascal", "LGPL3", "deroad", libdemangle_handler_pascal);
|
||||
DEFINE_DEMANGLER_PLUGIN(dlang, "dlang", "LGPL3", "historicattle", libdemangle_handler_d);
|
||||
|
||||
static RzDemanglerPlugin *demangler_static_plugins[] = { RZ_DEMANGLER_STATIC_PLUGINS };
|
||||
|
||||
|
|
@ -73,6 +74,13 @@ RZ_API RZ_OWN char *rz_demangler_msvc(RZ_NONNULL const char *symbol, RzDemangler
|
|||
return libdemangle_handler_msvc(symbol, (RzDemangleOpts)flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Demangles DLang symbols
|
||||
*/
|
||||
RZ_API RZ_OWN char *rz_demangler_dlang(RZ_NONNULL const char *symbol, RzDemanglerFlag flags) {
|
||||
return libdemangle_handler_d(symbol, (RzDemangleOpts)flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Initializes the plugin list and returns a RzDemangler struct
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ demangler_plugins_list = [
|
|||
'objc',
|
||||
'pascal',
|
||||
'cpp',
|
||||
'rust'
|
||||
'rust',
|
||||
'dlang',
|
||||
]
|
||||
|
||||
demangler_plugins = {
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ RZ_API RZ_OWN char *rz_demangler_objc(RZ_NONNULL const char *symbol, RzDemangler
|
|||
RZ_API RZ_OWN char *rz_demangler_pascal(RZ_NONNULL const char *symbol, RzDemanglerFlag flags);
|
||||
RZ_API RZ_OWN char *rz_demangler_rust(RZ_NONNULL const char *symbol, RzDemanglerFlag flags);
|
||||
RZ_API RZ_OWN char *rz_demangler_msvc(RZ_NONNULL const char *symbol, RzDemanglerFlag flags);
|
||||
RZ_API RZ_OWN char *rz_demangler_dlang(RZ_NONNULL const char *symbol, RzDemanglerFlag flags);
|
||||
|
||||
RZ_API RZ_OWN RzDemangler *rz_demangler_new(void);
|
||||
RZ_API void rz_demangler_free(RZ_NULLABLE RzDemangler *demangler);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
[wrap-git]
|
||||
url = https://github.com/rizinorg/rz-libdemangle.git
|
||||
revision = e633061e901208a20ed90f8aaf0b64f25caf73eb
|
||||
revision = d86b1c1514a0ad19762feb596e99b691e49e7730
|
||||
depth = 1
|
||||
|
|
|
|||
|
|
@ -530,3 +530,12 @@ EXPECT=<<EOF
|
|||
0x004009e0 16 Swift.String.init (_builtinStringLiteral(Builtin.RawPointer byteSize__Builtin.Word isASCII__Builtin.Int1 _) -> String
|
||||
EOF
|
||||
RUN
|
||||
|
||||
NAME=elf dlang demangling
|
||||
FILE=bins/elf/analysis/class_dlang
|
||||
CMDS=is~0x00089b24
|
||||
EXPECT=<<EOF
|
||||
233 0x00089b24 0x00089b24 WEAK FUNC 4860 const pure nothrow @safe immutable(char)[] core.time.Duration.toString()
|
||||
4372 0x00089b24 0x00089b24 WEAK FUNC 4860 const pure nothrow @safe immutable(char)[] core.time.Duration.toString()
|
||||
EOF
|
||||
RUN
|
||||
|
|
|
|||
|
|
@ -1138,6 +1138,7 @@ objc LGPL3 pancake
|
|||
pascal LGPL3 deroad
|
||||
c++ LGPL3 billow
|
||||
rust LGPL3 Dhruv Maroo/RizinOrg
|
||||
dlang LGPL3 historicattle
|
||||
EOF
|
||||
RUN
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue