Summary: This commit is somewhat NFC-ish today as the environment of triples is not considered when comparing s if one of them is not set (I plan to change that). We have made simulator triples unambiguous these days, but the simulator platforms still advertise triples without the environment. This wasn't an issue when the sims ran only on a very different architecure than the real device, but this has changed with Apple Silicon. This patch simplifies the way GetSupportedArchitectureAtIndex is implemented for the sim platforms and adds the environment. It also trivially adds support for Apple Silicon to those platforms. Reviewers: aprantl Subscribers: lldb-commits
87 lines
2.9 KiB
C++
87 lines
2.9 KiB
C++
//===-- PlatformiOSSimulator.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_PLATFORM_MACOSX_PLATFORMIOSSIMULATOR_H
|
|
#define LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMIOSSIMULATOR_H
|
|
|
|
#include <mutex>
|
|
#include <string>
|
|
|
|
#include "PlatformAppleSimulator.h"
|
|
|
|
class PlatformiOSSimulator : public PlatformAppleSimulator {
|
|
public:
|
|
PlatformiOSSimulator();
|
|
|
|
~PlatformiOSSimulator() override;
|
|
|
|
// Class Functions
|
|
static lldb::PlatformSP CreateInstance(bool force,
|
|
const lldb_private::ArchSpec *arch);
|
|
|
|
static void Initialize();
|
|
|
|
static void Terminate();
|
|
|
|
static lldb_private::ConstString GetPluginNameStatic();
|
|
|
|
static const char *GetDescriptionStatic();
|
|
|
|
// lldb_private::PluginInterface functions
|
|
lldb_private::ConstString GetPluginName() override {
|
|
return GetPluginNameStatic();
|
|
}
|
|
|
|
uint32_t GetPluginVersion() override { return 1; }
|
|
|
|
// lldb_private::Platform functions
|
|
lldb_private::Status ResolveExecutable(
|
|
const lldb_private::ModuleSpec &module_spec, lldb::ModuleSP &module_sp,
|
|
const lldb_private::FileSpecList *module_search_paths_ptr) override;
|
|
|
|
const char *GetDescription() override { return GetDescriptionStatic(); }
|
|
|
|
void GetStatus(lldb_private::Stream &strm) override;
|
|
|
|
virtual lldb_private::Status
|
|
GetSymbolFile(const lldb_private::FileSpec &platform_file,
|
|
const lldb_private::UUID *uuid_ptr,
|
|
lldb_private::FileSpec &local_file);
|
|
|
|
lldb_private::Status
|
|
GetSharedModule(const lldb_private::ModuleSpec &module_spec,
|
|
lldb_private::Process *process, lldb::ModuleSP &module_sp,
|
|
const lldb_private::FileSpecList *module_search_paths_ptr,
|
|
lldb::ModuleSP *old_module_sp_ptr,
|
|
bool *did_create_ptr) override;
|
|
|
|
uint32_t
|
|
FindProcesses(const lldb_private::ProcessInstanceInfoMatch &match_info,
|
|
lldb_private::ProcessInstanceInfoList &process_infos) override;
|
|
|
|
void
|
|
AddClangModuleCompilationOptions(lldb_private::Target *target,
|
|
std::vector<std::string> &options) override {
|
|
return PlatformDarwin::AddClangModuleCompilationOptionsForSDKType(
|
|
target, options, lldb_private::XcodeSDK::Type::iPhoneSimulator);
|
|
}
|
|
|
|
protected:
|
|
std::mutex m_sdk_dir_mutex;
|
|
std::string m_sdk_directory;
|
|
std::string m_build_update;
|
|
|
|
llvm::StringRef GetSDKDirectoryAsCString();
|
|
|
|
private:
|
|
PlatformiOSSimulator(const PlatformiOSSimulator &) = delete;
|
|
const PlatformiOSSimulator &operator=(const PlatformiOSSimulator &) = delete;
|
|
};
|
|
|
|
#endif // LLDB_SOURCE_PLUGINS_PLATFORM_MACOSX_PLATFORMIOSSIMULATOR_H
|