1 //===-- SymbolLocatorDefault.h ----------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_SOURCE_PLUGINS_SYMBOLLOCATOR_DEFAULT_SYMBOLLOCATORDEFAULT_H 10 #define LLDB_SOURCE_PLUGINS_SYMBOLLOCATOR_DEFAULT_SYMBOLLOCATORDEFAULT_H 11 12 #include "lldb/Symbol/SymbolLocator.h" 13 #include "lldb/lldb-private.h" 14 15 namespace lldb_private { 16 17 class SymbolLocatorDefault : public SymbolLocator { 18 public: 19 SymbolLocatorDefault(); 20 21 static void Initialize(); 22 static void Terminate(); 23 24 static llvm::StringRef GetPluginNameStatic() { return "Default"; } 25 static llvm::StringRef GetPluginDescriptionStatic(); 26 27 static lldb_private::SymbolLocator *CreateInstance(); 28 29 /// PluginInterface protocol. 30 /// \{ 31 llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } 32 /// \} 33 34 // Locate the executable file given a module specification. 35 // 36 // Locating the file should happen only on the local computer or using the 37 // current computers global settings. 38 static std::optional<ModuleSpec> 39 LocateExecutableObjectFile(const ModuleSpec &module_spec); 40 41 // Locate the symbol file given a module specification. 42 // 43 // Locating the file should happen only on the local computer or using the 44 // current computers global settings. 45 static std::optional<FileSpec> 46 LocateExecutableSymbolFile(const ModuleSpec &module_spec, 47 const FileSpecList &default_search_paths); 48 49 // Locate the object and symbol file given a module specification. 50 // 51 // Locating the file can try to download the file from a corporate build 52 // repository, or using any other means necessary to locate both the 53 // unstripped object file and the debug symbols. The force_lookup argument 54 // controls whether the external program is called unconditionally to find 55 // the symbol file, or if the user's settings are checked to see if they've 56 // enabled the external program before calling. 57 static bool DownloadObjectAndSymbolFile(ModuleSpec &module_spec, 58 Status &error, bool force_lookup, 59 bool copy_executable); 60 }; 61 62 } // namespace lldb_private 63 64 #endif // LLDB_SOURCE_PLUGINS_SYMBOLLOCATOR_DEFAULT_SYMBOLLOCATORDEFAULT_H 65