xref: /openbsd-src/gnu/llvm/lldb/include/lldb/Host/linux/HostInfoLinux.h (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1 //===-- HostInfoLinux.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_Host_linux_HostInfoLinux_h_
10 #define lldb_Host_linux_HostInfoLinux_h_
11 
12 #include "lldb/Host/posix/HostInfoPosix.h"
13 #include "lldb/Utility/FileSpec.h"
14 #include "llvm/ADT/StringRef.h"
15 #include "llvm/Support/VersionTuple.h"
16 
17 #include <optional>
18 #include <string>
19 
20 namespace lldb_private {
21 
22 class HostInfoLinux : public HostInfoPosix {
23   friend class HostInfoBase;
24 
25 public:
26   static void Initialize(SharedLibraryDirectoryHelper *helper = nullptr);
27   static void Terminate();
28 
29   static llvm::VersionTuple GetOSVersion();
30   static std::optional<std::string> GetOSBuildString();
31   static llvm::StringRef GetDistributionId();
32   static FileSpec GetProgramFileSpec();
33 
34 protected:
35   static bool ComputeSupportExeDirectory(FileSpec &file_spec);
36   static bool ComputeSystemPluginsDirectory(FileSpec &file_spec);
37   static bool ComputeUserPluginsDirectory(FileSpec &file_spec);
38   static void ComputeHostArchitectureSupport(ArchSpec &arch_32,
39                                              ArchSpec &arch_64);
40 };
41 }
42 
43 #endif
44