The recent libcore ZoneInfo changes mean that we can no longer
compile libcore's ZoneInfo against the RI. Luckily, the field in
our data file that we needed ZoneInfo for isn't actually used.
This change removes our dependence on libcore.
I've left the field in to avoid a file format change. We can remove
the field if/when we next have a real need to bump the file format.
(cherry-pick of 90cb5ffb85a9bc2e725824b3ca8db932d02c45db.)
Bug: 16168653
Change-Id: Iedad2252c2b49f4d8bb2c7d9078b39b622444ca7
During pthread_exit, the keys are cleaned. Unfortunately, a call to
free occurs after the cleanup and the memory for some of the keys
is recreated when using jemalloc. The solution is to do the key
cleanup twice.
Also, modify the pthread_detach__leak test to be less flaky
when run on a jemalloc system.
Bug: 16513133
Change-Id: Ic17e8344bdc1ba053c4f5b6d827a4c19c57860c1
During pthread_exit, the keys are cleaned. Unfortunately, a call to
free occurs after the cleanup and the memory for some of the keys
is recreated when using jemalloc. The solution is to do the key
cleanup twice.
Also, modify the pthread_detach__leak test to be less flaky
when run on a jemalloc system.
Bug: 16513133
(cherry picked from commit 18d93f2793)
Change-Id: Idb32e7f9b09e2c088d256ed9eb881df80c81ff8e
The recent libcore ZoneInfo changes mean that we can no longer
compile libcore's ZoneInfo against the RI. Luckily, the field in
our data file that we needed ZoneInfo for isn't actually used.
This change removes our dependence on libcore.
I've left the field in to avoid a file format change. We can remove
the field if/when we next have a real need to bump the file format.
Bug: 16168653
Change-Id: Iedad2252c2b49f4d8bb2c7d9078b39b622444ca7
From the release notes:
Changes affecting future time stamps
Russia will subtract an hour from most of its time zones on
2014-10-26 at 02:00 local time. (Thanks to Alexander Krivenyshev.)
There are a few exceptions: Magadan Oblast (Asia/Magadan) and
Zabaykalsky Krai are subtracting two hours; conversely, Chukotka
Autonomous Okrug (Asia/Anadyr), Kamchatka Krai (Asia/Kamchatka),
Kemerovo Oblast (Asia/Novokuznetsk), and the Samara Oblast and the
Udmurt Republic (Europe/Samara) are not changing their clocks. The
changed zones are Europe/Kaliningrad, Europe/Moscow,
Europe/Simferopol, Europe/Volgograd, Asia/Yekaterinburg, Asia/Omsk,
Asia/Novosibirsk, Asia/Krasnoyarsk, Asia/Irkutsk, Asia/Yakutsk,
Asia/Vladivostok, Asia/Khandyga, Asia/Sakhalin, and Asia/Ust-Nera;
Asia/Magadan will have two hours subtracted; and Asia/Novokuznetsk's
time zone abbreviation is affected, but not its UTC offset. Two
zones are added: Asia/Chita (split from Asia/Yakutsk, and also with
two hours subtracted) and Asia/Srednekolymsk (split from
Asia/Magadan, but with only one hour subtracted). (Thanks to Tim
Parenti for much of the above.)
Changes affecting past time stamps
China's five zones have been simplified to two, since the post-1970
differences in the other three seem to have been imaginary. The
zones Asia/Harbin, Asia/Chongqing, and Asia/Kashgar have been
removed; backwards-compatibility links still work, albeit with
different behaviors for time stamps before May 1980. Asia/Urumqi's
1980 transition to UTC+8 has been removed, so that it is now at
UTC+6 and not UTC+8. (Thanks to Luther Ma and to Alois Treindl;
Treindl sent helpful translations of two papers by Guo Qingsheng.)
Some zones have been turned into links, when they differed from
existing zones only for older UTC offsets where the data were likely
invented. These changes affect UTC offsets in pre-1970 time stamps
only. This is similar to the change in release 2013e, except this
time for western Africa. The affected zones are: Africa/Bamako,
Africa/Banjul, Africa/Conakry, Africa/Dakar, Africa/Freetown,
Africa/Lome, Africa/Nouakchott, Africa/Ouagadougou, Africa/Sao_Tome,
and Atlantic/St_Helena. This also affects the
backwards-compatibility link Africa/Timbuktu. (Thanks to Alan
Barrett, Stephen Colebourne, Tim Parenti, and David Patte for
reporting problems in earlier versions of this change.)
Asia/Shanghai's pre-standard-time UT offset has been changed from
8:05:57 to 8:05:43, the location of Xujiahui Observatory. Its
transition to standard time has been changed from 1928 to 1901.
Asia/Taipei switched to JWST on 1896-01-01, then to JST on
1937-10-01, then to CST on 1945-09-21 at 01:00, and did not observe
DST in 1945. In 1946 it observed DST from 05-15 through 09-30; in
1947 from 04-15 through 10-31; and in 1979 from 07-01 through 09-30.
(Thanks to Yu-Cheng Chuang.)
Asia/Riyadh's transition to standard time is now 1947-03-14, not
1950.
Europe/Helsinki's 1942 fall-back transition was 10-04 at 01:00, not
10-03 at 00:00. (Thanks to Konstantin Hyppönen.)
Pacific/Pago_Pago has been changed from UTC-11:30 to UTC-11 for the
period from 1911 to 1950.
Pacific/Chatham has been changed to New Zealand standard time plus
45 minutes for the period before 1957, reflecting a 1956 remark in
the New Zealand parliament.
Europe/Budapest has several pre-1946 corrections: in 1918 the
transition out of DST was on 09-16, not 09-29; in 1919 it was on
11-24, not 09-15; in 1945 it was on 11-01, not 11-03; in 1941 the
transition to DST was 04-08 not 04-06 at 02:00; and there was no DST
in 1920.
Africa/Accra is now assumed to have observed DST from 1920 through
1935.
Time in Russia before 1927 or so has been corrected by a few seconds
in the following zones: Europe/Moscow, Asia/Irkutsk, Asia/Tbilisi,
Asia/Tashkent, Asia/Vladivostok, Asia/Yekaterinburg,
Europe/Helsinki, and Europe/Riga. Also, Moscow's location has been
changed to its Kilometer 0 point. (Thanks to Vladimir Karpinsky for
the Moscow changes.)
Bug: 16168653
Change-Id: I23827254bcf50dd07a2192ed34b02224d73e07a0
This reverts commit 3fb5097a7e.
libvpx is now fixed.
(cherry-pick of 2be1be47aa9b63568fe6ce1e0a4029b37d90764d.)
Bug: 15598056
Change-Id: Icca974e667f92206505f484bd291726eb0150f68
Previously this was hard coded to 4. This is only the case for UTF-8
locales.
As a side effect, this properly reports C.UTF-8 as the default locale
instead of C.
Change-Id: I7c73cc8fe6ffac61d211cd5f75287e36de06f4fc
(cherry picked from commit 1aec7c1a35)
A mistake I made while cleaning this up the first time through.
mbstrtowcs(3) sets the src param to null if it finishes the string.
Change-Id: I6263646e25d9537043b7025fd1dd6ae195f365e2
(cherry picked from commit b6cc8e00cd)
We're getting cold feet on this one... let's put it back.
This reverts commit 210331d976.
Change-Id: I6b0d3c2b1dbf7f1dc9566979a91b7504c2189269
(cherry picked from commit 6a918870ba)
We don't want GCC's fixincludes to touch our <stdio.h> because we
want to support multiple platform versions with one toolchain. Give
them a nice easy unambiguous string to look for.
Bug: http://code.google.com/p/android/issues/detail?id=73728
Change-Id: I15cb9a2c9eb0a44b0965dc2139f224f2b6e68ea1
This reverts most of commit 2582f02a01.
The DNS cache flushing code needs to be called when routes change.
Change-Id: I5b04121bc428cc6a2e136b6c3269c395bfb4981f
bug:16549455
Previously this was hard coded to 4. This is only the case for UTF-8
locales.
As a side effect, this properly reports C.UTF-8 as the default locale
instead of C.
Change-Id: I7c73cc8fe6ffac61d211cd5f75287e36de06f4fc
The memchr implementation for 64 bit fails if these conditions occur:
- The buffer is 32 byte aligned.
- The buffer contains the character in the first byte.
- The count sent in is zero.
The function should return NULL, but it's not.
Bug: 16676625
(cherry picked from commit e03e1eac0b)
Change-Id: Ie4cca2c445127a0936ee2b96651a8e7204fbaffd
The memchr implementation for 64 bit fails if these conditions occur:
- The buffer is 32 byte aligned.
- The buffer contains the character in the first byte.
- The count sent in is zero.
The function should return NULL, but it's not.
Bug: 16676625
Change-Id: Iab33cc7a8b79920350c72f054dff0e0a3cde69ce
A mistake I made while cleaning this up the first time through.
mbstrtowcs(3) sets the src param to null if it finishes the string.
Change-Id: I6263646e25d9537043b7025fd1dd6ae195f365e2
Create a method of disabling the debug allocation code paths so that
it's possible to use the libunwindbacktrace library without any
modifications.
Use this path to create and destroy the maps for the process. It's not
stricly necessary in the init code since the symbols are not modified
until after the initialize calls.
Also, remove the debug_XXX source files that doesn't need to be in libc.so.
Fix the maps reading code since it was completely broken for 64 bit.
Bug: 16408686
(cherry picked from commit 861c0ef37b)
Change-Id: I04445f0cf9a1e85172b64d57df92eb7939ce2332
The len parameter is a _maximum_ length. The previous code was treating
it as an exact length, causing the following typical call to fail:
mbsrtowcs(out, &in, sizeof(out), state); // sizeof(out) > strlen(in)
Change-Id: I48e474fd54ea5f122bc168a4d74bfe08704f28cc
(cherry picked from commit 6b55ba54ef)
Also clean up the implementation of all the pty functions, add tests,
and fix the stub implementations of ttyname(3) and ttyname_r(3).
Bug: https://code.google.com/p/android/issues/detail?id=58888
(cherry picked from commit 4916706cfe)
Change-Id: I5cb7a1c17b156456e4c4818e65f256eb8d045424
bionic_systrace.h contains an implementation of tracing that
can be used with systrace.py and its associated viewer. pthread_mutex
now uses this tracing to track pthread_mutex contention, which can be
enabled by using the "bionic" command line option to systrace.
Bug: 15116468
(cherry picked from commit a406ee6d5f)
Change-Id: Ic98fc303689fe9384974150d0d258c50806a55e4
Create a method of disabling the debug allocation code paths so that
it's possible to use the libunwindbacktrace library without any
modifications.
Use this path to create and destroy the maps for the process. It's not
stricly necessary in the init code since the symbols are not modified
until after the initialize calls.
Also, remove the debug_XXX source files that doesn't need to be in libc.so.
Fix the maps reading code since it was completely broken for 64 bit.
Bug: 16408686
Change-Id: I6b02ef6ce26fdb7a59ad1029e7cbba9accceb704
This doesn't require us to change any of the syscall implementations
because (a) the LP32 ones have sizeof(int) == sizeof(long) anyway,
which is how we never noticed this bug before and (b) the LP64 ones
all use a 64-bit register for the result (and for the syscall number
too).
Bug: https://code.google.com/p/android/issues/detail?id=73952
Bug: 16568314
(cherry picked from commit 21972b61ec)
Change-Id: Ifbc424be29e5650ec72a24df25dd35f24fdd5b3c
It seemed like a clever trick to use the internal log message formatting
code in syslog(3), but on reflection that means you can't (for example)
format floating point numbers. This patch switches us over to using good
old vsnprintf(3), even though that requires us to jump through a few hoops.
There's no obvious way to unit test this, so I wrote a little program and
ran that.
Bug: 14292866
Change-Id: I9c83500ba9cbb209b6f496067a91bf69434eeef5
Also clean up the implementation of all the pty functions, add tests,
and fix the stub implementations of ttyname(3) and ttyname_r(3).
Bug: https://code.google.com/p/android/issues/detail?id=58888
Change-Id: I0fb36438cd1abf8d4e87c29415f03db9ba13c3c2
This also brings our copy of strftime.c much closer to upstream, though
we still have several GNU extensions and hacks to deal with Android32's
broken time_t.
Bug: 15765976
(cherry picked from commit 39d903aea9)
Change-Id: Ie278d3e976b7adc77bad5ce795dd4899cfbf3648
bionic_systrace.h contains an implementation of tracing that
can be used with systrace.py and its associated viewer. pthread_mutex
now uses this tracing to track pthread_mutex contention, which can be
enabled by using the "bionic" command line option to systrace.
Bug: 15116468
Change-Id: I30ed5b377c91ca4c36568a0e647ddf95d4e4a61a
I've also added insque(3) and remque(3) (from NetBSD because the OpenBSD
ones are currently broken for non-circular lists).
I've not added the three hash table functions that should be in this header
because they operate on a single global hash table and thus aren't likely
to be useful.
Bug: https://code.google.com/p/android/issues/detail?id=73719
(cherry picked from commit 3e424d0a24)
Change-Id: I5882a6b48c80fea8ac6b9c27e7b9de10b202b4ff
This doesn't require us to change any of the syscall implementations
because (a) the LP32 ones have sizeof(int) == sizeof(long) anyway,
which is how we never noticed this bug before and (b) the LP64 ones
all use a 64-bit register for the result (and for the syscall number
too).
Bug: https://code.google.com/p/android/issues/detail?id=73952
Change-Id: I9866c3579a7a94de27bfbe80ad7a822c3183c7fb
This also brings our copy of strftime.c much closer to upstream, though
we still have several GNU extensions and hacks to deal with Android32's
broken time_t.
Bug: 15765976
Change-Id: Ic9ef36e8acd3619504ecc4d73feec2b61fd4dfa1
It seemed like a clever trick to use the internal log message formatting
code in syslog(3), but on reflection that means you can't (for example)
format floating point numbers. This patch switches us over to using good
old vsnprintf(3), even though that requires us to jump through a few hoops.
There's no obvious way to unit test this, so I wrote a little program and
ran that.
(cherry-pick of b1b60c30bf321c0fc02264b953b5c16c49d34457.)
Bug: 14292866
Change-Id: I9c83500ba9cbb209b6f496067a91bf69434eeef5
Save and restore floating point registers via 64-bit
load/stores when possible. Use assembler's builtin macro
ops to generate pairs of 32-bit load/stores on Mips I cpus.
Some cpus or FR modes have only 16 even-numbered dp fp regs.
This is exposed by _MIPS_FPSET, defined by existing compilers.
(cherry picked from commit dd37251c47)
Change-Id: Ibd43653701a363a77af85121d3cbd229d132a06a
I've also added insque(3) and remque(3) (from NetBSD because the OpenBSD
ones are currently broken for non-circular lists).
I've not added the three hash table functions that should be in this header
because they operate on a single global hash table and thus aren't likely
to be useful.
Bug: https://code.google.com/p/android/issues/detail?id=73719
Change-Id: I97397a7b921e2e860fd9c8032cafd9097380498a
The change that added this support causes a cpu hard lock on one
device. This code clearly isn't at fault, but disabling it to
unblock until we can find a real fix.
Bug: 16484311
Change-Id: I33834dc49d959ae403b10d2c7cad12ae2950f772
Save and restore floating point registers via 64-bit
load/stores when possible. Use assembler's builtin macro
ops to generate pairs of 32-bit load/stores on Mips I cpus.
Some cpus or FR modes have only 16 even-numbered dp fp regs.
This is exposed by _MIPS_FPSET, defined by existing compilers.
Change-Id: I7f617a3ffea8da41c402ef3a68ab32c91d3d7622
Explicitly tell 32-bit links that they are doing 32-bit links.
This is needed when using united 32-bit and 64-bit toolchains.
This is harmless when using older separate 32-only toolchains.
(cherry picked from commit f541650828)
Change-Id: I8df0ee7d36c6409458e18bea4e0e8b132edf77dc
Explicitly tell 32-bit links that they are doing 32-bit links.
This is needed when using united 32-bit and 64-bit toolchains.
This is harmless when using older separate 32-only toolchains.
Change-Id: I70cbd3f5867e59b1f6f829793444242fb0894aa6
The getentropy_linux.c is lightly modified to build on Android, but we're now
completely in sync with upstream OpenBSD's arc4random implementation.
(cherry picked from commit 2b67d7dee0)
Change-Id: Icc939b5fa2fcac3e15ff93735d2d34f67e9bb149
Since we don't have syslogd on Android and you can't run one on a non-rooted
device, it's more useful if syslog output just goes to the regular Android
logging system.
Bug: 14292866
(cherry picked from commit 3ad8ecb64e)
Change-Id: I3038855ca4f22532bf6d2c45d3f8028b866975f9
The getentropy_linux.c is lightly modified to build on Android, but we're now
completely in sync with upstream OpenBSD's arc4random implementation.
Change-Id: If32229fc28aba908035fb38703190d41ddcabc95
Since we don't have syslogd on Android and you can't run one on a non-rooted
device, it's more useful if syslog output just goes to the regular Android
logging system.
Bug: 14292866
Change-Id: Icee7f088b97f88ccbdaf471b98cbac7f19f9210a
Some platform code is apparently compiled with switches that do
not support char16_t and char32_t. This caused stdatomic.h to fail
to compile. This CL makes stdatomic.h usable in those environments.
(cherry picked from commit 8b002362d9)
Change-Id: Ie5a17f20b8b545c97128d00605b4eabd2a6bfe3e
To avoid any issues calling malloc related routines, use mmap/munmap.
Specifically, this avoids any problems when this is compiled into a
malloc debug shared library.
(cherry picked from commit 6425327c32)
Change-Id: If43d12b2c588c9abcbfbbd2c53702cdac7695a73
The len parameter is a _maximum_ length. The previous code was treating
it as an exact length, causing the following typical call to fail:
mbsrtowcs(out, &in, sizeof(out), state); // sizeof(out) > strlen(in)
Change-Id: I48e474fd54ea5f122bc168a4d74bfe08704f28cc
To avoid any issues calling malloc related routines, use mmap/munmap.
Specifically, this avoids any problems when this is compiled into a
malloc debug shared library.
Change-Id: Iae2d197145da43dc103ad6024357d8cc2374378f
Also remove __bionic_name_mem which has exactly one caller, and is only
ever expected to be used in this one place.
(cherry picked from commit d7453860a6)
Change-Id: I26b7638609e9d4eaf4f21ae29721ea27d4176702
Also remove __bionic_name_mem which has exactly one caller, and is only
ever expected to be used in this one place.
Change-Id: I833744f91e887639f5b2d1269f966ee9032af207
Some platform code is apparently compiled with switches that do
not support char16_t and char32_t. This caused stdatomic.h to fail
to compile. This CL makes stdatomic.h usable in those environments.
Change-Id: Ie5a17f20b8b545c97128d00605b4eabd2a6bfe3e
Had intended to remove this one before submitting the locale changes,
but forgot. It isn't a standard ctype function, so we don't need it.
Change-Id: Ie9c09fa6c61b1101b5992fa06da30e373a0c6bf7
There were two bugs here:
- For 64 bit values, this did not properly round up.
- The macro rounded to the power of 2 less than value, not to the power
of 2 greater than value.
(cherry picked from commit 27047faf28)
Change-Id: Idf1ec67854e1eb423704e599ae1c6b674d36618d
There were two bugs here:
- For 64 bit values, this did not properly round up.
- The macro rounded to the power of 2 less than value, not to the power
of 2 greater than value.
Change-Id: If8cb41536a9d2f5c1bc213676f1e67a7903a36b0
Had intended to remove this one before submitting the locale changes,
but forgot. It isn't a standard ctype function, so we don't need it.
Change-Id: Ie9c09fa6c61b1101b5992fa06da30e373a0c6bf7
Code developed for glibc or older versions of bionic might expect more
randomness than the BSD implementation provides.
Bug: 15829381
(cherry picked from commit 76c241b091)
Change-Id: If721b3f16efdb21cb67df5ec5034c0ba905bd029
Code developed for glibc or older versions of bionic might expect more
randomness than the BSD implementation provides.
Bug: 15829381
Change-Id: Ia5a908a816e0a5f0639f514107a6384a51ec157e