History log of /bionic/libc/bionic/ndk_cruft.cpp
Revision Date Author Comments
0ac0cee0d1ab60a92103a5021e76ec31da2e3234 07-Jan-2016 Josh Gao <jmgao@google.com> Remove dlmalloc.

Bug: http://b/17207577
Change-Id: Ie009badca6deb1f91b27a4340b70cdd6bedff893
bba395492a0bb6ee72d0ad8e4d468e852392220e 21-Jan-2016 Dimitry Ivanov <dimitry@google.com> Revert "Temporary apply LIBC version to __pthread_gettid"

This reverts commit 0ef1d121b5e4845f4ef3b59ae9a1f99ceb531186.

Bug: http://b/26392296
Bug: http://b/26391427
Change-Id: I7bbb555de3a43813e7623ff6ad4e17874d283eca
0ef1d121b5e4845f4ef3b59ae9a1f99ceb531186 05-Jan-2016 Dimitry Ivanov <dimitry@google.com> Temporary apply LIBC version to __pthread_gettid

This is workaround for http://b/26391427

Bug: http://b/26391427
Change-Id: Ibf5c611cf4c04dfa595644225e6d9503089a18da
c8bb96a163ac4e4f47f305df9e4dc1252f6a938d 05-Jan-2016 Dimitry Ivanov <dimitry@google.com> Revert "Temporary apply LIBC version to __pthread_gettid"

This reverts commit eb90e91cb5872f6aac7008b0c83e103d396be196.

Change-Id: I63450087b6d3c23218b77d5eee37965f254a82d6
eb90e91cb5872f6aac7008b0c83e103d396be196 05-Jan-2016 Dimitry Ivanov <dimitry@google.com> Temporary apply LIBC version to __pthread_gettid

This is workaround for http://b/26391427

Bug: http://b/26391427
Change-Id: I4ccc56e8b1bd2597f267df9706a33bb635abcfcb
bc2e88a85d5fd3e59c041a667283378c1503a16c 16-Dec-2015 Dimitry Ivanov <dimitry@google.com> Revert "Revert "Remove remaining ndk_cruft from LP64 platforms""

This reverts commit 23af25b747b5e7b0ca513a87b32f1f6a3cb99698.

Bug: http://b/26164862
Change-Id: I201bf49530f33f8ba6a1a35b79723afb9e84c7a5
23af25b747b5e7b0ca513a87b32f1f6a3cb99698 15-Dec-2015 Dimitry Ivanov <dimitry@google.com> Revert "Remove remaining ndk_cruft from LP64 platforms"

This reverts commit b1d0a2ae7790f882d8f1ab24d7ef15e2b90c8ca2.

Change-Id: I1da06be0b78a4f2a4cad7e4a19a3ee755f55a813
b1d0a2ae7790f882d8f1ab24d7ef15e2b90c8ca2 15-Dec-2015 Dimitry Ivanov <dimitry@google.com> Remove remaining ndk_cruft from LP64 platforms

This change removes endpwent, dlmalloc_inspect_all, dlmalloc_trim
from lp64 libc.so. It also removed necessety of having brillo
version scripts for lp64 platforms.

Bug: http://b/26164862
Change-Id: I4e9b38907bb1dc410f0eb6d2f5d5944fe713da51
d51a0b0f9da767d5d67c9f3565c34afcaab1a908 05-Dec-2015 Rohit Agrawal <rohitagr@google.com> Base bcopy on memmove rather than memcpy.

POSIX defined bcopy to handle overlapping memory akin to memmove and
bionic appears to have always done so.

Change-Id: I2599113411e3532913270ba1c1b49e35cbc5f106
cfd5a46b092536905ffe45a19cfe1b9e35aa8d10 05-Dec-2015 Elliott Hughes <enh@google.com> Make all of ndk_cruft.cpp one big extern "C".

