#include "llvm/ADT/None.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Triple.h"
} // end anonymous namespace
-static Error
-malformedError(Twine Msg) {
- std::string StringMsg = "truncated or malformed object (" + Msg.str() + ")";
- return make_error<GenericBinaryError>(std::move(StringMsg),
+static Error malformedError(const Twine &Msg) {
+ return make_error<GenericBinaryError>("truncated or malformed object (" +
+ Msg + ")",
object_error::parse_failed);
}
const char *error;
uint64_t ExportInfoSize = readULEB128(State.Current, &error);
if (error) {
- *E = malformedError("export info size " + Twine(error) + " in export trie "
- "data at node: 0x" + utohexstr(offset));
+ *E = malformedError("export info size " + Twine(error) +
+ " in export trie data at node: 0x" +
+ Twine::utohexstr(offset));
moveToEnd();
return;
}
State.IsExportNode = (ExportInfoSize != 0);
const uint8_t* Children = State.Current + ExportInfoSize;
if (Children > Trie.end()) {
- *E = malformedError("export info size: 0x" + utohexstr(ExportInfoSize) +
- " in export trie data at node: 0x" + utohexstr(offset) +
- " too big and extends past end of trie data");
+ *E = malformedError(
+ "export info size: 0x" + Twine::utohexstr(ExportInfoSize) +
+ " in export trie data at node: 0x" + Twine::utohexstr(offset) +
+ " too big and extends past end of trie data");
moveToEnd();
return;
}
const uint8_t *ExportStart = State.Current;
State.Flags = readULEB128(State.Current, &error);
if (error) {
- *E = malformedError("flags " + Twine(error) + " in export trie data at "
- "node: 0x" + utohexstr(offset));
+ *E = malformedError("flags " + Twine(error) +
+ " in export trie data at node: 0x" +
+ Twine::utohexstr(offset));
moveToEnd();
return;
}
(Kind != MachO::EXPORT_SYMBOL_FLAGS_KIND_REGULAR &&
Kind != MachO::EXPORT_SYMBOL_FLAGS_KIND_ABSOLUTE &&
Kind != MachO::EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL)) {
- *E = malformedError("unsupported exported symbol kind: "
- + Twine((int)Kind) + " in flags: 0x" + utohexstr(State.Flags) +
- " in export trie data at node: 0x" + utohexstr(offset));
+ *E = malformedError(
+ "unsupported exported symbol kind: " + Twine((int)Kind) +
+ " in flags: 0x" + Twine::utohexstr(State.Flags) +
+ " in export trie data at node: 0x" + Twine::utohexstr(offset));
moveToEnd();
return;
}
State.Other = readULEB128(State.Current, &error); // dylib ordinal
if (error) {
*E = malformedError("dylib ordinal of re-export " + Twine(error) +
- " in export trie data at node: 0x" + utohexstr(offset));
+ " in export trie data at node: 0x" +
+ Twine::utohexstr(offset));
moveToEnd();
return;
}
if (O != nullptr) {
if (State.Other > O->getLibraryCount()) {
- *E = malformedError("bad library ordinal: " + Twine((int)State.Other)
- + " (max " + Twine((int)O->getLibraryCount()) + ") in export "
- "trie data at node: 0x" + utohexstr(offset));
+ *E = malformedError(
+ "bad library ordinal: " + Twine((int)State.Other) + " (max " +
+ Twine((int)O->getLibraryCount()) +
+ ") in export trie data at node: 0x" + Twine::utohexstr(offset));
moveToEnd();
return;
}
const uint8_t *End = State.Current + 1;
if (End >= Trie.end()) {
*E = malformedError("import name of re-export in export trie data at "
- "node: 0x" + utohexstr(offset) + " starts past end of trie "
- "data");
+ "node: 0x" +
+ Twine::utohexstr(offset) +
+ " starts past end of trie data");
moveToEnd();
return;
}
End++;
if (*End != '\0') {
*E = malformedError("import name of re-export in export trie data at "
- "node: 0x" + utohexstr(offset) + " extends past end of trie "
- "data");
+ "node: 0x" +
+ Twine::utohexstr(offset) +
+ " extends past end of trie data");
moveToEnd();
return;
}
} else {
State.Address = readULEB128(State.Current, &error);
if (error) {
- *E = malformedError("address " + Twine(error) + " in export trie data "
- "at node: 0x" + utohexstr(offset));
+ *E = malformedError("address " + Twine(error) +
+ " in export trie data at node: 0x" +
+ Twine::utohexstr(offset));
moveToEnd();
return;
}
State.Other = readULEB128(State.Current, &error);
if (error) {
*E = malformedError("resolver of stub and resolver " + Twine(error) +
- " in export trie data at node: 0x" + utohexstr(offset));
+ " in export trie data at node: 0x" +
+ Twine::utohexstr(offset));
moveToEnd();
return;
}
}
}
if(ExportStart + ExportInfoSize != State.Current) {
- *E = malformedError("inconsistant export info size: 0x" +
- utohexstr(ExportInfoSize) + " where actual size was: 0x" +
- utohexstr(State.Current - ExportStart) + " in export trie data "
- "at node: 0x" + utohexstr(offset));
+ *E = malformedError(
+ "inconsistant export info size: 0x" +
+ Twine::utohexstr(ExportInfoSize) + " where actual size was: 0x" +
+ Twine::utohexstr(State.Current - ExportStart) +
+ " in export trie data at node: 0x" + Twine::utohexstr(offset));
moveToEnd();
return;
}
State.ChildCount = *Children;
if (State.ChildCount != 0 && Children + 1 >= Trie.end()) {
*E = malformedError("byte for count of childern in export trie data at "
- "node: 0x" + utohexstr(offset) + " extends past end of trie data");
+ "node: 0x" +
+ Twine::utohexstr(offset) +
+ " extends past end of trie data");
moveToEnd();
return;
}
}
if (Top.Current >= Trie.end()) {
*E = malformedError("edge sub-string in export trie data at node: 0x" +
- utohexstr(Top.Start - Trie.begin()) + " for child #" +
- Twine((int)Top.NextChildIndex) + " extends past end of trie data");
+ Twine::utohexstr(Top.Start - Trie.begin()) +
+ " for child #" + Twine((int)Top.NextChildIndex) +
+ " extends past end of trie data");
moveToEnd();
return;
}
uint64_t childNodeIndex = readULEB128(Top.Current, &error);
if (error) {
*E = malformedError("child node offset " + Twine(error) +
- " in export trie data at node: 0x" +
- utohexstr(Top.Start - Trie.begin()));
+ " in export trie data at node: 0x" +
+ Twine::utohexstr(Top.Start - Trie.begin()));
moveToEnd();
return;
}
for (const NodeState &node : nodes()) {
if (node.Start == Trie.begin() + childNodeIndex){
*E = malformedError("loop in childern in export trie data at node: 0x" +
- utohexstr(Top.Start - Trie.begin()) + " back to node: 0x" +
- utohexstr(childNodeIndex));
+ Twine::utohexstr(Top.Start - Trie.begin()) +
+ " back to node: 0x" +
+ Twine::utohexstr(childNodeIndex));
moveToEnd();
return;
}
}
if (!Stack.back().IsExportNode) {
*E = malformedError("node is not an export node in export trie data at "
- "node: 0x" + utohexstr(Stack.back().Start - Trie.begin()));
+ "node: 0x" +
+ Twine::utohexstr(Stack.back().Start - Trie.begin()));
moveToEnd();
return;
}
assert(!Stack.empty() && "ExportEntry::moveNext() with empty node stack");
if (!Stack.back().IsExportNode) {
*E = malformedError("node is not an export node in export trie data at "
- "node: 0x" + utohexstr(Stack.back().Start - Trie.begin()));
+ "node: 0x" +
+ Twine::utohexstr(Stack.back().Start - Trie.begin()));
moveToEnd();
return;
}
case MachO::REBASE_OPCODE_SET_TYPE_IMM:
RebaseType = ImmValue;
if (RebaseType > MachO::REBASE_TYPE_TEXT_PCREL32) {
- *E = malformedError("for REBASE_OPCODE_SET_TYPE_IMM bad bind type: " +
- Twine((int)RebaseType) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
- moveToEnd();
- return;
+ *E = malformedError("for REBASE_OPCODE_SET_TYPE_IMM bad bind type: " +
+ Twine((int)RebaseType) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
+ moveToEnd();
+ return;
}
DEBUG_WITH_TYPE(
"mach-o-rebase",
SegmentOffset = readULEB128(&error);
if (error) {
*E = malformedError("for REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
true);
if (error) {
*E = malformedError("for REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
case MachO::REBASE_OPCODE_ADD_ADDR_ULEB:
SegmentOffset += readULEB128(&error);
if (error) {
- *E = malformedError("for REBASE_OPCODE_ADD_ADDR_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError("for REBASE_OPCODE_ADD_ADDR_ULEB " + Twine(error) +
+ " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->RebaseEntryCheckSegAndOffset(SegmentIndex, SegmentOffset,
true);
if (error) {
- *E = malformedError("for REBASE_OPCODE_ADD_ADDR_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError("for REBASE_OPCODE_ADD_ADDR_ULEB " + Twine(error) +
+ " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
true);
if (error) {
*E = malformedError("for REBASE_OPCODE_ADD_ADDR_IMM_SCALED " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->RebaseEntryCheckSegAndOffset(SegmentIndex, SegmentOffset,
false);
if (error) {
- *E = malformedError("for REBASE_OPCODE_ADD_ADDR_IMM_SCALED "
- " (after adding immediate times the pointer size) " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E =
+ malformedError("for REBASE_OPCODE_ADD_ADDR_IMM_SCALED "
+ " (after adding immediate times the pointer size) " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
true);
if (error) {
*E = malformedError("for REBASE_OPCODE_DO_REBASE_IMM_TIMES " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->RebaseEntryCheckCountAndSkip(Count, Skip, PointerSize,
SegmentIndex, SegmentOffset);
if (error) {
- *E = malformedError("for REBASE_OPCODE_DO_REBASE_IMM_TIMES "
- + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError("for REBASE_OPCODE_DO_REBASE_IMM_TIMES " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
true);
if (error) {
*E = malformedError("for REBASE_OPCODE_DO_REBASE_ULEB_TIMES " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
Count = readULEB128(&error);
if (error) {
*E = malformedError("for REBASE_OPCODE_DO_REBASE_ULEB_TIMES " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->RebaseEntryCheckCountAndSkip(Count, Skip, PointerSize,
SegmentIndex, SegmentOffset);
if (error) {
- *E = malformedError("for REBASE_OPCODE_DO_REBASE_ULEB_TIMES "
- + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError("for REBASE_OPCODE_DO_REBASE_ULEB_TIMES " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
true);
if (error) {
*E = malformedError("for REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
Skip = readULEB128(&error);
if (error) {
*E = malformedError("for REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->RebaseEntryCheckCountAndSkip(Count, Skip, PointerSize,
SegmentIndex, SegmentOffset);
if (error) {
- *E = malformedError("for REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB "
- + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError("for REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
true);
if (error) {
*E = malformedError("for REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_"
- "ULEB " + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "ULEB " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
Count = readULEB128(&error);
if (error) {
*E = malformedError("for REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_"
- "ULEB " + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "ULEB " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
Skip = readULEB128(&error);
if (error) {
*E = malformedError("for REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_"
- "ULEB " + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "ULEB " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
SegmentIndex, SegmentOffset);
if (error) {
*E = malformedError("for REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_"
- "ULEB " + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "ULEB " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
return;
default:
*E = malformedError("bad rebase info (bad opcode value 0x" +
- utohexstr(Opcode) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine::utohexstr(Opcode) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
case MachO::BIND_OPCODE_SET_DYLIB_ORDINAL_IMM:
if (TableKind == Kind::Weak) {
*E = malformedError("BIND_OPCODE_SET_DYLIB_ORDINAL_IMM not allowed in "
- "weak bind table for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "weak bind table for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
LibraryOrdinalSet = true;
if (ImmValue > O->getLibraryCount()) {
*E = malformedError("for BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB bad "
- "library ordinal: " + Twine((int)ImmValue) + " (max " +
- Twine((int)O->getLibraryCount()) + ") for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "library ordinal: " +
+ Twine((int)ImmValue) + " (max " +
+ Twine((int)O->getLibraryCount()) +
+ ") for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
case MachO::BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB:
if (TableKind == Kind::Weak) {
*E = malformedError("BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB not allowed in "
- "weak bind table for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "weak bind table for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
LibraryOrdinalSet = true;
if (error) {
*E = malformedError("for BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
if (Ordinal > (int)O->getLibraryCount()) {
*E = malformedError("for BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB bad "
- "library ordinal: " + Twine((int)Ordinal) + " (max " +
- Twine((int)O->getLibraryCount()) + ") for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "library ordinal: " +
+ Twine((int)Ordinal) + " (max " +
+ Twine((int)O->getLibraryCount()) +
+ ") for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
case MachO::BIND_OPCODE_SET_DYLIB_SPECIAL_IMM:
if (TableKind == Kind::Weak) {
*E = malformedError("BIND_OPCODE_SET_DYLIB_SPECIAL_IMM not allowed in "
- "weak bind table for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "weak bind table for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
Ordinal = SignExtended;
if (Ordinal < MachO::BIND_SPECIAL_DYLIB_FLAT_LOOKUP) {
*E = malformedError("for BIND_OPCODE_SET_DYLIB_SPECIAL_IMM unknown "
- "special ordinal: " + Twine((int)Ordinal) + " for opcode at: "
- "0x" + utohexstr(OpcodeStart - Opcodes.begin()));
+ "special ordinal: " +
+ Twine((int)Ordinal) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
++Ptr;
}
if (Ptr == Opcodes.end()) {
- *E = malformedError("for BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM "
- "symbol name extends past opcodes for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
- moveToEnd();
- return;
+ *E = malformedError(
+ "for BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM "
+ "symbol name extends past opcodes for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
+ moveToEnd();
+ return;
}
SymbolName = StringRef(reinterpret_cast<const char*>(SymStart),
Ptr-SymStart);
case MachO::BIND_OPCODE_SET_TYPE_IMM:
BindType = ImmValue;
if (ImmValue > MachO::BIND_TYPE_TEXT_PCREL32) {
- *E = malformedError("for BIND_OPCODE_SET_TYPE_IMM bad bind type: " +
- Twine((int)ImmValue) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
- moveToEnd();
- return;
+ *E = malformedError("for BIND_OPCODE_SET_TYPE_IMM bad bind type: " +
+ Twine((int)ImmValue) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
+ moveToEnd();
+ return;
}
DEBUG_WITH_TYPE(
"mach-o-bind",
case MachO::BIND_OPCODE_SET_ADDEND_SLEB:
Addend = readSLEB128(&error);
if (error) {
- *E = malformedError("for BIND_OPCODE_SET_ADDEND_SLEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError("for BIND_OPCODE_SET_ADDEND_SLEB " + Twine(error) +
+ " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
SegmentOffset = readULEB128(&error);
if (error) {
*E = malformedError("for BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->BindEntryCheckSegAndOffset(SegmentIndex, SegmentOffset, true);
if (error) {
*E = malformedError("for BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
case MachO::BIND_OPCODE_ADD_ADDR_ULEB:
SegmentOffset += readULEB128(&error);
if (error) {
- *E = malformedError("for BIND_OPCODE_ADD_ADDR_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError("for BIND_OPCODE_ADD_ADDR_ULEB " + Twine(error) +
+ " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->BindEntryCheckSegAndOffset(SegmentIndex, SegmentOffset, true);
if (error) {
- *E = malformedError("for BIND_OPCODE_ADD_ADDR_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError("for BIND_OPCODE_ADD_ADDR_ULEB " + Twine(error) +
+ " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->BindEntryCheckSegAndOffset(SegmentIndex, SegmentOffset, true);
if (error) {
*E = malformedError("for BIND_OPCODE_DO_BIND " + Twine(error) +
- " for opcode at: 0x" + utohexstr(OpcodeStart - Opcodes.begin()));
+ " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
if (SymbolName == StringRef()) {
- *E = malformedError("for BIND_OPCODE_DO_BIND missing preceding "
- "BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError(
+ "for BIND_OPCODE_DO_BIND missing preceding "
+ "BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
if (!LibraryOrdinalSet && TableKind != Kind::Weak) {
- *E = malformedError("for BIND_OPCODE_DO_BIND missing preceding "
- "BIND_OPCODE_SET_DYLIB_ORDINAL_* for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E =
+ malformedError("for BIND_OPCODE_DO_BIND missing preceding "
+ "BIND_OPCODE_SET_DYLIB_ORDINAL_* for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
case MachO::BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB:
if (TableKind == Kind::Lazy) {
*E = malformedError("BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB not allowed in "
- "lazy bind table for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "lazy bind table for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->BindEntryCheckSegAndOffset(SegmentIndex, SegmentOffset, true);
if (error) {
*E = malformedError("for BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
if (SymbolName == StringRef()) {
- *E = malformedError("for BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB missing "
- "preceding BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM for opcode "
- "at: 0x" + utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError(
+ "for BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB missing "
+ "preceding BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM for opcode "
+ "at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
if (!LibraryOrdinalSet && TableKind != Kind::Weak) {
- *E = malformedError("for BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB missing "
- "preceding BIND_OPCODE_SET_DYLIB_ORDINAL_* for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError(
+ "for BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB missing "
+ "preceding BIND_OPCODE_SET_DYLIB_ORDINAL_* for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
AdvanceAmount = readULEB128(&error) + PointerSize;
if (error) {
*E = malformedError("for BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
AdvanceAmount, false);
if (error) {
*E = malformedError("for BIND_OPCODE_ADD_ADDR_ULEB (after adding "
- "ULEB) " + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "ULEB) " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
case MachO::BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED:
if (TableKind == Kind::Lazy) {
*E = malformedError("BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED not "
- "allowed in lazy bind table for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "allowed in lazy bind table for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->BindEntryCheckSegAndOffset(SegmentIndex, SegmentOffset, true);
if (error) {
*E = malformedError("for BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
if (SymbolName == StringRef()) {
- *E = malformedError("for BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED "
- "missing preceding BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM for "
- "opcode at: 0x" + utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError(
+ "for BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED "
+ "missing preceding BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM for "
+ "opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
if (!LibraryOrdinalSet && TableKind != Kind::Weak) {
- *E = malformedError("for BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED "
- "missing preceding BIND_OPCODE_SET_DYLIB_ORDINAL_* for opcode "
- "at: 0x" + utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError(
+ "for BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED "
+ "missing preceding BIND_OPCODE_SET_DYLIB_ORDINAL_* for opcode "
+ "at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->BindEntryCheckSegAndOffset(SegmentIndex, SegmentOffset +
AdvanceAmount, false);
if (error) {
- *E = malformedError("for BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED "
- " (after adding immediate times the pointer size) " +
- Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E =
+ malformedError("for BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED "
+ " (after adding immediate times the pointer size) " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
case MachO::BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB:
if (TableKind == Kind::Lazy) {
*E = malformedError("BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB not "
- "allowed in lazy bind table for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ "allowed in lazy bind table for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
RemainingLoopCount = 0;
if (error) {
*E = malformedError("for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB "
- " (count value) " + Twine(error) + " for opcode at"
- ": 0x" + utohexstr(OpcodeStart - Opcodes.begin()));
+ " (count value) " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
AdvanceAmount = Skip + PointerSize;
if (error) {
*E = malformedError("for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB "
- " (skip value) " + Twine(error) + " for opcode at"
- ": 0x" + utohexstr(OpcodeStart - Opcodes.begin()));
+ " (skip value) " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->BindEntryCheckSegAndOffset(SegmentIndex, SegmentOffset, true);
if (error) {
- *E = malformedError("for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB "
- + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E =
+ malformedError("for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
if (SymbolName == StringRef()) {
- *E = malformedError("for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB "
- "missing preceding BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM for "
- "opcode at: 0x" + utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError(
+ "for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB "
+ "missing preceding BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM for "
+ "opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
if (!LibraryOrdinalSet && TableKind != Kind::Weak) {
- *E = malformedError("for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB "
- "missing preceding BIND_OPCODE_SET_DYLIB_ORDINAL_* for opcode "
- "at: 0x" + utohexstr(OpcodeStart - Opcodes.begin()));
+ *E = malformedError(
+ "for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB "
+ "missing preceding BIND_OPCODE_SET_DYLIB_ORDINAL_* for opcode "
+ "at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
error = O->BindEntryCheckCountAndSkip(Count, Skip, PointerSize,
SegmentIndex, SegmentOffset);
if (error) {
- *E = malformedError("for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB "
- + Twine(error) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ *E =
+ malformedError("for BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB " +
+ Twine(error) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}
return;
default:
*E = malformedError("bad bind info (bad opcode value 0x" +
- utohexstr(Opcode) + " for opcode at: 0x" +
- utohexstr(OpcodeStart - Opcodes.begin()));
+ Twine::utohexstr(Opcode) + " for opcode at: 0x" +
+ Twine::utohexstr(OpcodeStart - Opcodes.begin()));
moveToEnd();
return;
}