History log of /bionic/libc/arch-arm/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
00008263782e484020420c606f7d145fe7d0a4d8 11-Sep-2014 Elliott Hughes <enh@google.com> Add posix_fadvise(3).

Bug: 12449798
Change-Id: I07cbf3f670a0d1304b68148325a774f266b5c433
yscalls/__arm_fadvise64_64.S
7efad83d430f4d824f2aaa75edea5106f6ff8aae 09-Sep-2014 Elliott Hughes <enh@google.com> 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.

Bug: 17423135
Change-Id: I6b6d7a05dda85f923d22e5ffd169a91e23499b7b
ionic/__bionic_clone.S
ionic/syscall.S
yscalls/__accept4.S
yscalls/__brk.S
yscalls/__connect.S
yscalls/__epoll_pwait.S
yscalls/__exit.S
yscalls/__fcntl64.S
yscalls/__fstatfs64.S
yscalls/__getcpu.S
yscalls/__getcwd.S
yscalls/__getdents64.S
yscalls/__getpid.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__openat.S
yscalls/__ppoll.S
yscalls/__pselect6.S
yscalls/__ptrace.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigpending.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigsuspend.S
yscalls/__rt_sigtimedwait.S
yscalls/__sched_getaffinity.S
yscalls/__set_tid_address.S
yscalls/__set_tls.S
yscalls/__sigaction.S
yscalls/__signalfd4.S
yscalls/__socket.S
yscalls/__statfs64.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__waitid.S
yscalls/_exit.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup3.S
yscalls/epoll_create1.S
yscalls/epoll_ctl.S
yscalls/eventfd.S
yscalls/execve.S
yscalls/faccessat.S
yscalls/fallocate64.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/fdatasync.S
yscalls/fgetxattr.S
yscalls/flistxattr.S
yscalls/flock.S
yscalls/fremovexattr.S
yscalls/fsetxattr.S
yscalls/fstat64.S
yscalls/fstatat64.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/ftruncate64.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsid.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/getxattr.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init1.S
yscalls/inotify_rm_watch.S
yscalls/kill.S
yscalls/klogctl.S
yscalls/lgetxattr.S
yscalls/linkat.S
yscalls/listen.S
yscalls/listxattr.S
yscalls/llistxattr.S
yscalls/lremovexattr.S
yscalls/lseek.S
yscalls/lsetxattr.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdirat.S
yscalls/mknodat.S
yscalls/mlock.S
yscalls/mlockall.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munlockall.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/personality.S
yscalls/pipe2.S
yscalls/prctl.S
yscalls/pread64.S
yscalls/prlimit64.S
yscalls/pwrite64.S
yscalls/read.S
yscalls/readahead.S
yscalls/readlinkat.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmmsg.S
yscalls/recvmsg.S
yscalls/removexattr.S
yscalls/renameat.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setaffinity.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/sendfile.S
yscalls/sendfile64.S
yscalls/sendmmsg.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setfsgid.S
yscalls/setfsuid.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setns.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setresuid.S
yscalls/setreuid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/setuid.S
yscalls/setxattr.S
yscalls/shutdown.S
yscalls/sigaltstack.S
yscalls/socketpair.S
yscalls/splice.S
yscalls/swapoff.S
yscalls/swapon.S
yscalls/symlinkat.S
yscalls/sync.S
yscalls/sysinfo.S
yscalls/tee.S
yscalls/tgkill.S
yscalls/timerfd_create.S
yscalls/timerfd_gettime.S
yscalls/timerfd_settime.S
yscalls/times.S
yscalls/truncate.S
yscalls/truncate64.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlinkat.S
yscalls/unshare.S
yscalls/utimensat.S
yscalls/vfork.S
yscalls/vmsplice.S
yscalls/wait4.S
yscalls/write.S
yscalls/writev.S
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
rm.mk
ionic/__get_sp.S
e35fd48a832cddbedcf84773fd1922f735ae7829 09-Aug-2014 Dan Albert <danalbert@google.com> Make __set_errno hidden in asm.

This fixes the build after the -Bsymbolic change.

Bug: 16853291
Change-Id: I989c9fec3c32e0289ea257a3bd2b7fd2709b6ce2
(cherry picked from commit bc9f9f25bf1247a6a638a2a2df8441bdd9fabad7)
yscalls/__accept4.S
yscalls/__brk.S
yscalls/__connect.S
yscalls/__epoll_pwait.S
yscalls/__exit.S
yscalls/__fcntl64.S
yscalls/__fstatfs64.S
yscalls/__getcpu.S
yscalls/__getcwd.S
yscalls/__getdents64.S
yscalls/__getpid.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__openat.S
yscalls/__ppoll.S
yscalls/__pselect6.S
yscalls/__ptrace.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigpending.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigsuspend.S
yscalls/__rt_sigtimedwait.S
yscalls/__sched_getaffinity.S
yscalls/__set_tid_address.S
yscalls/__set_tls.S
yscalls/__sigaction.S
yscalls/__signalfd4.S
yscalls/__socket.S
yscalls/__statfs64.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__waitid.S
yscalls/_exit.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup3.S
yscalls/epoll_create1.S
yscalls/epoll_ctl.S
yscalls/eventfd.S
yscalls/execve.S
yscalls/faccessat.S
yscalls/fallocate64.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/fdatasync.S
yscalls/fgetxattr.S
yscalls/flistxattr.S
yscalls/flock.S
yscalls/fremovexattr.S
yscalls/fsetxattr.S
yscalls/fstat64.S
yscalls/fstatat64.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/ftruncate64.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsid.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/getxattr.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init1.S
yscalls/inotify_rm_watch.S
yscalls/kill.S
yscalls/klogctl.S
yscalls/lgetxattr.S
yscalls/linkat.S
yscalls/listen.S
yscalls/listxattr.S
yscalls/llistxattr.S
yscalls/lremovexattr.S
yscalls/lseek.S
yscalls/lsetxattr.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdirat.S
yscalls/mknodat.S
yscalls/mlock.S
yscalls/mlockall.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munlockall.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/personality.S
yscalls/pipe2.S
yscalls/prctl.S
yscalls/pread64.S
yscalls/prlimit64.S
yscalls/pwrite64.S
yscalls/read.S
yscalls/readahead.S
yscalls/readlinkat.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmmsg.S
yscalls/recvmsg.S
yscalls/removexattr.S
yscalls/renameat.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setaffinity.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/sendfile.S
yscalls/sendfile64.S
yscalls/sendmmsg.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setfsgid.S
yscalls/setfsuid.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setns.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setresuid.S
yscalls/setreuid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/setuid.S
yscalls/setxattr.S
yscalls/shutdown.S
yscalls/sigaltstack.S
yscalls/socketpair.S
yscalls/splice.S
yscalls/swapoff.S
yscalls/swapon.S
yscalls/symlinkat.S
yscalls/sync.S
yscalls/sysinfo.S
yscalls/tee.S
yscalls/tgkill.S
yscalls/timerfd_create.S
yscalls/timerfd_gettime.S
yscalls/timerfd_settime.S
yscalls/times.S
yscalls/truncate.S
yscalls/truncate64.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlinkat.S
yscalls/unshare.S
yscalls/utimensat.S
yscalls/vfork.S
yscalls/vmsplice.S
yscalls/wait4.S
yscalls/write.S
yscalls/writev.S
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)
yscalls/vfork.S
4f76469e88e255bab1f8264e9ff8b95bff84365f 31-Jul-2014 Elliott Hughes <enh@google.com> Implement <sys/fsuid.h>.

(cherry picked from commit 79310994d2b3826a10598f7e7795acb5edb42a20)

Change-Id: I47688273691e5c95e5e9302eba254ccaaaad40ca
yscalls/setfsgid.S
yscalls/setfsuid.S
c999f76977d2389a3e2dcbdd98f20d93c3193727 11-Jul-2014 Elliott Hughes <enh@google.com> Enable building libc with clang.

Bug: 16218205
Change-Id: I024de2044fe016412c7bead22c264e96be4cb39c
rm.mk
ionic/__aeabi.c
ionic/eabi.c
3f525d41c2acde2ae3309cf839d83d7f41ab2fe6 25-Jun-2014 Elliott Hughes <enh@google.com> Add splice, tee, and vmsplice.

Change-Id: I5f43380b88d776a8bb607b47dbbc5db5a2fe6163
yscalls/splice.S
yscalls/tee.S
yscalls/vmsplice.S
0d7415fb225573c37ff9e880957cd2044dd658ce 21-Jun-2014 Dan Albert <danalbert@google.com> Merge "Remove SHA1 from LP64 in favor of libcrypto."
7086ad6919feb2415c6027163f5c63323bcca27c 20-Jun-2014 Elliott Hughes <enh@google.com> 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
yscalls/__getpid.S
yscalls/getpid.S
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
rm.mk
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
rm.mk
f87ac523a1aa02490d67330e74180c8ac2d78420 13-Jun-2014 Dan Albert <danalbert@google.com> Merge "Remove ioprio_get(2) and ioprio_set(2) from LP64."
607341e226912d95d03216483bdcef6f8d96f8b4 13-Jun-2014 Dan Albert <danalbert@google.com> Remove ioprio_get(2) and ioprio_set(2) from LP64.

Bug: 11156955
Change-Id: I07b596d85e4bd6347d488d1a92c8d0a00b5ef3b3
yscalls/ioprio_get.S
yscalls/ioprio_set.S
24614b4729a4c8665193f5793b93019b37f779b1 13-Jun-2014 Elliott Hughes <enh@google.com> Remove __memcmp16 from bionic.

Change-Id: I2486d667d96c8900dd368d855f37c1327161efb7
rm.mk
ionic/memcmp16.S
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
rm.mk
440bd6bcc308f78b32fcbc4a3ba312dd1343559b 11-Jun-2014 Dan Albert <danalbert@google.com> Merge "Replaces vfork() implementation with fork()"
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
yscalls/vfork.S
1c60f8080acaf0f1794689886e94e54d15d43a7b 07-Jun-2014 Elliott Hughes <enh@google.com> Merge "Rename __bionic_clone_entry to __start_thread."
ebc8cd117a562f387c52ed4e1aeba0fb21f33194 07-Jun-2014 Elliott Hughes <enh@google.com> Rename __bionic_clone_entry to __start_thread.

This seems a bit less obscure.

Change-Id: I7dc528c253b73c861694f67556ad8f919bf92136
ionic/__bionic_clone.S
3d5cb30d23cfc6a72f01c00246e69a2c614c8228 06-Jun-2014 Elliott Hughes <enh@google.com> Remove getdents from bionic.

Bug: 11156955
Change-Id: I6c306989801be552d85fba8a50dcdc79282fb9d2
yscalls/__getdents64.S
yscalls/getdents.S
5d9a7ba0dc9c24ed4e4efa9cac0e796fd524b308 31-May-2014 Elliott Hughes <enh@google.com> 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
yscalls/gettid.S
fae42a837ae7f880de9561c7b3c2b18e4a531e90 29-May-2014 Elliott Hughes <enh@google.com> Merge "Revert "Revert "Lose the hand-written futex assembler."""
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
rm.mk
ionic/futex_arm.S
yscalls/futex.S
8a405b027a9c8b3a614016f4824a03fa252e9e1e 28-May-2014 Christopher Ferris <cferris@google.com> Merge "Add optimized AArch64 versions of bcopy and wmemmove based on memmove"
52f74322b1d72d57146107f32ee2c76c421bf4b1 28-May-2014 Narayan Kamath <narayan@google.com> Merge "Revert "Lose the hand-written futex assembler.""
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
rm.mk
ionic/futex_arm.S
yscalls/futex.S
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>
rm.mk
1c4d83012fea4e6d011215bef1665cf68d2ac47c 24-May-2014 Christopher Ferris <cferris@google.com> Merge "Revert "Add optimized AArch64 versions of bcopy and wmemmove based on memmove""
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
rm.mk
78c3e11e78e7d2643ec25e2be1cfc258aeb6d9d7 24-May-2014 Christopher Ferris <cferris@google.com> Merge "Add optimized AArch64 versions of bcopy and wmemmove based on memmove"
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>
rm.mk
8df0fe0c74b7af819f36e37ec9b924fdd22c8ba4 24-May-2014 Ben Cheng <bccheng@google.com> 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
ionic/__bionic_clone.S
ced906c849704f379d7191822f6d74993d4fa296 23-May-2014 Elliott Hughes <enh@google.com> Lose the hand-written futex assembler.

Also stop exporting 'futex'.

Bug: 12250341
Change-Id: Icc4fa4296cd04dfe0d1061822c69e2eb40c3433a
rm.mk
ionic/futex_arm.S
yscalls/futex.S
6e599a904b1f033cfaf79febff686f6296089a7d 22-May-2014 Elliott Hughes <enh@google.com> 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
yscalls/tkill.S
d5ed63a6a8290de88802172ce178656fbafe70c6 22-May-2014 Elliott Hughes <enh@google.com> 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
ionic/futex_arm.S
c1b7f44c13fbcbab3faaa8e11d3a459ebc11bfe5 21-May-2014 Elliott Hughes <enh@google.com> Merge "Remove __syslog; we have the public klogctl API."
9f0a52e4e5afc20a61230e6cbfe735606bff7e0c 21-May-2014 Elliott Hughes <enh@google.com> Merge "Hide __get_sp."
46a55a4478db9e335bdc7f73ee2cf3a66fe673fd 21-May-2014 Elliott Hughes <enh@google.com> Remove __syslog; we have the public klogctl API.

Bug: 11156955
Change-Id: I5c2cc02f39f76dd32984135f5c12c10bf2853796
yscalls/__syslog.S
c3705f641507eafc170cd7a3fe98759e781e4594 21-May-2014 Elliott Hughes <enh@google.com> Hide __get_sp.

Bug: 11156955
Change-Id: I55d8d320521e80c2085af28933a18b00cf5c714e
ionic/__get_sp.S
4e631ba5688db2fae7bbc476982055a376102146 21-May-2014 Elliott Hughes <enh@google.com> 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
yscalls/perf_event_open.S
afb89c2a01089bb247456634a15a58f111bb55a6 20-May-2014 Christopher Ferris <cferris@google.com> Merge "denver: optimize memmove"
6c80ccdeed9d9b30e961f68229fe8171d79c5d14 12-May-2014 Shu Zhang <chazhang@nvidia.com> denver: optimize memmove

Optimize 32-bit denver memmove with reversal memcpy.

Change-Id: Iaad0a9475248cdd7e4f50d58bea9db1b767abc88
rm.mk
ortex-a15/cortex-a15.mk
ortex-a9/cortex-a9.mk
enver/bionic/memmove.S
enver/denver.mk
eneric/generic.mk
rait/krait.mk
903b78873a744d3fba187e4bd22008ba21162e51 19-May-2014 Sreeram Ramachandran <sreeram@google.com> Mark sockets on creation (socket()) and accept4().

Remove the separate syscall for accept() and implement it as accept4(..., 0).

Change-Id: Ib0b8f5d7c5013b91eae6bbc3847852eb355c7714
yscalls/__accept.S
yscalls/__accept4.S
yscalls/__socket.S
yscalls/accept4.S
yscalls/socket.S
31d0398de65becc83168fa931cbd3345bbc346bd 17-May-2014 Elliott Hughes <enh@google.com> Hide _exit_with_stack_teardown.

Bug: 11156955
Change-Id: Ida3020343c9975177dc324918cd1f10c455eb173
ionic/_exit_with_stack_teardown.S
7222b1b594a8fab4b9e744d764b70e4c17767794 17-May-2014 Elliott Hughes <enh@google.com> Hide __signalfd4, used to implement signalfd(3).

Bug: 11156955
Change-Id: I50842279cb5b32ec8bd45193435574e415cd806e
yscalls/__signalfd4.S
yscalls/signalfd4.S
8f0cd8aa22906c3e678738eeba20fc1a5c399b6c 14-May-2014 Sreeram Ramachandran <sreeram@google.com> Mark sockets on accept().

(cherry picked from commit 58b1f3f6a30a660ad81637c2b50382c3d279243b)

Change-Id: I5d09be413cf720fbed905f96313b007997ada76c
yscalls/__accept.S
yscalls/accept.S
ceb5bd787c8ce281e5f4343c5d4f77b41c3e2919 12-May-2014 Sreeram Ramachandran <sreeram@google.com> 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
yscalls/__connect.S
yscalls/connect.S
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>
rm.mk
954cf0d4e2669f91194b45f484152e47efa4f6c7 09-May-2014 Elliott Hughes <enh@google.com> 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
ionic/__bionic_clone.S
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
rm.mk
6a45fe98727f9ee39386d39fa18eea69c706bc9e 19-Apr-2014 Dmitriy Ivanov <dimitry@google.com> Fix for libgcc compat generation script.

Taking into account possibility that external symbol
could have been an OBJECT instead of function.

b/14090368

Change-Id: Iac173d2dd1309ed53024306578137c26b1dbbf15
ionic/libgcc_compat.c
cb65cc3fb4a8d7dfbbcbdfdb9140ab59baada28e 17-Apr-2014 Elliott Hughes <enh@google.com> Clean up <machine/ieee.h>.

The upstream intention was for this to be architecture-dependent, but it's a
lot clearer if we just have one copy.

Change-Id: I4e8310496145f9f411cd2e847c8cd023b1d758e9
nclude/machine/ieee.h
4bd97cee28dd815fff54fc97560be60d566c1fa5 11-Apr-2014 Elliott Hughes <enh@google.com> Switch to gdtoa.

This gives us a real strtold for LP64 and fixes various LP64
bugs.

Bug: 13563801
Change-Id: I277858d718ee746e136b6b6308a495ba50dfa488
nclude/machine/ieee.h
02c78a386739a8a2b3007efeb00a9ca04132100a 12-Apr-2014 Elliott Hughes <enh@google.com> Reimplement isinf/isnan/fpclassify.

Also move isinf and isnan into libc like everyone else.

Also move fpclassify to libc like the BSDs (but unlike glibc). We need
this to be able to upgrade our float/double/long double parsing to gdtoa.

Also add some missing aliases. We now have all of:

isnan, __isnan, isnanf, __isnanf, isnanl, __isnanl,
isinf, __isinf, isinff, __isinff, isinfl, __isinfl,
__fpclassify, __fpclassifyd, __fpclassifyf, __fpclassifyl.

Bug: 13469877
Change-Id: I407ffbac06c765a6c5fffda8106c37d7db04f27d
nclude/machine/ieee.h
9f525644df99cb2f7f81a23ca23840f0a8f82275 09-Apr-2014 Elliott Hughes <enh@google.com> Implement _Exit(3).

Change-Id: Ida6ac844cc87d38c9645b197dd8188bb73e27dbe
yscalls/_exit.S
1b0dc40980c259aa0d9a416cd1ccf497e6efe138 02-Apr-2014 Elliott Hughes <enh@google.com> Remove <machine/limits.h>.

Change-Id: I7f9e9538517f726d4f08bf1f4b8d57c54d3f1676
nclude/machine/limits.h
ac3fc00ca2c157387164c7daaf9e10799c5ac8dc 11-Mar-2014 Russell Webb <russell.webb@intel.com> Remove SIZE_MAX definition in limits.h

the POSIX standard is that SIZE_MAX is defined
in stdint.h, not limits.h.

Change-Id: Iafd8ec71d1840541feaca4f53b2926b398293fac
Signed-off-by: Webb, Russell <russell.webb@intel.com>
Signed-off-by: Fengwei Yin <fengwei.yin@intel.com>
Reviewed-by: Ross, Andrew J <andrew.j.ross@intel.com>
Reviewed-by: Boie, Andrew P <andrew.p.boie@intel.com>
Reviewed-by: Gumbel, Matthew K <matthew.k.gumbel@intel.com>
Tested-by: Gumbel, Matthew K <matthew.k.gumbel@intel.com>
nclude/machine/limits.h
d8fe15fdb6581b6920a4be75731337edbac64b11 31-Mar-2014 Christopher Ferris <cferris@google.com> Merge "add 32-bit bionic implementation for denver arch"
8f2a30a92ab6981cccbc1a9e17b738f7542ae33f 26-Mar-2014 Andrei Emeltchenko <andrei.emeltchenko@intel.com> Add accept4() syscall

Add accept4() using SYSCALLS.TXT and gensyscall

Change-Id: I6f19f29144186d15d46423e10f2cc4b4223719c6
yscalls/accept4.S
5b5d6e7045dece4e112553e9a2516240ea32f812 12-Mar-2014 Shu Zhang <chazhang@nvidia.com> add 32-bit bionic implementation for denver arch

Add 32-bit bionic implementation for denver. Use denver version of memcpy/
memset. Use Cortex-A15 version of strlen/strcat/strcpy/strcmp.

Change-Id: I4c6b675f20cf41a29cadf70a11d1635d7df5b30a
rm.mk
enver/bionic/__strcat_chk.S
enver/bionic/__strcpy_chk.S
enver/bionic/memcpy.S
enver/bionic/memcpy_base.S
enver/bionic/memset.S
enver/denver.mk
6ff0c75c838e73d2aeccc0102ab58a7b865172ca 10-Feb-2014 Guillaume Ranquet <guillaumex.ranquet@intel.com> Add recvmmsg and sendmmsg syscalls.

Also add the corresponding constant, struct, and function declarations
to <sys/socket.h>, and perfunctory tests so we know that the symbols
actually exist.

Signed-off-by: Guillaume Ranquet <guillaumex.ranquet@intel.com>
Change-Id: Ib0d854239d3716be90ad70973c579aff4895a4f7
yscalls/recvmmsg.S
yscalls/sendmmsg.S
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
rm.mk
eneric/generic.mk
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
rm.mk
851e68a2402fa414544e66650e09dfdaac813e51 20-Feb-2014 Elliott Hughes <enh@google.com> Unify our assembler macros.

Our <machine/asm.h> files were modified from upstream, to the extent
that no architecture was actually using the upstream ENTRY or END macros,
assuming that architecture even had such a macro upstream. This patch moves
everyone to the same macros, with just a few tweaks remaining in the
<machine/asm.h> files, which no one should now use directly.

I've removed most of the unused cruft from the <machine/asm.h> files, though
there's still rather a lot in the mips/mips64 ones.

Bug: 12229603
Change-Id: I2fff287dc571ac1087abe9070362fb9420d85d6d
ionic/__get_sp.S
ionic/_setjmp.S
ionic/abort_arm.S
ionic/memcmp.S
ionic/memcmp16.S
ionic/memcpy.S
ionic/memcpy.a9.S
ionic/setjmp.S
ionic/sigsetjmp.S
ionic/strcmp.S
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memset.S
ortex-a15/bionic/strcat.S
ortex-a15/bionic/strcmp.S
ortex-a15/bionic/strcpy.S
ortex-a15/bionic/strlen.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memset.S
ortex-a9/bionic/strcat.S
ortex-a9/bionic/strcmp.S
ortex-a9/bionic/strcpy.S
ortex-a9/bionic/strlen.S
eneric/bionic/memcpy.S
eneric/bionic/memset.S
eneric/bionic/strcmp.S
eneric/bionic/strcpy.S
nclude/machine/asm.h
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memset.S
rait/bionic/strcmp.S
09289d92f920f307fc50dd64e9970c36c30b58e4 20-Feb-2014 Elliott Hughes <enh@google.com> Remove useless _C_LABEL from our assembler source.

Change-Id: I41a9181537c70ecc69ef8035132c9a83811a40d0
ionic/_setjmp.S
ionic/abort_arm.S
ionic/setjmp.S
ionic/sigsetjmp.S
bfa2b6fc6a09df9815773890db94d6a126565289 20-Feb-2014 Elliott Hughes <enh@google.com> Merge "Stop advertising an arm32-specific hack like it's a build system feature."
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
rm.mk
adab51aefdd00b65d631f64e6e313713d7dd9564 20-Feb-2014 Dmitriy Ivanov <dimitry@google.com> Added script generating additions to libgcc_compat.c from linker errors

bug: 12234455
Change-Id: Icac35237f06e75745da5a91d9c4c941d7df4f84d
ionic/libgcc_compat.c
986f9067103e41296898a7c0e89f5ed84420fb5b 19-Feb-2014 Elliott Hughes <enh@google.com> Fix build by avoiding the _C_LABEL macro.

Change-Id: Ide367c2b65071388bd95fbc81a4ed6ae94aec4e4
yscalls/fstat64.S
yscalls/fstatat64.S
db1ea3474899ebbd783aba872d3005f95a816d0f 18-Jan-2014 Elliott Hughes <enh@google.com> Implement some of the missing LFS64 support.

This gives us:

* <dirent.h>
struct dirent64
readdir64, readdir64_r, alphasort64, scandir64

* <fcntl.h>
creat64, openat64, open64.

* <sys/stat.h>
struct stat64
fstat64, fstatat64, lstat64, stat64.

* <sys/statvfs.h>
struct statvfs64
statvfs64, fstatvfs64.

* <sys/vfs.h>
struct statfs64
statfs64, fstatfs64.

This also removes some of the incorrect #define hacks we've had in the
past (for stat64, for example, which we promised to clean up way back
in bug 8472078).

Bug: 11865851
Bug: 8472078
Change-Id: Ia46443521918519f2dfa64d4621027dfd13ac566
yscalls/fstat.S
yscalls/fstat64.S
yscalls/fstatat.S
yscalls/fstatat64.S
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
rm.mk
ortex-a15/cortex-a15.mk
ortex-a9/cortex-a9.mk
eneric/generic.mk
rait/krait.mk
b3a23bd0178c8edbb34e310be08e6fb73ac6ba09 11-Feb-2014 Elliott Hughes <enh@google.com> Build syscall stubs in their own library.

This lets us lose the auto-generated makefiles.

Change-Id: I2de0c71b3b9c08f9cce8f4ff7fd7254dda008c86
yscalls.mk
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
rm.mk
9afe2884c7fe11f862982fd550a2ead688f2044d 05-Feb-2014 Elliott Hughes <enh@google.com> Kill <machine/_types.h>.

Most of <machine/_types.h> was either unused, wrong, or identical across
all 32-/64-bit architectures.

I'm not a huge fan of <sys/_types.h> either, but moving the bits we need
up into there is a step forward.

Bug: 12213562
Change-Id: Id13551c78966e324beee2dd90c5575e37d2a71e6
nclude/machine/_types.h
f64b8ea09db3bdd84eed59f7721301743332b3fe 04-Feb-2014 Elliott Hughes <enh@google.com> Add fallocate/fallocate64/posix_fallocate/posix_fallocate64.