Change-Id: Iddd9b5f36e661e443fa13d12326e72df8c0d209c
bb46afd6c44a847efe96e30d72708fd2d0906e8c 05-Dec-2015 Elliott Hughes <enh@google.com> Revert "Revert "Remove __sinit and __sdidinit.""

This reverts commit c8bae05f3ff9f1c736f7be70fa17d02795d748bb.

We were breaking init (ueventd) because we initialize system properties
before we initialize stdio. The new system property implementation uses
stdio to read from /property_contexts, so we end up touching stdio data
structures before they've been initialized.

This second attempt takes things further by removing the stdio initialization
function altogether. The data structures for stdin/stdout/stderr can be
statically initialized as data, and -- since we already had to give the
atexit implementation a backdoor for stdio -- we can just admit that we
need to clean up stdio, and that we always do so last.

This patch also removes the 17 statically pre-allocated file structures,
so the first fopen will now allocate a block of 10 (the usual overflow
behavior). I did this just to make my life simpler, but it's not actually
necessary to remove it if we want it back.

Change-Id: I936b2eb5e88e4ebaf5516121872b71fc88e5609c
c8bae05f3ff9f1c736f7be70fa17d02795d748bb 05-Dec-2015 Elliott Hughes <enh@google.com> Revert "Remove __sinit and __sdidinit."

This reverts commit 4371961e00ad83fca033992c8a19c7d262fe6f84.

This broke booting; ueventd crashes with a null pointer dereference
somewhere in __sfp (but the kernel doesn't unwind, so I don't know
what was calling __sfp).

Change-Id: I65375fdfdf1d339a06558b4057b580cacd6324e2
8766edc098304436a8b2b1b01ef01b9401918d54 05-Dec-2015 Elliott Hughes <enh@google.com> Fix GCC build.

error: '__sdidinit' initialized and declared 'extern' [-Werror]

Change-Id: I97d9c174da6a99ca61b72572dfb4694813372a60
4371961e00ad83fca033992c8a19c7d262fe6f84 03-Dec-2015 Elliott Hughes <enh@google.com> Remove __sinit and __sdidinit.

We're eagerly initializing stdio now, so this can all be simplified.

Change-Id: Icb288f8dd0ee08f02bea0d23670f75e78bed6b99
9978a9a82e3b883b32a7a0bcd5cac18f31e7a68d 30-Oct-2015 Christopher Ferris <cferris@google.com> Move __set_errno to ndk_cruft.cpp.

Change-Id: I5caa1cc161961d2e4629429c0d406875b93cdbd0
d7c7daada276276e77446c099a67dd3ea15ea72e 28-Oct-2015 Elliott Hughes <enh@google.com> Remove the legacy endusershell/getusershell/setusershell stubs.

