124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- DynamicLoader.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_DynamicLoader_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_DynamicLoader_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h" 150baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton#include "lldb/Core/Error.h" 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/PluginInterface.h" 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @class DynamicLoader DynamicLoader.h "lldb/Target/DynamicLoader.h" 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @brief A plug-in interface definition class for dynamic loaders. 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// Dynamic loader plug-ins track image (shared library) loading and 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// unloading. The class is initialized given a live process that is 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// halted at its entry point or just after attaching. 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// Dynamic loader plug-ins can track the process by registering 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// callbacks using the: 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// Process::RegisterNotificationCallbacks (const Notifications&) 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// function. 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// Breakpoints can also be set in the process which can register 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// functions that get called using: 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// Process::BreakpointSetCallback (lldb::user_id_t, BreakpointHitCallback, void *). 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// These breakpoint callbacks return a boolean value that indicates if 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// the process should continue or halt and should return the global 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// setting for this using: 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// DynamicLoader::StopWhenImagesChange() const. 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass DynamicLoader : 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public PluginInterface 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Find a dynamic loader plugin for a given process. 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Scans the installed DynamicLoader plug-ins and tries to find 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// an instance that can be used to track image changes in \a 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// process. 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] process 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The process for which to try and locate a dynamic loader 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// plug-in instance. 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] plugin_name 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// An optional name of a specific dynamic loader plug-in that 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// should be used. If NULL, pick the best plug-in. 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static DynamicLoader* 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner FindPlugin (Process *process, const char *plugin_name); 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Construct with a process. 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DynamicLoader (Process *process); 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Destructor. 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// The destructor is virtual since this class is designed to be 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// inherited from by the plug-in instance. 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~DynamicLoader (); 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Called after attaching a process. 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Allow DynamicLoader plug-ins to execute some code after 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// attaching to a process. 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DidAttach () = 0; 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Called after launching a process. 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Allow DynamicLoader plug-ins to execute some code after 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// the process has stopped for the first time on launch. 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DidLaunch () = 0; 94e6bd142d9fa7ed149bd37efd8a75637375f165b7Jim Ingham 95e6bd142d9fa7ed149bd37efd8a75637375f165b7Jim Ingham 960bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton //------------------------------------------------------------------ 970bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton /// Helper function that can be used to detect when a process has 980bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton /// called exec and is now a new and different process. This can 990bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton /// be called when necessary to try and detect the exec. The process 1000bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton /// might be able to answer this question, but sometimes it might 1010bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton /// not be able and the dynamic loader often knows what the program 1020bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton /// entry point is. So the process and the dynamic loader can work 1030bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton /// together to detect this. 1040bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton //------------------------------------------------------------------ 1050bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton virtual bool 1060bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton ProcessDidExec () 1070bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton { 1080bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton return false; 1090bce9a22354df3f00e68ffd912119a0741753b7fGreg Clayton } 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 111fe424a92fc6fd92f810d243912461fe028a2b63cGreg Clayton /// Get whether the process should stop when images change. 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// When images (executables and shared libraries) get loaded or 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// unloaded, often debug sessions will want to try and resolve or 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// unresolve breakpoints that are set in these images. Any 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// breakpoints set by DynamicLoader plug-in instances should 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// return this value to ensure consistent debug session behaviour. 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Returns \b true if the process should stop when images 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// change, \b false if the process should resume. 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetStopWhenImagesChange () const; 12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 127fe424a92fc6fd92f810d243912461fe028a2b63cGreg Clayton /// Set whether the process should stop when images change. 12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// When images (executables and shared libraries) get loaded or 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// unloaded, often debug sessions will want to try and resolve or 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// unresolve breakpoints that are set in these images. The default 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// is set so that the process stops when images change, but this 13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// can be overridden using this function callback. 13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] stop 136fe424a92fc6fd92f810d243912461fe028a2b63cGreg Clayton /// Boolean value that indicates whether the process should stop 13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// when images change. 13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetStopWhenImagesChange (bool stop); 14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Provides a plan to step through the dynamic loader trampoline 14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// for the current state of \a thread. 14524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 14624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 14724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @param[in] stop_others 14824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// Whether the plan should be set to stop other threads. 14924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// 15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// @return 15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// A pointer to the plan (caller owned) or NULL if we are not at such 15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner /// a trampoline. 15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 15424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual lldb::ThreadPlanSP 15524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetStepThroughTrampolinePlan (Thread &thread, bool stop_others) = 0; 15624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1570baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton 1580baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton //------------------------------------------------------------------ 159323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// Some dynamic loaders provide features where there are a group of symbols "equivalent to" 160323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// a given symbol one of which will be chosen when the symbol is bound. If you want to 161323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// set a breakpoint on one of these symbols, you really need to set it on all the 162323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// equivalent symbols. 163323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// 164323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// 165323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// @param[in] original_symbol 166323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// The symbol for which we are finding equivalences. 167323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// 168323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// @param[in] module_list 169323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// The set of modules in which to search. 170323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// 171323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// @param[out] equivalent_symbols 172323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// The equivalent symbol list - any equivalent symbols found are appended to this list. 173323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// 174323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// @return 175323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham /// Number of equivalent symbols found. 176323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham //------------------------------------------------------------------ 177323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham virtual size_t 178323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham FindEquivalentSymbols (Symbol *original_symbol, ModuleList &module_list, SymbolContextList &equivalent_symbols) 179323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham { 180323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham return 0; 181323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham } 18284985174d8b0fe4913caf446f7789f1531317650Jason Molenda 183323ce42219c4b036e21212ce7d1398253a91e9dbJim Ingham //------------------------------------------------------------------ 1840baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// Ask if it is ok to try and load or unload an shared library 1850baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// (image). 1860baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// 1870baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// The dynamic loader often knows when it would be ok to try and 1880baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// load or unload a shared library. This function call allows the 1890baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// dynamic loader plug-ins to check any current dyld state to make 1900baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// sure it is an ok time to load a shared library. 1910baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// 1920baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// @return 19384985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// \b true if it is currently ok to try and load a shared 1940baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton /// library into the process, \b false otherwise. 1950baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton //------------------------------------------------------------------ 1960baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton virtual Error 1970baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton CanLoadImage () = 0; 1980baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton 19984985174d8b0fe4913caf446f7789f1531317650Jason Molenda //------------------------------------------------------------------ 20084985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// Ask if the eh_frame information for the given SymbolContext should 20184985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// be relied on even when it's the first frame in a stack unwind. 20284985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// 20384985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// The CFI instructions from the eh_frame section are normally only 20484985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// valid at call sites -- places where a program could throw an 20584985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// exception and need to unwind out. But some Modules may be known 20684985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// to the system as having reliable eh_frame information at all call 20784985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// sites. This would be the case if the Module's contents are largely 20884985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// hand-written assembly with hand-written eh_frame information. 20984985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// Normally when unwinding from a function at the beginning of a stack 21084985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// unwind lldb will examine the assembly instructions to understand 21184985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// how the stack frame is set up and where saved registers are stored. 21284985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// But with hand-written assembly this is not reliable enough -- we need 21384985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// to consult those function's hand-written eh_frame information. 21484985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// 21584985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// @return 21684985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// \b True if the symbol context should use eh_frame instructions 21784985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// unconditionally when unwinding from this frame. Else \b false, 21884985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// the normal lldb unwind behavior of only using eh_frame when the 21984985174d8b0fe4913caf446f7789f1531317650Jason Molenda /// function appears in the middle of the stack. 22084985174d8b0fe4913caf446f7789f1531317650Jason Molenda //------------------------------------------------------------------ 22184985174d8b0fe4913caf446f7789f1531317650Jason Molenda virtual bool 22284985174d8b0fe4913caf446f7789f1531317650Jason Molenda AlwaysRelyOnEHUnwindInfo (SymbolContext &sym_ctx) 22384985174d8b0fe4913caf446f7789f1531317650Jason Molenda { 22484985174d8b0fe4913caf446f7789f1531317650Jason Molenda return false; 22584985174d8b0fe4913caf446f7789f1531317650Jason Molenda } 22684985174d8b0fe4913caf446f7789f1531317650Jason Molenda 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Member variables. 23024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Process* m_process; ///< The process that this dynamic loader plug-in is tracking. 23224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (DynamicLoader); 23424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 23624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 23924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_DynamicLoader_h_ 240