Commit graph

27499 commits

Author SHA1 Message Date
Haibo Huang
f1c8d1a6f9 Use ifunc for ARM32 fortify functions
Test: compile and run bionic unit tests
Test: make PRODUCT-sdk_phone_arm64-sdk
Change-Id: I614f495ad6053d507446a6a896b9199825325188
2018-11-28 10:56:21 -08:00
Treehugger Robot
fdbf46b4e0 Merge "Fix free pages count in LinkerSmallObjectAllocator" 2018-11-28 18:18:03 +00:00
Luke Huang
f47e89f29b Merge "Replace android_open_proxy with dns_open_proxy" 2018-11-28 12:21:33 +00:00
Elliott Hughes
f8294fd8dc Remove _sys_signal_strings.
We already have sys_siglist as public API.

Test: tests pass
Change-Id: I45bf72955f41b34d91fac19dbfb2946bb9995ef4
2018-11-27 14:43:38 -08:00
Vic Yang
de69660bbd Fix free pages count in LinkerSmallObjectAllocator
Free pages count should be incremented by 1 when a new page is
allocated.  Without this fix, free pages count underflows and the
allocator ends up freeing a free page whenever the last object in that
page is freed.  In other words, it doesn't hold onto a free page as
expected and thus we may see more mmap/munmap calls.

Test: Set breakpoint at the end of __linker_init and check
      free_pages_cnt values are either 0 or 1.

Change-Id: I259a3a27329aab6835c21b4aa7ddda89dac9655b
2018-11-27 13:34:44 -08:00
Ryan Prichard
0ff8df5f6a Merge "Cleanup: __libc_init_AT_SECURE, auxv, sysinfo" 2018-11-27 21:23:21 +00:00
Treehugger Robot
aa5c0e261a Merge "Fix minor bug in dispatch table initialization order." 2018-11-27 20:51:00 +00:00
Ivan Lozano
b827c97366 Merge "Disable XOM in linker, libc, and libm." 2018-11-27 20:00:00 +00:00
Florian Mayer
e965bcdbe3 Fix minor bug in dispatch table initialization order.
Other minor changes:
 * document assignment that relies on _Atomic assignments to use
   atomic_store.
 * consistently use atomic_store when assigning to atomics.
 * remove incorrect comment.

Test: m
Test: flash & boot sailfish

Change-Id: I4789c08f7ac28a2de8d6925d03af354514bfd9d7
2018-11-27 17:38:18 +00:00
Ivan Lozano
f17fd1d68a Disable XOM in linker, libc, and libm.
These modules have issues running with execute-only memory. Disable it
in them until we can resolve the issues.

Bug: 77958880
Test: No more XOM-related crashes in these binaries

Change-Id: Ie6c957731155566c2bbe7dbb7a91b9583d9aff93
2018-11-27 07:56:17 -08:00
Ryan Prichard
701bd0cc88 Cleanup: __libc_init_AT_SECURE, auxv, sysinfo
__sanitize_environment_variables is only called when getauxval(AT_SECURE)
is true.

Instead of scanning __libc_auxv, reuse getauxval. If the entry is missing,
getauxval will set errno to ENOENT.

