summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2018-04-03 15:56:35 -0700
committerElliott Hughes <enh@google.com>2018-04-03 21:53:29 -0700
commit46a943c8333a9293d02c302d26d965de2b2c8ec7 (patch)
tree30b9f51323061d7a46577ac22995146c3e328340
parent4cdde64728e4d15f6abc2d713c40adaff7b0fc56 (diff)
Support getting/setting API level in static binaries.
Bug: http://b/27917272 Test: fixes static semaphore.sem_wait_no_EINTR_in_sdk_less_equal_than_23 test Change-Id: Ifeeff20772ff0308aab9417d48671b604a3e9665
-rw-r--r--libc/bionic/libc_init_static.cpp12
-rw-r--r--libdl/Android.bp2
-rw-r--r--libdl/libdl_static.cpp (renamed from libdl/libdl_static.c)28
3 files changed, 22 insertions, 20 deletions
diff --git a/libc/bionic/libc_init_static.cpp b/libc/bionic/libc_init_static.cpp
index 93a63b543..d19dd2882 100644
--- a/libc/bionic/libc_init_static.cpp
+++ b/libc/bionic/libc_init_static.cpp
@@ -113,6 +113,16 @@ __noreturn void __libc_init(void* raw_args,
exit(slingshot(args.argc, args.argv, args.envp));
}
+static uint32_t g_target_sdk_version{__ANDROID_API__};
+
+extern "C" uint32_t android_get_application_target_sdk_version() {
+ return g_target_sdk_version;
+}
+
uint32_t bionic_get_application_target_sdk_version() {
- return __ANDROID_API__;
+ return android_get_application_target_sdk_version();
+}
+
+extern "C" void android_set_application_target_sdk_version(uint32_t target) {
+ g_target_sdk_version = target;
}
diff --git a/libdl/Android.bp b/libdl/Android.bp
index 082cdead1..d5fae0eff 100644
--- a/libdl/Android.bp
+++ b/libdl/Android.bp
@@ -74,7 +74,7 @@ cc_library {
whole_static_libs: ["libdl_static"],
},
static: {
- srcs: ["libdl_static.c"],
+ srcs: ["libdl_static.cpp"],
},
cflags: [
"-Wall",
diff --git a/libdl/libdl_static.c b/libdl/libdl_static.cpp
index 0dbd73fbd..714676258 100644
--- a/libdl/libdl_static.c
+++ b/libdl/libdl_static.cpp
@@ -17,41 +17,33 @@
#include <dlfcn.h>
#include <link.h>
#include <stdlib.h>
-#include <stdbool.h>
-// Proxy calls to bionic loader
-void* dlopen(const char* filename __unused, int flag __unused) {
- return NULL;
+void* dlopen(const char* /*filename*/, int /*flag*/) {
+ return nullptr;
}
char* dlerror() {
- return NULL;
+ return nullptr;
}
-void* dlsym(void* handle __unused, const char* symbol __unused) {
- return NULL;
+void* dlsym(void* /*handle*/, const char* /*symbol*/) {
+ return nullptr;
}
-void* dlvsym(void* handle __unused,
- const char* symbol __unused,
- const char* version __unused) {
- return NULL;
+void* dlvsym(void* /*handle*/, const char* /*symbol*/, const char* /*version*/) {
+ return nullptr;
}
-int dladdr(const void* addr __unused, Dl_info* info __unused) {
+int dladdr(const void* /*addr*/, Dl_info* /*info*/) {
return 0;
}
-int dlclose(void* handle __unused) {
+int dlclose(void* /*handle*/) {
return -1;
}
#if defined(__arm__)
-_Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr pc __unused, int* pcount __unused) {
+_Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr /*pc*/, int* /*pcount*/) {
return 0;
}
#endif
-
-void android_set_application_target_sdk_version(uint32_t target __unused) {
-}
-