Merge "Remove __ANDROID_NDK__ from bionic, and document our #defines."
diff --git a/libc/Android.bp b/libc/Android.bp
index 37e0f09..3e2ee1d 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -1525,6 +1525,22 @@
],
}
+// Versions of dl_iterate_phdr and similar APIs used to lookup unwinding information in a static
+// executable.
+cc_library_static {
+ name: "libc_unwind_static",
+ defaults: ["libc_defaults"],
+ cflags: ["-DLIBC_STATIC"],
+
+ srcs: ["bionic/dl_iterate_phdr_static.cpp"],
+ arch: {
+ // arm32-specific dl_unwind_find_exidx and __gnu_Unwind_Find_exidx APIs
+ arm: {
+ srcs: ["arch-arm/bionic/exidx_static.c"],
+ },
+ },
+}
+
// ========================================================
// libc_nomalloc.a
// ========================================================
@@ -1537,20 +1553,13 @@
cc_library_static {
name: "libc_nomalloc",
-
defaults: ["libc_defaults"],
-
- arch: {
- arm: {
- srcs: ["arch-arm/bionic/exidx_static.c"],
- },
- },
-
cflags: ["-DLIBC_STATIC"],
whole_static_libs: [
"libc_common_static",
"libc_init_static",
+ "libc_unwind_static",
],
}
@@ -1572,7 +1581,6 @@
filegroup {
name: "libc_sources_static",
srcs: [
- "bionic/dl_iterate_phdr_static.cpp",
"bionic/malloc_common.cpp",
"bionic/malloc_limit.cpp",
],
@@ -1586,11 +1594,6 @@
],
}
-filegroup {
- name: "libc_sources_static_arm",
- srcs: [ "arch-arm/bionic/exidx_static.c" ],
-}
-
// ========================================================
// libc.a + libc.so
// ========================================================
@@ -1613,6 +1616,7 @@
whole_static_libs: [
"libc_init_static",
"libc_common_static",
+ "libc_unwind_static",
],
},
shared: {
@@ -1662,9 +1666,6 @@
// special for arm
cflags: ["-DCRT_LEGACY_WORKAROUND"],
},
- static: {
- srcs: [":libc_sources_static_arm"],
- },
// Arm 32 bit does not produce complete exidx unwind information
// so keep the .debug_frame which is relatively small and does
diff --git a/libc/arch-arm/bionic/exidx_static.c b/libc/arch-arm/bionic/exidx_static.c
index ef3745f..9830c54 100644
--- a/libc/arch-arm/bionic/exidx_static.c
+++ b/libc/arch-arm/bionic/exidx_static.c
@@ -43,7 +43,11 @@
extern struct exidx_entry __exidx_end;
extern struct exidx_entry __exidx_start;
-_Unwind_Ptr __gnu_Unwind_Find_exidx(_Unwind_Ptr pc __attribute__((unused)), int* pcount) {
+_Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr pc __attribute__((unused)), int* pcount) {
*pcount = (&__exidx_end - &__exidx_start);
return (_Unwind_Ptr)&__exidx_start;
}
+
+_Unwind_Ptr __gnu_Unwind_Find_exidx(_Unwind_Ptr pc, int *pcount) {
+ return dl_unwind_find_exidx(pc, pcount);
+}
diff --git a/libc/malloc_debug/Android.bp b/libc/malloc_debug/Android.bp
index ce80a97..7340f95 100644
--- a/libc/malloc_debug/Android.bp
+++ b/libc/malloc_debug/Android.bp
@@ -109,9 +109,13 @@
],
apex_available: [
- "//apex_available:platform",
"com.android.runtime",
],
+ static: {
+ apex_available: [
+ "//apex_available:platform",
+ ],
+ },
}
// ==============================================================
diff --git a/libc/malloc_hooks/Android.bp b/libc/malloc_hooks/Android.bp
index a0f8102..861c371 100644
--- a/libc/malloc_hooks/Android.bp
+++ b/libc/malloc_hooks/Android.bp
@@ -32,6 +32,15 @@
"-Werror",
"-fno-stack-protector",
],
+
+ apex_available: [
+ "com.android.runtime",
+ ],
+ static: {
+ apex_available: [
+ "//apex_available:platform",
+ ],
+ },
}
// ==============================================================
diff --git a/libdl/libdl_static.cpp b/libdl/libdl_static.cpp
index 0a36e6f..3bbf963 100644
--- a/libdl/libdl_static.cpp
+++ b/libdl/libdl_static.cpp
@@ -41,9 +41,3 @@
int dlclose(void* /*handle*/) {
return -1;
}
-
-#if defined(__arm__)
-_Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr /*pc*/, int* /*pcount*/) {
- return 0;
-}
-#endif
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 37a3189..cee9c3b 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -4208,7 +4208,7 @@
if (insert_pos == std::string::npos) {
insert_pos = ld_config_file_vndk.length();
}
- ld_config_file_vndk.insert(insert_pos, Config::get_vndk_version_string('.'));
+ ld_config_file_vndk.insert(insert_pos, Config::get_vndk_version_string("."));
return ld_config_file_vndk;
}
diff --git a/linker/linker_config.cpp b/linker/linker_config.cpp
index 46c91a3..450d0e6 100644
--- a/linker/linker_config.cpp
+++ b/linker/linker_config.cpp
@@ -408,7 +408,7 @@
params.push_back({ "SDK_VER", buf });
}
- static std::string vndk = Config::get_vndk_version_string('-');
+ static std::string vndk = Config::get_vndk_version_string("");
params.push_back({ "VNDK_VER", vndk });
for (auto& path : paths) {
@@ -596,11 +596,11 @@
return true;
}
-std::string Config::get_vndk_version_string(const char delimiter) {
+std::string Config::get_vndk_version_string(const std::string& prefix) {
std::string version = android::base::GetProperty("ro.vndk.version", "");
if (version != "" && version != "current") {
- //add the delimiter char in front of the string and return it.
- return version.insert(0, 1, delimiter);
+ //add the prefix in front of the string and return it.
+ return version.insert(0, prefix);
}
return "";
}
diff --git a/linker/linker_config.h b/linker/linker_config.h
index 75d9378..547c62e 100644
--- a/linker/linker_config.h
+++ b/linker/linker_config.h
@@ -164,7 +164,7 @@
const Config** config,
std::string* error_msg);
- static std::string get_vndk_version_string(const char delimiter);
+ static std::string get_vndk_version_string(const std::string& prefix);
private:
void clear();