Bug: 5287571
Bug: 12612860
Change-Id: I4501b9c6cdf9a830336ce0b3afc4ea716b6a0f6f
yscalls.mk
yscalls/fallocate64.S
62ffe14a7e6b30c2740ed695f64aee73c57f9962 25-Jan-2014 Ben Cheng <bccheng@google.com> Add all implicitly loaded symbols from libgcc.a into libgcc_compat.c.

Change-Id: I0e66a73e849a01817d016a688d7291c2fb604e48
ionic/libgcc_compat.c
f38fb19d9d2b1aa5b4f22f772c81efacb990c94b 24-Jan-2014 Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org> Re-export libgcc's __aeabi_uidivmod and __popcount_tab

This is required to make the Nexus 10 graphics driver work on a system
compiled with gcc 4.9.

Change-Id: If3f3d488652a736d9ea3e583548d74fae3ffa902
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
ionic/libgcc_compat.c
0f461e35f63200641fc53bba222845a84589c024 09-Jan-2014 Elliott Hughes <enh@google.com> Fix <sys/resource.h>.

The situation here is a bit confusing. On 64-bit, rlimit and rlimit64 are
the same, and so getrlimit/getrlimit64, setrlimit/setrlimit64,
and prlimit/prlimit64 are all the same. On 32-bit, rlimit and rlimit64 are
different. 32-bit architectures other than MIPS go one step further by having
an even more limited getrlimit system call, so arm and x86 need to use
ugetrlimit instead of getrlimit. Worse, the 32-bit architectures don't have
64-bit getrlimit- and setrlimit-equivalent system calls, and you have to use
prlimit64 instead. There's no 32-bit prlimit system call, so there's no
easy implementation of that --- what should we do if the result of prlimit64
won't fit in a struct rlimit? Since 32-bit survived without prlimit/prlimit64
for this long, I'm not going to bother implementing prlimit for 32-bit.

We need the rlimit64 functions to be able to build strace 4.8 out of the box.

Change-Id: I1903d913b23016a2fc3b9f452885ac730d71e001
yscalls.mk
yscalls/prlimit64.S
54a7494f17f80d6c548a58434bcb5579a26cc125 04-Jan-2014 Elliott Hughes <enh@google.com> Regenerate the NOTICE files.

Also standardize the orthography in a few places to reduce near-duplicates
in the NOTICE files.

Change-Id: I347c75e817be61ec1b9c5b4b96226feedc8d09ab
ionic/atexit_legacy.c
887e1140fe7596fa1239a0bc802d2cdb51c57d3c 02-Jan-2014 Elliott Hughes <enh@google.com> Clean up <sched.h>.

This patch switches to using the uapi constants. It also adds the missing
setns system call, fixes sched_getcpu's error behavior, and fixes the
gensyscalls script now ARM is uapi-only too.

Change-Id: I8e16b1693d6d32cd9b8499e46b5d8b0a50bc4f1d
yscalls.mk
yscalls/setns.S
2aace21a19b6be8f6a427fc664d4175f0bf832c9 22-Dec-2013 Elliott Hughes <enh@google.com> Remove the bogus exit status from _exit_with_stack_teardown.

It should always be 0, and there's no reason to pass a constant in as
an argument.

Change-Id: I92ac59b718a18e298bd7c52821af447f9181ca2a
ionic/_exit_with_stack_teardown.S
5eccb9646dd94438911706d3ebf52775caa7f41e 21-Dec-2013 Elliott Hughes <enh@google.com> Fix aarch64 futex assembly routines.

Also make the other architectures more similar to one another,
use NULL instead of 0 in calling code, and remove an unused #define.

Change-Id: I52b874afb6a351c802f201a0625e484df6d093bb
ionic/futex_arm.S
e3fb66dd0161902099af0fd381d14cda03368800 20-Dec-2013 Ben Cheng <bccheng@google.com> Add __popcountsi2 to the function compat list.

This is needed if we use Clang to compile Bionic, which won't include
__popcountsi2 anymore as Clang generates inline instructions. However
prebuilt binary blobs still depend on libc.so to resolve __popcountsi2.

Change-Id: I9001a3884c4be250c0ceebcd79922783fae1a0b7
ionic/libgcc_compat.c
2b333ea31ec5b5b4627f14b22253b017b346638a 18-Dec-2013 Elliott Hughes <enh@google.com> Remove <machine/kernel.h>.

Bug: 12175484
Change-Id: I127f7f91f36bd879109d653e0c56ec56e2529d4d
nclude/machine/kernel.h
c13fb75ceabb47f8292be206db80b93889fccf66 18-Dec-2013 Elliott Hughes <enh@google.com> Move bionic over to GCC's 'warning' attribute.

This is a better solution than the old __warn_references because it's
a compile-time rather than link-time warning, it doesn't rely on something
that doesn't appear to be supported by gold (which is why you only used
to see these warnings on mips builds), and the errors refer to the exact
call site(s) rather than just telling you which object file contains a
reference to the bad function.

This is primarily so we can build bionic for aarch64; building libc.so
caused these warnings to fire (because link time is the wrong time) and
warnings are errors.

Change-Id: I5df9281b2a9d98b164a9b11807ea9472c6faa9e3
nclude/machine/cdefs.h
c54ca40aef48009e7b0e5b2b3069aad62ffd3453 13-Dec-2013 Elliott Hughes <enh@google.com> Clean up some ARMv4/ARMv5 cruft.

Change-Id: I29e836fea4b53901e29f96c6888869c35f6726be
ionic/memcmp16.S
ionic/memcpy.S
ionic/strcmp.S
eneric/bionic/memcpy.S
eneric/bionic/strcmp.S
eneric/bionic/strcpy.S
eneric/bionic/strlen.c
nclude/machine/cpu-features.h
nclude/machine/endian.h
ed45970ac5a182e512669cfa5c15b9f4fa783ad7 03-Dec-2013 Christopher Ferris <cferris@google.com> Add cfi directives to all arm assembly.

Since the ENTRY/END macros now have .cfi_startproc/.cfi_endproc, most of the
custom arm assembly has no unwind information. Adding the proper cfi directives
for these and removing the arm directives.

Update the gensyscalls.py script to add these cfi directives for the generated
assembly. Also fix the references to non-uapi headers to the proper uapi
header.

In addition, remove the kill.S, tkill.S, tgkill.S for arm since they are not
needed at all. The unwinder (libunwind) is able to properly unwind using the
normal abort.

After this change, I can unwind through the system calls again.

Bug: 11559337
Bug: 11825869
Bug: 11321283

Change-Id: I18b48089ef2d000a67913ce6febc6544bbe934a3
rm.mk
ionic/__bionic_clone.S
ionic/abort_arm.S
ionic/kill.S
ionic/memcmp.S
ionic/memcmp16.S
ionic/setjmp.S
ionic/syscall.S
ionic/tgkill.S
ionic/tkill.S
yscalls.mk
yscalls/__epoll_pwait.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__ppoll.S
yscalls/__pselect6.S
yscalls/__waitid.S
yscalls/fchownat.S
yscalls/fsetxattr.S
yscalls/futex.S
yscalls/getsockopt.S
yscalls/kill.S
yscalls/linkat.S
yscalls/lsetxattr.S
yscalls/mount.S
yscalls/perf_event_open.S
yscalls/prctl.S
yscalls/pread64.S
yscalls/pwrite64.S
yscalls/readahead.S
yscalls/recvfrom.S
yscalls/sendto.S
yscalls/setsockopt.S
yscalls/setxattr.S
yscalls/tgkill.S
yscalls/tkill.S
f00c938c7f5887981d724bf2dd9989ee0af08332 22-Nov-2013 The Android Open Source Project <initial-contribution@android.com> Merge commit '811b0cdb2d6e4a697dbc63a678712759dd0db242' into HEAD

Change-Id: I786944f80fb1a2d502fed51dc2c391ed5db66761
507cfe2e10a6c4ad61b9638820ba10bfe881a18c 19-Nov-2013 Christopher Ferris <cferris@google.com> Add .cfi_startproc/.cfi_endproc to ENTRY/END.

Bug: 10414953
Change-Id: I711718098b9f3cc0ba8277778df64557e9c7b2a0
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memcpy_base.S
ortex-a15/bionic/memset.S
ortex-a15/bionic/strcmp.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memcpy_base.S
ortex-a9/bionic/memset.S
ortex-a9/bionic/strcmp.S
nclude/machine/asm.h
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memcpy_base.S
rait/bionic/memset.S
rait/bionic/strcmp.S
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
rm.mk
ionic/__bionic_clone.S
ionic/clone.S
yscalls.mk
yscalls/__clone.S
877ec6d90418ff1d6597147d355a2229fdffae7e 16-Nov-2013 Elliott Hughes <enh@google.com> Fix pthread_join.

Let the kernel keep pthread_internal_t::tid updated, including
across forks and for the main thread. This then lets us fix
pthread_join to only return after the thread has really exited.

Also fix the thread attributes of the main thread so we don't
unmap the main thread's stack (which is really owned by the
dynamic linker and contains things like environment variables),
which fixes crashes when joining with an exited main thread
and also fixes problems reported publicly with accessing environment
variables after the main thread exits (for which I've added a new
unit test).

In passing I also fixed a bug where if the clone(2) inside
pthread_create(3) fails, we'd unmap the child's stack and TLS (which
contains the mutex) and then try to unlock the mutex. Boom! It wasn't
until after I'd uploaded the fix for this that I came across a new
public bug reporting this exact failure.

Bug: 8206355
Bug: 11693195
Bug: https://code.google.com/p/android/issues/detail?id=57421
Bug: https://code.google.com/p/android/issues/detail?id=62392
Change-Id: I2af9cf6e8ae510a67256ad93cad891794ed0580b
yscalls.mk
yscalls/__set_tid_address.S
70b24b1cc2a1a4436b1fea3f8b76616fdcb27224 15-Nov-2013 Elliott Hughes <enh@google.com> Switch pthread_create over to __bionic_clone.

Bug: 8206355
Bug: 11693195
Change-Id: I04aadbc36c87e1b7e33324b9a930a1e441fbfed6
ionic/_exit_with_stack_teardown.S
ionic/clone.S
ed74484dcbc2e156a6e5fa861a62425b12e55128 07-Nov-2013 Elliott Hughes <enh@google.com> Stop using the non-uapi <linux/err.h> header file.

We only need it for MAX_ERRNO, and it's time we had somewhere to put
the little assembler utility macros we've been putting off writing.

Change-Id: I9354d2e0dc47c689296a34b5b229fc9ba75f1a83
ionic/clone.S
ionic/kill.S
ionic/syscall.S
ionic/tgkill.S
ionic/tkill.S
yscalls/__brk.S
yscalls/__clone.S
yscalls/__epoll_pwait.S
yscalls/__exit.S
yscalls/__fcntl64.S
yscalls/__fstatfs64.S
yscalls/__getcpu.S
yscalls/__getcwd.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__openat.S
yscalls/__ppoll.S
yscalls/__pselect6.S
yscalls/__ptrace.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigpending.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigsuspend.S
yscalls/__rt_sigtimedwait.S
yscalls/__sched_getaffinity.S
yscalls/__set_tls.S
yscalls/__sigaction.S
yscalls/__statfs64.S
yscalls/__syslog.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__waitid.S
yscalls/_exit.S
yscalls/accept.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/connect.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup3.S
yscalls/epoll_create1.S
yscalls/epoll_ctl.S
yscalls/eventfd.S
yscalls/execve.S
yscalls/faccessat.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/fdatasync.S
yscalls/fgetxattr.S
yscalls/flistxattr.S
yscalls/flock.S
yscalls/fremovexattr.S
yscalls/fsetxattr.S
yscalls/fstat.S
yscalls/fstatat.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/ftruncate64.S
yscalls/futex.S
yscalls/getdents.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getpid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsid.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettid.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/getxattr.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init1.S
yscalls/inotify_rm_watch.S
yscalls/ioprio_get.S
yscalls/ioprio_set.S
yscalls/klogctl.S
yscalls/lgetxattr.S
yscalls/linkat.S
yscalls/listen.S
yscalls/listxattr.S
yscalls/llistxattr.S
yscalls/lremovexattr.S
yscalls/lseek.S
yscalls/lsetxattr.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdirat.S
yscalls/mknodat.S
yscalls/mlock.S
yscalls/mlockall.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munlockall.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/perf_event_open.S
yscalls/personality.S
yscalls/pipe2.S
yscalls/prctl.S
yscalls/pread64.S
yscalls/pwrite64.S
yscalls/read.S
yscalls/readahead.S
yscalls/readlinkat.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmsg.S
yscalls/removexattr.S
yscalls/renameat.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setaffinity.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/sendfile.S
yscalls/sendfile64.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setresuid.S
yscalls/setreuid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/setuid.S
yscalls/setxattr.S
yscalls/shutdown.S
yscalls/sigaltstack.S
yscalls/signalfd4.S
yscalls/socket.S
yscalls/socketpair.S
yscalls/swapoff.S
yscalls/swapon.S
yscalls/symlinkat.S
yscalls/sync.S
yscalls/sysinfo.S
yscalls/timerfd_create.S
yscalls/timerfd_gettime.S
yscalls/timerfd_settime.S
yscalls/times.S
yscalls/truncate.S
yscalls/truncate64.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlinkat.S
yscalls/unshare.S
yscalls/utimensat.S
yscalls/vfork.S
yscalls/wait4.S
yscalls/write.S
yscalls/writev.S
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
yscalls.mk
yscalls/__fcntl.S
6b53c2349a5a3fc70a475de6a66131b615e88e48 25-Oct-2013 Elliott Hughes <enh@google.com> Fix the exit syscall stub's name.

I've left the exit_group syscall as _exit because otherwise we'd have to
convince the compiler that our _exit (which just calls __exit_group) is
actually "noreturn", and it seems like that would be less clean than just
cutting out the middleman.

We'll just have to trust ourselves not to add anything to SYSCALLS.TXT
that ought to be private but that only has a single leading underscore.
Hopefully we can manage that.

Change-Id: Iac47faea9f516186e1774381846c54cafabc4354
yscalls.mk
yscalls/__exit.S
yscalls/_exit_thread.S
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
rm.mk
ionic/ffs.S
11952073af22568bba0b661f7a9d4402c443a888 25-Oct-2013 Elliott Hughes <enh@google.com> Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls.

