Commit graph

27465 commits

Author SHA1 Message Date
Vic Yang
259429bd85 Further improve of linker memory allocators
This includes:
  - Blocks allocated by small object allocators are now aligned to
    their block size.
  - Remove redundant free_blocks_cnt and allocated_blocks_cnt, as they
    sum up to a fixed number.
  - Remove a redundant padding word in small_object_page_info on 32-bit
    platform.

Test: Build and boot cuttlefish.
Change-Id: Ib922d7af739e3709e8a162c7f68e7f99bf95a914
2018-12-12 17:39:07 -08:00
Vic Yang
5493851e1b Reduce LinkerSmallObjectAllocator memory overhead
The current implementation of LinkerSmallObjectAllocator keeps record
of pages in a vector, which uses its own page(s).  This is at least a
page overhead per LinkerSmallObjectAllocator.

This change removes the page record vector by managing the pages in a
doubly linked list.

We also fix a bug where we are actually keeping up to 2 free pages
instead of just one.

The memory used by small objects when running 'dd', before this change:
    72 KB  [anon:linker_alloc_small_objects]
    28 KB  [anon:linker_alloc_vector]

After this change:
    60 KB  [anon:linker_alloc_small_objects]

Test: Boot cuttlefish and check memory used by linker.
Change-Id: I3468fa4d853c78b4bc02bfb84a3531653f74fb17
2018-12-12 15:53:55 -08:00
Haibo Huang
e4788d4c7e No ifunc for strcmp and strlen
This is a workaround to unbreak bank apps

Bug: 120254692
Test: Run broken apps
Change-Id: I47a655e9648a6d5f50856f712d8e1cf2be24b440
2018-12-12 04:28:29 +00:00
Chih-hung Hsieh
c49776bffc Merge "Fix cert-dcl16-c clang-tidy warnings in tests." 2018-12-12 03:00:08 +00:00
Ryan Prichard
b0a55fbf74 Merge "Reserve TLS_SLOT_SANITIZER with value 6." 2018-12-12 02:02:03 +00:00
Chih-Hung Hsieh
c2edae3f86 Fix cert-dcl16-c clang-tidy warnings in tests.
Bug: 120614316
Test: make with WITH_TIDY=1 DEFAULT_GLOBAL_TIDY_CHECKS=-*,cert-dcl16-c
Change-Id: I2606dc4cdfff9c2691ed60d529971e16adb3a9ae
2018-12-11 15:16:24 -08:00
Ryan Prichard
913f808c0f Merge "Move errno to a pthread_internal_t field." 2018-12-11 22:35:16 +00:00
Treehugger Robot
7c2c34cb24 Merge "Fix performance-for-range-copy warnings" 2018-12-11 21:11:53 +00:00
Ryan Prichard
4825c6d814 Reserve TLS_SLOT_SANITIZER with value 6.
This slot will replace TLS_SLOT_TSAN, which needs to be removed for ELF
TLS compatibility. The platform has both slots reserved until compiler-rt
can be updated. See:
 - https://reviews.llvm.org/D53906
 - discussion on AOSP change Idf25d2ee457a5d26d0bdd6281cee72c345c8b755

Bug: http://b/78026329
Test: m
Change-Id: Ifd5aeb5711dc88266e7350cb022146dd87cfd7be
2018-12-11 13:02:56 -08:00
Ryan Prichard
37754cdef6 Move errno to a pthread_internal_t field.
This change is intended to allow native-bridge to use independent
TLS memory for host and guest environments, while still sharing a
thread-local errno between the two.

Bug: http://b/78026329
Test: bionic unit tests
Change-Id: I838cd321e159add60760bc12a8aa7e9ddc960c33
Merged-In: I838cd321e159add60760bc12a8aa7e9ddc960c33
(cherry picked from commit a9c7c55462)
2018-12-11 12:59:23 -08:00
Neil Fuller
24bddbe949 Merge "Revert "Track movement of ICU .dat file"" 2018-12-11 20:20:14 +00:00
Neil Fuller
b9e7b699a2 Revert "Track movement of ICU .dat file"
This reverts commit 68c6bd8b43.

