| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- //===-- HostInfoBase.h ------------------------------------------*- C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLDB_HOST_HOSTINFOBASE_H
- #define LLDB_HOST_HOSTINFOBASE_H
- #include "lldb/Utility/ArchSpec.h"
- #include "lldb/Utility/FileSpec.h"
- #include "lldb/Utility/UUID.h"
- #include "lldb/Utility/UserIDResolver.h"
- #include "lldb/Utility/XcodeSDK.h"
- #include "lldb/lldb-enumerations.h"
- #include "llvm/ADT/StringRef.h"
- #include <cstdint>
- #include <string>
- namespace lldb_private {
- class FileSpec;
- struct SharedCacheImageInfo {
- UUID uuid;
- lldb::DataBufferSP data_sp;
- };
- class HostInfoBase {
- private:
- // Static class, unconstructable.
- HostInfoBase() {}
- ~HostInfoBase() {}
- public:
- /// A helper function for determining the liblldb location. It receives a
- /// FileSpec with the location of file containing _this_ code. It can
- /// (optionally) replace it with a file spec pointing to a more canonical
- /// copy.
- using SharedLibraryDirectoryHelper = void(FileSpec &this_file);
- static void Initialize(SharedLibraryDirectoryHelper *helper = nullptr);
- static void Terminate();
- /// Gets the host target triple.
- ///
- /// \return
- /// The host target triple.
- static llvm::Triple GetTargetTriple();
- enum ArchitectureKind {
- eArchKindDefault, // The overall default architecture that applications will
- // run on this host
- eArchKind32, // If this host supports 32 bit programs, return the default 32
- // bit arch
- eArchKind64 // If this host supports 64 bit programs, return the default 64
- // bit arch
- };
- static const ArchSpec &
- GetArchitecture(ArchitectureKind arch_kind = eArchKindDefault);
- static llvm::Optional<ArchitectureKind> ParseArchitectureKind(llvm::StringRef kind);
- /// Returns the directory containing the lldb shared library. Only the
- /// directory member of the FileSpec is filled in.
- static FileSpec GetShlibDir();
- /// Returns the directory containing the support executables (debugserver,
- /// ...). Only the directory member of the FileSpec is filled in.
- static FileSpec GetSupportExeDir();
- /// Returns the directory containing the lldb headers. Only the directory
- /// member of the FileSpec is filled in.
- static FileSpec GetHeaderDir();
- /// Returns the directory containing the system plugins. Only the directory
- /// member of the FileSpec is filled in.
- static FileSpec GetSystemPluginDir();
- /// Returns the directory containing the user plugins. Only the directory
- /// member of the FileSpec is filled in.
- static FileSpec GetUserPluginDir();
- /// Returns the proces temporary directory. This directory will be cleaned up
- /// when this process exits. Only the directory member of the FileSpec is
- /// filled in.
- static FileSpec GetProcessTempDir();
- /// Returns the global temporary directory. This directory will **not** be
- /// cleaned up when this process exits. Only the directory member of the
- /// FileSpec is filled in.
- static FileSpec GetGlobalTempDir();
- /// If the triple does not specify the vendor, os, and environment parts, we
- /// "augment" these using information from the host and return the resulting
- /// ArchSpec object.
- static ArchSpec GetAugmentedArchSpec(llvm::StringRef triple);
- static bool ComputePathRelativeToLibrary(FileSpec &file_spec,
- llvm::StringRef dir);
- static FileSpec GetXcodeContentsDirectory() { return {}; }
- static FileSpec GetXcodeDeveloperDirectory() { return {}; }
-
- /// Return the directory containing a specific Xcode SDK.
- static llvm::StringRef GetXcodeSDKPath(XcodeSDK sdk) { return {}; }
- /// Return information about module \p image_name if it is loaded in
- /// the current process's address space.
- static SharedCacheImageInfo
- GetSharedCacheImageInfo(llvm::StringRef image_name) {
- return {};
- }
- protected:
- static bool ComputeSharedLibraryDirectory(FileSpec &file_spec);
- static bool ComputeSupportExeDirectory(FileSpec &file_spec);
- static bool ComputeProcessTempFileDirectory(FileSpec &file_spec);
- static bool ComputeGlobalTempFileDirectory(FileSpec &file_spec);
- static bool ComputeTempFileBaseDirectory(FileSpec &file_spec);
- static bool ComputeHeaderDirectory(FileSpec &file_spec);
- static bool ComputeSystemPluginsDirectory(FileSpec &file_spec);
- static bool ComputeUserPluginsDirectory(FileSpec &file_spec);
- static void ComputeHostArchitectureSupport(ArchSpec &arch_32,
- ArchSpec &arch_64);
- };
- }
- #endif
|