]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Host/Symbols.h
Merge clang 7.0.1 and several follow-up changes
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Host / Symbols.h
1 //===-- Symbols.h -----------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef liblldb_Symbols_h_
11 #define liblldb_Symbols_h_
12
13 // C Includes
14 #include <stdint.h>
15
16 // C++ Includes
17 // Other libraries and framework includes
18 // Project includes
19 #include "lldb/Utility/FileSpec.h"
20
21 namespace lldb_private {
22
23 class ArchSpec;
24 class ModuleSpec;
25 class UUID;
26
27 class Symbols {
28 public:
29   //----------------------------------------------------------------------
30   // Locate the executable file given a module specification.
31   //
32   // Locating the file should happen only on the local computer or using the
33   // current computers global settings.
34   //----------------------------------------------------------------------
35   static ModuleSpec LocateExecutableObjectFile(const ModuleSpec &module_spec);
36
37   //----------------------------------------------------------------------
38   // Locate the symbol file given a module specification.
39   //
40   // Locating the file should happen only on the local computer or using the
41   // current computers global settings.
42   //----------------------------------------------------------------------
43   static FileSpec LocateExecutableSymbolFile(const ModuleSpec &module_spec);
44
45   static FileSpec FindSymbolFileInBundle(const FileSpec &dsym_bundle_fspec,
46                                          const lldb_private::UUID *uuid,
47                                          const ArchSpec *arch);
48
49   //----------------------------------------------------------------------
50   // Locate the object and symbol file given a module specification.
51   //
52   // Locating the file can try to download the file from a corporate build
53   // repository, or using any other means necessary to locate both the
54   // unstripped object file and the debug symbols. The force_lookup argument
55   // controls whether the external program is called unconditionally to find
56   // the symbol file, or if the user's settings are checked to see if they've
57   // enabled the external program before calling.
58   //
59   //----------------------------------------------------------------------
60   static bool DownloadObjectAndSymbolFile(ModuleSpec &module_spec,
61                                           bool force_lookup = true);
62 };
63
64 } // namespace lldb_private
65
66 #endif // liblldb_Symbols_h_