]> Cypherpunks repositories - gostls13.git/commit
runtime: don't crash if vsyscall and vdso are disabled on x86_64
authorAndrei Vagin <avagin@google.com>
Tue, 29 Sep 2020 04:45:55 +0000 (04:45 +0000)
committerIan Lance Taylor <iant@golang.org>
Wed, 30 Sep 2020 05:39:59 +0000 (05:39 +0000)
commit3caaaddffd605c0ec1787d68295b732fff73026b
tree3ecc32886e68d2a6b108476a184c72ff84e0e1e2
parent0e85fd7561de869add933801c531bf25dee9561c
runtime: don't crash if vsyscall and vdso are disabled on x86_64

If vdso is disabled, the goruntime calls gettimeofday from vsyscall,
but if vsyscall is disabled too, all golang binaries crash:

SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xffffffffff600000} ---
killed by SIGSEGV (core dumped) ++

vsyscall doesn't work as it was designed for a long time due to security
reasons and now vsyscall is a little more expensive than real syscalls:
https://github.com/torvalds/linux/commit/5cec93c216db

This patch reworks the code to call syscalls if the vdso library isn't
available.

Change-Id: I16cbf3f49871bea91e26af1f49aa0ae2fbd3a01d
GitHub-Last-Rev: 1d133cd30a5dee1fea9aee0fb4ea0b07e0e87f2a
GitHub-Pull-Request: golang/go#41681
Reviewed-on: https://go-review.googlesource.com/c/go/+/257982
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
Trust: Michael Pratt <mpratt@google.com>
src/runtime/sys_linux_amd64.s
src/runtime/vdso_linux_amd64.go
src/syscall/asm_linux_amd64.s