Commit graph

23429 commits

Author SHA1 Message Date
Elliott Hughes
3a8f75d8b0 POSIX clock cleanup.
The newest of these clocks was added in Linux 2.6.12, so no need for runtime
checks.

Add CTS tests that we can actually use the various clocks.

Bug: http://b/67458266
Test: ran tests
Change-Id: I3cfd7982043d6f8d4ebdc2b29e8722334f443ce5
2017-10-05 10:33:18 -07:00
Treehugger Robot
42f3bd0ffc Merge "Sync internal and external master." 2017-10-04 00:10:31 +00:00
Elliott Hughes
11dfca4c4a Merge "Fix pthread_leak test flakiness." 2017-10-04 00:04:59 +00:00
Treehugger Robot
ec6c3975ff Merge "Don't run exec_with_ld_config_file* tests on non-production devices" 2017-10-03 23:17:15 +00:00
Elliott Hughes
5a7c950909 Sync internal and external master.
Not sure how this managed to cling on in AOSP master, but all the other
mentions of this constant in AOSP master are already expecting the new
value anyway.

Bug: N/A
Test: ran tests
Change-Id: I8b6b4b320eeb1c4cea1c06bea4c1e8e314ee344d
2017-10-03 15:19:02 -07:00
Jiyong Park
41704cdf61 Don't run exec_with_ld_config_file* tests on non-production devices
The tests that use LD_CONFIG_FILE environment variable shouldn't be run
on non-production devices because LD_CONFIG_FILE is only for debuggable
builds. We have used the build-time flag USE_LD_CONFIG_FILE, which is
set for the debuggable builds, to conditionally include or exclude the
tests. However, this can be a problem when 1) the device is not
debuggable but 2) the CTS itself is built with debuggable target. So,
instead of relying on the build-time flag USE_LD_CONFIG_FILE, the tests
now check the debuggability of the device and skip the tests when it
isn't debuggable.

Bug: 65842135
Test: 1) flash user build image to a 2017 pixel device.
2) build cts with 'userdebug' build target
3) CtsBionicTestCases pass on the device

(cherrypick of 5e3d44100be32fd5efffd0c309bd90c04cc9620c.)

Change-Id: Ib88e3b26d093e5479d52cd87db47dee5e108cac2
2017-10-03 15:03:44 -07:00
Elliott Hughes
48fbf91672 Merge "Pre-size the vector in the pthread_create ENOMEM test." 2017-10-03 21:56:15 +00:00
Elliott Hughes
a838490101 Fix pthread_leak test flakiness.
Stop allocating and deallocating memory as part of the test itself.

There's still the fopen, but since our stdio reuses existing structs,
that doesn't seem to be a problem in practice.

Bug: http://b/67077411
Test: ran tests with --gtest_repeat=1000
Change-Id: I99de5de0911161ec04afe75653075f1ccefb01a5
2017-10-03 13:51:45 -07:00
Elliott Hughes
575129886c Pre-size the vector in the pthread_create ENOMEM test.
Just to avoid the possibility of an unfortunate mmap occurring in order to
grow the vector.

Bug: N/A
Test: ran tests
Change-Id: I850740461d761916a0377272664159d010da7b84
2017-10-03 12:20:07 -07:00
Dan Willemsen
c6021960a4 Merge "Rename target.linux[_x86[_64]] to target.linux_glibc[_x86[_64]]" 2017-10-03 02:30:05 +00:00
Treehugger Robot
9385d778fd Merge "Use -Werror in bionic" 2017-10-02 22:04:48 +00:00
Chih-Hung Hsieh
84f0dcd59e Use -Werror in bionic
Bug: 66996870
Test: build with WITH_TIDY=1
Change-Id: Ic68141a5c50880c485646e38349f94b866267bd9
2017-10-02 13:21:22 -07:00
Elliott Hughes
4836ac96e3 Merge "Don't repeat ourselves unnecessarily in the maps." 2017-10-02 20:13:20 +00:00
Dan Willemsen
3a3982d779 Rename target.linux[_x86[_64]] to target.linux_glibc[_x86[_64]]
In the future, target.linux will apply to all targets running a linux kernel
(android, linux_glibc, linux_bionic). So move all current users to the specific
linux_glibc.

