Commit Graph

3672 Commits

Author SHA1 Message Date
Elliott Hughes
5cb66cfdc2 Remove the unused arch-x86 and arch-x86-64 kernel headers.
x86-64 already used uapi headers, and x86 can too now.

Bug: 11559337
Change-Id: I1196d2500f06ad40f2488b96fc8ccc7e02c7d5c0
2013-11-19 16:57:42 -08:00
Christopher Ferris
507cfe2e10 Add .cfi_startproc/.cfi_endproc to ENTRY/END.
Bug: 10414953
Change-Id: I711718098b9f3cc0ba8277778df64557e9c7b2a0
2013-11-19 16:31:24 -08:00
Elliott Hughes
e888de81df Provide <sys/user.h>.
strace wants this, for example.

Change-Id: Icb4d64bde392abbc091fa3375a4fa19b2707b12c
2013-11-19 15:32:31 -08:00
Elliott Hughes
36d6188f8c 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
2013-11-19 14:08:54 -08:00
Elliott Hughes
318e86ed88 Merge "bionic: call stdio cleanup on exit" 2013-11-19 04:01:55 +00:00
Elliott Hughes
303fe0cb38 Merge "Fix pthread_join." 2013-11-19 03:49:00 +00:00
Elliott Hughes
877ec6d904 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
2013-11-18 19:48:11 -08:00
Pawit Pornkitprasan
652289942d bionic: call stdio cleanup on exit
As of 61e699a133, stdio clean up
functions are no longer registered in atexit and must be called
manually via __cleanup.

The issue this fixes is some static binaries linked against bionic
cannot output properly when piped or redirected because the buffer
is not flushed before closing.

This is done by pulling in exit.c (and other dependencies) from
netbsd.

Change-Id: I193e54a6d08900f291550029fe75ce76394d9e22
2013-11-19 09:49:17 +07:00
Christopher Ferris
e372ec8cf9 Pull in cleaned version.h header.
Change-Id: Ia917af9336b63ed5a10147770a8110134cb274cb
2013-11-15 16:29:28 -08:00
Elliott Hughes
e48b68570d Clean up the pthread_create trampoline.
Bug: 8206355
Bug: 11693195
Change-Id: I35cc024d5b6ebd19d1d2e45610db185addaf45df
2013-11-15 14:57:45 -08:00
Elliott Hughes
70b24b1cc2 Switch pthread_create over to __bionic_clone.
Bug: 8206355
Bug: 11693195
Change-Id: I04aadbc36c87e1b7e33324b9a930a1e441fbfed6
2013-11-15 14:41:19 -08:00
Chris Dearman
effaa7824d [MIPS] Reimplement syscall to invoke the system call directly
Some MIPS kernels do not correctly restart interrupted system calls that
have been invoked using the indirect syscall (NR_syscall).

The simplest workaround is to handle the indirection in userland and then
call the required system call directly.

Change-Id: I8385399621529db9a52b463c96925f6decaaca30
2013-11-14 16:53:15 -08:00
Elliott Hughes
007eced93b Remove the mips regdef.h and fpregdef.h old kernel headers.
Bug: 11559337
Change-Id: I6352cac9c4ef425cb21e34d0299223711ec079af
2013-11-13 16:13:01 -08:00
Elliott Hughes
740531354e Add a temporary uapi/linux/compiler.h until upstream has one.
Bug: 11559337
Change-Id: I205974b1a26e4f85d0e11503afa80669195d211c
2013-11-08 15:13:54 -08:00
Elliott Hughes
2ecc164ae9 Remove the dependency on the non-uapi __kernel_nlink_t.
The kernel doesn't have an nlink_t; it just uses the equivalent of
uint32_t. We already had a usable __nlink_t in the C library, so
let's just define our nlink_t in terms of __nlink_t, which is what
__nlink_t was meant for anyway.

Note that our struct stat just follows the kernel, and doesn't refer
to nlink_t anyway.

Change-Id: I2a56e418e42404b1741b08c50554b03c11caebae
2013-11-08 14:38:12 -08:00
Elliott Hughes
abd626117c Generate the uapi headers for mips and x86/x86_64.
Bug: 11559337
Change-Id: I23b1a43e7bfa8fa6f9df7e59d2e731a0ec52dafc
2013-11-08 11:46:03 -08:00
Elliott Hughes
61fb3fc770 Prepare to switch to the uapi <linux/signal.h>.
<time.h> didn't need to copy the cruft from <signal.h>, and
<signal.h> only needs the uid_t hack when it's not using
uapi headers.

pthread_exit.cpp should include what it uses.

Change-Id: I836c36abe0f0a781d41fc425b249d1c7686bb124
2013-11-07 12:29:07 -08:00
Elliott Hughes
ed74484dcb 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
2013-11-07 10:31:05 -08:00
Elliott Hughes
7250d2e5b4 Remove pathconf's dependencies on non-uapi header files.
Change-Id: I597996e4b141b009916f7ad2866dd100e08aa4d3
2013-11-06 17:21:09 -08:00
Elliott Hughes
9be07fa527 Fix a TODO; we've had SOCK_CLOEXEC for a while now.
Change-Id: I4bc39b57f3c33441ead74127f576bf5a4e311566
2013-11-06 17:04:56 -08:00
Elliott Hughes
9e63e03d34 Merge "Clean up the 32-bit kernel support, fix LP64 fcntl declaration." 2013-11-07 01:02:55 +00:00
Elliott Hughes
062092543f 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
2013-11-06 16:33:39 -08:00
Ben Cheng
af10f9e927 Merge "Add processed uapi kernel headers for ARM." 2013-11-06 23:55:25 +00:00
Ben Cheng
a6b53f03c7 Add processed uapi kernel headers for ARM.
Change-Id: Id34de841b7b4b5a1bf7d22eb793860f92f24a6e5
2013-11-06 15:51:05 -08:00
Elliott Hughes
8fbf8deb34 Fix pread/pwrite for LP64.
Unlike on 32-bit systems where off_t is 32-bit, we don't want to
throw away the top 32 bits of an LP64 system's 64-bit off_t.

Change-Id: Ib2e0daeb4fc0b8ab3d1b983d0b371d8f81033b50
2013-11-06 13:10:37 -08:00
Elliott Hughes
40596aa005 Make cpp.py less braindead.
The old code ignored operator precedence (!), despite having two tables
of operator precedence. The code's still pretty awful, but I've cleaned
it up enough to fix this, the most important bug.

This patch lets us correctly clean the uapi unistd.h, stat.h, and swab.h files,
and also fixes the mess we were already making of various old kernel
header files. I've added a bunch more tests, fixed the existing tests that
the existing script was already failing (!), and changed the script so that
the tests are run every time the script is run.

We can probably remove some of the old kernel header files that we were
parsing incorrectly, but we can worry about that later.

Bug: 11253477
Change-Id: Ie66c65b3a7ae13b4e98ed8038a6a534f06eae0e5
2013-11-06 12:04:48 -08:00
Elliott Hughes
3503ce2177 Fix <sys/select.h> for LP64, clean up <time.h>.
The 64-bit uapi headers don't define FD_CLR and friends, so this
patch updates libc/kernel/common/linux/time.h after the change
b934bbec145e9e084bf48149a3a94ae3dd132157 in external/kernel-headers,
then fixes <sys/select.h> to work in this new world, and removes
some now-unnecessary duplication from <time.h> (with other cruft
cleaned up while I'm here).

Change-Id: Ifd26f901b4d200c65065b3e6ef1b74055127e052
2013-11-05 13:28:36 -08:00
Elliott Hughes
6fa79c5cf5 Remove unnecessary #include.
Change-Id: I99dade0b3803272ee29eba2ad36b0311f8a24c31
2013-11-05 11:59:06 -08:00
Scott Anderson
126f66a601 Refresh libc/kernel/common/linux/uinput.h
Change-Id: Icd830af5aee63276554ebf7bfe8192965209cc59
Signed-off-by: Scott Anderson <saa@google.com>
2013-10-31 15:45:32 -07:00
Elliott Hughes
66759d6041 Move the pthread debugging flags to the right place.
Change-Id: Ie805bd837d1f72cdf1818e056c0baeb0857e4e84
2013-10-31 14:09:39 -07:00
Elliott Hughes
c3f114037d <pthread.h> fixes and pthread cleanup.
<pthread.h> was missing nonnull attributes, noreturn on pthread_exit,
and had incorrect cv qualifiers for several standard functions.

I've also marked the non-standard stuff (where I count glibc rather
than POSIX as "standard") so we can revisit this cruft for LP64 and
try to ensure we're compatible with glibc.

I've also broken out the pthread_cond* functions into a new file.

I've made the remaining pthread files (plus ptrace) part of the bionic code
and fixed all the warnings.

I've added a few more smoke tests for chunks of untested pthread functionality.

We no longer need the libc_static_common_src_files hack for any of the
pthread implementation because we long since stripped out the rest of
the armv5 support, and this hack was just to ensure that __get_tls in libc.a
went via the kernel if necessary.

This patch also finishes the job of breaking up the pthread.c monolith, and
adds a handful of new tests.

Change-Id: Idc0ae7f5d8aa65989598acd4c01a874fe21582c7
2013-10-31 12:31:16 -07:00
Elliott Hughes
b5b97f20a8 Remove an obsolete ARM gdb hack.
Experiment shows that the claim in the makefile was false: gdb works fine
setting breakpoints in these functions when compiled without special treatment.

Change-Id: Ibdf4dd5a14d171c954b8c2089daaf28e1c310be9
2013-10-30 14:32:42 -07:00
Elliott Hughes
2f287bc728 Factor out some of the makefile cruft.
I really don't want to add yet another copy for aarch64.

Also sort arm, mips, and x86.

Also silence the "TARGET_ARCH_VARIANT" warning for non-ARM; Intel and MIPS
have both complained about it.

Change-Id: I32c592a90c0cf0cdae250d84035b3e4655543781
2013-10-29 16:59:54 -07:00
Elliott Hughes
2b6e43e00e Explain the sigprocmask in pthread_exit.
Also remove the SIGSEGV special case, which was probably because
hand-written __exit_with_stack_teardown stubs used to try to cause
SIGSEGV if the exit system call returned (which it never does, so
that dead code disappeared).

Also move the sigprocmask into the only case where it's necessary ---
the one where we unmap the stack that would be used by a signal
handler.

Change-Id: Ie40d20c1ae2f5e7125131b6b492cba7a2c6d08e9
2013-10-29 16:11:06 -07:00
Elliott Hughes
126405039e Update <sys/exec_elf.h> to include EM_AARCH64.
Upstream added the constant for us.

Change-Id: I197e32d2e5b3fd499d069546ccfcc1d35d65e0a0
2013-10-28 21:28:40 -07:00
Serban Constantinescu
65ca282ecd AArch64: Add support for AArch64 to stdlib/strtod.c
This patch adds support for AArch64 to strtod.c definitions.

Change-Id: I9491c4371d921c00e73ae169877a9a71225731fb
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2013-10-28 16:24:51 -07:00
Serban Constantinescu
7f8863dc07 AArch64: Autogenerated syscalls for AArch64
This patch adds AArch64 syscalls, autogenerated using:
        ./libc/tools/gensyscalls.py

Change-Id: I1cc60430423ecb52a35448bf2c358b82136b2f16
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2013-10-28 16:18:42 -07:00
Serban Constantinescu
feaa89a1bc AArch64: Add support for AArch64 to the syscall interface
This patch adds support for AArch64 to the syscall interface. The kernel
implementation exports a set of canonical syscalls, therefore some of
the userspace exported syscalls are implemented as stubs based on the
canonical set.

Change-Id: Ia965d71e97769b8be9d7655193fc40303964c4df
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2013-10-28 16:16:34 -07:00
Elliott Hughes
60fd3450bf Fix the *rand48 functions on LP64.
I reported the mrand48 bug upstream, and 'matt' fixed the whole family
of functions!

Change-Id: I07fbc034e86499ce89599c3026a741738fd0cfc0
2013-10-28 15:24:26 -07:00
Elliott Hughes
74ce45972d Update <sys/exec_elf.h> to get the DF_* flags.
Change-Id: Ia9e785f6b95122f94ee3b01a312db1d5bb91a72e
2013-10-28 14:59:41 -07:00
Elliott Hughes
e4d792adb8 Don't allow text relocations on 64-bit.
I've also updated our <sys/exec_elf.h> to match upstream.

Change-Id: I52f9fce3167541811208d273ff23ceaa112f7135
2013-10-28 14:34:56 -07:00
Elliott Hughes
27586ebe1a Fix utime/utimes when passed a NULL pointer.
Bug: 11383777
Change-Id: If944a42f3adfa8a6ce91c167c249e009ed63300a
2013-10-28 13:21:06 -07:00
Elliott Hughes
3df3879bd6 Upgrade to tzdata2013h.
From the release notes:

  Changes affecting current and future time stamps:

    Libya has switched its time zone back to UTC+2 without DST,
    instead of UTC+1 with DST.  (Thanks to Even Scharning.)

    Western Sahara (Africa/El_Aaiun) uses Morocco's DST rules.
    (Thanks to Gwillim Law.)

  Changes affecting future time stamps:

    Acre and (we guess) western Amazonas will switch from UTC-4 to UTC-5
    on 2013-11-10.  This affects America/Rio_Branco and America/Eirunepe.
    (Thanks to Steffen Thorsen.)

    Add entries for DST transitions in Morocco in the year 2038.
    This avoids some year-2038 glitches introduced in 2013g.
    (Thanks to Yoshito Umaoka for reporting the problem.)