Reason for revert: Broke ART test environments and emulator devices.

Bug: 119293618
Change-Id: I1b0531d13c6565ce83801d93c78813af592eec1a
2018-12-11 20:11:58 +00:00
Chih-Hung Hsieh
0218e92329 Fix performance-for-range-copy warnings
Bug: 30413223
Test: make with WITH_TIDY=1 DEFAULT_GLOBAL_TIDY_CHECKS=-*,performance*
Change-Id: I41cc70d161468c5586ca8be3185578e65681a9c5
2018-12-11 10:22:11 -08:00
Neil Fuller
681d8eb5ca Merge "Track movement of ICU .dat file" 2018-12-11 14:03:28 +00:00
Neil Fuller
2f1a8dbd10 Merge "Find tzdata in the runtime module before /system" 2018-12-10 17:37:33 +00:00
Neil Fuller
68c6bd8b43 Track movement of ICU .dat file
Track movement of ICU .dat file into the runtime module.

Bug: 119293618
Test: build / boot
Change-Id: I595c0c94ea7f693810fbe323d7966d9fdf4a07e6
2018-12-09 15:01:43 +00:00
Neil Fuller
4e33c4ff9b Merge "Track move of APEX module tz files under etc/tz" 2018-12-08 16:41:48 +00:00
Treehugger Robot
b0f293ce52 Merge "DO NOT MERGE" 2018-12-08 04:20:32 +00:00
Xin Li
efea995eb4 DO NOT MERGE
Merge pie-platform-release (PPRL.181205.001, history only) into master

Bug: 120502534
Change-Id: I4d8ac790868a56f65fd9805d06646a15918f4657
2018-12-07 17:47:18 -08:00
Neil Fuller
a50e51ac96 Find tzdata in the runtime module before /system
Look for the tzdata file in the runtime module before looking
in /system. It is still an open question how the removal of
tzdata will be handled, if at all. Until it is worked out it
will be duplicated.

Bug: 119293618
Bug: 119390260
Test: build / boot
Change-Id: I7e14ef41d0ec226caa595c56be61df5ecf50c382
2018-12-07 09:14:03 +00:00
Ryan Prichard
8b475e598d Merge "Move dlerror out of a TLS slot and into a pthread_internal_t member." 2018-12-06 22:18:56 +00:00
Roland Levillain
42635c98a1 Merge "Add Android Runtime APEX bin directory to Bionic default shell search path." 2018-12-06 17:13:06 +00:00
Roland Levillain
fe21bbacfc Add Android Runtime APEX bin directory to Bionic default shell search path.
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.
Test: cts-tradefed run cts --m vm-tests-tf
Test: cts-tradefed run cts --m CtsSimpleperfTestCases
Test: adb root && cts-tradefed run cts --m CtsBionicTestCases
Bug: 113373927
Bug: 119949783
Change-Id: I45fd6ccb939c7e99eb6bda740a7187774c1e930d
2018-12-06 17:03:47 +00:00
Dimitry Ivanov
5c92d9e858 Merge "Introduce filegroups for libc sources" 2018-12-06 14:39:30 +00:00
Neil Fuller
9268977f2d Track move of APEX module tz files under etc/tz
The same prebuilts will be used in both runtime and time zone
modules. Having the rules put the files in etc/tz/ will make
them more appropriate for the runtime module.

