From: Elias Naur Date: Tue, 2 Apr 2019 21:58:43 +0000 (+0200) Subject: runtime/cgo: look for android_get_device_api_level in libc.so X-Git-Tag: go1.13beta1~822 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=fc7ac2e8c0499d047ce0120a2f5df23093df6c17;p=gostls13.git runtime/cgo: look for android_get_device_api_level in libc.so 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 Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- diff --git a/src/runtime/cgo/gcc_android.c b/src/runtime/cgo/gcc_android.c index a626cd0681..5075023282 100644 --- a/src/runtime/cgo/gcc_android.c +++ b/src/runtime/cgo/gcc_android.c @@ -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;