summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/test/tools/llvm-objcopy/MachO/Inputs/min_iphoneos_version_lc.yaml15
-rw-r--r--llvm/test/tools/llvm-objcopy/MachO/Inputs/min_macos_version_lc.yaml15
-rw-r--r--llvm/test/tools/llvm-objcopy/MachO/Inputs/min_tvos_version_lc.yaml15
-rw-r--r--llvm/test/tools/llvm-objcopy/MachO/Inputs/min_watchos_version_lc.yaml15
-rw-r--r--llvm/test/tools/llvm-objcopy/MachO/min-version-load-commands.test20
-rw-r--r--llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp3
6 files changed, 83 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_iphoneos_version_lc.yaml b/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_iphoneos_version_lc.yaml
new file mode 100644
index 00000000000..2ed4ebaa3be
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_iphoneos_version_lc.yaml
@@ -0,0 +1,15 @@
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACE
+ cputype: 0x0000000C
+ cpusubtype: 0x00000009
+ filetype: 0x00000001
+ ncmds: 1
+ sizeofcmds: 16
+ flags: 0x00002000
+LoadCommands:
+ - cmd: LC_VERSION_MIN_IPHONEOS
+ cmdsize: 16
+ version: 327680
+ sdk: 0
+...
diff --git a/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_macos_version_lc.yaml b/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_macos_version_lc.yaml
new file mode 100644
index 00000000000..7787d54c260
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_macos_version_lc.yaml
@@ -0,0 +1,15 @@
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACE
+ cputype: 0x0000000C
+ cpusubtype: 0x00000009
+ filetype: 0x00000001
+ ncmds: 1
+ sizeofcmds: 16
+ flags: 0x00002000
+LoadCommands:
+ - cmd: LC_VERSION_MIN_MACOSX
+ cmdsize: 16
+ version: 327680
+ sdk: 0
+...
diff --git a/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_tvos_version_lc.yaml b/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_tvos_version_lc.yaml
new file mode 100644
index 00000000000..64eb77bc8c5
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_tvos_version_lc.yaml
@@ -0,0 +1,15 @@
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACE
+ cputype: 0x0000000C
+ cpusubtype: 0x00000009
+ filetype: 0x00000001
+ ncmds: 1
+ sizeofcmds: 16
+ flags: 0x00002000
+LoadCommands:
+ - cmd: LC_VERSION_MIN_TVOS
+ cmdsize: 16
+ version: 327680
+ sdk: 0
+...
diff --git a/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_watchos_version_lc.yaml b/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_watchos_version_lc.yaml
new file mode 100644
index 00000000000..27f1c78d85b
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/MachO/Inputs/min_watchos_version_lc.yaml
@@ -0,0 +1,15 @@
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACE
+ cputype: 0x0000000C
+ cpusubtype: 0x00000009
+ filetype: 0x00000001
+ ncmds: 1
+ sizeofcmds: 16
+ flags: 0x00002000
+LoadCommands:
+ - cmd: LC_VERSION_MIN_WATCHOS
+ cmdsize: 16
+ version: 327680
+ sdk: 0
+...
diff --git a/llvm/test/tools/llvm-objcopy/MachO/min-version-load-commands.test b/llvm/test/tools/llvm-objcopy/MachO/min-version-load-commands.test
new file mode 100644
index 00000000000..42dce2e192c
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/MachO/min-version-load-commands.test
@@ -0,0 +1,20 @@
+## This test verifies that llvm-objcopy correctly handles min os version load commands.
+## We use separate input files since one binary is not allowed to contain more than one
+## load command of this type (LC_VERSION_MIN_IPHONEOS, LC_VERSION_MIN_MACOSX,
+## LC_VERSION_MIN_TVOS, LC_VERSION_MIN_WATCHOS).
+
+# RUN: yaml2obj %p/Inputs/min_iphoneos_version_lc.yaml > %t.iphoneos
+# RUN: llvm-objcopy %t.iphoneos %t.iphoneos.copy
+# RUN: cmp %t.iphoneos %t.iphoneos.copy
+
+# RUN: yaml2obj %p/Inputs/min_macos_version_lc.yaml > %t.macos
+# RUN: llvm-objcopy %t.macos %t.macos.copy
+# RUN: cmp %t.macos %t.macos.copy
+
+# RUN: yaml2obj %p/Inputs/min_tvos_version_lc.yaml > %t.tvos
+# RUN: llvm-objcopy %t.tvos %t.tvos.copy
+# RUN: cmp %t.tvos %t.tvos.copy
+
+# RUN: yaml2obj %p/Inputs/min_watchos_version_lc.yaml > %t.watchos
+# RUN: llvm-objcopy %t.watchos %t.watchos.copy
+# RUN: cmp %t.watchos %t.watchos.copy
diff --git a/llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp b/llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp
index f621f3aa09c..006eb8ce7c4 100644
--- a/llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp
+++ b/llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp
@@ -318,6 +318,9 @@ Error MachOLayoutBuilder::layoutTail(uint64_t Offset) {
case MachO::LC_SEGMENT:
case MachO::LC_SEGMENT_64:
case MachO::LC_VERSION_MIN_MACOSX:
+ case MachO::LC_VERSION_MIN_IPHONEOS:
+ case MachO::LC_VERSION_MIN_TVOS:
+ case MachO::LC_VERSION_MIN_WATCHOS:
case MachO::LC_BUILD_VERSION:
case MachO::LC_ID_DYLIB:
case MachO::LC_LOAD_DYLIB:
OpenPOWER on IntegriCloud