-
-
Notifications
You must be signed in to change notification settings - Fork 606
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Golang support #522
Comments
Hi, We're indeed interested in Go lang. Today we can run it since OSv apps On Sun, Oct 19, 2014 at 7:45 PM, 6D65 [email protected] wrote:
|
Cool, thanks. I guess i'll have to play around with it, and see what can be done. |
@6D65 @dorlaor I have some work-in-progress code to support static ELFs (CC @pdziepak): https://github.com/penberg/osv/commits/static-elf as well as preliminary support for running Go binaries that use the https://github.com/penberg/osv/commits/golang I haven't really had the time to work on them recently but supporting Go under OSv is definitely doable. |
2014-10-22 12:08 GMT+02:00 Pekka Enberg [email protected]:
Moving kernel to higher addresses (but still inside first 2GB) seems to be |
As explained nicely in golang/go#13492, since 1996 glibc's dlopen() passes argv and a bunch of other stuff to the initialization functions of shared objects, while we don't pass any argument (see object::run_init_funcs()). Golang code (ref cloudius-systems#522), in particular, assumes it gets argv, auxv, etc., this way. Fixes: cloudius-systems#795 Signed-off-by: Benoît Canet <[email protected]>
As explained nicely in golang/go#13492, since 1996 glibc's dlopen() passes argv and a bunch of other stuff to the initialization functions of shared objects, while we don't pass any argument (see object::run_init_funcs()). Golang code (ref cloudius-systems#522), in particular, assumes it gets argv, auxv, etc., this way. Fixes: cloudius-systems#795 Signed-off-by: Benoît Canet <[email protected]>
As explained nicely in golang/go#13492, since 1996 glibc's dlopen() passes argv and a bunch of other stuff to the initialization functions of shared objects, while we don't pass any argument (see object::run_init_funcs()). Golang code (ref cloudius-systems#522), in particular, assumes it gets argv, auxv, etc., this way. Fixes: cloudius-systems#795 Signed-off-by: Benoît Canet <[email protected]>
As explained nicely in golang/go#13492, since 1996 glibc's dlopen() passes argv and a bunch of other stuff to the initialization functions of shared objects, while we don't pass any argument (see object::run_init_funcs()). Golang code (ref cloudius-systems#522), in particular, assumes it gets argv, auxv, etc., this way. Fixes: cloudius-systems#795 Signed-off-by: Benoît Canet <[email protected]>
As explained nicely in golang/go#13492, since 1996 glibc's dlopen() passes argv and a bunch of other stuff to the initialization functions of shared objects, while we don't pass any argument (see object::run_init_funcs()). Golang code (ref cloudius-systems#522), in particular, assumes it gets argv, auxv, etc., this way. Fixes: cloudius-systems#795 Signed-off-by: Benoît Canet <[email protected]>
When an application gets a SIGSEGV because it overflowed the thread's stack, it is pointless to try to run a signal handler on the same stack which has no room to run on. This is why Linux provides a sigaltstack() function which allows the user to specify a (per-thread) stack for running signal handlers, and a SA_ONSTACK flag for sigaction() to ask to use the alternative stack for a specific handler. So far these features were stubbed, and this patch provides a complete implementation, and also a test - which overflows the stack and tries to recover with a signal handler (without SA_ONSTACK properly working, the test crashes when it tries to run the signal handler). Fixes #809. Proper support of sigaltstack() is important for golang (see issue #522). Signed-off-by: Nadav Har'El <[email protected]> Message-Id: <[email protected]>
When an application gets a SIGSEGV because it overflowed the thread's stack, it is pointless to try to run a signal handler on the same stack which has no room to run on. This is why Linux provides a sigaltstack() function which allows the user to specify a (per-thread) stack for running signal handlers, and a SA_ONSTACK flag for sigaction() to ask to use the alternative stack for a specific handler. So far these features were stubbed, and this patch provides a complete implementation, and also a test - which overflows the stack and tries to recover with a signal handler (without SA_ONSTACK properly working, the test crashes when it tries to run the signal handler). Fixes cloudius-systems#809. Proper support of sigaltstack() is important for golang (see issue cloudius-systems#522). Signed-off-by: Nadav Har'El <[email protected]> Message-Id: <[email protected]>
WIth the latest commit d76e530 we seem to have pretty solid support of Golang apps on OSv. Two applications - golang-example and golang-httpserver function well (especially the latter one even under heavy load) when compiled with almost latest Golang 1.10.1. I think we can now close this issue. |
I think you are right! Thank you for all your hard work on this. Nice to finally close this issue after almost 4 years. |
Hi,
You probably have been asked this a billion times already, but I can't seem to find the info whether you support Go. I watched some not too new presentations, and there's mentioned that JVM based languages are fully supported, and C to some extent(except exec, fork).
I like the idea of a low overhead cloud OS but carying over 100MB of runtime for the JVM languages is a thing that i would avoid, especially when the OS itself is around 20MB.
Btw, i'm aware that Go is not slim either, but at least it's getting better.
Thanks
The text was updated successfully, but these errors were encountered: