diff options
author | Srdjan Petrovic <spetrovic@google.com> | 2015-03-25 17:50:35 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2015-04-03 01:24:51 +0000 |
commit | e8694c8196e39328d6d61b1f32228d21112008d7 (patch) | |
tree | 3942b490997e3f0800484c4666fdd787e925bf43 /src/runtime/sys_linux_arm64.s | |
parent | 167562f65200bc01c9ecdcf393dfa2f16de3d9c2 (diff) | |
download | go-e8694c8196e39328d6d61b1f32228d21112008d7.tar.gz go-e8694c8196e39328d6d61b1f32228d21112008d7.zip |
runtime: initialize shared library at library-load time
This is Part 2 of the change, see Part 1 here: in https://go-review.googlesource.com/#/c/7692/
Suggested by iant@, we use the library initialization entry point to:
- create a new OS thread and run the "regular" runtime init stack on
that thread
- return immediately from the main (i.e., loader) thread
- at the first CGO invocation, we wait for the runtime initialization
to complete.
The above mechanism is implemented only on linux_amd64. Next step is to
support it on linux_arm. Other platforms don't yet support shared library
compiling/linking, but we intend to use the same strategy there as well.
Change-Id: Ib2c81b1b83bee837134084b75a3beecfb8de6bf4
Reviewed-on: https://go-review.googlesource.com/8094
Run-TryBot: Srdjan Petrovic <spetrovic@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/runtime/sys_linux_arm64.s')
-rw-r--r-- | src/runtime/sys_linux_arm64.s | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s index 0d0131b820..06797c275d 100644 --- a/src/runtime/sys_linux_arm64.s +++ b/src/runtime/sys_linux_arm64.s @@ -356,6 +356,12 @@ again: SVC B again // keep exiting +// int32 clone0(int32 flags, void *stack, void* fn, void* fnarg); +TEXT runtime·clone0(SB),NOSPLIT,$0 + // TODO(spetrovic): Implement this method. + MOVW $-1, ret+32(FP) + RET + TEXT runtime·sigaltstack(SB),NOSPLIT,$-8 MOVD new+0(FP), R0 MOVD old+8(FP), R1 |