These don't work, aren't thread-safe, aren't in POSIX (or our header
files), and are only used by one app (whose developers I've contacted).
But the presence of these symbols causes configure to be confused, which
is a pain for Brillo.

Bug: http://b/24812426
Change-Id: I7fa6ef82864d5563929d9b8a7f8fcacb30b26d45
fb8fd5076ea7ccc77960346e52b81134ccbb9ea3 13-Oct-2015 Elliott Hughes <enh@google.com> Opt Brillo out of the ndk cruft.

Bug: http://b/24812426
Change-Id: I6a858d8ceebce9e2285e5b12de9fd89d2b42b352
e49af9bca5706ecbc9c4f3cf15be990294106952 06-Jun-2015 Christopher Ferris <cferris@google.com> Export two dlmalloc functions everywhere.

The functions dlmalloc_inspect_all and dlmalloc_trim get
exported on devices that use dlmalloc, so be consistent and
export them everywhere.

Bug: 21640784
(cherry picked from commit f9554a17765fd91d97d1f74913a626f01e880cee)

Change-Id: I1000221423c16c356bb6301e55f726db01c3f209
f9554a17765fd91d97d1f74913a626f01e880cee 06-Jun-2015 Christopher Ferris <cferris@google.com> Export two dlmalloc functions everywhere.

The functions dlmalloc_inspect_all and dlmalloc_trim get
exported on devices that use dlmalloc, so be consistent and
export them everywhere.

Bug: 21640784
Change-Id: I5b8796cd03c8f401d37d9c22823144f766f9c4c7
2f836d4989845c0c82a1e4f99206fb0ff0d137a2 18-Mar-2015 Yabin Cui <yabinc@google.com> Make __get_thread inlined.

Bug: 19825434

Change-Id: Ifb672a45a5776b83625a25654ed0d6f7fc368ae3
52d7f1a94fd6ccb87dabd21c682f68d31810aca9 25-Feb-2015 Yabin Cui <yabinc@google.com> Move endpwent to ndk_cruft.cpp.

Bug: 19109159
Change-Id: I3683a247643006ea6d6bcf3845f57d1908d457d7
7fb680bfda059746c9bb8939ffaed600eecc3a29 24-Feb-2015 Yabin Cui <yabinc@google.com> Move getusershell/endusershell/setusershell to ndk_cruft.cpp.

Bug: 19108648
Change-Id: I65134040345398dde612c4325d902db58f3bd2be
4c5891d93dc151e2f07fc87ae967f23e6c3d6e0c 20-Feb-2015 Elliott Hughes <enh@google.com> valgrind can't find syscall because we didn't put it in <unistd.h>.

Change-Id: I1e47291d4476bd2816138a8cf58f29d4986d39e3
1edfd9e36acff1824c5e8dcfbdc0580dcc74e1bb 27-Jan-2015 Elliott Hughes <enh@google.com> x86 has an assembler bcopy implementation.

Change-Id: I4ed7af3c5b104f86550120401f773150c460f37b
76f8916b904db14facf811ae44e1265261349702 26-Jan-2015 Elliott Hughes <enh@google.com> Clean up <stdlib.h> slightly.

Interestingly, this mostly involves cleaning up our implementation of
various <string.h> functions.

Change-Id: Ifaef49b5cb997134f7bc0cc31bdac844bdb9e089
f183f95946c699924d8ce6c0ee723bf7f4fdfe85 09-Oct-2014 Christopher Ferris <cferris@google.com> 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 c9734d24d92f4737f5ab3808c77d816a1b084582)

Change-Id: Iee9a777f66a1edb407d7563a60792b767ac4f83a
c9734d24d92f4737f5ab3808c77d816a1b084582 09-Oct-2014 Christopher Ferris <cferris@google.com> 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
Change-Id: I8f20963b0b8d323489dc083e4063779e0d1d7447
0f001b67fea27f8d60afc4677e8970d32a4e3792 12-Sep-2014 Elliott Hughes <enh@google.com> Remove "private/bionic_pthread.h".

Bug: 17476168
Change-Id: Id642987e641de81e914a28daea4ffe9d11e090ed
fc829736e1f399a2b82058b24bb94f6bdab22469 08-Sep-2014 Elliott Hughes <enh@google.com> 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
51c8355d5cf4b83ccd2ad250ca4c61a616356c2b 08-Sep-2014 Elliott Hughes <enh@google.com> 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.

Bug: 16205834
Change-Id: Idde7b46df4f253e39675600bcf82352879a716e7
f90355844663b85dd57c3adcd9e92c2ee6850412 06-Sep-2014 Christopher Ferris <cferris@google.com> Add dlmalloc_usable_size for 32 bit arches.

Bug: 17337831

(cherry picked from commit 1c365cb494d8cab1b639ecef21514425647e606b)

Change-Id: Ice100e42eeac4b9c3b77737a546ec33174adcb2f
1c365cb494d8cab1b639ecef21514425647e606b 06-Sep-2014 Christopher Ferris <cferris@google.com> Add dlmalloc_usable_size for 32 bit arches.

