Commit graph

20016 commits

Author SHA1 Message Date
Evgenii Stepanov
636a2ecfbc [cfi] Handle large libraries correctly.
Fallback to unchecked if the shadow offset overflows int16_t.
This may happen when a library's data segment is larger than 256MB.

Also updated some comments.

Bug: 22033465
Test: bionic device tests

Change-Id: I8eef42f75099f24aed566499ff1731a0bbf01ff3
2017-01-20 14:23:20 -08:00
Treehugger Robot
7844b4c5db Merge "Add props files for each partition" 2017-01-20 03:58:52 +00:00
Jaekyun Seok
dc94cf5cd8 Add props files for each partition
The following files will be added.
- /vendor/default.prop for default prop overrides from vendor
 partition.
- /odm/default.prop for default prop overrides from odm partition.
- /odm/build.prop for build prop overrides from odm partition.

Test: tested default/build prop files with enabling early mount, but
didn't test files of odm partition because odm partition doesn't
exist now.
Bug: 34116668
Change-Id: Ia99895a0afcdc522463d95b2f3e2841dcf2e3516
2017-01-20 09:59:26 +09:00
Treehugger Robot
ad3b3995e7 Merge "Add seccomp support library" 2017-01-19 23:26:10 +00:00
Paul Lawrence
eabc352651 Add seccomp support library
Policy library which exports an autogenerated policy from SYSCALLS.TXT
blocking any other calls.

Test: Generate policy, install onto Sailfish, check boots, Chrome runs,
calls are blocked.
Bug: 32313202

Change-Id: Ib590704e50122f077eeae26561eb9b0a70386551
2017-01-19 13:38:47 -08:00
Evgenii Stepanov
082bec5b41 Merge "Runtime support for CFI" 2017-01-18 23:39:08 +00:00
Josh Gao
2d261e8e9e Merge changes from topic 'kill_debuggerd'
* changes:
  Rename libdebuggerd_client to libdebuggerd_handler.
  Reserve a realtime signal for debuggerd.
2017-01-18 23:04:09 +00:00
Evgenii Stepanov
0a3637d3eb Runtime support for CFI
Control Flow Integrity support in bionic.

General design:
http://clang.llvm.org/docs/ControlFlowIntegrityDesign.html#shared-library-support

This CL implements subsections "CFI Shadow" and "CFI_SlowPath" in the above document.

Bug: 22033465
Test: bionic device tests
Change-Id: I14dfea630de468eb5620e7f55f92b1397ba06217
2017-01-18 13:13:52 -08:00
Colin Cross
2f238b32cd Merge "Declare dependency on android_filesystem_config.h" 2017-01-18 16:53:26 +00:00
Jorim Jaggi
dbfa1bd292 Merge "Revert "property_contexts: split into platform and non-platform components"" 2017-01-18 16:33:32 +00:00
Jorim Jaggi
e2f5ea14c5 Revert "property_contexts: split into platform and non-platform components"
This reverts commit 8213615461.

Change-Id: Id2982eafadc5d1c307b60c1f8abe78df8dc8b82e
2017-01-18 15:37:18 +00:00
Treehugger Robot
0b6d0a8b38 Merge "property_contexts: split into platform and non-platform components" 2017-01-18 06:09:02 +00:00
Colin Cross
35bbed8020 Declare dependency on android_filesystem_config.h
android_filesystem_config.h comes from a directory outside bionic/libc
so it can't be referenced directly, add it as a source file through
a filegroup module.

Bug: 34283327
Test: builds
Test: libc rebuilds after touch system/core/include/private/android_filesystem_config.h
Change-Id: I90f6b7b25b70842b8619d558074449f13e6e6b03
2017-01-17 18:31:33 -08:00
Josh Gao
2a3b4fa6ec Rename libdebuggerd_client to libdebuggerd_handler.
Bug: http://b/30705528
Test: debuggerd_test
Change-Id: I625a9a2e7304d172873ba9344b74efa57ad7bdad
2017-01-17 15:11:46 -08:00
Josh Gao
f8a6d4745d Reserve a realtime signal for debuggerd.
Allocate __SIGRTMIN + 3 for triggering native stack dumps (like SIGQUIT
for Java processes).

Bug: http://b/30705528
Test: debuggerd_test
Change-Id: I81d622fba32a651555268a8a2ba6721c61c93a58
2017-01-17 13:55:18 -08:00
Elliott Hughes
8d0e0d4952 Merge "linker: convert 'mov pc' instruction to 'bx'" 2017-01-14 18:30:10 +00:00
Park Ju Hyung
ab2c5752c3 linker: convert 'mov pc' instruction to 'bx'
From Linux 3.17 6ebbf2ce437b33022d30badd49dc94d33ecfa498:

    ARMv6 and greater introduced a new instruction ("bx") which can be used
    to return from function calls.  Recent CPUs perform better when the
    "bx lr" instruction is used rather than the "mov pc, lr" instruction,
    and this sequence is strongly recommended to be used by the ARM
    architecture manual (section A.4.1.1).

