Commit graph

7452 commits

Author SHA1 Message Date
Josh Gao
fc49e01100 Merge \"Remove __BIONIC_LEGACY_INLINE.\"
am: 767e8147d7

Change-Id: I510e31c8820dffc6a212dd6f390b5eac8eea84c4
2016-07-23 00:08:54 +00:00
Josh Gao
8778d64d5c Remove __BIONIC_LEGACY_INLINE.
Don't use the same declaration to declare both static and non-static
functions, to make life easier for versioner.

(Also, remove __BIONIC_LEGACY_INLINE from two functions in termios.h
that weren't actually legacy inlines.)

Bug: http://b/30170081
Change-Id: Ibb73377d77a2b4cee016289b7c46a01452e45fae
2016-07-22 15:52:55 -07:00
Elliott Hughes
1665158b71 Merge \"Make it possible to build bionic with -I instead of -isystem.\"
am: 420d02c56d

Change-Id: I2b105c0dbe34e206fbdb6a1ad5df82f17564ec2a
2016-07-22 21:47:47 +00:00
Elliott Hughes
420d02c56d Merge "Make it possible to build bionic with -I instead of -isystem." 2016-07-22 21:35:02 +00:00
Elliott Hughes
5470c18361 Make it possible to build bionic with -I instead of -isystem.
Various things:

* work around -Wnullability-completeness.
* use C++ casts in C++ and C casts in C.
* stop using attributes clang doesn't support (such as `warning`).
* remove duplicate definitions of XATTR_CREATE and XATTR_REPLACE.

Change-Id: I07649e46275b28a23ca477deea119fe843999533
2016-07-22 13:12:53 -07:00
Josh Gao
ba03502f56 Merge changes I7718b1ba,I648adc35
am: 4f62c5b311

Change-Id: Ia117c90c75866c0672cbdc0f0fa34975e58b2b0f
2016-07-22 19:28:38 +00:00
Treehugger Robot
4f62c5b311 Merge changes I7718b1ba,I648adc35
* changes:
  Only initialize the global stack protector once.
  Make getpid work before TLS has been initialized.
2016-07-22 19:20:58 +00:00
Elliott Hughes
f3a094a4ea Merge \"Only define sa_family_t once.\"
am: 237366867a

Change-Id: Ifef06cfc6a9ee7d5d681f9886408d4c436a6fe32
2016-07-22 00:39:14 +00:00
Elliott Hughes
508d292f8d Only define sa_family_t once.
Change-Id: Icf700910c836d22c8a27ad026ec8af11697edd5a
2016-07-21 16:38:43 -07:00
Elliott Hughes
e81e3d5523 Merge \"Treat \"persist.sys.timezone\" as being a Java-format timezone.\"
am: 91f33cd5ae

Change-Id: Iafd50c6b6b44166f2fdf1506dbcbe5c788568966
2016-07-21 08:14:31 +00:00
Elliott Hughes
3e3f4a51b8 Treat "persist.sys.timezone" as being a Java-format timezone.
POSIX and Java disagree about the sign in a timezone string like "GMT+3".
This means that if you set "persist.sys.timezone" to such a string, native
code and Java code disagree about what time it is. Resolve this by
translating to POSIX form for native code.

Bug: http://b/25463955
Change-Id: I7c08c459dd8514348a12ce419edcbfbfe8f6d327
Test: manually tested with setprop and date.
2016-07-20 17:23:54 -07:00
Evgenii Stepanov
2f5ed30a7c Merge \"Align-up and randomize shared libraries.\"
am: a9fbaee593

Change-Id: I5cb0caea4db3a8cb3b0e1a4dd3a4bb2d5f5069d9
2016-07-20 20:37:26 +00:00
Evgenii Stepanov
a9fbaee593 Merge "Align-up and randomize shared libraries." 2016-07-20 20:31:41 +00:00
Christopher Ferris
fa46052743 Merge \"Move/remove android only kernel uapi headers.\"
am: fe280773ed

Change-Id: If9de2352e7522628aff751211753c11d4d453ca8
2016-07-20 18:09:38 +00:00
Christopher Ferris
fe280773ed Merge "Move/remove android only kernel uapi headers." 2016-07-20 18:03:48 +00:00
Evgenii Stepanov
d13e9a603f Align-up and randomize shared libraries.
This change implements the following property:
  Any 2**N aligned memory region on size 2**N contains no more than one DSO.

The value N can be configured, with 16 or 18 looking like a good choice.
Additionally, DSOs are loaded at random page-aligned address inside these large
regions.

This change has dual purpose:
1. Larger values of N allow a lot more compact CFI shadow implementation.
   See change I14dfea630de468eb5620e7f55f92b1397ba06217.
   For example, CFI shadow for the system_server process has the following size (RSS, KB):
   152 for N = 12, 32 for N = 16, 16 for N = 18.
2. Extra randomization is good for security.

This change does not result in extra RAM usage, because everything is still page-aligned.
It does result in a bit more VM fragmentation because of the gaps between shared libraries.
As it turns out, this fragmentation is barely noticeable because the kernel creates new mapping
at the highest possible address, and we do enough small mappings to almost completely fill the
gaps (ex. in the Zygote the gaps are filled with .ttf file mappings and thread stacks).

I've measured VM fragmentation as the sum of all VM gaps (unmapped regions) that are larger
than 1MB according to /proc/$PID/maps. On aosp_angler-userdebug, the numbers are (in GB):

                |   N = 12  |  N = 18
system_server   |   521.9   |  521.1
zygote64        |   522.1   |  521.3
zygote32        |   2.55    |  2.55
mediaserver     |   4.00    |  4.00

Change-Id: Ia6df840dd409c82837efd1f263be420d9723c84a
2016-07-19 18:18:22 -07:00
Elliott Hughes
234c0f6bb6 Merge \"Remove __LIBC_ABI_PUBLIC__.\"
am: 9af76f9b48

Change-Id: I8e2e7bf6a70f978619499a0e96e424c6bdb1cdf0
2016-07-19 21:58:19 +00:00
Elliott Hughes
f47514dd99 Remove __LIBC_ABI_PUBLIC__.
We have much better control over visibility now, so we don't need to
pollute the headers with cruft.

Bug: http://b/24767418
Change-Id: I349f4c3bc30102477375ad9f80926e560c7c1d8b
2016-07-19 13:56:46 -07:00
Christopher Ferris
d6e8b8ca56 Move/remove android only kernel uapi headers.
Move all of the uapi kernel headers that are only found in the android
kernel, and are still used by the tree into their own directory.

Delete all of these files that are not used.

Also, delete binder.h from the linux directory since it already exists
in the linux/android directory.

Bug: 30072483
Change-Id: I879f16e366f7670b8be3546b0a9cf9567fce6526
2016-07-19 12:43:56 -07:00
Elliott Hughes
1b2b8362c9 Merge \"Don\'t declare SYS_* constants for unavailable __NR_* constants.\"
am: 20de9ef5bd

Change-Id: Ib9e6ef7fc06df0ac42414870061da287a9692d09
2016-07-18 20:48:52 +00:00
Elliott Hughes
d2f725eaed Don't declare SYS_* constants for unavailable __NR_* constants.
Bug: https://code.google.com/p/android/issues/detail?id=215853
Change-Id: Iaaa3ce888deb8d032208bf636b7badaed6a72d30
2016-07-18 12:48:39 -07:00
Dan Albert
548d8e0374 Merge \"Put the legacy stdio fds back for pre-M.\"
am: 098d8ef5b2

Change-Id: I32565181dcfc9caab8212baa1c3f7a03f490ce0d
2016-07-15 21:48:30 +00:00
Dan Albert
32d7ca35ec Merge \"Add an alias for _CTYPE_N.\"
am: 730fa648c2

Change-Id: I84e7abe390146bfb2deb0987ccd997fd11c7d6aa
2016-07-15 21:02:25 +00:00
Dan Albert
32c79c279d Put the legacy stdio fds back for pre-M.
Change-Id: I2e397b04cba2969b9f9a3767b9b2fd12a289fcd2
2016-07-15 12:54:14 -07:00
Dan Albert
77bd6073fb Add an alias for _CTYPE_N.
gnustl is using this. It would be easy to change gnustl to *not* use
it for Android, but we've had this in released NDKs for years now so
we probably need this anyway.

Change-Id: I398a550664bf4ccbd9ea54f53c65428293a599a4
2016-07-15 12:54:05 -07:00
Yabin Cui
cd165f63c2 Merge \"Force pthread_cond_timedwait_relative_np using CLOCK_MONOTONIC.\"
am: a24a2476d0

Change-Id: I5d1ebca87932f915fc33dd44d3b383e83b940d90
2016-07-15 01:39:12 +00:00
Yabin Cui
a24a2476d0 Merge "Force pthread_cond_timedwait_relative_np using CLOCK_MONOTONIC." 2016-07-15 01:29:28 +00:00
Colin Cross
f45e58585c Merge \"Convert malloc_debug from Android.mk to Android.bp\"
am: 0393437b53

Change-Id: Iea3dbd038677e42075c6be87fceeb32e442ae152
2016-07-14 19:47:18 +00:00
Colin Cross
0393437b53 Merge "Convert malloc_debug from Android.mk to Android.bp" 2016-07-14 19:43:29 +00:00
Elliott Hughes
7513194e8a Merge \"Support 32-bit ARM vdso.\"
am: 85f900d589

Change-Id: I20c259c574b519e10efc054b7f2ae13ec9f7b451
2016-07-14 17:32:57 +00:00
Colin Cross
baa4899d38 Convert malloc_debug from Android.mk to Android.bp
Change-Id: I60ad376d222a92a29263c2804dcd1bd0d3c383d0
2016-07-14 09:07:56 -07:00
Yabin Cui
fe4a4d8f67 Force pthread_cond_timedwait_relative_np using CLOCK_MONOTONIC.
Previous patch changed pthread_cond_timedwait_relative_np to use
CLOCK_REALTIME, which causes app compatibility problem. So change
it back to CLOCK_MONOTONIC.

Bug: 30106240
Change-Id: I8e04058e92ede098f4f9f8d133f094001921441e
2016-07-13 16:08:48 -07:00
Elliott Hughes
4ce902c30e Support 32-bit ARM vdso.
Linux 4.1 added this.

Bug: http://b/19198045
Change-Id: I28be802ff403a61dd6733a001411b3ff05fef5a5
2016-07-12 13:55:51 -07:00
Colin Cross
769f3a9153 Merge \"Rename Android.soong.mk to Android.mk\"
am: 7fd1e75e24

Change-Id: I6ee75b0f4f53667eb820542529febcbe1751a494
2016-07-12 16:20:25 +00:00
Colin Cross
7f0e89fadd Rename Android.soong.mk to Android.mk
Soong is always on now, so we don't have to distinguish between
makefiles that should be ignored because Soong is handling them with an
Android.bp file, and makefiles that are still needed with Soong.  All
obsolete Android.mk files have been removed, rename all Android.soong.mk
files to Android.mk.

Change-Id: Ic0494e1800dec13a9f5714559cffe3a5ebe49418
2016-07-11 16:54:20 -07:00
Christopher Ferris
ec9c1d3f00 Merge \"Update the kernel header documentation.\"
am: 4580ea4f16

Change-Id: I69c3d6edb6107183da96f4bf5b36d15cc50dc525
2016-07-08 22:36:56 +00:00
Christopher Ferris
2974eeca4c Update the kernel header documentation.
Change the references to using the android kernel source, to use
the linux stable source code repository.

Change-Id: Ibc6c90fc67c80bef235459bb3af31656f4d403ac
2016-07-08 15:29:51 -07:00
Christopher Ferris
1d9f403ec4 Merge \"Add the record alloc option.\"
am: 779aa5ac33

Change-Id: Icdda3305fef2804b92692b31459fcfde2c83de1c
2016-07-08 22:05:00 +00:00
Christopher Ferris
7bd01783a8 Add the record alloc option.
This option adds the ability to record all of the allocation requests
and dump them to a file when a signal is sent to the process.

Included in this change, redo the option processing to add a new
string option.

Bug: 27747898

Change-Id: Ida043362e38b5eb1d459c99db9c2581015dab366
2016-07-08 14:05:17 -07:00
Neil Fuller
f1f8486776 Merge \"Update timezone data to 2016f\"
am: a0e205e3b4

Change-Id: I6f76a9c1183b601810debfba7fddeb30e543c006
2016-07-07 15:13:12 +00:00
Neil Fuller
516f09c963 Update timezone data to 2016f
The 2016f release of the tz code and data is available. It reflects the
following changes, which were either circulated on the tz mailing list
or are relatively minor technical or administrative changes:

   Changes affecting future time stamps

     The Egyptian government changed its mind on short notice, and
     Africa/Cairo will not introduce DST starting 2016-07-07 after all.
     (Thanks to Mina Samuel.)

     Asia/Novosibirsk switches from +06 to +07 on 2016-07-24 at 02:00.
     (Thanks to Stepan Golosunov.)

   Changes to past and future time stamps

     Asia/Novokuznetsk and Asia/Novosibirsk now use numeric time zone
     abbreviations instead of invented ones.

   Changes affecting past time stamps

     Europe/Minsk's 1992-03-29 spring-forward transition was at 02:00
not 00:00.
     (Thanks to Stepan Golosunov.)

Note: Paul Eggert changed the key used to sign the tzdata bundle and
the new public key cannot be found. The changes to the data since
2016e have been verified visually.

Change-Id: I11b49d9916e67313978fd893acf091e9f99f6d33
Test: Ran CTS/android.core.tests.libcore.package.harmony_java_util
Test: Ran CTS/android.core.tests.libcore.package.harmony_java_text
Test: Ran CTS/android.core.tests.libcore.package.libcore
Bug: 29991153
2016-07-06 18:41:23 +01:00
Elliott Hughes
9d63da82fb Merge \"x86-64\'s va_list is not a pointer type.\"
am: 204c4d1b80

Change-Id: I40675ac38f8442bb4ee66c048752919f7beb099e
2016-06-30 20:53:18 +00:00
Pirama Arumuga Nainar
a227bf399d Merge \"Revert \"Skip Clang\'s integrated-as for hand-coded assembly\"\"
am: 1fec29e77b

Change-Id: I0e3caf46128a44f8cfdd167547817e2d8efe3b5c
2016-06-30 20:49:36 +00:00
Elliott Hughes
53420fb21e x86-64's va_list is not a pointer type.
Change-Id: I680feeb641d5411ac481daaae6fa1580e74c5563
2016-06-30 13:47:16 -07:00
Treehugger Robot
1fec29e77b Merge "Revert "Skip Clang's integrated-as for hand-coded assembly"" 2016-06-30 20:33:42 +00:00
Josh Gao
b6453c52ac Only initialize the global stack protector once.
Before, dynamic executables would initialize the global stack protector
twice, once for the linker, and once for the executable. This worked
because the result was the same for both initializations, because it
used getauxval(AT_RANDOM), which won't be the case once arc4random gets
used for it.

Bug: http://b/29622562
Change-Id: I7718b1ba8ee8fac7127ab2360cb1088e510fef5c
Test: ran the stack protector tests on angler (32/64bit, static/dynamic)
2016-06-30 12:58:32 -07:00
Josh Gao
1089afb744 Make getpid work before TLS has been initialized.
Bug: http://b/29622562
Change-Id: I648adc35c04604a7e8bc649c425f07a723e96d3a
Test: code dependent on this change no longer crashes
2016-06-30 12:58:32 -07:00
Elliott Hughes
6c6a696332 Merge \"Apparently mips and x86\'s va_list is a pointer type.\"
am: 60be638ae6

Change-Id: I72cf962f53e703b2b52529f43cc2cf8b1ad106f3
2016-06-30 19:55:44 +00:00
Elliott Hughes
8ed118db61 Apparently mips and x86's va_list is a pointer type.
And clang won't let you have a function declaration where some arguments
have nullability specifiers and others don't.

Change-Id: I450b0221a3f7f068d5fe971dfbc0ba91d25710e8
2016-06-30 12:46:21 -07:00
Elliott Hughes
f4d5d9e9c7 Merge \"Remove __nonnull (in favor of _Nonnull).\"
am: 3b4e11faa8

Change-Id: I5b844da400d21cc64730065f2f9a2111a89ea560
2016-06-30 18:18:38 +00:00