MingW doesn't handle __attribute__((weak)) for Windows PE Windows PE format doesn't have the same support for weak symbols as ELF does. The symbol android_log_id_to_name was strangely omitted from the resulting Windows executable and the callsite where it was supposed to be called was relaced with a different symbol, which caused a crash in AAPT on Windows. This change works due to a careful set of #ifdefs that ensure only one definition of android_log_id_to_name is defined, but there are other uses of __attribute__((weak)) which should be inspected. Change-Id: I3b58076e31d9b28c5143773a170e9ffda9fa3815
diff --git a/liblog/logd_write.c b/liblog/logd_write.c index 3659676..b2668ce 100644 --- a/liblog/logd_write.c +++ b/liblog/logd_write.c
@@ -58,7 +58,6 @@ #endif #if FAKE_LOG_DEVICE -#define WEAK __attribute__((weak)) static int log_fds[(int)LOG_ID_MAX] = { -1, -1, -1, -1, -1 }; #else static int logd_fd = -1; @@ -274,7 +273,7 @@ [LOG_ID_CRASH] = "crash" }; -const WEAK char *android_log_id_to_name(log_id_t log_id) +const char *android_log_id_to_name(log_id_t log_id) { if (log_id >= LOG_ID_MAX) { log_id = LOG_ID_MAIN;