diff --git a/src/core/Cutter.cpp b/src/core/Cutter.cpp index 049f6359..e8bdb83e 100644 --- a/src/core/Cutter.cpp +++ b/src/core/Cutter.cpp @@ -1265,9 +1265,10 @@ void CutterCore::startDebug() setConfig("asm.flags", false); currentlyDebugging = true; emit changeDebugView(); - emit flagsChanged(); emit refreshCodeViews(); } + + emit codeRebased(); emit stackChanged(); emit debugTaskStateChanged(); }); @@ -1306,10 +1307,11 @@ void CutterCore::startEmulation() currentlyDebugging = true; currentlyEmulating = true; emit changeDebugView(); - emit flagsChanged(); } + emit registersChanged(); emit stackChanged(); + emit codeRebased(); emit refreshCodeViews(); emit debugTaskStateChanged(); }); @@ -1330,7 +1332,7 @@ void CutterCore::attachRemote(const QString &uri) } // connect to a debugger with the given plugin - asyncCmd("o-*; e cfg.debug = true; o+ " + uri, debugTask); + asyncCmd("e cfg.debug = true; oodf " + uri, debugTask); emit debugTaskStateChanged(); connect(debugTask.data(), &R2Task::finished, this, [this, uri] () { @@ -1361,10 +1363,10 @@ void CutterCore::attachRemote(const QString &uri) // prevent register flags from appearing during debug/emul setConfig("asm.flags", false); currentlyDebugging = true; - emit flagsChanged(); emit changeDebugView(); } + emit codeRebased(); emit attachedRemote(true); emit debugTaskStateChanged(); }); @@ -1385,7 +1387,7 @@ void CutterCore::attachDebug(int pid) } // attach to process with dbg plugin - asyncCmd("o-*; e cfg.debug = true; o+ dbg://" + QString::number(pid), debugTask); + asyncCmd("e cfg.debug = true; oodf dbg://" + QString::number(pid), debugTask); emit debugTaskStateChanged(); connect(debugTask.data(), &R2Task::finished, this, [this, pid] () { @@ -1401,9 +1403,11 @@ void CutterCore::attachDebug(int pid) currentlyDebugging = true; currentlyOpenFile = getConfig("file.path"); currentlyAttachedToPID = pid; - emit flagsChanged(); emit changeDebugView(); } + + emit codeRebased(); + emit debugTaskStateChanged(); }); debugTaskDialog = new R2TaskDialog(debugTask); @@ -1457,7 +1461,7 @@ void CutterCore::stopDebug() syncAndSeekProgramCounter(); setConfig("asm.flags", true); setConfig("io.cache", false); - emit flagsChanged(); + emit codeRebased(); emit changeDefinedView(); offsetPriorDebugging = getOffset(); emit debugTaskStateChanged(); diff --git a/src/core/Cutter.h b/src/core/Cutter.h index de5a745f..411eb788 100644 --- a/src/core/Cutter.h +++ b/src/core/Cutter.h @@ -491,6 +491,10 @@ signals: void breakpointsChanged(); void refreshCodeViews(); void stackChanged(); + /** + * @brief update all the widgets that are affected by rebasing in debug mode + */ + void codeRebased(); void switchedThread(); void switchedProcess(); diff --git a/src/widgets/BreakpointWidget.cpp b/src/widgets/BreakpointWidget.cpp index 1530ad51..5635b1f5 100644 --- a/src/widgets/BreakpointWidget.cpp +++ b/src/widgets/BreakpointWidget.cpp @@ -142,6 +142,7 @@ BreakpointWidget::BreakpointWidget(MainWindow *main, QAction *action) : connect(Core(), &CutterCore::refreshAll, this, &BreakpointWidget::refreshBreakpoint); connect(Core(), &CutterCore::breakpointsChanged, this, &BreakpointWidget::refreshBreakpoint); + connect(Core(), &CutterCore::codeRebased, this, &BreakpointWidget::refreshBreakpoint); connect(Core(), &CutterCore::refreshCodeViews, this, &BreakpointWidget::refreshBreakpoint); connect(ui->addBreakpoint, &QAbstractButton::clicked, this, &BreakpointWidget::addBreakpointDialog); connect(ui->delBreakpoint, &QAbstractButton::clicked, this, &BreakpointWidget::delBreakpoint); diff --git a/src/widgets/ClassesWidget.cpp b/src/widgets/ClassesWidget.cpp index 7ca17c6f..ae151018 100644 --- a/src/widgets/ClassesWidget.cpp +++ b/src/widgets/ClassesWidget.cpp @@ -219,6 +219,7 @@ AnalClassesModel::AnalClassesModel(CutterDockWidget *parent) }); connect(Core(), &CutterCore::refreshAll, this, &AnalClassesModel::refreshAll); + connect(Core(), &CutterCore::codeRebased, this, &AnalClassesModel::refreshAll); connect(Core(), &CutterCore::classNew, this, &AnalClassesModel::classNew); connect(Core(), &CutterCore::classDeleted, this, &AnalClassesModel::classDeleted); connect(Core(), &CutterCore::classRenamed, this, &AnalClassesModel::classRenamed); diff --git a/src/widgets/CommentsWidget.cpp b/src/widgets/CommentsWidget.cpp index deaac07c..dac006d8 100644 --- a/src/widgets/CommentsWidget.cpp +++ b/src/widgets/CommentsWidget.cpp @@ -259,8 +259,9 @@ CommentsWidget::CommentsWidget(MainWindow *main, QAction *action) : connect(this, &QWidget::customContextMenuRequested, this, &CommentsWidget::showTitleContextMenu); - connect(Core(), SIGNAL(commentsChanged()), this, SLOT(refreshTree())); - connect(Core(), SIGNAL(refreshAll()), this, SLOT(refreshTree())); + connect(Core(), &CutterCore::codeRebased, this, &CommentsWidget::refreshTree); + connect(Core(), &CutterCore::commentsChanged, this, &CommentsWidget::refreshTree); + connect(Core(), &CutterCore::refreshAll, this, &CommentsWidget::refreshTree); } CommentsWidget::~CommentsWidget() {} diff --git a/src/widgets/EntrypointWidget.cpp b/src/widgets/EntrypointWidget.cpp index 8e12b80b..65e5946f 100644 --- a/src/widgets/EntrypointWidget.cpp +++ b/src/widgets/EntrypointWidget.cpp @@ -20,7 +20,8 @@ EntrypointWidget::EntrypointWidget(MainWindow *main, QAction *action) : setScrollMode(); - connect(Core(), SIGNAL(refreshAll()), this, SLOT(fillEntrypoint())); + connect(Core(), &CutterCore::codeRebased, this, &EntrypointWidget::fillEntrypoint); + connect(Core(), &CutterCore::refreshAll, this, &EntrypointWidget::fillEntrypoint); } EntrypointWidget::~EntrypointWidget() {} diff --git a/src/widgets/ExportsWidget.cpp b/src/widgets/ExportsWidget.cpp index 70ed650c..70d4c525 100644 --- a/src/widgets/ExportsWidget.cpp +++ b/src/widgets/ExportsWidget.cpp @@ -142,7 +142,8 @@ ExportsWidget::ExportsWidget(MainWindow *main, QAction *action) : main->updateDockActionChecked(action); } ); - connect(Core(), SIGNAL(refreshAll()), this, SLOT(refreshExports())); + connect(Core(), &CutterCore::codeRebased, this, &ExportsWidget::refreshExports); + connect(Core(), &CutterCore::refreshAll, this, &ExportsWidget::refreshExports); } ExportsWidget::~ExportsWidget() {} diff --git a/src/widgets/FlagsWidget.cpp b/src/widgets/FlagsWidget.cpp index 73c0b5e1..387b0f0d 100644 --- a/src/widgets/FlagsWidget.cpp +++ b/src/widgets/FlagsWidget.cpp @@ -160,8 +160,9 @@ FlagsWidget::FlagsWidget(MainWindow *main, QAction *action) : setScrollMode(); - connect(Core(), SIGNAL(flagsChanged()), this, SLOT(flagsChanged())); - connect(Core(), SIGNAL(refreshAll()), this, SLOT(refreshFlagspaces())); + connect(Core(), &CutterCore::flagsChanged, this, &FlagsWidget::flagsChanged); + connect(Core(), &CutterCore::codeRebased, this, &FlagsWidget::flagsChanged); + connect(Core(), &CutterCore::refreshAll, this, &FlagsWidget::refreshFlagspaces); auto menu = ui->flagsTreeView->getItemContextMenu(); menu->addSeparator(); diff --git a/src/widgets/FunctionsWidget.cpp b/src/widgets/FunctionsWidget.cpp index ce854bd3..57a69267 100644 --- a/src/widgets/FunctionsWidget.cpp +++ b/src/widgets/FunctionsWidget.cpp @@ -480,8 +480,9 @@ FunctionsWidget::FunctionsWidget(MainWindow *main, QAction *action) : connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(showTitleContextMenu(const QPoint &))); - connect(Core(), SIGNAL(functionsChanged()), this, SLOT(refreshTree())); - connect(Core(), SIGNAL(refreshAll()), this, SLOT(refreshTree())); + connect(Core(), &CutterCore::functionsChanged, this, &FunctionsWidget::refreshTree); + connect(Core(), &CutterCore::codeRebased, this, &FunctionsWidget::refreshTree); + connect(Core(), &CutterCore::refreshAll, this, &FunctionsWidget::refreshTree); } FunctionsWidget::~FunctionsWidget() {} diff --git a/src/widgets/HeadersWidget.cpp b/src/widgets/HeadersWidget.cpp index 2bbfec73..0019d404 100644 --- a/src/widgets/HeadersWidget.cpp +++ b/src/widgets/HeadersWidget.cpp @@ -123,6 +123,7 @@ HeadersWidget::HeadersWidget(MainWindow *main, QAction *action) : ui->quickFilterView->closeFilter(); showCount(false); + connect(Core(), &CutterCore::codeRebased, this, &HeadersWidget::refreshHeaders); connect(Core(), &CutterCore::refreshAll, this, &HeadersWidget::refreshHeaders); } diff --git a/src/widgets/ImportsWidget.cpp b/src/widgets/ImportsWidget.cpp index dbaa3901..c499fc1d 100644 --- a/src/widgets/ImportsWidget.cpp +++ b/src/widgets/ImportsWidget.cpp @@ -155,7 +155,8 @@ ImportsWidget::ImportsWidget(MainWindow *main, QAction *action) : main->updateDockActionChecked(action); } ); - connect(Core(), SIGNAL(refreshAll()), this, SLOT(refreshImports())); + connect(Core(), &CutterCore::codeRebased, this, &ImportsWidget::refreshImports); + connect(Core(), &CutterCore::refreshAll, this, &ImportsWidget::refreshImports); } ImportsWidget::~ImportsWidget() {} diff --git a/src/widgets/RelocsWidget.cpp b/src/widgets/RelocsWidget.cpp index 9d6a7be9..69684235 100644 --- a/src/widgets/RelocsWidget.cpp +++ b/src/widgets/RelocsWidget.cpp @@ -124,6 +124,7 @@ RelocsWidget::RelocsWidget(MainWindow *main, QAction *action) : setModels(relocsProxyModel); ui->treeView->sortByColumn(RelocsModel::NameColumn, Qt::AscendingOrder); + connect(Core(), &CutterCore::codeRebased, this, &RelocsWidget::refreshRelocs); connect(Core(), &CutterCore::refreshAll, this, &RelocsWidget::refreshRelocs); } diff --git a/src/widgets/SectionsWidget.cpp b/src/widgets/SectionsWidget.cpp index 574511f0..3ba8829e 100644 --- a/src/widgets/SectionsWidget.cpp +++ b/src/widgets/SectionsWidget.cpp @@ -215,6 +215,7 @@ void SectionsWidget::initAddrMapDocks() void SectionsWidget::initConnects() { connect(Core(), &CutterCore::refreshAll, this, &SectionsWidget::refreshSections); + connect(Core(), &CutterCore::codeRebased, this, &SectionsWidget::refreshSections); connect(this, &QDockWidget::visibilityChanged, this, [ = ](bool visibility) { if (visibility) { refreshSections(); diff --git a/src/widgets/SegmentsWidget.cpp b/src/widgets/SegmentsWidget.cpp index 8516dbb3..b14c85e2 100644 --- a/src/widgets/SegmentsWidget.cpp +++ b/src/widgets/SegmentsWidget.cpp @@ -145,7 +145,8 @@ SegmentsWidget::SegmentsWidget(MainWindow *main, QAction *action) : ui->quickFilterView->closeFilter(); showCount(false); - connect(Core(), SIGNAL(refreshAll()), this, SLOT(refreshSegments())); + connect(Core(), &CutterCore::refreshAll, this, &SegmentsWidget::refreshSegments); + connect(Core(), &CutterCore::codeRebased, this, &SegmentsWidget::refreshSegments); } SegmentsWidget::~SegmentsWidget() {} diff --git a/src/widgets/StringsWidget.cpp b/src/widgets/StringsWidget.cpp index 62017454..7a6eb74d 100644 --- a/src/widgets/StringsWidget.cpp +++ b/src/widgets/StringsWidget.cpp @@ -186,7 +186,8 @@ StringsWidget::StringsWidget(MainWindow *main, QAction *action) : }); clearShortcut->setContext(Qt::WidgetWithChildrenShortcut); - connect(Core(), SIGNAL(refreshAll()), this, SLOT(refreshStrings())); + connect(Core(), &CutterCore::refreshAll, this, &StringsWidget::refreshStrings); + connect(Core(), &CutterCore::codeRebased, this, &StringsWidget::refreshStrings); connect( ui->quickFilterView->comboBox(), &QComboBox::currentTextChanged, this, diff --git a/src/widgets/SymbolsWidget.cpp b/src/widgets/SymbolsWidget.cpp index eff511a1..04d615ae 100644 --- a/src/widgets/SymbolsWidget.cpp +++ b/src/widgets/SymbolsWidget.cpp @@ -124,6 +124,7 @@ SymbolsWidget::SymbolsWidget(MainWindow *main, QAction *action) : setModels(symbolsProxyModel); ui->treeView->sortByColumn(SymbolsModel::AddressColumn, Qt::AscendingOrder); + connect(Core(), &CutterCore::codeRebased, this, &SymbolsWidget::refreshSymbols); connect(Core(), &CutterCore::refreshAll, this, &SymbolsWidget::refreshSymbols); } diff --git a/src/widgets/VTablesWidget.cpp b/src/widgets/VTablesWidget.cpp index 4beb3187..d20abd49 100644 --- a/src/widgets/VTablesWidget.cpp +++ b/src/widgets/VTablesWidget.cpp @@ -161,7 +161,8 @@ VTablesWidget::VTablesWidget(MainWindow *main, QAction *action) : tree->showItemsNumber(proxy->rowCount()); }); - connect(Core(), SIGNAL(refreshAll()), this, SLOT(refreshVTables())); + connect(Core(), &CutterCore::codeRebased, this, &VTablesWidget::refreshVTables); + connect(Core(), &CutterCore::refreshAll, this, &VTablesWidget::refreshVTables); } VTablesWidget::~VTablesWidget()