124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- TargetList.h --------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_TargetList_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_TargetList_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Broadcaster.h" 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Host/Mutex.h" 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/Target.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass TargetList : public Broadcaster 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class Debugger; 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Constructor 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The constructor for the target list is private. Clients can 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// get ahold of of the one and only target list through the 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// lldb_private::Debugger::GetSharedInstance().GetTargetList(). 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @see static TargetList& lldb_private::Debugger::GetTargetList(). 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 375a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham TargetList(Debugger &debugger); 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Broadcaster event bits definitions. 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner enum 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner eBroadcastBitInterrupt = (1 << 0) 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner }; 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 505a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham // These two functions fill out the Broadcaster interface: 515a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 525a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham static ConstString &GetStaticBroadcasterClass (); 535a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 545a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham virtual ConstString &GetBroadcasterClass() const 555a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham { 565a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham return GetStaticBroadcasterClass(); 575a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham } 585a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham 595a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham virtual ~TargetList(); 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Create a new Target. 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Clients must use this function to create a Target. This allows 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// a global list of targets to be maintained in a central location 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// so signal handlers and other global functions can use it to 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// locate an appropriate target to deliver asynchronous information 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// to. 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 703e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// @param[in] debugger 713e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// The debugger to associate this target with 723e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] file_spec 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The main executable file for a debug target. This value 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// can be NULL and the file can be set later using: 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Target::SetExecutableModule (ModuleSP&) 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 783e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// @param[in] triple_cstr 793e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// A target triple string to be used for the target. This can 803e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// be NULL if the triple is not known or when attaching to a 813e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// process. 823e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// 833e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// @param[in] get_dependent_modules 843e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// Track down the dependent modules for an executable and 853e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// load those into the module list. 863e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// 873e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// @param[in] platform_options 883e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// A pointer to the platform options to use when creating this 893e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// target. If this value is NULL, then the currently selected 903e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// platform will be used. 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 923e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// @param[out] target_sp 933e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// A shared pointer to a target that will be filled in if 943e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// this call is successful. 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 973e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// An error object that indicates success or failure 983e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton //------------------------------------------------------------------ 993e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton Error 1003e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton CreateTarget (Debugger &debugger, 101ed0a0fbd021e44727469d6fa20cc337c58bd04c3Greg Clayton const char *user_exe_path, 1023e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton const char *triple_cstr, 1033e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton bool get_dependent_modules, 1043e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton const OptionGroupPlatform *platform_options, 1053e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton lldb::TargetSP &target_sp); 1063e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton 1073e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton //------------------------------------------------------------------ 1083e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// Create a new Target. 1093e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// 1103e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// Same as the function above, but used when you already know the 1113e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton /// platform you will be using 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Error 11463094e0bb161580564954dee512955c1c79d3476Greg Clayton CreateTarget (Debugger &debugger, 115ed0a0fbd021e44727469d6fa20cc337c58bd04c3Greg Clayton const char *user_exe_path, 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const ArchSpec& arch, 1173e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton bool get_dependent_modules, 118b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton lldb::PlatformSP &platform_sp, 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::TargetSP &target_sp); 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Delete a Target object from the list. 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// When clients are done with the Target objets, this function 12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// should be called to release the memory associated with a target 12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// object. 12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] target_sp 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The shared pointer to a target. 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Returns \b true if the target was successfully removed from 13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// from this target list, \b false otherwise. The client will 13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// be left with the last remaining shared pointer to the target 13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// in \a target_sp which can then be properly released. 13624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DeleteTarget (lldb::TargetSP &target_sp); 13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int 14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetNumTargets () const; 14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::TargetSP 14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetTargetAtIndex (uint32_t index) const; 145f92ddcc2fda5ca564acc37d2fecd4b577dfc2bdeJim Ingham 146f92ddcc2fda5ca564acc37d2fecd4b577dfc2bdeJim Ingham uint32_t 147f92ddcc2fda5ca564acc37d2fecd4b577dfc2bdeJim Ingham GetIndexOfTarget (lldb::TargetSP target_sp) const; 14824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Find the target that contains has an executable whose path 15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// matches \a exe_file_spec, and whose architecture matches 15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// \a arch_ptr if arch_ptr is not NULL. 15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 15424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] exe_file_spec 15524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A file spec containing a basename, or a full path (directory 15624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// and basename). If \a exe_file_spec contains only a filename 15724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// (empty GetDirectory() value) then matching will be done 15824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// solely based on the filenames and directories won't be 15924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// compared. If \a exe_file_spec contains a filename and a 16024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// directory, then both must match. 16124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 16224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] exe_arch_ptr 16324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// If not NULL then the architecture also needs to match, else 16424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// the architectures will be compared. 16524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 16624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 16724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A shared pointer to a target object. The returned shared 16824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// pointer will contain NULL if no target objects have a 16924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// executable whose full or partial path matches 17024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// with a matching process ID. 17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::TargetSP 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FindTargetWithExecutableAndArchitecture (const FileSpec &exe_file_spec, 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const ArchSpec *exe_arch_ptr = NULL) const; 17524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 17724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Find the target that contains a process with process ID \a 17824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// pid. 17924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 18024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] pid 18124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The process ID to search our target list for. 18224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 18324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 18424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A shared pointer to a target object. The returned shared 18524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// pointer will contain NULL if no target objects own a process 18624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// with a matching process ID. 18724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::TargetSP 18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FindTargetWithProcessID (lldb::pid_t pid) const; 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::TargetSP 19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FindTargetWithProcess (lldb_private::Process *process) const; 19324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::TargetSP 19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetTargetSP (Target *target) const; 19624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Send an async interrupt to one or all processes. 19924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Find the target that contains the process with process ID \a 20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// pid and send a LLDB_EVENT_ASYNC_INTERRUPT event to the process's 20224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// event queue. 20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 20424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] pid 20524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The process ID to search our target list for, if \a pid is 20624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// LLDB_INVALID_PROCESS_ID, then the interrupt will be sent to 20724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// all processes. 20824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 20924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 21024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The number of async interrupts sent. 21124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 21224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t 21324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SendAsyncInterrupt (lldb::pid_t pid = LLDB_INVALID_PROCESS_ID); 21424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t 21624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SignalIfRunning (lldb::pid_t pid, int signo); 21724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t 219c833295baeec641086f536e78050388af36784f8Jim Ingham SetSelectedTarget (Target *target); 22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::TargetSP 222c833295baeec641086f536e78050388af36784f8Jim Ingham GetSelectedTarget (); 22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::vector<lldb::TargetSP> collection; 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Member variables. 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 23024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner collection m_target_list; 23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner mutable Mutex m_target_list_mutex; 232c833295baeec641086f536e78050388af36784f8Jim Ingham uint32_t m_selected_target_idx; 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 23424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (TargetList); 23524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 23624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_TargetList_h_ 240