//===-- ModuleCache.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_TARGET_MODULECACHE_H #define LLDB_TARGET_MODULECACHE_H #include "lldb/lldb-forward.h" #include "lldb/lldb-types.h" #include "lldb/Host/File.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/Status.h" #include <functional> #include <string> #include <unordered_map> namespace lldb_private { class Module; class UUID; /// \class ModuleCache ModuleCache.h "lldb/Target/ModuleCache.h" /// A module cache class. /// /// Caches locally modules that are downloaded from remote targets. Each /// cached module maintains 2 views: /// - UUID view: /// /${CACHE_ROOT}/${PLATFORM_NAME}/.cache/${UUID}/${MODULE_FILENAME} /// - Sysroot view: /// /${CACHE_ROOT}/${PLATFORM_NAME}/${HOSTNAME}/${MODULE_FULL_FILEPATH} /// /// UUID views stores a real module file, whereas Sysroot view holds a symbolic /// link to UUID-view file. /// /// Example: /// UUID view : /// /tmp/lldb/remote- /// linux/.cache/30C94DC6-6A1F-E951-80C3-D68D2B89E576-D5AE213C/libc.so.6 /// Sysroot view: /tmp/lldb/remote-linux/ubuntu/lib/x86_64-linux-gnu/libc.so.6 class ModuleCache { … }; } // namespace lldb_private #endif // LLDB_TARGET_MODULECACHE_H