Change-Id: Ic855df19773e3fbf13b941b5bfa91dcee9e181e1
2013-10-28 09:38:00 -07:00
Elliott Hughes
6b53c2349a 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
2013-10-24 22:41:50 -07:00
Elliott Hughes
bbefbf1a75 Merge "Use hidden visibility for generated stubs whose names begin with underscores." 2013-10-25 00:20:24 +00:00
Elliott Hughes
567a8de3ca Start moving 32-bit cruft somewhere it won't pollute 64-bit.
Change-Id: I03a6a50a5243f29e50fb58a3cf8b5e7198640baa
2013-10-24 17:14:55 -07:00
Elliott Hughes
fff6e272e9 Use hidden visibility for generated stubs whose names begin with underscores.
Change-Id: Idb39fd04b7a14114801624e744e76e0e7913d951
2013-10-24 17:03:20 -07:00
Elliott Hughes
bf425680e4 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
2013-10-24 16:29:40 -07:00
Elliott Hughes
f8dfb6f249 Merge "Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls." 2013-10-24 22:49:49 +00:00
Elliott Hughes
11952073af Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls.
(aarch64 kernels don't have these system calls.)

Change-Id: I6f64075aa412f71520f2df71c3d69b647f91c1ca
2013-10-24 15:48:32 -07:00
Ben Cheng
fcb37b876e Merge "Add __EXPORTED_HEADERS__ as predefined macro." 2013-10-23 22:47:21 +00:00
Ben Cheng
460fa7033b Add __EXPORTED_HEADERS__ as predefined macro.
To weed out stuff like this in uapi/linux/types.h

ifndef __EXPORTED_HEADERS__
warning "Attempt to use kernel headers from user space, see
http://kernelnewbies.org/KernelHeaders"
endif /* __EXPORTED_HEADERS__ */

Change-Id: I6506cea6248f7a3b44a839b98e91bdd0d3a6c4cd
2013-10-23 14:44:38 -07:00
Elliott Hughes
cdac5f73ac Merge "MIPS' pipe(2) is weird, but MIPS' pipe2(2) is the same as everyone else's." 2013-10-23 18:27:35 +00:00
Elliott Hughes
93de3d881d Fix header file dependencies.
MIPS' asm/fcntl.h assumes a bunch of __kernel_* types are already declared.

Change-Id: Iff701bbb5ede9667a78230c2de3a8f4fe41371c5
2013-10-23 11:25:54 -07:00
Elliott Hughes
b8cf18b4dd MIPS' pipe(2) is weird, but MIPS' pipe2(2) is the same as everyone else's.
arch/mips/kernel/syscall.c has a special sysm_pipe wrapper, but there's
no special treatment of pipe2 because it carries no historical baggage.

Change-Id: I892c0f690b21992c8a48276a9b732126f18fc0ee
2013-10-23 11:21:36 -07:00
Elliott Hughes
cac7b9d6ec 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
2013-10-23 09:48:29 -07:00
Elliott Hughes
f8fcfbc85a 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
2013-10-22 16:31:01 -07:00
Serban Constantinescu
debc021491 AArch64: Fix definitions for STDINT_LIMITS
This patches fixes the definitions for STDINT_LIMITS on __LP64__
systems.

Change-Id: I5eb1664e9ef7c303432a2b041c99cec663816b75
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2013-10-22 12:40:16 -07:00
Elliott Hughes
8c39e58b6a Merge "Make sure we have a mkfifo symbol." 2013-10-22 19:03:57 +00:00
Elliott Hughes
594b1a4af2 Make sure we have a mkfifo symbol.
Bug: https://code.google.com/p/android/issues/detail?id=58888
Change-Id: Ic0a883a5f30beb82cb7be3c4e81b6d693d5fbb4d
2013-10-22 12:03:19 -07:00
Serban Constantinescu
7f70c9b64e 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>
2013-10-22 12:01:29 -07:00
Pavel Chupin
33a209e575 Fix 16-byte stack alignment requirement for x86_64 ABI
Change-Id: I43304803ac54c8688c61688bd96c7160614172d4
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-10-21 17:36:28 -07:00
Elliott Hughes
f4ac8ba566 Merge "Fix the x86_64 vfork implementation." 2013-10-21 21:20:51 +00:00
Elliott Hughes
53bfdae4ff Fix the x86_64 clone implementation.
Change-Id: Ia75f46dcb4d3222049e9a6a6fabc2b17223b47f7
2013-10-18 19:39:09 -07:00
Elliott Hughes
9ea4d5f3a8 Fix the x86_64 vfork implementation.
Change-Id: I599507f5058e6196dc2d5b5653d06d5135dd8ac1
2013-10-18 18:21:11 -07:00
Elliott Hughes
c7fdee72dd Fix struct statfs for LP64.
Change-Id: I9649d881588931a1d672b65ddcf94009daadb0ef
2013-10-18 17:00:11 -07:00
Pavel Chupin
f68fac8c00 x86_64: Fix sys/stat.h
Add 64-bit stat structure mapping 64-bit stat syscall.

Change-Id: Ice517616391bee1d556b6c03e7f5ee610050e6c6
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-10-18 13:24:25 -07:00
Elliott Hughes
938f38daee Fix clone.S for x86_64.
We need to pull the arguments off the child stack and put them into the
registers they're expected to be in.

Change-Id: I064b3258cdd89d513c632857cabb46e52492af2b
2013-10-17 22:22:31 -07:00
Elliott Hughes
8ea3453719 Merge "Add missing aliases for off64_t functions in 64-bit land." 2013-10-18 04:42:09 +00:00
Elliott Hughes
8ca530e559 Add ffs and memcmp16 to x86_64.
Change-Id: I652c1356f1c7c52299977181c2cf154386979380
2013-10-17 17:03:22 -07:00
Elliott Hughes
a6519d6306 Add missing aliases for off64_t functions in 64-bit land.
See the comment in SYSCALLS.TXT for an explanation.

Change-Id: I33d4056e84160c3cca74b7b588e9924a569753ed
2013-10-17 16:56:40 -07:00
Andrei Emeltchenko
43d2137af0 Add SOCK_CLOEXEC and SOCK_NONBLOCK socket flags.
SOCK_CLOEXEC is used to atomically set close-on-exec flag for the new
descriptor(s), and SOCK_NONBLOCK is used to mark descriptor(s) as
non-blocking.

Change-Id: I8ba6a70543d23759e3ddcc7ff9c21b567184d681
2013-10-17 13:32:32 -07:00
Elliott Hughes
e989399dc2 O_CLOEXEC is always defined for arm, mips, x86, and x86_64.
I built all four, just to be sure.

Change-Id: I5c818575c8142fccfc8fb163468832807a535e90
2013-10-17 11:45:22 -07:00
Elliott Hughes
c7e9b23317 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
2013-10-17 11:36:55 -07:00
Ben Cheng
2cda66116c am a458b609: am f89f1eaa: Merge "Refresh libc/kernel/common/linux/auxvec.h"
* commit 'a458b609dbbff789a58fe4d2710af947b20d7e29':
  Refresh libc/kernel/common/linux/auxvec.h
2013-10-16 16:58:47 -07:00
Ben Cheng
76b795a8ba Refresh libc/kernel/common/linux/auxvec.h
Change-Id: If9bb50a2f233cdb60e91bd979876edb917e0f66d
2013-10-16 16:50:14 -07:00
Ben Cheng
a5e5fad478 am 29351c80: am 3fdd6b83: Merge "Add processed uapi kernel headers (common and aarch64-specific)"
* commit '29351c8091c4b7338bd47fb6b3e5aed94a2abf32':
  Add processed uapi kernel headers (common and aarch64-specific)
2013-10-16 16:33:50 -07:00
Elliott Hughes
b2386fed55 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.
2013-10-16 16:33:50 -07:00
Ben Cheng
3fdd6b8337 Merge "Add processed uapi kernel headers (common and aarch64-specific)" 2013-10-16 23:17:52 +00:00
Ben Cheng
2e0b93b01f am 3b1b9f9f: am f0447ddb: Merge "Tweaked the cleanup scripts to handle uapi and aarch64 headers."
* commit '3b1b9f9ff6a2dc88ac0d78fd17f3b58448440357':
  Tweaked the cleanup scripts to handle uapi and aarch64 headers.
2013-10-16 16:09:44 -07:00
Elliott Hughes
6b9321b858 am d6e117b6: am 1f29c2f5: Merge "Switch sigpending over to rt_sigpending."
* commit 'd6e117b64bdfbf8d793eb59ea9604b806608ec75':
  Switch sigpending over to rt_sigpending.
2013-10-16 16:09:42 -07:00
Ben Cheng
655a7c081f Add processed uapi kernel headers (common and aarch64-specific)
Change-Id: If0be7b83bd8fe7cb02472d173f7c452aabf61124
2013-10-16 16:09:24 -07:00
Elliott Hughes
bffe261a1f Merge "Sort the syscalls.mk files, give all generated files the same header." 2013-10-16 23:06:48 +00:00
Ben Cheng
8bea2b6fac Tweaked the cleanup scripts to handle uapi and aarch64 headers.
The processed uapi directory is now placed at libc/kernel/uapi as
opposed to libc/kernel/common/uapi as it contains
architectural-dependent headers now.

Change-Id: I53f814704a4d231b452fde398cd94257a0fb2eea
2013-10-16 15:28:56 -07:00
Elliott Hughes
103ccde8fe Sort the syscalls.mk files, give all generated files the same header.
No non-comment changes to the .S files.

Change-Id: Iafcfd004c3ea92b64268f80ab16df615b97cefac
2013-10-16 14:27:59 -07:00
Elliott Hughes
40d105ccb3 Switch sigpending over to rt_sigpending.
Change-Id: I7b28984796b5fb343cfbcc47e0afc3a84293d417
2013-10-16 14:07:01 -07:00
Elliott Hughes
d5e5a6a353 am 2426cdb6: am 26242bf2: Merge "Remove support for the useless \'custom\' option in SYSCALLS.TXT."
* commit '2426cdb63b95435bb09bacfc3af63304d991c4a2':
  Remove support for the useless 'custom' option in SYSCALLS.TXT.
2013-10-15 19:57:53 -07:00
Elliott Hughes
afaebc3fef 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.
2013-10-15 18:20:32 -07:00
Elliott Hughes
c9da332cce Remove support for the useless 'custom' option in SYSCALLS.TXT.
This cruft dates from a time when bionic would only output syscall
contants for the syscalls mentioned in SYSCALLS.TXT. I fixed that
a long time ago, but never followed through with the removal of what
was then confusingly called "stub" and was recently renamed "custom".

Change-Id: I8f3872a200b2dc8325e357cc5ee505ea4212ef95
2013-10-15 18:18:58 -07:00
Elliott Hughes
1f5af926fa Fix sigsuspend to use rt_sigsuspend on all platforms.
Change-Id: I981c1a66d35480d4457a0a08a1b042dac94daa5b
2013-10-15 18:15:19 -07:00
Elliott Hughes
f2a760dca7 am a85606e1: am c100a100: Merge "\'Avoid confusing "read prevented write" log messages\' 2."
* commit 'a85606e1563c2153bea3c73dfe4ca1588e778f22':
  'Avoid confusing "read prevented write" log messages' 2.
2013-10-15 17:38:17 -07:00
Elliott Hughes
68b67113a4 'Avoid confusing "read prevented write" log messages' 2.
This time it's assembler.

Change-Id: Iae6369833b8046b8eda70238bb4ed0cae64269ea
2013-10-15 17:17:05 -07:00
Elliott Hughes
cbfa1afda3 am 0287db52: am d9913b0b: Merge "Make pthread_create report sched_setscheduler failures on LP64."
* commit '0287db52ed93df39ab45c7f60a241ae621866b90':
  Make pthread_create report sched_setscheduler failures on LP64.
2013-10-15 17:14:59 -07:00
Elliott Hughes
d9913b0b0d Merge "Make pthread_create report sched_setscheduler failures on LP64." 2013-10-16 00:09:54 +00:00
Elliott Hughes
df17ce7858 am 26491483: am 76725214: Merge "Avoid confusing "read prevented write" log messages."
* commit '264914838d1c22c15ed0069d1217a780835c6d1c':
  Avoid confusing "read prevented write" log messages.
2013-10-15 16:58:19 -07:00
Elliott Hughes
b01ebe6d4e am 14e7482c: am d16391bb: Merge "Fix indentation in sched_getaffinity."
* commit '14e7482c556820d8ad3b77f025dfc465d55c7262':
  Fix indentation in sched_getaffinity.
2013-10-15 16:58:19 -07:00
Elliott Hughes
7672521440 Merge "Avoid confusing "read prevented write" log messages." 2013-10-15 23:53:45 +00:00
Elliott Hughes
98624c3746 Make pthread_create report sched_setscheduler failures on LP64.
We couldn't fix this for 32-bit because there's too much broken
code out there. (Pretty much everyone asks for real-time
scheduling for all their threads, and the kernel says "don't be
stupid".)

Change-Id: I43c5271e6b6bb91278b9a19eec08cbf05391e3c4
2013-10-15 16:51:17 -07:00
Elliott Hughes
0cfc95e010 Fix indentation in sched_getaffinity.
Change-Id: I966852149a0255ca132cd7a15f135a875ce400d0
2013-10-15 16:49:49 -07:00
Elliott Hughes
d1eda33f01 Avoid confusing "read prevented write" log messages.
Moving to a "function: message" style avoids ambiguity.

Change-Id: If9d590e50265c61725d3673bd03796e65edd2d5e
2013-10-15 16:49:28 -07:00
Christopher Ferris
289c460c55 am ac6bc319: Remove new aligned memcpy path for cortex-a15.
* commit 'ac6bc31942e58c8893c0695d9766d0f3e39335fe':
  Remove new aligned memcpy path for cortex-a15.
2013-10-15 16:17:14 -07:00
Christopher Ferris
ac6bc31942 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
2013-10-15 14:54:02 -07:00
Christopher Ferris
d77ff4f423 am 76d78dc0: am dc9d8d05: Merge "Modify prefetch for krait memcpy."
* commit '76d78dc0441ba982438ef613a8d6f2f65c6834e0':
  Modify prefetch for krait memcpy.
2013-10-15 14:19:27 -07:00
Elliott Hughes
4681f8244e am 5b3f1d8b: am 22b83da4: Merge "Clean up the sigprocmask/pthread_sigmask implementation."
* commit '5b3f1d8b3a6a1caf059dc376e4967a27ddd57dac':
  Clean up the sigprocmask/pthread_sigmask implementation.
2013-10-15 14:16:02 -07:00
Christopher Ferris
dc9d8d050a Merge "Modify prefetch for krait memcpy." 2013-10-15 21:12:31 +00:00
Christopher Ferris
c3c58fb560 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
2013-10-15 12:10:06 -07:00
Elliott Hughes
19e62325c2 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
2013-10-15 11:23:57 -07:00
Stephen Hines
8161b23689 am 4691325d: am abeafbd6: Merge "Wrap sprintf()/snprintf() macros to prevent expansion errors."
* commit '4691325d48406033632fe84a944ac9c3bd2e5097':
  Wrap sprintf()/snprintf() macros to prevent expansion errors.
2013-10-11 16:33:07 -07:00
Stephen Hines
6e38072add Wrap sprintf()/snprintf() macros to prevent expansion errors.
Previously, FORTIFY_SOURCE used single macros to define these standard
functions for use with clang. This can cause conflicts with other macros used
to call these functions, particularly when those macros expand the number of
arguments to the function. This change wraps our macro definitions, so that
expansion properly takes place for programmer arguments first.

Change-Id: I55929b1fd2a643b9d14a17631c4bcab3b0b712cf
2013-10-11 12:14:49 -07:00
Nick Kralevich
49bb53c8e2 am 95de0df8: am eda2679e: Merge "FORTIFY_SOURCE: fortify read()"
* commit '95de0df8c2daeefca358010f2d15c3346a5284f1':
  FORTIFY_SOURCE: fortify read()
2013-10-09 21:28:52 -07:00
Elliott Hughes
2d38f0c1c7 am 21d70d5f: am 39385aa7: Merge "Clean up the cpuacct cruft."
* commit '21d70d5fd8ff2823a6879d59c7d5a8d6c3e0ce8b':
  Clean up the cpuacct cruft.
2013-10-09 21:28:51 -07:00
Nick Kralevich
eda2679e30 Merge "FORTIFY_SOURCE: fortify read()" 2013-10-10 04:11:48 +00:00
Nick Kralevich
b036b5ca36 FORTIFY_SOURCE: fortify read()
Change-Id: Ic7de163fe121db13e00560adb257331bc709814d
2013-10-09 20:17:03 -07:00
Elliott Hughes
232163cf70 Clean up the cpuacct cruft.
Change-Id: I6ed63af8dfc2368e211420389fa8af4d5dc0908f
2013-10-09 17:35:36 -07:00
Nick Kralevich
b8771d9fd8 am b35ebe3d: am 848efa9d: Merge "Revert "FORTIFY_SOURCE: fortify read()""
* commit 'b35ebe3d7097899fd4498ebb2b93e48fd836ebcf':
  Revert "FORTIFY_SOURCE: fortify read()"
2013-10-09 16:53:05 -07:00
Elliott Hughes
41f56e29c7 am c7559aea: am 777ebe86: Merge "Fix MIPS build."
* commit 'c7559aeaf17a7c38392d2dc8f79c77316a24c8c0':
  Fix MIPS build.
2013-10-09 16:49:46 -07:00
Nick Kralevich
8d25327639 Revert "FORTIFY_SOURCE: fortify read()"
This change reverts
* fb3f956d07.
* 65c99de2cb

Change-Id: Id5774eeede41130579115cf67a72ee914f2b47d5
2013-10-09 16:46:25 -07:00
Elliott Hughes
14b467e840 Fix MIPS build.
Warnings are errors for all home-grown bionic code, and the arch-specific
code now counts as home-grown bionic code (it was mistakenly counted as
"not ours" before).

Change-Id: I9c6a881b0dc596bae7dfe112c5c189e073800a3a
2013-10-09 16:40:33 -07:00
Elliott Hughes
6b6c5791a0 am aa3c17e8: am 37953ee3: Merge "Fix build."
* commit 'aa3c17e8f8b9b3b5b8dc3c7c0fbe85b774f83722':
  Fix build.
2013-10-09 16:39:06 -07:00
Elliott Hughes
1cdc9fe6d5 am 8826ba8a: am bc545e8a: Merge "Fix x86_64 build, clean up intermediate libraries."
* commit '8826ba8ab6922927bdac2466d2903916d5806a06':
  Fix x86_64 build, clean up intermediate libraries.
2013-10-09 16:35:46 -07:00
Nick Kralevich
45e3076cdc am 731ced6b: am c147478c: Merge "FORTIFY_SOURCE: fortify read()"
* commit '731ced6b289629a552b5841561fdcccf08d8c43a':
  FORTIFY_SOURCE: fortify read()
2013-10-09 16:32:25 -07:00
Elliott Hughes
fb3f956d07 Fix build.
'private' is no longer on the default include path inside bionic.

Change-Id: I9bfab213a496fac585787118603af3aa2a1f9951
2013-10-09 16:29:42 -07:00
Elliott Hughes
bc545e8a98 Merge "Fix x86_64 build, clean up intermediate libraries." 2013-10-09 23:29:00 +00:00
Nick Kralevich
c147478cb7 Merge "FORTIFY_SOURCE: fortify read()" 2013-10-09 23:23:27 +00:00
Elliott Hughes
eb847bc866 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
2013-10-09 16:00:17 -07:00
Elliott Hughes
ac045c32d0 am f83148af: am 0c17099a: Merge "Fix __errno for LP64 and clean up __get_tls."
* commit 'f83148af74704c574ad1bf60082f2f56bcb29706':
  Fix __errno for LP64 and clean up __get_tls.
2013-10-09 13:52:56 -07:00
Nick Kralevich
65c99de2cb FORTIFY_SOURCE: fortify read()
Change-Id: I3d7b4ec86d04efb865117ce7629a2e26917f3331
2013-10-09 13:44:38 -07:00
Elliott Hughes
2a0b873065 Fix __errno for LP64 and clean up __get_tls.
If __get_tls has the right type, a lot of confusing casting can disappear.

It was probably a mistake that __get_tls was exposed as a function for mips
and x86 (but not arm), so let's (a) ensure that the __get_tls function
always matches the macro, (b) that we have the function for arm too, and
(c) that we don't have the function for any 64-bit architecture.

Change-Id: Ie9cb989b66e2006524ad7733eb6e1a65055463be
2013-10-09 13:39:13 -07:00
Elliott Hughes
7c98d1304d am 898fd6a1: am 777a4ee6: Merge "Fix 32-bit build."
* commit '898fd6a1f0d8a540a3b8950f18e0858042279001':
  Fix 32-bit build.
2013-10-08 18:46:10 -07:00
Elliott Hughes
51aeff7021 Fix 32-bit build.
libc/tzcode/localtime.c: In function 'differ_by_repeat':
  libc/tzcode/localtime.c:338:2: error: comparison is always false due to limited range of data type [-Werror=type-limits]

Change-Id: Ic84be6391a66e9d50ed98f41d865387c77a60ffa
2013-10-08 18:30:44 -07:00
Elliott Hughes
e17457fbf5 am 3c13dade: am 14b66bff: Merge "Fix malloc debugging for LP64."
* commit '3c13daded375cad5fc77613872a85639cd09f54f':
  Fix malloc debugging for LP64.
2013-10-08 17:28:25 -07:00
Elliott Hughes
5ca2f97fb6 am 5596240c: am 65e1c48d: Merge "Don\'t allow int<->pointer conversions."
* commit '5596240cc86920115cffbfe7aac66116d5136a0b':
  Don't allow int<->pointer conversions.
2013-10-08 17:28:25 -07:00
Elliott Hughes
8cc98f0b1e am 54c7ef7f: am 7027841d: Merge "Fix bionic\'s built-in stack trace dumping for LP64."
* commit '54c7ef7fbd1f79ae490eb737f558fccf3c1dbd55':
  Fix bionic's built-in stack trace dumping for LP64.
2013-10-08 17:28:24 -07:00
Elliott Hughes
14b66bffb0 Merge "Fix malloc debugging for LP64." 2013-10-09 00:20:08 +00:00
Elliott Hughes
65e1c48df0 Merge "Don't allow int<->pointer conversions." 2013-10-09 00:18:50 +00:00
Elliott Hughes
2ec400bfc7 Don't allow int<->pointer conversions.
Normally we don't have -Werror for upstream code, but for those warnings
that probably point to 32-bit assumptions about pointers, we want those
warnings to always be errors.

Change-Id: Ibece9caf09b2f7989ca600ef448d07868669a8fb
2013-10-08 17:04:33 -07:00
Elliott Hughes
c7c5f85ead Fix bionic's built-in stack trace dumping for LP64.
Change-Id: I967c5789d7bb2d3d248d94d81a40d5ec4e1bf26d
2013-10-08 17:02:26 -07:00
Elliott Hughes
ef0696d46a Fix malloc debugging for LP64.
Change-Id: Idd0b239f5c66d45de315d556271a5d13b8eb907c
2013-10-08 16:18:55 -07:00
Elliott Hughes
e769368d76 am c8bd2c2e: am 458076c3: Merge "Fix the ALIGN and ALIGNBYTES macros for LP64."
* commit 'c8bd2c2e45c93b999a40449e4c6f44470f010367':
  Fix the ALIGN and ALIGNBYTES macros for LP64.
2013-10-08 16:15:33 -07:00
Elliott Hughes
78df45e1d1 Fix the ALIGN and ALIGNBYTES macros for LP64.
Change-Id: I3a361255afce375ab1cefa449721f0aea4d47919
2013-10-08 15:31:44 -07:00
Elliott Hughes
42b618cffe 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.
2013-10-08 15:06:49 -07:00
Elliott Hughes
5cf1f22962 Merge "pthread_exit should call __NR_exit with status 0." 2013-10-08 22:02:20 +00:00
Elliott Hughes
c4c6e192ac 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
2013-10-08 14:48:05 -07:00
Elliott Hughes
6260fa5025 am ee9da565: am 58522099: Merge "Make logging fall back to /dev/stderr if we\'re on the host."
* commit 'ee9da5653361f0171e417a4bcb1958a2b91f886d':
  Make logging fall back to /dev/stderr if we're on the host.
2013-10-08 13:47:48 -07:00
Elliott Hughes
0f395b7ba0 Make logging fall back to /dev/stderr if we're on the host.
Otherwise you get no logging, which sucks.

Change-Id: Iea1e8f996461afbb217a55711b7967005c39cfcb
2013-10-08 13:19:00 -07:00
Elliott Hughes
d2e0b1e777 am 83b5acf4: am 5d06718c: Merge "Refactor the syscall generation script."
* commit '83b5acf418544394011ee2f29829b5c1791a52eb':
  Refactor the syscall generation script.
2013-10-08 09:58:04 -07:00
Elliott Hughes
0437f3ff29 Refactor the syscall generation script.
Primarily so that the new x86_64 alias functionality is now available for
all architectures.

Change-Id: I9fde59093a1d08de98923f121a6e3d05ec5801d2
2013-10-07 23:53:13 -07:00
Elliott Hughes
f662660ca3 am 4501a00b: am d2b6b5f2: Merge "Add an optional alias list to SYSCALLS.TXT"
* commit '4501a00be35f2fc851795ac8b15b8956eab69c27':
  Add an optional alias list to SYSCALLS.TXT
2013-10-07 23:07:09 -07:00
Elliott Hughes
d2b6b5f2db Merge "Add an optional alias list to SYSCALLS.TXT" 2013-10-08 06:03:01 +00:00
Elliott Hughes
5be92401e9 am 101a6987: am 5d40527a: Merge "libc: fix __cxa_atexit implicit declaration"
* commit '101a6987c1e3ebfabefb1692ada492b7c0da43ee':
  libc: fix __cxa_atexit implicit declaration
2013-10-07 11:36:40 -07:00
synergydev
589eaa4c72 libc: fix __cxa_atexit implicit declaration
Change-Id: Iacad18b332a717e4485c83df4bd42a850ff7699f
2013-10-07 11:33:20 -07:00
Elliott Hughes
3fc57ce6fd am d8d60a92: am 04cdfa67: Merge "Clean up the x86 and x86_64 _exit_with_stack_teardown implementations."
* commit 'd8d60a92e7029ff8eeae5cbe62db94972e6cc06d':
  Clean up the x86 and x86_64 _exit_with_stack_teardown implementations.
2013-10-07 10:53:08 -07:00
Elliott Hughes
04cdfa67c7 Merge "Clean up the x86 and x86_64 _exit_with_stack_teardown implementations." 2013-10-07 17:49:19 +00:00
H.J. Lu
6fe4e87954 Add an optional alias list to SYSCALLS.TXT
This patch adds an optional alias list to SYSCALLS.TXT.  It is used to
create aliases for a syscall.  For x86-64, lseek64 is an alias for lseek.

Change-Id: Icb11fd2bb461ea4f5f0a26bfc585471d7d7cc468
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-10-07 21:37:12 +04:00
Elliott Hughes
4d388c6a32 am 019d0f33: am d262e17e: Merge "Don\'t define the meaningless SOFTFLOAT for x86."
* commit '019d0f33478f10ebd2c885e6a920d3bbed7a8de3':
  Don't define the meaningless SOFTFLOAT for x86.
2013-10-07 10:32:25 -07:00
Elliott Hughes
a97cc5b458 Clean up the x86 and x86_64 _exit_with_stack_teardown implementations.
Change-Id: I4bcbbc53893612bd94643ef07722becb00f91792
2013-10-07 10:25:11 -07:00
Elliott Hughes
ee489f6ad2 Don't define the meaningless SOFTFLOAT for x86.
Change-Id: I9f932ad5d9f731a0de18efb881d02cedf9fcbede
2013-10-07 09:53:44 -07:00
Elliott Hughes
22678c4db9 am dd384c3e: am a6e9ae80: Merge "Fix MIPS build."
* commit 'dd384c3e7bae2e55981aeadee42f5ee0049219ec':
  Fix MIPS build.
2013-10-06 22:37:44 -07:00
Elliott Hughes
21e7164335 Fix MIPS build.
Although 'register' is deprecated, we need to use v1, and there's
no way to do that through register constraints on the assembler
fragment itself.

Change-Id: Ib5b12c4c3652513d10cc61d4a4b11314ece25663
2013-10-06 22:29:17 -07:00
Elliott Hughes
ddd8a91729 am 06ac96d1: am 4e965d95: Merge "libc: Remove deprecated register"
* commit '06ac96d134fe5c5f3797ef2adc9df837c45d74f3':
  libc: Remove deprecated register
2013-10-06 21:47:25 -07:00
Elliott Hughes
4e965d95cf Merge "libc: Remove deprecated register" 2013-10-07 04:43:57 +00:00
Elliott Hughes
51bbfd6fb2 am 8eafc786: am fcfb6822: Merge "Upgrade to tzdata2013g."
* commit '8eafc786eadea69cd1e7fde8afd9372a94dffff6':
  Upgrade to tzdata2013g.
2013-10-06 20:03:24 -07:00
Elliott Hughes
3fce401590 Upgrade to tzdata2013g.
From the release notes:

  Changes affecting current and near-future time stamps

    Morocco now observes DST from the last Sunday in March to the last
    Sunday in October, not April to September respectively.  (Thanks
    to Steffen Thorsen.)

(cherry picked from commit 40f072192f)

Change-Id: I247f8cf4ef32ec5d6e6fe3845f9a8977b7e748b9
2013-10-06 19:59:14 -07:00
synergydev
baa5874404 libc: Remove deprecated register
In c++11, register has been deprecated, and
libc is now built as gnu++11

From the documentation:
A register specifier is a hint to the implementation
that the variable so declared will be heavily used.
[ Note: The hint can be ignored and in most implementations
it will be ignored if the address of the variable is taken.
This use is deprecated (see D.2)

Change-Id: I459dc3f5f9de63fc09eeda3bc6700f31bdf20f6f
2013-10-06 13:25:02 -07:00
Elliott Hughes
e1fe52ccf1 Upgrade to tzdata2013f.
From the release notes:

  Changes affecting near-future time stamps

    Tocantins will very likely not observe DST starting this spring.
    (Thanks to Steffen Thorsen.)

    Jordan will likely stay at UTC+3 indefinitely, and will not fall
    back this fall.

    Palestine will fall back at 00:00, not 01:00.  (Thanks to Steffen Thorsen.)

(cherry picked from commit 4ced7ef05a)

Change-Id: Icd4754694fbe3b7c475a63666eeeab36c72908ac
2013-10-06 11:41:17 -07:00
Elliott Hughes
21f5927605 Upgrade to tzdata2013e.
From the release notes:

  Changes affecting near-future time stamps

    This year Fiji will start DST on October 27, not October 20.
    (Thanks to David Wheeler for the heads-up.)  For now, guess that
    Fiji will continue to spring forward the Sunday before the fourth
    Monday in October.

  Changes affecting time stamps before 1970

    Pacific/Johnston is now a link to Pacific/Honolulu.  This corrects
    some errors before 1947.

    Some zones have been turned into links, when they differ from
    existing zones only in older data that was likely invented or that
    differs only in LMT or transition from LMT.  These changes affect
    only time stamps before 1943.  The affected zones are:
    Africa/Juba, America/Anguilla, America/Aruba, America/Dominica,
    America/Grenada, America/Guadeloupe, America/Marigot,
    America/Montserrat, America/St_Barthelemy, America/St_Kitts,
    America/St_Lucia, America/St_Thomas, America/St_Vincent,
    America/Tortola, and Europe/Vaduz.  (Thanks to Alois Treindl for
    confirming that the old Europe/Vaduz zone was wrong and the new
    link is better for WWII-era times.)

    Change Kingston Mean Time from -5:07:12 to -5:07:11.  This affects
    America/Cayman, America/Jamaica and America/Grand_Turk time stamps
    from 1890 to 1912.

    Change the UT offset of Bern Mean Time from 0:29:44 to 0:29:46.
    This affects Europe/Zurich time stamps from 1853 to 1894.  (Thanks
    to Alois Treindl).

    Change the date of the circa-1850 Zurich transition from 1849-09-12
    to 1853-07-16, overriding Shanks with data from Messerli about
    postal and telegraph time in Switzerland.

  Data changes affecting behavior of tzselect and similar programs

    Country code BQ is now called the more-common name "Caribbean Netherlands"
    rather than the more-official "Bonaire, St Eustatius & Saba".

    Remove from zone.tab the names America/Montreal, America/Shiprock,
    and Antarctica/South_Pole, as they are equivalent to existing
    same-country-code zones for post-1970 time stamps.  The data for
    these names are unchanged, so the names continue to work as before.

(cherry picked from commit 35b123ef1e)

Change-Id: Ieb2627cc817db93280ceabe4034800bf36ca3f5f
2013-10-06 11:40:07 -07:00
Elliott Hughes
40f072192f Upgrade to tzdata2013g.
From the release notes:

  Changes affecting current and near-future time stamps

    Morocco now observes DST from the last Sunday in March to the last
    Sunday in October, not April to September respectively.  (Thanks
    to Steffen Thorsen.)

Change-Id: I9a657a1b819ce17bb424474d4bcdae093f4c4dca
2013-10-06 11:35:34 -07:00
Elliott Hughes
9258c7b23e am b7d77a9e: am 56777421: Merge "Add arch-x86_64/include/machine."
* commit 'b7d77a9eb1effd5f0472dff14a8fe77d9da2c7a2':
  Add arch-x86_64/include/machine.
2013-10-04 16:21:25 -07:00
Elliott Hughes
72645164b6 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
2013-10-04 16:10:13 -07:00
Elliott Hughes
12e62b4fe7 am fb8ce528: am 8fb977ba: Merge "Add arch-x86_64/bionic."
* commit 'fb8ce528373555a4b2782343e0b19e0b074e8e92':
  Add arch-x86_64/bionic.
2013-10-04 15:06:24 -07:00
Elliott Hughes
8fb977ba11 Merge "Add arch-x86_64/bionic." 2013-10-04 22:02:07 +00:00
Elliott Hughes
4906e5653c Add arch-x86_64/bionic.
This is basically half of I5de76f6c46ac87779f207d568a86bb453e2414de from
Pavel Chupin <pavel.v.chupin@intel.com>, but with the stock upstream
setjump/sigsetjmp and H.J. Lu's suggested changes to __rt_sigreturn.

Change-Id: I8167ec228faeb2065391e5bec0413cca662f3d33
2013-10-04 14:55:30 -07:00
Nick Kralevich
7909bd19ab am 9da8b682: am c417d0a5: Merge "Make error messages even better!"
* commit '9da8b6829cb8febb70af46761b7f2ca19e6498ce':
  Make error messages even better!
2013-10-04 12:02:57 -07:00
Elliott Hughes
83b719a88e am c89f1db0: am 7021e438: Merge "x86_64: Remove lseek64 for x86_64 for a while"
* commit 'c89f1db0a92e4530f1a1686b3629d3d3960f825f':
  x86_64: Remove lseek64 for x86_64 for a while
2013-10-04 12:02:57 -07:00
Elliott Hughes
bc109ea47d am aa3c74d1: am 57d9cebb: Merge "Remove useless x86 fallbacks."
* commit 'aa3c74d175634ab2222ee5a771b01e7434093dbf':
  Remove useless x86 fallbacks.
2013-10-04 11:53:25 -07:00
Nick Kralevich
c417d0a5cd Merge "Make error messages even better!" 2013-10-04 18:48:47 +00:00
Nick Kralevich
6861c6f85e Make error messages even better!
Change-Id: I72bd1eb1d526dc59833e5bc3c636171f7f9545af
2013-10-04 11:43:30 -07:00
Pavel Chupin
9373bbb24b x86_64: Remove lseek64 for x86_64 for a while
Just to keep x86_64 libc buildable

Change-Id: I6e69abe2b699bc4ac12e41178ee080df5dac47b7
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-10-04 11:30:27 -07:00
Elliott Hughes
57d9cebbea Merge "Remove useless x86 fallbacks." 2013-10-04 18:05:48 +00:00
Elliott Hughes
10ab1ec319 am 82d974c7: am a81fd294: Merge "Fixed ASM_ALIGN macro"
* commit '82d974c7ef88f7f796794f2417dd707cc5be6a9c':
  Fixed ASM_ALIGN macro
2013-10-04 09:58:26 -07:00
Nick Kralevich
e0a14e7573 am ed1f8ea0: am bf452313: Merge "FORTIFY_SOURCE: emphasize prevention in error messages."
* commit 'ed1f8ea0369195aa0c3aa9926a94efa26fd14639':
  FORTIFY_SOURCE: emphasize prevention in error messages.
2013-10-04 09:58:25 -07:00
Elliott Hughes
9d3b4b48d8 am 71e0b240: am 41ba05e2: Merge "x86_64: Fix get_tls and statvfs"
* commit '71e0b240ed980e77f736be2a27d255d64747b388':
  x86_64: Fix get_tls and statvfs
2013-10-04 09:58:23 -07:00
Elliott Hughes
be7b6408b3 am 6d923d49: am 14102932: Merge "Move common arch-* code to arch-common directory"
* commit '6d923d497373c160f6fdddd42f5ed56e7bf0923a':
  Move common arch-* code to arch-common directory
2013-10-04 09:58:23 -07:00
Elliott Hughes
a81fd294be Merge "Fixed ASM_ALIGN macro" 2013-10-04 16:25:47 +00:00
Nick Kralevich
e2617290fc FORTIFY_SOURCE: emphasize prevention in error messages.
FORTIFY_SOURCE prevents buffer overflows from occurring.
However, the error message often implies that we only
detect it, not prevent it.

Bring more clarity to the error messages by emphasizing
prevention over detection.

Change-Id: I5f3e1478673bdfc589e6cc4199fce8e52e197a24
2013-10-04 08:57:17 -07:00
Pavel Chupin
719269db18 Fixed ASM_ALIGN macro
Got it all wrong on first patch. Somehow that didn't affect system
build, neither arm nor x86... something to think about.

Change-Id: I45416d843aad44af62841c6f6ab607ccf3f012ea
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-10-04 11:12:58 +04:00
Elliott Hughes
7e841ed688 Remove useless x86 fallbacks.
The NDK ABI requires that you support SSE2, and the build system won't let you
build with ARCH_X86_HAVE_SSE2 set to false. So let's stop pretending this
constant is actually a variable, and let's remove the corresponding dead code.

Also, the USE_SSE2 and USE_SSE3 macros are unused, so let's not bother
setting them.

Change-Id: I40b501d998530d22518ce1c4d14575513a8125bb
2013-10-03 23:30:33 -07:00
Pavel Chupin
1e52a54a47 x86_64: Fix get_tls and statvfs
* bionic_tls.h - Add x86_64 version of get_tls macro;
* statvfs.h - 64-bit kernels don't have __statfs64/__fstatfs64, applying
workaround;

Change-Id: I20d7ddad74c7b7243866373d0142da6627c08280
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-10-03 17:31:50 -07:00
Elliott Hughes
141029327c Merge "Move common arch-* code to arch-common directory" 2013-10-03 23:17:58 +00:00
Nick Kralevich
2837f83068 am 687c7e3e: am e8dc673c: Merge "Don\'t export unnecessary symbol."
* commit '687c7e3ece0f485c79654ca0c4da15b86b1f8a7f':
  Don't export unnecessary symbol.
2013-10-03 15:57:09 -07:00
Nick Kralevich
6f10368926 am 2e819c58: am 2ff3c746: Merge "Check memory size on FD_* functions"
* commit '2e819c58c9396eec3e4311ef2c9bdcadd107f001':
  Check memory size on FD_* functions
2013-10-03 15:57:09 -07:00
Nick Kralevich
e8dc673ca5 Merge "Don't export unnecessary symbol." 2013-10-03 22:52:02 +00:00
Nick Kralevich
2ff3c746ae Merge "Check memory size on FD_* functions" 2013-10-03 22:46:49 +00:00
Nick Kralevich
7943df62f7 Check memory size on FD_* functions
Make sure the buffer we're dealing with has enough room.
Might as well check for memory issues while we're here,
even though I don't imagine they'll happen in practice.

Change-Id: I0ae1f0f06aca9ceb91e58c70183bb14e275b92b5
2013-10-03 15:45:10 -07:00
Nick Kralevich
35c1862cdf Don't export unnecessary symbol.
Change-Id: I8b1d75a08476c41dd8e3f09fc93a3df617928f88
2013-10-03 14:59:05 -07:00
Christopher Ferris
1a086a52d3 am 270c52da: am 1fe477fc: Merge "Add dependencies on included makefiles."
* commit '270c52da0db68c6961eb576b67adc0c41c418763':
  Add dependencies on included makefiles.
2013-10-03 14:57:21 -07:00
Christopher Ferris
d7a632948d Add dependencies on included makefiles.
Bug: 11050594

Merge from internal master.

(cherry-picked from f389284e86)

Change-Id: I2b3e38329a09d26c16870906f9ed1257e2a9dbc8
2013-10-03 14:17:14 -07:00
Christopher Ferris
bdc610aba5 am dc7f8ddc: am 6088047a: Merge "Remove dead files."
* commit 'dc7f8ddc227e833b889eb1eedc16b9b5827fc127':
  Remove dead files.
2013-10-03 13:26:38 -07:00
Christopher Ferris
fc4d70fe54 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 48fc3e8b9f)

Change-Id: I8f9297578990d517f004e4e8840e2b2cbd5a47d8
2013-10-03 12:35:56 -07:00
Pavel Chupin
b49c17c2bf 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>
2013-10-03 11:14:33 +04:00
Christopher Ferris
de7ed18df0 am 0292c1c8: am 3901b1bd: Merge "Remove the __ARM_FEATURE_DSP check."
* commit '0292c1c81dfed23a32d46fb0b089b7eccb87e21e':
  Remove the __ARM_FEATURE_DSP check.
2013-10-02 23:27:06 -07:00
Christopher Ferris
aec1b3540a 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 d2642fa70c)

Change-Id: If23ab3271f4da0c38cd531ffdc9a7e5eed6ec5dc
2013-10-02 23:14:01 -07:00
Nick Kralevich
670f372470 am b6201932: am 2c701a1b: Merge "libc: don\'t export unnecessary symbols"
* commit 'b6201932838c46a567e3411047719fd5c2797e96':
  libc: don't export unnecessary symbols
2013-10-02 17:03:42 -07:00
Nick Kralevich
32bbf8a63b libc: don't export unnecessary symbols
Symbols associated with the internal implementation of memcpy
like routines should be private.

Change-Id: I2b1d1f59006395c29d518c153928437b08f93d16
2013-10-02 16:54:58 -07:00
Nick Kralevich
5634373320 am 8598cd68: am f741e1c2: Merge "FORTIFY_SOURCE: Add __FD_* checks"
* commit '8598cd6888366008033286113bd633b44c70b7dd':
  FORTIFY_SOURCE: Add __FD_* checks
2013-10-02 16:30:51 -07:00
Nick Kralevich
90201d5eca FORTIFY_SOURCE: Add __FD_* checks
Add FORTIFY_SOURCE checks for the following macros:

* FD_CLR
* FD_ISSET
* FD_SET

Bug: 11047121
Change-Id: I3c5952136aec9eff3288b91b1318677ff971525c
2013-10-02 16:11:30 -07:00
Stephen Hines
a6d4acc9f9 am 1986d369: am 32c0c6e7: Merge "Use gnu++11 and gnu99 explicitly for C++/C files."
* commit '1986d36957089bfc8a9d8135768f067395e98bd5':
  Use gnu++11 and gnu99 explicitly for C++/C files.
2013-10-02 15:22:56 -07:00
Stephen Hines
32c0c6e7d5 Merge "Use gnu++11 and gnu99 explicitly for C++/C files." 2013-10-02 22:18:26 +00:00
Nick Kralevich
944ce989f8 am f7da611b: am 00d51c9f: Merge "Use alloc_size attribute on *alloc functions"
* commit 'f7da611b3dedaf9951e08b0296daf67eda8228c0':
  Use alloc_size attribute on *alloc functions
2013-10-02 14:38:12 -07:00
Nick Kralevich
b91791d71c Use alloc_size attribute on *alloc functions
malloc and family were not declared with __attribute__((alloc_size)).
This was (sometimes) preventing FORTIFY_SOURCE related functions
from knowing the size of the buffer it's dealing with, inhibiting
FORTIFY_SOURCE protections.

Add __attribute__((alloc_size))

Information about the alloc_size attribute can be found
at http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

Change-Id: Ia2f0a445f0170a7325f69259b5e7fb35a9f14921
2013-10-02 14:14:40 -07:00
Stephen Hines
762cea46f0 Use gnu++11 and gnu99 explicitly for C++/C files.
Clang and gcc default to different standards, so we should be explicit
about the versions we want to compile for.

Change-Id: I65495a2392dd29f36373b94c616c2506173e6033
2013-10-02 12:37:16 -07:00
Elliott Hughes
a0a5a50152 am 2e2a4f97: am 4bbf3a8b: Merge "Remove #define _BITSIZE 32."
* commit '2e2a4f97bfbb7b94d12690395c5cbcf7d7d1edc7':
  Remove #define _BITSIZE 32.
2013-10-02 10:10:27 -07:00
Elliott Hughes
4bbf3a8b55 Merge "Remove #define _BITSIZE 32." 2013-10-02 17:06:44 +00:00
Stephen Hines
9218adc390 am 62f95981: am 70e1730c: Merge "Remove _FORTIFY_SOURCE in implementation files."
* commit '62f95981df783575efd44cb4206be7b2cbdfcf1c':
  Remove _FORTIFY_SOURCE in implementation files.
2013-10-02 09:33:27 -07:00
Stephen Hines
95fa896206 am dcffa999: am e0e6409c: Merge "Add simple implementation _Unwind_GetIP() for clang compiles."
* commit 'dcffa9998e95dc0fb89d0c9e0ae51a0557d5b2b4':
  Add simple implementation _Unwind_GetIP() for clang compiles.
2013-10-02 09:33:27 -07:00
Stephen Hines
70e1730c38 Merge "Remove _FORTIFY_SOURCE in implementation files." 2013-10-02 16:30:15 +00:00
Stephen Hines
e0e6409c12 Merge "Add simple implementation _Unwind_GetIP() for clang compiles." 2013-10-02 16:29:22 +00:00
Elliott Hughes
5e72c513bf Remove #define _BITSIZE 32.
I've no idea what _BITSIZE was supposed to be, glibc doesn't have it,
the BSDs don't have it, and no code is currently using it. But having
it set unconditionally to 32 sounds like a bad idea.

Change-Id: I900235c1489afba891fff0bc3b43e9d593249a4f
2013-10-02 09:23:46 -07:00
Elliott Hughes
5cf3b4bd34 am a8f4e905: am e26135ab: Merge "The x86_64 kernel headers are the x86 kernel headers."
* commit 'a8f4e905fa3fe5998607ff084091879b77257fd0':
  The x86_64 kernel headers are the x86 kernel headers.
2013-10-02 08:57:27 -07:00
Elliott Hughes
e26135ab18 Merge "The x86_64 kernel headers are the x86 kernel headers." 2013-10-02 15:52:02 +00:00
Elliott Hughes
14cf72860f am f0470422: am 9461e9fa: Merge "Add missing backslash in MIPS filelist"
* commit 'f04704225b64d2ced8d34036af3336a57d945af5':
  Add missing backslash in MIPS filelist
2013-10-01 19:51:21 -07:00
Chris Dearman
fa4d596abc Add missing backslash in MIPS filelist
Change-Id: I993ea7038cd641ea167d974226e2350e49d41c88
2013-10-01 19:11:26 -07:00
Stephen Hines
5f6cfce4f6 Add simple implementation _Unwind_GetIP() for clang compiles.
Clang (prior to 3.4) does not actually provide a declaration (or definition)
of _Unwind_GetIP() for ARM. We can work around this by writing our own
basic implementation using the available primitive operations.

Change-Id: If6c66846952d8545849ad32d2b55daa4599cfe2c
2013-10-01 18:20:51 -07:00
Elliott Hughes
86d920c302 The x86_64 kernel headers are the x86 kernel headers.
Change-Id: I8763aee7043800eb23a720914b57396e79fa812e
2013-10-01 18:03:23 -07:00
Elliott Hughes
a1de7e5033 am f1c534ce: am 6892a29b: Merge "Remove more assumptions that pointers are 32-bit."
* commit 'f1c534ce222de66bdeac06f2dca62fbd84f629f9':
  Remove more assumptions that pointers are 32-bit.
2013-10-01 17:34:34 -07:00
Elliott Hughes
405f8553cf Remove more assumptions that pointers are 32-bit.
Change-Id: I2157e2fc4db7692b746c697982c3d028a056462a
2013-10-01 17:25:28 -07:00
Elliott Hughes
c1cd0f74c9 am f43f8aa8: am b2acd5de: Merge "x86_64: Update Makefiles for x86_64 targets and add symlinks"
* commit 'f43f8aa80a77f59f4ad941d367fe25e30387a72b':
  x86_64: Update Makefiles for x86_64 targets and add symlinks
2013-10-01 15:41:27 -07:00
Pavel Chupin
a567a8e4bd x86_64: Update Makefiles for x86_64 targets and add symlinks
Use basic .c versions of all functions for x86_64 until they are
manually optimized and .s versions released.

Change-Id: I59bba08931e894822db485c8803c2665c226234a
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-10-01 15:36:08 -07:00
Stephen Hines
35d937e4eb Remove _FORTIFY_SOURCE in implementation files.
This was causing conflicting declarations for the library definitions of
common functions like sprintf(), snprintf(), and strchr().

Change-Id: I5daaa8a58183aa0d4d0fae8a7cb799671810f576
2013-10-01 15:02:07 -07:00
Elliott Hughes
211fd4f963 am 24e1dd80: am 4eaa1e1e: Merge "x86_64: add new __NR_arch_prctl syscall"
* commit '24e1dd8016eeaaa6ef3646cbb143de1506e733e8':
  x86_64: add new __NR_arch_prctl syscall
2013-10-01 14:04:19 -07:00
Elliott Hughes
35336777f1 am 67e0214d: am 232dff3a: Merge "Regenerate the system call stubs (to get x86_64)."
* commit '67e0214d0f620df7a7928ef0fa1a9c0aac326a20':
  Regenerate the system call stubs (to get x86_64).
2013-10-01 13:59:59 -07:00
Pavel Chupin
9a4127bb0a x86_64: add new __NR_arch_prctl syscall
This is used to set/get TLS on x86_64. There's no public declaration
of this because it's not meant to be used outside the C library, like
glibc (though we don't currently have any visibility controls to ensure
this).

Change-Id: I5fc0a5e3ffc3f4cd597d92ee685ab19568ea18f7
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-10-01 13:56:21 -07:00
Elliott Hughes
1e99886172 am c58d08d6: am 475e8dde: Merge "x86_64: Add x86_64 syscalls and tune gen scripts for x86_64"
* commit 'c58d08d655fbb3e0472fcb6ea9879fd1ced39172':
  x86_64: Add x86_64 syscalls and tune gen scripts for x86_64
2013-10-01 13:38:16 -07:00
Elliott Hughes
e4ffd9f234 Regenerate the system call stubs (to get x86_64).
This touches the x86 stubs too because arm, x86, and x86_64 now
all share the same header (at a source level), which causes a
reordering of the #include lines.

Change-Id: If9a1e2b2718bd41d8399fea748bce672c513ef84
2013-10-01 13:29:43 -07:00
Pavel Chupin
f12a18b850 x86_64: Add x86_64 syscalls and tune gen scripts for x86_64
* Tune syscall stubs generator for 4th target: x86_64
* Update SYSCALLS.TXT with x86_64 syscalls:
 - Most of the x86 syscalls are equally supported
 - *32 syscalls are not supported on 64-bit
 - *64 syscalls are replaced accordingly without 64 suffix
 - Some syscalls are not supported, replaced with x86_64 analog

Syscalls are regenerated as separate patch for review convenience.

Change-Id: I4ea2e0f13759b0aa61f05208ca68da8d6bc7c048
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-10-01 13:27:07 -07:00
Elliott Hughes
a08be021cc am 57e55fe3: am fd152c31: Merge "Clean up some comments."
* commit '57e55fe3b32465023071a19e368d91f4804ade3b':
  Clean up some comments.
2013-10-01 11:14:27 -07:00
Elliott Hughes
c0af695426 Clean up some comments.
Copyright headers shouldn't contain the filename (and especially
shouldn't contain a different file's filename).

