Bump version of libdemangle to support Delphi C++ (#3472)

* Bump version of libdemangle to support Delphi C++
* Removed some WITH_GPL barriers.
This commit is contained in:
Giovanni 2023-04-20 15:05:36 +08:00 committed by GitHub
parent 7670834a9c
commit f115011642
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 33 deletions

View file

@ -1287,7 +1287,6 @@ RZ_API const RzBinXtrPlugin *rz_bin_xtrplugin_get(RZ_NONNULL RzBin *bin, RZ_NONN
return NULL;
}
#if WITH_GPL
static char *bin_demangle_cxx(RzBinFile *bf, const char *symbol, ut64 vaddr) {
char *out = rz_demangler_cxx(symbol);
if (!out || !bf) {
@ -1329,14 +1328,8 @@ static char *bin_demangle_cxx(RzBinFile *bf, const char *symbol, ut64 vaddr) {
}
static char *bin_demangle_rust(RzBinFile *binfile, const char *symbol, ut64 vaddr) {
char *str = NULL;
if (!(str = bin_demangle_cxx(binfile, symbol, vaddr))) {
return str;
}
free(str);
return rz_demangler_rust(symbol);
}
#endif
/**
* \brief Demangles a symbol based on the language or the RzBinFile data
@ -1441,13 +1434,8 @@ RZ_API RZ_OWN char *rz_bin_demangle(RZ_NULLABLE RzBinFile *bf, RZ_NULLABLE const
case RZ_BIN_LANGUAGE_OBJC: demangled = rz_demangler_objc(symbol); break;
case RZ_BIN_LANGUAGE_MSVC: demangled = rz_demangler_msvc(symbol); break;
case RZ_BIN_LANGUAGE_PASCAL: demangled = rz_demangler_pascal(symbol); break;
#if WITH_GPL
case RZ_BIN_LANGUAGE_RUST: demangled = bin_demangle_rust(bf, symbol, vaddr); break;
case RZ_BIN_LANGUAGE_CXX: demangled = bin_demangle_cxx(bf, symbol, vaddr); break;
#else
case RZ_BIN_LANGUAGE_RUST: demangled = NULL; break;
case RZ_BIN_LANGUAGE_CXX: demangled = NULL; break;
#endif
default:
if (bin) {
rz_demangler_resolve(bin->demangler, symbol, language, &demangled);

View file

@ -17,14 +17,18 @@
}
#if WITH_GPL
DEFINE_DEMANGLER_PLUGIN(cpp, "c++", "GPL-2", "Free Software Foundation", libdemangle_handler_cxx);
// rust demangler requires the cpp one.
DEFINE_DEMANGLER_PLUGIN(rust, "rust", "LGPL3", "pancake", libdemangle_handler_rust);
#endif
// cpp demangler contains GPL2 code and LGPL3 for delphi
DEFINE_DEMANGLER_PLUGIN(cpp, "c++", "GPL-2,LGPL3", "FSF/deroad", libdemangle_handler_cxx);
#else
// cpp demangler contain only the LGPL3 for delphi
DEFINE_DEMANGLER_PLUGIN(cpp, "c++", "LGPL3", "deroad", libdemangle_handler_cxx);
#endif /* WITH_GPL */
#if WITH_SWIFT_DEMANGLER
DEFINE_DEMANGLER_PLUGIN(swift, "swift", "MIT", "pancake", libdemangle_handler_swift);
#endif
DEFINE_DEMANGLER_PLUGIN(rust, "rust", "LGPL3", "Dhruv Maroo", libdemangle_handler_rust);
DEFINE_DEMANGLER_PLUGIN(java, "java", "LGPL3", "deroad", libdemangle_handler_java);
DEFINE_DEMANGLER_PLUGIN(msvc, "msvc", "LGPL3", "inisider", libdemangle_handler_msvc);
DEFINE_DEMANGLER_PLUGIN(objc, "objc", "LGPL3", "pancake", libdemangle_handler_objc);
@ -45,11 +49,7 @@ RZ_API RZ_OWN char *rz_demangler_java(RZ_NULLABLE const char *symbol) {
* \brief Demangles c++ symbols
*/
RZ_API RZ_OWN char *rz_demangler_cxx(RZ_NONNULL const char *symbol) {
#if WITH_GPL
return libdemangle_handler_cxx(symbol);
#else
return NULL;
#endif
}
/**
@ -70,11 +70,7 @@ RZ_API RZ_OWN char *rz_demangler_pascal(RZ_NONNULL const char *symbol) {
* \brief Demangles rust symbols
*/
RZ_API RZ_OWN char *rz_demangler_rust(RZ_NONNULL const char *symbol) {
#if WITH_GPL
return libdemangle_handler_rust(symbol);
#else
return NULL;
#endif
}
/**

View file

@ -623,7 +623,7 @@ static void __listPlugins(RzBin *bin, const char *plugin_name, PJ *pj, int rad)
static bool print_demangler_info(const RzDemanglerPlugin *plugin, void *user) {
(void)user;
printf("%-6s %-8s %s\n", plugin->language, plugin->license, plugin->author);
printf("%-6s %-12s %s\n", plugin->language, plugin->license, plugin->author);
return true;
}

View file

@ -1,3 +1,3 @@
[wrap-git]
url = https://github.com/rizinorg/rz-libdemangle.git
revision = f2f627ff2e4dde38d8025272398a9243b89b81a0
revision = 67a71ac32f4730660219adc61e37a34cef4ba921

View file

@ -884,13 +884,13 @@ EOF
EXPECT=<<EOF
Language 'Invalid' is unsupported
List of supported languages:
java LGPL3 deroad
msvc LGPL3 inisider
objc LGPL3 pancake
pascal LGPL3 deroad
c++ GPL-2 Free Software Foundation
rust LGPL3 pancake
swift MIT pancake
java LGPL3 deroad
msvc LGPL3 inisider
objc LGPL3 pancake
pascal LGPL3 deroad
c++ GPL-2,LGPL3 FSF/deroad
rust LGPL3 Dhruv Maroo
swift MIT pancake
EOF
RUN