You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.6 KiB
85 lines
2.6 KiB
From 89a7c7e55af18c4f18c0d83c244dbe20ddb85515 Mon Sep 17 00:00:00 2001 |
|
From: Jan Synacek <jsynacek@redhat.com> |
|
Date: Fri, 29 Jul 2016 15:03:02 +0200 |
|
Subject: [PATCH] tests: fix personality tests on ppc64 and aarch64 |
|
|
|
Resolves: #1361049 |
|
--- |
|
src/shared/util.c | 16 ++++++++++++++++ |
|
src/test/test-execute.c | 6 ++++++ |
|
test/exec-personality-aarch64.service | 7 +++++++ |
|
test/exec-personality-ppc64.service | 7 +++++++ |
|
4 files changed, 36 insertions(+) |
|
create mode 100644 test/exec-personality-aarch64.service |
|
create mode 100644 test/exec-personality-ppc64.service |
|
|
|
diff --git a/src/shared/util.c b/src/shared/util.c |
|
index f75ed9dd42..3030261524 100644 |
|
--- a/src/shared/util.c |
|
+++ b/src/shared/util.c |
|
@@ -6986,6 +6986,22 @@ unsigned long personality_from_string(const char *p) { |
|
|
|
if (streq(p, "s390")) |
|
return PER_LINUX; |
|
+ |
|
+#elif defined(__powerpc64__) |
|
+ |
|
+# if defined(__BIG_ENDIAN__) |
|
+ if (streq(p, "ppc64")) |
|
+ return PER_LINUX; |
|
+# else |
|
+ if (streq(p, "ppc64le")) |
|
+ return PER_LINUX; |
|
+# endif |
|
+ |
|
+#elif defined(__aarch64__) |
|
+ |
|
+ if (streq(p, "aarch64")) |
|
+ return PER_LINUX; |
|
+ |
|
#endif |
|
|
|
/* personality(7) documents that 0xffffffffUL is used for |
|
diff --git a/src/test/test-execute.c b/src/test/test-execute.c |
|
index 38522a168d..5a02960e76 100644 |
|
--- a/src/test/test-execute.c |
|
+++ b/src/test/test-execute.c |
|
@@ -83,6 +83,12 @@ static void test_exec_personality(Manager *m) { |
|
#elif defined(__s390__) |
|
test(m, "exec-personality-s390.service", 0, CLD_EXITED); |
|
|
|
+#elif defined(__powerpc64__) |
|
+ test(m, "exec-personality-ppc64.service", 0, CLD_EXITED); |
|
+ |
|
+#elif defined(__aarch64__) |
|
+ test(m, "exec-personality-aarch64.service", 0, CLD_EXITED); |
|
+ |
|
#else |
|
test(m, "exec-personality-x86.service", 0, CLD_EXITED); |
|
#endif |
|
diff --git a/test/exec-personality-aarch64.service b/test/exec-personality-aarch64.service |
|
new file mode 100644 |
|
index 0000000000..8511174411 |
|
--- /dev/null |
|
+++ b/test/exec-personality-aarch64.service |
|
@@ -0,0 +1,7 @@ |
|
+[Unit] |
|
+Description=Test for Personality=aarch64 |
|
+ |
|
+[Service] |
|
+ExecStart=/bin/sh -c 'echo $(uname -m); exit $(test $(uname -m) = "aarch64")' |
|
+Type=oneshot |
|
+Personality=aarch64 |
|
diff --git a/test/exec-personality-ppc64.service b/test/exec-personality-ppc64.service |
|
new file mode 100644 |
|
index 0000000000..4432074e67 |
|
--- /dev/null |
|
+++ b/test/exec-personality-ppc64.service |
|
@@ -0,0 +1,7 @@ |
|
+[Unit] |
|
+Description=Test for Personality=ppc64 |
|
+ |
|
+[Service] |
|
+ExecStart=/bin/sh -c 'echo $(uname -m); exit $(test $(uname -m) = "ppc64" -o $(uname -m) = "ppc64le")' |
|
+Type=oneshot |
|
+Personality=ppc64
|
|
|