The LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX are
GLibc-specific macros. Move their declarations from
<pthread.h> to <limits.h> where they belong.
Change-Id: I597465b99893706ade82069238f60df73d8e236e
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 patch improves the formatting of <pthread.h> as exposed by the NDK:
- change '#if __cplusplus' into '#ifdef __cplusplus'
- change C++-style comment into C-style comment
Change-Id: Ib093058e8d7a7554d8329a40e102cde11d065932
- Cleanup declaration of lseek64() to use off64_t instead of loff_t
- Cleanup declaration of prctl() to use variable number of arguments
The cleanups are performed to better match upstream.
Change-Id: I3c9420e328c3772bbb57dc9108dc879aa698a981
This patch fixes some formatting issues in <sys/cdefs.h>:
- change '#if __STDC_VERSION__ > xxx' into '#if defined(__STDC_VERSION__) && __STDC_VERSION > xxx'
- add __LIBC_HIDDEN__ definition (not technically required, but makes comparing the headers with upstream easier)
This fixes two minor issues with recent updates to the IPv6 related headers:
- add missing <linux/ipv6.h> kernel header
- avoid conflict in netinet/in6.h, the macro is already defined by <linux/in6.h>
The atomic operations exported by the platform's C library do not
provide full memory barriers. This can result in incorrect results
when NDK machine code linked against them runs on multi-core devices.
While the bug has been fixed in the platform, this NDK header change
ensures that any source code that includes <sys/atomics.h> will end
up using a correct implementation of these functions, based on the
corresponding GCC builtins.
These builtins always provide a full barrier and have reasonable
performance. Application developers who depend on <sys/atomics.h>
should recompile their unmodified sources against this version
of the NDK as soon as possible.
This patch contains a minor update to the netinet headers from the C library.
Most of the changes come from later platform release, but can be safely back-ported
to previous API levels since they don't change the ABI:
- <netinet/icmp6.h>, <netinet/ip6.h>: new headers
- <netinet/in.h>: now always include <linux/ipv6.h> by default
- <netinet/in6.h>: add macros: IN6_IS_ADDR_ULA, IN6ADDR_LOOPBACK_INIT
- <netinet/ip.h>: add macro: IPTOS_MINCOST
- <net/if_ether.h>: always include <sys/types.h> by default.
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.
Both functions are part of the C library since Android 1.5 / API level 3
but were missing a declaration in <time.h>, so add then here
+ Fix first parameter from 'int' to 'clockid_t' for clock_getres()
and clock_gettime()
Fixes http://code.google.com/p/android/issues/detail?id=20140
Change-Id: Ic2191d5eb54475c149b9a6b8f3ba55bc8ed4643f
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
This patch updates the definition of JNIEXPORT in <jni.h> to
use the "default" ELF visibility attribute for JNI_OnLoad and
any function that uses the macro for its definition.
This is handy when a developer wants to use hidden visibility
by default by using a compiler flag like -fvisibility=hidden
in its Android.mk or custom build script.
Change-Id: I95112932731216a9a4986820a1875edfb3f52e5b
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 change sanitizes the x86-specific platform headers and libraries.
It does two things:
- Remove the stuff under android-3/arch-x86
- Update the content of android-9/arch-x86 from a recent AOSP
full_x86-eng build (see caveats below).
Some files appear to move because they didn't change (e.g. kernel headers).
This change was generated by following these steps:
1/ Build full_x86-eng from the AOSP tree
2/ From $ANDROID_ROOT/ndk, run:
build/tools/dev-system-import.sh --direct --arch=x86 9
3/ Under $ANDROID_ROOT/development/ndk, do:
git rm -r android-3/arch-x86
git add android-9/arch-x86
git checkout -- android-9/include
git ls-files -o | xargs rm
git commit
IMPORTANT:
The AOSP tip-of-tree used to generate these files
includes post-Gingerbread changes !!
The final version of the android-9/arch-x86 files will have to
be generated from the gingerbread branch after we back-port all
x86-support changes to it.
These binaries are thus not final, but can be used to generate
working experimental NDK packages, including prebuilt GNU libstdc++
and STLport binaries that implement -fstack-protector correctly.
Change-Id: I260896185a098b9b356bd26f492692e4a4f66f8f
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
Fix the stdint.h header for C++ inclusion. The limit and constant related macros
should only be defined if __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS are
defined, respectively.
Change-Id: I85b00ed857f40b9c17d530f1405f0f098c5f10f3
If compiling userland code with -std=c99, the current header produces an
error. The content of this header originally is a kernel internal header,
where asm() is acceptable. In a header visible to userland, this should be
__asm__ instead.
This change is done for all newly extracted headers by the extraction
script, by https://review.source.android.com/19406, which was recently
merged.
Change-Id: I69332124a56577673a14e84cd7d9a4462c307724