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
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
Upstream clang3.6 still doesn't allow change of calling convension of
__builtin_isnan from the default to "softfp" (via __attribute__((pcs("aapcs"))))
as required by bionic libm.so for 32-bit ARM. Let's hope clang3.7
fix that. See upstream bug http://llvm.org/bugs/show_bug.cgi?id=20958
Change-Id: Ibdcc1783ffa7cf2f36e733983bd6d912ad38df70
Also
1. Header singal.h now includes <sys/ucontext.h>
2. asm/user.h include sys/user.h
3. change use of user_i387_struct to user_fpregs_struct
See bionic 26a8eb50a84e131d34d10d5d167d67e9995399bd
Change-Id: I9592e98b90d773ef5babb428a6a6ef208fe86327
1. Set APP_ABI:=all in almost all samples
2. Enhance hello-jni to report more ABIs
3. Fix warnings
Change-Id: I2851c42b77ef8225e32143d225edcf973633e782
Such that the following can correctly populate sysroot just enough to rebuild
mips64el toolchain
./build/tools/gen-platforms.sh --minimal --dst-dir=$NDK --ndk-dir=$NDK --arch=mips64
Change-Id: Ib37516bfe4c4b6a0c5b479d7cec8764c161f02c8
Fixes two issues:
1. Remove redundant check for hard-float in Teapot/MoreTeapots and ndk_helper
they depend. The ndk-build system add those flags already for armeabi-v7a-hard
2. native-audio in debug build: assert on the non-existance var
Change-Id: Id6b2d38a264c2f2d0e0c7fe625991fcee1762800
It appears that upstream 3.5 still can't accept __builtin_isnan redeclared
with calling convention, eg.
cat > isnan.c <<EOF
int __builtin_isnan(double) __attribute__((pcs("aapcs")));
EOF
clang -target armv5te-none-linux-androideabi -c isnan.c
isnan.c:1:5: error: function declared 'aapcs' here was previously declared without calling convention
int __builtin_isnan(double) __attribute__((pcs("aapcs")));
^
isnan.c:1:5: note: previous declaration is here
Change-Id: Iff466fd913c3deec27aa3ff355a208543028d368
Also
1) rename lib -> lib64
2) add src/ for android-20/arch-arm64 and arch-mips64
3) delete android-9/arch-arm64 and arch-mips64
Change-Id: I4958c4e52946e29e57b910f39ff0104200853a06
* Add i386/elf_machdep.h, it is used during the build of 32-bit part of
multilib compiler;
* Remove page.h. See https://android-review.googlesource.com/#/c/83299;
* Update other x86 headers from bionic for compatibility which are
required for successful build;
Change-Id: Ia66301849e699b79c657146424a806d0aa22342b
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
This change moves _types.h from common area to all 32-bits archs.
Required for successful NDK build.
Change-Id: Ife676a285f4b77aef4c33e465a0dbc7cab1481a3
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
* Cleaned up obsolete link in android-9
* Add symlink to lib-bootstrap in android-9
* Add symlink to crt* files sources so that we can build crt*.o for x86_64
* Moved static libs from lib to lib64 so that they can coexist with 32-bit libs
and automatically picked up by multilib compiler. Just plain move, nothing
changes;
Change-Id: Iba580f59f0538db9bc8484afd10e9cfd8b53913a
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
It is only effective when compile with mips, although
development no longer has to check themselves
Change-Id: I7fb703170e1cc6bb2e6ea31109851a90a26eacb8
Remove android-13's looper.h because it's identical to android-9's
Note that ndk/platforms/android-N only keep delta to previous level
Change-Id: Ibd2c3e168cfe7f6902fdc6eca2e2778d8ccf1fac
Similar to clang 3.3, it seems that clang 3.4 declares an incompatible
function prototypes for __builtin_isnan(). To workaround this issue,
we should not declare the function prototype for __builtin_isnan().
Note: Though it may be good to fix this in clang type checker, like
__builtin_nexttoward(), however it seems non-trivial since __builtin_isnsn()
might be overloaded. We can revert this after we have fixed the
clang builtin definition.
Change-Id: I329b56225f3d229b0c141bb8414c4369f154efda
wait4() was incorrectly declared in <sys/wait.h>, but only added to the
C library in Android 4.3 (API level 18) [1]
This patch:
- Removes the wait4() declarations for any <sys/wait.h> header before
API level 19.
- Brings the API level 19 <sys/wait.h> which correctly declares wait4().
- Update the libc.so.functions.txt for API level 19 of all platforms
to include the exported symbol.
NOTE: This does not bring the static libc.a to API level 19, which means
it is stuck at API level 9 for ARM.
See [2] for the corresponding NDK tests.
http://b.android.com/19854
[1] 17a8b0db63
[2] https://android-review.googlesource.com/#/c/72000/
Change-Id: I7735473d177c44f43b09bb6738e9914945cd4d0a
Annotate __builtin math functions with __NDK_FPABI_MATH__ too.
1. __attribute__((pcs("aapcs"))) has no effect on codegen when __buitlin
function is emitted inlined.
2. When __builtin call into regular function in Android's libm, it has
proper attribute which observes soft float-abi
Change-Id: I11e8b74fc22f3072b9ce849193e4a56e98c92d64
The mkdtemp() function has always been implemented in the C library
(see [1] for proof) but was missing a declaration in <stdlib.h>, until
Android 4.0.1 [2]
This patch simply adds the missing declaration to former <stdlib.h>
versions. This makes it easier to build certain open-source programs
for Android, because auto-tools probing typically looks at the symbols
in libc.so to define HAVE_MKDTEMP, then the source fails to compile
because of the lack of declaration.
Note that the mkdtemp is also already listed in
platforms/android-*/arch-*/symbols/libc.so.functions.txt, which were
generated by parsing actual system libraries, and thus don't need to
be updated here.
[1] https://android.googlesource.com/platform/bionic/+/android-1.6_r1/libc/stdio/mktemp.chttps://android.googlesource.com/platform/bionic/+/android-1.6_r1/libc/Android.mk
[2] ad1ff2fb26
Change-Id: I838b54bcb5cbfd2fed24cf7649897889ec7a5559