There will be another cleanup pass later that will move some instances back to
target.linux if the properties should be shared with target.android and
target.linux_bionic, but target.linux needs to be removed first.

Test: out/soong/build.ninja identical before/after
Change-Id: I56c84d206fb1e98cd7ea0d8fb875de0ebd87ea5e
Exempt-From-Owner-Approval: build system cleanup
2017-10-02 10:41:07 -07:00
Elliott Hughes
a5c316fe0c Don't repeat ourselves unnecessarily in the maps.
We can mark a whole version "introduced=" rather than doing every line
separately.

Bug: N/A
Test: builds
Change-Id: I3219edc755a42ce5ff6258efb744fb5e05967a3a
2017-10-02 10:10:15 -07:00
Treehugger Robot
8af55bdf93 Merge "Add O MR1 define" 2017-10-02 16:29:27 +00:00
Treehugger Robot
a71b7bc63a Merge "Fix API level of cfi_* symbols to 27" 2017-10-02 16:26:25 +00:00
Jiyong Park
8664a05637 Fix API level of cfi_* symbols to 27
API level of O-MR1 is 27.

Bug: 63053790
Test: bionic tests passes

Change-Id: I78f0bd8af106954326394d60bf4d0cf5e10f7f17
2017-10-02 08:15:34 -07:00
John Reck
a0c7ec8080 Add O MR1 define
Bug: 64394076
Test: none
Change-Id: Ice3991c626dd2cce93c9a571ba529fa5b0129492
2017-10-02 08:14:56 -07:00
Treehugger Robot
95f90784ea Merge "Replace abort with exit(1) in __linker_cannot_link" 2017-09-29 19:53:17 +00:00
dimitry
04f7a798cf Replace abort with exit(1) in __linker_cannot_link
Bug: http://b/67038409
Test: bionic-unit-tests
Change-Id: I7d39b44f2da8c5111ac8a9faf3416f19d5a35c05
2017-09-29 19:48:46 +02:00
Treehugger Robot
b93f2631e4 Merge "Require getrandom(2)." 2017-09-29 17:48:26 +00:00
Elliott Hughes
6a5dfebd41 Require getrandom(2).
It's almost 2018, Linux 3.17 -- the first kernel with getrandom(2) --
was released in October 2014, and being able to assume getrandom lets
us simplify and improve some security-related code in libc, and revert a
hack to getentropy that's been necessary in the meantime. Only the fugu
kernel doesn't have getrandom(2) at this point, and that's EOL.

Bug: http://b/67014255
Test: ran tests
Change-Id: I1736f4dd33d50fe99e7a524851180989f4c85a33
2017-09-29 09:01:01 -07:00
Elliott Hughes
b3639adf9c Merge changes I76dde1e3,I54fec461
* changes:
  Add <sys/random.h>.
  Run other maintenance scripts as part of the preupload hooks.
2017-09-29 15:39:29 +00:00
Elliott Hughes
8465e968a8 Add <sys/random.h>.
iOS 10 has <sys/random.h> with getentropy, glibc >= 2.25 has
<sys/random.h> with getentropy and getrandom. (glibc also pollutes
<unistd.h>, but that seems like a bad idea.)

Also, all supported devices now have kernels with the getrandom system
call.

We've had these available internally for a while, but it seems like the
time is ripe to expose them.

Bug: http://b/67014255
Test: ran tests
Change-Id: I76dde1e3a2d0bc82777eea437ac193f96964f138
2017-09-29 05:31:35 +00:00
Elliott Hughes
9651093569 Run other maintenance scripts as part of the preupload hooks.
And get back up to date by actually running them...

