From 819908e85daddb0023ce90819812fa9d6f1d30f7 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Mon, 2 Nov 2015 21:26:58 +0000 Subject: [PATCH] MachO: support tvOS and watchOS version min commands in llvm-objdump git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251834 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../MachO/darwin-version-min-load-command.s | 5 ++-- tools/llvm-objdump/MachODump.cpp | 29 ++++++++++++++----- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/test/MC/MachO/darwin-version-min-load-command.s b/test/MC/MachO/darwin-version-min-load-command.s index 12432aeac71..17f3784d632 100644 --- a/test/MC/MachO/darwin-version-min-load-command.s +++ b/test/MC/MachO/darwin-version-min-load-command.s @@ -16,9 +16,8 @@ // CHECK-DARWIN-NOT: LC_VERSION_MIN -// FIXME: llvm-objdump doesn't know about WATCHOS and TVOS VERSION_MIN LC yet -// FIXME: llvm-mc -triple x86_64-apple-watchos1.0.0 %s -filetype=obj -o - | llvm-objdump -macho -private-headers - | FileCheck %s --check-prefix=CHECK-WATCHOS -// FIXME: llvm-mc -triple x86_64-apple-tvos8.0.0 %s -filetype=obj -o - | llvm-objdump -macho -private-headers - | FileCheck %s --check-prefix=CHECK-TVOS +// RUN: llvm-mc -triple x86_64-apple-watchos1.0.0 %s -filetype=obj -o - | llvm-objdump -macho -private-headers - | FileCheck %s --check-prefix=CHECK-WATCHOS +// RUN: llvm-mc -triple x86_64-apple-tvos8.0.0 %s -filetype=obj -o - | llvm-objdump -macho -private-headers - | FileCheck %s --check-prefix=CHECK-TVOS // CHECK-WATCHOS: Load command // CHECK-WATCHOS: cmd LC_VERSION_MIN_WATCHOS // CHECK-WATCHOS-NEXT: cmdsize 16 diff --git a/tools/llvm-objdump/MachODump.cpp b/tools/llvm-objdump/MachODump.cpp index 9e31bf21abc..b4a05df21e2 100644 --- a/tools/llvm-objdump/MachODump.cpp +++ b/tools/llvm-objdump/MachODump.cpp @@ -7619,12 +7619,25 @@ static void PrintRpathLoadCommand(MachO::rpath_command rpath, const char *Ptr) { } static void PrintVersionMinLoadCommand(MachO::version_min_command vd) { - if (vd.cmd == MachO::LC_VERSION_MIN_MACOSX) - outs() << " cmd LC_VERSION_MIN_MACOSX\n"; - else if (vd.cmd == MachO::LC_VERSION_MIN_IPHONEOS) - outs() << " cmd LC_VERSION_MIN_IPHONEOS\n"; - else - outs() << " cmd " << vd.cmd << " (?)\n"; + StringRef LoadCmdName; + switch (vd.cmd) { + case MachO::LC_VERSION_MIN_MACOSX: + LoadCmdName = "LC_VERSION_MIN_MACOSX"; + break; + case MachO::LC_VERSION_MIN_IPHONEOS: + LoadCmdName = "LC_VERSION_MIN_IPHONEOS"; + break; + case MachO::LC_VERSION_MIN_TVOS: + LoadCmdName = "LC_VERSION_MIN_TVOS"; + break; + case MachO::LC_VERSION_MIN_WATCHOS: + LoadCmdName = "LC_VERSION_MIN_WATCHOS"; + break; + default: + llvm_unreachable("Unknown version min load command"); + } + + outs() << " cmd " << LoadCmdName << '\n'; outs() << " cmdsize " << vd.cmdsize; if (vd.cmdsize != sizeof(struct MachO::version_min_command)) outs() << " Incorrect size\n"; @@ -8339,7 +8352,9 @@ static void PrintLoadCommands(const MachOObjectFile *Obj, uint32_t filetype, MachO::rpath_command Rpath = Obj->getRpathCommand(Command); PrintRpathLoadCommand(Rpath, Command.Ptr); } else if (Command.C.cmd == MachO::LC_VERSION_MIN_MACOSX || - Command.C.cmd == MachO::LC_VERSION_MIN_IPHONEOS) { + Command.C.cmd == MachO::LC_VERSION_MIN_IPHONEOS || + Command.C.cmd == MachO::LC_VERSION_MIN_TVOS || + Command.C.cmd == MachO::LC_VERSION_MIN_WATCHOS) { MachO::version_min_command Vd = Obj->getVersionMinLoadCommand(Command); PrintVersionMinLoadCommand(Vd); } else if (Command.C.cmd == MachO::LC_SOURCE_VERSION) { -- 2.34.1