diff --git a/src/plugins/debugger/gdb/coregdbadapter.cpp b/src/plugins/debugger/gdb/coregdbadapter.cpp index bf6f1d41846..50403433784 100644 --- a/src/plugins/debugger/gdb/coregdbadapter.cpp +++ b/src/plugins/debugger/gdb/coregdbadapter.cpp @@ -204,6 +204,7 @@ void GdbCoreEngine::writeCoreChunk() void GdbCoreEngine::setupInferior() { CHECK_STATE(InferiorSetupRequested); + setLinuxOsAbi(); // Do that first, otherwise no symbols are loaded. QFileInfo fi(m_executable); QByteArray path = fi.absoluteFilePath().toLocal8Bit(); diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 2975c5cd824..09155358ade 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -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() { CHECK_STATE(InferiorStopOk); diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index afc1ac7de4e..20464d00c67 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -94,6 +94,7 @@ protected: ////////// Gdb Process Management ////////// void startGdb(const QStringList &args = QStringList()); void handleInferiorShutdown(const DebuggerResponse &response); void handleGdbExit(const DebuggerResponse &response); + void setLinuxOsAbi(); void loadInitScript(); void setEnvironmentVariables(); diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp index bf92900bf97..ba2f0f47da8 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp @@ -162,6 +162,7 @@ void GdbRemoteServerEngine::uploadProcFinished() void GdbRemoteServerEngine::setupInferior() { QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); + setLinuxOsAbi(); const DebuggerRunParameters &rp = runParameters(); QString executableFileName; if (!rp.inferior.executable.isEmpty()) {