From d8d4de962590ea784dbff5a6fcc55f9c8eaa52d9 Mon Sep 17 00:00:00 2001 From: xarkes Date: Mon, 27 Nov 2017 17:05:10 +0100 Subject: [PATCH] Fix #69 (xref name resolving) --- src/cutter.cpp | 2 ++ src/cutter.h | 2 ++ src/dialogs/XrefsDialog.cpp | 15 ++++----------- src/dialogs/XrefsDialog.ui | 8 ++++---- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/cutter.cpp b/src/cutter.cpp index 91e28a5a..4010c8d0 100644 --- a/src/cutter.cpp +++ b/src/cutter.cpp @@ -1219,6 +1219,7 @@ QList CutterCore::getXRefs(RVA addr, bool to, bool whole_functi continue; xref.from = xrefObject["from"].toVariant().toULongLong(); + xref.from_str = Core()->cmd("fd " + xrefObject["from"].toString()).trimmed(); if (!whole_function && !to && xref.from != addr) continue; @@ -1227,6 +1228,7 @@ QList CutterCore::getXRefs(RVA addr, bool to, bool whole_functi xref.to = addr; else xref.to = xrefObject["to"].toVariant().toULongLong(); + xref.to_str = Core()->cmd("fd " + xrefObject["to"].toString()).trimmed(); ret << xref; } diff --git a/src/cutter.h b/src/cutter.h index b6a6a6fc..320714ae 100644 --- a/src/cutter.h +++ b/src/cutter.h @@ -153,7 +153,9 @@ struct EntrypointDescription struct XrefDescription { RVA from; + QString from_str; RVA to; + QString to_str; QString type; }; diff --git a/src/dialogs/XrefsDialog.cpp b/src/dialogs/XrefsDialog.cpp index 051d376c..70b1c7f0 100644 --- a/src/dialogs/XrefsDialog.cpp +++ b/src/dialogs/XrefsDialog.cpp @@ -42,12 +42,9 @@ void XrefsDialog::fillRefs(QList refs, QList x XrefDescription xref = refs[i]; QTreeWidgetItem *tempItem = new QTreeWidgetItem(); - tempItem->setText(0, RAddressString(xref.to)); + tempItem->setText(0, xref.to_str); tempItem->setText(1, core->disassembleSingleInstruction(xref.from)); tempItem->setText(2, xrefTypeString(xref.type)); - tempItem->setData(0, Qt::UserRole, QVariant::fromValue(xref)); - //tempItem->setToolTip( 0, this->core->cmd("pdi 10 @ " + refs.at(i).at(0)) ); - //tempItem->setToolTip( 1, this->core->cmd("pdi 10 @ " + refs.at(i).at(0)) ); ui->fromTreeWidget->insertTopLevelItem(0, tempItem); } // Adjust columns to content @@ -64,12 +61,9 @@ void XrefsDialog::fillRefs(QList refs, QList x XrefDescription xref = xrefs[i]; QTreeWidgetItem *tempItem = new QTreeWidgetItem(); - tempItem->setText(0, RAddressString(xref.from)); + tempItem->setText(0, xref.from_str); tempItem->setText(1, core->disassembleSingleInstruction(xref.from)); tempItem->setText(2, xrefTypeString(xref.type)); - tempItem->setData(0, Qt::UserRole, QVariant::fromValue(xref)); - //tempItem->setToolTip( 0, this->core->cmd("pdi 10 @ " + xrefs.at(i).at(0)) ); - //tempItem->setToolTip( 1, this->core->cmd("pdi 10 @ " + xrefs.at(i).at(0)) ); ui->toTreeWidget->insertTopLevelItem(0, tempItem); } // Adjust columns to content @@ -78,7 +72,6 @@ void XrefsDialog::fillRefs(QList refs, QList x { ui->toTreeWidget->resizeColumnToContents(i); } - } void XrefsDialog::on_fromTreeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column) @@ -193,8 +186,8 @@ void XrefsDialog::updatePreview(RVA addr) void XrefsDialog::updateLabels(QString name) { - ui->label_2->setText(tr("X-Refs to %1:").arg(name)); - ui->label_3->setText(tr("X-Refs from %1:").arg(name)); + ui->label_xTo->setText(tr("X-Refs to %1:").arg(name)); + ui->label_xFrom->setText(tr("X-Refs from %1:").arg(name)); } void XrefsDialog::fillRefsForAddress(RVA addr, QString name, bool whole_function) diff --git a/src/dialogs/XrefsDialog.ui b/src/dialogs/XrefsDialog.ui index e80aaf14..dc7f0699 100644 --- a/src/dialogs/XrefsDialog.ui +++ b/src/dialogs/XrefsDialog.ui @@ -38,12 +38,12 @@ 5 - + 5 - + X-Refs to: @@ -81,7 +81,7 @@ - + X-Refs from: @@ -121,7 +121,7 @@ - +