mirror of
https://github.com/golang/go
synced 2024-11-19 15:54:46 -07:00
6f287fa2bb
Android's libc doesn't provide access to auxv, so currently the Go runtime synthesizes a fake, minimal auxv when loaded as a library on Android. This used to be sufficient, but now we depend on auxv to retrieve the system physical page size and panic if we can't retrieve it. Fix this by falling back to reading auxv from /proc/self/auxv if the loader-provided auxv is empty and removing the synthetic auxv vectors. Fixes #18041. Change-Id: Ia2ec2c764a6609331494a5d359032c56cbb83482 Reviewed-on: https://go-review.googlesource.com/33652 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
27 lines
927 B
ArmAsm
27 lines
927 B
ArmAsm
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
#include "textflag.h"
|
|
|
|
TEXT _rt0_arm64_android(SB),NOSPLIT,$-8
|
|
MOVD $_rt0_arm64_linux(SB), R4
|
|
B (R4)
|
|
|
|
// When building with -buildmode=c-shared, this symbol is called when the shared
|
|
// library is loaded.
|
|
TEXT _rt0_arm64_android_lib(SB),NOSPLIT,$-8
|
|
MOVW $1, R0 // argc
|
|
MOVD $_rt0_arm64_android_argv(SB), R1 // **argv
|
|
MOVD $_rt0_arm64_linux_lib(SB), R4
|
|
B (R4)
|
|
|
|
DATA _rt0_arm64_android_argv+0x00(SB)/8,$_rt0_arm64_android_argv0(SB)
|
|
DATA _rt0_arm64_android_argv+0x08(SB)/8,$0 // end argv
|
|
DATA _rt0_arm64_android_argv+0x10(SB)/8,$0 // end envv
|
|
DATA _rt0_arm64_android_argv+0x18(SB)/8,$0 // end auxv
|
|
GLOBL _rt0_arm64_android_argv(SB),NOPTR,$0x20
|
|
|
|
DATA _rt0_arm64_android_argv0(SB)/8, $"gojni"
|
|
GLOBL _rt0_arm64_android_argv0(SB),RODATA,$8
|