Frederic Riss | 7a42578 | 2015-08-05 18:27:44 +0000 | [diff] [blame] | 1 | //===-- MachOUtils.h - Mach-o specific helpers for dsymutil --------------===// |
| 2 | // |
| 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file is distributed under the University of Illinois Open Source |
| 6 | // License. See LICENSE.TXT for details. |
| 7 | // |
| 8 | //===----------------------------------------------------------------------===// |
| 9 | #ifndef LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H |
| 10 | #define LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H |
| 11 | |
Jonas Devlieghere | 20767d1 | 2019-01-07 23:27:25 +0000 | [diff] [blame] | 12 | #include "SymbolMap.h" |
| 13 | |
Frederic Riss | 7a42578 | 2015-08-05 18:27:44 +0000 | [diff] [blame] | 14 | #include "llvm/ADT/StringRef.h" |
Jonas Devlieghere | 58d4a39 | 2018-07-29 14:56:15 +0000 | [diff] [blame] | 15 | #include "llvm/Support/FileSystem.h" |
Jonas Devlieghere | 20767d1 | 2019-01-07 23:27:25 +0000 | [diff] [blame] | 16 | |
Jonas Devlieghere | 3ad0c5a | 2018-02-22 11:32:51 +0000 | [diff] [blame] | 17 | #include <string> |
Frederic Riss | 7a42578 | 2015-08-05 18:27:44 +0000 | [diff] [blame] | 18 | |
| 19 | namespace llvm { |
Frederic Riss | ef8ad01 | 2015-09-02 16:49:13 +0000 | [diff] [blame] | 20 | class MCStreamer; |
| 21 | class raw_fd_ostream; |
Frederic Riss | 7a42578 | 2015-08-05 18:27:44 +0000 | [diff] [blame] | 22 | namespace dsymutil { |
Frederic Riss | ef8ad01 | 2015-09-02 16:49:13 +0000 | [diff] [blame] | 23 | class DebugMap; |
Frederic Riss | 7a42578 | 2015-08-05 18:27:44 +0000 | [diff] [blame] | 24 | struct LinkOptions; |
| 25 | namespace MachOUtils { |
| 26 | |
Jonas Devlieghere | 58d4a39 | 2018-07-29 14:56:15 +0000 | [diff] [blame] | 27 | struct ArchAndFile { |
| 28 | std::string Arch; |
| 29 | // Optional because TempFile has no default constructor. |
| 30 | Optional<llvm::sys::fs::TempFile> File; |
| 31 | |
| 32 | llvm::Error createTempFile(); |
| 33 | llvm::StringRef path() const; |
| 34 | |
| 35 | ArchAndFile(StringRef Arch) : Arch(Arch) {} |
| 36 | ArchAndFile(ArchAndFile &&A) = default; |
| 37 | ~ArchAndFile(); |
Frederic Riss | 7a42578 | 2015-08-05 18:27:44 +0000 | [diff] [blame] | 38 | }; |
| 39 | |
Jonas Devlieghere | 58d4a39 | 2018-07-29 14:56:15 +0000 | [diff] [blame] | 40 | bool generateUniversalBinary(SmallVectorImpl<ArchAndFile> &ArchFiles, |
Frederic Riss | a642d2c | 2015-10-08 22:35:53 +0000 | [diff] [blame] | 41 | StringRef OutputFileName, const LinkOptions &, |
| 42 | StringRef SDKPath); |
Frederic Riss | 3abc9b6 | 2015-08-25 23:15:26 +0000 | [diff] [blame] | 43 | |
Jonas Devlieghere | 20767d1 | 2019-01-07 23:27:25 +0000 | [diff] [blame] | 44 | bool generateDsymCompanion(const DebugMap &DM, SymbolMapTranslator &Translator, |
| 45 | MCStreamer &MS, raw_fd_ostream &OutFile); |
Frederic Riss | ef8ad01 | 2015-09-02 16:49:13 +0000 | [diff] [blame] | 46 | |
Frederic Riss | 3abc9b6 | 2015-08-25 23:15:26 +0000 | [diff] [blame] | 47 | std::string getArchName(StringRef Arch); |
Jonas Devlieghere | 3ad0c5a | 2018-02-22 11:32:51 +0000 | [diff] [blame] | 48 | } // namespace MachOUtils |
| 49 | } // namespace dsymutil |
| 50 | } // namespace llvm |
Frederic Riss | 7a42578 | 2015-08-05 18:27:44 +0000 | [diff] [blame] | 51 | #endif // LLVM_TOOLS_DSYMUTIL_MACHOUTILS_H |