File indexing completed on 2026-05-10 08:44:17
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef LLVM_OBJECT_ARCHIVEWRITER_H
0014 #define LLVM_OBJECT_ARCHIVEWRITER_H
0015
0016 #include "llvm/Object/Archive.h"
0017
0018 namespace llvm {
0019
0020 struct NewArchiveMember {
0021 std::unique_ptr<MemoryBuffer> Buf;
0022 StringRef MemberName;
0023 sys::TimePoint<std::chrono::seconds> ModTime;
0024 unsigned UID = 0, GID = 0, Perms = 0644;
0025
0026 NewArchiveMember() = default;
0027 NewArchiveMember(MemoryBufferRef BufRef);
0028
0029
0030
0031
0032 object::Archive::Kind detectKindFromObject() const;
0033
0034 static Expected<NewArchiveMember>
0035 getOldMember(const object::Archive::Child &OldMember, bool Deterministic);
0036
0037 static Expected<NewArchiveMember> getFile(StringRef FileName,
0038 bool Deterministic);
0039 };
0040
0041 Expected<std::string> computeArchiveRelativePath(StringRef From, StringRef To);
0042
0043 enum class SymtabWritingMode {
0044 NoSymtab,
0045 NormalSymtab,
0046
0047 BigArchive32,
0048 BigArchive64
0049 };
0050
0051 void warnToStderr(Error Err);
0052
0053
0054 Error writeArchiveToStream(raw_ostream &Out,
0055 ArrayRef<NewArchiveMember> NewMembers,
0056 SymtabWritingMode WriteSymtab,
0057 object::Archive::Kind Kind, bool Deterministic,
0058 bool Thin, std::optional<bool> IsEC = std::nullopt,
0059 function_ref<void(Error)> Warn = warnToStderr);
0060
0061 Error writeArchive(StringRef ArcName, ArrayRef<NewArchiveMember> NewMembers,
0062 SymtabWritingMode WriteSymtab, object::Archive::Kind Kind,
0063 bool Deterministic, bool Thin,
0064 std::unique_ptr<MemoryBuffer> OldArchiveBuf = nullptr,
0065 std::optional<bool> IsEC = std::nullopt,
0066 function_ref<void(Error)> Warn = warnToStderr);
0067
0068
0069
0070 Expected<std::unique_ptr<MemoryBuffer>>
0071 writeArchiveToBuffer(ArrayRef<NewArchiveMember> NewMembers,
0072 SymtabWritingMode WriteSymtab, object::Archive::Kind Kind,
0073 bool Deterministic, bool Thin,
0074 function_ref<void(Error)> Warn = warnToStderr);
0075 }
0076
0077 #endif