summaryrefslogtreecommitdiffstats
path: root/llvm/test/MC
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2018-12-14 01:14:10 +0000
committerAlex Lorenz <arphaman@gmail.com>2018-12-14 01:14:10 +0000
commitafa75d7843c92a7ac9a194f4b1a2396c03e3efd8 (patch)
tree0b2627d35b4422489fa052fc40254da1fd8f3369 /llvm/test/MC
parent4065da29f071f736f8f1314847939e7859942e91 (diff)
downloadbcm5719-llvm-afa75d7843c92a7ac9a194f4b1a2396c03e3efd8.tar.gz
bcm5719-llvm-afa75d7843c92a7ac9a194f4b1a2396c03e3efd8.zip
[macho] save the SDK version stored in module metadata into the version min and
build version load commands in the object file This commit introduces a new metadata node called "SDK Version". It will be set by the frontend to mark the platform SDK (macOS/iOS/etc) version which was used during that particular compilation. This node is used when machine code is emitted, by either saving the SDK version into the appropriate macho load command (version min/build version), or by emitting the assembly for these load commands with the SDK version specified as well. The assembly for both load commands is extended by allowing it to contain the sdk_version X, Y [, Z] trailing directive to represent the SDK version respectively. rdar://45774000 Differential Revision: https://reviews.llvm.org/D55612 llvm-svn: 349119
Diffstat (limited to 'llvm/test/MC')
-rw-r--r--llvm/test/MC/MachO/ARM/build-version-sdk-version-errors.c19
-rw-r--r--llvm/test/MC/MachO/ARM/build-version-sdk-version.s13
-rw-r--r--llvm/test/MC/MachO/build-version-with-sdk-version.s13
-rw-r--r--llvm/test/MC/MachO/darwin-sdk-version.ll18
-rw-r--r--llvm/test/MC/MachO/osx-version-min-load-command-with-sdk-errors.s10
-rw-r--r--llvm/test/MC/MachO/osx-version-min-load-command-with-sdk.s12
6 files changed, 85 insertions, 0 deletions
diff --git a/llvm/test/MC/MachO/ARM/build-version-sdk-version-errors.c b/llvm/test/MC/MachO/ARM/build-version-sdk-version-errors.c
new file mode 100644
index 00000000000..bd568d58129
--- /dev/null
+++ b/llvm/test/MC/MachO/ARM/build-version-sdk-version-errors.c
@@ -0,0 +1,19 @@
+// RUN: not llvm-mc -triple x86_64-apple-macos %s 2>&1 | FileCheck %s
+
+.build_version macos,3,4,5 sdk_version
+// CHECK: invalid SDK major version number, integer expected
+
+.build_version macos,3,4,5 sdk_version 10
+// CHECK: SDK minor version number required, comma expected
+
+.build_version macos,3,4,5 sdk_version 10,
+// CHECK: invalid SDK minor version number, integer expected
+
+.build_version macos,3,4,5 sdk_version 10,1,
+// CHECK: invalid SDK subminor version number, integer expected
+
+.build_version macos,3,4,5 sdk_version 10,10000
+// CHECK: invalid SDK minor version number
+
+.build_version macos,3,4,5 sdk_version 10,255,10000
+// CHECK: invalid SDK subminor version number
diff --git a/llvm/test/MC/MachO/ARM/build-version-sdk-version.s b/llvm/test/MC/MachO/ARM/build-version-sdk-version.s
new file mode 100644
index 00000000000..98f6d4d7bd2
--- /dev/null
+++ b/llvm/test/MC/MachO/ARM/build-version-sdk-version.s
@@ -0,0 +1,13 @@
+// RUN: llvm-mc -triple x86_64-apple-macos %s | FileCheck %s
+
+.build_version macos,3,4,5 sdk_version 10,14
+// CHECK: .build_version macos, 3, 4, 5 sdk_version 10, 14
+
+.build_version ios,6,7 sdk_version 6,1,0
+// CHECK: .build_version ios, 6, 7 sdk_version 6, 1, 0
+
+.build_version tvos,8,9 sdk_version 9,0,10
+// CHECK: .build_version tvos, 8, 9 sdk_version 9, 0, 10
+
+.build_version watchos,10,11 sdk_version 10,11
+// CHECK: .build_version watchos, 10, 11 sdk_version 10, 11
diff --git a/llvm/test/MC/MachO/build-version-with-sdk-version.s b/llvm/test/MC/MachO/build-version-with-sdk-version.s
new file mode 100644
index 00000000000..e96c2d520e1
--- /dev/null
+++ b/llvm/test/MC/MachO/build-version-with-sdk-version.s
@@ -0,0 +1,13 @@
+// RUN: llvm-mc -triple x86_64-apple-macos %s -filetype=obj -o - | llvm-readobj --macho-version-min | FileCheck %s
+
+// Test the formation of the sdk_version component of the version load
+// command in the MachO.
+.build_version macos, 10,13,2 sdk_version 10,14,1
+
+// CHECK: MinVersion {
+// CHECK: Cmd: LC_BUILD_VERSION
+// CHECK: Size: 24
+// CHECK: Platform: macos
+// CHECK: Version: 10.13.2
+// CHECK: SDK: 10.14.1
+// CHECK: }
diff --git a/llvm/test/MC/MachO/darwin-sdk-version.ll b/llvm/test/MC/MachO/darwin-sdk-version.ll
new file mode 100644
index 00000000000..5052e058ead
--- /dev/null
+++ b/llvm/test/MC/MachO/darwin-sdk-version.ll
@@ -0,0 +1,18 @@
+; RUN: llc %s -filetype=obj -o - | llvm-objdump -macho -private-headers - | FileCheck %s
+; RUN: llc %s -filetype=asm -o - | FileCheck --check-prefix=ASM %s
+
+target triple = "x86_64-apple-macos10.14";
+!llvm.module.flags = !{!0};
+!0 = !{i32 2, !"SDK Version", [3 x i32] [ i32 10, i32 14, i32 2 ] };
+
+define void @foo() {
+entry:
+ ret void
+}
+
+; CHECK: cmd LC_VERSION_MIN_MACOSX
+; CHECK-NEXT: cmdsize 16
+; CHECK-NEXT: version 10.14
+; CHECK-NEXT: sdk 10.14.2
+
+; ASM: .macosx_version_min 10, 14 sdk_version 10, 14, 2
diff --git a/llvm/test/MC/MachO/osx-version-min-load-command-with-sdk-errors.s b/llvm/test/MC/MachO/osx-version-min-load-command-with-sdk-errors.s
new file mode 100644
index 00000000000..9547d07e319
--- /dev/null
+++ b/llvm/test/MC/MachO/osx-version-min-load-command-with-sdk-errors.s
@@ -0,0 +1,10 @@
+// RUN: not llvm-mc -triple x86_64-apple-macos %s -o - 2>&1 | FileCheck %s
+
+.macosx_version_min 10,13,2 sdk_version 10
+// CHECK: SDK minor version number required, comma expected
+
+.macosx_version_min 10,13,2 sdk_version 10,
+// CHECK: invalid SDK minor version number, integer expected
+
+.macosx_version_min 10,13,2 sdk_version 10
+// CHECK: SDK minor version number required, comma expected
diff --git a/llvm/test/MC/MachO/osx-version-min-load-command-with-sdk.s b/llvm/test/MC/MachO/osx-version-min-load-command-with-sdk.s
new file mode 100644
index 00000000000..d2ad463d1d6
--- /dev/null
+++ b/llvm/test/MC/MachO/osx-version-min-load-command-with-sdk.s
@@ -0,0 +1,12 @@
+// RUN: llvm-mc -triple x86_64-apple-macos %s -filetype=obj -o - | llvm-readobj --macho-version-min | FileCheck %s
+
+// Test the formation of the sdk_version component of the version load
+// command in the MachO.
+.macosx_version_min 10,13,2 sdk_version 10,14
+
+// CHECK: MinVersion {
+// CHECK: Cmd: LC_VERSION_MIN_MACOSX
+// CHECK: Size: 16
+// CHECK: Version: 10.13.2
+// CHECK: SDK: 10.14
+// CHECK: }
OpenPOWER on IntegriCloud