Bug: 17337831
Change-Id: I50c50559a5dfa083c85f064042bc0726718c988b
5dea47221a116aa87b0c286230c944ed6b629636 04-Sep-2014 Elliott Hughes <enh@google.com> 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
1e010d60397db706cd3d1c4d5701a2bced441aa8 04-Sep-2014 Elliott Hughes <enh@google.com> 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.

Bug: 17291075
Change-Id: Iaf6171c3ec65c39c1868364d5b35ea280e29a363
59b0933e6d4cd9671ad3b6baeae424bc72c8ece0 06-Aug-2014 Elliott Hughes <enh@google.com> Explain how wcswcs ended up in ndk_cruft.cpp.

(cherry picked from commit 1628eb1d43008c52b00ec98d10c4fd9e8b6fc7c5)

Change-Id: I335b35038781d0426b3647727e6c4f22c83e187b
1628eb1d43008c52b00ec98d10c4fd9e8b6fc7c5 06-Aug-2014 Elliott Hughes <enh@google.com> Explain how wcswcs ended up in ndk_cruft.cpp.

Change-Id: Ie45148095b2d5c3896c0df623d5d06a700c33c70
ac6467587e864d199377f14281da4641f979a68a 05-Jun-2014 Dan Albert <danalbert@google.com> Revert "Revert "Remove ftime from bionic LP64""

This reverts commit 0921204660b9597de795065d0350a787035ad589.

Change-Id: I749af8d7d429cda9f9d09a75bd30df54e6b1dd65
462abab12b074c62c0999859e65d5a32ebb41951 14-Jun-2014 Dan Albert <danalbert@google.com> 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
891dedb935b50f1abb39eedfe33049a1e49283cb 13-Jun-2014 David 'Digit' Turner <digit@google.com> 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
8229ae46f4fb165a18da4dca1be74c4c099c3ee7 14-Jun-2014 Dan Albert <danalbert@google.com> 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
bffbfeed7a595dcbe5843a77d84c409a0225b4e1 07-Jun-2014 Elliott Hughes <enh@google.com> Add the missing issetugid binary compatibility stub.

Bug: 14569474
Change-Id: I3bedc1a0acf356af76424ceaf62ae7e85239f617
d1ead2af8bf2f6bb801da272e3778f89efefe613 07-Jun-2014 Elliott Hughes <enh@google.com> Fix ndk_cruft.cpp __getdents64 build failure.

Change-Id: Ia463113da0575b36b5a9935d8d45e7bd2c801357
3d5cb30d23cfc6a72f01c00246e69a2c614c8228 06-Jun-2014 Elliott Hughes <enh@google.com> Remove getdents from bionic.

Bug: 11156955
Change-Id: I6c306989801be552d85fba8a50dcdc79282fb9d2
205dd7d9b3ba314ef8601e4613823c2d62a0605b 04-Jun-2014 Dan Albert <danalbert@google.com> 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
0921204660b9597de795065d0350a787035ad589 05-Jun-2014 Dan Albert <danalbert@google.com> Revert "Remove ftime from bionic LP64"

Breaking some build... will look in to it later.

This reverts commit 26d6799bbe170b0955f564974b584c1471efdca1.

Change-Id: I35fa770221be3a181bd37c6c3dce1bf37a69a4a1
26d6799bbe170b0955f564974b584c1471efdca1 05-Jun-2014 Dan Albert <danalbert@google.com> Remove ftime from bionic LP64

Bug: 13935372
Change-Id: I5dd31147143b23a090a3b75b846dc5354e599121
001f8f041bf21c53d4a0b919ef2c859b047bac0a 04-Jun-2014 Dan Albert <danalbert@google.com> Removes wcswcs from bionic for LP64.

Bug: 13935372
Change-Id: I0deb15e769da4fa81bb65a87f3c86db5163a5796
430cf1a6c32471ada4dad028acbfcc032da01fd3 03-Jun-2014 Elliott Hughes <enh@google.com> DO NOT MERGE fdprintf backward compatibility shim.

