1f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar//===-- MachOUtils.h - Mach-o specific helpers for dsymutil  --------------===//
2f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar//
3f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar//                     The LLVM Compiler Infrastructure
4f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar//
5f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// This file is distributed under the University of Illinois Open Source
6f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// License. See LICENSE.TXT for details.
7f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar//
8f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar//===----------------------------------------------------------------------===//
9f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar#ifndef LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H
10f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar#define LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H
11f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar
12f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar#include <string>
13f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar#include "llvm/ADT/StringRef.h"
14f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar
15f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarnamespace llvm {
16f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarclass MCStreamer;
17f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarclass raw_fd_ostream;
18f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarnamespace dsymutil {
19f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarclass DebugMap;
20f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarstruct LinkOptions;
21f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarnamespace MachOUtils {
22f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar
23f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarstruct ArchAndFilename {
24f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar  std::string Arch, Path;
25f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar  ArchAndFilename(StringRef Arch, StringRef Path) : Arch(Arch), Path(Path) {}
26f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar};
27f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar
28f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarbool generateUniversalBinary(SmallVectorImpl<ArchAndFilename> &ArchFiles,
29f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar                             StringRef OutputFileName, const LinkOptions &,
30f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar                             StringRef SDKPath);
31f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar
32f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarbool generateDsymCompanion(const DebugMap &DM, MCStreamer &MS,
33f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar                           raw_fd_ostream &OutFile);
34f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar
35f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainarstd::string getArchName(StringRef Arch);
36f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar}
37f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar}
38f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar}
39f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar#endif // LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H
40