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
|
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)
|
cd54195262ac5531fff892255849925ebbbd303e |
|
11-Jul-2014 |
Duane Sand <duane.sand@imgtec.com> |
[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. (cherry picked from commit bc5a3ec6df66d2456667ddf1d6dfaf623552169d) Change-Id: I35167da27f2d406339b7f24b4a1fb270c87bc12e
|
5ade7e3f6bb43d419402aab2c7adca2173e2c584 |
|
24-Jul-2014 |
Duane Sand <duane.sand@imgtec.com> |
[MIPS] Drop soft-fp targets (cherry picked from commit ba23bd0a409bb0e43c57dabee96b2ae52481d5b7) Change-Id: Ica09192c2760d38ceebc14e23a5d3ba94c20764c
|
5d7775c6dfa8f9b2ae313c9493525d54a2d04b38 |
|
16-Jul-2014 |
Duane Sand <duane.sand@imgtec.com> |
[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. (cherry picked from commit f541650828f75b3dab22c9c0caab845be78b80fc) Change-Id: I8df0ee7d36c6409458e18bea4e0e8b132edf77dc
|
c82c0b7e072491da4818e7de37411fbb2055fce1 |
|
17-Jun-2014 |
Dan Albert <danalbert@google.com> |
Remove SHA1 from LP64 in favor of libcrypto. Keep the symbols around on LP32 for binary compatibility. Bug: 11156955 Change-Id: I379a7e0fa3092e9a70daeafcbcb2aacfc314031a
|
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
|
24614b4729a4c8665193f5793b93019b37f779b1 |
|
13-Jun-2014 |
Elliott Hughes <enh@google.com> |
Remove __memcmp16 from bionic. Change-Id: I2486d667d96c8900dd368d855f37c1327161efb7
|
8e613cf342b369f7985135dbe11ebdbf8c736157 |
|
11-Jun-2014 |
Dan Albert <danalbert@google.com> |
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
|
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
|
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
|
dcbef06ce6bb21d62d5a32148a3e64746b47b449 |
|
13-May-2014 |
Elliott Hughes <enh@google.com> |
Remove the useless indirection in mips' __set_tls. Change-Id: I12e9d6716c42ccbccc9a186441aca0736bb22d05
|
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>
|
8d77bce185d04c531bd9bf34d38e5cbbe644d3a3 |
|
22-Apr-2014 |
Elliott Hughes <enh@google.com> |
LP64 shouldn't include the non-standard <time64.h> cruft. This patch includes just enough to keep external/chromium_org building until they switch 64-bit Android over to using the regular non-Android code. Change-Id: Iecaf274efa46ae18a42d5e3439c5aa4f909177c1
|
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
|
b8dc9bbd905f762bae9845274b1053da1c084860 |
|
20-Feb-2014 |
Elliott Hughes <enh@google.com> |
Stop asking GCC to cause trouble. Why do we see so many bogus strict-aliasing warnings? Because we asked GCC to cause trouble on arm and mips. Change-Id: I25d7fd036b6afff7ccfa799abe0dc1579ead2847
|
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
|
645d0312c2d6b6492cc4b3891bc1a91908dc24b7 |
|
06-Feb-2014 |
Chris Dearman <chris.dearman@imgtec.com> |
[MIPS64] libc/libm support libc/libm support for MIPS64 targets Change-Id: I8271941d418612a286be55495f0e95822f90004f Signed-off-by: Chris Dearman <chris.dearman@imgtec.com> Signed-off-by: Raghu Gandham <raghu.gandham@imgtec.com>
|
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
|
effaa7824da1af4db5cef50c78079d4c4e1717a7 |
|
13-Nov-2013 |
Chris Dearman <chris.dearman@imgtec.com> |
[MIPS] Reimplement syscall to invoke the system call directly Some MIPS kernels do not correctly restart interrupted system calls that have been invoked using the indirect syscall (NR_syscall). The simplest workaround is to handle the indirection in userland and then call the required system call directly. Change-Id: I8385399621529db9a52b463c96925f6decaaca30
|
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
|
b8cf18b4dd3a46f004ac255257e7a87b6e6d8457 |
|
23-Oct-2013 |
Elliott Hughes <enh@google.com> |
MIPS' pipe(2) is weird, but MIPS' pipe2(2) is the same as everyone else's. arch/mips/kernel/syscall.c has a special sysm_pipe wrapper, but there's no special treatment of pipe2 because it carries no historical baggage. Change-Id: I892c0f690b21992c8a48276a9b732126f18fc0ee
|
14b467e840f8735e050b1844731c7747a7130525 |
|
10-Oct-2013 |
Elliott Hughes <enh@google.com> |
Fix MIPS build. Warnings are errors for all home-grown bionic code, and the arch-specific code now counts as home-grown bionic code (it was mistakenly counted as "not ours" before). Change-Id: I9c6a881b0dc596bae7dfe112c5c189e073800a3a
|
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
|
04954a43b362b8c817cc5859513efad0c344f412 |
|
26-Feb-2013 |
Christopher Ferris <cferris@google.com> |
Break bionic implementations into arch versions. Move arch specific code for arm, mips, x86 into separate makefiles. In addition, add different arm cpu versions of memcpy/memset. Bug: 8005082 Merge from internal master (acdde8c1cf8e8beed98c052757d96695b820b50c). Change-Id: I04f3d0715104fab618e1abf7cf8f7eec9bec79df
|
7c83a1ed81a15f3e75836c1ac7d500a952f02e10 |
|
26-Feb-2013 |
Christopher Ferris <cferris@google.com> |
Break bionic implementations into arch versions. DO NOT MERGE Move arch specific code for arm, mips, x86 into separate makefiles. In addition, add different arm cpu versions of memcpy/memset. Bug: 8005082 (cherry picked from commit acdde8c1cf8e8beed98c052757d96695b820b50c) Change-Id: I0108d432af9f6283ae99adfc92a3399e5ab3e31d
|
acdde8c1cf8e8beed98c052757d96695b820b50c |
|
26-Feb-2013 |
Christopher Ferris <cferris@google.com> |
Break bionic implementations into arch versions. Move arch specific code for arm, mips, x86 into separate makefiles. In addition, add different arm cpu versions of memcpy/memset. Bug: 8005082 Change-Id: I04f3d0715104fab618e1abf7cf8f7eec9bec79df
|