Change-Id: I82690a3bf371265402bc16f5d2fbb9299c3a1926
2013-10-01 11:10:21 -07:00
Elliott Hughes
d4e6961041 am 1a46de67: am f281fd02: Merge "Better statfs/fstatfs glibc compatibility."
* commit '1a46de67b3f78ce44ddf622bcf5918fe758dd4d4':
  Better statfs/fstatfs glibc compatibility.
2013-10-01 10:04:30 -07:00
Elliott Hughes
58413fe735 am 4b5a0e1a: am 693bd73f: Merge "Remove 32-bit assumptions from the ELF code."
* commit '4b5a0e1ad76d76d6a8793f61e3c0902ea4628ce7':
  Remove 32-bit assumptions from the ELF code.
2013-10-01 10:04:29 -07:00
Elliott Hughes
f281fd02e9 Merge "Better statfs/fstatfs glibc compatibility." 2013-10-01 15:30:40 +00:00
Elliott Hughes
693bd73fcd Merge "Remove 32-bit assumptions from the ELF code." 2013-10-01 15:23:44 +00:00
Elliott Hughes
01a700e5d2 Better statfs/fstatfs glibc compatibility.
Change-Id: I069d169c96cd71b75a045ec911fb4bd484c6b2c9
2013-09-30 21:57:07 -07:00
Elliott Hughes
6c8dc46406 am 28317d3a: am f5ea738b: Merge "Fix x86 build."
* commit '28317d3a161c88f88e85d97d584d656ffbe63a19':
  Fix x86 build.