Bug: N/A
Test: uploaded this
Change-Id: I54fec461190e8570929fdcbcbf2746ddd6a4b293
2017-09-28 22:28:23 -07:00
Treehugger Robot
bd2754177f Merge "Remove default libraries" 2017-09-29 01:11:43 +00:00
Dan Willemsen
ae407e522a Remove default libraries
libdl is part of system_shared_libs now. -ldl -lpthread -lm are now defaults
for host_ldlibs on Linux and Darwin. -lrt is a default for host_ldlibs on
Linux.

Test: m host
Test: mmma bionic
Change-Id: I966e2f88c24fba5e412bee6b6382045a2026a8e4
2017-09-28 16:16:14 -07:00
Elliott Hughes
b736c41ffe Merge "Add <glob.h>." 2017-09-28 17:01:06 +00:00
Elliott Hughes
f1c568d1ea Add <glob.h>.
This is the FreeBSD implementation, plus some tests. The FreeBSD
implementation includes the GNU extensions and seems to be what
iOS is using too, which should provide bug compatibility for app
developers.

The code unfortunately uses a lot of stack, and uses FreeBSD locale
implementation that we don't have, but it does seem better maintained
than the other BSDs.

Bug: http://b/29251134
Test: ran tests
Change-Id: Ie477b45e42a6df1319b25712098519d2b33adf67
2017-09-26 18:46:09 -07:00
Treehugger Robot
62767bc31d Merge "Link vdso before linking the main executable" 2017-09-26 17:10:00 +00:00
dimitry
c18de1bd47 Link vdso before linking the main executable
Also set linked flag after it is linked and
call constructors. Set RTLD_NODELETE flag to
prevent accidental unloads.

Test: bionic-unit-tests --gtest_filter=dl*:Dl*
Test: bionic-unit-tests-glibc --gtest_filter=dl*
Change-Id: Ib2178849b918cbefd6f8fcfe6d1f78889fe0bf76
2017-09-26 14:34:18 +02:00
Treehugger Robot
9c172c86e7 Merge "Fix error found building relocation packer for host bionic" 2017-09-25 23:56:17 +00:00
Treehugger Robot
2e01f39c31 Merge "All architectures have AT_SYSINFO_EHDR now." 2017-09-25 19:19:38 +00:00
Elliott Hughes
c51a404b1a All architectures have AT_SYSINFO_EHDR now.
Bug: N/A
Test: builds
Change-Id: Ibc894be98ed0781c8b991ffadff34f616b934aa7
2017-09-22 13:08:50 -07:00
Dan Willemsen
7ebc81f4a2 Fix error found building relocation packer for host bionic
bionic/tools/relocation_packer/src/main.cc:109:7: error: comparison of constant
-1 with expression of type 'typeof (read(fd.get(), e_ident, (16)) != (16))'
(aka 'bool') is always false [-Werror,-Wtautological-constant-out-of-range-compare]

  if (TEMP_FAILURE_RETRY(read(fd.get(), e_ident, EI_NIDENT) != EI_NIDENT)) {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

bionic/libc/include/unistd.h:243:18: note: expanded from macro 'TEMP_FAILURE_RETRY'
    } while (_rc == -1 && errno == EINTR); \
             ~~~ ^  ~~
1 error generated.

Bug: 31559095
Test: mmma bionic
Change-Id: I473a19e3d51ff355233ae7f87b1013be069edb1f
2017-09-22 19:37:35 +00:00
Treehugger Robot
24c9c3f380 Merge "Don't resolve permitted.paths" 2017-09-22 05:56:37 +00:00
Jiyong Park
0f33f23a76 Don't resolve permitted.paths
Linker resolves the paths in /system/etc/ld.config.txt to canonicalize
the paths and to ensure they exist. However, as permitted paths for the
default namespace contain directories such as /vendor/app, /mnt/expand,
and etc., the resolving causes selinux denial on some processes which do
not have access to some of the permitted paths.

In order to silence the bogus selinux denial, resolution is skipped for
permitted paths.