Bug: 119026403
Test: build /boot only
Change-Id: Ia1370457e9d1547b35ed56bb385213d3727c8b9a
2018-12-06 14:33:12 +00:00
Elliott Hughes
34583c1089 Move dlerror out of a TLS slot and into a pthread_internal_t member.
Bug: N/A
Test: boots, tests pass.
Change-Id: Idf25d2ee457a5d26d0bdd6281cee72c345c8b755
2018-12-06 05:19:57 +00:00
Treehugger Robot
31105c8dd8 Merge "Remove cruft." 2018-12-06 02:43:58 +00:00
Ryan Prichard
a6bc0e3c28 Merge changes I96c7b02c,I461feeae,I6fcd8d75
* changes:
  Replace TLS_SLOT_BIONIC_PREINIT w/ shared globals
  Use shared globals so getauxval works earlier
  Split main thread init into early+late functions
2018-12-05 20:46:15 +00:00
Chih-hung Hsieh
b071f27a4f Merge "Revert "Work around bugprone-exception-escape bug."" 2018-12-05 19:14:54 +00:00
Elliott Hughes
9131b4abfd Remove cruft.
Test: builds
Change-Id: I432d97ca9c94d96eba74687338d27c0f41b71f0c
2018-12-05 10:00:25 -08:00
dimitry
c0c0ef6da6 Introduce filegroups for libc sources
Add filegroups for libc sources not included in component static
libraries.

Bug: http://b/120406045
Bug: http://b/114470065
Test: make
Change-Id: I2045f14d6636e0da4eb741bfd2de3312475e20e3
2018-12-05 16:37:13 +01:00
Treehugger Robot
aabebb2772 Merge "Bionic: Support kryo385 CPU" 2018-12-05 07:50:39 +00:00
Haibo Huang
4af19611e2 Bionic: Support kryo385 CPU
Bug: 119564566
Test: build
Change-Id: I557fb6a860b777b7cdb6b97d6946847800a8cec6
2018-12-05 04:39:15 +00:00
Chih-hung Hsieh
f42616d765 Revert "Work around bugprone-exception-escape bug."
This reverts commit 153b71c407.

Reason for revert: fixed in clang-r346389
Bug: 117120485
Test: make with WITH_TIDY=1 DEFAULT_GLOBAL_TIDY_CHECKS=bugprone-*

Change-Id: I49971e4227d6d5772efccd551d493a0f1e68416a
2018-12-04 23:51:44 +00:00
Xin Li
998175dc6f Merge "Merge pie-platform-release (PPRL.181105.017, history only) into master" 2018-12-04 22:09:27 +00:00
Ryan Prichard
07440a8773 Replace TLS_SLOT_BIONIC_PREINIT w/ shared globals
Instead of passing the address of a KernelArgumentBlock to libc.so for
initialization, use __loader_shared_globals() to initialize globals.

Most of the work happened in the previous CLs. This CL switches a few
KernelArgumentBlock::getauxval calls to [__bionic_]getauxval and stops
routing the KernelArgumentBlock address through the libc init functions.

Bug: none
Test: bionic unit tests
Change-Id: I96c7b02c21d55c454558b7a5a9243c682782f2dd
Merged-In: I96c7b02c21d55c454558b7a5a9243c682782f2dd
(cherry picked from commit 746ad15912)
2018-12-04 13:51:56 -08:00
Ryan Prichard
5a66490e3b Use shared globals so getauxval works earlier
Make getauxval() work in .preinit_array. It still won't be usable for
ifuncs unless we can guarantee that the __loader_shared_globals relocation
is resolved before the ifunc calls [__bionic_]getauxval.

Define __bionic_getauxval for use in replacing calls to
KernelArgumentBlock::getauxval, which doesn't (and sometimes isn't allowed
to) access TLS variables like errno.

Bug: http://b/25751302
Test: bionic unit tests
Change-Id: I461feeaed7f43cfa2a2b6c34147194f0df82b516
Merged-In: I461feeaed7f43cfa2a2b6c34147194f0df82b516
(cherry picked from commit bdab4a2b97)
2018-12-04 13:51:46 -08:00
Ryan Prichard
9cfca866ce Split main thread init into early+late functions
Split __libc_init_main_thread into __libc_init_main_thread_early and
__libc_init_main_thread_late. The early function is called very early in
the startup of the dynamic linker and static executables. It initializes
the global auxv pointer and enough TLS memory to do system calls, access
errno, and run -fstack-protector code (but with a zero cookie because the
code for generating a cookie is complex).