2013-09-30 20:53:55 -07:00
Elliott Hughes
3456a1f5f4 Fix x86 build.
Change-Id: I1f2d8189bec3d0e25d21ca7d7bd73fd02f8678e2
2013-09-30 19:20:02 -07:00
Elliott Hughes
5d641bcf70 am f5dcdfc4: am 6dee3b9a: Merge "Add x86_64 to the bionic headers."
* commit 'f5dcdfc438684bbe93e398b6551f915fe3fe10bf':
  Add x86_64 to the bionic headers.
2013-09-30 18:45:57 -07:00
Elliott Hughes
c620059479 Remove 32-bit assumptions from the ELF code.
Change-Id: I2c1f3d34c33685799aade8866eec44479ff9f963
2013-09-30 18:43:46 -07:00
Elliott Hughes
d3e64a3f40 Add x86_64 to the bionic headers.
Manual changes:

  cpp.py: cope with macros that refer to other macros.

  defaults.py: x86 no longer always implies __i386__; use __i386__ to replace
  the kernel CONFIG_X86_32 flag.

  asm/page.h: the upstream page.h isn't a uapi header and no longer includes
  the stuff we were using it for. Let's just have our own static file, since
  it's the same for all our architectures (both 32- and 64-bit).

  sys/select.h: we used to use the various FD_SET-related macros from the
  kernel header files, but they've gone. Adjust by adding trivial equivalent
  definitions.

