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) Add ldexp. ldexp used to co-exist in both libc.so and libm.so until
the removal from libm.so in ICS. Unfortunately the sole copy of libm_hard.a
in NDK was compiled from JB source and miss ldexp. Code compiled with
hard-float using ldexp may use libc.so which follows soft-float and misbehave
2) Turns out the following (all in fpclassify.o) also exists in recent libc.so
too. Add them in libm_hard.a as well:
__fpclassifyd
__fpclassifyf
__fpclassifyl
__isfinitef
__isfinite
__isfinitel
__isinff
__isinf
__isinfl
__isnanl
__isnormalf
__isnormal
__isnormall
isinf
isnan
isnanf
Change-Id: Ia157fb2911341988de102e55d0c6f6141a9c3dda
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>
A math library compiled with -mhard-float. Build instructions:
1. cd to a recent Android source tree: bionic.git
fbefb252b09634114977dbd1b48dd42bb2629b83 (internal) in this case
2. Temporarily remove "-mfloat-abi=softfp" from build/core/combo/arch/arm/armv7*
and build/core/combo/TARGET_linux-arm.mk
3. Temporarily add "-mhard-float -mfloat-abi=hard" to LOCAL_CFLAGS
for libm.a in bionic/libm/Android.mk
4. make -B -j32 out/target/product/generic/obj/STATIC_LIBRARIES/libm_intermediates/libm.a
5. Rename it
Change-Id: I107eea48af75e97b448862cfc7aae2e8f8911a63
1. __set_errno is deprecated and subject to removal in future release
2. elf.h is seen to be included alone, causing compilation error due
to undefined uint32_t and uint64_t
Change-Id: I4ca348a8ba0689eb3880622dcf5c53be470c57e8
With --enable-libgomp, gcc/gcc-4.4.3/libiberty/configure line #2124 tries
to link a trivial program but fails w/o the presence of libc.so and libdl.so
and sets "gcc_no_link=yes" at line #2131. Confiugre later fails with
cryptic message reads "Link tests are not allowed after GCC_NO_EXECUTABLES."
See
https://android-review.googlesource.com/#/c/34491, 48617, and 48619
Change-Id: I6e761c5fb12f413dca04a26b39f27e9f026d75d3
This is port of related CLs:
9d40326830c2bd407427889c554adeb915ee6b4a
f3cfcd869ded41d25c1f4f4e48e7c374a64f9583
Summary: By placing __PREINIT_ARRAY__, __INIT_ARRAY__, __FINI_ARRAY__
and __CTOR_LIST__ on stack, this change allows PIC w/o relying on text
relocations.
Change-Id: I02a1b496b16aba692f4f9fa998a71efd943689fd
Changed "jump __libc_init" to "call __libc_init" otherwise stack unwinding
past __libc_init may get wrong return address and crash the program or do
wield things. With "call", return address is pushed on stack and unwinding
stops correctly at _start. Note that __libc_init never returns, so this
fix wonʼt affect normal program execution. But just in case it "does"
return, jump to address 0 and halt.
Change-Id: Id194fb32adcbf89ae59939cee33c50b5bbdd36fe
This patch removes all prebuilt C runtime object files from
the ndk/platforms/ directory. We replace them with equivalent
assembly sources lifted from the following directories:
bionic/libc/private/ (for __dso_handle.S and __dso_handle_so.S)
bionic/libc/arch-$ARCH/ (for all others)
Note: This requires that your NDK's gen-platforms.sh script be
capable of rebuilding the object files from sources.
See https://android-review.googlesource.com/36822
The goal here is to make it much easier to update these files,
and track their changes relative to the content of bionic/lib.
For example to fix the following issues in the future:
Change-Id: If4c84e2584b0e58ca3585b034bb8a13a8add8ab9
http://code.google.com/p/android/issues/detail?id=26911http://code.google.com/p/android/issues/detail?id=23203
This is a minor update to two ARM-specific kernel headers.
- <asm/ptrace.h>: Add two new constants
- <asm/user.h>: Add 'struct vfp_user' and 'struct vfp_user_exc'
The x86 asm headers define __u64 regardless of __STRICT_ANSI__.
The linux/videodev2.h header requires __u64 to be defined, thus
this fixes compiling with -std=c99 when including the
linux/videodev2.h header.
In glibc, the asm/types.h header defines __u64 regardless of
__STRICT_ANSI__.
This commit copies the updated header from bionic into the ndk
platform headers.
We don't use these since NDK r5, since we now provide
customized versions of the library under
$NDK/sources/android/libthread_db
Change-Id: I2e3103b85c14e75a00ba9cece7a872d2156f5ef9
Remove the prebuilt system shared libraries and unified symbol files
from development/ndk. We don't need them anymore:
- the unified symbol files are replaced by separate functions/variables
symbol list, which were added in a previous commit, i.e.:
libc.so.txt --> libc.so.functions.txt
libc.so.variables.txt
- the shared libraries are now generated on the fly by the NDK
gen-platforms.sh script, from the functions/variables symbol lists.
Note that we need to keep the static libraries and runtime objects,
they are required to build the cross-toolchains and target binaries.
Change-Id: Ifa0a7f2d741ed32b80216561ca3f17e67df06ce9
This change introduces separate symbol lists for functions
and variables of each NDK system shared library.
Note that we don't remove the unified symbol files yet. This
will be done later when we complete other changes under ndk/,
namely the ability to generate platforms trees containing shell
libraries generated directly from them.
These files were generated using the following:
cd development/ndk
for DIR in platforms/*/*/lib; do
for ARCH in arm x86; do
$NDK/build/tools/gen-system-symbols $DIR $DIR/../symbols
done
done
This means that the symbol lists were generated by parsing the
existing prebuilt shared libraries under platforms/ and extracting
their function and variable names.
Change-Id: Ie1e791d98260a7f0d8d2e9f71323a7ea448f2dd4
Turns out that updating crtbegin_so.o and crend_so.o is not
enough for the standalone toolchain. We also need to update
the object files used to generate static and dynamic
executables.
This fixes the standalone toolchain NDK tests.
Change-Id: Ibf113b09766f00b30895951a5639343728be3f3a
Turns out that the previously commited versions of these files do not
allow for proper linking with a patched toolchain. With -shared, gcc complains
that:
.preinit_array section is not allowed in DSO
So use the versions from android-9/arch-arm instead, which seems to work fine.
Change-Id: I9aeaab449ddad058451c7d6493c983ab2ed1c4eb
This change adds crtbegin_so.o and crtend_so.o under
platforms/android-3/arch-arm/lib.
This is in preparation of another toolchain patch that will require
these files for all platform versions (for now, they are only defined
starting from android-9).
Note that these files are just copies of the existing ones, named
crtbegin_dynamic.o and crtend_android.o respectively.
The NDK build script will automatically use the new files if it finds
them, so shouldn't need to be updated.
Change-Id: I6a446266b54b871cd957dfd737054b302678b2d3
This updates the static C library version provided with
the NDK to the version from the AOSP gingerbread-release
branch, more specifically using the platform/bionic.git SHA1 of:
3f14ff34dfbd00fcffb18b10a1a3e17e2cc5ebdf
This file is only used to rebuild a gdbserver binary. This version
contains changes necessary to fix gdbserver crashing issues on
certain Honeycomb devices.
You will need to rebuild the NDK gdbserver binary after this patch
is submitted (see build/tools/build-gdbserver.sh --help).
Change-Id: Iab7ff707a9bdbdca0d0fd017178e25da9d48e43d
This change removes the declaration of functions that are not
implemented by our various versions of our C library.
The corresponding declarations are moved inside #if 0 .. #endif
blocks (so it becomes easy to remember that they are missing)
Also refresh the headers a little (i.e. adding a few missing decl
and macros, remove C++ comments, etc)
See http://code.google.com/p/android/issues/detail?id=7807
Change-Id: I4ae1b1f3a181419eee2004c41b54768cc15e896f
NOTE: The missing decl are still there but encased in #if 0 .. #endif
blocks (to make it easier to implement them later). There are
a few exceptions in order to build STLport and libstdc++-v3
properly.
This commit removes duplication of system headers per platform, i.e. remove
copies of common headers like <stdlib.h> from arch-arm/usr/include and arch-x86/usr/include
and move them to a common include directory. More specifically:
- common headers: android-N/arch-A/usr/include --> android-N/include
- arch-specific headers: android-N/arch-A/usr-include --> android-N/arch-A/include
- arch-specific libs: android-N/arch-A/usr/lib --> android-N/arch-A/lib
Change-Id: Ifdba5038d108901931f3e3a7c14ebe6270d2d276
NOTE: This also contains careful separation of API-level-specific headers.
For example, platforms/android-5/include/pthread.h contains new function
declarations that are not available when using platforms/android-3/include/pthread.h
NOTE: The NDK's build-platforms.sh script has been updated to understand the new
layout. This change in develeopment/ndk does not change the layout of
platform files under $NDK/platforms after build-platforms.sh is called.
We now rely instead on the content of $NDK/sources/cxx-stl/system/include
that is automatically used if a module has C++ sources.
Change-Id: I4319d9260fcf9fb31c59c2f21ca64b536725d4f5
The idea is to allow developing the NDK in the open, while
having the platforms and samples under a private branch until
the corresponding release are open-sourced.
Change-Id: Iee995fb6c4d3ee1387dea7486e599e079c9e4c6d