mirror of
https://github.com/rizinorg/cutter.git
synced 2024-11-23 04:49:49 +00:00
Update Rizin to latest dev (#3352)
This commit is contained in:
parent
38c683b519
commit
fdfc7192c5
2
rizin
2
rizin
@ -1 +1 @@
|
|||||||
Subproject commit 34f1a9e7b40e289cdf8e7f03c145bdbd5d41dc89
|
Subproject commit a02e608075986bbb8d55c643c698f235a643e56c
|
@ -295,22 +295,25 @@ QList<QString> CutterCore::sdbList(QString path)
|
|||||||
CORE_LOCK();
|
CORE_LOCK();
|
||||||
QList<QString> list = QList<QString>();
|
QList<QString> list = QList<QString>();
|
||||||
Sdb *root = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0);
|
Sdb *root = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0);
|
||||||
if (root) {
|
if (root && root->ns) {
|
||||||
void *vsi;
|
for (const auto &nsi : CutterRzList<SdbNs>(root->ns)) {
|
||||||
ls_iter_t *iter;
|
|
||||||
ls_foreach(root->ns, iter, vsi)
|
|
||||||
{
|
|
||||||
SdbNs *nsi = (SdbNs *)vsi;
|
|
||||||
list << nsi->name;
|
list << nsi->name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
using SdbListPtr = std::unique_ptr<SdbList, decltype(&ls_free)>;
|
using PVectorPtr = std::unique_ptr<RzPVector, decltype(&rz_pvector_free)>;
|
||||||
static SdbListPtr makeSdbListPtr(SdbList *list)
|
static PVectorPtr makePVectorPtr(RzPVector *vec)
|
||||||
{
|
{
|
||||||
return { list, ls_free };
|
return { vec, rz_pvector_free };
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool foreach_keys_cb(void *user, const SdbKv *kv)
|
||||||
|
{
|
||||||
|
auto list = reinterpret_cast<QList<QString> *>(user);
|
||||||
|
*list << kv->base.key;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QString> CutterCore::sdbListKeys(QString path)
|
QList<QString> CutterCore::sdbListKeys(QString path)
|
||||||
@ -319,14 +322,7 @@ QList<QString> CutterCore::sdbListKeys(QString path)
|
|||||||
QList<QString> list = QList<QString>();
|
QList<QString> list = QList<QString>();
|
||||||
Sdb *root = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0);
|
Sdb *root = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0);
|
||||||
if (root) {
|
if (root) {
|
||||||
void *vsi;
|
sdb_foreach(root, foreach_keys_cb, &list);
|
||||||
ls_iter_t *iter;
|
|
||||||
SdbListPtr l = makeSdbListPtr(sdb_foreach_list(root, false));
|
|
||||||
ls_foreach(l, iter, vsi)
|
|
||||||
{
|
|
||||||
SdbKv *nsi = (SdbKv *)vsi;
|
|
||||||
list << reinterpret_cast<char *>(nsi->base.key);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
@ -336,7 +332,7 @@ QString CutterCore::sdbGet(QString path, QString key)
|
|||||||
CORE_LOCK();
|
CORE_LOCK();
|
||||||
Sdb *db = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0);
|
Sdb *db = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0);
|
||||||
if (db) {
|
if (db) {
|
||||||
const char *val = sdb_const_get(db, key.toUtf8().constData(), 0);
|
const char *val = sdb_const_get(db, key.toUtf8().constData());
|
||||||
if (val && *val)
|
if (val && *val)
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
@ -349,7 +345,7 @@ bool CutterCore::sdbSet(QString path, QString key, QString val)
|
|||||||
Sdb *db = sdb_ns_path(core->sdb, path.toUtf8().constData(), 1);
|
Sdb *db = sdb_ns_path(core->sdb, path.toUtf8().constData(), 1);
|
||||||
if (!db)
|
if (!db)
|
||||||
return false;
|
return false;
|
||||||
return sdb_set(db, key.toUtf8().constData(), val.toUtf8().constData(), 0);
|
return sdb_set(db, key.toUtf8().constData(), val.toUtf8().constData());
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CutterCore::sanitizeStringForCommand(QString s)
|
QString CutterCore::sanitizeStringForCommand(QString s)
|
||||||
@ -3616,21 +3612,14 @@ QList<QString> CutterCore::getAllAnalysisClasses(bool sorted)
|
|||||||
{
|
{
|
||||||
CORE_LOCK();
|
CORE_LOCK();
|
||||||
QList<QString> ret;
|
QList<QString> ret;
|
||||||
|
PVectorPtr l = makePVectorPtr(rz_analysis_class_get_all(core->analysis, sorted));
|
||||||
SdbListPtr l = makeSdbListPtr(rz_analysis_class_get_all(core->analysis, sorted));
|
|
||||||
if (!l) {
|
if (!l) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret.reserve(static_cast<int>(l->length));
|
ret.reserve(static_cast<int>(rz_pvector_len(l.get())));
|
||||||
|
for (const auto &kv : CutterPVector<SdbKv>(l.get())) {
|
||||||
SdbListIter *it;
|
|
||||||
void *entry;
|
|
||||||
ls_foreach(l, it, entry)
|
|
||||||
{
|
|
||||||
auto kv = reinterpret_cast<SdbKv *>(entry);
|
|
||||||
ret.append(QString::fromUtf8(reinterpret_cast<const char *>(kv->base.key)));
|
ret.append(QString::fromUtf8(reinterpret_cast<const char *>(kv->base.key)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4371,13 +4360,14 @@ QStringList CutterCore::getColorThemes()
|
|||||||
{
|
{
|
||||||
QStringList r;
|
QStringList r;
|
||||||
CORE_LOCK();
|
CORE_LOCK();
|
||||||
RzList *themes_list = rz_core_theme_list(core);
|
RzPVector *themes_list = rz_core_get_themes(core);
|
||||||
RzListIter *it;
|
if (!themes_list) {
|
||||||
const char *th;
|
return r;
|
||||||
CutterRzListForeach (themes_list, it, const char, th) {
|
}
|
||||||
|
for (const auto &th : CutterPVector<char>(themes_list)) {
|
||||||
r << fromOwnedCharPtr(rz_str_trim_dup(th));
|
r << fromOwnedCharPtr(rz_str_trim_dup(th));
|
||||||
}
|
}
|
||||||
rz_list_free(themes_list);
|
rz_pvector_free(themes_list);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,20 +46,20 @@ void VersionInfoDialog::fillVersionInfo()
|
|||||||
// Left tree
|
// Left tree
|
||||||
QTreeWidgetItem *addrItemL = new QTreeWidgetItem();
|
QTreeWidgetItem *addrItemL = new QTreeWidgetItem();
|
||||||
addrItemL->setText(0, "Address:");
|
addrItemL->setText(0, "Address:");
|
||||||
addrItemL->setText(1, RzAddressString(sdb_num_get(sdb, "addr", 0)));
|
addrItemL->setText(1, RzAddressString(sdb_num_get(sdb, "addr")));
|
||||||
ui->leftTreeWidget->addTopLevelItem(addrItemL);
|
ui->leftTreeWidget->addTopLevelItem(addrItemL);
|
||||||
|
|
||||||
QTreeWidgetItem *offItemL = new QTreeWidgetItem();
|
QTreeWidgetItem *offItemL = new QTreeWidgetItem();
|
||||||
offItemL->setText(0, "Offset:");
|
offItemL->setText(0, "Offset:");
|
||||||
offItemL->setText(1, RzAddressString(sdb_num_get(sdb, "offset", 0)));
|
offItemL->setText(1, RzAddressString(sdb_num_get(sdb, "offset")));
|
||||||
ui->leftTreeWidget->addTopLevelItem(offItemL);
|
ui->leftTreeWidget->addTopLevelItem(offItemL);
|
||||||
|
|
||||||
QTreeWidgetItem *entriesItemL = new QTreeWidgetItem();
|
QTreeWidgetItem *entriesItemL = new QTreeWidgetItem();
|
||||||
entriesItemL->setText(0, "Entries:");
|
entriesItemL->setText(0, "Entries:");
|
||||||
const ut64 num_entries = sdb_num_get(sdb, "num_entries", 0);
|
const ut64 num_entries = sdb_num_get(sdb, "num_entries");
|
||||||
for (size_t i = 0; i < num_entries; ++i) {
|
for (size_t i = 0; i < num_entries; ++i) {
|
||||||
auto key = QString("entry%0").arg(i);
|
auto key = QString("entry%0").arg(i);
|
||||||
const char *const value = sdb_const_get(sdb, key.toStdString().c_str(), 0);
|
const char *const value = sdb_const_get(sdb, key.toStdString().c_str());
|
||||||
if (!value) {
|
if (!value) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -77,12 +77,12 @@ void VersionInfoDialog::fillVersionInfo()
|
|||||||
// Right tree
|
// Right tree
|
||||||
QTreeWidgetItem *addrItemR = new QTreeWidgetItem();
|
QTreeWidgetItem *addrItemR = new QTreeWidgetItem();
|
||||||
addrItemR->setText(0, "Address:");
|
addrItemR->setText(0, "Address:");
|
||||||
addrItemR->setText(1, RzAddressString(sdb_num_get(sdb, "addr", 0)));
|
addrItemR->setText(1, RzAddressString(sdb_num_get(sdb, "addr")));
|
||||||
ui->rightTreeWidget->addTopLevelItem(addrItemR);
|
ui->rightTreeWidget->addTopLevelItem(addrItemR);
|
||||||
|
|
||||||
QTreeWidgetItem *offItemR = new QTreeWidgetItem();
|
QTreeWidgetItem *offItemR = new QTreeWidgetItem();
|
||||||
offItemR->setText(0, "Offset:");
|
offItemR->setText(0, "Offset:");
|
||||||
offItemR->setText(1, RzAddressString(sdb_num_get(sdb, "offset", 0)));
|
offItemR->setText(1, RzAddressString(sdb_num_get(sdb, "offset")));
|
||||||
ui->rightTreeWidget->addTopLevelItem(offItemR);
|
ui->rightTreeWidget->addTopLevelItem(offItemR);
|
||||||
|
|
||||||
QTreeWidgetItem *entriesItemR = new QTreeWidgetItem();
|
QTreeWidgetItem *entriesItemR = new QTreeWidgetItem();
|
||||||
@ -94,13 +94,13 @@ void VersionInfoDialog::fillVersionInfo()
|
|||||||
if (!sdb) {
|
if (!sdb) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
const char *filename = sdb_const_get(sdb, "file_name", 0);
|
const char *filename = sdb_const_get(sdb, "file_name");
|
||||||
auto *parentItem = new QTreeWidgetItem();
|
auto *parentItem = new QTreeWidgetItem();
|
||||||
parentItem->setText(0, RzAddressString(sdb_num_get(sdb, "idx", 0)));
|
parentItem->setText(0, RzAddressString(sdb_num_get(sdb, "idx")));
|
||||||
parentItem->setText(1,
|
parentItem->setText(1,
|
||||||
QString("Version: %0\t"
|
QString("Version: %0\t"
|
||||||
"File: %1")
|
"File: %1")
|
||||||
.arg(QString::number(sdb_num_get(sdb, "vn_version", 0)),
|
.arg(QString::number(sdb_num_get(sdb, "vn_version")),
|
||||||
QString(filename)));
|
QString(filename)));
|
||||||
|
|
||||||
int num_vernaux = 0;
|
int num_vernaux = 0;
|
||||||
@ -113,13 +113,13 @@ void VersionInfoDialog::fillVersionInfo()
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto *childItem = new QTreeWidgetItem();
|
auto *childItem = new QTreeWidgetItem();
|
||||||
childItem->setText(0, RzAddressString(sdb_num_get(sdb, "idx", 0)));
|
childItem->setText(0, RzAddressString(sdb_num_get(sdb, "idx")));
|
||||||
QString childString =
|
QString childString =
|
||||||
QString("Name: %0\t"
|
QString("Name: %0\t"
|
||||||
"Flags: %1\t"
|
"Flags: %1\t"
|
||||||
"Version: %2\t")
|
"Version: %2\t")
|
||||||
.arg(sdb_const_get(sdb, "name", 0), sdb_const_get(sdb, "flags", 0),
|
.arg(sdb_const_get(sdb, "name"), sdb_const_get(sdb, "flags"),
|
||||||
QString::number(sdb_num_get(sdb, "version", 0)));
|
QString::number(sdb_num_get(sdb, "version")));
|
||||||
childItem->setText(1, childString);
|
childItem->setText(1, childString);
|
||||||
parentItem->addChild(childItem);
|
parentItem->addChild(childItem);
|
||||||
}
|
}
|
||||||
@ -144,15 +144,15 @@ void VersionInfoDialog::fillVersionInfo()
|
|||||||
if (!sdb) {
|
if (!sdb) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ut32 file_version_ms = sdb_num_get(sdb, "FileVersionMS", 0);
|
ut32 file_version_ms = sdb_num_get(sdb, "FileVersionMS");
|
||||||
ut32 file_version_ls = sdb_num_get(sdb, "FileVersionLS", 0);
|
ut32 file_version_ls = sdb_num_get(sdb, "FileVersionLS");
|
||||||
auto file_version = QString("%0.%1.%2.%3")
|
auto file_version = QString("%0.%1.%2.%3")
|
||||||
.arg(file_version_ms >> 16)
|
.arg(file_version_ms >> 16)
|
||||||
.arg(file_version_ms & 0xFFFF)
|
.arg(file_version_ms & 0xFFFF)
|
||||||
.arg(file_version_ls >> 16)
|
.arg(file_version_ls >> 16)
|
||||||
.arg(file_version_ls & 0xFFFF);
|
.arg(file_version_ls & 0xFFFF);
|
||||||
ut32 product_version_ms = sdb_num_get(sdb, "ProductVersionMS", 0);
|
ut32 product_version_ms = sdb_num_get(sdb, "ProductVersionMS");
|
||||||
ut32 product_version_ls = sdb_num_get(sdb, "ProductVersionLS", 0);
|
ut32 product_version_ls = sdb_num_get(sdb, "ProductVersionLS");
|
||||||
auto product_version = QString("%0.%1.%2.%3")
|
auto product_version = QString("%0.%1.%2.%3")
|
||||||
.arg(product_version_ms >> 16)
|
.arg(product_version_ms >> 16)
|
||||||
.arg(product_version_ms & 0xFFFF)
|
.arg(product_version_ms & 0xFFFF)
|
||||||
@ -161,12 +161,12 @@ void VersionInfoDialog::fillVersionInfo()
|
|||||||
|
|
||||||
auto item = new QTreeWidgetItem();
|
auto item = new QTreeWidgetItem();
|
||||||
item->setText(0, "Signature");
|
item->setText(0, "Signature");
|
||||||
item->setText(1, RzHexString(sdb_num_get(sdb, "Signature", 0)));
|
item->setText(1, RzHexString(sdb_num_get(sdb, "Signature")));
|
||||||
ui->leftTreeWidget->addTopLevelItem(item);
|
ui->leftTreeWidget->addTopLevelItem(item);
|
||||||
|
|
||||||
item = new QTreeWidgetItem();
|
item = new QTreeWidgetItem();
|
||||||
item->setText(0, "StrucVersion");
|
item->setText(0, "StrucVersion");
|
||||||
item->setText(1, RzHexString(sdb_num_get(sdb, "StrucVersion", 0)));
|
item->setText(1, RzHexString(sdb_num_get(sdb, "StrucVersion")));
|
||||||
ui->leftTreeWidget->addTopLevelItem(item);
|
ui->leftTreeWidget->addTopLevelItem(item);
|
||||||
|
|
||||||
item = new QTreeWidgetItem();
|
item = new QTreeWidgetItem();
|
||||||
@ -181,27 +181,27 @@ void VersionInfoDialog::fillVersionInfo()
|
|||||||
|
|
||||||
item = new QTreeWidgetItem();
|
item = new QTreeWidgetItem();
|
||||||
item->setText(0, "FileFlagsMask");
|
item->setText(0, "FileFlagsMask");
|
||||||
item->setText(1, RzHexString(sdb_num_get(sdb, "FileFlagsMask", 0)));
|
item->setText(1, RzHexString(sdb_num_get(sdb, "FileFlagsMask")));
|
||||||
ui->leftTreeWidget->addTopLevelItem(item);
|
ui->leftTreeWidget->addTopLevelItem(item);
|
||||||
|
|
||||||
item = new QTreeWidgetItem();
|
item = new QTreeWidgetItem();
|
||||||
item->setText(0, "FileFlags");
|
item->setText(0, "FileFlags");
|
||||||
item->setText(1, RzHexString(sdb_num_get(sdb, "FileFlags", 0)));
|
item->setText(1, RzHexString(sdb_num_get(sdb, "FileFlags")));
|
||||||
ui->leftTreeWidget->addTopLevelItem(item);
|
ui->leftTreeWidget->addTopLevelItem(item);
|
||||||
|
|
||||||
item = new QTreeWidgetItem();
|
item = new QTreeWidgetItem();
|
||||||
item->setText(0, "FileOS");
|
item->setText(0, "FileOS");
|
||||||
item->setText(1, RzHexString(sdb_num_get(sdb, "FileOS", 0)));
|
item->setText(1, RzHexString(sdb_num_get(sdb, "FileOS")));
|
||||||
ui->leftTreeWidget->addTopLevelItem(item);
|
ui->leftTreeWidget->addTopLevelItem(item);
|
||||||
|
|
||||||
item = new QTreeWidgetItem();
|
item = new QTreeWidgetItem();
|
||||||
item->setText(0, "FileType");
|
item->setText(0, "FileType");
|
||||||
item->setText(1, RzHexString(sdb_num_get(sdb, "FileType", 0)));
|
item->setText(1, RzHexString(sdb_num_get(sdb, "FileType")));
|
||||||
ui->leftTreeWidget->addTopLevelItem(item);
|
ui->leftTreeWidget->addTopLevelItem(item);
|
||||||
|
|
||||||
item = new QTreeWidgetItem();
|
item = new QTreeWidgetItem();
|
||||||
item->setText(0, "FileSubType");
|
item->setText(0, "FileSubType");
|
||||||
item->setText(1, RzHexString(sdb_num_get(sdb, "FileSubType", 0)));
|
item->setText(1, RzHexString(sdb_num_get(sdb, "FileSubType")));
|
||||||
ui->leftTreeWidget->addTopLevelItem(item);
|
ui->leftTreeWidget->addTopLevelItem(item);
|
||||||
|
|
||||||
// Adjust columns to content
|
// Adjust columns to content
|
||||||
@ -224,8 +224,8 @@ void VersionInfoDialog::fillVersionInfo()
|
|||||||
}
|
}
|
||||||
int lenkey = 0;
|
int lenkey = 0;
|
||||||
int lenval = 0;
|
int lenval = 0;
|
||||||
ut8 *key_utf16 = sdb_decode(sdb_const_get(sdb, "key", 0), &lenkey);
|
ut8 *key_utf16 = sdb_decode(sdb_const_get(sdb, "key"), &lenkey);
|
||||||
ut8 *val_utf16 = sdb_decode(sdb_const_get(sdb, "value", 0), &lenval);
|
ut8 *val_utf16 = sdb_decode(sdb_const_get(sdb, "value"), &lenval);
|
||||||
item = new QTreeWidgetItem();
|
item = new QTreeWidgetItem();
|
||||||
item->setText(0, QString::fromUtf16(reinterpret_cast<const ushort *>(key_utf16)));
|
item->setText(0, QString::fromUtf16(reinterpret_cast<const ushort *>(key_utf16)));
|
||||||
item->setText(1, QString::fromUtf16(reinterpret_cast<const ushort *>(val_utf16)));
|
item->setText(1, QString::fromUtf16(reinterpret_cast<const ushort *>(val_utf16)));
|
||||||
|
@ -12,7 +12,7 @@ BaseFindDialog::BaseFindDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Ba
|
|||||||
setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint));
|
setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint));
|
||||||
|
|
||||||
// Fill in N-thread Combo
|
// Fill in N-thread Combo
|
||||||
size_t n_cores = rz_th_physical_core_number();
|
RzThreadNCores n_cores = rz_th_physical_core_number();
|
||||||
ui->nCoresCombo->clear();
|
ui->nCoresCombo->clear();
|
||||||
for (size_t i = n_cores; i > 0; i--) {
|
for (size_t i = n_cores; i > 0; i--) {
|
||||||
if (n_cores == i) {
|
if (n_cores == i) {
|
||||||
@ -36,10 +36,10 @@ BaseFindDialog::BaseFindDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Ba
|
|||||||
|
|
||||||
BaseFindDialog::~BaseFindDialog() {}
|
BaseFindDialog::~BaseFindDialog() {}
|
||||||
|
|
||||||
size_t BaseFindDialog::getNCores() const
|
RzThreadNCores BaseFindDialog::getNCores() const
|
||||||
{
|
{
|
||||||
size_t n_cores = rz_th_physical_core_number();
|
RzThreadNCores n_cores = rz_th_physical_core_number();
|
||||||
return n_cores - ui->nCoresCombo->currentIndex();
|
return static_cast<RzThreadNCores>(n_cores - ui->nCoresCombo->currentIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
ut32 BaseFindDialog::getPointerSize() const
|
ut32 BaseFindDialog::getPointerSize() const
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
explicit BaseFindDialog(QWidget *parent = nullptr);
|
explicit BaseFindDialog(QWidget *parent = nullptr);
|
||||||
~BaseFindDialog();
|
~BaseFindDialog();
|
||||||
|
|
||||||
size_t getNCores() const;
|
RzThreadNCores getNCores() const;
|
||||||
ut32 getPointerSize() const;
|
ut32 getPointerSize() const;
|
||||||
RVA getStartAddress() const;
|
RVA getStartAddress() const;
|
||||||
RVA getEndAddress() const;
|
RVA getEndAddress() const;
|
||||||
|
@ -20,7 +20,7 @@ BaseFindSearchDialog::~BaseFindSearchDialog() {}
|
|||||||
|
|
||||||
void BaseFindSearchDialog::show(RzBaseFindOpt *opts)
|
void BaseFindSearchDialog::show(RzBaseFindOpt *opts)
|
||||||
{
|
{
|
||||||
size_t n_cores = rz_th_physical_core_number();
|
RzThreadNCores n_cores = rz_th_physical_core_number();
|
||||||
if (opts->max_threads > n_cores || opts->max_threads < 1) {
|
if (opts->max_threads > n_cores || opts->max_threads < 1) {
|
||||||
opts->max_threads = n_cores;
|
opts->max_threads = n_cores;
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ void Dashboard::updateContents()
|
|||||||
if (bf) {
|
if (bf) {
|
||||||
setPlainText(this->ui->compilationDateEdit, rz_core_bin_get_compile_time(bf));
|
setPlainText(this->ui->compilationDateEdit, rz_core_bin_get_compile_time(bf));
|
||||||
if (bf->o) {
|
if (bf->o) {
|
||||||
char *relco_buf = sdb_get(bf->o->kv, "elf.relro", 0);
|
char *relco_buf = sdb_get(bf->o->kv, "elf.relro");
|
||||||
if (RZ_STR_ISNOTEMPTY(relco_buf)) {
|
if (RZ_STR_ISNOTEMPTY(relco_buf)) {
|
||||||
QString relro = QString(relco_buf).section(QLatin1Char(' '), 0, 0);
|
QString relro = QString(relco_buf).section(QLatin1Char(' '), 0, 0);
|
||||||
relro[0] = relro[0].toUpper();
|
relro[0] = relro[0].toUpper();
|
||||||
|
Loading…
Reference in New Issue
Block a user