summaryrefslogtreecommitdiff
path: root/tools/llvm-objcopy/MachO/MachOWriter.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/llvm-objcopy/MachO/MachOWriter.h')
-rw-r--r--tools/llvm-objcopy/MachO/MachOWriter.h19
1 files changed, 10 insertions, 9 deletions
diff --git a/tools/llvm-objcopy/MachO/MachOWriter.h b/tools/llvm-objcopy/MachO/MachOWriter.h
index ecf12d62de2c..22abbad56f41 100644
--- a/tools/llvm-objcopy/MachO/MachOWriter.h
+++ b/tools/llvm-objcopy/MachO/MachOWriter.h
@@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===//
#include "../Buffer.h"
+#include "MachOLayoutBuilder.h"
#include "MachOObjcopy.h"
#include "Object.h"
#include "llvm/BinaryFormat/MachO.h"
@@ -22,20 +23,15 @@ class MachOWriter {
Object &O;
bool Is64Bit;
bool IsLittleEndian;
+ uint64_t PageSize;
Buffer &B;
- StringTableBuilder StrTableBuilder{StringTableBuilder::MachO};
+ MachOLayoutBuilder LayoutBuilder;
size_t headerSize() const;
size_t loadCommandsSize() const;
size_t symTableSize() const;
size_t strTableSize() const;
- void updateDySymTab(MachO::macho_load_command &MLC);
- void updateSizeOfCmds();
- void updateSymbolIndexes();
- void constructStringTable();
- Error layout();
-
void writeHeader();
void writeLoadCommands();
template <typename StructType>
@@ -48,11 +44,16 @@ class MachOWriter {
void writeWeakBindInfo();
void writeLazyBindInfo();
void writeExportInfo();
+ void writeIndirectSymbolTable();
+ void writeDataInCodeData();
+ void writeFunctionStartsData();
void writeTail();
public:
- MachOWriter(Object &O, bool Is64Bit, bool IsLittleEndian, Buffer &B)
- : O(O), Is64Bit(Is64Bit), IsLittleEndian(IsLittleEndian), B(B) {}
+ MachOWriter(Object &O, bool Is64Bit, bool IsLittleEndian, uint64_t PageSize,
+ Buffer &B)
+ : O(O), Is64Bit(Is64Bit), IsLittleEndian(IsLittleEndian),
+ PageSize(PageSize), B(B), LayoutBuilder(O, Is64Bit, PageSize) {}
size_t totalSize() const;
Error finalize();