Signed-off-by: Park Ju Hyung <qkrwngud825@gmail.com>

Test: No regressions detected
Test: Passes full CTS run

Change-Id: Ie268f9893e3df0f68fbfe82a13f3c7cc5c5909d8
Signed-off-by: Alex Naidis <alex.naidis@linux.com>
2017-01-14 14:40:07 +00:00
Yabin Cui
37f1d11482 Merge "Switch bionic-unit-tests to libc++_static." 2017-01-14 02:20:20 +00:00
Elliott Hughes
98d200899b Merge "Describe our dynamic linker compatibility policy." 2017-01-13 21:12:15 +00:00
Yabin Cui
1f553ea5da Switch bionic-unit-tests to libc++_static.
Bug: http://b/27549327
Test: run bionic-unit-tests, bionic-unit-tests-glibc.
Change-Id: I719899624dec83728a3d5b8169079e5c91c63c04
2017-01-13 12:34:36 -08:00
Elliott Hughes
9e3d527bd2 Describe our dynamic linker compatibility policy.
Bug: N/A
Test: N/A
Change-Id: I6f472d1ab22636de74fd103e9a480fb1ab51e314
2017-01-13 11:07:00 -08:00
Pavel Labath
a970ac50d1 Merge "Beef up process_vm_readv/writev tests" 2017-01-13 10:21:32 +00:00
Pavel Labath
cc441001c0 Beef up process_vm_readv/writev tests
LLDB uses process_vm_readv quite extensively (it's an order of
magnitude faster than PTRACE_PEEKDATA). Add a bit more tests of
the function to make sure it stays working.

Change-Id: I64e17e6d56842f118a9485e3a18f42ca5e1b7577
Test: run the new test
2017-01-13 10:21:19 +00:00
Elliott Hughes
1b2975d54b Merge "localtime_r(3) should act as if it calls tzset(3)." 2017-01-12 23:19:50 +00:00
Josh Gao
27fa754287 Merge "Improve fmemopen tests." 2017-01-11 23:59:02 +00:00
Elliott Hughes
ea87716696 localtime_r(3) should act as if it calls tzset(3).
See code comment.

Bug: http://b/31339449
Test: ran tests & benchmarks
Change-Id: I6b6a63750ef41664dc4698207e6a53e77cc28cdf
2017-01-11 14:56:04 -08:00
Treehugger Robot
94ea19895c Merge "Add support for expected failures to gtest runner." 2017-01-11 22:32:18 +00:00
Josh Gao
2f06e10280 Improve fmemopen tests.
Tag fmemopen_NULL as a known failure, and make it reliably fail by
memsetting the buffer we read to.

Bug: http://b/33251022
Test: bionic-unit-tests/bionic-unit-tests64 on bullhead
Test: bionic-unit-tests-glibc --gtest_filter="*memopen*"
Change-Id: I381783282359851c9de47146dafbb5a291960c2a
2017-01-11 13:00:15 -08:00
Treehugger Robot
907fcc98b2 Merge "Hide __system_property_add/update, deprecate find_nth" 2017-01-11 01:57:56 +00:00
Dimitry Ivanov
581b9f661b Hide __system_property_add/update, deprecate find_nth
These functions are supposed to be used only by the
property service.

__system_property_find_nth is deprecated and no longer part
of NDK. Call to this function will result in abort for apps
targeting Android O.

Bug: http://b/34114501
Test: bionic-unit-tests --gtest_filter=prop*
Change-Id: I9846965bf248e2ddf45cd7b293618245bbd87145
2017-01-10 13:41:27 -08:00
Josh Gao
010522229c Add support for expected failures to gtest runner.
Bug: http://b/33251022
Test: manually added tests that unexpectedly failed
Test: bionic-unit-tests/bionic-unit-tests64 on bullhead
Change-Id: Ie9aef80014b9fd6512b68f0e42abc298732a9b6e
2017-01-10 12:56:25 -08:00
Christopher Ferris
0625beb270 Merge "Fix streaming(memcpy) performance on Cortex-A7" 2017-01-10 18:41:15 +00:00
Elliott Hughes
940d460f59 Merge "Revert "Revert "move android_ids into bionic""" 2017-01-10 01:15:30 +00:00
Elliott Hughes
74e1fe1cc0 Merge "Dynamic linker errors should go to stderr." 2017-01-10 00:43:39 +00:00
Sandeep Patil
8213615461 property_contexts: split into platform and non-platform components
Bug: 33746484
Test: Successfully boot with original service and property contexts.
Test: Successfully boot with split serivce and property contexts.

Change-Id: Id1acb8c4273c6f93396e8cf7a063571a2bf08786
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-01-09 16:34:14 -08:00
Elliott Hughes
607d307b1f Dynamic linker errors should go to stderr.
Also add the missing \n to the end of the error.

Addresses review comment.

