
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
73 lines
2.2 KiB
C
73 lines
2.2 KiB
C
/*
|
|
* Copyright (C) 2014 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef _BIONIC_OPENBSD_COMPAT_H_included
|
|
#define _BIONIC_OPENBSD_COMPAT_H_included
|
|
|
|
#define _BSD_SOURCE
|
|
|
|
#include <sys/cdefs.h>
|
|
#include <stddef.h> // For size_t.
|
|
|
|
/* Redirect internal C library calls to the public function. */
|
|
#define _err err
|
|
#define _errx errx
|
|
#define _verr verr
|
|
#define _verrx verrx
|
|
#define _vwarn vwarn
|
|
#define _vwarnx vwarnx
|
|
#define _warn warn
|
|
#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.
|
|
* Additionally, we changed the numeric/digit type from N to D for libcxx.
|
|
*/
|
|
#define _U _CTYPE_U
|
|
#define _L _CTYPE_L
|
|
#define _N _CTYPE_D
|
|
#define _S _CTYPE_S
|
|
#define _P _CTYPE_P
|
|
#define _C _CTYPE_C
|
|
#define _X _CTYPE_X
|
|
#define _B _CTYPE_B
|
|
|
|
/* OpenBSD has this, but we can't really implement it correctly on Linux. */
|
|
#define issetugid() 0
|
|
|
|
#define explicit_bzero(p, s) memset(p, 0, s)
|
|
|
|
/* We have OpenBSD's getentropy_linux.c, but we don't mention getentropy in any header. */
|
|
__LIBC_HIDDEN__ extern int getentropy(void*, size_t);
|
|
|
|
/* LP32 NDK ctype.h contained references to these. */
|
|
__LIBC64_HIDDEN__ extern const short* _tolower_tab_;
|
|
__LIBC64_HIDDEN__ extern const short* _toupper_tab_;
|
|
|
|
__LIBC_HIDDEN__ extern struct atexit* __atexit;
|
|
__LIBC_HIDDEN__ extern const char _C_ctype_[];
|
|
__LIBC_HIDDEN__ extern const short _C_toupper_[];
|
|
__LIBC_HIDDEN__ extern const short _C_tolower_[];
|
|
__LIBC_HIDDEN__ extern char* __findenv(const char*, int, int*);
|
|
__LIBC_HIDDEN__ extern char* _mktemp(char*);
|
|
|
|
/* TODO: hide this when android_support.a is fixed (http://b/16298580).*/
|
|
/*__LIBC_HIDDEN__*/ extern int __isthreaded;
|
|
|
|
#endif
|