Reduce the number of times that __libc_sysinfo and __libc_auxv are
initialized. (Previously, __libc_sysinfo was initialized 3 times for the
linker's copy). The two variables are initialized in these places:
 - __libc_init_main_thread for libc.a (including the linker copy)
 - __libc_preinit_impl for libc.so
 - __linker_init: the linker's copy of __libc_sysinfo is still initialized
   twice, because __libc_init_main_thread runs after relocation. A later
   CL consolidates the linker's two initializations.

Bug: none
Test: bionic unit tests
Change-Id: I196f4c9011b0d803ee85c07afb415fcb146f4d65
2018-11-26 18:37:13 -08:00
Christopher Ferris
7f92fbe064 Merge "Add test for mallinfo." 2018-11-27 02:33:15 +00:00
Treehugger Robot
1fc432f42d Merge "Fix: search path is not added when one of its parent is not accessible" 2018-11-27 01:02:12 +00:00
Treehugger Robot
4b5b79cf3f Merge "Arm32 dynamic function dispatch" 2018-11-26 22:56:34 +00:00
Haibo Huang
ea9957a72a Arm32 dynamic function dispatch
Previous change was reverted in 9690b121e3.
This change added .arch directive to kryo/ to avoid invalid instruction error.

Test: Run bionic unit test.
Test: Use gdb to make sure the right function is selected.
Test: Build previously failed target: make PRODUCT-sdk_phone_arm64-sdk
Change-Id: I14de41851121fc1a0b38c98fda5eb844b6a9695c
2018-11-26 20:00:55 +00:00
Andreas Gampe
9ab3e4015d Merge "Revert "Add Android Runtime APEX directories to Bionic search paths."" 2018-11-26 18:58:34 +00:00
Andreas Gampe
27beebf6e5 Revert "Add Android Runtime APEX directories to Bionic search paths."
This reverts commit d2dd379361.

Reason for revert: Breaks vm-tests.

Bug: 119949783
Bug: 113373927
Change-Id: I2b23285ba98422a23da653d7ea99d9034000f6d6
2018-11-26 18:57:32 +00:00
Roland Levillain
6d0a1e7636 Merge "Add Android Runtime APEX directories to Bionic search paths." 2018-11-22 16:18:53 +00:00
Roland Levillain
d2dd379361 Add Android Runtime APEX directories to Bionic search paths.
- Insert /apex/com.android.runtime/lib(64) before /system/lib(64)
  in the default library search paths (`kDefaultLdPaths`,
  `kAsanDefaultLdPaths`).
- Insert apex/com.android.runtime/bin before /system/bin in the
  default shell search path (`_PATH_DEFPATH`).

Test: Device boot test with Android Runtime APEX.
Test: Device boot test without Android Runtime APEX.
Bug: 113373927
Change-Id: I9ae6bfe6939f63e7d76e7b3c9b21d8b698bd8fda
2018-11-20 19:12:40 +00:00
Florian Mayer
9e70e8100a Merge "System property for heapprofd at process startup." 2018-11-19 21:53:25 +00:00
Peter Collingbourne
8d849ffbad Merge "Allocate a small guard region around the shadow call stack." 2018-11-19 20:44:03 +00:00
Treehugger Robot
7562ef394d Merge "Revert "Arm32 dynamic function dispatch"" 2018-11-19 17:28:25 +00:00
Izabela Orlowska
9690b121e3 Revert "Arm32 dynamic function dispatch"
This reverts commit ce4ff9c44d.

Reason for revert: broke master in ab/5138164 target sdk_phone_armv7-sdk

Change-Id: Ia4b0c7e6117a37df694509078116963f41d7865e
2018-11-19 14:14:41 +00:00
Luke Huang
e3ed892faa Replace android_open_proxy with dns_open_proxy
remove android_open_proxy and use dns_open_proxy instead of it.
dns_open_proxy is in libnetd_client and
it does the same thing as android_open_proxy except return value.
It returns fd directly now.

Test: build, dns works fine
Change-Id: I984743fb50b23eeb9a7d24e9fc347832acfe2afe
2018-11-19 18:00:37 +08:00
Haibo Huang
db2b2ba0a7 Merge "Arm32 dynamic function dispatch" 2018-11-17 18:31:15 +00:00
Peter Collingbourne
734beec3d4 Allocate a small guard region around the shadow call stack.
This lets us do two things:

1) Make setjmp and longjmp compatible with shadow call stack.
   To avoid leaking the shadow call stack address into memory, only the
   lower log2(SCS_SIZE) bits of x18 are stored to jmp_buf. This requires
   allocating an additional guard page so that we're guaranteed to be
   able to allocate a sufficiently aligned SCS.

2) SCS overflow detection. Overflows now result in a SIGSEGV instead
   of corrupting the allocation that comes after it.

Change-Id: I04d6634f96162bf625684672a87fba8b402b7fd1
Test: bionic-unit-tests
2018-11-16 14:37:08 -08:00
Christopher Ferris
09a19aa0e7 Add test for mallinfo.
Bug: 119580449

Test: Test passes.
Change-Id: Ib605e550b7d6d8fd2336ad61b678a7e63f8ecffb
2018-11-16 13:34:36 -08:00
Haibo Huang
ce4ff9c44d Arm32 dynamic function dispatch
Test: Run bionic unit test.
Test: Use gdb to make sure the right function is selected.

Change-Id: I34ccd83d472c13993f75672b1aac2b2eae65c499
2018-11-16 19:50:17 +00:00
Jiyong Park
a4f3625112 Fix: search path is not added when one of its parent is not accessible
When /foo/bar/baz is added to the search paths and if getattr (stat())
is not allowed on one of its parent paths, i.e., /foo and /foo/baz, the
path was thought as non-existent and wasn't added to the search paths of
the namespace.

Fixing the bug by adding the path if the path (though not the parents)
does exist.

Bug: 119656753
Test: m apex.test; m; device boots.
Change-Id: I21bca1fee9aa20688ce9b72192d3173821ad91a3
2018-11-16 21:05:10 +09:00
Treehugger Robot
3de3a5faaf Merge "Fix a comment in <android/api-level.h>." 2018-11-16 04:29:24 +00:00
Elliott Hughes
0f57d561fe Fix a comment in <android/api-level.h>.
Bug: N/A
Test: N/A
Change-Id: Id6ef27caf8fe095d2be7fbf18fed74cc1334f86b
2018-11-15 15:07:13 -08:00
Elliott Hughes
ae471db4a9 Merge "Make android_get_application_target_sdk_version available to the NDK." 2018-11-15 23:04:41 +00:00
Elliott Hughes
c0f4656452 Make android_get_application_target_sdk_version available to the NDK.
Also move this and android_get_device_api_level into <android/api-level.h>
so that they're always available.

