1f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton//===-- PlatformiOSSimulator.h ----------------------------------*- C++ -*-===//
2f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton//
3f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton//                     The LLVM Compiler Infrastructure
4f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton//
5f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton// This file is distributed under the University of Illinois Open Source
6f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton// License. See LICENSE.TXT for details.
7f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton//
8f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton//===----------------------------------------------------------------------===//
9f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
10f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton#ifndef liblldb_PlatformiOSSimulator_h_
11f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton#define liblldb_PlatformiOSSimulator_h_
12f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
13f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton// C Includes
14f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton// C++ Includes
15f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton// Other libraries and framework includes
16f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton// Project includes
17f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton#include "PlatformDarwin.h"
18f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
19f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Claytonclass PlatformiOSSimulator : public PlatformDarwin
20f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton{
21f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Claytonpublic:
22f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
23f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    //------------------------------------------------------------
24f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    // Class Functions
25f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    //------------------------------------------------------------
26f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    static lldb_private::Platform*
27b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton    CreateInstance (bool force, const lldb_private::ArchSpec *arch);
28f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
29f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    static void
30f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    Initialize ();
31f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
32f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    static void
33f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    Terminate ();
34f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
350e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton    static lldb_private::ConstString
36f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    GetPluginNameStatic ();
37f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
38f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    static const char *
39f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    GetDescriptionStatic();
40f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
41f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    //------------------------------------------------------------
42f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    // Class Methods
43f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    //------------------------------------------------------------
44f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    PlatformiOSSimulator ();
45f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
46f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    virtual
47f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    ~PlatformiOSSimulator();
48f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
49f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    //------------------------------------------------------------
50f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    // lldb_private::PluginInterface functions
51f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    //------------------------------------------------------------
520e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton    virtual lldb_private::ConstString
53f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    GetPluginName()
54f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    {
55f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton        return GetPluginNameStatic();
56f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    }
57f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
58f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    virtual uint32_t
59f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    GetPluginVersion()
60f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    {
61f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton        return 1;
62f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    }
63f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
64f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    //------------------------------------------------------------
65f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    // lldb_private::Platform functions
66f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    //------------------------------------------------------------
67f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    virtual lldb_private::Error
68f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    ResolveExecutable (const lldb_private::FileSpec &exe_file,
69f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton                       const lldb_private::ArchSpec &arch,
70f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton                       lldb::ModuleSP &module_sp,
71f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton                       const lldb_private::FileSpecList *module_search_paths_ptr);
72f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
73f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    virtual const char *
74f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    GetDescription ()
75f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    {
76f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton        return GetDescriptionStatic();
77f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    }
78f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
79f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    virtual void
80f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    GetStatus (lldb_private::Stream &strm);
81f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
82f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    virtual lldb_private::Error
83f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    GetFile (const lldb_private::FileSpec &platform_file,
84f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton             const lldb_private::UUID *uuid_ptr,
85f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton             lldb_private::FileSpec &local_file);
86f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
87f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    virtual lldb_private::Error
88444fe998bf707bd076a70c3a779db8575533695eGreg Clayton    GetSharedModule (const lldb_private::ModuleSpec &module_spec,
89f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton                     lldb::ModuleSP &module_sp,
90f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton                     const lldb_private::FileSpecList *module_search_paths_ptr,
91f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton                     lldb::ModuleSP *old_module_sp_ptr,
92f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton                     bool *did_create_ptr);
93f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
94f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    virtual uint32_t
95f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    FindProcesses (const lldb_private::ProcessInstanceInfoMatch &match_info,
96f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton                   lldb_private::ProcessInstanceInfoList &process_infos);
97f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
98f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    virtual bool
99f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    GetSupportedArchitectureAtIndex (uint32_t idx,
100f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton                                     lldb_private::ArchSpec &arch);
101f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
102f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Claytonprotected:
103f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    std::string m_sdk_directory;
104f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    std::string m_build_update;
105f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    //std::vector<FileSpec> m_device_support_os_dirs;
106f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
107f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    const char *
108f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    GetSDKDirectory();
109f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
110f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Claytonprivate:
111f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton    DISALLOW_COPY_AND_ASSIGN (PlatformiOSSimulator);
112f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
113f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton};
114f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton
115f96c883fde04b2ef8733812c16b0a07ad0cc7439Greg Clayton#endif  // liblldb_PlatformiOSSimulator_h_
116