Bug: N/A
Test: manual
Change-Id: I7c997a71e6e02381d21ac762595ba90370db9d05
2017-01-09 14:44:28 -08:00
Elliott Hughes
71952ef625 Merge "Exit rather than abort if asked to run a non-PIE executable." 2017-01-09 22:26:35 +00:00
Elliott Hughes
39b6d59049 Merge "Move to .md files for even trivial documentation." 2017-01-09 21:23:01 +00:00
Elliott Hughes
da7a0b105d Move to .md files for even trivial documentation.
So it's automatically displayed for folks browsing the source.

Bug: N/A
Test: N/A
Change-Id: I80e823415f1fb12ad8ce5348e926519b6e29580f
2017-01-07 12:47:28 -08:00
Elliott Hughes
3bdb31b51b Exit rather than abort if asked to run a non-PIE executable.
Each release we're asked to investigate tombstones from code that hasn't
been allowed to run on Android since L. This is just wasting our time,
and clearly the "obviousness" of aborting rather than exiting hasn't ensured
that all app developers rebuild their old binaries. In some cases it seems
like they run them "just in case" and don't care if they fail.

Bug: http://b/34112178
Test: ran libsupervisor.so from com.ss.android.article.news
Change-Id: I8a3f196c4755601a3888281566fbb7b817f01dca
2017-01-07 10:38:20 -08:00
Treehugger Robot
500b9be411 Merge "Fix bionic-unit-tests-static crash" 2017-01-07 03:59:15 +00:00
Dimitry Ivanov
462ea664cf Fix bionic-unit-tests-static crash
The crash happens because for static executables call to dlopen
results in crash. This change moves dlopen() == nullptr check
from static variable to a functions so that the dlopen crash only
affects tests calling dlopen but not the whole executable.

Also make static tests report crashes to debugerd

Test: run bionic-unit-tests-static (for arm 32 and 64)
Bug: http://b/34129417
Change-Id: I7c4d8caf2a43250234fe24496b1c95eab572769f
2017-01-06 16:16:26 -08:00
Treehugger Robot
11798bcc35 Merge "Make /dev/__properties__ 0711" 2017-01-06 21:53:06 +00:00
Nick Kralevich
bb59d47249 Make /dev/__properties__ 0711
Don't allow processes to read the contents of the directory
/dev/__properties__. This is an implementation detail of the properties
system that processes shouldn't be concerned with.

Test: Device boots and no problems reading individual properties.
Test: ls -la /dev/__properties__ fails
Change-Id: I00130fe4529525935654bff91e3cc59253b86e26
2017-01-06 12:07:20 -08:00
Treehugger Robot
d26267b8b9 Merge "Add declaration of tgkill to signal.h." 2017-01-06 00:44:18 +00:00
Josh Gao
d3cfd26872 Add declaration of tgkill to signal.h.
Expose a useful function that we've had since Jelly Bean.

Bug: http://b/34111810
Test: TreeHugger
Change-Id: Iaf3097f224c09b533f36050cf21394ba148007ad
2017-01-05 15:15:12 -08:00
Dimitry Ivanov
fb07c36bc0 Merge "Downgrade dynamic section checks to warning" 2017-01-03 18:03:04 +00:00
Dimitry Ivanov
e30c17fb6e Downgrade dynamic section checks to warning
For apps targeting pre-O releases print warn about
invalid dynamic section.

Bug: http://b/33842263
Test: Start an app in question and check logs for warning.
Test: Run bionic-unit-test --gtest_filter=dl*:Dl*
Change-Id: I80bd51f2133b956fc04e20a6538cccd50118c1b8
2016-12-28 16:21:49 -08:00
Chitti Babu Theegala
cbfdc7f905 Fix streaming(memcpy) performance on Cortex-A7
Stream-mode detection for L1 in A7-core is failing for
non cache-line-size (non 64 byte) aligned addresses.
This leads to destination data getting cached unnecessarily.
This A7 issue is confirmed by ARM

This issue is solved by aligning destination address to 64 byte before
entering the loop in memcpy routine.
Though we get lower score for micro_bench memcpy when L1 cache is bypassed,
it is desirable since it avoids unnecessary eviction of other process data
from L1 which is good for overall system performance.

Higher micro_bench memcpy numbers for < 64byte alignment shows good numbers
but this is at the cost of L1 cache pollution. During memcpy/memset,
unnecessary data is filled in L1 cache, this causes eviction of other
process data from L1.
For example during msmset(0), L1 cache gets filled with 0s which should be
avoided.

Additionally, there is another issue with cortex A7 that impacts performance
for all alignments / all Android Wear versions:
Store Buffer on A7 is 32 byte which limits the 32-byte back to back stores.
In the current implementation back to back 32bytes writes is causing CPU stalls.
This issue can be solved by interleaved Loads and Stores.
This helps in avoiding CPU stalls during memcpy by utilizing efficiently the
A7 internal load and store buffers.

Change-Id: Ie5f12f2bb5d86f627686730416279057e4f5f6d0
2016-12-19 15:11:43 -08:00
Josh Gao
c816e9fa03 Merge "versioner: start using C++17." 2016-12-16 22:12:36 +00:00