Automated changes:

  libc/kernel/arch-x86, libc/kernel/common: regenerated from
  external/kernel-headers.

Change-Id: I84fc0ed52dc742e043b4ae300fd3b58ee99b7fcd
2013-09-30 18:42:13 -07:00
Elliott Hughes
b277509095 am 34284954: am 76218efb: Merge "Fix inttypes.h and stdint.h for 64-bit (and C++11)."
* commit '34284954b3b43010d87c6f99a50dc673a55fbb04':
  Fix inttypes.h and stdint.h for 64-bit (and C++11).
2013-09-30 16:23:03 -07:00
Elliott Hughes
a9a02acc9f Fix inttypes.h and stdint.h for 64-bit (and C++11).
Change-Id: I394630348413c9aafcac137ce1ca5f0a93d9ab6f
2013-09-30 14:46:47 -07:00
Elliott Hughes
967a6d3768 am ef8eb557: am 4d016c6a: Merge "Upgrade to tzcode2013f plus Android modifications (from tzcode2013d plus Android modifications)."
* commit 'ef8eb55708f67fc2977a155dddb1b3f1f732b3fe':
  Upgrade to tzcode2013f plus Android modifications (from tzcode2013d plus Android modifications).
2013-09-27 15:44:53 -07:00
Elliott Hughes
4d016c6a83 Merge "Upgrade to tzcode2013f plus Android modifications (from tzcode2013d plus Android modifications)." 2013-09-27 22:38:45 +00:00
Nick Kralevich
cadc6aaf41 am f56e0e4b: am 6aed6077: Merge "Fix unnecessary call to __strncpy_chk2"
* commit 'f56e0e4b5e97f4e7fed6e06dde30053ea687716e':
  Fix unnecessary call to __strncpy_chk2
2013-09-27 15:18:21 -07:00
Nick Kralevich
d13c2b1ba6 Fix unnecessary call to __strncpy_chk2
If "n" is smaller than the size of "src", then we'll
never read off the end of src. It makes no sense to call
__strncpy_chk2 in those circumstances.

For example, consider the following code:

int main() {
  char src[10];
  char dst[5];
  memcpy(src, "0123456789", sizeof(src));
  strncpy(dst, src, sizeof(dst));
  dst[4] = '\0';
  printf("%s\n", dst);
  return 0;
}

In this code, it's clear that the strncpy will never read off
the end of src.

Change-Id: I9cf58857a0c5216b4576d21d3c1625e2913ccc03
2013-09-27 13:21:24 -07:00
Nick Kralevich
9a622f874c am cc362291: am 8427b745: Merge "libc: fortify recvfrom()"
* commit 'cc362291362f8183431eccb19267c8a625f36006':
  libc: fortify recvfrom()
2013-09-27 09:11:00 -07:00
Nick Kralevich
8427b7450f Merge "libc: fortify recvfrom()" 2013-09-27 16:05:44 +00:00
Elliott Hughes
e0d0b15de6 Upgrade to tzcode2013f plus Android modifications (from tzcode2013d plus Android modifications).
localtime.c and strftime.c are still quite different from upstream because of
our extensions, but the other files continue to be identical, and the two
exceptions should be otherwise identical.

