mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 03:53:04 +02:00
f2fcc61612
Summary: Use the filepath used to open the archive member as the archive member name instead of the file basename. This path might be absolute or relative. This is important because the archive member name will show up in the PDB, and we want our PDBs to look as much like MSVC's as possible. This also helps avoid an issue in our PDB module descriptor writing code, which assumes that all module names are unique. Relative paths still aren't guaranteed to be unique, but they're much better than basenames, which definitely aren't unique. Reviewers: ruiu, zturner Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D33575 llvm-svn: 305223
47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
//===- ArchiveWriter.h - ar archive file format writer ----------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Declares the writeArchive function for writing an archive file.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_OBJECT_ARCHIVEWRITER_H
|
|
#define LLVM_OBJECT_ARCHIVEWRITER_H
|
|
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/Object/Archive.h"
|
|
#include "llvm/Support/FileSystem.h"
|
|
|
|
namespace llvm {
|
|
|
|
struct NewArchiveMember {
|
|
std::unique_ptr<MemoryBuffer> Buf;
|
|
StringRef MemberName;
|
|
sys::TimePoint<std::chrono::seconds> ModTime;
|
|
unsigned UID = 0, GID = 0, Perms = 0644;
|
|
|
|
bool IsNew = false;
|
|
NewArchiveMember() = default;
|
|
NewArchiveMember(MemoryBufferRef BufRef);
|
|
|
|
static Expected<NewArchiveMember>
|
|
getOldMember(const object::Archive::Child &OldMember, bool Deterministic);
|
|
|
|
static Expected<NewArchiveMember> getFile(StringRef FileName,
|
|
bool Deterministic);
|
|
};
|
|
|
|
std::pair<StringRef, std::error_code>
|
|
writeArchive(StringRef ArcName, std::vector<NewArchiveMember> &NewMembers,
|
|
bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic,
|
|
bool Thin, std::unique_ptr<MemoryBuffer> OldArchiveBuf = nullptr);
|
|
}
|
|
|
|
#endif
|