Fixes LP64 build.

Change-Id: Ic76005cd1f5a55344ea8ee3d070d25631d011037
b30aff405a220495941f1673b0a5e66c4fa8b84c 28-May-2014 Elliott Hughes <enh@google.com> 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 75c55ff84ebfa686c7ae2cc8ee431c6a33bd46b4.

Bug: 15195455
Change-Id: I6ffb13e5cf6a35d8f59f692d94192aae9ab4593d
001707363ddee680d466c88dd330900683dadf63 24-May-2014 Anthony King <anthonydking@slimroms.net> Restore tkill for LP32.

libmono from Unity still requires tkill(2).

Change-Id: I37a1994b08086c7fedb5c78ea0dadf2d72bc1463
Signed-off-by: Anthony King <anthonydking@slimroms.net>
bd3a98c6b9850a8e55fb0e0ed9f045212c494881 25-May-2014 Elliott Hughes <enh@google.com> 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
fcac8ff97f6b6cced6546e0096cadc1039b68b5e 22-May-2014 Elliott Hughes <enh@google.com> Switch to POSIX dprintf/vdprintf.

Bug: 11156955
Change-Id: I734bd02db514367ab119a48304aae9767958e367
eae5902e73dc4381811e08fd2334bf4a9300a928 23-Apr-2014 Elliott Hughes <enh@google.com> Remove strntoimax and strntoumax from the future.

Where do these turds come from?

Change-Id: Id9ad2cc85c6128aa63b5d56ff2aa455bde39a5eb
efbdb53f84f4e1faf38f3c1a4cb60a83b9885ef4 08-Apr-2014 Elliott Hughes <enh@google.com> Remove a non-standard turd: strtotimeval.

Change-Id: I1b1e40746cb573e3fb73a5276969b40c5da36d15
a4eafa6dbc98378f3fa759fec8590871e2b5ae29 10-Mar-2014 Calin Juravle <calin@google.com> Removed pthread_attr_getstackaddr/pthread_attr_setstackaddr

Moved existing definitions to ndk_cruft to preserve NDK compatibility.

Bug: 13281069
Change-Id: I6f260de69afa55a6274f0d13145c19ac6517b9d5
152b9de19ade833ada124390ef153e53d3d3e2ed 10-Mar-2014 Elliott Hughes <enh@google.com> Remove non-standard memswap.

Change-Id: I06548dda339987b755ef7139c590ca3e1f9fe0a9
0e44bc3baeb1677e5fbdda87a737b9c508c95132 25-Feb-2014 Elliott Hughes <enh@google.com> Remove <asm/page.h>.

If we have PAGE_SIZE/PAGESIZE, POSIX says they should be in <limits.h>.

Change-Id: I3c2d574ea2aea81f524874a156361411a4ffa18e
062092543fdbd6fa2676e4f5b37a15f7bba94332 07-Nov-2013 Elliott Hughes <enh@google.com> Clean up the 32-bit kernel support, fix LP64 fcntl declaration.

In practice, thanks to all the registers the stubs don't actually change,
but it's confusing to have an incorrect declaration.

I suspect that fcntl remains broken for aarch64; it happens to work for
x86_64 because the first vararg argument gets placed in the right register
anyway, but I have no reason to believe that's true for aarch64.

This patch adds a unit test, though, so we'll be able to tell when we get
as far as running the unit tests.

Change-Id: I58dd0054fe99d7d51d04c22781d8965dff1afbf3
567a8de3ca5b4c4f033bfbcdd339a3fd59a76227 25-Oct-2013 Elliott Hughes <enh@google.com> Start moving 32-bit cruft somewhere it won't pollute 64-bit.

Change-Id: I03a6a50a5243f29e50fb58a3cf8b5e7198640baa