Greg Hackmann
6ac8e6a46d
bionic: reimplement property area as hybrid trie/binary tree
...
See the comments for an explanation of how properties are stored.
The trie structure is designed to scale better than the previous
array-based implementation. Searching an array with n properties
required average O(n) string compares of the entire key; searching the
trie requires average O(log n) string compares of each token (substrings
between '.' characters).
Change-Id: I491305bc7aca59609abcd871a5f33d97f89ce714
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 13:14:09 -07:00
Greg Hackmann
a823883548
Merge "bionic: add missing memory barriers to system properties"
2013-06-24 17:15:43 +00:00
Nick Kralevich
ae9353387d
am 100d6784
: am 53ddcc90
: Merge "linker: Emit a warning on text relocations"
...
* commit '100d678438f222ad6ef8f3dc0646911b218c50a9':
linker: Emit a warning on text relocations
2013-06-21 16:01:02 -07:00
Nick Kralevich
100d678438
am 53ddcc90
: Merge "linker: Emit a warning on text relocations"
...
* commit '53ddcc90701d86c7d809a84cf4710c651066e3c7':
linker: Emit a warning on text relocations
2013-06-21 15:39:21 -07:00
Nick Kralevich
53ddcc9070
Merge "linker: Emit a warning on text relocations"
2013-06-21 22:36:50 +00:00
Nick Kralevich
c9084427aa
linker: Emit a warning on text relocations
...
Text relocations unnecessarily mark pages as dirty, preventing them
from being swapped out, wasting memory. Also, text relocations
prevent the code from running on certain hardened systems.
Print a message in logcat and stderr when we see a text relocation,
to encourage developers to fix their code.
Change-Id: I6051a7463911e090ae5727a355397d539669d5b9
2013-06-21 15:33:15 -07:00
Nick Kralevich
cf3c9ce0f5
am cb25359a
: am 68197731
: Merge "libc_logging: don\'t keep file descriptors open forever"
...
* commit 'cb25359a2e20489a3a9f65795a2079abc8fe0b65':
libc_logging: don't keep file descriptors open forever
2013-06-21 15:15:22 -07:00
Nick Kralevich
cb25359a2e
am 68197731
: Merge "libc_logging: don\'t keep file descriptors open forever"
...
* commit '6819773103495a6fd81f024dc6711771320ae4ec':
libc_logging: don't keep file descriptors open forever
2013-06-21 14:33:48 -07:00
Nick Kralevich
6819773103
Merge "libc_logging: don't keep file descriptors open forever"
2013-06-21 21:26:09 +00:00
Nick Kralevich
17fc25d20f
libc_logging: don't keep file descriptors open forever
...
Avoid keeping unnecessary file descriptors around when they're not
needed. Libc doesn't log so much that opening / closing overhead
matters.
Change-Id: I590ec5c27562db9bac025f781c48ec9a7724ce77
2013-06-21 13:28:42 -07:00
Greg Hackmann
5bfa3ee8b3
bionic: add missing memory barriers to system properties
...
1) Reading the value must finish before checking whether it's intact
2) Setting the serial's dirty bit must visible before modifying the
value
3) The modified value must be visible before clearing the serial's dirty
bit
4) New properties and their TOC entries must be visible before updating
the property count
Change-Id: I26c680ec025fdb72362d5f618ec0d2b93d381233
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-20 14:41:58 -07:00
Nick Kralevich
33ae76abf3
am 5fed0eea
: am 0ce28d20
: Merge "libc: enable FORTIFY_SOURCE clang strlcpy"
...
* commit '5fed0eeabd88bfe241c416f2c2f44a14b6e447fa':
libc: enable FORTIFY_SOURCE clang strlcpy
2013-06-20 12:34:11 -07:00
Nick Kralevich
5fed0eeabd
am 0ce28d20
: Merge "libc: enable FORTIFY_SOURCE clang strlcpy"
...
* commit '0ce28d20ea5fde250576f355004dbcd741b0b884':
libc: enable FORTIFY_SOURCE clang strlcpy
2013-06-20 12:29:38 -07:00
Nick Kralevich
0ce28d20ea
Merge "libc: enable FORTIFY_SOURCE clang strlcpy"
2013-06-20 19:27:48 +00:00
Nick Kralevich
8bafa7452e
libc: enable FORTIFY_SOURCE clang strlcpy
...
Change-Id: Idcfe08f5afc3dde592416df9eba83f64e130c7c2
2013-06-20 12:17:44 -07:00
Elliott Hughes
cb4fd62762
am 33df38a0
: am 4eed6509
: Merge "stdint.h header is not fully compatible with C99(ISO9899:1999)"
...
* commit '33df38a04c31de0fca431c549469edb6d2de75e2':
stdint.h header is not fully compatible with C99(ISO9899:1999)
2013-06-19 12:57:39 -07:00
Elliott Hughes
33df38a04c
am 4eed6509
: Merge "stdint.h header is not fully compatible with C99(ISO9899:1999)"
...
* commit '4eed65090b1f0d0d087f26bd7367da90a0cca92d':
stdint.h header is not fully compatible with C99(ISO9899:1999)
2013-06-19 12:46:40 -07:00
Elliott Hughes
4eed65090b
Merge "stdint.h header is not fully compatible with C99(ISO9899:1999)"
2013-06-19 19:45:09 +00:00
Greg Hackmann
d32969701b
bionic: make property area expandable
...
The property area is initially one 4K region, automatically expanding as
needed up to 64 regions.
To avoid duplicating code, __system_property_area_init() now allocates
and initializes the first region (previously it was allocated in init's
init_property_area() and initialized in bionic). For testing purposes,
__system_property_set_filename() may be used to override the file used
to map in regions.
Change-Id: Ibe00ef52464bfa590953c4699a6d98383b0142b1
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-19 11:02:15 -07:00
Nick Kralevich
373ea006ce
am 1d174a9c
: am 02ca0e31
: Merge "Fix FORTIFY_SOURCE unittests."
...
* commit '1d174a9c17f645a27d766a66e7477d797f955e90':
Fix FORTIFY_SOURCE unittests.
2013-06-19 10:40:46 -07:00
Nick Kralevich
1d174a9c17
am 02ca0e31
: Merge "Fix FORTIFY_SOURCE unittests."
...
* commit '02ca0e314219a4c7205a180a414c509651043f13':
Fix FORTIFY_SOURCE unittests.
2013-06-19 10:36:55 -07:00
Nick Kralevich
02ca0e3142
Merge "Fix FORTIFY_SOURCE unittests."
2013-06-19 17:33:57 +00:00
Colin Cross
700b548738
am f4250508
: am 3225f498
: Merge "bionic: add __system_property_foreach"
...
* commit 'f4250508d5de415e200888ffdf143f870dc0f829':
bionic: add __system_property_foreach
2013-06-19 10:31:11 -07:00
Colin Cross
f4250508d5
am 3225f498
: Merge "bionic: add __system_property_foreach"
...
* commit '3225f4984837c4d9e6e9495d2154f2d9987cf457':
bionic: add __system_property_foreach
2013-06-19 10:27:23 -07:00
Colin Cross
3225f49848
Merge "bionic: add __system_property_foreach"
2013-06-19 17:26:17 +00:00
Nick Kralevich
3cd4cac2ce
Fix FORTIFY_SOURCE unittests.
...
The compiler is too damn smart.
Change-Id: Ibef3ef41ec99f8cd9c06f1dbca535819f9a08197
2013-06-19 10:25:44 -07:00
Sergey Melnikov
dc5d3426d8
stdint.h header is not fully compatible with C99(ISO9899:1999)
...
stdint.h provides macros with incorrect type:
* UINT8_C
* UINT16_C
* UINT8_MAX
* UINT16_MAX
Signed-off-by: Sergey Melnikov <sergey.melnikov@intel.com>
Change-Id: I2d130c782d4485bf6c9e9f068de0bdaa4ba7303f
2013-06-19 12:33:31 +04:00
Greg Hackmann
c6ff844d75
bionic: add __system_property_foreach
...
find_nth() will be inefficient on a trie. Since find_nth() is only used
internally and only for enumerating properties, we can add a foreach()
function to do this directly.
Signed-off-by: Greg Hackmann <ghackmann@google.com>
(cherry picked from commit 577418403d
)
Change-Id: Iaca97d1182ce2c28863ba85241cbb5cf6185eb2f
2013-06-18 19:24:29 -07:00
Greg Hackmann
577418403d
bionic: add __system_property_foreach
...
find_nth() will be inefficient on a trie. Since find_nth() is only used
internally and only for enumerating properties, we can add a foreach()
function to do this directly.
Change-Id: I66bde9926c193073d74b244cce9fffd52108fff8
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-18 15:38:31 -07:00
Geremy Condra
1791cb0001
Merge "Fix remove_uidiface_info failing on first entry"
2013-06-18 21:43:52 +00:00
Elliott Hughes
fb11350c81
am 13e23302
: am c656d732
: Merge "Always use v1 for MIPS TLS access."
...
* commit '13e23302c93fdd8b52c606277f32dec0627ddbbd':
Always use v1 for MIPS TLS access.
2013-06-18 14:00:59 -07:00
Elliott Hughes
13e23302c9
am c656d732
: Merge "Always use v1 for MIPS TLS access."
...
* commit 'c656d732c7712b0f73d9c560ccf3cb5ae47d219d':
Always use v1 for MIPS TLS access.
2013-06-18 13:57:57 -07:00
Elliott Hughes
c656d732c7
Merge "Always use v1 for MIPS TLS access."
2013-06-18 20:56:25 +00:00
Nick Kralevich
83476f0747
am d98d35c5
: am 0846109c
: Merge "libc: Rename fortify error functions."
...
* commit 'd98d35c5380ce398038d3062d40bc4fe082dce80':
libc: Rename fortify error functions.
2013-06-18 13:31:56 -07:00
Nick Kralevich
227079bb67
am 3bf62790
: am dd0880fe
: Merge "libc: add limited FORTIFY_SOURCE support for clang"
...
* commit '3bf6279034e6a92c3550fae31c5c136bec61344a':
libc: add limited FORTIFY_SOURCE support for clang
2013-06-18 13:31:56 -07:00
Elliott Hughes
6a87df87a2
am 45ef218b
: am 6807af77
: Merge "Make LD_PRELOAD failures just warnings."
...
* commit '45ef218bde353df455062aa3c9a9f84ffed769fc':
Make LD_PRELOAD failures just warnings.
2013-06-18 13:31:55 -07:00
Colin Cross
bf03f1b4d6
am e421bd71
: am 02002443
: Merge "bionic: fix deleting property arrays in property benchmark"
...
* commit 'e421bd71c32e35b8f39f2e51f2d534d2f21f139f':
bionic: fix deleting property arrays in property benchmark
2013-06-18 13:27:29 -07:00
Nick Kralevich
d98d35c538
am 0846109c
: Merge "libc: Rename fortify error functions."
...
* commit '0846109c96d54a28e413893b0cd4b4acb3aa87fc':
libc: Rename fortify error functions.
2013-06-18 13:27:18 -07:00
Nick Kralevich
3bf6279034
am dd0880fe
: Merge "libc: add limited FORTIFY_SOURCE support for clang"
...
* commit 'dd0880fec3bb8c998680e78aff9e2ddc2bcf6d7a':
libc: add limited FORTIFY_SOURCE support for clang
2013-06-18 13:27:17 -07:00
Elliott Hughes
45ef218bde
am 6807af77
: Merge "Make LD_PRELOAD failures just warnings."
...
* commit '6807af773f862750efb6860e00402580a5f463f3':
Make LD_PRELOAD failures just warnings.
2013-06-18 13:27:16 -07:00
Elliott Hughes
a33dc57c7c
Always use v1 for MIPS TLS access.
...
Change-Id: Ic2850b90185cfbc5b0eff804c8b74a1c553c0852
2013-06-18 13:26:22 -07:00
Nick Kralevich
0846109c96
Merge "libc: Rename fortify error functions."
2013-06-18 20:24:04 +00:00
Colin Cross
e421bd71c3
am 02002443
: Merge "bionic: fix deleting property arrays in property benchmark"
...
* commit '02002443d4b17de78418d51fc303b4c976ad071a':
bionic: fix deleting property arrays in property benchmark
2013-06-18 13:23:51 -07:00
Nick Kralevich
dd0880fec3
Merge "libc: add limited FORTIFY_SOURCE support for clang"
2013-06-18 20:23:49 +00:00
Elliott Hughes
6807af773f
Merge "Make LD_PRELOAD failures just warnings."
2013-06-18 20:23:07 +00:00
Colin Cross
02002443d4
Merge "bionic: fix deleting property arrays in property benchmark"
2013-06-18 20:22:25 +00:00
Nick Kralevich
ce7c2f28c6
am ba6c021a
: am e2fb05b4
: Merge "libc: Introduce __errordecl()"
...
* commit 'ba6c021a53376c75993cc9866deb7c7ff6e1750d':
libc: Introduce __errordecl()
2013-06-18 13:21:00 -07:00
Nick Kralevich
ba6c021a53
am e2fb05b4
: Merge "libc: Introduce __errordecl()"
...
* commit 'e2fb05b45b9af7b9af8df0ea15bfec63d331d882':
libc: Introduce __errordecl()
2013-06-18 13:17:35 -07:00
Nick Kralevich
e2fb05b45b
Merge "libc: Introduce __errordecl()"
2013-06-18 20:15:33 +00:00
Elliott Hughes
7e5a8cc523
Make LD_PRELOAD failures just warnings.
...
This matches glibc and makes life easier for developers who want to
sometimes preload a library from init (which has no conditionals); they
can simply move/remove the library to disable.
Change-Id: I579b8633f958235af6e46bb53b378b9e363afb1f
2013-06-18 13:15:00 -07:00