(aarch64 kernels don't have these system calls.)

Change-Id: I6f64075aa412f71520f2df71c3d69b647f91c1ca
yscalls.mk
yscalls/__clone.S
yscalls/__epoll_pwait.S
yscalls/__fork.S
yscalls/__open.S
yscalls/__ppoll.S
yscalls/__pselect6.S
yscalls/__sys_clone.S
yscalls/epoll_wait.S
yscalls/pause.S
yscalls/poll.S
yscalls/select.S
cac7b9d6ec1a09814bc028e2f768db732f018891 23-Oct-2013 Elliott Hughes <enh@google.com> Remove dependencies on obsolete __ARCH_WANT_SYSCALL_NO_FLAGS syscalls.

(aarch64 kernels only have the newer system calls.)

Also expose the new functionality that's exposed by glibc in our header files.

Change-Id: I45d2d168a03f88723d1f7fbf634701006a4843c5
yscalls.mk
yscalls/dup2.S
yscalls/dup3.S
yscalls/epoll_create.S
yscalls/epoll_create1.S
yscalls/inotify_init.S
yscalls/inotify_init1.S
yscalls/pipe.S
f8fcfbc85a3ce3e195626b90736d3a484331494b 22-Oct-2013 Elliott Hughes <enh@google.com> Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.

Modern architectures only get the *at(2) system calls. For example,
aarch64 doesn't have open(2), and expects userspace to use openat(2)
instead.

Change-Id: I87b4ed79790cb8a80844f5544ac1a13fda26c7b5
yscalls.mk
yscalls/access.S
yscalls/chmod.S
yscalls/chown.S
yscalls/lchown.S
yscalls/link.S
yscalls/linkat.S
yscalls/lstat.S
yscalls/mkdir.S
yscalls/mknod.S
yscalls/mknodat.S
yscalls/readlink.S
yscalls/readlinkat.S
yscalls/rename.S
yscalls/rmdir.S
yscalls/stat.S
yscalls/symlink.S
yscalls/symlinkat.S
yscalls/unlink.S
yscalls/utimes.S
7f70c9b64eec4a4a86a3948966187ff8ee9fa720 13-Oct-2013 Serban Constantinescu <serban.constantinescu@arm.com> AArch64: Fix uses of stack size for 32/64bit libc builds

This patch fixes stack size uses to size_t.

Change-Id: I0671c85ddb1c1aceaf9440a7c73c21fe528653fa
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
ionic/_exit_with_stack_teardown.S
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
yscalls.mk
yscalls/__sigaction.S
yscalls/sigaction.S
b2386fed555d63417af9a4db5c4d9d8f3f22441e 17-Oct-2013 Elliott Hughes <enh@google.com> am 4346bd9f: am bffe261a: Merge "Sort the syscalls.mk files, give all generated files the same header."

* commit '4346bd9fbcfe4144df7ac0e920bdda274d523fc4':
Sort the syscalls.mk files, give all generated files the same header.
6b9321b85875dd8938d0a5064ea3e9fdebe5c623 17-Oct-2013 Elliott Hughes <enh@google.com> am d6e117b6: am 1f29c2f5: Merge "Switch sigpending over to rt_sigpending."

* commit 'd6e117b64bdfbf8d793eb59ea9604b806608ec75':
Switch sigpending over to rt_sigpending.
103ccde8fe2f2c8abde914a8ba736b2e9cb8d20b 16-Oct-2013 Elliott Hughes <enh@google.com> Sort the syscalls.mk files, give all generated files the same header.

No non-comment changes to the .S files.

Change-Id: Iafcfd004c3ea92b64268f80ab16df615b97cefac
yscalls.mk
yscalls/__brk.S
yscalls/__fcntl.S
yscalls/__fcntl64.S
yscalls/__fork.S
yscalls/__fstatfs64.S
yscalls/__getcpu.S
yscalls/__getcwd.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__open.S
yscalls/__openat.S
yscalls/__ptrace.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigpending.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigsuspend.S
yscalls/__rt_sigtimedwait.S
yscalls/__sched_getaffinity.S
yscalls/__set_tls.S
yscalls/__statfs64.S
yscalls/__sys_clone.S
yscalls/__syslog.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__waitid.S
yscalls/_exit.S
yscalls/_exit_thread.S
yscalls/accept.S
yscalls/access.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chmod.S
yscalls/chown.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/connect.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup2.S
yscalls/epoll_create.S
yscalls/epoll_ctl.S
yscalls/epoll_wait.S
yscalls/eventfd.S
yscalls/execve.S
yscalls/faccessat.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/fdatasync.S
yscalls/fgetxattr.S
yscalls/flistxattr.S
yscalls/flock.S
yscalls/fremovexattr.S
yscalls/fsetxattr.S
yscalls/fstat.S
yscalls/fstatat.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/ftruncate64.S
yscalls/futex.S
yscalls/getdents.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getpid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsid.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettid.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/getxattr.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init.S
yscalls/inotify_rm_watch.S
yscalls/ioprio_get.S
yscalls/ioprio_set.S
yscalls/klogctl.S
yscalls/lchown.S
yscalls/lgetxattr.S
yscalls/link.S
yscalls/listen.S
yscalls/listxattr.S
yscalls/llistxattr.S
yscalls/lremovexattr.S
yscalls/lseek.S
yscalls/lsetxattr.S
yscalls/lstat.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdir.S
yscalls/mkdirat.S
yscalls/mknod.S
yscalls/mlock.S
yscalls/mlockall.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munlockall.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/pause.S
yscalls/perf_event_open.S
yscalls/personality.S
yscalls/pipe.S
yscalls/pipe2.S
yscalls/poll.S
yscalls/prctl.S
yscalls/pread64.S
yscalls/pwrite64.S
yscalls/read.S
yscalls/readahead.S
yscalls/readlink.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmsg.S
yscalls/removexattr.S
yscalls/rename.S
yscalls/renameat.S
yscalls/rmdir.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setaffinity.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/select.S
yscalls/sendfile.S
yscalls/sendfile64.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setresuid.S
yscalls/setreuid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/setuid.S
yscalls/setxattr.S
yscalls/shutdown.S
yscalls/sigaction.S
yscalls/sigaltstack.S
yscalls/signalfd4.S
yscalls/socket.S
yscalls/socketpair.S
yscalls/stat.S
yscalls/swapoff.S
yscalls/swapon.S
yscalls/symlink.S
yscalls/sync.S
yscalls/sysinfo.S
yscalls/timerfd_create.S
yscalls/timerfd_gettime.S
yscalls/timerfd_settime.S
yscalls/times.S
yscalls/truncate.S
yscalls/truncate64.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlink.S
yscalls/unlinkat.S
yscalls/unshare.S
yscalls/utimensat.S
yscalls/utimes.S
yscalls/vfork.S
yscalls/wait4.S
yscalls/write.S
yscalls/writev.S
40d105ccb3e6283566ce54b693b3088f31aa4f26 16-Oct-2013 Elliott Hughes <enh@google.com> Switch sigpending over to rt_sigpending.

Change-Id: I7b28984796b5fb343cfbcc47e0afc3a84293d417
yscalls.mk
yscalls/__rt_sigpending.S
yscalls/sigpending.S
afaebc3fefe93cbfbaead60212dab7b99bae9d7a 16-Oct-2013 Elliott Hughes <enh@google.com> am 87fc78de: am 608c65f6: Merge "Fix sigsuspend to use rt_sigsuspend on all platforms."

* commit '87fc78de6c869d0403ccdd2e756ec1f5d456f3d3':
Fix sigsuspend to use rt_sigsuspend on all platforms.
1f5af926fa626734981d6b4dcc0ab54e520032a9 16-Oct-2013 Elliott Hughes <enh@google.com> Fix sigsuspend to use rt_sigsuspend on all platforms.

Change-Id: I981c1a66d35480d4457a0a08a1b042dac94daa5b
yscalls.mk
yscalls/__rt_sigsuspend.S
yscalls/__sigsuspend.S
f2a760dca7e728bd6f7942dece1bb6aefe4821ed 16-Oct-2013 Elliott Hughes <enh@google.com> am a85606e1: am c100a100: Merge "\'Avoid confusing "read prevented write" log messages\' 2."

* commit 'a85606e1563c2153bea3c73dfe4ca1588e778f22':
'Avoid confusing "read prevented write" log messages' 2.
68b67113a44311b3568027af5893e316f63ec556 16-Oct-2013 Elliott Hughes <enh@google.com> 'Avoid confusing "read prevented write" log messages' 2.

This time it's assembler.

Change-Id: Iae6369833b8046b8eda70238bb4ed0cae64269ea
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memset.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memset.S
eneric/bionic/memcpy.S
eneric/bionic/memset.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memset.S
289c460c55fdf50c03e8711de077d2db67346d9b 16-Oct-2013 Christopher Ferris <cferris@google.com> am ac6bc319: Remove new aligned memcpy path for cortex-a15.

* commit 'ac6bc31942e58c8893c0695d9766d0f3e39335fe':
Remove new aligned memcpy path for cortex-a15.
ac6bc31942e58c8893c0695d9766d0f3e39335fe 15-Oct-2013 Christopher Ferris <cferris@google.com> Remove new aligned memcpy path for cortex-a15.

For some reason the new cortex-a15 memcpy code from ARM is really bad
for really large copies. This change forces us to go down the old path
for all copies.

All of my benchmarks show the new version is faster for large copies, but
something is going on that I don't understand.

Bug: 10838353
Change-Id: I01c16d4a2575e76f4c69862c6f78fd9024eb3fb8
ortex-a15/bionic/memcpy_base.S
d77ff4f423c5b8235914d67af5b5ff450f8a2f95 15-Oct-2013 Christopher Ferris <cferris@google.com> am 76d78dc0: am dc9d8d05: Merge "Modify prefetch for krait memcpy."

* commit '76d78dc0441ba982438ef613a8d6f2f65c6834e0':
Modify prefetch for krait memcpy.
4681f8244ee6fd3aec5a5c62e604e2a429d0d00f 15-Oct-2013 Elliott Hughes <enh@google.com> am 5b3f1d8b: am 22b83da4: Merge "Clean up the sigprocmask/pthread_sigmask implementation."

* commit '5b3f1d8b3a6a1caf059dc376e4967a27ddd57dac':
Clean up the sigprocmask/pthread_sigmask implementation.
dc9d8d050a43e1cd32f1337e79187124bb15d938 15-Oct-2013 Christopher Ferris <cferris@google.com> Merge "Modify prefetch for krait memcpy."
c3c58fb560fcf1225d4bfb533ba41add8de910e4 15-Oct-2013 Christopher Ferris <cferris@google.com> Modify prefetch for krait memcpy.

I originally modified the krait mainloop prefetch from cacheline * 8 to * 2.
This causes a perf degradation for copies bigger than will fit in the cache.
Fixing this back to the original * 8. I tried other multiples, but * 8 is th
sweet spot on krait.

Bug: 11221806

Change-Id: I1f75fad6440f7417e664795a6e7b5616f6a29c45
rait/bionic/memcpy_base.S
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
yscalls.mk
yscalls/sigprocmask.S
2d38f0c1c7ccb123a9a71dcabeb3650d8f5832b7 10-Oct-2013 Elliott Hughes <enh@google.com> am 21d70d5f: am 39385aa7: Merge "Clean up the cpuacct cruft."

* commit '21d70d5fd8ff2823a6879d59c7d5a8d6c3e0ce8b':
Clean up the cpuacct cruft.
232163cf70712fe00436b70dd495f4cf405e9eab 10-Oct-2013 Elliott Hughes <enh@google.com> Clean up the cpuacct cruft.

Change-Id: I6ed63af8dfc2368e211420389fa8af4d5dc0908f
yscalls.mk
yscalls/__setresuid.S
yscalls/__setreuid.S
yscalls/__setuid.S
yscalls/setresuid.S
yscalls/setreuid.S
yscalls/setuid.S
1cdc9fe6d58b477385de0f60725a355de2151706 10-Oct-2013 Elliott Hughes <enh@google.com> am 8826ba8a: am bc545e8a: Merge "Fix x86_64 build, clean up intermediate libraries."

* commit '8826ba8ab6922927bdac2466d2903916d5806a06':
Fix x86_64 build, clean up intermediate libraries.
eb847bc8666842a3cfc9c06e8458ad1abebebaf0 10-Oct-2013 Elliott Hughes <enh@google.com> Fix x86_64 build, clean up intermediate libraries.

The x86_64 build was failing because clone.S had a call to __thread_entry which
was being added to a different intermediate .a on the way to making libc.so,
and the linker couldn't guarantee statically that such a relocation would be
possible.

ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against '__thread_entry' which may overflow at runtime; recompile with -fPIC

This patch addresses that by ensuring that the caller and callee end up in the
same intermediate .a. While I'm here, I've tried to clean up some of the mess
that led to this situation too. In particular, this removes libc/private/ from
the default include path (except for the DNS code), and splits out the DNS
code into its own library (since it's a weird special case of upstream NetBSD
code that's diverged so heavily it's unlikely ever to get back in sync).

There's more cleanup of the DNS situation possible, but this is definitely a
step in the right direction, and it's more than enough to get x86_64 building
cleanly.

Change-Id: I00425a7245b7a2573df16cc38798187d0729e7c4
ionic/atexit_legacy.c
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memset.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memset.S
eneric/bionic/memcpy.S
eneric/bionic/memset.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memset.S
42b618cffef4b91bd11633c3ee95659d4fc41943 09-Oct-2013 Elliott Hughes <enh@google.com> am 58b8f225: am 5cf1f229: Merge "pthread_exit should call __NR_exit with status 0."

* commit '58b8f2256637c5b1e24b568b699fb3aa6cf0ca96':
pthread_exit should call __NR_exit with status 0.
c4c6e192ac045c06f4aad3afc8e437baf67227b7 08-Oct-2013 Elliott Hughes <enh@google.com> pthread_exit should call __NR_exit with status 0.

We shouldn't have been passing the bottom 32 bits of the address used
for pthread_join to the kernel.

Change-Id: I487e5002d60c27adba51173719213abbee0f183f
ionic/_exit_with_stack_teardown.S
9258c7b23edbc761bf4a5cec2f57f83574d6aec6 05-Oct-2013 Elliott Hughes <enh@google.com> am b7d77a9e: am 56777421: Merge "Add arch-x86_64/include/machine."

* commit 'b7d77a9eb1effd5f0472dff14a8fe77d9da2c7a2':
Add arch-x86_64/include/machine.
72645164b6840806d1681f48565bb3b54efc4628 05-Oct-2013 Elliott Hughes <enh@google.com> Add arch-x86_64/include/machine.

This is basically the other half of I5de76f6c46ac87779f207d568a86bb453e2414de
from Pavel Chupin <pavel.v.chupin@intel.com>, but taking the exact upstream
_types.h instead of the modified version. (I was confused when I suggested
otherwise.)

I've also cleaned up the internal_types.h situation; we weren't gaining
anything from these empty files, and there is no upstream internal_types.h
for x86_64.

Change-Id: I802a9a6a8df1c979e820659212c75a47c2ef392e
nclude/machine/internal_types.h
7909bd19ab471a087fc802a15ac11cc4e3bdc68e 04-Oct-2013 Nick Kralevich <nnk@google.com> am 9da8b682: am c417d0a5: Merge "Make error messages even better!"

* commit '9da8b6829cb8febb70af46761b7f2ca19e6498ce':
Make error messages even better!
6861c6f85e6563695c4763e56756398c9d5f6e14 04-Oct-2013 Nick Kralevich <nnk@google.com> Make error messages even better!

Change-Id: I72bd1eb1d526dc59833e5bc3c636171f7f9545af
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memset.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memset.S
eneric/bionic/memcpy.S
eneric/bionic/memset.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memset.S
be7b6408b383f4d2ba5a696a3fc64275d11b1c14 04-Oct-2013 Elliott Hughes <enh@google.com> am 6d923d49: am 14102932: Merge "Move common arch-* code to arch-common directory"

* commit '6d923d497373c160f6fdddd42f5ed56e7bf0923a':
Move common arch-* code to arch-common directory
141029327cdc62629e248b3be1d7a58d4e9e5ba8 04-Oct-2013 Elliott Hughes <enh@google.com> Merge "Move common arch-* code to arch-common directory"
1a086a52d30930893bfc6b2826127120f6482bec 03-Oct-2013 Christopher Ferris <cferris@google.com> am 270c52da: am 1fe477fc: Merge "Add dependencies on included makefiles."

* commit '270c52da0db68c6961eb576b67adc0c41c418763':
Add dependencies on included makefiles.
d7a632948d5b3128cc536a2c4db3124b4fa57a80 03-Oct-2013 Christopher Ferris <cferris@google.com> Add dependencies on included makefiles.

Bug: 11050594

Merge from internal master.

(cherry-picked from f389284e86bbcbdb257d7388a17fde007113b0d6)

Change-Id: I2b3e38329a09d26c16870906f9ed1257e2a9dbc8
rm.mk
bdc610aba53feafe130b749c3cbffc36d6a70d1b 03-Oct-2013 Christopher Ferris <cferris@google.com> am dc7f8ddc: am 6088047a: Merge "Remove dead files."

* commit 'dc7f8ddc227e833b889eb1eedc16b9b5827fc127':
Remove dead files.
fc4d70fe54b8199560ce1426fff697a7234bf2d9 03-Oct-2013 Christopher Ferris <cferris@google.com> Remove dead files.

memcpy.a15.S/strcmp.a15.S files were submitted by ARM for use as the basis
for the memcpy/strcmp implementations in cortex-a15.

memset.S was moved in to the generic directory.

NOTE: memcpy.a9.S was submitted by Linaro to be the basis for the memcpy
for cortex-a9/cortex-a15 but has not been incorporated yet.

Bug: 10971279

Merge from internal master.

(cherry-picked from 48fc3e8b9fe7241ecf8ad61248247986742f05b6)

Change-Id: I8f9297578990d517f004e4e8840e2b2cbd5a47d8
ionic/memcpy.a15.S
ionic/memset.S
ionic/strcmp.a15.S
b49c17c2bf1232e29bc390e58d6fa43688929aa5 02-Oct-2013 Pavel Chupin <pavel.v.chupin@intel.com> Move common arch-* code to arch-common directory

Will be helpful on adding x86_64

Change-Id: I96cf6fc7912c02f289c75f07ae0079c32d69173f
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
ionic/atexit.h
ionic/crtbegin.c
ionic/crtbegin_so.c
ionic/crtend.S
ionic/crtend_so.S
de7ed18df0f22e1b91bc16072956af8a0d9abaa3 03-Oct-2013 Christopher Ferris <cferris@google.com> am 0292c1c8: am 3901b1bd: Merge "Remove the __ARM_FEATURE_DSP check."

* commit '0292c1c81dfed23a32d46fb0b089b7eccb87e21e':
Remove the __ARM_FEATURE_DSP check.
aec1b3540aa74128af8e2162db79334c7f8ce888 03-Oct-2013 Christopher Ferris <cferris@google.com> Remove the __ARM_FEATURE_DSP check.

The check for __ARM_FEATURE_DSP being defined is pointless since it
is always defined.

Bug: 10971279

Merge from internal master.

(cherry-picked from d2642fa70cfbd77286514e1123fcd280d7f7047f)

Change-Id: If23ab3271f4da0c38cd531ffdc9a7e5eed6ec5dc
ortex-a15/bionic/strcmp.S
ortex-a9/bionic/strcmp.S
rait/bionic/strcmp.S
670f372470cc6f885fd035495b14b8890763f665 03-Oct-2013 Nick Kralevich <nnk@google.com> am b6201932: am 2c701a1b: Merge "libc: don\'t export unnecessary symbols"

* commit 'b6201932838c46a567e3411047719fd5c2797e96':
libc: don't export unnecessary symbols
32bbf8a63bb43a540cc0f1dd5037736d10b70e0b 03-Oct-2013 Nick Kralevich <nnk@google.com> libc: don't export unnecessary symbols

Symbols associated with the internal implementation of memcpy
like routines should be private.

Change-Id: I2b1d1f59006395c29d518c153928437b08f93d16
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memcpy_base.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memcpy_base.S
ortex-a9/bionic/memset.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memcpy_base.S
5825f979b726ea18b98994561280b5cbb8426b51 26-Sep-2013 Elliott Hughes <enh@google.com> am 88f29444: am 7b538021: Merge "Make it easier to add syscalls for another architecture."

* commit '88f2944421839b725e02e97c62d119c9e608ec58':
Make it easier to add syscalls for another architecture.
d612165c6705379aa50144afc35aa40c16793728 26-Sep-2013 Elliott Hughes <enh@google.com> Make it easier to add syscalls for another architecture.

Much of the per-architecture duplication can be removed, so let's do so
before we add the 64-bit architectures.

Change-Id: Ieb796503c8e5353ea38c3bab768bb9a690c9a767
yscalls.mk
16e185c9081530859c17270fbaf5798f0ea871f8 11-Sep-2013 Christopher Ferris <cferris@google.com> __memcpy_chk: Fix signed cmp of unsigned values.

I accidentally did a signed comparison of the size_t values passed in
for three of the _chk functions. Changing them to unsigned compares.

Add three new tests to verify this failure is fixed.

Bug: 10691831

Merge from internal master.

(cherry-picked from 883ef2499c2ff76605f73b1240f719ca6282e554)

Change-Id: Id9a96b549435f5d9b61dc132cf1082e0e30889f5
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
a57c9c084bc686a35f4f494ce23cf2a9bb3d5d00 21-Aug-2013 Christopher Ferris <cferris@google.com> Fix all debug directives.

The backtrace when a fortify check failed was not correct. This change
adds all of the necessary directives to get a correct backtrace.

Fix the strcmp directives and change all labels to local labels.

Testing:
- Verify that the runtime can decode the stack for __memcpy_chk, __memset_chk,
__strcpy_chk, __strcat_chk fortify failures.
- Verify that gdb can decode the stack properly when hitting a fortify check.
- Verify that the runtime can decode the stack for a seg fault for all of the
_chk functions and for memcpy/memset.
- Verify that gdb can decode the stack for a seg fault for all of the _chk
functions and for memcpy/memset.
- Verify that the runtime can decode the stack for a seg fault for strcmp.
- Verify that gdb can decode the stack for a seg fault in strcmp.

Bug: 10342460
Bug: 10345269

Merge from internal master.

(cherry-picked from 05332f2ce7e542d32ff4d5cd9f60248ad71fbf0d)

Change-Id: Ibc919b117cfe72b9ae97e35bd48185477177c5ca
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memcpy_base.S
ortex-a15/bionic/strcmp.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memcpy_base.S
ortex-a9/bionic/memset.S
ortex-a9/bionic/strcmp.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memcpy_base.S
rait/bionic/strcmp.S
bd7fe1d3c4c8877ac53839169851621249289bd7 20-Aug-2013 Christopher Ferris <cferris@google.com> Update all debug directives.

The libcorkscrew stack unwinder does not understand cfi directives,
so add .save directives so that it can function properly.

Also add the directives in to strcmp.S and fix a missing set of
directives in cortex-a9/memcpy_base.S.

Bug: 10345269

Merge from internal master.

(cherry-picked from 5f7ccea3ffab05aeceecb85c821003cf580630d3)

Change-Id: If48a216203216a643807f5d61906015984987189
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memset.S
ortex-a15/bionic/strcmp.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memcpy_base.S
ortex-a9/bionic/memset.S
ortex-a9/bionic/strcmp.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memset.S
rait/bionic/strcmp.S
e74f77f92d80f11616da699ac908fd5d1913e996 20-Sep-2013 Elliott Hughes <enh@google.com> am 48a909c9: am aad3c52e: Merge "Ensure we have the off64_t variant of every function that takes an off_t."

* commit '48a909c9fd6dbe9be5655ad172d1083fa69c4107':
Ensure we have the off64_t variant of every function that takes an off_t.
b4f7616fd618875768b8fffc122b58bdb84a9969 20-Sep-2013 Elliott Hughes <enh@google.com> Ensure we have the off64_t variant of every function that takes an off_t.

Change-Id: Ib2eee0cf13162be3b62559b84e90c6dcf5aab1c3
yscalls.mk
yscalls/sendfile64.S
yscalls/truncate64.S
2e7a8b44c2691770e917efcca80bc2650d93efaa 11-Sep-2013 Christopher Ferris <cferris@google.com> resolved conflicts for merge of 883ef249 to klp-dev-plus-aosp

Change-Id: I1e2bd03a0cb5a0ab191c525d1574377bc7fd90ab
883ef2499c2ff76605f73b1240f719ca6282e554 11-Sep-2013 Christopher Ferris <cferris@google.com> __memcpy_chk: Fix signed cmp of unsigned values.

I accidentally did a signed comparison of the size_t values passed in
for three of the _chk functions. Changing them to unsigned compares.

Add three new tests to verify this failure is fixed.

Bug: 10691831
Change-Id: Ia831071f7dffd5972a748d888dd506c7cc7ddba3
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
5cb04369309856f2d2960fe3fbd517ce4e403605 06-Sep-2013 Christopher Ferris <cferris@google.com> am 1a88ca08: am 98c726ec: Merge "Add the dl_iterate_phdr function to libdl for arm."

* commit '1a88ca08046ea510bfc8d3de6875537f124b3ce3':
Add the dl_iterate_phdr function to libdl for arm.
24053a461e7a20f34002262c1bb122023134989d 20-Aug-2013 Christopher Ferris <cferris@google.com> Add the dl_iterate_phdr function to libdl for arm.

Bug: 8410085

Merge from internal master.

(cherry-picked from cb491bc66dc0abc145930b09086eb9189a30f6c2)

Change-Id: I94ed51bc5d4c626df7552c0e85c31ccee2d6568f
rm.mk
153ec2a76f539902cc84a15b6737bf3ce9243f30 29-Aug-2013 Christopher Ferris <cferris@google.com> am 49c0d471: Merge "Fix all debug directives." into klp-dev

* commit '49c0d471a8ba9ed32e7fdadb7e4ea6118b4b4af4':
Fix all debug directives.
05332f2ce7e542d32ff4d5cd9f60248ad71fbf0d 21-Aug-2013 Christopher Ferris <cferris@google.com> Fix all debug directives.

The backtrace when a fortify check failed was not correct. This change
adds all of the necessary directives to get a correct backtrace.

Fix the strcmp directives and change all labels to local labels.

Testing:
- Verify that the runtime can decode the stack for __memcpy_chk, __memset_chk,
__strcpy_chk, __strcat_chk fortify failures.
- Verify that gdb can decode the stack properly when hitting a fortify check.
- Verify that the runtime can decode the stack for a seg fault for all of the
_chk functions and for memcpy/memset.
- Verify that gdb can decode the stack for a seg fault for all of the _chk
functions and for memcpy/memset.
- Verify that the runtime can decode the stack for a seg fault for strcmp.
- Verify that gdb can decode the stack for a seg fault in strcmp.

Bug: 10342460
Bug: 10345269

Change-Id: I1dedadfee207dce4a285e17a21e8952bbc63786a
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memcpy_base.S
ortex-a15/bionic/strcmp.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memcpy_base.S
ortex-a9/bionic/memset.S
ortex-a9/bionic/strcmp.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memcpy_base.S
rait/bionic/strcmp.S
f6186e95929b8da3d90057648475301bf6ee03d2 28-Aug-2013 Nick Kralevich <nnk@google.com> am 1278ae38: am 22f5ef6b: Merge "Delete CAVEATS / fix spelling."

* commit '1278ae38366102369b5a35152f2213426a148512':
Delete CAVEATS / fix spelling.
bdbdbb8319b85044ba528f673de253a97910cf77 28-Aug-2013 Nick Kralevich <nnk@google.com> Delete CAVEATS / fix spelling.

Change-Id: I0ed504271b7c2e4434d0d5f53bc10335c8cf7b5b
ionic/eabi.c
5f7ccea3ffab05aeceecb85c821003cf580630d3 20-Aug-2013 Christopher Ferris <cferris@google.com> Update all debug directives.

The libcorkscrew stack unwinder does not understand cfi directives,
so add .save directives so that it can function properly.

Also add the directives in to strcmp.S and fix a missing set of
directives in cortex-a9/memcpy_base.S.

Bug: 10345269

Change-Id: I043f493e0bb6c45bd3f4906fbe1d9f628815b015
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memset.S
ortex-a15/bionic/strcmp.S
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memcpy_base.S
ortex-a9/bionic/memset.S
ortex-a9/bionic/strcmp.S
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memset.S
rait/bionic/strcmp.S
5f45d583b0cfb4f7bed1447e8eed003a529cc69e 07-Aug-2013 Christopher Ferris <cferris@google.com> Create optimized __strcpy_chk/__strcat_chk.

This change pulls the memcpy code out into a new file so that the
__strcpy_chk and __strcat_chk can use it with an include.

The new versions of the two chk functions uses assembly versions
of strlen and memcpy to implement this check. This allows near
parity with the assembly versions of strcpy/strcat. It also means that
as memcpy implementations get faster, so do the chk functions.

Other included changes:
- Change all of the assembly labels to local labels. The other labels
confuse gdb and mess up backtracing.
- Add .cfi_startproc and .cfi_endproc directives so that gdb is not
confused when falling through from one function to another.
- Change all functions to use cfi directives since they are more powerful.
- Move the memcpy_chk fail code outside of the memcpy function definition
so that backtraces work properly.
- Preserve lr before the calls to __fortify_chk_fail so that the backtrace
actually works.

Testing:

- Ran the bionic unit tests. Verified all error messages in logs are set
correctly.
- Ran libc_test, replacing strcpy with __strcpy_chk and replacing
strcat with __strcat_chk.
- Ran the debugger on nexus10, nexus4, and old nexus7. Verified that the
backtrace is correct for all fortify check failures. Also verify that
when falling through from __memcpy_chk to memcpy that the backtrace is
still correct. Also verified the same for __memset_chk and bzero.
Verified the two different paths in the cortex-a9 memset routine that
save variables to the stack still show the backtrace properly.

Bug: 9293744

(cherry-picked from 2be91915dcecc956d14ff281db0c7d216ca98af2)

Change-Id: Ia407b74d3287d0b6af0139a90b6eb3bfaebf2155
rm.mk
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memcpy_base.S
ortex-a15/bionic/memset.S
ortex-a15/cortex-a15.mk
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memcpy_base.S
ortex-a9/bionic/memset.S
ortex-a9/cortex-a9.mk
eneric/generic.mk
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memcpy_base.S
rait/bionic/memset.S
rait/krait.mk
59a13c122ebc4191583b67c846a95d690dcda5cf 01-Aug-2013 Christopher Ferris <cferris@google.com> Optimize __memset_chk, __memcpy_chk. DO NOT MERGE.

This change creates assembler versions of __memcpy_chk/__memset_chk
that is implemented in the memcpy/memset assembler code. This change
avoids an extra call to memcpy/memset, instead allowing a simple fall
through to occur from the chk code into the body of the real
implementation.

Testing:

- Ran the libc_test on __memcpy_chk/__memset_chk on all nexus devices.
- Wrote a small test executable that has three calls to __memcpy_chk and
three calls to __memset_chk. First call dest_len is length + 1. Second
call dest_len is length. Third call dest_len is length - 1.
Verified that the first two calls pass, and the third fails. Examined
the logcat output on all nexus devices to verify that the fortify
error message was sent properly.
- I benchmarked the new __memcpy_chk and __memset_chk on all systems. For
__memcpy_chk and large copies, the savings is relatively small (about 1%).
For small copies, the savings is large on cortex-a15/krait devices
(between 5% to 30%).
For cortex-a9 and small copies, the speed up is present, but relatively
small (about 3% to 5%).
For __memset_chk and large copies, the savings is also small (about 1%).
However, all processors show larger speed-ups on small copies (about 30% to
100%).

Bug: 9293744

Merge from internal master.

(cherry-picked from 7c860db0747f6276a6e43984d43f8fa5181ea936)

Change-Id: I916ad305e4001269460ca6ebd38aaa0be8ac7f52
rm.mk
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memset.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memset.S
eneric/bionic/memcpy.S
eneric/bionic/memset.S
rait/bionic/memcpy.S
rait/bionic/memset.S
f0c3d909136167fdbe32b7815e5e1e02b4c35d62 07-Aug-2013 Christopher Ferris <cferris@google.com> Create optimized __strcpy_chk/__strcat_chk.

This change pulls the memcpy code out into a new file so that the
__strcpy_chk and __strcat_chk can use it with an include.

The new versions of the two chk functions uses assembly versions
of strlen and memcpy to implement this check. This allows near
parity with the assembly versions of strcpy/strcat. It also means that
as memcpy implementations get faster, so do the chk functions.

Other included changes:
- Change all of the assembly labels to local labels. The other labels
confuse gdb and mess up backtracing.
- Add .cfi_startproc and .cfi_endproc directives so that gdb is not
confused when falling through from one function to another.
- Change all functions to use cfi directives since they are more powerful.
- Move the memcpy_chk fail code outside of the memcpy function definition
so that backtraces work properly.
- Preserve lr before the calls to __fortify_chk_fail so that the backtrace
actually works.

Testing:

- Ran the bionic unit tests. Verified all error messages in logs are set
correctly.
- Ran libc_test, replacing strcpy with __strcpy_chk and replacing
strcat with __strcat_chk.
- Ran the debugger on nexus10, nexus4, and old nexus7. Verified that the
backtrace is correct for all fortify check failures. Also verify that
when falling through from __memcpy_chk to memcpy that the backtrace is
still correct. Also verified the same for __memset_chk and bzero.
Verified the two different paths in the cortex-a9 memset routine that
save variables to the stack still show the backtrace properly.

Bug: 9293744
Change-Id: Id5aec8c3cb14101d91bd125eaf3770c9c8aa3f57
(cherry picked from commit 2be91915dcecc956d14ff281db0c7d216ca98af2)
rm.mk
ortex-a15/bionic/__strcat_chk.S
ortex-a15/bionic/__strcpy_chk.S
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memcpy_base.S
ortex-a15/bionic/memset.S
ortex-a15/cortex-a15.mk
ortex-a9/bionic/__strcat_chk.S
ortex-a9/bionic/__strcpy_chk.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memcpy_base.S
ortex-a9/bionic/memset.S
ortex-a9/cortex-a9.mk
eneric/generic.mk
rait/bionic/__strcat_chk.S
rait/bionic/__strcpy_chk.S
rait/bionic/memcpy.S
rait/bionic/memcpy_base.S
rait/bionic/memset.S
rait/krait.mk
b922ed349893c9a5e62eca0de4ad32a4851484d1 06-Aug-2013 Christopher Ferris <cferris@google.com> Fix strcpy.c that should have been strcpy.S. DO NOT MERGE

Merge from internal master.

(cherry-picked from 1ce665416307628f4bcaced86faa64bdf9c489c3)

Change-Id: I376b831df42248baadde7202a30a68112f752ff7
eneric/generic.mk
4e24dcc8d869db7303650d8444c8796445fbbc07 15-Jul-2013 Christopher Ferris <cferris@google.com> Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE

Create one version of strcat/strcpy/strlen for cortex-a15/krait and another
version for cortex-a9.

Tested with the libc_test strcat/strcpy/strlen tests.
Including new tests that verify that the src for strcat/strcpy do not
overread across page boundaries.

NOTE: The handling of unaligned strcpy (same code in strcat) could probably
be optimized further such that the src is read 64 bits at a time instead of
the partial reads occurring now.

strlen improves slightly since it was recently optimized.

Performance improvements for strcpy and strcat (using an empty dest string):

cortex-a9
- Small copies vary from about 5% to 20% as the size gets above 10 bytes.
- Copies >= 1024, about a 60% improvement.
- Unaligned copies, from about 40% improvement.

cortex-a15
- Most small copies exhibit a 100% improvement, a few copies only
improve by 20%.
- Copies >= 1024, about 150% improvement.
- Unaligned copies, about 100% improvement.

krait
- Most small copies vary widely, but on average 20% improvement, then
the performance gets better, hitting about a 100% improvement when
copies 64 bytes of data.
- Copies >= 1024, about 100% improvement.
- When coping MBs of data, about 50% improvement.
- Unaligned copies, about 90% improvement.

As strcat destination strings get larger in size:

cortex-a9
- about 40% improvement for small dst strings (>= 32).
- about 250% improvement for dst strings >= 1024.

cortex-a15
- about 200% improvement for small dst strings (>=32).
- about 250% improvement for dst strings >= 1024.

krait
- about 25% improvement for small dst strings (>=32).
- about 100% improvement for dst strings >=1024.

Merge from internal master.

(cherry-picked from d119b7b6f48fe507088cfb98bcafa99b320fd884)

Change-Id: I296463b251ef9fab004ee4dded2793feca5b547a
rm.mk
ionic/strcpy.S
ortex-a15/bionic/strcat.S
ortex-a15/bionic/strcpy.S
ortex-a15/bionic/strlen.S
ortex-a15/cortex-a15.mk
ortex-a9/bionic/strcat.S
ortex-a9/bionic/strcpy.S
ortex-a9/bionic/strlen.S
ortex-a9/cortex-a9.mk
eneric/bionic/strcpy.S
eneric/generic.mk
rait/krait.mk
7c860db0747f6276a6e43984d43f8fa5181ea936 01-Aug-2013 Christopher Ferris <cferris@google.com> Optimize __memset_chk, __memcpy_chk.

This change creates assembler versions of __memcpy_chk/__memset_chk
that is implemented in the memcpy/memset assembler code. This change
avoids an extra call to memcpy/memset, instead allowing a simple fall
through to occur from the chk code into the body of the real
implementation.

Testing:

- Ran the libc_test on __memcpy_chk/__memset_chk on all nexus devices.
- Wrote a small test executable that has three calls to __memcpy_chk and
three calls to __memset_chk. First call dest_len is length + 1. Second
call dest_len is length. Third call dest_len is length - 1.
Verified that the first two calls pass, and the third fails. Examined
the logcat output on all nexus devices to verify that the fortify
error message was sent properly.
- I benchmarked the new __memcpy_chk and __memset_chk on all systems. For
__memcpy_chk and large copies, the savings is relatively small (about 1%).
For small copies, the savings is large on cortex-a15/krait devices
(between 5% to 30%).
For cortex-a9 and small copies, the speed up is present, but relatively
small (about 3% to 5%).
For __memset_chk and large copies, the savings is also small (about 1%).
However, all processors show larger speed-ups on small copies (about 30% to
100%).

Bug: 9293744

Change-Id: I8926d59fe2673e36e8a27629e02a7b7059ebbc98
rm.mk
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memset.S
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memset.S
eneric/bionic/memcpy.S
eneric/bionic/memset.S
rait/bionic/memcpy.S
rait/bionic/memset.S
1ce665416307628f4bcaced86faa64bdf9c489c3 06-Aug-2013 Christopher Ferris <cferris@google.com> Fix strcpy.c that should have been strcpy.S.

Change-Id: Ib4609baad3a14c8b0f37556269781fa2b06916dc
eneric/generic.mk
e1857431e8b7120de3a0d42fb671c056df7c673d 06-Aug-2013 Christopher Ferris <cferris@google.com> Merge "Optimize strcat/strcpy, small tweaks to strlen."
b78f43579f3dd386ebf7735e706ec4acc2cc9af1 03-Aug-2013 Ben Cheng <bccheng@google.com> am aa2733d1: Merge "Update the comments to reflect the current status."

* commit 'aa2733d17b87c607fccbd6e6a0f44d2d411ffd77':
Update the comments to reflect the current status.
d0313e7a2ac7fdc5255a94983cc4879caf3a74c2 03-Aug-2013 Elliott Hughes <enh@google.com> am a6ed05c1: Merge "libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher"

* commit 'a6ed05c1c4c787241b56df132e77512c64cbc595':
libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher
772b797b7b758328eaf6d4e9c93a6d2f78cbe3d0 03-Aug-2013 Ben Cheng <bccheng@google.com> Update the comments to reflect the current status.

Change-Id: I3a6348b568230fe8b21d121e5b8d30561a9703c2
ionic/libgcc_compat.c
d119b7b6f48fe507088cfb98bcafa99b320fd884 15-Jul-2013 Christopher Ferris <cferris@google.com> Optimize strcat/strcpy, small tweaks to strlen.

Create one version of strcat/strcpy/strlen for cortex-a15/krait and another
version for cortex-a9.

Tested with the libc_test strcat/strcpy/strlen tests.
Including new tests that verify that the src for strcat/strcpy do not
overread across page boundaries.

NOTE: The handling of unaligned strcpy (same code in strcat) could probably
be optimized further such that the src is read 64 bits at a time instead of
the partial reads occurring now.

strlen improves slightly since it was recently optimized.

Performance improvements for strcpy and strcat (using an empty dest string):

cortex-a9
- Small copies vary from about 5% to 20% as the size gets above 10 bytes.
- Copies >= 1024, about a 60% improvement.
- Unaligned copies, from about 40% improvement.

cortex-a15
- Most small copies exhibit a 100% improvement, a few copies only
improve by 20%.
- Copies >= 1024, about 150% improvement.
- Unaligned copies, about 100% improvement.

krait
- Most small copies vary widely, but on average 20% improvement, then
the performance gets better, hitting about a 100% improvement when
copies 64 bytes of data.
- Copies >= 1024, about 100% improvement.
- When coping MBs of data, about 50% improvement.
- Unaligned copies, about 90% improvement.

As strcat destination strings get larger in size:

cortex-a9
- about 40% improvement for small dst strings (>= 32).
- about 250% improvement for dst strings >= 1024.

cortex-a15
- about 200% improvement for small dst strings (>=32).
- about 250% improvement for dst strings >= 1024.

krait
- about 25% improvement for small dst strings (>=32).
- about 100% improvement for dst strings >=1024.

Change-Id: Ifd091ebdbce70fe35a7c5d8f71d5914255f3af35
rm.mk
ionic/strcpy.S
ortex-a15/bionic/strcat.S
ortex-a15/bionic/strcpy.S
ortex-a15/bionic/strlen.S
ortex-a15/cortex-a15.mk
ortex-a9/bionic/strcat.S
ortex-a9/bionic/strcpy.S
ortex-a9/bionic/strlen.S
ortex-a9/cortex-a9.mk
eneric/bionic/strcpy.S
eneric/generic.mk
rait/krait.mk
efddf44c8e75f2807437bf26e8117f86f2645454 28-Jul-2013 synergydev <synergye@codefi.re> libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher

This is needed when passing -mcpu=cortex-a9 or higher on a modern
toolchain for prebuilt library compatibility

Change-Id: I73eb2393377914ae26216a8c2828ad973d1c1225
ionic/libgcc_compat.c
7ff868a6307f0d5e63555b5d320b8ad6e490e3c4 17-Jul-2013 Christopher Ferris <cferris@google.com> am f63c28f0: Merge "Fix assembler errors in generic arm strlen.c."

* commit 'f63c28f0338fd647e88f1f9300b2220093af1aae':
Fix assembler errors in generic arm strlen.c.
b1d7fd4969fdd3d3402b500840561beb30962c1d 17-Jul-2013 Christopher Ferris <cferris@google.com> am 6f4fed74: Merge "Add new optimized strlen for arm."

* commit '6f4fed74cb9405c0f5322307085d15afed6be764':
Add new optimized strlen for arm.
9ad2a73ed65d39c3a638ff9bd2d73250b41212c6 15-Jul-2013 Christopher Ferris <cferris@google.com> Fix assembler errors in generic arm strlen.c.

Tested using a static version of the strlen libc_test program
on a nexus7 that uses the generic code.

Merge from internal master.

(cherry-picked from d8d10a8994472e40d19301b7087806630877b4d5)

Change-Id: I88f7dc01dc5b5c3ac2d5580d92153bc1bc36c564
eneric/bionic/strlen.c
0aa9b52efa75b4c8bbdc12845434e25e457ea57b 10-Jul-2013 Christopher Ferris <cferris@google.com> Add new optimized strlen for arm.

This optimized version is primarily targeted at cortex-a15.

Tested on all nexus devices using the system/extras/libc_test strlen test.
Tested alignments from 1 to 32 that are powers of 2.
Tested that strlen does not cross page boundaries at all alignments.

Speed improvements listed below:

cortex-a15
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~250% improvement.

cortex-a9
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~85% improvement.

krait
- Sizes >= 32 bytes, ~95% improvement.
- Sizes >= 1024 bytes, ~160% improvement.

Merge from internal master.

(cherry-picked from 2fc071797743b88a9a47427d46baed7c7b24f4d2)

Change-Id: I1ceceb4e745fd68e9d946f96d1d42e0cdaff6ccf
rm.mk
ionic/strlen.c
ortex-a15/bionic/strlen.S
ortex-a15/cortex-a15.mk
ortex-a9/cortex-a9.mk
eneric/bionic/strlen.c
eneric/generic.mk
rait/krait.mk
62d6b7526a5cdc24451d032578b86fbe68ce419a 17-Jul-2013 Elliott Hughes <enh@google.com> am 2a18ea14: am f152e386: Merge "EABI syscall cleanup."

* commit '2a18ea1462cf65cc51bfcb1a1c46972ee5af1d01':
EABI syscall cleanup.
2a18ea1462cf65cc51bfcb1a1c46972ee5af1d01 17-Jul-2013 Elliott Hughes <enh@google.com> am f152e386: Merge "EABI syscall cleanup."

* commit 'f152e386fcf477f3f5de9dc020c3660d4f9c4b81':
EABI syscall cleanup.
da4a3e65153f2979b5e339d0efe6b81ebf74af8f 16-Jul-2013 Elliott Hughes <enh@google.com> EABI syscall cleanup.

We cleaned up the auto-generated ones a while back to not touch
the stack unnecessarily if they have <= 4 arguments. This patch
cleans up some hand-crafted ones.

Also improve comments in clone.S.

Change-Id: I8850bf98f2b26829385315304472a760e6880ed8
ionic/clone.S
ionic/futex_arm.S
d8d10a8994472e40d19301b7087806630877b4d5 15-Jul-2013 Christopher Ferris <cferris@google.com> Fix assembler errors in generic arm strlen.c.

Tested using a static version of the strlen libc_test program
on a nexus7 that uses the generic code.

Change-Id: If04d15dcb6c0b18f27f2fefadca5510ed49016c5
eneric/bionic/strlen.c
2fc071797743b88a9a47427d46baed7c7b24f4d2 10-Jul-2013 Christopher Ferris <cferris@google.com> Add new optimized strlen for arm.

This optimized version is primarily targeted at cortex-a15.

Tested on all nexus devices using the system/extras/libc_test strlen test.
Tested alignments from 1 to 32 that are powers of 2.
Tested that strlen does not cross page boundaries at all alignments.

Speed improvements listed below:

cortex-a15
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~250% improvement.

cortex-a9
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~85% improvement.

krait
- Sizes >= 32 bytes, ~95% improvement.
- Sizes >= 1024 bytes, ~160% improvement.

Change-Id: I361b1a36ed89ab991f2a8f0abbf0d7416d39c8f5
rm.mk
ionic/strlen.c
ortex-a15/bionic/strlen.S
ortex-a15/cortex-a15.mk
ortex-a9/cortex-a9.mk
eneric/bionic/strlen.c
eneric/generic.mk
rait/krait.mk
be438a4c40a1e1809f5e9238c22618703a7b4506 03-Jul-2013 Elliott Hughes <enh@google.com> am fac9199c: am ebc8ce1d: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."

* commit 'fac9199c7698481805dd9b1adaf89a2584719f4c':
libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
fac9199c7698481805dd9b1adaf89a2584719f4c 03-Jul-2013 Elliott Hughes <enh@google.com> am ebc8ce1d: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."

* commit 'ebc8ce1de68a83d772106af98c7cb98150bb5662':
libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
2753e12af50a83882a3f854343aa686289da97b5 03-Jul-2013 Will Newton <will.newton@linaro.org> libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.

This memcpy code uses NEON/VFP to achieve very good performance
on ARMv7-A processors. It is specifically tuned for A15 but should
provide good performance on A9 also. It is equivalent to the code
in cortex-strings rev 116.

This patch is a follow up the existing gerrit change:

I7f6f77995f3ca903ad9c66d14261441667a2a935

This version includes a tweak for performance on misaligned
buffers and splits the header comment into license and
documentation sections.

Change-Id: Ibd2e23c8d8e01357ba0247be1d05192de3ceba69
Signed-off-by: Will Newton <will.newton@linaro.org>
ionic/memcpy.a9.S
c6ac3ae269c9fb30bed9c4faf46276ac46abf2e3 01-Jul-2013 Christopher Ferris <cferris@google.com> am 269daac2: am 7c14d67b: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."

* commit '269daac2f1d76a478b83ba4cbb57d28b47eef5ec':
libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
269daac2f1d76a478b83ba4cbb57d28b47eef5ec 01-Jul-2013 Christopher Ferris <cferris@google.com> am 7c14d67b: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."

* commit '7c14d67bc1cc2679365a784e68518bf602b81dc7':
libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
b61103dff4531322b02dd0f2217149e9b258fa10 01-Jul-2013 Will Newton <will.newton@linaro.org> libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.

This memcpy code uses NEON/VFP to achieve very good performance
on ARMv7-A processors. It is specifically tuned for A15 but should
provide good performance on A9 also. It is equivalent to the code
in cortex-strings rev 116.

This patch is a follow up the existing gerrit change:

I7f6f77995f3ca903ad9c66d14261441667a2a935

But this version includes a tweak for performance on misaligned
buffers.

Change-Id: I285abac0068f8ae29a1cbf7862ea8590aadaf0a7
Signed-off-by: Will Newton <will.newton@linaro.org>
ionic/memcpy.a9.S
6937468d37bdeffe77cc288ec0c5e7619acee062 26-Jun-2013 Rom Lemarchand <romlem@google.com> am baa61864: am 995f17e6: Merge "libc: add swapon and swapoff syscalls"

* commit 'baa61864c515a56d4dbeac46b149b4317b01797b':
libc: add swapon and swapoff syscalls
baa61864c515a56d4dbeac46b149b4317b01797b 26-Jun-2013 Rom Lemarchand <romlem@google.com> am 995f17e6: Merge "libc: add swapon and swapoff syscalls"

* commit '995f17e6a9a9903f03f542192da9a83b1cabc684':
libc: add swapon and swapoff syscalls
d206b560e72e791b5dfeb339b5f7c18354bf95fd 06-Jun-2013 Rom Lemarchand <romlem@google.com> libc: add swapon and swapoff syscalls

Change-Id: Ie79dc8e3f2ff1cd427dd6d95e3850920c4b407b0
Signed-off-by: Rom Lemarchand <romlem@google.com>
yscalls.mk
yscalls/swapoff.S
yscalls/swapon.S
d20a04c5cf7f97102cb344a38312cb0eae38b051 11-Jun-2013 Ben Cheng <bccheng@google.com> am 77f90de7: am fc104f89: Merge "Fix abort(3) to raise SIGABRT rather than causing SIGSEGV."

* commit '77f90de728b9fa60b83b7f12a45c1113f3189cb2':
Fix abort(3) to raise SIGABRT rather than causing SIGSEGV.
77f90de728b9fa60b83b7f12a45c1113f3189cb2 11-Jun-2013 Ben Cheng <bccheng@google.com> am fc104f89: Merge "Fix abort(3) to raise SIGABRT rather than causing SIGSEGV."

* commit 'fc104f899d47916f76c91127caf9aeaf7b69d4ef':
Fix abort(3) to raise SIGABRT rather than causing SIGSEGV.
7e6ce1a3c52d8533fed92c143419fedb0c93988a 11-Jun-2013 Ben Cheng <bccheng@google.com> Fix abort(3) to raise SIGABRT rather than causing SIGSEGV.

tgkill() needs the .save stack unwinding directive to get the complete
stack trace.

BUG: https://code.google.com/p/android/issues/detail?id=16672

Change-Id: Ifb447dca2147a592c48baf32769dfc175d8aea72
ionic/tgkill.S
72ce296f282803cb026aff5ab180e8a43656612e 01-Jun-2013 Ben Cheng <bccheng@google.com> am 404d491e: Merge "Use bl instead of blx to support interworking properly."

* commit '404d491eb655839bf4260cc168bb79864473e129':
Use bl instead of blx to support interworking properly.
a123b5d3199ea2eaf8cfc513278f1906dcde1ab8 31-May-2013 Ben Cheng <bccheng@google.com> Use bl instead of blx to support interworking properly.

(cherry picked from commit 9e1905794b4ecd8f7b87d8e4e2f954c8cfc6beda in
master)

Change-Id: I9b8c35ea9e201e00f84315f9f105013c23c94d85
ionic/abort_arm.S
9e1905794b4ecd8f7b87d8e4e2f954c8cfc6beda 31-May-2013 Ben Cheng <bccheng@google.com> Use bl instead of blx to support interworking properly.

BUG: 9227177
Change-Id: I742c2f2ecbe332f9c9743e3f4bde8de791a1d289
ionic/abort_arm.S
d5234a3b08179307b767807f7ddacf5469621426 16-May-2013 Erik Gilling <konkers@android.com> am 4c8eba6f: am 2e317075: Merge "libc/arm: add cortex-a8 cpu variant"

* commit '4c8eba6f2aaf351e29881ca4dc2ec47fc0246446':
libc/arm: add cortex-a8 cpu variant
4c8eba6f2aaf351e29881ca4dc2ec47fc0246446 16-May-2013 Erik Gilling <konkers@android.com> am 2e317075: Merge "libc/arm: add cortex-a8 cpu variant"

* commit '2e317075b044e94fc75e36d08bec8a7eb5fc31ae':
libc/arm: add cortex-a8 cpu variant
22bda4bd670e11e4bb68e67feb75845dcbb17552 03-May-2013 Rom Lemarchand <romlem@google.com> libc/arm: add cortex-a8 cpu variant

Change-Id: I30e8dd6d4b2e7889aea8f5ed21182a5941bfb489
rm.mk
ortex-a8/cortex-a8.mk
562804ff878ede5d0ce0cb0c79ffb9b26777bf76 14-May-2013 Elliott Hughes <enh@google.com> am f0f4fa3f: Merge "libc: add timerfd calls"

* commit 'f0f4fa3fb1ea8623b1e1bc59f7967e0470c8e532':
libc: add timerfd calls
4200e6203aaa67c37874ad2b2271bff920297c7f 09-May-2013 Todd Poynor <toddpoynor@google.com> libc: add timerfd calls

(cherry-pick of 04c0ac14a49e0969333008a9522b64046d58fbdc.)

Change-Id: I06d0b6c2a8781602362b81f48faf1cca76b9ec05
yscalls.mk
yscalls/timerfd_create.S
yscalls/timerfd_gettime.S
yscalls/timerfd_settime.S
04c0ac14a49e0969333008a9522b64046d58fbdc 09-May-2013 Todd Poynor <toddpoynor@google.com> libc: add timerfd calls

Change-Id: Id63b907266d5b87c7422a51d393a1430551ca33d
yscalls.mk
yscalls/timerfd_create.S
yscalls/timerfd_gettime.S
yscalls/timerfd_settime.S
4d8fe5177eae8abe3cf5a596916e85daee78a0f4 19-Apr-2013 Christopher Ferris <cferris@google.com> Tune the memcpy for krait.

Streamline the memcpy a bit removing some unnecessary instructions.

The biggest speed improvement comes from changing the size of
the preload. On krait, the sweet spot for the preload in the main
loop is twice the L1 cache line size.

In most cases, these small tweaks yield > 1000MB/s speed ups. As
the size of the memcpy approaches about 1MB, the speed improvement
disappears.

Change-Id: Ief79694d65324e2db41bee4707dae19b8c24be62
rait/bionic/memcpy.S
83966db80b9cccc3417db7566242d30a330cde29 26-Apr-2013 Andrew Hsieh <andrewhsieh@google.com> am f7153fd1: Merge "Remove redundant space within square brackets"

* commit 'f7153fd13f469e9ba5aecbfa00fde42530ca2124':
Remove redundant space within square brackets
e8f46e8eddc8ebfbe7bea0a238f61f1e9adf4a0a 25-Apr-2013 Andrew Hsieh <andrewhsieh@google.com> Remove redundant space within square brackets

The new "as" in binutils-2.23 (with gcc4.8) is more picky:
it expects register right after [

Change-Id: I876124841582070ab2083ffafe38bc333b5812d0
ionic/strlen.c
39e4ed969948fd738d7b670b099c0b2c25351d95 12-Apr-2013 Christopher Ferris <cferris@google.com> am 516a8970: Merge "Rewrite memset for cortexa15 to use strd."

* commit '516a89705378f43646678e75924529404e52b613':
Rewrite memset for cortexa15 to use strd.
796cbe249bf6626b1de01664c38a7b06dcb2eb1f 09-Apr-2013 Christopher Ferris <cferris@google.com> Rewrite memset for cortexa15 to use strd.

Merge from internal master.

(cherry-picked from commit 7ffad9c120054eedebd5f56f8bed01144e93eafa)

Change-Id: Ia67f2a545399f4fa37b63d5634a3565e4f5482f9
ortex-a15/bionic/memset.S
101dadf6a6a689b53f6db809578627448a14bff8 11-Apr-2013 Christopher Ferris <cferris@google.com> am fc76c7d3: Merge "Add missing branch in memcpy.S dst aligned case."

* commit 'fc76c7d394ebe0e585777955efadf7cc8ed86636':
Add missing branch in memcpy.S dst aligned case.
3fe5b109483f81cdfb317181d4bba3b938bd308f 11-Apr-2013 Christopher Ferris <cferris@google.com> am 68fd78ef: Merge "Update to latest cortexa15 memcpy code."

* commit '68fd78efa05fc61adfbdeadeb757caa45663570c':
Update to latest cortexa15 memcpy code.
bf0d1ad72b35ce1cb796aa0f6d44cbf4a495bff5 02-Apr-2013 Christopher Ferris <cferris@google.com> Add missing branch in memcpy.S dst aligned case.

Merge from internal master.

(cherry-picked from commit 6ffaa931c362602a2b606a610c92326a425a876e)

Change-Id: Ifdcf01fd122866cf0d4c5b5f7a997803561d7889
ortex-a15/bionic/memcpy.S
185ce72d003def80022a48fe56ce65e547170cd2 16-Mar-2013 Christopher Ferris <cferris@google.com> Update to latest cortexa15 memcpy code.

This uses the new code original submitted as memcpy.a15.S as
the base. However, the old code handled unaligned src/dst better
so that was spliced in. I optimized the original unaligned code by
removing a few unnecessary instructions. I optimized the a15 code by
rewriting the pre and post code. I also modified the main loop to add
a pld so that larger copies would not stall waiting for memory.

Test cases for the new memcpy:

- Copy all sized values from 0 to 1024 bytes, using whatever alignment
is returned by malloc.
For each alignment case described below, the test copied from 0 to 128
bytes.
- Src and dst pointers are both aligned to the same value, starting
at one going through every power of two up to and including 128.
- Src aligned to double word boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to double word boundary.
- Src aligned to 16 bit boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to 16 byte boundary.
- Src aligned to word boundary, dst aligned to 1 byte from a word
boundary.
- Src aligned to word boundary, dst aligned to 2 bytes from a word
boundary.
- Src aligned to word boundary, dst aligned to 3 bytes from a word
boundary.
- Src aligned to 1 byte from a word boundary, dst aligned to a word
boundary.
- Src aligned to 2 bytes from a word boundary, dst aligned to a word
boundary.
- Src aligned to 3 bytes from a word boundary, dst aligned to a word
boundary.

Cases to verify the unaligned source code properly aligns to a 16 bit
boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
4 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
8 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
12 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
16 + 128 bit boundary.

In all cases, a two byte fencepost was placed at the end of the
destination to verify that only the requested number of bytes were copied.

Bug: 8005082

Merge from internal master.

(cherry-picked from commit 21ede92d794969f22cacbdb9f557818f1c5712b5)

Change-Id: Ief70c9e6dc8c6473ae245b6570b2c266fed9618c
ortex-a15/bionic/memcpy.S
369f92349fc784f6c14ad30f5806f708a8f2c7f7 25-Mar-2013 Dima Zavin <dima@android.com> Merge "libc/arm: add cortex-a7 cpu variant" into jb-mr2-dev
0c973d70490bfd893276464bd5b36fc87a8ee59b 23-Mar-2013 Dima Zavin <dima@android.com> libc/arm: add cortex-a7 cpu variant

Change-Id: I541d665805ea69ca96bb6a5f4d50e56287f8c08c
Signed-off-by: Dima Zavin <dima@android.com>
ortex-a7/cortex-a7.mk
cda62094ef6ab44d3804954fff75be1246725c36 22-Mar-2013 Elliott Hughes <enh@google.com> Use the correct names for the __ARM_NR_* syscalls.

This lets us move all the ARM syscall stubs over to the kernel <asm/unistd.h>.
Our generated <sys/linux-syscalls.h> is now unused, but I'll remove that in a
later change.

Change-Id: Ie5ff2cc4abce1938576af7cbaef615a79c7f310d
yscalls/__brk.S
yscalls/__fcntl.S
yscalls/__fcntl64.S
yscalls/__fork.S
yscalls/__fstatfs64.S
yscalls/__getcpu.S
yscalls/__getcwd.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__open.S
yscalls/__openat.S
yscalls/__ptrace.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigtimedwait.S
yscalls/__sched_getaffinity.S
yscalls/__set_tls.S
yscalls/__setresuid.S
yscalls/__setreuid.S
yscalls/__setuid.S
yscalls/__sigsuspend.S
yscalls/__statfs64.S
yscalls/__sys_clone.S
yscalls/__syslog.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__waitid.S
yscalls/_exit.S
yscalls/_exit_thread.S
yscalls/accept.S
yscalls/access.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chmod.S
yscalls/chown.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/connect.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup2.S
yscalls/epoll_create.S
yscalls/epoll_ctl.S
yscalls/epoll_wait.S
yscalls/eventfd.S
yscalls/execve.S
yscalls/faccessat.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/fdatasync.S
yscalls/fgetxattr.S
yscalls/flistxattr.S
yscalls/flock.S
yscalls/fremovexattr.S
yscalls/fsetxattr.S
yscalls/fstat.S
yscalls/fstatat.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/ftruncate64.S
yscalls/futex.S
yscalls/getdents.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getpid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsid.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettid.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/getxattr.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init.S
yscalls/inotify_rm_watch.S
yscalls/ioprio_get.S
yscalls/ioprio_set.S
yscalls/klogctl.S
yscalls/lchown.S
yscalls/lgetxattr.S
yscalls/link.S
yscalls/listen.S
yscalls/listxattr.S
yscalls/llistxattr.S
yscalls/lremovexattr.S
yscalls/lseek.S
yscalls/lsetxattr.S
yscalls/lstat.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdir.S
yscalls/mkdirat.S
yscalls/mknod.S
yscalls/mlock.S
yscalls/mlockall.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munlockall.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/pause.S
yscalls/perf_event_open.S
yscalls/personality.S
yscalls/pipe.S
yscalls/pipe2.S
yscalls/poll.S
yscalls/prctl.S
yscalls/pread64.S
yscalls/pwrite64.S
yscalls/read.S
yscalls/readahead.S
yscalls/readlink.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmsg.S
yscalls/removexattr.S
yscalls/rename.S
yscalls/renameat.S
yscalls/rmdir.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setaffinity.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/select.S
yscalls/sendfile.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/setxattr.S
yscalls/shutdown.S
yscalls/sigaction.S
yscalls/sigaltstack.S
yscalls/signalfd4.S
yscalls/sigpending.S
yscalls/sigprocmask.S
yscalls/socket.S
yscalls/socketpair.S
yscalls/stat.S
yscalls/symlink.S
yscalls/sync.S
yscalls/sysinfo.S
yscalls/times.S
yscalls/truncate.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlink.S
yscalls/unlinkat.S
yscalls/unshare.S
yscalls/utimensat.S
yscalls/utimes.S
yscalls/vfork.S
yscalls/wait4.S
yscalls/write.S
yscalls/writev.S
8794ece296dd62cbeb3d00fe57c831c90a1bef77 22-Mar-2013 Elliott Hughes <enh@google.com> Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.

For some reason, socketcalls.c was only being compiled for ARM, where
it makes no sense. For x86 we generate stubs for the socket functions
that use __NR_socketcall directly.

Change-Id: I84181e6183fae2314ae3ed862276eba82ad21e8e
ionic/_exit_with_stack_teardown.S
ionic/clone.S
ionic/futex_arm.S
ionic/syscall.S
5c2772f59d3b6f564897187324d8606f54423207 22-Mar-2013 Elliott Hughes <enh@google.com> The SYS_ constants should cover all __NR_ values.

<sys/linux-syscalls.h> only contains constants for the syscalls
we're generating stubs for. We want all the syscalls available
on the architecture in question.

Keep using <sys/linux-syscalls.h> on ARM for now because the
__NR_ARM_set_tls and __NR_ARM_cacheflush values aren't in <asm/unistd.h>.

Change-Id: I66683950d87d9b18d6107d0acc0ed238a4496f44
ionic/kill.S
ionic/tgkill.S
ionic/tkill.S
17a8b0db63d54e9d79bf11112ace0c4fe9606289 21-Mar-2013 Elliott Hughes <enh@google.com> Expose wait4 as wait4 rather than __wait4.

This helps strace(1) compile with one fewer hack.

Change-Id: I5296d0cfec5546709cda990abd705ad33d7c4626
yscalls.mk
yscalls/__wait4.S
yscalls/wait4.S
31dea25b8b6438df709f6b2c703cf385a2691e41 09-Mar-2013 Christopher Ferris <cferris@google.com> Create arch specific versions of strcmp.

This uses the new strcmp.a15.S code as the basis for new versions
of strcmp.S.

The cortex-a15 code is the performance optimized version of strcmp.a15.S
taken with only the addition of a few pld instructions.
The cortex-a9 code is the same as the cortex-a15 code except that the
unaligned strcmp code was taken from the original strcmp.S.
The krait code is the same as the cortex-a15 code except that one path
in the unaligned strcmp code was taken from the original strcmp.S code
(the 2 byte overlap case).
The generic code is the original unmodified strmp.S from the bionic
subdirectory.

All three new versions underwent these test cases:

Strings the same, all same size:
- Both pointers double word aligned.
- One pointer double word aligned, one pointer word aligned.
- Both pointers word aligned.
- One pointer double word aligned, one pointer 1 off a word alignment.
- One pointer double word aligned, one pointer 2 off a word alignment.
- One pointer double word aligned, one pointer 3 off a word alignment.
- One pointer word aligned, one pointer 1 off a word alignment.
- One pointer word aligned, one pointer 2 off a word alignment.
- One pointer word aligned, one pointer 3 off a word alignment.
For all cases where it made sense, the two pointers were also tested
swapped.

Different strings, all same size:
- Single difference at double word boundary.
- Single difference at word boudary.
- Single difference at 1 off a word alignment.
- Single difference at 2 off a word alignment.
- Single difference at 3 off a word alignment.

Different sized strings, strings the same until the end:
- Shorter string ends on a double word boundary.
- Shorter string ends on word boundary.
- Shorter string ends at 1 off a word boundary.
- Shorter string ends at 2 off a word boundary.
- Shorter string ends at 3 off a word boundary.

For all different cases, run them through the same pointer alignment
cases when the strings are the same size.
For all cases the two pointers were also tested swapped.

Bug: 8005082

Merge from internal master.

(cherry-picked from commit a9a5870d166f8060a8182cd61e5536b0becea74e)

Change-Id: I4c2b98f8a50804fb98ab67f75e9d660f1315a144
rm.mk
ortex-a15/bionic/strcmp.S
ortex-a15/cortex-a15.mk
ortex-a9/bionic/strcmp.S
ortex-a9/cortex-a9.mk
eneric/bionic/strcmp.S
eneric/generic.mk
rait/bionic/strcmp.S
rait/krait.mk
8f2a5a0b40fc82126c691d5c30131d908772aab7 15-Mar-2013 Elliott Hughes <enh@google.com> Clean up internal libc logging.

We only need one logging API, and I prefer the one that does no
allocation and is thus safe to use in any context.

Also use O_CLOEXEC when opening the /dev/log files.

Move everything logging-related into one header file.

Change-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58
ionic/atexit_legacy.c
ec706c24acb4d1db6a583a57b76adfb9250d39eb 13-Mar-2013 Elliott Hughes <enh@google.com> Merge "Use the kernel's MAX_ERRNO in the syscall stubs."
9aceab50155b17741faded1fb22e2daa51a07fb1 12-Mar-2013 Elliott Hughes <enh@google.com> Use the kernel's MAX_ERRNO in the syscall stubs.

Bug: http://code.google.com/p/android/issues/detail?id=53104
Change-Id: Iaabf7025b153e96dc5eca231a33a32d4cb7d8116
ionic/clone.S
ionic/kill.S
ionic/syscall.S
ionic/tgkill.S
ionic/tkill.S
yscalls/__brk.S
yscalls/__fcntl.S
yscalls/__fcntl64.S
yscalls/__fork.S
yscalls/__fstatfs64.S
yscalls/__getcpu.S
yscalls/__getcwd.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__open.S
yscalls/__openat.S
yscalls/__ptrace.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigtimedwait.S
yscalls/__sched_getaffinity.S
yscalls/__set_tls.S
yscalls/__setresuid.S
yscalls/__setreuid.S
yscalls/__setuid.S
yscalls/__sigsuspend.S
yscalls/__statfs64.S
yscalls/__sys_clone.S
yscalls/__syslog.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__wait4.S
yscalls/__waitid.S
yscalls/_exit.S
yscalls/_exit_thread.S
yscalls/accept.S
yscalls/access.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chmod.S
yscalls/chown.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/connect.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup2.S
yscalls/epoll_create.S
yscalls/epoll_ctl.S
yscalls/epoll_wait.S
yscalls/eventfd.S
yscalls/execve.S
yscalls/faccessat.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/fdatasync.S
yscalls/fgetxattr.S
yscalls/flistxattr.S
yscalls/flock.S
yscalls/fremovexattr.S
yscalls/fsetxattr.S
yscalls/fstat.S
yscalls/fstatat.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/ftruncate64.S
yscalls/futex.S
yscalls/getdents.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getpid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsid.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettid.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/getxattr.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init.S
yscalls/inotify_rm_watch.S
yscalls/ioprio_get.S
yscalls/ioprio_set.S
yscalls/klogctl.S
yscalls/lchown.S
yscalls/lgetxattr.S
yscalls/link.S
yscalls/listen.S
yscalls/listxattr.S
yscalls/llistxattr.S
yscalls/lremovexattr.S
yscalls/lseek.S
yscalls/lsetxattr.S
yscalls/lstat.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdir.S
yscalls/mkdirat.S
yscalls/mknod.S
yscalls/mlock.S
yscalls/mlockall.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munlockall.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/pause.S
yscalls/perf_event_open.S
yscalls/personality.S
yscalls/pipe.S
yscalls/pipe2.S
yscalls/poll.S
yscalls/prctl.S
yscalls/pread64.S
yscalls/pwrite64.S
yscalls/read.S
yscalls/readahead.S
yscalls/readlink.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmsg.S
yscalls/removexattr.S
yscalls/rename.S
yscalls/renameat.S
yscalls/rmdir.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setaffinity.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/select.S
yscalls/sendfile.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/setxattr.S
yscalls/shutdown.S
yscalls/sigaction.S
yscalls/sigaltstack.S
yscalls/signalfd4.S
yscalls/sigpending.S
yscalls/sigprocmask.S
yscalls/socket.S
yscalls/socketpair.S
yscalls/stat.S
yscalls/symlink.S
yscalls/sync.S
yscalls/sysinfo.S
yscalls/times.S
yscalls/truncate.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlink.S
yscalls/unlinkat.S
yscalls/unshare.S
yscalls/utimensat.S
yscalls/utimes.S
yscalls/vfork.S
yscalls/write.S
yscalls/writev.S
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
rm.mk
ortex-a15/bionic/memcpy.S
ortex-a15/bionic/memset.S
ortex-a15/cortex-a15.mk
ortex-a9/bionic/memcpy.S
ortex-a9/bionic/memset.S
ortex-a9/cortex-a9.mk
eneric/bionic/memcpy.S
eneric/bionic/memset.S
eneric/generic.mk
rait/bionic/memcpy.S
rait/bionic/memset.S
rait/krait.mk
14283004f5a8fe4c74961a9c89009a781e1becbe 01-Mar-2013 Ben Cheng <bccheng@google.com> Add stack unwinding directives to memcpy.

Also include some Android specific header files.

Change-Id: Idbcbd43458ba945ca8c61bfbc04ea15fc0ae4e00
ionic/memcpy.a15.S
eb149e954ed7c455d3fb3b19bc064ad358c8bb1e 30-Nov-2012 Greta Yorsh <greta.yorsh@arm.com> Adding strcmp tuned for Cortex-A15.

The attached patch provides a new implementation of strcmp for ARM,
using LDRD instead of LDR whenever possible.

For older architectures that do not support LDRD, this implementation
uses the same algorithm as before.

Testing and benchmarking:
* Validation: successfully passes a test that compares different strings
of length 1-128 and offsets 0-8 from a word boundary. Checked on
qemu/A15/A9, ARM/Thumb mode, Big/Little Endian.
* Integration with gcc: no regression on qemu for arm-none-eabi --with-cpu
a15/a9 --with-mode arm/thumb.

Change-Id: I9e230e1b99dbdc9119b69ee858a89038c516a4ea
Signed-off-by: Vassilis Laganakos <vasileios.laganakos@arm.com>
ionic/strcmp.a15.S
5b349fc22e7ba35ecb76b365d8be71939d204cde 04-Oct-2011 Greta Yorsh <greta.yorsh@arm.com> Adding memcpy tuned for Cortex-A15.

The strategy for large block sizes is LDRD and STRD with offset addressing,
where the main loop copies 64 bytes in every iteration, (i.e., 8 calls to
LDRD and STRD pairs), interleaving load and stores (i.e., the pairs of LDRD
and STRD of the same data are consecutive instructions), and the writeback
of an updated address is a separate instruction, which allows us to write
back the accumulated update once per iteration.

This strategy is implemented in memcpy.S. In some configurations, a plain
version of memcpy (included from memcpy-stub.c) is used instead of the
optimized one.

Validation:
* Correctness: checked memcpy using a test harness for block sizes
ranging between 1 to 128, and source and destination buffers alignment
ranging in { 0,1,2,3,4,8,12 } bytes each.
* Performance: benchmarking on Cortex-A15 FPGA indicates that this strategy
is better for A15 than the strategy used by glibc and even slightly better
than using NEON. Benchmarking on Cortex-A9 bare metal and Linux shows
that the proposed strategy is reasonable: not as fast as the version of
memcpy from glibc (which is the best open source strategy for A9), but
comparable with csl and bionic.
* Integration with GCC: no regression for arm-none-eabi --with-cpu
cortex-a15 and cortex-a9.

Change-Id: Ied56354d8992c62ae3e02d582a2bd55585d814b9
Signed-off-by: Vassilis Laganakos <vasileios.laganakos@arm.com>
ionic/memcpy.a15.S
40eabe24e4e3ae8ebe437f1f4e43cf39cbba2e9e 15-Feb-2013 Elliott Hughes <enh@google.com> Fix the pthread_setname_np test.

Fix the pthread_setname_np test to take into account that emulator kernels are
so old that they don't support setting the name of other threads.

The CLONE_DETACHED thread is obsolete since 2.5 kernels.

Rename kernel_id to tid.

Fix the signature of __pthread_clone.

Clean up the clone and pthread_setname_np implementations slightly.

Change-Id: I16c2ff8845b67530544bbda9aa6618058603066d
ionic/clone.S
6719500dbd9330d7539d2db3dcf3e8ad1858c7aa 14-Feb-2013 Elliott Hughes <enh@google.com> Add a bunch more missing ENDs to assembler routines.

This isn't everything; I've missed out those x86 files that are

Change-Id: Idb7bb1a68796d6c0b70ea2b5c3300e49da6c62d2
ionic/memcmp.S
ionic/memset.S
73964c592c8d23901e9479893dfbd3d0f25bab04 13-Feb-2013 Elliott Hughes <enh@google.com> Everyone has CLZ.

Even armv5 had CLZ.

Change-Id: I51bc8d1166d09940fd0d3f4c7717edf26977082c
ionic/ffs.S
9f878c2fcab4e497d8b59f69dab74f092ad04deb 13-Feb-2013 Elliott Hughes <enh@google.com> Really set errno if __pthread_clone fails.

If r0 == 0, we're the child. If r0 > 0, we're the parent.
Otherwise set errno.

The __bionic_clone code I copy & pasted was wrong. This patch
fixes both.

Bug: 3461078
Change-Id: Ibb7d6cc7e54e666841f2f0dc59a141a0b31982e4
ionic/clone.S
d7a3a403c1a0bbb30786f052adc7332fdda3e1f9 12-Feb-2013 Elliott Hughes <enh@google.com> Use ENTRY/END in ARM __get_sp.

Change-Id: If2f159b266f5fa4ad9d188a17d4cd318b605e446
ionic/__get_sp.S
5e3fc43ddeada547a155c6f561a12ff0b16e02d3 12-Feb-2013 Elliott Hughes <enh@google.com> Fix __pthread_clone on ARM to set errno on failure.

MIPS and x86 appear to have been correct already.

(Also fix unit tests that ASSERT_EQ with errno so that the
arguments are in the retarded junit order.)

Bug: 3461078
Change-Id: I2418ea98927b56e15b4ba9cfec97f5e7094c6291
ionic/clone.S
f94fd3ccc66e05f53965bc14237778c0d8437bb6 12-Feb-2013 Elliott Hughes <enh@google.com> Clean up ARM assembler files to use ENTRY/END.

We also don't need legacy syscall support (non-"swi 0").

Change-Id: Id1012e8ca18bf13f3f4e42200f39ba0e2e632cbf
ionic/_exit_with_stack_teardown.S
ionic/clone.S
ionic/futex_arm.S
ionic/syscall.S
646e058136d59671d5d32d93bedbb71004a9ce73 07-Feb-2013 Elliott Hughes <enh@google.com> Fix x86 build, remove void* arithmetic.

Change-Id: Idc7f14af2e094ac33de315e808176237af063bb8
ionic/crtbegin.c
42b2c6a5eed5e4ef35315b8cd32d1355f12a69b6 07-Feb-2013 Elliott Hughes <enh@google.com> Clean up the argc/argv/envp/auxv handling.

There's now only one place where we deal with this stuff, it only needs to
be parsed once by the dynamic linker (rather than by each recipient), and it's
now easier for us to get hold of auxv data early on.

Change-Id: I6314224257c736547aac2e2a650e66f2ea53bef5
ionic/crtbegin.c
a0ee07829a9ba7e99ef68e8c12551301cc797f0f 31-Jan-2013 Elliott Hughes <enh@google.com> Upgrade libm.

This brings us up to date with FreeBSD HEAD, fixes various bugs, unifies
the set of functions we support on ARM, MIPS, and x86, fixes "long double",
adds ISO C99 support, and adds basic unit tests.

It turns out that our "long double" functions have always been broken
for non-normal numbers. This patch fixes that by not using the upstream
implementations and just forwarding to the regular "double" implementation
instead (since "long double" on Android is just "double" anyway, which is
what BSD doesn't support).

All the tests pass on ARM, MIPS, and x86, plus glibc on x86-64.

Bug: 3169850
Bug: 8012787
Bug: https://code.google.com/p/android/issues/detail?id=6697
Change-Id: If0c343030959c24bfc50d4d21c9530052c581837
nclude/machine/_types.h
a6a3ac59243d8c95c94c3069e9332051f785c05f 30-Jan-2013 Elliott Hughes <enh@google.com> Use the NetBSD <sys/exec_elf.h>.

Replace a kernel header file dependency with files from NetBSD.
They're more complete, and ELF is ELF, whether you're on Linux or a BSD.

Bug: 7973611
Change-Id: I83ee719e7efdf432ec2ddbe8be271d05b2f558d7
nclude/machine/elf_machdep.h
6a94cb748bf63278c3271b0ab610061b0dc6f04a 25-Jan-2013 Elliott Hughes <enh@google.com> Merge "arm syscall : for eabi call_default don't use stack"
1e980b6bc8315d00a07312b25486531247abd98c 18-Jan-2013 Elliott Hughes <enh@google.com> Fix the duplication in the debugging code.

We had two copies of the backtrace code, and two copies of the
libcorkscrew /proc/pid/maps code. This patch gets us down to one.

We also had hacks so we could log in the malloc debugging code.
This patch pulls the non-allocating "printf" code out of the
dynamic linker so everyone can share.

This patch also makes the leak diagnostics easier to read, and
makes it possible to paste them directly into the 'stack' tool (by
using relative PCs).

This patch also fixes the stdio standard stream leak that was
causing a leak warning every time tf_daemon ran.

Bug: 7291287
Change-Id: I66e4083ac2c5606c8d2737cb45c8ac8a32c7cfe8
ionic/atexit_legacy.c
faa0fdb1194172f578f973097d61e580bce528dc 16-Jan-2013 Matthieu Castet <matthieu.castet@gmail.com> arm syscall : for eabi call_default don't use stack

In the default case, we don't need to use the stack, we can save r7 with
ip register (that what does eglibc).

This allow to fix vfork data corruption
(see 3884bfe9661955543ce203c60f9225bbdf33f6bb), because vfork now don't
use the stack.
yscalls/__brk.S
yscalls/__fcntl.S
yscalls/__fcntl64.S
yscalls/__fork.S
yscalls/__fstatfs64.S
yscalls/__getcpu.S
yscalls/__getcwd.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__open.S
yscalls/__openat.S
yscalls/__ptrace.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigtimedwait.S
yscalls/__sched_getaffinity.S
yscalls/__set_tls.S
yscalls/__setresuid.S
yscalls/__setreuid.S
yscalls/__setuid.S
yscalls/__sigsuspend.S
yscalls/__statfs64.S
yscalls/__syslog.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__wait4.S
yscalls/_exit.S
yscalls/_exit_thread.S
yscalls/accept.S
yscalls/access.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chmod.S
yscalls/chown.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/connect.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup2.S
yscalls/epoll_create.S
yscalls/epoll_ctl.S
yscalls/epoll_wait.S
yscalls/eventfd.S
yscalls/execve.S
yscalls/faccessat.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fdatasync.S
yscalls/fgetxattr.S
yscalls/flistxattr.S
yscalls/flock.S
yscalls/fremovexattr.S
yscalls/fstat.S
yscalls/fstatat.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/ftruncate64.S
yscalls/getdents.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getpid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsid.S
yscalls/getsockname.S
yscalls/gettid.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/getxattr.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init.S
yscalls/inotify_rm_watch.S
yscalls/ioprio_get.S
yscalls/ioprio_set.S
yscalls/klogctl.S
yscalls/lchown.S
yscalls/lgetxattr.S
yscalls/link.S
yscalls/listen.S
yscalls/listxattr.S
yscalls/llistxattr.S
yscalls/lremovexattr.S
yscalls/lseek.S
yscalls/lstat.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdir.S
yscalls/mkdirat.S
yscalls/mknod.S
yscalls/mlock.S
yscalls/mlockall.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munlockall.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/pause.S
yscalls/personality.S
yscalls/pipe.S
yscalls/pipe2.S
yscalls/poll.S
yscalls/read.S
yscalls/readlink.S
yscalls/readv.S
yscalls/recvmsg.S
yscalls/removexattr.S
yscalls/rename.S
yscalls/renameat.S
yscalls/rmdir.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setaffinity.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/sendfile.S
yscalls/sendmsg.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/settimeofday.S
yscalls/shutdown.S
yscalls/sigaction.S
yscalls/sigaltstack.S
yscalls/signalfd4.S
yscalls/sigpending.S
yscalls/sigprocmask.S
yscalls/socket.S
yscalls/socketpair.S
yscalls/stat.S
yscalls/symlink.S
yscalls/sync.S
yscalls/sysinfo.S
yscalls/times.S
yscalls/truncate.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlink.S
yscalls/unlinkat.S
yscalls/unshare.S
yscalls/utimensat.S
yscalls/utimes.S
yscalls/vfork.S
yscalls/write.S
yscalls/writev.S
35f5385aa5206c8958dc38a197cd6847e01b8c7b 14-Jan-2013 Ben Cheng <bccheng@google.com> Add __aeabi_idiv to the dummy reference list.

If the platform code is compiled with -mcpu=cortex-a15, then without this
change prebuilt libraries built against -march=armv7 cannot resolve the
dependency on __aeabi_idiv (provided by libgcc.a).

Bug: 7961327

cherry-picked from internal master.

Change-Id: I8fe59a98eb53d641518b882523c1d6a724fb7e55
ionic/libgcc_compat.c
a4b2dc016fa62bd172a73c3f8971c805700ffb0f 10-Jan-2013 Rom Lemarchand <romlem@google.com> Add signalfd call to bionic

Add signalfd() call to bionic.

Adding the signalfd call was done in 3 steps:
- add signalfd4 system call (function name and syscall
number) to libc/SYSCALLS.TXT
- generate all necessary headers by calling
libc/tools/gensyscalls.py. This patch is adding
the generated files since the build system
does not call gensyscalls.py.
- create the signalfd wrapper in signalfd.cpp and add
the function prototype to sys/signalfd.h

(cherry-pick of 0c11611c11f4dc1b6d43587b72c3ccbe8c51a51c, modified to
work with older versions of GCC still in use on some branches.)

Change-Id: I4c6c3f12199559af8be63f93a5336851b7e63355
yscalls.mk
yscalls/signalfd4.S
4fa35d8ae80c175425e9525831d7b6a71a3ada60 12-Dec-2012 Elliott Hughes <enh@google.com> Fix <endian.h> and <sys/endian.h>.

Previously we'd been relying on getting the machine-specific <endian.h>
instead of the top-level <endian.h>, and <sys/endian.h> was basically broken.
Now, with this patch and the previous patch we should have <endian.h>
and <sys/endian.h> behaving the same. This is basically how NetBSD's endian.h
works, and was probably how ours was originally intended to work.

Bug: http://code.google.com/p/android/issues/detail?id=39824
Change-Id: I71de5a507e633de166013a658b5764df9e1aa09c
nclude/endian.h
nclude/machine/endian.h
3975cec694a0c9b42e3f7e671fcd678da92836c3 30-Nov-2012 Elliott Hughes <enh@google.com> Remove (near-)duplicate definitions of size_t and ssize_t.

The near duplicates upset fussier compilers that insist that
typedefs be exactly the same, but the fix isn't to make all
copies identical...

Change-Id: Icfdace41726f36ec33c9ae919dbb5a54d3529cc9
nclude/machine/_types.h
b15c58bb0fe55f076751acd7a5d00ded0ec33963 27-Nov-2012 Elliott Hughes <enh@google.com> Clean up _BYTE_ORDER definitions for better x86 portability.

We'd manually hacked _BYTE_ORDER into the arm and mips "_types.h" headers,
but not into the x86 one. Judging by upstream, _BYTE_ORDER should be in
the "endian.h" headers instead, so let's uniformly do that.

I've also ironed out some of the other differences between the different
architectures' header files too.

Bug: http://code.google.com/p/android/issues/detail?id=39824
Change-Id: I19d3af7ffd74e1c02b1b6886aec0f0d11f44ab8d
nclude/endian.h
nclude/machine/_types.h
884e4f839b18552237c1453312aa4ccba46f94e9 05-Nov-2010 Henrik Smiding <henrik.smiding@stericsson.com> Add optimized version of memset for Cortex A9

Adds new code to function memset, optimized for Cortex A9.

Copyright (C) ST-Ericsson SA 2010

Added neon implementation

Author: Henrik Smiding henrik.smiding@stericsson.com for ST-Ericsson.

Change-Id: Id3c87767953439269040e15bd30a27aba709aef6
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
ionic/memset.S
6d0bcdc8329dde4d3c83e95475bc670002f41309 17-Jan-2011 Henrik Smiding <henrik.smiding@stericsson.com> Add optimized version of memcpy for Cortex A9

Adds new code to memcpy function, optimized for Cortex A9.
Adds new ARM-only loop, for operations where source and
destination are aligned.

Copyright (C) ST-Ericsson SA 2010

Modified neon implementation to fit Cortex A9 cache line size,
for those running 32 bytes L2 cache line size.
Also split the implementation in aligned and unaligned access,
for those that allows unaligned memory access with Neon.
For totally aligned operations, arm-only code is used.

Change-Id: I95ebf6164cd6486b12a7e3e98e369db21e7e18d2
Author: Henrik Smiding henrik.smiding@stericsson.com for ST-Ericsson.
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
ionic/memcpy.S
c2132915158014f578c3f003c9399961fe8d6da2 09-Nov-2012 Elliott Hughes <enh@google.com> Merge "Add optimized version of memcmp for Cortex A9"
c1b44ecc5385e68e81667068e03b32c2084a85b1 17-Oct-2012 David 'Digit' Turner <digit@android.com> Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"

This creates build issues in the internal Android tree.
Will investigate later.

Original patch: https://android-review.googlesource.com/#/c/38875/

Change-Id: I12c5995ebf172890051af42a5d3b31014c9c5117
nclude/machine/signal.h
nclude/machine/ucontext.h
c124baaf29a948fd8b93e7f1fefc20b659271026 12-Jul-2012 David 'Digit' Turner <digit@android.com> libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>

This patch updates the C library headers to provide ucontext_t
definitions for three architectures.

+ Fix <signal.h> to always define 'struct sigcontext'.

The new declarations are announced with new macros defined in
<sys/cdefs.h> in order to make it easier to adapt client code
that already defines its own, incompatible, versions of the
structures seen here.

http://code.google.com/p/android/issues/detail?id=34784

Change-Id: Ie78c48690a4ce61c50593f6c39639be7fead3596
nclude/machine/signal.h
nclude/machine/ucontext.h
d10309c36b93176a473baeeddef6f3fba8bf0678 07-Sep-2012 Elliott Hughes <enh@google.com> Merge "Rename __dso_handle_so.c to __dso_handle_so.h"
048569be54188fadde19d5e48363e5fe3943023a 05-Sep-2012 Andrew Hsieh <andrewhsieh@google.com> Rename __dso_handle_so.c to __dso_handle_so.h

Also chang libc/arch-arm/bionic/crtbegin_so.c to include it
as a header.

Change-Id: Ib91b0b8caf5c8b936425aa8a4fc1a229b2b27929
ionic/crtbegin_so.c
1ad05db9cef23c1ca28ffd51852fa2a0b0c9b4b7 06-Sep-2012 Elliott Hughes <enh@google.com> Add mlockall and munlockall for Google TV.

Change-Id: I10e961d701e74aab07211ec7975f61167e387853
yscalls.mk
yscalls/mlockall.S
yscalls/munlockall.S
b2c5bd543dcbbc1b2cbf7afd8b124256ce2c128e 05-Sep-2012 Elliott Hughes <enh@google.com> Merge "ARM: warn about atexit() calls from legacy shared libraries"
26f2e4a1639a959513c4ff5981b4eb52757e8012 05-Sep-2012 Elliott Hughes <enh@google.com> Merge "ARM: make CRT_LEGACY_WORKAROUND work as intended"
1ad10a566e042676c95a0bdbf3cbc48e99ddafb2 29-Aug-2012 Irina Tirdea <irina.tirdea@intel.com> Add getsid system call to bionic

Add getsid() system call to bionic for
all architectures. This is needed for various tools
(e.g. perf).

Adding the getsid system call was done in 3 steps:
() add getsid system call (function name and syscall
number) to libc/SYSCALLS.TXT
() generate all necessary headers by calling
libc/tools/gensyscalls.py. This patch is adding
the generated files since the build system
does not call gensyscalls.py.
() add the system call signature to libc/include/unistd.h

Change-Id: Id69a257e13ec02e1a44085a6b217a3f19ab025b1
Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
yscalls.mk
yscalls/getsid.S
069c64cdf2d3da7b7ff6ea5d1041f982fb10ab22 28-Aug-2012 Nick Kralevich <nnk@google.com> Merge "ARM: make sure __on_dlclose() actually gets called"
e026b1d89a0dcada499da186d4d94cc3ce5d3ef3 28-Aug-2012 Nick Kralevich <nnk@google.com> Merge "ARM: remove dummy entries from .so init_array/fini_array"
144c2918668ac0d506a86478d5b9966ad816cec4 28-Aug-2012 Ard Biesheuvel <ard.biesheuvel@gmail.com> ARM: warn about atexit() calls from legacy shared libraries

Legacy ARM shared libraries use this generic version of atexit(),
which queues exit functions for invocation at program exit, at
which time the library may have been dlclose()'d, causing the
program to crash.

Change-Id: I41ae153c23268daa65ede7fb8966fc3e9caec369
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
ionic/atexit_legacy.c
f3cfcd869ded41d25c1f4f4e48e7c374a64f9583 21-Aug-2012 Ard Biesheuvel <ard.biesheuvel@gmail.com> ARM: make CRT_LEGACY_WORKAROUND work as intended

To properly support legacy ARM shared libraries, libc.so needs
to export the symbols __dso_handle and atexit, even though
these are now supplied by the crt startup code.

This patch reshuffles the existing CRT_LEGACY_WORKAROUND
conditionally compiled code slightly so it works as the
original author likely intended.

Change-Id: Id6c0e94dc65b7928324a5f0bad7eba6eb2f464b9
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
ionic/atexit.h
ionic/atexit_legacy.c
ionic/crtbegin_so.c
ionic/eabi.c
c23092887fce8bf97ff33f72adf2d454946e7271 28-Aug-2012 Ard Biesheuvel <ard.biesheuvel@gmail.com> ARM: remove dummy entries from .so init_array/fini_array

The runtime linker parses the ELF section headers to
discover the size of the init_array and fini_array, so
there is no point in putting NULL terminators at the end.

Change-Id: I3246cd585efce9314155600277dd829e9f37d04f
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
ionic/crtend_so.S
0a150ead18019c0e4e59417ae3c5e8e0d7d2e4f4 21-Aug-2012 Ard Biesheuvel <ard.biesheuvel@gmail.com> libc: remove ctors/dtors sections

None of the supported ARCHs actually populate these sections,
so there is no point in keeping them in the binaries.

Change-Id: I21a364f510118ac1114e1b49c53ec8c895c6bc6b
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
ionic/crtbegin.c
ionic/crtend.S
404e28ff8c3352a4fa290ae7769922db0172008e 22-Aug-2012 Ard Biesheuvel <ard.biesheuvel@gmail.com> hardening: remove pointless ARM __get_pc() function

Useful if you're trying to defeat ASLR, otherwise not
so much ...

Change-Id: I17ebb50bb490a3967db9c3038f049adafe2b8ea7
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
ionic/__get_pc.S
5ed48a4d7fece002afbbd2bd981563aea6e52e24 21-Aug-2012 Ard Biesheuvel <ard.biesheuvel@gmail.com> ARM: make sure __on_dlclose() actually gets called

Change-Id: I280e5428b0543cccf17ca36baee4865395928cdb
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
ionic/crtbegin_so.c
b7beb6907599b36809effe1b4db76039ac649518 16-Aug-2012 Pavel Chupin <pavel.v.chupin@intel.com> Add link.h for all platforms with dl_phdr_info

This header is used on bionic build and should be propagated into
sysroot on toolchain rebuild. Discussion re. this header is here:
http://gcc.gnu.org/ml/gcc-patches/2012-08/msg00936.html

It is available already in mips NDK platforms:
development/ndk/platforms/android-9/arch-mips/include/link.h

Change-Id: I39ff467cdac9f448e31c11ee3e14a6200e82ab57
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
ionic/exidx_dynamic.c
ionic/exidx_static.c
6eee1fc68f366651379e776e4e3408069772562f 10-Aug-2012 Nick Kralevich <nnk@google.com> crtend*: Add GNU_STACK note

Add a GNU_STACK marker to crtend* files. This tells the linker
that these files do not require an executable stack.

When linking, a missing GNU_STACK marker in any .o file can prevent
the compiler from automatically marking the final executable as NX
safe (executable stack not required). In Android, we normally work
around this by adding -Wa,--noexecstack / -Wl,-z,noexecstack.
For files like crtend.S / crtend_so.S, which are included in every
executable / shared library, it's better to add the GNU_STACK note
directly to the assembly file. This allows the compiler to
automatically mark the final executable as NX safe without any
special command line options.

References: http://www.gentoo.org/proj/en/hardened/gnu-stack.xml

Change-Id: I07bd058f9f60ddd8b146e0fb36ba26ff84c0357d
ionic/crtend.S
ionic/crtend_so.S
e36c826f7a6580227e9e70f6ec70aa88ba0f577e 10-Aug-2012 Jeff Sharkey <jsharkey@android.com> Add unshare() syscall.

(cherry-pick of 5467f25f82934d611c60f8bc57a05114f3c1bea0.)

Bug: 6925012
Change-Id: Ic5ea2fbd606311087de05d7a3594df2fa9b2fef9
yscalls.mk
yscalls/unshare.S
3460db9490d7aee834dc05f99356e44d7549c538 09-Jul-2012 Peter Enderborg <peter.enderborg@sonymobile.com> bionic: Stack pointer/signal race condition.

Move the stackpointer so a captured signal does not corrupt
stack variables needed for __thread_entry.

Change-Id: I3e1e7b94a6d7cd3a07081f849043262743aa8064
ionic/clone.S
9d40326830c2bd407427889c554adeb915ee6b4a 31-May-2012 Nick Kralevich <nnk@google.com> arm: rewrite crtbegin* as C files.

Rewrite
crtbegin.S -> crtbegin.c
crtbegin_so.S -> crtbegin_so.c

This change allows us to generate PIC code without relying
on text relocations.

As a consequence of this rewrite, also rewrite
__dso_handle.S -> __dso_handle.c
__dso_handle_so.S -> __dso_handle_so.c
atexit.S -> atexit.c

In crtbegin.c _start, place the __PREINIT_ARRAY__, __INIT_ARRAY__,
__FINI_ARRAY__, and __CTOR_LIST__ variables onto the stack, instead of
passing a pointer to the text section of the binary.

This change appears sorta wonky, as I attempted to preserve,
as much as possible, the structure of the original assembly.
As a result, you have C files including other C files, and other
programming uglyness.

Result: This change reduces the number of files with text-relocations
from 315 to 19 on my Android build.

Before:
$ scanelf -aR $OUT/system | grep TEXTREL | wc -l
315

After:
$ scanelf -aR $OUT/system | grep TEXTREL | wc -l
19

Change-Id: Ib9f98107c0eeabcb606e1ddc7ed7fc4eba01c9c4
ionic/atexit.S
ionic/atexit.h
ionic/crtbegin.S
ionic/crtbegin.c
ionic/crtbegin_so.S
ionic/crtbegin_so.c
83a73d1afe972014f6c8ff2520fe6d3357421f87 30-May-2012 Nick Kralevich <nnk@google.com> crtbegin: eliminate duplicate code

crtbegin_dynamic and crtbegin_static are essentially identical,
minus a few trivial differences (comments and whitespace).

Eliminate duplicates.

Change-Id: Ic9fae6bc9695004974493b53bfc07cd3bb904480
ionic/crtbegin.S
ionic/crtbegin_dynamic.S
ionic/crtbegin_static.S
3ebd31c0a1d343c3fd7845d7b1149e841ad83c6a 05-Nov-2010 Henrik Smiding <henrik.smiding@stericsson.com> Add optimized version of memcmp for Cortex A9

Adds new code to function memcmp, optimized for Cortex A9.

Copyright (C) ST-Ericsson SA 2010

Added neon optimization

Change-Id: I8864d277042db40778b33232feddd90a02a27fb0
Author: Henrik Smiding henrik.smiding@stericsson.com for ST-Ericsson.
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
ionic/memcmp.S
6cdefd06c0386776405e4379af036722db5d60c0 20-Oct-2011 Nick Kralevich <nnk@google.com> Add linker support for PIE

Modify the dynamic linker so that executables can be loaded
at locations other than 0x00000000.

Modify crtbegin* so that non-PIC compilant "thumb interwork
veneers" are not created by the linker.

Bug: 5323301
Change-Id: Iece0272e2b708c79034f302c20160e1fe9029588
ionic/crtbegin_dynamic.S
ionic/crtbegin_static.S
8034415ddd8404f8788199ed993af89692235dc5 10-May-2012 Iliyan Malchev <malchev@google.com> resolved conflicts for merge of 08e72d01 to jb-dev-plus-aosp

Change-Id: If00e354a5953ed54b31963d4f8ea77e1603c321e
08e72d0161e39e99ff1003bf1ce894f37d7b7eb4 07-May-2012 Prajakta Gudadhe <pgudadhe@nvidia.com> bionic: add support for non-NEON memcpy() on NEON SoCs

Some SoCs that support NEON nevertheless perform better with a non-NEON than a
NEON memcpy(). This patch adds build variable ARCH_ARM_USE_NON_NEON_MEMCPY,
which can be set in BoardConfig.mk. When ARCH_ARM_USE_NON_NEON_MEMCPY is
defined, we compile in the non-NEON optimized memcpy() even if the SoC supports
NEON.

Change-Id: Ia0e5bee6bad5880ffc5ff8f34a1382d567546cf9
ionic/memcpy.S
da0d8534f1a6273a383f1dc631fbaf032674bb4d 09-May-2012 Ben Cheng <bccheng@google.com> am 08b51e2c: Implement the "abort" stub in assembly for ARM.

* commit '08b51e2c091d036c124259ae59eb7be6bbe346af':
Implement the "abort" stub in assembly for ARM.
eda7be454d6ff8689392442223335c6558bea932 08-May-2012 Ben Cheng <bccheng@google.com> Implement the "abort" stub in assembly for ARM.

So that we can always get the full stack trace regardless of gcc's handling
of the "noreturn" attribute associated with abort().

(Cherry pick of Id264a5167e7cabbf11515fbc48f5469c527e34d4.)

Bug: 6455193

Conflicts:

libc/Android.mk

Change-Id: I568fc5303fd1d747075ca933355f914122f94dac
ionic/abort_arm.S
08b51e2c091d036c124259ae59eb7be6bbe346af 08-May-2012 Ben Cheng <bccheng@google.com> Implement the "abort" stub in assembly for ARM.

So that we can always get the full stack trace regardless of gcc's handling
of the "noreturn" attribute associated with abort().

[cherry-picked from master]

BUG:6455193
Change-Id: I0102355f5bf20e636d3feab9d1424495f38e39e2
ionic/abort_arm.S
e636e1f2c17d7097b6638cb4ae2b4857765b502d 07-May-2012 Elliott Hughes <enh@google.com> am 8657eafc: Merge "Adjust memcpy for ARM Cortex A9 cache line size"

* commit '8657eafc3552f36c176667c1591beab255308da6':
Adjust memcpy for ARM Cortex A9 cache line size
fe6338da9168330d44b409b2ee36103e8bfe6697 15-Sep-2010 Henrik Smiding <henrik.smiding@stericsson.com> Adjust memcpy for ARM Cortex A9 cache line size

ARM Cortex A8 use 64 bytes and ARM Cortex A9 use 32 bytes cache line
size.

The following patch:
Adds code to adjust memcpy cache line size to match A9 cache line
size.
Adds a flag to select between 32 bytes and 64 bytes cache line
size.

Copyright (C) ST-Ericsson SA 2010
Modified neon implementation to fit Cortex A9 cache line size
Author: Henrik Smiding henrik.smiding@stericsson.com for
ST-Ericsson.

Change-Id: I8a55946bfb074e6ec0a14805ed65f73fcd0984a3
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
ionic/memcpy.S
4a9d6e50bb800eeadf579eb36b63e8b2eedb0d43 17-Apr-2012 Evgeniy Stepanov <eugenis@google.com> Fix segv when unwinding stack past __libc_init.

This change mirrors cd15bac for statically-linked binaries.

Change-Id: Id870832a50b37f0ef3e79e1ed03ed31390bfc9ef
ionic/crtbegin_static.S
f0ec06ba609a15cf9343aabd5b2486f9a8af9adb 13-Apr-2012 Kenny Root <kroot@google.com> Add faccessat to syscall list

Change-Id: I427a18811089cb280769ac8da3ed8adc00a65a10
yscalls.mk
yscalls/faccessat.S
d5099016f70b5acbfeb969787687099df703a4f4 12-Apr-2012 Elliott Hughes <enh@google.com> Merge "Fix segv when unwinding stack past __libc_init."
470835b215c14aa5ff2368527feeff35bfb46a90 11-Apr-2012 Kenny Root <kroot@google.com> Move end of __on_dlclose up

The END macro was put too far down which made the linker complain about
it. Move up to the end of the code.

Change-Id: Ica71a9c6083b437d2213c7cefe34b0083c78f16b
ionic/crtbegin_so.S
03273f8fc0a7ac2b54fa2c983d4a647580e34458 11-Apr-2012 Kenny Root <kroot@google.com> __on_dlclose should be aligned

Marking segments read-only was pushing the alignment of __on_dlclose by
2 bytes making it unaligned. This change makes sure the ARM code is
aligned to the 4 byte boundary.

Bug: 6313309
Change-Id: Ic2bf475e120dd61225ec19e5d8a9a8b1d0b7f081
ionic/crtbegin_so.S
cd15bacf334ab254a5f61c3bba100adde1b6b80a 10-Apr-2012 Evgeniy Stepanov <eugenis@google.com> Fix segv when unwinding stack past __libc_init.

This change fixes a segmentation fault in the libc unwinder when it goes
past __libc_init.

Unwind instructions for __libc_init direct it to grab the return address from
the stack frame. Without this change, the unwinder gets a wild address and
looks up further unwind instructions for the routine at that address. If it's
unlucky enough to hit an existing function, it will try to unwind it. Bad
things happen then.

With this change, the return address always points to the _start function,
which does not have unwind instructions associated with it. This stop the
unwind process.

__libc_init never returns, so this does not affect program execution, other
than adding 4 bytes on the main thread stack.

Change-Id: Id58612172e8825c8729cccd081541a13bff96bd0
ionic/crtbegin_dynamic.S
1a823691a21519014daf252691a314f0726d7c3a 13-Mar-2012 Ben Cheng <bccheng@google.com> Update kernel headers and add syscall "perf_event_open"

Change-Id: I43f12b727881df002a8524f2738586c043833bae
yscalls.mk
yscalls/perf_event_open.S
be101bf39aaaaaee3a96d62fbc4c1136548480de 05-Mar-2012 Kenny Root <kroot@google.com> Revert "Reference __dso_handle in PIC way"

This reverts commit 93cb30813764b140f0adbaa620dcdbb1cae56dd8
ionic/crtbegin_so.S
93cb30813764b140f0adbaa620dcdbb1cae56dd8 02-Mar-2012 Kenny Root <kroot@google.com> Reference __dso_handle in PIC way

Use the same pattern in atexit.S to reference __dso_handle in a way that
doesn't require a TEXTREL flag to be set.

Change-Id: Id69d20863ee203d2b2f7ef0db230f9b548657741
ionic/crtbegin_so.S
4fc127345968c0e75775a6377c6f784ae6600cff 29-Feb-2012 Andrew Hsieh <andrewhsieh@google.com> Merge "Trivial fix in comment"
f1a17e762b6fab449cff3006178e42b68e8e241e 23-Feb-2012 Dima Zavin <dima@android.com> libc: Add __aeabi_llsl and __aeabi_llsr to libgcc_compat

Some platform libraries built for ICS do not work with master
because of some refactoring in frameworks/base.

Make sure that these libgcc symbols are always present in our libc

Change-Id: Ib8d345878be0ba711f051082a778f5cc1f1b3a19
Signed-off-by: Dima Zavin <dima@android.com>
ionic/libgcc_compat.c
58b2c1616bed68fe5a6a1794c8764b24d29ad8cb 22-Feb-2012 Andrew Hsieh <andrewhsieh@google.com> Trivial fix in comment

Very, very trivial fix for minor typo in comment about how it works

Change-Id: Ia08d332366837dec8f7e91b9728732c5edea223e
ionic/libgcc_compat.c
d6b58b03b8e046e0bd46d6d7e57290dcabe48860 13-Feb-2012 Jean-Baptiste Queru <jbq@google.com> am 09049311: am cfff36df: am a60ff6c5: Merge "libc: Define new symbol visibility macros"

* commit '09049311a229c427f73e3e0ac873bf344b45aaf2':
libc: Define new symbol visibility macros
cfff36df2bebd95f2663b7b053c6308593c343dd 13-Feb-2012 Jean-Baptiste Queru <jbq@google.com> am a60ff6c5: Merge "libc: Define new symbol visibility macros"

* commit 'a60ff6c5b2ca76181b387d8c10aee22a2cbcf840':
libc: Define new symbol visibility macros
5fbf2e09921723cfdea75e83c1fac2080f0ad564 23-Jan-2012 David 'Digit' Turner <digit@android.com> libc: Define new symbol visibility macros

This patch defines a few new macros that can be used to control the
visibility of symbols exported by the C library:

- ENTRY_PRIVATE() can be used in assembly sources to indicate
that an assembler function should have "hidden" visibility, i.e.
will never be exported by the C library's shared library.

This is the equivalent of using __LIBC_HIDDEN__ for a C function,
but ENTRY_PRIVATE() works like ENTRY(), and must be used with
END() to tag the end of the function.

- __LIBC_ABI_PUBLIC__ can be used to tag a C functions as being
part of the C library's public ABI. This is important for a
few functions that must be exposed by the NDK to maintain
binary compatibility.

Once a symbol has been tagged with this macro, it shall
*never* be removed from the library, even if it becomes
directly unused due to implementation changes
(e.g. __is_threaded).

- __LIBC_ABI_PRIVATE__ can be used for C functions that should
always be exported by the C library because they are used by
other libraries in the platform, but should not be exposed
by the NDK. It is possible to remove such symbols from the
implementation if all callers are also modified.

+ Add missing END() assembly macro for x86

Change-Id: Ia96236ea0dbec41d57bea634b39d246b30e5e234
nclude/machine/asm.h
73fa5fdaf9ec27741a17b0b793ff6890e6dcecd5 21-Jan-2012 Jean-Baptiste Queru <jbq@google.com> Merge 2f80f07d

Change-Id: Iff51b8530dbee01499ba4af0ecd6ab837c8c94fb
2f80f07d8106782ac94b05f529c8cbb1fd1c6f64 20-Jan-2012 Jean-Baptiste Queru <jbq@google.com> am 23f56bbb: Merge "Add extended attribute (xattr) system call wrappers to bionic."

* commit '23f56bbb6ae053996dd821f29379aea0c7166055':
Add extended attribute (xattr) system call wrappers to bionic.
5eb686d105ebd7cea332fd1ef0bb3af9386e19f7 13-Jan-2012 Stephen Smalley <sds@tycho.nsa.gov> Add extended attribute (xattr) system call wrappers to bionic.

The xattr system calls are required for the SE Android userspace in
order to get and set file security contexts. In particular, libselinux
requires these calls.

Change-Id: I78f5eb3d8f3384aed0a5e7c6a6f001781d982017
yscalls.mk
yscalls/fgetxattr.S
yscalls/flistxattr.S
yscalls/fremovexattr.S
yscalls/fsetxattr.S
yscalls/getxattr.S
yscalls/lgetxattr.S
yscalls/listxattr.S
yscalls/llistxattr.S
yscalls/lremovexattr.S
yscalls/lsetxattr.S
yscalls/removexattr.S
yscalls/setxattr.S
023e5409df07a5d5ead6efb1825f6df92bcf50da 17-Jan-2012 Nick Kralevich <nnk@google.com> am 06f51ba1: am f44de270: add personality() system call.

* commit '06f51ba1af2fafeec7fdfcba5d635bd001a31b3e':
add personality() system call.
06f51ba1af2fafeec7fdfcba5d635bd001a31b3e 17-Jan-2012 Nick Kralevich <nnk@google.com> am f44de270: add personality() system call.

* commit 'f44de270bba32c9b1b5eff8a34be07b10ddff238':
add personality() system call.
f44de270bba32c9b1b5eff8a34be07b10ddff238 13-Jan-2012 Nick Kralevich <nnk@google.com> add personality() system call.

Change-Id: Ie899def8ea1d705930ed83adae1343c1353e7c57
yscalls.mk
yscalls/personality.S
6519c8124ee9f2b1ed341cc683b78cf26809678d 04-Jan-2012 Bruce Beare <bruce.j.beare@intel.com> am e30e9093: sreadahead: adding readahead system call into bionic libc

* commit 'e30e909363c5c706f394050d9cd00ce222caadbf':
sreadahead: adding readahead system call into bionic libc
e30e909363c5c706f394050d9cd00ce222caadbf 13-Jul-2011 Bruce Beare <bruce.j.beare@intel.com> sreadahead: adding readahead system call into bionic libc

Add bionic libc to support readahead system call.
This is needed to enable sreadahead to work.

Change-Id: I3856e1a3833db82e6cf42fd34af7631bd40cc723
Author: Winson Yung <winson.w.yung@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
yscalls.mk
yscalls/readahead.S
f1a39dce60be0b453416e1b82a6d445a7677eb4b 23-Nov-2011 David 'Digit' Turner <digit@google.com> libc: Fix typo that broke NDK compatibility.

The function must be named __atomic_cmpxchg, not __android_cmpxchg.
This typo broke existing prebuilt binaries (they couldn't be loaded
at runtime anymore).

Change-Id: I25ca7d18329817f0056e616a0409113269ad7b1f
ionic/atomics_arm.c
de44d0b2bd32a2c2cc5e2ffb64f8356efd893bca 22-Nov-2011 David 'Digit' Turner <digit@google.com> Merge "libc: provide atomic operations will full barriers for NDK apps."
10c8ce59a40a1d8ae8f49145eca365b364aabe58 19-Nov-2011 Jeff Brown <jeffbrown@google.com> Add tgkill syscall.

Use tgkill instead of tkill to implement pthread_kill.
This is safer in the event that the thread has already terminated
and its id has been reused by a different process.

Change-Id: Ied715e11d7eadeceead79f33db5e2b5722954ac9
ionic/tgkill.S
0fec6b9d88ee5a9e359b2208038f9806c0804538 16-Nov-2011 David 'Digit' Turner <digit@google.com> libc: provide atomic operations will full barriers for NDK apps.

__atomic_cmpxchg and other related atomic operations did not
provide memory barriers, which can be a problem for non-platform
code that links against them when it runs on multi-core devices.

This patch does two things to fix this:

- It modifies the existing implementation of the functions
that are exported by the C library to always provide
full memory barriers. We need to keep them exported by
the C library to prevent breaking existing application
machine code.

- It also modifies <sys/atomics.h> to only export
always-inlined versions of the functions, to ensure that
any application code compiled against the new header will
not rely on the platform version of the functions.

This ensure that said machine code will run properly on
all multi-core devices.

This is based on the GCC built-in sync primitives.

The end result should be only slightly slower than the
previous implementation.

Note that the platform code does not use these functions
at all. A previous patch completely removed their usage in
the pthread and libstdc++ code.

+ rename arch-arm/bionic/atomics_arm.S to futex_arm.S
+ rename arch-x86/bionic/atomics_x86.S to futex_x86.S
+ remove arch-x86/include/sys/atomics.h which already
provided inlined functions to the x86 platform.

Change-Id: I752a594475090cf37fa926bb38209c2175dda539
ionic/atomics_arm.S
ionic/atomics_arm.c
ionic/futex_arm.S
d9ad62343c2db6b66a5fa597c9b20a6faabd7a9a 20-Oct-2011 Nick Kralevich <nnk@google.com> Add linker support for PIE

Modify the dynamic linker so that executables can be loaded
at locations other than 0x00000000.

Modify crtbegin* so that non-PIC compilant "thumb interwork
veneers" are not created by the linker.

Bug: 5323301
Change-Id: Iece0272e2b708c79034f302c20160e1fe9029588
ionic/crtbegin_dynamic.S
ionic/crtbegin_static.S
487b613e572160e80d0700e1bcd0e405420d14ea 04-Oct-2011 Evgeniy Stepanov <eugenis@google.com> Use ENTRY and EXIT macros for strcmp, memcpy, atexit.

Without this change strcmp size is zero (not set), and it gets
ignored by Valgrind. Changes to memcpy and atexit don't affect the
generated binary in any way.

Change-Id: I05818cb5951f75901dc8c0eef02807a2e83a9231
ionic/atexit.S
ionic/memcpy.S
ionic/strcmp.S
58246b7067b4e1a0b3ce48ccd94331f6fd8fa7cc 22-Aug-2011 David 'Digit' Turner <digit@google.com> libc: Add __aeabi_f2uiz to libgcc_compat.c

This patch ensure that __aeabi_f2uiz is embedded in our C library.
This is needed to avoid breaking certain applications when they are
loaded in ICS. It is likely that the issue is due to mis-linked
binaries generated with the stand-alone toolchain (the problem
should not exist if you use ndk-build), but this fix is easier
than asking all app developers to fix their custom build system.

If you want more technical details, read the comments inside
libgcc_compat.c

Change-Id: I59ac1fc781ecb70b90b5573c5a3c67560ca8f270
ionic/libgcc_compat.c
b489666086265eb756f11fd224137c7e3a03a707 23-Jun-2011 David Turner <digit@android.com> am 1c0a0381: Merge "Enable functional DSO object destruction"

* commit '1c0a0381dfb3648ffadef9537ec9383d63d62473':
Enable functional DSO object destruction
39640842823ba4cd42bd11514c0da39aa939519f 20-Jun-2011 Bruce Beare <bruce.j.beare@intel.com> Enable functional DSO object destruction

Unfortunately, legacy .so files for ARM don't have a correct crtbegin file.
Consequently, we have to grandfather the old __dso_handle behaviour.
Add some ifdefs for ARM to allow it to use the old code until we can work
out a transition.

Change-Id: I6a28f368267d792c94e1d985d8344023bc632f6f
Author: H.J. Lu <hongjiu.lu@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
ionic/atexit.S
ionic/crtbegin_dynamic.S
ionic/crtbegin_so.S
ionic/crtbegin_static.S
a9e409a03530c79bc7ad8144d08e8921ebe0dd02 17-May-2011 David Turner <digit@android.com> am a7a9dddb: Merge "bionic: Add ARM optimized strcmp()"

* commit 'a7a9dddb5dfe783d65fec4d3b0dee9f734345a29':
bionic: Add ARM optimized strcmp()
f50e9be5930a08fa825b0c23353c802e11369b14 20-Apr-2011 Jim Huang <jim.huang@linaro.org> bionic: Add ARM optimized strcmp()

Reference results of the experiments on TI OMAP3430 at 600 MHz

$ bench_strcmp -N "strcmp_1k" -s 1k -I 200

[original C code]
prc thr usecs/call samples errors cnt/samp size
strcmp_1k 1 1 10.38000 102 0 15000 1024

[ARM optimized code]
prc thr usecs/call samples errors cnt/samp size
strcmp_1k 1 1 3.08840 88 0 15000 1024

The work was derived from ARM Ltd, contributed to newlib, and reworked
for Android by Linaro.

Change-Id: Ib0d5755e1eb9adb07d80ef0252f57a5c4c57a425
Signed-off-by: Jim Huang <jserv@0xlab.org>
ionic/strcmp.S
ae2d5ba31412c4f382ef405000baa866f35dd736 18-Mar-2011 Ken Sumrall <ksumrall@android.com> Add support for the utimensat(2) syscall to bionic.

The kernel has supported this syscall for quite some time now,
but bionic did not. Now that there is a need for it, let's
add it to bionic.

Change-Id: Ifcef3e46f1438d79435b600c4e6063857ab16903
yscalls.mk
yscalls/utimensat.S
3224c08bd77043338ad6e9ecacbd4c118205e873 19-Feb-2011 David Turner <digit@google.com> Merge changes I8c481c89,I791406f8,I5f09cef8

* changes:
libc: ARM: update syscalls with new script
libc: ARM: add size info to gensyscalls
Add function marks and size indications
fb723c87490b76d1d2fe521886f7cb6c96ed40b7 17-Feb-2011 Kenny Root <kroot@google.com> libc: ARM: update syscalls with new script

Used the new gensyscalls.py script to update the ARM syscalls with the
BEGIN(x) and END(x) macros to give size information for the code of the
syscall. Useful for valgrind.

Change-Id: I8c481c8928401ac110fd19b087f7d67e4db39326
yscalls/__brk.S
yscalls/__fcntl.S
yscalls/__fcntl64.S
yscalls/__fork.S
yscalls/__fstatfs64.S
yscalls/__getcpu.S
yscalls/__getcwd.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__open.S
yscalls/__openat.S
yscalls/__ptrace.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigtimedwait.S
yscalls/__sched_getaffinity.S
yscalls/__set_tls.S
yscalls/__setresuid.S
yscalls/__setreuid.S
yscalls/__setuid.S
yscalls/__sigsuspend.S
yscalls/__statfs64.S
yscalls/__sys_clone.S
yscalls/__syslog.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__wait4.S
yscalls/__waitid.S
yscalls/_exit.S
yscalls/_exit_thread.S
yscalls/accept.S
yscalls/access.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chmod.S
yscalls/chown.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/connect.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup2.S
yscalls/epoll_create.S
yscalls/epoll_ctl.S
yscalls/epoll_wait.S
yscalls/eventfd.S
yscalls/execve.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/fdatasync.S
yscalls/flock.S
yscalls/fstat.S
yscalls/fstatat.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/ftruncate64.S
yscalls/futex.S
yscalls/getdents.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getpid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettid.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init.S
yscalls/inotify_rm_watch.S
yscalls/ioprio_get.S
yscalls/ioprio_set.S
yscalls/klogctl.S
yscalls/lchown.S
yscalls/link.S
yscalls/listen.S
yscalls/lseek.S
yscalls/lstat.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdir.S
yscalls/mkdirat.S
yscalls/mknod.S
yscalls/mlock.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/pause.S
yscalls/pipe.S
yscalls/pipe2.S
yscalls/poll.S
yscalls/prctl.S
yscalls/pread64.S
yscalls/pwrite64.S
yscalls/read.S
yscalls/readlink.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmsg.S
yscalls/rename.S
yscalls/renameat.S
yscalls/rmdir.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setaffinity.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/select.S
yscalls/sendfile.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/shutdown.S
yscalls/sigaction.S
yscalls/sigaltstack.S
yscalls/sigpending.S
yscalls/sigprocmask.S
yscalls/socket.S
yscalls/socketpair.S
yscalls/stat.S
yscalls/symlink.S
yscalls/sync.S
yscalls/sysinfo.S
yscalls/times.S
yscalls/truncate.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlink.S
yscalls/unlinkat.S
yscalls/utimes.S
yscalls/vfork.S
yscalls/write.S
yscalls/writev.S
420878c6908cf9c2862888477ec3f424a06cf172 16-Feb-2011 Kenny Root <kroot@google.com> Add function marks and size indications

Add a macro to annotate function end and start using both ENTRY and END
for each function. This allows valgrind (and presumably other debugging
tools) to use the debug symbols to trace the functions.

Change-Id: I5f09cef8e22fb356eb6f5cee952b031e567599b6
ionic/_exit_with_stack_teardown.S
ionic/_setjmp.S
ionic/atomics_arm.S
ionic/clone.S
ionic/ffs.S
ionic/kill.S
ionic/memcmp.S
ionic/memcmp16.S
ionic/memcpy.S
ionic/memset.S
ionic/setjmp.S
ionic/sigsetjmp.S
ionic/strcpy.S
ionic/tkill.S
nclude/machine/asm.h
0233509c16046766bea9af6c7053cc6ceecef7a2 17-Feb-2011 Kenny Root <kroot@google.com> Amend previous commit with needed include

Change-Id: Idae8daaf095d90513820e05f423144ffed4ba913
ionic/ffs.S
3a3c1853aca502ec109e5e97423e9f721035915c 17-Feb-2011 Kenny Root <kroot@google.com> Use CLZ on ARMv5 and newer

Change-Id: Ia5aa6974c0343ae43fbcb91304501213048e9ec0
ionic/ffs.S
95d751feacdb58d3fbc36f3f21a895a3ec2f065b 16-Dec-2010 David 'Digit' Turner <digit@google.com> libc: Add ftruncate64 and improve 64-bit parameter syscall handling.

This patch improves the handling of 64-bit parameters in syscalls on ARM.
The ARM EABI mandates that 64-bit quantities be passed in even/odd register
pairs, which requires special treatment.

This allows us to simplify our implementations of pread() and pwrite()
and remove the C stubs for pread64() and pwrite64().

Also add ftruncate64() to <unistd.h>

Change-Id: I407e2fd223ba0093dd2d0b04c6152fadfc9ce3ef

Bug 3107933
yscalls.mk
yscalls/__pread64.S
yscalls/__pwrite64.S
yscalls/ftruncate64.S
yscalls/pread64.S
yscalls/pwrite64.S
72e6fd42421dca80fb2776a9185c186d4a04e5f7 03-Dec-2010 David 'Digit' Turner <digit@google.com> <sched.h>: Add sched_getcpu() and cpu_set_t

This adds the cpu_set_t type definition and related functions
and macros used to handle CPU thread affinity.

sched_getcpu()
sched_setaffinity()
sched_getaffinity()

Change-Id: If382ecafde8926341a88478062b275553645065b
yscalls.mk
yscalls/__getcpu.S
yscalls/__sched_getaffinity.S
yscalls/sched_setaffinity.S
9c8ea7fa3fcc26a0777011e0a84831c58847faed 22-Nov-2010 Jean-Baptiste Queru <jbq@google.com> am 24dc9363: resolved conflicts for merge of 1bc98ccb to gingerbread-plus-aosp

* commit '24dc936346b4a31005ac28c4bd464320cca9320a':
bionic: Add ARM optimized strcpy()
24dc936346b4a31005ac28c4bd464320cca9320a 22-Nov-2010 Jean-Baptiste Queru <jbq@google.com> resolved conflicts for merge of 1bc98ccb to gingerbread-plus-aosp

Change-Id: Ief9ec3d0472660e26864e082e03c26e09a043b9d
73c04b32691cb344cb60289a646ded8fc551d09e 10-Aug-2010 Jim Huang <jserv@0xlab.org> bionic: Add ARM optimized strcpy()

Reference results of the experiments on Qualcomm MSM7x25 (524MHz):

[original C code]
prc thr usecs/call samples errors cnt/samp
size
strcpy_1k 1 1 14.56159 99 0 1000
1024

[ARM optimized code]
prc thr usecs/call samples errors cnt/samp
size
strcpy_1k 1 1 3.46653 99 0 1000
1024

The work was derived from ARM Ltd.

Change-Id: I906ac53bb7a7285e14693c77d3ce8d4ed6f98bfd
ionic/strcpy.S
482358fda727ceab18412d63098db524a46999e8 21-Oct-2010 Jean-Baptiste Queru <jbq@google.com> am d29b8a51: am 5109146f: Merge "Reconcile assembly-only macros in <machine/cpu-features.h>"

Merge commit 'd29b8a51a5f95a3f38e5fb812231e12e5a66a865'

* commit 'd29b8a51a5f95a3f38e5fb812231e12e5a66a865':
Reconcile assembly-only macros in <machine/cpu-features.h>
d29b8a51a5f95a3f38e5fb812231e12e5a66a865 20-Oct-2010 Jean-Baptiste Queru <jbq@google.com> am 5109146f: Merge "Reconcile assembly-only macros in <machine/cpu-features.h>"

Merge commit '5109146f954d8cca39d34689bff2762e15bc6933' into gingerbread-plus-aosp

* commit '5109146f954d8cca39d34689bff2762e15bc6933':
Reconcile assembly-only macros in <machine/cpu-features.h>
76a34d6628c1b0815cdf6bc6c0a724f9eb1118d4 09-Oct-2010 Ying Wang <wangying@google.com> Remove duplicate item

This elimates the makefile warning at the beginning of each build:
libc_common_intermediates/arch-arm/syscalls/eventfd.o' given more than once in the same rule.

Change-Id: I25cc0c373d55b5036dd17811a595c097fd6ca69a
yscalls.mk
94e5c5ef3754fee833c527f12ddb18e639fe7cf2 01-Oct-2010 Jim Huang <jserv@0xlab.org> Reconcile assembly-only macros in <machine/cpu-features.h>

The change explicitly isolates the assembly-only macros in header
<machine/cpu-features.h> in order to prevent mis-inclusion in C/C++
source files.

Change-Id: I0258e87c5ac3fd24944fb227290ac3b9cac4bfba
nclude/machine/cpu-features.h
686af0b3a5978356be3b1a97187c765d63f11623 28-Sep-2010 repo sync <digit@google.com> resolved conflicts for merge of defd1622 to gingerbread-plus-aosp

Conflicts:
libc/arch-arm/syscalls/eventfd.S
libc/include/sys/eventfd.h
libc/include/sys/linux-syscalls.h

Change-Id: I02f6e9536aa5478322240c199ff4c2f4367922d0
a511f245614d8e6c7700df624e13a41a084ad7e4 28-Sep-2010 David 'Digit' Turner <digit@google.com> am 9973a564: libc: Add missing waitid() implementation.

Merge commit '9973a564222b842eb7497fd6e659fe8c8c49e2b3' into gingerbread-plus-aosp

* commit '9973a564222b842eb7497fd6e659fe8c8c49e2b3':
libc: Add missing waitid() implementation.
defd162212de3789d2268a1f3339c2a6097fa825 26-Sep-2010 David 'Digit' Turner <digit@google.com> libc: add <sys/eventfd.h> and corresponding implementations.

Change-Id: Ide040884c456190226e580513099fdb8377e015b
yscalls.mk
yscalls/eventfd.S
052fbd88080c88b7f568612dcac7579092c2e3d9 28-Sep-2010 David 'Digit' Turner <digit@google.com> am a3ae60d3: libc: Add missing fdatasync() implementation

Merge commit 'a3ae60d343661784e3f6f4566b276d8e6b8a06a7' into gingerbread-plus-aosp

* commit 'a3ae60d343661784e3f6f4566b276d8e6b8a06a7':
libc: Add missing fdatasync() implementation
9973a564222b842eb7497fd6e659fe8c8c49e2b3 27-Sep-2010 David 'Digit' Turner <digit@google.com> libc: Add missing waitid() implementation.

Change-Id: I312ee608dbf9249e4886a10d45d13e3cda8a9042
yscalls.mk
yscalls/__waitid.S
yscalls/waitid.S
a3ae60d343661784e3f6f4566b276d8e6b8a06a7 27-Sep-2010 David 'Digit' Turner <digit@google.com> libc: Add missing fdatasync() implementation

Change-Id: I04bb655d77e414021e1f2a973329167ad76ca1c4
yscalls.mk
yscalls/fdatasync.S
914528cdc90dced0c07055d4d986e68adc8da60c 28-Sep-2010 David 'Digit' Turner <digit@google.com> am 223ddfcf: Merge "libc: Add missing pipe2() declaration and implementation." into gingerbread

Merge commit '223ddfcfc4cb354641e70da31a60556248db5036' into gingerbread-plus-aosp

* commit '223ddfcfc4cb354641e70da31a60556248db5036':
libc: Add missing pipe2() declaration and implementation.
9aac38249b579282ae8eaa630de3deaf97c4edff 28-Sep-2010 David 'Digit' Turner <digit@google.com> am bd8d987b: libc: remove C++ comments from public headers.

Merge commit 'bd8d987b3c3aa6d9d00cede2cb091f00bdb42204' into gingerbread-plus-aosp

* commit 'bd8d987b3c3aa6d9d00cede2cb091f00bdb42204':
libc: remove C++ comments from public headers.
223ddfcfc4cb354641e70da31a60556248db5036 28-Sep-2010 David 'Digit' Turner <digit@google.com> Merge "libc: Add missing pipe2() declaration and implementation." into gingerbread
8120a8df848e6dec31ef5f00bc0b41ed95ce1310 27-Sep-2010 Elliott Hughes <enh@google.com> am 3cf53d1a: Fixes for the ARM-specific bswap_16, bswap_32, and bswap_64.

Merge commit '3cf53d1a7814e1520df09d24b009c16f4f27db0d' into gingerbread-plus-aosp

* commit '3cf53d1a7814e1520df09d24b009c16f4f27db0d':
Fixes for the ARM-specific bswap_16, bswap_32, and bswap_64.
bd8d987b3c3aa6d9d00cede2cb091f00bdb42204 26-Sep-2010 David 'Digit' Turner <digit@google.com> libc: remove C++ comments from public headers.

Change-Id: I4af84f912062cd2ff34711c25122fb323f20c032
nclude/machine/_types.h
275cd48511daabe4591caa49c3ad0df34a6889ff 27-Sep-2010 David 'Digit' Turner <digit@google.com> libc: Add missing pipe2() declaration and implementation.

Change-Id: Iacb914bd6ac5adc60c5671e6fef680ede21f9b0c
yscalls.mk
yscalls/pipe2.S
3cf53d1a7814e1520df09d24b009c16f4f27db0d 25-Sep-2010 Elliott Hughes <enh@google.com> Fixes for the ARM-specific bswap_16, bswap_32, and bswap_64.

1. Make the feature test work by excluding known-deficient processors, so
we don't have to maintain a complete list of all the processors that support
REV and REV16.

2. Don't abuse 'register' to get an effect similar to GCC's +l constraint,
but which was unnecessarily restrictive.

3. Fix __swap64md so _x isn't clobbered, breaking 64-bit swaps.

4. Make <byteswap.h> (which declars bswap_16 and friends) use <endian.h>
rather than <sys/endian.h>, so we get the machine-dependent implementations.

Change-Id: I6a38fad7a9fbe394aff141489617eb3883e1e944
nclude/endian.h
ef3644d110bcb44010672c0ad0bc7c96fd130c8f 11-Sep-2010 Jean-Baptiste Queru <jbq@google.com> am 312be567: Merge "Use ARMv6 instruction for handling byte order"

Merge commit '312be567a03aaf851707a268807ee666b12f8c74' into gingerbread-plus-aosp

* commit '312be567a03aaf851707a268807ee666b12f8c74':
Use ARMv6 instruction for handling byte order
312be567a03aaf851707a268807ee666b12f8c74 11-Sep-2010 Jean-Baptiste Queru <jbq@google.com> Merge "Use ARMv6 instruction for handling byte order"
d7b156d2a38e58ab1e5f9e6a4b420588aeb78b46 08-Sep-2010 Keith Deacon <kdeacon@ti.com> am 3a1bbee3: Add eventfd system call support

Merge commit '3a1bbee36b773862e88c6f1895b607c0cd81b499' into gingerbread-plus-aosp

* commit '3a1bbee36b773862e88c6f1895b607c0cd81b499':
Add eventfd system call support
3a1bbee36b773862e88c6f1895b607c0cd81b499 31-Aug-2010 Keith Deacon <kdeacon@ti.com> Add eventfd system call support
yscalls.mk
yscalls/eventfd.S
aa35095517b78b3d2e8ee282cab93ef058479fcf 31-Aug-2010 Jim Huang <jserv@0xlab.org> Use ARMv6 instruction for handling byte order

ARMv6 ISA has several instructions to handle data in different byte order.
For endian conversion (byte swapping) of single data words, it might be a
good idea to use the REV/REV16 instruction simply.

Change-Id: Ic4a5ed6254e082763e54aa70d428f59a0088636e
nclude/endian.h
a1727092595a65e4dd9d9a6bae3778ad8c31d77f 08-Aug-2010 Jim Huang <jserv@0xlab.org> bionic: Rename _ARM_HAVE_LDREX_STREX to __ARM_HAVE_LDREX_STREX for consistency

The patch follows the naming manner in existing macros with prefix
__ARM_HAVE.

Change-Id: I6763ce2bf3ee85fd1da112c719543061d8d19bf4
ionic/atomics_arm.S
nclude/machine/cpu-features.h
18c5bcc66a9a7b2178dcdcf04a0716958798ab81 30-Jul-2010 Dima Zavin <dima@android.com> Revert "Set SA_RESTORER in sigaction()"

This reverts commit e4fa46e75cd0d433b5c6c064720ed7e195cba7c8.
ionic/__sig_restorer.S
ionic/sigaction.c
yscalls.mk
yscalls/__sigaction.S
yscalls/sigaction.S
ab8b54101eed0a4b92ebf8fa6994cd1b4f22d8f4 09-Jul-2010 David 'Digit' Turner <digit@google.com> libc: fix fstatfs() implementation.

The syscall expects the size of the buffer as the second argument.

Change-Id: I99ede2fec7fcd385ca03ff022c2cffa4297bea8d
yscalls.mk
yscalls/__fstatfs64.S
yscalls/fstatfs.S
3b43f87d2949a340e2c19cb735af7727157d8274 02-Jul-2010 David 'Digit' Turner <digit@android.com> Allow dlclose() to properly call static C++ destructors.

With this patch _and_ an upcoming build/ patch, the destruction
of static C++ objects contained in shared libraries will happen
properly when dlclose() is called.

Note that this change introduces crtbegin_so.S and crtend_so.S which
are currently ignored by the build system.

+ move definition of __dso_handle to the right place
(before that, all shared libraries used the __dso_handle
global variable from the C library).

Note that we keep a 'weak' __dso_handle in aeabi.c to avoid
breaking the build until the next patch to build/core/combo/
appears. We will be able to remove that later.

+ move bionic/aeabi.c to arch-arm/bionic/ (its proper location)

NOTE: The NDK will need to be modified to enable this feature in
the shared libraries that are generated through it.

Change-Id: I99cd801375bbaef0581175893d1aa0943211b9bc
ionic/crtbegin_dynamic.S
ionic/crtbegin_so.S
ionic/crtbegin_static.S
ionic/crtend_so.S
ionic/eabi.c
6a9b888d7c4b246f6f66360789c72b754ff85021 18-Jun-2010 David 'Digit' Turner <digit@google.com> Allow static C++ destructors to be properly called on dlclose().

With this patch, _and_ an upcoming build/ patch, the destruction
of static C++ objects contained in shared libraries will happen
properly when dlclose() is called.

Note that this change introduces crtbegin_so.S and crtend_so.S which
are currently ignored by the build system.

+ move definition of __dso_handle to the right place
(before that, all shared libraries used the __dso_handle
global variable from the C library).

Note that we keep a 'weak' __dso_handle in aeabi.c to avoid
breaking the build until the next patch to build/core/combo/
appears. We will be able to remove that later.

+ move bionic/aeabi.c to arch-arm/bionic/ (its proper location)

Change-Id: Ie771aa204e3acbdf02fd30ebd4150373a1398f39
NOTE: The NDK will need to be modified to enable this feature in
the shared libraries that are generated through it.
ionic/crtbegin_dynamic.S
ionic/crtbegin_so.S
ionic/crtbegin_static.S
ionic/crtend_so.S
ionic/eabi.c
b8e6c50cfa2d4c4b73e071d0e836a2667db010b1 25-Mar-2010 David 'Digit' Turner <digit@google.com> Fix setjmp()/longjmp() to save FP registers on ARMv7. - DO NOT MERGE

Change-Id: I3a0c2c05e295ac05ed51a531dabda668be204ca0
ionic/_setjmp.S
ionic/setjmp.S
nclude/machine/cpu-features.h
nclude/machine/setjmp.h
aa4b1d042927872224e4bf5d22e4db5367e389fa 20-May-2010 David 'Digit' Turner <digit@google.com> Add missing sysinfo() implementation (already declared in <sys/sysinfo.h>) - DO NOT MERGE

Change-Id: Iac4eb5911ffe4a7ab72b84df44e907685ac816af
yscalls.mk
yscalls/sysinfo.S
fcd00ebbdf3e7f4e1e7782a65ae10fb0fc03a1aa 28-May-2010 Andy McFadden <fadden@android.com> Atomic/SMP update, part 3.

Update ARM atomic ops to use LDREX/STREX. Stripped out #if 0 chunk.

Insert explicit memory barriers in pthread and semaphore code.

For bug 2721865.

Change-Id: I0f153b797753a655702d8be41679273d1d5d6ae7
ionic/atomics_arm.S
4fdbadde921ec17b4ff9e97fbd41096903b21772 20-May-2010 Andy McFadden <fadden@android.com> Atomic/SMP update.

Added an underscore to _ARM_HAVE_LDREX_STREX to make it match the others.

Added __ARM_HAVE_DMB and __ARM_HAVE_LDREXD when appropriate.

Fixed some typos.

Change-Id: I2f55febcff4aeb7de572a514fb2cd2f820dca27c
ionic/atomics_arm.S
nclude/machine/cpu-features.h
4aef0ae660e81ca151a04ce0ddaf956275c70116 13-May-2010 The Android Open Source Project <initial-contribution@android.com> merge from open-source master

Change-Id: I2be62bce462ee53fe9519f433523bd7a44a73d40
e4fa46e75cd0d433b5c6c064720ed7e195cba7c8 11-Jan-2010 Matt Fischer <matt.fischer@garmin.com> Set SA_RESTORER in sigaction()

GDB looks for specific opcode sequences when trying to recognize a stack
frame as a signal trampoline. The sequences it looks for happen to be those
created when SA_RESTORER is set, since glibc always sets a restorer. This
patch does the same here, so that the trampolines can be correctly identified.

Change-Id: I0ac574a68818cb24d939c3527f3aaeb04b853d04
ionic/__sig_restorer.S
ionic/sigaction.c
yscalls.mk
yscalls/__sigaction.S
yscalls/sigaction.S
88f06cd84a70f8a5212cb03272ec2c7cf0017afa 19-Mar-2010 David 'Digit' Turner <digit@google.com> Use private futexes for pthread_mutex_t.

This does not change the implementation of conditional variables
since we're waiting for other system components to properly use
pthread_condattr_init/setpshared before that.

Also remove an obsolete x86 source file.

Change-Id: Ia3e3fbac35b87a534fb04d4381c3c66b975bc8f7
ionic/atomics_arm.S
8641833b62e3b319796dc80ea16eb1592c05edf6 11-Mar-2010 Fabrice Di Meglio <fdimeglio@google.com> Revert "bionic: pthread: use private futexes by default for mutexes and condvars"

This reverts commit ba9c6f0989ae94778ba2b9f597adc827c9dc81e8.
ionic/atomics_arm.S
ba9c6f0989ae94778ba2b9f597adc827c9dc81e8 11-Mar-2010 David 'Digit' Turner <digit@google.com> bionic: pthread: use private futexes by default for mutexes and condvars

Private futexes are a recent kernel addition: faster futexes that cannot be
shared between processes. This patch uses them by default, unless the PROCESS_SHARED
attribute flag is used when creating a mutex and/or conditional variable.

Also introduces pthread_condattr_init/destroy/setpshared/getpshared.

Change-Id: I3a0e2116f467072b046524cb5babc00e41057a53
ionic/atomics_arm.S
ecede4022283650ee4c4ed117a792d6db0b929fd 10-Mar-2010 Colin Cross <ccross@android.com> Only use NEON memcpy if __ARM_NEON__ is defined

Change-Id: I32e6b9385d46efeec15dee8e395a82eef24ba3ea
ionic/memcpy.S
9f6915631b918a56e0e6be958fb14d274cbab322 02-Mar-2010 Mike Chan <mike@android.com> bonic: libc: cpuacct support for setuid functions

Any of the setuid functions now updates /acct/uid/ with its own tid
before changing users. This is so we can properly account for cpu time
per uid.

Change-Id: I34186cf4d5228cac8439e582a9e26c01ef3011e4
Signed-off-by: Mike Chan <mike@android.com>
yscalls.mk
yscalls/__setresuid.S
yscalls/__setreuid.S
yscalls/__setuid.S
yscalls/setresuid.S
yscalls/setreuid.S
yscalls/setuid.S
eb9d5ed3477ef8cd9ccfa424ea585541ea3af84a 25-Feb-2010 Andrei Popescu <andreip@google.com> add sigaltstack syscall
yscalls.mk
yscalls/sigaltstack.S
75c5e25ae3615c34f4bcc7dcbe9b29e548e26b9c 24-Feb-2010 San Mehat <san@google.com> bionic: syscalls: Add ioprio_set/ioprio_get syscall wrappers

Signed-off-by: San Mehat <san@google.com>
yscalls.mk
yscalls/ioprio_get.S
yscalls/ioprio_set.S
97cf7f3394780d524038fc083e2c134031b54728 23-Jan-2010 David 'Digit' Turner <digit@google.com> Implement clone() C library function properly.

Only provide an implementation for ARM at the moment, since
it requires specific assembly fragments (the standard syscall
stubs cannot be used because the child returns in a different
stack).
ionic/clone.S
yscalls.mk
yscalls/__clone.S
yscalls/__sys_clone.S
d548a265ca0d998241443504afdcdc12e1507811 04-Dec-2009 Doug Kwan <dougkwan@google.com> Add missing symbol type directives.
ionic/__get_pc.S
ionic/__get_sp.S
ionic/atomics_arm.S
ecac54db21256952b4b4a9c6f17604ec31743183 30-Oct-2009 Mathias Agopian <mathias@google.com> am 3ba822cc: am 199f9d92: Improve memcpy performance from 290 MiB/s to 340 MiB/s (17% improvment)

Merge commit '3ba822cc3f0a252db73cf63cb8390e46fc0ceb0a' into eclair-mr2-plus-aosp

* commit '3ba822cc3f0a252db73cf63cb8390e46fc0ceb0a':
Improve memcpy performance from 290 MiB/s to 340 MiB/s (17% improvment)
47c5e30b61bad28731e4acff2d690a4207801f27 29-Oct-2009 Mathias Agopian <mathias@google.com> am 199f9d92: Improve memcpy performance from 290 MiB/s to 340 MiB/s (17% improvment)

Merge commit '199f9d923804d74e021dd80e48ec75c0a96dba77' into eclair-plus-aosp

* commit '199f9d923804d74e021dd80e48ec75c0a96dba77':
Improve memcpy performance from 290 MiB/s to 340 MiB/s (17% improvment)
199f9d923804d74e021dd80e48ec75c0a96dba77 28-Oct-2009 Mathias Agopian <mathias@google.com> Improve memcpy performance from 290 MiB/s to 340 MiB/s (17% improvment)

use 64 bytes cache lines, reduce the main loop to 64-bytes instead of
128 bytes and adjust the prefetch distance to the optimal value.
ionic/memcpy.S
581f43056b594429b3df4678d87989c93d8f81d2 20-Oct-2009 Mathias Agopian <mathias@google.com> am 76ef331c: am 7e7d6c48: use local symbols in memset so it doesn\'t screw up profiling

Merge commit '76ef331cd6967ca8f5af779d25c8b634f8cdd2b6' into eclair-mr2-plus-aosp

* commit '76ef331cd6967ca8f5af779d25c8b634f8cdd2b6':
use local symbols in memset so it doesn't screw up profiling
214dec2811ef893984ce5bceceb28a47d701fa9f 20-Oct-2009 Mathias Agopian <mathias@google.com> am 7e7d6c48: use local symbols in memset so it doesn\'t screw up profiling

Merge commit '7e7d6c48a064af82f0ec39f47b9eb803a6e1df4c' into eclair-plus-aosp

* commit '7e7d6c48a064af82f0ec39f47b9eb803a6e1df4c':
use local symbols in memset so it doesn't screw up profiling
7e7d6c48a064af82f0ec39f47b9eb803a6e1df4c 20-Oct-2009 Mathias Agopian <mathias@google.com> use local symbols in memset so it doesn't screw up profiling
ionic/memset.S
1f2a381e844abfb364af7cfc48d8a2cb1e194637 07-Oct-2009 David 'Digit' Turner <digit@google.com> am fdc5c1f5: Re-enable ARMv7 memcpy implementation.

Merge commit 'fdc5c1f56f9d21034badb8e4b092c47098f19613' into eclair-plus-aosp

* commit 'fdc5c1f56f9d21034badb8e4b092c47098f19613':
Re-enable ARMv7 memcpy implementation.
5be45ce0cf81a3904c697a77fa3e73bf85aead8b 07-Oct-2009 David 'Digit' Turner <digit@google.com> am 1e40783d: Fix armv7-user builds by disabling the ARMv7-optimized memcpy.

Merge commit '1e40783d9ad29c88a4d547774e05080fc4327a2e' into eclair-plus-aosp

* commit '1e40783d9ad29c88a4d547774e05080fc4327a2e':
Fix armv7-user builds by disabling the ARMv7-optimized memcpy.
fdc5c1f56f9d21034badb8e4b092c47098f19613 05-Oct-2009 David 'Digit' Turner <digit@google.com> Re-enable ARMv7 memcpy implementation.

Do not submit this patch before the one that modifies the Android emulator to
work-around a weird ARMv7 emulation issue. This is done to temporarily re-allow
the -user builds needed for QA.
ionic/memcpy.S
1e40783d9ad29c88a4d547774e05080fc4327a2e 03-Oct-2009 David 'Digit' Turner <digit@google.com> Fix armv7-user builds by disabling the ARMv7-optimized memcpy.

This is required to work-around some corny bugs in ARMv7 emulation.

The emulation itself is required to run the dex pre-optimization pass
for -user builds.
ionic/memcpy.S
0893d4918742db3b4bd8ef82c4f3008b60de9e2a 30-Sep-2009 David 'Digit' Turner <digit@google.com> am 7a9e06fa: Merge change I2a7ad975 into eclair

Merge commit '7a9e06fa7e4e533074cde314f25dff3024f34a5d' into eclair-plus-aosp

* commit '7a9e06fa7e4e533074cde314f25dff3024f34a5d':
Fix ABI breakage in libc.so and libm.so between 1.6 and Eclair.
7a9e06fa7e4e533074cde314f25dff3024f34a5d 30-Sep-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change I2a7ad975 into eclair

* changes:
Fix ABI breakage in libc.so and libm.so between 1.6 and Eclair.
2a7ad97539313c82e13d36c9c75cefb2982a87d8 29-Sep-2009 David 'Digit' Turner <digit@google.com> Fix ABI breakage in libc.so and libm.so between 1.6 and Eclair.

For a detailed description of the problem and why this fix is
needed, plrease read the comments in libgcc_compat.c
ionic/libgcc_compat.c
2d77d4dbd690e2d85b9795e670c3b94f8233e962 29-Sep-2009 Mathias Agopian <mathias@google.com> am ee223d02: NEON optimized memcpy.

Merge commit 'ee223d02d96815c989b62043ff1237b1cd4e14b0' into eclair-plus-aosp

* commit 'ee223d02d96815c989b62043ff1237b1cd4e14b0':
NEON optimized memcpy.
ee223d02d96815c989b62043ff1237b1cd4e14b0 28-Sep-2009 Mathias Agopian <mathias@google.com> NEON optimized memcpy.

372 MB/s for large transfers, 440 MB/s for smaller ones down to 1KB. 130 MB/s for very small transfers ( < 32 bytes )
Performance is similar with non-congruent buffers.
ionic/memcpy.S
dfa87a200fd3f99e2a8790f2efc12528fba8e756 27-Sep-2009 David 'Digit' Turner <digit@google.com> am f355096a: Remove NEON optimizations for memcpy

Merge commit 'f355096a64b74c8e869527de55f7e908873e3128' into eclair-plus-aosp

* commit 'f355096a64b74c8e869527de55f7e908873e3128':
Remove NEON optimizations for memcpy
f355096a64b74c8e869527de55f7e908873e3128 27-Sep-2009 David 'Digit' Turner <digit@google.com> Remove NEON optimizations for memcpy
ionic/memcpy.S
4a05d12cf52a9a40759f11f28543bd75715c8f00 18-Sep-2009 David 'Digit' Turner <digit@google.com> Fix TLS access for ARMv6 and beyond.

For performance reasons, we don't call the kernel helper. Instead, we directly
access the TLS register on ARMv6 and higher. For ARMv5TE, keep using the hard-coded
address populated by the kernel on each task switch.

NOTE: Since we don't call the kernel helper, this must precisely match your
kernel configuration. This is controlled by setting the ARCH_ARM_HAVE_TLS_REGISTER
variable to 'true' in your board configuration file.
nclude/machine/cpu-features.h
b8a18d059b8bde9a04e5778a0074a54413328472 15-Sep-2009 Ben Cheng <bccheng@google.com> am bd192b47: Add stack unwinding directives to assembly leaf functions.

Merge commit 'bd192b470b69e00e9313680b70c5572a609e535d' into eclair-plus-aosp

* commit 'bd192b470b69e00e9313680b70c5572a609e535d':
Add stack unwinding directives to assembly leaf functions.
bd192b470b69e00e9313680b70c5572a609e535d 15-Sep-2009 Ben Cheng <bccheng@google.com> Add stack unwinding directives to assembly leaf functions.

So that the real culprit of native crashes can surface in the stack trace.
ionic/atomics_arm.S
ionic/memcmp.S
ionic/memcmp16.S
ionic/memcpy.S
cdeb4c8afa2fb7b92cce3b32a9d2f3c05ad759ba 15-Sep-2009 Jean-Baptiste Queru <jbq@google.com> merge from open-source master
76ec6891e2bc18c9e12cd2f567358bb817b24cff 09-Sep-2009 vinay harugop <vinay.harugop@stericsson.com> ARM architecture reference manuals for ARMv6 & ARMv7 state that the use of 'swp' instruction is deprecated
ARMv6 onwards. These architectures provide the load-linked, store-conditional pair of ldrex/strex whose use
is recommended in place of 'swp'. Also, the description of the 'swp' instruction in the ARMv6 reference
manual states that the swap operation does not include any memory barrier guarantees.This fix attempts to
address these issues by providing an atomic swap implementation using ldrex/strex under _ARM_HAVE_LDREX_STREX
macro. This Fix is verified on ST Ericsson's U8500 platform and Submitted on behalf of a third-party:
Surinder-pal SINGH from STMicroelectronics.
ionic/atomics_arm.S
nclude/machine/cpu-features.h
1bbc56cd227546cb155bb47721cdb717780a3400 26-Aug-2009 David 'Digit' Turner <digit@google.com> Neon-optimized versions of memcpy.

This optimization come from the external 0xdroid repository.
Original patch can be found here:

http://gitorious.org/0xdroid/bionic/commit/ebafe41c2c02f8c09a3c1d7746047083df180ac5
ionic/memcpy.S
3a654b1e04d4275ae315cfe1b196998acf10052c 03-Jun-2009 David 'Digit' Turner <digit@google.com> Revert "Fix the C library initialization to avoid calling static C++ constructors twice."

This reverts commit 03eabfe65e1e2c36f4d26c78a730fa19a3bdada3.
ionic/crtbegin_dynamic.S
ionic/crtbegin_static.S
03eabfe65e1e2c36f4d26c78a730fa19a3bdada3 28-May-2009 David 'Digit' Turner <digit@google.com> Fix the C library initialization to avoid calling static C++ constructors twice.

The problem was due to the fact that, in the case of dynamic executables,
the dynamic linker calls the DT_PREINIT_ARRAY, DT_INIT and DT_INIT_ARRAY
constructors when loading shared libraries and dynamic executables,
*before* calling the executable's entry point (i.e. arch-$ARCH/bionic/crtbegin_dynamic.c)
which in turns call __libc_init() in libc.so, as defined by bionic/libc_init_dynamic.c

The latter did call these constructors array again, mistakenly.

The patch also updates the documentation of many related functions.

Also adds a new section to linker/README.TXT explaining restrictions on
C library usage.

The patch has been tested on a Dream for stability issues with
proprietary blobs:

- H264 decoding works
- Camera + Video recording works
- GPS works
- Sensors work

The tests in system/extra/tests/bionic/libc/common/test_static_cpp_mutex.cpp has been
run and shows the static C++ constructor being called only once.
ionic/crtbegin_dynamic.S
ionic/crtbegin_static.S
1dc9e472e19acfe6dc7f41e429236e7eef7ceda1 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ionic/__get_pc.S
ionic/__get_sp.S
ionic/_exit_with_stack_teardown.S
ionic/_setjmp.S
ionic/atomics_arm.S
ionic/clone.S
ionic/crtbegin_dynamic.S
ionic/crtbegin_static.S
ionic/crtend.S
ionic/exidx_dynamic.c
ionic/exidx_static.c
ionic/ffs.S
ionic/kill.S
ionic/memcmp.S
ionic/memcmp16.S
ionic/memcpy.S
ionic/memset.S
ionic/setjmp.S
ionic/sigsetjmp.S
ionic/strlen.c
ionic/syscall.S
ionic/tkill.S
nclude/endian.h
nclude/machine/_types.h
nclude/machine/asm.h
nclude/machine/cdefs.h
nclude/machine/cpu-features.h
nclude/machine/exec.h
nclude/machine/ieee.h
nclude/machine/internal_types.h
nclude/machine/kernel.h
nclude/machine/limits.h
nclude/machine/setjmp.h
yscalls.mk
yscalls/__brk.S
yscalls/__clone.S
yscalls/__fcntl.S
yscalls/__fcntl64.S
yscalls/__fork.S
yscalls/__getcwd.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__open.S
yscalls/__openat.S
yscalls/__pread64.S
yscalls/__ptrace.S
yscalls/__pwrite64.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigtimedwait.S
yscalls/__set_tls.S
yscalls/__sigsuspend.S
yscalls/__statfs64.S
yscalls/__syslog.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__wait4.S
yscalls/_exit.S
yscalls/_exit_thread.S
yscalls/accept.S
yscalls/access.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chmod.S
yscalls/chown.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/connect.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup2.S
yscalls/epoll_create.S
yscalls/epoll_ctl.S
yscalls/epoll_wait.S
yscalls/execve.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/flock.S
yscalls/fstat.S
yscalls/fstatat.S
yscalls/fstatfs.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/futex.S
yscalls/getdents.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getpid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettid.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init.S
yscalls/inotify_rm_watch.S
yscalls/klogctl.S
yscalls/lchown.S
yscalls/link.S
yscalls/listen.S
yscalls/lseek.S
yscalls/lstat.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdir.S
yscalls/mkdirat.S
yscalls/mknod.S
yscalls/mlock.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/pause.S
yscalls/pipe.S
yscalls/poll.S
yscalls/prctl.S
yscalls/read.S
yscalls/readlink.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmsg.S
yscalls/rename.S
yscalls/renameat.S
yscalls/rmdir.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/select.S
yscalls/sendfile.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setresuid.S
yscalls/setreuid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/setuid.S
yscalls/shutdown.S
yscalls/sigaction.S
yscalls/sigpending.S
yscalls/sigprocmask.S
yscalls/socket.S
yscalls/socketpair.S
yscalls/stat.S
yscalls/symlink.S
yscalls/sync.S
yscalls/times.S
yscalls/truncate.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlink.S
yscalls/unlinkat.S
yscalls/utimes.S
yscalls/vfork.S
yscalls/waitid.S
yscalls/write.S
yscalls/writev.S
1767f908af327fa388b1c66883760ad851267013 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
ionic/__get_pc.S
ionic/__get_sp.S
ionic/_exit_with_stack_teardown.S
ionic/_setjmp.S
ionic/atomics_arm.S
ionic/clone.S
ionic/crtbegin_dynamic.S
ionic/crtbegin_static.S
ionic/crtend.S
ionic/exidx_dynamic.c
ionic/exidx_static.c
ionic/ffs.S
ionic/kill.S
ionic/memcmp.S
ionic/memcmp16.S
ionic/memcpy.S
ionic/memset.S
ionic/setjmp.S
ionic/sigsetjmp.S
ionic/strlen.c
ionic/syscall.S
ionic/tkill.S
nclude/endian.h
nclude/machine/_types.h
nclude/machine/asm.h
nclude/machine/cdefs.h
nclude/machine/cpu-features.h
nclude/machine/exec.h
nclude/machine/ieee.h
nclude/machine/internal_types.h
nclude/machine/kernel.h
nclude/machine/limits.h
nclude/machine/setjmp.h
yscalls.mk
yscalls/__brk.S
yscalls/__clone.S
yscalls/__fcntl.S
yscalls/__fcntl64.S
yscalls/__fork.S
yscalls/__getcwd.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__open.S
yscalls/__openat.S
yscalls/__pread64.S
yscalls/__ptrace.S
yscalls/__pwrite64.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigtimedwait.S
yscalls/__set_tls.S
yscalls/__sigsuspend.S
yscalls/__statfs64.S
yscalls/__syslog.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/__wait4.S
yscalls/_exit.S
yscalls/_exit_thread.S
yscalls/accept.S
yscalls/access.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chmod.S
yscalls/chown.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/connect.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup2.S
yscalls/epoll_create.S
yscalls/epoll_ctl.S
yscalls/epoll_wait.S
yscalls/execve.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/flock.S
yscalls/fstat.S
yscalls/fstatat.S
yscalls/fstatfs.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/futex.S
yscalls/getdents.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getitimer.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getpid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettid.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init.S
yscalls/inotify_rm_watch.S
yscalls/klogctl.S
yscalls/lchown.S
yscalls/link.S
yscalls/listen.S
yscalls/lseek.S
yscalls/lstat.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdir.S
yscalls/mkdirat.S
yscalls/mknod.S
yscalls/mlock.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/pause.S
yscalls/pipe.S
yscalls/poll.S
yscalls/prctl.S
yscalls/read.S
yscalls/readlink.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmsg.S
yscalls/rename.S
yscalls/renameat.S
yscalls/rmdir.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/select.S
yscalls/sendfile.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setresuid.S
yscalls/setreuid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/setuid.S
yscalls/shutdown.S
yscalls/sigaction.S
yscalls/sigpending.S
yscalls/sigprocmask.S
yscalls/socket.S
yscalls/socketpair.S
yscalls/stat.S
yscalls/symlink.S
yscalls/sync.S
yscalls/times.S
yscalls/truncate.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlink.S
yscalls/unlinkat.S
yscalls/utimes.S
yscalls/vfork.S
yscalls/waitid.S
yscalls/write.S
yscalls/writev.S
6f04a0f4c72acff80dad04828cb69ef67fa609d1 19-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132276
yscalls.mk
yscalls/msgctl.S
yscalls/msgget.S
yscalls/msgrcv.S
yscalls/msgsnd.S
yscalls/semctl.S
yscalls/semget.S
yscalls/semop.S
yscalls/shmat.S
yscalls/shmctl.S
yscalls/shmdt.S
yscalls/shmget.S
6d6c82c7a0a6b9a89f61b61c66f9b90d9c7177dc 10-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@125939
ionic/ffs.S
4e468ed2eb86a2406e14f1eca82072ee501d05fd 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
ionic/memcmp.S
ionic/memcmp16.S
ionic/memcpy.S
ionic/strlen.c
nclude/asm
nclude/machine/_types.h
nclude/machine/cpu-features.h
yscalls.mk
yscalls/__fork.S
yscalls/__pread64.S
yscalls/__pwrite64.S
yscalls/__timer_create.S
yscalls/__timer_delete.S
yscalls/__timer_getoverrun.S
yscalls/__timer_gettime.S
yscalls/__timer_settime.S
yscalls/fork.S
yscalls/getitimer.S
yscalls/timer_create.S
yscalls/timer_delete.S
yscalls/timer_getoverrun.S
yscalls/timer_gettime.S
yscalls/timer_settime.S
a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
ionic/__get_pc.S
ionic/__get_sp.S
ionic/_exit_with_stack_teardown.S
ionic/_setjmp.S
ionic/atomics_arm.S
ionic/clone.S
ionic/crtbegin_dynamic.S
ionic/crtbegin_static.S
ionic/crtend.S
ionic/exidx_dynamic.c
ionic/exidx_static.c
ionic/kill.S
ionic/memcmp.S
ionic/memcmp16.S
ionic/memcpy.S
ionic/memset.S
ionic/setjmp.S
ionic/sigsetjmp.S
ionic/strlen.c
ionic/syscall.S
ionic/tkill.S
nclude/asm
nclude/endian.h
nclude/machine/_types.h
nclude/machine/asm.h
nclude/machine/cdefs.h
nclude/machine/exec.h
nclude/machine/ieee.h
nclude/machine/internal_types.h
nclude/machine/kernel.h
nclude/machine/limits.h
nclude/machine/setjmp.h
yscalls.mk
yscalls/__brk.S
yscalls/__clone.S
yscalls/__fcntl.S
yscalls/__fcntl64.S
yscalls/__getcwd.S
yscalls/__getpriority.S
yscalls/__ioctl.S
yscalls/__llseek.S
yscalls/__mmap2.S
yscalls/__open.S
yscalls/__openat.S
yscalls/__ptrace.S
yscalls/__reboot.S
yscalls/__rt_sigaction.S
yscalls/__rt_sigprocmask.S
yscalls/__rt_sigtimedwait.S
yscalls/__set_tls.S
yscalls/__sigsuspend.S
yscalls/__statfs64.S
yscalls/__syslog.S
yscalls/__wait4.S
yscalls/_exit.S
yscalls/_exit_thread.S
yscalls/accept.S
yscalls/access.S
yscalls/acct.S
yscalls/bind.S
yscalls/cacheflush.S
yscalls/capget.S
yscalls/capset.S
yscalls/chdir.S
yscalls/chmod.S
yscalls/chown.S
yscalls/chroot.S
yscalls/clock_getres.S
yscalls/clock_gettime.S
yscalls/clock_nanosleep.S
yscalls/clock_settime.S
yscalls/close.S
yscalls/connect.S
yscalls/delete_module.S
yscalls/dup.S
yscalls/dup2.S
yscalls/epoll_create.S
yscalls/epoll_ctl.S
yscalls/epoll_wait.S
yscalls/execve.S
yscalls/fchdir.S
yscalls/fchmod.S
yscalls/fchmodat.S
yscalls/fchown.S
yscalls/fchownat.S
yscalls/flock.S
yscalls/fork.S
yscalls/fstat.S
yscalls/fstatat.S
yscalls/fstatfs.S
yscalls/fsync.S
yscalls/ftruncate.S
yscalls/futex.S
yscalls/getdents.S
yscalls/getegid.S
yscalls/geteuid.S
yscalls/getgid.S
yscalls/getgroups.S
yscalls/getpeername.S
yscalls/getpgid.S
yscalls/getpid.S
yscalls/getppid.S
yscalls/getresgid.S
yscalls/getresuid.S
yscalls/getrlimit.S
yscalls/getrusage.S
yscalls/getsockname.S
yscalls/getsockopt.S
yscalls/gettid.S
yscalls/gettimeofday.S
yscalls/getuid.S
yscalls/init_module.S
yscalls/inotify_add_watch.S
yscalls/inotify_init.S
yscalls/inotify_rm_watch.S
yscalls/klogctl.S
yscalls/lchown.S
yscalls/link.S
yscalls/listen.S
yscalls/lseek.S
yscalls/lstat.S
yscalls/madvise.S
yscalls/mincore.S
yscalls/mkdir.S
yscalls/mkdirat.S
yscalls/mknod.S
yscalls/mlock.S
yscalls/mount.S
yscalls/mprotect.S
yscalls/mremap.S
yscalls/msgctl.S
yscalls/msgget.S
yscalls/msgrcv.S
yscalls/msgsnd.S
yscalls/msync.S
yscalls/munlock.S
yscalls/munmap.S
yscalls/nanosleep.S
yscalls/pause.S
yscalls/pipe.S
yscalls/poll.S
yscalls/prctl.S
yscalls/read.S
yscalls/readlink.S
yscalls/readv.S
yscalls/recvfrom.S
yscalls/recvmsg.S
yscalls/rename.S
yscalls/renameat.S
yscalls/rmdir.S
yscalls/sched_get_priority_max.S
yscalls/sched_get_priority_min.S
yscalls/sched_getparam.S
yscalls/sched_getscheduler.S
yscalls/sched_rr_get_interval.S
yscalls/sched_setparam.S
yscalls/sched_setscheduler.S
yscalls/sched_yield.S
yscalls/select.S
yscalls/semctl.S
yscalls/semget.S
yscalls/semop.S
yscalls/sendfile.S
yscalls/sendmsg.S
yscalls/sendto.S
yscalls/setgid.S
yscalls/setgroups.S
yscalls/setitimer.S
yscalls/setpgid.S
yscalls/setpriority.S
yscalls/setregid.S
yscalls/setresgid.S
yscalls/setresuid.S
yscalls/setreuid.S
yscalls/setrlimit.S
yscalls/setsid.S
yscalls/setsockopt.S
yscalls/settimeofday.S
yscalls/setuid.S
yscalls/shmat.S
yscalls/shmctl.S
yscalls/shmdt.S
yscalls/shmget.S
yscalls/shutdown.S
yscalls/sigaction.S
yscalls/sigpending.S
yscalls/sigprocmask.S
yscalls/socket.S
yscalls/socketpair.S
yscalls/stat.S
yscalls/symlink.S
yscalls/sync.S
yscalls/timer_create.S
yscalls/timer_delete.S
yscalls/timer_getoverrun.S
yscalls/timer_gettime.S
yscalls/timer_settime.S
yscalls/times.S
yscalls/truncate.S
yscalls/umask.S
yscalls/umount2.S
yscalls/uname.S
yscalls/unlink.S
yscalls/unlinkat.S
yscalls/utimes.S
yscalls/vfork.S
yscalls/waitid.S
yscalls/write.S
yscalls/writev.S