Also since __aeabi* and __gnu_Unwind_Find_exidx symbols
were incorrectly versioned in M (android-23) remove them from
the version script for all platform versions <= 23
Bug: https://github.com/android-ndk/ndk/issues/1
Change-Id: I04902aac25a722100fc502600df908bb3a786356
The following arm symbols should be exported by libc.so:
__aeabi_atexit; # arm
__aeabi_memclr; # arm
__aeabi_memclr4; # arm
__aeabi_memclr8; # arm
__aeabi_memcpy; # arm
__aeabi_memcpy4; # arm
__aeabi_memcpy8; # arm
__aeabi_memmove; # arm
__aeabi_memmove4; # arm
__aeabi_memmove8; # arm
__aeabi_memset; # arm
__aeabi_memset4; # arm
__aeabi_memset8; # arm
Bug: https://github.com/android-ndk/ndk/issues/1
Change-Id: I36f758c574a939174d43999048c193e63def548f
This consolidates the guts of the three endian.h files (endian.h,
sys/endian.h, and machine/endian.h) into just sys/endian.h, and turns
the others into headers that forward to it.
This also consolidates all the architecture specific machine/endian.h
files into a single generic header.
Finally, this is also the update version of sys/endian.h, which just
forwards to compiler builtins rather than implementing it ourselves.
Change-Id: Ifce64dc684ce3d3231f3f43a94c083bbd8661840
This is all macros, so there's no reason to have one per API level.
This is still quite a ways from matching what we have in bionic, but
that's a problem for another day.
Change-Id: I804edfd6299d9ba15a3ba59e1091f301eace2142
char16_t and char32_t should not be defined when building as C. For
GCC they are, but not for clang. Pull in the updated bionic header
which has the fix for this.
Change-Id: I41b292ece36af79bbe835706bee4441b298215ff
From the comment about __NDK_FPABI__ vs __NDK_FPABI_MATH__:
NOTE: Disable for clang for now unless _NDK_MATH_NO_SOFTFP=1, because clang before 3.4 doesn't
allow change of calling convension for builtin and produces error message reads:
a.i:564:6: error: function declared 'aapcs' here was previously declared without calling convention
int sin(double d) __attribute__((pcs("aapcs")));
^
a.i:564:6: note: previous declaration is here
This applies to current clang as well, not just pre-3.4. Mark these
math functions as math functions.
Change-Id: I001b31df540aa3f61eec049f89346cbf2f11f128
Cherry pick bionic 86d2feef9f4df517dd5755b39b993bec0c3e1ea5 which
fixes struct stat64. This may look like breaking mips64 ABI, but mips64
support is stil work in progress post-L
Also see prebuilts/ndk e6639a4c0ba9296a19fd477154aace3585221d9d
Change-Id: Ia8859762191220b9d3127b37970f05594375ca40
This CL unconditionally removes the existance of __builtin_isinf and
__builtin_isnan from math.h for clang, because (unlike other math functions)
clang doesn't like those to be declared.
See LLVM bugzilla entry: http://llvm.org/bugs/show_bug.cgi?id=20958
The reason for decorating all math functions with __attribute__((pcs("aapcs")))
is to offer developers the ability to compile their code with hardfp and still
link Android's libm.so which follows softfp calling convention.
Before issue 20958 is fixed, those who want clang to compile their code with
hardfp in NDK has to go all the way hard, ie.
1) LOCAL_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1
Note that _NDK_MATH_NO_SOFTFP=1 remove __attribute__((pcs("aapcs"))) for all math functions
2) LOCAL_LDLIBS += -lm_hard # link libm_hard.a recompiled with -mhard-float instead of bionic libm.so
Change-Id: Ie2f95e73e58e1574e8cadbcab92a5209d94448e1
When defined as char pointers, every compilation unit that includes
the NdkMediaDrm.h header defines a new copy of the same global
variables - leading to linker errors due to multiple definitions
if more than one file includes it.
By using a define, they don't generate any symbols. The NdkMediaFormat.h
header uses extern const char* for a similar set of keys, but that
can't be added after the actual platform has shipped. The other
alternative would be to declare them as static const char*, which
wouldn't generate global symbols, but which could trigger warnings
about unused static symbols instead.
The same change has already been applied in frameworks/av in
https://android-review.googlesource.com/120303.
Change-Id: I14ca81d94309b7f437b3bc144920c48a8b3f0261
1. move sgidefs.h to libc/arch-mips.
See bionic 6e50cb454451916ced315680f6c13dc08cf3959a
2. change type of u_ar0 from "unsigned long" to "struct user_regs_struct*".
See bionic e03950fa0c5567edf70d011b856a027e03b1c0f7
3. sync fts.h, dlext.h, sys/user.h
4. remove ' from string.h
Change-Id: I2ba58b0df4c655f107ea086efbd0220de2b40e9a
The common header include/linux/a.out.h include asm/a.out.h, but
arm64/mips/mips64 don't have it. Add a placeholder before bionic
has it
Change-Id: I7084e0beabe86fec32987a89e66d6c094f1e8c22