Patchwork [v4,12/12] linux-user: AArch64 requires at least 3.8.0

login
register
mail settings
Submitter John Rigby
Date May 14, 2013, 4:33 a.m.
Message ID <1368505980-17151-13-git-send-email-john.rigby@linaro.org>
Download mbox | patch
Permalink /patch/243598/
State New
Headers show

Comments

John Rigby - May 14, 2013, 4:33 a.m.
From: Alexander Graf <agraf@suse.de>

Glibc 1.17 checks for the host kernel version on startup. Unfortunately,
it also checks whether the host kernel version is recent enough for the
target to run at all.

Since AArch64 support only got introduced in 3.8.0, that means that glibc
refuses to run on any older kernel version than that.

To allow for execution of linux-user guests even on older host kernels,
let's always fake the kernel version to 3.8.0 on AArch64 guests.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: John Rigby <john.rigby@linaro.org>
---

Changes in v4:
- Go back to original way of doing this as I lack the config-fu
  to do it via changes in configure

 linux-user/syscall.c | 5 +++++
 1 file changed, 5 insertions(+)

Patch

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 3345508..171424e 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -316,7 +316,12 @@  static int sys_uname(struct new_utsname *buf)
   memset(buf, 0, sizeof(*buf));
   COPY_UTSNAME_FIELD(buf->sysname, uts_buf.sysname);
   COPY_UTSNAME_FIELD(buf->nodename, uts_buf.nodename);
+#ifdef TARGET_AARCH64
+  /* glibc refuses to run on older kernels */
+  COPY_UTSNAME_FIELD(buf->release, "3.8.0");
+#else
   COPY_UTSNAME_FIELD(buf->release, uts_buf.release);
+#endif
   COPY_UTSNAME_FIELD(buf->version, uts_buf.version);
   COPY_UTSNAME_FIELD(buf->machine, uts_buf.machine);
 #ifdef _GNU_SOURCE