diff options
author | Kevin Enderby <enderby@apple.com> | 2016-11-03 20:51:28 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2016-11-03 20:51:28 +0000 |
commit | 7747cb55dcba83388c4fbce10ec32426b205d090 (patch) | |
tree | 7453e0961adbfa938556181b5142e463a2e2abda /llvm/lib/Object/MachOObjectFile.cpp | |
parent | 8e232573a8ae5da87c51cf03166f668ba361744c (diff) | |
download | bcm5719-llvm-7747cb55dcba83388c4fbce10ec32426b205d090.tar.gz bcm5719-llvm-7747cb55dcba83388c4fbce10ec32426b205d090.zip |
Add support for the ARM_THREAD_STATE64 and
in llvm-objdump for Mach-O files add the printing of the
ARM_THREAD_STATE64 in the same format as
otool-classic(1) on darwin.
To do this the 64-bit ARM general tread state
needed to be defined in include/llvm/Support/MachO.h .
rdar://28985800
llvm-svn: 285967
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/MachOObjectFile.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index 3aec182c0c6..ad52235a50d 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -970,6 +970,25 @@ static Error checkThreadCommand(const MachOObjectFile *Obj, "flavor number " + Twine(nflavor) + " in " + CmdName + " command"); } + } else if (cputype == MachO::CPU_TYPE_ARM64) { + if (flavor == MachO::ARM_THREAD_STATE64) { + if (count != MachO::ARM_THREAD_STATE64_COUNT) + return malformedError("load command " + Twine(LoadCommandIndex) + + " count not ARM_THREAD_STATE64_COUNT for " + "flavor number " + Twine(nflavor) + " which is " + "a ARM_THREAD_STATE64 flavor in " + CmdName + + " command"); + if (state + sizeof(MachO::arm_thread_state64_t) > end) + return malformedError("load command " + Twine(LoadCommandIndex) + + " ARM_THREAD_STATE64 extends past end of " + "command in " + CmdName + " command"); + state += sizeof(MachO::arm_thread_state64_t); + } else { + return malformedError("load command " + Twine(LoadCommandIndex) + + " unknown flavor (" + Twine(flavor) + ") for " + "flavor number " + Twine(nflavor) + " in " + + CmdName + " command"); + } } else if (cputype == MachO::CPU_TYPE_POWERPC) { if (flavor == MachO::PPC_THREAD_STATE) { if (count != MachO::PPC_THREAD_STATE_COUNT) |