Enable libc/libdl/libm/linker for host bionic
Disables debuggerd integration unless building for android.
Bug: 31559095
Test: Diff out/soong/build.ninja before/after, only change is moving
linker's libdebuggerd_client static lib to the beginning of the
list.
Test: lunch aosp_arm64-eng; mmma -j bionic
Change-Id: I62e725f7a9b98b7fe31637d0a835fd5846b0aff0
diff --git a/libc/Android.bp b/libc/Android.bp
index 04c62b3..15573e9 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -55,6 +55,7 @@
// ========================================================
cc_defaults {
name: "libc_defaults",
+ defaults: ["linux_bionic_supported"],
cflags: libc_common_flags,
asflags: libc_common_flags,
conlyflags: ["-std=gnu99"],
@@ -1770,6 +1771,7 @@
cc_defaults {
name: "crt_defaults",
+ defaults: ["linux_bionic_supported"],
no_default_compiler_flags: true,
diff --git a/libc/dns/net/getaddrinfo.c b/libc/dns/net/getaddrinfo.c
index 13000f7..c6f0d24 100644
--- a/libc/dns/net/getaddrinfo.c
+++ b/libc/dns/net/getaddrinfo.c
@@ -134,8 +134,10 @@
};
#endif
+#if defined(__ANDROID__)
// This should be synchronized to ResponseCode.h
static const int DnsProxyQueryResult = 222;
+#endif
static const struct afd {
int a_af;
@@ -399,6 +401,7 @@
return true;
}
+#if defined(__ANDROID__)
// Returns 0 on success, else returns on error.
static int
android_getaddrinfo_proxy(
@@ -555,6 +558,7 @@
}
return EAI_NODATA;
}
+#endif
int
getaddrinfo(const char *hostname, const char *servname,
diff --git a/libdl/Android.bp b/libdl/Android.bp
index 273a887..9db3a94 100644
--- a/libdl/Android.bp
+++ b/libdl/Android.bp
@@ -2,6 +2,9 @@
// libdl
//
cc_library {
+ name: "libdl",
+
+ defaults: ["linux_bionic_supported"],
// NOTE: --exclude-libs=libgcc.a makes sure that any symbols libdl.so pulls from
// libgcc.a are made static to libdl.so. This in turn ensures that libraries that
@@ -46,8 +49,6 @@
],
stl: "none",
- name: "libdl",
-
// NOTE: libdl needs __aeabi_unwind_cpp_pr0 from libgcc.a but libgcc.a needs a
// few symbols from libc. Using --no-undefined here results in having to link
// against libc creating a circular dependency which is removed and we end up
diff --git a/libm/Android.bp b/libm/Android.bp
index 11017f6..35f5fe4 100644
--- a/libm/Android.bp
+++ b/libm/Android.bp
@@ -5,6 +5,7 @@
//
cc_library {
name: "libm",
+ defaults: ["linux_bionic_supported"],
srcs: [
"upstream-freebsd/lib/msun/bsdsrc/b_exp.c",
diff --git a/linker/Android.bp b/linker/Android.bp
index 4d770ac..5745d73 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -1,6 +1,7 @@
cc_library_static {
name: "liblinker_malloc",
clang: true,
+ defaults: ["linux_bionic_supported"],
srcs: [
"linker_allocator.cpp",
@@ -13,6 +14,7 @@
cc_binary {
clang: true,
+ defaults: ["linux_bionic_supported"],
srcs: [
"dlfcn.cpp",
@@ -112,7 +114,6 @@
"libbase",
"libz",
"liblog",
- "libdebuggerd_client",
// Important: The liblinker_malloc should be the last library in the list
// to overwrite any other malloc implementations by other static libraries.
@@ -131,9 +132,15 @@
},
},
target: {
+ android: {
+ static_libs: ["libdebuggerd_client"],
+ },
android64: {
cflags: ["-DTARGET_IS_64_BIT"],
},
+ linux_bionic: {
+ cflags: ["-DTARGET_IS_64_BIT"],
+ },
},
compile_multilib: "both",
diff --git a/linker/linker_main.cpp b/linker/linker_main.cpp
index 2e98bf0..a8cc814 100644
--- a/linker/linker_main.cpp
+++ b/linker/linker_main.cpp
@@ -40,7 +40,9 @@
#include "android-base/strings.h"
#include "android-base/stringprintf.h"
+#ifdef __ANDROID__
#include "debuggerd/client.h"
+#endif
#include <vector>
@@ -217,6 +219,7 @@
__system_properties_init(); // may use 'environ'
// Register the debuggerd signal handler.
+#ifdef __ANDROID__
debuggerd_callbacks_t callbacks = {
.get_abort_message = []() {
return g_abort_message;
@@ -224,6 +227,7 @@
.post_dump = ¬ify_gdb_of_libraries,
};
debuggerd_init(&callbacks);
+#endif
g_linker_logger.ResetState();