]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/cgo: look for android_get_device_api_level in libc.so
authorElias Naur <mail@eliasnaur.com>
Tue, 2 Apr 2019 21:58:43 +0000 (23:58 +0200)
committerElias Naur <mail@eliasnaur.com>
Tue, 2 Apr 2019 22:17:34 +0000 (22:17 +0000)
The presence of the android_get_device_api_level symbol is used to
detect Android Q or later. Use the suggestion by Ryan Prichard and
look for it in libc.so and not in the entire program where someone
else might have defined it.

Manually tested on an Android Q amd64 emulator and arm64 Pixel.

Updates #29674

Change-Id: Iaef35d8f8910037b3690aa21f319e216a05a9a73
Reviewed-on: https://go-review.googlesource.com/c/go/+/170127
Run-TryBot: Elias Naur <mail@eliasnaur.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/runtime/cgo/gcc_android.c

index a626cd06818691ed6bfdeb5761eeffeae9c5e91e..5075023282f196571d342e540c447cb33a4ec876 100644 (file)
@@ -50,7 +50,7 @@ inittls(void **tlsg, void **tlsbase)
        void *handle, *get_ver;
 
        // Check for Android Q where we can use the free TLS_SLOT_APP slot.
-       handle = dlopen(NULL, RTLD_LAZY);
+       handle = dlopen("libc.so", RTLD_LAZY);
        if (handle == NULL) {
                fatalf("inittls: failed to dlopen main program");
                return;