41ef902379ba24bd8a3ca6d7733b8376efb55ebd |
|
14-Feb-2015 |
Elliott Hughes <enh@google.com> |
Fix memchr overflow. The overflow's actually in the generic C implementation of memchr. While I'm here, let's switch our generic memrchr to the OpenBSD version too. Bug: https://code.google.com/p/android/issues/detail?id=147048 Change-Id: I296ae06a1ee196d2c77c95a22f11ee4d658962da
|
8d4c55cc741c4107f8a0fba16e5c178c9feb5d81 |
|
06-Dec-2014 |
Elliott Hughes <enh@google.com> |
Clean up the x86-64 and x86 setjmp families. Bug: 16918359 Change-Id: Ic8ca0af9ea99636bc71f19d46071f1cea6eef982
|
2e7145c048e15bf6646befd70aa08d1bfe7b6c26 |
|
10-Nov-2014 |
Varvara Rainchik <varvara.rainchik@intel.com> |
Add 64-bit slm optimized strlcpy and srlcat. Change-Id: Ic948934d91c83bbfdfd00c05ee8b14952e012549 Signed-off-by: Varvara Rainchik <varvara.rainchik@intel.com>
|
86d16a053eeff3bd432695471d8942e99b2db598 |
|
17-Sep-2014 |
Elliott Hughes <enh@google.com> |
Clean up the architecture-specific makefiles. Group things appropriately and name each group. Bug: 18160821 (cherry picked from commit 7c02d9428ca18ac600f7ba7d51bb24ca71e733f6) Change-Id: I863242515af44058154d03e2d8c34678e682d66a
|
7dc2b7b30ddc158a5e7aa6945526eb65d354b96c |
|
11-Sep-2014 |
Elliott Hughes <enh@google.com> |
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... (cherry picked from commit 36f451a6d93b6807944d99fa23396e039c47e845) Bug: 17436734 Change-Id: Ic1ea1184db6655c5d96180dc07bcc09628e647cb
|
7c02d9428ca18ac600f7ba7d51bb24ca71e733f6 |
|
17-Sep-2014 |
Elliott Hughes <enh@google.com> |
Clean up the architecture-specific makefiles. Group things appropriately and name each group. Change-Id: I0da45eb0ccde19c31d5e984d0e6eb3dad26630dc
|
36f451a6d93b6807944d99fa23396e039c47e845 |
|
11-Sep-2014 |
Elliott Hughes <enh@google.com> |
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
|
642182341018b282148280a7bdb771493e15bd7d |
|
26-Aug-2014 |
Elliott Hughes <enh@google.com> |
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> (cherry picked from commit 57b7a6110e7e8b446fc23cce4765ff625ee0a105) Change-Id: I87e679ee1c0db8092f2d1221c8e7c1461545c5a4
|
57b7a6110e7e8b446fc23cce4765ff625ee0a105 |
|
26-Aug-2014 |
Elliott Hughes <enh@google.com> |
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
|
5386a741e77bfff4e72ca6861fdd3fe2208452ce |
|
05-Aug-2014 |
Dan Albert <danalbert@google.com> |
Revert "Replaces vfork() implementation with fork()" We're getting cold feet on this one... let's put it back. This reverts commit 210331d9762037afb9b5ed8413079c6f65872df9. Change-Id: I6b0d3c2b1dbf7f1dc9566979a91b7504c2189269 (cherry picked from commit 6a918870bab1a55a5f57dd7954abd9a8a27c1bc2)
|
6a918870bab1a55a5f57dd7954abd9a8a27c1bc2 |
|
05-Aug-2014 |
Dan Albert <danalbert@google.com> |
Revert "Replaces vfork() implementation with fork()" We're getting cold feet on this one... let's put it back. This reverts commit 210331d9762037afb9b5ed8413079c6f65872df9. Change-Id: I6b0d3c2b1dbf7f1dc9566979a91b7504c2189269
|
24614b4729a4c8665193f5793b93019b37f779b1 |
|
13-Jun-2014 |
Elliott Hughes <enh@google.com> |
Remove __memcmp16 from bionic. Change-Id: I2486d667d96c8900dd368d855f37c1327161efb7
|
210331d9762037afb9b5ed8413079c6f65872df9 |
|
06-Jun-2014 |
Dan Albert <danalbert@google.com> |
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
|
40fca0f08b1eb87e283d6f634d9759ed3161f517 |
|
04-Jun-2014 |
Dan Albert <danalbert@google.com> |
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
|
ce9ce28e5d760e32ab6c894dfaf7b8dad6de7ff6 |
|
03-Jun-2014 |
Dan Albert <danalbert@google.com> |
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
|
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
|
75c55ff84ebfa686c7ae2cc8ee431c6a33bd46b4 |
|
28-May-2014 |
Narayan Kamath <narayan@google.com> |
Revert "Lose the hand-written futex assembler." This reverts commit ced906c849704f379d7191822f6d74993d4fa296. Causes issues on art / dalvik due to a broken return value check and other undiagnosed issues. bug: 15195455 Change-Id: I5d6bbb389ecefb0e33a5237421a9d56d32a9317c
|
6f2bde344123d8503cd60f3ecd3420f39aa24eb9 |
|
23-May-2014 |
Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> |
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>
|
fd0ce866ce46ed62aa17dc2959a085cb3bf5755d |
|
24-May-2014 |
Christopher Ferris <cferris@google.com> |
Revert "Add optimized AArch64 versions of bcopy and wmemmove based on memmove" This reverts commit 8167dd7cb98e87ffe9b40e4993c330b244ca2234. 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
|
8167dd7cb98e87ffe9b40e4993c330b244ca2234 |
|
23-May-2014 |
Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> |
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>
|
ced906c849704f379d7191822f6d74993d4fa296 |
|
23-May-2014 |
Elliott Hughes <enh@google.com> |
Lose the hand-written futex assembler. Also stop exporting 'futex'. Bug: 12250341 Change-Id: Icc4fa4296cd04dfe0d1061822c69e2eb40c3433a
|
a020a244ae0a185cd53905ec84093e5e6eb7d88c |
|
29-Apr-2014 |
Varvara Rainchik <varvara.rainchik@intel.com> |
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>
|
5a92284167ffba6d45210ef6889fa7d255c15d4f |
|
24-Apr-2014 |
Varvara Rainchik <varvara.rainchik@intel.com> |
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>
|
5363a45f2b6d4eeb054710d0886bbadea8a15273 |
|
08-Apr-2014 |
Elliott Hughes <enh@google.com> |
Clean up localeconv(3). The OpenBSD doesn't support C99, and the extent to which we support locales is trivial, so just do it ourselves. Change-Id: If0a06e627ecc593f7b8ea3e9389365782e49b00e
|
50282f72bb9be6b49212a3978faec70786e9f97f |
|
25-Mar-2014 |
Pavel Chupin <pavel.v.chupin@intel.com> |
Add lconv declaration and localeconv(3) lconv is taken from ndk/sources/android/support/include/locale.h and matches bsd/glibc upstream. Keep old declaration for 32-bits for compatibility. localeconv.c and deps are taken from openbsd upstream. Changed strtod.c accordingly. Change-Id: I9fcc4d15f5674d192950d80edf26f36006cd31b4 Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
|
b6208836cb9d3254a5e2046a71ac4ec30a0efdf5 |
|
26-Feb-2014 |
Elliott Hughes <enh@google.com> |
Fix LP64 builds after OpenBSD string changes. Change-Id: I07202f6484e716d153d0387fcfc023e119438251
|
53e43292aac91bf62995788cd5ca2ceb7caea283 |
|
25-Feb-2014 |
Elliott Hughes <enh@google.com> |
More OpenBSD cleanup (primarily string). This patch removes the string/ and wchar/ directories. Change-Id: Ia489904bc67047e4bc79acb1f3eec21aa3fe5f0d
|
6e39ba73bfd9504762e8798fd6b293f11d5fdf7e |
|
20-Feb-2014 |
Elliott Hughes <enh@google.com> |
Stop advertising an arm32-specific hack like it's a build system feature. Change-Id: I3a830b4a3516b6eb8e4f8e6e6b122a22a2e341df
|
f25d677147ae55a1f3b6ef7fa3ee27921792813f |
|
24-Jan-2014 |
Ying Wang <wangying@google.com> |
Reconfig libc's Android.mk to build for multilib 1. Moved arch-specific setup to their own files: - <arch>/<arch>.mk, arch-specific configs. Variables in those config end with the arch name. - removed the extra complexity introduced by function libc-add-cpu-variant-src, which seems to be not very useful these days. 2. Separated out the crt object files generation rules and set up the rules for both TARGET_ARCH and TARGET_2ND_ARCH. 3. Build all the libraries for both TARGET_ARCH and TARGET_2ND_ARCH, with the arch-specific LOCAL_ variables. Bug: 11654773 Change-Id: I9c2d85db0affa49199d182236d2210060a321421
|
0266ae5f884d72da58f33a072e865ba131234a5e |
|
11-Feb-2014 |
Elliott Hughes <enh@google.com> |
Switch <elf.h> over to linux uapi under the covers. Remove the linker's reliance on BSD cruft and use the glibc-style ElfW macro. (Other code too, but the linker contains the majority of the code that needs to work for Elf32 and Elf64.) All platforms need dl_iterate_phdr_static, so it doesn't make sense to have that part of the per-architecture configuration. Bug: 12476126 Change-Id: I1d7f918f1303a392794a6cd8b3512ff56bd6e487
|
36d6188f8cd8b948fb797f11d9620d63d0c2215a |
|
19-Nov-2013 |
Elliott Hughes <enh@google.com> |
Clean up forking and cloning. The kernel now maintains the pthread_internal_t::tid field for us, and __clone was only used in one place so let's inline it so we don't have to leave such a dangerous function lying around. Also rename files to match their content and remove some useless #includes. Change-Id: I24299fb4a940e394de75f864ee36fdabbd9438f9
|
bf425680e484486803bf21e4c4cd1e3f36614a3c |
|
25-Oct-2013 |
Elliott Hughes <enh@google.com> |
Let the compiler worry about implementing ffs(3). It does at least as good a job as our old hand-written assembly anyway. Change-Id: If7c4a1ac508bace0b71ee7b67808caa6eabf11d2
|
9ea4d5f3a852a03b5a2c5676da148a2779821518 |
|
19-Oct-2013 |
Elliott Hughes <enh@google.com> |
Fix the x86_64 vfork implementation. Change-Id: I599507f5058e6196dc2d5b5653d06d5135dd8ac1
|
8ca530e559328eb52d5a655b963babf1dc6f5088 |
|
18-Oct-2013 |
Elliott Hughes <enh@google.com> |
Add ffs and memcmp16 to x86_64. Change-Id: I652c1356f1c7c52299977181c2cf154386979380
|
c7e9b2331771e5e87c34a8ee3dc6cc41d35b02fe |
|
17-Oct-2013 |
Elliott Hughes <enh@google.com> |
Fix sigaction(3) for 64-bit. Also clean up <signal.h> and revert the hacks that were necessary for 64-bit in linker/debugger.cpp until now. Change-Id: I3b0554ca8a49ee1c97cda086ce2c1954ebc11892
|
1f5af926fa626734981d6b4dcc0ab54e520032a9 |
|
16-Oct-2013 |
Elliott Hughes <enh@google.com> |
Fix sigsuspend to use rt_sigsuspend on all platforms. Change-Id: I981c1a66d35480d4457a0a08a1b042dac94daa5b
|
19e62325c268a668692e2b65fde2284079f369aa |
|
15-Oct-2013 |
Elliott Hughes <enh@google.com> |
Clean up the sigprocmask/pthread_sigmask implementation. Let's have both use rt_sigprocmask, like in glibc. The 64-bit ABIs can share the same code as the 32-bit ABIs. Also, let's test the return side of these calls, not just the setting. Bug: 11069919 Change-Id: I11da99f85b5b481870943c520d05ec929b15eddb
|
2a0b873065edb304fa2d1c54f8de663ea638b8ab |
|
09-Oct-2013 |
Elliott Hughes <enh@google.com> |
Fix __errno for LP64 and clean up __get_tls. If __get_tls has the right type, a lot of confusing casting can disappear. It was probably a mistake that __get_tls was exposed as a function for mips and x86 (but not arm), so let's (a) ensure that the __get_tls function always matches the macro, (b) that we have the function for arm too, and (c) that we don't have the function for any 64-bit architecture. Change-Id: Ie9cb989b66e2006524ad7733eb6e1a65055463be
|
4906e5653c57d49f94940f28556009a88c42a583 |
|
04-Oct-2013 |
Elliott Hughes <enh@google.com> |
Add arch-x86_64/bionic. This is basically half of I5de76f6c46ac87779f207d568a86bb453e2414de from Pavel Chupin <pavel.v.chupin@intel.com>, but with the stock upstream setjump/sigsetjmp and H.J. Lu's suggested changes to __rt_sigreturn. Change-Id: I8167ec228faeb2065391e5bec0413cca662f3d33
|
a567a8e4bd9036bcb74a0a028235a48d8b2a115e |
|
18-Dec-2012 |
Pavel Chupin <pavel.v.chupin@intel.com> |
x86_64: Update Makefiles for x86_64 targets and add symlinks Use basic .c versions of all functions for x86_64 until they are manually optimized and .s versions released. Change-Id: I59bba08931e894822db485c8803c2665c226234a Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
|