Compare commits

..

1689 Commits

Author SHA1 Message Date
Dmitriy Ivanov
dec4de456c Merge "Correct way to specify additional dependencies" 2014-10-17 20:19:18 +00:00
Dmitriy Ivanov
4a9e1937c5 Correct way to specify additional dependencies
Previous one was not covering all the targets

Bug: 17548097
Change-Id: I425e0f8d6e5a43feabd29dcb327049b82754d249
2014-10-17 11:47:18 -07:00
Dmitriy Ivanov
5281e1fb15 Merge "Fix misleading comment." 2014-10-16 17:54:02 +00:00
Dan Albert
90aa7e374f Merge "Only use <atomic> for C++11 and newer." 2014-10-16 16:19:44 +00:00
Dan Albert
8bb12127e6 Merge "Don't use an STL for libm." 2014-10-16 15:56:32 +00:00
Dan Albert
3ce0769aa5 Only use <atomic> for C++11 and newer.
Any pre-C++11 clients of stdatomic.h that use libc++ are being forced
over to <atomic>, which they don't have the language support to use.

Change-Id: I62445c1f2541410a1569498c09433c7196635537
2014-10-16 07:52:51 -07:00
Dan Albert
e91d9cd4ad Don't use an STL for libm.
The default is none right now, but this will be needed when the
default becomes libc++.

Change-Id: Ib022adac2b9dc08fbfae830908128043cfffb91e
2014-10-16 07:44:47 -07:00
Dmitriy Ivanov
f5e0258268 Merge "Ignore DT_BIND_NOW (0x18)" 2014-10-15 23:46:26 +00:00
Dmitriy Ivanov
ea6eae182a Ignore DT_BIND_NOW (0x18)
Bug: 17552334
Change-Id: Ibe93fd3d6580f369f9a6ef8d235bf0df00fe7607
2014-10-15 22:57:14 +00:00
Robert Grosse
4544d9f9bf Fix misleading comment.
Change-Id: I9e2aa6c2ba938c8f8d7c74eba32d313c866c77b2
2014-10-15 14:32:19 -07:00
Dan Albert
71cbcdcf94 Merge "We don't actually need all of libc++ here." 2014-10-15 19:59:09 +00:00
Dan Albert
a7c2e0bad6 We don't actually need all of libc++ here.
All we're actually interested in is the unwinder. Since that's now a
separate library, just use that.

Change-Id: If86071a0d850da961336a58147b70369ace7bd12
2014-10-14 14:19:34 -07:00
Elliott Hughes
97df16ba5c Merge "Add clock_settime and clock_nanosleep." 2014-10-14 03:07:43 +00:00
Haruki Hasegawa
1816025684 Add clock_settime and clock_nanosleep.
Add the missing prototypes, fix the existing prototypes to use clockid_t
rather than int, fix clock_nanosleep's failure behavior, and add simple
tests.

Bug: 17644443
Bug: https://code.google.com/p/android/issues/detail?id=77372
Change-Id: I03fba369939403918abcabae9551a7123953d780
Signed-off-by: Haruki Hasegawa <h6a.h4i.0@gmail.com>
2014-10-13 17:04:10 -07:00
Dmitriy Ivanov
c229705051 Merge "Add glibc alias for NT_PRFPREG" 2014-10-13 22:08:52 +00:00
Dmitriy Ivanov
a6bee4df4c Add glibc alias for NT_PRFPREG
Also fix comment style for DF_1_ constants

Change-Id: I7c3ed1d834f0a2b85ee8cc8016c79020955084f8
2014-10-13 15:03:27 -07:00
Christopher Ferris
083769a3df Merge "Return total footprint, not high water mark." 2014-10-13 19:48:35 +00:00
Christopher Ferris
fee09e556f Return total footprint, not high water mark.
The mallinfo usmblks value returned by dlmalloc is a little misleading.
It's not the current max, it's the historical high water mark. This
leads to dumpsys meminfo producing native memory numbers that don't add up.
Change this to the real total footprint, not this high water mark.

Bug: 17265653

(cherry pick from commit f4ada9c9ce)

Change-Id: I2fba10285859dccfe8331063c9be14cc169f2d91
2014-10-13 12:45:35 -07:00
Dan Albert
94571f9ade Merge "Use LOCAL_CXX_STL to select libc++_static." 2014-10-13 19:09:00 +00:00
Dan Albert
90a29db0f4 Use LOCAL_CXX_STL to select libc++_static.
Directly adding the library to LOCAL_STATIC_LIBRARIES thwarts a few
build system checks.

Change-Id: Ib23c43badfa85de21c691f79ccdcc2cbe2a89b33
2014-10-13 11:20:29 -07:00
Dan Albert
4c0862474e Merge "Fix some formatting so GitHub displays it nicely." 2014-10-11 00:48:33 +00:00
Dan Albert
472cce5c98 Fix some formatting so GitHub displays it nicely.
Change-Id: Id6ce9a61bebd98544c85e5780147715c73d0e78b
2014-10-10 17:14:37 -07:00
Dan Albert
8c3901b299 Merge "Improve documentation for testing and coverage." 2014-10-10 18:59:03 +00:00
Dan Albert
efee1ce46a Improve documentation for testing and coverage.
Also rename HACKING.txt to README.md so it will display on the GitHub
mirror.

Change-Id: I70157a4ad262700212bf9afd87253d195c7013a9
2014-10-10 11:45:19 -07:00
Elliott Hughes
2698f9ef84 Merge "Catch up on upstream's round/roundf/roundl." 2014-10-10 17:29:52 +00:00
Elliott Hughes
14538ca75e Catch up on upstream's round/roundf/roundl.
Not sure how we missed these, but better late than never...

Change-Id: Ib08d1bb6e340a1907cbeb1cbe220e33f70642bdc
2014-10-10 10:21:43 -07:00
Christopher Ferris
62a665a605 Merge "Add back symbols to fix Greed for Glory franchise." 2014-10-10 05:25:26 +00:00
Christopher Ferris
78ba823033 Add back symbols to fix Greed for Glory franchise.
Bug: 17813018

(cherry picked from commit c891e24073)

Change-Id: I4e891c2dbad9ea00d2377c5175317d9ae3840153
2014-10-09 22:23:50 -07:00
Elliott Hughes
8dd3b65f2d Merge "Sync libm with upstream." 2014-10-10 01:26:18 +00:00
Elliott Hughes
488268b134 Sync libm with upstream.
Change-Id: I3b4e2c9c6ce6c5934f270a51ce5eb9154c5805d5
2014-10-09 16:20:37 -07:00
Elliott Hughes
e9c216fca5 Merge "Fix pthread_attr_getstack under valgrind." 2014-10-09 21:17:41 +00:00
Elliott Hughes
9afb2f2106 Fix pthread_attr_getstack under valgrind.
valgrind seems to mess with the stack enough that the kernel will
report "[stack:pid]" rather than "[stack]" in /proc/self/maps, so
switch to the task-specific file instead to force "[stack]". (There
are two conditions in the kernel code that decides which form to
output.)

Bug: 17897476
Change-Id: Iff85ceb6d52e8716251fab4e45d95a27184c5529
2014-10-09 14:01:47 -07:00
Christopher Ferris
d0944d9ed3 Merge "Re-add dlmalloc for 32 bit." 2014-10-09 18:50:32 +00:00
Christopher Ferris
f183f95946 Re-add dlmalloc for 32 bit.
It turns out that appportable has a version that calls dlmalloc directly.
Re-add the dlmalloc symbol for 32 bit only as a compatibility shim that
calls malloc.

Bug: 17881362

(cherry pick commit from c9734d24d9)

Change-Id: Iee9a777f66a1edb407d7563a60792b767ac4f83a
2014-10-09 11:47:01 -07:00
Dan Albert
8a7f8387b3 Merge "Use snprintf(3) instead of sprintf(3)." 2014-10-09 00:32:11 +00:00
Dan Albert
ca75f9cdeb Use snprintf(3) instead of sprintf(3).
This change should probably be made upstream as well, but they have a
note about not using it because it isn't available on all systems.

Change-Id: I6d8404c031bd2f486532ced55d94bbb4a4cd2e71
2014-10-08 17:10:26 -07:00
Dan Albert
72d72d9126 Merge "Replace uses of sprintf(3) with snprintf(3)." 2014-10-08 23:44:48 +00:00
Ying Wang
0c0e728bd8 Merge "Build dlext_testzip as custom module." 2014-10-08 23:43:50 +00:00
Ying Wang
667853d477 Build dlext_testzip as custom module.
Use $(BUILD_SYSTEM)/base_rules to build it as custom module, so that
it's exposed to utilities like mm/mmma etc.

Bug: 17887283
Change-Id: Idd7b62d08e4d56331a3ff15da6aa46eae8c41898
2014-10-08 16:38:58 -07:00
Dan Albert
cfd8c45725 Replace uses of sprintf(3) with snprintf(3).
At -00, the compiler warns about sprintf(3), and it is promoted to an
error by -Werror.

Change-Id: Ibb380d27d7eb09dda8ac785be2478d656b379190
2014-10-08 16:12:27 -07:00
Dmitriy Ivanov
ac3c94d031 Merge "Fix mma build: 'cd bionic && mma' case" 2014-10-08 22:39:21 +00:00
Dmitriy Ivanov
51166d3aa2 Fix mma build: 'cd bionic && mma' case
Bug: 17887283
Change-Id: If2015f2361348eac8c53aed3f8715077b79ce2f5
2014-10-08 15:36:56 -07:00
Elliott Hughes
0511534dcb Merge "Don't silently return EINVAL for a NULL sem_t*." 2014-10-08 22:21:13 +00:00
Elliott Hughes
bfeef2d3a9 Merge "Use ln(1) rather than cp(1) to set up host /system for testing." 2014-10-08 22:17:19 +00:00
Elliott Hughes
75129ae9f3 Don't silently return EINVAL for a NULL sem_t*.
Bug: 17571197
Change-Id: Ied31d8de87fc10d20dc338be0457e9a4ddb9a0a5
2014-10-08 15:11:44 -07:00
Elliott Hughes
3ea4d56ed4 Use ln(1) rather than cp(1) to set up host /system for testing.
The trouble with cp is that if you're running a command directly (because
you're using gdb, say), you need to make sure you've copied the linker
and shell again if you've done a rebuild that caused a change there.

Change-Id: I312da30c0f92b515967e854e0faba272c961ecc7
2014-10-08 14:56:27 -07:00
Elliott Hughes
1364101067 Merge "Fix compile-time tests for LP64." 2014-10-08 20:31:10 +00:00
Elliott Hughes
b4b15c63a1 Fix compile-time tests for LP64.
Change-Id: Ib9bec5c6c77c55679d64c2bc15ab70979c40e66c
2014-10-08 13:21:29 -07:00
Dan Albert
5cc5c5ea0b Merge "Add basic compile time tests for sn?printf." 2014-10-08 20:04:27 +00:00
Dan Albert
2fbb1b653e Add basic compile time tests for sn?printf.
Bug: 17782583
Change-Id: I6443537c643d1cc6b4a8f2dab5c364f2fbc1faa3
2014-10-08 13:02:53 -07:00
Elliott Hughes
5a3ca37458 Merge "Revert "Work around a bug in Immersion's libImmEmulatorJ.so."" 2014-10-08 16:40:58 +00:00
Dan Albert
c9e4f2de0a Merge "Inline helpers need to be exported unmangled." 2014-10-08 00:01:08 +00:00
Dan Albert
658727e111 Inline helpers need to be exported unmangled.
__open_2() is used by the fortify implementation of open(2) in
fcntl.h, and as such needs an unmangled C name. For some reason
(inlining?), this doesn't cause problems at the default optimization
level, but does for -O0.

The rest of these didn't cause build failures, but they look suspect
and probably will, we just haven't caught them yet.

Bug: 17784968
Change-Id: I7391a7a8999ee204eaf6abd14a3d5373ea419d5b
2014-10-07 16:46:47 -07:00
Elliott Hughes
3d773274ad Revert "Work around a bug in Immersion's libImmEmulatorJ.so."
This reverts commit 7d3f553f98.

Change-Id: I8909b6aa1d97e9a61dbe95a2d91b9fbe336b58f0
2014-10-07 23:31:06 +00:00
Elliott Hughes
e8d9057e30 Merge "Work around a bug in Immersion's libImmEmulatorJ.so." 2014-10-07 23:08:12 +00:00
Elliott Hughes
7d3f553f98 Work around a bug in Immersion's libImmEmulatorJ.so.
This library calls pthread_mutex_lock and pthread_mutex_unlock with a NULL
pthread_mutex_t*. This gives them (and their users) one release to fix things.

Bug: 17443936
Change-Id: I3b63c9a3dd63db0833f21073e323b3236a13b47a
2014-10-07 16:02:11 -07:00
Dan Albert
eeb9aa02b7 Merge "Use snprintf instead of sprintf." 2014-10-07 18:38:11 +00:00
Dan Albert
b0fd55608e Use snprintf instead of sprintf.
At -O0, the attribute warning on sprintf is actually triggered (why
doesn't this happen with -Os?!) and promoted to an error by -Werror.
asctime64_r() is a non-standard function, but the IBM docs state that
the buffer is assumed to be at least 26 characters wide, and the
format string does limit to that (assuming a 4 digit year, also
defined by the IBM docs).

http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxbd00/asctimer.htm

Change-Id: I1c884474a769aa16c53e985c3d8d694c478c1189
2014-10-07 11:28:47 -07:00
Dmitriy Ivanov
6d2dd6a740 Merge "Fix 2nd arch prefix application" 2014-10-07 17:04:24 +00:00
Dmitriy Ivanov
75d66dd9a7 Fix 2nd arch prefix application
Bug: 17887283
Change-Id: I7b3b2332212fe416d6b5f5c2e5c1e07605ba09aa
2014-10-07 09:46:46 -07:00
Christopher Ferris
81fca35672 Merge "Force export symbols on all x86 variants in libc." 2014-10-06 23:45:03 +00:00
Christopher Ferris
6869d26ad9 Force export symbols on all x86 variants in libc.
For silvermont, the __popcountsi2 symbol does not get exported by libc.
But for atom, this symbol is exported. Since we already exported this symbol
for previous releases, it's better to just follow through and force
the export, but only for 32 bit. x86 64 bit will not export this symbol.

Bug: 17681440

(cherry picked from commit d11eac3455)

Change-Id: I93704c721d98d569922f606f214069bda24872ba
2014-10-06 16:41:46 -07:00
Nick Kralevich
b5cba6081b Merge "cdefs.h: add artificial attribute to FORTIFY_SOURCE functions" 2014-10-06 23:21:04 +00:00
Nick Kralevich
1aaa17802c cdefs.h: add artificial attribute to FORTIFY_SOURCE functions
Otherwise the gcc compiler warning doesn't show up.

Add -Wno-error to fortify related tests. Fortify related tests
are expected to be examples of bad programs, and in many
cases shouldn't compile cleanly. Rewriting them to compile
cleanly isn't feasible nor desirable.

Bug: 17784968
Change-Id: I93bececa7444d965f18c7c27d46e7abce5c49a02
2014-10-06 15:11:52 -07:00
Dan Albert
9969fecad2 Merge "Add compile time test infrastructure for bionic." 2014-10-06 19:45:32 +00:00
Dmitriy Ivanov
f4320e867c Merge "Resolve "unused DT entry" warnings for x86_64" 2014-10-06 19:07:58 +00:00
Dan Albert
f04a8bc226 Add compile time test infrastructure for bionic.
Actual tests to follow...

Bug: 17782583
Change-Id: I22857f19899c3b39dbc2e5473ad3be1a8a291139
2014-10-06 11:38:01 -07:00
Dmitriy Ivanov
513e29e16f Resolve "unused DT entry" warnings for x86_64
Change-Id: I3a2c87bf6e6259313cd9203389623f13b7405ef3
2014-10-06 11:32:19 -07:00
Dmitriy Ivanov
6d569b9201 Merge "Add file_offset parameter to android_extinfo" 2014-10-06 17:19:39 +00:00
Dmitriy Ivanov
07e5bc152d Add file_offset parameter to android_extinfo
Bug: 17762003
Change-Id: I8fb267a3155acef3dba534038cf5d1ef00d7154b
2014-10-06 10:02:34 -07:00
Nick Kralevich
a6eef3be10 Merge "Revert "cdefs.h: add artificial attribute to FORTIFY_SOURCE functions"" 2014-10-06 00:40:07 +00:00
Nick Kralevich
884a3de60f Revert "cdefs.h: add artificial attribute to FORTIFY_SOURCE functions"
Broke the build.

In file included from frameworks/rs/cpu_ref/rsCpuCore.cpp:36:
system/core/include/cutils/properties.h:118:1: error: unknown attribute '__artificial__' ignored [-Werror,-Wunknown-attributes]
__BIONIC_FORTIFY_INLINE
^
bionic/libc/include/sys/cdefs.h:537:110: note: expanded from macro '__BIONIC_FORTIFY_INLINE'
#define __BIONIC_FORTIFY_INLINE extern __inline__ __always_inline __attribute__((gnu_inline)) __attribute__((__artificial__))
                                                                                                             ^
1 error generated.
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libRSCpuRef_intermediates/rsCpuCore.o] Error 1
This reverts commit 9b543ffeac.

Change-Id: I6a1198747505dcb402b722887c1bfbc3a628a8b8
2014-10-06 00:39:47 +00:00
Nick Kralevich
558ec8103b Merge "cdefs.h: add artificial attribute to FORTIFY_SOURCE functions" 2014-10-06 00:10:48 +00:00
Nick Kralevich
db6fea86a5 Merge "further cleanup memcpy fortify implementation" 2014-10-05 16:43:24 +00:00
Nick Kralevich
b84f667e93 further cleanup memcpy fortify implementation
Change-Id: I0380f3c8ca8f9bb8a206accd839c32c9daf13c56
2014-10-05 06:52:24 -07:00
Nick Kralevich
9b543ffeac cdefs.h: add artificial attribute to FORTIFY_SOURCE functions
Otherwise the gcc compiler warning doesn't show up.

Delete some unittests. These unittests no longer compile cleanly
using -Wall -Werror, and rewriting them to compile cleanly
isn't feasible.

Bug: 17784968
Change-Id: I9bbdc7b6a1c2ac75754f5d0f90782e0dfae66721
2014-10-04 22:01:41 -07:00
Nick Kralevich
ae97a776ea Merge "string.h: remove unused variable" 2014-10-04 22:38:09 +00:00
Nick Kralevich
48be71d02b string.h: remove unused variable
Change-Id: I08b7dab1b374ad427fcbee4183f2c7d93d0199a9
2014-10-04 15:20:00 -07:00
Elliott Hughes
4ef0e59f33 Merge "Reimplement clock(3) using clock_gettime(3)" 2014-10-04 01:57:42 +00:00
Alex Van Brunt
8d0b2dbf21 Reimplement clock(3) using clock_gettime(3)
Unlike times(), clock_gettime() is implemented as a vDSO on many architectures.
So, using clock_gettime() will return a more accurate time and do so with less
overhead because it does have the overhead of calling into the kernel.

It is also significantly more accurate because it measures the actual time in
nanoseconds rather than the number of ticks (typically 1 millisecond or more).

Bug: 17814435
Change-Id: Id4945d9f387330518f78669809639952e9227ed9
2014-10-03 18:54:28 -07:00
Dmitriy Ivanov
d5df4124bb Merge "Add RTLD_NODELETE flag support" 2014-10-02 21:47:29 +00:00
Hans Boehm
2d111d9eb1 Merge "Make memory_order_acquire visible in global namespace" 2014-10-01 19:16:50 +00:00
Christopher Ferris
b19bd93f8b Merge "Add stpcpy assembler version." 2014-10-01 18:16:14 +00:00
Dmitriy Ivanov
1b20dafdbe Add RTLD_NODELETE flag support
Bug: https://code.google.com/p/android/issues/detail?id=64069
Change-Id: Ie5f90482feae86391172be4b32d6cb7d76f446fb
2014-10-01 11:09:37 -07:00
Elliott Hughes
cadccfd708 Merge "Update bionic to tzdata 2014h." 2014-10-01 17:20:34 +00:00
Elliott Hughes
89fd32362b Merge "Fix update-tzdata.py to rebuild icu4c .dat file." 2014-10-01 17:00:23 +00:00
Christopher Ferris
7d849ac378 Add stpcpy assembler version.
For generic, continue to use the C version of the code.

Bug: 13746695
Change-Id: I77426a70b06131f2373bb51265bea1240bb3f101
2014-09-30 19:23:26 -07:00
Hans Boehm
76ac4d0853 Make memory_order_acquire visible in global namespace
We were missing that using directive when including <atomic>.

Bug:17736764
Change-Id: Ie8ca92a952749415567bcd5fa21d56629a364660
2014-09-30 18:35:04 -07:00
Dan Albert
81156d93c5 Merge "Add coverage flag for libm." 2014-10-01 01:28:25 +00:00
Elliott Hughes
0c8fb51e6b Update bionic to tzdata 2014h.
From the release notes:

  Changes affecting past time stamps

    America/Jamaica's 1974 spring-forward transition was Jan. 6, not Apr. 28.

    Shanks says Asia/Novokuznetsk switched from LMT (not "NMT") on 1924-05-01,
    not 1920-01-06.  The old entry was based on a misinterpretation of Shanks.

    Some more zones have been turned into links, when they differed
    from existing zones only for older time stamps.  As usual,
    these changes affect UTC offsets in pre-1970 time stamps only.
    Their old contents have been moved to the 'backzone' file.
    The affected zones are: Africa/Blantyre, Africa/Bujumbura,
    Africa/Gaborone, Africa/Harare, Africa/Kigali, Africa/Lubumbashi,
    Africa/Lusaka, Africa/Maseru, and Africa/Mbabane.

Bug: 17731498
Change-Id: If65b740d4e3a67075cca770655a1df17952c3da0
2014-09-30 17:35:38 -07:00
Elliott Hughes
f8896c6c93 Fix update-tzdata.py to rebuild icu4c .dat file.
Bug: 17731498
Change-Id: I4c810507c0ca9883dde1bece14530db80485b8f6
2014-09-30 17:30:01 -07:00
Dan Albert
12e3f22c7c Add coverage flag for libm.
Change-Id: I195d38c5e1f50d1cc6d4353dc8857f11b803b7a3
2014-09-30 16:56:43 -07:00
Elliott Hughes
252c1ac973 Merge "Update our FreeBSD realpath(3) to upstream head." 2014-09-30 23:55:57 +00:00
Dmitriy Ivanov
701cf9419b Merge "Fix mips build" 2014-09-30 23:42:24 +00:00
Dan Albert
e04aa450c2 Merge "Clean up the pthread key tests." 2014-09-30 23:41:06 +00:00
Elliott Hughes
31e072fc9b Update our FreeBSD realpath(3) to upstream head.
Change-Id: I8c89728184ecd2c1a28a05cefa84a5037d28b552
2014-09-30 16:40:41 -07:00
Dmitriy Ivanov
ecf532fa1c Fix mips build
Change-Id: I4454e69a982f239b168678c5a681d1078b4bd4f1
2014-09-30 16:30:22 -07:00
Dan Albert
c4bcc75f09 Clean up the pthread key tests.
The previous pthread_key_create_many test was really
pthread_key_create_all, which has proven very difficult to test
correctly (because it is affected by any other parts of the system using
pthread keys, and that can vary with test ordering). It also tested
expected values of PTHREAD_KEYS_MAX and the associated sysconf() value,
rather than those being in their own test.

Instead, split this test into a few distinct tests:

 * pthread.pthread_keys_max
 * pthread._SC_THREAD_KEYS_MAX_big_enough_for_POSIX
 * pthread.pthread_key_many_distinct
     * We actually didn't have a test to ensure that the keys we were
       creating were distinct.
 * pthread.pthread_key_EAGAIN
     * Make sure pthread_key_create() will _eventually_ fail with
       EAGAIN, not at a (sometimes incorrectly) predetermined maximum.

Change-Id: Iff1e4fdcc02404094bde0418122c64c227cf1702
2014-09-30 15:40:14 -07:00
Dmitriy Ivanov
1f7d5ac538 Merge "Fix unused DT entry warnings." 2014-09-30 22:14:33 +00:00
Dmitriy Ivanov
6cdeb5234d Fix unused DT entry warnings.
DT_STRSZ Implement strtab boundary checks
 DT_FLAGS_1 Warn if flags other than DF_1_NOW|DF_1_GLOBAL are set

Bug: 17552334
Change-Id: Iaad29cd52f5b2d7d2f785fb351697906dc1617d9
2014-09-30 14:41:29 -07:00
Dan Albert
0481471b1b Merge "Switch benchmarks and tests to libc++." 2014-09-30 17:30:57 +00:00
Dan Albert
e49491ada4 Merge "Ignore multiple symbol definition errors." 2014-09-30 17:30:52 +00:00
Dan Albert
3a5aeba4bd Switch benchmarks and tests to libc++.
Change-Id: I3b9c8f8c14a1e227e67ae1977cc29b0e8fccef5d
2014-09-30 10:28:30 -07:00
Dan Albert
d9898c5b82 Ignore multiple symbol definition errors.
libc and libc++ both define std::nothrow. libc's is a private symbol,
but this still causes issues when linking libc.a and libc++.a, since
private isn't effective until it has been linked. To fix this, just
allow multiple symbol definitions for the static tests.

Change-Id: Idbf19fefda47298c39360e3f5b6242b0b1a52fcc
2014-09-30 10:28:30 -07:00
Dmitriy Ivanov
9997daa0ff Merge "Return has_DT_SYMBOLIC flag." 2014-09-30 16:40:27 +00:00
Andrew Hsieh
b104be321f Merge "Remove arch-mips64/bionic/__get_sp.S" 2014-09-30 00:01:02 +00:00
Andrew Hsieh
b0c0037370 Remove arch-mips64/bionic/__get_sp.S
__get_sp.S doesn't exist

Change-Id: Id84f8904c8022c683263a317a18fabeb50fed992
2014-09-30 07:55:32 +08:00
Christopher Ferris
85a932c0c9 Merge "Cleanup arm assembly." 2014-09-29 23:12:39 +00:00
Christopher Ferris
c8bd2abab2 Cleanup arm assembly.
Remove the old arm directives.
Change the non-local labels to .L labels.
Add cfi directives to strcpy.S.

Change-Id: I9bafee1ffe5d85c92d07cfa8a85338cef9759562
2014-09-29 15:53:10 -07:00
Dmitriy Ivanov
96bc37f2e1 Return has_DT_SYMBOLIC flag.
This reverts commit 8f61d99183

 Despite the fact that static linker does all the work while linking
 -Bsymbolic executables, according to the SCO doc following DT_SYMBOLIC
 and DF_SYMBOLIC flags is still a requirement for the dynamic linker
 as well.

 (see http://www.sco.com/developers/gabi/2012-12-31/ch5.dynamic.html)

Change-Id: I23f6a5e9b662e40cdbc462b64feff912431e800c
2014-09-29 12:10:36 -07:00
Dan Albert
73e6c9b393 Merge "Static libc++ is being renamed libc++_static." 2014-09-29 16:08:35 +00:00
Dan Albert
188d093993 Static libc++ is being renamed libc++_static.
Change-Id: I1596110e4ed7e8f9ab9e2605dfcd9fd0489ca0d1
2014-09-27 09:22:07 -07:00
Dan Albert
7ca5c4b99b Merge "Make __aeabi_*() symbols weak." 2014-09-27 00:19:14 +00:00
Dan Albert
98ab0c52f5 Merge "Add a dummy libdl.a." 2014-09-27 00:19:05 +00:00
Elliott Hughes
d644fecc8e Merge "Fix gdb could not get shared library list issue" 2014-09-26 23:01:00 +00:00
Ningsheng Jian
e93be99da0 Fix gdb could not get shared library list issue
Get dynamic flags from phdr table's correct entry rather the first
entry, so that the following DT_DEBUG entry can be set.

Also fix the undefined reference to LoadTask::deleter issue under gcc
-O0 option.

Bug: 17524778
Change-Id: I9c679af197b034761fb739d6c980e628ff2ab84c
2014-09-26 22:58:57 +00:00
Dan Albert
690211fcf8 Make __aeabi_*() symbols weak.
This is needed to avoid multiple symbol definitions when linking with
libstdc++ or with compiler-rt.

Change-Id: I2f713bcff113222f0d2538e49691e715d8a8475d
2014-09-26 15:36:14 -07:00
Dan Albert
a4ed64d4c3 Add a dummy libdl.a.
Change-Id: I4b30b8875f14352bae2948ab8cf544ae818795ab
2014-09-26 15:23:07 -07:00
Christopher Ferris
aa66e88280 Merge "Add __memcpy_chk assembly for 64 bit." 2014-09-26 20:39:21 +00:00
Christopher Ferris
8cf61dab5f Add __memcpy_chk assembly for 64 bit.
Bug: 17623887
Change-Id: I443723bc941b40f84884b330d222baabee01f868
2014-09-26 12:47:04 -07:00
Dan Albert
852d4fbbe9 Merge "Prevent benchmarks from being optimized away." 2014-09-25 22:52:53 +00:00
Dan Albert
055a59c3ed Prevent benchmarks from being optimized away.
Change-Id: I2d27b39ecdfc50e78098314567c295a2f113f8d3
2014-09-25 15:43:48 -07:00
Elliott Hughes
17e7d3208c Merge "Re-expose more stdio implementation details for LP32." 2014-09-25 03:08:23 +00:00
Elliott Hughes
abefc93ff3 Re-expose more stdio implementation details for LP32.
Keeps a variety of apps running.

(cherry-pick of 5def2f5aecd968e4022b0afbe4441fa7ba3e7c7e.)

Bug: 17047819
Change-Id: I55882ec95f2b59a5df76e5a89c23aa315609e01d
2014-09-24 20:07:10 -07:00
Christopher Ferris
a864e72b56 Merge "Fix sys_stat.mkfifo when not run as root." 2014-09-24 23:56:06 +00:00
Christopher Ferris
528ad742c6 Fix sys_stat.mkfifo when not run as root.
It's not allowed for a shell user to create a fifo in /data/local/tmp.
Make the test do nothing if not run as root.

Bug: 17646702

(cherry picked from commit 6c69afdb6d)

Change-Id: Ia3a862ed4586413b7bb393557ab57e0a7141d888
2014-09-24 16:50:30 -07:00
Elliott Hughes
567d3fcb7e Merge "Switch to OpenBSD fopen/fclose." 2014-09-24 20:24:48 +00:00
Elliott Hughes
4fcfd3a474 Merge "Sync with current upstream getopt_long.c." 2014-09-24 20:24:19 +00:00
Elliott Hughes
af12924f67 Sync with current upstream getopt_long.c.
Change-Id: I269195aa581a688fd3eb99552d506b8f5f6a8395
2014-09-24 12:39:34 -07:00
Elliott Hughes
5a69da8d7a Switch to OpenBSD fopen/fclose.
This means all our stdio implementation is now the OpenBSD implementation.
The only thing we lose is the STDIO_THREAD_LOCK calls but they were no-ops
anyway.

We should probably talk to upstream about this. Either fix the locking or,
preferably, encourage them to move away from this pooling (especially since
there's no eviction policy).

Bug: 17154680
Change-Id: Ie2523e444a7d0965b8d141d57e3e11f6432d5b9a
2014-09-24 11:14:36 -07:00
Elliott Hughes
f05410edc6 Merge "Sync with upstream findfp.c." 2014-09-24 17:48:59 +00:00
Elliott Hughes
c08c25b4c9 Sync with upstream findfp.c.
Change-Id: Ib298f46de0c4d0fd4ce0a9b456c163e8b8b06342
2014-09-24 10:32:30 -07:00
Dan Albert
21db6ff108 Merge "Coverage configs for bionic." 2014-09-24 17:28:04 +00:00
Dan Albert
4a6e71100e Merge "Add a dummy atexit(3) to the linker." 2014-09-24 17:27:38 +00:00
Dan Albert
c2d39088d8 Coverage configs for bionic.
Bug: 17553780
Change-Id: Iee7d0c210e2379e71e0c1e4e7058bce23f61e8cd
2014-09-24 10:26:41 -07:00
Dan Albert
9a05e3818a Add a dummy atexit(3) to the linker.
This is needed when building the linker against a libc that was built
with coverage information.

Bug: 17553780
Change-Id: If131002e067dd7768fc657c30e62c42a45c05ace
2014-09-24 10:26:41 -07:00
Dan Albert
fc5a93f7a2 Merge "Fix incorrect parameter types for locale funcs." 2014-09-24 16:00:07 +00:00
Elliott Hughes
ebf37e3886 Merge "Switch to OpenBSD flags.c." 2014-09-24 04:50:45 +00:00
Christopher Ferris
04643c181c Merge "Remove the unnecessary generic-neon code." 2014-09-24 04:01:23 +00:00
Elliott Hughes
a71b4c3f14 Switch to OpenBSD flags.c.
Change-Id: I0a35e5bd9f8edba27e0c73e5c8150636346d6a81
2014-09-23 20:02:42 -07:00
Elliott Hughes
c57e5c8289 Merge "CLOEXEC support in fdopen, freopen, and mkostemp/mkostemps." 2014-09-24 01:49:06 +00:00
Christopher Ferris
2169e17482 Remove the unnecessary generic-neon code.
Change-Id: Ib75c33caafd76750ec1aca3a74dec5e4b881e965
2014-09-23 18:31:45 -07:00
Elliott Hughes
31165edf57 CLOEXEC support in fdopen, freopen, and mkostemp/mkostemps.
Change-Id: I74ea88e0d4973d6ab3c57da7d8bb643c31592b14
2014-09-23 18:21:52 -07:00
Dan Albert
3c5037f1b3 Fix incorrect parameter types for locale funcs.
strtoll(3), strtoull(3), wcstoll(3), and wcstoull(3) all take an _int_
as a base, not a size_t. This is an ABI compatibility issue.

Bug: 17628622
Change-Id: I17f8eead34ce2112005899fc30162067573023ec
2014-09-23 15:32:24 -07:00
Elliott Hughes
87b6906f6e Merge "Pull in upstream fixes to reject invalid bases." 2014-09-23 21:59:15 +00:00
Elliott Hughes
b05ec5ae93 Pull in upstream fixes to reject invalid bases.
Also add tests to make sure the full set works correctly.

Change-Id: I3e7f237f12c9c93e1185a97c9717803e7e55a73c
2014-09-23 14:53:10 -07:00
Elliott Hughes
8642165344 Merge "Sync with some upstream OpenBSD #include cleanup." 2014-09-23 21:27:29 +00:00
Elliott Hughes
0ab5fd9a5a Merge "Switch to OpenBSD insque/remque/killpg." 2014-09-23 21:26:27 +00:00
Elliott Hughes
49eed7db79 Switch to OpenBSD insque/remque/killpg.
Change-Id: Ie02290ad3187b1c1596dd776fd1c8a743a55f7ef
2014-09-23 14:06:56 -07:00
Elliott Hughes
08dc9d83a2 Sync with some upstream OpenBSD #include cleanup.
Change-Id: Ibcd7adb19e9a6b9ad8c24d77e23935f19f56a144
2014-09-23 13:55:15 -07:00
Elliott Hughes
93951cfa96 Merge "Fix a couple more cases of missing CLOEXEC." 2014-09-23 01:19:52 +00:00
Elliott Hughes
0dc39f9952 Fix a couple more cases of missing CLOEXEC.
The debuggerd case can probably never happen, because you're crashing at this
point anyway. The system property one seems possible though.

Change-Id: Idba6a4f1d68587ec5b320d1e25f0b6a987ea32a0
2014-09-22 17:43:09 -07:00
Elliott Hughes
e8a95624b6 Merge "Test pthread_cleanup_push(3)/pthread_cleanup_pop(3)." 2014-09-22 23:28:32 +00:00
Elliott Hughes
34c987a6dd Test pthread_cleanup_push(3)/pthread_cleanup_pop(3).
Change-Id: I5a623fa1e1da55f11d51f3a9bdfa0627698c486f
2014-09-22 16:27:19 -07:00
Elliott Hughes
b2da456253 Merge "Clean up fpathconf(3)/pathconf(3)." 2014-09-22 22:50:11 +00:00
Elliott Hughes
a186b2e0ca Clean up fpathconf(3)/pathconf(3).
fpathconf(3) and pathconf(3) can share code. There's no such
header file as <pathconf.h>. glibc/POSIX and BSD disagree about where
the _POSIX_* definitions should go.

Change-Id: I4a67f1595c9f5fbb26700a131178eedebd6bf712
2014-09-22 22:49:40 +00:00
Elliott Hughes
d9cb0ed281 Merge "Unit test for abort(3)." 2014-09-22 21:46:56 +00:00
Elliott Hughes
60452a211c Unit test for abort(3).
Change-Id: I021604b977572801f228a193741624df26e76d72
2014-09-22 14:41:30 -07:00
Elliott Hughes
9f423c554a Merge "Use the uapi fs magic in <sys/vfs.h>." 2014-09-22 16:51:07 +00:00
Elliott Hughes
c296e4f151 Use the uapi fs magic in <sys/vfs.h>.
Change-Id: I712b856a6d786bba400c9a8d08f596b826403731
2014-09-22 09:47:21 -07:00
Elliott Hughes
413de5b0d4 Merge "Add semaphore tests, fix sem_destroy." 2014-09-20 01:34:11 +00:00
Elliott Hughes
04303f5a8a Add semaphore tests, fix sem_destroy.
Bug: https://code.google.com/p/android/issues/detail?id=76088
Change-Id: I4a0561b23e90312384d40a1c804ca64ee98f4066
2014-09-19 17:37:06 -07:00
Christopher Ferris
e716044918 Merge "Remove references to MALLOC_LEAK_CHECK." 2014-09-20 00:29:09 +00:00
Christopher Ferris
6fe376d392 Remove references to MALLOC_LEAK_CHECK.
This define isn't really used any more.

Bug: 17378595
Change-Id: I39722b83cd98955a3a2514577de34a239524617f
2014-09-19 17:15:12 -07:00
Elliott Hughes
adc01348ee Merge "Add greg_t for arm64." 2014-09-19 18:01:23 +00:00
Elliott Hughes
8e4d371091 Add greg_t for arm64.
This was already present for the other architectures. I think we skipped
this because glibc seems to have an incorrect definition (int rather than
long), but the kernel has the sane definition (just not in a uapi header).

Change-Id: I0d47a424b505804389853dd8632693dad55a3907
2014-09-19 10:31:49 -07:00
Dan Albert
13d6023aac Merge "Exclude libstdc++ from linked libraries." 2014-09-18 23:43:24 +00:00
Christopher Ferris
d5e1c583a6 Merge "Move to v3.16.3 kernel headers." 2014-09-18 21:34:43 +00:00
Elliott Hughes
fb8d60f743 Merge "Fix lgamma_r/lgammaf_r/lgammal_r for -0." 2014-09-18 21:28:35 +00:00
Christopher Ferris
653676dde8 Move to v3.16.3 kernel headers.
Change-Id: Ife491bd7630b853a78532dd74e4644438256a3a1
2014-09-18 13:14:58 -07:00
Elliott Hughes
755318548d Fix lgamma_r/lgammaf_r/lgammal_r for -0.
Upstream has implemented lgammal/lgammal_r for ld128, and fixed the
sign problem we reported with all the lgamma*_r functions and -0.

Bug: 17471883
Change-Id: Ibb175d9cab67efae75f1010796fd44c9ba6ce4fc
2014-09-18 11:23:58 -07:00
Elliott Hughes
82e71085c2 Merge "The nextafter functions use the wrong next representable value" 2014-09-18 15:51:46 +00:00
Jingwei Zhang
90be6c5fc5 The nextafter functions use the wrong next representable value
From C99 standard: “The nextafter functions determine the next representable value, in the type of the function,
after x in the direction of y, where x and y are first converted to the type of the function”.
The next representable value of 0.0 in direction of -1.0 is -4.9406564584124654e-324, not 0.0.

Similar thing holds for nextafterf, nextafterl, nexttowardf, nexttoward, and nexttowardl.
The tests pass either way, since the error is within the tolerance, but how it is written is wrong.

Change-Id: I1338eeffe3de8031a48f46e1b07146bc07dc2f0a
Signed-off-by: Jingwei Zhang <jingwei.zhang@intel.com>
Signed-off-by: Mingwei Shi <mingwei.shi@intel.com>
2014-09-19 00:50:00 +08:00
Elliott Hughes
6ced005123 Merge "Stack unwinding unit tests." 2014-09-18 15:49:30 +00:00
Elliott Hughes
bee1993a14 Stack unwinding unit tests.
Bug: 17436734
Change-Id: I1e98da7eaeab646b448fb3f2b683973dddc319b0
2014-09-17 19:52:14 -07:00
Christopher Ferris
0bd28a43da Merge "Update kernel uapi headers to v3.16.1." 2014-09-18 00:18:46 +00:00
Christopher Ferris
ba8d4f460b Update kernel uapi headers to v3.16.1.
Other changes to support the new headers:

- Remove the flock64 structure it is defined in the new headers.
- Update the syscalls to correspond with the headers.

Change-Id: I49a6b07e8b2bfffb67be71b07b58e4e6848fcc09
2014-09-17 17:05:17 -07:00
Dmitriy Ivanov
6a310f4ad6 Merge "Temporary disable DL_WARNs for unused DT_*" 2014-09-17 23:56:45 +00:00
Dmitriy Ivanov
1b77423eff Temporary disable DL_WARNs for unused DT_*
Bug: 17552334
Change-Id: I2f7b5e4b4d1db96e812a7f86adc929e113d4c11a
2014-09-17 16:46:40 -07:00
Dmitriy Ivanov
77784cb9b7 Merge "Add Android*.mk files to additional dependencies" 2014-09-17 23:01:49 +00:00
Dmitriy Ivanov
bf50e2645d Add Android*.mk files to additional dependencies
Bug: 17548097
Change-Id: Ie0d9c8f33459320008f561217c54eba42d283b47
2014-09-17 15:55:01 -07:00
Elliott Hughes
03fef1f511 Merge "Fix some 32-bit-isms in <stdio.h>." 2014-09-17 22:22:32 +00:00
Elliott Hughes
2ad11a96a1 Fix some 32-bit-isms in <stdio.h>.
(cherry-pick of 2d80400a9e8454038a3ec29959436184be0c4c65.)

Bug: 17157793
Change-Id: I8290e240b92e5617f4c12c0eacad6e622e677b6a
2014-09-17 15:21:10 -07:00
Elliott Hughes
2f5cf100a8 Merge "Pull input.h from v3.16.1 kernel headers." 2014-09-17 22:18:48 +00:00
Christopher Ferris
e2d86feb7b Pull input.h from v3.16.1 kernel headers.
(cherry-pick of 027d2717d067c3706f22bf84dc1226ede7c1566d.)

Bug: 17407564
Change-Id: Idcfc40a7254605280e3d5474c61ae1ab7b2b7b51
2014-09-17 15:18:21 -07:00
Dan Albert
3ec67de051 Exclude libstdc++ from linked libraries.
Also explicitly add libstdc++ includes for necessary targets.

Change-Id: If712ba0ae7908d8147a69e29da5c453a183d6540
2014-09-17 14:22:36 -07:00
Elliott Hughes
36a5aa057c Merge "Use the kernel's sa_restorer for aarch64." 2014-09-17 17:04:40 +00:00
Elliott Hughes
56433ee2a2 Merge "Clean up the architecture-specific makefiles." 2014-09-17 16:36:47 +00:00
Dmitriy Ivanov
e7c9a387fa Merge "Fix 64bit build" 2014-09-17 06:36:19 +00:00
Dmitriy Ivanov
f240aa8089 Fix 64bit build
Change-Id: I6ef55b5951270c46ee5e9a11385bd09e33a9f969
2014-09-16 23:34:20 -07:00
Dmitriy Ivanov
34ac60ca16 Merge "Fix some unused DT_ warnings" 2014-09-17 05:28:30 +00:00
Elliott Hughes
7c02d9428c Clean up the architecture-specific makefiles.
Group things appropriately and name each group.

Change-Id: I0da45eb0ccde19c31d5e984d0e6eb3dad26630dc
2014-09-16 19:06:31 -07:00
Dmitriy Ivanov
4a6e9a835a Fix some unused DT_ warnings
* DT_PLTGOT - ignored for non-mips
 * DT_RELCOUNT/RELACOUNT - ignored
 * DT_RELENT/RELAENT - sanity checks
 * DT_SYMENT - sanity check
 * DT_SONAME - ignore for now.

Change-Id: Ied90748d12f733a84f6c38a1250567a2f77608b7
2014-09-16 18:19:36 -07:00
Elliott Hughes
17cc8e539a Merge "No arm source refers to SOFTFLOAT." 2014-09-16 23:45:40 +00:00
Elliott Hughes
b1a6c319c4 No arm source refers to SOFTFLOAT.
So why bother #defining it?

Change-Id: I539e91916cee082cacac594ddf628419b737fa9d
2014-09-16 16:27:35 -07:00
Elliott Hughes
1cff9a8964 Use the kernel's sa_restorer for aarch64.
gdb was happy with what we had, but libgcc and libunwind weren't.
libgcc is happy with the kernel's restorer (because of the extra nop),
though libunwind looks like it's going to need code changes regardless.

We could make our restorer more like the kernel's one, but why bother
when we can just let the kernel supply the canonical one?

Bug: 17436734
Change-Id: I330fa5e68f23b1cf8133aa552896657b0b873ed3
2014-09-16 15:49:50 -07:00
Dmitriy Ivanov
aea393c096 Merge "Remove has_DT_SYMBOLIC flag" 2014-09-16 22:37:37 +00:00
Dmitriy Ivanov
8f61d99183 Remove has_DT_SYMBOLIC flag
From the elf-spec: "Symbolically bound shared objects are
  identified by the .dynamic entry DT_SYMBOLIC. This tag is
  informational only; the runtime linker processes symbol
  lookups from these objects in the same manner as any
  other object."

Change-Id: I4aae0e502ed9fac096fbf076f4d6b2e055d784f6
2014-09-16 15:26:47 -07:00
Elliott Hughes
380a3be757 Merge "Fix 32-bit arm unwinding through signal frames." 2014-09-16 21:17:20 +00:00
Elliott Hughes
148dff3ec6 Fix 32-bit arm unwinding through signal frames.
gdb was already okay; libgcc and libunwind need a little extra help.

Bug: 17436734
Change-Id: I1f5108f9877373be078554a1ea4938aa4436204e
2014-09-16 14:10:53 -07:00
Calin Juravle
370704d69d Merge "Add benchmarks for pthread_rw_locks" 2014-09-16 17:31:39 +00:00
Calin Juravle
837a962bf5 Add benchmarks for pthread_rw_locks
Benchmarks for the following sequences:
1) pthread_rwlock_rdlock -> pthread_rwlock_unlock
2) pthread_rwlock_wrlock -> pthread_rwlock_unlock

Change-Id: I8d87d4d8afab8637ea7ff5d23a0b3a81d6d40835
2014-09-16 18:02:30 +01:00
Elliott Hughes
5cba3c6f8e Merge "Fix signal trampolines." 2014-09-16 15:19:06 +00:00
Dmitriy Ivanov
2997ae83d5 Merge "Fix dlsym() to take into account RTLD_GLOBAL/LOCAL" 2014-09-16 01:27:56 +00:00
Dmitriy Ivanov
e8ba50fe0d Fix dlsym() to take into account RTLD_GLOBAL/LOCAL
Symbols from libraries opened with RTLD_LOCAL (default)
  should not be visible via dlsym(RLTD_DEFAULT/RTLD_NEXT, .)

Bug: 17512583
Change-Id: I1758943081a67cf3d49ba5808e061b8251a91964
2014-09-15 17:39:48 -07:00
Dmitriy Ivanov
0b8f6d592a Merge "Add dlfcn_test to glibc test suite." 2014-09-15 22:12:06 +00:00
Elliott Hughes
36f451a6d9 Fix signal trampolines.
* LP32 should use sa_restorer too. gdb expects this, and future (>= 3.15) x86
  kernels will apparently stop supporting the case where SA_RESTORER isn't
  set.

* gdb and libunwind care about the exact instruction sequences, so we need to
  modify the code slightly in a few cases to match what they're looking for.

* gdb also cares about the exact function names (for some architectures),
  so we need to use __restore and __restore_rt rather than __sigreturn and
  __rt_sigreturn.

* It's possible that we don't have a VDSO; dl_iterate_phdr shouldn't assume
  that getauxval(AT_SYSINFO_EHDR) will return a non-null pointer.

This fixes unwinding through a signal handler in gdb for all architectures.
It doesn't fix libunwind for arm and arm64. I'll keep investigating that...

Bug: 17436734
Change-Id: Ic1ea1184db6655c5d96180dc07bcc09628e647cb
2014-09-15 15:04:14 -07:00
Dmitriy Ivanov
eb27bbae8f Add dlfcn_test to glibc test suite.
Change-Id: I955e4f7dfcc23ea5c767f967b3532dc31663b876
2014-09-15 15:03:15 -07:00
Elliott Hughes
95b0c6a940 Merge "POSIX says <signal.h> gets you ucontext_t." 2014-09-15 17:17:37 +00:00
Dan Albert
2c58104718 Merge "Fix filename in comment in cmath" 2014-09-14 19:33:44 +00:00
m4tx
2214a1ce17 Fix filename in comment in cmath
It looks like the file comment was copy-pasted from ctime. Fixed filename in comment to "math.h".

Change-Id: I27b0c2a7827076a91fc7b63913fad6eee4d6a79e
Signed-off-by: m4tx <m4tx@m4tx.pl>
2014-09-14 16:41:31 +02:00
Elliott Hughes
85ef3b5b80 Merge "Update NOTICE files." 2014-09-13 17:01:08 +00:00
Elliott Hughes
ae51accf22 Merge "Remove an unused file." 2014-09-13 17:00:27 +00:00
Elliott Hughes
5c2264a136 Update NOTICE files.
Change-Id: I37a2c297b318b8e1b1ce8b29a7ccc58ba214708a
2014-09-13 09:42:41 -07:00
Elliott Hughes
5681fe8eae Remove an unused file.
Also remove a reference to it and two other files that have already
been removed in a script --- these files were problematic because they
weren't UTF-8.

Change-Id: Ibf597bac1903c34d8d0fe0a09615c42f24d4f23d
2014-09-13 09:24:28 -07:00
Elliott Hughes
26a8eb50a8 POSIX says <signal.h> gets you ucontext_t.
POSIX also says that ucontext_t's uc_sigmask has type sigset_t.

MIPS64 strace needs this.

The #define is to keep chromium off our lawn; otherwise it tries to redefine
all this stuff itself. We should probably clean that up and remove the #define.

Change-Id: I765d6a765a33dca7db33cd8c40f408dc98e5c95b
2014-09-12 20:47:35 -07:00
Elliott Hughes
73d2059f9b Merge "Explain why clock(3) isn't broken." 2014-09-12 23:52:13 +00:00
Elliott Hughes
f83c208b82 Explain why clock(3) isn't broken.
Bug: 17441123
Change-Id: I6ee9b7f54bab55b1a8760ce9bcaaa6eab1dcc492
2014-09-12 16:33:37 -07:00
Elliott Hughes
21451f5bf6 Merge "Get new coshl, sinhl, and tanhl implementations from upstream." 2014-09-12 23:13:43 +00:00
Elliott Hughes
c729d4f237 Get new coshl, sinhl, and tanhl implementations from upstream.
Change-Id: I92f9cd53d12efb2e0f4f8a9590b9fe42398233f6
2014-09-12 16:09:40 -07:00
Elliott Hughes
a40a16eab1 Merge "Add a test for pthread_gettid_np." 2014-09-12 22:52:38 +00:00
Elliott Hughes
8fb639ca91 Add a test for pthread_gettid_np.
Bug: 17475191
Change-Id: I8c6a2f4ceba2d24a77ae9a21269edce523aea421
2014-09-12 14:43:07 -07:00
Elliott Hughes
69c2d7dc64 Merge "Sync libm with upstream." 2014-09-12 21:07:48 +00:00
Elliott Hughes
460ad7454a Sync libm with upstream.
Change-Id: I8ac8ee52122ee19a2e423c3211092023cb4896eb
2014-09-12 14:00:02 -07:00
Elliott Hughes
e39e47c6b3 Merge "Remove "private/bionic_pthread.h"." 2014-09-12 18:43:05 +00:00
Elliott Hughes
0f001b67fe Remove "private/bionic_pthread.h".
Bug: 17476168
Change-Id: Id642987e641de81e914a28daea4ffe9d11e090ed
2014-09-12 11:35:05 -07:00
Dmitriy Ivanov
d74aa58035 Merge "Fix unload of recursively linked library" 2014-09-12 16:55:42 +00:00
Dmitriy Ivanov
aad92067bf Merge "Reformatting" 2014-09-12 16:50:29 +00:00
Dmitriy Ivanov
66bbf1595c Merge "Refactoring: C++11 style DISABLE_ bionic marcos" 2014-09-12 16:50:05 +00:00
Dmitriy Ivanov
6abf624d12 Reformatting
No functional changes.

Change-Id: If71775e5fc207e91ebd31ba3c5f9d2c13dc8dada
2014-09-12 09:43:13 -07:00
Dmitriy Ivanov
a6ac54a215 Fix unload of recursively linked library
Expanded test for recursive libs. Fixed bug with unnecessary
  soinfo_free of already loaded library.

Change-Id: I2cc19f2650c8b12a35feeac127ef608ebba44d88
2014-09-11 22:40:48 -07:00
Elliott Hughes
8d8a789c49 Merge "Expose __swsetup for LP32 binary compatibility." 2014-09-12 01:27:45 +00:00
Elliott Hughes
5f35710fad Expose __swsetup for LP32 binary compatibility.
(cherry-pick of 7e00b44e80d6e38b8ab86d0ebc86b666c0ac2ef6.)

Bug: 17476127
Change-Id: I0ef1355ac913d782c268a638f88642d6cfc236c2
2014-09-11 18:23:46 -07:00
Dmitriy Ivanov
6487f0d834 Merge "Add IFUNC support for arm64 and IRELATIVE reloc" 2014-09-12 00:40:12 +00:00
Dmitriy Ivanov
9aea164457 Add IFUNC support for arm64 and IRELATIVE reloc
There are number of changes in the way IFUNC related relocations are done:
 1. IRELATIVE relocations are now supported for x86/x86_64 and arm64.
 2. IFUNC relocations are now relying on static linker to generate
    them in correct order - this removes necessety of additional
    relocation pass for ifuncs.
 3. Related to 2: rela?.dyn relocations are preformed before .plt ones.
 4. Ifunc are resolved on symbol lookup this approach allowed to avoid
    mprotect(PROT_WRITE) call on r-x program segments.

Bug: 17399706
Bug: 17177284
Change-Id: I414dd3e82bd47cc03442c5dfc7c279949aec51ed
2014-09-11 16:30:45 -07:00
Elliott Hughes
5920a9ad5f Merge "Add pthread_gettid_np and re-expose __get_thread for LP32." 2014-09-11 23:25:46 +00:00
Elliott Hughes
a4831cb4a3 Add pthread_gettid_np and re-expose __get_thread for LP32.
A lot of third-party code calls the private __get_thread symbol,
often as part of a backport of bionic's pthread_rwlock implementation.
Hopefully this will go away for LP64 (since you're guaranteed the
real implementation there), but there are still APIs that take a tid
and no way to convert between a pthread_t and a tid. pthread_gettid_np
is a public API for that. To aid the transition, make __get_thread
available again for LP32.

(cherry-pick of 27efc48814b8153c55cbcd0af5d9add824816e69.)

Bug: 14079438
Change-Id: I43fabc7f1918250d31d4665ffa4ca352d0dbeac1
2014-09-11 16:22:50 -07:00
Elliott Hughes
ea66004c4a Merge "Fix mips __fadvise64.S build failure." 2014-09-11 17:12:49 +00:00
Elliott Hughes
9990b3973b Fix mips __fadvise64.S build failure.
Bug: 12449798
Change-Id: I0663b741108ba2f1d286904d6414b3ff4d475551
2014-09-11 10:10:08 -07:00
Elliott Hughes
33df10f284 Merge "Add posix_fadvise(3)." 2014-09-11 15:46:44 +00:00
Elliott Hughes
b587f339db Add posix_fadvise(3).
(cherry-pick of 00008263782e484020420c606f7d145fe7d0a4d8.)

Bug: 12449798
Change-Id: I07cbf3f670a0d1304b68148325a774f266b5c433
2014-09-11 08:45:46 -07:00
Lorenzo Colitti
c71483c0b3 Merge "When comparing DNS server configs, also compare number of servers" 2014-09-09 10:22:18 +00:00
Lorenzo Colitti
bce18c9163 When comparing DNS server configs, also compare number of servers
Bug: 16070602
Change-Id: I605f1cca50b08479ebcad290b3bd179f59be8a96
2014-09-09 19:20:26 +09:00
Dmitriy Ivanov
d9ff722661 Refactoring: C++11 style DISABLE_ bionic marcos
Enable the -std=gnu++11 flag for libstdc++ static and
  dynamic libs.

  ScopeGuard uses DISABLE_ macros instead of '= delete';

Change-Id: I07e21b306f95fffd49345f7fa136cfdac61e0225
2014-09-08 17:51:31 -07:00
Dmitriy Ivanov
3c3624f3df Merge "Load libraries in breadth-first order" 2014-09-09 00:49:38 +00:00
Elliott Hughes
671f96cd44 Merge "Ensure __set_errno is still visible on LP32." 2014-09-08 23:47:53 +00:00
Elliott Hughes
011e111d29 Ensure __set_errno is still visible on LP32.
The use of the .hidden directive to avoid going via the PLT for
__set_errno had the side-effect of actually making __set_errno
hidden (which is odd because assembler directives don't usually
affect symbols defined in a different file --- you can't even
create a weak reference to a symbol that's defined in a different
file).

This change switches the system call stubs over to a new always-hidden
__set_errno_internal and has a visible __set_errno on LP32 just for
binary compatibility with old NDK apps.

(cherry-pick of 7efad83d430f4d824f2aaa75edea5106f6ff8aae.)

Bug: 17423135
Change-Id: I6b6d7a05dda85f923d22e5ffd169a91e23499b7b
2014-09-08 16:46:50 -07:00
Elliott Hughes
201f36d23b Merge "Don't expose non-standard basename_r and dirname_r in LP64." 2014-09-08 23:46:04 +00:00
Elliott Hughes
cf5fc80c3e Don't expose non-standard basename_r and dirname_r in LP64.
(cherry-pick of f0e9458ea596227720fa745df15f5357f6c0c8f6.)

Bug: 17407423
Change-Id: I47fe499a4c396bf09d7b78fd828728d04777398b
2014-09-08 16:44:48 -07:00
Dmitriy Ivanov
14669a939d Load libraries in breadth-first order
This patch fixes the problem with symbol search order
  for dlsym(RTLD_DEFAULT/RTLD_NEXT, .) by loading libraries
  and ld_preloads in correct order.

Bug: https://code.google.com/p/android/issues/detail?id=74255
Change-Id: If1ba5c807322409faa914e27ecb675e2c4541f0d
Attempt: 2
2014-09-08 13:02:50 -07:00
Elliott Hughes
d3d89f0d28 Merge "Add arc4random_addrandom binary compatibility." 2014-09-08 17:53:04 +00:00
Elliott Hughes
fc829736e1 Add arc4random_addrandom binary compatibility.
This was in <stdlib.h> in older releases. It's no longer used, but we can
preserve backwards compatibility by making it a no-op.

(cherry-pick of 51c8355d5cf4b83ccd2ad250ca4c61a616356c2b.)

Bug: 16205834
Change-Id: Idde7b46df4f253e39675600bcf82352879a716e7
2014-09-08 10:52:28 -07:00
Christopher Ferris
b4673c4102 Merge "Add dlmalloc_usable_size for 32 bit arches." 2014-09-06 20:17:02 +00:00
Christopher Ferris
f903558446 Add dlmalloc_usable_size for 32 bit arches.
Bug: 17337831

(cherry picked from commit 1c365cb494)

Change-Id: Ice100e42eeac4b9c3b77737a546ec33174adcb2f
2014-09-06 13:06:57 -07:00
Ying Wang
e07b4da53d Merge "Use LOCAL_POST_LINK_CMD to insert the objcopy command for linker." 2014-09-05 23:41:25 +00:00
Dmitriy Ivanov
320a01d516 Merge "Revert "Load libraries in breadth-first order"" 2014-09-05 23:36:22 +00:00
Dmitriy Ivanov
498eb18b82 Revert "Load libraries in breadth-first order"
This reverts commit a3ad450a2e.

Change-Id: Ia2b838ad2159c643b80c514849582f4b4f4f40e5
2014-09-05 16:27:54 -07:00
Ying Wang
f9e147b0bf Use LOCAL_POST_LINK_CMD to insert the objcopy command for linker.
Previously we duplicated code in build/core/executable.mk and it's hard
to maintain. LOCAL_POST_LINK_CMD is a clean solution for this.

Bug: 17403674
Change-Id: I8c054bf782af68cf1f88b8d787a78ca74a7968b5
2014-09-05 16:16:35 -07:00
Dmitriy Ivanov
b3ebfecdae Merge "Fix order of soinfo links (repairs libcxx tests)." 2014-09-05 23:11:19 +00:00
Dmitriy Ivanov
b2a30ee8d2 Fix order of soinfo links (repairs libcxx tests).
Change-Id: Iee9de09657351cd6a7512784ca797e4b84cdd98b
2014-09-05 16:01:47 -07:00
Chih-Hung Hsieh
8adace5f2c Merge "Enable clang compilation with libc but not linker." 2014-09-05 18:54:48 +00:00
Chih-Hung Hsieh
b58db8b083 Enable clang compilation with libc but not linker.
Clang is still disabled for x86 and x86_64 long double code,
for x86_64 special assembly instruction, and the linker module.

BUG: 17163651
BUG: 17302991
BUG: 17403674
Change-Id: I43c5f5f0ddc0c2a31918f00b57150dadd8f3f26b
2014-09-05 11:18:35 -07:00
Dmitriy Ivanov
001815ed19 Merge "Reset enviroment for math_tests" 2014-09-05 01:56:44 +00:00
Dmitriy Ivanov
7b956ede3f Reset enviroment for math_tests
Bug: 17390824
Change-Id: I42f4c8d9199a2efe7641f0b0e64580cacb5695da
2014-09-04 18:38:21 -07:00
Elliott Hughes
aca9cae309 Merge "Fix pthread_attr_getstack__main_thread." 2014-09-04 23:20:53 +00:00
Elliott Hughes
27a9aed819 Fix pthread_attr_getstack__main_thread.
There were two problems here:

* This would fail when run with unlimited stack, because it didn't know
  that bionic reports unlimited stacks as 8MiB.

* This would leave RLIMIT_STACK small, causing failures to exec (so the
  popen and system tests would fail).

Change-Id: I5b92dc64ca089400223b2d9a3743e9b9d57c1bc2
2014-09-04 16:09:25 -07:00
Elliott Hughes
c74a7680a4 Merge "Fix mips signed/unsigned signal_test.cpp build breakage." 2014-09-04 22:48:16 +00:00
Elliott Hughes
aa13e839f0 Fix mips signed/unsigned signal_test.cpp build breakage.
Change-Id: I045ce017c0c51e1843193759a2eb6fc5b93e3867
2014-09-04 15:43:10 -07:00
Dmitriy Ivanov
44352f5f7f Merge "Revert "Register __libc_fini as early as possible."" 2014-09-04 21:55:59 +00:00
Dmitriy Ivanov
c0cd9ce5df Merge "Revert "Fix arm64 build"" 2014-09-04 21:55:55 +00:00
Dmitriy Ivanov
4b41555ba5 Revert "Register __libc_fini as early as possible."
This reverts commit e880c736d6.

Change-Id: Ide83e442eb5dbfef5298a15bc602c3fe1dda1862
2014-09-04 21:54:34 +00:00
Dmitriy Ivanov
f0d8970435 Revert "Fix arm64 build"
This reverts commit 5c1a7fdbd5.

Change-Id: Ia5fea0d6a8f59700edce0742e2271b5f02a5d87c
2014-09-04 21:53:14 +00:00
Elliott Hughes
05f0bfd6c5 Merge "Don't mask out SA_RESTORER from sa_flags." 2014-09-04 21:03:34 +00:00
Elliott Hughes
afe58ad989 Don't mask out SA_RESTORER from sa_flags.
glibc doesn't do this, and we probably shouldn't either.

Bug: 16703540
Change-Id: Id5b93c3782e34024a9916463348e8f3caff191bf
2014-09-04 13:54:42 -07:00
Chih-Hung Hsieh
4ee7c325df Merge "Disable Clang, due to x86 LDBL_MANT_DIG errors." 2014-09-04 20:44:34 +00:00
Chih-Hung Hsieh
356a6249d8 Disable Clang, due to x86 LDBL_MANT_DIG errors.
Clang -m32 has incorrect sizeof(long double) = 12.
With -m64, LDBL_MANT_DIG is incorrect 64.

BUG: 17163651
Change-Id: I4b157aa1a8572c3a10aece6070e119a292ab8e83
2014-09-04 12:35:19 -07:00
Elliott Hughes
071bed8091 Merge "_GNU_SOURCE implies _BSD_SOURCE and the latest _POSIX_C_SOURCE." 2014-09-04 17:02:10 +00:00
Elliott Hughes
fc8974b7aa _GNU_SOURCE implies _BSD_SOURCE and the latest _POSIX_C_SOURCE.
This showed up as open_memstream not being visible in <stdio.h>
if only _GNU_SOURCE was defined.

Bug: 17361504
Change-Id: I38f9843f4e6ee770a6325ad50f779bda5495ffca
2014-09-04 08:53:16 -07:00
Dmitriy Ivanov
1737b15937 Merge "Load libraries in breadth-first order" 2014-09-04 00:59:23 +00:00
Dmitriy Ivanov
8f3b8f523e Merge "Fix arm64 build" 2014-09-03 23:36:35 +00:00
Elliott Hughes
58bb54c38b Merge "Add back a dummy arc4random_stir for compatibility." 2014-09-03 23:34:05 +00:00
Dmitriy Ivanov
5c1a7fdbd5 Fix arm64 build
Bug: 14611536
Change-Id: I4f7f4d1f5c0a37ef38fa0956778393f8d7668512
2014-09-03 16:33:08 -07:00
Elliott Hughes
5dea47221a Add back a dummy arc4random_stir for compatibility.
The current arc4random implementation stirs itself as needed, but we
need to keep an arc4random_stir symbol around for binary compatibility.

(cherry-pick of 1e010d60397db706cd3d1c4d5701a2bced441aa8.)

Bug: 17291075
Change-Id: Iaf6171c3ec65c39c1868364d5b35ea280e29a363
2014-09-03 16:30:22 -07:00
Dmitriy Ivanov
450aaa018d Merge "Register __libc_fini as early as possible." 2014-09-03 22:29:59 +00:00
Dmitriy Ivanov
e880c736d6 Register __libc_fini as early as possible.
We want __libc_fini to be called after all the destructors.

Bug: 14611536
Change-Id: Ibb83a94436795ec178fd605fa531ac29608f4a3e
2014-09-03 15:27:29 -07:00
Dmitriy Ivanov
8da304b997 Merge "Make string tests check all alignment combinations" 2014-09-03 22:08:57 +00:00
Dmitriy Ivanov
a3ad450a2e Load libraries in breadth-first order
This patch fixes the problem with symbol search order
  for dlsym(RTLD_DEFAULT/RTLD_NEXT, .) by loading libraries
  and ld_preloads in correct order.

Bug: https://code.google.com/p/android/issues/detail?id=74255
Change-Id: I4cf84c70dbaabe99310230dfda12385ae5401859
2014-09-03 15:06:14 -07:00
Dan Albert
28f1770101 Merge "Don't fail a test just because we aren't root." 2014-09-03 18:37:11 +00:00
Dan Albert
69fb9f3f40 Don't fail a test just because we aren't root.
If the tests are not being run as root, emit a message and don't
continue with the test.

Change-Id: I352e1a4162caaeb18b81b8daf44797009756dcd9
2014-09-03 11:30:21 -07:00
Dmitriy Ivanov
3b10ba6f1b Merge "Add some missing dlclose(.)" 2014-09-03 00:36:22 +00:00
Dmitriy Ivanov
319356e39c Add some missing dlclose(.)
Bug: 17358010
Change-Id: I9e427b7681f1a8fe890b0b47812d9e65ab95c792
2014-09-02 17:31:44 -07:00
Dan Albert
c7de919129 Merge "Start math tests with a clean fenv." 2014-09-02 23:11:42 +00:00
Dan Albert
6676a7d4ee Start math tests with a clean fenv.
We always want the default floating point environment when running these
tests.

Bug: 17358010
Change-Id: I6ca2552e9f2d3e07d7b9dcaf0aec66905401c466
2014-09-02 16:00:10 -07:00
Dan Albert
847e52b9b7 Merge "Prevent a few test pthread keys from leaking." 2014-09-02 22:43:18 +00:00
Dan Albert
1d53ae2a01 Prevent a few test pthread keys from leaking.
Bug: 17358010
Change-Id: Ie718dc215ddfd431650295a1630c1b1716760c3d
2014-09-02 15:24:26 -07:00
Elliott Hughes
ec95a9cf11 Merge "MIPS64 syscall() arguments" 2014-09-02 20:53:31 +00:00
Chris Dearman
296895f1a9 MIPS64 syscall() arguments
The seventh argument for syscall is passed in a register, not on the stack

Change-Id: Idb69fac77d1f710cff5a3ab4ae1259feb61ae69d
2014-09-02 12:41:01 -07:00
Dmitriy Ivanov
86f594b19b Merge "Encapsulate soinfo_link_image and soinfo_relocate" 2014-09-02 19:25:09 +00:00
Dmitriy Ivanov
29bbc9dd4c Encapsulate soinfo_link_image and soinfo_relocate
Also get rid of needed[] array for these functions

Change-Id: I8d12887dbec0724309bb171e6bbd9b9ceb32cc70
2014-09-02 11:47:23 -07:00
Elliott Hughes
4625dd751e Merge "Upgrade bionic to tzdata2014g." 2014-09-02 17:57:10 +00:00
Dmitriy Ivanov
e057b9fc82 Merge "Introduce size-based r/w allocators" 2014-09-02 17:21:51 +00:00
Dmitriy Ivanov
4cafa3ce80 Merge "Implement LinkedList::visit()" 2014-09-02 16:54:14 +00:00
Elliott Hughes
9685c30a23 Upgrade bionic to tzdata2014g.
From the release notes:

  Changes affecting future time stamps

    Turks & Caicos is switching from US eastern time to UTC-4 year-round,
    modeled as a switch from EST/EDT to AST on 2014-11-02 at 02:00.

  Changes affecting past time stamps

    Time in Russia or the USSR before 1926 or so has been corrected by
    a few seconds in the following zones: Asia/Irkutsk,
    Asia/Krasnoyarsk, Asia/Omsk, Asia/Samarkand, Asia/Tbilisi,
    Asia/Vladivostok, Asia/Yakutsk, Europe/Riga, Europe/Samara.  For
    Asia/Yekaterinburg the correction is a few minutes.  (Thanks to
    Vladimir Karpinsky.)

    The Portuguese decree of 1911-05-26 took effect on 1912-01-01.
    This affects 1911 time stamps in Africa/Bissau, Africa/Luanda,
    Atlantic/Azores, and Atlantic/Madeira.  Also, Lisbon's pre-1912
    GMT offset was -0:36:45 (rounded from -0:36:44.68), not -0:36:32.
    (Thanks to Stephen Colebourne for pointing to the decree.)

    Asia/Dhaka ended DST on 2009-12-31 at 24:00, not 23:59.

    A new file 'backzone' contains data which may appeal to
    connoisseurs of old time stamps, although it is out of scope for
    the tz database, is often poorly sourced, and contains some data
    that is known to be incorrect.  The new file is not recommended
    for ordinary use and its entries are not installed by default.
    (Thanks to Lester Caine for the high-quality Jersey, Guernsey, and
    Isle of Man entries.)

    Some more zones have been turned into links, when they differed
    from existing zones only for older time stamps.  As usual,
    these changes affect UTC offsets in pre-1970 time stamps only.
    Their old contents have been moved to the 'backzone' file.
    The affected zones are: Africa/Bangui, Africa/Brazzaville,
    Africa/Douala, Africa/Kinshasa, Africa/Libreville, Africa/Luanda,
    Africa/Malabo, Africa/Niamey, and Africa/Porto-Novo.

Bug: 17277574
Change-Id: Idff4a68e927d49bef1e787af534e1b23b5b8a7fb
2014-09-02 09:51:04 -07:00
Dmitriy Ivanov
a492605849 Implement LinkedList::visit()
Change-Id: Ibd9d133dddf1f2e6e65660e3cd2dacafcc0c84d9
2014-09-02 09:45:40 -07:00
Dmitriy Ivanov
0cd83ebb0e Introduce size-based r/w allocators
Change-Id: I75165fc392e5380124039e6db49b0f559c8a518e
2014-09-01 16:17:05 -07:00
Dmitriy Ivanov
5120bcf9f1 Merge "Look into ld_preloads before current library" 2014-09-01 21:16:42 +00:00
Dmitriy Ivanov
c2048944ff Look into ld_preloads before current library
Change lookup order during relocation so that
 ld_preloads always precede caller (unless caller
 is main executable).

 Asan needs this change in order to intercept libc->libc
 calls.

Bug: 15432753
(cherry picked from commit 05e190c093)

Change-Id: I5bfb58e18015b1ec5b77842dbb37fb122fa1fd1a
2014-09-01 14:14:09 -07:00
Dmitriy Ivanov
11387985d2 Merge "Erase elements in LinkedList::remove_if" 2014-09-01 21:06:32 +00:00
Hans Boehm
e505cc66a6 Merge "Make stdatomic.h work with gcc4.6 host compiler" 2014-08-30 00:49:51 +00:00
Dmitriy Ivanov
4bea498544 Erase elements in LinkedList::remove_if
Change-Id: I5119a78c73ffe780a81c53ab5ff0266d5c82d319
2014-08-29 17:09:24 -07:00
Hans Boehm
32429606bf Make stdatomic.h work with gcc4.6 host compiler
This is needed to make L work correctly, and bionic tests pass
again, after applying the equivalent of
commit 00aaea3645 there.

It makes the preexisting code that uses __sync implementations
much more useful, although we should no longer be exercising that
code in AOSP.

Specifically fixes:

We were invoking __has_extension and __has_builtin for GCC compilations.
They're clang specific. Restructured the tests.

The __sync implementation was not defining the LOCK_FREE macros.

ATOMIC_VAR_INIT was using named field initializations.  These are a
C, not C++, feature, that is not supported by g++ 4.6.

The stdatomic bionic test still failed with 4.6 and glibc with our
questionable LOCK_FREE macro implementation.  Don't run that piece
with 4.6.

In L, this is a prerequisite for fixing:

    Bug:16880454
    Bug:16513433

Change-Id: I9b61e42307f96a114dce7552b6ead4ad1c544eab
2014-08-29 17:03:26 -07:00
Elliott Hughes
bbe06e0da1 Merge "Use __GNUC_PREREQ rather than __GNUC_PREREQ__ to match glibc." 2014-08-29 23:08:01 +00:00
Elliott Hughes
e0c56efddf Use __GNUC_PREREQ rather than __GNUC_PREREQ__ to match glibc.
Bug: 16874785
Change-Id: I8512f8be3fd149d8720c5c3b4657bedd5ce2b1d1
2014-08-29 15:54:11 -07:00
Dmitriy Ivanov
83b637fa28 Merge "Replace NULL with nullptr" 2014-08-29 22:30:07 +00:00
Dmitriy Ivanov
851135bf99 Replace NULL with nullptr
Change-Id: Iad50be617d318ca98883b843229c960ad5b9afa9
2014-08-29 14:13:48 -07:00
Elliott Hughes
1f39afc8d4 Merge "The host prebuilt glibc is 2.11, so remove workarounds for 2.9." 2014-08-29 18:12:36 +00:00
Chih-Hung Hsieh
cc4259ed92 Merge "Ignore all __weak_alias in OpenBSD libC." 2014-08-29 03:10:44 +00:00
Elliott Hughes
f6824b26ae The host prebuilt glibc is 2.11, so remove workarounds for 2.9.
Change-Id: I1072fcebc8b3018580a9d069fe6eca9c4e74e865
2014-08-28 19:28:35 -07:00
Elliott Hughes
29f06943a1 Merge "Add GNU-compatible strerror_r." 2014-08-29 02:26:34 +00:00
Elliott Hughes
416d7ddaff Add GNU-compatible strerror_r.
We already had the POSIX strerror_r, but some third-party code defines
_GNU_SOURCE and expects to get the GNU strerror_r instead.

This exposed a bug in the libc internal logging functions where unlike
their standard brethren they wouldn't return the number of bytes they'd
have liked to have written.

Bug: 16243479
Change-Id: I1745752ccbdc569646d34f5071f6df2be066d5f4
2014-08-28 16:37:09 -07:00
Chih-Hung Hsieh
b6b5cb5389 Ignore all __weak_alias in OpenBSD libC.
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
2014-08-28 15:10:01 -07:00
Elliott Hughes
f4e721dd51 Merge "Have pthread_attr_getstack for the main thread report RLIMIT_STACK..." 2014-08-27 23:43:27 +00:00
Christopher Ferris
af9da4a343 Merge "Replace snprintf calls in linker." 2014-08-27 23:29:18 +00:00
Chih-Hung Hsieh
fbe9d3dfeb Merge "Fix strlen function type for mips." 2014-08-27 23:09:30 +00:00
Christopher Ferris
052fa3a34c Replace snprintf calls in linker.
When enabling debug malloc, the snprintf calls in the linker fails to
update the buffer.

The problem is that snprintf makes a call to pthread_getspecific that
returns a valid pointer, but the data it points to is zero. This should
never happen and causes the snprintf to stop and do nothing.

Temporarily replace snprintf with a different implementation to work
around this issue.

Bug: 16874447
Bug: 17302493

(cherry pick from commit 172955a4e3)

Change-Id: Idca9d417978403d61debfd0434aaa82fd770f33b
2014-08-27 16:01:57 -07:00
Chih-Hung Hsieh
15b914c8f3 Fix strlen function type for mips.
Clang complains about incompatible-library-redeclaration.

BUG: 17302369
Change-Id: I3ae36f24846408c6464b84b5bddb1747e1e4a971
2014-08-27 16:00:46 -07:00
Chih-Hung Hsieh
4f8268e38f Merge "Replace ambiguous cmp instruction with cmpl." 2014-08-27 22:46:07 +00:00
Elliott Hughes
9e4ffa7032 Have pthread_attr_getstack for the main thread report RLIMIT_STACK...
...rather than just what's already mapped in. This seems somewhat
contrary to POSIX's "All pages within the stack described by stackaddr
and stacksize shall be both readable and writable by the thread", but
it's what glibc does.

Bug: 17111575
Change-Id: If9e2dfad9a603c0d0615a8123aacda4946e95b2c
2014-08-27 15:32:01 -07:00
Chih-Hung Hsieh
857fa6b2a3 Replace ambiguous cmp instruction with cmpl.
Clang assembler rejects ambiguous cmp instruction.

BUG: 17302482
Change-Id: I74f49de87464541f9fe6fa288e4093a9fbf37120
2014-08-27 15:04:23 -07:00
Chih-Hung Hsieh
34da32e7dd Merge "Add missing type casts before comparison." 2014-08-27 21:44:12 +00:00
Christopher Ferris
6ecd1cd195 Merge "Use the default unwind code." 2014-08-27 21:21:28 +00:00
Chih-Hung Hsieh
a2c6ae6f84 Add missing type casts before comparison.
BUG: 17300548
Change-Id: Ice9868f36c8fa8cd40bb13741b0e33c8f8d354fd
2014-08-27 13:45:37 -07:00
Christopher Ferris
b78e60e7b7 Use the default unwind code.
This speeds up the debug malloc code by using the original unwinding code.
The only catch is that it has to link in the libc++ arm unwind code or
there will be crashes when attempting to unwind through libc++ compiled
code.

Bug: 16874447

(cherry picked from commit 3f7635f490)

Change-Id: If8a3821cdd95ed481bb496bf2daab449d13790f8
2014-08-27 13:13:21 -07:00
Elliott Hughes
cb322a1168 Merge "call uselocale() before freelocale() to make sure that g_local_key has a valid locale." 2014-08-27 17:27:46 +00:00
Wally Yau
a40fdbd565 call uselocale() before freelocale() to make sure that g_local_key has a valid locale.
For tests that call uselocale(), the locale is stored in the
g_userlocale_key thread-specific key. If freelocale() is called later,
then g_uselocal_key points to a deleted pointer. CTS eventually calls
vfprintf to print the result, which calls MB_CUR_MAX and MB_CUR_MAX
accesses the deleted locale stored in g_uselocale_key, causing unpredictable
errors.

Fixed the tests by calling uselocale() with the old locale before
calling freelocale.

(cherry-pick of 8a46cf0fcf82b8c76e05be7e066ec854f974603a.)

Bug: 17299565
Change-Id: I87efa2a9b16999a11d587f68d3aeedcbe6ac8a2c
2014-08-27 10:26:49 -07:00
Elliott Hughes
64ae11ab76 Merge "Switch to OpenBSD <err.h> implementation." 2014-08-27 17:26:03 +00:00
Elliott Hughes
cc7e5f489f Switch to OpenBSD <err.h> implementation.
Change-Id: Ia950d88871a30f68e74f9ac7dbd87788e128e02f
2014-08-26 17:00:37 -07:00
Hans Boehm
6bfcefe02f Merge "Undefine _Atomic before redefining" 2014-08-26 23:34:49 +00:00
Elliott Hughes
07401c7136 Merge "Switch to OpenBSD daemon(3)." 2014-08-26 23:33:43 +00:00
Elliott Hughes
e5055179fd Switch to OpenBSD daemon(3).
Change-Id: I1fd0be09fdb24aa6f1d945410eba5987f8a949b4
2014-08-26 16:25:19 -07:00
Elliott Hughes
f1e64b5c17 Merge "More cases where libc should use O_CLOEXEC." 2014-08-26 23:23:59 +00:00
Elliott Hughes
f73183f1a3 More cases where libc should use O_CLOEXEC.
Change-Id: Idfa111aeebc5deca2399dae919e8b72eb54c23c0
2014-08-26 16:20:59 -07:00
Elliott Hughes
7b87d441b0 Merge "Switch to OpenBSD res_random." 2014-08-26 23:18:04 +00:00
Elliott Hughes
59de803af9 Merge "libc should use O_CLOEXEC when opening files for its own use." 2014-08-26 23:11:46 +00:00
Dmitriy Ivanov
9f5dee55aa Merge "Remove unnecessary calls to LinkedList::clear()" 2014-08-26 23:00:44 +00:00
Hans Boehm
3e4a0099a1 Undefine _Atomic before redefining
Stdatomic.h was potentially redefining _Atomic, in spite of a
prior definition by <atomic>.  This could cause g++ builds that
included <stdatomic.h> with an available <atomic> header to break.

Change-Id: I562c7115118c0587d594d4d5b62d25101e47bfd8
2014-08-26 15:58:15 -07:00
Elliott Hughes
c674edbf27 libc should use O_CLOEXEC when opening files for its own use.
Change-Id: I159f1d57e0ca090d837f57854fcef5879b8b8248
2014-08-26 15:56:54 -07:00
Dmitriy Ivanov
608217e167 Remove unnecessary calls to LinkedList::clear()
Change-Id: I981d2700cb17322c634b751715543fd33ee49b7c
2014-08-26 15:56:31 -07:00
Dmitriy Ivanov
d2bd3c4717 Merge "Enable __cxa_atexit && __cxa_finalize for linker" 2014-08-26 22:53:16 +00:00
Dmitriy Ivanov
14241402de Enable __cxa_atexit && __cxa_finalize for linker
This allows adding destructors to classes used
 for global variables.

Change-Id: I5e1cd63fe3bf8f66de88cc4f7437cafb350f49b5
2014-08-26 15:44:18 -07:00
Elliott Hughes
c764fb24cc Merge "Fix pthread_getattr_np for the main thread." 2014-08-26 19:53:40 +00:00
Elliott Hughes
57b7a6110e Fix pthread_getattr_np for the main thread.
On most architectures the kernel subtracts a random offset to the stack
pointer in create_elf_tables by calling arch_align_stack before writing
the auxval table and so on. On all but x86 this doesn't cause a problem
because the random offset is less than a page, but on x86 it's up to two
pages. This means that our old technique of rounding the stack pointer
doesn't work. (Our old implementation of that technique was wrong too.)

It's also incorrect to assume that the main thread's stack base and size
are constant. Likewise to assume that the main thread has a guard page.
The main thread is not like other threads.

This patch switches to reading /proc/self/maps (and checking RLIMIT_STACK)
whenever we're asked.

Bug: 17111575
Signed-off-by: Fengwei Yin <fengwei.yin@intel.com>
Change-Id: I1d4dbffe7bc7bda1d353c3a295dbf68d29f63158
2014-08-26 10:36:38 -07:00
Chih-Hung Hsieh
9e307af982 Merge "Add standard throw() spec to delete operators." 2014-08-25 22:08:33 +00:00
Chih-Hung Hsieh
ae558d6b4b Add standard throw() spec to delete operators.
Without these specs, clang will reports mismatch between standard definitions and these declarations/definitions. These specs are ignored when compiled with -fno-exceptions.

BUG: 17136236
Change-Id: I386c712a61dc4fc74dfde45f9ec2d3d037f2e9f1
2014-08-25 21:16:14 +00:00
Hans Boehm
a4a8c4feb8 Merge "Fix, generalize stdatomic.h; improve test." 2014-08-22 22:52:31 +00:00
Hans Boehm
00aaea3645 Fix, generalize stdatomic.h; improve test.
We seem to use this stdatomic.h sometimes, and slightly different prebuilts
at other times, making them all difficult to test, and making it unclear
which one we're testing.  This generalizes the bionic header so that it
can be used directly as the prebuilt header as well.  So long as they
don't diverge again, that should somewhat improve test coverage.

Use the correct builtin for atomic_is_lock_free.

Fix atomic_flag_init.

Turn on atomic tests even with __GLIBC__, since they now appear to pass.

Include uchar.h in stdatomic.h where needed.

Add a basic memory ordering test.

Fix bit-rotted comments in bionic tests makefile.

Change-Id: If6a14c1075b379395ba5d93357d56025c0ffab68
2014-08-22 15:50:17 -07:00
Dmitriy Ivanov
9d34f6a909 Merge "Bump soinfo version" 2014-08-22 20:44:56 +00:00
Dmitriy Ivanov
0d15094287 Bump soinfo version
This includes:
 1. Placing has_ifunc after fields with version = 0
 2. Switch to has_min_version(v) function.
 3. Minor soinfo initialization refactoring (placement new + ctor)

Change-Id: I1bf5fde4d930914012ce5f3ad5acb48217da9b2d
2014-08-22 13:29:18 -07:00
Dan Albert
0b9fa4c9bf Merge "Fix dlmalloc build." 2014-08-22 18:06:36 +00:00
Dan Albert
ef619cc083 Fix dlmalloc build.
Change-Id: Ied542c40867ab443cdd2076bd2e535b00c4854e4
2014-08-22 11:05:48 -07:00
Dan Albert
4756afe3d5 Merge "Implement malloc_info(3)." 2014-08-22 17:39:18 +00:00
Dan Albert
4caa1f0977 Implement malloc_info(3).
Expose jemalloc stats through the malloc_info(3) interface.

Bug: 16874689
Change-Id: I4358ac283002e60ff161107028d1a3fb1e9afb0a
2014-08-22 10:23:12 -07:00
Elliott Hughes
538db6d2e6 Merge "Fix unistd.getpid_caching_and_clone." 2014-08-22 16:28:02 +00:00
Elliott Hughes
2b3b2ecee8 Fix unistd.getpid_caching_and_clone.
This test only works if you're root (strictly: if you have permission to
CLONE_NEWNS), so it's useful to us when we're doing ad hoc testing (since
that's usually done as root), but it's not useful as part of CTS or when
running the tests on the host.

(cherry-pick of 84d0683a824fa02dbaa6d1b56a79223804b54e80.)

Bug: 16705621
Bug: 17170200
Change-Id: Ia92c871b15f7e45fc174bb59bc95540fd00ae745
2014-08-22 09:26:50 -07:00
Dan Albert
2e6c5fc4e9 Merge "Remove _flush_cache(2) for mips64." 2014-08-21 21:51:42 +00:00
Dmitriy Ivanov
2bd88d450e Merge "Run constructors before resolving ifunc functions" 2014-08-21 21:27:52 +00:00
Dmitriy Ivanov
9598b8c415 Run constructors before resolving ifunc functions
Bug: 17177284
Change-Id: I5714b9bc2d1ca8f8711806bfb68da3d524213e99
2014-08-21 14:24:13 -07:00
Dan Albert
47793d6a29 Remove _flush_cache(2) for mips64.
Also remove declaration.

The only user is compiler-rt, and they can replace that call with one to
syscall(2). compiler-rt doesn't currently build on mips64 anyway.

Bug: 11156955
Change-Id: Ieae0ba49c8e7aa50253401fc1d7c2d17bc867d39
2014-08-21 13:32:37 -07:00
Dan Albert
3157211849 Merge "__gnu_basename(3) is accounted for." 2014-08-21 19:14:44 +00:00
Dan Albert
2320b02c7d __gnu_basename(3) is accounted for.
Change-Id: I3836b14a797c4a8d121c6d29d95791ac768257da
2014-08-21 11:36:07 -07:00
Elliott Hughes
d5fbc37119 Merge "Add POSIX-2008 fmemopen, open_memstream, and open_wmemstream." 2014-08-21 00:17:56 +00:00
Elliott Hughes
6b841db2ba Add POSIX-2008 fmemopen, open_memstream, and open_wmemstream.
Bug: 17164505
Change-Id: I59e28a08ff8b6ab632230b11a5807cfd5278aeb5
2014-08-20 17:03:46 -07:00
Elliott Hughes
b6ed54076a Merge "Simplify _ALIGN_TEXT." 2014-08-20 20:25:32 +00:00
Elliott Hughes
0e7f8a9e52 Simplify _ALIGN_TEXT.
Bug: 16872067
Change-Id: I2b622f252c21ce1b344c040f828ab3f4bf9b6c0a
2014-08-20 13:11:58 -07:00
Elliott Hughes
7134fc3089 Merge "Regenerate "services.h" from /etc/services." 2014-08-16 04:28:29 +00:00
Elliott Hughes
c4a1de1ae2 Regenerate "services.h" from /etc/services.
Change-Id: Iec118f9a342b5c1f6ce6d48965798b12a7159ad3
2014-08-20 12:11:31 -07:00
Elliott Hughes
3bcd414b78 Merge "Clean up some of our python scripts." 2014-08-16 04:28:29 +00:00
Elliott Hughes
dc1fb7000a Clean up some of our python scripts.
Change-Id: Ifa75345db43434298cfb6113fbe2f7a33b88c79d
2014-08-20 11:16:11 -07:00
Elliott Hughes
55244a9bdb Merge "Add <stdio_ext.h> for elfutils." 2014-08-19 02:44:29 +00:00
Elliott Hughes
2b021e1066 Add <stdio_ext.h> for elfutils.
Bug: 17139679
Change-Id: I1605ac382dbb6f23b2d874dbb9769f3cde4a6a99
2014-08-20 10:23:52 -07:00
Hans Boehm
b61c50647b Merge "Work around atomic_load(const T*) issues." 2014-08-19 22:32:42 +00:00
Hans Boehm
1e8587a479 Work around atomic_load(const T*) issues.
Bug:17067219
Change-Id: I78e753bcf03464f5f05c3f37e394f2727d282589
2014-08-19 14:50:54 -07:00
Elliott Hughes
c5d6df6f2f Merge "Add in_port_t and move it and in_addr_t to the correct header file." 2014-08-19 15:49:56 +00:00
Elliott Hughes
35d226e05d Add in_port_t and move it and in_addr_t to the correct header file.
No one's reported this, but I saw it in an Android port of fuser(1).

We still have lots of problems in our network headers because we
get most of the structs direct from the kernel, and it doesn't use
types like this (which is why we've got away without this one for
so long). One day we should probably look at cleaning that up, but
doing so can wait.

Change-Id: If15edf0cfc32716fa312d7ed97c48321b760d979
2014-08-19 12:43:50 -07:00
Elliott Hughes
b9d674c8ad Merge "Implement the GNU basename(3) in addition to the POSIX one." 2014-08-19 02:44:29 +00:00
Elliott Hughes
09c39d6df0 Implement the GNU basename(3) in addition to the POSIX one.
Code like perf(1) needs this.

Bug: 11860789
Change-Id: I907eb448052a7b165e4012d74303330d32328cb2
2014-08-19 14:30:30 -07:00
Elliott Hughes
6f4220c49e Merge "Move the meat of <features.h> into <sys/cdefs.h>." 2014-08-19 02:44:29 +00:00
Elliott Hughes
f4c948a9e9 Move the meat of <features.h> into <sys/cdefs.h>.
This way it's a lot harder for us to screw up (since we should always
be including <sys/cdefs.h> anyway).

Bug: 14659579
Change-Id: I23070fff3296b0d1c683bb5e3a6e214146327d53
2014-08-19 11:18:20 -07:00
Elliott Hughes
17f83c93cb Merge "Remove unused defines from <features.h>." 2014-08-19 02:44:29 +00:00
Elliott Hughes
f800969d35 Remove unused defines from <features.h>.
Bug: 14659579
Change-Id: I2ab02b13cafe3faad31248b843d39ab2cdbfeb91
2014-08-19 10:07:00 -07:00
Elliott Hughes
e4fcc3ad2b Merge "Fix _BSD_SOURCE/__USE_BSD." 2014-08-19 02:44:29 +00:00
Elliott Hughes
b810462028 Fix _BSD_SOURCE/__USE_BSD.
Bug: 14659579
Change-Id: I80ec9584f054c02d1078828f6bca759c42bc1d4c
2014-08-19 09:18:03 -07:00
Dmitriy Ivanov
8a76ee821e Merge "Revert "Add support for protected local symbol lookup."" 2014-08-19 02:44:29 +00:00
Dmitriy Ivanov
02aa70589d Revert "Add support for protected local symbol lookup."
This reverts commit d97e9f546e.

Bug: 17107521
(cherry picked from commit 9419420919)

Change-Id: I1a6df946ac8075699e77d68ffa6ac4a21b88e4bf
2014-08-19 05:19:53 -07:00
Dan Albert
2222eae61e Merge "Missing #include <sys/cdefs.h>." 2014-08-16 04:28:29 +00:00
Dan Albert
3a25ab952b Missing #include <sys/cdefs.h>.
Needed for __BEGIN_DECLS/__END_DECLS. Currently fine because it's being
included after other files that do this.

Change-Id: I1f12368fc461f6ef5ca90992cf19f317f0b5d7af
2014-08-19 11:08:02 -07:00
Dan Albert
934c8015d5 Merge "Expose android_set_abort_message()." 2014-08-16 04:20:19 +00:00
Dan Albert
ce6b1abbb1 Expose android_set_abort_message().
Removes the leading underscores from __android_set_abort_message() and
moves its declaration into a public header file.

Bug: 17059126
Change-Id: I470c79db47ec783ea7a54b800f8b78ecbe7479ab
2014-08-18 14:37:42 -07:00
Christopher Ferris
54d24e099c Merge "Fix leak_realloc, copy entire allocation." 2014-08-16 04:08:14 +00:00
Christopher Ferris
6d40d34908 Fix leak_realloc, copy entire allocation.
Bug: 16874447

(cherry picked from commit 5df0839cea)

Change-Id: I9280505c0c1c3b5da24ba590448dcd6e7a230406
2014-08-18 13:10:47 -07:00
Christopher Ferris
5d9e145c62 malloc_usable_size returns the original size.
Bug: 16874447

(cherry picked from commit 59c1ee44d0)

Change-Id: I70839632974367c8b9893fb1f9c5ee4364608470
2014-08-18 13:10:16 -07:00
Christopher Ferris
3c7c9a8d3f Merge "malloc_usable_size returns the original size." 2014-08-16 04:09:33 +00:00
Dan Albert
db2e0247ed Merge "Hide C++ stuff in libc. Put it back in libstdc++." 2014-08-16 04:08:14 +00:00
Dan Albert
fd5ee9aebc Hide C++ stuff in libc. Put it back in libstdc++.
Bug: 17062445
Change-Id: I027b186719654c2865b08c3fa83f90fa00c1e838
2014-08-18 12:01:01 -07:00
Elliott Hughes
0baf2ca34c Merge "Fix <features.h> (_BSD_SOURCE and _GNU_SOURCE)." 2014-08-16 04:03:35 +00:00
Elliott Hughes
5f5cc45cf0 Fix <features.h> (_BSD_SOURCE and _GNU_SOURCE).
<features.h> is supposed to take user-settable stuff like _GNU_SOURCE
and _BSD_SOURCE and turn them into __USE_GNU and __USE_BSD for use in
the C library headers. Instead, bionic used to unconditionally define
_BSD_SOURCE and _GNU_SOURCE, and then test _GNU_SOURCE in the header
files (which makes no sense whatsoever).

Bug: 14659579
Change-Id: Ice4cf21a364ea2e559071dc8329e995277d5b987
2014-08-18 16:04:03 -07:00
Elliott Hughes
205cc41556 Merge "Improve <sys/cdefs.h>." 2014-08-18 21:31:43 +00:00
Elliott Hughes
2cfb4e8e2e Improve <sys/cdefs.h>.
Fix and use __RENAME (and lose ___RENAME --- two underscores should be
enough for anybody). This was the point of this change, because I want
to use __RENAME to support the two basename variants and the two
strerror_r variants.

Lose a bunch of macros that weren't being used.

Lose three dead files from the DNS code.

Change-Id: I3ef645c566b16a52217bc2e68c7d54b37c7c9522
2014-08-18 14:45:42 -07:00
Dmitriy Ivanov
2b6cdb5e45 Merge "Add atexit test for attributed c-tor/d-tor" 2014-08-15 21:23:56 +00:00
Dmitriy Ivanov
4571f31bd4 Add atexit test for attributed c-tor/d-tor
1. Add test for __attribute__((constructor/destructor))
    and static constructor

 2. Compile C++ testlibs with -std=gnu++11

Change-Id: I67f9308144a0c638a51f111fcba8e1933fe0ba41
2014-08-15 14:22:07 -07:00
Hans Boehm
7d05f741e7 Merge "Have stdatomic.h punt to C++ atomic when possible" 2014-08-15 05:01:31 +00:00
Hans Boehm
019d395811 Have stdatomic.h punt to C++ atomic when possible
This is an alternate, somewhat simpler, fix that makes it safe to
include both <atomic> and <stdatomic.h> from C++ code in either order.
It means that C code consistently uses one implementation of atomics
and C++ another.  We still have to make sure that those two
implementations interoperate correctly at runtime; in particular,
any flavor of atomic object needs to be represented exactly like the
underlying type, with the proper alignment constraint.

Bug:17007799
Change-Id: Iffcfc5220d8fa150f89dd083a121b24d23f268fc
2014-08-15 10:38:20 -07:00
Dmitriy Ivanov
1467dfe3e8 Make string tests check all alignment combinations
Reduce randomization of the test by (1) replacing random() & 255
 with hard-coded char and (2) by making State *Iteration function
 visit every possible alignment combination instead of 10 random ones.

Change-Id: I0ff0b4ca817ba9fbbcce53e09b25eb10a1a853c2
2014-08-14 15:05:20 -07:00
Dan Albert
d0cce14364 Merge "Move mtctxres.c to libc_dns.a." 2014-08-12 19:23:43 +00:00
Dan Albert
891ec7a6e4 Move mtctxres.c to libc_dns.a.
Has the effect of making ___mtctxres hidden.

Bug: 17007799
Change-Id: I5aa5f49344ad5ecb33f48737430561b329bcbb0d
2014-08-14 22:50:45 +00:00
Dmitriy Ivanov
8457779b34 Merge "Keep symbols for linker" 2014-08-14 19:49:27 +00:00
Dmitriy Ivanov
ad5e8b5073 Keep symbols for linker
Bug: 17011146
Change-Id: I314e72a1ac9325bf5ea84d52e3d5bc51d8ea00cf
2014-08-14 15:46:36 -07:00
Dan Albert
0d4ccee351 Merge "Change name of MB_CUR_MAX implementation function." 2014-08-14 19:41:13 +00:00
Dan Albert
224ff048ef Change name of MB_CUR_MAX implementation function.
Glibc calls theirs __ctype_get_mb_cur_max. Make ours match to cut down
on differences between bionic and glibc.

Bug: 11156955
Change-Id: Ib7231f01aa9676dff30aea0af25d597bfe07bc73
2014-08-14 13:56:51 -07:00
Dan Albert
104a472958 Merge "Add more functionality to glibc symbol checker." 2014-08-14 19:41:13 +00:00
Dan Albert
76212eeb53 Add more functionality to glibc symbol checker.
Also scan NDK's unwanted symbols list (to show the things that we're
exporting but the NDK isn't. Symbols hidden in the NDK will be marked
with a *.

Add a -u (--unwanted) flag to disable the first two printed groups
(all symbols in bionic, all symbols in glibc). This is helpful when
wanting to grep in the list of unwanted symbols.

Finally, update the list of known differences between us and glibc.

Change-Id: I6fdb4126823098430454763c391bd8cd369a75bb
2014-08-14 14:02:34 -07:00
Dan Albert
9a74e4c15c Merge "Hide __libc_init_vdso()." 2014-08-12 23:11:16 +00:00
Dan Albert
b3aaf398e1 Hide __libc_init_vdso().
Bug: 11156955
Change-Id: I7ee31e1ee2ce479c5746b374a239637d582815fe
2014-08-13 13:11:58 -07:00
Hans Boehm
4f85c6ffd3 Merge "Add memory ordering constraint, convert to C11 atomics" 2014-08-12 19:23:43 +00:00
Dan Albert
1f4c536fd5 Merge "Hide ScopedTrace." 2014-08-12 19:23:43 +00:00
Dan Albert
f2c1e7ee78 Hide ScopedTrace.
Bug: 11156955
Change-Id: I6cddc868d1c6503e30f1ffcf460f45670631d64a
2014-08-13 11:25:01 -07:00
Dmitriy Ivanov
db0785cbf9 Merge "Optimize symbol lookup" 2014-08-13 01:32:01 +00:00
Dmitriy Ivanov
042426ba63 Optimize symbol lookup
Do not run symbol lookup on already visited soinfos
 Not taking into account already visited libraries
 dramatically slows down dlsym in cases when there
 are multiple occurrences of a large library in
 dependency tree.

Bug: 16977077
Change-Id: I1379f30ed8b06758dd1cc76b80833ac8589afa50
2014-08-13 09:21:57 -07:00
Dan Albert
6e3823d37e Merge "Hide __libc_malloc_dispatch." 2014-08-12 19:23:43 +00:00
Dan Albert
edd81faff0 Hide __libc_malloc_dispatch.
Now that -Bsymbolic is fixed, we can hide __libc_malloc_dispatch without
breaking ASAN.

Bug: 11156955
Change-Id: Ia2fc9b046a74e666b33aa6c6c5435f70a63b8021
2014-08-12 16:53:14 -07:00
Dmitriy Ivanov
e942b3ed81 Merge "Added test for ifunc support in dynamic linker." 2014-08-12 19:23:43 +00:00
Dmitriy Ivanov
00c16c1b92 Merge "Label pages mapped by linker_allocator" 2014-08-09 00:45:41 +00:00
Dmitriy Ivanov
51a22a12ab Label pages mapped by linker_allocator
Change-Id: I7e0bf29bc1a480e9be0d1ae573ca1063d90d82ff
2014-08-11 09:22:48 -07:00
Elliott Hughes
4d0f742afe Merge "Fix our x86 PIC_PROLOGUE." 2014-08-09 00:52:40 +00:00
Elliott Hughes
ca5b6a74a7 Fix our x86 PIC_PROLOGUE.
The old definition only worked for functions that didn't use numbered
local labels. Upstream uses '666' not only as some kind of BSD in-joke,
but also because there's little likelihood of any function having
labels that high.

There's a wider question about whether we actually want to go via the
PLT at all in this code, but that's a question for another day.

(cherry-pick of 72d7e667c7e926cb120c4edb53cbf74c652ab915.)

Bug: 16906712
Change-Id: I3cd8ecc448b33f942bb6e783931808ef39091489
2014-08-09 22:18:33 -07:00
Hans Boehm
30214b901e Add memory ordering constraint, convert to C11 atomics
Add an ordering constraint/fence to __system_property_serial.
This slows down a read on a Nexus 5 from about 50 to about 70 ns,
but avoids the possibility of seeing an inconsistent property value.
Use C11 atomic operations where easy and appropriate.
This code remains not fully C++11 memory model conformant, but
I would now expect the generated code to now be correct with current compilers.

Bug:14970171
Change-Id: I0891ff1d0f914ae5c3857e3d76b6a7c8a4a07d83
2014-08-08 11:34:25 -07:00
Brigid Smith
c5a13efa9b Added test for ifunc support in dynamic linker.
ifuncs now work in i386 and x86_64 when called in the same library as
well as in a different library.

Bug:6657325
Change-Id: Ic0c48b1b0a76cb90f36c20c79f68294cc3fd44a1
2014-08-08 11:29:35 -07:00
Dan Albert
a0db464187 Merge "Make __set_errno hidden in asm." 2014-08-08 18:16:13 +00:00
Dan Albert
bc9f9f25bf Make __set_errno hidden in asm.
This fixes the build after the -Bsymbolic change.

Bug: 16853291
Change-Id: I989c9fec3c32e0289ea257a3bd2b7fd2709b6ce2
2014-08-08 15:35:47 -07:00
Dan Albert
3788a1ee8e Merge "Revert "Fix incorrect relocations for x86."" 2014-08-07 18:51:06 +00:00
Dan Albert
3726f9c38b Revert "Fix incorrect relocations for x86."
Bug: 16853291
This reverts commit 512bc52326.
2014-08-08 22:26:47 +00:00
Christopher Ferris
1c5e415f8c Merge "Add a way to disable backtracing in malloc debug." 2014-08-07 17:53:11 +00:00
Christopher Ferris
88a1f520d2 Add a way to disable backtracing in malloc debug.
The property libc.debug.malloc.nobacktrace set to non-zero disables
getting backtracing when using mode 1 or mode 10.

Bug: 16874447

(cherry picked from 49de01a5be)

Change-Id: I6bbefe5420b14991fe84c2f849222dcd7cb592bf
2014-08-08 09:40:17 -07:00
Elliott Hughes
f2d8c357ee Merge "Remove misleading arm/arm64 PIC_SYM." 2014-08-06 23:49:29 +00:00
Elliott Hughes
651a0683ca Remove misleading arm/arm64 PIC_SYM.
Bug: 16823325
Change-Id: Ic8ff3a628bb4cd71361e3a1c2cfde4b3d39c50b1
2014-08-07 11:52:38 -07:00
Christopher Ferris
92f0c91b82 Merge "Create a distinct temp directory for each run." 2014-08-07 15:46:11 +00:00
Christopher Ferris
01bd32e0e4 Create a distinct temp directory for each run.
Modify make__NR_name so that only __ARM_NR_ is exempted from the
__NR_ being prepended. This avoids a case where using a name starting
with __ but is not a valid syscall name in SYSCALLS.TXT does not generate
code that will compile but references the function itself and causes
link errors.

Fix all of the directory references from dir_part1 + dir_part2 to
use os.path.join() instead.

Change-Id: Ib9527eba6f25f26a30c5cb0ad431f3f88a7683cf
2014-08-07 19:33:22 -07:00
Elliott Hughes
d994622ebf Merge "Android is all-PIC/PIE." 2014-08-07 14:59:23 +00:00
Elliott Hughes
6b6364a7fc Android is all-PIC/PIE.
Clean up the x86/x86_64 assembler. The motivator (other than reducing
confusion) was that asm.h incorrectly checked PIC rather than __PIC__.

Bug: 16823325
Change-Id: Iaa9d45009e93a4b31b719021c93ac221e336479b
2014-08-07 10:54:54 -07:00
Dan Albert
cdd2f072af Merge "Fix incorrect relocations for x86." 2014-08-07 14:59:23 +00:00
Dan Albert
512bc52326 Fix incorrect relocations for x86.
These calls were not going through the PLT like they should have been.

Bug: 16853291
Change-Id: Id70488b077256a70137c4417f21be2c2d1d4341c
2014-08-07 16:21:47 -07:00
Christopher Ferris
85ebcfceb6 Merge "Do a second key cleanup in pthread_exit." 2014-08-06 23:49:29 +00:00
Christopher Ferris
e380960813 Do a second key cleanup in pthread_exit.
During pthread_exit, the keys are cleaned. Unfortunately, a call to
free occurs after the cleanup and the memory for some of the keys
is recreated when using jemalloc. The solution is to do the key
cleanup twice.

Also, modify the pthread_detach__leak test to be less flaky
when run on a jemalloc system.

Bug: 16513133

(cherry picked from commit 18d93f2793)

Change-Id: Idb32e7f9b09e2c088d256ed9eb881df80c81ff8e
2014-08-06 17:57:04 -07:00
Elliott Hughes
f3868fa735 Merge "Upgrade bionic to tzdata2014f." 2014-08-07 00:00:55 +00:00
Elliott Hughes
51fde5b865 Upgrade bionic to tzdata2014f.
From the release notes:

  Changes affecting future time stamps

    Russia will subtract an hour from most of its time zones on
    2014-10-26 at 02:00 local time.  (Thanks to Alexander Krivenyshev.)
    There are a few exceptions: Magadan Oblast (Asia/Magadan) and
    Zabaykalsky Krai are subtracting two hours; conversely, Chukotka
    Autonomous Okrug (Asia/Anadyr), Kamchatka Krai (Asia/Kamchatka),
    Kemerovo Oblast (Asia/Novokuznetsk), and the Samara Oblast and the
    Udmurt Republic (Europe/Samara) are not changing their clocks.  The
    changed zones are Europe/Kaliningrad, Europe/Moscow,
    Europe/Simferopol, Europe/Volgograd, Asia/Yekaterinburg, Asia/Omsk,
    Asia/Novosibirsk, Asia/Krasnoyarsk, Asia/Irkutsk, Asia/Yakutsk,
    Asia/Vladivostok, Asia/Khandyga, Asia/Sakhalin, and Asia/Ust-Nera;
    Asia/Magadan will have two hours subtracted; and Asia/Novokuznetsk's
    time zone abbreviation is affected, but not its UTC offset.  Two
    zones are added: Asia/Chita (split from Asia/Yakutsk, and also with
    two hours subtracted) and Asia/Srednekolymsk (split from
    Asia/Magadan, but with only one hour subtracted).  (Thanks to Tim
    Parenti for much of the above.)

  Changes affecting past time stamps

    China's five zones have been simplified to two, since the post-1970
    differences in the other three seem to have been imaginary.  The
    zones Asia/Harbin, Asia/Chongqing, and Asia/Kashgar have been
    removed; backwards-compatibility links still work, albeit with
    different behaviors for time stamps before May 1980.  Asia/Urumqi's
    1980 transition to UTC+8 has been removed, so that it is now at
    UTC+6 and not UTC+8.  (Thanks to Luther Ma and to Alois Treindl;
    Treindl sent helpful translations of two papers by Guo Qingsheng.)

    Some zones have been turned into links, when they differed from
    existing zones only for older UTC offsets where the data were likely
    invented.  These changes affect UTC offsets in pre-1970 time stamps
    only.  This is similar to the change in release 2013e, except this
    time for western Africa.  The affected zones are: Africa/Bamako,
    Africa/Banjul, Africa/Conakry, Africa/Dakar, Africa/Freetown,
    Africa/Lome, Africa/Nouakchott, Africa/Ouagadougou, Africa/Sao_Tome,
    and Atlantic/St_Helena.  This also affects the
    backwards-compatibility link Africa/Timbuktu.  (Thanks to Alan
    Barrett, Stephen Colebourne, Tim Parenti, and David Patte for
    reporting problems in earlier versions of this change.)

    Asia/Shanghai's pre-standard-time UT offset has been changed from
    8:05:57 to 8:05:43, the location of Xujiahui Observatory.  Its
    transition to standard time has been changed from 1928 to 1901.

    Asia/Taipei switched to JWST on 1896-01-01, then to JST on
    1937-10-01, then to CST on 1945-09-21 at 01:00, and did not observe
    DST in 1945.  In 1946 it observed DST from 05-15 through 09-30; in
    1947 from 04-15 through 10-31; and in 1979 from 07-01 through 09-30.
    (Thanks to Yu-Cheng Chuang.)

    Asia/Riyadh's transition to standard time is now 1947-03-14, not
    1950.

    Europe/Helsinki's 1942 fall-back transition was 10-04 at 01:00, not
    10-03 at 00:00.  (Thanks to Konstantin Hyppönen.)

    Pacific/Pago_Pago has been changed from UTC-11:30 to UTC-11 for the
    period from 1911 to 1950.

    Pacific/Chatham has been changed to New Zealand standard time plus
    45 minutes for the period before 1957, reflecting a 1956 remark in
    the New Zealand parliament.

    Europe/Budapest has several pre-1946 corrections: in 1918 the
    transition out of DST was on 09-16, not 09-29; in 1919 it was on
    11-24, not 09-15; in 1945 it was on 11-01, not 11-03; in 1941 the
    transition to DST was 04-08 not 04-06 at 02:00; and there was no DST
    in 1920.

    Africa/Accra is now assumed to have observed DST from 1920 through
    1935.

    Time in Russia before 1927 or so has been corrected by a few seconds
    in the following zones: Europe/Moscow, Asia/Irkutsk, Asia/Tbilisi,
    Asia/Tashkent, Asia/Vladivostok, Asia/Yekaterinburg,
    Europe/Helsinki, and Europe/Riga.  Also, Moscow's location has been
    changed to its Kilometer 0 point.  (Thanks to Vladimir Karpinsky for
    the Moscow changes.)

(cherry-pick of 0dc2c1db6fc84b4526f2a5f8d73e1187500f2300.)

Bug: 16168653
Change-Id: I23827254bcf50dd07a2192ed34b02224d73e07a0
2014-08-06 17:38:01 -07:00
Elliott Hughes
b4b7e0547d Merge "Fix the tzdata update tools." 2014-08-06 23:55:49 +00:00
Elliott Hughes
13bab43337 Fix the tzdata update tools.
The recent libcore ZoneInfo changes mean that we can no longer
compile libcore's ZoneInfo against the RI. Luckily, the field in
our data file that we needed ZoneInfo for isn't actually used.
This change removes our dependence on libcore.

I've left the field in to avoid a file format change. We can remove
the field if/when we next have a real need to bump the file format.

(cherry-pick of 90cb5ffb85a9bc2e725824b3ca8db932d02c45db.)

Bug: 16168653
Change-Id: Iedad2252c2b49f4d8bb2c7d9078b39b622444ca7
2014-08-06 17:31:48 -07:00
Elliott Hughes
3a238ae762 Merge "Revert "Add a hack to <stdlib.h> until we can fix libvpx."" 2014-08-06 17:15:22 +00:00
Elliott Hughes
9d2a05a6dd Revert "Add a hack to <stdlib.h> until we can fix libvpx."
This reverts commit 3fb5097a7e.
libvpx is now fixed.

(cherry-pick of 2be1be47aa9b63568fe6ce1e0a4029b37d90764d.)

Bug: 15598056
Change-Id: Icca974e667f92206505f484bd291726eb0150f68
2014-08-06 13:20:41 -07:00
Elliott Hughes
bb91a1b845 Merge "Workaround b/16818336 which fails build under aggressive inlining." 2014-08-05 00:30:25 +00:00
Dehao Chen
28285f85a1 Workaround b/16818336 which fails build under aggressive inlining.
(cherry-pick of 7aa27e1c1a53afe28f6180fd1fc50d096cabea7b.)

Change-Id: Ifcd596714c427a2ec39502b9c0af9082ded91884
2014-08-06 11:43:38 -07:00
Elliott Hughes
8b91980e4c Merge "Explain how wcswcs ended up in ndk_cruft.cpp." 2014-08-06 17:20:04 +00:00
Elliott Hughes
1628eb1d43 Explain how wcswcs ended up in ndk_cruft.cpp.
Change-Id: Ie45148095b2d5c3896c0df623d5d06a700c33c70
2014-08-06 10:47:33 -07:00
Elliott Hughes
afc8672387 Merge "Add an obvious comment to <stdio.h> for fixincludes." 2014-08-05 17:41:26 +00:00
Elliott Hughes
df85f50b82 Add an obvious comment to <stdio.h> for fixincludes.
We don't want GCC's fixincludes to touch our <stdio.h> because we
want to support multiple platform versions with one toolchain. Give
them a nice easy unambiguous string to look for.

Bug: http://code.google.com/p/android/issues/detail?id=73728
Change-Id: I15cb9a2c9eb0a44b0965dc2139f224f2b6e68ea1
2014-08-06 09:03:52 -07:00
Dan Albert
de69069fcf Merge "Fixes build." 2014-08-05 17:41:26 +00:00
Dan Albert
9eae8405e8 Fixes build.
This change somehow went missing from the vfork change.

Change-Id: I807a2072080eac20601c694e85ba5723220289d8
2014-08-05 14:46:03 -07:00
Dan Albert
a7ef8188e2 Merge "Revert "Replaces vfork() implementation with fork()"" 2014-08-05 17:41:26 +00:00
Dan Albert
6a918870ba Revert "Replaces vfork() implementation with fork()"
We're getting cold feet on this one... let's put it back.

This reverts commit 210331d976.

Change-Id: I6b0d3c2b1dbf7f1dc9566979a91b7504c2189269
2014-08-05 14:11:38 -07:00
Dan Albert
447fe1c23b Merge "Fix mbsrtowcs(3) src param for finished string." 2014-07-30 11:26:00 +00:00
Dan Albert
b6cc8e00cd Fix mbsrtowcs(3) src param for finished string.
A mistake I made while cleaning this up the first time through.
mbstrtowcs(3) sets the src param to null if it finishes the string.

Change-Id: I6263646e25d9537043b7025fd1dd6ae195f365e2
2014-07-31 11:31:03 -07:00
Dan Albert
36bacd237d Merge "Proper MB_CUR_MAX." 2014-07-31 00:14:55 +00:00
Dan Albert
1aec7c1a35 Proper MB_CUR_MAX.
Previously this was hard coded to 4. This is only the case for UTF-8
locales.

As a side effect, this properly reports C.UTF-8 as the default locale
instead of C.

Change-Id: I7c73cc8fe6ffac61d211cd5f75287e36de06f4fc
2014-07-30 17:09:46 -07:00
Christopher Ferris
0f7ed163cf Merge "Fix memchr with a zero length." 2014-07-30 20:40:05 +00:00
Christopher Ferris
e03e1eac0b Fix memchr with a zero length.
The memchr implementation for 64 bit fails if these conditions occur:

- The buffer is 32 byte aligned.
- The buffer contains the character in the first byte.
- The count sent in is zero.

The function should return NULL, but it's not.

Bug: 16676625
Change-Id: Iab33cc7a8b79920350c72f054dff0e0a3cde69ce
2014-07-30 16:06:56 -07:00
Christopher Ferris
4ad5066e1d Merge "Use libunwindbacktrace for debug malloc code." 2014-07-28 22:45:44 +00:00
Christopher Ferris
861c0ef37b Use libunwindbacktrace for debug malloc code.
Create a method of disabling the debug allocation code paths so that
it's possible to use the libunwindbacktrace library without any
modifications.

Use this path to create and destroy the maps for the process. It's not
stricly necessary in the init code since the symbols are not modified
until after the initialize calls.

Also, remove the debug_XXX source files that doesn't need to be in libc.so.

Fix the maps reading code since it was completely broken for 64 bit.

Bug: 16408686

Change-Id: I6b02ef6ce26fdb7a59ad1029e7cbba9accceb704
2014-07-29 18:10:00 -07:00
Elliott Hughes
a7dc7600fe Merge "Fix linkage of grantpt(3)." 2014-07-28 22:45:44 +00:00
Elliott Hughes
4916706cfe Fix linkage of grantpt(3).
Also clean up the implementation of all the pty functions, add tests,
and fix the stub implementations of ttyname(3) and ttyname_r(3).

Bug: https://code.google.com/p/android/issues/detail?id=58888
Change-Id: I0fb36438cd1abf8d4e87c29415f03db9ba13c3c2
2014-07-25 19:55:23 -07:00
Elliott Hughes
17886971ff Merge "Remove declarations for things that don't exist." 2014-07-25 21:16:27 +00:00
Elliott Hughes
f4c1a36a45 Remove declarations for things that don't exist.
The <grp.h> ones prevent gdb from building out of the box.

Change-Id: I0efbffad2215cfcd75b4d442dfc972444b51d97c
2014-07-29 16:57:47 -07:00
Dmitriy Ivanov
2b591b3742 Merge "Fix dlsym(3) to do breadth first search." 2014-07-29 21:36:05 +00:00
Dmitriy Ivanov
aa0f2bdbc2 Fix dlsym(3) to do breadth first search.
dlsym(3) with handle != RTLD_DEFAULT|RTLD_NEXT performs
  breadth first search through the dependency tree.

Bug: 16653281
Change-Id: I017a6975d1a62abb0218a7eb59ae4deba458e324
2014-07-29 14:35:13 -07:00
Elliott Hughes
52f8271fa9 Merge "Added a bionic systrace class and tracing to pthread_mutex.cpp." 2014-07-25 21:16:27 +00:00
Brigid Smith
a406ee6d5f Added a bionic systrace class and tracing to pthread_mutex.cpp.
bionic_systrace.h contains an implementation of tracing that
can be used with systrace.py and its associated viewer.  pthread_mutex
now uses this tracing to track pthread_mutex contention, which can be
enabled by using the "bionic" command line option to systrace.

Bug: 15116468
Change-Id: I30ed5b377c91ca4c36568a0e647ddf95d4e4a61a
2014-07-28 19:38:08 -07:00
Dmitriy Ivanov
24dcda0f4f Merge "Fix mips/mips64 build" 2014-07-25 21:16:27 +00:00
Dmitriy Ivanov
ed48534718 Fix mips/mips64 build
Add _start entry label to mips/mips64 linker begin.S

Change-Id: Idcdfc3391427b53880650798be0583a7ac022bcc
2014-07-28 21:03:17 -07:00
Elliott Hughes
50a9630cc2 Merge "Start hiding "private/bionic_time.h"." 2014-07-24 20:55:36 +00:00
Elliott Hughes
905e6d58aa Start hiding "private/bionic_time.h".
Bug: 15765976
Change-Id: Ibd9cf07067ec8dffe9fda6c3d498d4ab90708220
2014-07-25 12:03:51 -07:00
Dan Albert
a4c14fda91 Merge "en_US.UTF-8 is also supported." 2014-07-24 20:55:36 +00:00
Dan Albert
1abb8bd21d en_US.UTF-8 is also supported.
Change-Id: Ic35fad3596dc5e24ee8ae35543a274a471f27bb2
2014-07-25 11:24:03 -07:00
Elliott Hughes
83b9826e68 Merge "Implement <sys/fsuid.h>." 2014-07-23 22:55:49 +00:00
Elliott Hughes
79310994d2 Implement <sys/fsuid.h>.
Change-Id: I1e5e50444a1b5a430ba5b5d9b8b1d91219af5e92
2014-07-30 15:19:29 -07:00
Elliott Hughes
c7706a02ad Merge "[MIPSR6] Use C-coded string ops on mips32r6/mips64r6" 2014-07-29 21:36:05 +00:00
Elliott Hughes
18a1bbe6e1 Merge "Only wipe TLS for user-supplied stacks." 2014-07-30 19:31:16 +00:00
Elliott Hughes
40a5217448 Only wipe TLS for user-supplied stacks.
Bug: 16667988
Change-Id: Id180ab2bc6713e1612386120a306db5bbf1d6046
2014-07-30 14:49:40 -07:00
Elliott Hughes
123172ae37 Merge "[MIPS] Fix atomic_is_lock_free test for mips32. On 32-bit MIPS, 64-bit atomic ops are achieved through locks. So allow the test to fail for atomic_intmax_t on 32-bit MIPS." 2014-07-23 22:55:49 +00:00
Raghu Gandham
f1837377d2 [MIPS] Fix atomic_is_lock_free test for mips32.
On 32-bit MIPS, 64-bit atomic ops are achieved through locks.
So allow the test to fail for atomic_intmax_t on 32-bit MIPS.

Change-Id: I78e7807e50f899a0fea0d5b388d9ebb53228aaa0
2014-07-24 16:11:52 -07:00
Dmitriy Ivanov
dbf52ec37b Merge "Fix global variable initialization for linker" 2014-07-24 20:55:36 +00:00
Dmitriy Ivanov
4151ea73b7 Fix global variable initialization for linker
Linker now calls init functions for itself.

Change-Id: Ibd099812493041ac70f591e3f379ee742b4683b8
2014-07-24 15:33:25 -07:00
Elliott Hughes
d6f614a4e1 Merge "Implement twalk(3), add unit tests." 2014-07-24 22:07:52 +00:00
Elliott Hughes
3e424d0a24 Implement twalk(3), add unit tests.
I've also added insque(3) and remque(3) (from NetBSD because the OpenBSD
ones are currently broken for non-circular lists).

I've not added the three hash table functions that should be in this header
because they operate on a single global hash table and thus aren't likely
to be useful.

Bug: https://code.google.com/p/android/issues/detail?id=73719
Change-Id: I97397a7b921e2e860fd9c8032cafd9097380498a
2014-07-24 14:55:29 -07:00
Duane Sand
bc5a3ec6df [MIPSR6] Use C-coded string ops on mips32r6/mips64r6
The existing assembler code uses deprecated lwl/lwr/swl/swr ops.
Replacing those with misalignment-forgiving lw/sw ops may
involve careful performance tuning.

Change-Id: I47a042f7b22b87d7d52e46c29c44b1db1ba8b693
2014-07-23 14:00:21 -07:00
Elliott Hughes
7d22a45196 Merge "[MIPSR6] setjmp supports mips32r6 and FP64A/FPXX reg models" 2014-07-23 18:45:08 +00:00
Duane Sand
dd37251c47 [MIPSR6] setjmp supports mips32r6 and FP64A/FPXX reg models
Save and restore floating point registers via 64-bit
load/stores when possible.  Use assembler's builtin macro
ops to generate pairs of 32-bit load/stores on Mips I cpus.

Some cpus or FR modes have only 16 even-numbered dp fp regs.
This is exposed by _MIPS_FPSET, defined by existing compilers.

Change-Id: I7f617a3ffea8da41c402ef3a68ab32c91d3d7622
2014-07-23 13:57:30 -07:00
Nick Kralevich
f965075749 Merge "debuggerd: if PR_GET_DUMPABLE=0, don't ask for dumping" 2014-07-23 18:51:55 +00:00
Nick Kralevich
be0e43b776 debuggerd: if PR_GET_DUMPABLE=0, don't ask for dumping
PR_GET_DUMPABLE is used by an application to indicate whether or
not core dumps / PTRACE_ATTACH should work.

Security sensitive applications often set PR_SET_DUMPABLE to 0 to
disable core dumps, to avoid leaking sensitive memory to persistent
storage. Similarly, they also set PR_SET_DUMPABLE to zero to prevent
PTRACE_ATTACH from working, again to avoid leaking the contents
of sensitive memory.

Honor PR_GET_DUMPABLE when connecting to debuggerd. If an application
has said it doesn't want its memory dumped, then we shouldn't
ask debuggerd to dump memory on its behalf.

FORTIFY_SOURCE tests: Modify the fortify_source tests to set
PR_SET_DUMPABLE=0. This reduces the total runtime of
/data/nativetest/bionic-unit-tests/bionic-unit-tests32 from approx
53 seconds to 25 seconds. There's no need to connect to debuggerd
when running these tests.

Bug: 16513137
Change-Id: Idc7857b089f3545758f4d9b436b783d580fb653f
2014-07-23 15:48:49 -07:00
Elliott Hughes
f9bfc2ff8e Merge "Fix belated review comments on syslog change." 2014-07-23 18:45:08 +00:00
Elliott Hughes
afe6360627 Fix belated review comments on syslog change.
Bug: 14292866
Change-Id: I3cd92084cb55b5673f6ba62d51952941b79deb51
2014-07-23 11:38:38 -07:00
Dmitriy Ivanov
337c0cefdc Merge "Fix 'adb shell /system/bin/linker' crash" 2014-07-23 17:53:27 +00:00
Dmitriy Ivanov
efe13832dc Fix 'adb shell /system/bin/linker' crash
Bug: https://code.google.com/p/android/issues/detail?id=63174
Change-Id: I072290ea11109c07f277ad3dec7f44fcb7bf6aa6
2014-07-28 16:29:52 -07:00
Elliott Hughes
8a2ecf868f Merge "syscall(3)'s return type should be long." 2014-07-24 20:55:36 +00:00
Elliott Hughes
21972b61ec syscall(3)'s return type should be long.
This doesn't require us to change any of the syscall implementations
because (a) the LP32 ones have sizeof(int) == sizeof(long) anyway,
which is how we never noticed this bug before and (b) the LP64 ones
all use a 64-bit register for the result (and for the syscall number
too).

Bug: https://code.google.com/p/android/issues/detail?id=73952
Change-Id: I9866c3579a7a94de27bfbe80ad7a822c3183c7fb
2014-07-28 12:33:07 -07:00
Elliott Hughes
1a918d9be8 Merge "Remove localtime_tz and strftime_tz." 2014-07-24 20:55:36 +00:00
Elliott Hughes
39d903aea9 Remove localtime_tz and strftime_tz.
This also brings our copy of strftime.c much closer to upstream, though
we still have several GNU extensions and hacks to deal with Android32's
broken time_t.

Bug: 15765976
Change-Id: Ic9ef36e8acd3619504ecc4d73feec2b61fd4dfa1
2014-07-25 15:50:31 -07:00
Elliott Hughes
8c66fd798e Merge "Use vsnprintf(3) in syslog(3)." 2014-07-24 20:55:36 +00:00
Elliott Hughes
f1e83cc34a Use vsnprintf(3) in syslog(3).
It seemed like a clever trick to use the internal log message formatting
code in syslog(3), but on reflection that means you can't (for example)
format floating point numbers. This patch switches us over to using good
old vsnprintf(3), even though that requires us to jump through a few hoops.

There's no obvious way to unit test this, so I wrote a little program and
ran that.

(cherry-pick of b1b60c30bf321c0fc02264b953b5c16c49d34457.)

Bug: 14292866
Change-Id: I9c83500ba9cbb209b6f496067a91bf69434eeef5
2014-07-28 09:43:21 -07:00
Elliott Hughes
8dbe3f0f51 Merge "[MIPS] Drop soft-fp targets" 2014-07-23 17:53:27 +00:00
Duane Sand
ba23bd0a40 [MIPS] Drop soft-fp targets
Change-Id: I583bf8242d3034ebfc48548499cdb3316094c8e3
2014-07-24 18:04:21 +00:00
Elliott Hughes
467e49be70 Merge "Fix generate-NOTICE to cope better with BSD __COPYRIGHT macros." 2014-07-22 16:35:00 +00:00
Elliott Hughes
5d2f86f363 Fix generate-NOTICE to cope better with BSD __COPYRIGHT macros.
Change-Id: I99f9d2e0a28342663cec6aed483e1a23c12e5e87
2014-07-23 11:10:48 -07:00
Elliott Hughes
ea42a6caea Merge "Fix a couple of bugs in generate-NOTICE and regenerate the NOTICE files." 2014-07-22 16:25:43 +00:00
Elliott Hughes
3758a244cf Fix a couple of bugs in generate-NOTICE and regenerate the NOTICE files.
Change-Id: Id6fcb74292e661504d0758bfce24abdc18cb8d32
2014-07-22 21:29:00 -07:00
Elliott Hughes
e26ac7f776 Merge "Remove the unused swab.S." 2014-07-22 21:56:40 +00:00
Elliott Hughes
ca70453e84 Remove the unused swab.S.
Change-Id: Id30eac5a21b649d6a039a0d7ca0496177fbfb571
2014-07-22 20:21:31 -07:00
Elliott Hughes
79b5a39617 Merge "[MIPS] Allow united mipsel and mips64el gcc toolchain" 2014-07-22 16:35:00 +00:00
Duane Sand
f541650828 [MIPS] Allow united mipsel and mips64el gcc toolchain
Explicitly tell 32-bit links that they are doing 32-bit links.
This is needed when using united 32-bit and 64-bit toolchains.
This is harmless when using older separate 32-only toolchains.

Change-Id: I70cbd3f5867e59b1f6f829793444242fb0894aa6
2014-07-22 14:27:48 -07:00
Elliott Hughes
0f7d882bb7 Switch to OpenBSD res_random.
Change-Id: Ia971d647832893e9bb4601697132a105524d2f96
2014-07-21 15:31:53 -07:00
Elliott Hughes
4d421901e5 Merge "Use upstream OpenBSD's arc4random." 2014-07-21 15:45:37 +00:00
Elliott Hughes
2b67d7dee0 Use upstream OpenBSD's arc4random.
The getentropy_linux.c is lightly modified to build on Android, but we're now
completely in sync with upstream OpenBSD's arc4random implementation.

Change-Id: If32229fc28aba908035fb38703190d41ddcabc95
2014-07-21 14:38:16 -07:00
Elliott Hughes
925d388e24 Merge "Rewrite syslog(3) to use Android logging." 2014-07-19 23:20:08 +00:00
Elliott Hughes
3ad8ecb64e Rewrite syslog(3) to use Android logging.
Since we don't have syslogd on Android and you can't run one on a non-rooted
device, it's more useful if syslog output just goes to the regular Android
logging system.

Bug: 14292866
Change-Id: Icee7f088b97f88ccbdaf471b98cbac7f19f9210a
2014-07-21 16:56:48 -07:00
Dan Albert
b828eaeb45 Merge "There is no _MIN for unsigned types." 2014-07-21 15:45:37 +00:00
Dan Albert
ee7f1b5946 There is no _MIN for unsigned types.
Change-Id: I49c38e51197b750210bdbf28c9cf6db30452a206
2014-07-21 17:16:30 -07:00
Dan Albert
1fb90a8aa0 Merge "Fix mbsrtowcs(3)'s handling of len parameter." 2014-07-17 22:34:19 +00:00
Dan Albert
6b55ba54ef Fix mbsrtowcs(3)'s handling of len parameter.
The len parameter is a _maximum_ length. The previous code was treating
it as an exact length, causing the following typical call to fail:

    mbsrtowcs(out, &in, sizeof(out), state); // sizeof(out) > strlen(in)

Change-Id: I48e474fd54ea5f122bc168a4d74bfe08704f28cc
2014-07-21 11:45:48 -07:00
Dan Albert
e9731387f4 Merge "__libc_fatal should print a newline to stderr." 2014-07-18 22:17:02 +00:00
Dan Albert
97e31dedf0 __libc_fatal should print a newline to stderr.
Change-Id: I088dc880d7488a65beac8cda95f530f3db41f112
2014-07-21 11:10:00 -07:00
Elliott Hughes
7dd126a38c Merge "Clean up some misinformation around prctl." 2014-07-17 22:33:54 +00:00
Elliott Hughes
9c07aee83b Clean up some misinformation around prctl.
prctl shouldn't be in <unistd.h>.

Change-Id: I29609fc91c033e1ad143b75d9b4eb17aefbd63d6
2014-07-18 16:15:32 -07:00
Christopher Ferris
3c2b71ad56 Merge "Use the mmap/munmap for allocation routines." 2014-07-17 22:33:54 +00:00
Christopher Ferris
6425327c32 Use the mmap/munmap for allocation routines.
To avoid any issues calling malloc related routines, use mmap/munmap.
Specifically, this avoids any problems when this is compiled into a
malloc debug shared library.

Change-Id: Iae2d197145da43dc103ad6024357d8cc2374378f
2014-07-18 14:16:51 -07:00
Elliott Hughes
d18b87f38d Merge "Remove SIOCKILLADDR from <sys/socket.h>." 2014-07-17 22:33:42 +00:00
Elliott Hughes
8a3d1ca183 Remove SIOCKILLADDR from <sys/socket.h>.
Change-Id: I6b64a9abe01c786a9ec26aee1517cb981a4860fb
2014-07-17 17:10:02 -07:00
Elliott Hughes
76282482db Merge "Remove PR_SET_TIMERSLACK_PID from <sys/prctl.h>." 2014-07-17 22:33:42 +00:00
Elliott Hughes
9f165d24f0 Remove PR_SET_TIMERSLACK_PID from <sys/prctl.h>.
Change-Id: Ie70f23c80e8473ac9617b74967d7c84709f5b00d
2014-07-17 17:12:35 -07:00
Elliott Hughes
6bf42ddc79 Merge "Fix private/bionic_name_mem.h build breakage." 2014-07-17 21:58:34 +00:00
Elliott Hughes
2f9c6e38b8 Fix private/bionic_name_mem.h build breakage.
Change-Id: I8fe9c63dbbb5911721ca56791c0bff4bdf403314
2014-07-17 15:09:17 -07:00
Elliott Hughes
169e2bf6bd Merge "Remove non-standard prctl constants from <sys/prctl.h>." 2014-07-17 17:59:29 +00:00
Elliott Hughes
d7453860a6 Remove non-standard prctl constants from <sys/prctl.h>.
Also remove __bionic_name_mem which has exactly one caller, and is only
ever expected to be used in this one place.

Change-Id: I833744f91e887639f5b2d1269f966ee9032af207
2014-07-17 14:26:33 -07:00
Hans Boehm
43363ab720 Merge "Define atomic_charN_t only if charN_t is supported." 2014-07-16 23:31:38 +00:00
Hans Boehm
8b002362d9 Define atomic_charN_t only if charN_t is supported.
Some platform code is apparently compiled with switches that do
not support char16_t and char32_t.  This caused stdatomic.h to fail
to compile.  This CL makes stdatomic.h usable in those environments.

Change-Id: Ie5a17f20b8b545c97128d00605b4eabd2a6bfe3e
2014-07-16 17:31:05 -07:00
Elliott Hughes
94f84d36a9 Merge "ptrace(3) should be varargs." 2014-07-16 21:56:17 +00:00
Elliott Hughes
98b088dce7 ptrace(3) should be varargs.
Bug: 16352070
Change-Id: Ied72e6e79eaf912fc93fc49ae7637af321a31a59
2014-07-16 16:07:10 -07:00
Elliott Hughes
f13aa6fc5b Merge "Use VDSO for clock_gettime(2) and gettimeofday(2)." 2014-07-16 19:02:19 +00:00
Elliott Hughes
625993dfbb Use VDSO for clock_gettime(2) and gettimeofday(2).
Bug: 15387103
Change-Id: Ifc3608ea65060c1dc38120b10b6e79874f182a36
2014-07-16 14:27:43 -07:00
Christopher Ferris
770d0f6177 Merge "Make sure not to construct illegal property names." 2014-07-15 20:47:30 +00:00
Christopher Ferris
53531ccebb Make sure not to construct illegal property names.
Change-Id: I37624e69aec51efd4291f076fb87af3f35d33025
2014-07-15 19:26:28 -07:00
Christopher Ferris
64035c4a4b Merge "Add gen syscalls step to instructions." 2014-07-15 20:47:30 +00:00
Christopher Ferris
ea271fdf26 Add gen syscalls step to instructions.
Also, fix incorrect path to some tools.

Change-Id: I409fc02d7077f0d2811d90be19550e70f5d73c0e
2014-07-15 19:02:33 -07:00
Elliott Hughes
52023cb725 Merge "Regenerate the syscalls list after the uapi update." 2014-07-15 20:36:09 +00:00
Elliott Hughes
3fa60e10bc Regenerate the syscalls list after the uapi update.
Change-Id: I117c5b18f735376dd3ab5061018dc7db9c046202
2014-07-15 18:39:27 -07:00
Christopher Ferris
51c914b7fd Merge "Fix BIONIC_ROUND_UP_POWER_OF_2 for 64 bit." 2014-07-15 00:42:07 +00:00
Christopher Ferris
27047faf28 Fix BIONIC_ROUND_UP_POWER_OF_2 for 64 bit.
There were two bugs here:

- For 64 bit values, this did not properly round up.
- The macro rounded to the power of 2 less than value, not to the power
  of 2 greater than value.

Change-Id: If8cb41536a9d2f5c1bc213676f1e67a7903a36b0
2014-07-15 12:33:48 -07:00
Dan Albert
5656a0c494 Merge "Remove isascii_l(3)." 2014-07-14 23:04:02 +00:00
Dan Albert
e612add051 Remove isascii_l(3).
Had intended to remove this one before submitting the locale changes,
but forgot. It isn't a standard ctype function, so we don't need it.

Change-Id: Ie9c09fa6c61b1101b5992fa06da30e373a0c6bf7
2014-07-14 15:48:02 -07:00
Elliott Hughes
ee3608f9d3 Merge "Fix visibility for a bunch more symbols." 2014-07-14 17:01:21 +00:00
Elliott Hughes
a167eef548 Fix visibility for a bunch more symbols.
Bug: 11156955
Bug: 15291317
Change-Id: I664f25cce7c17085a101d6593d8e01525a1f6a90
2014-07-14 15:13:30 -07:00
Elliott Hughes
673bff01ae Merge "Implement rand/srand in terms of random/srandom." 2014-07-14 17:20:33 +00:00
Elliott Hughes
76c241b091 Implement rand/srand in terms of random/srandom.
Code developed for glibc or older versions of bionic might expect more
randomness than the BSD implementation provides.

Bug: 15829381
Change-Id: Ia5a908a816e0a5f0639f514107a6384a51ec157e
2014-07-14 12:02:22 -07:00
Elliott Hughes
4ae938698c Merge "Sync upstream-openbsd." 2014-07-14 17:15:23 +00:00
Elliott Hughes
4f0b67a8db Sync upstream-openbsd.
Change-Id: I5b9961a57e2ff05f63bd218c130bf8347850b9be
2014-07-14 11:22:59 -07:00
Dmitriy Ivanov
91f2074e5f Merge "Upstream atexit" 2014-07-14 17:20:33 +00:00
Dmitriy Ivanov
53c3c271dc Upstream atexit
Change-Id: Ia454a2181b5058ed9783dc02b6b1805d0e4d2715
2014-07-14 12:05:16 -07:00
Elliott Hughes
83ce99d8b7 Merge "Define SIOCKILLADDR which isn't in the common kernel uapi headers." 2014-07-11 16:35:27 +00:00
Elliott Hughes
2ba2888cac Define SIOCKILLADDR which isn't in the common kernel uapi headers.
Change-Id: I8760950d13a9625aa543e76bc9d6cd86ac782c2e
2014-07-11 21:11:21 -07:00
Elliott Hughes
57a5b3380a Merge "Define three prctl constants that went missing from uapi." 2014-07-10 21:09:57 +00:00
Elliott Hughes
263325d4b0 Define three prctl constants that went missing from uapi.
Change-Id: Ib81846ddefe9a75e02151c6592ed99b1f8ec5858
2014-07-11 19:54:55 -07:00
Christopher Ferris
385bb1eded Merge "Add optimized memchr implementation from newlib" 2014-07-10 20:49:23 +00:00
Bernhard Rosenkränzer
8c20c13100 Add optimized memchr implementation from newlib
Add NEON optimized memchr adapted from newlib

Change-Id: I91b2fafa243e4ab35fa56bb6171d48433c947cfd
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
2014-07-11 00:17:07 +02:00
Elliott Hughes
b8e82b5e72 Merge "EM_ARM and EM_AARCH64 are now in the uapi header." 2014-07-10 20:49:23 +00:00
Elliott Hughes
10cf0d8c1f EM_ARM and EM_AARCH64 are now in the uapi header.
Change-Id: Ice73403daff75ea45b24e02351269f6c012df6c1
2014-07-11 11:01:42 -07:00
Christopher Ferris
c6bc001776 Merge "Update kernel headers to v3.14." 2014-07-10 21:32:00 +00:00
Elliott Hughes
040e11877d Merge "Enable building libc with clang." 2014-07-11 16:35:27 +00:00
Elliott Hughes
c999f76977 Enable building libc with clang.
Bug: 16218205
Change-Id: I024de2044fe016412c7bead22c264e96be4cb39c
2014-07-11 09:28:53 -07:00
Dan Albert
37f09d6d2e Merge "Revert "Revert "Add locale aware APIs.""" 2014-07-10 21:02:22 +00:00
Dan Albert
dfb5ce42bc Revert "Revert "Add locale aware APIs.""
This reverts commit 063e20c269.

Change-Id: Ib8c9004efefe75a5346b3af50dfe37952d91eb21
2014-07-11 16:21:31 +00:00
Elliott Hughes
76df69d1f5 Merge "The err family allow null format strings." 2014-07-10 21:32:00 +00:00
Elliott Hughes
2f61fba72b The err family allow null format strings.
Also remove declarations for the _* variants that were never implemented in bionic (or glibc).

Change-Id: I4ea1f17bbb377e70632c10dd218f47110cabc27b
2014-07-11 02:53:27 +00:00
Christopher Ferris
96502e273e Merge "Make jemalloc the default choice." 2014-07-10 20:49:23 +00:00
Christopher Ferris
8e32b7b354 Make jemalloc the default choice.
Change-Id: I5ff0cf0c396b7ae6278e6fcd5a0d50f8b966fb54
2014-07-11 11:01:30 -07:00
Elliott Hughes
9b491470ac Merge "Slim down static binaries by avoiding stdio." 2014-07-10 20:49:23 +00:00
Elliott Hughes
eba7c15b69 Merge "Revert "Switch libm to building with clang."" 2014-07-10 20:43:44 +00:00
Elliott Hughes
1e83245bae Revert "Switch libm to building with clang."
This reverts commit aadc4b2ff0.

The patch broke x86.

Change-Id: I0cda903732a685838bbd1877f94e1593a2a32acc
2014-07-11 01:24:15 +00:00
Elliott Hughes
aadc4b2ff0 Switch libm to building with clang.
Bug: 16211965
Change-Id: I81ec9706a4f2b5e8a840508a0f711cd25a5826ca
2014-07-10 16:58:07 -07:00
Elliott Hughes
5df23dc85e Merge "Switch libm to building with clang." 2014-07-10 20:49:23 +00:00
Christopher Ferris
38062f954c Update kernel headers to v3.14.
Other changes:
- Modify update_all.py to skip ion header files when importing into aosp.
- Fix generate_uapi_headers.sh to handle imports from a linux-stable kernel.

Change-Id: I1ad81b9ccb063c21740f9875f2cc1238052cd4b3
2014-07-10 13:32:32 -07:00
Elliott Hughes
91570ce987 Slim down static binaries by avoiding stdio.
It's okay for a program to choose to drag in stdio, but it's unfortunate
if even the minimal "int main() { return 42; }" drags in stdio...

This brings the minimal static binary on ARM down from 78KiB to 46KiB.

Given that we don't have a separate -lpthread it's not obvious to me that
we can shave this down any further. I'm not sure whether this is a worthwhile
change for that reason. (And the fact that dynamic binaries, the usual case,
are unaffected either way.)

Change-Id: I02f91dcff37d14354314a30b72fed2563f431c88
2014-07-10 12:34:23 -07:00
Elliott Hughes
f0f8cd1ff3 Merge "Remove the global lock around thread stack creation." 2014-07-10 18:27:51 +00:00
Elliott Hughes
e959a3b315 Remove the global lock around thread stack creation.
This lock has been here since the original commits, but as far as I can tell
it never served any purpose. We've never had a free list of cached stacks or
anything like that.

Change-Id: I9d665c7eaa9c699ce0659ffb111402a0239fe1f5
2014-07-10 10:25:26 -07:00
Elliott Hughes
cd23370ca7 Merge "Remove the obsolete _thread_created_hook." 2014-07-10 16:05:36 +00:00
Elliott Hughes
e0f25dda3f Remove the obsolete _thread_created_hook.
gdb won't even try to use this on Android because it knows we don't
support old enough kernels to need it.

Bug: 15470251
Change-Id: Ia6d54585d888bbab8ee0490a148a1586b25437b9
2014-07-09 22:13:55 -07:00
Calin Juravle
02459d34c9 Merge "Move __cmsg_nxthdr to its proper file." 2014-07-09 19:42:15 +00:00
Calin Juravle
f8408c58fa Move __cmsg_nxthdr to its proper file.
Change-Id: I095fb6bc5318f2d256baa97658bdfe679d235aec
2014-07-10 12:47:13 +01:00
Calin Juravle
e95d0fc34c Removed obsolete symbol cmsg_nxthdr.
Bug: 15822452
Change-Id: I5322fb29522fc58e9c3489ff86216e25a12ef970
2014-07-10 12:44:52 +01:00
Christopher Ferris
25fba981a1 Merge "Do not include libc_common in malloc debug code." 2014-07-09 22:27:32 +00:00
Christopher Ferris
dda1c6c466 Do not include libc_common in malloc debug code.
The inclusion of the static libc_common library in the malloc_debug_XXX.so
shared libraries causes constructors to be called twice. This doesn't seem
to have caused any issues when setting the libc.debug.malloc property.
However, jemalloc crashes because there are two jemalloc implementations,
one in the static libc_common library and one in the shared library. Each
implementation has created overlapping thread keys that are not the same.
The crash comes because one of the jemalloc keys is actually used by the
locale setting code. Thus if someone sets the locale, the jemalloc code
crashes trying to access the same key.

Change-Id: Iaac650a82d69064db148a6333e9403744f68b4a4
2014-07-09 21:27:15 -07:00
Calin Juravle
8a71a745cb Merge "Removed obsolete symbol cmsg_nxthdr." 2014-07-09 19:42:15 +00:00
Elliott Hughes
4c199170a8 Merge "Added __system_propery_read benchmark." 2014-07-09 14:50:30 +00:00
Brigid Smith
a304476145 Added __system_propery_read benchmark.
Change-Id: Ic0e9118859a013aa04841de25822a81a7fc74b3c
2014-07-09 10:26:17 -07:00
Elliott Hughes
d028b6209c Merge "Added a __system_property_serial benchmark." 2014-07-09 14:42:04 +00:00
Brigid Smith
28417e6314 Added a __system_property_serial benchmark.
Change-Id: Ifc2116f26acb242f4dcdb6eefe128899a9dc63bb
2014-07-09 15:48:37 -07:00
Elliott Hughes
84f0c7c258 Merge "update-tzdata.py needs to know where to find icu." 2014-07-09 22:27:32 +00:00
Elliott Hughes
30ab939496 update-tzdata.py needs to know where to find icu.
Change-Id: If5561b92c233276fb072da62be21f23df4781c41
2014-07-09 15:42:59 -07:00
Dan Albert
430d5f93ce Merge "Add locale aware APIs." 2014-07-09 22:27:32 +00:00
Dan Albert
e087eac404 Add locale aware APIs.
Since we only support the C locale, we can just forward all of these to
their non-locale equivalents for correct behavior.

Change-Id: Ib7be71b7f636309c0cc3be1096a4c1f693f04fbb
2014-07-09 15:41:53 -07:00
Ying Wang
6cdd0cfd2f Merge "TARGET_OUT_DATA_NATIVE_TESTS now points to $(TARGET_OUT_DATA)/nativetest64 in 64-bit target" 2014-07-09 14:50:30 +00:00
Dan Albert
7a85d9a1de Merge "Revert "Add locale aware APIs."" 2014-07-09 14:45:53 +00:00
Dan Albert
063e20c269 Revert "Add locale aware APIs."
Accidentally verified against a dirty tree. Needs the companion change to libc++ to land upstream before I can submit this.

This reverts commit e087eac404.

Change-Id: I317ecd0923114f415eaad7603002f77feffb5e3f
2014-07-09 22:50:43 +00:00
Elliott Hughes
3139f6fdd7 Merge "Remove __CTOR_LIST__ from mips/mips64." 2014-07-09 14:42:04 +00:00
Elliott Hughes
40ad229b25 Remove __CTOR_LIST__ from mips/mips64.
Change-Id: I3486b09e30b32ddb67da602cbc2b5fb0402f9764
2014-07-09 09:20:17 -07:00
Elliott Hughes
c4c6789362 Merge "Don't zero r1 on entry to the dynamic linker." 2014-07-09 14:42:04 +00:00
Elliott Hughes
996524383f Don't zero r1 on entry to the dynamic linker.
There's no need: __linker_init only takes one argument.

Also remove the arm __CTOR_LIST__; we use .init_array and .fini_array instead
of .ctor and .dtor anyway, and I don't think we've ever supported the latter.

Change-Id: Ifc91a5a90c6aa39d674bf0509a7af2e1ff0beddd
2014-07-08 21:38:32 -07:00
Ying Wang
dc42e20d54 TARGET_OUT_DATA_NATIVE_TESTS now points to $(TARGET_OUT_DATA)/nativetest64 in 64-bit target
Change-Id: I9a562e79de7ec0f065c90de9ae1b72cbcd7d8c6b
2014-07-08 18:54:42 -07:00
Dmitriy Ivanov
3c12ae56f4 Merge "Add test for constructor function." 2014-07-08 22:56:31 +00:00
Dmitriy Ivanov
f8846a4587 Add test for constructor function.
Change-Id: I0ad26d617f00cdd6c2241d613be39a1d16918612
2014-07-08 21:21:34 -07:00
Dmitriy Ivanov
006e0770ff Merge "Change android_dlextinfo flags to uint64_t" 2014-07-07 17:50:18 +00:00
Dmitriy Ivanov
3a8646fc5d Change android_dlextinfo flags to uint64_t
Change-Id: Id27e8f8e58dbcf6ae79644f2ad3af3dd0aef9ae7
2014-07-08 11:24:03 -07:00
Elliott Hughes
7244a8610a Merge "Regenerate the bionic NOTICE files." 2014-07-08 02:15:13 +00:00
Elliott Hughes
1558138315 Regenerate the bionic NOTICE files.
Also fix a few formatting issues in copyright headers that were confusing
the script (though obviously it would be better if the script were smarter).

Change-Id: I7f561bef4f84fdcbd84f375ee226bd65db0e507b
2014-07-07 15:42:06 -07:00
Elliott Hughes
2b2916d154 Merge "Remove some dead data." 2014-07-02 20:49:42 +00:00
Elliott Hughes
920d831ba1 Remove some dead data.
Clang doesn't like dead data, and this is just an LP32 compatibility turd.

Change-Id: I3832748a4e773b254877f4438b5340e7d4c1ce70
2014-07-07 09:46:11 -07:00
Elliott Hughes
1f262b35fe Merge "Fix recv.cpp so it can build with clang." 2014-07-02 21:12:58 +00:00
Elliott Hughes
6917e6c2ae Fix recv.cpp so it can build with clang.
Change-Id: Iac3e676aa256837333240219bcadbdc31985b5dd
2014-07-02 16:46:34 -07:00
Elliott Hughes
ab4fc82315 Merge "Fix all resolv warnings and turn on -Werror." 2014-07-02 21:12:58 +00:00
Elliott Hughes
37b1b5bbcd Fix all resolv warnings and turn on -Werror.
The res_init.c changes bring us a bit closer to upstream too, though
there's still work to be done there. Some of the remaining differences
look like bugs we'd want to fix, so we should definitely try to come
back to that.

Change-Id: I50baa148e967c90d55d711e9904ad54c7d724d4d
2014-07-02 16:27:20 -07:00
Dmitriy Ivanov
afd37c429b Merge "Build fix" 2014-07-02 20:52:43 +00:00
Dmitriy Ivanov
d383066941 Build fix
Change-Id: Ib43e0f055e3c5f07b50393bfcab9738454835ac3
2014-07-02 16:06:50 -07:00
Dmitriy Ivanov
950a435fc0 Merge "Load library using file handle." 2014-07-02 20:52:43 +00:00
Elliott Hughes
99e2a2f04c Merge "Switch to upstream OpenBSD mktemp.c." 2014-07-02 20:52:16 +00:00
Elliott Hughes
db42a9f5a3 Merge "Fix three clang complaints about the DNS code." 2014-07-02 20:49:42 +00:00
Elliott Hughes
68c2755d71 Fix three clang complaints about the DNS code.
These are all already fixed upstream in the same way.

Change-Id: I2881b6d0fbd0237fffc0f00563bc14750dcce0d9
2014-07-07 09:44:17 -07:00
Elliott Hughes
4d763df324 Merge "Fix a broken boolean test found by clang." 2014-07-05 03:01:43 +00:00
Elliott Hughes
29edbfd64f Fix a broken boolean test found by clang.
This was only on the failure case, so this probably never caused
any real trouble.

Change-Id: Id983689772102cbb9171693b927e544fb0b584fb
2014-07-07 09:45:15 -07:00
Elliott Hughes
1ee1bfdeec Merge "Use __unused rather than self assignment for unused parameters." 2014-07-02 20:49:53 +00:00
Elliott Hughes
668da74ef1 Use __unused rather than self assignment for unused parameters.
Clang, reasonably enough, doesn't like self assignment.

Change-Id: Ie5843287802949dad148a1a815231035678e1306
2014-07-07 09:46:54 -07:00
Dan Albert
2d94ee29f4 Merge "Revert "Revert "Hide _tolower_tab_ and _toupper_tab_ on LP64.""" 2014-07-02 20:51:20 +00:00
Nick Kralevich
d11ca4e8c7 Merge "Revert "Reenable support for non-PIE executables"" 2014-07-02 20:51:20 +00:00
Nick Kralevich
76e289c026 Revert "Reenable support for non-PIE executables"
/system/bin/tf_daemon on Nakasi has been updated so it's
a PIE executable. We can now drop non-PIE support.

This reverts commit d81b3b275d.

Bug: 15086752
Bug: 15732002
Bug: 14566672
Change-Id: I832c4de01a8fa050754ea64da317d1639990265e
2014-07-03 12:08:34 -07:00
Nick Kralevich
f95964c93b Merge "libc_logging: Set SOCK_CLOEXEC on socket" 2014-07-02 20:52:43 +00:00
Nick Kralevich
bae5b1dbd8 libc_logging: Set SOCK_CLOEXEC on socket
Socket file descriptors remain open across exec unless
SOCK_CLOEXEC is set. Enable this option, to avoid leaking
file descriptors.

In practice, this isn't a big deal, since the socket only remains
open for a very short period to write a message. However, this
socket might leak for for multithreaded programs if an exec occurs
between the open and close.

Change-Id: Ica2e71fe28657c32d56de1431c8f7f1f5c7b7c58
2014-07-02 22:39:14 -07:00
Dmitriy Ivanov
04dc91ae76 Load library using file handle.
* This patch enables dlopen by file descriptor
   instead of path/name.

Bug: 15984217
Change-Id: Ib39051e00567fb97070bf96d8ce63993877c0a01
2014-07-02 13:20:47 -07:00
Elliott Hughes
6593597931 Switch to upstream OpenBSD mktemp.c.
Almost all of our stdio is actually OpenBSD, so although this isn't
really a core part of stdio (it doesn't touch struct FILE, for example)
it probably makes sense for it to come from the same upstream. My
actual motivation though is that it's the only FreeBSD file we have
compiler warnings from.

This patch moves us over to -Werror by default, with only the DNS code
having -Wno-error.

Change-Id: Id244a5b445cba41b0a1ca30298ca7b1ed177810c
2014-07-02 11:22:26 -07:00
Dan Albert
f79ee064b6 Revert "Revert "Hide _tolower_tab_ and _toupper_tab_ on LP64.""
This reverts commit 715242fd0f.

Change-Id: Ia9892fa3b03287129aa72a49974cef9fd94ae735
2014-07-01 22:41:50 +00:00
Elliott Hughes
4d299a2cf7 Merge "Build all bionic test files -Werror and fix our one warning." 2014-07-01 19:16:01 +00:00
Elliott Hughes
d06ee1d6db Build all bionic test files -Werror and fix our one warning.
Change-Id: I62bb0528fd1bcb9aa4c61e44c78158a592690fc7
2014-07-01 17:17:46 -07:00
Elliott Hughes
e997598790 Merge "Quiten warnings in semaphore.c." 2014-07-01 19:22:04 +00:00
Elliott Hughes
95d3cd0b85 Quiten warnings in semaphore.c.
Change-Id: I30aff82174f789ab407d2282c07e6207123d4d5b
2014-07-01 17:07:43 -07:00
Elliott Hughes
f2102f54a0 Merge "Quiten warnings in fts.c." 2014-07-01 19:26:36 +00:00
Elliott Hughes
ec67cded1d Quiten warnings in fts.c.
Also bring us closer to upstream. Sadly the Linux and BSD dirent
structs don't match, so we'll never be completely in sync (and I don't
think we can hide the difference with macro trickery).

Change-Id: Ief4275856116cd1d5b5e0f9166db1ead9439515c
2014-07-01 17:20:06 -07:00
Dmitriy Ivanov
87b654ce46 Merge "Disable local/protected symbol test for lp64" 2014-07-01 16:52:01 +00:00
Dmitriy Ivanov
ce0ba3c706 Disable local/protected symbol test for lp64
* Static linker optimizes protected local symbol
    out of existence, which leads to test failure.
    Disabling it for now.

Change-Id: I8de327e5073f98b64639f7a0bba3a273aa419884
2014-07-01 19:13:01 -07:00
Dmitriy Ivanov
105ef36c67 Merge "Native tests are now multilib=both by default" 2014-07-01 16:35:05 +00:00
Dmitriy Ivanov
fcac81ef04 Native tests are now multilib=both by default
Change-Id: I788ac0b871703c137727a65e017c4466127c0190
2014-07-01 15:38:22 -07:00
Dmitriy Ivanov
442d41fc12 Merge "Write message to stderr on __libc_fatal()" 2014-07-01 16:52:01 +00:00
Dmitriy Ivanov
12bf3bcdee Write message to stderr on __libc_fatal()
Change-Id: Ia8d6e256768fa51786d0139d3f3b6e9e4bebe027
2014-07-01 14:46:03 -07:00
Dmitriy Ivanov
176ccd4925 Merge "Add support for protected local symbol lookup." 2014-07-01 16:35:05 +00:00
Dmitriy Ivanov
d97e9f546e Add support for protected local symbol lookup.
Bug: http://code.google.com/p/android/issues/detail?id=66048
Change-Id: Ib334223df27adad9477fb241ab099c5e26df4a7d
2014-07-01 10:25:54 -07:00
Elliott Hughes
dc42d7ff6b Merge "Fix a warning in if_indextoname.c." 2014-07-01 14:59:07 +00:00
Elliott Hughes
49eb761306 Fix a warning in if_indextoname.c.
Change-Id: Ib6afe2a5452022f5c98ec28fd110d6b910dccdad
2014-07-01 11:13:25 -07:00
Dan Albert
42a5a177e9 Merge "Revert "Revert "Prevent symbols from libgcc from being reexported.""" 2014-07-01 14:58:20 +00:00
Christopher Ferris
4ec3bc83c6 Merge "Add optimized stpcpy." 2014-06-30 22:26:48 +00:00
Nick Kralevich
bcf77b5dff Merge "add CLOEXEC to various DNS related code" 2014-06-30 22:26:48 +00:00
Elliott Hughes
6cdab387b3 Merge "Restore <nsswitch.h> which is BSD API, not private." 2014-06-30 22:33:03 +00:00
Elliott Hughes
a311704103 Restore <nsswitch.h> which is BSD API, not private.
Also make nsdispatch non-hidden. Firefox uses it.

Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1030899
Change-Id: Iaccc1ec813d196ec91ac475fcc4ae9dca756861d
2014-06-30 14:15:34 -07:00
Christopher Ferris
753eb7f07e Add optimized stpcpy.
Change-Id: Ifed38f92a54fef4488fd0ed26a1569059a054574
2014-06-30 12:48:13 -07:00
Christopher Ferris
eac2bbf0fc Merge "Add extra strchr testing." 2014-06-30 14:46:08 +00:00
Christopher Ferris
3a657d01ec Add extra strchr testing.
Change-Id: Idd0a779eb3388e402cfcb4e0df40872320f8e155
2014-06-30 12:39:55 -07:00
Elliott Hughes
f72c56d66a Merge "Switch to upstream NetBSD nsap_addr.c." 2014-06-30 14:46:08 +00:00
Elliott Hughes
a210cae724 Switch to upstream NetBSD nsap_addr.c.
These symbols should be public (and Firefox uses them), and we'd also probably
rather have the upstream thread-safe implementation.

Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1030899
Change-Id: I2a5888fbb3198546848398f576fd2195ff3fe00c
2014-06-30 12:03:43 -07:00
Nick Kralevich
1781ed7774 add CLOEXEC to various DNS related code
Occasionally file descriptors seem to be leaking across execs
from DNS related calls. Set close-on-execute for the various
sockets / file to prevent file descriptor leakage.

Change-Id: I4724b47bc7236f40c29518a6075598a9bba48b0a
2014-06-29 20:46:17 -07:00
Elliott Hughes
f573a52cf3 Merge "Silence time64.c build warnings." 2014-06-28 11:29:06 +00:00
Elliott Hughes
066eb0b06d Silence time64.c build warnings.
Change-Id: Ibc5672480ee5e72eedf2bc29e420315b5346b0df
2014-07-01 10:48:23 -07:00
Colin Cross
ddc449748b Merge "Revert "HACK: linker: check for handle==0xffffffff on LP64"" 2014-06-26 23:45:01 +00:00
Dmitriy Ivanov
e5c759ff3a Merge "Disallow dlopen("egl/blah.so") on LP64" 2014-06-26 23:39:54 +00:00
Dmitriy Ivanov
e43c4a7a66 Disallow dlopen("egl/blah.so") on LP64
Bug: 7465467
Change-Id: Ibd3a4f1a6095f4397bde4f656e3c11b67f7edd47
2014-06-29 13:02:06 -07:00
Elliott Hughes
260846f374 Merge "Reinstate the x86 dynamic linker warning for text relocations." 2014-06-26 18:40:47 +00:00
Elliott Hughes
aa836f7310 Reinstate the x86 dynamic linker warning for text relocations.
Bug: 11358761
Change-Id: I4fc56ce7d76c9703a307ddd4d371d5e98bc6f51d
2014-06-30 14:46:53 -07:00
Christopher Ferris
2e249c2e7a Merge "Add optimized 64 bit strcpy." 2014-06-26 18:12:01 +00:00
Christopher Ferris
77561bfe0b Add optimized 64 bit strcpy.
Change-Id: I4ac12735a53c3ae9336b148ce694fe6c63613139
2014-06-26 17:51:56 -07:00
Elliott Hughes
ec97c3f024 Merge "asm/sigcontext.h is required to build unwind-dw2.c in gcc-4.9." 2014-06-26 18:34:59 +00:00
Christopher Ferris
a4a28d90f3 Merge "Add optimized neon strchr implementation based on newlib" 2014-06-26 18:12:01 +00:00
Bernhard Rosenkränzer
12c0274d9c Add optimized neon strchr implementation based on newlib
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
Change-Id: I276ff0f879e733a1115456247e1342b9c5a09015
2014-06-27 13:21:42 +02:00
Raghu Gandham
93e7b9f3ea asm/sigcontext.h is required to build unwind-dw2.c in gcc-4.9.
Change-Id: Ie36b68d1260a656056f66a67750232a7da78c61f
Signed-off-by: Steve Ellcey <steve.ellcey@imgtec.com>
2014-06-25 18:03:41 -07:00
Elliott Hughes
3df0774b15 Merge "Add a new pthread_key_delete test." 2014-06-25 17:34:27 +00:00
Elliott Hughes
ebb770f90d Add a new pthread_key_delete test.
Bug: https://code.google.com/p/android/issues/detail?id=66813
Change-Id: Ida87bc1fb15a73a08c223a7099456d9f049cd3c5
2014-06-25 13:46:46 -07:00
Elliott Hughes
ba4ebf78ad Merge "Change the LP64 off_t/loff_t/off64_t definitions to reduce warnings." 2014-06-25 03:39:25 +00:00
Elliott Hughes
00fb5f97be Change the LP64 off_t/loff_t/off64_t definitions to reduce warnings.
Code written for glibc can be sloppy about these types on LP64 and
get away with it. It's probably better for our users if these types
are identical rather than just being the same size.

Change-Id: I3dd116d80569d2d101342a552c55f4a18884025b
2014-06-25 12:09:11 -07:00
Elliott Hughes
d59ed678fe Merge "Add splice, tee, and vmsplice." 2014-06-25 01:46:04 +00:00
Elliott Hughes
3f525d41c2 Add splice, tee, and vmsplice.
Change-Id: I5f43380b88d776a8bb607b47dbbc5db5a2fe6163
2014-06-24 19:03:31 -07:00
Elliott Hughes
52f9b051c8 Merge "Sync to current upstream arc4random." 2014-06-24 18:00:13 +00:00
Elliott Hughes
0468feb286 Sync to current upstream arc4random.
This is actually revision 1.33, which is no longer the latest, but it's
as close to head as we can currently reasonably get. I've also switched
to the OpenBSD getentropy_linux.c implementation of getentropy, lightly
modified to try to report an error on failure.

Bug: 14499627
Change-Id: Ia7c561184b1f366c9bf66f248aa60f0d53535fcb
2014-06-24 14:13:48 -07:00
Elliott Hughes
598f4b3ac1 Merge "Fix getpid caching across a clone." 2014-06-24 07:45:29 +00:00
Calin Juravle
63fa660b52 Merge "Prefix cmsg_nxthdr with "__"." 2014-06-24 06:28:56 +00:00
Calin Juravle
096b4eb752 Prefix cmsg_nxthdr with "__".
This brings us on par with glibc.

To avoid breaking clients, temporary keep cmsg_nxthdr until the next NDK
refresh.

Bug: 15822452
Change-Id: I24c24e68c31f4f2b8f3d2df7acd575cb75174173
2014-06-24 11:53:06 +01:00
Dan Albert
71f9b34fbe Revert "Revert "Prevent symbols from libgcc from being reexported.""
This reverts commit 4e4e1a5d78.

Change-Id: I8e78c3a59598e052e02965dd37b3fba8f567eed9
2014-06-24 04:31:08 +00:00
Elliott Hughes
fa9e16efaf Fix getpid caching across a clone.
If you make clone, fork, or vfork system calls directly, you're still
on your own, but we now do the right thing for the clone wrapper.
With this implementation, children lose the getpid caching, but we've
no reason to think that that covers any significant use cases.

Bug: 15387103
Change-Id: Icfab6b63c708fea830960742ec92aeba8ce7680d
2014-06-23 17:49:45 -07:00
Dan Albert
4e4e1a5d78 Revert "Prevent symbols from libgcc from being reexported."
This reverts commit 65e80cf622.

Change-Id: I5f94b123f73db8d0b03cd71a5cffa0662776a017
2014-06-23 20:12:05 +00:00
Dan Albert
66a805b91e Merge "Revert "Prevent symbols from libgcc from being reexported."" 2014-06-23 17:14:09 +00:00
Dan Albert
65e80cf622 Prevent symbols from libgcc from being reexported.
Since this was not done earlier, there are binary compatibility concerns
that prevent us from being able to apply this to LP32.

Bug: 11156955
Change-Id: Ie717c3ae4b81c749548a45a993c834e109700b27
2014-06-21 00:09:31 -07:00
Dan Albert
54e9dc0213 Merge "Prevent symbols from libgcc from being reexported." 2014-06-20 21:00:34 +00:00
Dan Albert
0d7415fb22 Merge "Remove SHA1 from LP64 in favor of libcrypto." 2014-06-20 20:43:43 +00:00
Christopher Ferris
ac86f99405 Merge "[MIPS64] Regenerate mips kernel headers with fixed tool" 2014-06-20 20:43:43 +00:00
Duane Sand
2300332596 [MIPS64] Regenerate mips kernel headers with fixed tool
Change-Id: I530891123cba78edbea4aa8af88390213711ab16
2014-06-20 11:08:49 -07:00
Duane Sand
a69eaec4d4 [MIPS64] Adjust kernel/tools for mips32,mips64 headers
Define CONFIG_32BIT as _ABIO32 rather than as 1;
it needs to be undefined for calls from mips64.
We need  defined(CONFIG_32BIT) == !defined(CONFIG_64BIT),
and get that via  defined(_ABIO32) == !defined(__LP64__).

Define CONFIG_CPU_LITTLE_ENDIAN to get correctly-placed
struct msqid64_ds fillers on ipc calls from mips32.
Without this, big-endian fillers were erroneously used.
This bug exists in prior mips32 Android releases.

Define __SANE_USERSPACE_TYPES__ to use int_ll64.h
rather than int_ll64.h on mips64.
This depends on external/kernel-headers patch
 https://android-review.googlesource.com/#/c/98915/
 http://patchwork.linux-mips.org/patch/6890/

Change-Id: If65fa80746533723cdf46eebe95733bea7ce24ba
2014-06-20 10:46:28 -07:00
Christopher Ferris
eee5f173d1 Merge "[MIPS64] Adjust kernel/tools for mips32,mips64 headers" 2014-06-20 02:09:57 +00:00
Dan Albert
559f3cb532 Merge "Use __builtin_*_chk for bcopy/bzero." 2014-06-20 00:28:52 +00:00
Dan Albert
8ca440089f Use __builtin_*_chk for bcopy/bzero.
Replacing memmove/memset with their builtin check equivalents fixes an
implicit definition warning when only including strings.h.

Change-Id: I74f03b9506ea37f5c2f9c11498e379a70998b430
2014-06-23 08:30:40 -07:00
Elliott Hughes
fb0a3622f7 Merge "Cache getpid." 2014-06-20 00:26:25 +00:00
Elliott Hughes
7086ad6919 Cache getpid.
In practice, with this implementation we never need to make a system call.
We get the main thread's tid (which is the same as our pid) back from
the set_tid_address system call we have to make during initialization.
A new pthread will have the same pid as its parent, and a fork child's
main (and only) thread will have a pid equal to its tid, which we get for
free from the kernel before clone returns.

The only time we'd actually have to make a getpid system call now is if
we take a signal during fork and the signal handler calls getpid. (That,
or we call getpid in the dynamic linker while it's still dealing with its
own relocations and hasn't even set up the main thread yet.)

Bug: 15387103
Change-Id: I6d4718ed0a5c912fc75b5f738c49a023dbed5189
2014-06-20 09:06:57 -07:00
Elliott Hughes
e58055f05d Merge "Expose tzname, daylight, and timezone." 2014-06-19 22:08:31 +00:00
Elliott Hughes
06366724d5 Expose tzname, daylight, and timezone.
These were accidentally hidden.

Bug: 11156955
Change-Id: I380f00bdafa547aea13d4634f3de9ec6f0b50a6f
2014-06-19 16:08:03 -07:00
Elliott Hughes
d1bf37780d Merge "Build tzcode with hidden visibility." 2014-06-19 20:38:20 +00:00
Elliott Hughes
d10db82619 Build tzcode with hidden visibility.
Bug: 11156955
Change-Id: Ib98d837b56cbbdfd01687cb3054fe3103eec0da9
2014-06-19 14:49:30 -07:00
Elliott Hughes
29e3a0e312 Merge "Fix arm64 localtime.c build." 2014-06-19 20:38:20 +00:00
Elliott Hughes
2cb752664b Fix arm64 localtime.c build.
I'm sick of having so many different compilers.

Change-Id: I9088c38df2504e2b827d0ce5ba0fa551ae48f8f9
2014-06-19 14:19:24 -07:00
Dan Albert
715242fd0f Revert "Hide _tolower_tab_ and _toupper_tab_ on LP64."
This reverts commit dd4ad5c463.

Change-Id: If3c9771825e460ce68604082f4feb0ca783e56c6
2014-06-19 03:57:05 +00:00
Dan Albert
0df59bd3a5 Merge "Revert "Hide _tolower_tab_ and _toupper_tab_ on LP64."" 2014-06-18 22:48:04 +00:00
Dan Albert
dd4ad5c463 Hide _tolower_tab_ and _toupper_tab_ on LP64.
We can't hide them on LP32 because they appeared in NDK headers.

Bug: 11156955
Change-Id: I22bf5a0f4d330c04b49565bc598cd0568128d4fc
2014-06-18 13:11:07 -07:00
Dan Albert
ef82c28db6 Merge "Hide declaration of gets(3) for C11 and later." 2014-06-17 23:00:03 +00:00
Dan Albert
9635046e53 Hide declaration of gets(3) for C11 and later.
gets(3) was removed from C11.

This reverts commit 1291680c2a.

Bug: 14500800
Change-Id: I5e5146bdbb80f2be818a17f287b112bab37d1f6d
2014-06-17 17:37:06 -07:00
Elliott Hughes
477b45b89d Merge "Build tzcode with -Werror." 2014-06-17 21:42:00 +00:00
Elliott Hughes
5f564540a9 Build tzcode with -Werror.
Parts of this are just getting us in sync with upstream, but the
'const' stuff is our own mess. We should kill the *_tz functions
and lose this difference from upstream.

Change-Id: I17d26534ed3f54667143d78147a8c53be56d7b33
2014-06-19 13:54:10 -07:00
Christopher Ferris
0b09153c12 Merge "Move common macros into bionic_macros.h." 2014-06-17 21:42:00 +00:00
Christopher Ferris
03eebcb6e8 Move common macros into bionic_macros.h.
Bug: 15590152
Change-Id: I730636613ef3653f68c5ab1d43b53beaf8e0dc25
2014-06-18 14:23:46 -07:00
Dan Albert
a5fe7b8952 Merge "Hide _tolower_tab_ and _toupper_tab_ on LP64." 2014-06-18 19:25:04 +00:00
Elliott Hughes
942fa486f6 Merge "Update localtime.c." 2014-06-17 21:42:00 +00:00
Elliott Hughes
906eb9999b Update localtime.c.
This brings us closer to upstream's ToT localtime.c; our main interest
being their alternative fix for the stack usage we addressed in commit
8a8b0c9bfc.

Bug: 14468519
Change-Id: Ic28600115afda7f3158d91255edf422678bac082
2014-06-18 19:48:14 -07:00
Dan Albert
49d5399bbc Merge "Hide __atexit and remove __atexit_invalid." 2014-06-17 21:42:00 +00:00
Dan Albert
11f715c62e Hide __atexit and remove __atexit_invalid.
Bug: 11156955
Change-Id: I8c72edee8ecb92b75a282384277253bae19f7455
2014-06-18 13:19:22 -07:00
Christopher Ferris
5c8647665c Merge "add 64-bit bionic implementation for denver arch" 2014-06-17 21:42:00 +00:00
Nick Kralevich
8a7cffc85d Merge "Reenable support for non-PIE executables" 2014-06-17 21:42:00 +00:00
Nick Kralevich
d81b3b275d Reenable support for non-PIE executables
On Nakasi builds, /system/bin/tf_daemon is a pre-compiled
vendor supplied binary. When support for non-PIE executables
was removed, that daemon failed to start, which induced
a number of bugs.

  * keystore is broken
  * CTS runs will hang after a certain period of time

Temporarily reenable non-PIE support for 32-bit platforms
until Nakasi is fixed.

This rolls back the following commits:

  Cleanup: updated comments
  * 6275f20834
  Cleanup: remove AARCH/ARM_COPY relocation support
  * b906e13c55

And restricts the following patch to 64 bit only:

  Remove support for non-PIE executables
  * 2aebf5429b

Bug: 14566672
Bug: 15086752
Bug: 15732002
Change-Id: Ia2501aa14bd30feb4a6ce66bdb7c9f066dba0b5f
2014-06-19 09:09:54 -07:00
Dmitriy Ivanov
64dfbd242c Merge "Fix weak function lookups" 2014-06-17 21:07:34 +00:00
Dmitriy Ivanov
ce44166c73 Fix weak function lookups
* Linker now correctly resolves function defined
   with __attribute__((weak)).

Bug: https://code.google.com/p/android/issues/detail?id=70206
Change-Id: I82efb905676c25fefb1b11a13f5fecb0f1384657
2014-06-17 16:18:18 -07:00
Dmitriy Ivanov
1d2b4c022c Merge "Move libraries for unit-tests to separate folder" 2014-06-17 23:00:03 +00:00
Dmitriy Ivanov
1f5e1a3cbc Move libraries for unit-tests to separate folder
Change-Id: I1653f3f2fd63ba25525369bc725c8f7438ecf021
2014-06-17 15:08:53 -07:00
Dan Albert
1ef3ba2b4f Merge "Revert "Hide declaration of gets(3) for C11 and later."" 2014-06-17 20:56:23 +00:00
Dan Albert
1291680c2a Revert "Hide declaration of gets(3) for C11 and later."
Breaks stlport. checkbuild lied to me?

This reverts commit c0ce590827.

Change-Id: I72fb21aba7eaea96a7c3208236fd03411527fa5e
2014-06-17 23:28:38 +00:00
Dan Albert
c0ce590827 Hide declaration of gets(3) for C11 and later.
gets(3) was removed from C11.

Change-Id: I4040a8a6c6d5d2a86878e8a80ca67964fbbb82a8
2014-06-17 15:52:07 -07:00
Elliott Hughes
b6ca747402 Merge "Add a flag control that PRIVATE libm can be chosen" 2014-06-17 20:56:23 +00:00
Elliott Hughes
4ac2264944 Merge "Add <linux/tty.h> to libc/include/sys/ioctl.h" 2014-06-17 20:56:23 +00:00
Dan Albert
185c399c58 Merge "Hide declaration of gets(3) for C11 and later." 2014-06-17 20:49:57 +00:00
Christopher Ferris
b656410a73 Merge "Use a separate config.h for config like defines." 2014-06-17 04:51:41 +00:00
Christopher Ferris
6361964381 Use a separate config.h for config like defines.
This allows an easier way to share config parameters between unit tests
and the bionic code.

It also fixes a problem where the 32 bit bionic tests based on glibc, or
the cts list executable did not have the pvalloc,valloc tests.

Change-Id: Ib47942cb8a278252faa7498a6ef23e9578db544f
2014-06-16 23:35:53 -07:00
Dan Albert
c82c0b7e07 Remove SHA1 from LP64 in favor of libcrypto.
Keep the symbols around on LP32 for binary compatibility.

Bug: 11156955
Change-Id: I379a7e0fa3092e9a70daeafcbcb2aacfc314031a
2014-06-16 16:52:27 -07:00
Colin Cross
acfc63760e Revert "HACK: linker: check for handle==0xffffffff on LP64"
This reverts commit 346fea0805.

Change-Id: Id3fd79451e4218e68e39ce22f21408cbf93255ee
2014-06-16 15:44:20 -07:00
Christopher Ferris
d10d3acd45 Merge "Move jemalloc due to whole_static_library bug." 2014-06-16 15:49:03 +00:00
Christopher Ferris
3a37576d4b Move jemalloc due to whole_static_library bug.
Rename jemalloc.cpp to jemalloc_wrapper.cpp to avoid problems with
the libc library having two jemalloc.o files that clobber each other.

Change-Id: I9a2d966dbf414b1367ee0ef1f0d73fca6f25b518
2014-06-16 17:13:09 -07:00
Dan Albert
a217a0cdb3 Merge "libc: Fix 'index' symbol export." 2014-06-16 15:34:52 +00:00
David 'Digit' Turner
891dedb935 libc: Fix 'index' symbol export.
The C library didn't export the 'index' symbol, but its C++ name-mangling
instead, which broke the ABI and prevented some applications from loading
properly.

The main reason was that the implementation under bionic/index.cpp relied
on the declaration to specify that the function has C linkage.

However, the declaration for index() was removed from both <string.h>
and <strings.h> in a recent patch, which made the compiler think it was
ok to compile the function with C++ linkage instead!

This patch does the following:

- Move index() definition to bionic/ndk_cruft.cpp and ensure it uses
  C linkage.

  Note that this removes index() from the 64-bit library entirely, this
  is intentional and will break source compatibility. Simply replacing
  an index() call with the equivalent strchr() should be enough to fix
  this in third-party code.

- Remove bionic/index.cpp from the tree and build files.

- Remove x86 assembly implementation from arch-x86/ to avoid conflict
  with the one in ndk_cruft.cpp

BUG=15606653

Change-Id: I816b589f69c8f8a6511f6be6195d20cf1c4e8123
2014-06-16 13:10:20 -07:00
Dan Albert
4fb0d4fb31 Merge "Revert "Revert "Remove ftime from bionic LP64""" 2014-06-16 19:18:38 +00:00
Dan Albert
ac6467587e Revert "Revert "Remove ftime from bionic LP64""
This reverts commit 0921204660.

Change-Id: I749af8d7d429cda9f9d09a75bd30df54e6b1dd65
2014-06-16 12:32:38 -07:00
Dan Albert
9a3ad98fd6 Merge "Removes getdtablesize(3) from LP64." 2014-06-16 19:16:50 +00:00
Dan Albert
462abab12b Removes getdtablesize(3) from LP64.
getdtablesize(3) was removed fro POSIX 2004. Keep the symbol around in LP32 for
binary compatibility, but remove the declaration from unistd.h.

Bug: 13935372
Change-Id: I1f96cd290bf9176f922dad58bd5a7ab2cae7ef0f
2014-06-16 10:12:37 -07:00
Qiming Shi
0069f31066 Add <linux/tty.h> to libc/include/sys/ioctl.h
This is the change to export the tty ldisc definitions (like N_TTY)
from Linux uapi kernel header. So bionic is compatbile with glibc
which has its own tty ldisc definition exported through ioctl.h

Change-Id: I44e4c7cc2eba31549e9c9c75f74961a949d4a696
Signed-off-by: Qiming Shi <qiming.shi@intel.com>
Signed-off-by: Yin, Fengwei <fengwei.yin@intel.com>
2014-06-13 16:39:39 +08:00
Elliott Hughes
0f690d9eda Merge "Fix x86-64 libvpx build." 2014-06-12 21:07:49 +00:00
Elliott Hughes
e61919ad11 Fix x86-64 libvpx build.
This is now fixed upstream, but we need to wait for it to come back down
via chromium...

Bug: 15598056
Change-Id: I08f1be4296c391cfc1616a5ff0815be14071594a
2014-06-12 20:07:47 -07:00
Shu Zhang
0ef7a8fd31 add 64-bit bionic implementation for denver arch
Add 64-bit bionic implementation for denver. memcpy/memset are
denver-specific optimized. Use generic version of other routines.

Change-Id: I44a830e07b82b2986001d73d1540b4080aaa839b
2014-06-12 15:08:27 +08:00
Dan Albert
72dc1c22dc Merge "Revert "Backing this one out since the counterpart needs to be sent upstream."" 2014-06-12 05:34:11 +00:00
Dan Albert
e5fdaa4f9d Revert "Backing this one out since the counterpart needs to be sent upstream."
This reverts commit a04d2bc28e.

Change-Id: I1b49165ca5d4bafdba7948818256a6167a363aca
2014-06-14 01:04:31 +00:00
Dan Albert
a04d2bc28e Backing this one out since the counterpart needs to be sent upstream.
This reverts commit 5ee320dd35.

Change-Id: I1a9c6b06c3aca595f01c629f7649be743dc48e77
2014-06-14 00:51:14 +00:00
Dan Albert
5ee320dd35 Hides valloc(3)/pvalloc(3) on LP64.
These were removed from POSIX 2004. Hides the header declarations for all
targets, and hides the symbols for LP64.

Bug: 13935372
Change-Id: Id592f67e9b7051517a05f536e1373b30162e669c
2014-06-13 15:35:05 -07:00
Dan Albert
b84783ecaa Merge "Backing this one out since the counterpart needs to be sent upstream." 2014-06-12 05:34:11 +00:00
Elliott Hughes
ae3c6af3e5 Merge "[MIPS64] linker64 requires startup code" 2014-06-12 03:32:07 +00:00
Chris Dearman
9d98ee17fe [MIPS64] linker64 requires startup code
Change-Id: Iff2cd7d4dc40a67978bd9fc585b86e5a87afdbdd
2014-06-12 19:18:12 -07:00
Dan Albert
65b1c90a32 Merge "Hides valloc(3)/pvalloc(3) on LP64." 2014-06-12 03:32:07 +00:00
Elliott Hughes
1aaed87f7f Merge "Somewhere, the declaration of _resolv_delete_cache_for_net went missing." 2014-06-12 03:32:07 +00:00
Elliott Hughes
7f2d4c21cc Somewhere, the declaration of _resolv_delete_cache_for_net went missing.
I couldn't work out where this went missing from "git log", but it became
important with the switch to hidden visibility.

Change-Id: I921f81e36642a2c65c3ec85dc9b5b87c5d977a5b
2014-06-12 18:40:06 -07:00
Christopher Ferris
2ba734d8cd Merge "Fix %u format that should have been %zu." 2014-06-12 21:07:49 +00:00
Christopher Ferris
580b6e09fe Fix %u format that should have been %zu.
Change-Id: Icedacf6783d6b0cf4783c838b3c4622d2e67f073
2014-06-12 18:20:44 -07:00
Christopher Ferris
a403780538 Put all allocation functions into dispatch table.
Implement these new functions for all of the debug malloc types.

Fix a number of bugs in the debug malloc functions related to overflow
conditions.
Fix a bug in dlpvalloc due to an overflow condition.

Fix various other bugs in the debug malloc functions.

Add new tests for malloc functions.

Bug: 11225066

Change-Id: Idf50f389603e2157645565bc15cd9365eec2e9dd
2014-06-12 15:08:18 -07:00
Dan Albert
b725e7627f Merge "Removes wait3(2) from LP64." 2014-06-12 03:32:07 +00:00
Dan Albert
8229ae46f4 Removes wait3(2) from LP64.
wait3(2) was removed from POSIX 2004. Keep the symbol around in LP32 for binary
compatibility, but remove the declaration in sys/wait.h.

Bug: 13935372
Change-Id: Ic715fce6781aae43b4ac6d745dc6d1e6b9914e71
2014-06-13 16:04:41 -07:00
Elliott Hughes
ff17671bc6 Merge "Add a hack to <stdlib.h> until we can fix libvpx." 2014-06-12 03:32:07 +00:00
Elliott Hughes
3fb5097a7e Add a hack to <stdlib.h> until we can fix libvpx.
libvpx should probably change its assembler to refer to lrand48 directly,
because that will work on old and new versions of Android. This keeps things
building until that happens.

Bug: 15598056
Change-Id: I4a1f59e710a083b9f9a707ceeb9ca0a28141a954
2014-06-12 17:50:52 -07:00
Elliott Hughes
5d25d5480a Merge "Remove __memcmp16 from bionic." 2014-06-12 05:34:11 +00:00
Elliott Hughes
24614b4729 Remove __memcmp16 from bionic.
Change-Id: I2486d667d96c8900dd368d855f37c1327161efb7
2014-06-12 15:35:22 -07:00
Elliott Hughes
564222e338 Merge "Use default hidden visibility to build libc_dns." 2014-06-12 05:34:11 +00:00
Christopher Ferris
29ddd78c21 Merge "Put all allocation functions into dispatch table." 2014-06-12 21:07:49 +00:00
Elliott Hughes
8563802b04 Use default hidden visibility to build libc_dns.
Bug: 11156955
Change-Id: Ia443705f5fbee0681039d4480abc89850968f475
2014-06-12 13:35:41 -07:00
Elliott Hughes
b67a3c2716 Merge "Fix GCC 4.9 complaint about int/size_t mismatch." 2014-06-12 05:34:11 +00:00
Elliott Hughes
5ab51d0d1a Fix GCC 4.9 complaint about int/size_t mismatch.
Change-Id: Ib13857f98658dc8760cff15adb5829e8e140008a
2014-06-12 12:52:58 -07:00
Dan Albert
f87ac523a1 Merge "Remove ioprio_get(2) and ioprio_set(2) from LP64." 2014-06-12 03:32:07 +00:00
Dan Albert
607341e226 Remove ioprio_get(2) and ioprio_set(2) from LP64.
Bug: 11156955
Change-Id: I07b596d85e4bd6347d488d1a92c8d0a00b5ef3b3
2014-06-12 18:10:13 -07:00
Elliott Hughes
346fa721ca Merge "Get the full set of PRNG functions in <stdlib.h>" 2014-06-12 03:32:07 +00:00
Elliott Hughes
a0beeeabbc Get the full set of PRNG functions in <stdlib.h>
Bug: https://code.google.com/p/android/issues/detail?id=58888
Change-Id: I435250bdae302e8bd7e29977d0fde7b9afbfca5e
2014-06-12 14:37:31 -07:00
Elliott Hughes
1e7ae47d40 Merge "Bring our "libresolv" stuff in line with glibc." 2014-06-12 03:32:07 +00:00
Elliott Hughes
e8e453439f Bring our "libresolv" stuff in line with glibc.
Despite the name, most of resolv_private.h is actually in glibc; it's just
that there it's tucked away in libresolv whereas we have it in libc.

Change-Id: Ibcf6603f1141ffd2661cee0bffa83052d4f9e549
2014-06-13 11:50:07 -07:00
Elliott Hughes
15330331b6 Merge "Upgrade to tzdata2014e." 2014-06-12 21:07:49 +00:00
Elliott Hughes
addd6a2f1d Upgrade to tzdata2014e.
From the release notes:

  Changes affecting near-future time stamps

    Egypt's 2014 Ramadan-based transitions are June 26 and July 31 at 24:00.
    (Thanks to Imed Chihi.)  Guess that from 2015 on Egypt will temporarily
    switch to standard time at 24:00 the last Thursday before Ramadan, and
    back to DST at 00:00 the first Friday after Ramadan.

    Similarly, Morocco's are June 28 at 03:00 and August 2 at 02:00. (Thanks
    to Milamber Space Network.)  Guess that from 2015 on Morocco will
    temporarily switch to standard time at 03:00 the last Saturday before
    Ramadan, and back to DST at 02:00 the first Saturday after Ramadan.

  Changes affecting past time stamps

    The abbreviation "MSM" (Moscow Midsummer Time) is now used instead of
    "MSD" for Moscow's double daylight time in summer 1921.  Also, a typo
    "VLASST" has been repaired to be "VLAST" for Vladivostok summer time
    in 1991.  (Thanks to Hank W. for reporting the problems.)

Change-Id: Iaca5e8c2d572559b464b10d24f4315405e413ada
2014-06-13 10:55:19 -07:00
Christopher Ferris
3d5e0b2045 Merge "Add/Remove mmap tests." 2014-06-12 03:32:07 +00:00
Christopher Ferris
eda26bc1ff Add/Remove mmap tests.
Remove the incorrect tests that use a negative offset for mmap without
a fd.

Add a small set of tests for mmap.

Bug: 15436969

Change-Id: Id537d33cd4cdc26dee6cdfa9bf9cf35754bce335
2014-06-12 13:16:36 -07:00
Dan Albert
37b845f9e4 Merge "Remove declaration for putw(3)/getw(3)." 2014-06-12 05:34:11 +00:00
Dan Albert
8e613cf342 Remove declaration for putw(3)/getw(3).
These were both removed from POSIX 2004, and we don't define an
implementation for getw(3). Keep the definition of put(3) on LP32 for
binary compatibility.

Bug: 13935372
Change-Id: Iba384b45093ac6d2d7c2d81f7980cd7701dd6f56
2014-06-11 14:41:45 -07:00
Elliott Hughes
d242aff47d Merge "Fix most of the tzcode warnings." 2014-06-11 21:23:58 +00:00
Elliott Hughes
5204a9e8ca Fix most of the tzcode warnings.
There's one left, but that's not fixed upstream yet.

Change-Id: Iba920cb7b156357c7f5e8220eb55ff1637ff48a1
2014-06-11 17:15:56 -07:00
Elliott Hughes
2c02d0057c Merge "Add __pure2 to a few more functions, most notably gettid and pthread_self." 2014-06-10 22:15:14 +00:00
Elliott Hughes
b27a840f4b Add __pure2 to a few more functions, most notably gettid and pthread_self.
Change-Id: I7eee9f26f45130038af09d8285782b07f70a996f
2014-06-11 16:32:10 -07:00
Elliott Hughes
ab66d360bc Merge "Fix mbrtoc32 test from tests/uchar_test.cpp for x86." 2014-06-10 22:20:24 +00:00
Alexander Ivchenko
68b01665b3 Fix mbrtoc32 test from tests/uchar_test.cpp for x86.
Without that fix the test fails with:
"error: comparison between signed and unsigned integer expressions" on x86,
due to the fact that char is signed on x86.

Change-Id: I44462d67c15c7e9b730ad5da52eb9c05e207d34b
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>
2014-06-11 15:57:57 -07:00
Dan Albert
48082a0a6e Merge "Remove declarations related to cuserid(3)." 2014-06-10 22:20:24 +00:00
Dan Albert
cd32219c5b Remove declarations related to cuserid(3).
cuserid(3) was removed from POSIX 2004, and we don't have an
implementation anyway.

Bug: 13935372
Change-Id: I7ac7cde931ba802d0d5b917c22f5116618b21d2f
2014-06-11 13:20:18 -07:00
Elliott Hughes
0ada9388e7 Merge "Add a couple more system call benchmarks." 2014-06-10 22:08:45 +00:00
Elliott Hughes
80664231b8 Merge "Revert "Temporarily expose dlmalloc_usable_size."" 2014-06-10 22:20:24 +00:00
Christopher Ferris
30d15e5499 Merge "Allow bionic-unit-tests-glibc to be built again." 2014-06-10 22:20:24 +00:00
Christopher Ferris
e9f7a9c340 Allow bionic-unit-tests-glibc to be built again.
When we switched to 64 bit host build be default, we no longer build
the glibc unit tests. Fix that, and also set all host targets to build
multilib.

This change also changes the name of bionic-unit-tests-glibc to add
the suffix of 32 or 64 depending on the host type built.

Change-Id: Ife13f9d80f351750ff02825b086d44bb0c2df828
2014-06-10 19:46:07 -07:00
Dan Albert
440bd6bcc3 Merge "Replaces vfork() implementation with fork()" 2014-06-10 22:08:45 +00:00
Dan Albert
210331d976 Replaces vfork() implementation with fork()
vfork() was removed from POSIX 2008, so this replaces its implementation
with a call to fork().

Bug: 13935372
Change-Id: I6d99ac9e52a2efc5ee9bda1cab908774b830cedc
2014-06-10 21:38:52 -07:00
Elliott Hughes
b28d37482e Merge "Size the benchmark name column appropriately." 2014-06-10 21:49:56 +00:00
Elliott Hughes
c0eed72cbf Size the benchmark name column appropriately.
Nobody likes misaligned output.

Change-Id: Ifbfd7beec755e91e204426a96c054d4ea20d3fae
2014-06-11 16:48:29 -07:00
Elliott Hughes
bdb8b21d05 Merge "AArch64: Fix memcmp16() test" 2014-06-10 18:25:40 +00:00
Serban Constantinescu
2aca7fe821 AArch64: Fix memcmp16() test
__memcmp16() should return an integer less than, equal to, or greater than
zero. However the tests looks for a specific value.

Change-Id: I06052f58f9ccc67146a3df9abb349c4bc19f090e
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2014-06-10 17:51:10 +01:00
Elliott Hughes
7634db5a06 Add a couple more system call benchmarks.
Bug: 15387103
Change-Id: I13419ddf77d201fdbde4c784259c0cb0dcfb9a77
2014-06-09 18:35:21 -07:00
Elliott Hughes
2b8246fa75 Merge "Hide rand48 implementation details." 2014-06-10 01:28:08 +00:00
Elliott Hughes
809093bc21 Hide rand48 implementation details.
Bug: 11156955
Change-Id: I130272286989487dc22e246fb4ffbee5230225c4
2014-06-09 18:10:20 -07:00
Elliott Hughes
bdcab25ee6 Merge "Hide non-standard syslog API." 2014-06-10 01:09:10 +00:00
Elliott Hughes
a382a792a4 Hide non-standard syslog API.
The definitions are still available on LP32 for binary compatibility, but
they're gone on LP64, and the declarations are gone everywhere.

We should probably just make syslog(3) log to the regular Android log,
but that's a job for another day.

Bug: 11156955
Change-Id: I74a98c92f7922ea733549ec6d37c6fa8b7014860
2014-06-09 17:42:14 -07:00
Ying Wang
199e8638df Merge "Use PRIVATE_POST_INSTALL_CMD to create symlink." 2014-06-09 23:55:19 +00:00
Ying Wang
7f722b366a Use PRIVATE_POST_INSTALL_CMD to create symlink.
Bug: 15520908
Change-Id: Ib3349f7adb6def81abf07bfb9d37093e4a599d09
2014-06-09 16:32:51 -07:00
Elliott Hughes
87d4233c72 Merge "Remove the MD5 implementation that was only used by toolbox." 2014-06-09 23:29:21 +00:00
Elliott Hughes
67401638a9 Remove the MD5 implementation that was only used by toolbox.
I've already moved toolbox over to openssl.

Change-Id: Ia75fba5b5e3335a975b97787f653bf4df78e1b4e
2014-06-09 16:26:29 -07:00
Elliott Hughes
e7baf46b86 Merge "Add a regression test for two libm bugs we didn't have." 2014-06-09 23:18:35 +00:00
Elliott Hughes
4779a11a3d Merge "Move mips fenv implementation details into fenv.c." 2014-06-09 22:27:30 +00:00
Elliott Hughes
89d61243f2 Move mips fenv implementation details into fenv.c.
Change-Id: I2415e4808e40c2981d016c01969ba14ea22bf82e
2014-06-09 15:25:15 -07:00
Elliott Hughes
385f70094e Merge "Move x86 fenv implementation details into fenv.c." 2014-06-09 22:22:10 +00:00
Elliott Hughes
43bf81e544 Move x86 fenv implementation details into fenv.c.
Change-Id: I6cb8c730483c325dc3cb75c2b2fbdd2d8455a54c
2014-06-09 15:20:59 -07:00
Elliott Hughes
8c054c51c3 Merge "Clean up the ARM fenv.h, moving implementation details into fenv.c." 2014-06-09 21:16:15 +00:00
Elliott Hughes
9812a0233c Clean up the ARM fenv.h, moving implementation details into fenv.c.
Change-Id: I919d35db27ec16a6f54a7a5c3c070f33f03d9bb9
2014-06-09 13:57:57 -07:00
Elliott Hughes
87472963c7 Merge "AArch64: libm: Fix ARM64 fenv_t and refactor ARM64 libm implementation." 2014-06-09 20:54:22 +00:00
Serban Constantinescu
a147a1da5c AArch64: libm: Fix ARM64 fenv_t and refactor ARM64 libm implementation.
This patch fixes the ARM64 ABI for libm. fenv_t is now split in 32bit status
and 32bit control. This mirrors the AArch64 FPU control and status
registers (FPCR, FPSR).

The patch also refactors the libm implementation for ARM64 into a finer
grained control over the FPU registers.

Bionic-benchmarks has been expanded with 3 more benchmarks for floating
point operations. The new libm implementation for ARM64 performs better
over all the math benchmarks available.

Change-Id: I2a7f81d6b4e55c91f8a63a4c69614fc8b1bcf2db
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2014-06-09 13:52:28 -07:00
Elliott Hughes
36ed5971c4 Merge "AArch64: Remove Frame Record from ARM64 syscalls" 2014-06-09 19:29:46 +00:00
Serban Constantinescu
602b4e482c AArch64: Remove Frame Record from ARM64 syscalls
This patch removes the frame record created on svc calls.

Change-Id: I67cf926ba59540e824fb9749d30538e332df7c1e
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2014-06-09 11:36:37 -07:00
Elliott Hughes
e18c271423 Merge "Add the missing issetugid binary compatibility stub." 2014-06-07 05:37:26 +00:00
Elliott Hughes
18b17e9775 Add a regression test for two libm bugs we didn't have.
Reported on the OpenBSD list, but we already had the fix for one from FreeBSD,
and I think the other only affected ld80 anyway. Worth having tests thuogh.

Change-Id: Ic4bbeb2384fd578a3ef13e4907be83deda50815f
2014-06-06 21:55:27 -07:00
Elliott Hughes
bffbfeed7a Add the missing issetugid binary compatibility stub.
Bug: 14569474
Change-Id: I3bedc1a0acf356af76424ceaf62ae7e85239f617
2014-06-06 20:41:42 -07:00
Elliott Hughes
19718f0cd6 Merge "Rewrite and hide longjmperror." 2014-06-07 03:35:28 +00:00
Christopher Ferris
1cada9b3ea Merge "Remove unused scripts." 2014-06-07 01:45:28 +00:00
Elliott Hughes
47ba295b06 Rewrite and hide longjmperror.
This shouldn't be public API, isn't supported on x86/x86_64, and it's
unlikely anyone would have actually seen the message before anyway.
Using __libc_fatal makes it much more likely to be seen.

Bug: 11156955
Change-Id: Icf7f654b22a7dacd89668b60c11e5705c7215c08
2014-06-06 16:49:39 -07:00
Christopher Ferris
ab39aba70e Remove unused scripts.
Change-Id: I3391d6c903f710b45e62bcf01058cf3ad9abe399
2014-06-06 15:28:42 -07:00
Elliott Hughes
6fa47ca484 Merge "Fix ndk_cruft.cpp __getdents64 build failure." 2014-06-06 22:25:19 +00:00
Elliott Hughes
1c60f8080a Merge "Rename __bionic_clone_entry to __start_thread." 2014-06-06 22:24:44 +00:00
Elliott Hughes
d1ead2af8b Fix ndk_cruft.cpp __getdents64 build failure.
Change-Id: Ia463113da0575b36b5a9935d8d45e7bd2c801357
2014-06-06 15:24:20 -07:00
Elliott Hughes
087b3cfa5b Merge "Add a few more C11 functions to the whitelist." 2014-06-06 22:21:17 +00:00
Elliott Hughes
f6b1d439cc Add a few more C11 functions to the whitelist.
Change-Id: Ie2e767910d7cc8a78c05e29960cf4ab52a59fe9d
2014-06-06 15:20:50 -07:00
Elliott Hughes
ebc8cd117a Rename __bionic_clone_entry to __start_thread.
This seems a bit less obscure.

Change-Id: I7dc528c253b73c861694f67556ad8f919bf92136
2014-06-06 15:18:54 -07:00
Elliott Hughes
3e0e7eea49 Merge "Remove getdents from bionic." 2014-06-06 22:17:59 +00:00
Christopher Ferris
b837767a63 Merge "Update kernel header generation docs." 2014-06-06 22:10:19 +00:00
Elliott Hughes
3d5cb30d23 Remove getdents from bionic.
Bug: 11156955
Change-Id: I6c306989801be552d85fba8a50dcdc79282fb9d2
2014-06-06 15:05:58 -07:00
Christopher Ferris
08b60747fe Update kernel header generation docs.
Also move the description of the cleanup data to the cleanup script.

Bug: 15433575
Change-Id: I21e2cbbfab55da483af1bbe36bbe59126b518e3c
2014-06-06 13:54:36 -07:00
Elliott Hughes
c3bdc792be Merge "Fix the printf family for non-ASCII." 2014-06-06 18:06:44 +00:00
Elliott Hughes
69f05d291d Fix the printf family for non-ASCII.
The bug here turned out to be that we hadn't increased the constant
corresponding to the maximum number of bytes in a character to match
our new implementation, so any character requiring more than a byte
in UTF-8 would break our printf family.

Bug: 15439554
Change-Id: I693e5e6eb11c640b5886e848502908ec5fff53b1
2014-06-05 23:19:15 -07:00
Elliott Hughes
e2a54ca80e Merge "Remove unnecessary instructions from x86/x86_64 syscalls." 2014-06-06 01:03:20 +00:00
Elliott Hughes
15a0456d0b Remove unnecessary instructions from x86/x86_64 syscalls.
__set_errno returns -1 exactly so that callers don't need to bother.
The other architectures were already taking advantage of this, but
no one had ever fixed x86 and x86_64.

Change-Id: Ie131494be664f6c4a1bbf8c61bbbed58eac56122
2014-06-05 17:24:30 -07:00
Elliott Hughes
50b79530c6 Merge "Fix unwinding through x86-64 __bionic_clone." 2014-06-05 23:38:19 +00:00
Elliott Hughes
aeb3016f81 Fix unwinding through x86-64 __bionic_clone.
x86-64 needs these CFI directives to stop unwinding here.
I've also cleaned up the assembler a little, and made x86 and x86-64
a little more alike.

Bug: 15195760
Change-Id: I40f92c007843c29c933bb6876fe2b4611e1b946b
2014-06-05 16:36:06 -07:00
Dan Albert
9c101eb9d1 Merge "Removes index() from bionic." 2014-06-05 21:34:49 +00:00
Christopher Ferris
8ac8278b0a Merge "Fix for slm-tuned memmove (both 32- and 64-bit)." 2014-06-05 18:10:59 +00:00
Varvara Rainchik
fce861498c Fix for slm-tuned memmove (both 32- and 64-bit).
Introduce a test for memmove that catches a fault.
Fix both 32- and 64-bit versions of slm-tuned memmove.

Change-Id: Ib416def2610a0972e32c3b9b6055b54967643dc3
Signed-off-by: Varvara Rainchik <varvara.rainchik@intel.com>
2014-06-05 11:08:09 -07:00
Dan Albert
40fca0f08b Removes index() from bionic.
This function has been removed from POSIX.

Unfortunately, we can't leave #define index(a, b) strchr((a), (b)) in its place
because defining a preprocessor macro for index() breaks a whole lot of code.

Bug: 13935372
Change-Id: Ifda348acde06da61c12e7ee2f8fe6950a3174dd1
2014-06-05 11:05:10 -07:00
Dan Albert
431aa4dc92 Merge "Remove bsd_signal and sysv_signal from bionic LP64." 2014-06-05 18:03:45 +00:00
Dan Albert
205dd7d9b3 Remove bsd_signal and sysv_signal from bionic LP64.
bsd_signal was removed in POSIX 2008, sysv_signal was never POSIX.

Bug: 13935372
Change-Id: I7688e5cc317247ff075dcf99b598f515fb4f15c4
2014-06-05 08:21:17 -07:00
Elliott Hughes
8aabecf35c Merge "Hide __libc_fini." 2014-06-05 03:24:25 +00:00
Dan Albert
768120416b Merge "Revert "Remove ftime from bionic LP64"" 2014-06-05 00:50:56 +00:00
Dan Albert
0921204660 Revert "Remove ftime from bionic LP64"
Breaking some build... will look in to it later.

This reverts commit 26d6799bbe.

Change-Id: I35fa770221be3a181bd37c6c3dce1bf37a69a4a1
2014-06-05 00:50:43 +00:00
Dan Albert
428581fb45 Merge "Remove ftime from bionic LP64" 2014-06-04 23:42:27 +00:00
Elliott Hughes
1f29665f15 Hide __libc_fini.
Bug: 11156955
Change-Id: Id5af3540c6ec4d9ef969d62a230144fe8bb76b0b
2014-06-04 16:29:37 -07:00
Dan Albert
26d6799bbe Remove ftime from bionic LP64
Bug: 13935372
Change-Id: I5dd31147143b23a090a3b75b846dc5354e599121
2014-06-04 16:25:24 -07:00
Elliott Hughes
67c437b231 Revert "Temporarily expose dlmalloc_usable_size."
This reverts commit 6403cc4870.

Change-Id: Id1ce4088be1e6c83271c6317eb3e5f7fc11c7b95
2014-06-04 23:14:48 +00:00
Elliott Hughes
37229f2a92 Merge "Temporarily expose dlmalloc_usable_size." 2014-06-04 23:11:06 +00:00
Elliott Hughes
6403cc4870 Temporarily expose dlmalloc_usable_size.
Bug: 15425694
Change-Id: I47e1ca598817359260c372fec8072e76886054f0
2014-06-04 16:08:17 -07:00
Elliott Hughes
53e3bbab07 Merge "Temporary fix for asan_malloc_linux.cc build failure." 2014-06-04 22:21:13 +00:00
Elliott Hughes
14442bb229 Temporary fix for asan_malloc_linux.cc build failure.
Bug: 15432753
Change-Id: I02a3a2c826e6d01e6809c51588a9670dcd179123
2014-06-04 15:20:46 -07:00
Elliott Hughes
38732aa9ea Merge "Fix debug malloc." 2014-06-04 21:10:55 +00:00
Elliott Hughes
8e52e8fe83 Fix debug malloc.
Previously the dynamically-loaded part of the debug malloc implementation
wanted to access hidden symbols in libc itself.

Bug: 15426546
Change-Id: I6a366ef626854d1af1d705ca24842817b1c02a19
2014-06-04 14:08:20 -07:00
Dan Albert
623dce3bd4 Merge "Removes wcswcs from bionic for LP64." 2014-06-04 20:59:10 +00:00
Dan Albert
001f8f041b Removes wcswcs from bionic for LP64.
Bug: 13935372
Change-Id: I0deb15e769da4fa81bb65a87f3c86db5163a5796
2014-06-04 12:01:56 -07:00
Elliott Hughes
e120cba31d Merge "Cherrypick upstream OpenBSD's vfwprintf.c revision 1.11." 2014-06-04 16:17:10 +00:00
Dan Albert
452e091300 Merge "Adds functionality specified by uchar.h" 2014-06-04 16:10:50 +00:00
Elliott Hughes
be8df2e744 Cherrypick upstream OpenBSD's vfwprintf.c revision 1.11.
revision 1.11
date: 2014/06/04 07:45:25;  author: stsp;  state: Exp;  lines: +1 -7;  commitid:
 zJPRH5RUO224FmQu;
Remove assigned but unused local variables and macro from vfwprintf().
Found by Elliott @ google
ok mpi@

Change-Id: I716edc0c4d736a484a5317942de8e87bd8c6fd26
2014-06-04 09:00:25 -07:00
Dan Albert
7a7f9952c1 Adds functionality specified by uchar.h
mbrtoc32 and c32rtomb get their implementations from mbrtowc and wcrtomb. The
wc functions now simply call the c32 functions.

Bug: 14646575
Change-Id: I49d4b95fed0f9d790260c996c4d0f8bfd1686324
2014-06-04 08:39:24 -07:00
Elliott Hughes
38ed337c13 Merge "Hide dlmalloc symbols." 2014-06-04 03:30:37 +00:00
Elliott Hughes
9b5235d74e Hide dlmalloc symbols.
We need to leave dlmalloc_trim and dlmalloc_inspect_all exposed for
the VM, but if we're seriously looking at other malloc implementations,
that's something we're going to have to fix.

Bug: 11156955
Change-Id: If85156c280044f1616c09a3c50ba674aaf0e8d3a
2014-06-03 18:47:17 -07:00
Dan Albert
c380189410 Merge "Removes bcopy and bzero from bionic." 2014-06-04 01:00:40 +00:00
Dan Albert
ce9ce28e5d Removes bcopy and bzero from bionic.
These symbols are still defined for LP32 for binary compatibility, but
the declarations have been replaced with the POSIX recommended #defines.

Bug: 13935372
Change-Id: Ief7e6ca012db374588ba5839f11e8f3a13a20467
2014-06-03 17:22:07 -07:00
Elliott Hughes
3dbc2fe33e Merge "Work around "error: variable 'uio' set but not used"." 2014-06-03 23:41:35 +00:00
Elliott Hughes
b082645ccb Work around "error: variable 'uio' set but not used".
I've sent the real fix upstream, and will merge that when they commit it.

Change-Id: I75e5cab87026f8990c585d364dd178753d727e2a
2014-06-03 16:39:58 -07:00
Elliott Hughes
bd6b849754 Merge "Remove an unused parameter from the dlopen implementation." 2014-06-03 23:36:35 +00:00
Elliott Hughes
1a58629340 Remove an unused parameter from the dlopen implementation.
Change-Id: I9297913a743bb570b48ebbe594ff711a481e89e0
2014-06-03 16:23:08 -07:00
Elliott Hughes
be15d16b72 Merge "Turn on -Wunused and fix the mistakes it uncovers." 2014-06-03 23:14:21 +00:00
Elliott Hughes
d286796fce Turn on -Wunused and fix the mistakes it uncovers.
Change-Id: I023d2d8b547fbc21d4124bb7510d42b06a0dc501
2014-06-03 15:22:34 -07:00
Dan Albert
2f9400b679 Merge "Use __libc_fatal() for failed malloc in new" 2014-06-03 16:53:47 +00:00
Dan Albert
989725940e Use __libc_fatal() for failed malloc in new
This way we can print a useful message to the log isntead of just dying
mysteriously.

Change-Id: Ib660c2fd8ce8bb9aa0d0bb634ae08c645d3901e5
2014-06-02 18:48:53 -07:00
Elliott Hughes
987bd5c64f am 2deef73f: Merge "Avoid a system call in \'gettid\'."
* commit '2deef73fe1e9dbf57b683a15fd1e0c2922e6ecc0':
  Avoid a system call in 'gettid'.
2014-06-02 17:48:53 +00:00
Elliott Hughes
2deef73fe1 Merge "Avoid a system call in 'gettid'." 2014-06-02 17:43:27 +00:00
Elliott Hughes
5d9a7ba0dc Avoid a system call in 'gettid'.
System calls can be pretty slow. This is mako, which has one of our
lowest latencies:

                       iterations      ns/op
  BM_unistd_getpid       10000000        209
  BM_unistd_gettid      200000000          8

Bug: 15297299 (kernel panic from too many gettid calls)
Bug: 15315766 (excessive gettid overhead in liblogd)
Change-Id: I49656c0fc5b5d092390264a59e4f2c0d8a8b1aeb
2014-06-02 10:32:55 -07:00
Dmitriy Ivanov
5f29c32844 am 831405b7: Merge "Make atexit.dlclose work for glibc"
* commit '831405b749d15a11fb947a40d61fd858e952d860':
  Make atexit.dlclose work for glibc
2014-05-31 01:31:26 +00:00
Dmitriy Ivanov
831405b749 Merge "Make atexit.dlclose work for glibc" 2014-05-31 01:28:33 +00:00
Dmitriy Ivanov
214e64135e Make atexit.dlclose work for glibc
* build libtest_atexit.so
 * remove atexit(NULL) - glibc segfaults on it

Bug: 15350494
Change-Id: I27d79130c32c5691b0e8790a57d92f9710f5bf4a
2014-05-30 18:16:09 -07:00
Christopher Ferris
bd1ec44cc5 am 66b5e6b6: Merge "Do not run dlclose test on glibc."
* commit '66b5e6b609f16062262b777905bdd2305a941596':
  Do not run dlclose test on glibc.
2014-05-31 00:43:52 +00:00
Christopher Ferris
66b5e6b609 Merge "Do not run dlclose test on glibc." 2014-05-31 00:41:37 +00:00
Elliott Hughes
d3f2a204b7 am 7a5732bd: Merge "Add some missing __noreturn attributes."
* commit '7a5732bd83c64489b9bd953f49fb6ad3b420126c':
  Add some missing __noreturn attributes.
2014-05-30 23:01:01 +00:00
Elliott Hughes
7a5732bd83 Merge "Add some missing __noreturn attributes." 2014-05-30 22:58:42 +00:00
Elliott Hughes
6203e7b853 Add some missing __noreturn attributes.
This is more honest, and lets us remove a hack.

Change-Id: I309f064743ded5248573ccafc379f78d417db08d
2014-05-30 15:56:25 -07:00
Elliott Hughes
f306c414eb am 3a3b27e0: Merge "x86: stop unwinding past __bionic_clone."
* commit '3a3b27e04df395b789b92af3d0ed05d2a0f3bf04':
  x86: stop unwinding past __bionic_clone.
2014-05-30 21:43:47 +00:00
Elliott Hughes
3a3b27e04d Merge "x86: stop unwinding past __bionic_clone." 2014-05-30 21:40:28 +00:00
Christopher Ferris
39036f655a Do not run dlclose test on glibc.
The support library for this test is not built for host by default.
Even if the support library is built, the test segfaults on glibc.

Change-Id: I9cb7a364c59b55d4bf5d8634293037cd9bae020b
2014-05-30 11:23:21 -07:00
Elliott Hughes
ee9d5bdd95 x86: stop unwinding past __bionic_clone.
The apparent "previous" frame is on another thread's stack.

Bug: 14270816
Bug: 15195760
Change-Id: I884f370e116203c5fa3b05a75fb8f356537261c4
2014-05-30 11:15:32 -07:00
Christopher Ferris
69371ef1cc am 1672b056: Merge "Fix unwinding_through_signal_frame test."
* commit '1672b0563693eaaf92db4f304308d456a6102e64':
  Fix unwinding_through_signal_frame test.
2014-05-30 03:55:51 +00:00
Christopher Ferris
1672b05636 Merge "Fix unwinding_through_signal_frame test." 2014-05-30 03:53:00 +00:00
Christopher Ferris
d178c83d45 Fix unwinding_through_signal_frame test.
I accidentally removed the compilcation of the test implementation file
with special flags needed for the test to work. This change creates the
impl as a library with those flags back.

Bug: 14819262
Change-Id: Ib84fd26a7f4d40a0267d3ed686185b0abc5a3706
2014-05-29 20:00:12 -07:00
Christopher Ferris
e4068e3399 am 94170742: Merge "Fix x86 cfi directives for syscalls."
* commit '941707429d8577e90580277c51ad8a354f664586':
  Fix x86 cfi directives for syscalls.
2014-05-30 02:22:34 +00:00
Christopher Ferris
941707429d Merge "Fix x86 cfi directives for syscalls." 2014-05-30 02:20:27 +00:00
Christopher Ferris
15b91e92a0 Fix x86 cfi directives for syscalls.
The syscall generation always used 4 bytes for each push cfi directive.
However, the first push should always use an offset of 8 bytes, each
subsequent push after that is only 4 bytes though.

Change-Id: Ibaabd107f399ef67010b9a08213783957c2f74a9
2014-05-29 19:04:36 -07:00
Elliott Hughes
e1df1eb2c4 am 264d1b83: Merge "Remove issetugid."
* commit '264d1b832510b746c1d45b5efaa33c164d6f8b2b':
  Remove issetugid.
2014-05-30 00:10:42 +00:00
Elliott Hughes
264d1b8325 Merge "Remove issetugid." 2014-05-30 00:07:52 +00:00
Christopher Ferris
d853267899 am 5800aab3: Merge "Fix wmemmove test."
* commit '5800aab347a3764f5edb3db0da83b7400ed8426e':
  Fix wmemmove test.
2014-05-29 23:43:06 +00:00
Elliott Hughes
b4e099c6f7 Remove issetugid.
Bug: 14569474
Change-Id: I752c77ed53c724f144f0b618443eb95e87f2929a
2014-05-29 16:43:01 -07:00
Christopher Ferris
5800aab347 Merge "Fix wmemmove test." 2014-05-29 23:40:39 +00:00
Ben Cheng
a5b0a62dbb am fd9f07a2: Merge "Workaround the GCC "(long)fn -> lfn" optimization bug."
* commit 'fd9f07a2a2aa6c17b99c4bf9815e380eeac6aa0f':
  Workaround the GCC "(long)fn -> lfn" optimization bug.
2014-05-29 23:38:27 +00:00
Ben Cheng
fd9f07a2a2 Merge "Workaround the GCC "(long)fn -> lfn" optimization bug." 2014-05-29 23:33:04 +00:00
Ben Cheng
ff00dc8565 Workaround the GCC "(long)fn -> lfn" optimization bug.
Pass "-fno-builtin-rint -fno-builtin-rintl -fno-builtin-rintf" to avoid
generating self recursions in lrint, lrintl, and lrintf.

BUG: 14225968
Change-Id: Iffc4d8f0692580d636a529f4c8aa9a7a10d7acd8
2014-05-29 16:32:00 -07:00
Christopher Ferris
8bf50d5b72 Fix wmemmove test.
I accidentally copied over the nul terminator with the test.

Change-Id: I24a9aa05d4fba4f383fa38a3041bb6a6b179130c
2014-05-29 15:44:34 -07:00
Christopher Ferris
9d73fa3fad am d4fbb1a8: Merge "Fix dprintf test."
* commit 'd4fbb1a8617285ab1d29324308aa016377fc36f3':
  Fix dprintf test.
2014-05-29 22:44:25 +00:00
Christopher Ferris
d4fbb1a861 Merge "Fix dprintf test." 2014-05-29 22:41:50 +00:00
Christopher Ferris
84d90bf511 am aa5f32ea: Merge "Add Aarch64 optimized bzero based on memset"
* commit 'aa5f32ea1c8af9776a1c26a027495954c835be55':
  Add Aarch64 optimized bzero based on memset
2014-05-29 21:23:16 +00:00
Christopher Ferris
aa5f32ea1c Merge "Add Aarch64 optimized bzero based on memset" 2014-05-29 21:19:44 +00:00
Bernhard Rosenkraenzer
62d92e1610 Add Aarch64 optimized bzero based on memset
Change-Id: I62cf25bfe23b9d811e00af7307bbd19d89937792
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
2014-05-29 13:28:55 -07:00
Christopher Ferris
9e01ea63a7 Fix dprintf test.
Change-Id: Ied783d545b6a35a70a158249f3957a9d00971627
2014-05-29 13:17:40 -07:00
Elliott Hughes
dafa59b8ff am 4dd0b72d: Merge "Return the actual success result from __futex."
* commit '4dd0b72dd36f3d9afd6bf0c184866f0d9242084f':
  Return the actual success result from __futex.
2014-05-29 20:14:35 +00:00
Elliott Hughes
4dd0b72dd3 Merge "Return the actual success result from __futex." 2014-05-29 20:12:06 +00:00
Christopher Ferris
47150dca59 am 1a57de71: Merge "Fix overflow testing in sbrk."
* commit '1a57de713adfb81842cb2ebdfc051ecb9afa55f1':
  Fix overflow testing in sbrk.
2014-05-29 18:06:46 +00:00
Christopher Ferris
1a57de713a Merge "Fix overflow testing in sbrk." 2014-05-29 18:03:28 +00:00
Christopher Ferris
738b0cc5e9 Fix overflow testing in sbrk.
Modify the overflow testing for sbrk.

Bug: 15188366

Change-Id: Ia83f85f7c1789454d872279bd41f38f1ce6b8a34
2014-05-29 10:51:22 -07:00
Elliott Hughes
1ee46520ca Return the actual success result from __futex.
futex(2) can return non-zero successes.

Bug: 15195455
Change-Id: I7818bc922a5a2df31228ff72c169320b5e69a544
2014-05-29 10:27:55 -07:00
Elliott Hughes
ad73e2f58c am ef023873: Merge "Minor style cleanup of some code I had to look at."
* commit 'ef023873e2bbd83f4fde69fd427e04ef1eb6e769':
  Minor style cleanup of some code I had to look at.
2014-05-29 16:15:52 +00:00
Elliott Hughes
c3930812df am 0bdd668f: Merge "Upgrade to tzdata2014d."
* commit '0bdd668f05b22b44547a2b9f05e506166b22f02a':
  Upgrade to tzdata2014d.
2014-05-29 16:15:51 +00:00
Elliott Hughes
ef023873e2 Merge "Minor style cleanup of some code I had to look at." 2014-05-29 16:12:02 +00:00
Elliott Hughes
0bdd668f05 Merge "Upgrade to tzdata2014d." 2014-05-29 16:09:40 +00:00
Elliott Hughes
b7f136a01f Upgrade to tzdata2014d.
There are no substantive changes to the data in this release. I'm applying
this just for completeness.

Change-Id: Ibe953969cb16db4d8d1ddb7dd3c943316e6e46b4
2014-05-28 20:33:33 -07:00
Elliott Hughes
624996026b Minor style cleanup of some code I had to look at.
(It turns out that this is the only place we're saying __inline in C++.)

Change-Id: I8095e67a385087817c47caab9a621f82f8e0cfc8
2014-05-28 20:30:40 -07:00
Elliott Hughes
3388c7be52 am fae42a83: Merge "Revert "Revert "Lose the hand-written futex assembler."""
* commit 'fae42a837ae7f880de9561c7b3c2b18e4a531e90':
  Revert "Revert "Lose the hand-written futex assembler.""
2014-05-29 03:16:18 +00:00
Elliott Hughes
fae42a837a Merge "Revert "Revert "Lose the hand-written futex assembler.""" 2014-05-29 03:13:23 +00:00
Elliott Hughes
b30aff405a Revert "Revert "Lose the hand-written futex assembler.""
The problem with the original patch was that using syscall(3) means that
errno can be set, but pthread_create(3) was abusing the TLS errno slot as
a pthread_mutex_t for the thread startup handshake.

There was also a mistake in the check for syscall failures --- it should
have checked against -1 instead of 0 (not just because that's the default
idiom, but also here because futex(2) can legitimately return values > 0).

This patch stops abusing the TLS errno slot and adds a pthread_mutex_t to
pthread_internal_t instead. (Note that for LP64 sizeof(pthread_mutex_t) >
sizeof(uintptr_t), so we could potentially clobber other TLS slots too.)

I've also rewritten the LP32 compatibility stubs to directly reuse the
code from the .h file.

This reverts commit 75c55ff84e.

Bug: 15195455
Change-Id: I6ffb13e5cf6a35d8f59f692d94192aae9ab4593d
2014-05-28 18:31:15 -07:00
Dan Albert
c8d59fae72 am 32c8ae9d: Merge "Fixes stdatomic.h test to match C11 spec"
* commit '32c8ae9de0e51ac64efcfd2e5da34382deee959e':
  Fixes stdatomic.h test to match C11 spec
2014-05-29 00:52:18 +00:00
Dan Albert
32c8ae9de0 Merge "Fixes stdatomic.h test to match C11 spec" 2014-05-29 00:50:26 +00:00
Dan Albert
6b3beb23d6 Fixes stdatomic.h test to match C11 spec
C11 defines the expected value to atomic_compare_exchange_* as being non-atomic
types. Using an atomic type is a syntax error in clang.

http://en.cppreference.com/w/c/atomic/atomic_compare_exchange

Change-Id: I74de1061fa1fc50d835451792d902000f368200e
2014-05-28 16:53:08 -07:00
Dan Albert
c51e92086a am dc3fb119: Merge "Updated ambiguous comment in pthread_mutex_lock."
* commit 'dc3fb119497382fc8d9c3b87c5ef8321141330dc':
  Updated ambiguous comment in pthread_mutex_lock.
2014-05-28 22:10:22 +00:00
Dan Albert
dc3fb11949 Merge "Updated ambiguous comment in pthread_mutex_lock." 2014-05-28 22:00:50 +00:00
Christopher Ferris
fa204cf030 am 8a405b02: Merge "Add optimized AArch64 versions of bcopy and wmemmove based on memmove"
* commit '8a405b027a9c8b3a614016f4824a03fa252e9e1e':
  Add optimized AArch64 versions of bcopy and wmemmove based on memmove
2014-05-28 21:38:01 +00:00
Christopher Ferris
8a405b027a Merge "Add optimized AArch64 versions of bcopy and wmemmove based on memmove" 2014-05-28 21:35:04 +00:00
Brigid Smith
ff03a7aaad Updated ambiguous comment in pthread_mutex_lock.
The comment used the phrase "normal case" when it more specifically refers to the "recursive case," so I changed it to that.

Change-Id: I8335cce4dee933c6a463aee653b28bd986b5b5e4
2014-05-28 11:48:49 -07:00
Narayan Kamath
784254f28e am 52f74322: Merge "Revert "Lose the hand-written futex assembler.""
* commit '52f74322b1d72d57146107f32ee2c76c421bf4b1':
  Revert "Lose the hand-written futex assembler."
2014-05-28 18:06:05 +00:00
Narayan Kamath
52f74322b1 Merge "Revert "Lose the hand-written futex assembler."" 2014-05-28 18:04:26 +00:00
Narayan Kamath
75c55ff84e Revert "Lose the hand-written futex assembler."
This reverts commit ced906c849.

Causes issues on art / dalvik due to a broken return value
check and other undiagnosed issues.

bug: 15195455

Change-Id: I5d6bbb389ecefb0e33a5237421a9d56d32a9317c
2014-05-28 18:03:01 +00:00
Calin Juravle
7ca4d73644 am 53e70fe3: Merge "Remove unnecessary padding in ucontext_t"
* commit '53e70fe30646453a5deba0730337cb9674cd6fc8':
  Remove unnecessary padding in ucontext_t
2014-05-28 17:50:43 +00:00
Calin Juravle
53e70fe306 Merge "Remove unnecessary padding in ucontext_t" 2014-05-28 17:48:06 +00:00
Calin Juravle
bdca3802c9 Remove unnecessary padding in ucontext_t
- removed extra padding from ucontex_t on x86, x86_64 and mips
- force ucontext_t struct to use 64 bits for the sigmask on all arches
(previsouly wrong since sigset_t on arm and x86 is only 32 bits)
- arm and arm64 continue to use padding to match glibc sigset_t

This brings Bionic on par with the kernel w.r.t ucontext padding.

Bug: 12828904
Change-Id: Ia8915ace694ecb4695603a334e697985f4c3e7aa
2014-05-28 17:24:28 +01:00
Elliott Hughes
ab4c46863d am 7fdde4a5: Merge "Expose __srefill for LP64 until we can fix the NDK."
* commit '7fdde4a58b304a7c4f87987f3fde16bdded63a76':
  Expose __srefill for LP64 until we can fix the NDK.
2014-05-28 05:22:38 +00:00
Elliott Hughes
7fdde4a58b Merge "Expose __srefill for LP64 until we can fix the NDK." 2014-05-28 05:19:45 +00:00
Elliott Hughes
f6d2ca2696 Expose __srefill for LP64 until we can fix the NDK.
The LP64 has a duplicate copy of part of stdio, and relies
on bionic supplying this part. We should remove the hack from
the NDK, at least for LP64, and then revert this.

Bug: 15291317
Change-Id: I75e06e130188ca0aeb9d50dfe3a3e48a1d3968b7
2014-05-27 21:23:36 -07:00
Elliott Hughes
9e3a0356f4 am 1454ff25: Merge "Clear the return address register in __bionic_clone."
* commit '1454ff2574f0bee9fb3646c9c6dd30443e0dbd38':
  Clear the return address register in __bionic_clone.
2014-05-27 22:55:34 +00:00
Elliott Hughes
1454ff2574 Merge "Clear the return address register in __bionic_clone." 2014-05-27 22:53:52 +00:00
Elliott Hughes
e7dccdf683 Clear the return address register in __bionic_clone.
The unwinder will end up on the parent thread's stack if the return
address register is not cleared.

Bug: 14270816
Bug: 15195760
Change-Id: Iebcdf5cc881cad245643bb193760de35eb7f8b19
2014-05-27 15:49:51 -07:00
Dan Albert
4a542fc519 am 134911d7: Merge "Use __typeof__() instead of typeof()"
* commit '134911d75deab2b5babc175c894c002e875dfed6':
  Use __typeof__() instead of typeof()
2014-05-27 21:59:33 +00:00
Dan Albert
134911d75d Merge "Use __typeof__() instead of typeof()" 2014-05-27 21:57:24 +00:00
Dan Albert
a7821b7121 Use __typeof__() instead of typeof()
typeof() is a gcc builtin and is not always available (such as clang when
-std=c*). Both gcc and clang always expose __typeof__(), so just use that.

Change-Id: I75e2a990acc35f6f39b2c353f6548100ec03c67f
2014-05-27 12:47:54 -07:00
Elliott Hughes
946bc9528d am 8e85b4f0: Merge "Restore __srefill for LP32."
* commit '8e85b4f00e8816f22bf5b5f20b1f978432f2ae08':
  Restore __srefill for LP32.
2014-05-27 18:41:52 +00:00
Elliott Hughes
8e85b4f00e Merge "Restore __srefill for LP32." 2014-05-27 18:38:56 +00:00
Elliott Hughes
aa50585d96 Restore __srefill for LP32.
The NDK apparently includes an android_support.a library that
refers to __srefill in its copy of the vsnprintf implementation.

Bug: 15249361
Change-Id: Ic2cf6f21290b3146c42fbe0624f5e4d54f6194b4
2014-05-27 11:22:39 -07:00
Elliott Hughes
50c52f7424 am b3c75a1e: Merge "Restore __srget and __swbuf for LP32."
* commit 'b3c75a1e8ffbf575c2a425b34fd67ff8077da299':
  Restore __srget and __swbuf for LP32.
2014-05-26 05:10:46 +00:00
Elliott Hughes
b3c75a1e8f Merge "Restore __srget and __swbuf for LP32." 2014-05-26 05:07:20 +00:00
Elliott Hughes
21296dfe53 am bc904896: Merge "Add C11 <stdatomic.h>."
* commit 'bc904896a6f846e2648922d46324ea626ae9e1d1':
  Add C11 <stdatomic.h>.
2014-05-25 17:51:05 +00:00
Elliott Hughes
bc904896a6 Merge "Add C11 <stdatomic.h>." 2014-05-25 17:48:19 +00:00
Elliott Hughes
35d90bb6ec Restore __srget and __swbuf for LP32.
Anthony King <anthonydking@slimroms.net> reports that for Grouper the
Nvidia GL blobs need access to __swbuf. This is because the old <stdio.h>
had inline getc and putc implementations that directly referred to these
symbols.

Change-Id: I11a7b5550018ecc93d8f195c99857759669b2906
2014-05-25 10:38:25 -07:00
Elliott Hughes
06c9662a2f am 255789e4: Merge "Restore tkill for LP32."
* commit '255789e4d12d95dbb8e34cfae7fdc58514843ba5':
  Restore tkill for LP32.
2014-05-25 03:18:14 +00:00
Elliott Hughes
255789e4d1 Merge "Restore tkill for LP32." 2014-05-25 03:14:39 +00:00
Anthony King
001707363d Restore tkill for LP32.
libmono from Unity still requires tkill(2).

Change-Id: I37a1994b08086c7fedb5c78ea0dadf2d72bc1463
Signed-off-by: Anthony King <anthonydking@slimroms.net>
2014-05-24 20:13:13 -07:00
Elliott Hughes
85df714f91 am d4f37110: Merge "Restore __futex_wake and __futex_wait for LP32."
* commit 'd4f37110ce4b8439dd30540565f7c73e00cfe2fb':
  Restore __futex_wake and __futex_wait for LP32.
2014-05-25 03:11:02 +00:00
Elliott Hughes
d4f37110ce Merge "Restore __futex_wake and __futex_wait for LP32." 2014-05-25 03:09:00 +00:00
Elliott Hughes
bd3a98c6b9 Restore __futex_wake and __futex_wait for LP32.
Should fix Skype:

  java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__futex_wake" referenced by "libsliq.so"...

Bug: 15196718
Change-Id: I8a18e18d830f0436e820cbde577121bd92710803
2014-05-24 17:19:36 -07:00
Elliott Hughes
e6c57fcb05 Add C11 <stdatomic.h>.
Bug: 14903517
Change-Id: I631dbfdaa698cf7fea8e3b5e18a32586383e62a5
2014-05-23 20:06:03 -07:00
Bernhard Rosenkraenzer
6f2bde3441 Add optimized AArch64 versions of bcopy and wmemmove based on memmove
Add optimized versions of bcopy and wmemmove for AArch64 based on the
memmove implementation

Change-Id: I82fbe8a7221ce224c567ffcfed7a94a53640fca8
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
2014-05-23 18:49:57 -07:00
Christopher Ferris
86f5d0f9c1 am 1c4d8301: Merge "Revert "Add optimized AArch64 versions of bcopy and wmemmove based on memmove""
* commit '1c4d83012fea4e6d011215bef1665cf68d2ac47c':
  Revert "Add optimized AArch64 versions of bcopy and wmemmove based on memmove"
2014-05-24 01:05:42 +00:00
Christopher Ferris
1c4d83012f Merge "Revert "Add optimized AArch64 versions of bcopy and wmemmove based on memmove"" 2014-05-24 01:02:31 +00:00
Christopher Ferris
fd0ce866ce Revert "Add optimized AArch64 versions of bcopy and wmemmove based on memmove"
This reverts commit 8167dd7cb9.

For some reason I thought the bcopy change was bzero. The bcopy code doesn't pass our tests, so reverting until I can figure out what's wrong.

Change-Id: Id89fe959ea5105cd58dff6bba8d91a30cc4bcb07
2014-05-24 01:02:22 +00:00
Christopher Ferris
5c34b003dc am 78c3e11e: Merge "Add optimized AArch64 versions of bcopy and wmemmove based on memmove"
* commit '78c3e11e78e7d2643ec25e2be1cfc258aeb6d9d7':
  Add optimized AArch64 versions of bcopy and wmemmove based on memmove
2014-05-24 01:01:01 +00:00
Christopher Ferris
78c3e11e78 Merge "Add optimized AArch64 versions of bcopy and wmemmove based on memmove" 2014-05-24 00:58:15 +00:00
Ben Cheng
5034829504 am f4985b14: Merge "Clear link register in __bionic_clone."
* commit 'f4985b14cfed187376a24dd4a0cd16206e746bd9':
  Clear link register in __bionic_clone.
2014-05-24 00:57:39 +00:00
Ben Cheng
f4985b14cf Merge "Clear link register in __bionic_clone." 2014-05-24 00:54:16 +00:00
Bernhard Rosenkraenzer
8167dd7cb9 Add optimized AArch64 versions of bcopy and wmemmove based on memmove
Add optimized versions of bcopy and wmemmove for AArch64 based on the
memmove implementation

Change-Id: Ie43d0ff4f8ec4edba5b4fb5ccacd941f81ac6557
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
2014-05-23 17:54:08 -07:00
Ben Cheng
8df0fe0c74 Clear link register in __bionic_clone.
Since __bionic_clone uses tail-call to invoke __bionic_clone_entry,
at runtime the unwinder will reach the stack of the clone() function,
which belongs to the parent thread, if the link register is not cleared.

BUG: 14270816
Change-Id: Ia3711c87f8b619debe73748c28b9fb8691ea698e
2014-05-23 16:35:21 -07:00
Elliott Hughes
764ebf8a90 am a486632e: Merge "Remove <sys/atomics.h>."
* commit 'a486632e789c6db4c35f969485ebb57f503bcf48':
  Remove <sys/atomics.h>.
2014-05-23 22:23:56 +00:00
Elliott Hughes
a486632e78 Merge "Remove <sys/atomics.h>." 2014-05-23 22:18:40 +00:00
Elliott Hughes
c3f909630b Remove <sys/atomics.h>.
Bug: 14903517
Change-Id: I6de1d9d3624922517fdc37922097abbc3b41f661
2014-05-23 14:36:30 -07:00
Calin Juravle
d2b129881a am b2604949: Merge "Migrate pthread_rwlock implementation away from sys/atomics"
* commit 'b26049490b3a5e054d7440b94c0082e8bfd09f0b':
  Migrate pthread_rwlock implementation away from sys/atomics
2014-05-23 10:11:35 +00:00
Calin Juravle
b26049490b Merge "Migrate pthread_rwlock implementation away from sys/atomics" 2014-05-23 10:07:46 +00:00
Elliott Hughes
69068fd919 am fb9a47c7: Merge "Hide various stdio implementation details."
* commit 'fb9a47c740661a1c578cfc4f16180f14724cbdf5':
  Hide various stdio implementation details.
2014-05-23 07:15:53 +00:00
Elliott Hughes
fb9a47c740 Merge "Hide various stdio implementation details." 2014-05-23 06:28:42 +00:00
Elliott Hughes
cdf15e3908 am 253fa170: Merge "Lose the hand-written futex assembler."
* commit '253fa170a3f6a1edce8ce4b8e6e966b35152b550':
  Lose the hand-written futex assembler.
2014-05-23 05:38:49 +00:00
Elliott Hughes
253fa170a3 Merge "Lose the hand-written futex assembler." 2014-05-23 05:34:28 +00:00
Elliott Hughes
2899de9b05 Hide various stdio implementation details.
I've left __sF exposed since that's how the OpenBSD stdin, stdout, stderr
are implemented. Other BSDs and glibc use a separate global for each instead
of an array.

Bug: 11156955
Change-Id: I9f3d2d4314a8d4a78c3197b9acd9258820c5f150
2014-05-22 20:06:23 -07:00
Elliott Hughes
ced906c849 Lose the hand-written futex assembler.
Also stop exporting 'futex'.

Bug: 12250341
Change-Id: Icc4fa4296cd04dfe0d1061822c69e2eb40c3433a
2014-05-22 19:49:11 -07:00
Dmitriy Ivanov
d97458eb87 am ce00354f: Merge "Do not add arcs to the soinfo graph on dlopen"
* commit 'ce00354fec9dfad87090aad4ec79c418e42e92f4':
  Do not add arcs to the soinfo graph on dlopen
2014-05-23 02:22:42 +00:00
Dmitriy Ivanov
ce00354fec Merge "Do not add arcs to the soinfo graph on dlopen" 2014-05-23 02:19:10 +00:00
Bjorn Andersson
3c005d6019 Do not add arcs to the soinfo graph on dlopen
While introducing RTLD_NOLOAD in b648a8a5 a change in how soinfo structs are
connected was also introduced. When calling dlopen the library that is loaded
is added as a child to the soinfo from which the caller comes - i.e. building a
dependency graph.

Unfortunately this shows issues upon unloading, such as blowing the stack if
there are loops in the graph.

This change reverts that part of b648a8a5, keeping everything as a child of the
root soinfo.

Change-Id: I604ee9210613b19f693a568158e69707620a95db
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
2014-05-22 19:08:14 -07:00
Elliott Hughes
5a95dd1446 am ea7dc320: Merge "Add some more BSD symbols to the list."
* commit 'ea7dc32080114af59789c119ca6aa4814426ea42':
  Add some more BSD symbols to the list.
2014-05-23 01:58:38 +00:00
Elliott Hughes
ea7dc32080 Merge "Add some more BSD symbols to the list." 2014-05-23 01:53:53 +00:00
Elliott Hughes
45bf4c315d Add some more BSD symbols to the list.
Bug: 11156955
Change-Id: I07489ec63536121dbfc372170ef5cf60a5c58948
2014-05-22 18:53:21 -07:00
Elliott Hughes
3fd88ebe0f am 0f79a2f4: Merge "Cleaned up pthread rwlocks implementation."
* commit '0f79a2f48788c093804c9f61a66105873eb1cb59':
  Cleaned up pthread rwlocks implementation.
2014-05-23 01:52:42 +00:00
Elliott Hughes
0f79a2f487 Merge "Cleaned up pthread rwlocks implementation." 2014-05-23 01:47:56 +00:00
Elliott Hughes
bfa87e27f7 am ec071ac0: Merge "Remove the tkill(2) stub."
* commit 'ec071ac062077498dfee3e2171371def7320aa56':
  Remove the tkill(2) stub.
2014-05-23 01:47:49 +00:00
Elliott Hughes
ec071ac062 Merge "Remove the tkill(2) stub." 2014-05-23 01:43:42 +00:00
Calin Juravle
1b676ea5fb Migrate pthread_rwlock implementation away from sys/atomics
Bug: 8133149
Bug: 14903517
Change-Id: Ib85987f53d7aeaec12a980ccb645c4a449c48503
2014-05-23 00:26:24 +01:00
Calin Juravle
92687e41bc Cleaned up pthread rwlocks implementation.
- used underscore_style_for_vars
- extracted time related functionality into a function
- cleaned up style
- removed unused fields from pthread_rwlock_t on LP64
- changed reservation in pthread_rwlock_t so that the size of the
structure equals glibc version

Bug: 8133149

Change-Id: I84ad3918678dc7f5e6b3db9b7e9b0899d3abe9cd
2014-05-23 00:22:58 +01:00
Elliott Hughes
6e599a904b Remove the tkill(2) stub.
glibc doesn't have tkill or tgkill and says "use syscall(3) instead".
I've left tgkill since it's quite widely used, but there's no reason
to have tkill as well.

Bug: 11156955
Change-Id: Ifc0af750320086f829bc9914551c172b501f3b60
2014-05-22 13:41:36 -07:00
Elliott Hughes
8a326a17f3 am 4f6ed4a1: Merge "Remove unnecessary #includes of <sys/atomics.h>."
* commit '4f6ed4a10951cbd868fec1b0117a276918c60fa1':
  Remove unnecessary #includes of <sys/atomics.h>.
2014-05-22 18:04:54 +00:00
Elliott Hughes
4f6ed4a109 Merge "Remove unnecessary #includes of <sys/atomics.h>." 2014-05-22 18:02:09 +00:00
Elliott Hughes
2ea60ff0b4 Remove unnecessary #includes of <sys/atomics.h>.
Bug: 14903517
Change-Id: I7b5bcebe58774a441da986cc02376dd88e00ea0e
2014-05-22 11:00:21 -07:00
Dmitriy Ivanov
88923ba4d8 am 0b10ffb4: Merge "Fix dlsym_failure NULL handle test"
* commit '0b10ffb40f3b426a7b5e734f90c41f56351729a0':
  Fix dlsym_failure NULL handle test
2014-05-22 17:14:59 +00:00
Dmitriy Ivanov
0b10ffb40f Merge "Fix dlsym_failure NULL handle test" 2014-05-22 17:10:47 +00:00
Dmitriy Ivanov
44adf93b8e Fix dlsym_failure NULL handle test
* RTLD_DEFAULT != (void*)0 only for bionic32

Change-Id: I3b3758835cf4085b0f899e2b62861591411aec13
2014-05-22 10:06:32 -07:00
Calin Juravle
dd31f28273 am eea59ea2: Merge "Add dprintf test"
* commit 'eea59ea21e04806fff48fdf4ad5ba117dcb0babb':
  Add dprintf test
2014-05-22 16:08:10 +00:00
Calin Juravle
eea59ea21e Merge "Add dprintf test" 2014-05-22 16:03:08 +00:00
Calin Juravle
db3cda2dec am 254fa885: Merge "Switch to POSIX dprintf/vdprintf."
* commit '254fa8857f5d88a4140cea2ee05056eae7f102b1':
  Switch to POSIX dprintf/vdprintf.
2014-05-22 13:33:21 +00:00
Calin Juravle
254fa8857f Merge "Switch to POSIX dprintf/vdprintf." 2014-05-22 13:28:52 +00:00
Dmitriy Ivanov
5bfa06de88 am 3eb9f1f6: Merge "Removed dlsym handle != NULL check for lp64"
* commit '3eb9f1f6bade8085520d9b0ec35d84d69563ebe1':
  Removed dlsym handle != NULL check for lp64
2014-05-22 12:59:11 +00:00
Dmitriy Ivanov
3eb9f1f6ba Merge "Removed dlsym handle != NULL check for lp64" 2014-05-22 12:55:15 +00:00
Calin Juravle
6afb2a9a97 Add dprintf test
Change-Id: I0fe1b4d45c1312cf01deed6ce5db032d5513e908
2014-05-22 11:47:47 +01:00
Elliott Hughes
fcac8ff97f Switch to POSIX dprintf/vdprintf.
Bug: 11156955
Change-Id: I734bd02db514367ab119a48304aae9767958e367
2014-05-22 11:27:06 +01:00
Calin Juravle
ddf520213c am d1dc009c: Merge "Add padding to mips ucontext_t."
* commit 'd1dc009c56f650ae4e990b00613f1c2ff93ed3ba':
  Add padding to mips ucontext_t.
2014-05-22 10:18:02 +00:00
Calin Juravle
841a1a13ec am 156c7d3d: Merge "Clean up ucontext.h TODOs."
* commit '156c7d3d0ac4457a051ac7d81ff8541636e0864f':
  Clean up ucontext.h TODOs.
2014-05-22 10:18:01 +00:00
Calin Juravle
6cec77755b am 17216716: Merge "Mutex-free implementation of pthread_rwlock"
* commit '172167163af5412c316a8be2f29ca8622984df32':
  Mutex-free implementation of pthread_rwlock
2014-05-22 10:18:00 +00:00
Calin Juravle
d1dc009c56 Merge "Add padding to mips ucontext_t." 2014-05-22 10:16:41 +00:00
Calin Juravle
156c7d3d0a Merge "Clean up ucontext.h TODOs." 2014-05-22 10:16:12 +00:00
Calin Juravle
172167163a Merge "Mutex-free implementation of pthread_rwlock" 2014-05-22 10:15:03 +00:00
Calin Juravle
76f352eec1 Mutex-free implementation of pthread_rwlock
Bug: 8133149
Change-Id: Id6775010d95f2634b173daa55d87a59a3cf4131b
2014-05-22 11:11:15 +01:00
Dmitriy Ivanov
ca1c80220e Removed dlsym handle != NULL check for lp64
* Removed unnecessary NULL check in dlsym
 * Fixed dlsym_failure test to account for
   correct RTLD_DEFAULT value
 * Added temporary check for legacy RTLD_DEFAULT
   value for non-yet-recompiled binaries

Bug: 15146875
Change-Id: I089fa673762629f5724b6e4fbca019d9cfc39905
2014-05-21 22:42:24 -07:00
Elliott Hughes
176e71fb52 am 3d4a7b02: Merge "Hide most of the private futex functions."
* commit '3d4a7b02cc7948c94932c4d71c68f864457d59d6':
  Hide most of the private futex functions.
2014-05-22 03:00:21 +00:00
Elliott Hughes
3d4a7b02cc Merge "Hide most of the private futex functions." 2014-05-22 02:56:41 +00:00
Elliott Hughes
d5ed63a6a8 Hide most of the private futex functions.
Also hide part of the system properties compatibility code, since
we needed to touch that to keep it building.

I'll remove __futex_syscall4 and futex in a later patch.

Bug: 11156955
Change-Id: Ibbf42414c5bb07fb9f1c4a169922844778e4eeae
2014-05-21 18:30:00 -07:00
Christopher Ferris
05645db074 am f97d8713: Merge "Add cfi directives for arm64 assembler."
* commit 'f97d8713a265f44279819ba6b245dd81aada34da':
  Add cfi directives for arm64 assembler.
2014-05-22 01:13:32 +00:00
Christopher Ferris
f97d8713a2 Merge "Add cfi directives for arm64 assembler." 2014-05-22 01:08:22 +00:00
Christopher Ferris
df22a121b2 Add cfi directives for arm64 assembler.
Fix syscall generator to add cfi directives and add the directives
for all arm64 assembler.

Bug: 15138290
Change-Id: I7f0e4a16c141ac624e5276917a3a1ed45778e057
2014-05-21 17:46:52 -07:00
Elliott Hughes
fc951aaec6 am bf0a4407: Merge "Remove an unnecessary instruction from arm64 __bionic_clone."
* commit 'bf0a440730d9659146bf1ac1c4141bae5a2f96a7':
  Remove an unnecessary instruction from arm64 __bionic_clone.
2014-05-21 23:56:31 +00:00
Elliott Hughes
bf0a440730 Merge "Remove an unnecessary instruction from arm64 __bionic_clone." 2014-05-21 23:44:55 +00:00
Elliott Hughes
f93f50d7ea Remove an unnecessary instruction from arm64 __bionic_clone.
Change-Id: Ib0dd5079d10b3634901d561932259653945176ee
2014-05-21 16:29:55 -07:00
Christopher Ferris
fc11ebc501 am 3d5a4240: Merge "Fix build."
* commit '3d5a42408ca24f86b8b81697b20012736cb48c2b':
  Fix build.
2014-05-21 18:50:10 +00:00
Christopher Ferris
3d5a42408c Merge "Fix build." 2014-05-21 18:47:36 +00:00
Christopher Ferris
8d2410d33d Fix build.
Change-Id: I5a35eee4074e35f459c86c7f9b1d9b0754888940
2014-05-21 11:45:51 -07:00
Christopher Ferris
c1be1eccbb am 011076b7: Merge "Support for jemalloc to replace dlmalloc."
* commit '011076b720b0809a6b94703780e768cd7b877c68':
  Support for jemalloc to replace dlmalloc.
2014-05-21 18:16:41 +00:00
Christopher Ferris
011076b720 Merge "Support for jemalloc to replace dlmalloc." 2014-05-21 18:12:50 +00:00
Elliott Hughes
c5f723aef5 am c1b7f44c: Merge "Remove __syslog; we have the public klogctl API."
* commit 'c1b7f44c13fbcbab3faaa8e11d3a459ebc11bfe5':
  Remove __syslog; we have the public klogctl API.
2014-05-21 18:09:55 +00:00
Elliott Hughes
c1b7f44c13 Merge "Remove __syslog; we have the public klogctl API." 2014-05-21 18:07:05 +00:00
Calin Juravle
ae0f8f1e48 Add padding to mips ucontext_t.
Bug: 12828904
Change-Id: I49e7adcebf769a9c30dc43def36501260369b1ac
2014-05-21 18:16:17 +01:00
Calin Juravle
eb454522da Clean up ucontext.h TODOs.
There's no need to expose gregset_t and fpregset_t when they
are not used in ucontext_t.

Bug: 12828904
Change-Id: Ieda1edf0ab18015f444c4d385fe9c41c4544017f
2014-05-21 18:15:35 +01:00
Elliott Hughes
87987df990 am daf69128: Merge "Fix x86_64 __set_tls.c build failure."
* commit 'daf6912838dd27e3c064c4e7df98b6165549af82':
  Fix x86_64 __set_tls.c build failure.
2014-05-21 17:05:11 +00:00
Elliott Hughes
daf6912838 Merge "Fix x86_64 __set_tls.c build failure." 2014-05-21 17:02:44 +00:00
Elliott Hughes
7136927d39 Fix x86_64 __set_tls.c build failure.
Change-Id: I697b8ab4ce781d7aebeddb1391b63c653511bbcb
2014-05-21 10:02:00 -07:00
Neil Fuller
b7a2395998 am 76805140: Merge "Treat zero or >1 dat files as an error"
* commit '768051405e8d471e06447a5b7223c742022f525a':
  Treat zero or >1 dat files as an error
2014-05-21 16:22:27 +00:00
Neil Fuller
768051405e Merge "Treat zero or >1 dat files as an error" 2014-05-21 16:18:59 +00:00
Neil Fuller
43f3715953 Treat zero or >1 dat files as an error
Based on feedback from
I7efbd6f453fe2b3e71f564121ff0f64a74289d86

Change-Id: Ie131ab8475083350dc183d9f6d5ea7a0b0617c5b
2014-05-21 17:18:17 +01:00
Elliott Hughes
ceed7b76b7 am 29f2906b: Merge "Add a few more symbols to check-symbols-glibc."
* commit '29f2906bdaf9afe816fc9196437fc07728af98bf':
  Add a few more symbols to check-symbols-glibc.
2014-05-21 15:28:00 +00:00
Elliott Hughes
7a611f184d am 9f0a52e4: Merge "Hide __get_sp."
* commit '9f0a52e4e5afc20a61230e6cbfe735606bff7e0c':
  Hide __get_sp.
2014-05-21 15:24:33 +00:00
Elliott Hughes
0aa1fb1c16 am 7471a370: Merge "Hide __set_tls."
* commit '7471a3700348df588d4da35a41b38f6a88b505fd':
  Hide __set_tls.
2014-05-21 15:24:32 +00:00
Elliott Hughes
29f2906bda Merge "Add a few more symbols to check-symbols-glibc." 2014-05-21 15:23:35 +00:00
Elliott Hughes
9f0a52e4e5 Merge "Hide __get_sp." 2014-05-21 15:21:16 +00:00
Elliott Hughes
7471a37003 Merge "Hide __set_tls." 2014-05-21 15:21:01 +00:00
Neil Fuller
3248b9d33c am 22784885: Merge "Change update-tzdata.py to update ICU data as well"
* commit '227848854695fe5b6f7183fe507edf093808d8ff':
  Change update-tzdata.py to update ICU data as well
2014-05-21 08:44:18 +00:00
Neil Fuller
2278488546 Merge "Change update-tzdata.py to update ICU data as well" 2014-05-21 08:11:40 +00:00
Elliott Hughes
46a55a4478 Remove __syslog; we have the public klogctl API.
Bug: 11156955
Change-Id: I5c2cc02f39f76dd32984135f5c12c10bf2853796
2014-05-20 21:01:00 -07:00
Elliott Hughes
b497c43336 Add a few more symbols to check-symbols-glibc.
Bug: 11156955
Change-Id: Iee0bae6f9742eca188abc7a337371c50888a0ad6
2014-05-20 20:58:23 -07:00
Elliott Hughes
a75869f0b2 Hide __set_tls.
Bug: 11156955
Change-Id: If82c10ae412651361d09591017d1c3a411bd6f0b
2014-05-20 20:32:28 -07:00
Elliott Hughes
c3705f6415 Hide __get_sp.
Bug: 11156955
Change-Id: I55d8d320521e80c2085af28933a18b00cf5c714e
2014-05-20 20:22:50 -07:00
Elliott Hughes
a9e2ffd8e5 am 20177b9f: Merge "Remove perf_event_open."
* commit '20177b9fea893ab63a49cf574790ea5e5027e50d':
  Remove perf_event_open.
2014-05-21 03:22:22 +00:00
Elliott Hughes
20177b9fea Merge "Remove perf_event_open." 2014-05-21 03:11:58 +00:00
Colin Cross
8a6217df92 am 3d2bc5d6: Merge "HACK: linker: check for handle==0xffffffff on LP64"
* commit '3d2bc5d6c8f08e587a8dad848829f98776549ba6':
  HACK: linker: check for handle==0xffffffff on LP64
2014-05-20 23:36:41 +00:00
Elliott Hughes
4e631ba568 Remove perf_event_open.
This was accidentally added at a time when you couldn't add a constant
to <syscall.h> without generating an assembly stub! (You no longer need
to add the constants at all.)

Bug: 11156955
Change-Id: I053c17879138787976c744a5ecf7d30ee51dc48f
2014-05-20 16:24:55 -07:00
Colin Cross
3d2bc5d6c8 Merge "HACK: linker: check for handle==0xffffffff on LP64" 2014-05-20 23:03:07 +00:00
Colin Cross
346fea0805 HACK: linker: check for handle==0xffffffff on LP64
bionic RTLD_NEXT was changed from 0xffffffff to -1L, which breaks
existing binaries compiled.  Temporarily look either until we can
get recompiled binaries.

Bug: 15113039
Change-Id: I1568fa0e4a832c5e6df21da74a33b22bde7f16f6
2014-05-20 15:19:02 -07:00
Christopher Ferris
72bbd42357 Support for jemalloc to replace dlmalloc.
To use jemalloc, add MALLOC_IMPL = jemalloc in a board config file
and you get the new version automatically.

Update the pthread_create_key tests since jemalloc uses a few keys.
Add a new test to verify memalign works as expected.

Bug: 981363

Change-Id: I16eb152b291a95bd2499e90492fc6b4bd7053836
2014-05-20 14:47:33 -07:00
Christopher Ferris
78f22ecb6d am afb89c2a: Merge "denver: optimize memmove"
* commit 'afb89c2a01089bb247456634a15a58f111bb55a6':
  denver: optimize memmove
2014-05-20 19:59:32 +00:00
Christopher Ferris
afb89c2a01 Merge "denver: optimize memmove" 2014-05-20 19:56:13 +00:00
Shu Zhang
6c80ccdeed denver: optimize memmove
Optimize 32-bit denver memmove with reversal memcpy.

Change-Id: Iaad0a9475248cdd7e4f50d58bea9db1b767abc88
2014-05-20 12:31:38 -07:00
Dmitriy Ivanov
87ce52ac08 am f092feb8: Merge "Add R_X86_64_64 to the list of possible weak relocs"
* commit 'f092feb81b36d024a3da4318a340e069ca1c2d3d':
  Add R_X86_64_64 to the list of possible weak relocs
2014-05-20 19:16:50 +00:00
Dmitriy Ivanov
5277e7726f am 0a8f296e: Merge "Add RTLD_NOLOAD support and some related changes."
* commit '0a8f296e09c34a8eb21099d2a49e70b1b2641faa':
  Add RTLD_NOLOAD support and some related changes.
2014-05-20 19:16:49 +00:00
Dmitriy Ivanov
f092feb81b Merge "Add R_X86_64_64 to the list of possible weak relocs" 2014-05-20 19:11:25 +00:00
Dmitriy Ivanov
0a8f296e09 Merge "Add RTLD_NOLOAD support and some related changes." 2014-05-20 19:11:09 +00:00
Dmitriy Ivanov
b648a8a57e Add RTLD_NOLOAD support and some related changes.
* Aligned RTLD_ values with glibc for lp64
 * dlopen supports RTLD_NOLOAD flag
 * soinfo_unload calls find_library(.., RTLD_NOLOAD)
   instead of naive find_loaded_library_by_name()
 * dlopen changed to add child to caller soinfo instead
   of somain.

Bug: https://code.google.com/p/android/issues/detail?id=64069
Change-Id: I1a65f2c34f3e0edc6d2c41a2e408b58195feb640
2014-05-20 12:02:24 -07:00
Elliott Hughes
da095f3cd1 am ce0e1b81: Merge "Add a script for finding symbols in bionic that aren\'t in glibc."
* commit 'ce0e1b81cc434f613d039e7c9d9b852cca0b69ed':
  Add a script for finding symbols in bionic that aren't in glibc.
2014-05-20 18:27:55 +00:00
Elliott Hughes
ce0e1b81cc Merge "Add a script for finding symbols in bionic that aren't in glibc." 2014-05-20 18:25:24 +00:00
Dmitriy Ivanov
486628a3a5 am 0b9a72ce: Merge "Fix lookup-by-base-name for lp64"
* commit '0b9a72ce1124f17d514b93c0d26dea76ce8069f0':
  Fix lookup-by-base-name for lp64
2014-05-20 15:59:22 +00:00
Dmitriy Ivanov
0b9a72ce11 Merge "Fix lookup-by-base-name for lp64" 2014-05-20 15:53:52 +00:00
Pavel Chupin
bb5bb2046f Add R_X86_64_64 to the list of possible weak relocs
Change-Id: I768a5948d89701a1719734954a3524d3c7187e6a
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2014-05-20 16:53:33 +04:00
Neil Fuller
246c688020 Change update-tzdata.py to update ICU data as well
The update-tzdata.py tool now uses downloaded Olson data
to update ICU (*new*) at the same time as it updates Bionic
data.

Change-Id: I7efbd6f453fe2b3e71f564121ff0f64a74289d86
2014-05-20 11:48:43 +01:00
Calin Juravle
bcd1a312ae am b2b0f7e1: Merge "Add uc_regspace to arm\'s ucontext_t"
* commit 'b2b0f7e1ae0a0459b41a7732b84f58d62373e512':
  Add uc_regspace to arm's ucontext_t
2014-05-20 10:17:12 +00:00
Calin Juravle
b2b0f7e1ae Merge "Add uc_regspace to arm's ucontext_t" 2014-05-20 10:14:49 +00:00
Dmitriy Ivanov
489e498434 Fix lookup-by-base-name for lp64
Bug:https://code.google.com/p/android/issues/detail?id=6670
Change-Id: I5b70e7cde7f40799148aca0a91fb2bb08e0f2b54
2014-05-19 19:15:06 -07:00
Elliott Hughes
5a93e88c7f Add a script for finding symbols in bionic that aren't in glibc.
Bug: 11156955
Change-Id: I9772f054f6a92b842531df084dee0ea9c28806be
2014-05-19 18:01:07 -07:00
Elliott Hughes
509348b8ff am c4794a74: Merge "Use -fvisibility=hidden to build libm."
* commit 'c4794a745c17763729c18f64ae3ccef437a53dcd':
  Use -fvisibility=hidden to build libm.
2014-05-20 00:51:15 +00:00
Elliott Hughes
c4794a745c Merge "Use -fvisibility=hidden to build libm." 2014-05-20 00:48:14 +00:00
Elliott Hughes
de9ac71053 Use -fvisibility=hidden to build libm.
Bug: 11156955
Change-Id: I77b7772a44313a1eb3970f5d2c8e2af63690efa4
2014-05-19 16:58:52 -07:00
Dan Albert
898f805380 am 05b37cfc: Merge "Revert "Removes bionic\'s dependence on stlport""
* commit '05b37cfc182017876468445c589568ea0f27a3b7':
  Revert "Removes bionic's dependence on stlport"
2014-05-19 23:50:28 +00:00
Dan Albert
05b37cfc18 Merge "Revert "Removes bionic's dependence on stlport"" 2014-05-19 23:48:06 +00:00
Dan Albert
7a39094465 Revert "Removes bionic's dependence on stlport"
This reverts commit 4d35da1df8.

Change-Id: Ie9a2620441edb55dbc5949e13a4b913ea4e66797
2014-05-19 23:46:51 +00:00
Dan Albert
1f71e131b6 am 036bf65a: Merge "Removes bionic\'s dependence on stlport"
* commit '036bf65a9f295562a0e99a36683454323c4639b2':
  Removes bionic's dependence on stlport
2014-05-19 23:35:02 +00:00
Dan Albert
036bf65a9f Merge "Removes bionic's dependence on stlport" 2014-05-19 23:31:34 +00:00
Dan Albert
d8cc98ad0c am 94a9ba2b: Merge "Removes RTTI support from libc"
* commit '94a9ba2b4a4d8be7e3520e34bfc7bd47ff7af0ce':
  Removes RTTI support from libc
2014-05-19 23:26:03 +00:00
Elliott Hughes
be3db39e21 am 948acf71: Merge "Switch back to OpenBSD inet_ntop now they\'re FORTIFY clean."
* commit '948acf710ed9be223696288466d4f4a566169ec5':
  Switch back to OpenBSD inet_ntop now they're FORTIFY clean.
2014-05-19 23:22:21 +00:00
Dan Albert
94a9ba2b4a Merge "Removes RTTI support from libc" 2014-05-19 23:21:46 +00:00
Elliott Hughes
948acf710e Merge "Switch back to OpenBSD inet_ntop now they're FORTIFY clean." 2014-05-19 23:19:32 +00:00
Elliott Hughes
f51d3e8767 Switch back to OpenBSD inet_ntop now they're FORTIFY clean.
Change-Id: I04798a4966c352a8a12feebdff9646e3bad5933f
2014-05-19 15:55:29 -07:00
Sreeram Ramachandran
54c83feebf am 9925c1a8: Merge "Mark sockets on creation (socket()) and accept4()."
* commit '9925c1a8f717b006b4245880c16f91e5f5f3b40a':
  Mark sockets on creation (socket()) and accept4().
2014-05-19 22:42:30 +00:00
Sreeram Ramachandran
9925c1a8f7 Merge "Mark sockets on creation (socket()) and accept4()." 2014-05-19 22:39:05 +00:00
Ben Cheng
d979838321 am 77338a29: Merge "Address additional warnings found by GCC 4.9."
* commit '77338a2969c4b5d6de5200c326ef67d6a82e95b2':
  Address additional warnings found by GCC 4.9.
2014-05-19 22:30:09 +00:00
Ben Cheng
77338a2969 Merge "Address additional warnings found by GCC 4.9." 2014-05-19 22:28:10 +00:00
Sreeram Ramachandran
1c99b23cc1 am 172ab0f6: Merge "Query libnetd_client for the appropriate netId for host resolution."
* commit '172ab0f65035013565ec57f52ece663082683698':
  Query libnetd_client for the appropriate netId for host resolution.
2014-05-19 22:21:23 +00:00
Sreeram Ramachandran
903b78873a Mark sockets on creation (socket()) and accept4().
Remove the separate syscall for accept() and implement it as accept4(..., 0).

Change-Id: Ib0b8f5d7c5013b91eae6bbc3847852eb355c7714
2014-05-19 15:19:16 -07:00
Sreeram Ramachandran
172ab0f650 Merge "Query libnetd_client for the appropriate netId for host resolution." 2014-05-19 22:16:47 +00:00
Ben Cheng
caff5f2e1a Address additional warnings found by GCC 4.9.
Change-Id: If668a6eb98a6ce7b2872f528b8e3527638814f68
2014-05-19 14:27:31 -07:00
Paul Jensen
5240b562e7 Query libnetd_client for the appropriate netId for host resolution.
If libnetd_client can't be found, operate as before and use the default netId
potentially overriden by a more specific netId passed in to
android_get*fornet().

(cherry picked from commit 559c7842cc)

Change-Id: I42ef3293172651870fb46d2de22464c4f03e8e0b
2014-05-19 12:49:52 -07:00
Dan Albert
4d35da1df8 Removes bionic's dependence on stlport
Only affects tests/benchmarks. Confirmed passing on arm.

Change-Id: If158e23e8cd06e7597ef6f3c9376f6799b467e62
2014-05-19 11:33:14 -07:00
Calin Juravle
0e85fb6121 Add uc_regspace to arm's ucontext_t
Bug: 12828904
Bug: 12875898
Change-Id: Ic5d532bd0ef58cad9e36a99fc2995c4b069121b2
2014-05-19 19:14:03 +01:00
Dan Albert
48ee47ce25 Removes RTTI support from libc
Our type_info stub implementation is incompatible with the libc++ headers. Since
we don't need this support internally and anyone that wants RTTI support will
have to use libc++ anyway, this can be safely removed.

Change-Id: Ied8b67a0d86a4eb0e31191a50cceba0e39a16a6d
2014-05-19 10:32:42 -07:00
Sreeram Ramachandran
0617c73f91 am 308c30af: Merge "Cosmetic changes to netd client files."
* commit '308c30af72da7b13938934ba5037dd347b1ef139':
  Cosmetic changes to netd client files.
2014-05-19 16:48:50 +00:00
Sreeram Ramachandran
308c30af72 Merge "Cosmetic changes to netd client files." 2014-05-19 16:45:53 +00:00
Christopher Ferris
8fccb27f95 am 3a757f40: Merge "Accuracy tests for libm"
* commit '3a757f403ba98ab2132ceb8d290dfafea6c4c7a5':
  Accuracy tests for libm
2014-05-19 02:23:16 +00:00
Christopher Ferris
3a757f403b Merge "Accuracy tests for libm" 2014-05-19 02:19:58 +00:00
Sreeram Ramachandran
72c53933f8 Cosmetic changes to netd client files.
+ Name the dispatch header correctly (NetdClientDispatch.h).
+ Hide the global dispatch variable (__netdClientDispatch).
+ Explain why it's okay to read the variable without locking.
+ Use quotes instead of angle-brackets for non-system includes.
+ Add necessary declarations for C compiles (and not just C++).

Change-Id: Id0932165e71d81da5fce77a684f40c2263f58e61
2014-05-18 15:18:36 -07:00
Elliott Hughes
6e37ebfe5c am 6c83305c: Merge "Rethrow SIGTRAP too."
* commit '6c83305c9a0c43eff407f3b4a2ff10ad0be26f01':
  Rethrow SIGTRAP too.
2014-05-17 00:38:01 +00:00
Elliott Hughes
6c83305c9a Merge "Rethrow SIGTRAP too." 2014-05-17 00:35:34 +00:00
Elliott Hughes
00c855eb3d Rethrow SIGTRAP too.
Bug: 15024256
Change-Id: I0347da9698a6ccd317ce6e6f7916d710d66e0f8a
2014-05-16 17:34:13 -07:00
Elliott Hughes
81e4ab453a am 8b9a22f3: Merge "Fix the newly-introduced warning and turn on -Werror."
* commit '8b9a22f30a6cfc58f35ad5964d90319d5f3c9cd5':
  Fix the newly-introduced warning and turn on -Werror.
2014-05-17 00:17:06 +00:00
Elliott Hughes
dc9ac8449c am 2071b983: Merge "debugger.cpp should know the names of the signals it catches."
* commit '2071b98341915dbf63d222539c455f1d60e1a233':
  debugger.cpp should know the names of the signals it catches.
2014-05-17 00:17:05 +00:00
Elliott Hughes
8b9a22f30a Merge "Fix the newly-introduced warning and turn on -Werror." 2014-05-17 00:16:05 +00:00
Elliott Hughes
2071b98341 Merge "debugger.cpp should know the names of the signals it catches." 2014-05-17 00:14:46 +00:00
Elliott Hughes
62e35755eb debugger.cpp should know the names of the signals it catches.
Change-Id: I37908b07739ad465652f143848c52bc1ef19e421
2014-05-16 16:59:54 -07:00
Elliott Hughes
4c2da039ba Fix the newly-introduced warning and turn on -Werror.
I cleaned up most of our warnings last week but forgot to turn on -Werror,
so of course we're getting new warnings already. I've left -Werror commented
out in those places where we still have warnings to deal with before we can
turn on -Werror.

Change-Id: Ia58ff8b8c1ada4bf81eec6f19ec1d34e133cf4b1
2014-05-16 16:50:34 -07:00
Elliott Hughes
88a8e09bcf am 5e6e3edb: Merge "Export get_malloc_leak_info and free_malloc_leak_info, used by ddms."
* commit '5e6e3edbba20bf5a166ea9d06a8f2f38a40e122f':
  Export get_malloc_leak_info and free_malloc_leak_info, used by ddms.
2014-05-16 23:33:54 +00:00
Elliott Hughes
5e6e3edbba Merge "Export get_malloc_leak_info and free_malloc_leak_info, used by ddms." 2014-05-16 23:30:53 +00:00
Elliott Hughes
7c9923d05f Export get_malloc_leak_info and free_malloc_leak_info, used by ddms.
Bug: 11156955
Change-Id: I84043f7b2c0ea0e336f6e2af3b7adb2f8488bd53
2014-05-16 16:29:55 -07:00
Elliott Hughes
838c5c2570 am a23ee2cf: Merge "Hide _exit_with_stack_teardown."
* commit 'a23ee2cf8e8665efe4e0929467782fad7ad31661':
  Hide _exit_with_stack_teardown.
2014-05-16 23:26:30 +00:00
Elliott Hughes
a23ee2cf8e Merge "Hide _exit_with_stack_teardown." 2014-05-16 23:23:36 +00:00
Elliott Hughes
31d0398de6 Hide _exit_with_stack_teardown.
Bug: 11156955
Change-Id: Ida3020343c9975177dc324918cd1f10c455eb173
2014-05-16 16:17:44 -07:00
Elliott Hughes
30f89b6f32 am aafa3d0e: Merge "Hide various debug malloc implementation details."
* commit 'aafa3d0e4623f3c57c7abe66f6afa726b9cde348':
  Hide various debug malloc implementation details.
2014-05-16 23:07:43 +00:00
Elliott Hughes
aafa3d0e46 Merge "Hide various debug malloc implementation details." 2014-05-16 23:04:02 +00:00
Elliott Hughes
48ecb3a64c am 58b52fb1: Merge "Remove dead code."
* commit '58b52fb133ee4f8a82d3da5c439ca7b9d2caa2bf':
  Remove dead code.
2014-05-16 22:54:31 +00:00
Elliott Hughes
67e34f3074 am e2d5746a: Merge "Hide __signalfd4, used to implement signalfd(3)."
* commit 'e2d5746a8ae9c7dd957b46286af42e7ff412a68b':
  Hide __signalfd4, used to implement signalfd(3).
2014-05-16 22:54:30 +00:00
Elliott Hughes
58b52fb133 Merge "Remove dead code." 2014-05-16 22:52:41 +00:00
Elliott Hughes
e2d5746a8a Merge "Hide __signalfd4, used to implement signalfd(3)." 2014-05-16 22:51:29 +00:00
Elliott Hughes
7222b1b594 Hide __signalfd4, used to implement signalfd(3).
Bug: 11156955
Change-Id: I50842279cb5b32ec8bd45193435574e415cd806e
2014-05-16 15:47:29 -07:00
Jingwei Zhang
568d64dc62 Accuracy tests for libm
This patch adds tests for 14 math functions to address coverage
issue of math functions discussed in:
https://android-review.googlesource.com/#/c/49653/

Change-Id: Ia7200b93d4f5c7928a3fb827ca6932226384a116
Signed-off-by: Jingwei Zhang <jingwei.zhang@intel.com>
Signed-off-by: Yong Yao <yong.yao@intel.com>
2014-05-16 15:31:55 -07:00
Elliott Hughes
6b7987cca3 Hide various debug malloc implementation details.
Bug: 11156955
Change-Id: Ib9d69d49ecec8eff4f12392bde94d843ae53d442
2014-05-16 15:23:54 -07:00
Elliott Hughes
bd27a8b4af Remove dead code.
This doesn't exist upstream.

Really we should upgrade to the current arc4random, but that's a bigger
job for another day.

Bug: 11156955
Change-Id: If6cd41b79139c64c17e81999e246cf4f00882ce8
2014-05-16 14:43:00 -07:00
Elliott Hughes
7177d1d6bb am d9b06298: Merge "Hide __futex_wake_ex and __futex_wait_ex."
* commit 'd9b0629868fe4a2ce2e144b826dd869b6d808834':
  Hide __futex_wake_ex and __futex_wait_ex.
2014-05-16 19:59:57 +00:00
Elliott Hughes
d9b0629868 Merge "Hide __futex_wake_ex and __futex_wait_ex." 2014-05-16 19:56:52 +00:00
Elliott Hughes
3973de9616 Hide __futex_wake_ex and __futex_wait_ex.
Also remove some cruft that isn't needed now we're using uapi headers.

Bug: 11156955
Change-Id: I936b9c5b01d8bd6bfb2e5bc0e3f86cd86739cc04
2014-05-16 12:53:31 -07:00
Elliott Hughes
9700b6ca97 am 22ade3c3: Merge "With libstdc++ in libc, __futex_wait and __futex_wake can be hidden."
* commit '22ade3c30d83407d19cd3a2b49ead66e6c5e3cf0':
  With libstdc++ in libc, __futex_wait and __futex_wake can be hidden.
2014-05-16 18:03:32 +00:00
Elliott Hughes
22ade3c30d Merge "With libstdc++ in libc, __futex_wait and __futex_wake can be hidden." 2014-05-16 18:00:51 +00:00
Elliott Hughes
879180c3ac With libstdc++ in libc, __futex_wait and __futex_wake can be hidden.
This patch is conservative and just touches LP64. (But not because we
know of anyone using this in LP32.)

Bug: 13367666
Change-Id: Id45652debc4534584479b16b501401f6f23acea9
2014-05-16 10:58:59 -07:00
Elliott Hughes
80cff53e13 am 2a602272: Merge "Move libstdc++ into libc."
* commit '2a60227223da700e4ae1b5436f61aea99fc7a5aa':
  Move libstdc++ into libc.
2014-05-16 16:39:45 +00:00
Elliott Hughes
2a60227223 Merge "Move libstdc++ into libc." 2014-05-16 16:37:20 +00:00
Christopher Ferris
0d9c78afb3 am 5265ad62: Merge "Fix comment typo."
* commit '5265ad6273cd7c61d096ebe0e29e493915e7c63e':
  Fix comment typo.
2014-05-16 02:16:17 +00:00
Christopher Ferris
5265ad6273 Merge "Fix comment typo." 2014-05-16 02:14:07 +00:00
Christopher Ferris
9029d2f638 Fix comment typo.
Change-Id: I1909f724826b531daf14fec4853e40d578fc0f59
2014-05-15 19:11:58 -07:00
Dmitriy Ivanov
7f3d6b69ce am 0a5b0166: Merge "Register _cleanup function with atexit"
* commit '0a5b01662316a06be68f3250c1b678c5ef17cc40':
  Register _cleanup function with atexit
2014-05-16 00:40:18 +00:00
Dmitriy Ivanov
0a5b016623 Merge "Register _cleanup function with atexit" 2014-05-16 00:37:54 +00:00
Elliott Hughes
b9fdad7715 am ec81b4a3: Merge "Scrub uapi headers slightly harder."
* commit 'ec81b4a380e1bbbaf6e582cd28476a245694abe7':
  Scrub uapi headers slightly harder.
2014-05-15 23:05:33 +00:00
Elliott Hughes
ec81b4a380 Merge "Scrub uapi headers slightly harder." 2014-05-15 23:03:25 +00:00
Dmitriy Ivanov
b17cc8801a am 86bc436e: Merge "Improve detection of already loaded libraries"
* commit '86bc436e20621656cd76b653ae3396c6584259e5':
  Improve detection of already loaded libraries
2014-05-15 21:59:05 +00:00
Dmitriy Ivanov
86bc436e20 Merge "Improve detection of already loaded libraries" 2014-05-15 21:55:24 +00:00
Dmitriy Ivanov
623b0d05bd Register _cleanup function with atexit
* Register cleanup function with atexit
   instead of calling it explicitly on
   exit()
 * abort() no longer calls _cleanup:
   Flushing stdio buffers on abort is no
   longer required by POSIX.
 * dlmalloc no longer need to reset cleanup
   (see above)
 * Upstream findfp.c makebuf.c setvbuf.cexit.c
   to openbsd versions.

Bug: 14415367
Change-Id: I277058852485a9d3dbb13e5c232db5f9948d78ac
2014-05-15 13:05:21 -07:00
Elliott Hughes
8ed7a23309 Scrub uapi headers slightly harder.
There's no point having always-false tests. It just makes the headers
harder to read.

Bug: 11560081
Change-Id: I6187755e1514ca9ff5642b3c1b0489f22edddaf5
2014-05-15 12:01:11 -07:00
Calin Juravle
e5205d35ef am 089c7c92: Merge "Document a known test issue in stdio_test.cpp."
* commit '089c7c921786ff6255526feec96552fc16ada7f4':
  Document a known test issue in stdio_test.cpp.
2014-05-15 09:38:08 +00:00
Calin Juravle
83c94c6d60 am 98efae4c: Merge "Fill in missing bits in x86(_64) ucontext_t"
* commit '98efae4c09ba05c5b25c95ea4a39b0711e6f8b98':
  Fill in missing bits in x86(_64) ucontext_t
2014-05-15 09:38:08 +00:00
Calin Juravle
089c7c9217 Merge "Document a known test issue in stdio_test.cpp." 2014-05-15 09:36:22 +00:00
Calin Juravle
98efae4c09 Merge "Fill in missing bits in x86(_64) ucontext_t" 2014-05-15 09:36:01 +00:00
Calin Juravle
9b95ea936a Document a known test issue in stdio_test.cpp.
Bug: 13077905
Change-Id: Iab7fc7be0737c732e26cc07ecd7884b3087b51bb
2014-05-15 10:34:06 +01:00
Calin Juravle
a6ab968ca0 Fill in missing bits in x86(_64) ucontext_t
Bug: 12828904
Bug: 12875898
Change-Id: I0ec0dfe16af80bfb3153f3c3b1b3d180eff30f39
2014-05-15 10:34:06 +01:00
Andrew Hsieh
c67e917abc am d0a89921: Merge "Rename user_i387_struct -> user_fpregs_struct in sys/ucontext.h"
* commit 'd0a899215b27254661ef9af90aea31343ffc4367':
  Rename  user_i387_struct -> user_fpregs_struct in sys/ucontext.h
2014-05-15 01:54:28 +00:00
Andrew Hsieh
d0a899215b Merge "Rename user_i387_struct -> user_fpregs_struct in sys/ucontext.h" 2014-05-15 01:52:22 +00:00
Elliott Hughes
15b641a267 Move libstdc++ into libc.
The Android build system always links against libstdc++.so anyway. Having
operator new and operator delete in a separate library means we can't use
constructors and destructors on heap-allocated objects inside the C library,
which is quite an unfortunate limitation.

This will be cheaper too; on LP64 we can stop linking against the [now empty]
libstdc++.so giving the dynamic linker one less library to worry about for
every process.

There's precedent too --- we already have no libpthread or librt.

For now I'm leaving the include files where they are, and I'm generating a
dummy libstdc++.so and libstdc++.a. We can come back and clean that up later
if all goes well.

Bug: 13367666
Change-Id: I6f3e27ea7c30d03d6394965d0400c9dc87fa83db
2014-05-14 18:18:55 -07:00
Andrew Hsieh
9b5b40b4df Rename user_i387_struct -> user_fpregs_struct in sys/ucontext.h
See 93e1907ae1

Change-Id: Icb207f4e17cfffdd6d37500656434adf1cc34427
2014-05-15 09:11:11 +08:00
Christopher Ferris
493cfc338b am 1596b884: Merge "Increase minimum thread size for 64 bit."
* commit '1596b884648642ad09f87d2a0dc4db47f037b6d7':
  Increase minimum thread size for 64 bit.
2014-05-15 01:09:29 +00:00
Christopher Ferris
1596b88464 Merge "Increase minimum thread size for 64 bit." 2014-05-15 01:06:25 +00:00
Christopher Ferris
ea5248ee1b Increase minimum thread size for 64 bit.
Bug: 14468519
Change-Id: I642a5515acf5fbed46e77e176f6b5dd3b7c7bd45
2014-05-14 18:02:11 -07:00
Elliott Hughes
4cbb778beb am f280130f: Merge "Remove the unused __system_property_wait."
* commit 'f280130f3fd6719cee3a4cb42155dcef44665ea0':
  Remove the unused __system_property_wait.
2014-05-15 00:22:12 +00:00
Elliott Hughes
f280130f3f Merge "Remove the unused __system_property_wait." 2014-05-15 00:20:00 +00:00
Christopher Ferris
cd5b792039 am bc7f8a79: Merge "Do not keep struct state on the stack."
* commit 'bc7f8a791b4a510914fd5cac713415acb80fb806':
  Do not keep struct state on the stack.
2014-05-15 00:05:17 +00:00
Elliott Hughes
3e786987b5 Remove the unused __system_property_wait.
This isn't declared in any header file.

Bug: 14970171
Change-Id: Ib9fce61343dfb6b6ccd7e1430e1a6e34e4e869df
2014-05-14 17:02:09 -07:00
Christopher Ferris
bc7f8a791b Merge "Do not keep struct state on the stack." 2014-05-15 00:00:50 +00:00
Elliott Hughes
f015757fc6 am 1e07463f: Merge "Add tests for fprintf behavior when the underlying fd is bad."
* commit '1e07463fcc92e515f7f57e9faa94f31e02cd07cb':
  Add tests for fprintf behavior when the underlying fd is bad.
2014-05-14 23:51:56 +00:00
Christopher Ferris
8a8b0c9bfc Do not keep struct state on the stack.
This structure is huge (~18000 bytes on arm64) and can blow out
the stack very easily.
Modify the code to allocate these structures instead of leaving them
on the stack.

Bug: 14468519
Change-Id: I774f71235d896d32a14ab1af06f95ca9ef819f52
2014-05-14 16:50:41 -07:00
Elliott Hughes
1e07463fcc Merge "Add tests for fprintf behavior when the underlying fd is bad." 2014-05-14 23:35:31 +00:00
Dmitriy Ivanov
d59e50063a Improve detection of already loaded libraries
Linker is now able to resolve symlinked libraries correctly.

soinfo is extended to save the graph of dependencies during
load/unload. Dependencies are used only in CallConstructor.

Bug: 9741592
Change-Id: Id9c48a74c46aa89bcdf3d54ec2f8ba3d398130b1
2014-05-14 15:16:35 -07:00
Dmitriy Ivanov
283ec6256b am 6897b7b8: Merge "Fix for linker allocator"
* commit '6897b7b8b95beae120fd53e6fd15921d6420bea7':
  Fix for linker allocator
2014-05-14 21:04:17 +00:00
Dmitriy Ivanov
6897b7b8b9 Merge "Fix for linker allocator" 2014-05-14 21:02:18 +00:00
Elliott Hughes
c9244bdac1 Add tests for fprintf behavior when the underlying fd is bad.
Bug: 7229520
Change-Id: Ie878e0c13fdcda7b9131fa56208b84ed88125be7
2014-05-14 13:31:35 -07:00
Elliott Hughes
f5b79eba6f am fbd9dcad: Merge "Add a unit test for already-fixed printf -0.0 formatting."
* commit 'fbd9dcadc8e25b22c99596462669017b9b1b4a7c':
  Add a unit test for already-fixed printf -0.0 formatting.
2014-05-14 20:14:36 +00:00
Elliott Hughes
fbd9dcadc8 Merge "Add a unit test for already-fixed printf -0.0 formatting." 2014-05-14 20:11:23 +00:00
Dmitriy Ivanov
1079406cab Fix for linker allocator
Change-Id: I18a3f1a8515657f0deb69266184fb516a27f90e8
2014-05-14 12:52:57 -07:00
Sreeram Ramachandran
d2ac878749 am 49ec2a0c: Merge "Mark sockets on accept()."
* commit '49ec2a0cdc56fcd6bdd1b0feea127acfabc076f9':
  Mark sockets on accept().
2014-05-14 19:48:10 +00:00
Elliott Hughes
deedbebb4e am acc51369: Merge "Add a regression test for a long-fixed pthread_once bug."
* commit 'acc513698b90abdf84f26d6dd08eb0b32fa56714':
  Add a regression test for a long-fixed pthread_once bug.
2014-05-14 19:48:09 +00:00
Elliott Hughes
d60d67db33 am aeec2ae7: Merge "Remove the broken pthread deadlock prediction."
* commit 'aeec2ae7202892a2bca25a17e60850f9c07b64f6':
  Remove the broken pthread deadlock prediction.
2014-05-14 19:48:08 +00:00
Sreeram Ramachandran
49ec2a0cdc Merge "Mark sockets on accept()." 2014-05-14 19:40:50 +00:00
Elliott Hughes
e77f38f14a Add a unit test for already-fixed printf -0.0 formatting.
This was fixed by the upgrade to upstream head.

Bug: 5084292
Change-Id: Ia3bda1c0bbe38f428e22213b8bdbdf1a16caccf2
2014-05-14 12:39:12 -07:00
Elliott Hughes
acc513698b Merge "Add a regression test for a long-fixed pthread_once bug." 2014-05-14 19:29:45 +00:00
Elliott Hughes
aeec2ae720 Merge "Remove the broken pthread deadlock prediction." 2014-05-14 19:29:30 +00:00
Elliott Hughes
3694ec6c4b Add a regression test for a long-fixed pthread_once bug.
Bug: 1934122
Change-Id: Iae09baedc2c6ed4036521e51718fe9d015bc56b9
2014-05-14 11:46:08 -07:00
Elliott Hughes
07f1ded139 Remove the broken pthread deadlock prediction.
This hasn't built in over one release cycle and no one even noticed.
art does this the right way and other projects should do the same.

Change-Id: I7d1fb84c4080e008f329ee73e209ce85a36e6d55
2014-05-14 11:38:22 -07:00
Sreeram Ramachandran
8f0cd8aa22 Mark sockets on accept().
(cherry picked from commit 58b1f3f6a30a660ad81637c2b50382c3d279243b)

Change-Id: I5d09be413cf720fbed905f96313b007997ada76c
2014-05-14 11:10:22 -07:00
Elliott Hughes
7451897cd4 am e6c27a7a: Merge "Fix a typo in the big g_ search/replace."
* commit 'e6c27a7af7a9b13e4e3d3ebd604d28effa9e9322':
  Fix a typo in the big g_ search/replace.
2014-05-14 18:02:53 +00:00
Elliott Hughes
e6c27a7af7 Merge "Fix a typo in the big g_ search/replace." 2014-05-14 17:59:52 +00:00
Elliott Hughes
cd46104cf8 Fix a typo in the big g_ search/replace.
Change-Id: I79261de70d225236d0eadff288220258d697437f
2014-05-14 10:58:58 -07:00
Elliott Hughes
6eb0fe2b02 am 15c13bd6: Merge "Switch to g_ for globals."
* commit '15c13bd6cc0ce44d8f083f75d0bfa926a88cc169':
  Switch to g_ for globals.
2014-05-14 17:41:20 +00:00
Elliott Hughes
15c13bd6cc Merge "Switch to g_ for globals." 2014-05-14 17:36:37 +00:00
Elliott Hughes
1728b23965 Switch to g_ for globals.
That's what the Google style guide recommends, and we're starting
to get a mix.

Change-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc
2014-05-14 10:02:03 -07:00
Ross McIlroy
bc45edaa9e am bac79558: Merge "Fix x86_64 user_fpregs_struct to use the same name for the tag word as glibc."
* commit 'bac795586bbc5dcbe886d8d781710f60c4c19d9b':
  Fix x86_64 user_fpregs_struct to use the same name for the tag word as glibc.
2014-05-14 14:30:56 +00:00
Ross McIlroy
bac795586b Merge "Fix x86_64 user_fpregs_struct to use the same name for the tag word as glibc." 2014-05-14 14:27:41 +00:00
Ross McIlroy
0c8a5f82e6 Fix x86_64 user_fpregs_struct to use the same name for the tag word as glibc.
Glibc calls the tag pointer in user_fpregs_struct ftw instead of twd.

Change-Id: I4a8dab777fa889de0b9927035cd18557ae6f3263
2014-05-14 13:29:19 +01:00
Calin Juravle
7c0b313df1 am a7318774: Merge "Change wctype_t from int to long."
* commit 'a7318774061b508e7f769fb0e122cfb40cbb94c9':
  Change wctype_t from int to long.
2014-05-14 10:37:48 +00:00
Calin Juravle
d36bbf1315 am fd3171b4: Merge "Change wctype_t from enum to int"
* commit 'fd3171b465184b8eac16dfc88b954b2d6748b2ce':
  Change wctype_t from enum to int
2014-05-14 10:37:48 +00:00
Calin Juravle
a731877406 Merge "Change wctype_t from int to long." 2014-05-14 10:33:46 +00:00
Calin Juravle
fd3171b465 Merge "Change wctype_t from enum to int" 2014-05-14 10:33:35 +00:00
Elliott Hughes
2146f78c09 am 3e684183: Merge "Use the NetBSD inet_ntop until the OpenBSD bug is fixed."
* commit '3e684183881f18b9f3300257b6d65e83f8d5e27c':
  Use the NetBSD inet_ntop until the OpenBSD bug is fixed.
2014-05-14 02:24:40 +00:00
Elliott Hughes
3e68418388 Merge "Use the NetBSD inet_ntop until the OpenBSD bug is fixed." 2014-05-14 02:21:20 +00:00
Elliott Hughes
5c8c88dd8d Use the NetBSD inet_ntop until the OpenBSD bug is fixed.
Stupidly I found this bug by accident when writing the existing
tests, but I didn't think any real code would hit it. It turns
out that libcore always uses an INET6_ADDRSTRLEN-sized buffer
even when working with AF_INET addresses.

Change-Id: Ieffc8e4bbe9b66b49b033e3e7101c896e097e6f8
2014-05-13 19:17:46 -07:00
Dmitriy Ivanov
f9a28bd79d am c6b5834c: Merge "Remove page level mprotects"
* commit 'c6b5834ceb3df72608a8fe3526a2db337e504512':
  Remove page level mprotects
2014-05-14 01:50:02 +00:00
Elliott Hughes
9b1e2a14f9 am 3557f2f6: Merge "Fix <sys/endian.h> uint32_t build failures."
* commit '3557f2f61b9cc736d245aff1e979500cc399e491':
  Fix <sys/endian.h> uint32_t build failures.
2014-05-14 01:46:44 +00:00
Dmitriy Ivanov
c6b5834ceb Merge "Remove page level mprotects" 2014-05-14 01:45:50 +00:00
Elliott Hughes
3557f2f61b Merge "Fix <sys/endian.h> uint32_t build failures." 2014-05-14 01:43:15 +00:00
Elliott Hughes
135b103fd9 Fix <sys/endian.h> uint32_t build failures.
Change-Id: I833b51318f0bf7749073859b7ffacc668c27558e
2014-05-13 18:42:12 -07:00
Dmitriy Ivanov
bc23e530c4 Remove page level mprotects
Freeing block mprotects on the page which it turn
may lead to application crash if linker subsequently
tries to modify another block on the page.

Bug: 14895266
Change-Id: I8ff7f5df467d7be184242de652032b3c84e24b76
2014-05-13 18:34:48 -07:00
Elliott Hughes
cb6f6243db am 17f8ef87: Merge "Flesh out <arpa/inet.h>."
* commit '17f8ef87b565d88c3b391d6d8de8818dec74c4d5':
  Flesh out <arpa/inet.h>.
2014-05-14 01:10:55 +00:00
Elliott Hughes
f984afd0ef am 57722375: Merge "We don\'t need two copies of <nsswitch.h>."
* commit '5772237588a606cad2c7a26d24e9de3c0a62ce81':
  We don't need two copies of <nsswitch.h>.
2014-05-14 01:10:55 +00:00
Elliott Hughes
17f8ef87b5 Merge "Flesh out <arpa/inet.h>." 2014-05-14 01:09:01 +00:00
Elliott Hughes
6a41b0fb0e Flesh out <arpa/inet.h>.
Use the upstream OpenBSD implementations of these functions.

Also ensure we have symbols for htonl, htons, ntohl, and ntohs.
gtest doesn't like us using the macro versions in ASSERT_EQ.

Bug: 14840760
Change-Id: I68720e9aca14838df457d2bb27b999d5818ac2b5
2014-05-13 18:08:29 -07:00
Elliott Hughes
5772237588 Merge "We don't need two copies of <nsswitch.h>." 2014-05-14 01:06:11 +00:00
Elliott Hughes
eed3d0d1f3 We don't need two copies of <nsswitch.h>.
Change-Id: I3f874326d96f41249f5c9b1b3c2885f858589029
2014-05-13 18:05:29 -07:00
Sreeram Ramachandran
59a4a10f09 am d57d710f: Merge "Fix build (take two)."
* commit 'd57d710f0847009038297d1ffcc1613198fb48d4':
  Fix build (take two).
2014-05-14 00:47:06 +00:00
Sreeram Ramachandran
d57d710f08 Merge "Fix build (take two)." 2014-05-14 00:43:47 +00:00
Sreeram Ramachandran
8205a61248 Fix build (take two).
Make sure __netdClientDispatch is defined in the same set of libraries that
refer to it (e.g.: with connect.cpp).

Change-Id: I86d7bf2df5bde09f75a35b204eac0e1361747e22
2014-05-13 17:24:03 -07:00
Sreeram Ramachandran
cd004d2d01 am 2ed09d44: Merge "Fix build."
* commit '2ed09d44ecdaf656a598052d155a813897239042':
  Fix build.
2014-05-14 00:00:58 +00:00
Sreeram Ramachandran
2ed09d44ec Merge "Fix build." 2014-05-13 23:57:07 +00:00
Sreeram Ramachandran
06e8796ee9 Fix build.
Change-Id: I33293d8bc62cbb22e23a704c4242e7e9d3fce7c5
2014-05-13 16:30:12 -07:00
Sreeram Ramachandran
9b5bc6fd7e am 79b56f4b: Merge "Introduce netd_client, a dynamic library that talks to netd."
* commit '79b56f4b0b9fa52fbf2e79c073d28efd21ae724d':
  Introduce netd_client, a dynamic library that talks to netd.
2014-05-13 22:11:48 +00:00
Sreeram Ramachandran
79b56f4b0b Merge "Introduce netd_client, a dynamic library that talks to netd." 2014-05-13 22:07:26 +00:00
Elliott Hughes
b00435d15c am 0ccef7ec: Merge "Upgrade to tzdata2014c."
* commit '0ccef7ec5294b34902e07c26db55891d3eddb2be':
  Upgrade to tzdata2014c.
2014-05-13 18:35:49 +00:00
Elliott Hughes
492e8f7250 am 4482091b: Merge "Consistently use #if defined(__BIONIC__) in tests."
* commit '4482091b1d1611aa395931656b94bfd8ffd583bf':
  Consistently use #if defined(__BIONIC__) in tests.
2014-05-13 18:35:49 +00:00
Sreeram Ramachandran
ceb5bd787c Introduce netd_client, a dynamic library that talks to netd.
The library exists outside bionic. It is dynamically loaded, to replace selected
standard socket syscalls with versions that talk to netd.

Change connect() to use the library if available.

(cherry picked from commit 3a6b627a14df8111b03e452f2df4b5f4938e0e49)

Change-Id: Ib6198e19dbc306521a26fcecfdf6e8424d163fc9
2014-05-13 11:30:03 -07:00
Elliott Hughes
0ccef7ec52 Merge "Upgrade to tzdata2014c." 2014-05-13 18:27:30 +00:00
Elliott Hughes
4482091b1d Merge "Consistently use #if defined(__BIONIC__) in tests." 2014-05-13 18:26:47 +00:00
Elliott Hughes
121cb5f4a7 Upgrade to tzdata2014c.
From the release notes:

  Changes affecting near-future time stamps

    Egypt observes DST starting 2014-05-15 at 24:00.
    (Thanks to Ahmad El-Dardiry and Gunther Vermier.)
    Details have not been announced, except that DST will not be
    observed during Ramadan.  Guess that DST will stop during the same
    Ramadan dates as Morocco, and that Egypt's future spring and fall
    transitions will be the same as 2010 when it last observed DST,
    namely April's last Friday at 00:00 to September's last Thursday at
    23:00 standard time.  Also, guess that Ramadan transitions will be
    at 00:00 standard time.

Change-Id: I6a20cae02a314871acbd52cb90fcbebd37625810
2014-05-13 11:23:18 -07:00
Elliott Hughes
063525c61d Consistently use #if defined(__BIONIC__) in tests.
I've also switched some tests to be positive rather than negative,
because !defined is slightly harder to reason about and there are
only two cases: bionic and glibc.

Change-Id: I8d3ac40420ca5aead3e88c69cf293f267273c8ef
2014-05-13 11:19:57 -07:00
Elliott Hughes
56b18bb4d2 am a26dd781: Merge "Add getmntent_r to our collection of <mntent.h> compatibility stubs."
* commit 'a26dd781fe675cf94c62183da27622eb83ff6fa7':
  Add getmntent_r to our collection of <mntent.h> compatibility stubs.
2014-05-13 18:18:20 +00:00
Elliott Hughes
a26dd781fe Merge "Add getmntent_r to our collection of <mntent.h> compatibility stubs." 2014-05-13 18:14:49 +00:00
Elliott Hughes
eb664e24c0 Add getmntent_r to our collection of <mntent.h> compatibility stubs.
This helps build 'external/flo' out of the box.

Bug: 14841211
Change-Id: I30dde77239cceaf1f5743163744eb3604d27a266
2014-05-13 10:44:07 -07:00
Elliott Hughes
2b5503b578 am dbcba8f5: Merge "Reduce stack usage of tmpfile(3)."
* commit 'dbcba8f5f9a59fac3d22dfc17a14d3d5cfb4f4b0':
  Reduce stack usage of tmpfile(3).
2014-05-13 17:37:22 +00:00
Elliott Hughes
dbcba8f5f9 Merge "Reduce stack usage of tmpfile(3)." 2014-05-13 17:32:48 +00:00
Calin Juravle
66faa0c21f am f34f0ccb: Merge "Use __LP64__ instead of __LP32__ in sched.h"
* commit 'f34f0ccb0e1d1c6df5f60bbfc44983263f89164d':
  Use __LP64__ instead of __LP32__ in sched.h
2014-05-13 17:21:29 +00:00
Calin Juravle
f34f0ccb0e Merge "Use __LP64__ instead of __LP32__ in sched.h" 2014-05-13 17:16:30 +00:00
Elliott Hughes
b6943186ce Reduce stack usage of tmpfile(3).
Also ensure that none of our home-grown code uses more than 2KiB per frame.

Change-Id: I8987a17d72f4b7f082bb7fa25e137c8433664c14
2014-05-13 10:14:22 -07:00
Dmitriy Ivanov
f4846a3ab6 am d44927b8: Merge "Refactor linker allocator"
* commit 'd44927b8e9f4b2bcd376d1f84bad46f3ba9094de':
  Refactor linker allocator
2014-05-13 15:52:15 +00:00
Dmitriy Ivanov
d44927b8e9 Merge "Refactor linker allocator" 2014-05-13 15:49:18 +00:00
Calin Juravle
dd09699fae Use __LP64__ instead of __LP32__ in sched.h
Gcc defines only __LP64__ so testing __LP32__ will always be false.

Bug: 14881256
Change-Id: Ic63c1d562be09c3eb4b9e17c9e5ef2d9e404db80
2014-05-13 16:07:28 +01:00
Calin Juravle
b55f2631dc Change wctype_t from int to long.
On LP64 this brings us on par with the other libcs where wctype_t is 8
bytes.

Bug: 12875898
Change-Id: Ice4f538ccf0634ef6667a8d90d0f7f09cec9e1b0
2014-05-13 13:11:27 +01:00
Calin Juravle
0c472479a2 Change wctype_t from enum to int
This increases bionic source compatibility with other libcs where
"wctype_t foo = 0;" is valid without -fpermissive.

Bug: 14646243
Change-Id: Ia9bd0785bc42c7b46e2bb6c3d9b9a9d3f769d983
2014-05-13 12:47:27 +01:00
Calin Juravle
d9f0e8f2e0 am ddda264f: Merge "Undef private *_BODY defines after use"
* commit 'ddda264f1b3bf7627042c2d197d85044cac04564':
  Undef private *_BODY defines after use
2014-05-13 10:34:20 +00:00
Calin Juravle
ddda264f1b Merge "Undef private *_BODY defines after use" 2014-05-13 10:31:07 +00:00
Calin Juravle
f963da22ec Undef private *_BODY defines after use
Bug: 14865741
Change-Id: I1398f7b3f64e3c94f2714cede5b61205dfa78a24
2014-05-13 11:01:11 +01:00
Calin Juravle
c291db129b am 38967f3d: Merge "Add fpos_t tests."
* commit '38967f3d1fbc9326beb7eef8c084b334e9bd65f5':
  Add fpos_t tests.
2014-05-13 09:40:29 +00:00
Calin Juravle
e0913cd449 am e788f5e0: Merge "Support mb sequences across calls to mb*to*wcs* functions"
* commit 'e788f5e04b4618a2f51865f60b2d482dac50e05a':
  Support mb sequences across calls to mb*to*wcs* functions
2014-05-13 09:40:28 +00:00
Calin Juravle
38967f3d1f Merge "Add fpos_t tests." 2014-05-13 09:37:08 +00:00
Calin Juravle
e788f5e04b Merge "Support mb sequences across calls to mb*to*wcs* functions" 2014-05-13 09:36:01 +00:00
Dmitriy Ivanov
d597d263bc Refactor linker allocator
Makes it reusable for different fixed sized and not very
big structures (<PAGE_SIZE).

Change-Id: Id5ec13fc6541b1935ef7fe3671c22b98685abbae
2014-05-12 21:40:09 -07:00
Christopher Ferris
199e830a88 am 1abb1b93: Merge "Add 64-bit Silvermont-optimized string/memory functions."
* commit '1abb1b939d318513066ef580377cc3659ceac8ef':
  Add 64-bit Silvermont-optimized string/memory functions.
2014-05-13 00:52:06 +00:00
Christopher Ferris
1abb1b939d Merge "Add 64-bit Silvermont-optimized string/memory functions." 2014-05-13 00:48:40 +00:00
Varvara Rainchik
a020a244ae Add 64-bit Silvermont-optimized string/memory functions.
Add following functions:
bcopy, bzero, memcpy, memmove, memset, stpcpy, stpncpy, strcat, strcpy,
strlen, strncat, strncpy, memcmp, strcmp, strncmp.
Set all these functions as the default ones.

Change-Id: Ic66b250ad8c349a43d25e2d4dea075604f6df6ac
Signed-off-by: Varvara Rainchik <varvara.rainchik@intel.com>
2014-05-12 17:37:07 -07:00
Christopher Ferris
5a3303dad5 am c1d26965: Merge "Add 32-bit Silvermont-optimized string/memory functions."
* commit 'c1d26965ae12f94c7b0dc64b2548c3c29d180296':
  Add 32-bit Silvermont-optimized string/memory functions.
2014-05-13 00:30:07 +00:00
Christopher Ferris
c1d26965ae Merge "Add 32-bit Silvermont-optimized string/memory functions." 2014-05-13 00:26:50 +00:00
Calin Juravle
03e4ebee8d Add fpos_t tests.
Bug: 13077905

Change-Id: I86bb0ee95660f69f9971231c6f828a3a067d1ac8
2014-05-13 00:39:08 +01:00
Calin Juravle
15a6310e4b Support mb sequences across calls to mb*to*wcs* functions
Bug: 13077905
Change-Id: I5abdc7cc3c27c109b7900c94b112f18a95c35763
2014-05-13 00:24:25 +01:00
Elliott Hughes
0b1a2ee781 am 8b307e0e: Merge "Remove the useless indirection in mips\' __set_tls."
* commit '8b307e0e9843aad7e1816eb631208117df2e787b':
  Remove the useless indirection in mips' __set_tls.
2014-05-12 23:18:32 +00:00
Elliott Hughes
8b307e0e98 Merge "Remove the useless indirection in mips' __set_tls." 2014-05-12 23:14:51 +00:00
Elliott Hughes
dcbef06ce6 Remove the useless indirection in mips' __set_tls.
Change-Id: I12e9d6716c42ccbccc9a186441aca0736bb22d05
2014-05-12 16:11:06 -07:00
Elliott Hughes
14d02ac74c am 2b18b107: Merge "Fix use-after-free errors in stdio_test."
* commit '2b18b10710995834e955658aedad3fdb2f994af8':
  Fix use-after-free errors in stdio_test.
2014-05-12 22:35:02 +00:00
Elliott Hughes
2b18b10710 Merge "Fix use-after-free errors in stdio_test." 2014-05-12 22:30:41 +00:00
Elliott Hughes
20f8aec897 Fix use-after-free errors in stdio_test.
fclose(3) frees the passed-in FILE*. We should close(2) the underlying fd,
not fclose(3) the stream, if we want to test what happens with a stream
we can't read from.

Bug: 14466691
Change-Id: I99fed5904b0266b9c6ae05d0b9cf2e926446c064
2014-05-12 15:15:37 -07:00
Varvara Rainchik
5a92284167 Add 32-bit Silvermont-optimized string/memory functions.
Add following functions:
bcopy, memcpy, memmove, memset, bzero, memcmp, wmemcmp, strlen,
strcpy, strncpy, stpcpy, stpncpy.
Create new directories inside arch-x86 to specify architecture: atom,
silvermont and generic (non atom or silvermont architectures are treated like generic).
Due to introducing optimized versions of stpcpy and stpncpy,
c-implementations of these functions are moved from
common for architectures makefile to arm and mips specific makefiles.

Change-Id: I990f8061c3e9bca1f154119303da9e781c5d086e
Signed-off-by: Varvara Rainchik <varvara.rainchik@intel.com>
2014-05-12 13:56:59 -07:00
Dmitriy Ivanov
fe4233e589 am ebcc7207: Merge "Cleanup: updated comments"
* commit 'ebcc72070499b2ab2d1dee990d6f52814a56600e':
  Cleanup: updated comments
2014-05-12 18:54:45 +00:00
Dmitriy Ivanov
ebcc720704 Merge "Cleanup: updated comments" 2014-05-12 18:49:35 +00:00
Dmitriy Ivanov
6275f20834 Cleanup: updated comments
Bug: 14566672
Change-Id: I49ad28e3914b7d559db1e98542fee919db768f49
2014-05-12 11:47:10 -07:00
Dmitriy Ivanov
15989a2b34 am e2997950: Merge "Cleanup: remove AARCH/ARM_COPY relocation support"
* commit 'e29979503a166d51e18e557a16aa8703a0dbdbb9':
  Cleanup: remove AARCH/ARM_COPY relocation support
2014-05-12 17:28:09 +00:00
Dmitriy Ivanov
e29979503a Merge "Cleanup: remove AARCH/ARM_COPY relocation support" 2014-05-12 17:21:35 +00:00
Dmitriy Ivanov
b906e13c55 Cleanup: remove AARCH/ARM_COPY relocation support
They are only legal for ET_EXEC binaries and these are no
longer supported.

Bug: 14566672
Change-Id: I99e0ff47e8c572db474bc5e52df870a72269abb3
2014-05-12 09:06:14 -07:00
Calin Juravle
e032a18c97 am d67c6af2: Merge "Reserve space for the future in statvfs(64)"
* commit 'd67c6af2f6767b057546e80cb90818e0efccce96':
  Reserve space for the future in statvfs(64)
2014-05-12 10:03:05 +00:00
Calin Juravle
d67c6af2f6 Merge "Reserve space for the future in statvfs(64)" 2014-05-12 09:59:57 +00:00
Calin Juravle
60e1132460 am 4d695bf5: Merge "Align struct passwd definition with other variations of libc"
* commit '4d695bf5606f2cf4029a7ff4e6dd61073407d3b0':
  Align struct passwd definition with other variations of libc
2014-05-12 09:58:20 +00:00
Calin Juravle
7bec1212c7 Reserve space for the future in statvfs(64)
The kernel struct has some spare space at the end too, and some extra
fields, so having a bit of flexibility in statvfs might be worthwhile.

Bug: 14681331
Bug: 12875898
Change-Id: I5b502c5dd9d2e3bb8f34804f83c02669cefce01e
2014-05-12 10:56:39 +01:00
Calin Juravle
4d695bf560 Merge "Align struct passwd definition with other variations of libc" 2014-05-12 09:53:41 +00:00
Elliott Hughes
cf113ab91d am 4b57305a: Merge "Bring in google3-style DISALLOW_* macros."
* commit '4b57305afe2b54a6afb733361f6fd93cb92ccfa8':
  Bring in google3-style DISALLOW_* macros.
2014-05-10 03:37:14 +00:00
Elliott Hughes
4b57305afe Merge "Bring in google3-style DISALLOW_* macros." 2014-05-10 03:32:28 +00:00
Elliott Hughes
8eac9af24e Bring in google3-style DISALLOW_* macros.
I've been meaning to do this for a very long time...

Change-Id: Ia8c16eee7c026c3c9505399948485fb778fb0152
2014-05-09 19:12:08 -07:00
Elliott Hughes
c66df5e92d am b2c3c803: Merge "Align the child stack in clone(2)."
* commit 'b2c3c803f0f4a50acfdc31eb28bd83b48a0026fe':
  Align the child stack in clone(2).
2014-05-10 00:42:01 +00:00
Elliott Hughes
b2c3c803f0 Merge "Align the child stack in clone(2)." 2014-05-10 00:38:51 +00:00
Elliott Hughes
0d236aa3f1 Align the child stack in clone(2).
Also let clone(2) set the TLS for x86.

Also ensure we initialize the TLS before we clone(2) for all architectures.

Change-Id: Ie5fa4466e1c9ee116a281dfedef574c5ba60c0b5
2014-05-09 17:06:51 -07:00
Elliott Hughes
0db4c69087 am 8fa5c252: Merge "Align arm64 stacks to 16 bytes in __bionic_clone."
* commit '8fa5c2528c04df00f9f9a3dc4047ae88d3f13524':
  Align arm64 stacks to 16 bytes in __bionic_clone.
2014-05-09 21:31:44 +00:00
Calin Juravle
c768874c66 Align struct passwd definition with other variations of libc
Add pg_gecos ("real name") field to struct passwd.

Bug: 14679430
Bug: 12875898
Change-Id: I833ec2c46f6a6259b7232a8e3f7942968ef0b50d
2014-05-09 22:29:23 +01:00
Elliott Hughes
8fa5c2528c Merge "Align arm64 stacks to 16 bytes in __bionic_clone." 2014-05-09 21:28:05 +00:00
Christopher Ferris
aabcf2871d am b222097d: Merge "Use larger neon instructions for moving data."
* commit 'b222097dae05dfbca8000a18e0629c6bca7584c4':
  Use larger neon instructions for moving data.
2014-05-09 21:15:24 +00:00
Christopher Ferris
b222097dae Merge "Use larger neon instructions for moving data." 2014-05-09 21:09:55 +00:00
Elliott Hughes
fff3c0fdcf Align arm64 stacks to 16 bytes in __bionic_clone.
Also ensure that arm64/x86-64/x86 assembler uses local labels.
(There are are so many non-local labels in arm that fixing them
seems out of scope.)

Also synchronize the __bionic_clone.S comments.

Change-Id: I03b4f84780d996b54d6637a074638196bbb01cd4
2014-05-09 12:16:20 -07:00
Christopher Ferris
2146d142b2 Use larger neon instructions for moving data.
Included is a new target generic-neon that will use neon instructions
on 64 bit platforms where appropriate.

Change-Id: Iaf71b768780aa9240a24539cd87666ca9298e4c6
2014-05-09 11:29:37 -07:00
Elliott Hughes
df3aa079cc am 55b4c8a4: Merge "Hide the __bionic_clone and __bionic_clone_entry implementation details."
* commit '55b4c8a4a15723f7c5f68b9ab167fbdea0c4e610':
  Hide the __bionic_clone and __bionic_clone_entry implementation details.
2014-05-09 16:18:37 +00:00
Elliott Hughes
55b4c8a4a1 Merge "Hide the __bionic_clone and __bionic_clone_entry implementation details." 2014-05-09 16:13:52 +00:00
Elliott Hughes
5a61272b09 am adfc007d: Merge "Declare sincos/sincosf/sincosl in <math.h>."
* commit 'adfc007dbf936bd021d79ba2d2c360a3cfc77be9':
  Declare sincos/sincosf/sincosl in <math.h>.
2014-05-09 04:36:03 +00:00
Elliott Hughes
adfc007dbf Merge "Declare sincos/sincosf/sincosl in <math.h>." 2014-05-09 04:33:31 +00:00
Elliott Hughes
b4f2f28054 Declare sincos/sincosf/sincosl in <math.h>.
Change-Id: If7b98f98c7ab4d3d77d310be082bff64512d51a8
2014-05-08 21:19:12 -07:00
Elliott Hughes
954cf0d4e2 Hide the __bionic_clone and __bionic_clone_entry implementation details.
clone(2) is the public symbol.

Also switch a test from __bionic_clone to clone; testing public API
means the test now works on glibc too.

Change-Id: If59def26a00c3afadb8a6cf9442094c35a59ffde
2014-05-08 19:00:23 -07:00
Dmitriy Ivanov
3f357c72cd am 29d10e3d: Merge "Test dlopen with symlinked .so files"
* commit '29d10e3de8f5258fec25174eb5f55eb19577859e':
  Test dlopen with symlinked .so files
2014-05-09 00:56:07 +00:00
Dmitriy Ivanov
29d10e3de8 Merge "Test dlopen with symlinked .so files" 2014-05-09 00:52:08 +00:00
Elliott Hughes
c6854d5a34 am 170daa04: Merge "wchar_test.cpp: fix error between comparison signed and unsigned integer"
* commit '170daa042cb0ef3e5d7839f79d052a683b3c670f':
  wchar_test.cpp: fix error between comparison signed and unsigned integer
2014-05-08 23:56:46 +00:00
Elliott Hughes
170daa042c Merge "wchar_test.cpp: fix error between comparison signed and unsigned integer" 2014-05-08 23:52:59 +00:00
Dmitriy Ivanov
7db180919c Test dlopen with symlinked .so files
Bug: 9741592
Change-Id: I68c59d6f4e690136395c3dc3de13f99ce38de528
2014-05-08 14:28:34 -07:00
Dmitriy Ivanov
125a10b8e2 am b6964524: Merge "Remove support for non-PIE executables"
* commit 'b69645248887ddb88517b07c1617d390fdce9c9f':
  Remove support for non-PIE executables
2014-05-08 20:55:57 +00:00
Dmitriy Ivanov
b696452488 Merge "Remove support for non-PIE executables" 2014-05-08 20:52:10 +00:00
Nick Kralevich
2aebf5429b Remove support for non-PIE executables
Don't support the dynamic linker loading ET_EXEC executables. Only
support ET_DYN executables.

Bug: 14566672
Change-Id: Ia1f2bfffe7ea867c1cd62e67d7fd637c60c0728d
2014-05-08 13:17:17 -07:00
Yongqin Liu
a5c6b2ecb5 wchar_test.cpp: fix error between comparison signed and unsigned integer
when compile the cts package with aarch64 gcc4.9, will get following error:
bionic/tests/wchar_test.cpp:253:3: required from here
external/gtest/include/gtest/gtest.h:1448:16:
    error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]

this change fix it by using static_cast<wchar_t> as suggested by Calin Juravle

Change-Id: I7fb9506e7b84b8a12b9d003458d4f0e78554c3cd
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
2014-05-09 00:57:47 +08:00
Elliott Hughes
fae100f90f am a3ce6bdb: Merge "Fix LOG_ID_CRASH build failure."
* commit 'a3ce6bdb63cc1d657d9180269bf858af9fa685bf':
  Fix LOG_ID_CRASH build failure.
2014-05-08 00:18:13 +00:00
Elliott Hughes
a3ce6bdb63 Merge "Fix LOG_ID_CRASH build failure." 2014-05-08 00:13:26 +00:00
Elliott Hughes
ae0a62b014 Fix LOG_ID_CRASH build failure.
Change-Id: I66517e30c568d7f36f6bf6b1e4507ecf14f01226
2014-05-07 17:12:40 -07:00
Elliott Hughes
96fd4159ec am 1ee18d0e: Merge "Send bionic\'s fatal logging to the crash log."
* commit '1ee18d0eb047edda23987c28bc78b8f7e4c2db0a':
  Send bionic's fatal logging to the crash log.
2014-05-07 23:44:39 +00:00
Elliott Hughes
fe6eea18c3 am 3b968032: Merge "Add basic tests for fsync/fdatasync."
* commit '3b968032848426c12185fe1c0f20e5bc882ed388':
  Add basic tests for fsync/fdatasync.
2014-05-07 23:44:39 +00:00
Elliott Hughes
1ee18d0eb0 Merge "Send bionic's fatal logging to the crash log." 2014-05-07 23:40:28 +00:00
Elliott Hughes
3b96803284 Merge "Add basic tests for fsync/fdatasync." 2014-05-07 23:40:11 +00:00
Elliott Hughes
011101905d Send bionic's fatal logging to the crash log.
Bug: 14159417
Change-Id: I7aa986fb8e11660035221f9bb4fe0bc40ac36c58
2014-05-07 16:35:59 -07:00
Elliott Hughes
a62a28d1d9 Add basic tests for fsync/fdatasync.
Bug: 14613980
Change-Id: Ie8002c2a1abae07295b7bdb33772764767c03d37
2014-05-07 14:30:33 -07:00
Dmitriy Ivanov
7fb0b5d26d am f837cbdc: Merge "Add missing test for atexit test suite."
* commit 'f837cbdc27a0f024bdc9898177a8ac05817441a7':
  Add missing test for atexit test suite.
2014-05-07 20:52:47 +00:00
Dmitriy Ivanov
f837cbdc27 Merge "Add missing test for atexit test suite." 2014-05-07 20:49:00 +00:00
Elliott Hughes
b40f424353 am 8ec38997: Merge "Give bionic\'s __ANDROID_API__ a more reasonable value."
* commit '8ec38997ef44c12dc4cac0f19148a44ee70eba74':
  Give bionic's __ANDROID_API__ a more reasonable value.
2014-05-07 20:03:42 +00:00
Elliott Hughes
8ec38997ef Merge "Give bionic's __ANDROID_API__ a more reasonable value." 2014-05-07 19:58:21 +00:00
Elliott Hughes
4aa2e6a32a Give bionic's __ANDROID_API__ a more reasonable value.
This matches what frameworks/base does with Build.VERSION and means that
bionic's version number will always sort >= than any released version.
This should prevent confusion in code that builds both against bionic
and the NDK.

(Note that <sys/cdefs.h> drags this in, so it's always in the namespace.)

Bug: 14613709
Change-Id: I91fb745920e848a6b20f2f5797c0a7d6cde6c032
2014-05-07 12:57:51 -07:00
Dmitriy Ivanov
6396da98cb Add missing test for atexit test suite.
Change-Id: I3d14d7df1da53ccef534c106633593551ab6a7cb
2014-05-07 12:29:54 -07:00
Calin Juravle
b5f4106c85 am 837abf04: Merge "Fix bionic-unit-tests-glibc-run target"
* commit '837abf04667c29db178fd28f500537429a18be30':
  Fix bionic-unit-tests-glibc-run target
2014-05-07 19:10:08 +00:00
Calin Juravle
837abf0466 Merge "Fix bionic-unit-tests-glibc-run target" 2014-05-07 18:31:11 +00:00
Calin Juravle
0e9d7fccb9 Fix bionic-unit-tests-glibc-run target
Configure multilib for bionic-unit-tests-glibc-run target (the path to
the host executable was already patched to support multilib build but
the multilib itself wasn't configured).

Change-Id: If533fbdb19bc737e543cf85a0787505458f24579
2014-05-07 19:06:30 +01:00
Torne (Richard Coles)
551466e778 am 35cff760: Merge "Test that relro sharing actually saves memory."
* commit '35cff760dfc5d9d1432955503ffff02286ac20ef':
  Test that relro sharing actually saves memory.
2014-05-07 15:30:28 +00:00
Torne (Richard Coles)
35cff760df Merge "Test that relro sharing actually saves memory." 2014-05-07 15:25:44 +00:00
Calin Juravle
ed4e01f706 am e292875c: Merge "Reserve some space in sem_t for the future."
* commit 'e292875cf55265bea7f78049e31d50c15a3a34e0':
  Reserve some space in sem_t for the future.
2014-05-07 14:09:52 +00:00
Calin Juravle
c27870158a am b6c48b20: Merge "Allow for better utmp logging."
* commit 'b6c48b20e4aa9a0e0068980eb305dc522a680900':
  Allow for better utmp logging.
2014-05-07 14:09:52 +00:00
Calin Juravle
b742e82e90 am fc2af0ca: Merge "Fix ino_t and suseconds_t"
* commit 'fc2af0ca47cd5017838b495687784c82c080f9d2':
  Fix ino_t and suseconds_t
2014-05-07 14:09:50 +00:00
Calin Juravle
adf5e63aca am 764a8882: Merge "Leave more space for extensions in pthread_rwlockattr_t"
* commit '764a88821893f18d343d5a784a5b2047d4c11d88':
  Leave more space for extensions in pthread_rwlockattr_t
2014-05-07 14:09:49 +00:00
Calin Juravle
e292875cf5 Merge "Reserve some space in sem_t for the future." 2014-05-07 14:04:32 +00:00
Calin Juravle
b6c48b20e4 Merge "Allow for better utmp logging." 2014-05-07 14:04:22 +00:00
Calin Juravle
fc2af0ca47 Merge "Fix ino_t and suseconds_t" 2014-05-07 14:04:12 +00:00
Calin Juravle
764a888218 Merge "Leave more space for extensions in pthread_rwlockattr_t" 2014-05-07 14:04:01 +00:00
Elliott Hughes
1ecf763373 am 6ad9cd41: Merge "Change the interface for fatal logging."
* commit '6ad9cd41bc3ae27b8c8a1f6489d6ceb9921e6ad1':
  Change the interface for fatal logging.
2014-05-07 04:07:38 +00:00
Elliott Hughes
6ad9cd41bc Merge "Change the interface for fatal logging." 2014-05-07 04:04:28 +00:00
Elliott Hughes
c78368f04f Change the interface for fatal logging.
This more general interface lets liblog give us any fatal log message,
regardless of source. This means we can remove the special case for
LOG_ALWAYS_FATAL with a simpler scheme that automatically works for
the VM too.

Change-Id: Ia6dbf7c3dbabf223081bd5159294835d954bb067
2014-05-06 20:37:22 -07:00
Elliott Hughes
4a7afa4863 am e05df251: Merge "Fix a gethnamaddr.c warning that\'s already fixed upstream."
* commit 'e05df25145eda8ca59db5eb03cf5dbf8c7714870':
  Fix a gethnamaddr.c warning that's already fixed upstream.
2014-05-06 20:46:16 +00:00
Elliott Hughes
e05df25145 Merge "Fix a gethnamaddr.c warning that's already fixed upstream." 2014-05-06 20:42:10 +00:00
Elliott Hughes
856e6a35bf am 89ca3c5a: Merge "Sync with upstream OpenBSD wcsftime.c."
* commit '89ca3c5aec19b3fa9bdc9982e31c0516d6077797':
  Sync with upstream OpenBSD wcsftime.c.
2014-05-06 20:23:37 +00:00
Elliott Hughes
89ca3c5aec Merge "Sync with upstream OpenBSD wcsftime.c." 2014-05-06 20:21:03 +00:00
Elliott Hughes
3e5f0c9849 Fix a gethnamaddr.c warning that's already fixed upstream.
We're still way out of sync, but this cleans up a tiny corner.

Change-Id: I51e76601785bf351d6418841b56e08a900a84d82
2014-05-06 11:23:40 -07:00
Elliott Hughes
2716f3e805 Sync with upstream OpenBSD wcsftime.c.
They removed the code nobody wants rather than fix the ""/L"" mixup.
Even better!

Change-Id: Ib4333acf5e90d69586805a218d2894c5dffcb82f
2014-05-06 11:12:34 -07:00
Calin Juravle
6726862e9a Fix ino_t and suseconds_t
Align ino_t and suseconds_t definitions with kernel
and OpenBSD upstream.

Bug: 14583346
Bug: 12875898
Change-Id: I0d97c6b4fc85b261472575290e6f6f2df1c8a36a
2014-05-06 18:41:26 +01:00
Elliott Hughes
41d97fa15a am 100168ab: Merge "Fix <math.h> to quieten most of our warnings."
* commit '100168abff75f41c0179a77777f0aef622f7ed9f':
  Fix <math.h> to quieten most of our warnings.
2014-05-06 17:22:09 +00:00
Elliott Hughes
100168abff Merge "Fix <math.h> to quieten most of our warnings." 2014-05-06 17:18:16 +00:00
Calin Juravle
0686d5e26f Reserve some space in sem_t for the future.
Reserve 12 more bytes in sem_t to give room for future implementation
improvements. This gets us to a 16 bytes sem_t. Glibc uses 32 bytes (16
actual use + 16 reserved), while OpenBSD has 16 bytes (out of which 4
are for padding).

Bug: 14587103
Bug: 12875898
Change-Id: Id835cc5abf874c651e6b5ad5b8f29c9d6ab08d5a
2014-05-06 16:24:27 +01:00
Calin Juravle
7d8f303353 Allow for better utmp logging.
Increase (UT_NAMESIZE,UT_LINESIZE,UT_HOSTSIZE) to (32,32,256).

Nobody writes utmp on Android but it would be nice to be aligned
with others who use 32,32,256 (like glibc). If ever used it will produce
nicer logging. There is no consensus in BSDs for these values.

Bug: 14584341
Bug: 12875898

Change-Id: I94af10b982b8f9fcaea897c4cf968563f38403f9
2014-05-06 15:44:14 +01:00
Calin Juravle
c614147042 am 7b1a95bc: Merge "Add include guard to fileext.h"
* commit '7b1a95bc761c584d2654f6dc355830ff2e405655':
  Add include guard to fileext.h
2014-05-06 13:49:38 +00:00
Calin Juravle
7c435f2415 Leave more space for extensions in pthread_rwlockattr_t
Change pthread_rwlockattr_t from int to long. On LP64 this gives us more
room for extensibility since longs are 8 bytes. glibc also reserves 8
bytes for this.

Bug: 14582681
Bug: 12875898
Change-Id: I55d599be0fdbbf0cb55957ec0ea62ab042bdee94
2014-05-06 13:40:24 +01:00
Torne (Richard Coles)
2605261691 Test that relro sharing actually saves memory.
Spawn 20 child processes, have them all load the library, and compare
the total PSS used in the case where we use dlopen() and the case where
we use android_dlopen_ext() with relro sharing. We assume we will save
at least 10% of the memory; in practise this example saves 40% or more
so this should be a reasonable threshold.

Bug: 14299541
Change-Id: Idccf6b8b0eb137abae2200f1ce68fb76b3cbdd75
2014-05-06 11:38:53 +01:00
Torne (Richard Coles)
b9b75697fa am 9b5ee4aa: Merge "Handle empty relro segment or incorrectly sized file."
* commit '9b5ee4aa85cf55467eb9a749b6602f6f2ba1cfc6':
  Handle empty relro segment or incorrectly sized file.
2014-05-06 10:18:34 +00:00
Elliott Hughes
9a5a3e8e74 Fix <math.h> to quieten most of our warnings.
I've reported the wcsftime bug upstream, but we really just want to use -D
to ensure the buggy code isn't built. (I've also brought our strftime a bit
closer to upstream now we have the right define.)

I don't think upstream is likely to fix all their sign-compare and
uninitialized warnings, so let's just silence them.

As for libm, again upstream isn't likely to fix all their warnings, and
silencing those made the ones that were our fault stand out. I've fixed
our <math.h> to fix the warnings caused by our lack of definitions for
the non-imprecise long-double functions. I checked the C99 standard, and
all these functions are there.

Change-Id: Iee8e1182c1db375058fb2c451eceb212bab47a37
2014-05-05 21:19:47 -07:00
Elliott Hughes
e71e6a2e60 am 185dd72a: Merge "bionic: make epoll_event structure packed"
* commit '185dd72a2c487502717903065e46d14039f17826':
  bionic: make epoll_event structure packed
2014-05-06 02:54:13 +00:00
Elliott Hughes
e0cbc5da31 am 4356adc3: Merge "Remove the non-standard time64 stuff for LP64."
* commit '4356adc3f46707b2664576857d7f4d8d6b0a81e2':
  Remove the non-standard time64 stuff for LP64.
2014-05-06 01:56:43 +00:00
Elliott Hughes
48931ca1b0 am 629d892d: Merge "Update the NOTICE files and improve the script slightly."
* commit '629d892d0b5ec061b5260453d72fa54ab3d7ce37':
  Update the NOTICE files and improve the script slightly.
2014-05-05 23:27:30 +00:00
Elliott Hughes
9d586d85e5 am 6916166e: Merge "Sync with upstream OpenBSD."
* commit '6916166e108a0988dc6282bfae71f2746165fb47':
  Sync with upstream OpenBSD.
2014-05-05 22:13:36 +00:00
Elliott Hughes
bab07de0bc am ad534985: Merge "Disable %n in printf and vfwprintf."
* commit 'ad534985ec3e01d37d46c50caa562f6482f48347':
  Disable %n in printf and vfwprintf.
2014-05-05 21:51:55 +00:00
Elliott Hughes
d2943b60e2 am 8ec21d9d: Merge "Switch to current upstream OpenBSD wsetup.c."
* commit '8ec21d9ded4c05744b3f9388bf824a508d7c95c2':
  Switch to current upstream OpenBSD wsetup.c.
2014-05-05 21:36:59 +00:00
Dmitriy Ivanov
e9e4f08efb am 580b2469: Merge "Fixes for __cxa_finalize"
* commit '580b246917d58fafc757daaf097b6bd20b17970a':
  Fixes for __cxa_finalize
2014-05-05 21:09:09 +00:00
Elliott Hughes
23481495a3 am a334c1ec: Merge "Fix iswctype."
* commit 'a334c1ec135ec5c031635fd2a868ccf1125ff03a':
  Fix iswctype.
2014-05-04 03:28:38 +00:00
Elliott Hughes
d18a844c36 am 640b4a5a: Merge "Switch to current upstream OpenBSD fwrite.c."
* commit '640b4a5a64d39ad3c079d188dc74265373a35d8c':
  Switch to current upstream OpenBSD fwrite.c.
2014-05-04 03:23:55 +00:00
Dmitriy Ivanov
80893060dd am 2d822ebe: Merge "Disallow dlopen("egl/blah.so") on LP64"
* commit '2d822ebe7af5aea1f93b67753e56357ce601b5a9':
  Disallow dlopen("egl/blah.so") on LP64
2014-05-03 01:42:06 +00:00
Elliott Hughes
c01893cde2 am e987803c: Merge "Sync with current OpenBSD stdio."
* commit 'e987803c35b472f378f81a37beb162ac86e01503':
  Sync with current OpenBSD stdio.
2014-05-03 01:01:38 +00:00
Elliott Hughes
9abfd44b4c am d6ff0dce: Merge "Use the OpenBSD wcsftime."
* commit 'd6ff0dcef670abd070efc6ff75bfbf265128eb2e':
  Use the OpenBSD wcsftime.
2014-05-02 23:03:00 +00:00
Elliott Hughes
fb49002b41 am 790890fd: Merge "Fix wchar_t signedness problems found on x86-64."
* commit '790890fd5c896a098142e0783b10fa8246462249':
  Fix wchar_t signedness problems found on x86-64.
2014-05-02 02:33:19 +00:00
Elliott Hughes
156f77c3a0 am 296f17af: Merge "Fix wchar.cpp MIPS narrowing conversion build failure."
* commit '296f17af0a630550f980dab85363093e4be55eb0':
  Fix wchar.cpp MIPS narrowing conversion build failure.
2014-05-02 00:17:45 +00:00
Elliott Hughes
ba8c37f187 am 7da31910: Merge "Fix wchar.cpp signed/unsigned comparison build failure."
* commit '7da319106906ad236a0b4502cbafdd8dff7b8a39':
  Fix wchar.cpp signed/unsigned comparison build failure.
2014-05-01 23:56:03 +00:00
Elliott Hughes
745b023b4d am f0291ca6: Merge "Switch to a working UTF-8 mb/wc implementation."
* commit 'f0291ca6b7d0ef42a31ae76a18a99c81d6e6d345':
  Switch to a working UTF-8 mb/wc implementation.
2014-05-01 23:15:32 +00:00
Christopher Ferris
97ded7f2bc am cb475651: Merge "Add ability to run on host for x86/x86_64."
* commit 'cb475651e3270175a5e6667952069f3ae7e7645a':
  Add ability to run on host for x86/x86_64.
2014-05-01 21:07:01 +00:00
Christopher Ferris
24f724c446 am de54b90e: Merge "Modify hard-coded directory."
* commit 'de54b90ed573fdea390f8a06618374adbb32f18a':
  Modify hard-coded directory.
2014-05-01 20:22:29 +00:00
Elliott Hughes
d262350166 am 8979cfe1: Merge "Keep the kernel header scrubber\'s data structures in sync."
* commit '8979cfe14b619743dba0625a62abd2e2834434dc':
  Keep the kernel header scrubber's data structures in sync.
2014-05-01 17:29:57 +00:00
Elliott Hughes
4a41581af5 am 9fb53dd4: Merge "Make SIGRTMIN hide the real-time signals we use internally."
* commit '9fb53dd4dbaa7633c234d9da8417827fa3d3c32f':
  Make SIGRTMIN hide the real-time signals we use internally.
2014-04-30 18:32:28 +00:00
Elliott Hughes
db9d60940b am 2ae3f60c: Merge "Fix the CPU_*_S tests."
* commit '2ae3f60ca37ce01beba748bb6ffd02401a543721':
  Fix the CPU_*_S tests.
2014-04-30 18:32:28 +00:00
Calin Juravle
b55562dd89 am 77473e40: Merge "Fix cpu_set_t"
* commit '77473e408504a7e298816b4071cd6902065b03d8':
  Fix cpu_set_t
2014-04-30 16:10:57 +00:00
Dan Albert
a51f7153ea am 45667317: Merge "Adds quick_exit(3) and at_quick_exit(3) from freebsd"
* commit '4566731772f3121c7c9b47bb6de44d5a9123fc11':
  Adds quick_exit(3) and at_quick_exit(3) from freebsd
2014-04-30 15:42:45 +00:00
Calin Juravle
fb15c73f3c am d4ae59dc: Merge "Reserve space in mbstate to allow for proper wchar support"
* commit 'd4ae59dcf228cf602189c6d5e69fb65640b353e3':
  Reserve space in mbstate to allow for proper wchar support
2014-04-30 15:12:52 +00:00
Elliott Hughes
ff7dec44bd am 01933d92: Merge "Switch to OpenBSD stdio wide printf functions."
* commit '01933d921e9e2a36707dbb96dfc24073e8489912':
  Switch to OpenBSD stdio wide printf functions.
2014-04-30 15:12:45 +00:00
Elliott Hughes
608aa733a9 am 85e780d0: Merge "Switch to OpenBSD stdio wide get/put functions."
* commit '85e780d0557643a81c4a33b3bc5d3806ef9d78e3':
  Switch to OpenBSD stdio wide get/put functions.
2014-04-30 00:41:01 +00:00
Elliott Hughes
25009c3b02 am c19c8e6f: Merge "Switch to the OpenBSD implementations of the wide scanf functions."
* commit 'c19c8e6f7125984d04c9e4e05ac130b43d1cd13c':
  Switch to the OpenBSD implementations of the wide scanf functions.
2014-04-30 00:00:03 +00:00
Elliott Hughes
42f33234b0 am c6e563c8: Merge "Fix build (signed char issue)."
* commit 'c6e563c87a7d8329607bccbc5c4a61c4e1180507':
  Fix build (signed char issue).
2014-04-29 23:08:57 +00:00
Elliott Hughes
158486717e am 55cd8276: Merge "Switch to the OpenBSD wcsto* functions."
* commit '55cd82762f3173247dc7e0eae2826aa24d22213a':
  Switch to the OpenBSD wcsto* functions.
2014-04-29 22:36:13 +00:00
Bill Yi
7af263533d Merge klp-dev-plus-aosp into stage-aosp-master
Change-Id: I2790b6a42d674678713d01479287b78510c4bb52
2014-04-29 15:27:33 -07:00
Christopher Ferris
6c8f573830 am c8fc4ddc: Merge "Keep the symbol table in the shared libc."
* commit 'c8fc4ddc183060aa979185d5a6845f26beb1a733':
  Keep the symbol table in the shared libc.
2014-03-25 17:57:20 +00:00
Brian Carlstrom
b9b7805358 am f71c0e75: Merge "Add include of float.h for LDBL_MIN_EXP and LDBL_MANT_DIG"
* commit 'f71c0e75e0d041c80e4dc6900e2c2283e5d55ce2':
  Add include of float.h for LDBL_MIN_EXP and LDBL_MANT_DIG
2014-03-25 00:26:29 +00:00
Calin Juravle
8a9d5db263 am 989a80b7: Merge "Fix LP64 libm for 128-bit long doubles"
* commit '989a80b75014eff71600a6a4e1445e710c2f94b4':
  Fix LP64 libm for 128-bit long doubles
2014-03-24 12:33:41 +00:00
Calin Juravle
0839b2ba28 am 9e8a8dc1: Merge "Remove ALIGNBYTES and ALIGN from <sys/param.h>"
* commit '9e8a8dc18cb3162858feef2d4baaf3fa357aa3d2':
  Remove ALIGNBYTES and ALIGN from <sys/param.h>
2014-03-24 12:33:40 +00:00
Nick Kralevich
15a69298ef am 95c1abec: Merge "FORTIFY_SOURCE: don\'t define s?printf macros if already defined"
* commit '95c1abecc02b2a2f40b507e669b5bc17d4412bf9':
  FORTIFY_SOURCE: don't define s?printf macros if already defined
2014-03-22 18:05:43 +00:00
Chad Brubaker
836b490c76 resolved conflicts for merge of 081db840 to klp-dev-plus-aosp
Change-Id: I3696d19a42bfafe5ce137f3333751b85fb434a2a
2014-03-21 15:46:39 -07:00
Mark Salyzyn
508e255eff am cce6c380: Merge "libc: Thread IDs missing from logcat -v thread"
* commit 'cce6c380d7c9574f823f5e038c28c793fdb55c58':
  libc: Thread IDs missing from logcat -v thread
2014-03-21 20:16:58 +00:00
Christopher Ferris
fe0f7a7944 am 998d7b03: Merge "Fix deadlock in timer_delete."
* commit '998d7b030763e8da6ff04020eedab552857587d2':
  Fix deadlock in timer_delete.
2014-03-21 17:39:10 +00:00
Calin Juravle
1b3e9f45fa am 2cc58603: Merge "Added a test flag to bionic run-test targets."
* commit '2cc58603d5fd68ec582984318fb3c5f8865a186f':
  Added a test flag to bionic run-test targets.
2014-03-19 18:39:04 +00:00
Christopher Ferris
da6c5f7a71 am 849e162d: Merge "Use the float/double assert macros."
* commit '849e162d3bedc5ca61bdf15486268b253b9f4e93':
  Use the float/double assert macros.
2014-03-17 23:57:41 +00:00
Chad Brubaker
081db840be Allow overlap in resolv uid => DNS iface mapping
When multiple rules exist covering a given uid the one added most
recently will be used.

This allows us to handle the simultaneous tuns case where a new tun is
coming online for an already running VPN.

_resolv_clear_iface_for_uid_range now also takes the iface and removes
only that matching (iface, uid range) entry.

Bug: 12134439
Change-Id: I9b9cfcfae2f38c409022a8c76ccadad7e2babd78
2014-03-15 15:29:01 -07:00
Calin Juravle
38d61afd5b am f212bbf6: Merge "Update libm to the upstream head (2014.03.13)"
* commit 'f212bbf666b77777063a3a94a672bcae80b15253':
  Update libm to the upstream head (2014.03.13)
2014-03-14 11:03:53 +00:00
Elliott Hughes
62188636e2 am 143df89f: Merge "Clean up reentrancy cruft."
* commit '143df89f729f39f4286f12daaf9cacf5c4501357':
  Clean up reentrancy cruft.
2014-03-14 08:55:40 +00:00
Elliott Hughes
d17a7ea467 am d16100c1: Merge "Clean up <stdio.h> macros."
* commit 'd16100c1fb8a39215497243ecb12176e9688ef77':
  Clean up <stdio.h> macros.
2014-03-13 23:23:25 +00:00
Elliott Hughes
18fcb38d0f am 6ece7fc3: Merge "property: fix getting dirty serial value"
* commit '6ece7fc33a389ef9bcbe78a83a6633e4cb4e4743':
  property: fix getting dirty serial value
2014-03-13 23:18:58 +00:00
Elliott Hughes
a315d15493 am 01cd7885: Merge "Upgrade to current upstream scanf implementation."
* commit '01cd78854afe5707f0d5b2b8418de07a55f8fde4':
  Upgrade to current upstream scanf implementation.
2014-03-13 15:54:54 +00:00
Elliott Hughes
723a8eec1e am 0e79338d: Merge "Ensure we always have symbols for atof, strtof, strtold."
* commit '0e79338d12d1ca780efcd0720af92b0a70e55da8':
  Ensure we always have symbols for atof, strtof, strtold.
2014-03-13 15:54:52 +00:00
Mark Salyzyn
53ffaa39e7 am 56e1eebd: Merge "logd: default user space logger"
* commit '56e1eebd39be4830f309603b38e4b1118c544fb3':
  logd: default user space logger
2014-03-13 15:54:45 +00:00
Elliott Hughes
9760604e14 am eef2928f: Merge "Include what you use."
* commit 'eef2928f94ac6ff5659c6177785b47e6fcdd03a2':
  Include what you use.
2014-03-13 15:54:44 +00:00
Elliott Hughes
66b5dcaf1d am 2282e16d: Merge "Use [u]int32_t instead of __[u]int32_t in sys/types.h"
* commit '2282e16d76c6691968bd62a4c4bb3ecefabc98ca':
  Use [u]int32_t instead of __[u]int32_t in sys/types.h
2014-03-13 15:54:43 +00:00
Elliott Hughes
3accf088e8 am ef43a6fb: Merge "Clean up our termios implementation."
* commit 'ef43a6fb0e0c5fb1debd8db83a5b57749e8331fa':
  Clean up our termios implementation.
2014-03-13 15:47:13 +00:00
Elliott Hughes
40078c683a am 76b4f1a3: Merge "More stdio cleanup."
* commit '76b4f1a33caef09891114bf37562968ab627059a':
  More stdio cleanup.
2014-03-13 01:55:48 +00:00
Elliott Hughes
6facd4fd6f am 55f9710a: Merge "Reimplement clock(3) and switch to OpenBSD time(3)."
* commit '55f9710ac4843b4a5d2c8b03ade3d2bddd1fdf46':
  Reimplement clock(3) and switch to OpenBSD time(3).
2014-03-13 01:55:48 +00:00
Elliott Hughes
d47674b777 am 753e1399: Merge "Add a basic unit test for system(3)."
* commit '753e1399060c08072a8fb17eb297889a2ae987d0':
  Add a basic unit test for system(3).
2014-03-13 01:55:47 +00:00
Elliott Hughes
da1f2abfbe am dd8c7863: Merge "Add various benchmarks."
* commit 'dd8c7863c613290acaa8bc4b90af34f020e0bee3':
  Add various benchmarks.
2014-03-13 01:55:47 +00:00
Calin Juravle
ba3f904fbf am 5810bcf3: Merge "Sysconfig fixes"
* commit '5810bcf381e28e423a782af9bf53c05085b09926':
  Sysconfig fixes
2014-03-13 01:55:16 +00:00
Calin Juravle
f6028c31f6 am 40c31ade: Merge "Removed pthread_attr_getstackaddr/pthread_attr_setstackaddr"
* commit '40c31ade2c854ad61ab43bd5dbd66979efcea4c5':
  Removed pthread_attr_getstackaddr/pthread_attr_setstackaddr
2014-03-13 01:55:15 +00:00
Elliott Hughes
fee4263f0b am 10f6beb3: Merge "Add system/extras strftime and strptime tests."
* commit '10f6beb3eb46cb2488427f58dccdd7bbfab5a250':
  Add system/extras strftime and strptime tests.
2014-03-13 01:55:09 +00:00
Elliott Hughes
04f1c8caf6 am 2cd3490d: Merge "Take ownership of various simple syscall wrappers."
* commit '2cd3490d7bdb18e5051a3cc66e7d03635bbcbeaf':
  Take ownership of various simple syscall wrappers.
2014-03-13 01:55:02 +00:00
Elliott Hughes
b17983a199 am a3056591: Merge "Switch to NetBSD utmp.c."
* commit 'a3056591960f9d9f646135ee20804cc1a9e41106':
  Switch to NetBSD utmp.c.
2014-03-13 01:54:42 +00:00
Elliott Hughes
a78cda3f51 am ec674b4d: Merge "Switch to upstream FreeBSD ldexp.c."
* commit 'ec674b4d064d923818d0deba9f8378d13ff6451a':
  Switch to upstream FreeBSD ldexp.c.
2014-03-13 01:54:40 +00:00
Elliott Hughes
e3ff496aac am 21d9e58d: Merge "Rename the stack protector intermediate library."
* commit '21d9e58d01080c7494c639ed3bd9e6c805e022d8':
  Rename the stack protector intermediate library.
2014-03-13 01:54:40 +00:00
Elliott Hughes
14e57d3a2c am 7aef2746: Merge "Switch to OpenBSD wcscoll."
* commit '7aef27468ee7683a0ce436f5453e6eb6ca12103b':
  Switch to OpenBSD wcscoll.
2014-03-11 18:52:56 +00:00
Elliott Hughes
773ae55d5a am 321ecc4e: Merge "Remove non-standard memswap."
* commit '321ecc4eaf9d061905f009494b420a604e1d973e':
  Remove non-standard memswap.
2014-03-11 18:52:55 +00:00
Elliott Hughes
63bdd44207 am 638e7892: Merge "Upgrade to tzdata2014a."
* commit '638e7892c63c9d6968c0cf2e98ace89b9c5b2f26':
  Upgrade to tzdata2014a.
2014-03-11 18:52:50 +00:00
Calin Juravle
b44b279692 am 55b6ec3f: Merge "Update the NOTICE files"
* commit '55b6ec3f93e88633b22a6f295e14a5ab4902e63a':
  Update the NOTICE files
2014-03-11 18:52:10 +00:00
Calin Juravle
afdc5ba487 am 0bca08d6: Merge "Update res_debug.c to take into account changes to the nameser.h"
* commit '0bca08d69f4d68782f5a3e6cf16dc74997bcf277':
  Update res_debug.c to take into account changes to the nameser.h
2014-03-11 18:52:09 +00:00
Brian Carlstrom
c6a7c0e5c7 am cd50898a: Merge "Add includes for waitpid"
* commit 'cd50898ad11ad3157f22fac15802757a9b559822':
  Add includes for waitpid
2014-03-11 18:51:57 +00:00
Elliott Hughes
a07bfb13c2 am fd9e20d1: Merge "Fix pthread_detach for already-exited threads."
* commit 'fd9e20d10f946334955ca199b0178580d284e89f':
  Fix pthread_detach for already-exited threads.
2014-03-11 18:51:54 +00:00
Elliott Hughes
f4ed518ec4 am 333e2ae8: Merge "Add si_timerid to <signal.h>."
* commit '333e2ae87dac85d6420786e9e12ffd7ea84dae38':
  Add si_timerid to <signal.h>.
2014-03-11 18:51:50 +00:00
Elliott Hughes
c735686350 am 4d46c940: Merge "Rewrite the POSIX timer functions."
* commit '4d46c940315af2d93efb44e751b69ea6880a5d65':
  Rewrite the POSIX timer functions.
2014-03-11 18:51:49 +00:00
Calin Juravle
d7a269ccee am b145b5ef: Merge "Fix broken pointer overflow check ns_name_unpack()"
* commit 'b145b5ef7c91ec76e4dc8450f70b7af80873b46e':
  Fix broken pointer overflow check ns_name_unpack()
2014-03-11 18:42:23 +00:00
Calin Juravle
945a6776d2 am d9ba757e: Merge "Sync up nameser with upstream(2014.03.05)"
* commit 'd9ba757ef4546ef931cfa2fff4e206b36c955ead':
  Sync up nameser with upstream(2014.03.05)
2014-03-11 18:42:22 +00:00
Elliott Hughes
ba9361da04 am d40eb159: Merge "Fix some pthread symbols build as C++ symbol under x64 lunch."
* commit 'd40eb1594dff0103247292967f8a801ef8c0ff12':
  Fix some pthread symbols build as C++ symbol under x64 lunch.
2014-03-11 18:42:00 +00:00
Elliott Hughes
61215e817c am 087dbc6b: Merge "Bring the generate-NOTICE script up to date."
* commit '087dbc6bb789dc549d8f71ea820e6fc7e69d99d2':
  Bring the generate-NOTICE script up to date.
2014-03-11 18:41:57 +00:00
Elliott Hughes
cf445b4658 am dec5bacf: Merge "Update the NOTICE files."
* commit 'dec5bacf1481a0e6b0ae0078933dbfb8953b7d19':
  Update the NOTICE files.
2014-03-11 18:41:56 +00:00
Elliott Hughes
60674e0d56 am e7ea9363: Merge "Add ARMv8 optimized string handling functions based on cortex-strings"
* commit 'e7ea9363cb30d5c36c9333162c11b1e7b4f302b6':
  Add ARMv8 optimized string handling functions based on cortex-strings
2014-03-11 18:41:56 +00:00
Mark Salyzyn
60f4f6a0c9 am 68a651e7: Merge "libc: libc_logging 64bit compile issue"
* commit '68a651e7162b922a2916da524ef9706276640752':
  libc: libc_logging 64bit compile issue
2014-03-11 18:30:06 +00:00
Narayan Kamath
6214115f29 am 48d145c1: Merge "Stop defining HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC."
* commit '48d145c1ced299525ca766afd2aa34725bef5301':
  Stop defining HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC.
2014-03-11 18:29:44 +00:00
Elliott Hughes
33c9438692 am bef50164: Merge "Remove dead NULL checks from pthread code."
* commit 'bef5016491eed41521f514d5c5528e2274689948':
  Remove dead NULL checks from pthread code.
2014-03-11 18:29:15 +00:00
Elliott Hughes
3a58c80e94 am a0bf9bde: Merge "Implement POSIX pthread_mutex_timedlock."
* commit 'a0bf9bdea24164db96ec1d5dfa2cd327942671b6':
  Implement POSIX pthread_mutex_timedlock.
2014-03-11 18:29:14 +00:00
Calin Juravle
6cd0c5c0b9 am 8e541b12: Merge "Moved nameser.h and namser_compat.h to public include dir"
* commit '8e541b12237f597c186820b9e18b059b620bef54':
  Moved nameser.h and namser_compat.h to public include dir
2014-03-11 18:29:12 +00:00
Calin Juravle
b87bb7bf00 am 4a46a689: Merge "Moved private dns header to their own dir."
* commit '4a46a68942d180e28c3e87f08359351245b220b7':
  Moved private dns header to their own dir.
2014-03-11 18:29:11 +00:00
Calin Juravle
2a56e3d966 am 9f2d1bcd: Merge "Renamed the misleading libc/netbsd directory to libc/dns."
* commit '9f2d1bcd176cb4a6f2bc0cae3f3c786444383476':
  Renamed the misleading libc/netbsd directory to libc/dns.
2014-03-11 18:29:10 +00:00
Narayan Kamath
9ea22f84c0 am caaae7f2: Merge "Implement pthread_condattr_{get,set}clock."
* commit 'caaae7f2e9a89df1514ba06d13e9eb5a0f04e94c':
  Implement pthread_condattr_{get,set}clock.
2014-03-11 18:29:03 +00:00
Elliott Hughes
b7265cbf2b am 2c7c79e6: Merge "Switch to upstream alarm(3)."
* commit '2c7c79e6e5e730553281b6d42e734ee2c532a660':
  Switch to upstream alarm(3).
2014-03-11 18:28:56 +00:00
Mark Salyzyn
ec8cdeca84 am f33df6a6: Merge "libc: Make calls to new user-space logger (revisit)"
* commit 'f33df6a662934cd72a79195773d2745ae8f937d4':
  libc: Make calls to new user-space logger (revisit)
2014-03-11 18:28:34 +00:00
Elliott Hughes
f0d5704efe am dfeb42ed: Merge "If the kernel doesn\'t have MADV_MERGEABLE, stop asking for it."
* commit 'dfeb42ede69a0dbea5735aed5fddaee3f810801d':
  If the kernel doesn't have MADV_MERGEABLE, stop asking for it.
2014-03-11 18:28:33 +00:00
Elliott Hughes
a34529f0ba am 15e71cd7: Merge "Remove deprecated and unused constants from <sys/klog.h>."
* commit '15e71cd760c35a4eab09b850904581ebbdc9bee3':
  Remove deprecated and unused constants from <sys/klog.h>.
2014-03-11 18:28:28 +00:00
Elliott Hughes
823051bf9a am ddad384d: Merge "Fix build."
* commit 'ddad384dbf802bf258e19a8d18f5d9e9fba8f97b':
  Fix build.
2014-03-11 18:17:35 +00:00
Elliott Hughes
4f1e25f818 am 2ec592c3: Merge "Add recvmmsg and sendmmsg syscalls."
* commit '2ec592c338f5c5021f127e92212d156cd909c617':
  Add recvmmsg and sendmmsg syscalls.
2014-03-11 18:17:29 +00:00
Elliott Hughes
34290b15c9 am ddc8cc7a: Merge "Add getprogname/setprogname for BSD compatibility."
* commit 'ddc8cc7a68415acb0694f7015ea0dae70ea04550':
  Add getprogname/setprogname for BSD compatibility.
2014-03-11 18:17:28 +00:00
Calin Juravle
a364c434a5 am d51db86a: Merge "Fix locatime.c indentation after sync"
* commit 'd51db86aafb988aea04355f2b6a6c925d67e5976':
  Fix locatime.c indentation after sync
2014-03-11 18:17:09 +00:00
Calin Juravle
9a539ec998 am 4ab29a3e: Merge "Update tzcode to 2013i"
* commit '4ab29a3e4a797cff05a3a1a6fea3db5a800ac5ba':
  Update tzcode to 2013i
2014-03-11 18:17:09 +00:00
Elliott Hughes
71fa4d9f3f am e9db4a97: Merge "Vastly reduce the number of read(2)s done in tzload."
* commit 'e9db4a976f864ef180340fe37c58af93a03daf46':
  Vastly reduce the number of read(2)s done in tzload.
2014-03-11 18:17:06 +00:00
Elliott Hughes
2296c221a8 am e3345405: Merge "Fix a leak on error in tzload."
* commit 'e33454051677cd8953af558b67e525dda2231501':
  Fix a leak on error in tzload.
2014-03-11 18:16:47 +00:00
Calin Juravle
dfda57f804 am ad2cfe2f: Merge "Fix x86_64 build"
* commit 'ad2cfe2f231506aed955f7e168a25fe1a1040f9a':
  Fix x86_64 build
2014-03-11 18:16:33 +00:00
Elliott Hughes
8431db545e am 000ffd8a: Merge "Ensure that <fcntl.h> has the SYNC_FILE_RANGE_* constants."
* commit '000ffd8ab0b4112173ce319869f4111f08fbe975':
  Ensure that <fcntl.h> has the SYNC_FILE_RANGE_* constants.
2014-03-11 18:15:58 +00:00
Mark Salyzyn
3d8b2d7b1d am 3ba62f73: Merge "libc: Make calls to new user-space logger"
* commit '3ba62f733bdc39262a5a9927a6ebaa29a4f4aad4':
  libc: Make calls to new user-space logger
2014-03-11 18:15:57 +00:00
Calin Juravle
3c07baa92e am d4ee6b62: Merge "Fix mips build"
* commit 'd4ee6b62d77ccea61c4b43d82c63455920e221bc':
  Fix mips build
2014-03-11 18:08:36 +00:00
Calin Juravle
0423f33be9 am 35036961: Merge "Moved to a more openbsd-like fenv.h"
* commit '35036961f85945483b6b833b976d12e6a58c2313':
  Moved to a more openbsd-like fenv.h
2014-03-11 18:08:20 +00:00
Elliott Hughes
a10978da7c am 27c7dbee: Merge "Fix log_backtrace assertion failure caused by LP64 fix."
* commit '27c7dbeee6c5e0cee488ce5085cc0b8c5e0301bd':
  Fix log_backtrace assertion failure caused by LP64 fix.
2014-03-11 17:12:19 +00:00
Elliott Hughes
04443d4886 am 901553aa: Merge "Switch to current OpenBSD system.c."
* commit '901553aaf4960c4ab21c9a090919aee8be5e62ab':
  Switch to current OpenBSD system.c.
2014-03-11 17:12:18 +00:00
Elliott Hughes
7d50aa3dcf am c380385f: Merge "Fix LP64 builds after OpenBSD string changes."
* commit 'c380385f0b8826ab7c02429dd48b07670516f964':
  Fix LP64 builds after OpenBSD string changes.
2014-03-11 17:12:17 +00:00
Elliott Hughes
e79a5b698d am 5c7816f4: Merge "More OpenBSD cleanup (primarily string)."
* commit '5c7816f425cb70ca6920e816aba33ce3d691ef10':
  More OpenBSD cleanup (primarily string).
2014-03-11 17:12:14 +00:00
Calin Juravle
997a9aa262 am a92b57c7: Merge "Added ftw64, nftw64"
* commit 'a92b57c7f8230661d911f2fd6dd67a81e9a90cef':
  Added ftw64, nftw64
2014-03-11 00:53:04 +00:00
Calin Juravle
c7cf383d87 am 7c1efffc: Merge "Added mkstemp64"
* commit '7c1efffc249283b47309846abba8795f3fb91555':
  Added mkstemp64
2014-03-11 00:53:04 +00:00
Elliott Hughes
ba37563f93 am ba40a560: Merge "Remove <asm/page.h>."
* commit 'ba40a560176e6ea753d09a6a71343b81ea4c8c1e':
  Remove <asm/page.h>.
2014-03-11 00:52:52 +00:00
Narayan Kamath
2876ced494 am b26e4944: Merge "Fix 64-bit build."
* commit 'b26e4944e2a5bf4b7e33fa38fb17a3b76c7fe0f7':
  Fix 64-bit build.
2014-03-11 00:38:29 +00:00
Narayan Kamath
89ea99e1d7 am c6d96bb8: Merge "Move system_properties over to C++."
* commit 'c6d96bb8673a4f44d84f3beaa5ed4fec1484f0ad':
  Move system_properties over to C++.
2014-03-11 00:38:28 +00:00
Elliott Hughes
169d8f6845 am 04583ce9: Upgrade to tzdata2014a.
* commit '04583ce9b94d6f41f4c1e66939c4ca2ee41ff058':
  Upgrade to tzdata2014a.
2014-03-10 22:58:12 +00:00
Elliott Hughes
04583ce9b9 Upgrade to tzdata2014a.
From the release notes:

  Changes affecting near-future time stamps

    Turkey begins DST on 2014-03-31, not 03-30.  (Thanks to Faruk Pasin
    for the heads-up, and to Tim Parenti for simplifying the update.)

  Changes affecting past time stamps

    Fiji ended DST on 2014-01-19 at 02:00, not the previously-scheduled
    03:00.  (Thanks to Steffen Thorsen.)

    Ukraine switched from Moscow to Eastern European time on 1990-07-01
    (not 1992-01-01), and observed DST during the entire next winter.
    (Thanks to Vladimir in Moscow via Alois Treindl.)

    In 1988 Israel observed DST from 04-10 to 09-04, not 04-09 to
    09-03.  (Thanks to Avigdor Finkelstein.)

(cherry picked from commit 159b28eb46)

Bug: 13193205
Change-Id: I3d302039f7e057a97c9d307ce8d32efa056481ed
2014-03-10 15:23:02 -07:00
Elliott Hughes
565590c0d5 am 3572fbc8: Merge "Fix a typo in HACKING.txt."
* commit '3572fbc8cd01d90a7f0c65a15c79abf1ece144ef':
  Fix a typo in HACKING.txt.
2014-03-10 18:06:13 +00:00
Elliott Hughes
8bab37f155 am 9150dfb1: Merge "Clean up our OpenBSD usage."
* commit '9150dfb1c6928ceef228e640412c3653d5e87a10':
  Clean up our OpenBSD usage.
2014-03-10 18:06:11 +00:00
Calin Juravle
c25a920e95 am 90b01576: Merge "Fixed int fast types for LP64"
* commit '90b0157679a984f1829a72f8c642d17030aa7644':
  Fixed int fast types for LP64
2014-03-08 01:51:50 +00:00
Elliott Hughes
42afda7227 am e65055af: Merge "Stop asking GCC to cause trouble."
* commit 'e65055af112780623f372aca6a1f78d2b2acb34f':
  Stop asking GCC to cause trouble.
2014-03-07 23:19:18 +00:00
Elliott Hughes
74c946d42e am 26172fa4: Merge "Move the upstream-netbsd libc files into the correct directory."
* commit '26172fa401a4323c8c9b4063a59ab6d08ca617bf':
  Move the upstream-netbsd libc files into the correct directory.
2014-03-07 23:00:04 +00:00
Elliott Hughes
e600c51c0c am 8d0fe1c4: Merge "Remove two DNS files that weren\'t being built."
* commit '8d0fe1c49e83592372becc996accfe9d5948aa9b':
  Remove two DNS files that weren't being built.
2014-03-07 23:00:02 +00:00
Elliott Hughes
1fa1416bb8 am cb43f847: Merge "Unify our assembler macros."
* commit 'cb43f8474dafd7a4d3eb605d4a7c7f69ad7cef2e':
  Unify our assembler macros.
2014-03-07 23:00:02 +00:00
Elliott Hughes
60aa4222c4 am 22c6b7ff: Merge "Fix mips64 crt build."
* commit '22c6b7ffd36fe8b34b677eea94d00aef2624e4e8':
  Fix mips64 crt build.
2014-03-07 22:59:46 +00:00
Elliott Hughes
918b2aa34c am 6a686556: Merge "Remove useless _C_LABEL from our assembler source."
* commit '6a686556b9f112fdf02ce404d680306ab1d901be':
  Remove useless _C_LABEL from our assembler source.
2014-03-07 22:59:46 +00:00
Elliott Hughes
db6236ba23 am bfa2b6fc: Merge "Stop advertising an arm32-specific hack like it\'s a build system feature."
* commit 'bfa2b6fc6a09df9815773890db94d6a126565289':
  Stop advertising an arm32-specific hack like it's a build system feature.
2014-03-07 22:59:45 +00:00
Dmitriy Ivanov
b450e464d3 am 54d49ac7: Merge "Added script generating additions to libgcc_compat.c from linker errors"
* commit '54d49ac75b4b71f38eb154ab8e05f60b7c347a2b':
  Added script generating additions to libgcc_compat.c from linker errors
2014-03-07 22:59:45 +00:00
Elliott Hughes
6d04702970 am ca566b31: Merge "Don\'t explicitly list the tzcode files."
* commit 'ca566b31036704eb6cdde05a0bd9ee972d7a995d':
  Don't explicitly list the tzcode files.
2014-03-07 22:59:42 +00:00
Narayan Kamath
530e4359e2 am d9459525: Merge "Fix signbit / infinite / isinf / isnan unit tests."
* commit 'd9459525b4133e825bf95d03b06e695433c124bd':
  Fix signbit / infinite / isinf / isnan unit tests.
2014-03-07 19:41:17 +00:00
Elliott Hughes
42804637a0 am 75f04d10: Merge "Remove the useless _C_LABEL from generated system calls."
* commit '75f04d107695f17bc800024d03e03b602dc02ee1':
  Remove the useless _C_LABEL from generated system calls.
2014-03-07 19:41:10 +00:00
Elliott Hughes
3198715eb5 am fbaddda9: Merge "Linker writes to wrong memory location when processing DT_MIPS_RLD_MAP"
* commit 'fbaddda9f04fa504deb752bba819eb1fa5439baa':
  Linker writes to wrong memory location when processing DT_MIPS_RLD_MAP
2014-03-07 19:41:03 +00:00
Elliott Hughes
26e961eb0a am b69c0b53: Merge "Make mips/mips64 syscall stubs more like the other architectures."
* commit 'b69c0b532e4f6d32e7c43a7be02a27e0b02e75c3':
  Make mips/mips64 syscall stubs more like the other architectures.
2014-03-07 19:41:02 +00:00
Elliott Hughes
830b23a9f3 am 6db95a86: Merge "Top-level documentation about working on bionic."
* commit '6db95a869e5c57713632106878d854c7c0aff7a1':
  Top-level documentation about working on bionic.
2014-03-07 19:40:59 +00:00
Elliott Hughes
bc73c85f7a am e6c451f5: Merge "Make mips generated assembler more like the mips64 stuff."
* commit 'e6c451f5f2e17fccccedaa1c2a90d8d9ba0c1917':
  Make mips generated assembler more like the mips64 stuff.
2014-03-07 19:40:51 +00:00
Elliott Hughes
679b356d4d am 44ef37c1: Merge "Use uid_t and gid_t for st_uid and st_gid in struct stat."
* commit '44ef37c1b445e864068cdcd885ab3d7b17079ad3':
  Use uid_t and gid_t for st_uid and st_gid in struct stat.
2014-03-07 19:40:11 +00:00
Elliott Hughes
2bb7f7c9a2 am 24ef4779: Merge "Fix build by avoiding the _C_LABEL macro."
* commit '24ef4779eb47f23b8d4f4e678d677bd45a91373f':
  Fix build by avoiding the _C_LABEL macro.
2014-03-07 19:40:10 +00:00
Elliott Hughes
3d7a897b68 am 787c1f93: Merge "Add missing file from previous change."
* commit '787c1f937a915feefb767d0c6a15ddb70e6de933':
  Add missing file from previous change.
2014-03-07 19:40:08 +00:00
Elliott Hughes
73ddb94692 am b3602078: Merge "Implement some of the missing LFS64 support."
* commit 'b36020789ac860fcfbbeaf56d560926d8ee228f6':
  Implement some of the missing LFS64 support.
2014-03-07 19:40:05 +00:00
Elliott Hughes
1e56f06585 am 3623d806: Merge "Fix x86 build."
* commit '3623d80675e5321b92c2d88a7b7ec6bd998d81d5':
  Fix x86 build.
2014-03-07 19:39:57 +00:00
Elliott Hughes
9df798dcfc am ffe02668: Merge "bionic: fix __set_errno for arm64 syscalls that return a 64-bit value"
* commit 'ffe026680edaba268330bc67dd986d2c900ecfc7':
  bionic: fix __set_errno for arm64 syscalls that return a 64-bit value
2014-03-07 19:39:55 +00:00
Elliott Hughes
dd0222a1fe am 7f15e28d: Merge "Clean up warnings in libstdc++."
* commit '7f15e28dd4184015a2c990b6e45c33c35b251935':
  Clean up warnings in libstdc++.
2014-03-07 19:39:54 +00:00
Elliott Hughes
2f5ffde865 am cd6748cd: Merge "Clean up various warnings in bionic."
* commit 'cd6748cdd7bcab702fe0bf6de943eb832f4fb762':
  Clean up various warnings in bionic.
2014-03-07 19:39:53 +00:00
Elliott Hughes
0cc47451b8 am d4bc9ef8: Merge "Remove duplicate definitions of MIN and MAX."
* commit 'd4bc9ef83b36916d5e63c4c3e4a092381473ea52':
  Remove duplicate definitions of MIN and MAX.
2014-03-07 19:39:37 +00:00
Colin Cross
ec1152dded am 95b808c4: Merge "build linker and linker64 on 64-bit architectures"
* commit '95b808c4ae11ea5737fee63f7b61673483ea5e2d':
  build linker and linker64 on 64-bit architectures
2014-03-07 19:33:36 +00:00
Elliott Hughes
93a0c03463 am fadc8a77: Merge "Restore sys_signame for LP64."
* commit 'fadc8a7777ca304c8a7de066a94effd3a5471ee6':
  Restore sys_signame for LP64.
2014-03-07 02:30:04 +00:00
Elliott Hughes
33ca22ad98 am fc48e8cf: Merge "Remove unused variables not spotted by GCC."
* commit 'fc48e8cf28b80ce0f95e288eeee459b4cb932afa':
  Remove unused variables not spotted by GCC.
2014-03-07 02:30:00 +00:00
Elliott Hughes
b2321439aa am 7b3876e2: Merge "Clean up sys_signame and sys_siglist a little."
* commit '7b3876e2516fd55d61a48cb23a7080ea88b9617b':
  Clean up sys_signame and sys_siglist a little.
2014-03-07 02:29:59 +00:00
Ying Wang
0eef722ca8 am 9e572ca4: Merge "Fix missing args."
* commit '9e572ca4163e42bcd053df2cb8557e4b61ad064d':
  Fix missing args.
2014-03-07 02:29:54 +00:00
Ying Wang
116e2312c3 am c4c50b25: Merge "Reconfig libc\'s Android.mk to build for multilib"
* commit 'c4c50b25f805b48338f3e8fb9ac137e81c187706':
  Reconfig libc's Android.mk to build for multilib
2014-03-07 02:29:50 +00:00
Elliott Hughes
72dc7cd5fb am 819c132e: Merge "Fix NSIG."
* commit '819c132ebc18a458f651e6dacd75a0950269656b':
  Fix NSIG.
2014-03-07 02:29:17 +00:00
Elliott Hughes
ddfcbfb9ac am 022885e2: Merge "Clean up all the lint cpplint can find in the dynamic linker."
* commit '022885e2fad5ef9643e05d80c6f50a2a90bf3431':
  Clean up all the lint cpplint can find in the dynamic linker.
2014-03-07 02:27:33 +00:00
Elliott Hughes
8f0d531289 am 577fce01: Merge "[MIPS64] Dynamic linker"
* commit '577fce0108feda58296beacfbc0ada4a6d6afbc2':
  [MIPS64] Dynamic linker
2014-03-07 02:27:21 +00:00
Elliott Hughes
152058fe12 am c856baee: Merge "Build syscall stubs in their own library."
* commit 'c856baeeade96c167400f179a86d50c426e81788':
  Build syscall stubs in their own library.
2014-03-07 02:27:16 +00:00
Elliott Hughes
49c1ff9df3 am a206dde5: Merge "Clean up cacheflush."
* commit 'a206dde5bdf9b4d995bf578cc3b54fb8b85e02c5':
  Clean up cacheflush.
2014-03-07 02:26:59 +00:00
Elliott Hughes
72ef407406 am 71e4466b: Merge "Switch <elf.h> over to linux uapi under the covers."
* commit '71e4466b100359f36a29c8c0277888df6081a265':
  Switch <elf.h> over to linux uapi under the covers.
2014-03-07 02:26:30 +00:00
Elliott Hughes
cba61f7136 am eeb9a9f5: Merge "Fix <link.h>."
* commit 'eeb9a9f59a58a2f042e8f6fd1a4911ae92ac5493':
  Fix <link.h>.
2014-03-07 02:26:19 +00:00
Elliott Hughes
126e7fa706 am e74fc3a6: Merge "Fix socklen_t (on LP64 only)."
* commit 'e74fc3a64fe9296813e5bd867d0c66bd8213be6a':
  Fix socklen_t (on LP64 only).
2014-03-07 02:25:34 +00:00
Elliott Hughes
856e341fdd am c16a4532: Merge "Remove <sys/_types.h>."
* commit 'c16a4532917259fabc8018d681cdd1ad1b1b5e08':
  Remove <sys/_types.h>.
2014-03-07 02:25:28 +00:00
Christopher Ferris
e314bf20b6 am 4affcbf8: Merge "Make sure that the same tests are on all platforms."
* commit '4affcbf87769c43c4d03ecd60f902b0b6a6cb84a':
  Make sure that the same tests are on all platforms.
2014-03-07 02:25:05 +00:00
Elliott Hughes
a5200ae6f4 am 8a80a23c: Merge "[MIPS64] libc/libm support"
* commit '8a80a23c930a41b62cfa47bed362732ee5833bf0':
  [MIPS64] libc/libm support
2014-03-07 02:24:34 +00:00
Elliott Hughes
82b7800326 am 5036935c: Merge "[MIPS64] Add syscall related files"
* commit '5036935c41d9193cfbba606df2121cd4c6973116':
  [MIPS64] Add syscall related files
2014-03-07 02:24:32 +00:00
Elliott Hughes
0cafd712f0 am e163a398: Merge "Remove unused cruft from MIPS <machine/signal.h>."
* commit 'e163a3986aa7d1c67fe3274eb9204812be0a6245':
  Remove unused cruft from MIPS <machine/signal.h>.
2014-03-07 02:23:32 +00:00
Elliott Hughes
ad7ed5f776 am 375aaa3f: Merge "Kill <machine/_types.h>."
* commit '375aaa3f608d6089102b256f162e423638a16c47':
  Kill <machine/_types.h>.
2014-03-07 02:23:31 +00:00
Ying Wang
a3187f688e am 12e8b76e: Merge "Use arch-specific LOCAL_ variables to build libm."
* commit '12e8b76e5f799b2b8407bf354a9675577529d34b':
  Use arch-specific LOCAL_ variables to build libm.
2014-03-07 01:35:24 +00:00
Elliott Hughes
25a3ee43d9 am 53cc62c3: Merge "Add fallocate/fallocate64/posix_fallocate/posix_fallocate64."
* commit '53cc62c31bfb6c329299549b69fdadd2705f6497':
  Add fallocate/fallocate64/posix_fallocate/posix_fallocate64.
2014-03-07 01:35:22 +00:00
Elliott Hughes
ae85553d68 am a122c376: Merge "Use __inline__ for fortify."
* commit 'a122c376ef0737454a592cf44f50beabe154e9e3':
  Use __inline__ for fortify.
2014-03-07 01:35:19 +00:00
Arve Hjønnevåg
69aa18d973 am fb4da1e7: Merge "Regenerate binder header"
* commit 'fb4da1e7b749b4cf6843515517e839efa1ee24c7':
  Regenerate binder header
2014-03-07 01:34:26 +00:00
Elliott Hughes
91b5f5a0cf am ed29345c: Merge "Clean up debugger.cpp slightly."
* commit 'ed29345c22acec61e4ef8953baefc64dc750c812':
  Clean up debugger.cpp slightly.
2014-03-07 01:33:42 +00:00
Elliott Hughes
6266617af6 am 4939d6d8: Merge "LP64 binaries should talk to debuggerd64."
* commit '4939d6d8424d47e19823e5dfcfc5474e8a7e77b8':
  LP64 binaries should talk to debuggerd64.
2014-03-07 01:33:36 +00:00
Elliott Hughes
96e5f809a7 am 47ff6b9f: Merge "Add missing ucontext_t definition to bionic for arch-arm64."
* commit '47ff6b9faae7f1bde5deb4760982e7e6785955f2':
  Add missing ucontext_t definition to bionic for arch-arm64.
2014-03-07 01:33:09 +00:00
Elliott Hughes
a18b9b9ab3 am a14df4a9: Merge "[MIPS] SA_RESTORER support is not needed for MIPS"
* commit 'a14df4a98ad1c4018f63fea358dd30c7e6b51858':
  [MIPS] SA_RESTORER support is not needed for MIPS
2014-03-07 00:37:42 +00:00
Elliott Hughes
b97cc02146 am 07f84025: Merge "Make ARM <user.h> more glibc-compatible."
* commit '07f84025520a9530760a2f2535a1effde5ec51dd':
  Make ARM <user.h> more glibc-compatible.
2014-03-06 22:58:24 +00:00
Elliott Hughes
1e38be24f9 am 53a55c12: Merge "Add mips <sys/ucontext.h>."
* commit '53a55c121b458e4131e025f1bbe0e4e2b1b232f7':
  Add mips <sys/ucontext.h>.
2014-03-06 20:23:37 +00:00
Elliott Hughes
f40e9facbb am 807bbb75: Merge "Add arm <sys/ucontext.h>."
* commit '807bbb75f14543a72b3f745d35f2c97a92752cd0':
  Add arm <sys/ucontext.h>.
2014-03-06 20:23:35 +00:00
Elliott Hughes
f20e85811d am 8f355275: Merge "Add x86 <sys/ucontext.h>."
* commit '8f355275920f8be82f56e30087a57b1d5ce49771':
  Add x86 <sys/ucontext.h>.
2014-03-06 20:23:31 +00:00
Elliott Hughes
4619eaaab0 am 972c39c4: Merge "Add x86_64 ucontext.h for better compatibility"
* commit '972c39c4fee85c5c532eecac409a1384c76b2cc6':
  Add x86_64 ucontext.h for better compatibility
2014-03-06 20:23:29 +00:00
Robert Greenwalt
c5443e6e51 am abf91850: Merge "Fix dns searchdomain use in gethostbyname." into klp-dev
* commit 'abf91850f96858a286de268267ca5cf337ec9a3b':
  Fix dns searchdomain use in gethostbyname.
2014-03-05 18:35:18 +00:00
Robert Greenwalt
abf91850f9 Merge "Fix dns searchdomain use in gethostbyname." into klp-dev 2014-03-05 18:26:27 +00:00
Elliott Hughes
f27cc051ec am 806f3bd7: Upgrade to tzdata2013i.
* commit '806f3bd7aaec5b7444b1b218b69b3952386cb92f':
  Upgrade to tzdata2013i.
2014-03-04 18:22:45 +00:00
Elliott Hughes
806f3bd7aa Upgrade to tzdata2013i.
From the release notes:

  Changes affecting near-future time stamps:

    Jordan switches back to standard time at 00:00 on December 20, 2013.
    The 2006-2011 transition schedule is planned to resume in 2014.
    (Thanks to Steffen Thorsen.)

  Changes affecting past time stamps:

    In 2004, Cuba began DST on March 28, not April 4.
    (Thanks to Steffen Thorsen.)

Bug: 13193205
Change-Id: I8f26cc50f6b571804a18ff2113b4a47a22bc56dd
2014-02-25 22:47:29 +00:00
Elliott Hughes
12e3a5019a am 037b10d0: Merge "Fix pthread_test to work with gtest 1.7.0."
* commit '037b10d05a789eb57878127ee4d69db1008e8c80':
  Fix pthread_test to work with gtest 1.7.0.
2014-01-29 01:47:11 +00:00
Elliott Hughes
3bd75303f9 am c75e7726: Merge "Remove a __system_property_get call from the DNS code."
* commit 'c75e7726ea5167ea03c512c7c35117762548d93f':
  Remove a __system_property_get call from the DNS code.
2014-01-28 23:04:52 +00:00
Elliott Hughes
7055c72a98 am 4ea434e5: Merge "bionic: Change the type of soinfo\'s size to size_t"
* commit '4ea434e5d22c8e257de3ff517fdda1175917b3ec':
  bionic: Change the type of soinfo's size to size_t
2014-01-28 21:10:19 +00:00
Elliott Hughes
4bc229eb02 am 4449fe96: Merge "Fix 32-bit mmap/mmap64 handling of negative offsets."
* commit '4449fe9675671264746af4876bd959af8e9fee82':
  Fix 32-bit mmap/mmap64 handling of negative offsets.
2014-01-28 01:03:26 +00:00
Elliott Hughes
2d7f9616fd am 652dd519: Merge "Remove libthread_db from bionic."
* commit '652dd5196df87bdeef7bff452f1a4857a96e3133':
  Remove libthread_db from bionic.
2014-01-28 00:43:45 +00:00
Elliott Hughes
cbb439addb am ba0c668f: Merge "bionic: Do not use magic number for portability"
* commit 'ba0c668feca851fd52359bee4174a232f27697b4':
  bionic: Do not use magic number for portability
2014-01-27 14:57:53 -08:00
Elliott Hughes
f3ea791757 am 6f23ce36: Merge "Remove __STDC_FORMAT_MACROS and __STDC_LIMIT_MACROS guards (and fix SIZE_MAX for LP64)."
* commit '6f23ce36ce580da3c1419856c71d7426dd64748d':
  Remove __STDC_FORMAT_MACROS and __STDC_LIMIT_MACROS guards (and fix SIZE_MAX for LP64).
2014-01-24 17:30:03 -08:00
Ying Wang
2275047684 am b32cc032: Merge "Use arch-specific variable to set up the x86 ld flags."
* commit 'b32cc032030e7a9f50b28d6dba5a40a38e6e76cf':
  Use arch-specific variable to set up the x86 ld flags.
2014-01-24 16:55:33 -08:00
Ben Cheng
502284727b am 5acce960: Merge "Add all implicitly loaded symbols from libgcc.a into libgcc_compat.c."
* commit '5acce960f40f51107301398f9cadff680a634951':
  Add all implicitly loaded symbols from libgcc.a into libgcc_compat.c.
2014-01-24 16:19:39 -08:00
Colin Cross
353770042f am 513f83bb: Merge "bionic: rename aarch64 target to arm64"
* commit '513f83bb7f6961d60eb10d2ab14fb31fed190bce':
  bionic: rename aarch64 target to arm64
2014-01-24 12:38:53 -08:00
Ben Cheng
0661bbe257 am 69d242d2: Merge "Re-export libgcc\'s __aeabi_uidivmod and __popcount_tab"
* commit '69d242d21cb3c40f241eaf7aceecc27bfb9385fa':
  Re-export libgcc's __aeabi_uidivmod and __popcount_tab
2014-01-24 10:17:55 -08:00
Elliott Hughes
06d38ccda0 am 5b4884fa: Merge "Add "__noreturn" to assert and assert2"
* commit '5b4884fac90753c68d401de73036c2de919958eb':
  Add "__noreturn" to assert and assert2
2014-01-15 13:32:40 -08:00
Elliott Hughes
22d8bd9b93 am 12159420: Merge "Fix libdl build warnings, turn on -Werror."
* commit '12159420e1654f6896993eda39aea8b5e5586f80':
  Fix libdl build warnings, turn on -Werror.
2014-01-14 18:38:16 -08:00
Elliott Hughes
a17b7ba95d am c8d41263: Merge "Move _thread_created_hook to where it belongs."
* commit 'c8d412637a8f98418866a75525de2ad6f8b12b6e':
  Move _thread_created_hook to where it belongs.
2014-01-14 18:38:15 -08:00
Elliott Hughes
d0465f50aa am d971f729: Merge "Make it possible for code to query the dynamic linker\'s default search path."
* commit 'd971f7290529310df6f8d4ba8b3a30f629ba2946':
  Make it possible for code to query the dynamic linker's default search path.
2014-01-14 12:08:32 -08:00
Elliott Hughes
7e997388ba am b5e21103: Merge "AArch64: Use LDXR/STXR instead of LDAXR/STLXR for bionic_atomic_cmpxchg()"
* commit 'b5e211031b69963a5f72ff369c66dc325a03e740':
  AArch64: Use LDXR/STXR instead of LDAXR/STLXR for bionic_atomic_cmpxchg()
2014-01-13 17:06:31 -08:00
Elliott Hughes
490f1755d1 am ebc1c76d: Merge "Add -Bsymbolic to the ld flags when linking the dynamic linker."
* commit 'ebc1c76d77dd604f16126e66b2171e8ee6fa1d22':
  Add -Bsymbolic to the ld flags when linking the dynamic linker.
2014-01-13 13:42:55 -08:00
Elliott Hughes
a1595487fa am ae189740: Merge "Add some more headers."
* commit 'ae189740de6b03f06a06214122183a3774f5cb62':
  Add some more headers.
2014-01-10 15:42:44 -08:00
JP Abgrall
09a7356282 am f784f036: Merge "Add extra libc stubs for mntent related functions."
* commit 'f784f0365d0c491cba7e6081a072b28ad357fef6':
  Add extra libc stubs for mntent related functions.
2014-01-09 18:01:06 -08:00
Elliott Hughes
2872e74298 am 33c3e8d3: Merge "Add NT_PRSTATUS to <elf.h>."
* commit '33c3e8d3b2312be3a3eb9d2632c4a570969e1624':
  Add NT_PRSTATUS to <elf.h>.
2014-01-09 15:58:59 -08:00
Elliott Hughes
fce55ed319 am 8e6bf35a: Merge "Add <sgidefs.h>."
* commit '8e6bf35a16532f9e90ce85b0674a0ff19dbef557':
  Add <sgidefs.h>.
2014-01-09 14:31:31 -08:00
Elliott Hughes
ea7c0ea614 am d29c75f0: Merge "Fix x86 user_regs_struct."
* commit 'd29c75f0907f1ea57b37ddbec0a41d8739ece6d8':
  Fix x86 user_regs_struct.
2014-01-09 14:28:08 -08:00
Elliott Hughes
c63fe9fa49 am 6114ffb3: Merge "Add the glibc-compatible d_fileno."
* commit '6114ffb3e16c114c728c31b472263660e2d2210c':
  Add the glibc-compatible d_fileno.
2014-01-09 13:43:48 -08:00
Elliott Hughes
56d790fcee am c65cbf97: Merge "Fix <sys/resource.h>."
* commit 'c65cbf97d9769025ad83d6e7f4e7daa58a273a4c':
  Fix <sys/resource.h>.
2014-01-09 11:05:35 -08:00
Elliott Hughes
8c6c9801f1 am 8276d287: Merge "Our dirent is a dirent64."
* commit '8276d2875f64587e266567f5bb2c5e0c70ef0a5d':
  Our dirent is a dirent64.
2014-01-08 17:20:16 -08:00
Elliott Hughes
2ab8dd30ef am 66f473ef: Merge "Add <sys/reg.h>."
* commit '66f473ef3313a2af7b9639f134e107a804d1e164':
  Add <sys/reg.h>.
2014-01-08 17:20:15 -08:00
Elliott Hughes
548eddab41 am 8a6eec38: Merge "Fix x86_64 register names in <sys/user.h>."
* commit '8a6eec38eb19b5af317b57c15459f9786df83eba':
  Fix x86_64 register names in <sys/user.h>.
2014-01-08 16:30:17 -08:00
Elliott Hughes
60ff1387f4 am 5d5cc227: Merge "We shouldn\'t have a <sys/dirent.h> that\'s a subset of <dirent.h>."
* commit '5d5cc2273f7be6b3d9fe4e5787ab22bc137c811a':
  We shouldn't have a <sys/dirent.h> that's a subset of <dirent.h>.
2014-01-08 16:30:17 -08:00
Elliott Hughes
eac00eb72b am 4c8caf0a: Merge "<sched.h> should offer both __sched_priority and sched_priority."
* commit '4c8caf0ad39768e614fb4c1f5ef415aab223adb2':
  <sched.h> should offer both __sched_priority and sched_priority.
2014-01-07 18:45:48 -08:00
Elliott Hughes
4458a5a78a am 4faf76ca: Merge "<fcntl.h> should get you the POSIX_FADV_* constants."
* commit '4faf76ca114a11cd264b0f5907e517add4585b27':
  <fcntl.h> should get you the POSIX_FADV_* constants.
2014-01-07 18:45:48 -08:00
Elliott Hughes
82bbaf7e88 am bc4e135a: Merge "Add SWAP_FLAG_* constants to <sys/swap.h>."
* commit 'bc4e135a8ec0a72d07b2d74a082067e8e56c1f62':
  Add SWAP_FLAG_* constants to <sys/swap.h>.
2014-01-07 18:36:36 -08:00
Elliott Hughes
d2fe982bee am 1c1b8354: Merge "Define fsid_t as well as __fsid_t."
* commit '1c1b83549f8b96fec4cb7037cf595171909855c2':
  Define fsid_t as well as __fsid_t.
2014-01-07 18:16:44 -08:00
Elliott Hughes
654a26b8c4 am 27a4bb31: Merge "Regenerate the NOTICE files."
* commit '27a4bb319885f9ed218ebca02a92870582b35fd4':
  Regenerate the NOTICE files.
2014-01-07 13:52:39 -08:00
Christopher Ferris
292f4473e3 am 10cd709f: Merge "Add cfi directives to x86 syscalls."
* commit '10cd709ff92015a4c2306cdbd6e65260909bffb2':
  Add cfi directives to x86 syscalls.
2014-01-06 17:41:01 -08:00
Elliott Hughes
d7eb7dacd9 am 5f1322ce: Merge "Pass a valid stack pointer to __bionic_clone in pthread.__bionic_clone"
* commit '5f1322cecf5af4bedfb2d3cf857d18e73a233b9d':
  Pass a valid stack pointer to __bionic_clone in pthread.__bionic_clone
2014-01-06 15:45:32 -08:00
Elliott Hughes
ca63af9e81 am b235f8c8: Merge "Fix dev_t (for LP64)."
* commit 'b235f8c8773c08569a97b0ff7e4c709b216c8478':
  Fix dev_t (for LP64).
2014-01-06 12:41:36 -08:00
Elliott Hughes
7a0e89b61b am 8c8852f1: Merge "Add TCPOPT_* constants."
* commit '8c8852f163c1263e539ba64a41f1389fa487377a':
  Add TCPOPT_* constants.
2014-01-06 12:38:17 -08:00
Elliott Hughes
3fcc90c6c0 am c1c3f7d4: Merge "Remove as many hard-coded constants from the MIPS vfork.S as possible."
* commit 'c1c3f7d4468f02adbf8ced689d738386e42af773':
  Remove as many hard-coded constants from the MIPS vfork.S as possible.
2014-01-03 14:41:50 -08:00
Elliott Hughes
b8f2df91ca am 3b36564b: Merge "Use the MAX_ERRNO constant."
* commit '3b36564b18d83ec313fd2aa6d7f38576dea3f6b8':
  Use the MAX_ERRNO constant.
2014-01-02 16:30:24 -08:00
Elliott Hughes
a4c979e396 am 66d16619: Merge "Remove a hardcoded constant from aarch64\'s vfork."
* commit '66d166192e6b0e1091550e9f584e92521e375df7':
  Remove a hardcoded constant from aarch64's vfork.
2014-01-02 14:21:46 -08:00
Elliott Hughes
741d4023bb am 7b0c23f1: Merge "Clean up <sched.h>."
* commit '7b0c23f1ac5df8654e0790b9eb3bbfcbf36c0e5f':
  Clean up <sched.h>.
2014-01-02 13:50:41 -08:00
Elliott Hughes
bb184de241 am 17c9fe7d: Merge "Fix MIPS build."
* commit '17c9fe7d2f396294a09344a253b2a16ae400df14':
  Fix MIPS build.
2013-12-22 12:06:52 -08:00
Elliott Hughes
8e3bdee39c am 3b2f4142: Merge "Improve dynamic linker diagnostics for internal errors."
* commit '3b2f4142aa4f2892ecbea89a256b4f5fc94e777a':
  Improve dynamic linker diagnostics for internal errors.
2013-12-22 11:44:52 -08:00
Elliott Hughes
2f6f6c0b8e am 47033433: Merge "Remove the bogus exit status from _exit_with_stack_teardown."
* commit '470334333e2ad5119b72bb830c51c32852a77c6c':
  Remove the bogus exit status from _exit_with_stack_teardown.
2013-12-22 11:40:10 -08:00
Elliott Hughes
57c6a96939 am 6d929061: Merge "Fix MIPS build."
* commit '6d929061c36e7929c61c8e6331315b86fe86976f':
  Fix MIPS build.
2013-12-20 18:51:56 -08:00
Elliott Hughes
191c7e3e2a am 3fdb7355: Merge "Avoid sign extension in 32-bit mmap."
* commit '3fdb735590ed642420608dd7095c06de89d852b5':
  Avoid sign extension in 32-bit mmap.
2013-12-20 18:29:41 -08:00
Elliott Hughes
51166a7e6f am 434f97f6: Merge "Remove some old kernel header cruft not needed with uapi."
* commit '434f97f66aa64cd082f3f62fdd6422cad3132706':
  Remove some old kernel header cruft not needed with uapi.
2013-12-20 18:26:21 -08:00
Elliott Hughes
bc86e156cc am 22323f91: Merge "Fix aarch64 futex assembly routines."
* commit '22323f91b11b0fbaa0a101a75e116132028a5817':
  Fix aarch64 futex assembly routines.
2013-12-20 17:26:47 -08:00
Elliott Hughes
9f65022f8f am 026b6ab6: Merge "Allocate additional space on stack for indirect syscall"
* commit '026b6ab6d5f0d8fca5cdfab05727197626769dc2':
  Allocate additional space on stack for indirect syscall
2013-12-20 15:41:59 -08:00
Greg Hackmann
7089867771 am 5e26221a: Merge "Fix backwards compatible system property structure"
* commit '5e26221a1da6bc0f11819078e74f1f6e0b76f642':
  Fix backwards compatible system property structure
2013-12-20 14:00:26 -08:00
Elliott Hughes
7b0964b181 am 21955e54: Merge "Upgrade to tzdata2013i."
* commit '21955e5453de0b82c1ab25a3bb7314c249d73269':
  Upgrade to tzdata2013i.
2013-12-20 11:38:17 -08:00
Elliott Hughes
ddeca5832e am aa267685: Merge "Allow GCC-built fortified code to run on a clang-built bionic."
* commit 'aa267685c9da11502c4ec50f86f78a7075b6809c':
  Allow GCC-built fortified code to run on a clang-built bionic.
2013-12-19 21:23:09 -08:00
Elliott Hughes
543e5d5432 am ea23753e: Merge "Fix __isnanl on aarch64."
* commit 'ea23753ea0a4d07924d9605d9acb44f51787ddd7':
  Fix __isnanl on aarch64.
2013-12-19 18:09:23 -08:00
Elliott Hughes
c7295d7309 am a19a41b6: Merge "Fix struct stat for aarch64."
* commit 'a19a41b6b596654a1ae21c350957d874031b00b2':
  Fix struct stat for aarch64.
2013-12-19 17:52:35 -08:00
Elliott Hughes
b37569e32e am f85b9ac3: Merge "Don\'t force O_LARGEFILE on LP64."
* commit 'f85b9ac3ec4fbebc2792cf823e0e721543950352':
  Don't force O_LARGEFILE on LP64.
2013-12-19 17:49:12 -08:00
Ben Cheng
6517824f16 am f576472a: Merge "Add __popcountsi2 to the function compat list."
* commit 'f576472a144c20f307bfa05839eb25e7215ff67e':
  Add __popcountsi2 to the function compat list.
2013-12-19 16:49:31 -08:00
Elliott Hughes
1608659a45 am ed96db2a: Merge "Don\'t abort in stdio.getdelim_invalid and stdio.getline_invalid."
* commit 'ed96db2a4f2fe5683407c3571d037bb7325544da':
  Don't abort in stdio.getdelim_invalid and stdio.getline_invalid.
2013-12-19 15:42:06 -08:00
Elliott Hughes
61f0206504 am cf7a4a4f: Merge "Revert "Add C linkage for __open_2 and __openat_2.""
* commit 'cf7a4a4fda076ec76bb79fdbd039665171e8cd75':
  Revert "Add C linkage for __open_2 and __openat_2."
2013-12-19 12:07:06 -08:00
Elliott Hughes
d520c95e45 am bb4f6dc2: Merge "ARM: Change dmb domain for bionic_atomic_barrier()"
* commit 'bb4f6dc2ec388dca4f3570164509420e1df91b35':
  ARM: Change dmb domain for bionic_atomic_barrier()
2013-12-19 11:45:37 -08:00
Elliott Hughes
2520a94e0b am 1afb375d: Merge "Fix aarch64 custom assembler now non-uapi is gone."
* commit '1afb375d30cadf5dfcb5dfe352527e2a1147c79f':
  Fix aarch64 custom assembler now non-uapi is gone.
2013-12-19 11:42:06 -08:00
Elliott Hughes
53fc123c69 am eb15a6c9: Merge "We actually have modfl."
* commit 'eb15a6c9cd35fa2a91d277c48390827a78435ab4':
  We actually have modfl.
2013-12-19 11:42:05 -08:00
Ben Cheng
e884a039db am dcc18ea4: Merge "Add C linkage for __open_2 and __openat_2."
* commit 'dcc18ea4c685230087618c12e8f20484b314596f':
  Add C linkage for __open_2 and __openat_2.
2013-12-19 11:05:15 -08:00
Christopher Ferris
5cdc141433 am 81ddd143: Merge "Remove the non-uapi kernel headers."
* commit '81ddd14381b09f171c006ebcbba15b3c1baf2a9f':
  Remove the non-uapi kernel headers.
2013-12-18 23:04:58 -08:00
Nick Kralevich
c162471275 am 25447aec: Merge "Clean up more recursive FORTIFY_SOURCE calls"
* commit '25447aec39c3c3d54b2defab6a5666c162db4f5a':
  Clean up more recursive FORTIFY_SOURCE calls
2013-12-18 21:11:40 -08:00
Nick Kralevich
58a2429b5b am 4063bb61: Merge "__strnlen_chk: avoid recursive strlen calls"
* commit '4063bb6147bd256ad455bd3bd063ef40aae8851d':
  __strnlen_chk: avoid recursive strlen calls
2013-12-18 18:57:18 -08:00
Elliott Hughes
7f4b939971 am 90bd36bc: Merge "Don\'t use weak aliases in libm."
* commit '90bd36bca66205b1c15f80b70036ff4d64198d32':
  Don't use weak aliases in libm.
2013-12-18 18:53:59 -08:00
Elliott Hughes
3761f45384 am f5897dcb: Merge "Fix linking of aarch64 static binaries."
* commit 'f5897dcb1d1dc493b6a2ba526a766da73bb9c1da':
  Fix linking of aarch64 static binaries.
2013-12-18 15:35:59 -08:00
Elliott Hughes
512ff2729a am 0b61567f: Merge "Fix the x86-64 int64_t/uint64_t."
* commit '0b61567f9fc5b54ffdb324bf21f8ca332b69a249':
  Fix the x86-64 int64_t/uint64_t.
2013-12-18 14:16:24 -08:00
Elliott Hughes
dce31dacfa am 717ad649: Merge "Don\'t use __kernel_ulong_t."
* commit '717ad6498c06e53812e406aa0c40738ef3e85801':
  Don't use __kernel_ulong_t.
2013-12-18 12:28:13 -08:00
Elliott Hughes
67c42d1df5 am 7649766b: Merge "Remove <machine/kernel.h>."
* commit '7649766b4569af52e6875828186fdf4924cadb3d':
  Remove <machine/kernel.h>.
2013-12-18 11:33:13 -08:00
Elliott Hughes
78ce7cbf35 am d2bcbf0d: Merge "Small style cleanup."
* commit 'd2bcbf0dbec86b8f27b1b3d939025098f134ea60':
  Small style cleanup.
2013-12-18 10:11:10 -08:00
Elliott Hughes
136e7f2b79 am 611b903c: Merge "Properly detect timeout in pthread_mutex_lock_timeout_np_impl"
* commit '611b903ca7ba9d604a9e2ebc1efa5a66f7ccc049':
  Properly detect timeout in pthread_mutex_lock_timeout_np_impl
2013-12-18 10:01:33 -08:00
Elliott Hughes
debc37b4fb am e00f4890: Merge "Move bionic over to GCC\'s \'warning\' attribute."
* commit 'e00f4890c71e9c9eb715faf2c7443732b2fdfae3':
  Move bionic over to GCC's 'warning' attribute.
2013-12-18 09:58:10 -08:00
Elliott Hughes
63d56a00e9 am 62e6fe58: Merge "Fix compilation of crtbegin.c and pthread_debug.cpp."
* commit '62e6fe58490da764efebffe71ebf6c647695802e':
  Fix compilation of crtbegin.c and pthread_debug.cpp.
2013-12-18 09:54:42 -08:00
Elliott Hughes
22013ac4f0 am f293b157: Merge "AArch64: Linker64 support for AArch64"
* commit 'f293b15728031432317791fb4a17a423545d37b3':
  AArch64: Linker64 support for AArch64
2013-12-17 15:11:57 -08:00
Elliott Hughes
a2573d956b am 2e3826c0: Merge "AArch64: Add fixes to bionic/tests"
* commit '2e3826c08171ead1647c800a0a6d9c333d335762':
  AArch64: Add fixes to bionic/tests
2013-12-16 17:45:38 -08:00
Elliott Hughes
5f0cc63a25 am 4e78ca63: Merge "AArch64: Initial AArch64 port of libm"
* commit '4e78ca63b8d53b96c590d3f1b29b0cfb65a651bc':
  AArch64: Initial AArch64 port of libm
2013-12-16 17:09:32 -08:00
Elliott Hughes
1a92f73999 am c858b567: Merge "AArch64: Add initial support for AArch64"
* commit 'c858b567ad20efa86652ffed7b7427a2c77709bd':
  AArch64: Add initial support for AArch64
2013-12-16 17:04:58 -08:00
Elliott Hughes
fa60474039 am db718023: Merge "AArch64: Add support for AArch64 atomic operations"
* commit 'db7180233f4c81799660011c968ebd97aaa6d4d7':
  AArch64: Add support for AArch64 atomic operations
2013-12-16 13:15:49 -08:00
Elliott Hughes
07fa38dad6 am 3937d415: Merge "Fix typo."
* commit '3937d41561206430373c4b3e0690d6f81b536412':
  Fix typo.
2013-12-16 13:08:44 -08:00
Elliott Hughes
e810137214 am 341b55a1: Merge "Clean up the pthread-only atomic stuff a little."
* commit '341b55a1e675396829aeb56a8771855d5ee6e18d':
  Clean up the pthread-only atomic stuff a little.
2013-12-16 10:25:47 -08:00
Elliott Hughes
6d4e8c1ea0 am 003be710: Merge "Clean up some ARMv4/ARMv5 cruft."
* commit '003be7104b5cb075632b0ff98d8ab4d3d182ed8c':
  Clean up some ARMv4/ARMv5 cruft.
2013-12-13 15:46:52 -08:00
Elliott Hughes
664b1d46d8 am 8623bf7b: Merge "Make <sys/param.h> more glibc-like."
* commit '8623bf7b4da802ee56618f575e92290499011df9':
  Make <sys/param.h> more glibc-like.
2013-12-12 15:44:39 -08:00
Christopher Ferris
7dfd8ae134 am 513d2770: Merge "Add ioprio.h."
* commit '513d2770deebee15fd2d90bf8228050ff71dba5b':
  Add ioprio.h.
2013-12-12 15:41:02 -08:00
Robert Greenwalt
5fddfb8915 Fix dns searchdomain use in gethostbyname.
Need to load search domain data before we attempt to use it.
This is a cherry pick of an AOSP change c11f6f0f39.

bug:6799630

Change-Id: I4ea1131f06ffdf4037fe67f82af5a0349469b609
2013-12-12 21:34:36 +00:00
Elliott Hughes
2894204db4 am 5aad083f: Merge "PTHREAD_KEYS_MAX cleanup."
* commit '5aad083f3de0bbcc0ffb1fecb688fbbe5abe5214':
  PTHREAD_KEYS_MAX cleanup.
2013-12-12 12:57:00 -08:00
Elliott Hughes
bce693ebe0 am 97e0c1dd: Merge "Fix debugging issues in vdso handling"
* commit '97e0c1dd5a7c5517c19770e47672e216a8b64c66':
  Fix debugging issues in vdso handling
2013-12-12 11:25:26 -08:00
Elliott Hughes
1336cd6d77 am 38fcbbb3: Merge "AArch64: Fix mmap64() definition for AArch64, X86_64"
* commit '38fcbbb35a40c46e96b4df10d670d1c132910854':
  AArch64: Fix mmap64() definition for AArch64, X86_64
2013-12-12 10:50:21 -08:00
Elliott Hughes
5362e8d232 am 7bd08153: Merge "Remove harmful attempts to be helpful in pthread_mutex functions."
* commit '7bd0815371c9bd803ee4ca0981b911b99efd2454':
  Remove harmful attempts to be helpful in pthread_mutex functions.
2013-12-11 15:51:48 -08:00
Elliott Hughes
200fcb26d2 am 73ef27cd: Merge "Clarify a comment."
* commit '73ef27cd0de0c6b7d4f6bc9c2250dbae3f0a88c3':
  Clarify a comment.
2013-12-11 14:01:22 -08:00
Robert Greenwalt
f2e4f8fd6f am 2e359155: Merge "Fix dns search domain use in gethostbyname."
* commit '2e3591557f4a382e441ee2d60614d616b5acb434':
  Fix dns search domain use in gethostbyname.
2013-12-11 11:38:22 -08:00
Colin Cross
f9599f306a am a84f88f0: Merge "bionic: move benchmarks out of tests directory"
* commit 'a84f88f0989e9446686ae76a53dc087ff5788fe6':
  bionic: move benchmarks out of tests directory
2013-12-11 11:09:55 -08:00
Christopher Ferris
381bf3f06a am b3959928: Merge "Do not clear tids on detached threads."
* commit 'b39599286d03db13f51a79e4cfe6644da0079f1a':
  Do not clear tids on detached threads.
2013-12-09 10:28:13 -08:00
The Android Open Source Project
3f69e994e4 am 33771653: Merge commit \'04b4339ad5396690329877df10fbe568bd4dd600\' into HEAD
* commit '3377165387d455d4cb56807a9c02cd2ece6cb24b':
2013-12-05 17:10:26 -08:00
Christopher Ferris
b679f65420 am 6afe8ab7: Merge "Add strcmp/memcmp testing."
* commit '6afe8ab7533937c7444756ae72dda547b9849fe2':
  Add strcmp/memcmp testing.
2013-12-04 13:05:14 -08:00
Christopher Ferris
df4e7ad88f am 0b4246b5: Merge "Add cfi directives to all arm assembly."
* commit '0b4246b561550252f51800d822ce9e03d9b5b033':
  Add cfi directives to all arm assembly.
2013-12-03 12:35:44 -08:00
Elliott Hughes
c566f35af4 am ab0b0cdf: Merge "Finish <sys/user.h>."
* commit 'ab0b0cdf1b07eb25ad89e0de08d4b3fd453602fe':
  Finish <sys/user.h>.
2013-11-27 08:12:24 -08:00
Elliott Hughes
3b9aba5549 am 98c910fb: Merge "Fix the order of arguments to sys_clone for x86."
* commit '98c910fb217a5c094e3101e57c52a618beaa23db':
  Fix the order of arguments to sys_clone for x86.
2013-11-27 08:12:24 -08:00
Elliott Hughes
cb88d966b0 am 6ae2f22d: Merge "Work around CLONE_SETTLS being weird on x86."
* commit '6ae2f22dc091844f2cf4a1de65d3ff6b225c2635':
  Work around CLONE_SETTLS being weird on x86.
2013-11-26 14:44:12 -08:00
Elliott Hughes
a1d1a46ef6 am 1c057607: Merge "Fix _exit_with_stack_teardown for x86."
* commit '1c057607d89229f5effaf1acf2ecde24ece41389':
  Fix _exit_with_stack_teardown for x86.
2013-11-26 14:01:08 -08:00
Elliott Hughes
6fcdba7a12 am a98fff25: Merge "Make <sys/timerfd.h> standalone."
* commit 'a98fff25c33b2cb697c6bf75b3d17612427b6db3':
  Make <sys/timerfd.h> standalone.
2013-11-25 14:07:26 -08:00
Elliott Hughes
aee38bc05f am 5a52bd34: Merge "Regenerate the bionic kernel headers to match external/kernel-headers."
* commit '5a52bd34f1b7e49e28b31dd2c186de8bdef47451':
  Regenerate the bionic kernel headers to match external/kernel-headers.
2013-11-25 14:01:39 -08:00
Christopher Ferris
cf8500fd43 am cda0c61d: am 14d6be45: Merge "Delete non-uapi headers."
* commit 'cda0c61dc7490236afb697ac50c900cffe2cb640':
  Delete non-uapi headers.
2013-11-24 00:24:43 -08:00
Christopher Ferris
76115fe9a0 am dd1d4f1c: am 985c3fbb: Merge "Move arm user.h definitions to sys/user.h."
* commit 'dd1d4f1cfd6c4c6eca27cc2f7f477e0518dc0924':
  Move arm user.h definitions to sys/user.h.
2013-11-23 12:36:55 -08:00
Christopher Ferris
30aebed98a am 038919d3: am 507f95e2: Merge "Update script to copy in extra generated files."
* commit '038919d37c01e52f5a976247f482daacfa206393':
  Update script to copy in extra generated files.
2013-11-23 12:36:51 -08:00
The Android Open Source Project
3f3788c339 am f00c938c: Merge commit \'811b0cdb2d6e4a697dbc63a678712759dd0db242\' into HEAD
* commit 'f00c938c7f5887981d724bf2dd9989ee0af08332':
2013-11-22 17:30:47 -08:00
Christopher Ferris
e3bc225413 am a626e4d8: am 26f0e54a: Merge "Script to grab uapi headers from android kernel."
* commit 'a626e4d8bc3d59cc328942fc30ffc04981b154ed':
  Script to grab uapi headers from android kernel.
2013-11-21 18:43:58 -08:00
Elliott Hughes
68a4187c4a am 50f6b836: am fa7b48bf: Merge "Regenerate uapi header files."
* commit '50f6b8363e1429316311450f2a3041040977d67c':
  Regenerate uapi header files.
2013-11-21 18:43:57 -08:00
Elliott Hughes
81768e18bb am 5e818b33: am 880d0e6c: Merge "Remove hidden __reboot from header"
* commit '5e818b331430c34c42259a1405a75cc4106a27d0':
  Remove hidden __reboot from header
2013-11-21 18:43:51 -08:00
Elliott Hughes
8acd5dd2f8 am 84336795: am eec57b37: Merge "Add support for the ternary operator to the header scrubber."
* commit '843367953f40ee84bcc53e08a60c82215303e1fb':
  Add support for the ternary operator to the header scrubber.
2013-11-21 18:43:48 -08:00
Elliott Hughes
5a2526ac62 am cb478f23: am d4143c8e: Merge "Fix useconds_t for LP64."
* commit 'cb478f23cc3765e3193beaf83fb35dd2d353d301':
  Fix useconds_t for LP64.
2013-11-21 18:43:47 -08:00
Elliott Hughes
03adedfc3c am a18a01f5: am 15a64948: Merge "Remove obsolete kernel/arch-mips headers."
* commit 'a18a01f553ce5350923c470c144dca87dfc8e992':
  Remove obsolete kernel/arch-mips headers.
2013-11-21 18:43:47 -08:00
Elliott Hughes
b749a010a3 am 8637bb53: am b135f6e5: Merge "Remove the unused arch-x86 and arch-x86-64 kernel headers."
* commit '8637bb5345bce20374ed345490d6de80cb874554':
  Remove the unused arch-x86 and arch-x86-64 kernel headers.
2013-11-21 18:43:46 -08:00
Elliott Hughes
a38dcc0210 am 70d37e34: am ca045a19: Merge "Switch to upstream sleep(3) and usleep(3)."
* commit '70d37e343aa0c8c771e01259377c98958fbfd3ee':
  Switch to upstream sleep(3) and usleep(3).
2013-11-21 17:15:03 -08:00
Elliott Hughes
7c88332701 am 556c7402: am 39bc7ecd: Merge "Fix <signal.h> for mips uapi."
* commit '556c740298a07e586c423480328231cfd50966b6':
  Fix <signal.h> for mips uapi.
2013-11-21 17:07:47 -08:00
Elliott Hughes
0b4ca7e3ce am 004ecb39: am db1dec1e: Merge "Clean up pthread_internal_t."
* commit '004ecb39e1cc0aed57b6185d4adf015b61b2d0c6':
  Clean up pthread_internal_t.
2013-11-21 10:12:26 -08:00
Christopher Ferris
47580cc017 am 3c6d1b88: am 2a34009f: Merge "Add .cfi_startproc/.cfi_endproc to ENTRY/END."
* commit '3c6d1b887692ecc7198e5292d49e3635b68fa95c':
  Add .cfi_startproc/.cfi_endproc to ENTRY/END.
2013-11-21 10:12:25 -08:00
Elliott Hughes
3eb08b0e29 am f4e03b03: am bf652a5f: Merge "Provide <sys/user.h>."
* commit 'f4e03b03656527caf88b9e582ab5ca19ae697700':
  Provide <sys/user.h>.
2013-11-21 10:12:24 -08:00
Elliott Hughes
0df47ece78 am d5a59aa7: am 1b2d214b: Merge "Clean up forking and cloning."
* commit 'd5a59aa767d4d87738b53995d73461be2778b9ee':
  Clean up forking and cloning.
2013-11-21 08:10:07 -08:00
Narayan Kamath
6e5fda6b6d am 22b8c53e: am 9d70ddc4: Merge "Add test case for 1^NaN"
* commit '22b8c53ef6fffdc83bd730563c30eb8ce93e46df':
  Add test case for 1^NaN
2013-11-21 08:10:04 -08:00
Elliott Hughes
67026112a0 am 8154f010: am 318e86ed: Merge "bionic: call stdio cleanup on exit"
* commit '8154f010a1c017b56ec7de3014e3ddf958f92536':
  bionic: call stdio cleanup on exit
2013-11-21 08:10:03 -08:00
Elliott Hughes
86ae0ff135 am 044d4655: am 303fe0cb: Merge "Fix pthread_join."
* commit '044d4655b7c06c9d5988f7dc604e59f76e098f5d':
  Fix pthread_join.
2013-11-21 08:10:02 -08:00
Christopher Ferris
37e5c6ba89 am 750668f5: am 862faa12: Merge "Pull in cleaned version.h header."
* commit '750668f5abd9813bea6f33cb84d941ae306afea8':
  Pull in cleaned version.h header.
2013-11-21 08:09:59 -08:00
Christopher Ferris
e4bc301aa5 am da12e64f: am be8344bb: Merge "Modify tests for another glibc difference."
* commit 'da12e64f1770deee4f5d0b4c41d5530a98b21073':
  Modify tests for another glibc difference.
2013-11-21 08:09:57 -08:00
Elliott Hughes
a8276f64b2 am 18368fc8: am f246c589: Merge "Clean up the pthread_create trampoline."
* commit '18368fc8e696c54adbd1537bf2d7c5c217210957':
  Clean up the pthread_create trampoline.
2013-11-21 08:09:46 -08:00
Christopher Ferris
b343d22110 am 862c32b4: am e39e3a77: Merge "Add new tests for memory/string routines."
* commit '862c32b4bd73f2348ebd9b1267e2880afcf3be1b':
  Add new tests for memory/string routines.
2013-11-21 08:09:44 -08:00
Elliott Hughes
00f25edcca am 5b524852: am 645d4269: Merge "Switch pthread_create over to __bionic_clone."
* commit '5b5248526b0295e54f51dcc2fec6c1d8e5a3b9e2':
  Switch pthread_create over to __bionic_clone.
2013-11-21 08:09:43 -08:00
Xiaokang, Qin
d97d1ca7d9 Add a flag control that PRIVATE libm can be chosen
Change-Id: I080456a2c45ac870965c25552c5821875568fe9b
Author: Xiaokang, Qin <xiaokang.qin@intel.com>
Signed-off-by: Xiaokang, Qin <xiaokang.qin@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 63396
2013-01-14 10:49:39 +08:00
2127 changed files with 106910 additions and 25219 deletions

View File

@@ -44,6 +44,10 @@
#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
# Switching to jemalloc requires deleting these files.
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libc_*)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libc_*)
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************

View File

@@ -4,40 +4,52 @@ Working on bionic
What are the big pieces of bionic?
----------------------------------
libc/ --- libc.so, libc.a
The C library. Stuff like fopen(3) and kill(2).
libm/ --- libm.so, libm.a
The math library. Traditionally Unix systems kept stuff like sin(3) and
cos(3) in a separate library to save space in the days before shared
#### libc/ --- libc.so, libc.a
The C library. Stuff like `fopen(3)` and `kill(2)`.
#### libm/ --- libm.so, libm.a
The math library. Traditionally Unix systems kept stuff like `sin(3)` and
`cos(3)` in a separate library to save space in the days before shared
libraries.
libdl/ --- libdl.so
The dynamic linker interface library. This is actually just a bunch of
stubs that the dynamic linker replaces with pointers to its own
implementation at runtime. This is where stuff like dlopen(3) lives.
libstdc++/ --- libstdc++.so
The C++ ABI support functions. The C++ compiler doesn't know how to
implement thread-safe static initialization and the like, so it just calls
functions that are supplied by the system. Stuff like __cxa_guard_acquire
and __cxa_pure_virtual live here.
linker/ --- /system/bin/linker and /system/bin/linker64
The dynamic linker. When you run a dynamically-linked executable, its ELF
file has a DT_INTERP entry that says "use the following program to start me".
On Android, that's either linker or linker64 (depending on whether it's a
#### libdl/ --- libdl.so
The dynamic linker interface library. This is actually just a bunch of stubs
that the dynamic linker replaces with pointers to its own implementation at
runtime. This is where stuff like `dlopen(3)` lives.
#### libstdc++/ --- libstdc++.so
The C++ ABI support functions. The C++ compiler doesn't know how to implement
thread-safe static initialization and the like, so it just calls functions that
are supplied by the system. Stuff like `__cxa_guard_acquire` and
`__cxa_pure_virtual` live here.
#### linker/ --- /system/bin/linker and /system/bin/linker64
The dynamic linker. When you run a dynamically-linked executable, its ELF file
has a `DT_INTERP` entry that says "use the following program to start me". On
Android, that's either `linker` or `linker64` (depending on whether it's a
32-bit or 64-bit executable). It's responsible for loading the ELF executable
into memory and resolving references to symbols (so that when your code tries
to jump to fopen(3), say, it lands in the right place).
into memory and resolving references to symbols (so that when your code tries to
jump to `fopen(3)`, say, it lands in the right place).
tests/ --- unit tests
The tests/ directory contains unit tests. Roughly arranged as one file per
#### tests/ --- unit tests
The `tests/` directory contains unit tests. Roughly arranged as one file per
publicly-exported header file.
benchmarks/ --- benchmarks
The benchmarks/ directory contains benchmarks.
#### benchmarks/ --- benchmarks
The `benchmarks/` directory contains benchmarks.
What's in libc/?
----------------
<pre>
libc/
arch-arm/
arch-arm64/
@@ -81,13 +93,6 @@ libc/
private/
# These are private header files meant for use within bionic itself.
stdio/
stdlib/
unistd/
# These are legacy files of unknown provenance. In the past, bionic was a
# mess of random versions of random files from all three of FreeBSD, NetBSD,
# and OpenBSD! We've been working to clean that up, but these directories
# are basically where all the stuff we haven't got to yet lives.
dns/
# Contains the DNS resolver (originates from NetBSD code).
@@ -114,6 +119,10 @@ libc/
# current upstream source in one of the upstream directories or by
# switching the file to C++ and cleaning it up.
stdio/
# These are legacy files of dubious provenance. We're working to clean
# this mess up, and this directory should disappear.
tools/
# Various tools used to maintain bionic.
@@ -124,6 +133,7 @@ libc/
zoneinfo/
# Android-format time zone data.
# See 'Updating tzdata' later.
</pre>
Adding system calls
@@ -163,3 +173,74 @@ This is fully automated:
1. Run update-tzdata.py.
Running the tests
-----------------
The tests are all built from the tests/ directory.
### Device tests
$ mma
$ adb sync
$ adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests32
$ adb shell \
/data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static32
# Only for 64-bit targets
$ adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests64
$ adb shell \
/data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static64
### Host tests
The host tests require that you have `lunch`ed either an x86 or x86_64 target.
$ mma
# 64-bit tests for 64-bit targets, 32-bit otherwise.
$ mm bionic-unit-tests-run-on-host
# Only exists for 64-bit targets.
$ mm bionic-unit-tests-run-on-host32
### Against glibc
As a way to check that our tests do in fact test the correct behavior (and not
just the behavior we think is correct), it is possible to run the tests against
the host's glibc.
$ mma
$ bionic-unit-tests-glibc32 # already in your path
$ bionic-unit-tests-glibc64
Gathering test coverage
-----------------------
For either host or target coverage, you must first:
* `$ export NATIVE_COVERAGE=true`
* Note that the build system is ignorant to this flag being toggled, i.e. if
you change this flag, you will have to manually rebuild bionic.
* Set `bionic_coverage=true` in `libc/Android.mk` and `libm/Android.mk`.
### Coverage from device tests
$ mma
$ adb sync
$ adb shell \
GCOV_PREFIX=/data/local/tmp/gcov \
GCOV_PREFIX_STRIP=`echo $ANDROID_BUILD_TOP | grep -o / | wc -l` \
/data/nativetest/bionic-unit-tests/bionic-unit-tests32
$ acov
`acov` will pull all coverage information from the device, push it to the right
directories, run `lcov`, and open the coverage report in your browser.
### Coverage from host tests
First, build and run the host tests as usual (see above).
$ croot
$ lcov -c -d $ANDROID_PRODUCT_OUT -o coverage.info
$ genhtml -o covreport coverage.info # or lcov --list coverage.info
The coverage report is now available at `covreport/index.html`.

View File

@@ -24,7 +24,7 @@ LOCAL_PATH := $(call my-dir)
benchmark_c_flags = \
-O2 \
-Wall -Wextra \
-Wall -Wextra -Wunused \
-Werror \
-fno-builtin \
-std=gnu++11 \
@@ -49,12 +49,11 @@ LOCAL_MODULE_STEM_64 := bionic-benchmarks64
LOCAL_MULTILIB := both
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_CFLAGS += $(benchmark_c_flags)
LOCAL_C_INCLUDES += external/stlport/stlport bionic/ bionic/libstdc++/include
LOCAL_SHARED_LIBRARIES += libstlport
LOCAL_SRC_FILES := $(benchmark_src_files)
LOCAL_CXX_STL := libc++
include $(BUILD_EXECUTABLE)
ifeq ($(HOST_OS)-$(HOST_ARCH),linux-x86)
ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
ifeq ($(TARGET_ARCH),x86)
LINKER = linker
NATIVE_SUFFIX=32

View File

@@ -25,13 +25,14 @@
#include <inttypes.h>
static int64_t gBytesProcessed;
static int64_t gBenchmarkTotalTimeNs;
static int64_t gBenchmarkStartTimeNs;
static int64_t g_bytes_processed;
static int64_t g_benchmark_total_time_ns;
static int64_t g_benchmark_start_time_ns;
typedef std::map<std::string, ::testing::Benchmark*> BenchmarkMap;
typedef BenchmarkMap::iterator BenchmarkMapIt;
static BenchmarkMap gBenchmarks;
static BenchmarkMap g_benchmarks;
static int g_name_column_width = 20;
static int Round(int n) {
int base = 1;
@@ -96,7 +97,7 @@ void Benchmark::Register(const char* name, void (*fn)(int), void (*fn_range)(int
exit(EXIT_FAILURE);
}
gBenchmarks.insert(std::make_pair(name, this));
g_benchmarks.insert(std::make_pair(name, this));
}
void Benchmark::Run() {
@@ -114,16 +115,16 @@ void Benchmark::Run() {
}
void Benchmark::RunRepeatedlyWithArg(int iterations, int arg) {
gBytesProcessed = 0;
gBenchmarkTotalTimeNs = 0;
gBenchmarkStartTimeNs = NanoTime();
g_bytes_processed = 0;
g_benchmark_total_time_ns = 0;
g_benchmark_start_time_ns = NanoTime();
if (fn_ != NULL) {
fn_(iterations);
} else {
fn_range_(iterations, arg);
}
if (gBenchmarkStartTimeNs != 0) {
gBenchmarkTotalTimeNs += NanoTime() - gBenchmarkStartTimeNs;
if (g_benchmark_start_time_ns != 0) {
g_benchmark_total_time_ns += NanoTime() - g_benchmark_start_time_ns;
}
}
@@ -131,12 +132,12 @@ void Benchmark::RunWithArg(int arg) {
// run once in case it's expensive
int iterations = 1;
RunRepeatedlyWithArg(iterations, arg);
while (gBenchmarkTotalTimeNs < 1e9 && iterations < 1e9) {
while (g_benchmark_total_time_ns < 1e9 && iterations < 1e9) {
int last = iterations;
if (gBenchmarkTotalTimeNs/iterations == 0) {
if (g_benchmark_total_time_ns/iterations == 0) {
iterations = 1e9;
} else {
iterations = 1e9 / (gBenchmarkTotalTimeNs/iterations);
iterations = 1e9 / (g_benchmark_total_time_ns/iterations);
}
iterations = std::max(last + 1, std::min(iterations + iterations/2, 100*last));
iterations = Round(iterations);
@@ -145,9 +146,9 @@ void Benchmark::RunWithArg(int arg) {
char throughput[100];
throughput[0] = '\0';
if (gBenchmarkTotalTimeNs > 0 && gBytesProcessed > 0) {
double mib_processed = static_cast<double>(gBytesProcessed)/1e6;
double seconds = static_cast<double>(gBenchmarkTotalTimeNs)/1e9;
if (g_benchmark_total_time_ns > 0 && g_bytes_processed > 0) {
double mib_processed = static_cast<double>(g_bytes_processed)/1e6;
double seconds = static_cast<double>(g_benchmark_total_time_ns)/1e9;
snprintf(throughput, sizeof(throughput), " %8.2f MiB/s", mib_processed/seconds);
}
@@ -164,42 +165,47 @@ void Benchmark::RunWithArg(int arg) {
snprintf(full_name, sizeof(full_name), "%s", name_);
}
printf("%-20s %10d %10" PRId64 "%s\n", full_name,
iterations, gBenchmarkTotalTimeNs/iterations, throughput);
printf("%-*s %10d %10" PRId64 "%s\n", g_name_column_width, full_name,
iterations, g_benchmark_total_time_ns/iterations, throughput);
fflush(stdout);
}
} // namespace testing
void SetBenchmarkBytesProcessed(int64_t x) {
gBytesProcessed = x;
g_bytes_processed = x;
}
void StopBenchmarkTiming() {
if (gBenchmarkStartTimeNs != 0) {
gBenchmarkTotalTimeNs += NanoTime() - gBenchmarkStartTimeNs;
if (g_benchmark_start_time_ns != 0) {
g_benchmark_total_time_ns += NanoTime() - g_benchmark_start_time_ns;
}
gBenchmarkStartTimeNs = 0;
g_benchmark_start_time_ns = 0;
}
void StartBenchmarkTiming() {
if (gBenchmarkStartTimeNs == 0) {
gBenchmarkStartTimeNs = NanoTime();
if (g_benchmark_start_time_ns == 0) {
g_benchmark_start_time_ns = NanoTime();
}
}
int main(int argc, char* argv[]) {
if (gBenchmarks.empty()) {
if (g_benchmarks.empty()) {
fprintf(stderr, "No benchmarks registered!\n");
exit(EXIT_FAILURE);
}
for (BenchmarkMapIt it = g_benchmarks.begin(); it != g_benchmarks.end(); ++it) {
int name_width = static_cast<int>(strlen(it->second->Name()));
g_name_column_width = std::max(g_name_column_width, name_width);
}
bool need_header = true;
for (BenchmarkMapIt it = gBenchmarks.begin(); it != gBenchmarks.end(); ++it) {
for (BenchmarkMapIt it = g_benchmarks.begin(); it != g_benchmarks.end(); ++it) {
::testing::Benchmark* b = it->second;
if (b->ShouldRun(argc, argv)) {
if (need_header) {
printf("%-20s %10s %10s\n", "", "iterations", "ns/op");
printf("%-*s %10s %10s\n", g_name_column_width, "", "iterations", "ns/op");
fflush(stdout);
need_header = false;
}
@@ -210,7 +216,7 @@ int main(int argc, char* argv[]) {
if (need_header) {
fprintf(stderr, "No matching benchmarks!\n");
fprintf(stderr, "Available benchmarks:\n");
for (BenchmarkMapIt it = gBenchmarks.begin(); it != gBenchmarks.end(); ++it) {
for (BenchmarkMapIt it = g_benchmarks.begin(); it != g_benchmarks.end(); ++it) {
fprintf(stderr, " %s\n", it->second->Name());
}
exit(EXIT_FAILURE);

View File

@@ -16,11 +16,12 @@
#include "benchmark.h"
#include <fenv.h>
#include <math.h>
// Avoid optimization.
double d;
double v;
volatile double d;
volatile double v;
static void BM_math_sqrt(int iters) {
StartBenchmarkTiming();
@@ -113,10 +114,49 @@ static void BM_math_isinf_ZERO(int iters) {
}
BENCHMARK(BM_math_isinf_ZERO);
static void BM_math_sin_fast(int iters) {
StartBenchmarkTiming();
d = 1.0;
for (int i = 0; i < iters; ++i) {
d += sin(d);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_math_sin_fast);
static void BM_math_sin_feupdateenv(int iters) {
StartBenchmarkTiming();
d = 1.0;
for (int i = 0; i < iters; ++i) {
fenv_t __libc_save_rm;
feholdexcept(&__libc_save_rm);
fesetround(FE_TONEAREST);
d += sin(d);
feupdateenv(&__libc_save_rm);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_math_sin_feupdateenv);
static void BM_math_sin_fesetenv(int iters) {
StartBenchmarkTiming();
d = 1.0;
for (int i = 0; i < iters; ++i) {
fenv_t __libc_save_rm;
feholdexcept(&__libc_save_rm);
fesetround(FE_TONEAREST);
d += sin(d);
fesetenv(&__libc_save_rm);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_math_sin_fesetenv);
static void BM_math_fpclassify_NORMAL(int iters) {
StartBenchmarkTiming();

View File

@@ -28,12 +28,14 @@
extern void *__system_property_area__;
// Do not exceed 512, that is about the largest number of properties
// that can be created with the current property area size.
#define TEST_NUM_PROPS \
Arg(1)->Arg(4)->Arg(16)->Arg(64)->Arg(128)->Arg(256)->Arg(512)->Arg(1024)
Arg(1)->Arg(4)->Arg(16)->Arg(64)->Arg(128)->Arg(256)->Arg(512)
struct LocalPropertyTestState {
LocalPropertyTestState(int nprops) : nprops(nprops), valid(false) {
static const char prop_name_chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_";
static const char prop_name_chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.";
const char* android_data = getenv("ANDROID_DATA");
if (android_data == NULL) {
@@ -66,18 +68,38 @@ struct LocalPropertyTestState {
srandom(nprops);
for (int i = 0; i < nprops; i++) {
name_lens[i] = random() % PROP_NAME_MAX;
// Make sure the name has at least 10 characters to make
// it very unlikely to generate the same random name.
name_lens[i] = (random() % (PROP_NAME_MAX - 10)) + 10;
names[i] = new char[PROP_NAME_MAX + 1];
size_t prop_name_len = sizeof(prop_name_chars) - 1;
for (int j = 0; j < name_lens[i]; j++) {
names[i][j] = prop_name_chars[random() % (sizeof(prop_name_chars) - 1)];
if (j == 0 || names[i][j-1] == '.' || j == name_lens[i] - 1) {
// Certain values are not allowed:
// - Don't start name with '.'
// - Don't allow '.' to appear twice in a row
// - Don't allow the name to end with '.'
// This assumes that '.' is the last character in the
// array so that decrementing the length by one removes
// the value from the possible values.
prop_name_len--;
}
names[i][j] = prop_name_chars[random() % prop_name_len];
}
names[i][name_lens[i]] = 0;
value_lens[i] = random() % PROP_VALUE_MAX;
// Make sure the value contains at least 1 character.
value_lens[i] = (random() % (PROP_VALUE_MAX - 1)) + 1;
values[i] = new char[PROP_VALUE_MAX];
for (int j = 0; j < value_lens[i]; j++) {
values[i][j] = prop_name_chars[random() % (sizeof(prop_name_chars) - 1)];
}
__system_property_add(names[i], name_lens[i], values[i], value_lens[i]);
if (__system_property_add(names[i], name_lens[i], values[i], value_lens[i]) < 0) {
printf("Failed to add a property, terminating...\n");
printf("%s = %.*s\n", names[i], value_lens[i], values[i]);
exit(1);
}
}
valid = true;
@@ -156,3 +178,56 @@ static void BM_property_find(int iters, int nprops)
StopBenchmarkTiming();
}
BENCHMARK(BM_property_find)->TEST_NUM_PROPS;
static void BM_property_read(int iters, int nprops)
{
StopBenchmarkTiming();
LocalPropertyTestState pa(nprops);
if (!pa.valid)
return;
srandom(iters * nprops);
const prop_info** pinfo = new const prop_info*[iters];
char propvalue[PROP_VALUE_MAX];
for (int i = 0; i < iters; i++) {
pinfo[i] = __system_property_find(pa.names[random() % nprops]);
}
StartBenchmarkTiming();
for (int i = 0; i < iters; i++) {
__system_property_read(pinfo[i], 0, propvalue);
}
StopBenchmarkTiming();
delete[] pinfo;
}
BENCHMARK(BM_property_read)->TEST_NUM_PROPS;
static void BM_property_serial(int iters, int nprops)
{
StopBenchmarkTiming();
LocalPropertyTestState pa(nprops);
if (!pa.valid)
return;
srandom(iters * nprops);
const prop_info** pinfo = new const prop_info*[iters];
for (int i = 0; i < iters; i++) {
pinfo[i] = __system_property_find(pa.names[random() % nprops]);
}
StartBenchmarkTiming();
for (int i = 0; i < iters; i++) {
__system_property_serial(pinfo[i]);
}
StopBenchmarkTiming();
delete[] pinfo;
}
BENCHMARK(BM_property_serial)->TEST_NUM_PROPS;

View File

@@ -18,11 +18,14 @@
#include <pthread.h>
// Stop GCC optimizing out our pure function.
/* Must not be static! */ pthread_t (*pthread_self_fp)() = pthread_self;
static void BM_pthread_self(int iters) {
StartBenchmarkTiming();
for (int i = 0; i < iters; ++i) {
pthread_self();
pthread_self_fp();
}
StopBenchmarkTiming();
@@ -102,3 +105,35 @@ static void BM_pthread_mutex_lock_RECURSIVE(int iters) {
StopBenchmarkTiming();
}
BENCHMARK(BM_pthread_mutex_lock_RECURSIVE);
static void BM_pthread_rw_lock_read(int iters) {
StopBenchmarkTiming();
pthread_rwlock_t lock;
pthread_rwlock_init(&lock, NULL);
StartBenchmarkTiming();
for (int i = 0; i < iters; ++i) {
pthread_rwlock_rdlock(&lock);
pthread_rwlock_unlock(&lock);
}
StopBenchmarkTiming();
pthread_rwlock_destroy(&lock);
}
BENCHMARK(BM_pthread_rw_lock_read);
static void BM_pthread_rw_lock_write(int iters) {
StopBenchmarkTiming();
pthread_rwlock_t lock;
pthread_rwlock_init(&lock, NULL);
StartBenchmarkTiming();
for (int i = 0; i < iters; ++i) {
pthread_rwlock_wrlock(&lock);
pthread_rwlock_unlock(&lock);
}
StopBenchmarkTiming();
pthread_rwlock_destroy(&lock);
}
BENCHMARK(BM_pthread_rw_lock_write);

View File

@@ -16,23 +16,64 @@
#include "benchmark.h"
#include <sys/syscall.h>
#include <time.h>
#if defined(__BIONIC__)
// Used by the horrible android.text.format.Time class, which is used by Calendar. http://b/8270865.
extern "C" void localtime_tz(const time_t* const timep, struct tm* tmp, const char* tz);
static void BM_time_localtime_tz(int iters) {
static void BM_time_clock_gettime(int iters) {
StartBenchmarkTiming();
time_t now(time(NULL));
tm broken_down_time;
timespec t;
for (int i = 0; i < iters; ++i) {
localtime_tz(&now, &broken_down_time, "Europe/Berlin");
clock_gettime(CLOCK_MONOTONIC, &t);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_time_localtime_tz);
#endif
BENCHMARK(BM_time_clock_gettime);
static void BM_time_clock_gettime_syscall(int iters) {
StartBenchmarkTiming();
timespec t;
for (int i = 0; i < iters; ++i) {
syscall(__NR_clock_gettime, CLOCK_MONOTONIC, &t);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_time_clock_gettime_syscall);
static void BM_time_gettimeofday(int iters) {
StartBenchmarkTiming();
timeval tv;
for (int i = 0; i < iters; ++i) {
gettimeofday(&tv, NULL);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_time_gettimeofday);
static void BM_time_gettimeofday_syscall(int iters) {
StartBenchmarkTiming();
timeval tv;
for (int i = 0; i < iters; ++i) {
syscall(__NR_gettimeofday, &tv, NULL);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_time_gettimeofday_syscall);
static void BM_time_time(int iters) {
StartBenchmarkTiming();
for (int i = 0; i < iters; ++i) {
time(NULL);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_time_time);

View File

@@ -16,6 +16,7 @@
#include "benchmark.h"
#include <sys/syscall.h>
#include <unistd.h>
static void BM_unistd_getpid(int iters) {
@@ -28,3 +29,39 @@ static void BM_unistd_getpid(int iters) {
StopBenchmarkTiming();
}
BENCHMARK(BM_unistd_getpid);
static void BM_unistd_getpid_syscall(int iters) {
StartBenchmarkTiming();
for (int i = 0; i < iters; ++i) {
syscall(__NR_getpid);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_unistd_getpid_syscall);
// Stop GCC optimizing out our pure function.
/* Must not be static! */ pid_t (*gettid_fp)() = gettid;
static void BM_unistd_gettid(int iters) {
StartBenchmarkTiming();
for (int i = 0; i < iters; ++i) {
gettid_fp();
}
StopBenchmarkTiming();
}
BENCHMARK(BM_unistd_gettid);
static void BM_unistd_gettid_syscall(int iters) {
StartBenchmarkTiming();
for (int i = 0; i < iters; ++i) {
syscall(__NR_gettid);
}
StopBenchmarkTiming();
}
BENCHMARK(BM_unistd_gettid_syscall);

View File

@@ -1,5 +1,7 @@
LOCAL_PATH := $(call my-dir)
bionic_coverage := false
# Make everything depend on any changes to included makefiles.
libc_common_additional_dependencies := $(LOCAL_PATH)/Android.mk
@@ -37,44 +39,28 @@ endif
# Define the common source files for all the libc instances
# =========================================================
libc_common_src_files := \
bionic/arc4random.c \
bionic/bindresvport.c \
bionic/daemon.c \
bionic/err.c \
bionic/ether_aton.c \
bionic/ether_ntoa.c \
bionic/fdprintf.c \
bionic/ftime.c \
bionic/fts.c \
bionic/getdtablesize.c \
bionic/gethostname.c \
bionic/getpriority.c \
bionic/getpt.c \
bionic/if_indextoname.c \
bionic/if_nametoindex.c \
bionic/initgroups.c \
bionic/ioctl.c \
bionic/isatty.c \
bionic/issetugid.c \
bionic/md5.c \
bionic/memmem.c \
bionic/pathconf.c \
bionic/ptsname.c \
bionic/ptsname_r.c \
bionic/pututline.c \
bionic/sched_cpualloc.c \
bionic/sched_cpucount.c \
bionic/semaphore.c \
bionic/sigblock.c \
bionic/siginterrupt.c \
bionic/sigsetmask.c \
bionic/system_properties_compat.c \
bionic/unlockpt.c \
stdio/findfp.c \
stdio/snprintf.c\
stdio/sprintf.c \
stdlib/atexit.c \
unistd/syslog.c \
stdio/stdio_ext.cpp \
# Fortify implementations of libc functions.
libc_common_src_files += \
@@ -98,18 +84,25 @@ libc_common_src_files += \
libc_bionic_src_files := \
bionic/abort.cpp \
bionic/accept.cpp \
bionic/accept4.cpp \
bionic/access.cpp \
bionic/assert.cpp \
bionic/atof.cpp \
bionic/__bionic_name_mem.cpp \
bionic/bionic_systrace.cpp \
bionic/bionic_time_conversions.cpp \
bionic/brk.cpp \
bionic/c16rtomb.cpp \
bionic/c32rtomb.cpp \
bionic/chmod.cpp \
bionic/chown.cpp \
bionic/clearenv.cpp \
bionic/clock.cpp \
bionic/clock_nanosleep.cpp \
bionic/clone.cpp \
bionic/cmsg_nxthdr.cpp \
bionic/__cmsg_nxthdr.cpp \
bionic/connect.cpp \
bionic/ctype.cpp \
bionic/dirent.cpp \
bionic/dup2.cpp \
bionic/epoll_create.cpp \
@@ -125,7 +118,11 @@ libc_bionic_src_files := \
bionic/futimens.cpp \
bionic/getauxval.cpp \
bionic/getcwd.cpp \
bionic/getentropy_linux.c \
bionic/getpgrp.cpp \
bionic/getpid.cpp \
bionic/gettid.cpp \
bionic/__gnu_basename.cpp \
bionic/inotify_init.cpp \
bionic/lchown.cpp \
bionic/lfs64_support.cpp \
@@ -137,13 +134,21 @@ libc_bionic_src_files := \
bionic/link.cpp \
bionic/locale.cpp \
bionic/lstat.cpp \
bionic/malloc_info.cpp \
bionic/mbrtoc16.cpp \
bionic/mbrtoc32.cpp \
bionic/mbstate.cpp \
bionic/mkdir.cpp \
bionic/mkfifo.cpp \
bionic/mknod.cpp \
bionic/mntent.cpp \
bionic/NetdClientDispatch.cpp \
bionic/open.cpp \
bionic/pathconf.cpp \
bionic/pause.cpp \
bionic/pipe.cpp \
bionic/poll.cpp \
bionic/posix_fadvise.cpp \
bionic/posix_fallocate.cpp \
bionic/posix_timers.cpp \
bionic/pthread_atfork.cpp \
@@ -155,6 +160,7 @@ libc_bionic_src_files := \
bionic/pthread_exit.cpp \
bionic/pthread_getcpuclockid.cpp \
bionic/pthread_getschedparam.cpp \
bionic/pthread_gettid_np.cpp \
bionic/pthread_internals.cpp \
bionic/pthread_join.cpp \
bionic/pthread_key.cpp \
@@ -167,7 +173,9 @@ libc_bionic_src_files := \
bionic/pthread_setschedparam.cpp \
bionic/pthread_sigmask.cpp \
bionic/ptrace.cpp \
bionic/pty.cpp \
bionic/raise.cpp \
bionic/rand.cpp \
bionic/readlink.cpp \
bionic/reboot.cpp \
bionic/recv.cpp \
@@ -176,6 +184,7 @@ libc_bionic_src_files := \
bionic/scandir.cpp \
bionic/sched_getaffinity.cpp \
bionic/sched_getcpu.cpp \
bionic/semaphore.cpp \
bionic/send.cpp \
bionic/setegid.cpp \
bionic/__set_errno.cpp \
@@ -193,39 +202,47 @@ libc_bionic_src_files := \
bionic/sigprocmask.cpp \
bionic/sigsuspend.cpp \
bionic/sigwait.cpp \
bionic/socket.cpp \
bionic/stat.cpp \
bionic/statvfs.cpp \
bionic/strcoll_l.cpp \
bionic/strerror.cpp \
bionic/strerror_r.cpp \
bionic/strftime_l.cpp \
bionic/strsignal.cpp \
bionic/strtold.cpp \
bionic/strtold_l.cpp \
bionic/strtoll_l.cpp \
bionic/strtoull_l.cpp \
bionic/strxfrm_l.cpp \
bionic/stubs.cpp \
bionic/symlink.cpp \
bionic/sysconf.cpp \
bionic/syslog.cpp \
bionic/sys_siglist.c \
bionic/sys_signame.c \
bionic/system_properties.cpp \
bionic/tdestroy.cpp \
bionic/termios.cpp \
bionic/thread_atexit.cpp \
bionic/thread_private.cpp \
bionic/tmpfile.cpp \
bionic/umount.cpp \
bionic/unlink.cpp \
bionic/utimes.cpp \
bionic/vdso.cpp \
bionic/wait.cpp \
bionic/wchar.cpp \
bionic/wctype.cpp \
libc_cxa_src_files := \
bionic/__cxa_guard.cpp \
bionic/__cxa_pure_virtual.cpp \
bionic/new.cpp \
libc_upstream_freebsd_src_files := \
upstream-freebsd/lib/libc/gen/ldexp.c \
upstream-freebsd/lib/libc/gen/sleep.c \
upstream-freebsd/lib/libc/gen/usleep.c \
upstream-freebsd/lib/libc/stdio/fclose.c \
upstream-freebsd/lib/libc/stdio/flags.c \
upstream-freebsd/lib/libc/stdio/fopen.c \
upstream-freebsd/lib/libc/stdio/makebuf.c \
upstream-freebsd/lib/libc/stdio/mktemp.c \
upstream-freebsd/lib/libc/stdio/setvbuf.c \
upstream-freebsd/lib/libc/stdlib/abs.c \
upstream-freebsd/lib/libc/stdlib/getopt_long.c \
upstream-freebsd/lib/libc/stdlib/imaxabs.c \
@@ -251,25 +268,18 @@ libc_upstream_freebsd_src_files := \
upstream-freebsd/lib/libc/string/wcstok.c \
upstream-freebsd/lib/libc/string/wmemchr.c \
upstream-freebsd/lib/libc/string/wmemcpy.c \
upstream-freebsd/lib/libc/string/wmemmove.c \
upstream-freebsd/lib/libc/string/wmemset.c \
libc_upstream_netbsd_src_files := \
upstream-netbsd/common/lib/libc/hash/sha1/sha1.c \
upstream-netbsd/common/lib/libc/inet/inet_addr.c \
upstream-netbsd/common/lib/libc/stdlib/random.c \
upstream-netbsd/lib/libc/gen/ftw.c \
upstream-netbsd/lib/libc/gen/nftw.c \
upstream-netbsd/lib/libc/gen/nice.c \
upstream-netbsd/lib/libc/gen/popen.c \
upstream-netbsd/lib/libc/gen/psignal.c \
upstream-netbsd/lib/libc/gen/setjmperr.c \
upstream-netbsd/lib/libc/gen/utime.c \
upstream-netbsd/lib/libc/gen/utmp.c \
upstream-netbsd/lib/libc/inet/inet_ntoa.c \
upstream-netbsd/lib/libc/inet/inet_ntop.c \
upstream-netbsd/lib/libc/inet/inet_pton.c \
upstream-netbsd/lib/libc/isc/ev_streams.c \
upstream-netbsd/lib/libc/isc/ev_timers.c \
upstream-netbsd/lib/libc/inet/nsap_addr.c \
upstream-netbsd/lib/libc/regex/regcomp.c \
upstream-netbsd/lib/libc/regex/regerror.c \
upstream-netbsd/lib/libc/regex/regexec.c \
@@ -278,26 +288,20 @@ libc_upstream_netbsd_src_files := \
upstream-netbsd/lib/libc/stdlib/div.c \
upstream-netbsd/lib/libc/stdlib/drand48.c \
upstream-netbsd/lib/libc/stdlib/erand48.c \
upstream-netbsd/lib/libc/stdlib/exit.c \
upstream-netbsd/lib/libc/stdlib/jrand48.c \
upstream-netbsd/lib/libc/stdlib/ldiv.c \
upstream-netbsd/lib/libc/stdlib/lldiv.c \
upstream-netbsd/lib/libc/stdlib/lrand48.c \
upstream-netbsd/lib/libc/stdlib/lsearch.c \
upstream-netbsd/lib/libc/stdlib/mrand48.c \
upstream-netbsd/lib/libc/stdlib/nrand48.c \
upstream-netbsd/lib/libc/stdlib/_rand48.c \
upstream-netbsd/lib/libc/stdlib/rand_r.c \
upstream-netbsd/lib/libc/stdlib/seed48.c \
upstream-netbsd/lib/libc/stdlib/srand48.c \
upstream-netbsd/lib/libc/stdlib/tdelete.c \
upstream-netbsd/lib/libc/stdlib/tfind.c \
upstream-netbsd/lib/libc/stdlib/tsearch.c \
upstream-netbsd/lib/libc/string/memccpy.c \
upstream-netbsd/lib/libc/string/strcasestr.c \
upstream-netbsd/lib/libc/string/strcoll.c \
upstream-netbsd/lib/libc/string/strxfrm.c \
upstream-netbsd/lib/libc/thread-stub/__isthreaded.c \
upstream-netbsd/lib/libc/unistd/killpg.c \
libc_upstream_openbsd_gdtoa_src_files := \
upstream-openbsd/android/gdtoa_support.cpp \
@@ -327,8 +331,14 @@ libc_upstream_openbsd_gdtoa_src_files_64 := \
upstream-openbsd/lib/libc/gdtoa/strtorQ.c \
libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/compat-43/killpg.c \
upstream-openbsd/lib/libc/crypt/arc4random.c \
upstream-openbsd/lib/libc/crypt/arc4random_uniform.c \
upstream-openbsd/lib/libc/gen/alarm.c \
upstream-openbsd/lib/libc/gen/ctype_.c \
upstream-openbsd/lib/libc/gen/daemon.c \
upstream-openbsd/lib/libc/gen/err.c \
upstream-openbsd/lib/libc/gen/errx.c \
upstream-openbsd/lib/libc/gen/exec.c \
upstream-openbsd/lib/libc/gen/fnmatch.c \
upstream-openbsd/lib/libc/gen/ftok.c \
@@ -338,6 +348,12 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/gen/time.c \
upstream-openbsd/lib/libc/gen/tolower_.c \
upstream-openbsd/lib/libc/gen/toupper_.c \
upstream-openbsd/lib/libc/gen/verr.c \
upstream-openbsd/lib/libc/gen/verrx.c \
upstream-openbsd/lib/libc/gen/vwarn.c \
upstream-openbsd/lib/libc/gen/vwarnx.c \
upstream-openbsd/lib/libc/gen/warn.c \
upstream-openbsd/lib/libc/gen/warnx.c \
upstream-openbsd/lib/libc/locale/btowc.c \
upstream-openbsd/lib/libc/locale/mbrlen.c \
upstream-openbsd/lib/libc/locale/mbstowcs.c \
@@ -356,8 +372,22 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/locale/wcsxfrm.c \
upstream-openbsd/lib/libc/locale/wctob.c \
upstream-openbsd/lib/libc/locale/wctomb.c \
upstream-openbsd/lib/libc/net/htonl.c \
upstream-openbsd/lib/libc/net/htons.c \
upstream-openbsd/lib/libc/net/inet_addr.c \
upstream-openbsd/lib/libc/net/inet_lnaof.c \
upstream-openbsd/lib/libc/net/inet_makeaddr.c \
upstream-openbsd/lib/libc/net/inet_netof.c \
upstream-openbsd/lib/libc/net/inet_network.c \
upstream-openbsd/lib/libc/net/inet_ntoa.c \
upstream-openbsd/lib/libc/net/inet_ntop.c \
upstream-openbsd/lib/libc/net/inet_pton.c \
upstream-openbsd/lib/libc/net/ntohl.c \
upstream-openbsd/lib/libc/net/ntohs.c \
upstream-openbsd/lib/libc/stdio/asprintf.c \
upstream-openbsd/lib/libc/stdio/clrerr.c \
upstream-openbsd/lib/libc/stdio/dprintf.c \
upstream-openbsd/lib/libc/stdio/fclose.c \
upstream-openbsd/lib/libc/stdio/fdopen.c \
upstream-openbsd/lib/libc/stdio/feof.c \
upstream-openbsd/lib/libc/stdio/ferror.c \
@@ -369,6 +399,10 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/stdio/fgetwc.c \
upstream-openbsd/lib/libc/stdio/fgetws.c \
upstream-openbsd/lib/libc/stdio/fileno.c \
upstream-openbsd/lib/libc/stdio/findfp.c \
upstream-openbsd/lib/libc/stdio/flags.c \
upstream-openbsd/lib/libc/stdio/fmemopen.c \
upstream-openbsd/lib/libc/stdio/fopen.c \
upstream-openbsd/lib/libc/stdio/fprintf.c \
upstream-openbsd/lib/libc/stdio/fpurge.c \
upstream-openbsd/lib/libc/stdio/fputc.c \
@@ -395,12 +429,15 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/stdio/gets.c \
upstream-openbsd/lib/libc/stdio/getwc.c \
upstream-openbsd/lib/libc/stdio/getwchar.c \
upstream-openbsd/lib/libc/stdio/makebuf.c \
upstream-openbsd/lib/libc/stdio/mktemp.c \
upstream-openbsd/lib/libc/stdio/open_memstream.c \
upstream-openbsd/lib/libc/stdio/open_wmemstream.c \
upstream-openbsd/lib/libc/stdio/perror.c \
upstream-openbsd/lib/libc/stdio/printf.c \
upstream-openbsd/lib/libc/stdio/putc.c \
upstream-openbsd/lib/libc/stdio/putchar.c \
upstream-openbsd/lib/libc/stdio/puts.c \
upstream-openbsd/lib/libc/stdio/putw.c \
upstream-openbsd/lib/libc/stdio/putwc.c \
upstream-openbsd/lib/libc/stdio/putwchar.c \
upstream-openbsd/lib/libc/stdio/refill.c \
@@ -410,6 +447,7 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/stdio/scanf.c \
upstream-openbsd/lib/libc/stdio/setbuf.c \
upstream-openbsd/lib/libc/stdio/setbuffer.c \
upstream-openbsd/lib/libc/stdio/setvbuf.c \
upstream-openbsd/lib/libc/stdio/sscanf.c \
upstream-openbsd/lib/libc/stdio/stdio.c \
upstream-openbsd/lib/libc/stdio/swprintf.c \
@@ -419,6 +457,7 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/stdio/ungetc.c \
upstream-openbsd/lib/libc/stdio/ungetwc.c \
upstream-openbsd/lib/libc/stdio/vasprintf.c \
upstream-openbsd/lib/libc/stdio/vdprintf.c \
upstream-openbsd/lib/libc/stdio/vfprintf.c \
upstream-openbsd/lib/libc/stdio/vfscanf.c \
upstream-openbsd/lib/libc/stdio/vfwprintf.c \
@@ -436,10 +475,15 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/stdio/wprintf.c \
upstream-openbsd/lib/libc/stdio/wscanf.c \
upstream-openbsd/lib/libc/stdio/wsetup.c \
upstream-openbsd/lib/libc/stdlib/atexit.c \
upstream-openbsd/lib/libc/stdlib/atoi.c \
upstream-openbsd/lib/libc/stdlib/atol.c \
upstream-openbsd/lib/libc/stdlib/atoll.c \
upstream-openbsd/lib/libc/stdlib/exit.c \
upstream-openbsd/lib/libc/stdlib/getenv.c \
upstream-openbsd/lib/libc/stdlib/insque.c \
upstream-openbsd/lib/libc/stdlib/lsearch.c \
upstream-openbsd/lib/libc/stdlib/remque.c \
upstream-openbsd/lib/libc/stdlib/setenv.c \
upstream-openbsd/lib/libc/stdlib/strtoimax.c \
upstream-openbsd/lib/libc/stdlib/strtol.c \
@@ -448,8 +492,8 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/stdlib/strtoull.c \
upstream-openbsd/lib/libc/stdlib/strtoumax.c \
upstream-openbsd/lib/libc/stdlib/system.c \
upstream-openbsd/lib/libc/string/stpcpy.c \
upstream-openbsd/lib/libc/string/stpncpy.c \
upstream-openbsd/lib/libc/stdlib/tfind.c \
upstream-openbsd/lib/libc/stdlib/tsearch.c \
upstream-openbsd/lib/libc/string/strcasecmp.c \
upstream-openbsd/lib/libc/string/strcspn.c \
upstream-openbsd/lib/libc/string/strdup.c \
@@ -461,7 +505,6 @@ libc_upstream_openbsd_src_files := \
upstream-openbsd/lib/libc/string/strtok.c \
upstream-openbsd/lib/libc/string/wcslcpy.c \
upstream-openbsd/lib/libc/string/wcsstr.c \
upstream-openbsd/lib/libc/string/wcswcs.c \
upstream-openbsd/lib/libc/string/wcswidth.c \
libc_arch_static_src_files := \
@@ -471,18 +514,37 @@ libc_arch_static_src_files := \
# ========================================================
libc_common_cflags := \
-D_LIBC=1 \
-Wall -Wextra \
-Wall -Wextra -Wunused \
ifneq ($(TARGET_USES_LOGD),false)
libc_common_cflags += -DTARGET_USES_LOGD
endif
use_clang := $(USE_CLANG_PLATFORM_BUILD)
ifeq ($(use_clang),)
use_clang := false
endif
# Try to catch typical 32-bit assumptions that break with 64-bit pointers.
libc_common_cflags += \
-Werror=pointer-to-int-cast \
-Werror=int-to-pointer-cast \
-Werror=type-limits \
-Werror \
ifeq ($(strip $(DEBUG_BIONIC_LIBC)),true)
libc_common_cflags += -DDEBUG
endif
ifeq ($(MALLOC_IMPL),dlmalloc)
libc_common_cflags += -DUSE_DLMALLOC
libc_malloc_src := bionic/dlmalloc.c
else
libc_common_cflags += -DUSE_JEMALLOC
libc_malloc_src := bionic/jemalloc_wrapper.cpp
libc_common_c_includes += external/jemalloc/include
endif
# To customize dlmalloc's alignment, set BOARD_MALLOC_ALIGNMENT in
# the appropriate BoardConfig.mk file.
#
@@ -507,8 +569,7 @@ libc_common_cppflags := \
# Define some common includes
# ========================================================
libc_common_c_includes := \
$(LOCAL_PATH)/stdlib \
libc_common_c_includes += \
$(LOCAL_PATH)/stdio \
# ========================================================
@@ -535,13 +596,16 @@ endef
include $(CLEAR_VARS)
LOCAL_SRC_FILES := bionic/__stack_chk_fail.cpp
LOCAL_CFLAGS := $(libc_common_cflags) -fno-stack-protector -Werror
LOCAL_CFLAGS := $(libc_common_cflags) -fno-stack-protector
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_stack_protector
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
include $(BUILD_STATIC_LIBRARY)
@@ -557,7 +621,9 @@ LOCAL_SRC_FILES := $(call all-c-files-under,tzcode)
# tzcode doesn't include wcsftime, so we use the OpenBSD one.
LOCAL_SRC_FILES += upstream-openbsd/lib/libc/time/wcsftime.c
LOCAL_CFLAGS := $(libc_common_cflags)
LOCAL_CFLAGS := $(libc_common_cflags) \
-fvisibility=hidden \
# Don't use ridiculous amounts of stack.
LOCAL_CFLAGS += -DALL_STATE
# Include tzsetwall, timelocal, timegm, time2posix, and posix2time.
@@ -568,13 +634,18 @@ LOCAL_CFLAGS += -DTM_GMTOFF=tm_gmtoff
LOCAL_CFLAGS += -DTZDIR=\"/system/usr/share/zoneinfo\"
# Include timezone and daylight globals.
LOCAL_CFLAGS += -DUSG_COMPAT=1
LOCAL_CFLAGS += -DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU
LOCAL_CFLAGS += -Dlint
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes) $(LOCAL_PATH)/tzcode/
LOCAL_MODULE := libc_tzcode
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
include $(BUILD_STATIC_LIBRARY)
@@ -586,21 +657,39 @@ include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-c-files-under,dns)
LOCAL_CFLAGS := \
LOCAL_SRC_FILES := \
$(call all-c-files-under,dns) \
upstream-netbsd/lib/libc/isc/ev_streams.c \
upstream-netbsd/lib/libc/isc/ev_timers.c \
upstream-netbsd/lib/libc/resolv/mtctxres.c \
# We use the OpenBSD res_random.
LOCAL_CFLAGS += \
-Dres_randomid=__res_randomid
LOCAL_SRC_FILES += \
upstream-openbsd/lib/libc/net/res_random.c \
LOCAL_CFLAGS += \
$(libc_common_cflags) \
-DANDROID_CHANGES \
-DINET6 \
-fvisibility=hidden \
-Wno-unused-parameter \
-I$(LOCAL_PATH)/dns/include \
-I$(LOCAL_PATH)/private \
-I$(LOCAL_PATH)/upstream-netbsd/lib/libc/include \
-include upstream-netbsd/android/include/netbsd-compat.h
-I$(LOCAL_PATH)/upstream-netbsd/android/include \
-include netbsd-compat.h \
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_dns
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
include $(BUILD_STATIC_LIBRARY)
@@ -618,17 +707,23 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_upstream_freebsd_src_files)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-Wno-sign-compare -Wno-uninitialized \
-I$(LOCAL_PATH)/upstream-freebsd/android/include \
-I$(LOCAL_PATH)/upstream-freebsd/lib/libc/include \
-include freebsd-compat.h
-include freebsd-compat.h \
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_freebsd
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_freebsd_src_files))
include $(BUILD_STATIC_LIBRARY)
@@ -644,18 +739,24 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_upstream_netbsd_src_files)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-Wno-sign-compare -Wno-uninitialized \
-DPOSIX_MISTAKE \
-I$(LOCAL_PATH)/upstream-netbsd/android/include \
-I$(LOCAL_PATH)/upstream-netbsd/lib/libc/include \
-include netbsd-compat.h
-include netbsd-compat.h \
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_netbsd
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_netbsd_src_files))
include $(BUILD_STATIC_LIBRARY)
@@ -669,20 +770,36 @@ include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_upstream_openbsd_src_files)
ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
# Clang has wrong long double size or LDBL_MANT_DIG, http://b/17163651.
LOCAL_CLANG := false
else
LOCAL_CLANG := $(use_clang)
endif
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-Wno-missing-field-initializers \
-Wno-sign-compare \
-Wno-uninitialized \
-Wno-unused-parameter \
-I$(LOCAL_PATH)/private \
-I$(LOCAL_PATH)/upstream-openbsd/android/include \
-I$(LOCAL_PATH)/upstream-openbsd/lib/libc/include \
-I$(LOCAL_PATH)/upstream-openbsd/lib/libc/gdtoa/ \
-include openbsd-compat.h
-include openbsd-compat.h \
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_openbsd
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_openbsd_src_files))
include $(BUILD_STATIC_LIBRARY)
@@ -697,9 +814,18 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES_32 := $(libc_upstream_openbsd_gdtoa_src_files_32)
LOCAL_SRC_FILES_64 := $(libc_upstream_openbsd_gdtoa_src_files_64)
ifneq (,$(filter $(TARGET_ARCH),x86 x86_64))
# Clang has wrong long double size or LDBL_MANT_DIG, http://b/17163651.
LOCAL_CLANG := false
else
LOCAL_CLANG := $(use_clang)
endif
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-Wno-sign-compare -Wno-uninitialized \
-fvisibility=hidden \
-I$(LOCAL_PATH)/private \
-I$(LOCAL_PATH)/upstream-openbsd/android/include \
-I$(LOCAL_PATH)/upstream-openbsd/lib/libc/include \
-include openbsd-compat.h \
@@ -709,7 +835,9 @@ LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_gdtoa
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
include $(BUILD_STATIC_LIBRARY)
@@ -722,27 +850,52 @@ include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_bionic_src_files)
LOCAL_CFLAGS := $(libc_common_cflags) -Werror
LOCAL_CFLAGS := $(libc_common_cflags) \
-Wframe-larger-than=2048 \
ifeq ($(TARGET_ARCH),x86_64)
# Clang assembler has problem with ssse3-strcmp-slm.S, http://b/17302991
LOCAL_CLANG_ASFLAGS += -no-integrated-as
endif
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
LOCAL_MODULE := libc_bionic
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
# Set -DPTHREAD_DEBUG_ENABLED=true to enable support for pthread deadlock prediction.
# Since this code is experimental it is disabled by default.
LOCAL_CFLAGS += -DPTHREAD_DEBUG_ENABLED=false
ifneq ($(TARGET_USES_LOGD),false)
LOCAL_CFLAGS += -DTARGET_USES_LOGD
endif
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_bionic_src_files))
include $(BUILD_STATIC_LIBRARY)
# ========================================================
# libc_cxa.a - Things traditionally in libstdc++
# ========================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_cxa_src_files)
LOCAL_CFLAGS := $(libc_common_cflags) \
-fvisibility=hidden \
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
LOCAL_MODULE := libc_cxa
LOCAL_CLANG := true # GCC refuses to hide new/delete
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
include $(BUILD_STATIC_LIBRARY)
# ========================================================
# libc_syscalls.a
# ========================================================
@@ -754,12 +907,35 @@ ifdef TARGET_2ND_ARCH
LOCAL_SRC_FILES_$(TARGET_2ND_ARCH) := $(call all-S-files-under,arch-$(TARGET_2ND_ARCH)/syscalls)
endif
LOCAL_MODULE := libc_syscalls
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
include $(BUILD_STATIC_LIBRARY)
# ========================================================
# libc_aeabi.a
# This is an LP32 ARM-only library that needs to be built with -fno-builtin
# to avoid infinite recursion. For the other architectures we just build an
# empty library to keep this makefile simple.
# ========================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES_arm := arch-arm/bionic/__aeabi.c
LOCAL_MODULE := libc_aeabi
LOCAL_CLANG := $(use_clang)
LOCAL_CFLAGS := $(libc_common_cflags) -fno-builtin
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
include $(BUILD_STATIC_LIBRARY)
# ========================================================
# libc_common.a
# ========================================================
@@ -772,22 +948,33 @@ LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_common
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_WHOLE_STATIC_LIBRARIES := \
libc_bionic \
libc_cxa \
libc_dns \
libc_freebsd \
libc_gdtoa \
libc_malloc \
libc_netbsd \
libc_openbsd \
libc_stack_protector \
libc_syscalls \
libc_tzcode \
LOCAL_WHOLE_STATIC_LIBRARIES_arm := libc_aeabi
ifneq ($(MALLOC_IMPL),dlmalloc)
LOCAL_WHOLE_STATIC_LIBRARIES += libjemalloc
endif
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
# TODO: split out the asflags.
LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_common_src_files))
@@ -802,8 +989,8 @@ include $(BUILD_STATIC_LIBRARY)
# This is a version of the static C library that does not
# include malloc. It's useful in situations when the user wants
# to provide their own malloc implementation, or wants to
# explicitly disallow the use of the use of malloc,
# such as in the dynamic loader.
# explicitly disallow the use of malloc, such as in the
# dynamic linker.
include $(CLEAR_VARS)
@@ -814,20 +1001,44 @@ LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_CFLAGS := $(libc_common_cflags) \
-DLIBC_STATIC
-DLIBC_STATIC \
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_MODULE := libc_nomalloc
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_static_src_files))
include $(BUILD_STATIC_LIBRARY)
# ========================================================
# libc_malloc.a: the _prefixed_ malloc functions (like dlcalloc).
# ========================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libc_malloc_src)
LOCAL_CFLAGS := $(libc_common_cflags) \
-fvisibility=hidden \
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc_malloc
LOCAL_CLANG := $(use_clang)
LOCAL_CXX_STL := none
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
include $(BUILD_STATIC_LIBRARY)
# ========================================================
# libc.a
# ========================================================
@@ -836,19 +1047,22 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
$(libc_arch_static_src_files) \
$(libc_static_common_src_files) \
bionic/dlmalloc.c \
bionic/malloc_debug_common.cpp \
bionic/libc_init_static.cpp \
LOCAL_CFLAGS := $(libc_common_cflags) \
-DLIBC_STATIC
-DLIBC_STATIC \
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_MODULE := libc
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_static_src_files))
@@ -864,18 +1078,15 @@ LOCAL_CFLAGS := $(libc_common_cflags)
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_SRC_FILES := \
$(libc_arch_dynamic_src_files) \
$(libc_static_common_src_files) \
bionic/dlmalloc.c \
bionic/malloc_debug_common.cpp \
bionic/debug_mapinfo.cpp \
bionic/debug_stacktrace.cpp \
bionic/pthread_debug.cpp \
bionic/libc_init_dynamic.cpp \
bionic/NetdClient.cpp \
LOCAL_MODULE := libc
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_REQUIRED_MODULES := tzdata
@@ -893,8 +1104,16 @@ LOCAL_STRIP_MODULE := keep_symbols
LOCAL_SHARED_LIBRARIES := libdl
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
# We'd really like to do this for all architectures, but since this wasn't done
# before, these symbols must continue to be exported on LP32 for binary
# compatibility.
LOCAL_LDFLAGS_arm64 := -Wl,--exclude-libs,libgcc.a
LOCAL_LDFLAGS_mips64 := -Wl,--exclude-libs,libgcc.a
LOCAL_LDFLAGS_x86_64 := -Wl,--exclude-libs,libgcc.a
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_dynamic_src_files))
$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_static_common_src_files))
@@ -905,6 +1124,7 @@ LOCAL_SRC_FILES_arm += \
arch-common/bionic/crtbegin_so.c \
arch-arm/bionic/atexit_legacy.c \
arch-common/bionic/crtend_so.S
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
include $(BUILD_SHARED_LIBRARY)
@@ -922,30 +1142,36 @@ ifneq ($(TARGET_BUILD_VARIANT),user)
# ========================================================
include $(CLEAR_VARS)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-DMALLOC_LEAK_CHECK
LOCAL_CFLAGS := $(libc_common_cflags)
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
# Make sure that unwind.h comes from libunwind.
LOCAL_C_INCLUDES := \
$(libc_common_c_includes) \
LOCAL_SRC_FILES := \
bionic/debug_mapinfo.cpp \
bionic/debug_stacktrace.cpp \
bionic/libc_logging.cpp \
bionic/malloc_debug_leak.cpp \
bionic/malloc_debug_check.cpp \
LOCAL_MODULE := libc_malloc_debug_leak
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SHARED_LIBRARIES := libc libdl
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
# Only need this for arm since libc++ uses its own unwind code that
# doesn't mix with the other default unwind code.
LOCAL_STATIC_LIBRARIES_arm := libunwind_llvm
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
# Don't install on release build
LOCAL_MODULE_TAGS := eng debug
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
include $(BUILD_SHARED_LIBRARY)
@@ -958,30 +1184,70 @@ include $(CLEAR_VARS)
LOCAL_CFLAGS := \
$(libc_common_cflags) \
-DMALLOC_QEMU_INSTRUMENT
-DMALLOC_QEMU_INSTRUMENT \
LOCAL_CONLYFLAGS := $(libc_common_conlyflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_SRC_FILES := \
bionic/malloc_debug_qemu.cpp
bionic/libc_logging.cpp \
bionic/malloc_debug_qemu.cpp \
LOCAL_MODULE := libc_malloc_debug_qemu
LOCAL_CLANG := $(use_clang)
LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies)
LOCAL_SHARED_LIBRARIES := libc libdl
LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES :=
# Don't install on release build
LOCAL_MODULE_TAGS := eng debug
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
include $(BUILD_SHARED_LIBRARY)
endif #!user
# ========================================================
# libstdc++.so
# ========================================================
libstdcxx_common_src_files := \
bionic/__cxa_guard.cpp \
bionic/__cxa_pure_virtual.cpp \
bionic/new.cpp \
bionic/libc_logging.cpp \
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
LOCAL_CFLAGS := $(libc_common_cflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
LOCAL_MODULE:= libstdc++
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
include $(BUILD_SHARED_LIBRARY)
# ========================================================
# libstdc++.a
# ========================================================
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include
LOCAL_CFLAGS := $(libc_common_cflags)
LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
LOCAL_MODULE:= libstdc++
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_CXX_STL := none
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
LOCAL_NATIVE_COVERAGE := $(bionic_coverage)
include $(BUILD_STATIC_LIBRARY)
# ========================================================
include $(call all-makefiles-under,$(LOCAL_PATH))

File diff suppressed because it is too large Load Diff

View File

@@ -38,7 +38,6 @@ uid_t getresuid:getresuid32(uid_t* ruid, uid_t* euid, uid_t* suid) arm,x86
uid_t getresuid:getresuid(uid_t* ruid, uid_t* euid, uid_t* suid) arm64,mips,mips64,x86_64
gid_t getresgid:getresgid32(gid_t* rgid, gid_t* egid, gid_t* sgid) arm,x86
gid_t getresgid:getresgid(gid_t* rgid, gid_t* egid, gid_t* sgid) arm64,mips,mips64,x86_64
pid_t gettid() all
ssize_t readahead(int, off64_t, size_t) all
int getgroups:getgroups32(int, gid_t*) arm,x86
int getgroups:getgroups(int, gid_t*) arm64,mips,mips64,x86_64
@@ -58,10 +57,8 @@ int setresgid:setresgid32(gid_t, gid_t, gid_t) arm,x86
int setresgid:setresgid(gid_t, gid_t, gid_t) arm64,mips,mips64,x86_64
void* __brk:brk(void*) all
int kill(pid_t, int) all
int tkill(pid_t tid, int sig) all
int tgkill(pid_t tgid, pid_t tid, int sig) all
int __ptrace:ptrace(int request, int pid, void* addr, void* data) all
int __set_thread_area:set_thread_area(void* user_desc) mips,mips64,x86
# <sys/resource.h>
int getrusage(int, struct rusage*) all
@@ -84,9 +81,7 @@ pid_t vfork(void) arm
int setregid:setregid32(gid_t, gid_t) arm,x86
int setregid:setregid(gid_t, gid_t) arm64,mips,mips64,x86_64
int chroot(const char*) all
# IMPORTANT: Even though <sys/prctl.h> declares prctl(int, ...), the syscall stub must take 6 arguments
# to match the kernel implementation.
int prctl(int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5) all
int prctl(int, unsigned long, unsigned long, unsigned long, unsigned long) all
long __arch_prctl:arch_prctl(int, unsigned long) x86_64
int capget(cap_user_header_t header, cap_user_data_t data) all
int capset(cap_user_header_t header, const cap_user_data_t data) all
@@ -101,7 +96,7 @@ ssize_t pread64|pread(int, void*, size_t, off_t) arm64,mips64,x86_64
ssize_t pwrite64(int, void*, size_t, off64_t) arm,mips,x86
ssize_t pwrite64|pwrite(int, void*, size_t, off_t) arm64,mips64,x86_64
int close(int) all
pid_t getpid() all
pid_t __getpid:getpid() all
int munmap(void*, size_t) all
void* mremap(void*, size_t, size_t, unsigned long) all
int msync(const void*, size_t, int) all
@@ -132,12 +127,7 @@ ssize_t fgetxattr(int, const char*, void*, size_t) all
ssize_t flistxattr(int, char*, size_t) all
int fremovexattr(int, const char*) all
# mips64 doesn't have getdents64 until 3.10 kernels.
# We need this special-case hack as long as we need to support mips64 on older kernels.
# The currently-available Debian qemu image is on a 3.2 kernel.
int getdents:getdents64(unsigned int, struct dirent*, unsigned int) arm,arm64,mips,x86,x86_64
int __getdents64:getdents64(unsigned int, struct dirent*, unsigned int) mips64
int __getdents:getdents(unsigned int, void*, unsigned int) mips64
int __getdents64:getdents64(unsigned int, struct dirent*, unsigned int) arm,arm64,mips,mips64,x86,x86_64
int __openat:openat(int, const char*, int, mode_t) all
int faccessat(int, const char*, int, int) all
@@ -177,6 +167,12 @@ void* mmap|mmap64(void*, size_t, int, int, int, off_t) arm64,mips64,x86_64
int fallocate64:fallocate(int, int, off64_t, off64_t) arm,mips,x86
int fallocate|fallocate64(int, int, off_t, off_t) arm64,mips64,x86_64
# posix_fadvise64 is awkward: arm has shuffled arguments,
# the POSIX functions don't set errno, and no architecture has posix_fadvise.
int __arm_fadvise64_64:arm_fadvise64_64(int, int, off64_t, off64_t) arm
int __fadvise64:fadvise64_64(int, off64_t, off64_t, int) x86
int __fadvise64:fadvise64(int, off64_t, off64_t, int) arm64,mips,mips64,x86_64
int __fstatfs64:fstatfs64(int, size_t, struct statfs*) arm,mips,x86
int fstatfs64|fstatfs:fstatfs(int, struct statfs*) arm64,mips64,x86_64
int __statfs64:statfs64(const char*, size_t, struct statfs*) arm,mips,x86
@@ -203,14 +199,12 @@ int swapon(const char*, int) all
int swapoff(const char*) all
# time
int gettimeofday(struct timeval*, struct timezone*) all
int settimeofday(const struct timeval*, const struct timezone*) all
clock_t times(struct tms*) all
int nanosleep(const struct timespec*, struct timespec*) all
int clock_gettime(clockid_t clk_id, struct timespec* tp) all
int clock_settime(clockid_t clk_id, const struct timespec* tp) all
int clock_getres(clockid_t clk_id, struct timespec* res) all
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec* req, struct timespec* rem) all
int clock_settime(clockid_t, const struct timespec*) all
int clock_getres(clockid_t, struct timespec*) all
int __clock_nanosleep:clock_nanosleep(clockid_t, int, const struct timespec*, struct timespec*) all
int getitimer(int, const struct itimerval*) all
int setitimer(int, const struct itimerval*, struct itimerval*) all
int __timer_create:timer_create(clockid_t clockid, struct sigevent* evp, __kernel_timer_t* timerid) all
@@ -229,16 +223,15 @@ int __rt_sigpending:rt_sigpending(sigset_t*, size_t) all
int __rt_sigprocmask:rt_sigprocmask(int, const sigset_t*, sigset_t*, size_t) all
int __rt_sigsuspend:rt_sigsuspend(const sigset_t*, size_t) all
int __rt_sigtimedwait:rt_sigtimedwait(const sigset_t*, struct siginfo_t*, struct timespec_t*, size_t) all
int signalfd4(int, const sigset_t*, size_t, int) all
int __signalfd4:signalfd4(int, const sigset_t*, size_t, int) all
# sockets
int socket(int, int, int) arm,arm64,mips,mips64,x86_64
int __socket:socket(int, int, int) arm,arm64,mips,mips64,x86_64
int socketpair(int, int, int, int*) arm,arm64,mips,mips64,x86_64
int bind(int, struct sockaddr*, int) arm,arm64,mips,mips64,x86_64
int connect(int, struct sockaddr*, socklen_t) arm,arm64,mips,mips64,x86_64
int __connect:connect(int, struct sockaddr*, socklen_t) arm,arm64,mips,mips64,x86_64
int listen(int, int) arm,arm64,mips,mips64,x86_64
int accept(int, struct sockaddr*, socklen_t*) arm,arm64,mips,mips64,x86_64
int accept4(int, struct sockaddr*, socklen_t*, int) arm,arm64,mips,mips64,x86_64
int __accept4:accept4(int, struct sockaddr*, socklen_t*, int) arm,arm64,mips,mips64,x86_64
int getsockname(int, struct sockaddr*, socklen_t*) arm,arm64,mips,mips64,x86_64
int getpeername(int, struct sockaddr*, socklen_t*) arm,arm64,mips,mips64,x86_64
int sendto(int, const void*, size_t, int, const struct sockaddr*, socklen_t) arm,arm64,mips,mips64,x86_64
@@ -252,11 +245,10 @@ int recvmmsg(int, struct mmsghdr*, unsigned int, int, const struct tim
int sendmmsg(int, struct mmsghdr*, unsigned int, int) arm,arm64,mips,mips64,x86_64
# sockets for x86. These are done as an "indexed" call to socketcall syscall.
int socket:socketcall:1(int, int, int) x86
int __socket:socketcall:1(int, int, int) x86
int bind:socketcall:2(int, struct sockaddr*, int) x86
int connect:socketcall:3(int, struct sockaddr*, socklen_t) x86
int __connect:socketcall:3(int, struct sockaddr*, socklen_t) x86
int listen:socketcall:4(int, int) x86
int accept:socketcall:5(int, struct sockaddr*, socklen_t*) x86
int getsockname:socketcall:6(int, struct sockaddr*, socklen_t*) x86
int getpeername:socketcall:7(int, struct sockaddr*, socklen_t*) x86
int socketpair:socketcall:8(int, int, int, int*) x86
@@ -267,7 +259,7 @@ int setsockopt:socketcall:14(int, int, int, const void*, socklen_t) x
int getsockopt:socketcall:15(int, int, int, void*, socklen_t*) x86
int sendmsg:socketcall:16(int, const struct msghdr*, unsigned int) x86
int recvmsg:socketcall:17(int, struct msghdr*, unsigned int) x86
int accept4:socketcall:18(int, struct sockaddr*, socklen_t*, int) x86
int __accept4:socketcall:18(int, struct sockaddr*, socklen_t*, int) x86
int recvmmsg:socketcall:19(int, struct mmsghdr*, unsigned int, int, const struct timespec*) x86
int sendmmsg:socketcall:20(int, struct mmsghdr*, unsigned int, int) x86
@@ -286,21 +278,19 @@ int unshare(int) all
int __sched_getaffinity:sched_getaffinity(pid_t pid, size_t setsize, cpu_set_t* set) all
int __getcpu:getcpu(unsigned*, unsigned*, void*) all
# io priorities
int ioprio_set(int which, int who, int ioprio) all
int ioprio_get(int which, int who) all
# other
int uname(struct utsname*) all
mode_t umask(mode_t) all
int __reboot:reboot(int, int, int, void*) all
int __syslog:syslog(int, char*, int) all
int init_module(void*, unsigned long, const char*) all
int delete_module(const char*, unsigned int) all
int klogctl:syslog(int, char*, int) all
int sysinfo(struct sysinfo*) all
int personality(unsigned long) all
long perf_event_open(struct perf_event_attr* attr_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags) all
ssize_t tee(int, int, size_t, unsigned int) all
ssize_t splice(int, off64_t*, int, off64_t*, size_t, unsigned int) all
ssize_t vmsplice(int, const struct iovec*, size_t, unsigned int) all
int epoll_create1(int) all
int epoll_ctl(int, int op, int, struct epoll_event*) all
@@ -311,8 +301,6 @@ int eventfd:eventfd2(unsigned int, int) all
void _exit|_Exit:exit_group(int) all
void __exit:exit(int) all
int futex(void*, int, int, void*, void*, int) all
int inotify_init1(int) all
int inotify_add_watch(int, const char*, unsigned int) all
int inotify_rm_watch(int, unsigned int) all
@@ -322,6 +310,9 @@ int __ppoll:ppoll(pollfd*, unsigned int, timespec*, const sigset_t*, size_t) al
int __set_tid_address:set_tid_address(int*) all
int setfsgid(gid_t) all
int setfsuid(uid_t) all
pid_t wait4(pid_t, int*, int, struct rusage*) all
int __waitid:waitid(int, pid_t, struct siginfo_t*, int, void*) all
@@ -330,4 +321,14 @@ int __set_tls:__ARM_NR_set_tls(void*) arm
int cacheflush:__ARM_NR_cacheflush(long start, long end, long flags) arm
# MIPS-specific
int _flush_cache:cacheflush(char* addr, const int nbytes, const int op) mips,mips64
int _flush_cache:cacheflush(char* addr, const int nbytes, const int op) mips
int __set_tls:set_thread_area(void*) mips,mips64
# x86-specific
int __set_thread_area:set_thread_area(void*) x86
# vdso stuff.
int clock_gettime(clockid_t, timespec*) arm,mips,mips64,x86
int __clock_gettime:clock_gettime(clockid_t, timespec*) arm64,x86_64
int gettimeofday(timeval*, timezone*) arm,mips,mips64,x86
int __gettimeofday:gettimeofday(timeval*, timezone*) arm64,x86_64

View File

@@ -1,23 +1,35 @@
# arm specific configs
# 32-bit arm.
# These are used by the 32-bit targets, but not the 64-bit ones.
libc_common_src_files_arm := \
#
# Various kinds of LP32 cruft.
#
libc_bionic_src_files_arm += \
bionic/mmap.cpp \
libc_common_src_files_arm += \
bionic/legacy_32_bit_support.cpp \
bionic/ndk_cruft.cpp \
bionic/time64.c \
# These are shared by all the 32-bit targets, but not the 64-bit ones.
libc_bionic_src_files_arm := \
bionic/mmap.cpp
libc_netbsd_src_files_arm += \
upstream-netbsd/common/lib/libc/hash/sha1/sha1.c \
libc_common_src_files_arm += \
bionic/index.cpp \
libc_openbsd_src_files_arm += \
upstream-openbsd/lib/libc/stdio/putw.c \
#
# Default implementations of functions that are commonly optimized.
#
libc_bionic_src_files_arm += \
bionic/memchr.c \
bionic/memmove.c.arm \
bionic/memrchr.c \
bionic/strchr.cpp \
bionic/strnlen.c \
bionic/strrchr.cpp \
libc_freebsd_src_files_arm += \
upstream-freebsd/lib/libc/string/wcscat.c \
upstream-freebsd/lib/libc/string/wcschr.c \
upstream-freebsd/lib/libc/string/wcscmp.c \
@@ -25,38 +37,29 @@ libc_common_src_files_arm += \
upstream-freebsd/lib/libc/string/wcslen.c \
upstream-freebsd/lib/libc/string/wcsrchr.c \
upstream-freebsd/lib/libc/string/wmemcmp.c \
upstream-freebsd/lib/libc/string/wmemmove.c \
libc_openbsd_src_files_arm += \
upstream-openbsd/lib/libc/string/bcopy.c \
upstream-openbsd/lib/libc/string/stpncpy.c \
upstream-openbsd/lib/libc/string/strlcat.c \
upstream-openbsd/lib/libc/string/strlcpy.c \
upstream-openbsd/lib/libc/string/strncat.c \
upstream-openbsd/lib/libc/string/strncmp.c \
upstream-openbsd/lib/libc/string/strncpy.c \
# The C++ fortify function implementations for which there is an
# arm assembler version.
#
# Fortify implementations of libc functions.
# libc_common_src_files_arm +=
# bionic/__memcpy_chk.cpp \
# bionic/__memset_chk.cpp \
# bionic/__strcpy_chk.cpp \
# bionic/__strcat_chk.cpp \
# Inherently architecture-specific code.
#
libc_common_cflags_arm := -DSOFTFLOAT
##########################################
### CPU specific source files
libc_bionic_src_files_arm += \
arch-arm/bionic/abort_arm.S \
arch-arm/bionic/atomics_arm.c \
arch-arm/bionic/__bionic_clone.S \
arch-arm/bionic/eabi.c \
arch-arm/bionic/_exit_with_stack_teardown.S \
arch-arm/bionic/futex_arm.S \
arch-arm/bionic/__get_sp.S \
arch-arm/bionic/libgcc_compat.c \
arch-arm/bionic/memcmp16.S \
arch-arm/bionic/memcmp.S \
arch-arm/bionic/__restore.S \
arch-arm/bionic/_setjmp.S \
arch-arm/bionic/setjmp.S \
arch-arm/bionic/sigsetjmp.S \

View File

@@ -25,11 +25,23 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(__clang__)
// clang interprets -fno-builtin more loosely than you might expect,
// and thinks it's okay to still substitute builtins as long as they're
// named __aeabi_* rather than __builtin_*, which causes infinite
// recursion if we have the fortified memcpy visible in this file.
#undef _FORTIFY_SOURCE
#endif
#include <stddef.h>
#include <string.h>
extern int __cxa_atexit(void (*)(void*), void*, void*);
// All of these are weak symbols to avoid multiple definition errors when
// linking with libstdc++-v3 or compiler-rt.
/* The "C++ ABI for ARM" document states that static C++ constructors,
* which are called from the .init_array, should manually call
* __aeabi_atexit() to register static destructors explicitly.
@@ -38,37 +50,35 @@ extern int __cxa_atexit(void (*)(void*), void*, void* );
* variable from the shared object that contains the constructor/destructor
*/
/* Make this a weak symbol to avoid a multiple definition error when linking
* with libstdc++-v3. */
int __attribute__((weak))
__aeabi_atexit (void *object, void (*destructor) (void *), void *dso_handle)
{
__aeabi_atexit(void *object, void (*destructor) (void *), void *dso_handle) {
return __cxa_atexit(destructor, object, dso_handle);
}
void __aeabi_memcpy8(void *dest, const void *src, size_t n) {
void __attribute__((weak))
__aeabi_memcpy8(void *dest, const void *src, size_t n) {
memcpy(dest, src, n);
}
void __aeabi_memcpy4(void *dest, const void *src, size_t n) {
void __attribute__((weak)) __aeabi_memcpy4(void *dest, const void *src, size_t n) {
memcpy(dest, src, n);
}
void __aeabi_memcpy(void *dest, const void *src, size_t n) {
void __attribute__((weak)) __aeabi_memcpy(void *dest, const void *src, size_t n) {
memcpy(dest, src, n);
}
void __aeabi_memmove8(void *dest, const void *src, size_t n) {
void __attribute__((weak)) __aeabi_memmove8(void *dest, const void *src, size_t n) {
memmove(dest, src, n);
}
void __aeabi_memmove4(void *dest, const void *src, size_t n) {
void __attribute__((weak)) __aeabi_memmove4(void *dest, const void *src, size_t n) {
memmove(dest, src, n);
}
void __aeabi_memmove(void *dest, const void *src, size_t n) {
void __attribute__((weak)) __aeabi_memmove(void *dest, const void *src, size_t n) {
memmove(dest, src, n);
}
@@ -77,27 +87,27 @@ void __aeabi_memmove(void *dest, const void *src, size_t n) {
* This allows __aeabi_memclr to tail-call __aeabi_memset
*/
void __aeabi_memset8(void *dest, size_t n, int c) {
void __attribute__((weak)) __aeabi_memset8(void *dest, size_t n, int c) {
memset(dest, c, n);
}
void __aeabi_memset4(void *dest, size_t n, int c) {
void __attribute__((weak)) __aeabi_memset4(void *dest, size_t n, int c) {
memset(dest, c, n);
}
void __aeabi_memset(void *dest, size_t n, int c) {
void __attribute__((weak)) __aeabi_memset(void *dest, size_t n, int c) {
memset(dest, c, n);
}
void __aeabi_memclr8(void *dest, size_t n) {
void __attribute__((weak)) __aeabi_memclr8(void *dest, size_t n) {
__aeabi_memset8(dest, n, 0);
}
void __aeabi_memclr4(void *dest, size_t n) {
void __attribute__((weak)) __aeabi_memclr4(void *dest, size_t n) {
__aeabi_memset4(dest, n, 0);
}
void __aeabi_memclr(void *dest, size_t n) {
void __attribute__((weak)) __aeabi_memclr(void *dest, size_t n) {
__aeabi_memset(dest, n, 0);
}

View File

@@ -54,20 +54,16 @@ ENTRY(__bionic_clone)
# In the parent, reload saved registers then either return or set errno.
ldmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 0
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
1: # The child.
# Re-add the unwind directives that were reset from above.
.cfi_def_cfa_offset 16
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
# Setting lr to 0 will make the unwinder stop at __start_thread
mov lr, #0
ldr r0, [sp, #-4]
ldr r1, [sp, #-8]
b __bionic_clone_entry
b __start_thread
END(__bionic_clone)
.hidden __bionic_clone

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* Copyright (C) 2014 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -28,59 +28,34 @@
#include <private/bionic_asm.h>
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
// gdb is smart enough to unwind through signal frames with just the regular
// CFI information but libgcc and libunwind both need extra help. We do this
// by using .fnstart/.fnend and inserting a nop before both __restore and
// __restore_rt (but covered by the .fnstart/.fnend) so that although they're
// not inside the functions from objdump's point of view, an unwinder that
// blindly looks at the previous instruction (but is then smart enough to check
// the DWARF information to find out where it landed) gets the right answer.
// int __futex_syscall4(volatile void* ftx, int op, int val, const struct timespec* timeout)
ENTRY(__futex_syscall4)
stp x29, x30, [sp, #-16]!
mov x29, sp
// We need to place .fnstart ourselves (but we may as well keep the free .fnend).
#undef __bionic_asm_custom_entry
#define __bionic_asm_custom_entry(f)
str x8, [sp, #-16]!
mov x8, __NR_futex
svc #0
ldr x8, [sp], #16
.fnstart
.save {r0-r15}
.pad #32
nop
ENTRY_PRIVATE(__restore)
// This function must have exactly this instruction sequence.
mov r7, #__NR_sigreturn
swi #0
END(__restore)
ldp x29, x30, [sp], #16
ret
END(__futex_syscall4)
// int __futex_syscall3(volatile void* ftx, int op, int count)
ENTRY(__futex_syscall3)
b __futex_syscall4
END(__futex_syscall3)
// int __futex_wait(volatile void* ftx, int val, const struct timespec* timeout)
ENTRY(__futex_wait)
stp x29, x30, [sp, #-16]!
mov x29, sp
mov x3, x2
mov x2, x1
mov x1, #FUTEX_WAIT
str x8, [sp, #-16]!
mov x8, __NR_futex
svc #0
ldr x8, [sp], #16
ldp x29, x30, [sp], #16
ret
END(__futex_wait)
// int __futex_wake(volatile void* ftx, int count)
ENTRY(__futex_wake)
stp x29, x30, [sp, #-16]!
mov x29, sp
mov x2, x1
mov x1, #FUTEX_WAKE
str x8, [sp, #-16]!
mov x8, __NR_futex
svc #0
ldr x8, [sp], #16
ldp x29, x30, [sp], #16
ret
END(__futex_wake)
.fnstart
.save {r0-r15}
.pad #160
nop
ENTRY_PRIVATE(__restore_rt)
// This function must have exactly this instruction sequence.
mov r7, #__NR_rt_sigreturn
swi #0
END(__restore_rt)

View File

@@ -29,7 +29,7 @@
#include <private/bionic_asm.h>
// void _exit_with_stack_teardown(void* stackBase, size_t stackSize)
ENTRY(_exit_with_stack_teardown)
ENTRY_PRIVATE(_exit_with_stack_teardown)
ldr r7, =__NR_munmap
swi #0
// If munmap failed, we ignore the failure and exit anyway.

View File

@@ -107,7 +107,7 @@ ENTRY(_longjmp)
/* validation failed, die die die. */
botch:
bl PIC_SYM(longjmperror, PLT)
bl PIC_SYM(abort, PLT)
bl longjmperror
bl abort
b . - 8 /* Cannot get here */
END(_longjmp)

View File

@@ -40,5 +40,5 @@ ENTRY(abort)
.cfi_def_cfa_offset 8
.cfi_rel_offset r3, 0
.cfi_rel_offset r14, 4
bl PIC_SYM(__libc_android_abort, PLT)
bl __libc_android_abort
END(abort)

View File

@@ -1,69 +0,0 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <private/bionic_asm.h>
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
// int __futex_syscall3(volatile void* ftx, int op, int count)
ENTRY(__futex_syscall3)
mov ip, r7
ldr r7, =__NR_futex
swi #0
mov r7, ip
bx lr
END(__futex_syscall3)
// int __futex_syscall4(volatile void* ftx, int op, int val, const struct timespec* timeout)
ENTRY(__futex_syscall4)
b __futex_syscall3
END(__futex_syscall4)
// int __futex_wait(volatile void* ftx, int val, const struct timespec* timeout)
ENTRY(__futex_wait)
mov ip, r7
mov r3, r2
mov r2, r1
mov r1, #FUTEX_WAIT
ldr r7, =__NR_futex
swi #0
mov r7, ip
bx lr
END(__futex_wait)
// int __futex_wake(volatile void* ftx, int count)
ENTRY(__futex_wake)
mov ip, r7
mov r2, r1
mov r1, #FUTEX_WAKE
ldr r7, =__NR_futex
swi #0
mov r7, ip
bx lr
END(__futex_wake)

View File

@@ -1,234 +0,0 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <private/bionic_asm.h>
/*
* Optimized memcmp16() for ARM9.
* This would not be optimal on XScale or ARM11, where more prefetching
* and use of pld will be needed.
* The 2 major optimzations here are
* (1) The main loop compares 16 bytes at a time
* (2) The loads are scheduled in a way they won't stall
*/
ENTRY(__memcmp16)
pld [r0, #0]
pld [r1, #0]
/* take of the case where length is nul or the buffers are the same */
cmp r0, r1
cmpne r2, #0
moveq r0, #0
bxeq lr
/* since r0 hold the result, move the first source
* pointer somewhere else
*/
mov r3, r0
/* make sure we have at least 12 words, this simplify things below
* and avoid some overhead for small blocks
*/
cmp r2, #12
bpl 0f
/* small blocks (less then 12 words) */
pld [r0, #32]
pld [r1, #32]
1: ldrh r0, [r3], #2
ldrh ip, [r1], #2
subs r0, r0, ip
bxne lr
subs r2, r2, #1
bne 1b
bx lr
/* save registers */
0: stmfd sp!, {r4, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset lr, 4
/* align first pointer to word boundary */
tst r3, #2
beq 0f
ldrh r0, [r3], #2
ldrh ip, [r1], #2
sub r2, r2, #1
subs r0, r0, ip
/* restore registers and return */
ldmnefd sp!, {r4, lr}
bxne lr
0: /* here the first pointer is aligned, and we have at least 3 words
* to process.
*/
/* see if the pointers are congruent */
eor r0, r3, r1
ands r0, r0, #2
bne 5f
/* congruent case, 16 half-words per iteration
* We need to make sure there are at least 16+2 words left
* because we effectively read ahead one long word, and we could
* read past the buffer (and segfault) if we're not careful.
*/
ldr ip, [r1]
subs r2, r2, #(16 + 2)
bmi 1f
0:
pld [r3, #64]
pld [r1, #64]
ldr r0, [r3], #4
ldr lr, [r1, #4]!
eors r0, r0, ip
ldreq r0, [r3], #4
ldreq ip, [r1, #4]!
eoreqs r0, r0, lr
ldreq r0, [r3], #4
ldreq lr, [r1, #4]!
eoreqs r0, r0, ip
ldreq r0, [r3], #4
ldreq ip, [r1, #4]!
eoreqs r0, r0, lr
ldreq r0, [r3], #4
ldreq lr, [r1, #4]!
eoreqs r0, r0, ip
ldreq r0, [r3], #4
ldreq ip, [r1, #4]!
eoreqs r0, r0, lr
ldreq r0, [r3], #4
ldreq lr, [r1, #4]!
eoreqs r0, r0, ip
ldreq r0, [r3], #4
ldreq ip, [r1, #4]!
eoreqs r0, r0, lr
bne 2f
subs r2, r2, #16
bhs 0b
/* do we have at least 2 words left? */
1: adds r2, r2, #(16 - 2 + 2)
bmi 4f
/* finish off 2 words at a time */
3: ldr r0, [r3], #4
ldr ip, [r1], #4
eors r0, r0, ip
bne 2f
subs r2, r2, #2
bhs 3b
/* are we done? */
4: adds r2, r2, #2
bne 8f
/* restore registers and return */
mov r0, #0
ldmfd sp!, {r4, lr}
bx lr
2: /* the last 2 words are different, restart them */
ldrh r0, [r3, #-4]
ldrh ip, [r1, #-4]
subs r0, r0, ip
ldreqh r0, [r3, #-2]
ldreqh ip, [r1, #-2]
subeqs r0, r0, ip
/* restore registers and return */
ldmfd sp!, {r4, lr}
bx lr
/* process the last few words */
8: ldrh r0, [r3], #2
ldrh ip, [r1], #2
subs r0, r0, ip
bne 9f
subs r2, r2, #1
bne 8b
9: /* restore registers and return */
ldmfd sp!, {r4, lr}
bx lr
5: /*************** non-congruent case ***************/
/* align the unaligned pointer */
bic r1, r1, #3
ldr lr, [r1], #4
sub r2, r2, #8
6:
pld [r3, #64]
pld [r1, #64]
mov ip, lr, lsr #16
ldr lr, [r1], #4
ldr r0, [r3], #4
orr ip, ip, lr, lsl #16
eors r0, r0, ip
moveq ip, lr, lsr #16
ldreq lr, [r1], #4
ldreq r0, [r3], #4
orreq ip, ip, lr, lsl #16
eoreqs r0, r0, ip
moveq ip, lr, lsr #16
ldreq lr, [r1], #4
ldreq r0, [r3], #4
orreq ip, ip, lr, lsl #16
eoreqs r0, r0, ip
moveq ip, lr, lsr #16
ldreq lr, [r1], #4
ldreq r0, [r3], #4
orreq ip, ip, lr, lsl #16
eoreqs r0, r0, ip
bne 7f
subs r2, r2, #8
bhs 6b
sub r1, r1, #2
/* are we done? */
adds r2, r2, #8
moveq r0, #0
beq 9b
/* finish off the remaining bytes */
b 8b
7: /* fix up the 2 pointers and fallthrough... */
sub r1, r1, #2
b 2b
END(__memcmp16)

View File

@@ -56,7 +56,7 @@ ENTRY(setjmp)
.cfi_rel_offset r14, 4
mov r0, #0x00000000
bl PIC_SYM(sigblock, PLT)
bl sigblock
mov r1, r0
ldmfd sp!, {r0, r14}
@@ -108,7 +108,7 @@ ENTRY(longjmp)
.cfi_adjust_cfa_offset 4
mov r0, r2
bl PIC_SYM(sigsetmask, PLT)
bl sigsetmask
add sp, sp, #4 /* unalign the stack */
.cfi_adjust_cfa_offset -4
@@ -147,7 +147,7 @@ ENTRY(longjmp)
/* validation failed, die die die. */
botch:
bl PIC_SYM(longjmperror, PLT)
bl PIC_SYM(abort, PLT)
bl longjmperror
bl abort
b . - 8 /* Cannot get here */
END(longjmp)

View File

@@ -33,8 +33,6 @@
* SUCH DAMAGE.
*/
#define _ALIGN_TEXT .align 0
#include <private/bionic_asm.h>
#include <machine/setjmp.h>
@@ -50,8 +48,8 @@
ENTRY(sigsetjmp)
teq r1, #0
beq PIC_SYM(_setjmp, PLT)
b PIC_SYM(setjmp, PLT)
beq _setjmp
b setjmp
END(sigsetjmp)
.L_setjmp_magic:
@@ -61,6 +59,6 @@ ENTRY(siglongjmp)
ldr r2, .L_setjmp_magic
ldr r3, [r0]
teq r2, r3
beq PIC_SYM(_longjmp, PLT)
b PIC_SYM(longjmp, PLT)
beq _longjmp
b longjmp
END(siglongjmp)

View File

@@ -47,5 +47,5 @@ ENTRY(syscall)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(syscall)

View File

@@ -40,12 +40,10 @@
ENTRY(__strcat_chk)
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
@@ -195,9 +193,6 @@ END(__strcat_chk)
#include "memcpy_base.S"
ENTRY_PRIVATE(__strcat_chk_failed)
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4

View File

@@ -39,7 +39,6 @@
ENTRY(__strcpy_chk)
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -161,7 +160,6 @@ END(__strcpy_chk)
#include "memcpy_base.S"
ENTRY_PRIVATE(__strcpy_chk_failed)
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4

View File

@@ -72,7 +72,6 @@ END(__memcpy_chk)
ENTRY(memcpy)
pld [r1, #64]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -85,7 +84,6 @@ END(memcpy)
ENTRY_PRIVATE(__memcpy_chk_fail)
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0

View File

@@ -54,7 +54,6 @@
*/
ENTRY_PRIVATE(MEMCPY_BASE)
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -172,7 +171,6 @@ ENTRY_PRIVATE(MEMCPY_BASE)
END(MEMCPY_BASE)
ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -181,17 +179,14 @@ ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
// i.e., not keeping the stack looking like users expect
// (highest numbered register at highest address).
strd r4, r5, [sp, #-8]!
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
strd r6, r7, [sp, #-8]!
.save {r6, r7}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r6, 0
.cfi_rel_offset r7, 0
strd r8, r9, [sp, #-8]!
.save {r8, r9}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r8, 0
.cfi_rel_offset r9, 4

View File

@@ -44,7 +44,6 @@ ENTRY(__memset_chk)
bls .L_done
// Preserve lr for backtrace.
.save {lr}
push {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
@@ -68,7 +67,6 @@ ENTRY(bzero)
END(bzero)
ENTRY(memset)
.save {r0}
stmfd sp!, {r0}
.cfi_def_cfa_offset 4
.cfi_rel_offset r0, 0

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* Copyright (C) 2014 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,8 +26,5 @@
* SUCH DAMAGE.
*/
#include <string.h>
void bzero(void* s, size_t n) {
memset(s, '\0', n);
}
#define STPCPY
#include "string_copy.S"

View File

@@ -168,7 +168,6 @@ ENTRY(strcmp)
bne .L_do_align
/* Fast path. */
.save {r4-r7}
init
.L_doubleword_aligned:

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* Copyright (C) 2014 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,427 +25,6 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <private/bionic_asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_pop
pop {r0, r4, r5, pc}
.endm // m_pop
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcpy)
// For short copies, hard-code checking the first 8 bytes since this
// new code doesn't win until after about 8 bytes.
m_push
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_pop
strcpy_continue:
pld [r1, #0]
ands r3, r0, #7
beq strcpy_check_src_align
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
str r2, [r0], #4
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_mainloop
strcpy_complete:
m_pop
strcpy_zero_in_first_register:
lsls lr, ip, #17
bne strcpy_copy1byte
bcs strcpy_copy2bytes
lsls ip, ip, #1
bne strcpy_copy3bytes
strcpy_copy4bytes:
// Copy 4 bytes to the destiniation.
str r2, [r0]
m_pop
strcpy_copy1byte:
strb r2, [r0]
m_pop
strcpy_copy2bytes:
strh r2, [r0]
m_pop
strcpy_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
bne strcpy_copy5bytes
bcs strcpy_copy6bytes
lsls ip, ip, #1
bne strcpy_copy7bytes
// Copy 8 bytes to the destination.
strd r2, r3, [r0]
m_pop
strcpy_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
m_pop
strcpy_copy6bytes:
str r2, [r0], #4
strh r3, [r0]
m_pop
strcpy_copy7bytes:
str r2, [r0], #4
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
strcpy_unalign_return:
m_pop
strcpy_unalign7_copy6bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
m_pop
strcpy_unalign7_copy7bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_copy7bytes
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign6
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign5
strcpy_unalign_copy5bytes:
str r2, [r0], #4
strb r4, [r0]
m_pop
strcpy_unalign_copy6bytes:
str r2, [r0], #4
strb r4, [r0], #1
strb r5, [r0]
m_pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_copy3bytes
lsrs ip, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r4, [r0]
m_pop
END(strcpy)
#define STRCPY
#include "string_copy.S"

View File

@@ -0,0 +1,513 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#if !defined(STPCPY) && !defined(STRCPY)
#error "Either STPCPY or STRCPY must be defined."
#endif
#include <private/bionic_asm.h>
.syntax unified
.thumb
.thumb_func
#if defined(STPCPY)
.macro m_push
push {r4, r5, lr}
.cfi_def_cfa_offset 12
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
.cfi_rel_offset lr, 8
.endm // m_push
#else
.macro m_push
push {r0, r4, r5, lr}
.cfi_def_cfa_offset 16
.cfi_rel_offset r0, 0
.cfi_rel_offset r4, 4
.cfi_rel_offset r5, 8
.cfi_rel_offset lr, 12
.endm // m_push
#endif
#if defined(STPCPY)
.macro m_pop
pop {r4, r5, pc}
.endm // m_pop
#else
.macro m_pop
pop {r0, r4, r5, pc}
.endm // m_pop
#endif
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
#if defined(STPCPY)
ENTRY(stpcpy)
#else
ENTRY(strcpy)
#endif
// For short copies, hard-code checking the first 8 bytes since this
// new code doesn't win until after about 8 bytes.
m_push
m_copy_byte reg=r2, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r3, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r4, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r5, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r2, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r3, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r4, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r5, cmd=cbnz, label=.Lstringcopy_continue
.Lstringcopy_finish:
#if defined(STPCPY)
sub r0, r0, #1
#endif
m_pop
.Lstringcopy_continue:
pld [r1, #0]
ands r3, r0, #7
beq .Lstringcopy_check_src_align
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .Lstringcopy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, .Lstringcopy_complete
.Lstringcopy_align_to_32:
bcc .Lstringcopy_align_to_64
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, .Lstringcopy_complete
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, .Lstringcopy_complete
.Lstringcopy_align_to_64:
tst r3, #4
beq .Lstringcopy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
str r2, [r0], #4
.Lstringcopy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne .Lstringcopy_unaligned_copy
.p2align 2
.Lstringcopy_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
strd r2, r3, [r0], #8
b .Lstringcopy_mainloop
.Lstringcopy_complete:
#if defined(STPCPY)
sub r0, r0, #1
#endif
m_pop
.Lstringcopy_zero_in_first_register:
lsls lr, ip, #17
bne .Lstringcopy_copy1byte
bcs .Lstringcopy_copy2bytes
lsls ip, ip, #1
bne .Lstringcopy_copy3bytes
.Lstringcopy_copy4bytes:
// Copy 4 bytes to the destiniation.
#if defined(STPCPY)
str r2, [r0], #3
#else
str r2, [r0]
#endif
m_pop
.Lstringcopy_copy1byte:
strb r2, [r0]
m_pop
.Lstringcopy_copy2bytes:
#if defined(STPCPY)
strh r2, [r0], #1
#else
strh r2, [r0]
#endif
m_pop
.Lstringcopy_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_pop
.Lstringcopy_zero_in_second_register:
lsls lr, ip, #17
bne .Lstringcopy_copy5bytes
bcs .Lstringcopy_copy6bytes
lsls ip, ip, #1
bne .Lstringcopy_copy7bytes
// Copy 8 bytes to the destination.
strd r2, r3, [r0]
#if defined(STPCPY)
add r0, r0, #7
#endif
m_pop
.Lstringcopy_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
m_pop
.Lstringcopy_copy6bytes:
str r2, [r0], #4
#if defined(STPCPY)
strh r3, [r0], #1
#else
strh r3, [r0]
#endif
m_pop
.Lstringcopy_copy7bytes:
str r2, [r0], #4
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_pop
.Lstringcopy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
.Lstringcopy_unaligned_branchtable:
.byte 0
.byte ((.Lstringcopy_unalign7 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign6 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign5 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign4 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign3 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign2 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign1 - .Lstringcopy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
.Lstringcopy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
ldrb r3, [r1]
cbz r3, .Lstringcopy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, .Lstringcopy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, .Lstringcopy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
strd r2, r3, [r0], #8
#if defined(STPCPY)
beq .Lstringcopy_finish
#else
beq .Lstringcopy_unalign_return
#endif
b .Lstringcopy_unalign7
.Lstringcopy_unalign7_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
.Lstringcopy_unalign_return:
m_pop
.Lstringcopy_unalign7_copy6bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0]
m_pop
.Lstringcopy_unalign7_copy7bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0]
m_pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
.Lstringcopy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
ldrb r4, [r1]
cbz r4, .Lstringcopy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, .Lstringcopy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq .Lstringcopy_copy7bytes
lsrs ip, r3, #24
strd r2, r3, [r0], #8
#if defined(STPCPY)
beq .Lstringcopy_finish
#else
beq .Lstringcopy_unalign_return
#endif
b .Lstringcopy_unalign6
.p2align 2
// Can read 5 bytes before possibly crossing a page.
.Lstringcopy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
ldrb r4, [r1]
cbz r4, .Lstringcopy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
strd r2, r3, [r0], #8
b .Lstringcopy_unalign5
.Lstringcopy_unalign_copy5bytes:
str r2, [r0], #4
strb r4, [r0]
m_pop
.Lstringcopy_unalign_copy6bytes:
str r2, [r0], #4
strb r4, [r0], #1
strb r5, [r0]
m_pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
.Lstringcopy_unalign4:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
strd r2, r3, [r0], #8
b .Lstringcopy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
.Lstringcopy_unalign3:
ldrb r2, [r1]
cbz r2, .Lstringcopy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, .Lstringcopy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, .Lstringcopy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq .Lstringcopy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
strd r2, r3, [r0], #8
b .Lstringcopy_unalign3
.Lstringcopy_unalign3_copy1byte:
strb r2, [r0]
m_pop
.Lstringcopy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_pop
.Lstringcopy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
.Lstringcopy_unalign2:
ldrb r2, [r1]
cbz r2, .Lstringcopy_unalign_copy1byte
ldrb r4, [r1, #1]
cbz r4, .Lstringcopy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq .Lstringcopy_copy3bytes
lsrs ip, r2, #24
beq .Lstringcopy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
strd r2, r3, [r0], #8
b .Lstringcopy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
.Lstringcopy_unalign1:
ldrb r2, [r1]
cbz r2, .Lstringcopy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
strd r2, r3, [r0], #8
b .Lstringcopy_unalign1
.Lstringcopy_unalign_copy1byte:
strb r2, [r0]
m_pop
.Lstringcopy_unalign_copy2bytes:
strb r2, [r0], #1
strb r4, [r0]
m_pop
#if defined(STPCPY)
END(stpcpy)
#else
END(strcpy)
#endif

View File

@@ -1,9 +1,11 @@
libc_bionic_src_files_arm += \
arch-arm/cortex-a15/bionic/memcpy.S \
arch-arm/cortex-a15/bionic/memset.S \
arch-arm/cortex-a15/bionic/stpcpy.S \
arch-arm/cortex-a15/bionic/strcat.S \
arch-arm/cortex-a15/bionic/__strcat_chk.S \
arch-arm/cortex-a15/bionic/strcmp.S \
arch-arm/cortex-a15/bionic/strcpy.S \
arch-arm/cortex-a15/bionic/strlen.S \
arch-arm/cortex-a15/bionic/__strcat_chk.S \
arch-arm/cortex-a15/bionic/__strcpy_chk.S \
arch-arm/cortex-a15/bionic/strlen.S \
bionic/memmove.c \

View File

@@ -40,12 +40,10 @@
ENTRY(__strcat_chk)
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
@@ -199,8 +197,6 @@ END(__strcat_chk)
#include "memcpy_base.S"
ENTRY_PRIVATE(__strcat_chk_fail)
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4

View File

@@ -39,7 +39,6 @@
ENTRY(__strcpy_chk)
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -165,7 +164,6 @@ END(__strcpy_chk)
#include "memcpy_base.S"
ENTRY_PRIVATE(__strcpy_chk_fail)
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4

View File

@@ -50,7 +50,6 @@ END(__memcpy_chk)
ENTRY(memcpy)
pld [r1, #0]
stmfd sp!, {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -64,7 +63,6 @@ END(memcpy)
ENTRY_PRIVATE(__memcpy_chk_fail)
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0

View File

@@ -33,7 +33,6 @@
*/
ENTRY_PRIVATE(MEMCPY_BASE)
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -139,14 +138,12 @@ ENTRY_PRIVATE(MEMCPY_BASE)
END(MEMCPY_BASE)
ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
/* Simple arm-only copy loop to handle aligned copy operations */
stmfd sp!, {r4-r8}
.save {r4-r8}
.cfi_adjust_cfa_offset 20
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4

View File

@@ -42,7 +42,6 @@ ENTRY(__memset_chk)
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
@@ -72,7 +71,6 @@ ENTRY(memset)
bhi __memset_large_copy
stmfd sp!, {r0}
.save {r0}
.cfi_def_cfa_offset 4
.cfi_rel_offset r0, 0
@@ -114,7 +112,6 @@ ENTRY_PRIVATE(__memset_large_copy)
* offset = (4-(src&3))&3 = -src & 3
*/
stmfd sp!, {r0, r4-r7, lr}
.save {r0, r4-r7, lr}
.cfi_def_cfa_offset 24
.cfi_rel_offset r0, 0
.cfi_rel_offset r4, 4

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* Copyright (C) 2014 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,9 +26,5 @@
* SUCH DAMAGE.
*/
#include <private/bionic_asm.h>
ENTRY(__get_sp)
mov r0, sp
bx lr
END(__get_sp)
#define STPCPY
#include "string_copy.S"

View File

@@ -168,7 +168,6 @@ ENTRY(strcmp)
bne .L_do_align
/* Fast path. */
.save {r4-r7}
init
.L_doubleword_aligned:

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* Copyright (C) 2014 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,432 +25,6 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <private/bionic_asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_ret inst
\inst {r0, r4, r5, pc}
.endm // m_ret
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcpy)
// Unroll the first 8 bytes that will be copied.
m_push
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_ret inst=pop
strcpy_continue:
pld [r1, #0]
ands r3, r0, #7
bne strcpy_align_dst
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_mainloop
strcpy_zero_in_first_register:
lsls lr, ip, #17
itt ne
strbne r2, [r0]
m_ret inst=popne
itt cs
strhcs r2, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
streq r2, [r0]
m_ret inst=popeq
strh r2, [r0], #2
lsr r3, r2, #16
strb r3, [r0]
m_ret inst=pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
ittt ne
stmiane r0!, {r2}
strbne r3, [r0]
m_ret inst=popne
ittt cs
strcs r2, [r0], #4
strhcs r3, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
stmiaeq r0, {r2, r3}
m_ret inst=popeq
stmia r0!, {r2}
strh r3, [r0], #2
lsr r4, r3, #16
strb r4, [r0]
m_ret inst=pop
strcpy_align_dst:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r4, [r1], #1
strb r4, [r0], #1
cmp r4, #0
it eq
m_ret inst=popeq
ldrb r5, [r1], #1
strb r5, [r0], #1
cmp r5, #0
it eq
m_ret inst=popeq
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
stmia r0!, {r2}
b strcpy_check_src_align
strcpy_complete:
m_ret inst=pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
stmia r0!, {r2}
strb r3, [r0]
strcpy_unalign_return:
m_ret inst=pop
strcpy_unalign7_copy6bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
m_ret inst=pop
strcpy_unalign7_copy7bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_ret inst=pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_unalign6_copy7bytes
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign6
strcpy_unalign6_copy7bytes:
stmia r0!, {r2}
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_ret inst=pop
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign5
strcpy_unalign_copy5bytes:
stmia r0!, {r2}
strb r4, [r0]
m_ret inst=pop
strcpy_unalign_copy6bytes:
stmia r0!, {r2}
strb r4, [r0], #1
strb r5, [r0]
m_ret inst=pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldmia r1!, {r2}
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldmia r1!, {r3}
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_ret inst=pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_unalign_copy3bytes
lsrs ip, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy4bytes:
stmia r0, {r2}
m_ret inst=pop
END(strcpy)
#define STRCPY
#include "string_copy.S"

View File

@@ -0,0 +1,535 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#if !defined(STPCPY) && !defined(STRCPY)
#error "Either STPCPY or STRCPY must be defined."
#endif
#include <private/bionic_asm.h>
.syntax unified
.thumb
.thumb_func
#if defined(STPCPY)
.macro m_push
push {r4, r5, lr}
.cfi_def_cfa_offset 12
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
.cfi_rel_offset lr, 8
.endm // m_push
#else
.macro m_push
push {r0, r4, r5, lr}
.cfi_def_cfa_offset 16
.cfi_rel_offset r0, 0
.cfi_rel_offset r4, 4
.cfi_rel_offset r5, 8
.cfi_rel_offset lr, 12
.endm // m_push
#endif
#if defined(STPCPY)
.macro m_ret inst
\inst {r4, r5, pc}
.endm // m_ret
#else
.macro m_ret inst
\inst {r0, r4, r5, pc}
.endm // m_ret
#endif
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
#if defined(STPCPY)
ENTRY(stpcpy)
#else
ENTRY(strcpy)
#endif
// Unroll the first 8 bytes that will be copied.
m_push
m_copy_byte reg=r2, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r3, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r4, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r5, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r2, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r3, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r4, cmd=cbz, label=.Lstringcopy_finish
m_copy_byte reg=r5, cmd=cbnz, label=.Lstringcopy_continue
.Lstringcopy_finish:
#if defined(STPCPY)
sub r0, r0, #1
#endif
m_ret inst=pop
.Lstringcopy_continue:
pld [r1, #0]
ands r3, r0, #7
bne .Lstringcopy_align_dst
.Lstringcopy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne .Lstringcopy_unaligned_copy
.p2align 2
.Lstringcopy_mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
stmia r0!, {r2, r3}
b .Lstringcopy_mainloop
.Lstringcopy_zero_in_first_register:
lsls lr, ip, #17
itt ne
strbne r2, [r0]
m_ret inst=popne
itt cs
#if defined(STPCPY)
strhcs r2, [r0], #1
#else
strhcs r2, [r0]
#endif
m_ret inst=popcs
lsls ip, ip, #1
itt eq
#if defined(STPCPY)
streq r2, [r0], #3
#else
streq r2, [r0]
#endif
m_ret inst=popeq
strh r2, [r0], #2
lsr r3, r2, #16
strb r3, [r0]
m_ret inst=pop
.Lstringcopy_zero_in_second_register:
lsls lr, ip, #17
ittt ne
stmiane r0!, {r2}
strbne r3, [r0]
m_ret inst=popne
ittt cs
strcs r2, [r0], #4
#if defined(STPCPY)
strhcs r3, [r0], #1
#else
strhcs r3, [r0]
#endif
m_ret inst=popcs
lsls ip, ip, #1
#if defined(STPCPY)
ittt eq
#else
itt eq
#endif
stmiaeq r0, {r2, r3}
#if defined(STPCPY)
addeq r0, r0, #7
#endif
m_ret inst=popeq
stmia r0!, {r2}
strh r3, [r0], #2
lsr r4, r3, #16
strb r4, [r0]
m_ret inst=pop
.Lstringcopy_align_dst:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .Lstringcopy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, .Lstringcopy_complete
.Lstringcopy_align_to_32:
bcc .Lstringcopy_align_to_64
ldrb r4, [r1], #1
strb r4, [r0], #1
cmp r4, #0
#if defined(STPCPY)
itt eq
subeq r0, r0, #1
#else
it eq
#endif
m_ret inst=popeq
ldrb r5, [r1], #1
strb r5, [r0], #1
cmp r5, #0
#if defined(STPCPY)
itt eq
subeq r0, r0, #1
#else
it eq
#endif
m_ret inst=popeq
.Lstringcopy_align_to_64:
tst r3, #4
beq .Lstringcopy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
stmia r0!, {r2}
b .Lstringcopy_check_src_align
.Lstringcopy_complete:
#if defined(STPCPY)
sub r0, r0, #1
#endif
m_ret inst=pop
.Lstringcopy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
.Lstringcopy_unaligned_branchtable:
.byte 0
.byte ((.Lstringcopy_unalign7 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign6 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign5 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign4 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign3 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign2 - .Lstringcopy_unaligned_branchtable)/2)
.byte ((.Lstringcopy_unalign1 - .Lstringcopy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
.Lstringcopy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
ldrb r3, [r1]
cbz r3, .Lstringcopy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, .Lstringcopy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, .Lstringcopy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
stmia r0!, {r2, r3}
#if defined(STPCPY)
beq .Lstringcopy_finish
#else
beq .Lstringcopy_unalign_return
#endif
b .Lstringcopy_unalign7
.Lstringcopy_unalign7_copy5bytes:
stmia r0!, {r2}
strb r3, [r0]
.Lstringcopy_unalign_return:
m_ret inst=pop
.Lstringcopy_unalign7_copy6bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0]
m_ret inst=pop
.Lstringcopy_unalign7_copy7bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0]
m_ret inst=pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
.Lstringcopy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
ldrb r4, [r1]
cbz r4, .Lstringcopy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, .Lstringcopy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq .Lstringcopy_unalign6_copy7bytes
lsrs ip, r3, #24
stmia r0!, {r2, r3}
#if defined(STPCPY)
beq .Lstringcopy_finish
#else
beq .Lstringcopy_unalign_return
#endif
b .Lstringcopy_unalign6
.Lstringcopy_unalign6_copy7bytes:
stmia r0!, {r2}
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_ret inst=pop
.p2align 2
// Can read 5 bytes before possibly crossing a page.
.Lstringcopy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
ldrb r4, [r1]
cbz r4, .Lstringcopy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
stmia r0!, {r2, r3}
b .Lstringcopy_unalign5
.Lstringcopy_unalign_copy5bytes:
stmia r0!, {r2}
strb r4, [r0]
m_ret inst=pop
.Lstringcopy_unalign_copy6bytes:
stmia r0!, {r2}
strb r4, [r0], #1
strb r5, [r0]
m_ret inst=pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
.Lstringcopy_unalign4:
ldmia r1!, {r2}
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
ldmia r1!, {r3}
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
stmia r0!, {r2, r3}
b .Lstringcopy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
.Lstringcopy_unalign3:
ldrb r2, [r1]
cbz r2, .Lstringcopy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, .Lstringcopy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, .Lstringcopy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq .Lstringcopy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
stmia r0!, {r2, r3}
b .Lstringcopy_unalign3
.Lstringcopy_unalign3_copy1byte:
strb r2, [r0]
m_ret inst=pop
.Lstringcopy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
.Lstringcopy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_ret inst=pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
.Lstringcopy_unalign2:
ldrb r2, [r1]
cbz r2, .Lstringcopy_unalign_copy1byte
ldrb r3, [r1, #1]
cbz r3, .Lstringcopy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq .Lstringcopy_unalign_copy3bytes
lsrs ip, r2, #24
beq .Lstringcopy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
stmia r0!, {r2, r3}
b .Lstringcopy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
.Lstringcopy_unalign1:
ldrb r2, [r1]
cbz r2, .Lstringcopy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .Lstringcopy_zero_in_second_register
stmia r0!, {r2, r3}
b .Lstringcopy_unalign1
.Lstringcopy_unalign_copy1byte:
strb r2, [r0]
m_ret inst=pop
.Lstringcopy_unalign_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
.Lstringcopy_unalign_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_ret inst=pop
.Lstringcopy_unalign_copy4bytes:
stmia r0, {r2}
#if defined(STPCPY)
add r0, r0, #3
#endif
m_ret inst=pop
#if defined(STPCPY)
END(stpcpy)
#else
END(strcpy)
#endif

View File

@@ -1,9 +1,11 @@
libc_bionic_src_files_arm += \
arch-arm/cortex-a9/bionic/memcpy.S \
arch-arm/cortex-a9/bionic/memset.S \
arch-arm/cortex-a9/bionic/stpcpy.S \
arch-arm/cortex-a9/bionic/strcat.S \
arch-arm/cortex-a9/bionic/__strcat_chk.S \
arch-arm/cortex-a9/bionic/strcmp.S \
arch-arm/cortex-a9/bionic/strcpy.S \
arch-arm/cortex-a9/bionic/strlen.S \
arch-arm/cortex-a9/bionic/__strcat_chk.S \
arch-arm/cortex-a9/bionic/__strcpy_chk.S \
arch-arm/cortex-a9/bionic/strlen.S \
bionic/memmove.c \

View File

@@ -40,12 +40,10 @@
ENTRY(__strcat_chk)
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
@@ -195,9 +193,6 @@ END(__strcat_chk)
#include "memcpy_base.S"
ENTRY_PRIVATE(__strcat_chk_failed)
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4

View File

@@ -39,7 +39,6 @@
ENTRY(__strcpy_chk)
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -161,7 +160,6 @@ END(__strcpy_chk)
#include "memcpy_base.S"
ENTRY_PRIVATE(__strcpy_chk_failed)
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4

View File

@@ -72,7 +72,6 @@ END(__memcpy_chk)
ENTRY(memcpy)
pld [r1, #64]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -85,7 +84,6 @@ END(memcpy)
ENTRY_PRIVATE(__memcpy_chk_fail)
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0

View File

@@ -0,0 +1,281 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
* Copyright (c) 2013-2014 NVIDIA Corporation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <private/bionic_asm.h>
#include <private/libc_events.h>
.text
.syntax unified
.fpu neon
#define CACHE_LINE_SIZE (64)
#define MEMCPY_BLOCK_SIZE_SMALL (32768)
#define MEMCPY_BLOCK_SIZE_MID (1048576)
#define PREFETCH_DISTANCE_NEAR (CACHE_LINE_SIZE*4)
#define PREFETCH_DISTANCE_MID (CACHE_LINE_SIZE*4)
#define PREFETCH_DISTANCE_FAR (CACHE_LINE_SIZE*16)
ENTRY(memmove)
cmp r2, #0
cmpne r0, r1
bxeq lr
subs r3, r0, r1
bls .L_jump_to_memcpy
cmp r2, r3
bhi .L_reversed_memcpy
.L_jump_to_memcpy:
b memcpy
.L_reversed_memcpy:
push {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
add r0, r0, r2
add r1, r1, r2
/* preload next cache line */
pld [r1, #-CACHE_LINE_SIZE]
pld [r1, #-CACHE_LINE_SIZE*2]
.L_reversed_memcpy_align_dest:
/* Deal with very small blocks (< 32bytes) asap */
cmp r2, #32
blo .L_reversed_memcpy_lt_32bytes
/* no need to align if len < 128 bytes */
cmp r2, #128
blo .L_reversed_memcpy_lt_128bytes
/* align destination to 64 bytes (1 cache line) */
ands r3, r0, #0x3f
beq .L_reversed_memcpy_dispatch
sub r2, r2, r3
0: /* copy 1 byte */
movs ip, r3, lsl #31
ldrbmi ip, [r1, #-1]!
strbmi ip, [r0, #-1]!
1: /* copy 2 bytes */
ldrbcs ip, [r1, #-1]!
strbcs ip, [r0, #-1]!
ldrbcs ip, [r1, #-1]!
strbcs ip, [r0, #-1]!
2: /* copy 4 bytes */
movs ip, r3, lsl #29
bpl 3f
sub r1, r1, #4
sub r0, r0, #4
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0, :32]
3: /* copy 8 bytes */
bcc 4f
sub r1, r1, #8
sub r0, r0, #8
vld1.8 {d0}, [r1]
vst1.8 {d0}, [r0, :64]
4: /* copy 16 bytes */
movs ip, r3, lsl #27
bpl 5f
sub r1, r1, #16
sub r0, r0, #16
vld1.8 {q0}, [r1]
vst1.8 {q0}, [r0, :128]
5: /* copy 32 bytes */
bcc .L_reversed_memcpy_dispatch
sub r1, r1, #32
sub r0, r0, #32
vld1.8 {q0, q1}, [r1]
vst1.8 {q0, q1}, [r0, :256]
.L_reversed_memcpy_dispatch:
/* preload more cache lines */
pld [r1, #-CACHE_LINE_SIZE*3]
pld [r1, #-CACHE_LINE_SIZE*4]
cmp r2, #MEMCPY_BLOCK_SIZE_SMALL
blo .L_reversed_memcpy_neon_pld_near
cmp r2, #MEMCPY_BLOCK_SIZE_MID
blo .L_reversed_memcpy_neon_pld_mid
b .L_reversed_memcpy_neon_pld_far
.L_reversed_memcpy_neon_pld_near:
/* less than 128 bytes? */
subs r2, r2, #128
blo 1f
sub r1, r1, #32
sub r0, r0, #32
mov r3, #-32
.align 4
0:
/* copy 128 bytes in each loop */
subs r2, r2, #128
/* preload to cache */
pld [r1, #-(PREFETCH_DISTANCE_NEAR+CACHE_LINE_SIZE*2)+32]
/* copy a cache line */
vld1.8 {q0, q1}, [r1], r3
vst1.8 {q0, q1}, [r0, :256], r3
vld1.8 {q0, q1}, [r1], r3
vst1.8 {q0, q1}, [r0, :256], r3
/* preload to cache */
pld [r1, #-(PREFETCH_DISTANCE_NEAR+CACHE_LINE_SIZE*2)+32]
/* copy a cache line */
vld1.8 {q0, q1}, [r1], r3
vst1.8 {q0, q1}, [r0, :256], r3
vld1.8 {q0, q1}, [r1], r3
vst1.8 {q0, q1}, [r0, :256], r3
bhs 0b
add r1, r1, #32
add r0, r0, #32
1:
adds r2, r2, #128
bne .L_reversed_memcpy_lt_128bytes
pop {r0, pc}
.L_reversed_memcpy_neon_pld_mid:
subs r2, r2, #128
sub r1, r1, #32
sub r0, r0, #32
mov r3, #-32
.align 4
0:
/* copy 128 bytes in each loop */
subs r2, r2, #128
/* preload to cache */
pld [r1, #-(PREFETCH_DISTANCE_MID+CACHE_LINE_SIZE)+32]
/* copy a cache line */
vld1.8 {q0, q1}, [r1], r3
vst1.8 {q0, q1}, [r0, :256], r3
vld1.8 {q0, q1}, [r1], r3
vst1.8 {q0, q1}, [r0, :256], r3
/* preload to cache */
pld [r1, #-(PREFETCH_DISTANCE_MID+CACHE_LINE_SIZE)+32]
/* copy a cache line */
vld1.8 {q0, q1}, [r1], r3
vst1.8 {q0, q1}, [r0, :256], r3
vld1.8 {q0, q1}, [r1], r3
vst1.8 {q0, q1}, [r0, :256], r3
bhs 0b
add r1, r1, #32
add r0, r0, #32
1:
adds r2, r2, #128
bne .L_reversed_memcpy_lt_128bytes
pop {r0, pc}
.L_reversed_memcpy_neon_pld_far:
sub r2, r2, #128
sub r0, r0, #128
sub r1, r1, #128
.align 4
0:
/* copy 128 bytes in each loop */
subs r2, r2, #128
/* preload to cache */
pld [r1, #-(PREFETCH_DISTANCE_FAR+CACHE_LINE_SIZE*2)+128]
pld [r1, #-(PREFETCH_DISTANCE_FAR+CACHE_LINE_SIZE)+128]
/* read */
vld1.8 {q0, q1}, [r1]!
vld1.8 {q2, q3}, [r1]!
vld1.8 {q8, q9}, [r1]!
vld1.8 {q10, q11}, [r1]!
/* write */
vst1.8 {q0, q1}, [r0, :256]!
vst1.8 {q2, q3}, [r0, :256]!
vst1.8 {q8, q9}, [r0, :256]!
vst1.8 {q10, q11}, [r0, :256]!
sub r0, r0, #256
sub r1, r1, #256
bhs 0b
add r0, r0, #128
add r1, r1, #128
1:
adds r2, r2, #128
bne .L_reversed_memcpy_lt_128bytes
pop {r0, pc}
.L_reversed_memcpy_lt_128bytes:
6: /* copy 64 bytes */
movs ip, r2, lsl #26
bcc 5f
sub r1, r1, #32
sub r0, r0, #32
vld1.8 {q0, q1}, [r1]
vst1.8 {q0, q1}, [r0]
sub r1, r1, #32
sub r0, r0, #32
vld1.8 {q0, q1}, [r1]
vst1.8 {q0, q1}, [r0]
5: /* copy 32 bytes */
bpl 4f
sub r1, r1, #32
sub r0, r0, #32
vld1.8 {q0, q1}, [r1]
vst1.8 {q0, q1}, [r0]
.L_reversed_memcpy_lt_32bytes:
4: /* copy 16 bytes */
movs ip, r2, lsl #28
bcc 3f
sub r1, r1, #16
sub r0, r0, #16
vld1.8 {q0}, [r1]
vst1.8 {q0}, [r0]
3: /* copy 8 bytes */
bpl 2f
sub r1, r1, #8
sub r0, r0, #8
vld1.8 {d0}, [r1]
vst1.8 {d0}, [r0]
2: /* copy 4 bytes */
ands ip, r2, #0x4
beq 1f
sub r1, r1, #4
sub r0, r0, #4
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0]
1: /* copy 2 bytes */
movs ip, r2, lsl #31
ldrbcs ip, [r1, #-1]!
strbcs ip, [r0, #-1]!
ldrbcs ip, [r1, #-1]!
strbcs ip, [r0, #-1]!
0: /* copy 1 byte */
ldrbmi ip, [r1, #-1]!
strbmi ip, [r0, #-1]!
pop {r0, pc}
END(memmove)

View File

@@ -1,12 +1,14 @@
libc_bionic_src_files_arm += \
arch-arm/denver/bionic/memcpy.S \
arch-arm/denver/bionic/memmove.S \
arch-arm/denver/bionic/memset.S \
arch-arm/denver/bionic/__strcat_chk.S \
arch-arm/denver/bionic/__strcpy_chk.S
arch-arm/denver/bionic/__strcpy_chk.S \
# Use cortex-a15 versions of strcat/strcpy/strlen.
libc_bionic_src_files_arm += \
arch-arm/cortex-a15/bionic/stpcpy.S \
arch-arm/cortex-a15/bionic/strcat.S \
arch-arm/cortex-a15/bionic/strcmp.S \
arch-arm/cortex-a15/bionic/strcpy.S \
arch-arm/cortex-a15/bionic/strlen.S \
arch-arm/cortex-a15/bionic/strcmp.S

View File

@@ -4,6 +4,8 @@ libc_bionic_src_files_arm += \
arch-arm/generic/bionic/strcmp.S \
arch-arm/generic/bionic/strcpy.S \
arch-arm/generic/bionic/strlen.c \
bionic/memmove.c \
bionic/__strcat_chk.cpp \
bionic/__strcpy_chk.cpp \
upstream-openbsd/lib/libc/string/stpcpy.c \
upstream-openbsd/lib/libc/string/strcat.c \

View File

@@ -38,9 +38,7 @@
#ifndef _ARM32_ASM_H_
#define _ARM32_ASM_H_
#ifndef _ALIGN_TEXT
# define _ALIGN_TEXT .align 0
#endif
#define __bionic_asm_align 0
#undef __bionic_asm_custom_entry
#undef __bionic_asm_custom_end
@@ -50,10 +48,4 @@
#undef __bionic_asm_function_type
#define __bionic_asm_function_type #function
#if defined(__ELF__) && defined(PIC)
#define PIC_SYM(x,y) x ## ( ## y ## )
#else
#define PIC_SYM(x,y) x
#endif
#endif /* !_ARM_ASM_H_ */

View File

@@ -40,12 +40,10 @@
ENTRY(__strcat_chk)
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
@@ -194,8 +192,6 @@ END(__strcat_chk)
#include "memcpy_base.S"
ENTRY_PRIVATE(__strcat_chk_failed)
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4

View File

@@ -39,7 +39,6 @@
ENTRY(__strcpy_chk)
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -161,7 +160,6 @@ END(__strcpy_chk)
#include "memcpy_base.S"
ENTRY_PRIVATE(__strcpy_chk_failed)
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4

View File

@@ -53,7 +53,6 @@ END(__memcpy_chk)
ENTRY(memcpy)
pld [r1, #64]
stmfd sp!, {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
@@ -66,7 +65,6 @@ END(memcpy)
ENTRY_PRIVATE(__memcpy_chk_fail)
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0

View File

@@ -36,7 +36,6 @@
// Assumes neon instructions and a cache line size of 32 bytes.
ENTRY_PRIVATE(MEMCPY_BASE)
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4

View File

@@ -43,7 +43,6 @@ ENTRY(__memset_chk)
bls .L_done
// Preserve lr for backtrace.
.save {lr}
push {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
@@ -69,7 +68,6 @@ END(bzero)
/* memset() returns its first argument. */
ENTRY(memset)
.save {r0}
stmfd sp!, {r0}
.cfi_def_cfa_offset 4
.cfi_rel_offset r0, 0

View File

@@ -168,7 +168,6 @@ ENTRY(strcmp)
bne .L_do_align
/* Fast path. */
.save {r4-r7}
init
.L_doubleword_aligned:

View File

@@ -5,8 +5,10 @@ libc_bionic_src_files_arm += \
arch-arm/krait/bionic/__strcat_chk.S \
arch-arm/krait/bionic/__strcpy_chk.S \
# Use cortex-a15 versions of strcat/strcpy/strlen.
# Use cortex-a15 versions of strcat/strcpy/strlen and standard memmove
libc_bionic_src_files_arm += \
arch-arm/cortex-a15/bionic/stpcpy.S \
arch-arm/cortex-a15/bionic/strcat.S \
arch-arm/cortex-a15/bionic/strcpy.S \
arch-arm/cortex-a15/bionic/strlen.S \
bionic/memmove.c \

View File

@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
ENTRY(accept4)
ENTRY(__accept4)
mov ip, r7
ldr r7, =__NR_accept4
swi #0
@@ -10,5 +10,5 @@ ENTRY(accept4)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(accept4)
b __set_errno_internal
END(__accept4)

View File

@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
ENTRY(perf_event_open)
ENTRY(__arm_fadvise64_64)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 16
@@ -11,12 +11,12 @@ ENTRY(perf_event_open)
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
ldmfd ip, {r4, r5, r6}
ldr r7, =__NR_perf_event_open
ldr r7, =__NR_arm_fadvise64_64
swi #0
ldmfd sp!, {r4, r5, r6, r7}
.cfi_def_cfa_offset 0
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(perf_event_open)
b __set_errno_internal
END(__arm_fadvise64_64)

View File

@@ -10,5 +10,5 @@ ENTRY(__brk)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__brk)

View File

@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
ENTRY(clock_nanosleep)
ENTRY(__clock_nanosleep)
mov ip, r7
ldr r7, =__NR_clock_nanosleep
swi #0
@@ -10,5 +10,5 @@ ENTRY(clock_nanosleep)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(clock_nanosleep)
b __set_errno_internal
END(__clock_nanosleep)

View File

@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
ENTRY(connect)
ENTRY(__connect)
mov ip, r7
ldr r7, =__NR_connect
swi #0
@@ -10,5 +10,5 @@ ENTRY(connect)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(connect)
b __set_errno_internal
END(__connect)

View File

@@ -18,5 +18,5 @@ ENTRY(__epoll_pwait)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__epoll_pwait)

View File

@@ -10,5 +10,5 @@ ENTRY(__exit)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__exit)

View File

@@ -10,5 +10,5 @@ ENTRY(__fcntl64)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__fcntl64)

View File

@@ -10,5 +10,5 @@ ENTRY(__fstatfs64)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__fstatfs64)

View File

@@ -10,5 +10,5 @@ ENTRY(__getcpu)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__getcpu)

View File

@@ -10,5 +10,5 @@ ENTRY(__getcwd)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__getcwd)

View File

@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
ENTRY(getdents)
ENTRY(__getdents64)
mov ip, r7
ldr r7, =__NR_getdents64
swi #0
@@ -10,5 +10,5 @@ ENTRY(getdents)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(getdents)
b __set_errno_internal
END(__getdents64)

View File

@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
ENTRY(getpid)
ENTRY(__getpid)
mov ip, r7
ldr r7, =__NR_getpid
swi #0
@@ -10,5 +10,5 @@ ENTRY(getpid)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(getpid)
b __set_errno_internal
END(__getpid)

View File

@@ -10,5 +10,5 @@ ENTRY(__getpriority)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__getpriority)

View File

@@ -10,5 +10,5 @@ ENTRY(__ioctl)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__ioctl)

View File

@@ -18,5 +18,5 @@ ENTRY(__llseek)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__llseek)

View File

@@ -18,5 +18,5 @@ ENTRY(__mmap2)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__mmap2)

View File

@@ -10,5 +10,5 @@ ENTRY(__openat)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__openat)

View File

@@ -18,5 +18,5 @@ ENTRY(__ppoll)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__ppoll)

View File

@@ -18,5 +18,5 @@ ENTRY(__pselect6)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__pselect6)

View File

@@ -10,5 +10,5 @@ ENTRY(__ptrace)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__ptrace)

View File

@@ -10,5 +10,5 @@ ENTRY(__reboot)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__reboot)

View File

@@ -10,5 +10,5 @@ ENTRY(__rt_sigaction)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__rt_sigaction)

View File

@@ -10,5 +10,5 @@ ENTRY(__rt_sigpending)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__rt_sigpending)

View File

@@ -10,5 +10,5 @@ ENTRY(__rt_sigprocmask)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__rt_sigprocmask)

View File

@@ -10,5 +10,5 @@ ENTRY(__rt_sigsuspend)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__rt_sigsuspend)

View File

@@ -10,5 +10,5 @@ ENTRY(__rt_sigtimedwait)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__rt_sigtimedwait)

View File

@@ -10,5 +10,5 @@ ENTRY(__sched_getaffinity)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__sched_getaffinity)

View File

@@ -10,5 +10,5 @@ ENTRY(__set_tid_address)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__set_tid_address)

View File

@@ -10,5 +10,5 @@ ENTRY(__set_tls)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__set_tls)

View File

@@ -10,5 +10,5 @@ ENTRY(__sigaction)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__sigaction)

View File

@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
ENTRY(signalfd4)
ENTRY(__signalfd4)
mov ip, r7
ldr r7, =__NR_signalfd4
swi #0
@@ -10,5 +10,5 @@ ENTRY(signalfd4)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(signalfd4)
b __set_errno_internal
END(__signalfd4)

View File

@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
ENTRY(socket)
ENTRY(__socket)
mov ip, r7
ldr r7, =__NR_socket
swi #0
@@ -10,5 +10,5 @@ ENTRY(socket)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(socket)
b __set_errno_internal
END(__socket)

View File

@@ -10,5 +10,5 @@ ENTRY(__statfs64)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__statfs64)

View File

@@ -10,5 +10,5 @@ ENTRY(__timer_create)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__timer_create)

View File

@@ -10,5 +10,5 @@ ENTRY(__timer_delete)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__timer_delete)

View File

@@ -10,5 +10,5 @@ ENTRY(__timer_getoverrun)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__timer_getoverrun)

View File

@@ -10,5 +10,5 @@ ENTRY(__timer_gettime)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__timer_gettime)

View File

@@ -10,5 +10,5 @@ ENTRY(__timer_settime)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__timer_settime)

View File

@@ -18,5 +18,5 @@ ENTRY(__waitid)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(__waitid)

View File

@@ -10,7 +10,7 @@ ENTRY(_exit)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(_exit)
.globl _Exit

View File

@@ -10,5 +10,5 @@ ENTRY(acct)
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
b __set_errno_internal
END(acct)

Some files were not shown because too many files have changed in this diff Show More