From the tzcode2013e release notes:

  Changes affecting Godthab time stamps after 2037 if version mismatch

    Allow POSIX-like TZ strings where the transition time's hour can
    range from -167 through 167, instead of the POSIX-required 0
    through 24.  E.g., TZ='FJT-12FJST,M10.3.1/146,M1.3.4/75' for the
    new Fiji rules.  This is a more-compact way to represent
    far-future time stamps for America/Godthab, America/Santiago,
    Antarctica/Palmer, Asia/Gaza, Asia/Hebron, Asia/Jerusalem,
    Pacific/Easter, and Pacific/Fiji.  Other zones are unaffected by
    this change.  (Derived from a suggestion by Arthur David Olson.)

    Allow POSIX-like TZ strings where daylight saving time is in
    effect all year.  E.g., TZ='WART4WARST,J1/0,J365/25' for Western
    Argentina Summer Time all year.  This supports a more-compact way
    to represent the 2013d data for America/Argentina/San_Luis.
    Because of the change for San Luis noted above this change does not
    affect the current data.  (Thanks to Andrew Main (Zefram) for
    suggestions that improved this change.)

    Where these two TZ changes take effect, there is a minor extension
    to the tz file format in that it allows new values for the
    embedded TZ-format string, and the tz file format version number
    has therefore been increased from 2 to 3 as a precaution.
    Version-2-based client code should continue to work as before for
    all time stamps before 2038.  Existing version-2-based client code
    (tzcode, GNU/Linux, Solaris) has been tested on version-3-format
    files, and typically works in practice even for time stamps after
    2037; the only known exception is America/Godthab.

  Changes affecting API

    Support for floating-point time_t has been removed.
    It was always dicey, and POSIX no longer requires it.
    (Thanks to Eric Blake for suggesting to the POSIX committee to
    remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy
    Heninger, Arthur David Olson, and Alois Treindl, for reporting
    bugs and elucidating some of the corners of the old floating-point
    implementation.)

    The signatures of 'offtime', 'timeoff', and 'gtime' have been
    changed back to the old practice of using 'long' to represent UT
    offsets.  This had been inadvertently and mistakenly changed to
    'int_fast32_t'.  (Thanks to Christos Zoulos.)

    The code avoids undefined behavior on integer overflow in some
    more places, including gmtime, localtime, mktime and zdump.

  Changes affecting code internals

    Minor changes pacify GCC 4.7.3 and GCC 4.8.1.

  Changes affecting documentation and commentary

    Documentation and commentary is more careful to distinguish UT in
    general from UTC in particular.  (Thanks to Steve Allen.)

From the tzcode2013f release notes:

  Changes affecting API

    The types of the global variables 'timezone' and 'altzone' (if present)
    have been changed back to 'long'.  This is required for 'timezone'
    by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
    These variables were originally 'long' in the tz code, but were
    mistakenly changed to 'time_t' in 1987; nobody reported the
    incompatibility until now.  The difference matters on x32, where
    'long' is 32 bits and 'time_t' is 64.  (Thanks to Elliott Hughes.)

Change-Id: I14937c42a391ddb865e4d89f0783961bcc6baa21
2013-09-27 00:04:30 -07:00
Elliott Hughes
b1542b09d9 am 174e98c9: am ad1244b2: Merge "Upgrade to tzdata2013f."
* commit '174e98c9a96879af82e8bbda2d6322544fb74d90':
  Upgrade to tzdata2013f.
2013-09-26 23:34:10 -07:00
Elliott Hughes
1b709a946f am 3b7d4697: am abd4b254: Merge "Upgrade to tzdata2013e."
* commit '3b7d4697b765cb4cd65a1e306d27c607dc486d66':
  Upgrade to tzdata2013e.
2013-09-26 23:25:40 -07:00
Elliott Hughes
4ced7ef05a Upgrade to tzdata2013f.
From the release notes:

  Changes affecting near-future time stamps

    Tocantins will very likely not observe DST starting this spring.
    (Thanks to Steffen Thorsen.)

    Jordan will likely stay at UTC+3 indefinitely, and will not fall
    back this fall.

    Palestine will fall back at 00:00, not 01:00.  (Thanks to Steffen Thorsen.)

Change-Id: Iccee57578eef2ab51c519a23f151bc1963262ffe
2013-09-26 23:22:23 -07:00
Elliott Hughes
35b123ef1e Upgrade to tzdata2013e.
From the release notes:

  Changes affecting near-future time stamps

    This year Fiji will start DST on October 27, not October 20.
    (Thanks to David Wheeler for the heads-up.)  For now, guess that
    Fiji will continue to spring forward the Sunday before the fourth
    Monday in October.

  Changes affecting time stamps before 1970

    Pacific/Johnston is now a link to Pacific/Honolulu.  This corrects
    some errors before 1947.

    Some zones have been turned into links, when they differ from
    existing zones only in older data that was likely invented or that
    differs only in LMT or transition from LMT.  These changes affect
    only time stamps before 1943.  The affected zones are:
    Africa/Juba, America/Anguilla, America/Aruba, America/Dominica,
    America/Grenada, America/Guadeloupe, America/Marigot,
    America/Montserrat, America/St_Barthelemy, America/St_Kitts,
    America/St_Lucia, America/St_Thomas, America/St_Vincent,
    America/Tortola, and Europe/Vaduz.  (Thanks to Alois Treindl for
    confirming that the old Europe/Vaduz zone was wrong and the new
    link is better for WWII-era times.)

    Change Kingston Mean Time from -5:07:12 to -5:07:11.  This affects
    America/Cayman, America/Jamaica and America/Grand_Turk time stamps
    from 1890 to 1912.

    Change the UT offset of Bern Mean Time from 0:29:44 to 0:29:46.
    This affects Europe/Zurich time stamps from 1853 to 1894.  (Thanks
    to Alois Treindl).

    Change the date of the circa-1850 Zurich transition from 1849-09-12
    to 1853-07-16, overriding Shanks with data from Messerli about
    postal and telegraph time in Switzerland.

  Data changes affecting behavior of tzselect and similar programs

    Country code BQ is now called the more-common name "Caribbean Netherlands"
    rather than the more-official "Bonaire, St Eustatius & Saba".

    Remove from zone.tab the names America/Montreal, America/Shiprock,
    and Antarctica/South_Pole, as they are equivalent to existing
    same-country-code zones for post-1970 time stamps.  The data for
    these names are unchanged, so the names continue to work as before.

Change-Id: If78a517687532afcc0b22c7df664b5955f6e1564
2013-09-26 22:41:09 -07:00
Elliott Hughes
5825f979b7 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.
2013-09-26 09:02:46 -07:00
Elliott Hughes
d612165c67 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
2013-09-26 08:57:17 -07:00
Michael Wright
18c2cc68e8 am 92d512f6: am c612a133: Merge "Update capability.h"
* commit '92d512f6cf273d6d9e281dc362cc25cf8892b3f9':
  Update capability.h
2013-09-25 16:35:33 -07:00
Michael Wright
c612a133dc Merge "Update capability.h" 2013-09-25 23:29:32 +00:00
Michael Wright
8bd5aa6a76 Update capability.h
To upstream SHA 6e4664525b1db28f8c4e1130957f70a94c19213e (v3.11)

Change-Id: Ic0d95464bc9001246df898489b2ea603a97ca231
2013-09-25 14:55:55 -07:00
Nick Kralevich
60f4f9a5b9 libc: fortify recvfrom()
Fortify calls to recv() and recvfrom().

We use __bos0 to match glibc's behavior, and because I haven't
tested using __bos.

Change-Id: Iad6ae96551a89af17a9c347b80cdefcf2020c505
2013-09-24 16:45:01 -07:00
Elliott Hughes
67e34826d8 am 3c49c6ec: am 759111ca: Merge "Simplify the SYSCALLS.TXT format."
* commit '3c49c6ec49e0a4170ff7c9c74ac2e76b9b846ced':
  Simplify the SYSCALLS.TXT format.
2013-09-24 11:29:29 -07:00
Elliott Hughes
759111cadf Merge "Simplify the SYSCALLS.TXT format." 2013-09-24 18:25:50 +00:00
Elliott Hughes
2f81ac8443 am 4808f052: am c8d98679: Merge "Update taskstats.h from Linux 3.11.1"
* commit '4808f05238d66ba474c6d33da066da799d4e6cf3':
  Update taskstats.h from Linux 3.11.1
2013-09-24 07:37:48 -07:00
Elliott Hughes
c8d98679fa Merge "Update taskstats.h from Linux 3.11.1" 2013-09-24 14:29:29 +00:00
Elliott Hughes
5e52279256 Simplify the SYSCALLS.TXT format.
This will make addition of new architectures less unpleasant.

Change-Id: I77c866a63b686e8e70709d08fcf52e8a2d37310a
2013-09-24 00:35:31 -07:00
Elliott Hughes
a663ebd468 am f8222078: am 43e5badd: Merge "Fix %hhd formats in the printf family."
* commit 'f82220785d20385fa02aa78b02f3fdb98e5aa553':
  Fix %hhd formats in the printf family.
2013-09-23 16:39:13 -07:00
Elliott Hughes
1d13c64d78 Fix %hhd formats in the printf family.
Found by adapting the simple unit tests for libc logging to test
snprintf too. Fix taken from upstream OpenBSD without updating
the rest of stdio.

Change-Id: Ie339a8e9393a36080147aae4d6665118e5d93647
2013-09-23 16:02:39 -07:00
Elliott Hughes
4988ec89db am b9f3d31c: am fc2ceae7: Merge "Remove two -D flags for unused macros."
* commit 'b9f3d31ce40bceec4ecf86e2aaf83f1d8857f346':
  Remove two -D flags for unused macros.
2013-09-23 11:22:05 -07:00
Elliott Hughes
fc2ceae778 Merge "Remove two -D flags for unused macros." 2013-09-23 18:14:57 +00:00
Elliott Hughes
3f33165acd Remove two -D flags for unused macros.
Change-Id: Ia95b0f0e2003cadd875e84437afa1853c8fe2598
2013-09-23 11:12:09 -07:00
Sami Kyostila
50a1b776fd Update taskstats.h from Linux 3.11.1
Change-Id: I50853efe20fa2524f6288f78505a774a72071367
2013-09-23 11:01:59 +01:00
Christopher Ferris
16e185c908 __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 883ef2499c)

Change-Id: Id9a96b549435f5d9b61dc132cf1082e0e30889f5
2013-09-20 20:12:09 -07:00
Christopher Ferris
a57c9c084b 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 05332f2ce7)

Change-Id: Ibc919b117cfe72b9ae97e35bd48185477177c5ca
2013-09-20 18:59:58 -07:00
Christopher Ferris
bd7fe1d3c4 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 5f7ccea3ff)

Change-Id: If48a216203216a643807f5d61906015984987189
2013-09-20 13:49:38 -07:00
Nick Kralevich
df3ff45216 am 5a58a1e0: am bef76b54: Merge "Add linux/sock_diag.h"
* commit '5a58a1e0abf51402170abeb6feaceb53915b8a6e':
  Add linux/sock_diag.h
2013-09-20 08:24:59 -07:00
Nick Kralevich
bef76b54a6 Merge "Add linux/sock_diag.h" 2013-09-20 15:20:03 +00:00
Elliott Hughes
e74f77f92d 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.
2013-09-19 17:43:01 -07:00
Nick Kralevich
8470f01cca Add linux/sock_diag.h
This file was generated using bionic/libc/kernel/tools/update_all.py

Change-Id: Iad33e96253978ed9a76d429d66eed9f245685c10
2013-09-19 16:44:53 -07:00
Elliott Hughes
b4f7616fd6 Ensure we have the off64_t variant of every function that takes an off_t.
Change-Id: Ib2eee0cf13162be3b62559b84e90c6dcf5aab1c3
2013-09-19 16:27:24 -07:00
Elliott Hughes
a5a508a9b6 am 35cfcc11: am f8e71bac: Merge "Add mmap64()"
* commit '35cfcc11fa923c75ead9356c71466ecabfafcc42':
  Add mmap64()
2013-09-19 14:27:34 -07:00
Daniel Leung
afcc0cccda Add mmap64()
This adds mmap64() to bionic so that it is possible to have
large offset passed to kernel. However, the syscall mechanism
only passes 32-bit number to kernel. So effectively, the
largest offset that can be passed is about 43 bits (since
offset is signed, and the number passed to kernel is number
of pages (page size == 4K => 12 bits)).

Change-Id: Ib54f4e9b54acb6ef8b0324f3b89c9bc810b07281
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2013-09-19 14:11:26 -07:00
Elliott Hughes
44fd0d92d6 am 94c325fb: am 269851bf: Merge "Declare __page_shift and __page_size with C linkage."
* commit '94c325fb3bd8844dcc58640afb8f33668b684bc1':
  Declare __page_shift and __page_size with C linkage.
2013-09-19 12:06:43 -07:00
Bernhard Rosenkraenzer
9ae59c02ca Declare __page_shift and __page_size with C linkage.
__page_shift and __page_size were accidentally declared in unistd.h with
C linkage - their implementation needs to use the same linkage.

Going forward, though, let's stop the inlining madness and let's kill
the non-standard __getpageshift(). This patch takes getpagesize(3) out
of line and removes __getpageshift but fixes __page_shift and __page_size
for backwards binary compatibility.

Change-Id: I35ed66a08989ced1db422eb03e4d154a5d6b5bda
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
2013-09-19 11:55:36 -07:00
Elliott Hughes
a3285dc914 am 8ff879a5: am a259472c: Merge "Fix mismatch between declaration and forward declaration"
* commit '8ff879a528b8876db811f5abd4dbf0640e3a0408':
  Fix mismatch between declaration and forward declaration
2013-09-19 11:46:46 -07:00
Elliott Hughes
a259472ca0 Merge "Fix mismatch between declaration and forward declaration" 2013-09-19 18:41:06 +00:00
Elliott Hughes
823a4e0a7e am 26e71c19: am 045f311b: Merge "Use and to find the tzdata."
* commit '26e71c19875e36ca4f37993bd0b40cdf2d9aee4e':
  Use $ANDROID_DATA and $ANDROID_ROOT to find the tzdata.
2013-09-19 11:23:55 -07:00
Elliott Hughes
045f311b0a Merge "Use $ANDROID_DATA and $ANDROID_ROOT to find the tzdata." 2013-09-19 18:19:00 +00:00
Elliott Hughes
cf178bf7d0 Use $ANDROID_DATA and $ANDROID_ROOT to find the tzdata.
This lets us run binaries linked against bionic on an x86 host.

Change-Id: Icd60cf99a90d747c77304c05b4f764e4d26af985
2013-09-19 11:17:42 -07:00
Nick Kralevich
d85d0b4c23 am 0c12f125: am 814bbd52: Merge "Update netlink.h from tip-of-tree external/kernel-headers"
* commit '0c12f125cfc90f83475532e64aa7f533e02e3798':
  Update netlink.h from tip-of-tree external/kernel-headers
