diff options
author | Steven Wu <stevenwu@apple.com> | 2017-01-23 20:07:55 +0000 |
---|---|---|
committer | Steven Wu <stevenwu@apple.com> | 2017-01-23 20:07:55 +0000 |
commit | 6d5a027d715e4b9b3b94c5ff57faa7c85ad3644c (patch) | |
tree | 92b797579752b490cb78ec36fc64a4896532bda4 /tools/llvm-readobj/MachODumper.cpp | |
parent | 2394101f1dce15c422f7e9bf5d5fa43978e1a72f (diff) |
Add LC_BUILD_VERSION load command
Summary:
Add a new load command LC_BUILD_VERSION. It is a generic version of
LC_*_VERSION_MIN load_command used on Apple platforms. Instead of having
a seperate load command for each platform, LC_BUILD_VERSION is recording
platform info as an enum. It also records SDK version, min_os, and tools
that used to build the binary.
rdar://problem/29781291
Reviewers: enderby
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29044
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292824 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-readobj/MachODumper.cpp')
-rw-r--r-- | tools/llvm-readobj/MachODumper.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/tools/llvm-readobj/MachODumper.cpp b/tools/llvm-readobj/MachODumper.cpp index 01b074170ba..39e90927993 100644 --- a/tools/llvm-readobj/MachODumper.cpp +++ b/tools/llvm-readobj/MachODumper.cpp @@ -713,12 +713,30 @@ void MachODumper::printMachOVersionMin() { case MachO::LC_VERSION_MIN_WATCHOS: Cmd = "LC_VERSION_MIN_WATCHOS"; break; + case MachO::LC_BUILD_VERSION: + Cmd = "LC_BUILD_VERSION"; + break; default: continue; } - MachO::version_min_command VMC = Obj->getVersionMinLoadCommand(Load); DictScope Group(W, "MinVersion"); + // Handle LC_BUILD_VERSION. + if (Load.C.cmd == MachO::LC_BUILD_VERSION) { + MachO::build_version_command BVC = Obj->getBuildVersionLoadCommand(Load); + W.printString("Cmd", Cmd); + W.printNumber("Size", BVC.cmdsize); + W.printString("Platform", + MachOObjectFile::getBuildPlatform(BVC.platform)); + W.printString("Version", MachOObjectFile::getVersionString(BVC.minos)); + if (BVC.sdk) + W.printString("SDK", MachOObjectFile::getVersionString(BVC.sdk)); + else + W.printString("SDK", StringRef("n/a")); + continue; + } + + MachO::version_min_command VMC = Obj->getVersionMinLoadCommand(Load); W.printString("Cmd", Cmd); W.printNumber("Size", VMC.cmdsize); SmallString<32> Version; |