mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
6f1978ec1f
This patch threads the virtual file system through dsymutil. Currently there is no good way to find out exactly what files are necessary in order to reproduce a dsymutil link, at least not without knowledge of how dsymutil's internals. My motivation for this change is to add lightweight "reproducers" that automatically gather the input object files through the FileCollectorFileSystem. The files together with the YAML mapping will allow us to transparently reproduce a dsymutil link, even without having to mess with the OSO path prefix. Differential revision: https://reviews.llvm.org/D79376
53 lines
1.6 KiB
C++
53 lines
1.6 KiB
C++
//===-- MachOUtils.h - Mach-o specific helpers for dsymutil --------------===//
|
|
//
|
|
// 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 LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H
|
|
#define LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H
|
|
|
|
#include "SymbolMap.h"
|
|
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/Support/FileSystem.h"
|
|
#include "llvm/Support/VirtualFileSystem.h"
|
|
|
|
#include <string>
|
|
|
|
namespace llvm {
|
|
class MCStreamer;
|
|
class raw_fd_ostream;
|
|
namespace dsymutil {
|
|
class DebugMap;
|
|
struct LinkOptions;
|
|
namespace MachOUtils {
|
|
|
|
struct ArchAndFile {
|
|
std::string Arch;
|
|
std::unique_ptr<llvm::sys::fs::TempFile> File;
|
|
|
|
llvm::Error createTempFile();
|
|
llvm::StringRef path() const;
|
|
|
|
ArchAndFile(StringRef Arch) : Arch(std::string(Arch)) {}
|
|
ArchAndFile(ArchAndFile &&A) = default;
|
|
ArchAndFile &operator=(ArchAndFile &&A) = default;
|
|
~ArchAndFile();
|
|
};
|
|
|
|
bool generateUniversalBinary(SmallVectorImpl<ArchAndFile> &ArchFiles,
|
|
StringRef OutputFileName, const LinkOptions &,
|
|
StringRef SDKPath);
|
|
|
|
bool generateDsymCompanion(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS,
|
|
const DebugMap &DM, SymbolMapTranslator &Translator,
|
|
MCStreamer &MS, raw_fd_ostream &OutFile);
|
|
|
|
std::string getArchName(StringRef Arch);
|
|
} // namespace MachOUtils
|
|
} // namespace dsymutil
|
|
} // namespace llvm
|
|
#endif // LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H
|