1 //===-- LocateSymbolFile.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_SYMBOL_LOCATESYMBOLFILE_H 10 #define LLDB_SYMBOL_LOCATESYMBOLFILE_H 11 12 #include <stdint.h> 13 14 #include "lldb/Core/FileSpecList.h" 15 #include "lldb/Utility/FileSpec.h" 16 17 namespace lldb_private { 18 19 class ArchSpec; 20 class ModuleSpec; 21 class UUID; 22 23 class Symbols { 24 public: 25 // Locate the executable file given a module specification. 26 // 27 // Locating the file should happen only on the local computer or using the 28 // current computers global settings. 29 static ModuleSpec LocateExecutableObjectFile(const ModuleSpec &module_spec); 30 31 // Locate the symbol file given a module specification. 32 // 33 // Locating the file should happen only on the local computer or using the 34 // current computers global settings. 35 static FileSpec 36 LocateExecutableSymbolFile(const ModuleSpec &module_spec, 37 const FileSpecList &default_search_paths); 38 39 static FileSpec FindSymbolFileInBundle(const FileSpec &dsym_bundle_fspec, 40 const lldb_private::UUID *uuid, 41 const ArchSpec *arch); 42 43 // Locate the object and symbol file given a module specification. 44 // 45 // Locating the file can try to download the file from a corporate build 46 // repository, or using any other means necessary to locate both the 47 // unstripped object file and the debug symbols. The force_lookup argument 48 // controls whether the external program is called unconditionally to find 49 // the symbol file, or if the user's settings are checked to see if they've 50 // enabled the external program before calling. 51 // 52 static bool DownloadObjectAndSymbolFile(ModuleSpec &module_spec, 53 bool force_lookup = true); 54 }; 55 56 } // namespace lldb_private 57 58 #endif // LLDB_SYMBOL_LOCATESYMBOLFILE_H 59