Note that the resolution is not strictly required especially for
Treble-ized devices where permitted paths are already canonicalized (i.e
/vendor isn't a symlink to /system/vendor).

Bug: 65843095
Test: no selinux denial on /vendor/app, /vendor/framework, etc. while
booting.

Merged-In: I1a9921e45f4c15b08cdf8f1caee64c4cb0761e1f
Change-Id: I1a9921e45f4c15b08cdf8f1caee64c4cb0761e1f
(cherry picked from commit 527757e16b)
2017-09-22 11:34:43 +09:00
Treehugger Robot
6e6e1abb89 Merge changes from topic "host_bionic"
* changes:
  Use an embedded linker for host bionic
  linker: Only link to debuggerd on Android
2017-09-21 00:46:41 +00:00
Dan Willemsen
7ccc50d2e4 Use an embedded linker for host bionic
The linux kernel requires that the ELF interpreter (runtime linker)
that's referenced by PT_INTERP be either an absolute path, or a relative
path from the current working directory. We'd prefer a relative path
from the binary, similarly to how we handle looking up shared libraries,
but that's not supported.

Instead, extract the LOAD segments from the runtime linker ELF binary
and embed them into each host bionic binary, omitting the PT_INTERP
declaration. The kernel will treat it as a static binary, and we'll use
a special entry point (linker_wrapper) to fix up the arguments passed by
the kernel before jumping to the embedded linker. From the linker's
point of view, it looks like the kernel loaded the linker like normal.

Bug: 31559095
Test: Enable host bionic, build and run libdemangle_test
Change-Id: I1753401ef91eecbf0ae3376faca31eec1c53842b
2017-09-20 13:59:13 -07:00
Dan Willemsen
4326d84d21 linker: Only link to debuggerd on Android
Don't link to it when building with bionic for the host.

Also add libasync_safe, which is used by linker_globals.h even when
debuggerd isn't used.

Bug: 31559095
Test: mma
Test: Attempt to build host bionic
Change-Id: I374e2c2c288133875da82de780b27917ca524240
2017-09-20 13:16:13 -07:00
Treehugger Robot
e27d29cfaf Merge "Improve pthread_create failure handling." 2017-09-19 23:44:23 +00:00
Treehugger Robot
1ec162d392 Merge "Extend cfi test to verify a range of target pointers." 2017-09-19 22:44:29 +00:00
Elliott Hughes
53dc9dd701 Improve pthread_create failure handling.
Return EAGAIN rather than aborting if we fail to set up the TLS for a new
thread.

Add a test that uses all the VMAs so we can properly test these edge cases.

Add an explicit test for pthread_attr_setdetachstate, which we use in the
previous test, but other than that has no tests.

Remove support for ro.logd.timestamp/persist.logd.timestamp, which doesn't
seem to be used, and which prevents us from logging failures in cases where
mmap fails (because we need to mmap in the system property implementation).

Bug: http://b/65608572
Test: ran tests
Change-Id: I9009f06546e1c2cc55eff996d08b55eff3482343
2017-09-19 14:02:50 -07:00
Evgenii Stepanov
1dfd76ac2c Extend cfi test to verify a range of target pointers.
Test: bionic device tests
Bug: 63400743
Bug: 65590288
Change-Id: Ic4ef9630a2db709cf4edcc7f76c791df3f349192
2017-09-19 13:59:34 -07:00
Elliott Hughes
0d9301e156 Merge "Rename _Exit in a way that works with libandroid_support." 2017-09-19 18:34:52 +00:00
Elliott Hughes
2f94a29d9c Rename _Exit in a way that works with libandroid_support.
Bug: N/A
Test: builds
Change-Id: I2aeaf9bafe7d51e91b67f22d68f4e52191df062b
2017-09-19 18:34:40 +00:00
Treehugger Robot
cce6ada00a Merge "Make <math.h> renames compatible with GCC." 2017-09-19 01:14:29 +00:00
Treehugger Robot
dacbb04cde Merge "Support larger guard regions." 2017-09-19 01:08:25 +00:00
Christopher Ferris
7a5bb687f4 Merge "Drop thread list lock before abort." 2017-09-19 00:15:32 +00:00