2013-09-18 21:09:22 -07:00
Nick Kralevich
45e52faeb7 Update netlink.h from tip-of-tree external/kernel-headers
This file was generated using bionic/libc/kernel/tools/update_all.py

The only change is a new netlink.h file, from external/kernel-headers.
Please see the commit message there for details.

Change-Id: I83645b88f0baff838131197913ebd70be69abd3f
2013-09-18 17:14:02 -07:00
Bernhard Rosenkraenzer
edad1e1558 Fix mismatch between declaration and forward declaration
KernelArgumentBlock is defined as a class in KernelArgumentBlock.h, but
forward declarations refer to it as a struct.

While this is essentially the same, the mismatch causes a compiler
warning in clang (and may cause warnings in future versions of gcc) in
code that is supposed to be compiled with -Werror.

Change-Id: I4ba49d364c44d0a42c276aff3a8098300dbdcdf0
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
2013-09-18 23:40:19 +02:00
Brian Carlstrom
4105fcdb3c am 059f5c3f: am 8512992f: Merge "Simplify main thread stack size initialization"
* commit '059f5c3f6ce2a1783b5d96b4059df1b9104101d5':
  Simplify main thread stack size initialization
2013-09-13 17:05:20 -07:00
Brian Carlstrom
50af69e8f3 Simplify main thread stack size initialization
Change-Id: Iec09433d9de501031cce09dc75848a5e8f3d96bf
2013-09-13 16:44:47 -07:00
Brian Carlstrom
322e7bce23 Use kernel default for initial thread size
Bug: 10697851

Change-Id: I8d980f5e0b584799536f6e6b891056c968d26cdf
2013-09-13 16:25:25 -07:00
Brian Carlstrom
0890436da9 am 9a74e36f: Use kernel default for initial thread size
* commit '9a74e36f4810ca22cb12f8eafe4f929edfa57e58':
  Use kernel default for initial thread size
2013-09-13 13:20:19 -07:00
Brian Carlstrom
9a74e36f48 Use kernel default for initial thread size
Bug: 10697851

Change-Id: I8d980f5e0b584799536f6e6b891056c968d26cdf
2013-09-12 22:19:44 -07:00
Christopher Ferris
2e7a8b44c2 resolved conflicts for merge of 883ef249 to klp-dev-plus-aosp
Change-Id: I1e2bd03a0cb5a0ab191c525d1574377bc7fd90ab
2013-09-10 19:49:04 -07:00
Christopher Ferris
883ef2499c __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
2013-09-10 17:34:03 -07:00
Christopher Ferris
5cb0436930 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.
2013-09-06 10:57:40 -07:00
Christopher Ferris
24053a461e Add the dl_iterate_phdr function to libdl for arm.
Bug: 8410085

Merge from internal master.

(cherry-picked from cb491bc66d)

Change-Id: I94ed51bc5d4c626df7552c0e85c31ccee2d6568f
2013-09-06 09:53:54 -07:00
Elliott Hughes
a015800e73 am 5d094c40: am df7436e7: Merge "Avoid segfaults if properties are not initialized"
* commit '5d094c408841370e4a6f2846ae3408d2e6d12f94':
  Avoid segfaults if properties are not initialized
2013-09-03 14:12:31 -07:00
Elliott Hughes
df7436e709 Merge "Avoid segfaults if properties are not initialized" 2013-09-03 21:07:16 +00:00
Elliott Hughes
eb31e1c558 am 1e96d49a: am afa31042: Merge "Fix strchr for basic non-sse case on x86"
* commit '1e96d49a7d4d1af8f3bd6630e4ec9369813f18e7':
  Fix strchr for basic non-sse case on x86
2013-09-03 14:07:11 -07:00
Pavel Chupin
3c4b50fd8c Fix strchr for basic non-sse case on x86
Fix source location. Move declaration of __strchr_chk out of
ifdef __BIONIC_FORTIFY which should be available for strchr.cpp
compilation when __BIONIC_FORTIFY is not defined.

Change-Id: I552a6e16656e59b276b322886cfbf57bbfb2e6a7
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-09-03 16:20:52 +04:00
Pavel Chupin
a21e696d90 Avoid segfaults if properties are not initialized
Null or constant dereferencing occurs if properties are not initialized.
On Android devices it shouldn't happen but can be faced if testing bionic
libc.so on Linux host.

Change-Id: I8f047cbe17d0e7bcde40ace000a8aa53789c16cb
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-09-03 13:27:09 +04:00
Christopher Ferris
153ec2a76f am 49c0d471: Merge "Fix all debug directives." into klp-dev
* commit '49c0d471a8ba9ed32e7fdadb7e4ea6118b4b4af4':
  Fix all debug directives.
2013-08-29 14:23:06 -07:00
Christopher Ferris
49c0d471a8 Merge "Fix all debug directives." into klp-dev 2013-08-29 21:21:20 +00:00
Christopher Ferris
05332f2ce7 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
2013-08-28 15:42:05 -07:00
Nick Kralevich
4d0fbf9b07 am 89dcc10c: am 4e3ed44d: Merge "cdefs.h: introduce __bos0"
* commit '89dcc10c320c032faef83c4940a57949ade01dba':
  cdefs.h: introduce __bos0
2013-08-28 14:36:50 -07:00
Nick Kralevich
bd8e6749b7 cdefs.h: introduce __bos0
Introduce __bos0 as a #define for __builtin_object_size((s), 0).
This macro is intended to be used for places where the standard
__bos macro isn't appropriate.

memcpy, memmove, and memset deliberately use __bos0. This is done
for two reasons:

1) I haven't yet tested to see if __bos is safe to use.
2) glibc uses __bos0 for these methods.

Change-Id: Ifbe02efdb10a72fe3529dbcc47ff647bde6feeca
2013-08-28 14:27:14 -07:00
Nick Kralevich
2c87c3ff02 am cfd0d72d: am eb8f3622: Merge "FORTIFY_SOURCE: introduce __strncpy_chk2"
* commit 'cfd0d72da8641087f9c4015ee586614da9f7320a':
  FORTIFY_SOURCE: introduce __strncpy_chk2
2013-08-28 13:07:57 -07:00
Nick Kralevich
93501d3ab8 FORTIFY_SOURCE: introduce __strncpy_chk2
This change detects programs reading beyond the end of "src" when
calling strncpy.

Change-Id: Ie1b42de923385d62552b22c27b2d4713ab77ee03
2013-08-28 12:39:06 -07:00
Nick Kralevich
f6186e9592 am 1278ae38: am 22f5ef6b: Merge "Delete CAVEATS / fix spelling."
* commit '1278ae38366102369b5a35152f2213426a148512':
  Delete CAVEATS / fix spelling.
2013-08-27 17:11:06 -07:00
Nick Kralevich
bdbdbb8319 Delete CAVEATS / fix spelling.
Change-Id: I0ed504271b7c2e4434d0d5f53bc10335c8cf7b5b
2013-08-27 17:05:19 -07:00
Robert Greenwalt
cd1480a662 am 26ac8032: Merge "Change how DNS resolver handle no default iface" into klp-dev
* commit '26ac803232540fc074709c75d17bc3ec0c03f2c4':
  Change how DNS resolver handle no default iface
2013-08-26 15:03:44 -07:00
Brian Carlstrom
6ab75bf41e Merge "Fix pthread_getcpuclockid." into klp-dev 2013-08-26 21:21:17 +00:00
Jeff Hao
e9e10c13ff Fix pthread_getcpuclockid.
clock_gettime was returning EINVAL for the values
produced by pthread_getcpuclockid.

Bug: 10346183

(cherry picked from commit 9b06cc3c1b)

Change-Id: Ib81a7024c218a4502f256c3002b9030e2aaa278d
2013-08-26 14:04:16 -07:00
Elliott Hughes
bda15698bc am d23ef69a: am 33dd7c11: Merge "Add explicit -m32/-melf_i386 for x86 target"
* commit 'd23ef69ad1d089c10547ac3d42ba199b66260ae3':
  Add explicit -m32/-melf_i386 for x86 target
2013-08-26 10:11:55 -07:00
Elliott Hughes
33dd7c116d Merge "Add explicit -m32/-melf_i386 for x86 target" 2013-08-26 17:05:31 +00:00
Robert Greenwalt
e5911f3128 resolved conflicts for merge of 937c3742 to klp-dev-plus-aosp
Change-Id: I4c0ad42ea3802cd232c80e5589af8a8e25f88a60
2013-08-24 08:21:41 -07:00
Robert Greenwalt
26ac803232 Merge "Change how DNS resolver handle no default iface" into klp-dev 2013-08-24 12:20:01 +00:00
Robert Greenwalt
d67662b9d6 Change how DNS resolver handle no default iface
We used to just try any iface we'd been told about as a
fallback, but that will end up mistakenly using a secondary
network's dns when we really don't have a default connection.

It also messed up our detection of whether we were doing the
lookup on the default or not (we'd get back our secondary net
iface as the default, do the compare and think we were on default).

Remove the lies and let dns fail if we don't have an iface for it.

bug:10132565

Conflicts:
	libc/netbsd/resolv/res_cache.c

Change-Id: I357a9c34dad83215f44c5e0dd41ce2a7d6fe8f3f
2013-08-23 11:48:26 -07:00
Pavel Chupin
e85c183424 Add explicit -m32/-melf_i386 for x86 target
Required for x86 build with multilib compiler.

Change-Id: Iac71cdc3461df6fb48cb2a7b713324ca368e6704
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-08-23 16:46:42 +04:00
Robert Greenwalt
a31ddef36d Change how DNS resolver handle no default iface
We used to just try any iface we'd been told about as a
fallback, but that will end up mistakenly using a secondary
network's dns when we really don't have a default connection.

It also messed up our detection of whether we were doing the
lookup on the default or not (we'd get back our secondary net
iface as the default, do the compare and think we were on default).

Remove the lies and let dns fail if we don't have an iface for it.

bug:10132565
Change-Id: I5f0f2abacaaaaf23c5292b20fba9d8dcb6fb10c5
2013-08-22 21:05:49 -07:00
Elliott Hughes
2d38fced00 am 7003a14b: am 41f08abf: Merge "Apply upstream commit 943a6621866e9d6e654f5cfe1494378c1fb8957a."
* commit '7003a14b536bad08476d2f2005ebcc0490b77b24':
  Apply upstream commit 943a6621866e9d6e654f5cfe1494378c1fb8957a.
2013-08-22 14:32:44 -07:00
Elliott Hughes
345eb225ae Apply upstream commit 943a6621866e9d6e654f5cfe1494378c1fb8957a.
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Thu Aug 22 12:47:51 2013 -0700

    * localtime.c: Fix another integer overflow bug in mktime.

    (time2sub): Avoid undefined behavior on time_t overflow.
    Reported by Elliott Hughes in
    <http://mm.icann.org/pipermail/tz/2013-August/019580.html>.

Bug: 10310929

(cherry picked from commit 713fe6463e)

Change-Id: I9ec79fd8d825e6b9e8bb5af549dbfc2182346c05
2013-08-22 14:29:07 -07:00
Elliott Hughes
713fe6463e Apply upstream commit 943a6621866e9d6e654f5cfe1494378c1fb8957a.
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Thu Aug 22 12:47:51 2013 -0700

    * localtime.c: Fix another integer overflow bug in mktime.

    (time2sub): Avoid undefined behavior on time_t overflow.
    Reported by Elliott Hughes in
    <http://mm.icann.org/pipermail/tz/2013-August/019580.html>.

Bug: 10310929
Change-Id: I3bf26f1f91371552e0a3828457d27e22af55acb2
2013-08-22 14:18:04 -07:00
Elliott Hughes
6b5eb3134a am e5ac43e1: am c44205cf: Merge "Work around tzcode\'s reliance on signed overflow."
* commit 'e5ac43e19afe270c2a70e4fb5d02b4cf056d50d7':
  Work around tzcode's reliance on signed overflow.
2013-08-22 12:27:52 -07:00
Elliott Hughes
f0c10a4a16 Work around tzcode's reliance on signed overflow.
I've mailed the tz list about this, and will switch to whatever upstream
fix comes along as soon as it's available.

Bug: 10310929

(cherry picked from commit 7843d44a59)

Change-Id: I205e2440703444c50cecd91d3458d33613ddbc59
2013-08-22 12:23:47 -07:00
Elliott Hughes
7843d44a59 Work around tzcode's reliance on signed overflow.
I've mailed the tz list about this, and will switch to whatever upstream
fix comes along as soon as it's available.

Bug: 10310929
Change-Id: I36bf3fcf11f5ac9b88137597bac3487a7bb81b0f
2013-08-22 12:21:18 -07:00
Christopher Ferris
1ebb44013c am 5f7ccea3: Update all debug directives.
* commit '5f7ccea3ffab05aeceecb85c821003cf580630d3':
  Update all debug directives.
2013-08-20 13:23:32 -07:00
Christopher Ferris
5f7ccea3ff 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
2013-08-20 11:22:34 -07:00
Elliott Hughes
e714eb157e am 6b6aaec8: am 4eacb341: Merge "Fix pthread_getcpuclockid."
* commit '6b6aaec892b1f256787fbbf106449f7d7e5888a2':
  Fix pthread_getcpuclockid.
2013-08-16 12:25:58 -07:00
Jeff Hao
9b06cc3c1b Fix pthread_getcpuclockid.
clock_gettime was returning EINVAL for the values
produced by pthread_getcpuclockid.

Bug: 10346183
Change-Id: Iabe643d7d46110bb311a0367aa0fc737f653208e
2013-08-15 15:34:22 -07:00
Christopher Ferris
5f45d583b0 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 2be91915dc)

Change-Id: Ia407b74d3287d0b6af0139a90b6eb3bfaebf2155
2013-08-15 11:13:39 -07:00
Christopher Ferris
59a13c122e 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 7c860db074)

Change-Id: I916ad305e4001269460ca6ebd38aaa0be8ac7f52
2013-08-14 18:14:43 -07:00
Michael Wright
a71f676b47 am 7b197ea1: am 5e4a2f31: Merge "Update kernel input headers"
* commit '7b197ea1107055bcdf0a15f285495c5d70a3555c':
  Update kernel input headers
2013-08-14 13:48:18 -07:00
Michael Wright
7b197ea110 am 5e4a2f31: Merge "Update kernel input headers"
* commit '5e4a2f3174485678d461d6b0eeb11a5e9a32e531':
  Update kernel input headers
2013-08-14 13:47:03 -07:00
Michael Wright
55bdef8677 Update kernel input headers
To upstream SHA e1c85813f3832b909d1c4309b213bb0a52c79ba5

