1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- //===-- 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();
- };
- struct DwarfRelocationApplicationInfo {
- // The position in the stream that should be patched, starting from the
- // Dwarf's segment file address.
- uint64_t AddressFromDwarfStart;
- int32_t Value;
- // If we should subtract the Dwarf segment's VM address from value before
- // writing it.
- bool ShouldSubtractDwarfVM;
- DwarfRelocationApplicationInfo(uint64_t AddressFromDwarfVM, uint32_t Value,
- bool ShouldSubtractDwarfVM)
- : AddressFromDwarfStart(AddressFromDwarfVM), Value(Value),
- ShouldSubtractDwarfVM(ShouldSubtractDwarfVM) {}
- };
- 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,
- const std::vector<MachOUtils::DwarfRelocationApplicationInfo>
- &RelocationsToApply);
- std::string getArchName(StringRef Arch);
- } // namespace MachOUtils
- } // namespace dsymutil
- } // namespace llvm
- #endif // LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H
|