diff options
author | Tim Northover <tnorthover@apple.com> | 2015-10-28 22:36:05 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2015-10-28 22:36:05 +0000 |
commit | 856a0380260e2735f51b059822674bd47961c050 (patch) | |
tree | adcc27d52f70ca3ef84f2728c1623e6757803612 /tools/llvm-readobj/MachODumper.cpp | |
parent | bcb1df36b725ca52eedbecd6c331152e59d798a5 (diff) |
ARM: support .watchos_version_min and .tvos_version_min.
These MachO file directives are used by linkers and other tools to provide
compatibility information, much like the existing .ios_version_min and
.macosx_version_min.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251569 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-readobj/MachODumper.cpp')
-rw-r--r-- | tools/llvm-readobj/MachODumper.cpp | 68 |
1 files changed, 38 insertions, 30 deletions
diff --git a/tools/llvm-readobj/MachODumper.cpp b/tools/llvm-readobj/MachODumper.cpp index ab77fdcf136..58d2c9fca47 100644 --- a/tools/llvm-readobj/MachODumper.cpp +++ b/tools/llvm-readobj/MachODumper.cpp @@ -694,38 +694,46 @@ void MachODumper::printMachODataInCode() { void MachODumper::printMachOVersionMin() { for (const auto &Load : Obj->load_commands()) { - if (Load.C.cmd == MachO::LC_VERSION_MIN_MACOSX || - Load.C.cmd == MachO::LC_VERSION_MIN_IPHONEOS) { - MachO::version_min_command VMC = Obj->getVersionMinLoadCommand(Load); - DictScope Group(W, "MinVersion"); - StringRef Cmd; - if (Load.C.cmd == MachO::LC_VERSION_MIN_MACOSX) - Cmd = "LC_VERSION_MIN_MACOSX"; - else - Cmd = "LC_VERSION_MIN_IPHONEOS"; - W.printString("Cmd", Cmd); - W.printNumber("Size", VMC.cmdsize); - SmallString<32> Version; - Version = utostr(MachOObjectFile::getVersionMinMajor(VMC, false)) + "." + - utostr(MachOObjectFile::getVersionMinMinor(VMC, false)); - uint32_t Update = MachOObjectFile::getVersionMinUpdate(VMC, false); + StringRef Cmd; + switch (Load.C.cmd) { + case MachO::LC_VERSION_MIN_MACOSX: + Cmd = "LC_VERSION_MIN_MACOSX"; + break; + case MachO::LC_VERSION_MIN_IPHONEOS: + Cmd = "LC_VERSION_MIN_IPHONEOS"; + break; + case MachO::LC_VERSION_MIN_TVOS: + Cmd = "LC_VERSION_MIN_TVOS"; + break; + case MachO::LC_VERSION_MIN_WATCHOS: + Cmd = "LC_VERSION_MIN_WATCHOS"; + break; + default: + continue; + } + + MachO::version_min_command VMC = Obj->getVersionMinLoadCommand(Load); + DictScope Group(W, "MinVersion"); + W.printString("Cmd", Cmd); + W.printNumber("Size", VMC.cmdsize); + SmallString<32> Version; + Version = utostr(MachOObjectFile::getVersionMinMajor(VMC, false)) + "." + + utostr(MachOObjectFile::getVersionMinMinor(VMC, false)); + uint32_t Update = MachOObjectFile::getVersionMinUpdate(VMC, false); + if (Update != 0) + Version += "." + utostr(MachOObjectFile::getVersionMinUpdate(VMC, false)); + W.printString("Version", Version); + SmallString<32> SDK; + if (VMC.sdk == 0) + SDK = "n/a"; + else { + SDK = utostr(MachOObjectFile::getVersionMinMajor(VMC, true)) + "." + + utostr(MachOObjectFile::getVersionMinMinor(VMC, true)); + uint32_t Update = MachOObjectFile::getVersionMinUpdate(VMC, true); if (Update != 0) - Version += "." + utostr(MachOObjectFile::getVersionMinUpdate(VMC, - false)); - W.printString("Version", Version); - SmallString<32> SDK; - if (VMC.sdk == 0) - SDK = "n/a"; - else { - SDK = utostr(MachOObjectFile::getVersionMinMajor(VMC, true)) + "." + - utostr(MachOObjectFile::getVersionMinMinor(VMC, true)); - uint32_t Update = MachOObjectFile::getVersionMinUpdate(VMC, true); - if (Update != 0) - SDK += "." + utostr(MachOObjectFile::getVersionMinUpdate(VMC, - true)); - } - W.printString("SDK", SDK); + SDK += "." + utostr(MachOObjectFile::getVersionMinUpdate(VMC, true)); } + W.printString("SDK", SDK); } } |