Skip to content

Commit

Permalink
[lldb-server] Use Platform plugin corresponding to the host
Browse files Browse the repository at this point in the history
In ee23250 I moved UnixSignal
initialization from lldbTarget to the various platform plugins. This
inadvertently broke lldb-server because lldb-server doesn't use
Platform plugins. lldb-server still needs to be able to create a
UnixSignals object for the host platform so we can add the relevant
platform plugin to lldb-server to make sure we always have a
HostPlatform.

Differential Revision: https://reviews.llvm.org/D146668
  • Loading branch information
bulbazord committed Mar 23, 2023
1 parent d10110a commit 0c5cee7
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
Expand Up @@ -63,7 +63,9 @@ def inferior_crashing(self):
# The exact stop reason depends on the platform
if self.platformIsDarwin():
stop_reason = 'stop reason = EXC_BAD_ACCESS'
elif self.getPlatform() == "linux" or self.getPlatform() == "freebsd":
elif self.getPlatform() == "linux":
stop_reason = 'stop reason = signal SIGSEGV: address not mapped to object'
elif self.getPlatform() == "freebsd":
stop_reason = 'stop reason = signal SIGSEGV'
else:
stop_reason = 'stop reason = invalid address'
Expand Down
9 changes: 9 additions & 0 deletions lldb/tools/lldb-server/CMakeLists.txt
Expand Up @@ -7,20 +7,29 @@ set(LLDB_PLUGINS)

if(CMAKE_SYSTEM_NAME MATCHES "Linux|Android")
list(APPEND LLDB_PLUGINS lldbPluginProcessLinux)
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
list(APPEND LLDB_PLUGINS lldbPluginPlatformLinux)
else()
list(APPEND LLDB_PLUGINS lldbPluginPlatformAndroid)
endif()
endif()

if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
list(APPEND LLDB_PLUGINS lldbPluginProcessFreeBSD)
list(APPEND LLDB_PLUGINS lldbPluginPlatformFreeBSD)
endif()

if(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
list(APPEND LLDB_PLUGINS lldbPluginProcessNetBSD)
list(APPEND LLDB_PLUGINS lldbPluginPlatformNetBSD)
endif()

if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
list(APPEND LLDB_PLUGINS lldbPluginObjectFileMachO)
list(APPEND LLDB_PLUGINS lldbPluginPlatformMacOSX)
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
list(APPEND LLDB_PLUGINS lldbPluginObjectFilePECOFF)
list(APPEND LLDB_PLUGINS lldbPluginPlatformWindows)
else()
list(APPEND LLDB_PLUGINS lldbPluginObjectFileELF)
endif()
Expand Down
19 changes: 19 additions & 0 deletions lldb/tools/lldb-server/SystemInitializerLLGS.cpp
Expand Up @@ -11,12 +11,29 @@
#if defined(__APPLE__)
#include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h"
using HostObjectFile = ObjectFileMachO;
#include "Plugins/Platform/MacOSX/PlatformMacOSX.h"
using HostPlatform = lldb_private::PlatformMacOSX;
#elif defined(_WIN32)
#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h"
using HostObjectFile = ObjectFilePECOFF;
#include "Plugins/Platform/Windows/PlatformWindows.h"
using HostPlatform = lldb_private::PlatformWindows;
#else
#include "Plugins/ObjectFile/ELF/ObjectFileELF.h"
using HostObjectFile = ObjectFileELF;
#if defined(__ANDROID__)
#include "Plugins/Platform/Android/PlatformAndroid.h"
using HostPlatform = lldb_private::platform_android::PlatformAndroid;
#elif defined(__FreeBSD__)
#include "Plugins/Platform/FreeBSD/PlatformFreeBSD.h"
using HostPlatform = lldb_private::platform_freebsd::PlatformFreeBSD;
#elif defined(__linux__)
#include "Plugins/Platform/Linux/PlatformLinux.h"
using HostPlatform = lldb_private::platform_linux::PlatformLinux;
#elif defined(__NetBSD__)
#include "Plugins/Platform/NetBSD/PlatformNetBSD.h"
using HostPlatform = lldb_private::platform_netbsd::PlatformNetBSD;
#endif
#endif

#if defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64)
Expand Down Expand Up @@ -58,6 +75,7 @@ llvm::Error SystemInitializerLLGS::Initialize() {
return e;

HostObjectFile::Initialize();
HostPlatform::Initialize();

#if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64)
EmulateInstructionARM::Initialize();
Expand All @@ -80,6 +98,7 @@ llvm::Error SystemInitializerLLGS::Initialize() {

void SystemInitializerLLGS::Terminate() {
HostObjectFile::Terminate();
HostPlatform::Terminate();

#if defined(LLDB_TARGET_ARM) || defined(LLDB_TARGET_ARM64)
EmulateInstructionARM::Terminate();
Expand Down

0 comments on commit 0c5cee7

Please sign in to comment.