After the linker is relocated, __libc_init_main_thread_late finishes
thread initialization.

Bug: none
Test: bionic unit tests
Change-Id: I6fcd8d7587a380f8bd649c817b40a3a6cc1d2ee0
Merged-In: I6fcd8d7587a380f8bd649c817b40a3a6cc1d2ee0
(cherry picked from commit 39bc44bb0e)
2018-12-04 13:51:36 -08:00
Haibo Huang
949269828e Merge "Remove denver from bionic" 2018-12-04 20:49:10 +00:00
Treehugger Robot
b7cee4ebad Merge "Make __libc_init_malloc weak-for-native-bridge" 2018-12-04 20:02:45 +00:00
Bill Rassieur
796198ff34 Merge PQ1A.181205.006 from Pi-QPR1-Release into ToT for Pi-Platform release.\n\nBUG: 120448245
Change-Id: I41ecc8195f43208cb694877a8be2f8d86ed05312
2018-12-04 16:59:10 +00:00
Logan Chien
969538db2e Merge "versioner: Use llvm::opt::ArgStringList" 2018-12-04 14:07:14 +00:00
dimitry
5332af69b6 Make __libc_init_malloc weak-for-native-bridge
Bug: http://b/120406045
Test: make

Change-Id: Ieee30beca3f3bb8525030643b0245041cd4a6167
2018-12-04 14:06:44 +01:00
Logan Chien
aef762aee1 versioner: Use llvm::opt::ArgStringList
This commit replaces `clang::driver::ArgStringList` with
`llvm::opt::ArgStringList` because starting from r344398, the alias for
`llvm::opt::ArgStringList` has been removed from the `clang::driver`
namespace.

Note: This is a step to port clang tools to clang-r346389.

See also. https://reviews.llvm.org/rL344398

Bug: 119558057
Test: cd bionic/tools/versioner; mma; ./run_tests.py
Change-Id: I9b5ff572a9af6c6ffaf2c4c9cb01c97f4b85ac22
2018-12-04 17:20:22 +08:00
Haibo Huang
01bfd8934e Remove denver from bionic
Test: bionic unit tests
Bug: 73545680
Change-Id: Ib142bf289ac73a3512ad1f29789ef82027160d78
2018-12-04 06:38:08 +00:00
Dan Willemsen
c69218d47e Merge "Prevent dependency cycle due to system_shared_libs expansion" 2018-12-04 06:19:08 +00:00
Xin Li
b95fca1666 Merge pie-platform-release (PPRL.181105.017, history only) into master
Bug: 118454372
Change-Id: I6b85bc54ed30bf7711e9b4bff80e181d7ec2b11f
2018-12-03 16:12:31 -08:00
Elliott Hughes
d264aaf95d Merge "Reduce strerror(3)'s impact on .data.rel.ro." 2018-12-04 00:03:41 +00:00
Dan Willemsen
6b3be172d6 Prevent dependency cycle due to system_shared_libs expansion
It was discovered that we were building some objects inconsistently due
to an optimization in cc_library to only build objects once and use them
for both the static and shared libraries. But static libraries didn't
get system_shared_libs set automatically, and we didn't notice that we
would have built the objects differently.

So static libraries now get the default system_shared_libs, we allow
adjusting that for static vs shared in a cc_library, and we disable the
optimization if the linked libraries are configured differently between
static and shared in a single cc_library.

This triggers dependency cycles for static libraries that libc/libdl
use, so fix those cycles here.

Test: treehugger
Change-Id: I3cf7fda161a05ec32e0c1e871999720d12a4d38e
2018-12-03 15:41:56 -08:00
Treehugger Robot
9b849d6391 Merge "C++17 is the default now." 2018-12-03 20:38:11 +00:00