OSDN Git Service
Jaap Jan Meijer [Mon, 8 Aug 2016 10:40:41 +0000 (12:40 +0200)]
Merge remote-tracking branch 'cm/cm-13.0' into cm-13.0-x86
Marcin Chojnacki [Sun, 10 Nov 2013 12:59:47 +0000 (13:59 +0100)]
linker: Avoid logcat spam with some blobs
Many of pre-kitkat blobs would emit a "text relocations" warning which
makes logcat completely unreadable.
This commit will hide this warning to prevent it.
Change-Id: I8f32b5bbfea33d732320b3ac29da6b0027fbd521
Reworked-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Tom Marshall [Fri, 17 Jun 2016 23:38:12 +0000 (16:38 -0700)]
bionic: Sort and cache hosts file data for fast lookup
The hosts file is normally searched linearly. This is very slow when
the file is large. To mitigate this, read the hosts file and sort the
entries in an in-memory cache. When an address is requested via
gethostbyname or getaddrinfo, binary search the cache.
In case where the cache is not available, return a suitable error code
and fall back to the existing lookup code.
This has been written to behave as much like the existing lookup code as
possible. But note bionic and glibc differ in behavior for some corner
cases. Choose the most standard compliant behavior for these where
possible. Otherwise choose the behavior that seems most reasonable.
Change-Id: I3b322883cbc48b0d76a0ce9d149b59faaac1dc58
Jaap Jan Meijer [Tue, 26 Jul 2016 17:07:28 +0000 (19:07 +0200)]
Merge remote-tracking branch 'x86/marshmallow-x86' into cm-13.0-x86
Neil Fuller [Mon, 24 Aug 2015 16:52:56 +0000 (17:52 +0100)]
Move tzdata scripts from bionic to external/icu
The scripts affect files in external/icu, bionic
and the generated files affect libcore. The files must
be updated together so there is no "obvious" home.
OEM developers seem to want to update ICU
themselves and have been asking how. Moving the
scripts to external/icu and splitting the ICU generation
code into a sub-script they can run makes some sense.
Bug:
23419215
Change-Id: Ia26fa526fd2b560a79f36d327a10e262a85db752
Steve Kondik [Fri, 1 Jul 2016 15:45:04 +0000 (08:45 -0700)]
libc: Fix invalid offset warning with Clang
Change-Id: I71274a6f592356a259ccdbe9c09383bc75e2d26b
Junichi Uekawa [Wed, 18 Nov 2015 01:18:59 +0000 (10:18 +0900)]
Do not depend on host bits to get the right size to write.
x86_64 32-bit or 64-bit relocations do not depend on ELF bit size, they
are 32-bit or 64-bit respectively.
Known compiler that emits such code is nacl-clang which emits
R_X86_64_PC32 which should write 32 bits but ended up writing 64 bits.
Change-Id: Ibb6b484c0fea6a7e291362148e8ac749d6674529
Kyle Repinski [Tue, 28 Apr 2015 18:39:41 +0000 (13:39 -0500)]
cortex-a9: Fix reference to __memcpy_base_aligned.
With a different memcpy, __memcpy_base_aligned ceased to exist.
Instead, point to the name defined by whatever includes memcpy_base.S
Change-Id: I242cf49cbada35337ba155d7f170e86a905ff55f
Elliott Hughes [Thu, 29 Oct 2015 00:14:48 +0000 (17:14 -0700)]
Add prlimit to LP32.
Bug: http://b/
24918750
Change-Id: I0151cd66ccf79a6169610de35bb9c288c0fa4917
Chih-Wei Huang [Sat, 10 Oct 2015 14:25:49 +0000 (22:25 +0800)]
add syscalls ioperm and iopl
Chih-Wei Huang [Tue, 30 Jun 2009 09:43:31 +0000 (17:43 +0800)]
change PROP_NAME_MAX to 128
Steve Kondik [Sun, 1 May 2016 02:50:10 +0000 (19:50 -0700)]
bionic: Use a more simple strrchr for arm64
* Current version seems like overkill, and it doesn't compile with
Clang. Use a simplified version from ARM.
Change-Id: I2fe5467b6a504ea04b5f28a08d92e7c2306772d0
Jessica Wagantall [Mon, 18 Apr 2016 18:10:56 +0000 (11:10 -0700)]
Merge tag 'android-6.0.1_r30' into HEAD
Ticket: RM-234
Android 6.0.1 release 30
Change-Id: I67a692b84fdc2e0ecbe83870ea3520a746130742
Tom Marshall [Fri, 1 Apr 2016 21:57:21 +0000 (14:57 -0700)]
bionic: Teach fnmatch(3) to handle UTF-8 characters in patterns
This is NOT comprehensive UTF-8 support. It is just a quick hack to
make alternation work in bracket expressions so that the system file
manager can find files with non-ASCII names in root mode. Bracket
expressions that contain non-ASCII ranges are explicitly avoided to
avoid the complexities of unicode collation rules.
Things like the following will now work:
fnmatch("те[с][т].jpg", "тест.jpg", 0);
fnmatch("test[αβγ].txt", "testβ.txt", 0);
Things like the following will still fail:
fnmatch("тес[а-я].txt", "тест.txt", 0);
Jira: CYNGNOS-2336
Change-Id: If38dc6692bc22d20128b0cd8a7632754a496d7fb
Steve Kondik [Fri, 11 Mar 2016 02:13:14 +0000 (18:13 -0800)]
Merge tag 'android-6.0.1_r22' of https://android.googlesource.com/platform/bionic into cm-13.0
Android 6.0.1 release 22
Christopher R. Palmer [Sun, 7 Feb 2016 11:46:05 +0000 (06:46 -0500)]
linker: Allow text-relocs for x86 (only)
This effectively reverts
https://android.googlesource.com/platform/bionic/+/
e4ad91f86a47b39612e030a162f4793cb3421d31%5E%21/#F0
for x86 platforms. Unfortunately, this seems like it is required
if we are going to support ffmpeg. The ffmpeg team decreed that they
require text relocations for x86 (only) and that they would not
fix the fact that android 6.0 makes ffmpeg unusable on x86:
https://trac.ffmpeg.org/ticket/4928
Change-Id: I68397f4d62f4f6acd8e0d41b7ecdc115969b890a
Erik Kline [Fri, 4 Mar 2016 08:16:55 +0000 (17:16 +0900)]
Don't leak sockets if setsockopt() or fchown() fail.
Change-Id: Idcf8c08ff50d21c3a04b7ef80c4044f3f9762f2b
Josh Gao [Wed, 4 Nov 2015 02:46:02 +0000 (18:46 -0800)]
Fix GNU/POSIX basename headers.
Including glibc's <libgen.h> will result in the user getting the POSIX
version of basename always, regardless of when it is included relative
to <string.h>. Prior to this patch, our implementation would result in
the one that's included first winning.
Bug: http://b/
25459151
Change-Id: Id4aaf1670dad317d6bbc05763a84ee87596e8e59
Elliott Hughes [Thu, 29 Oct 2015 00:14:48 +0000 (17:14 -0700)]
Add prlimit to LP32.
Bug: http://b/
24918750
Change-Id: I0151cd66ccf79a6169610de35bb9c288c0fa4917
Neil Fuller [Wed, 24 Feb 2016 15:09:28 +0000 (15:09 +0000)]
Update timezone data to 2016a
Changes affecting future time stamps
America/Cayman will not observe daylight saving this year after all.
Revert our guess that it would. (Thanks to Matt Johnson.)
Asia/Chita switches from +0800 to +0900 on 2016-03-27 at 02:00.
(Thanks to Alexander Krivenyshev.)
Asia/Tehran now has DST predictions for the year 2038 and later,
to be March 21 00:00 to September 21 00:00. This is likely better
than predicting no DST, albeit off by a day every now and then.
Changes affecting past and future time stamps
America/Metlakatla switched from PST all year to AKST/AKDT on
2015-11-01 at 02:00. (Thanks to Steffen Thorsen.)
America/Santa_Isabel has been removed, and replaced with a
backward compatibility link to America/Tijuana. Its contents were
apparently based on a misreading of Mexican legislation.
Changes affecting past time stamps
Asia/Karachi's two transition times in 2002 were off by a minute.
(Thanks to Matt Johnson.)
Bug:
26833368
Change-Id: I5af1d69f8ca767369f1cbc4aa863280b960777e0
Christopher R. Palmer [Sun, 14 Feb 2016 16:38:44 +0000 (11:38 -0500)]
bionic: linker: Load shim libs *before* the self-linked libs
By loading them earlier, this allows us to override a symbol in
a library that is being directly linked.
I believe this explains why some people have had problems shimming
one lib but when the changet he shim to be against a different
lib it magically works.
It also makes it possible to override some symbols that were
nearly impossible to override before this change. For example, it is
pretty much impossible to override a symbol in libutils without
this change because it's loaded almost everywhere so no matter
where you try to place the shimming, it will be too late and
the other symbol will have priority.
In particularly, this is necessary to be able to correctly
shim the VectorImpl symbols for dlx.
Change-Id: I461ca416bc288e28035352da00fde5f34f8d9ffa
Scott Mertz [Mon, 21 Dec 2015 23:08:33 +0000 (15:08 -0800)]
libc: ARM64: kryo: use generic memmove routine
The optimized memmove on commit
95cc2b990baffb4f1149c16647d4e2e2069054e5
causes odd runtime crashes on kryo. For example, surfaceflinger crashes in
prebuilt adreno libraries when trying to generate the shader cache:
x0
0000007f827256c0 x1
000000000000000b x2
0000007fcd7dfa30 x3
0000000000000000
x4
0000000000000000 x5
0000000000000003 x6
00000000000000ff x7
0000000000000003
x8
0000007f825efa18 x9
0000007f825efa18 x10
0000000000000100 x11
0000000000001000
x16
000000000000006f x17
0000000000000003 x18
0000000000000001 x19
0000007f825f1040
x20
0000007fcd7dfa30 x21
0000007fcd7df990 x22
0000007f88424c10 x23
0000000000000000
x24
0000007fcd7df970 x25
0000007fcd7dfa50 x26
0000000000000004 x27
0000000000000010
x28
0000007fcd7dfa30 x29
0000007fcd7df780 x30
0000007f86ef92b4
sp
0000007fcd7df780 pc
0000007f86ee8d78 pstate
0000000020000000
trace:
pc
00000000009ffd78 /system/vendor/lib64/libllvm-glnext.so
pc
0000000000a102b0 /system/vendor/lib64/libllvm-glnext.so (llvm::BitcodeReader::ParseFunctionBody(llvm::Function*)+904)
pc
0000000000a14020 /system/vendor/lib64/libllvm-glnext.so (llvm::BitcodeReader::Materialize(llvm::GlobalValue*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)+340)
pc
0000000000a0fe14 /system/vendor/lib64/libllvm-glnext.so (llvm::BitcodeReader::MaterializeModule(llvm::Module*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)+96)
pc
00000000003b503c /system/vendor/lib64/libllvm-glnext.so (llvm::Module::MaterializeAll(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)+36)
pc
00000000003b5068 /system/vendor/lib64/libllvm-glnext.so (llvm::Module::MaterializeAllPermanently(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)+16)
pc
0000000000a0faa0 /system/vendor/lib64/libllvm-glnext.so (llvm::ParseBitcodeFile(llvm::StringRef, llvm::LLVMContext&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)+32)
pc
0000000000cf3db4 /system/vendor/lib64/libllvm-glnext.so (ShaderObjects::constructLLVMModule(void*, CompilerContext*, llvm::OwningPtr<llvm::Module>*, E_QGLC_SHADERTYPE)+520)
pc
0000000000c76c4c /system/vendor/lib64/libllvm-glnext.so (ESXLinker::bcConstruct()+440)
pc
0000000000c843cc /system/vendor/lib64/libllvm-glnext.so (SOLinker::linkShaders(QGLC_LINKPROGRAM_DATA*, QGLC_LINKPROGRAM_RESULT*)+92)
pc
0000000000c74cbc /system/vendor/lib64/libllvm-glnext.so (CompilerContext::LinkProgram(unsigned int, QGLC_SRCSHADER_IRSHADER**, QGLC_LINKPROGRAM_DATA*, QGLC_LINKPROGRAM_RESULT*)+496)
pc
0000000000d057a0 /system/vendor/lib64/libllvm-glnext.so (QGLCLinkProgram(void*, unsigned int, QGLC_SRCSHADER_IRSHADER**, QGLC_LINKPROGRAM_DATA*, QGLC_LINKPROGRAM_RESULT*)+76)
pc
00000000001a49c4 /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxShaderCompiler::CompileProgram(EsxContext*, EsxProgram const*, EsxLinkedList const*, EsxInfoLog*)+1380)
pc
000000000018d5b8 /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxProgram::Link(EsxContext*)+408)
pc
000000000012e6bc /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxContext::LinkProgram(EsxProgram*)+60)
pc
000000000010be44 /system/vendor/lib64/egl/libGLESv2_adreno.so (glLinkProgram+36)
pc
0000007f88bddad0 <unknown>
pc
0000007f88bddf60 <unknown>
pc
0000007f88be18b8 <unknown>
pc
0000007f88bdfbb0 <unknown>
pc
0000007f88bca594 <unknown>
pc
0000007f88bcb350 <unknown>
pc
0000007f88bc9fec <unknown>
pc
0000007f88bc8f28 <unknown>
pc
0000007f88bc8c90 <unknown>
pc
0000007f88af8ed4 <unknown> (android::Looper::pollInner(int)+312)
pc
0000007f88af920c <unknown> (android::Looper::pollOnce(int, int*, int*, void**)+80)
pc
0000007f88bc5034 <unknown>
pc
0000007f88bc8784 <unknown> (android::SurfaceFlinger::run()+20)
pc
0000007f88c8c190 <unknown>
pc
000000000001bcd8 /system/lib64/libc.so (__libc_init+100)
pc
0000007f88c8bfcc <unknown>
Change-Id: I9621f98b6683a3662b654f84c31ed0247ee81900
Christopher R. Palmer [Sat, 12 Dec 2015 11:10:09 +0000 (06:10 -0500)]
bionic: Do not allow LD_SHIM_LIBS for setuid executables
That's really not safe...
Change-Id: If79af951830966fc21812cd0f60a8998a752a941
Danny Baumann [Fri, 11 Dec 2015 09:29:16 +0000 (10:29 +0100)]
Make shim lib load failure non-fatal.
Instead, print an appropriate warning message. Aborting symbol
resolution on shim lib load failure leads to weird symbol lookup
failures, because symbols in libraries referenced after the one loading
the shim won't be loaded anymore without a log message stating why that
happened.
Change-Id: Ic3ad7095ddae7ea1039cb6a18603d5cde8a16143
André Pinela [Thu, 10 Dec 2015 16:27:58 +0000 (16:27 +0000)]
libc: ARM64: denver64: optimized memmove breaks denver
The optimized memmove on commit
95cc2b990baffb4f1149c16647d4e2e2069054e5
breaks the boot on denver64/flounder, so we should use the old
memmove to keep the generic memmove optimized.
Change-Id: Ie5e4b5b56d0aeb4b4c22eb6450ac702c05b2ece2
Signed-off-by: André Pinela <sheffzor@gmail.com>
Subash Abhinov Kasiviswanathan [Wed, 11 Nov 2015 18:16:19 +0000 (11:16 -0700)]
bionic: Notify userspace about packets with CHECKSUM_UNNECESSARY
tpacket already notifies userspace about packets filtered with
ip_summed field set to CHECKSUM_PARTIAL.
Add a new flag for tpacket framework to pass to userspace for
packets with ip_summed field CHECKSUM_UNNECESSARY.
Change-Id: Icf308143a76269ff38c3238f1ca235b97e57dde9
Steve Kondik [Tue, 8 Dec 2015 00:20:48 +0000 (16:20 -0800)]
Merge tag 'android-6.0.1_r3' of https://android.googlesource.com/platform/bionic into cm-13.0
Android 6.0.1 release 3
Christopher R. Palmer [Tue, 1 Dec 2015 11:50:22 +0000 (06:50 -0500)]
Revert "Revert "linker: Reset the active shim libs each time we do a dlopen""
This reverts commit
fd0140b028dedabc572f4659cc015edfeee3cd60.
Change-Id: I42b3acfcdc6b84251a396b9e42604bb5685196bd
Christopher R. Palmer [Tue, 1 Dec 2015 12:10:36 +0000 (07:10 -0500)]
linker: Don't try to walk the g_active_shim_libs when doing dlsym
This is a bug in the original shim_lib implementation which was
doing the shim lib resolution both when loading the libraries
and when doing the dynamic symbol resolution.
Change-Id: Ib2df0498cf551b3bbd37d7c351410b9908eb1795
Mao Jinlong [Tue, 3 Nov 2015 08:56:57 +0000 (16:56 +0800)]
kernel-header : add alarm type and clock type for power off alarm
Use dedicated alarm type and clock type for poweroff alarm.
Change-Id: I937730994c6690b21868745e192d8c12ab818776
Ethan Chen [Tue, 1 Dec 2015 07:18:25 +0000 (23:18 -0800)]
Revert "linker: Reset the active shim libs each time we do a dlopen"
This reverts commit
ad21814c21f40f0e0a4f62e03619e274de9f6983.
Change-Id: I205bcbaae6c1494601f9245fe360a088d5b745e9
Christopher R. Palmer [Sun, 29 Nov 2015 13:28:10 +0000 (08:28 -0500)]
linker: Reset the active shim libs each time we do a dlopen
We use the active libs to avoid recursively trying to load the
same library:
A -> shimlibs add B -> depends on A -> shimlibs add B -> ...
However, when we repeatedly dlopen the same library we need
to reset the active shim libs to avoid failing to add B the
second time we dlopen A.
Change-Id: I27580e3d6a53858e8bca025d6c85f981cffbea06
Steve Kondik [Tue, 24 Nov 2015 22:11:53 +0000 (14:11 -0800)]
libc: Add memchr to a53+a57 target
Change-Id: I3991c06dd4813c7cc73d50b56fd7974116d79892
Wilco Dijkstra [Fri, 6 Nov 2015 14:09:00 +0000 (14:09 +0000)]
libc: AArch64: Tune memcpy
* Further tuning for performance.
Change-Id: Id08eaab885f9743fa7575077924a947c1b88e4ff
HashBang [Sun, 8 Nov 2015 17:37:59 +0000 (12:37 -0500)]
libc: include strrchr for kryo and denver64
Change-Id: Iee9a0bf55279f80475db67a70ad5b4b205450298
Christopher R. Palmer [Sun, 15 Nov 2015 19:26:32 +0000 (14:26 -0500)]
linker: Fix the fact that shim libs do not properly call constructors
Change-Id: I34333e13443a154e675b853fa41442351bc4243a
Daniel Xie [Wed, 11 Nov 2015 19:00:17 +0000 (19:00 +0000)]
Merge "Fix potential race condition on CTS TC pthread_gettid_np" into marshmallow-cts-dev am:
2010fb6722
am:
eebe01b523
* commit '
eebe01b523075c0634b04463c210510f192f154d':
Fix potential race condition on CTS TC pthread_gettid_np
Daniel Xie [Wed, 11 Nov 2015 18:57:14 +0000 (18:57 +0000)]
Merge "Fix potential race condition on CTS TC pthread_gettid_np" into marshmallow-cts-dev
am:
2010fb6722
* commit '
2010fb6722ea2bd9d07c9f0a3e69eafa3d6114e9':
Fix potential race condition on CTS TC pthread_gettid_np
Daniel Xie [Wed, 11 Nov 2015 18:53:16 +0000 (18:53 +0000)]
Merge "Fix potential race condition on CTS TC pthread_gettid_np" into marshmallow-cts-dev
Junjie Hu [Wed, 11 Nov 2015 04:52:25 +0000 (12:52 +0800)]
Fix potential race condition on CTS TC pthread_gettid_np
Root cause:
If start_routine thread exits before pthread_gettid_np is invokded, the "tid" field
will be cleared so that pthread_gettid_np will get "0" (which is cleared by kernel,
due to the flag "CLONE_CHILD_CLEARTID" is set while calling clone system call inside
pthread_create).
Proposed patch:
Use a mutex to guarantee pthread_gettid_np will be invoked and returned before the
start_routine exits
Signed-off-by: Junjie Hu <junjie.hu@mediatek.com>
Change-Id: I22411f1b0f7446d76a0373cef4ccec858fac7018
Elliott Hughes [Thu, 27 Aug 2015 21:48:32 +0000 (14:48 -0700)]
Fix regoff_t for LP32 and _FILE_OFFSET_BITS=64.
bionic is built without _FILE_OFFSET_BITS=64, so internally regoff_t
was 32-bit on LP32, but code compiled with _FILE_OFFSET_BITS would
expect rm_so and rm_eo in struct regmatch_t to be 64-bit, leading to
confusion.
Bug: http://b/
23566443
Change-Id: Iae92fa545104068e4f64ce1977f5ec616859638c
Richard Earnshaw [Mon, 8 Dec 2014 15:21:00 +0000 (15:21 +0000)]
libc: ARM64: add assembly strrchr
Change-Id: I59a0aa618bf8139dc0368af9ddf881eba5d3eadf
Wilco Dijkstra [Tue, 20 Jan 2015 10:11:00 +0000 (10:11 +0000)]
libc: ARM64: improve performance in strlen
Change-Id: Ic20f93a0052a49bd76cd6795f51e8606ccfbf11c
Wilco Dijkstra [Thu, 30 Jul 2015 11:51:00 +0000 (12:51 +0100)]
libc: ARM64: optimize memset.
This is an optimized memset for AArch64. Memset is split into 4 main
cases: small sets of up to 16 bytes, medium of 16..96 bytes which are
fully unrolled. Large memsets of more than 96 bytes align the
destination and use an unrolled loop processing 64 bytes per
iteration. Memsets of zero of more than 256 use the dc zva
instruction, and there are faster versions for the common ZVA sizes 64
or 128. STP of Q registers is used to reduce codesize without loss of
performance.
Change-Id: I0c5b5ec5ab8a1fd0f23eee8fbacada0be08e841f
Wilco Dijkstra [Mon, 13 Jul 2015 12:09:00 +0000 (13:09 +0100)]
libc: ARM64: Optimize memcpy.
This is an optimized memcpy for AArch64. Copies are split into 3 main
cases: small copies of up to 16 bytes, medium copies of 17..96 bytes
which are fully unrolled. Large copies of more than 96 bytes align
the destination and use an unrolled loop processing 64 bytes per
iteration. In order to share code with memmove, small and medium
copies read all data before writing, allowing any kind of overlap. On
a random copy test memcpy is 40.8% faster on A57 and 28.4% on A53.
Change-Id: Ibb9483e45bbc0e8ca3d5ce98a31c55dfd8a5ac28
Wilco Dijkstra [Mon, 13 Jul 2015 12:03:00 +0000 (13:03 +0100)]
libc: ARM64: optimize memmove
This is an optimized memmove for AArch64. All copies of up to 96
bytes and all backward copies are done by the new memcpy. The only
remaining case is large forward copies which are done in the same way
as the memcpy loop, but copying from the end rather than the start.
Change-Id: I635bd2798a755256f748b2af19b1a56fb85a40c6
Jake Weinstein [Fri, 18 Sep 2015 15:02:39 +0000 (15:02 +0000)]
libc: ARM64: remove bcopy from memset
* Deprecated by
ce9ce28e5d760e32ab6c894dfaf7b8dad6de7ff6
* Already removed from Denver memset
Change-Id: I7beda29a799c7fa11f5a239d78626f4da1b581a2
Jake Weinstein [Sun, 16 Aug 2015 00:44:40 +0000 (00:44 +0000)]
libc: remove bcopy from memmove on 64-bit architectures
* bcopy is deprecated on LP64 by the following commit:
https://android.googlesource.com/platform/bionic/+/
ce9ce28e5d760e32ab6c894dfaf7b8dad6de7ff6
Change-Id: I6849916f0ec4a2d0db9a360999ad1dc8edda952b
Christopher Ferris [Fri, 23 Oct 2015 22:42:27 +0000 (15:42 -0700)]
Fix arm64 fenv warnings, and make warnings errors.
Even though the control registers being read/written in fenv.c only
have 32 bits that are used, the instructions take a 64 bit register.
Make sure the inline assembler in the macros use 64 bit values.
Verified that before the change and after the change, the disassembly
is exactly the same.
In addition, add -Werror to the cflags.
Change-Id: I6603779327488c23e3aab13300edf2e02b101916
Elliott Hughes [Sat, 29 Aug 2015 03:21:43 +0000 (20:21 -0700)]
Sync with upstream FreeBSD libm.
Change-Id: I97e9b23903f1d993d84825806065e85626007d31
Elliott Hughes [Mon, 24 Aug 2015 22:57:08 +0000 (22:57 +0000)]
Revert "Revert "Use compiler builtins for fabs.""
Don't enable the inlines when building libm itself. Otherwise clang gets
upset by seeing both an inline and a non-inline definition.
This reverts commit
c5deb0f883cbdca7e5ab75f92f82c31d21367f49.
Change-Id: If7abdb351f5a5549d6a331b33af408e8fcfa9868
Elliott Hughes [Fri, 14 Aug 2015 21:04:30 +0000 (14:04 -0700)]
Use __builtin_* in <math.h>.
Also remove cruft meant to support long-obsolete compilers. More
benchmarks.
Bug: http://b/
23195789
Change-Id: Ief538e41e77a77e8013b2f4f359584e8df2c47d8
Christopher R. Palmer [Tue, 3 Nov 2015 21:44:44 +0000 (16:44 -0500)]
linker: Add support for dynamic "shim" libs
Add a new environment variable
LD_SHIM_LIBS
that is a colon (":") separated list of vertical bar ("|") separated pairs.
The pairs are the name for a soinfo reference (executable or shared library)
followed by the name of the shim library to load. For example:
LD_SHIM_LIBS=rmt_storage|libshim_ioprio.so:/system/lib/libicuuv.so|libshim_icu53.so
will instruct the linker to load the dynamic library libshim_ioprio.so
whenver rmt_storage is executed [*] and will load libshim_icu53.so whenever
any executable or other shared library links against /system/lib/libicuuv.so.
There are no restrictions against circular references. In this example,
libshim_icu53.so can link against libicuuv.so which provides a simple and
convenient means of adding compatibility symbols.
[*] Note that the absolute path is not available to the linker and therefore
using the name of executables does depend on the invocation and therefore
should only be used if absolutely necessary. That is, running
/system/bin/rmt_storage would not load any shim libs in this example because
it does not match the name of the invocation of the command.
If you have trouble determining the sonames being loaded, you can also set
the environment variable LD_DEBUG=1 which will cause additional information
to be logged to help trace the detection of the shim libs.
Change-Id: I0ef80fa466167f7bcb7dac90842bef1c3cf879b6
Michael Bestas [Sun, 1 Nov 2015 20:58:45 +0000 (13:58 -0700)]
libc: arm: Add optimised memchr to scorpion
Change-Id: I49513fea4fad28ce053c75fc043117aa1ada794d
Ricardo Cerqueira [Thu, 5 Nov 2015 00:40:50 +0000 (00:40 +0000)]
Merge tag 'android-6.0.0_r26' into cm-13.0
Android 6.0.0 release 26
Change-Id: Ic73500c2330af39a735307c153fbe3e71b7f2040
Tom Marshall [Tue, 3 Nov 2015 19:12:23 +0000 (11:12 -0800)]
bionic: Let popen fall back to /sbin/sh
minivold in recovery uses popen, where /system/bin/sh is not available.
Change-Id: I2136b0ca4188b7b44416f5d79492fc006382d4ad
Yingshiuan Pan [Thu, 23 Apr 2015 03:07:59 +0000 (04:07 +0100)]
libc: arm: add optimized memchr implementation
This optimization is extracted from cortex-strings and bionic-ized,
and applied to arm-v7a cpus (a7, a9, a15, a53, denver, krait).
I ran stringbench[1] on ARM Juno, this optimization could outperform
origin C implementation by 77%.
[1] https://android.git.linaro.org/gitweb/platform/external/stringbench.git
Change-Id: I1c3fb0c89ce2b3ee7e44f492367b6caf6db58ccf
Signed-off-by: Yingshiuan Pan <yingshiuan.pan@linaro.org>
Steve Kondik [Sat, 10 Aug 2013 04:56:10 +0000 (21:56 -0700)]
libc: Add Scorpion-optimized variant
* Based on cortex-a8 variant with the following changes:
Use krait memset/strcmp/memmove
* Enable with TARGET_CPU_VARIANT := scorpion
Change-Id: I01d0f22efba5a418ddd20fca0d0c570d855e0f6f
Christopher Ferris [Thu, 24 Sep 2015 05:09:09 +0000 (22:09 -0700)]
Fix over read in strcpy/stpcpy/strcat.
This bug will happen when these circumstances are met:
- Destination address & 0x7 == 1, strlen of src is 11, 12, 13.
- Destination address & 0x7 == 2, strlen of src is 10, 11, 12.
- Destination address & 0x7 == 3, strlen of src is 9, 10, 11.
- Destination address & 0x7 == 4, strlen of src is 8, 9, 10.
In these cases, the dest alignment code does a ldr which reads 4 bytes,
and it will read past the end of the source. In most cases, this is
probably benign, but if this crosses into a new page it could cause a
crash.
Fix the labels in the cortex-a9 strcat.
Modify the overread test to vary the dst alignment to expost this bug.
Also, shrink the strcat/strlcat overread cases since the dst alignment
variation increases the runtime too much.
Bug:
24345899
Change-Id: Ib34a559bfcebd89861985b29cae6c1e47b5b5855
Christopher Ferris [Thu, 23 Jul 2015 19:12:55 +0000 (12:12 -0700)]
Make all labels local.
Change the non-local labels to .L labels.
Change-Id: I720e894f2e311af8f4a0970303d8b86575fb69a5
Jake Weinstein [Thu, 13 Aug 2015 23:00:49 +0000 (23:00 +0000)]
libm: ARM: reorganize a bit to match ARM64
* Cleaner naming, especially if there are more ARM-specific routines in
the future.
Change-Id: Id29db728800ccd612a906e86ccb95c1e7620514d
Christopher Ferris [Fri, 24 Jul 2015 03:27:42 +0000 (20:27 -0700)]
Add optimized cortex-a7/cortex-a53 memset/memcpy.
Add an optimized memset that is ~20% faster for cortex-a7 and
cortex-a53.
Add a 32 bit optimized cortex-a53 memcpy that is about ~20% faster
on cached data.
Fix the cortex-a15 __str{cat,cpy}_chk.S, memcpy_base.S to remove
the phony functions, since they aren't needed any more. Then add
a direct include of these for cortex-a53.
Verified the new functions by stepping through all of the major
paths and verifying the backtrace is still correct.
Bug:
22696180
Change-Id: Iec92a3f82d51243cca76c9aff9f35d920ff865ae
Brent DeGraaf [Wed, 2 Oct 2013 13:47:11 +0000 (13:47 +0000)]
[AOSP Master] libc: krait: Use performance version of memcpy
* This commit improves performance for small copies compared to the original
CAF one. It also cleans up some functions.
Change-Id: Iaa52635240da8b8746693186b66b69778e833c32
Christopher Ferris [Mon, 27 Jul 2015 20:51:31 +0000 (13:51 -0700)]
Remove pushes from memsets (krait/cortex-a9).
On the path that only uses r0 in both the krait and cortex-a9
memset, remove the push and use r3 instead.
In addition, for cortex-a9, remove the artificial function since
it's not needed since dwarf unwinding is now supported on arm.
Change-Id: Ia4ed1cc435b03627a7193215e76c8ea3335f949a
Christopher Ferris [Mon, 6 Jul 2015 19:03:40 +0000 (12:03 -0700)]
Replace bx lr with update of pc from the stack.
When there is arm assembler of this format:
ldmxx sp!, {..., lr} or pop {..., lr}
bx lr
It can be replaced with:
ldmxx sp!, {..., pc} or pop {..., pc}
Change-Id: Ic27048c52f90ac4360ad525daf0361a830dc22a3
Christopher Ferris [Thu, 17 Sep 2015 21:11:05 +0000 (14:11 -0700)]
Add cortex-a53.a57 target for 32 bit big/little.
The routines optimized for cortex-a7 and cortex-a53 cause performance
drops on cortex-a57. Instead create a target that is the middle ground
that works relatively well on either core.
Change-Id: Ie2b6cc9a59a01c7b30602ee368b2b90f5e886289
Christopher R. Palmer [Thu, 10 Sep 2015 01:49:32 +0000 (21:49 -0400)]
bionic: Allow devices to add device specfic static libs
This provides a convenient (albeit powerful enough to be dangerous)
hook to add symbols needed to support vendor blobs that do not
necessarily match our source code.
Doing so via this hook has several advantages over patching the
code in question:
* The hacks do no pollute other repositories
* The hacks do not have any risk of breaking any other devices
* The hacks don't just live forever when we forget they exist
* The hacks are all easy to find by locating them together
When using this, please take extra care to include only the
minimal code to support the change. Keep in mind that all
code (and all libraries your code links against) will be
part of the address space of every single process in
the system!
Change-Id: I6dcd9ad7cee330febe1a974619144d378b67b364
(cherry picked from commit
12eb9c556ad50585bf0067974c4db41ce2fe0784)
Andreas Gampe [Fri, 23 Oct 2015 05:15:26 +0000 (22:15 -0700)]
resolve merge conflicts of
216bff9ff3 to mnc-dr-dev.
Change-Id: I63c4f3a4e56f30d6f476ad2c623c23ee7e1a3778
Christopher Ferris [Thu, 22 Oct 2015 22:27:54 +0000 (22:27 +0000)]
resolve merge conflicts of
d676080a37 to lmp-mr1-ub-dev.
am:
afff4442ae
* commit '
afff4442ae092469f298a71862d61c65ceb67b03':
Sync with upstream NetBSD lib/libc/regex.
Christopher Ferris [Wed, 21 Oct 2015 21:56:52 +0000 (14:56 -0700)]
resolve merge conflicts of
d676080a37 to lmp-mr1-ub-dev.
Change-Id: I56c1bb2adb4b6a48733c928415e788e689b4944e
Elliott Hughes [Wed, 21 Oct 2015 21:45:01 +0000 (21:45 +0000)]
Sync with upstream NetBSD lib/libc/regex.
am:
055a66c9b1
* commit '
055a66c9b1017c01b82c12b65a571bf9efad8b19':
Sync with upstream NetBSD lib/libc/regex.
Flemmard [Wed, 12 Nov 2014 23:12:22 +0000 (00:12 +0100)]
bionic: Add flag to restore legacy mmap behavior
* Pre-lollipop mmap would not care whether offset was signed
or unsigned.
* Lollipop adds 64-bit support which results in sign extension
of offset, causing a negative offset when
a positive offset > 2^31 is given.
Change-Id: I5d19d898fc131cf848217974915d1b466a474f99
Elliott Hughes [Tue, 15 Sep 2015 01:45:52 +0000 (18:45 -0700)]
Sync with upstream NetBSD lib/libc/regex.
Bug: http://b/
22850181
Change-Id: I11a51a2031e68a953ccd5691da98c699c7d01904
(cherry-picked from commit
71927a82379f7a72559ea96e6678d6215090937f)
Elliott Hughes [Mon, 19 Oct 2015 17:32:59 +0000 (17:32 +0000)]
am
1a61896b: am
98384649: am
75316283: am
2d23418e: am
18442e02: (-s ours) am
beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '
1a61896b1bc470f9377eeeafec461aba0d0dda6c':
Sync with upstream NetBSD lib/libc/regex.
Elliott Hughes [Mon, 19 Oct 2015 17:29:49 +0000 (17:29 +0000)]
am
98384649: am
75316283: am
2d23418e: am
18442e02: (-s ours) am
beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '
98384649b2d3f3eb5b03077bc0004e14a99a4d55':
Sync with upstream NetBSD lib/libc/regex.
Elliott Hughes [Mon, 19 Oct 2015 17:25:29 +0000 (17:25 +0000)]
am
75316283: am
2d23418e: am
18442e02: (-s ours) am
beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '
753162836a0d3a82739611c9e30aa872363558b1':
Sync with upstream NetBSD lib/libc/regex.
Elliott Hughes [Mon, 19 Oct 2015 17:14:41 +0000 (10:14 -0700)]
am
2d23418e: am
18442e02: (-s ours) am
beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '
2d23418e68acdab7e142cc75db2850a54aa829aa':
Sync with upstream NetBSD lib/libc/regex.
Elliott Hughes [Mon, 19 Oct 2015 17:07:34 +0000 (10:07 -0700)]
am
18442e02: (-s ours) am
beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '
18442e023536c5cf205b820ed5d74b972b710acb':
Sync with upstream NetBSD lib/libc/regex.
Elliott Hughes [Mon, 19 Oct 2015 15:34:19 +0000 (15:34 +0000)]
am
beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '
beb6e08abf1393663151afde2742bb23eccab4e1':
Sync with upstream NetBSD lib/libc/regex.
Elliott Hughes [Tue, 15 Sep 2015 01:45:52 +0000 (18:45 -0700)]
Sync with upstream NetBSD lib/libc/regex.
Bug: http://b/
22850181
(cherry-picked from commit
71927a82379f7a72559ea96e6678d6215090937f)
Change-Id: I11a51a2031e68a953ccd5691da98c699c7d01904
Neil Fuller [Thu, 15 Oct 2015 08:25:58 +0000 (08:25 +0000)]
Merge "Update timezone data to 2015g" into mnc-dr-dev
Dimitry Ivanov [Thu, 15 Oct 2015 01:17:55 +0000 (01:17 +0000)]
Merge "Ensure that readlink has access to /proc/self/fd" into mnc-dr-dev
Christopher Ferris [Thu, 15 Oct 2015 01:15:22 +0000 (01:15 +0000)]
Merge "Sync with upstream NetBSD lib/libc/regex." into mnc-dr-dev
Elliott Hughes [Tue, 15 Sep 2015 01:45:52 +0000 (18:45 -0700)]
Sync with upstream NetBSD lib/libc/regex.
Bug: http://b/
22850181
(cherry picked from commit
71927a82379f7a72559ea96e6678d6215090937f)
Change-Id: I4a914f0594a66f38efb3026b7ba9d28a4887cb2d
Dmitriy Ivanov [Wed, 14 Oct 2015 18:15:45 +0000 (11:15 -0700)]
Ensure that readlink has access to /proc/self/fd
/proc/self/fd is not available when PR_DUMPABLE is set to 0
which is default for the user builds. It leads to permission
denials on readlink.
This change fixes the problem by setting PR_DUMPABLE flag to 1
for readlink and restoring it's previous value after the call.
Bug: http://b/
24912743
Change-Id: I3fd179c5c6b56af96d6a15ee597024ccb15e1a13
Neil Fuller [Fri, 9 Oct 2015 16:58:58 +0000 (17:58 +0100)]
Update timezone data to 2015g
Changes affecting future time stamps
Turkey's 2015 fall-back transition is scheduled for Nov. 8, not Oct. 25.
(Thanks to Fatih.)
Norfolk moves from +1130 to +1100 on 2015-10-04 at 02:00 local time.
(Thanks to Alexander Krivenyshev.)
Fiji's 2016 fall-back transition is scheduled for January 17, not 24.
(Thanks to Ken Rylander.)
Fort Nelson, British Columbia will not fall back on 2015-11-01. It has
effectively been on MST (-0700) since it advanced its clocks on 2015-03-08.
New zone America/Fort_Nelson. (Thanks to Matt Johnson.)
Changes affecting past time stamps
Norfolk observed DST from 1974-10-27 02:00 to 1975-03-02 02:00.
Bug:
24595281
(cherry-picked from commit
31740bfdb942399235e42ea920b6b717dfa0279c)
Change-Id: I6a57fbdaf12a4b4ebf2a760fd3bd872055621106
Dmitriy Ivanov [Tue, 13 Oct 2015 18:07:56 +0000 (11:07 -0700)]
Log dlopen failures caused by text relocations
Some apps will fail to load native libraries with
text relocations when switching target sdk version to M.
It could be hard to diagnose because some of them
suppress dlerror and/or UnsatisfiedLinkError.
This change unconditionally logs the error message making
the cause of the failure more visible to developers.
Bug: http://b/
24876001
Change-Id: I0477a0d1307d0879000f3a3a43b974b4cf34bdb2
Torne (Richard Coles) [Wed, 2 Sep 2015 13:14:08 +0000 (14:14 +0100)]
linker: don't pass dlextinfo to dependent loads.
Don't pass the parent load's dlextinfo to dependent loads, since this
causes the linker to try to load the dependencies using the same
addresses/relro/fds/etc as the main library, which is never going to
work. This was how it worked before
ae69a95 which broke this.
Bug:
23742664
Change-Id: I53d8cdf0982d8758e6d2ced4864c704cdf74118f
Brent DeGraaf [Fri, 18 Sep 2015 20:06:28 +0000 (16:06 -0400)]
libc: kryo specific memory routine
Add kryo specific memcpy
Change-Id: Id3af7bdbc9d621c56cd26cbc04f9ad116f228550
Maunik Shah [Mon, 29 Jul 2013 11:18:31 +0000 (16:48 +0530)]
bionic: Detect userspace memory leak
When process is consuming memory beyond the limit specified by
property, it will print all the allocations of the same process.
To enable this feature, do following steps:
1. libc.debug.malloc 40
2. libc.debug.malloc.program <PROCESS_NAME>
3. libc.debug.malloc.maxprocsize <VALUE_IN_BYTES>
4. libc.malloc.minalloclim <VALUE_IN_BYTES>
Change-Id: I03a4de9643ec954802b26443ce5685975ea30f89
Xin Qi [Fri, 15 Aug 2014 18:12:32 +0000 (11:12 -0700)]
Performance: krait: Implement optimized versions of memmove
Code has been refactored to thumb2 for consistency with the rest
of bionic libc, as well as performance and correctness.
Change-Id: I5f738ef3eb12ece6b55285f1588eab3d4bbbe27d
Brent DeGraaf [Wed, 2 Oct 2013 13:47:11 +0000 (09:47 -0400)]
Performance: krait: Re-factor high-performance memcpy for thumb2
The majority of libc under bionic is built for thumb2. Refactor
the high performance memcpy used in previous builds for thumb2,
including information that can be used for stack-unwinding.
Change-Id: I8a25e9cdc242a54f0fea41c135e11312f0bbb449
The Android Automerger [Fri, 2 Oct 2015 12:51:20 +0000 (05:51 -0700)]
merge in mnc-dr-release history after reset to mnc-dr-dev
Christopher Ferris [Tue, 29 Sep 2015 15:11:45 +0000 (15:11 +0000)]
am
93a91f0c: Force cts to only run one test at a time.
* commit '
93a91f0cf4f015762ac1ed57395c4c0de8ba7db3':
Force cts to only run one test at a time.
Christopher Ferris [Fri, 25 Sep 2015 01:45:53 +0000 (18:45 -0700)]
Force cts to only run one test at a time.
Also, slightly increase the timeout for each test run.
Bug:
24198050
(cherry picked from commit
daaaed18ce1d2f2da9d2240e974922299d937670)
Change-Id: I29e169e962da803a89abf0a28e071abcafa315b7
The Android Automerger [Thu, 24 Sep 2015 08:01:51 +0000 (01:01 -0700)]
merge in mnc-dr-release history after reset to mnc-dr-dev
Yabin Cui [Tue, 22 Sep 2015 18:16:15 +0000 (11:16 -0700)]
Increase alternative signal stack size on 64-bit devices.
Bug:
23041777
Bug:
24187462
Change-Id: I7d84c0cc775a74753a3e8e101169c0fb5dbf7437
The Android Automerger [Wed, 26 Aug 2015 08:01:31 +0000 (01:01 -0700)]
merge in mnc-dr-release history after reset to mnc-dr-dev
The Android Automerger [Wed, 26 Aug 2015 08:01:18 +0000 (01:01 -0700)]
merge in mnc-release history after reset to mnc-dev
Neil Fuller [Tue, 25 Aug 2015 11:46:33 +0000 (12:46 +0100)]
Update timezone data to 2015f
Changes affecting future time stamps
North Korea switches to +0830 on 2015-08-15. (Thanks to Steffen Thorsen.)
The abbreviation remains "KST". (Thanks to Robert Elz.)
Uruguay no longer observes DST. (Thanks to Steffen Thorsen
and Pablo Camargo.)
Changes affecting past and future time stamps
Moldova starts and ends DST at 00:00 UTC, not at 01:00 UTC.
(Thanks to Roman Tudos.)
Bug:
23480367
(cherry-picked from commit
6e7bc700e287f5d46165862a7031236670fa94d5)
Change-Id: I4d82604366e9e30a2100e09433e2772fe6957fff