From b6b5cb53895a2d5e94368f14a25ccfaf807eacad Mon Sep 17 00:00:00 2001 From: Chih-Hung Hsieh Date: Thu, 28 Aug 2014 11:47:48 -0700 Subject: [PATCH] Ignore all __weak_alias in OpenBSD libC. GCC assembler allows xyz to be redeclared as weak, by __weak_alias(xyz, _xyz), while _xyz is undefined. Clang does not like that but silently generates no code. It will reject its own .s file if the assembly code is saved first. Since we have no reason to define xyz or _xyz as weak symbol now, and _xyz is a macro to xyz, we simplify libC to have only xyz defined as global. BUG: 17186746 Change-Id: I24b154425838683cae69248cc750c59e26fd5467 --- libc/include/sys/cdefs_elf.h | 4 ---- libc/upstream-netbsd/android/include/namespace.h | 5 ----- libc/upstream-openbsd/android/include/openbsd-compat.h | 3 +++ 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/libc/include/sys/cdefs_elf.h b/libc/include/sys/cdefs_elf.h index 6bb0a5720..a40a867b8 100644 --- a/libc/include/sys/cdefs_elf.h +++ b/libc/include/sys/cdefs_elf.h @@ -34,10 +34,6 @@ __asm__(".global " #alias "\n" \ #alias " = " #sym); -#define __weak_alias(alias,sym) \ - __asm__(".weak " #alias "\n" \ - #alias " = " #sym); - /* We use __warnattr instead of __warn_references. * TODO: remove this and put an empty definition in one of the upstream-* compatibility headers. */ diff --git a/libc/upstream-netbsd/android/include/namespace.h b/libc/upstream-netbsd/android/include/namespace.h index 5df543cfc..630ea9b06 100644 --- a/libc/upstream-netbsd/android/include/namespace.h +++ b/libc/upstream-netbsd/android/include/namespace.h @@ -17,11 +17,6 @@ #ifndef _BIONIC_NETBSD_NAMESPACE_H_included #define _BIONIC_NETBSD_NAMESPACE_H_included -// NetBSD uses __weak_alias on a lot of functions. We don't want that. -#if defined(__weak_alias) -#undef __weak_alias -#endif - __LIBC_HIDDEN__ int __res_enable_mt(void); __LIBC_HIDDEN__ int __res_disable_mt(void); diff --git a/libc/upstream-openbsd/android/include/openbsd-compat.h b/libc/upstream-openbsd/android/include/openbsd-compat.h index b9768e185..630094d99 100644 --- a/libc/upstream-openbsd/android/include/openbsd-compat.h +++ b/libc/upstream-openbsd/android/include/openbsd-compat.h @@ -32,6 +32,9 @@ #define _warn warn #define _warnx warnx +/* Ignore all __weak_alias in OpenBSD. */ +#define __weak_alias(alias,sym) + /* OpenBSD's uses these names, which conflicted with stlport. * Additionally, we changed the numeric/digit type from N to D for libcxx. */