diff --git a/src/app/main.cpp b/src/app/main.cpp index f6a0dc45b3c9f37253850a6458401644500b8be8..4f6e8090dceb21428513552425371e26bd68df11 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -234,12 +234,6 @@ int main(int argc, char **argv) #ifdef Q_OS_MAC // because QLocale's system locale is basically useless on the Mac. // Try to get the real system setting via core foundation - CFLocaleRef maclocale = CFLocaleCopyCurrent(); - CFTypeRef value = CFLocaleGetValue(maclocale, kCFLocaleLanguageCode); - QString preferredLanguage = stringFromCFString(CFStringRef(value)); - if (!preferredLanguage.isEmpty()) - locale = preferredLanguage; - CFRelease(maclocale); CFArrayRef languages = (CFArrayRef)CFPreferencesCopyValue( CFSTR("AppleLanguages"), kCFPreferencesAnyApplication, diff --git a/src/plugins/debugger/symbian/symbianadapter.cpp b/src/plugins/debugger/gdb/symbianadapter.cpp similarity index 92% rename from src/plugins/debugger/symbian/symbianadapter.cpp rename to src/plugins/debugger/gdb/symbianadapter.cpp index 212e1d5e18e7d0459062bd4f8a67f1562e5c1195..7e9d3addd5c19b55484b46647c2578e3cd200960 100644 --- a/src/plugins/debugger/symbian/symbianadapter.cpp +++ b/src/plugins/debugger/gdb/symbianadapter.cpp @@ -434,7 +434,7 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) QByteArray ba; appendInt(&ba, m_session.pid); appendInt(&ba, m_session.tid); - sendTrkMessage(0x18, TrkCB(handleSignalContinue), ba, signalNumber); // Continue + sendTrkMessage(0x18, TrkCB(handleSignalContinue), ba, signalNumber); } else if (cmd.startsWith("D")) { @@ -443,9 +443,8 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) } else if (cmd == "g") { - logMessage(msgGdbPacket(QLatin1String("Read registers"))); // Read general registers. - //sendGdbServerMessage("00000000", "read registers"); + logMessage(msgGdbPacket(QLatin1String("Read registers"))); sendGdbServerAck(); sendTrkMessage(0x12, TrkCB(handleAndReportReadRegisters), trkReadRegisterMessage()); @@ -471,9 +470,9 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) + QByteArray::number(m_session.currentThread)); } - else if (cmd == "k") { + else if (cmd == "k" || cmd.startsWith("vKill")) { + // Kill inferior process logMessage(msgGdbPacket(QLatin1String("kill"))); - // kill sendGdbServerAck(); QByteArray ba; appendByte(&ba, 0); // ? @@ -511,38 +510,6 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) // 0xf == current instruction pointer? //sendGdbServerMessage("0000", "current IP"); sendGdbServerAck(); - #if 0 - A1 = 0, first integer-like argument - A4 = 3, last integer-like argument - AP = 11, - IP = 12, - SP = 13, Contains address of top of stack - LR = 14, address to return to from a function call - PC = 15, Contains program counter - F0 = 16, first floating point register - F3 = 19, last floating point argument register - F7 = 23, last floating point register - FPS = 24, floating point status register - PS = 25, Contains processor status - WR0, WMMX data registers. - WR15 = WR0 + 15, - WC0, WMMX control registers. - WCSSF = WC0 + 2, - WCASF = WC0 + 3, - WC7 = WC0 + 7, - WCGR0, WMMX general purpose registers. - WCGR3 = WCGR0 + 3, - WCGR7 = WCGR0 + 7, - NUM_REGS, - - // Other useful registers. - FP = 11, Frame register in ARM code, if used. - THUMB_FP = 7, Frame register in Thumb code, if used. - NUM_ARG_REGS = 4, - LAST_ARG = A4, - NUM_FP_ARG_REGS = 4, - LAST_FP_ARG = F3 - #endif bool ok = false; const uint registerNumber = cmd.mid(1).toInt(&ok, 16); QByteArray logMsg = "Read Register"; @@ -557,7 +524,8 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) logMsg += dumpRegister(registerNumber, m_snapshot.registers[registerNumber]); sendGdbServerMessage(ba.toHex(), logMsg); } else { - sendGdbServerMessage("0000", "read single unknown register #" + QByteArray::number(registerNumber)); + sendGdbServerMessage("0000", "read single unknown register #" + + QByteArray::number(registerNumber)); //sendGdbServerMessage("E01", "read single unknown register"); } } @@ -585,15 +553,19 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) //$qSupported:multiprocess+#c6 //logMessage("Handling 'qSupported'"); sendGdbServerAck(); - if (0) - sendGdbServerMessage(QByteArray(), "nothing supported"); - else - sendGdbServerMessage( - "PacketSize=7cf;" - "QPassSignals+;" - "qXfer:libraries:read+;" - //"qXfer:auxv:read+;" - "qXfer:features:read+"); + sendGdbServerMessage( + "PacketSize=7cf;" + "QPassSignals+;" + "qXfer:libraries:read+;" + //"qXfer:auxv:read+;" + "qXfer:features:read+"); + } + + else if (cmd == "qfDllInfo") { + // happens with gdb 6.4.50.20060226-cvs / CodeSourcery + // never made it into FSF gdb? + sendGdbServerAck(); + sendGdbServerMessage("", "FIXME: nothing?"); } else if (cmd == "qPacketInfo") { @@ -616,7 +588,8 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) if (1) sendGdbServerMessage("OK", "no further symbols needed"); else - sendGdbServerMessage("qSymbol:" + QByteArray("_Z7E32Mainv").toHex(), "ask for more"); + sendGdbServerMessage("qSymbol:" + QByteArray("_Z7E32Mainv").toHex(), + "ask for more"); } else if (cmd.startsWith("qXfer:features:read:target.xml:")) { @@ -650,13 +623,10 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) QByteArray ba; appendByte(&ba, 0x01); // options appendInt(&ba, m_snapshot.registers[RegisterPC]); // start address - //appendInt(&ba, m_snapshot.registers[RegisterPC] + 4); // end address - appendInt(&ba, -1); // end address + appendInt(&ba, m_snapshot.registers[RegisterPC]); // end address appendInt(&ba, m_session.pid); appendInt(&ba, m_session.tid); sendTrkMessage(0x19, TrkCB(handleStepRange), ba, "Step range"); - // FIXME: should be triggered by "real" stop" - //sendGdbServerMessageAfterTrkResponse("S05", "target halted"); } else if (cmd == "vCont?") { @@ -673,24 +643,9 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) sendTrkMessage(0x18, TrkCallback(), trkContinueMessage(), "CONTINUE"); } - else if (cmd.startsWith("vKill")) { - // kill - sendGdbServerAck(); - QByteArray ba; - appendByte(&ba, 0); // Sub-command: Delete Process - appendInt(&ba, m_session.pid); - sendTrkMessage(0x41, TrkCallback(), ba, "Delete process"); // Delete Item - sendGdbServerMessageAfterTrkResponse("", "process killed"); - } - - else if (0 && cmd.startsWith("Z0,")) { - // Tell gdb we don't support software breakpoints - sendGdbServerMessage(""); - } - else if (cmd.startsWith("Z0,") || cmd.startsWith("Z1,")) { - sendGdbServerAck(); // Insert breakpoint + sendGdbServerAck(); logMessage(msgGdbPacket(QLatin1String("Insert breakpoint"))); // $Z0,786a4ccc,4#99 const int pos = cmd.lastIndexOf(','); @@ -700,29 +655,13 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) //qDebug() << "ADDR: " << hexNumber(addr) << " LEN: " << len; logMessage(QString::fromLatin1("Inserting breakpoint at 0x%1, %2") .arg(addr, 0, 16).arg(len)); - - //---IDE------------------------------------------------------ - // Command: 0x1B Set Break - //BreakType: 0x82 - // Options: 0x00 - // Address: 0x78674340 (2020033344) i.e + 0x00000340 - // Length: 0x00000001 (1) - // Count: 0x00000000 (0) - //ProcessID: 0x000001b5 (437) - // ThreadID: 0xffffffff (-1) - // [1B 09 82 00 78 67 43 40 00 00 00 01 00 00 00 00 - // 00 00 01 B5 FF FF FF FF] const QByteArray ba = trkBreakpointMessage(addr, len, m_session.pid); sendTrkMessage(0x1B, TrkCB(handleAndReportSetBreakpoint), ba, addr); - //---TRK------------------------------------------------------ - // Command: 0x80 Acknowledge - // Error: 0x00 - // [80 09 00 00 00 00 0A] } else if (cmd.startsWith("z0,") || cmd.startsWith("z1,")) { - sendGdbServerAck(); // Remove breakpoint + sendGdbServerAck(); logMessage(msgGdbPacket(QLatin1String("Remove breakpoint"))); // $z0,786a4ccc,4#99 const int pos = cmd.lastIndexOf(','); @@ -735,9 +674,6 @@ void SymbianAdapter::handleGdbServerCommand(const QByteArray &cmd) .arg(addr, 0, 16).arg(len)); sendGdbServerMessage("E00"); } else { - //---IDE------------------------------------------------------ - // Command: 0x1C Clear Break - // [1C 25 00 00 00 0A 78 6A 43 40] m_session.addressToBP.remove(addr); QByteArray ba; appendByte(&ba, 0x00); @@ -1117,9 +1053,11 @@ void SymbianAdapter::handleStepRange(const TrkResult &result) // [80 0f 00] if (result.errorCode()) { logMessage("ERROR: " + result.errorString()); + sendGdbServerMessage("S05", "Stepping finished"); return; } logMessage("STEPPING FINISHED "); + // The gdb server response is triggered later by the Stop Reply packet //sendGdbServerMessage("S05", "Stepping finished"); } @@ -1145,11 +1083,6 @@ void SymbianAdapter::handleClearBreakpoint(const TrkResult &result) logMessage("ERROR: " + result.errorString()); //return; } - //---TRK------------------------------------------------------ - // Command: 0x80 Acknowledge - // Error: 0x00 - // [80 09 00 00 00 00 0A] - // FIXME: sendGdbServerMessage("OK"); } @@ -1358,7 +1291,6 @@ void SymbianAdapter::start(const QString &program, const QStringList &args, QIODevice::OpenMode mode) { Q_UNUSED(mode); - qDebug() << "SYMBIAN START" << program << args << mode; run(); } diff --git a/src/plugins/debugger/symbian/symbianadapter.h b/src/plugins/debugger/gdb/symbianadapter.h similarity index 100% rename from src/plugins/debugger/symbian/symbianadapter.h rename to src/plugins/debugger/gdb/symbianadapter.h diff --git a/src/plugins/debugger/symbian/symbianengine.cpp b/src/plugins/debugger/gdb/symbianengine.cpp similarity index 100% rename from src/plugins/debugger/symbian/symbianengine.cpp rename to src/plugins/debugger/gdb/symbianengine.cpp diff --git a/src/plugins/debugger/symbian/trkclient.cpp b/src/plugins/debugger/gdb/trkclient.cpp similarity index 100% rename from src/plugins/debugger/symbian/trkclient.cpp rename to src/plugins/debugger/gdb/trkclient.cpp diff --git a/src/plugins/debugger/symbian/trkclient.h b/src/plugins/debugger/gdb/trkclient.h similarity index 100% rename from src/plugins/debugger/symbian/trkclient.h rename to src/plugins/debugger/gdb/trkclient.h diff --git a/src/plugins/debugger/symbian/trkfunctor.h b/src/plugins/debugger/gdb/trkfunctor.h similarity index 100% rename from src/plugins/debugger/symbian/trkfunctor.h rename to src/plugins/debugger/gdb/trkfunctor.h diff --git a/src/plugins/debugger/symbian/trkutils.cpp b/src/plugins/debugger/gdb/trkutils.cpp similarity index 100% rename from src/plugins/debugger/symbian/trkutils.cpp rename to src/plugins/debugger/gdb/trkutils.cpp diff --git a/src/plugins/debugger/symbian/trkutils.h b/src/plugins/debugger/gdb/trkutils.h similarity index 100% rename from src/plugins/debugger/symbian/trkutils.h rename to src/plugins/debugger/gdb/trkutils.h diff --git a/src/plugins/debugger/registerwindow.cpp b/src/plugins/debugger/registerwindow.cpp index 356556a48fba2bbd299e436fb01d2c9547b85bba..51fb69ff52248d8af6bf74d7b14ed0592e7ebdea 100644 --- a/src/plugins/debugger/registerwindow.cpp +++ b/src/plugins/debugger/registerwindow.cpp @@ -143,7 +143,6 @@ RegisterWindow::RegisterWindow(DebuggerManager *manager) { QAction *act = theDebuggerAction(UseAlternatingRowColors); setWindowTitle(tr("Registers")); - setSortingEnabled(true); setAlternatingRowColors(act->isChecked()); setRootIsDecorated(false); setItemDelegate(new RegisterDelegate(m_manager, this)); diff --git a/src/plugins/debugger/symbian/symbian.pri b/src/plugins/debugger/symbian/symbian.pri deleted file mode 100644 index afc2dbf9eef386707f8ad0b13896bd91aa51d92a..0000000000000000000000000000000000000000 --- a/src/plugins/debugger/symbian/symbian.pri +++ /dev/null @@ -1,16 +0,0 @@ -HEADERS += \ - $$PWD/trkutils.h \ - $$PWD/trkclient.h \ - $$PWD/symbianadapter.h \ - #$$PWD/gdboptionspage.h \ - -SOURCES += \ - $$PWD/trkutils.cpp \ - $$PWD/trkclient.cpp \ - $$PWD/symbianadapter.cpp \ - $$PWD/symbianengine.cpp \ - #$$PWD/gdboptionspage.cpp \ - -#FORMS += $$PWD/gdboptionspage.ui - -#RESOURCES += $$PWD/gdb.qrc diff --git a/tests/manual/trk/adapter.pro b/tests/manual/trk/adapter.pro index 9ee1a95d8f7b3893881eb7b4100848872ce2c903..710927cbc3058fb85e5d05d21a3a3a1737b7f1a0 100644 --- a/tests/manual/trk/adapter.pro +++ b/tests/manual/trk/adapter.pro @@ -1,7 +1,7 @@ TEMPLATE = app -DEBUGGERHOME = ../../../src/plugins/debugger/symbian +DEBUGGERHOME = ../../../src/plugins/debugger/gdb INCLUDEPATH *= $$DEBUGGERHOME diff --git a/tests/manual/trk/runner.cpp b/tests/manual/trk/runner.cpp index 059eac4f946acca80f2621d1b310dd599b377c06..b87d39a09b6dfec5506eb0b3e29475037e7263be 100755 --- a/tests/manual/trk/runner.cpp +++ b/tests/manual/trk/runner.cpp @@ -106,6 +106,7 @@ private slots: void executeNextCommand() { executeCommand("-exec-next"); } void executeContinueCommand() { executeCommand("-exec-continue"); } void executeDisassICommand() { executeCommand("disass $pc $pc+4"); } + void executeStopCommand() { executeCommand("I"); } void handleReadyReadStandardError(); void handleReadyReadStandardOutput(); @@ -120,6 +121,7 @@ private: SymbianAdapter *m_adapter; TextEdit m_textEdit; QToolBar m_toolBar; + QAction *m_stopAction; QAction *m_stepIAction; QAction *m_stepAction; QAction *m_nextIAction; @@ -142,6 +144,7 @@ RunnerGui::RunnerGui(SymbianAdapter *adapter) connectAction(m_nextAction, "Next", SLOT(executeNextCommand())); connectAction(m_disassIAction, "Disass Inst", SLOT(executeDisassICommand())); connectAction(m_continueAction, "Continue", SLOT(executeContinueCommand())); + connectAction(m_stopAction, "Stop", SLOT(executeStopCommand())); connect(adapter, SIGNAL(output(QString)), &m_textEdit, SLOT(handleOutput(QString))); diff --git a/tests/manual/trk/runner.pro b/tests/manual/trk/runner.pro index 20240eb1f737960ad63af3a26cdeebbf5c4b0684..57ce3e9d7ac1a0ed399d66bd5bc28f9a260f59f5 100644 --- a/tests/manual/trk/runner.pro +++ b/tests/manual/trk/runner.pro @@ -1,7 +1,7 @@ TEMPLATE = app -DEBUGGERHOME = ../../../src/plugins/debugger/symbian +DEBUGGERHOME = ../../../src/plugins/debugger/gdb INCLUDEPATH *= $$DEBUGGERHOME DEFINES += STANDALONE_RUNNER diff --git a/tests/manual/trk/trklauncher.pri b/tests/manual/trk/trklauncher.pri index 69ed763041061e00659fcc78be1c621cf4701f65..c0d8a5810757e61b338999c758877be7635bad6c 100644 --- a/tests/manual/trk/trklauncher.pri +++ b/tests/manual/trk/trklauncher.pri @@ -1,5 +1,5 @@ DEFINES += DEBUG_TRK=0 -DEBUGGERHOME = ../../../src/plugins/debugger/symbian +DEBUGGERHOME = ../../../src/plugins/debugger/gdb INCLUDEPATH *= $$PWD $$DEBUGGERHOME diff --git a/tests/manual/trk/trkserver.pro b/tests/manual/trk/trkserver.pro index 6fbbc85c06cddef88064d35dc19b08f98e6e3626..2289121354d0b65be71d802e262d2817e6e495a6 100644 --- a/tests/manual/trk/trkserver.pro +++ b/tests/manual/trk/trkserver.pro @@ -1,7 +1,7 @@ TEMPLATE = app -DEBUGGERHOME = ../../../src/plugins/debugger/symbian +DEBUGGERHOME = ../../../src/plugins/debugger/gdb QT = core network win32:CONFIG+=console