forked from qt-creator/qt-creator
Debugger: Force GNU/Linux osabi when debugging elf on Windows
Coredump fails to open with multi-target gdb on Windows. Change-Id: I66cea184a84539c9f56cc46d7eabadd7760ba649 Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
@@ -204,6 +204,7 @@ void GdbCoreEngine::writeCoreChunk()
|
|||||||
void GdbCoreEngine::setupInferior()
|
void GdbCoreEngine::setupInferior()
|
||||||
{
|
{
|
||||||
CHECK_STATE(InferiorSetupRequested);
|
CHECK_STATE(InferiorSetupRequested);
|
||||||
|
setLinuxOsAbi();
|
||||||
// Do that first, otherwise no symbols are loaded.
|
// Do that first, otherwise no symbols are loaded.
|
||||||
QFileInfo fi(m_executable);
|
QFileInfo fi(m_executable);
|
||||||
QByteArray path = fi.absoluteFilePath().toLocal8Bit();
|
QByteArray path = fi.absoluteFilePath().toLocal8Bit();
|
||||||
|
@@ -1917,6 +1917,13 @@ void GdbEngine::handleGdbExit(const DebuggerResponse &response)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GdbEngine::setLinuxOsAbi()
|
||||||
|
{
|
||||||
|
// In case GDB has multiple supported targets, the default osabi can be Cygwin.
|
||||||
|
if (HostOsInfo::isWindowsHost() && runParameters().toolChainAbi.binaryFormat() == Abi::ElfFormat)
|
||||||
|
runCommand({"set osabi GNU/Linux"});
|
||||||
|
}
|
||||||
|
|
||||||
void GdbEngine::detachDebugger()
|
void GdbEngine::detachDebugger()
|
||||||
{
|
{
|
||||||
CHECK_STATE(InferiorStopOk);
|
CHECK_STATE(InferiorStopOk);
|
||||||
|
@@ -94,6 +94,7 @@ protected: ////////// Gdb Process Management //////////
|
|||||||
void startGdb(const QStringList &args = QStringList());
|
void startGdb(const QStringList &args = QStringList());
|
||||||
void handleInferiorShutdown(const DebuggerResponse &response);
|
void handleInferiorShutdown(const DebuggerResponse &response);
|
||||||
void handleGdbExit(const DebuggerResponse &response);
|
void handleGdbExit(const DebuggerResponse &response);
|
||||||
|
void setLinuxOsAbi();
|
||||||
|
|
||||||
void loadInitScript();
|
void loadInitScript();
|
||||||
void setEnvironmentVariables();
|
void setEnvironmentVariables();
|
||||||
|
@@ -162,6 +162,7 @@ void GdbRemoteServerEngine::uploadProcFinished()
|
|||||||
void GdbRemoteServerEngine::setupInferior()
|
void GdbRemoteServerEngine::setupInferior()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state());
|
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state());
|
||||||
|
setLinuxOsAbi();
|
||||||
const DebuggerRunParameters &rp = runParameters();
|
const DebuggerRunParameters &rp = runParameters();
|
||||||
QString executableFileName;
|
QString executableFileName;
|
||||||
if (!rp.inferior.executable.isEmpty()) {
|
if (!rp.inferior.executable.isEmpty()) {
|
||||||
|
Reference in New Issue
Block a user