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
This commit is contained in:
Chih-Hung Hsieh 2014-08-28 11:47:48 -07:00
parent fbe9d3dfeb
commit b6b5cb5389
3 changed files with 3 additions and 9 deletions

View File

@ -34,10 +34,6 @@
__asm__(".global " #alias "\n" \ __asm__(".global " #alias "\n" \
#alias " = " #sym); #alias " = " #sym);
#define __weak_alias(alias,sym) \
__asm__(".weak " #alias "\n" \
#alias " = " #sym);
/* We use __warnattr instead of __warn_references. /* We use __warnattr instead of __warn_references.
* TODO: remove this and put an empty definition in one of the upstream-* compatibility headers. * TODO: remove this and put an empty definition in one of the upstream-* compatibility headers.
*/ */

View File

@ -17,11 +17,6 @@
#ifndef _BIONIC_NETBSD_NAMESPACE_H_included #ifndef _BIONIC_NETBSD_NAMESPACE_H_included
#define _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_enable_mt(void);
__LIBC_HIDDEN__ int __res_disable_mt(void); __LIBC_HIDDEN__ int __res_disable_mt(void);

View File

@ -32,6 +32,9 @@
#define _warn warn #define _warn warn
#define _warnx warnx #define _warnx warnx
/* Ignore all __weak_alias in OpenBSD. */
#define __weak_alias(alias,sym)
/* OpenBSD's <ctype.h> uses these names, which conflicted with stlport. /* OpenBSD's <ctype.h> uses these names, which conflicted with stlport.
* Additionally, we changed the numeric/digit type from N to D for libcxx. * Additionally, we changed the numeric/digit type from N to D for libcxx.
*/ */