More dismangle and disassembly flavor changes.

This commit is contained in:
Ernie Pasveer
2022-07-21 20:26:46 -05:00
parent 97aaaaad68
commit dd34e9d3a2
7 changed files with 67 additions and 14 deletions
+4 -4
View File
@@ -73,11 +73,11 @@ void SeerAssemblyConfigPage::setDisassembyFlavor (const QString& flavor) const {
}
}
void SeerAssemblyConfigPage::setSymbolDemagling (const QString& yesno) const {
void SeerAssemblyConfigPage::setSymbolDemagling (const QString& onoff) const {
if (yesno == "yes") {
if (onoff == "on") {
demanglingOnRadioButton->setChecked(true);
}else if (yesno == "no") {
}else if (onoff == "off") {
demanglingOffRadioButton->setChecked(true);
}else{
}
@@ -93,7 +93,7 @@ void SeerAssemblyConfigPage::reset () {
setShowAssemblyTabOnStartup(false);
setKeepAssemblyTabOnTop(true);
setDisassembyFlavor("att");
setSymbolDemagling("yes");
setSymbolDemagling("on");
setRegisterFormat("Natural");
}
+1 -1
View File
@@ -21,7 +21,7 @@ class SeerAssemblyConfigPage : public QWidget, protected Ui::SeerAssemblyConfigP
void setShowAssemblyTabOnStartup (bool flag) const;
void setKeepAssemblyTabOnTop (bool flag) const;
void setDisassembyFlavor (const QString& flavor) const;
void setSymbolDemagling (const QString& yesno) const;
void setSymbolDemagling (const QString& onoff) const;
void setRegisterFormat (const QString& format) const;
void reset ();
+2 -2
View File
@@ -223,9 +223,9 @@ QString SeerConfigDialog::assemblyDisassembyFlavor () const {
return _assemblyConfigPage->disassembyFlavor();
}
void SeerConfigDialog::setAssemblySymbolDemagling (const QString& yesno) {
void SeerConfigDialog::setAssemblySymbolDemagling (const QString& onoff) {
_assemblyConfigPage->setSymbolDemagling(yesno);
_assemblyConfigPage->setSymbolDemagling(onoff);
}
QString SeerConfigDialog::assemblySymbolDemagling () const {
+1 -1
View File
@@ -68,7 +68,7 @@ class SeerConfigDialog : public QDialog, protected Ui::SeerConfigDialogForm {
void setAssemblyDisassembyFlavor (const QString& flavor);
QString assemblyDisassembyFlavor () const;
void setAssemblySymbolDemagling (const QString& yesno);
void setAssemblySymbolDemagling (const QString& onoff);
QString assemblySymbolDemagling () const;
void setAssemblyRegisterFormat (const QString& format);
+50 -5
View File
@@ -46,6 +46,7 @@ SeerGdbWidget::SeerGdbWidget (QWidget* parent) : QWidget(parent) {
_gdbArguments = "--interpreter=mi";
_gdbASyncMode = true;
_assemblyShowAssemblyTabOnStartup = false;
_assemblyDisassemblyFlavor = "att";
_gdbHandleTerminatingException = true;
_consoleMode = "";
_consoleScrollLines = 1000;
@@ -611,6 +612,8 @@ void SeerGdbWidget::handleGdbRunExecutable () {
handleGdbExecutableSources(); // Load the program source files.
handleGdbExecutableWorkingDirectory(); // Set the program's working directory before running.
handleGdbExecutableLoadBreakpoints(); // Set the program's breakpoints (if any) before running.
handleGdbAssemblyDisassemblyFlavor(); // Set the disassembly flavor to use.
handleGdbAssemblySymbolDemangling(); // Set the symbol demangling.
if (assemblyShowAssemblyTabOnStartup()) {
editorManager()->showAssembly();
@@ -699,6 +702,8 @@ void SeerGdbWidget::handleGdbStartExecutable () {
handleGdbExecutableSources(); // Load the program source files.
handleGdbExecutableWorkingDirectory(); // Set the program's working directory before running.
handleGdbExecutableLoadBreakpoints(); // Set the program's breakpoints (if any) before running.
handleGdbAssemblyDisassemblyFlavor(); // Set the disassembly flavor to use.
handleGdbAssemblySymbolDemangling(); // Set the symbol demangling.
if (assemblyShowAssemblyTabOnStartup()) {
editorManager()->showAssembly();
@@ -778,7 +783,9 @@ void SeerGdbWidget::handleGdbAttachExecutable () {
handleGdbExecutableName(); // Load the program into the gdb process.
handleGdbExecutableSources(); // Load the program source files.
handleGdbExecutableWorkingDirectory(); // Set the program's working directory before running.
//
handleGdbAssemblyDisassemblyFlavor(); // Set the disassembly flavor to use.
handleGdbAssemblySymbolDemangling(); // Set the symbol demangling.
if (assemblyShowAssemblyTabOnStartup()) {
editorManager()->showAssembly();
}
@@ -847,6 +854,8 @@ void SeerGdbWidget::handleGdbConnectExecutable () {
if (newExecutableFlag() == true) {
handleGdbExecutableName(); // Load the program into the gdb process.
handleGdbExecutableSources(); // Load the program source files.
handleGdbAssemblyDisassemblyFlavor(); // Set the disassembly flavor to use.
handleGdbAssemblySymbolDemangling(); // Set the symbol demangling.
if (assemblyShowAssemblyTabOnStartup()) {
editorManager()->showAssembly();
@@ -930,6 +939,8 @@ void SeerGdbWidget::handleGdbCoreFileExecutable () {
if (newExecutableFlag() == true) {
handleGdbExecutableName(); // Load the program into the gdb process.
handleGdbExecutableSources(); // Load the program source files.
handleGdbAssemblyDisassemblyFlavor(); // Set the disassembly flavor to use.
handleGdbAssemblySymbolDemangling(); // Set the symbol demangling.
if (assemblyShowAssemblyTabOnStartup()) {
editorManager()->showAssembly();
@@ -1831,6 +1842,20 @@ void SeerGdbWidget::handleGdbSaveBreakpoints () {
QMessageBox::information(this, "Seer", "Saved.");
}
void SeerGdbWidget::handleGdbAssemblyDisassemblyFlavor () {
if (_assemblyDisassemblyFlavor != "") {
handleGdbCommand(QString("set disassembly-flavor ") + _assemblyDisassemblyFlavor);
}
}
void SeerGdbWidget::handleGdbAssemblySymbolDemangling () {
if (_assemblySymbolDemangling != "") {
handleGdbCommand(QString("set print asm-demangle ") + _assemblySymbolDemangling);
}
}
void SeerGdbWidget::handleGdbProcessFinished (int exitCode, QProcess::ExitStatus exitStatus) {
//qDebug() << "Gdb process finished. Exit code =" << exitCode << "Exit status =" << exitStatus;
@@ -1900,9 +1925,11 @@ void SeerGdbWidget::writeSettings () {
} settings.endArray();
settings.beginGroup("assembly"); {
settings.setValue("showassemblytabonstartup", assemblyShowAssemblyTabOnStartup());
settings.setValue("keepassemblytabontop", assemblyKeepAssemblyTabOnTop());
settings.setValue("assemblyregisterformat", assemblyRegisterFormat());
settings.setValue("showassemblytabonstartup", assemblyShowAssemblyTabOnStartup());
settings.setValue("keepassemblytabontop", assemblyKeepAssemblyTabOnTop());
settings.setValue("assemblydisassemblyflavor", assemblyDisassembyFlavor());
settings.setValue("assemblysymboldemagling", assemblySymbolDemagling());
settings.setValue("assemblyregisterformat", assemblyRegisterFormat());
} settings.endGroup();
settings.beginGroup("gdboutputlog"); {
@@ -1960,6 +1987,8 @@ void SeerGdbWidget::readSettings () {
settings.beginGroup("assembly"); {
setAssemblyShowAssemblyTabOnStartup(settings.value("showassemblytabonstartup", false).toBool());
setAssemblyKeepAssemblyTabOnTop(settings.value("keepassemblytabontop", true).toBool());
setAssemblyDisassembyFlavor(settings.value("assemblydisassemblyflavor", "att").toString());
setAssemblySymbolDemagling(settings.value("assemblysymboldemagling", "on").toString());
setAssemblyRegisterFormat(settings.value("assemblyregisterformat", "Natural").toString());
} settings.endGroup();
@@ -2208,15 +2237,31 @@ bool SeerGdbWidget::assemblyKeepAssemblyTabOnTop () const {
}
void SeerGdbWidget::setAssemblyDisassembyFlavor (const QString& flavor) {
_assemblyDisassemblyFlavor = flavor;
if (isGdbRuning()) {
handleGdbAssemblyDisassemblyFlavor();
}
}
QString SeerGdbWidget::assemblyDisassembyFlavor () const {
return _assemblyDisassemblyFlavor;
}
void SeerGdbWidget::setAssemblySymbolDemagling (const QString& yesno) {
void SeerGdbWidget::setAssemblySymbolDemagling (const QString& onoff) {
_assemblySymbolDemangling = onoff;
if (isGdbRuning()) {
handleGdbAssemblySymbolDemangling();
}
}
QString SeerGdbWidget::assemblySymbolDemagling () const {
return _assemblySymbolDemangling;
}
void SeerGdbWidget::setAssemblyRegisterFormat (const QString& format) {
+5 -1
View File
@@ -106,7 +106,7 @@ class SeerGdbWidget : public QWidget, protected Ui::SeerGdbWidgetForm {
void setAssemblyDisassembyFlavor (const QString& flavor);
QString assemblyDisassembyFlavor () const;
void setAssemblySymbolDemagling (const QString& yesno);
void setAssemblySymbolDemagling (const QString& onoff);
QString assemblySymbolDemagling () const;
void setAssemblyRegisterFormat (const QString& format);
@@ -213,6 +213,8 @@ class SeerGdbWidget : public QWidget, protected Ui::SeerGdbWidgetForm {
void handleLogOuputChanged ();
void handleGdbLoadBreakpoints ();
void handleGdbSaveBreakpoints ();
void handleGdbAssemblyDisassemblyFlavor ();
void handleGdbAssemblySymbolDemangling ();
void handleGdbProcessFinished (int exitCode, QProcess::ExitStatus exitStatus);
void handleGdbProcessErrored (QProcess::ProcessError errorStatus);
@@ -241,6 +243,8 @@ class SeerGdbWidget : public QWidget, protected Ui::SeerGdbWidgetForm {
QString _dprintfFunction;
QString _dprintfChannel;
bool _assemblyShowAssemblyTabOnStartup;
QString _assemblyDisassemblyFlavor;
QString _assemblySymbolDemangling;
QString _assemblyRegisterFormat;
QString _executableName;
+4
View File
@@ -374,6 +374,8 @@ void SeerMainWindow::handleSettingsConfiguration () {
dlg.setSourceAlternateDirectories(gdbWidget->sourceAlternateDirectories());
dlg.setAssemblyShowAssemblyTabOnStartup(gdbWidget->assemblyShowAssemblyTabOnStartup());
dlg.setAssemblyKeepAssemblyTabOnTop(gdbWidget->assemblyKeepAssemblyTabOnTop());
dlg.setAssemblyDisassembyFlavor(gdbWidget->assemblyDisassembyFlavor());
dlg.setAssemblySymbolDemagling(gdbWidget->assemblySymbolDemagling());
dlg.setAssemblyRegisterFormat(gdbWidget->assemblyRegisterFormat());
dlg.setSeerConsoleMode(gdbWidget->consoleMode());
dlg.setSeerConsoleScrollLines(gdbWidget->consoleScrollLines());
@@ -400,6 +402,8 @@ void SeerMainWindow::handleSettingsConfiguration () {
gdbWidget->setSourceAlternateDirectories(dlg.sourceAlternateDirectories());
gdbWidget->setAssemblyShowAssemblyTabOnStartup(dlg.assemblyShowAssemblyTabOnStartup());
gdbWidget->setAssemblyKeepAssemblyTabOnTop(dlg.assemblyKeepAssemblyTabOnTop());
gdbWidget->setAssemblyDisassembyFlavor(dlg.assemblyDisassembyFlavor());
gdbWidget->setAssemblySymbolDemagling(dlg.assemblySymbolDemagling());
gdbWidget->setAssemblyRegisterFormat(dlg.assemblyRegisterFormat());
gdbWidget->setConsoleMode(dlg.seerConsoleMode());
gdbWidget->setConsoleScrollLines(dlg.seerConsoleScrollLines());