Yabin Cui
25ac4476d8
Merge "Support priority inheritance mutex in 64bit programs."
2018-01-25 23:43:25 +00:00
Treehugger Robot
4a2407b3a1
Merge "Fix __gnu_Unwind_Find_exidx for static executables."
2018-01-25 22:53:44 +00:00
Dan Albert
aeb5bc658f
Fix __gnu_Unwind_Find_exidx for static executables.
...
__exidx_start and __exidx_end are not actual values to be read, just
symbols placed before and after .ARM.exidx.
The default linker script for ARM static executables includes these
lines:
__exidx_start = .;
.ARM.exidx : { *(.ARM.exidx*) }
__exidx_end = .;
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0474c/BABEHEDA.html
Test: used __gnu_Unwind_Find_exidx in a static executable and showed
non-bogus values
Test: verified that this fixes #593 in the NDK
Bug: https://github.com/android-ndk/ndk/issues/593
Change-Id: Ib35a4b6c82920666ae8a45aa0a2d43e458699b51
2018-01-25 12:48:57 -08:00
Treehugger Robot
cb405b2987
Merge changes from topic "update-ndk-crt-objects"
...
* changes:
Partial revert of "Remove obsolete __stack_chk_fail_local."
Pre-M and GCC compatibility for crtbegin.
2018-01-25 03:42:36 +00:00
Dan Albert
586b6761d0
Partial revert of "Remove obsolete __stack_chk_fail_local."
...
These sources are going to be used for the NDK as well, and the NDK
still uses GCC.
This partially reverts commit
4af220cfef
. That commit also removed
this symbol from the linker's crtbegin (it has its own). That is
still only built with Clang, so we don't need to revert that part.
Test: treehugger
Bug: None
Change-Id: Iba231baf298e228135bdf48dfed87f9089975eb1
2018-01-24 16:37:48 -08:00
Dan Albert
2e2c72d61f
Pre-M and GCC compatibility for crtbegin.
...
We're going to start using the bionic sources for the NDK CRT
objects, so we need to avoid using symbols that weren't around in
early versions of Android. The NDK is currently building the CRT
objects with GCC as well (there were some segfaults that have yet to
be diagnosed), so move `__used` to the GCC compatible location.
Test: treehugger
Bug: None
Change-Id: I1f5c23eafadc2e3bc0b84bc3305f79a04d35c7d8
2018-01-24 16:37:48 -08:00
Yabin Cui
6b9c85b36d
Support priority inheritance mutex in 64bit programs.
...
Bug: http://b/29177606
Test: run bionic-unit-tests on walleye.
Test: run bionic-unit-tests-glibc on host.
Change-Id: Iac349284aa73515f384e7509445f87434757f59e
2018-01-24 16:11:07 -08:00
Elliott Hughes
73871ad09b
Merge "Deprecate readdir_r."
2018-01-23 21:51:22 +00:00
Treehugger Robot
6ea80375e6
Merge "Block bunch of privileged syscalls to apps"
2018-01-23 17:54:30 +00:00
Victor Hsieh
2f23ceda44
Block bunch of privileged syscalls to apps
...
Test: build, run some app
Bug: 63944145
Change-Id: I13eb56f923732e110851dec02eaa11f6cb44535c
2018-01-22 22:30:17 -08:00
Elliott Hughes
f19af37b5e
Deprecate readdir_r.
...
I've been campaigning against readdir_r for years:
http://elliotth.blogspot.com/2012/10/how-not-to-use-readdirr3.html
and glibc deprecated it in 2.24, so we should join the club.
Bug: http://b/32678321
Test: builds
Change-Id: Ie3887ed75989aced9324266aa3b93e85c11bdbc9
2018-01-22 17:15:25 -08:00
Elliott Hughes
d00d38b36b
Merge "linker: add experimental support for SHT_RELR sections."
2018-01-23 00:24:26 +00:00
Treehugger Robot
86a2fba164
Merge "Package bionic static libraries in the NDK."
2018-01-22 20:41:27 +00:00
Rahul Chaudhry
b7feec7454
linker: add experimental support for SHT_RELR sections.
...
This change adds experimental support for SHT_RELR sections, proposed
here: https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
Definitions for the new ELF section type and dynamic array tags, as well
as the encoding used in the new section are all under discussion and are
subject to change. Use with caution!
Bug: None
Test: Built image for marlin, flashed on device, ran arm and
aarch64 binaries containing '.relr.dyn' sections.
Change-Id: I2953ae932d3c42ae394e71f8fa058013758a1778
2018-01-22 12:41:27 -08:00
Dan Albert
40f15ec4b1
Package bionic static libraries in the NDK.
...
Test: build/soong/scripts/build-ndk-prebuilts.sh
Bug: https://github.com/android-ndk/ndk/issues/272
Change-Id: Ibb21d799fdcf230ed45db0b809e20dd86d2d8e52
2018-01-22 12:40:56 -08:00
Dan Albert
88e61da8a7
Merge "Include what we use."
2018-01-22 20:23:53 +00:00
Dan Albert
8583d5a766
Include what we use.
...
Test: mma
Bug: None
Change-Id: I88a23673fdad3babaaef89acd7e369419dc1ee3a
2018-01-22 12:20:16 -08:00
Treehugger Robot
c728aa3127
Merge "Reland "Cleanup transitive includes in the legacy inlines.""
2018-01-22 19:32:23 +00:00
Treehugger Robot
e5fbd983cb
Merge "Address a bunch of clang-tidy complaints."
2018-01-20 18:15:12 +00:00
Elliott Hughes
055565b2aa
Merge "Simplify CT_CCL and CT_STRING inner loop."
2018-01-20 18:14:24 +00:00
Treehugger Robot
fb96db14d1
Merge "Document that dlclose with thread_local is fixed in P."
2018-01-20 04:48:24 +00:00
Elliott Hughes
3048a36a34
Simplify CT_CCL and CT_STRING inner loop.
...
Makes no difference to the benchmarks, but does make the code a bit
more readable.
Bug: http://b/68672236
Test: ran tests, benchmarks
Change-Id: I63fa5f78d077c86e4f4f194f2c76ab5510c29109
2018-01-19 17:58:07 -08:00
Treehugger Robot
2b66844a0b
Merge "Support %mc/%ms/%m[ in sscanf."
2018-01-20 01:17:25 +00:00
Elliott Hughes
5cec377f49
Address a bunch of clang-tidy complaints.
...
There were a bunch more unreasonable/incorrect ones, but these ones
seemed legit. Nothing very interesting, though.
Bug: N/A
Test: ran tests, benchmarks
Change-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f
2018-01-19 15:56:12 -08:00
Elliott Hughes
38e4aefe6c
Support %mc/%ms/%m[ in sscanf.
...
Also support the "long" (wchar_t) variants.
Bug: http://b/68672236
Test: ran tests
Change-Id: I060e98b4d2feb61e12986d9d51e4710b2b1d9724
2018-01-19 14:53:55 -08:00
Elliott Hughes
e61e0cda99
Document that dlclose with thread_local is fixed in P.
...
Bug: https://github.com/android-ndk/ndk/issues/360
Test: N/A
Change-Id: Ib9807045bd3206fa3cd300ab70ebed93c73a58e4
2018-01-19 10:33:41 -08:00
Treehugger Robot
df4c92888e
Merge "Fixing app compat issue b/72143978"
2018-01-19 02:38:33 +00:00
Treehugger Robot
0dac05642e
Merge "Add bpf syscall to seccomp whitelist"
2018-01-19 01:59:05 +00:00
Ian Pedowitz
b6310c2aa7
Fixing app compat issue b/72143978
...
This is a squash revert of a4a4854
and 1b0f2b4
Revert "Remove a test for backwards compatibility we no longer support."
This reverts commit a4a485454a
.
# This is the commit message #2 :
Revert "Remove obsolete workaround."
This reverts commit 1b0f2b49d5
.
Bug: 72143978
Bug: 24465209
Test: Tested failing case on sailfish, reverted back all CL's since
Test: 3471433 for b/24465209 and apps open
2018-01-18 16:26:45 -08:00
Dan Albert
989d804859
Reland "Cleanup transitive includes in the legacy inlines."
...
This reverts commit 54c71521b5
.
Bug: None
Test: make checkbuild
Change-Id: Ica6a4f7ecadfcc854160a60a5db1b44ae3b6c821
2018-01-18 23:39:48 +00:00
Treehugger Robot
ee88e76f14
Merge "Deprecate set_seccomp_filter"
2018-01-18 20:37:24 +00:00
Chenbo Feng
60f3ed41a3
Add bpf syscall to seccomp whitelist
...
The netd service and system server will use bpf syscalls to get network
stats information when kernel supported. And the syscall from system
server will need seccomp permission to run it.
Test: -m CtsNetTestCases -t android.net.cts.TrafficStatsTest
Bug: 30950746
Change-Id: I01c46f243dca0933a44cbfd3148f9e4748f9bc99
2018-01-18 12:08:34 -08:00
Joachim Sauer
62cb397383
Merge "Revert "Revert "Revert "Revert "Revert "Cleanup transitive includes in the legacy inlines.""""""
2018-01-18 11:38:44 +00:00
Joachim Sauer
54c71521b5
Revert "Revert "Revert "Revert "Revert "Cleanup transitive includes in the legacy inlines."""""
...
This reverts commit a074ac79d7
.
Reason for revert: Broke several builds.
Change-Id: I406f0b0aa0c37961ad031d2f6c5ea4241f3f1111
2018-01-18 11:37:34 +00:00
Treehugger Robot
8e81d9751e
Merge "Revert "Revert "Revert "Revert "Cleanup transitive includes in the legacy inlines."""""
2018-01-18 02:31:25 +00:00
Christopher Ferris
ca092c29a4
Merge "malloc debug: reset FreeTrackData mutex after fork"
2018-01-18 02:28:51 +00:00
Victor Hsieh
52d4c3a53e
Deprecate set_seccomp_filter
...
Test: build
Bug: 63944145
Change-Id: Ifbef2727844cd46eb1f933ed89141186f50e1a1b
2018-01-17 16:44:17 -08:00
Treehugger Robot
0d63a3c233
Merge "Do not set PR_SET_NO_NEW_PRIVS when install seccomp filter"
2018-01-16 17:33:31 +00:00
Denis Hsu
1a8106ec1a
malloc debug: reset FreeTrackData mutex after fork
...
Lock the FreeTrackData mutex during fork and reset it in the child.
Ensures that the FreeTrackData is consistent when forking from a
multi-threaded process, and that the mutex is in a defined state
in the child.
Test: 89hours MTBF test
Change-Id: I5e5892832a733ea85727ec65abc7094d95a725ef
2018-01-16 17:43:53 +08:00
Victor Hsieh
dab45ad936
Do not set PR_SET_NO_NEW_PRIVS when install seccomp filter
...
Setting PR_SET_NO_NEW_PRIVS actually breaks SELinux domain transition
(of debuggerd, for example). Do not set the bit when install the filter.
Instead, the caller must either have done it, or have CAP_SYS_ADMIN.
Test: build
Bug: 63944145
Bug: 71859146
Change-Id: I2af334fed61cac03fd0b3b5c8866e2e72b31cf17
2018-01-15 11:37:49 -08:00
Elliott Hughes
d16b09a4d2
Merge "Clean up the time(2) implementation."
2018-01-13 17:05:57 +00:00
Elliott Hughes
293d4633af
Merge "Remove a test for backwards compatibility we no longer support."
2018-01-13 02:17:52 +00:00
Elliott Hughes
a4a485454a
Remove a test for backwards compatibility we no longer support.
...
Bug: http://b/24465209
Test: ran tests
Change-Id: I80bb86379f108d88a6f4abb031450d13ac87c7b9
2018-01-12 15:27:48 -08:00
Elliott Hughes
f1515f6408
Clean up the time(2) implementation.
...
This is also slightly faster for the no VDSO case (56ns vs 66ns).
Bug: N/A
Test: ran tests, benchmarks
Change-Id: I2b0edd06ee6942eb57c32678279278a53ca5ee9b
2018-01-12 15:20:28 -08:00
Dan Albert
a074ac79d7
Revert "Revert "Revert "Revert "Cleanup transitive includes in the legacy inlines.""""
...
This reverts commit b37e9aa9a6
.
Reason for revert: trying again
Test: make native
Change-Id: Ide23f0a752fd6ca88e44449e996eb5809db6712d
2018-01-11 09:43:23 -08:00
Treehugger Robot
25a3087d6d
Merge "bionic: add vdso time()"
2018-01-11 15:46:18 +00:00
Mark Salyzyn
4473ccd5b0
bionic: add vdso time()
...
time() can be a hot call, and it currently uses __vdso_gettimeofday,
which is already pretty fast (~3 times faster than the syscall),
but with a __vdso_time call it is ~3 times even faster, in part
because __vdso_time does not require interlocking with updates,
and the read for just the seconds is atomic. __vdso_time is
always available, whereas __vdso_gettimeofday is gated on access
to the physical timers. arm improvement is compelling (x10),
x86 improvement is even more pronounced (x100).
[TL;DR]
w/vdso32 kernel patches, locked cores to MAX, little cores only.
BEFORE:
hikey960 vdso (aarch64):
----------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------
BM_time_clock_gettime 48 ns 48 ns 15414753
BM_time_clock_gettime_syscall 175 ns 175 ns 4062031
BM_time_clock_gettime_REALTIME 44 ns 44 ns 15897875
BM_time_clock_gettime_BOOTTIME 47 ns 47 ns 14307903
BM_time_clock_gettime_TAI 210 ns 210 ns 3341372
BM_time_clock_gettime_unsupported 100 ns 100 ns 7030649
BM_time_gettimeofday 47 ns 47 ns 14969643
BM_time_gettimeofday_syscall 163 ns 163 ns 4283542
BM_time_time 59 ns 59 ns 11815385
hikey960 vdso32 (aarch32):
----------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------
BM_time_clock_gettime 90 ns 90 ns 7572898
BM_time_clock_gettime_syscall 251 ns 251 ns 2763442
BM_time_clock_gettime_REALTIME 81 ns 80 ns 8699536
BM_time_clock_gettime_BOOTTIME 97 ns 97 ns 7256667
BM_time_clock_gettime_TAI 272 ns 272 ns 2570419
BM_time_clock_gettime_unsupported 160 ns 160 ns 4379819
BM_time_gettimeofday 73 ns 73 ns 9608922
BM_time_gettimeofday_syscall 200 ns 199 ns 3527957
BM_time_time 123 ns 123 ns 5651095
x86_64 (glibc):
--------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------
BM_time_clock_gettime 21 ns 21 ns 28873070
BM_time_clock_gettime_syscall 224 ns 224 ns 3095370
BM_time_clock_gettime_REALTIME 17 ns 17 ns 42083086
BM_time_clock_gettime_BOOTTIME 239 ns 239 ns 2924015
BM_time_clock_gettime_TAI 236 ns 236 ns 2961423
BM_time_clock_gettime_unsupported 221 ns 221 ns 3357696
BM_time_gettimeofday 22 ns 22 ns 27975154
BM_time_gettimeofday_syscall 238 ns 238 ns 2882032
BM_time_time 2 ns 2 ns 340354885
BM_time_time_syscall 207 ns 207 ns 3383073
imx7d_pico IOT nyc (w/arm,cpu-registers-not-fw-configured) (armv7a):
(virtual timers)
Benchmark Time(ns) CPU(ns) Iterations
------------------------------------------------------------------
BM_time_clock_gettime 20 477 1489362
BM_time_clock_gettime_syscall 20 487 1458333
BM_time_clock_gettime_REALTIME 19 464 1400000
BM_time_clock_gettime_BOOTTIME 29 700 1000000
BM_time_clock_gettime_TAI 29 690 1000000
BM_time_clock_gettime_unsupported 9 227 3043478
BM_time_gettimeofday 18 444 1555556
BM_time_gettimeofday_syscall 19 456 1555556
BM_time_time 21 497 1166667
imx7d_pico IOT nyc (wo/arm,cpu-registers-not-fw-configured) (armv7a):
(physical timers)
Benchmark Time(ns) CPU(ns) Iterations
------------------------------------------------------------------
BM_time_clock_gettime 6 144 4666667
BM_time_clock_gettime_syscall 20 486 1400000
BM_time_clock_gettime_REALTIME 6 136 5000000
BM_time_clock_gettime_BOOTTIME 6 153 4375000
BM_time_clock_gettime_TAI 31 760 1000000
BM_time_clock_gettime_unsupported 10 233 3043478
BM_time_gettimeofday 6 140 5000000
BM_time_gettimeofday_syscall 19 450 1555556
BM_time_time 9 203 3500000
AFTER:
hikey960 vdso (aarch64):
--------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------
BM_time_clock_gettime 48 ns 48 ns 15414753
BM_time_clock_gettime_syscall 175 ns 175 ns 4062031
BM_time_clock_gettime_REALTIME 44 ns 44 ns 15897875
BM_time_clock_gettime_BOOTTIME 47 ns 47 ns 14307903
BM_time_clock_gettime_TAI 210 ns 210 ns 3341372
BM_time_clock_gettime_unsupported 100 ns 100 ns 7030649
BM_time_gettimeofday 47 ns 47 ns 14975314
BM_time_gettimeofday_syscall 164 ns 164 ns 4278797
BM_time_time 16 ns 16 ns 42932165
hikey960 vdso32 (aarch32):
--------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------
BM_time_clock_gettime 90 ns 90 ns 7572898
BM_time_clock_gettime_syscall 251 ns 251 ns 2763442
BM_time_clock_gettime_REALTIME 81 ns 80 ns 8699536
BM_time_clock_gettime_BOOTTIME 97 ns 97 ns 7256667
BM_time_clock_gettime_TAI 272 ns 272 ns 2570419
BM_time_clock_gettime_unsupported 160 ns 160 ns 4379819
BM_time_gettimeofday 73 ns 73 ns 9596230
BM_time_gettimeofday_syscall 199 ns 199 ns 3575428
BM_time_time 35 ns 35 ns 19798801
imx7d_pico IOT nyc (w/arm,cpu-registers-not-fw-configured) (armv7a):
Benchmark Time(ns) CPU(ns) Iterations
------------------------------------------------------------------
BM_time_clock_gettime 20 477 1489362
BM_time_clock_gettime_syscall 20 487 1458333
BM_time_clock_gettime_REALTIME 19 464 1400000
BM_time_clock_gettime_BOOTTIME 29 700 1000000
BM_time_clock_gettime_TAI 29 690 1000000
BM_time_clock_gettime_unsupported 9 227 3043478
BM_time_gettimeofday 18 444 1555556
BM_time_gettimeofday_syscall 19 456 1555556
BM_time_time 2 50 11666667
imx7d_pico IOT nyc (wo/arm,cpu-registers-not-fw-configured) (armv7a):
Benchmark Time(ns) CPU(ns) Iterations
------------------------------------------------------------------
BM_time_clock_gettime 6 144 4666667
BM_time_clock_gettime_syscall 20 486 1400000
BM_time_clock_gettime_REALTIME 6 136 5000000
BM_time_clock_gettime_BOOTTIME 6 153 4375000
BM_time_clock_gettime_TAI 31 760 1000000
BM_time_clock_gettime_unsupported 10 233 3043478
BM_time_gettimeofday 6 140 5000000
BM_time_gettimeofday_syscall 19 450 1555556
BM_time_time 2 50 10000000
Test: bionic-unit-tests --gtest_filter=time.time
taskset F bionic-benchmarks --bionic_xml=vdso.xml \
--benchmark_filter='BM_time_(time*|clock_gettime*|gettimeofday*)'
Bug: 63737556
Change-Id: I81b088a12ca41a6c4733d46c5477527777138efa
2018-01-11 15:46:11 +00:00
Treehugger Robot
b1e90d29ac
Merge "Remove obsolete workaround."
2018-01-11 04:45:24 +00:00
Treehugger Robot
39ee5a4b47
Merge "Adapt to the new libc++/libc++abi update."
2018-01-11 04:29:33 +00:00
Elliott Hughes
1b0f2b49d5
Remove obsolete workaround.
...
Bug: http://b/24465209
Test: manually ran the app.
Change-Id: I1e2a498864c74ff3a9886b97f7dc60ad7f6dfa44
2018-01-10 11:05:19 -08:00