aboutsummaryrefslogtreecommitdiff
path: root/tools/llvm-readobj/MachODumper.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2015-10-28 22:36:05 +0000
committerTim Northover <tnorthover@apple.com>2015-10-28 22:36:05 +0000
commit856a0380260e2735f51b059822674bd47961c050 (patch)
treeadcc27d52f70ca3ef84f2728c1623e6757803612 /tools/llvm-readobj/MachODumper.cpp
parentbcb1df36b725ca52eedbecd6c331152e59d798a5 (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.cpp68
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);
}
}