Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:42:48

0001 //===-- ZipFileResolver.h ---------------------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 
0009 #ifndef LLDB_HOST_ZIPFILERESOLVER_H
0010 #define LLDB_HOST_ZIPFILERESOLVER_H
0011 
0012 #include "lldb/lldb-private.h"
0013 
0014 namespace lldb_private {
0015 
0016 /// In Android API level 23 and above, bionic dynamic linker is able to load
0017 /// .so file directly from APK or .zip file. This is a utility class to resolve
0018 /// the file spec in order to get the zip path and the .so file offset and size
0019 /// if the file spec contains "zip_path!/so_path".
0020 /// https://android.googlesource.com/platform/bionic/+/master/
0021 /// android-changes-for-ndk-developers.md#
0022 /// opening-shared-libraries-directly-from-an-apk
0023 class ZipFileResolver {
0024 public:
0025   enum FileKind {
0026     eFileKindInvalid = 0,
0027     eFileKindNormal,
0028     eFileKindZip,
0029   };
0030 
0031   static bool ResolveSharedLibraryPath(const FileSpec &file_spec,
0032                                        FileKind &file_kind,
0033                                        std::string &file_path,
0034                                        lldb::offset_t &so_file_offset,
0035                                        lldb::offset_t &so_file_size);
0036 };
0037 
0038 } // end of namespace lldb_private
0039 
0040 #endif // LLDB_HOST_ZIPFILERESOLVER_H