
GDB and LLDB use different signal models. GDB uses a predefined set of signal codes, and maps platform's signos to them. On the other hand, LLDB has historically simply passed native signos. In order to improve compatibility between LLDB and gdbserver, the GDB signal model should be used. However, GDB does not provide a mapping for all existing signals on Linux and unsupported signals are passed as 'unknown'. Limiting LLDB to this behavior could be considered a regression. To get the best of both worlds, use the LLDB signal model when talking to lldb-server, and the GDB signal model otherwise. For this purpose, new versions of lldb-server indicate "native-signals+" via qSupported. At the same time, we also detect older versions of lldb-server via QThreadSuffixSupported for backwards compatibility. If neither test succeeds, we assume gdbserver or another implementation using GDB model. Differential Revision: https://reviews.llvm.org/D108078
31 lines
971 B
C++
31 lines
971 B
C++
//===-- GDBRemoteSignals.h --------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_GDBREMOTESIGNALS_H
|
|
#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_GDBREMOTESIGNALS_H
|
|
|
|
#include "lldb/Target/UnixSignals.h"
|
|
|
|
namespace lldb_private {
|
|
|
|
/// Initially carries signals defined by the GDB Remote Serial Protocol.
|
|
/// Can be filled with platform's signals through PlatformRemoteGDBServer.
|
|
class GDBRemoteSignals : public UnixSignals {
|
|
public:
|
|
GDBRemoteSignals();
|
|
|
|
GDBRemoteSignals(const lldb::UnixSignalsSP &rhs);
|
|
|
|
private:
|
|
void Reset() override;
|
|
};
|
|
|
|
} // namespace lldb_private
|
|
|
|
#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_GDBREMOTESIGNALS_H
|