Change-Id: I72ee3d59c105bc0252b5ca0c49c569d12ec685d1
2013-08-14 13:30:20 -07:00
Christopher Ferris
f0c3d90913 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 2be91915dc)
2013-08-14 07:46:00 +00:00
Elliott Hughes
fd61eccf6b am ff9b7aa6: Merge "Make ctype.h a little less unhygienic."
* commit 'ff9b7aa695bd4860c0551b8899f2f26311174855':
  Make ctype.h a little less unhygienic.
2013-08-13 14:43:26 -07:00
Elliott Hughes
3912f90e56 Make ctype.h a little less unhygienic.
This caused trouble for stlport.

(cherry picked from commit 5e9b20f721)

Change-Id: I85d09c12c6de1e8502f83e0ef0f17747fdfe08a5
2013-08-13 14:42:43 -07:00
Elliott Hughes
5951e84646 Fix our missing abs/labs/llabs/imaxabs (and imaxdiv) symbols.
(cherry picked from commit aec2ffbc5a)

Change-Id: Ib61b52dc37e63493094a0a7af23bf89d4a9f0ce5
2013-08-13 14:41:07 -07:00
Elliott Hughes
5e9b20f721 Make ctype.h a little less unhygienic.
This caused trouble for stlport.

Change-Id: Id40787c5a2b7a3a4e12fb557efe549778a01cbbd
2013-08-13 14:30:59 -07:00
Elliott Hughes
ff8dcd4a10 am c933493a: Merge "Fix our missing abs/labs/llabs/imaxabs (and imaxdiv) symbols."
* commit 'c933493ac28c40558f369d175da738ba601d8499':
  Fix our missing abs/labs/llabs/imaxabs (and imaxdiv) symbols.
2013-08-12 13:25:48 -07:00
Elliott Hughes
aec2ffbc5a Fix our missing abs/labs/llabs/imaxabs (and imaxdiv) symbols.
Change-Id: I94c411c22634e43184445c82e7388e51fc46a8cc
2013-08-12 12:07:05 -07:00
Elliott Hughes
840a114eb1 Add futimens.
(cherry picked from commit d0be7c8f9a)

Bug: 10239370
Change-Id: I0087e85a94d83b6ce68ec6a0768c44cbe4bd0132
2013-08-08 17:52:06 -07:00
Elliott Hughes
dce94165a5 am ee48fed5: Merge "Add futimens."
* commit 'ee48fed51894f3db324e957058ed2ddcf23dddc7':
  Add futimens.
2013-08-08 17:41:15 -07:00
Elliott Hughes
d0be7c8f9a Add futimens.
Bug: 10239370
Change-Id: I518340084103dc339ef8a065d4837d6258a1381d
2013-08-08 17:13:33 -07:00
Christopher Ferris
b922ed3498 Fix strcpy.c that should have been strcpy.S. DO NOT MERGE
Merge from internal master.

(cherry-picked from 1ce6654163)

Change-Id: I376b831df42248baadde7202a30a68112f752ff7
2013-08-08 12:09:37 -07:00
Christopher Ferris
4e24dcc8d8 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 d119b7b6f4)

Change-Id: I296463b251ef9fab004ee4dded2793feca5b547a
2013-08-08 11:13:46 -07:00
Colin Cross
7f4074d17d bionic: name malloc'd regions
Use the new __bionic_name_mem function to name malloc'd memory as
"libc_malloc" on kernels that support it.

Change-Id: I7235eae6918fa107010039b9ab8b7cb362212272
2013-08-08 00:42:39 +00:00
Colin Cross
6771b9cef6 bionic: add function to name memory
Only works on some kernels, and only on page-aligned regions of
anonymous memory.  It will show up in /proc/pid/maps as
[anon:<name>] and in /proc/pid/smaps as Name: <name>

Change-Id: If31667cf45ff41cc2a79a140ff68707526def80e
2013-08-07 15:41:30 -07:00
Christopher Ferris
7c860db074 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
2013-08-06 15:38:29 -07:00
Christopher Ferris
1ce6654163 Fix strcpy.c that should have been strcpy.S.
Change-Id: Ib4609baad3a14c8b0f37556269781fa2b06916dc
2013-08-05 17:08:06 -07:00
Christopher Ferris
e1857431e8 Merge "Optimize strcat/strcpy, small tweaks to strlen." 2013-08-05 23:32:06 +00:00
Elliott Hughes
e66ffef900 am cd927519: Merge "Fix stdint.h intptr_t/uintptr_t for x86_64/x32"
* commit 'cd927519a94939f2ebc307544f827baade529bc9':
  Fix stdint.h intptr_t/uintptr_t for x86_64/x32
2013-08-05 15:51:54 -07:00
Elliott Hughes
28e0ec8d61 am a0473d77: Merge "syslog needs a valid socket path for _PATH_LOG"
* commit 'a0473d77b2d3a6f26e29cc8c2fdaeb2a4b3ab8f8':
  syslog needs a valid socket path for _PATH_LOG
2013-08-05 15:51:53 -07:00
Elliott Hughes
cd927519a9 Merge "Fix stdint.h intptr_t/uintptr_t for x86_64/x32" 2013-08-05 20:55:24 +00:00
Elliott Hughes
a0473d77b2 Merge "syslog needs a valid socket path for _PATH_LOG" 2013-08-05 20:41:50 +00:00
Robert Greenwalt
662bb875e4 am a9c5bb97: Merge "Fix the detection of alt-network in dns resolver."
* commit 'a9c5bb972df7cbb4e65cfb53673b26f9d42deacd':
  Fix the detection of alt-network in dns resolver.
2013-08-05 11:55:53 -07:00
Robert Greenwalt
1d8d9a308c Fix the detection of alt-network in dns resolver.
Used to determine proper A/AAAA record request.

bug:10132565
Change-Id: I7229f6672e879920a6fae58672cddd72db78546c
2013-08-05 18:44:30 +00:00
Elliott Hughes
49b24b4efb am 3287dccf: Merge "Add ssse3 implementation of __memcmp16."
* commit '3287dccf2ecced89bb39b857abc8eba997bc3f51':
  Add ssse3 implementation of __memcmp16.
2013-08-02 18:04:01 -07:00
Ben Cheng
b78f43579f am aa2733d1: Merge "Update the comments to reflect the current status."
* commit 'aa2733d17b87c607fccbd6e6a0f44d2d411ffd77':
  Update the comments to reflect the current status.
2013-08-02 17:58:47 -07:00
Elliott Hughes
d0313e7a2a 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
2013-08-02 17:58:46 -07:00
Alexander Ivchenko
baa91f4f89 Add ssse3 implementation of __memcmp16.
__memcmp16 was missing in x86. Also added C-version for backward
compatibility. Added bionic test for __memcmp16 and for wmemcmp.

Change-Id: I33718441e7ee343cdb021d91dbeaf9ce2d4d7eb4
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>
2013-08-02 17:57:23 -07:00
Ben Cheng
772b797b7b Update the comments to reflect the current status.
Change-Id: I3a6348b568230fe8b21d121e5b8d30561a9703c2
2013-08-02 15:53:18 -07:00
Elliott Hughes
a6ed05c1c4 Merge "libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher" 2013-08-02 22:39:08 +00:00
Christopher Ferris
d119b7b6f4 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
2013-08-02 10:31:51 -07:00
Pavel Chupin
0a9c615a89 Fix stdint.h intptr_t/uintptr_t for x86_64/x32
Patch is required in NDK headers as well to be able to build multilib
GCC with libgomp support.
It's here: https://android-review.googlesource.com/#/c/62982

Change-Id: I2bec25d8cbca0e5ef1a0857008ececd92f4911be
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-08-02 19:23:37 +04:00
Robert Greenwalt
7e5d7485b7 am e6345f1a: Merge "Tell the dns resolver about our domains."
* commit 'e6345f1a1ec691690c69d5663ca8bb2b70240d93':
  Tell the dns resolver about our domains.
2013-07-31 17:57:45 -07:00
Robert Greenwalt
e0805a94c5 Tell the dns resolver about our domains.
A refactor caused us to not tell the resolver about search domains
until after it had done the domain fanout.

bug:6799630
Change-Id: Ibabd8fa5bcc69b1490fc5e329e62eb0f2d1a5e63
2013-07-31 16:53:46 -07:00
Elliott Hughes
abf3638317 am 101b5e1f: Merge "Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way."
* commit '101b5e1f6cc4e24635760928b3d2c1e51c1e5774':
  Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way.
2013-07-29 17:35:49 -07:00
Elliott Hughes
c03e1e7439 Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way.
Also make sysconf use PTHREAD_STACK_MIN rather than redefining its
own, different, constant.

Bug: 9997352
Change-Id: I9a8e7d2b18e691439abfb45533e82c36eee9e81d
2013-07-29 17:09:36 -07:00
synergydev
efddf44c8e 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
2013-07-29 16:55:08 -07:00
Elliott Hughes
326b52760d am 9a73d08f: Merge "Bump the number of TLS slots to 128."
* commit '9a73d08f4c334c00fe06d583d37e038ebe063eba':
  Bump the number of TLS slots to 128.
2013-07-25 17:04:18 -07:00
Elliott Hughes
838f01fdc7 Bump the number of TLS slots to 128.
Bug: 9997352
Change-Id: I7bde7228d803e9d4bb83309c5891d54a07e3b025
2013-07-25 14:14:22 -07:00
Elliott Hughes
478314a109 am a9feb5e3: Merge "Avoid sign extension of the mmap offset."
* commit 'a9feb5e33a5261f45fb25fd5e90a56792c6a437e':
  Avoid sign extension of the mmap offset.
2013-07-25 10:51:00 -07:00
Elliott Hughes
e320a8c780 Avoid sign extension of the mmap offset.
off_t is signed to support seeking backwards, but that's a liability
when using off_t to represent a subset of a file.

Change-Id: I2a3615166eb16212347eb47f1242e3bfb93c2022
2013-07-25 10:15:07 -07:00
Elliott Hughes
a59b7ed8c3 am bfba6aac: am a8d06766: Merge "[MIPS] __dso_handle.S and __dso_handle_so.S not needed."
* commit 'bfba6aac99115972fad3341aef595c0ca1f7258b':
  [MIPS] __dso_handle.S and __dso_handle_so.S not needed.
2013-07-23 18:10:51 -07:00
Elliott Hughes
bfba6aac99 am a8d06766: Merge "[MIPS] __dso_handle.S and __dso_handle_so.S not needed."
* commit 'a8d06766c7674bbfde852e8bfee4200e75ad8f24':
  [MIPS] __dso_handle.S and __dso_handle_so.S not needed.
2013-07-23 18:07:12 -07:00
Elliott Hughes
a8d06766c7 Merge "[MIPS] __dso_handle.S and __dso_handle_so.S not needed." 2013-07-24 01:05:18 +00:00
Rom Lemarchand
c847f749fe am c5749f1f: am 061246b6: Merge "Restore dlmalloc mmap threshold to 64k"
* commit 'c5749f1f4232e59e66737488036aba1f583867d5':
  Restore dlmalloc mmap threshold to 64k
2013-07-23 13:58:12 -07:00
Rom Lemarchand
c5749f1f42 am 061246b6: Merge "Restore dlmalloc mmap threshold to 64k"
* commit '061246b600c16a80b246804221b9e3fa65e507d9':
  Restore dlmalloc mmap threshold to 64k
2013-07-23 13:52:29 -07:00
Rom Lemarchand
d0f2a6014c Restore dlmalloc mmap threshold to 64k
Restoring DEFAULT_MMAP_THRESHOLD to 64k, the way it was before
999089181e.

This forces allocations in the 64k-256k range to be mmaped.

Change-Id: Iace55ed638edd272b3e94fa6cd2ddd349042be84
Signed-off-by: Rom Lemarchand <romlem@google.com>
2013-07-23 13:48:39 -07:00
Pete Delaney
0995a7b322 [MIPS] __dso_handle.S and __dso_handle_so.S not needed.
Global hidden variable __dso_handle is now declared in:
       bionic/libc/private/__dso_handle.h

Change-Id: I8e951a8d7c65877bafc1be23a7fff6d44d3a2846
Signed-off-by: Pete Delaney  <piet.delaney@imgtec.com>
Signed-off-by: Chao-Ying Fu  <chao-ying.fu@imgtec.com>
2013-07-22 23:16:02 -07:00
Elliott Hughes
aa9116f0ed am c2902edf: am 6fe4a58f: Merge "Move stuff only needed by pthread-timers.c into pthread-timers.c."
* commit 'c2902edfc4aaa02977eef7154d05d5369bc48281':
  Move stuff only needed by pthread-timers.c into pthread-timers.c.
2013-07-19 17:19:46 -07:00
Elliott Hughes
c2902edfc4 am 6fe4a58f: Merge "Move stuff only needed by pthread-timers.c into pthread-timers.c."
* commit '6fe4a58f84954523f17114f1f7cf060a3573c073':
  Move stuff only needed by pthread-timers.c into pthread-timers.c.
2013-07-19 17:13:33 -07:00
Elliott Hughes
8b56ba8896 am 178c4185: am e8bd8c2e: Merge "Upgrade mktemp.c to the current upstream version."
* commit '178c41857321732259c3e22d73c86c22ae4359b5':
  Upgrade mktemp.c to the current upstream version.
2013-07-19 16:43:07 -07:00
Elliott Hughes
4cf1395217 Move stuff only needed by pthread-timers.c into pthread-timers.c.
Change-Id: I4915b3fff9c4f5a36b4f51027fb22019c11607b0
2013-07-19 16:42:27 -07:00
Elliott Hughes
178c418573 am e8bd8c2e: Merge "Upgrade mktemp.c to the current upstream version."
* commit 'e8bd8c2ed9c71c73682f29020456934c55f260e3':
  Upgrade mktemp.c to the current upstream version.
2013-07-19 16:37:52 -07:00
Elliott Hughes
284f788032 Upgrade mktemp.c to the current upstream version.
Yet another archaic relic containing bugs that had been fixed years before the
Android project even started...

Bug: 9935113
Change-Id: I3c9d019a216efd609ee568cf8c70bc360f357403
2013-07-19 15:20:31 -07:00
Colin Cross
15d2784fc1 Merge "Kexec header generated from linux header 3.10" 2013-07-18 17:41:09 +00:00
Elliott Hughes
3c212645a0 am 81b46980: am f8a66bb3: Merge "Remove some non-unused makefile generality."
* commit '81b4698059c37ac36aa74d1498bef5654580ad3f':
  Remove some non-unused makefile generality.
2013-07-17 17:45:03 -07:00