This involves cleaning up <sys/cdefs.h> slightly.

Bug: N/A
Test: builds
Change-Id: I25435c55f3549cd0d827a7581bee75ea8228028b
2018-11-15 11:07:30 -08:00
Treehugger Robot
cfd628009c Merge "switch to using android-base/file.h instead of android-base/test_utils.h" 2018-11-15 15:58:45 +00:00
Mark Salyzyn
ba1a723ad1 switch to using android-base/file.h instead of android-base/test_utils.h
Test: compile
Bug: 119313545
Change-Id: I664fb32522d01909c603d7b903475c4e9aea9223
2018-11-14 15:46:49 -08:00
Treehugger Robot
f1e657cdff Merge "linker unit tests requires liblog" 2018-11-14 23:21:09 +00:00
Mark Salyzyn
33c3a066ae linker unit tests requires liblog
Test: compile
Bug: 119313545
Change-Id: Ic6263c7db55d27ccb5075478aedae30c58ad0044
2018-11-14 13:05:27 -08:00
Elliott Hughes
8359068064 Merge "Move API levels from uint32_t to int." 2018-11-14 19:50:59 +00:00
Treehugger Robot
48630a9191 Merge "bionic tests: switch to using android-base/file.h for TemporaryFile" 2018-11-14 15:20:47 +00:00
Elliott Hughes
ff1428a48e Move API levels from uint32_t to int.
(cherrypick of a6c71a09670ca636cca5cfea9d74b03a951e2b5e.)

Bug: N/A
Test: builds
Change-Id: I9c414e30e3c4fe2a4e16a2fe4ce18eae85fe4844
2018-11-13 21:25:07 -08:00
Haibo Huang
378600fe95 Merge changes I5fb5745f,Ib0c0de37
* changes:
  Change memcpy ifunc to return memmove for x86
  Use ifunc to dynamically dispatch libc routines for x86
2018-11-14 04:36:02 +00:00
Haibo Huang
e141362aa1 Change memcpy ifunc to return memmove for x86
It is cleaner to do this with ifunc. This is a partial revert of:
https://android-review.googlesource.com/c/platform/bionic/+/693863

Test: run bionic unit test
Change-Id: I5fb5745fc98807805aedb94b683e959e2a76a25d
2018-11-13 14:23:19 -08:00
Haibo Huang
b9244ff551 Use ifunc to dynamically dispatch libc routines for x86
Test: run bionic unit test in aosp_cf_x86_phone emulator
Change-Id: Ib0c0de37cd38d24bfce2dfbe35b8fd8edff004af
2018-11-13 13:48:23 -08:00
Christopher Ferris
17c4bd9e59 Merge "Move to jemalloc5." 2018-11-13 20:48:07 +00:00
Mark Salyzyn
68a3bcc249 bionic tests: switch to using android-base/file.h for TemporaryFile
A matching definition of TemporaryFile exists in libbase now.

Test: compile
Bug: 119313545
Change-Id: I6f84dbf3af9a9c4b270a2532a36c9cb4c0f6bb8f
2018-11-13 10:57:28 -08:00
Peter Collingbourne
c2d3e67a77 Merge "bionic: Allocate a shadow call stack for each thread." 2018-11-13 18:56:58 +00:00
Christopher Ferris
d73a49e91e Move to jemalloc5.
Bug: 62621531

Test: Builds and boots. All unit tests pass.
Change-Id: I09d106cc3b658885b9155d6838f8df61498d3f85
2018-11-13 10:32:33 -08:00
Peter Collingbourne
da772e2113 bionic: Allocate a shadow call stack for each thread.
Instead of allocating the stack within a 16MB guard region as we
were doing before, just allocate the stack on its own. This isn't
as secure as with the guard region (since it means that an attacker
who can read the pthread_internal_t can determine the address of the
SCS), but it will at least allow us to discover more blockers until
a solution to b/118642754 is decided on.

Bug: 112907825
Bug: 118642754
Change-Id: Ibe5dffbad1b4700eaa0e24177eea792e7c329a61
2018-11-12 20:04:40 -08:00
Peter Collingbourne
b87e85aac3 Merge "bionic: Add shadow call stack guard region field to pthread_internal_t." 2018-11-12 22:50:24 +00:00
Peter Collingbourne
5d427bcb08 bionic: Add shadow call stack guard region field to pthread_internal_t.
Landing this change separately to the change that implements SCS
because it needs to land at the same time as an internal change. This
will simplify the situation in case SCS needs to be reverted again.

Change-Id: Ibe18750829665b6dcf6e36628a5e5bbdd1a0dd4f
Merged-In: Ibe18750829665b6dcf6e36628a5e5bbdd1a0dd4f
2018-11-12 13:42:28 -08:00