Compare commits

...

3421 Commits

Author SHA1 Message Date
Chad Brubaker
081db840be Allow overlap in resolv uid => DNS iface mapping
When multiple rules exist covering a given uid the one added most
recently will be used.

This allows us to handle the simultaneous tuns case where a new tun is
coming online for an already running VPN.

_resolv_clear_iface_for_uid_range now also takes the iface and removes
only that matching (iface, uid range) entry.

Bug: 12134439
Change-Id: I9b9cfcfae2f38c409022a8c76ccadad7e2babd78
2014-03-15 15:29:01 -07:00
Elliott Hughes
04583ce9b9 Upgrade to tzdata2014a.
From the release notes:

  Changes affecting near-future time stamps

    Turkey begins DST on 2014-03-31, not 03-30.  (Thanks to Faruk Pasin
    for the heads-up, and to Tim Parenti for simplifying the update.)

  Changes affecting past time stamps

    Fiji ended DST on 2014-01-19 at 02:00, not the previously-scheduled
    03:00.  (Thanks to Steffen Thorsen.)

    Ukraine switched from Moscow to Eastern European time on 1990-07-01
    (not 1992-01-01), and observed DST during the entire next winter.
    (Thanks to Vladimir in Moscow via Alois Treindl.)

    In 1988 Israel observed DST from 04-10 to 09-04, not 04-09 to
    09-03.  (Thanks to Avigdor Finkelstein.)

(cherry picked from commit 159b28eb46)

Bug: 13193205
Change-Id: I3d302039f7e057a97c9d307ce8d32efa056481ed
2014-03-10 15:23:02 -07:00
Robert Greenwalt
abf91850f9 Merge "Fix dns searchdomain use in gethostbyname." into klp-dev 2014-03-05 18:26:27 +00:00
Elliott Hughes
806f3bd7aa Upgrade to tzdata2013i.
From the release notes:

  Changes affecting near-future time stamps:

    Jordan switches back to standard time at 00:00 on December 20, 2013.
    The 2006-2011 transition schedule is planned to resume in 2014.
    (Thanks to Steffen Thorsen.)

  Changes affecting past time stamps:

    In 2004, Cuba began DST on March 28, not April 4.
    (Thanks to Steffen Thorsen.)

Bug: 13193205
Change-Id: I8f26cc50f6b571804a18ff2113b4a47a22bc56dd
2014-02-25 22:47:29 +00:00
Robert Greenwalt
5fddfb8915 Fix dns searchdomain use in gethostbyname.
Need to load search domain data before we attempt to use it.
This is a cherry pick of an AOSP change c11f6f0f39.

bug:6799630

Change-Id: I4ea1131f06ffdf4037fe67f82af5a0349469b609
2013-12-12 21:34:36 +00:00
Elliott Hughes
5ab8d33aa6 Upgrade to tzdata2013h.
From the release notes:

  Changes affecting current and future time stamps:

    Libya has switched its time zone back to UTC+2 without DST,
    instead of UTC+1 with DST.  (Thanks to Even Scharning.)

    Western Sahara (Africa/El_Aaiun) uses Morocco's DST rules.
    (Thanks to Gwillim Law.)

  Changes affecting future time stamps:

    Acre and (we guess) western Amazonas will switch from UTC-4 to UTC-5
    on 2013-11-10.  This affects America/Rio_Branco and America/Eirunepe.
    (Thanks to Steffen Thorsen.)

    Add entries for DST transitions in Morocco in the year 2038.
    This avoids some year-2038 glitches introduced in 2013g.
    (Thanks to Yoshito Umaoka for reporting the problem.)

(cherry picked from commit 3df3879bd6)

Change-Id: Ibdac6cc1db0fe24c62fe68e99d057dface6b6745
2013-10-31 13:41:31 -07:00
Ed Heyl
be662187aa merge in klp-release (no-op) 2013-10-16 17:34:49 -07:00
The Android Automerger
8e39d2f9f4 merge in klp-release history after reset to klp-dev 2013-10-15 21:13:52 -07:00
Christopher Ferris
fbefb252b0 Modify prefetch for krait memcpy.
I originally modified the krait mainloop prefetch from cacheline * 8 to * 2.
This causes a perf degradation for copies bigger than will fit in the cache.
Fixing this back to the original * 8. I tried other multiples, but * 8 is th
sweet spot on krait.

Bug: 11221806

(cherry picked from commit c3c58fb560)

Change-Id: I369f81d91ba97a3fcecac84ac57dec921b4758c8
2013-10-15 15:44:00 -07:00
Christopher Ferris
ac6bc31942 Remove new aligned memcpy path for cortex-a15.
For some reason the new cortex-a15 memcpy code from ARM is really bad
for really large copies. This change forces us to go down the old path
for all copies.

All of my benchmarks show the new version is faster for large copies, but
something is going on that I don't understand.

Bug: 10838353
Change-Id: I01c16d4a2575e76f4c69862c6f78fd9024eb3fb8
2013-10-15 14:54:02 -07:00
Ed Heyl
f87684eea1 merge in KQS81M 2013-10-08 15:35:17 -07:00
The Android Automerger
303f08b439 merge in klp-release history after reset to klp-dev 2013-10-08 06:00:18 -07:00
Elliott Hughes
3fce401590 Upgrade to tzdata2013g.
From the release notes:

  Changes affecting current and near-future time stamps

    Morocco now observes DST from the last Sunday in March to the last
    Sunday in October, not April to September respectively.  (Thanks
    to Steffen Thorsen.)

(cherry picked from commit 40f072192f)

Change-Id: I247f8cf4ef32ec5d6e6fe3845f9a8977b7e748b9
2013-10-06 19:59:14 -07:00
Elliott Hughes
e1fe52ccf1 Upgrade to tzdata2013f.
From the release notes:

  Changes affecting near-future time stamps

    Tocantins will very likely not observe DST starting this spring.
    (Thanks to Steffen Thorsen.)

    Jordan will likely stay at UTC+3 indefinitely, and will not fall
    back this fall.

    Palestine will fall back at 00:00, not 01:00.  (Thanks to Steffen Thorsen.)

(cherry picked from commit 4ced7ef05a)

Change-Id: Icd4754694fbe3b7c475a63666eeeab36c72908ac
2013-10-06 11:41:17 -07:00
Elliott Hughes
21f5927605 Upgrade to tzdata2013e.
From the release notes:

  Changes affecting near-future time stamps

    This year Fiji will start DST on October 27, not October 20.
    (Thanks to David Wheeler for the heads-up.)  For now, guess that
    Fiji will continue to spring forward the Sunday before the fourth
    Monday in October.

  Changes affecting time stamps before 1970

    Pacific/Johnston is now a link to Pacific/Honolulu.  This corrects
    some errors before 1947.

    Some zones have been turned into links, when they differ from
    existing zones only in older data that was likely invented or that
    differs only in LMT or transition from LMT.  These changes affect
    only time stamps before 1943.  The affected zones are:
    Africa/Juba, America/Anguilla, America/Aruba, America/Dominica,
    America/Grenada, America/Guadeloupe, America/Marigot,
    America/Montserrat, America/St_Barthelemy, America/St_Kitts,
    America/St_Lucia, America/St_Thomas, America/St_Vincent,
    America/Tortola, and Europe/Vaduz.  (Thanks to Alois Treindl for
    confirming that the old Europe/Vaduz zone was wrong and the new
    link is better for WWII-era times.)

    Change Kingston Mean Time from -5:07:12 to -5:07:11.  This affects
    America/Cayman, America/Jamaica and America/Grand_Turk time stamps
    from 1890 to 1912.

    Change the UT offset of Bern Mean Time from 0:29:44 to 0:29:46.
    This affects Europe/Zurich time stamps from 1853 to 1894.  (Thanks
    to Alois Treindl).

    Change the date of the circa-1850 Zurich transition from 1849-09-12
    to 1853-07-16, overriding Shanks with data from Messerli about
    postal and telegraph time in Switzerland.

  Data changes affecting behavior of tzselect and similar programs

    Country code BQ is now called the more-common name "Caribbean Netherlands"
    rather than the more-official "Bonaire, St Eustatius & Saba".

    Remove from zone.tab the names America/Montreal, America/Shiprock,
    and Antarctica/South_Pole, as they are equivalent to existing
    same-country-code zones for post-1970 time stamps.  The data for
    these names are unchanged, so the names continue to work as before.

(cherry picked from commit 35b123ef1e)

Change-Id: Ieb2627cc817db93280ceabe4034800bf36ca3f5f
2013-10-06 11:40:07 -07:00
The Android Automerger
33f6390064 merge in klp-release history after reset to klp-dev 2013-09-29 06:00:40 -07:00
Christopher Ferris
34c2a9fc37 Move stack unwinding test into library.
Bug: 8291716

(cherry picked from commit 8240bed918)

Change-Id: I1da2d0757ed304c352229f9818c052925d4e976a
2013-09-23 12:16:19 -07:00
Christopher Ferris
f4af911065 Create bionic unit test library for use with CTS.
Bug: 8291716

(cherry picked from commit 153d92765b)

Change-Id: Ia53b85b95621b7000034e4c6259d6586d0987dee
2013-09-23 12:16:01 -07:00
Christopher Ferris
7bfef355b1 Change hard-coded directory.
The tests are using /data/data which is not accessible to a non-root
user. Change this to /data/local/tmp which is accessible to all users.

Bug: 8291716

(cherry picked from commit 5227bb363d)

Change-Id: I83bf70aa8edd21b00321363d7ddcb65a5f048ba5
2013-09-23 12:12:58 -07:00
Christopher Ferris
6d1f85dcdc Change hard-coded temporary directory.
The properties tests creates a temporary directory in /data/nativetest,
but this directory might not exist in all circumstances.
Change this to create the temporary directory in /data/local/tmp.

(cherry picked from commit bd6dc6a886)

Change-Id: I15144ece7ffb5c29eded9a1ef399db630f6af5ab
2013-09-23 12:10:49 -07:00
Elliott Hughes
e0d1d4cf49 am 6ebc24fc: am d3f9e815: resolved conflicts for merge of 5d0ad38c to jb-mr2-dev
* commit '6ebc24fcc3cf07f1be936ef9d7a8c3afff1861c7':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 11:50:20 -07:00
Elliott Hughes
6ebc24fcc3 am d3f9e815: resolved conflicts for merge of 5d0ad38c to jb-mr2-dev
* commit 'd3f9e8155bfc17b2d67d2ffe5bc1d3a5e2656cd4':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 11:46:09 -07:00
Brian Carlstrom
7751d9158f Use kernel default for initial thread size
Bug: 10697851

Change-Id: I8d980f5e0b584799536f6e6b891056c968d26cdf
2013-09-13 11:16:50 -07:00
Elliott Hughes
d3f9e8155b resolved conflicts for merge of 5d0ad38c to jb-mr2-dev
Change-Id: I606f6d86aad46c5eda0dc0d907fe691ca0eea826
2013-09-13 11:16:11 -07:00
Elliott Hughes
5d0ad38c72 resolved conflicts for merge of ca2c6f75 to jb-mr1-dev-plus-aosp
Change-Id: If84f3c832a21ca1adf1a8009f50aa4a10f42a57e
2013-09-13 11:09:46 -07:00
Elliott Hughes
ca2c6f75a8 am 592c0708: am b30f6eb0: am 9e6104d5: resolved conflicts for merge of 05292dd6 to jb-mr1-dev
* commit '592c07084bf0d86b42e216002e5aaabf40023ea8':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 10:56:39 -07:00
Elliott Hughes
592c07084b am b30f6eb0: am 9e6104d5: resolved conflicts for merge of 05292dd6 to jb-mr1-dev
* commit 'b30f6eb026db05c969afacc758e529e73f0e314d':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 10:53:43 -07:00
Elliott Hughes
b30f6eb026 am 9e6104d5: resolved conflicts for merge of 05292dd6 to jb-mr1-dev
* commit '9e6104d54f541d43d3c1b785f2dfc1d2e09c0f2f':
  Upgrade pre-jb-mr2 releases to tzdata2013d.
2013-09-13 10:51:31 -07:00
Elliott Hughes
9e6104d54f resolved conflicts for merge of 05292dd6 to jb-mr1-dev
Change-Id: I051cad5dc3c985f11c52708f4487e64ea45ca617
2013-09-13 10:17:10 -07:00
Elliott Hughes
05292dd65b resolved conflicts for merge of cc7f0dc5 to jb-dev-plus-aosp
Change-Id: I812d0007ddd1576583a4749461b57ee33fb1eb15
2013-09-13 10:09:56 -07:00
Brian Carlstrom
9a74e36f48 Use kernel default for initial thread size
Bug: 10697851

Change-Id: I8d980f5e0b584799536f6e6b891056c968d26cdf
2013-09-12 22:19:44 -07:00
The Android Automerger
25519f0fb0 merge in klp-release history after reset to klp-dev 2013-09-11 06:00:09 -07:00
Christopher Ferris
883ef2499c __memcpy_chk: Fix signed cmp of unsigned values.
I accidentally did a signed comparison of the size_t values passed in
for three of the _chk functions. Changing them to unsigned compares.

Add three new tests to verify this failure is fixed.

Bug: 10691831
Change-Id: Ia831071f7dffd5972a748d888dd506c7cc7ddba3
2013-09-10 17:34:03 -07:00
The Android Automerger
82a8fe37d7 merge in klp-release history after reset to klp-dev 2013-09-02 06:00:18 -07:00
Christopher Ferris
49c0d471a8 Merge "Fix all debug directives." into klp-dev 2013-08-29 21:21:20 +00:00
Christopher Ferris
05332f2ce7 Fix all debug directives.
The backtrace when a fortify check failed was not correct. This change
adds all of the necessary directives to get a correct backtrace.

Fix the strcmp directives and change all labels to local labels.

Testing:
- Verify that the runtime can decode the stack for __memcpy_chk, __memset_chk,
  __strcpy_chk, __strcat_chk fortify failures.
- Verify that gdb can decode the stack properly when hitting a fortify check.
- Verify that the runtime can decode the stack for a seg fault for all of the
  _chk functions and for memcpy/memset.
- Verify that gdb can decode the stack for a seg fault for all of the _chk
  functions and for memcpy/memset.
- Verify that the runtime can decode the stack for a seg fault for strcmp.
- Verify that gdb can decode the stack for a seg fault in strcmp.

Bug: 10342460
Bug: 10345269

Change-Id: I1dedadfee207dce4a285e17a21e8952bbc63786a
2013-08-28 15:42:05 -07:00
The Android Automerger
da4bedf52f merge in klp-release history after reset to klp-dev 2013-08-27 06:00:58 -07:00
Brian Carlstrom
6ab75bf41e Merge "Fix pthread_getcpuclockid." into klp-dev 2013-08-26 21:21:17 +00:00
Jeff Hao
e9e10c13ff Fix pthread_getcpuclockid.
clock_gettime was returning EINVAL for the values
produced by pthread_getcpuclockid.

Bug: 10346183

(cherry picked from commit 9b06cc3c1b)

Change-Id: Ib81a7024c218a4502f256c3002b9030e2aaa278d
2013-08-26 14:04:16 -07:00
The Android Automerger
8eca269b4b merge in klp-release history after reset to klp-dev 2013-08-26 06:00:41 -07:00
Robert Greenwalt
26ac803232 Merge "Change how DNS resolver handle no default iface" into klp-dev 2013-08-24 12:20:01 +00:00
Robert Greenwalt
d67662b9d6 Change how DNS resolver handle no default iface
We used to just try any iface we'd been told about as a
fallback, but that will end up mistakenly using a secondary
network's dns when we really don't have a default connection.

It also messed up our detection of whether we were doing the
lookup on the default or not (we'd get back our secondary net
iface as the default, do the compare and think we were on default).

Remove the lies and let dns fail if we don't have an iface for it.

bug:10132565

Conflicts:
	libc/netbsd/resolv/res_cache.c

Change-Id: I357a9c34dad83215f44c5e0dd41ce2a7d6fe8f3f
2013-08-23 11:48:26 -07:00
Elliott Hughes
345eb225ae Apply upstream commit 943a6621866e9d6e654f5cfe1494378c1fb8957a.
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Thu Aug 22 12:47:51 2013 -0700

    * localtime.c: Fix another integer overflow bug in mktime.

    (time2sub): Avoid undefined behavior on time_t overflow.
    Reported by Elliott Hughes in
    <http://mm.icann.org/pipermail/tz/2013-August/019580.html>.

Bug: 10310929

(cherry picked from commit 713fe6463e)

Change-Id: I9ec79fd8d825e6b9e8bb5af549dbfc2182346c05
2013-08-22 14:29:07 -07:00
Elliott Hughes
f0c10a4a16 Work around tzcode's reliance on signed overflow.
I've mailed the tz list about this, and will switch to whatever upstream
fix comes along as soon as it's available.

Bug: 10310929

(cherry picked from commit 7843d44a59)

Change-Id: I205e2440703444c50cecd91d3458d33613ddbc59
2013-08-22 12:23:47 -07:00
The Android Automerger
13ea69528e merge in klp-release history after reset to klp-dev 2013-08-22 06:00:33 -07:00
Brian Carlstrom
9ef1fbb644 Make mips_relocate_got tolerate a missing got
Bug: 10094803

(cherry picked from commit 7ee26878065abb494600595349ce58b2b2db3709)

Change-Id: I9fbb65d20011f2f625fde3b15ac8c6887dd03ae4
2013-08-21 10:20:53 -07:00
The Android Automerger
948fbefa2a merge in klp-release history after reset to klp-dev 2013-08-21 06:01:31 -07:00
Christopher Ferris
5f7ccea3ff Update all debug directives.
The libcorkscrew stack unwinder does not understand cfi directives,
so add .save directives so that it can function properly.

Also add the directives in to strcmp.S and fix a missing set of
directives in cortex-a9/memcpy_base.S.

Bug: 10345269

Change-Id: I043f493e0bb6c45bd3f4906fbe1d9f628815b015
2013-08-20 11:22:34 -07:00
The Android Automerger
de19a0c55d merge in klp-release history after reset to klp-dev 2013-08-14 06:04:54 -07:00
Christopher Ferris
f0c3d90913 Create optimized __strcpy_chk/__strcat_chk.
This change pulls the memcpy code out into a new file so that the
__strcpy_chk and __strcat_chk can use it with an include.

The new versions of the two chk functions uses assembly versions
of strlen and memcpy to implement this check. This allows near
parity with the assembly versions of strcpy/strcat. It also means that
as memcpy implementations get faster, so do the chk functions.

Other included changes:
- Change all of the assembly labels to local labels. The other labels
  confuse gdb and mess up backtracing.
- Add .cfi_startproc and .cfi_endproc directives so that gdb is not
  confused when falling through from one function to another.
- Change all functions to use cfi directives since they are more powerful.
- Move the memcpy_chk fail code outside of the memcpy function definition
  so that backtraces work properly.
- Preserve lr before the calls to __fortify_chk_fail so that the backtrace
  actually works.

Testing:

- Ran the bionic unit tests. Verified all error messages in logs are set
  correctly.
- Ran libc_test, replacing strcpy with __strcpy_chk and replacing
  strcat with __strcat_chk.
- Ran the debugger on nexus10, nexus4, and old nexus7. Verified that the
  backtrace is correct for all fortify check failures. Also verify that
  when falling through from __memcpy_chk to memcpy that the backtrace is
  still correct. Also verified the same for __memset_chk and bzero.
  Verified the two different paths in the cortex-a9 memset routine that
  save variables to the stack still show the backtrace properly.

Bug: 9293744
Change-Id: Id5aec8c3cb14101d91bd125eaf3770c9c8aa3f57
(cherry picked from commit 2be91915dc)
2013-08-14 07:46:00 +00:00
Elliott Hughes
3912f90e56 Make ctype.h a little less unhygienic.
This caused trouble for stlport.

(cherry picked from commit 5e9b20f721)

Change-Id: I85d09c12c6de1e8502f83e0ef0f17747fdfe08a5
2013-08-13 14:42:43 -07:00
Elliott Hughes
5951e84646 Fix our missing abs/labs/llabs/imaxabs (and imaxdiv) symbols.
(cherry picked from commit aec2ffbc5a)

Change-Id: Ib61b52dc37e63493094a0a7af23bf89d4a9f0ce5
2013-08-13 14:41:07 -07:00
The Android Automerger
f63a467cdd merge in klp-release history after reset to klp-dev 2013-08-12 06:00:44 -07:00
Elliott Hughes
9e9d1e016f resolved conflicts for merge of 86125aca to klp-dev
Change-Id: I78622ecbad27301b285193a085fa04374aa60033
2013-08-08 18:08:33 -07:00
Elliott Hughes
ceb670cfc0 Merge branch 'klp-dev' of https://googleplex-android.googlesource.com/_direct/platform/bionic into klp-dev 2013-08-08 17:53:31 -07:00
Christopher Ferris
1036cd7939 am 6beb3ea6: (-s ours) am d7d5049d: (-s ours) am 632fd518: (-s ours) Merge "Fix strcpy.c that should have been strcpy.S. DO NOT MERGE"
* commit '6beb3ea6a1a49baef001ddd8c6872631f5e90f82':
  Fix strcpy.c that should have been strcpy.S. DO NOT MERGE
2013-08-08 17:53:19 -07:00
Christopher Ferris
5ec2ab68f9 am 21b4ffa7: (-s ours) am 5427eb5c: (-s ours) am e2066293: (-s ours) Merge "Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE"
* commit '21b4ffa7372b029e5a4898b877feb843da2831e9':
  Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE
2013-08-08 17:53:18 -07:00
Elliott Hughes
840a114eb1 Add futimens.
(cherry picked from commit d0be7c8f9a)

Bug: 10239370
Change-Id: I0087e85a94d83b6ce68ec6a0768c44cbe4bd0132
2013-08-08 17:52:06 -07:00
Elliott Hughes
86125acacd am dce94165: am ee48fed5: Merge "Add futimens."
* commit 'dce94165a5624935db9855e208420d36c763f771':
  Add futimens.
2013-08-08 17:45:45 -07:00
Christopher Ferris
6beb3ea6a1 am d7d5049d: (-s ours) am 632fd518: (-s ours) Merge "Fix strcpy.c that should have been strcpy.S. DO NOT MERGE"
* commit 'd7d5049d58427e23318fa1920d63712676fc7725':
  Fix strcpy.c that should have been strcpy.S. DO NOT MERGE
2013-08-08 17:45:45 -07:00
Christopher Ferris
21b4ffa737 am 5427eb5c: (-s ours) am e2066293: (-s ours) Merge "Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE"
* commit '5427eb5c63417c7bc59bbfe112c97917dcef4e8c':
  Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE
2013-08-08 17:45:44 -07:00
Elliott Hughes
dce94165a5 am ee48fed5: Merge "Add futimens."
* commit 'ee48fed51894f3db324e957058ed2ddcf23dddc7':
  Add futimens.
2013-08-08 17:41:15 -07:00
Christopher Ferris
d7d5049d58 am 632fd518: (-s ours) Merge "Fix strcpy.c that should have been strcpy.S. DO NOT MERGE"
* commit '632fd5183a611b80e009be36f881f572acc41619':
  Fix strcpy.c that should have been strcpy.S. DO NOT MERGE
2013-08-08 17:41:15 -07:00
Christopher Ferris
5427eb5c63 am e2066293: (-s ours) Merge "Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE"
* commit 'e2066293e8279641d4abd13ec3fbdd6f42def83d':
  Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE
2013-08-08 17:41:14 -07:00
Elliott Hughes
ee48fed518 Merge "Add futimens." 2013-08-09 00:37:32 +00:00
Elliott Hughes
d0be7c8f9a Add futimens.
Bug: 10239370
Change-Id: I518340084103dc339ef8a065d4837d6258a1381d
2013-08-08 17:13:33 -07:00
Christopher Ferris
632fd5183a Merge "Fix strcpy.c that should have been strcpy.S. DO NOT MERGE" 2013-08-08 19:12:20 +00:00
Christopher Ferris
e2066293e8 Merge "Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE" 2013-08-08 19:12:00 +00:00
Christopher Ferris
b922ed3498 Fix strcpy.c that should have been strcpy.S. DO NOT MERGE
Merge from internal master.

(cherry-picked from 1ce6654163)

Change-Id: I376b831df42248baadde7202a30a68112f752ff7
2013-08-08 12:09:37 -07:00
Christopher Ferris
4e24dcc8d8 Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE
Create one version of strcat/strcpy/strlen for cortex-a15/krait and another
version for cortex-a9.

Tested with the libc_test strcat/strcpy/strlen tests.
Including new tests that verify that the src for strcat/strcpy do not
overread across page boundaries.

NOTE: The handling of unaligned strcpy (same code in strcat) could probably
be optimized further such that the src is read 64 bits at a time instead of
the partial reads occurring now.

strlen improves slightly since it was recently optimized.

Performance improvements for strcpy and strcat (using an empty dest string):

cortex-a9
- Small copies vary from about 5% to 20% as the size gets above 10 bytes.
- Copies >= 1024, about a 60% improvement.
- Unaligned copies, from about 40% improvement.

cortex-a15
- Most small copies exhibit a 100% improvement, a few copies only
  improve by 20%.
- Copies >= 1024, about 150% improvement.
- Unaligned copies, about 100% improvement.

krait
- Most small copies vary widely, but on average 20% improvement, then
  the performance gets better, hitting about a 100% improvement when
  copies 64 bytes of data.
- Copies >= 1024, about 100% improvement.
- When coping MBs of data, about 50% improvement.
- Unaligned copies, about 90% improvement.

As strcat destination strings get larger in size:

cortex-a9
- about 40% improvement for small dst strings (>= 32).
- about 250% improvement for dst strings >= 1024.

cortex-a15
- about 200% improvement for small dst strings (>=32).
- about 250% improvement for dst strings >= 1024.

krait
- about 25% improvement for small dst strings (>=32).
- about 100% improvement for dst strings >=1024.

Merge from internal master.

(cherry-picked from d119b7b6f4)

Change-Id: I296463b251ef9fab004ee4dded2793feca5b547a
2013-08-08 11:13:46 -07:00
The Android Automerger
b683cf117d merge in klp-release history after reset to klp-dev 2013-08-08 07:53:11 -07:00
Colin Cross
7f4074d17d bionic: name malloc'd regions
Use the new __bionic_name_mem function to name malloc'd memory as
"libc_malloc" on kernels that support it.

Change-Id: I7235eae6918fa107010039b9ab8b7cb362212272
2013-08-08 00:42:39 +00:00
Colin Cross
6771b9cef6 bionic: add function to name memory
Only works on some kernels, and only on page-aligned regions of
anonymous memory.  It will show up in /proc/pid/maps as
[anon:<name>] and in /proc/pid/smaps as Name: <name>

Change-Id: If31667cf45ff41cc2a79a140ff68707526def80e
2013-08-07 15:41:30 -07:00
Christopher Ferris
7c860db074 Optimize __memset_chk, __memcpy_chk.
This change creates assembler versions of __memcpy_chk/__memset_chk
that is implemented in the memcpy/memset assembler code. This change
avoids an extra call to memcpy/memset, instead allowing a simple fall
through to occur from the chk code into the body of the real
implementation.

Testing:

- Ran the libc_test on __memcpy_chk/__memset_chk on all nexus devices.
- Wrote a small test executable that has three calls to __memcpy_chk and
  three calls to __memset_chk. First call dest_len is length + 1. Second
  call dest_len is length. Third call dest_len is length - 1.
  Verified that the first two calls pass, and the third fails. Examined
  the logcat output on all nexus devices to verify that the fortify
  error message was sent properly.
- I benchmarked the new __memcpy_chk and __memset_chk on all systems. For
  __memcpy_chk and large copies, the savings is relatively small (about 1%).
  For small copies, the savings is large on cortex-a15/krait devices
  (between 5% to 30%).
  For cortex-a9 and small copies, the speed up is present, but relatively
  small (about 3% to 5%).
  For __memset_chk and large copies, the savings is also small (about 1%).
  However, all processors show larger speed-ups on small copies (about 30% to
  100%).

Bug: 9293744

Change-Id: I8926d59fe2673e36e8a27629e02a7b7059ebbc98
2013-08-06 15:38:29 -07:00
The Android Automerger
2b899b04e9 merge in klp-release history after reset to master 2013-08-06 08:16:59 -07:00
Christopher Ferris
1ce6654163 Fix strcpy.c that should have been strcpy.S.
Change-Id: Ib4609baad3a14c8b0f37556269781fa2b06916dc
2013-08-05 17:08:06 -07:00
Christopher Ferris
e1857431e8 Merge "Optimize strcat/strcpy, small tweaks to strlen." 2013-08-05 23:32:06 +00:00
Elliott Hughes
e66ffef900 am cd927519: Merge "Fix stdint.h intptr_t/uintptr_t for x86_64/x32"
* commit 'cd927519a94939f2ebc307544f827baade529bc9':
  Fix stdint.h intptr_t/uintptr_t for x86_64/x32
2013-08-05 15:51:54 -07:00
Elliott Hughes
28e0ec8d61 am a0473d77: Merge "syslog needs a valid socket path for _PATH_LOG"
* commit 'a0473d77b2d3a6f26e29cc8c2fdaeb2a4b3ab8f8':
  syslog needs a valid socket path for _PATH_LOG
2013-08-05 15:51:53 -07:00
Elliott Hughes
cd927519a9 Merge "Fix stdint.h intptr_t/uintptr_t for x86_64/x32" 2013-08-05 20:55:24 +00:00
Elliott Hughes
a0473d77b2 Merge "syslog needs a valid socket path for _PATH_LOG" 2013-08-05 20:41:50 +00:00
Robert Greenwalt
662bb875e4 am a9c5bb97: Merge "Fix the detection of alt-network in dns resolver."
* commit 'a9c5bb972df7cbb4e65cfb53673b26f9d42deacd':
  Fix the detection of alt-network in dns resolver.
2013-08-05 11:55:53 -07:00
Robert Greenwalt
a9c5bb972d Merge "Fix the detection of alt-network in dns resolver." 2013-08-05 18:45:03 +00:00
Robert Greenwalt
1d8d9a308c Fix the detection of alt-network in dns resolver.
Used to determine proper A/AAAA record request.

bug:10132565
Change-Id: I7229f6672e879920a6fae58672cddd72db78546c
2013-08-05 18:44:30 +00:00
The Android Automerger
1714c787b6 merge in klp-release history after reset to master 2013-08-05 06:00:46 -07:00
Elliott Hughes
49b24b4efb am 3287dccf: Merge "Add ssse3 implementation of __memcmp16."
* commit '3287dccf2ecced89bb39b857abc8eba997bc3f51':
  Add ssse3 implementation of __memcmp16.
2013-08-02 18:04:01 -07:00
Ben Cheng
b78f43579f am aa2733d1: Merge "Update the comments to reflect the current status."
* commit 'aa2733d17b87c607fccbd6e6a0f44d2d411ffd77':
  Update the comments to reflect the current status.
2013-08-02 17:58:47 -07:00
Elliott Hughes
3287dccf2e Merge "Add ssse3 implementation of __memcmp16." 2013-08-03 00:58:46 +00:00
Elliott Hughes
d0313e7a2a am a6ed05c1: Merge "libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher"
* commit 'a6ed05c1c4c787241b56df132e77512c64cbc595':
  libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher
2013-08-02 17:58:46 -07:00
Alexander Ivchenko
baa91f4f89 Add ssse3 implementation of __memcmp16.
__memcmp16 was missing in x86. Also added C-version for backward
compatibility. Added bionic test for __memcmp16 and for wmemcmp.

Change-Id: I33718441e7ee343cdb021d91dbeaf9ce2d4d7eb4
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>
2013-08-02 17:57:23 -07:00
Ben Cheng
aa2733d17b Merge "Update the comments to reflect the current status." 2013-08-02 23:06:10 +00:00
Ben Cheng
772b797b7b Update the comments to reflect the current status.
Change-Id: I3a6348b568230fe8b21d121e5b8d30561a9703c2
2013-08-02 15:53:18 -07:00
Elliott Hughes
a6ed05c1c4 Merge "libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher" 2013-08-02 22:39:08 +00:00
Christopher Ferris
d119b7b6f4 Optimize strcat/strcpy, small tweaks to strlen.
Create one version of strcat/strcpy/strlen for cortex-a15/krait and another
version for cortex-a9.

Tested with the libc_test strcat/strcpy/strlen tests.
Including new tests that verify that the src for strcat/strcpy do not
overread across page boundaries.

NOTE: The handling of unaligned strcpy (same code in strcat) could probably
be optimized further such that the src is read 64 bits at a time instead of
the partial reads occurring now.

strlen improves slightly since it was recently optimized.

Performance improvements for strcpy and strcat (using an empty dest string):

cortex-a9
- Small copies vary from about 5% to 20% as the size gets above 10 bytes.
- Copies >= 1024, about a 60% improvement.
- Unaligned copies, from about 40% improvement.

cortex-a15
- Most small copies exhibit a 100% improvement, a few copies only
  improve by 20%.
- Copies >= 1024, about 150% improvement.
- Unaligned copies, about 100% improvement.

krait
- Most small copies vary widely, but on average 20% improvement, then
  the performance gets better, hitting about a 100% improvement when
  copies 64 bytes of data.
- Copies >= 1024, about 100% improvement.
- When coping MBs of data, about 50% improvement.
- Unaligned copies, about 90% improvement.

As strcat destination strings get larger in size:

cortex-a9
- about 40% improvement for small dst strings (>= 32).
- about 250% improvement for dst strings >= 1024.

cortex-a15
- about 200% improvement for small dst strings (>=32).
- about 250% improvement for dst strings >= 1024.

krait
- about 25% improvement for small dst strings (>=32).
- about 100% improvement for dst strings >=1024.

Change-Id: Ifd091ebdbce70fe35a7c5d8f71d5914255f3af35
2013-08-02 10:31:51 -07:00
Pavel Chupin
0a9c615a89 Fix stdint.h intptr_t/uintptr_t for x86_64/x32
Patch is required in NDK headers as well to be able to build multilib
GCC with libgomp support.
It's here: https://android-review.googlesource.com/#/c/62982

Change-Id: I2bec25d8cbca0e5ef1a0857008ececd92f4911be
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-08-02 19:23:37 +04:00
Robert Greenwalt
7e5d7485b7 am e6345f1a: Merge "Tell the dns resolver about our domains."
* commit 'e6345f1a1ec691690c69d5663ca8bb2b70240d93':
  Tell the dns resolver about our domains.
2013-07-31 17:57:45 -07:00
Robert Greenwalt
e6345f1a1e Merge "Tell the dns resolver about our domains." 2013-08-01 00:47:29 +00:00
Robert Greenwalt
e0805a94c5 Tell the dns resolver about our domains.
A refactor caused us to not tell the resolver about search domains
until after it had done the domain fanout.

bug:6799630
Change-Id: Ibabd8fa5bcc69b1490fc5e329e62eb0f2d1a5e63
2013-07-31 16:53:46 -07:00
The Android Automerger
1d1fe3bb69 merge in klp-release history after reset to master 2013-07-30 11:08:39 -07:00
Elliott Hughes
abf3638317 am 101b5e1f: Merge "Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way."
* commit '101b5e1f6cc4e24635760928b3d2c1e51c1e5774':
  Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way.
2013-07-29 17:35:49 -07:00
Elliott Hughes
101b5e1f6c Merge "Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way." 2013-07-30 00:29:58 +00:00
Elliott Hughes
c03e1e7439 Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way.
Also make sysconf use PTHREAD_STACK_MIN rather than redefining its
own, different, constant.

Bug: 9997352
Change-Id: I9a8e7d2b18e691439abfb45533e82c36eee9e81d
2013-07-29 17:09:36 -07:00
synergydev
efddf44c8e libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher
This is needed when passing -mcpu=cortex-a9 or higher on a modern
toolchain for prebuilt library compatibility

Change-Id: I73eb2393377914ae26216a8c2828ad973d1c1225
2013-07-29 16:55:08 -07:00
Elliott Hughes
326b52760d am 9a73d08f: Merge "Bump the number of TLS slots to 128."
* commit '9a73d08f4c334c00fe06d583d37e038ebe063eba':
  Bump the number of TLS slots to 128.
2013-07-25 17:04:18 -07:00
Elliott Hughes
9a73d08f4c Merge "Bump the number of TLS slots to 128." 2013-07-25 21:51:05 +00:00
Elliott Hughes
838f01fdc7 Bump the number of TLS slots to 128.
Bug: 9997352
Change-Id: I7bde7228d803e9d4bb83309c5891d54a07e3b025
2013-07-25 14:14:22 -07:00
Elliott Hughes
478314a109 am a9feb5e3: Merge "Avoid sign extension of the mmap offset."
* commit 'a9feb5e33a5261f45fb25fd5e90a56792c6a437e':
  Avoid sign extension of the mmap offset.
2013-07-25 10:51:00 -07:00
Elliott Hughes
a9feb5e33a Merge "Avoid sign extension of the mmap offset." 2013-07-25 17:28:59 +00:00
Elliott Hughes
e320a8c780 Avoid sign extension of the mmap offset.
off_t is signed to support seeking backwards, but that's a liability
when using off_t to represent a subset of a file.

Change-Id: I2a3615166eb16212347eb47f1242e3bfb93c2022
2013-07-25 10:15:07 -07:00
The Android Automerger
48161c898b merge in klp-release history after reset to master 2013-07-24 06:00:57 -07:00
Elliott Hughes
a59b7ed8c3 am bfba6aac: am a8d06766: Merge "[MIPS] __dso_handle.S and __dso_handle_so.S not needed."
* commit 'bfba6aac99115972fad3341aef595c0ca1f7258b':
  [MIPS] __dso_handle.S and __dso_handle_so.S not needed.
2013-07-23 18:10:51 -07:00
Elliott Hughes
bfba6aac99 am a8d06766: Merge "[MIPS] __dso_handle.S and __dso_handle_so.S not needed."
* commit 'a8d06766c7674bbfde852e8bfee4200e75ad8f24':
  [MIPS] __dso_handle.S and __dso_handle_so.S not needed.
2013-07-23 18:07:12 -07:00
Elliott Hughes
a8d06766c7 Merge "[MIPS] __dso_handle.S and __dso_handle_so.S not needed." 2013-07-24 01:05:18 +00:00
Rom Lemarchand
c847f749fe am c5749f1f: am 061246b6: Merge "Restore dlmalloc mmap threshold to 64k"
* commit 'c5749f1f4232e59e66737488036aba1f583867d5':
  Restore dlmalloc mmap threshold to 64k
2013-07-23 13:58:12 -07:00
Rom Lemarchand
c5749f1f42 am 061246b6: Merge "Restore dlmalloc mmap threshold to 64k"
* commit '061246b600c16a80b246804221b9e3fa65e507d9':
  Restore dlmalloc mmap threshold to 64k
2013-07-23 13:52:29 -07:00
Rom Lemarchand
061246b600 Merge "Restore dlmalloc mmap threshold to 64k" 2013-07-23 20:49:46 +00:00
Rom Lemarchand
d0f2a6014c Restore dlmalloc mmap threshold to 64k
Restoring DEFAULT_MMAP_THRESHOLD to 64k, the way it was before
999089181e.

This forces allocations in the 64k-256k range to be mmaped.

Change-Id: Iace55ed638edd272b3e94fa6cd2ddd349042be84
Signed-off-by: Rom Lemarchand <romlem@google.com>
2013-07-23 13:48:39 -07:00
Pete Delaney
0995a7b322 [MIPS] __dso_handle.S and __dso_handle_so.S not needed.
Global hidden variable __dso_handle is now declared in:
       bionic/libc/private/__dso_handle.h

Change-Id: I8e951a8d7c65877bafc1be23a7fff6d44d3a2846
Signed-off-by: Pete Delaney  <piet.delaney@imgtec.com>
Signed-off-by: Chao-Ying Fu  <chao-ying.fu@imgtec.com>
2013-07-22 23:16:02 -07:00
The Android Automerger
58ccd60877 merge in klp-release history after reset to master 2013-07-22 06:00:33 -07:00
Elliott Hughes
aa9116f0ed am c2902edf: am 6fe4a58f: Merge "Move stuff only needed by pthread-timers.c into pthread-timers.c."
* commit 'c2902edfc4aaa02977eef7154d05d5369bc48281':
  Move stuff only needed by pthread-timers.c into pthread-timers.c.
2013-07-19 17:19:46 -07:00
Elliott Hughes
c2902edfc4 am 6fe4a58f: Merge "Move stuff only needed by pthread-timers.c into pthread-timers.c."
* commit '6fe4a58f84954523f17114f1f7cf060a3573c073':
  Move stuff only needed by pthread-timers.c into pthread-timers.c.
2013-07-19 17:13:33 -07:00
Elliott Hughes
6fe4a58f84 Merge "Move stuff only needed by pthread-timers.c into pthread-timers.c." 2013-07-20 00:10:32 +00:00
Elliott Hughes
8b56ba8896 am 178c4185: am e8bd8c2e: Merge "Upgrade mktemp.c to the current upstream version."
* commit '178c41857321732259c3e22d73c86c22ae4359b5':
  Upgrade mktemp.c to the current upstream version.
2013-07-19 16:43:07 -07:00
Elliott Hughes
4cf1395217 Move stuff only needed by pthread-timers.c into pthread-timers.c.
Change-Id: I4915b3fff9c4f5a36b4f51027fb22019c11607b0
2013-07-19 16:42:27 -07:00
Elliott Hughes
178c418573 am e8bd8c2e: Merge "Upgrade mktemp.c to the current upstream version."
* commit 'e8bd8c2ed9c71c73682f29020456934c55f260e3':
  Upgrade mktemp.c to the current upstream version.
2013-07-19 16:37:52 -07:00
Elliott Hughes
e8bd8c2ed9 Merge "Upgrade mktemp.c to the current upstream version." 2013-07-19 23:35:29 +00:00
Elliott Hughes
284f788032 Upgrade mktemp.c to the current upstream version.
Yet another archaic relic containing bugs that had been fixed years before the
Android project even started...

Bug: 9935113
Change-Id: I3c9d019a216efd609ee568cf8c70bc360f357403
2013-07-19 15:20:31 -07:00
Colin Cross
15d2784fc1 Merge "Kexec header generated from linux header 3.10" 2013-07-18 17:41:09 +00:00
The Android Automerger
00196d1a46 merge in klp-release history after reset to master 2013-07-18 06:00:28 -07:00
Elliott Hughes
3c212645a0 am 81b46980: am f8a66bb3: Merge "Remove some non-unused makefile generality."
* commit '81b4698059c37ac36aa74d1498bef5654580ad3f':
  Remove some non-unused makefile generality.
2013-07-17 17:45:03 -07:00
Elliott Hughes
81b4698059 am f8a66bb3: Merge "Remove some non-unused makefile generality."
* commit 'f8a66bb31204b42f830c1865a795b5f3eb1e0147':
  Remove some non-unused makefile generality.
2013-07-17 17:41:43 -07:00
Elliott Hughes
ac74b8565a am b6b2375d: am 8fa9081f: Merge "[MIPS] Rewrite MIPS crtbegin* as C files."
* commit 'b6b2375df8ca63a5e349d8277d425ab58e16aeb1':
  [MIPS] Rewrite MIPS crtbegin* as C files.
2013-07-17 17:40:46 -07:00
Elliott Hughes
f8a66bb312 Merge "Remove some non-unused makefile generality." 2013-07-18 00:39:35 +00:00
Elliott Hughes
4c6b925bac Remove some non-unused makefile generality.
MIPS uses .c files like ARM and x86 now.

Change-Id: Ie580647e385121c380316c443ec199dabf657ff8
2013-07-17 17:38:45 -07:00
Elliott Hughes
b6b2375df8 am 8fa9081f: Merge "[MIPS] Rewrite MIPS crtbegin* as C files."
* commit '8fa9081f48c4861f83737d59bf2c2c8f21c7da3f':
  [MIPS] Rewrite MIPS crtbegin* as C files.
2013-07-17 17:36:26 -07:00
Elliott Hughes
8fa9081f48 Merge "[MIPS] Rewrite MIPS crtbegin* as C files." 2013-07-18 00:34:22 +00:00
Pete Delaney
368860124c [MIPS] Rewrite MIPS crtbegin* as C files.
This updates the MIPS arch to be much more in
sync with the commit Nick Kralevich made last
June; see 9d40326830.

    Rewrite
     crtbegin.S        -> crtbegin.c
     crtbegin_so.S     -> crtbegin_so.c
     __dso_handle.S    -> __dso_handle.c
     __dso_handle_so.S -> __dso_handle_so.c
     atexit.S          -> atexit.c

Previously __do_global_dtors_aux was in the tasks
__FINI_ARRAY__ linked with crtbegin.S and it now being
removed as there is no need to call a destructor just
before terminating a process.

Shared libraries, on the other hand, are linked with
crtbegin_so.c and have a hidden destructor declared
to allow the bionic linker to call __on_dlclose().

Change-Id: Ieb4da5199b54573de05743990e309db381a11cb8
Signed-off-by: Pete Delaney  <piet.delaney@imgtec.com>
Signed-off-by: Chao-Ying Fu  <chao-ying.fu@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
2013-07-17 14:23:29 -07:00
Elliott Hughes
66f8452a14 am cbf07a25: am 2be511d4: Merge "Improve stack overflow diagnostics (take 2)."
* commit 'cbf07a25149cd924a348e4dc0395c5d08f86fd7f':
  Improve stack overflow diagnostics (take 2).
2013-07-17 13:53:06 -07:00
Elliott Hughes
cbf07a2514 am 2be511d4: Merge "Improve stack overflow diagnostics (take 2)."
* commit '2be511d405d47eccc61a6e3c338d1877bf33b4fa':
  Improve stack overflow diagnostics (take 2).
2013-07-17 13:50:15 -07:00
Elliott Hughes
2be511d405 Merge "Improve stack overflow diagnostics (take 2)." 2013-07-17 20:48:25 +00:00
Elliott Hughes
84114c8dd5 Improve stack overflow diagnostics (take 2).
This reverts commits eb1b07469f and
d14dc3b87f, and fixes the bug where
we were calling mmap (which might cause errno to be set) before
__set_tls (which is required to implement errno).

Bug: 8557703
Change-Id: I2c36d00240c56e156e1bb430d8c22a73a068b70c
2013-07-17 13:33:19 -07:00
Elliott Hughes
4add6968be resolved conflicts for merge of e35d6c28 to master
Change-Id: I237bfc35d872a2e2ff10984012f9811488a5cea7
2013-07-17 13:28:30 -07:00
Elliott Hughes
e35d6c28df am 40e7a878: Merge "Prevent the madvise(MADV_MERGEABLE) mmap hack from affecting errno."
* commit '40e7a87864fee75f7af2caf8e1972d0d764135cd':
  Prevent the madvise(MADV_MERGEABLE) mmap hack from affecting errno.
2013-07-17 13:22:39 -07:00
Elliott Hughes
40e7a87864 Merge "Prevent the madvise(MADV_MERGEABLE) mmap hack from affecting errno." 2013-07-17 20:20:41 +00:00
Elliott Hughes
a5a3b3bdb1 resolved conflicts for merge of 4763ef2b to master
Change-Id: I4d424f9fb438c2ed845bca0bbcae69b4d0f5e3dc
2013-07-17 13:18:43 -07:00
Elliott Hughes
107cdd406b Prevent the madvise(MADV_MERGEABLE) mmap hack from affecting errno.
Bug: 9889616
Change-Id: I4a7323e0ae5aeb5cbe0da1b2bc7501d83b3a2aa4
2013-07-17 13:12:26 -07:00
Elliott Hughes
4763ef2b5b am b7b36b81: Merge "mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps"
* commit 'b7b36b819e8029a152859f3204ba2da38a0e2879':
  mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps
2013-07-17 13:05:13 -07:00
Elliott Hughes
b7b36b819e Merge "mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps" 2013-07-17 20:02:11 +00:00
Rom Lemarchand
e459bba398 mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps
Reinstate mmap calling madvise(MADV_MERGEABLE) removed in
635df850e5

(cherry-pick of c702a904679a36511bead29c51eeac15d81f4fd2.)

Change-Id: I18803fb54701b2b3d8186dff5c678211ee3efa1f
2013-07-17 13:00:45 -07:00
The Android Automerger
0976c97fe4 merge in klp-release history after reset to master 2013-07-17 06:00:13 -07:00
Guang Zhu
81b7df7315 am 6f08b865: am 2cf5a6f6: Merge "Revert "Improve stack overflow diagnostics.""
* commit '6f08b8659a3682b7e774af6ed68b1b613e147f1b':
  Revert "Improve stack overflow diagnostics."
2013-07-16 20:23:42 -07:00
Guang Zhu
dd4eb67a48 am 849bfd58: am 8c1b9668: Merge "Revert "Clean up our alternate signal stacks.""
* commit '849bfd58118e8c8a4b1ad8a7c3de74bb3cd13863':
  Revert "Clean up our alternate signal stacks."
2013-07-16 20:23:41 -07:00
Guang Zhu
6f08b8659a am 2cf5a6f6: Merge "Revert "Improve stack overflow diagnostics.""
* commit '2cf5a6f6627549842c0c840ff3615ae942a90ea3':
  Revert "Improve stack overflow diagnostics."
2013-07-16 20:18:57 -07:00
Guang Zhu
849bfd5811 am 8c1b9668: Merge "Revert "Clean up our alternate signal stacks.""
* commit '8c1b96681af91fda86a5493e7f7e4381ce489648':
  Revert "Clean up our alternate signal stacks."
2013-07-16 20:18:57 -07:00
Guang Zhu
2cf5a6f662 Merge "Revert "Improve stack overflow diagnostics."" 2013-07-17 03:17:19 +00:00
Guang Zhu
d14dc3b87f Revert "Improve stack overflow diagnostics."
This reverts commit aa754dca90.

Change-Id: Ifa76eee31f7f44075eb3a48554315b2693062f44
2013-07-17 03:17:05 +00:00
Guang Zhu
8c1b96681a Merge "Revert "Clean up our alternate signal stacks."" 2013-07-17 03:16:52 +00:00
Guang Zhu
eb1b07469f Revert "Clean up our alternate signal stacks."
This reverts commit 5cf87951ab.

Change-Id: Idd6ca7d80a018755da3bd315d91193723ce7f3bf
2013-07-17 03:16:04 +00:00
Christopher Ferris
66cb2edba5 am 7ff868a6: am f63c28f0: Merge "Fix assembler errors in generic arm strlen.c."
* commit '7ff868a6307f0d5e63555b5d320b8ad6e490e3c4':
  Fix assembler errors in generic arm strlen.c.
2013-07-16 17:24:40 -07:00
Christopher Ferris
69205c5433 am b1d7fd49: am 6f4fed74: Merge "Add new optimized strlen for arm."
* commit 'b1d7fd4969fdd3d3402b500840561beb30962c1d':
  Add new optimized strlen for arm.
2013-07-16 17:24:40 -07:00
Christopher Ferris
7ff868a630 am f63c28f0: Merge "Fix assembler errors in generic arm strlen.c."
* commit 'f63c28f0338fd647e88f1f9300b2220093af1aae':
  Fix assembler errors in generic arm strlen.c.
2013-07-16 17:22:05 -07:00
Christopher Ferris
b1d7fd4969 am 6f4fed74: Merge "Add new optimized strlen for arm."
* commit '6f4fed74cb9405c0f5322307085d15afed6be764':
  Add new optimized strlen for arm.
2013-07-16 17:21:55 -07:00
Christopher Ferris
f63c28f033 Merge "Fix assembler errors in generic arm strlen.c." 2013-07-17 00:19:42 +00:00
Christopher Ferris
6f4fed74cb Merge "Add new optimized strlen for arm." 2013-07-17 00:19:30 +00:00
Christopher Ferris
9ad2a73ed6 Fix assembler errors in generic arm strlen.c.
Tested using a static version of the strlen libc_test program
on a nexus7 that uses the generic code.

Merge from internal master.

(cherry-picked from d8d10a8994)

Change-Id: I88f7dc01dc5b5c3ac2d5580d92153bc1bc36c564
2013-07-16 16:47:54 -07:00
Christopher Ferris
0aa9b52efa Add new optimized strlen for arm.
This optimized version is primarily targeted at cortex-a15.

Tested on all nexus devices using the system/extras/libc_test strlen test.
Tested alignments from 1 to 32 that are powers of 2.
Tested that strlen does not cross page boundaries at all alignments.

Speed improvements listed below:

cortex-a15
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~250% improvement.

cortex-a9
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~85% improvement.

krait
- Sizes >= 32 bytes, ~95% improvement.
- Sizes >= 1024 bytes, ~160% improvement.

Merge from internal master.

(cherry-picked from 2fc0717977)

Change-Id: I1ceceb4e745fd68e9d946f96d1d42e0cdaff6ccf
2013-07-16 16:47:37 -07:00
Elliott Hughes
152dcf3b3f am 79dfb1af: am f35e0c14: Merge "Clean up our alternate signal stacks."
* commit '79dfb1afda16565a0dd378eca7f72bfe81fae205':
  Clean up our alternate signal stacks.
2013-07-16 15:56:16 -07:00
Elliott Hughes
79dfb1afda am f35e0c14: Merge "Clean up our alternate signal stacks."
* commit 'f35e0c149f1a6801a5af7c339f84d81ae05c3adf':
  Clean up our alternate signal stacks.
2013-07-16 15:50:18 -07:00
Elliott Hughes
f35e0c149f Merge "Clean up our alternate signal stacks." 2013-07-16 22:47:41 +00:00
Elliott Hughes
617a1e4977 am 10a954de: am 026867c7: Merge "Improve stack overflow diagnostics."
* commit '10a954dea6732232ed6cf56d3aa6ca38673dacbf':
  Improve stack overflow diagnostics.
2013-07-16 15:36:12 -07:00
Elliott Hughes
f2f6b2bad3 am d2acf124: am 9562d38d: Merge "Clean up __builtin_expect usage."
* commit 'd2acf124ed7ad18f8adb5159544c92234cade90e':
  Clean up __builtin_expect usage.
2013-07-16 15:36:12 -07:00
Elliott Hughes
62d6b7526a am 2a18ea14: am f152e386: Merge "EABI syscall cleanup."
* commit '2a18ea1462cf65cc51bfcb1a1c46972ee5af1d01':
  EABI syscall cleanup.
2013-07-16 15:36:11 -07:00
Elliott Hughes
10a954dea6 am 026867c7: Merge "Improve stack overflow diagnostics."
* commit '026867c7dcce7828212dcd4a61806146908e9039':
  Improve stack overflow diagnostics.
2013-07-16 15:31:40 -07:00
Elliott Hughes
d2acf124ed am 9562d38d: Merge "Clean up __builtin_expect usage."
* commit '9562d38df1e4aba941b3433cfd0922fee5ea258b':
  Clean up __builtin_expect usage.
2013-07-16 15:31:39 -07:00
Elliott Hughes
2a18ea1462 am f152e386: Merge "EABI syscall cleanup."
* commit 'f152e386fcf477f3f5de9dc020c3660d4f9c4b81':
  EABI syscall cleanup.
2013-07-16 15:31:39 -07:00
Elliott Hughes
5cf87951ab Clean up our alternate signal stacks.
Bug: 8557703
Change-Id: Ie93901dd1c29e9d3bf795b0f0400616d9ef08f75
2013-07-16 14:35:52 -07:00
Elliott Hughes
026867c7dc Merge "Improve stack overflow diagnostics." 2013-07-16 20:38:55 +00:00
Elliott Hughes
aa754dca90 Improve stack overflow diagnostics.
We notify debuggerd of problems by installing signal handlers. That's
fine except for when the signal is caused by us running off the end of
a thread's stack and into the guard page.

Bug: 8557703
Change-Id: I1ef65b4bb3bbca7e9a9743056177094921e60ed3
2013-07-16 13:14:24 -07:00
Elliott Hughes
9562d38df1 Merge "Clean up __builtin_expect usage." 2013-07-16 19:52:30 +00:00
Elliott Hughes
d4e753fea9 Clean up __builtin_expect usage.
Also remove some dead code; our malloc debugging doesn't use this
any more.

Change-Id: Id69cf182371f5f37d40b5bbd08f2744ade286e66
2013-07-16 12:45:46 -07:00
Elliott Hughes
f152e386fc Merge "EABI syscall cleanup." 2013-07-16 19:35:58 +00:00
Elliott Hughes
da4a3e6515 EABI syscall cleanup.
We cleaned up the auto-generated ones a while back to not touch
the stack unnecessarily if they have <= 4 arguments. This patch
cleans up some hand-crafted ones.

Also improve comments in clone.S.

Change-Id: I8850bf98f2b26829385315304472a760e6880ed8
2013-07-16 11:52:24 -07:00
The Android Automerger
7256fbd9b2 merge in klp-release history after reset to master 2013-07-16 06:00:36 -07:00
Elliott Hughes
993ea1061b am 5148661f: am 67750c85: Merge "Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize."
* commit '5148661f8d2be514d0e3c191bc1e489157ae1154':
  Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize.
2013-07-15 16:45:54 -07:00
Elliott Hughes
5148661f8d am 67750c85: Merge "Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize."
* commit '67750c8515573cba294b2f3840249dd7f7d817d5':
  Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize.
2013-07-15 16:42:34 -07:00
Elliott Hughes
67750c8515 Merge "Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize." 2013-07-15 23:39:39 +00:00
Elliott Hughes
b95cf0d23a Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize.
pthread_getattr_np was reporting the values supplied to us, not the values we
actually used, which is kinda the whole point of pthread_getattr_np.

pthread_attr_setguardsize and pthread_attr_setstacksize were reporting EINVAL
for any size that wasn't a multiple of the system page size. This is
unnecessary. We can just round like POSIX suggests and glibc already does.

Also improve the error reporting for pthread_create failures.

Change-Id: I7ebc518628a8a1161ec72e111def911d500bba71
2013-07-15 14:51:07 -07:00
Christopher Ferris
d8d10a8994 Fix assembler errors in generic arm strlen.c.
Tested using a static version of the strlen libc_test program
on a nexus7 that uses the generic code.

Change-Id: If04d15dcb6c0b18f27f2fefadca5510ed49016c5
2013-07-15 13:56:45 -07:00
Szymon Starzycki
674be7e0fc Kexec header generated from linux header 3.10
Change-Id: Iac26fcc6e0e25905ab52dba91bec16a4fb479d43
2013-07-15 13:51:56 -07:00
Christopher Ferris
67e9f47476 Merge "Add new optimized strlen for arm." 2013-07-15 19:44:26 +00:00
Christopher Ferris
2fc0717977 Add new optimized strlen for arm.
This optimized version is primarily targeted at cortex-a15.

Tested on all nexus devices using the system/extras/libc_test strlen test.
Tested alignments from 1 to 32 that are powers of 2.
Tested that strlen does not cross page boundaries at all alignments.

Speed improvements listed below:

cortex-a15
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~250% improvement.

cortex-a9
- Sizes >= 32 bytes, ~75% improvement.
- Sizes >= 1024 bytes, ~85% improvement.

krait
- Sizes >= 32 bytes, ~95% improvement.
- Sizes >= 1024 bytes, ~160% improvement.

Change-Id: I361b1a36ed89ab991f2a8f0abbf0d7416d39c8f5
2013-07-15 12:37:51 -07:00
Elliott Hughes
fc2ada9741 am f384be3b: am 59ed029b: Merge "Upgrade to tzcode2013d."
* commit 'f384be3b5c2062e7ef4e7449b466bf2f24f7bcc8':
  Upgrade to tzcode2013d.
2013-07-15 10:15:45 -07:00
Elliott Hughes
f384be3b5c am 59ed029b: Merge "Upgrade to tzcode2013d."
* commit '59ed029b286a1564f635377296e4f088e0fd2afa':
  Upgrade to tzcode2013d.
2013-07-15 10:11:04 -07:00
Elliott Hughes
59ed029b28 Merge "Upgrade to tzcode2013d." 2013-07-15 17:08:41 +00:00
The Android Automerger
2d7d92e811 merge in klp-release history after reset to master 2013-07-15 06:00:50 -07:00
Elliott Hughes
ce4783ce76 Upgrade to tzcode2013d.
Well, kinda... localtime.c still contains a bunch of Android-specific
hacks, as does strftime.c. But the other files are now exactly the same
as upstream.

This catches up with several years of bug fixes, and fixes most of the
compiler warnings that were in this code. (Just two remain.)

Bug: 1744909
Change-Id: I2ddfecb6fd408c847397c17afb0fff859e27feef
2013-07-12 17:52:44 -07:00
Elliott Hughes
d3522051ce am 7e56f462: am 3db1f359: Merge "Add a trivial gmtime(3) test."
* commit '7e56f462ad19791d7b270e297fc994d18df43252':
  Add a trivial gmtime(3) test.
2013-07-12 14:35:19 -07:00
Elliott Hughes
7e56f462ad am 3db1f359: Merge "Add a trivial gmtime(3) test."
* commit '3db1f359e9f218f5f73a7a9f4d80e4be362a526e':
  Add a trivial gmtime(3) test.
2013-07-12 14:28:40 -07:00
Elliott Hughes
3db1f359e9 Merge "Add a trivial gmtime(3) test." 2013-07-12 21:23:48 +00:00
Elliott Hughes
ee178bfb79 Add a trivial gmtime(3) test.
Change-Id: I849f200a455cd6971646fa45766ab22ba19fb866
2013-07-12 11:25:20 -07:00
Elliott Hughes
47c7e33ccb am ff20b911: am 8a363692: Merge "Add TCP_INFO state enum values."
* commit 'ff20b9110659e67433ce641a6224cdc9ccc01301':
  Add TCP_INFO state enum values.
2013-07-11 18:57:42 -07:00
Nick Kralevich
4fa5d6a5db am ef49e99d: am d30877ae: Merge "syslog.h: add __printflike to syslog functions"
* commit 'ef49e99d92597a4e9fddbba0e1e3feddc06fee53':
  syslog.h: add __printflike to syslog functions
2013-07-11 18:57:41 -07:00
Elliott Hughes
ff20b91106 am 8a363692: Merge "Add TCP_INFO state enum values."
* commit '8a363692be45ed1b36e1f1f21707b6f35f5519c8':
  Add TCP_INFO state enum values.
2013-07-11 18:52:22 -07:00
Nick Kralevich
ef49e99d92 am d30877ae: Merge "syslog.h: add __printflike to syslog functions"
* commit 'd30877ae28f3c308edf142c091b3a8acc4467c6d':
  syslog.h: add __printflike to syslog functions
2013-07-11 18:52:01 -07:00
Elliott Hughes
8a363692be Merge "Add TCP_INFO state enum values." 2013-07-11 23:58:48 +00:00
Elliott Hughes
0dff43cab4 Add TCP_INFO state enum values.
Bug: https://code.google.com/p/android/issues/detail?id=38881
Change-Id: Ie22816c666474e6441e0ec3afd2a6eb04d64a673
2013-07-11 16:21:32 -07:00
Geremy Condra
bb17967761 Merge "Add marking of DNS sockets for mark based routing" 2013-07-11 22:10:31 +00:00
Elliott Hughes
f9a1d1cf5f am 09f561b3: am b7f49237: Merge "Fix MIPS build."
* commit '09f561b38b880e551097b807585d0e037fa36442':
  Fix MIPS build.
2013-07-11 10:16:33 -07:00
Elliott Hughes
1087e0df4f am 731f7c2d: am 9d476716: Merge "Add <sys/statvfs.h>."
* commit '731f7c2d0e531d5e0ecdd771d743053f8d093e16':
  Add <sys/statvfs.h>.
2013-07-11 10:16:32 -07:00
Nick Kralevich
d30877ae28 Merge "syslog.h: add __printflike to syslog functions" 2013-07-11 15:32:49 +00:00
Nick Kralevich
6b1dd1797e syslog.h: add __printflike to syslog functions
Allow the compiler to detect formating bugs.

Change-Id: I6a4af6cae59dc3adf14b075431a41885213a649a
2013-07-10 07:37:11 -07:00
Elliott Hughes
09f561b38b am b7f49237: Merge "Fix MIPS build."
* commit 'b7f492375291306065472b67011eebb324de1022':
  Fix MIPS build.
2013-07-09 14:21:50 -07:00
Elliott Hughes
b7f4923752 Merge "Fix MIPS build." 2013-07-09 21:19:15 +00:00
Elliott Hughes
6184c1feaa Fix MIPS build.
Change-Id: I583b1794dbc12fcded8c4f57f367593a742ab33f
2013-07-09 14:18:36 -07:00
Elliott Hughes
731f7c2d0e am 9d476716: Merge "Add <sys/statvfs.h>."
* commit '9d476716c2bd7bc5a018a71e121257c35e965058':
  Add <sys/statvfs.h>.
2013-07-09 13:44:57 -07:00
Elliott Hughes
9d476716c2 Merge "Add <sys/statvfs.h>." 2013-07-09 20:43:13 +00:00
Elliott Hughes
06040fd75c Add <sys/statvfs.h>.
Bug: 2512019
Change-Id: I6e7fd3fa281977cc4bc270481a95416b5b2dc351
2013-07-09 13:25:03 -07:00
Chad Brubaker
c39214e0ac Add marking of DNS sockets for mark based routing
Adds an extra mark parameter to android_getaddrinfoforiface,
android_gethostbyaddrforiface and android_gethostbynameforiface that if set
will cause all packets sent by DNS requests to have that mark

Change-Id: I6f72390e4ce5bfc3cc73183f9b2fb3705a11685f
2013-07-09 13:16:22 -07:00
The Android Automerger
b89a334df8 merge in klp-release history after reset to master 2013-07-09 06:00:16 -07:00
Elliott Hughes
273df910b5 am f3f72e7f: am 4fc8a0c1: Merge "Remove <netinet/icmp6.h> ni_* macros."
* commit 'f3f72e7f277215e9fede7c6f6695654cf7aa0c63':
  Remove <netinet/icmp6.h> ni_* macros.
2013-07-08 15:13:35 -07:00
Elliott Hughes
4df412cba6 am 74b06f8d: am ff145277: Merge "Upgrade to tzdata2013d."
* commit '74b06f8ddcaaa48c7bab418d15aacaf513423ac3':
  Upgrade to tzdata2013d.
2013-07-08 15:09:57 -07:00
Elliott Hughes
f3f72e7f27 am 4fc8a0c1: Merge "Remove <netinet/icmp6.h> ni_* macros."
* commit '4fc8a0c1165537b693c900ac3e2c61470bd7e484':
  Remove <netinet/icmp6.h> ni_* macros.
2013-07-08 15:09:07 -07:00
Elliott Hughes
4fc8a0c116 Merge "Remove <netinet/icmp6.h> ni_* macros." 2013-07-08 22:08:12 +00:00
Elliott Hughes
c2cd33efc4 Remove <netinet/icmp6.h> ni_* macros.
glibc doesn't have these, and they prevent ping from building out of
the box because it assumes it can define them.

Bug: 9671560
Change-Id: I815f2a9c4fd96a0ea2952eb5a71ddf51e0763660
2013-07-08 15:07:41 -07:00
Elliott Hughes
74b06f8ddc am ff145277: Merge "Upgrade to tzdata2013d."
* commit 'ff145277da9b7fe3d48a27839fc1d6f2ed11604b':
  Upgrade to tzdata2013d.
2013-07-08 14:55:41 -07:00
Elliott Hughes
ff145277da Merge "Upgrade to tzdata2013d." 2013-07-08 21:53:02 +00:00
Elliott Hughes
5149de09ad Upgrade to tzdata2013d.
From the release notes:

  Changes affecting future time stamps:

    Morocco's midsummer transitions this year are July 7 and August 10,
    not July 9 and August 8.  (Thanks to Andrew Paprocki.)

    Israel now falls back on the last Sunday of October.
    (Thanks to Ephraim Silverberg.)

  Changes affecting past time stamps:

    Specify Jerusalem's location more precisely; this changes the pre-1880
    times by 2 s.

  Changing affecting metadata only:

    Fix typos in the entries for country codes BQ and SX.

Change-Id: I87f992e4c406d4f254dc274f206536e9484024a2
2013-07-08 14:51:15 -07:00
Elliott Hughes
f33dce1ab6 am 233050b1: am e31c45c9: Merge "Make bionic\'s <netinet/icmp6.h> standalone, like glibc\'s."
* commit '233050b15ec3ce0db534ec6cc24a6061559993d2':
  Make bionic's <netinet/icmp6.h> standalone, like glibc's.
2013-07-08 11:27:53 -07:00
Elliott Hughes
233050b15e am e31c45c9: Merge "Make bionic\'s <netinet/icmp6.h> standalone, like glibc\'s."
* commit 'e31c45c9fa5e0d2853941282e619b753550b82ae':
  Make bionic's <netinet/icmp6.h> standalone, like glibc's.
2013-07-08 11:21:53 -07:00
Elliott Hughes
e31c45c9fa Merge "Make bionic's <netinet/icmp6.h> standalone, like glibc's." 2013-07-08 18:17:57 +00:00
Elliott Hughes
3a040d8379 Make bionic's <netinet/icmp6.h> standalone, like glibc's.
This removes the need for a bionic-specific hack in external/iproute2.

Bug: 9671560
Change-Id: I9f15be0711d26bca863bd66be9a39606500fb948
2013-07-08 11:16:24 -07:00
Elliott Hughes
b1397f97f1 am 62bdd031: am 6b33f31b: Merge "Fix IPv6 filtering definitions in netinet/icmp6.h."
* commit '62bdd03120286708d8c1562eadf5dda00e24911c':
  Fix IPv6 filtering definitions in netinet/icmp6.h.
2013-07-08 10:38:41 -07:00
Elliott Hughes
62bdd03120 am 6b33f31b: Merge "Fix IPv6 filtering definitions in netinet/icmp6.h."
* commit '6b33f31b0994b8132bed8936685522e2e01754d8':
  Fix IPv6 filtering definitions in netinet/icmp6.h.
2013-07-08 10:34:41 -07:00
Elliott Hughes
6b33f31b09 Merge "Fix IPv6 filtering definitions in netinet/icmp6.h." 2013-07-08 17:32:17 +00:00
Lorenzo Colitti
bfc6a59556 Fix IPv6 filtering definitions in netinet/icmp6.h.
Linux and *BSD kernels use opposite values to indicate pass/block
in ICMPv6 filters, and assign a different value to the
ICMP6_FILTER sockopt.

Bug: 9671560
Bug: 9469682
Change-Id: Ic0f1fcd48891add992acf97632f60aebd172c1d7
2013-07-08 10:31:29 -07:00
Elliott Hughes
b611d36c3a am 24400ac1: am e63ea6ac: Merge "Clean up <sys/mount.h>/<linux/fs.h> duplication."
* commit '24400ac1e390615ebcb45deacc1c9213b00f75ff':
  Clean up <sys/mount.h>/<linux/fs.h> duplication.
2013-07-08 10:17:38 -07:00
Elliott Hughes
24400ac1e3 am e63ea6ac: Merge "Clean up <sys/mount.h>/<linux/fs.h> duplication."
* commit 'e63ea6aca7d01ba9219b877ed5fab6de5c6037fb':
  Clean up <sys/mount.h>/<linux/fs.h> duplication.
2013-07-08 10:12:32 -07:00
Elliott Hughes
e63ea6aca7 Merge "Clean up <sys/mount.h>/<linux/fs.h> duplication." 2013-07-08 17:08:52 +00:00
The Android Automerger
1456ec759c merge in klp-release history after reset to master 2013-07-08 06:00:29 -07:00
Elliott Hughes
e42e51d563 Clean up <sys/mount.h>/<linux/fs.h> duplication.
Roll on uapi...

Bug: 6340120
Change-Id: Ic9521905683946e836574e4d768e34853ea777fa
2013-07-03 14:58:04 -07:00
Nick Kralevich
20cb10824b am 601f968c: am 84983592: Merge "bionic_atomic_arm.h: Remove < ARMv6 support"
* commit '601f968cedf015c060de8dcf21e7e10bf596901f':
  bionic_atomic_arm.h: Remove < ARMv6 support
2013-07-03 14:33:22 -07:00
Nick Kralevich
601f968ced am 84983592: Merge "bionic_atomic_arm.h: Remove < ARMv6 support"
* commit '84983592ade3ec7d72d082262fb6646849979bfc':
  bionic_atomic_arm.h: Remove < ARMv6 support
2013-07-03 14:28:14 -07:00
Nick Kralevich
84983592ad Merge "bionic_atomic_arm.h: Remove < ARMv6 support" 2013-07-03 21:25:35 +00:00
Nick Kralevich
e91f71783b bionic_atomic_arm.h: Remove < ARMv6 support
This is dead code for most modern Android devices.

Bug: 9674955
Change-Id: Ic63a66b0331a0f07b9183f14a1d5e678c25e4b12
2013-07-03 14:14:06 -07:00
Elliott Hughes
1f75ee8606 am a8b954c5: am de2781d9: Merge changes I01345c23,I3b57517c
* commit 'a8b954c51edd9ec8c09a5d1dccacaadf5869d78a':
  Include linux/termios.h from sys/ioctl.h.
  Update linux/types.h to linux 2.6.20.
2013-07-03 13:45:45 -07:00
Elliott Hughes
a8b954c51e am de2781d9: Merge changes I01345c23,I3b57517c
* commit 'de2781d906f27be4df3e03a8e5041dcc1aeb281d':
  Include linux/termios.h from sys/ioctl.h.
  Update linux/types.h to linux 2.6.20.
2013-07-03 13:39:16 -07:00
Elliott Hughes
de2781d906 Merge changes I01345c23,I3b57517c
* changes:
  Include linux/termios.h from sys/ioctl.h.
  Update linux/types.h to linux 2.6.20.
2013-07-03 20:37:28 +00:00
Lorenzo Colitti
f936ef1a9f Include linux/termios.h from sys/ioctl.h.
On NetBSD and glibc, including sys/ioctl.h provides some
terminal ioctl data structures such as struct winsize. For
compatibility, provide these via sys/ioctl.h in bionic as well.
bionic does not have its own definitions for these structures, so
get them from the Linux kernel definitions.

Change-Id: I01345c23c0bebd60b0a80fc33668e7c0ad7356c3
2013-07-03 13:35:18 -07:00
Lorenzo Colitti
d7b0d6e1e1 Update linux/types.h to linux 2.6.20.
This picks up the source kernel header change
I984154487c38f6fa827bd78234f7fc2e4e1c383f .

Bug: 9469682
Change-Id: I3b57517cc6442ba4d0b8003d7398617e8226233f
2013-07-03 13:15:20 -07:00
Elliott Hughes
be438a4c40 am fac9199c: am ebc8ce1d: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."
* commit 'fac9199c7698481805dd9b1adaf89a2584719f4c':
  libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
2013-07-03 10:28:19 -07:00
Elliott Hughes
fac9199c76 am ebc8ce1d: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."
* commit 'ebc8ce1de68a83d772106af98c7cb98150bb5662':
  libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
2013-07-03 10:23:41 -07:00
Elliott Hughes
ebc8ce1de6 Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings." 2013-07-03 17:21:47 +00:00
Will Newton
2753e12af5 libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
This memcpy code uses NEON/VFP to achieve very good performance
on ARMv7-A processors. It is specifically tuned for A15 but should
provide good performance on A9 also. It is equivalent to the code
in cortex-strings rev 116.

This patch is a follow up the existing gerrit change:

I7f6f77995f3ca903ad9c66d14261441667a2a935

This version includes a tweak for performance on misaligned
buffers and splits the header comment into license and
documentation sections.

Change-Id: Ibd2e23c8d8e01357ba0247be1d05192de3ceba69
Signed-off-by: Will Newton <will.newton@linaro.org>
2013-07-03 10:20:43 -07:00
Elliott Hughes
997368d60d am 833dc584: am 87b4286f: Merge "Expose dn_comp and dn_expand to system C code."
* commit '833dc584d4d02ab8e396b877b38a8a5ad8ba4882':
  Expose dn_comp and dn_expand to system C code.
2013-07-02 16:05:34 -07:00
Elliott Hughes
833dc584d4 am 87b4286f: Merge "Expose dn_comp and dn_expand to system C code."
* commit '87b4286f092094a2e8069a06e20ef5036a258172':
  Expose dn_comp and dn_expand to system C code.
2013-07-02 16:02:30 -07:00
Elliott Hughes
87b4286f09 Merge "Expose dn_comp and dn_expand to system C code." 2013-07-02 23:00:38 +00:00
Lorenzo Colitti
b8e435c1d5 Expose dn_comp and dn_expand to system C code.
This is needed to compile open-source code that wants to
expand/compress domain names itself, such as ping6.

Bug: 9469682
Change-Id: I339c6538936d05c031bc6fb0a8793aaf1429dea4
2013-07-02 15:57:57 -07:00
Elliott Hughes
742aad3584 am 7c808b29: am feec97a7: Merge "Fix inttypes.h PRI?PTR and SCN?PTR macros."
* commit '7c808b29d5cea61e5bda90a1b0f2f0e669ee135e':
  Fix inttypes.h PRI?PTR and SCN?PTR macros.
2013-07-02 15:50:36 -07:00
Elliott Hughes
7c808b29d5 am feec97a7: Merge "Fix inttypes.h PRI?PTR and SCN?PTR macros."
* commit 'feec97a7c7fbd032174fb4870a02422c2acd891a':
  Fix inttypes.h PRI?PTR and SCN?PTR macros.
2013-07-02 15:44:48 -07:00
Elliott Hughes
feec97a7c7 Merge "Fix inttypes.h PRI?PTR and SCN?PTR macros." 2013-07-02 22:42:49 +00:00
Elliott Hughes
74f0833df6 Fix inttypes.h PRI?PTR and SCN?PTR macros.
Our intptr_t and uintptr_t aren't "long". Add a compilation test so we remember
to fix this to cope with 32- and 64-bit later.

Bug: http://code.google.com/p/android/issues/detail?id=57218
Change-Id: I2f816d339edb4f7d57e4418b818fb4c602093f38
2013-07-02 15:35:27 -07:00
Nick Kralevich
e4723161d5 Merge "mmap: Don't call madvise if mmap fails" 2013-07-02 19:52:44 +00:00
Elliott Hughes
2aac0fcc20 am dcd237a8: am 1ba3a2c2: Merge "Update icmp6.h to current NetBSD."
* commit 'dcd237a89707357ead904a2476bb2210e251c173':
  Update icmp6.h to current NetBSD.
2013-07-02 12:41:37 -07:00
Elliott Hughes
dcd237a897 am 1ba3a2c2: Merge "Update icmp6.h to current NetBSD."
* commit '1ba3a2c26937c68a4a0bd4fdffe95f5162077997':
  Update icmp6.h to current NetBSD.
2013-07-02 12:34:36 -07:00
Nick Kralevich
553a5ec407 mmap: Don't call madvise if mmap fails
Fix improper check of return value from __mmap2. On a failed
mmap(), it returns MAP_FAILED, not 0. This ended up clobbering errno
when madvise subsequently failed.

Change-Id: I364fb2f158fe258c55a73e552195384b2c11c193
2013-07-02 12:31:07 -07:00
Elliott Hughes
1ba3a2c269 Merge "Update icmp6.h to current NetBSD." 2013-07-02 16:40:42 +00:00
Lorenzo Colitti
ce7c404dc7 Update icmp6.h to current NetBSD.
This adds a few bits we need such as RFC 6106 support and the
definition of MLD_LISTENER_REDUCTION.

http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/netinet/icmp6.h?rev=1.47

Bug: 9469682
Change-Id: I97a4c2f0893012ce315334367c055097d0f8bb10
2013-07-02 09:38:59 -07:00
The Android Automerger
9db12e44af merge in klp-release history after reset to master 2013-07-02 07:07:20 -07:00
Christopher Ferris
c6ac3ae269 am 269daac2: am 7c14d67b: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."
* commit '269daac2f1d76a478b83ba4cbb57d28b47eef5ec':
  libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
2013-07-01 10:39:08 -07:00
Christopher Ferris
269daac2f1 am 7c14d67b: Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings."
* commit '7c14d67bc1cc2679365a784e68518bf602b81dc7':
  libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
2013-07-01 10:32:17 -07:00
Christopher Ferris
7c14d67bc1 Merge "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings." 2013-07-01 17:29:07 +00:00
Nick Kralevich
4b17283c98 am 28d298a6: am 413eef71: Merge "More FORTIFY_SOURCE functions under clang"
* commit '28d298a673da4367f27f428db5e12d7dad3d8e83':
  More FORTIFY_SOURCE functions under clang
2013-07-01 10:04:18 -07:00
Nick Kralevich
28d298a673 am 413eef71: Merge "More FORTIFY_SOURCE functions under clang"
* commit '413eef716f822d5eb4f57618f6780c6af5036460':
  More FORTIFY_SOURCE functions under clang
2013-07-01 10:00:09 -07:00
Nick Kralevich
413eef716f Merge "More FORTIFY_SOURCE functions under clang" 2013-07-01 16:57:05 +00:00
The Android Automerger
5da8df2840 merge in klp-release history after reset to master 2013-07-01 07:07:20 -07:00
Will Newton
b61103dff4 libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.
This memcpy code uses NEON/VFP to achieve very good performance
on ARMv7-A processors. It is specifically tuned for A15 but should
provide good performance on A9 also. It is equivalent to the code
in cortex-strings rev 116.

This patch is a follow up the existing gerrit change:

I7f6f77995f3ca903ad9c66d14261441667a2a935

But this version includes a tweak for performance on misaligned
buffers.

Change-Id: I285abac0068f8ae29a1cbf7862ea8590aadaf0a7
Signed-off-by: Will Newton <will.newton@linaro.org>
2013-07-01 11:15:27 +01:00
Nick Kralevich
a6cde39276 More FORTIFY_SOURCE functions under clang
* bzero
* umask
* strlcat

Change-Id: I65065208e0b8b37e10f6a266d5305de8fa9e59fc
2013-06-29 08:16:22 -07:00
Nick Kralevich
22570f51a5 am a289964b: am 227b47a4: Merge "resolv_private.h: remove #define b64_ntop and b64_pton"
* commit 'a289964bca39c591b54e0c336da1a6730e85cd61':
  resolv_private.h: remove #define b64_ntop and b64_pton
2013-06-28 13:37:08 -07:00
Nick Kralevich
a289964bca am 227b47a4: Merge "resolv_private.h: remove #define b64_ntop and b64_pton"
* commit '227b47a461b27d746b373feb66001cdddc9ba1db':
  resolv_private.h: remove #define b64_ntop and b64_pton
2013-06-28 13:32:43 -07:00
Nick Kralevich
227b47a461 Merge "resolv_private.h: remove #define b64_ntop and b64_pton" 2013-06-28 20:31:11 +00:00
Nick Kralevich
ca43d73d23 resolv_private.h: remove #define b64_ntop and b64_pton
This was gated off of "#ifndef ADNROID_CHANGES" (note mispelling)
and is unconditionally defined in libc/include/resolv.h
(which this file includes). No need for duplicate definitions.

Change-Id: I00719bcf39eaa26eb96ab4274f171f3d2b5bae61
2013-06-28 13:18:32 -07:00
Nick Kralevich
fda0c06605 am 2018cfa8: am 394df35e: Merge "Reorganize FORTIFY_SOURCE tests."
* commit '2018cfa85d4c7f36316376f5b090be5f0d3d13dc':
  Reorganize FORTIFY_SOURCE tests.
2013-06-28 13:15:39 -07:00
Nick Kralevich
2018cfa85d am 394df35e: Merge "Reorganize FORTIFY_SOURCE tests."
* commit '394df35e641816a3b9f0e065840b673dec9c73e5':
  Reorganize FORTIFY_SOURCE tests.
2013-06-28 13:11:14 -07:00
Nick Kralevich
394df35e64 Merge "Reorganize FORTIFY_SOURCE tests." 2013-06-28 20:05:57 +00:00
Nick Kralevich
5bcf39842e Reorganize FORTIFY_SOURCE tests.
Get rid of a lot of the duplication in the various FORTIFY_SOURCE
tests. Instead, we build 4 separate static libraries, with
4 different compile time options, and link them into the final test
binary.

Change-Id: Idb0b7cccc8dd837adb037bf4ddfe8942ae138230
2013-06-28 11:54:29 -07:00
Nick Kralevich
9a268a10bb am f9ef0106: am 78a7bf99: Merge "stdio.h: enable vs?printf clang FORTIFY_SOURCE"
* commit 'f9ef0106da43d21e6cb68d87b86d806f63b215fd':
  stdio.h: enable vs?printf clang FORTIFY_SOURCE
2013-06-27 10:18:17 -07:00
Nick Kralevich
f9ef0106da am 78a7bf99: Merge "stdio.h: enable vs?printf clang FORTIFY_SOURCE"
* commit '78a7bf998d2d29592504984fcf419cd2701c6c54':
  stdio.h: enable vs?printf clang FORTIFY_SOURCE
2013-06-27 10:15:31 -07:00
Nick Kralevich
78a7bf998d Merge "stdio.h: enable vs?printf clang FORTIFY_SOURCE" 2013-06-27 17:13:25 +00:00
Nick Kralevich
c8ae8bd941 stdio.h: enable vs?printf clang FORTIFY_SOURCE
Enable FORTIFY_SOURCE protections under clang for the following
functions:

  * vsprintf
  * vsnprintf

and add unittests.

Change-Id: I90f8a27f7b202c78b5dd8ebf53050bf9e33496f7
2013-06-27 09:17:48 -07:00
The Android Automerger
e4450b447e merge in klp-release history after reset to master 2013-06-26 07:07:28 -07:00
Colin Cross
2f76830a01 am 146d79c2: am fbec57d4: Merge changes Ib496e818,I074204e9
* commit '146d79c22a70d772defc63acfa6ac6128102a15f':
  bionic: add compatibility mode for properties
  bionic: use the size of the file to determine property area size
2013-06-25 18:29:14 -07:00
Colin Cross
146d79c22a am fbec57d4: Merge changes Ib496e818,I074204e9
* commit 'fbec57d46c42460b2381484d1610ff21922d162e':
  bionic: add compatibility mode for properties
  bionic: use the size of the file to determine property area size
2013-06-25 17:08:48 -07:00
Colin Cross
fbec57d46c Merge changes Ib496e818,I074204e9
* changes:
  bionic: add compatibility mode for properties
  bionic: use the size of the file to determine property area size
2013-06-26 00:03:24 +00:00
Elliott Hughes
9145ae66d7 am db6dd600: am b116bf76: Merge "Switch to current upstream getopt_long."
* commit 'db6dd600d23eafb1742e5114bae7a4b8be4c04e1':
  Switch to current upstream getopt_long.
2013-06-25 17:02:11 -07:00
Rom Lemarchand
6937468d37 am baa61864: am 995f17e6: Merge "libc: add swapon and swapoff syscalls"
* commit 'baa61864c515a56d4dbeac46b149b4317b01797b':
  libc: add swapon and swapoff syscalls
2013-06-25 17:02:06 -07:00
Elliott Hughes
43508014c4 am 51371ee0: am c76550b3: Merge "Update x86 machine/endian.h from upstream"
* commit '51371ee0d897285b869aa2af670e153ead471e03':
  Update x86 machine/endian.h from upstream
2013-06-25 17:01:53 -07:00
Elliott Hughes
d9643a3119 am d31287d6: am 7d624e9a: Merge "Kernel dso support for \'dl_iterate_phdr\' function"
* commit 'd31287d6017475209cfee2fea0532bdc8c0f4aac':
  Kernel dso support for 'dl_iterate_phdr' function
2013-06-25 17:01:47 -07:00
Colin Cross
5e9a086145 bionic: add compatibility mode for properties
Allow a new bionic to work with an old init property area by supporting
the old format.

(cherry picked from commit ad76c85b9c)

Change-Id: Ib496e818a62a5834d40c71eb4745783d998be893
2013-06-25 16:52:40 -07:00
Colin Cross
1ec20a086c bionic: use the size of the file to determine property area size
On the reader size, don't assume that the property size is PA_SIZE,
read it from the size of the file.  Allows init to use a different
property size without recompiling statically linked executables.

(cherry picked from commit 285b42a04c)

Change-Id: I074204e9e6591b35faf7c1c58fb11ec162aff7bf
2013-06-25 16:52:34 -07:00
Nick Kralevich
caad18c7d1 am 71802135: am bfacb603: Merge "libc: enable FORTIFY_SOURCE snprintf under clang"
* commit '7180213557f3120b391053b4f5861037eda6ebb6':
  libc: enable FORTIFY_SOURCE snprintf under clang
2013-06-25 16:30:53 -07:00
Colin Cross
4fc4c9be84 am a99e29e6: (-s ours) am 1642edb5: Merge changes Ib074192d,I6df3afed,I69070455,Icbe31908,Id3fa4526,I038d451f
* commit 'a99e29e61090da9c21c17cae54211083a2268d6e':
  bionic: store property names as variable-length strings
  bionic: prevent root processes from calling __system_property_add
  bionic: revert to a single (larger) property area
  bionic: reimplement property area as hybrid trie/binary tree
  bionic: add missing memory barriers to system properties
  bionic: make property area expandable
2013-06-25 16:30:34 -07:00
Elliott Hughes
db6dd600d2 am b116bf76: Merge "Switch to current upstream getopt_long."
* commit 'b116bf76286178a7d552c4d0a72b79212c8c93d1':
  Switch to current upstream getopt_long.
2013-06-25 15:58:53 -07:00
Elliott Hughes
b116bf7628 Merge "Switch to current upstream getopt_long." 2013-06-25 22:56:59 +00:00
Rom Lemarchand
baa61864c5 am 995f17e6: Merge "libc: add swapon and swapoff syscalls"
* commit '995f17e6a9a9903f03f542192da9a83b1cabc684':
  libc: add swapon and swapoff syscalls
2013-06-25 15:28:21 -07:00
Rom Lemarchand
995f17e6a9 Merge "libc: add swapon and swapoff syscalls" 2013-06-25 22:25:31 +00:00
Elliott Hughes
d278b828fe Switch to current upstream getopt_long.
Change-Id: I4c646dcb8be9e88dd54d069a03bbc5fbfd92de03
2013-06-25 14:56:17 -07:00
Elliott Hughes
51371ee0d8 am c76550b3: Merge "Update x86 machine/endian.h from upstream"
* commit 'c76550b3377f50a2bc53536e2713e14edc8dbeac':
  Update x86 machine/endian.h from upstream
2013-06-25 14:22:14 -07:00
Elliott Hughes
c76550b337 Merge "Update x86 machine/endian.h from upstream" 2013-06-25 21:20:18 +00:00
Pavel Chupin
64a4f6adf7 Update x86 machine/endian.h from upstream
After download new version from upstream (OpenBSD 1.17) did the
following:
 * changed all u_int* types to uint*
 * add #include <sys/types.h>

All these changes are Android-specific and had been done before for
previous version (1.14).

Bug: http://code.google.com/p/android/issues/detail?id=54465
Change-Id: Ieb44e7fce4e794d997bb00ee0dd417fb61521720
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2013-06-25 14:17:58 -07:00
Colin Cross
ad76c85b9c bionic: add compatibility mode for properties
Allow a new bionic to work with an old init property area by supporting
the old format.

Change-Id: I9268214b2f8930e75e3b5c26afe94fa92068bf0b
2013-06-25 13:34:45 -07:00
Colin Cross
285b42a04c bionic: use the size of the file to determine property area size
On the reader size, don't assume that the property size is PA_SIZE,
read it from the size of the file.  Allows init to use a different
property size without recompiling statically linked executables.

Change-Id: I87fb0bf40c4724e3759a583fd9ea1f49492bc958
2013-06-25 13:34:45 -07:00
Greg Hackmann
4fe82929eb bionic: store property names as variable-length strings
Names are immutable, so the fixed-sized arrays can be replaced with
variable-length ones to save memory (especially on internal tree nodes).

Change-Id: Iddf7856fba579b97f355e9ad4b3663a78767b96d
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-25 13:34:42 -07:00
Colin Cross
fc761f8cc0 bionic: prevent root processes from calling __system_property_add
If a root process other than init calls __system_property_add, which
it should never do, it will break the design assumption that there is
only one mutator.

Pass O_EXCL to open() in map_prop_region_rw to ensure that only one
process ever has the property pages open for write.

Change-Id: I8233bfe0beaa40a5003ad53b98c661536b15f6b7
2013-06-25 13:34:36 -07:00
Greg Hackmann
be30c7a78a bionic: revert to a single (larger) property area
d329697 is too complicated.  Change the multiple property pages back to
a single 128K property area that's mapped in entirely at initialization
(the memory will not get allocated until the pages are touched).

d329697 has other changes useful for testing (moving property area
initialization inside bionic and adding __system_property_set_filename)
so undo the change manually rather than with git revert.

Change-Id: Icd137669a4f8bc248e9dd2c1e8cc54e9193c9a6d
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-25 13:34:32 -07:00
Greg Hackmann
d5276422ca bionic: add hierarchical properties test
Deliberately put items several levels deep in the trie hierarchy to test
the trie traversal

Change-Id: I995a1cdd3b5e74162fb5d25bc0f65140bdf2f719
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-25 13:34:29 -07:00
Greg Hackmann
4482d85139 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: Ic28b3c5246004a3c502eb02d6e1c9b512884d872
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-25 13:34:24 -07:00
Rom Lemarchand
d206b560e7 libc: add swapon and swapoff syscalls
Change-Id: Ie79dc8e3f2ff1cd427dd6d95e3850920c4b407b0
Signed-off-by: Rom Lemarchand <romlem@google.com>
2013-06-25 13:18:03 -07:00
Elliott Hughes
d31287d601 am 7d624e9a: Merge "Kernel dso support for \'dl_iterate_phdr\' function"
* commit '7d624e9aff4c6addea7f2275fe58ff0815d95c70':
  Kernel dso support for 'dl_iterate_phdr' function
2013-06-25 13:17:37 -07:00
Elliott Hughes
7d624e9aff Merge "Kernel dso support for 'dl_iterate_phdr' function" 2013-06-25 20:15:30 +00:00
Sergey Melnikov
c45087bffa Kernel dso support for 'dl_iterate_phdr' function
Kernel provides virtual DSO for stack unwinding/exception handlind info for
signal usage case. Stack unwinding routines use 'dl_iterate_phdr' function
for additional DWARF info gathering from DSOs. Patch enables virtual DSO
enumeration via dl_iterate_phdr function.

Signed-off-by: Sergey Melnikov <sergey.melnikov@intel.com>
Change-Id: Ic2882b28f40b456a088bc1e63c50cbfda7e4a102
2013-06-25 13:12:39 -07:00
Nick Kralevich
7180213557 am bfacb603: Merge "libc: enable FORTIFY_SOURCE snprintf under clang"
* commit 'bfacb603e417c1e2c25ce8482b5c6e31b4db8c9b':
  libc: enable FORTIFY_SOURCE snprintf under clang
2013-06-25 10:34:20 -07:00
Nick Kralevich
bfacb603e4 Merge "libc: enable FORTIFY_SOURCE snprintf under clang" 2013-06-25 17:26:20 +00:00
Nick Kralevich
621b19dddb libc: enable FORTIFY_SOURCE snprintf under clang
Change-Id: I8b8059782a720104722b0841994b38f873ed02aa
2013-06-25 10:02:35 -07:00
The Android Automerger
4261a08409 merge in klp-release history after reset to master 2013-06-25 07:07:12 -07:00
Nick Kralevich
5f7f7fca27 am 95448039: am 0ea1d5c0: Merge "libc: enable sprintf FORTIFY_SOURCE under clang"
* commit '954480393f4539f62cdc3f6cb83c562050ea4f51':
  libc: enable sprintf FORTIFY_SOURCE under clang
2013-06-25 05:59:32 -07:00
Greg Hackmann
c79de97ccc bionic: replace 4K property pages with 32K property pages
Fixes apps compiled statically against new libc but running with old
init

Bug: 9558625
Change-Id: I79e6f02575d278d4c7d8e8546d772ed0529bcaab
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 19:23:34 -07:00
Greg Hackmann
de76bafb21 bionic: replace 4K property pages with 32K property pages
Fixes apps compiled statically against new libc but running with old
init

Bug: 9558625
Change-Id: I79e6f02575d278d4c7d8e8546d772ed0529bcaab
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 18:41:46 -07:00
Greg Hackmann
44c273c293 Revert "bionic: reimplement property area as hybrid trie/binary tree"
This reverts commit 6ac8e6a46d.
2013-06-24 18:05:20 -07:00
Greg Hackmann
890aa0d937 Revert "bionic: add hierarchical properties test"
This reverts commit 0f76e2340c.
2013-06-24 18:05:18 -07:00
Greg Hackmann
fa8cc0629f Revert "bionic: revert to a single (larger) property area"
This reverts commit 5f05348c18.
2013-06-24 18:05:16 -07:00
Greg Hackmann
b938756eb3 Revert "bionic: prevent root processes from calling __system_property_add"
This reverts commit fb9b7b436f.
2013-06-24 18:05:14 -07:00
Greg Hackmann
982463d99b Revert "bionic: store property names as variable-length strings"
This reverts commit 492ce95d9f.
2013-06-24 18:05:10 -07:00
Colin Cross
a99e29e610 am 1642edb5: Merge changes Ib074192d,I6df3afed,I69070455,Icbe31908,Id3fa4526,I038d451f
* commit '1642edb5208fe02ef64d5734fffaf7c4a724fd2f':
  bionic: store property names as variable-length strings
  bionic: prevent root processes from calling __system_property_add
  bionic: revert to a single (larger) property area
  bionic: reimplement property area as hybrid trie/binary tree
  bionic: add missing memory barriers to system properties
  bionic: make property area expandable
2013-06-24 17:10:16 -07:00
Colin Cross
1642edb520 Merge changes Ib074192d,I6df3afed,I69070455,Icbe31908,Id3fa4526,I038d451f
* changes:
  bionic: store property names as variable-length strings
  bionic: prevent root processes from calling __system_property_add
  bionic: revert to a single (larger) property area
  bionic: reimplement property area as hybrid trie/binary tree
  bionic: add missing memory barriers to system properties
  bionic: make property area expandable
2013-06-25 00:07:53 +00:00
Greg Hackmann
836dbf65e4 bionic: store property names as variable-length strings
Names are immutable, so the fixed-sized arrays can be replaced with
variable-length ones to save memory (especially on internal tree nodes).

Signed-off-by: Greg Hackmann <ghackmann@google.com>

(cherry picked from commit 492ce95d9f)

Change-Id: Ib074192d1b71150233d78c58e9ffcf7ecf688b6b
2013-06-24 16:35:46 -07:00
Colin Cross
1d36ee1a6e bionic: prevent root processes from calling __system_property_add
If a root process other than init calls __system_property_add, which
it should never do, it will break the design assumption that there is
only one mutator.

Pass O_EXCL to open() in map_prop_region_rw to ensure that only one
process ever has the property pages open for write.

(cherry picked from commit fb9b7b436f)

Change-Id: I6df3afedbfb5d07891b095aa24b78278381a5aaf
2013-06-24 16:35:41 -07:00
Greg Hackmann
1540f601be bionic: revert to a single (larger) property area
d329697 is too complicated.  Change the multiple property pages back to
a single 128K property area that's mapped in entirely at initialization
(the memory will not get allocated until the pages are touched).

d329697 has other changes useful for testing (moving property area
initialization inside bionic and adding __system_property_set_filename)
so undo the change manually rather than with git revert.

Signed-off-by: Greg Hackmann <ghackmann@google.com>

(cherry picked from commit 5f05348c18)

Change-Id: I690704552afc07a4dd410277893ca9c40bc13e5f
2013-06-24 16:35:37 -07:00
Greg Hackmann
996cdc4b1a 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).

Signed-off-by: Greg Hackmann <ghackmann@google.com>

(cherry picked from commit 6ac8e6a46d)

Change-Id: Icbe31908572f33b4d9b85d5b62ac837cbd0f85e0
2013-06-24 16:35:32 -07:00
Greg Hackmann
f7511e3bc9 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

Signed-off-by: Greg Hackmann <ghackmann@google.com>

(cherry picked from commit 5bfa3ee8b3)

Change-Id: Id3fa45261fc2df2ae493ab5194bc2b6bff04e966
2013-06-24 16:35:27 -07:00
Greg Hackmann
cb215a7e9e 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.

Signed-off-by: Greg Hackmann <ghackmann@google.com>

(cherry picked from commit d32969701b)

Change-Id: I038d451fe8849b0c4863663eec6f57f6521bf4a7
2013-06-24 16:35:15 -07:00
Greg Hackmann
492ce95d9f bionic: store property names as variable-length strings
Names are immutable, so the fixed-sized arrays can be replaced with
variable-length ones to save memory (especially on internal tree nodes).

Change-Id: Iee77874b4b55b0f9c5e531d1334be7f7f40086d2
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 16:15:52 -07:00
Colin Cross
fb9b7b436f bionic: prevent root processes from calling __system_property_add
If a root process other than init calls __system_property_add, which
it should never do, it will break the design assumption that there is
only one mutator.

Pass O_EXCL to open() in map_prop_region_rw to ensure that only one
process ever has the property pages open for write.

Change-Id: I6b7c118e5e2fd2b92a2b168b8454fe9707325462
2013-06-24 16:15:52 -07:00
Greg Hackmann
5f05348c18 bionic: revert to a single (larger) property area
d329697 is too complicated.  Change the multiple property pages back to
a single 128K property area that's mapped in entirely at initialization
(the memory will not get allocated until the pages are touched).

d329697 has other changes useful for testing (moving property area
initialization inside bionic and adding __system_property_set_filename)
so undo the change manually rather than with git revert.

Change-Id: I0ecb27843404f93af5489f15bfe657d65175e4f0
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 16:15:52 -07:00
Nick Kralevich
954480393f am 0ea1d5c0: Merge "libc: enable sprintf FORTIFY_SOURCE under clang"
* commit '0ea1d5c0ae94ee581c72451b20813c028f51090c':
  libc: enable sprintf FORTIFY_SOURCE under clang
2013-06-24 15:20:39 -07:00
Nick Kralevich
0ea1d5c0ae Merge "libc: enable sprintf FORTIFY_SOURCE under clang" 2013-06-24 22:15:12 +00:00
Nick Kralevich
c6eb985454 libc: enable sprintf FORTIFY_SOURCE under clang
clang doesn't support __builtin_va_arg_pack(), so we have
to use #define instead.

Change-Id: I2ee75e6267d60cdf997fee6b9b0547bf68f062a1
2013-06-24 14:10:29 -07:00
Greg Hackmann
0f76e2340c bionic: add hierarchical properties test
Deliberately put items several levels deep in the trie hierarchy to test
the trie traversal

Change-Id: Id3cbd2e7d3500216b1ac8025eac70c0939622903
Signed-off-by: Greg Hackmann <ghackmann@google.com>
2013-06-24 13:14:10 -07:00
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
The Android Automerger
22476056b0 merge in klp-release history after reset to master 2013-06-24 09:44:30 -07: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
The Android Automerger
6e06d4b106 merge in klp-release history after reset to master 2013-06-19 07:40:48 -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
Colin Cross
7d06813d93 bionic: fix deleting property arrays in property benchmark
Use delete[] to delete arrays allocated with new []

Change-Id: Icc2a6b23df09049c008f7f1f50ed93a277174308
2013-06-18 13:08:28 -07:00
Colin Cross
3b599c1dde am 1a38e063: am 0005b354: Merge "bionic: change properties benchmarks to read a single property"
* commit '1a38e063830924efb8a6d9d7a6135ef54460cb9b':
  bionic: change properties benchmarks to read a single property
2013-06-18 13:07:58 -07:00
Nick Kralevich
a641c18f0c libc: Rename fortify error functions.
__umask_error -> __umask_invalid_mode
__creat_error -> __creat_missing_mode
__too_many_args_error -> __creat_too_many_args

Change-Id: I4036f344a3a93628e70f2e948ad73cfed3a967ea
2013-06-18 13:07:18 -07:00
Colin Cross
1a38e06383 am 0005b354: Merge "bionic: change properties benchmarks to read a single property"
* commit '0005b3544be345e697592b4dc199ebaa37048559':
  bionic: change properties benchmarks to read a single property
2013-06-18 13:04:10 -07:00
Colin Cross
0005b3544b Merge "bionic: change properties benchmarks to read a single property" 2013-06-18 20:01:05 +00:00
Colin Cross
7d90cfa6b5 bionic: change properties benchmarks to read a single property
The properties benchmarks were reading n properties from a property
area with n properties in it, which was making it hard to compare
the time between runs of different sizes.  Change the benchmark
to read a random property per iteration so the numbers between
runs are comparable.

Change-Id: Ib1648ce0948d9038fce76d209608427376cfb8da
2013-06-18 12:55:52 -07:00
Nick Kralevich
16d1af167f libc: add limited FORTIFY_SOURCE support for clang
In 829c089f83, we disabled all
FORTIFY_SOURCE support when compiling under clang. At the time,
we didn't have proper test cases, and couldn't easily create targeted
clang tests.

This change re-enables FORTIFY_SOURCE support under clang for a
limited set of functions, where we have explicit unittests available.
The functions are:

* memcpy
* memmove
* strcpy
* strncpy
* strcat
* strncat
* memset
* strlen (with modifications)
* strchr (with modifications)
* strrchr (with modifications)

It may be possible, in the future, to enable other functions. However,
I need to write unittests first.

For strlen, strchr, and strrchr, clang unconditionally calls the
fortified version of the relevant function. If it doesn't know the
size of the buffer it's dealing with, it passes in ((size_t) -1),
which is the largest possible size_t.

I added two new clang specific unittest files, primarily copied
from fortify?_test.cpp.

I've also rebuild the entire system with these changes, and didn't
observe any obvious problems.

Change-Id: If12a15089bb0ffe93824b485290d05b14355fcaa
2013-06-18 12:14:20 -07:00
Nick Kralevich
b24c0637d0 libc: Introduce __errordecl()
Define __errordecl and replace __attribute__((__error__("foo")))
with __errordecl. Make sure __errordecl is a no-op on clang, as it
generates a compile time warning.

Change-Id: Ifa1a2d3afd6881de9d479fc2adac6737871a2949
2013-06-18 12:13:52 -07:00
The Android Automerger
cb83bdfa6b merge in master-release history after reset to master 2013-06-18 07:49:19 -07:00
Colin Cross
66a061c8b5 am f6e6e5e7: am 977a3313: Merge changes Iac00ce10,I192d3825
* commit 'f6e6e5e72774e302c461767ca0c194f25502108e':
  bionic: add tests for properties
  bionic: move system property writing from init to bionic
2013-06-17 18:33:50 -07:00
Colin Cross
f6e6e5e727 am 977a3313: Merge changes Iac00ce10,I192d3825
* commit '977a33137d2be0093f474055f839cf665b82b588':
  bionic: add tests for properties
  bionic: move system property writing from init to bionic
2013-06-17 18:21:37 -07:00
Colin Cross
977a33137d Merge changes Iac00ce10,I192d3825
* changes:
  bionic: add tests for properties
  bionic: move system property writing from init to bionic
2013-06-18 01:11:58 +00:00
Colin Cross
b27e200ad6 bionic: add tests for properties
(cherry picked from commit 37d9f75dde)

Change-Id: Iac00ce10a4272032a1cbdbc4204277d6876e3365
2013-06-17 16:58:47 -07:00
Colin Cross
5cf32de7a0 bionic: move system property writing from init to bionic
Move the implementation of writing to the system property area
from init to bionic, next to the reader implementation.  This
will allow full property testing to be added to bionic tests.

Add new accessor and waiting functions to hide the implementation
from watchprops and various bionic users.

Also hide some of the implementation details of the property area
from init by moving them into _system_properties.h, and other details
from everybody by moving them into system_properties.h.

(cherry picked from commit dc1038b790)

Change-Id: I192d3825ee276c5047bc751039fe6cfe226a7cca
2013-06-17 16:58:43 -07:00
Elliott Hughes
9edf071a5d am d2dbf163: am 5995bf88: Merge "don\'t hardcode register r0/v1 when reading the TLS"
* commit 'd2dbf16358bee4777a3e4937cf316fa8bb905559':
  don't hardcode register r0/v1 when reading the TLS
2013-06-17 14:56:04 -07:00
Elliott Hughes
d2dbf16358 am 5995bf88: Merge "don\'t hardcode register r0/v1 when reading the TLS"
* commit '5995bf880e2a7fac249382f0a929b7271c843122':
  don't hardcode register r0/v1 when reading the TLS
2013-06-17 14:53:12 -07:00
Elliott Hughes
5995bf880e Merge "don't hardcode register r0/v1 when reading the TLS" 2013-06-17 21:51:50 +00:00
Mathias Agopian
b6e340080a don't hardcode register r0/v1 when reading the TLS
this leads to much improved code when calling __get_tls()

Change-Id: I21d870fb33c33a921ca55c4e100772e0f7a8d1e4
2013-06-17 14:50:30 -07:00
Colin Cross
37d9f75dde bionic: add tests for properties
Change-Id: I09b212966f1c9624631653ef2c7a71de78bbbec1
2013-06-17 12:58:18 -07:00
Colin Cross
dc1038b790 bionic: move system property writing from init to bionic
Move the implementation of writing to the system property area
from init to bionic, next to the reader implementation.  This
will allow full property testing to be added to bionic tests.

Add new accessor and waiting functions to hide the implementation
from watchprops and various bionic users.

Also hide some of the implementation details of the property area
from init by moving them into _system_properties.h, and other details
from everybody by moving them into system_properties.h.

Change-Id: I9026e604109e30546b2849b60cab2e7e5ff00ba5
2013-06-17 12:44:34 -07:00
Elliott Hughes
a658ed09e5 am afd4e299: am 657d0da7: Merge "Slight script cleanup; make gensyscalls work from any directory."
* commit 'afd4e2999c3e726498c407fcaf9cccdcd4d24637':
  Slight script cleanup; make gensyscalls work from any directory.
2013-06-17 11:22:01 -07:00
Elliott Hughes
afd4e2999c am 657d0da7: Merge "Slight script cleanup; make gensyscalls work from any directory."
* commit '657d0da7513e01b0eb104c8a8a522c28fdbc807d':
  Slight script cleanup; make gensyscalls work from any directory.
2013-06-17 11:18:58 -07:00
Elliott Hughes
657d0da751 Merge "Slight script cleanup; make gensyscalls work from any directory." 2013-06-17 18:16:36 +00:00
Elliott Hughes
18bc975bfe Slight script cleanup; make gensyscalls work from any directory.
Also remove a ton of dead code.

Change-Id: I1315623695a004f643b155f121cbafe24b715b8a
2013-06-17 10:39:33 -07:00
The Android Automerger
31d61f13ab merge in master-release history after reset to master 2013-06-17 07:49:47 -07:00
Chad Brubaker
638503b515 Fix remove_uidiface_info failing on first entry
Change-Id: Ic23506581ff835a6b679e1593eab550a84548056
2013-06-14 15:25:42 -07:00
Elliott Hughes
8f5440c486 am c1e4183c: am 560e9f7e: Merge "Ensure that <stdint.h> defines SIZE_MAX and friends."
* commit 'c1e4183c7ad6943f9cc44fe0b769884370a739cd':
  Ensure that <stdint.h> defines SIZE_MAX and friends.
2013-06-13 18:04:19 -07:00
Elliott Hughes
c1e4183c7a am 560e9f7e: Merge "Ensure that <stdint.h> defines SIZE_MAX and friends."
* commit '560e9f7e7a39e02aca96709043ca06f562f75d58':
  Ensure that <stdint.h> defines SIZE_MAX and friends.
2013-06-13 16:21:55 -07:00
Elliott Hughes
560e9f7e7a Merge "Ensure that <stdint.h> defines SIZE_MAX and friends." 2013-06-13 23:19:09 +00:00
Elliott Hughes
7c89506e3a Ensure that <stdint.h> defines SIZE_MAX and friends.
We were missing SIG_ATOMIC_MAX, SIG_ATOMIC_MIN, SIZE_MAX,
WCHAR_MAX, WCHAR_MIN, WINT_MAX, and WINT_MIN.

Change-Id: I2535f36bc220fbaea009b483599b7af811c4cb5c
2013-06-13 16:02:53 -07:00
Elliott Hughes
fa3af2dd67 am af975b07: am c843a3e7: Merge "Fix the qsort copyright notice (fixed upstream this afternoon)."
* commit 'af975b076f79b35cb115c0f77fc8fc0e5d3dba67':
  Fix the qsort copyright notice (fixed upstream this afternoon).
2013-06-12 17:51:25 -07:00
Elliott Hughes
af975b076f am c843a3e7: Merge "Fix the qsort copyright notice (fixed upstream this afternoon)."
* commit 'c843a3e7b215bca5e896e1d56c2fa6332770ea83':
  Fix the qsort copyright notice (fixed upstream this afternoon).
2013-06-12 17:46:57 -07:00
Elliott Hughes
c843a3e7b2 Merge "Fix the qsort copyright notice (fixed upstream this afternoon)." 2013-06-13 00:44:05 +00:00
Elliott Hughes
4eeec44e29 Fix the qsort copyright notice (fixed upstream this afternoon).
Change-Id: I786feb42719bceaa7da91565e350c1333b0d301f
2013-06-12 17:42:43 -07:00
Elliott Hughes
050374836f am ddbf561e: am c843d766: Merge "Handles spurious wake-ups in pthread_join()"
* commit 'ddbf561e5ee8f16fc15d26b085d19ce6abf7e4e0':
  Handles spurious wake-ups in pthread_join()
2013-06-12 17:38:26 -07:00
Elliott Hughes
de1b73dd70 am 7ae23868: am 92e841d0: Merge "Take upstream libm changes."
* commit '7ae23868b4741f9b1af874ebbb13ec3ba930d679':
  Take upstream libm changes.
2013-06-12 17:35:02 -07:00
Elliott Hughes
ddbf561e5e am c843d766: Merge "Handles spurious wake-ups in pthread_join()"
* commit 'c843d7667ada205ecbaf773531067076ed4ad271':
  Handles spurious wake-ups in pthread_join()
2013-06-12 17:34:17 -07:00
Elliott Hughes
c843d7667a Merge "Handles spurious wake-ups in pthread_join()" 2013-06-13 00:31:50 +00:00
Elliott Hughes
7ae23868b4 am 92e841d0: Merge "Take upstream libm changes."
* commit '92e841d0aa8d118882a74e3c3fc4b6a6062dcc09':
  Take upstream libm changes.
2013-06-12 17:30:59 -07:00
msg555
0f020d18b1 Handles spurious wake-ups in pthread_join()
Removed 'join_count' from pthread_internal_t and switched to using the flag
PTHREAD_ATTR_FLAG_JOINED to indicate if a thread is being joined. Combined with
a switch to a while loop in pthread_join, this fixes spurious wake-ups but
prevents a thread from being joined multiple times. This is fine for
two reasons:

1) The pthread_join specification allows for undefined behavior when multiple
   threads try to join a single thread.

2) There is no thread safe way to allow multiple threads to join a single
   thread with the pthread interface.  The second thread calling pthread_join
   could be pre-empted until the thread is destroyed and its handle reused for
   a different thread.  Therefore multi-join is always an error.

Bug: https://code.google.com/p/android/issues/detail?id=52255
Change-Id: I8b6784d47620ffdcdbfb14524e7402e21d46c5f7
2013-06-12 17:30:58 -07:00
Elliott Hughes
92e841d0aa Merge "Take upstream libm changes." 2013-06-13 00:29:21 +00:00
Elliott Hughes
78419467a2 Take upstream libm changes.
Mostly workarounds for GCC and Clang bugs.

Change-Id: I4ef428a42d4ac6d622659053711a8cc416925727
2013-06-12 16:37:58 -07:00
Elliott Hughes
b0cd876974 am 5065eef8: am 6a44d227: Merge "Take some fixed upstream copyright headers and regenerate NOTICE."
* commit '5065eef801aa78a8a64a016fcf644a6ca91a8133':
  Take some fixed upstream copyright headers and regenerate NOTICE.
2013-06-12 16:23:33 -07:00
Elliott Hughes
5065eef801 am 6a44d227: Merge "Take some fixed upstream copyright headers and regenerate NOTICE."
* commit '6a44d2271f372d0c65b05a5d3377bd00ce92824e':
  Take some fixed upstream copyright headers and regenerate NOTICE.
2013-06-12 16:16:09 -07:00
Elliott Hughes
6a44d2271f Merge "Take some fixed upstream copyright headers and regenerate NOTICE." 2013-06-12 23:13:34 +00:00
Elliott Hughes
3267163200 am 5f4d2df2: am 55189a0f: Merge "Switch to current upstream stdio makebuf.c and setvbuf.c."
* commit '5f4d2df2fcddfe62f9e08d1607a8c4e029f01b3d':
  Switch to current upstream stdio makebuf.c and setvbuf.c.
2013-06-12 16:03:49 -07:00
Elliott Hughes
2815b1dd45 Take some fixed upstream copyright headers and regenerate NOTICE.
Change-Id: Ifff41d69c13322dbc6f928ce7d4c65f76fe36772
2013-06-12 16:00:41 -07:00
Elliott Hughes
5f4d2df2fc am 55189a0f: Merge "Switch to current upstream stdio makebuf.c and setvbuf.c."
* commit '55189a0fbd26cfd84939d9d3a42a1800a63bd2c5':
  Switch to current upstream stdio makebuf.c and setvbuf.c.
2013-06-12 15:58:41 -07:00
Elliott Hughes
55189a0fbd Merge "Switch to current upstream stdio makebuf.c and setvbuf.c." 2013-06-12 22:56:20 +00:00
Elliott Hughes
460b70d063 am dc5f5f85: am f1867d47: Merge "Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work.""
* commit 'dc5f5f857c7bf218d33212044539eb73b3fab5f1':
  Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work."
2013-06-12 15:26:46 -07:00
Elliott Hughes
677ee56477 Switch to current upstream stdio makebuf.c and setvbuf.c.
Change-Id: I4761b5e94459815520f01062eef39abf62af621f
2013-06-12 15:24:15 -07:00
Elliott Hughes
dc5f5f857c am f1867d47: Merge "Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work.""
* commit 'f1867d47cbce4225d712a2684da67031f7350909':
  Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work."
2013-06-12 15:22:04 -07:00
Elliott Hughes
f1867d47cb Merge "Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work."" 2013-06-12 22:19:03 +00:00
Elliott Hughes
9248d3a58c Revert "Add SIZE_MAX to <stdint.h> in a way that might actually work."
This reverts commit d8627af159 which caused build breakage:

In file included from bionic/libc/include/limits.h:86:0,
                 from bionic/libc/include/stdint.h:33,
                 from bionic/libc/arch-arm/bionic/crtbegin.c:31:
bionic/libc/include/sys/limits.h:30:26: fatal error: linux/limits.h: No such file or directory
compilation terminated.
make: *** [out/target/product/generic/obj/lib/crtbegin_dynamic1.o] Error 1

Change-Id: I128095ecb99df92626e1f57e34c61e08c98a4078
2013-06-12 22:18:47 +00:00
Elliott Hughes
7e06ab5655 am b0a2262c: am 55c5ec64: Merge "Add SIZE_MAX to <stdint.h> in a way that might actually work."
* commit 'b0a2262c3f91085e79c3fd491379e45821254427':
  Add SIZE_MAX to <stdint.h> in a way that might actually work.
2013-06-12 15:11:12 -07:00
Elliott Hughes
b0a2262c3f am 55c5ec64: Merge "Add SIZE_MAX to <stdint.h> in a way that might actually work."
* commit '55c5ec64bd26d92bd1882a9a4c91445de73ebfa2':
  Add SIZE_MAX to <stdint.h> in a way that might actually work.
2013-06-12 15:06:51 -07:00
Elliott Hughes
55c5ec64bd Merge "Add SIZE_MAX to <stdint.h> in a way that might actually work." 2013-06-12 22:05:10 +00:00
Elliott Hughes
7ac852fb05 am 3da47942: am 944ea1a3: Merge "Clean up abort."
* commit '3da47942d3fdeb6f39cf84b03c75cfeb69f91449':
  Clean up abort.
2013-06-12 15:02:34 -07:00
Elliott Hughes
3da47942d3 am 944ea1a3: Merge "Clean up abort."
* commit '944ea1a32018c44d6cb55c9454e670b0e152da6d':
  Clean up abort.
2013-06-12 14:58:32 -07:00
Elliott Hughes
d8627af159 Add SIZE_MAX to <stdint.h> in a way that might actually work.
Take two.

Change-Id: I7d08b6d14c82a171312a7f5898270b4441d5cfa2
2013-06-12 14:54:16 -07:00
Elliott Hughes
944ea1a320 Merge "Clean up abort." 2013-06-12 21:53:58 +00:00
Elliott Hughes
61e699a133 Clean up abort.
* A dlmalloc usage error shouldn't call abort(3) because we want to
  cause a SIGSEGV by writing the address dlmalloc didn't like to an
  address the kernel won't like, so that debuggerd will dump the
  memory around the address that upset dlmalloc.

* Switch to the simpler FreeBSD/NetBSD style of registering stdio
  cleanup. Hopefully this will let us simplify more of the stdio
  implementation.

* Clear the stdio cleanup handler before we abort because of a dlmalloc
  corruption error. This fixes the reported bug, where we'd hang inside
  dlmalloc because the stdio cleanup reentered dlmalloc.

Bug: 9301265
Change-Id: Ief31b389455d6876e5a68f0f5429567d37277dbc
2013-06-12 14:14:53 -07:00
Elliott Hughes
1e88a7abca am 834f83de: am 5cde15eb: Merge "<stdint.h> should expose SIZE_MAX."
* commit '834f83de3f3363090385963eef1cd9a053a51a71':
  <stdint.h> should expose SIZE_MAX.
2013-06-12 11:05:18 -07:00
Elliott Hughes
834f83de3f am 5cde15eb: Merge "<stdint.h> should expose SIZE_MAX."
* commit '5cde15eb17f4ddc0949c0cbd38a46e6c0bad7019':
  <stdint.h> should expose SIZE_MAX.
2013-06-12 10:58:23 -07:00
Elliott Hughes
5cde15eb17 Merge "<stdint.h> should expose SIZE_MAX." 2013-06-12 17:56:24 +00:00
Elliott Hughes
2c157aec9b <stdint.h> should expose SIZE_MAX.
Change-Id: Id27222c24955c83f29ad953933cbdc48b6f1e900
2013-06-12 10:28:26 -07:00
The Android Automerger
2df16acc42 merge in master-release history after reset to master 2013-06-12 07:49:39 -07:00
Nick Kralevich
6d88e4e96b am 26cc1d68: am b6e88020: Merge "fix unittests."
* commit '26cc1d6838c0c4fd18abbf6ea5a38d24aea93893':
  fix unittests.
2013-06-11 16:03:32 -07:00
Nick Kralevich
26cc1d6838 am b6e88020: Merge "fix unittests."
* commit 'b6e880200d1690c00cb843e59c6849a275dbfbb7':
  fix unittests.
2013-06-11 15:56:42 -07:00
Nick Kralevich
b6e880200d Merge "fix unittests." 2013-06-11 22:52:54 +00:00
Nick Kralevich
fd0325bd98 fix unittests.
7e6ce1a3c5 fixed abort() to raise
SIGABRT rather than causing SIGSEGV. However, the unittests were
not updated.

Fix unittests.

Change-Id: I73db194127b9b9e9440358aa94273863765a736b
2013-06-11 15:45:23 -07:00
The Android Automerger
4a0c222bb1 merge in master-release history after reset to master 2013-06-11 07:49:16 -07:00
Ben Cheng
d20a04c5cf am 77f90de7: am fc104f89: Merge "Fix abort(3) to raise SIGABRT rather than causing SIGSEGV."
* commit '77f90de728b9fa60b83b7f12a45c1113f3189cb2':
  Fix abort(3) to raise SIGABRT rather than causing SIGSEGV.
2013-06-10 17:28:46 -07:00
Ben Cheng
77f90de728 am fc104f89: Merge "Fix abort(3) to raise SIGABRT rather than causing SIGSEGV."
* commit 'fc104f899d47916f76c91127caf9aeaf7b69d4ef':
  Fix abort(3) to raise SIGABRT rather than causing SIGSEGV.
2013-06-10 17:25:31 -07:00
Ben Cheng
fc104f899d Merge "Fix abort(3) to raise SIGABRT rather than causing SIGSEGV." 2013-06-11 00:22:14 +00:00
Ben Cheng
7e6ce1a3c5 Fix abort(3) to raise SIGABRT rather than causing SIGSEGV.
tgkill() needs the .save stack unwinding directive to get the complete
stack trace.

BUG: https://code.google.com/p/android/issues/detail?id=16672

Change-Id: Ifb447dca2147a592c48baf32769dfc175d8aea72
2013-06-10 17:17:46 -07:00
Brian Carlstrom
b181747aa1 am d978d21d: am 8252b8e4: Merge "Honor p_vaddr if set"
* commit 'd978d21d195976fa3f257b8d17ec2fe18fb436a7':
  Honor p_vaddr if set
2013-06-10 15:44:13 -07:00
Brian Carlstrom
d978d21d19 am 8252b8e4: Merge "Honor p_vaddr if set"
* commit '8252b8e4b730b13623f31dc66396e000586d1c58':
  Honor p_vaddr if set
2013-06-10 15:41:19 -07:00
Brian Carlstrom
8252b8e4b7 Merge "Honor p_vaddr if set" 2013-06-10 22:39:07 +00:00
Geremy Condra
72254952e1 Merge "Add clearing of resolv uid and pid interface maps" 2013-06-10 18:45:01 +00:00
The Android Automerger
5074892e0a merge in master-release history after reset to master 2013-06-10 09:52:26 -07:00
Elliott Hughes
efc78bbb9f am 6bcf71c9: am 2fbc9dda: Merge "bionic/x86: Optimization for string routines"
* commit '6bcf71c9ac8395038ca243160d4367759be8dd80':
  bionic/x86: Optimization for string routines
2013-06-07 17:52:16 -07:00
Elliott Hughes
1b14c72420 am fc6f5a08: am 157c4299: Merge "Revert "libc x86: Remove strcat.S""
* commit 'fc6f5a086557f81fce2542b7015268bff697d10c':
  Revert "libc x86: Remove strcat.S"
2013-06-07 17:48:53 -07:00
Elliott Hughes
6bcf71c9ac am 2fbc9dda: Merge "bionic/x86: Optimization for string routines"
* commit '2fbc9dda345486005569be4ec586c6aae9d51650':
  bionic/x86: Optimization for string routines
2013-06-07 17:47:33 -07:00
Elliott Hughes
2fbc9dda34 Merge "bionic/x86: Optimization for string routines" 2013-06-08 00:45:07 +00:00
Elliott Hughes
fc6f5a0865 am 157c4299: Merge "Revert "libc x86: Remove strcat.S""
* commit '157c42997b7aa31b36cca63ad03dbb5a601ce347':
  Revert "libc x86: Remove strcat.S"
2013-06-07 17:44:20 -07:00
Elliott Hughes
157c42997b Merge "Revert "libc x86: Remove strcat.S"" 2013-06-08 00:42:44 +00:00
Elliott Hughes
06708df6fb Revert "libc x86: Remove strcat.S"
This reverts commit 4fe461b3a6

Change-Id: Ibeb76e24f054abd7c96ad6899366c2f9bfc2a5ad
2013-06-08 00:42:35 +00:00
Christopher Ferris
b3a7db2dc2 am 83245ba4: am 9647f797: Merge "Implement malloc_usable_size for debug impls."
* commit '83245ba45facf0caff3beb18a27e6604df9094ba':
  Implement malloc_usable_size for debug impls.
2013-06-07 17:36:50 -07:00
Christopher Ferris
83245ba45f am 9647f797: Merge "Implement malloc_usable_size for debug impls."
* commit '9647f797d59222cd91507d4554bf62166ba88e0a':
  Implement malloc_usable_size for debug impls.
2013-06-07 15:16:30 -07:00
Christopher Ferris
9647f797d5 Merge "Implement malloc_usable_size for debug impls." 2013-06-07 22:15:33 +00:00
Christopher Ferris
885f3b9cad Implement malloc_usable_size for debug impls.
- Implemented chk_memalign.
- Fixed a few bugs in leak_memalign.
- Implemented {leak,fill,check,qemu}_malloc_usable_size.
- Make malloc_usable_size update at run time.
- Add malloc_test.cpp as a small set of tests for the
  malloc debug routines.
- Fix the qemu routines since it's been broken since it moved to C++.
- Add support for the %u format to the out_vformat in libc_logging.cpp.
  This is used by the emulator code.

Tested using the bionic-unit-tests with setprop libc.debug.malloc
set to 1, 5, and 10.

I tested as much as possible on the emulator, but tracing doesn't appear
to be working properly.

Bug: 6143477

Merge change from internal master.

(cherry-picked from commit 3d594c2580)

Change-Id: I4ae00fffba82315a8c283f35893fd554460722fb
2013-06-07 14:55:32 -07:00
Chad Brubaker
87594a32b8 Add clearing of resolv uid and pid interface maps
Cleanup uid interface map variable names

Change-Id: I712dd83276bb23b149af4180515ef33a1bade5ea
2013-06-07 13:03:23 -07:00
Christopher Ferris
3d594c2580 Implement malloc_usable_size for debug impls.
- Implemented chk_memalign.
- Fixed a few bugs in leak_memalign.
- Implemented {leak,fill,check,qemu}_malloc_usable_size.
- Make malloc_usable_size update at run time.
- Add malloc_test.cpp as a small set of tests for the
  malloc debug routines.
- Fix the qemu routines since it's been broken since it moved to C++.
- Add support for the %u format to the out_vformat in libc_logging.cpp.
  This is used by the emulator code.

Tested using the bionic-unit-tests with setprop libc.debug.malloc
set to 1, 5, and 10.

I tested as much as possible on the emulator, but tracing doesn't appear
to be working properly.

Bug: 6143477

Change-Id: Ieba99b58c2228c88d80afd264501004a4dadd212
2013-06-07 12:56:09 -07:00
Brian Carlstrom
e7dffe150b Honor p_vaddr if set
(cherry picked from commit 88ff15c2c279d2bbe3569101b36cd2aa0931a0a9)

Change-Id: I4aabbe911d30aea8ace69e29bb6e980a4e89de90
2013-06-07 12:47:58 -07:00
Geremy Condra
a24d14c05d Merge "Add per UID interface support to resolv cache" 2013-06-06 20:48:44 +00:00
Chad Brubaker
0c9bb49a9d Add per UID interface support to resolv cache
Add methods to attach/detach UID ranges to a specific dns cache/interface.

This mirrors the already existing code for attaching specific processes to
specific interfaces but will be used to push all processes from a given
user to a specific cache/interface.

Change-Id: Ic24391e92d3ca46fcb46cc4fc53e13984dec40b3
2013-06-06 12:31:16 -07:00
Elliott Hughes
b166e699dc am e84cfbef: am b7b4f5b8: Merge "update signal.h to be C90 compatable"
* commit 'e84cfbefd82f552490c580d35a54db4f53b6e5fb':
  update signal.h to be C90 compatable
2013-06-05 18:14:30 -07:00
Elliott Hughes
e51cd6f9c9 am 5a6a0a94: am 18af4503: Merge "Ensure header files using __BEGIN_DECLS include sys/cdefs.h."
* commit '5a6a0a9445d80bf2bd847088921f6d1d99315552':
  Ensure header files using __BEGIN_DECLS include sys/cdefs.h.
2013-06-05 18:11:05 -07:00
Elliott Hughes
e84cfbefd8 am b7b4f5b8: Merge "update signal.h to be C90 compatable"
* commit 'b7b4f5b838cd41407c734af74e8211f5c7da0036':
  update signal.h to be C90 compatable
2013-06-05 18:09:17 -07:00
Elliott Hughes
b7b4f5b838 Merge "update signal.h to be C90 compatable" 2013-06-06 01:06:41 +00:00
Elliott Hughes
5a6a0a9445 am 18af4503: Merge "Ensure header files using __BEGIN_DECLS include sys/cdefs.h."
* commit '18af450393b005b4ead896d82cda750e6876fd33':
  Ensure header files using __BEGIN_DECLS include sys/cdefs.h.
2013-06-05 18:06:04 -07:00
Erik Gilling
156ccf42ff update signal.h to be C90 compatable
sigismember, sigaddset, and sigdelset had mixed code and declarations
which are not allowed in C90 and before.

Change-Id: I662af944fc1489e34bed228ce592e41f50d00e17
Signed-off-by: Erik Gilling <konkers@android.com>
2013-06-05 18:05:36 -07:00
Elliott Hughes
18af450393 Merge "Ensure header files using __BEGIN_DECLS include sys/cdefs.h." 2013-06-06 01:04:13 +00:00
Elliott Hughes
36fa67bcdd Ensure header files using __BEGIN_DECLS include sys/cdefs.h.
We keep fixing these one-by-one; let's fix them all at once.

Found thus:

  find . -name *.h | xargs grep -L sys/cdefs.h | xargs grep -l BEGIN_DECL | xargs grep -L sys/types

Change-Id: I188842aa2484dc6176e96556d57c38a0f785b59b
2013-06-05 17:58:08 -07:00
Elliott Hughes
0ecb96c3a2 am b9e2dae4: am c5bfb624: Merge "sys/personality.h: include <sys/cdefs.h>"
* commit 'b9e2dae427ef1e1cfdbb3faa1442d4a66a2d3bcd':
  sys/personality.h: include <sys/cdefs.h>
2013-06-05 17:32:20 -07:00
Elliott Hughes
b9e2dae427 am c5bfb624: Merge "sys/personality.h: include <sys/cdefs.h>"
* commit 'c5bfb62433751579e86d5fd24cddf3ae28a49b43':
  sys/personality.h: include <sys/cdefs.h>
2013-06-05 17:29:01 -07:00
Elliott Hughes
c5bfb62433 Merge "sys/personality.h: include <sys/cdefs.h>" 2013-06-06 00:28:07 +00:00
Elliott Hughes
bedd8e3de1 am ce208f33: am 8d36050a: Merge "Clean up useless declaration in thread_private.h"
* commit 'ce208f3389769026df02f7aebd85c8f5d3e74c73':
  Clean up useless declaration in thread_private.h
2013-06-05 17:06:50 -07:00
Elliott Hughes
ce208f3389 am 8d36050a: Merge "Clean up useless declaration in thread_private.h"
* commit '8d36050ac2bb1c4a6a04462e64c5440e3c23c9f0':
  Clean up useless declaration in thread_private.h
2013-06-05 17:02:29 -07:00
Elliott Hughes
8d36050ac2 Merge "Clean up useless declaration in thread_private.h" 2013-06-06 00:00:40 +00:00
The Android Automerger
a7b5635e60 merge in master-release history after reset to master 2013-06-05 07:49:30 -07:00
Kito Cheng
328223230b sys/personality.h: include <sys/cdefs.h>
Change-Id: Ia3fa558a38e0cffe5287bc454e85d5d3bdaa6ba1
2013-06-05 11:30:17 +08:00
Kito Cheng
94d0daa2dd Clean up useless declaration in thread_private.h
Change-Id: Ie7bcdc7195a3fcbcd09a95f73b0c49e8897ad50b
2013-06-05 11:26:24 +08:00
Elliott Hughes
8ed5aec934 am 4b47d9f9: am 4c001859: Merge "Fix declaration of malloc_usable_size()"
* commit '4b47d9f978296e5bb2eaabb8069960eb6f207c80':
  Fix declaration of malloc_usable_size()
2013-06-04 19:02:21 -07:00
Elliott Hughes
4b47d9f978 am 4c001859: Merge "Fix declaration of malloc_usable_size()"
* commit '4c001859feeda27727917c5bd00338e90b801742':
  Fix declaration of malloc_usable_size()
2013-06-04 19:00:03 -07:00
Elliott Hughes
4c001859fe Merge "Fix declaration of malloc_usable_size()" 2013-06-05 01:58:26 +00:00
Nick Kralevich
f1b25d0788 am ae533cb1: am a24e81ef: Merge "Add tests for __strcpy_chk()"
* commit 'ae533cb1118be39a3a0587da46fa95bb4d8ee494':
  Add tests for __strcpy_chk()
2013-06-04 12:14:19 -07:00
Nick Kralevich
ae533cb111 am a24e81ef: Merge "Add tests for __strcpy_chk()"
* commit 'a24e81efd30d106cdfa6a019acf7c77cd88b40cc':
  Add tests for __strcpy_chk()
2013-06-04 12:07:16 -07:00
Nick Kralevich
a24e81efd3 Merge "Add tests for __strcpy_chk()" 2013-06-04 19:05:33 +00:00
Nick Kralevich
13476deec4 Add tests for __strcpy_chk()
Change-Id: I5675d04fcd471732c1b87b83879a54fbcd27762e
2013-06-04 11:55:08 -07:00
The Android Automerger
680e3f94a0 merge in master-release history after reset to master 2013-06-04 07:49:30 -07:00
Brian Carlstrom
20b0fec8ab am 81bfade8: am 06713930: Merge "Small cleanup of soinfo_elf_lookup."
* commit '81bfade818f1b76cf822f0e7e0862fe61e7c580a':
  Small cleanup of soinfo_elf_lookup.
2013-06-03 20:43:30 -07:00
Brian Carlstrom
81bfade818 am 06713930: Merge "Small cleanup of soinfo_elf_lookup."
* commit '0671393072a78e75a726c58aa3ca718e55eeac3e':
  Small cleanup of soinfo_elf_lookup.
2013-06-03 20:21:04 -07:00
Brian Carlstrom
0671393072 Merge "Small cleanup of soinfo_elf_lookup." 2013-06-04 03:18:23 +00:00
Christopher Ferris
6bec5b792a Small cleanup of soinfo_elf_lookup.
- Remove unnecessary line.
- Move declarations to first use.

Change-Id: I1d8398d6c13f7cb86bffe0b68af849e35a4b234d
2013-06-03 20:15:14 -07:00
Rom Lemarchand
8ea08d3ff9 Merge "mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps" 2013-06-03 19:40:21 +00:00
The Android Automerger
b472f50057 merge in master-release history after reset to master 2013-06-03 07:49:38 -07:00
Ben Cheng
7ca9057f53 am 72ce296f: am 404d491e: Merge "Use bl instead of blx to support interworking properly."
* commit '72ce296f282803cb026aff5ab180e8a43656612e':
  Use bl instead of blx to support interworking properly.
2013-06-01 09:51:29 -07:00
Ben Cheng
72ce296f28 am 404d491e: Merge "Use bl instead of blx to support interworking properly."
* commit '404d491eb655839bf4260cc168bb79864473e129':
  Use bl instead of blx to support interworking properly.
2013-06-01 08:19:07 -07:00
Ben Cheng
404d491eb6 Merge "Use bl instead of blx to support interworking properly." 2013-05-31 21:40:37 +00:00
Ben Cheng
a123b5d319 Use bl instead of blx to support interworking properly.
(cherry picked from commit 9e1905794b in
master)

Change-Id: I9b8c35ea9e201e00f84315f9f105013c23c94d85
2013-05-31 14:39:23 -07:00
Ben Cheng
dc1782b156 Merge "Use bl instead of blx to support interworking properly." 2013-05-31 21:36:55 +00:00
Ben Cheng
9e1905794b Use bl instead of blx to support interworking properly.
BUG: 9227177
Change-Id: I742c2f2ecbe332f9c9743e3f4bde8de791a1d289
2013-05-31 14:25:48 -07:00
Nick Kralevich
75c9e17682 am 027a8fae: am 8539961f: Merge "FORTIFY_SOURCE: strcat / strncat optimize"
* commit '027a8fae7750855af2ec0f8dd655e4a48ebf9352':
  FORTIFY_SOURCE: strcat / strncat optimize
2013-05-31 11:21:18 -07:00
Nick Kralevich
027a8fae77 am 8539961f: Merge "FORTIFY_SOURCE: strcat / strncat optimize"
* commit '8539961ff299b05d8feac9be8b119698be22da03':
  FORTIFY_SOURCE: strcat / strncat optimize
2013-05-31 11:14:56 -07:00
Nick Kralevich
8539961ff2 Merge "FORTIFY_SOURCE: strcat / strncat optimize" 2013-05-31 18:13:23 +00:00
Rom Lemarchand
c702a90467 mmap: Reinstate passing MADV_MERGEABLE on private anonymous maps
Reinstate mmap calling madvise(MADV_MERGEABLE) removed in
635df850e5

Change-Id: I290bc5ac6bb32735a3f61dd21e2fce1dfb6dfd4b
Signed-off-by: Rom Lemarchand <romlem@google.com>
2013-05-31 10:05:50 -07:00
Nick Kralevich
cf870199d5 FORTIFY_SOURCE: strcat / strncat optimize
__strcat_chk and __strncat_chk are slightly inefficient,
because they end up traversing over the same memory region
two times.

This change optimizes __strcat_chk / __strncat_chk so they
only access the memory once. Although I haven't benchmarked these
changes, it should improve the performance of these functions.

__strlen_chk - expose this function, even if -D_FORTIFY_SOURCE
isn't defined. This is needed to compile libc itself without
-D_FORTIFY_SOURCE.

Change-Id: Id2c70dff55a276b47c59db27a03734d659f84b74
2013-05-31 09:07:46 -07:00
Liubov Dmitrieva
0a490665a3 bionic/x86: Optimization for string routines
Optimized strcpy, strcat,
strncpy, strncat, strlcpy, strlcat,
memchr, memrchr, strchr, strrchr, index,
strnlen, strlen, wcslen, wmemcmp, wcscmp,
wcschr, wcsrchr, wcscpy, wcscat

Change-Id: I82b29132edf9a2e144e0bb3ee4ff5217df8d2a6d
Signed-off-by: Liubov Dmitrieva <liubov.dmitrieva@intel.com>
2013-05-31 13:37:03 +04:00
Nick Kralevich
b5aa654be6 am d9349abf: am 72f59c84: Merge "Add strncpy FORTIFY_SOURCE tests."
* commit 'd9349abf29506529790abf83cd239b77fa771038':
  Add strncpy FORTIFY_SOURCE tests.
2013-05-30 17:02:01 -07:00
Nick Kralevich
9b7ae336ee am 5630e54c: am d515f468: Merge "libc x86: Remove strcat.S"
* commit '5630e54c3b1a90ee741bbcff129d0c711160ba02':
  libc x86: Remove strcat.S
2013-05-30 17:02:01 -07:00
Nick Kralevich
d9349abf29 am 72f59c84: Merge "Add strncpy FORTIFY_SOURCE tests."
* commit '72f59c84fd73a0a701ce6448d103e9021c1cb060':
  Add strncpy FORTIFY_SOURCE tests.
2013-05-30 16:54:24 -07:00
Nick Kralevich
5630e54c3b am d515f468: Merge "libc x86: Remove strcat.S"
* commit 'd515f46888cf381c1fbbc99a62be727174b30a23':
  libc x86: Remove strcat.S
2013-05-30 16:54:18 -07:00
Nick Kralevich
72f59c84fd Merge "Add strncpy FORTIFY_SOURCE tests." 2013-05-30 20:33:02 +00:00
Nick Kralevich
8cc145edf4 Add strncpy FORTIFY_SOURCE tests.
Change-Id: Id108b1d72b44d7e5fb911268e80bbdf896808f60
2013-05-30 13:21:14 -07:00
Nick Kralevich
d515f46888 Merge "libc x86: Remove strcat.S" 2013-05-30 19:59:38 +00:00
Nick Kralevich
4fe461b3a6 libc x86: Remove strcat.S
This file is never used.

Change-Id: Iae4bba4a5a12a86a775af05e7477fb7b6511480b
2013-05-30 11:15:40 -07:00
The Android Automerger
fe09748a5f merge in master-release history after reset to master 2013-05-27 07:50:00 -07:00
Nick Kralevich
3010061a53 am cf342653: am 8d79fd1c: Merge "libc x86: Remove index.S, strcpy.S, strchr.S"
* commit 'cf342653388682c96b3c4eec6a5ed4dbcb6112ef':
  libc x86: Remove index.S, strcpy.S, strchr.S
2013-05-24 13:02:11 -07:00
Nick Kralevich
af5d6029e5 am 080d2aa8: am 2317275f: Merge "libc: delete x86 memchr.S"
* commit '080d2aa8dc0ae318a12f7a424f9bca32b1216791':
  libc: delete x86 memchr.S
2013-05-24 13:02:06 -07:00
Nick Kralevich
cf34265338 am 8d79fd1c: Merge "libc x86: Remove index.S, strcpy.S, strchr.S"
* commit '8d79fd1c94cb021b6852e6f44e27183ec83fe04c':
  libc x86: Remove index.S, strcpy.S, strchr.S
2013-05-24 11:37:30 -07:00
Nick Kralevich
8d79fd1c94 Merge "libc x86: Remove index.S, strcpy.S, strchr.S" 2013-05-24 18:34:57 +00:00
Nick Kralevich
e4c4ada580 libc x86: Remove index.S, strcpy.S, strchr.S
These files are never used.

Change-Id: Iab8474bdff3bd4d225597c62b3c0f0849f808818
2013-05-24 10:50:05 -07:00
Nick Kralevich
080d2aa8dc am 2317275f: Merge "libc: delete x86 memchr.S"
* commit '2317275f859a685386889139855f2f3314337d53':
  libc: delete x86 memchr.S
2013-05-24 10:43:58 -07:00
Nick Kralevich
2317275f85 Merge "libc: delete x86 memchr.S" 2013-05-24 17:27:47 +00:00
Nick Kralevich
615684c256 libc: delete x86 memchr.S
This file is never used.

Change-Id: Ief08ad176713b5194048852609613801969e1364
2013-05-24 08:52:04 -07:00
David 'Digit' Turner
25a87f7641 Fix declaration of malloc_usable_size()
The function should take a 'const void*' parameter, instead of 'void*'.
Note that the implementation in upstream-dlmalloc/malloc.c already does
this.

For context, see http://b.android.com/55725

Change-Id: Iefd55cdb8996699189e0545f9195972490306227
2013-05-23 10:02:02 +02:00
The Android Automerger
88cc328c17 merge in master-release history after reset to master 2013-05-22 07:49:33 -07:00
Brian Carlstrom
47b2e046cd am 46bf467a: am f5f29de6: Merge "Fix bionic linker to support segments with zero p_filesz"
* commit '46bf467a151eafaf37f6e3578d8d9bad705b8e44':
  Fix bionic linker to support segments with zero p_filesz
2013-05-21 17:28:40 -07:00
Brian Carlstrom
46bf467a15 am f5f29de6: Merge "Fix bionic linker to support segments with zero p_filesz"
* commit 'f5f29de6ae5a0b74234f111b5691a1e5588671cb':
  Fix bionic linker to support segments with zero p_filesz
2013-05-21 17:23:09 -07:00
Brian Carlstrom
f5f29de6ae Merge "Fix bionic linker to support segments with zero p_filesz" 2013-05-21 23:59:52 +00:00
Brian Carlstrom
82dcc7910d Fix bionic linker to support segments with zero p_filesz
(cherry picked from commit 96362fb9d11beef6233aa03db396f25688e70860)

Change-Id: Ib075a6dfc45d5d0746d8b278f317dd9b8d772f2a
2013-05-21 16:57:55 -07:00
The Android Automerger
33cf35317b merge in master-release history after reset to master 2013-05-20 07:49:40 -07:00
Erik Gilling
d5234a3b08 am 4c8eba6f: am 2e317075: Merge "libc/arm: add cortex-a8 cpu variant"
* commit '4c8eba6f2aaf351e29881ca4dc2ec47fc0246446':
  libc/arm: add cortex-a8 cpu variant
2013-05-16 13:20:53 -07:00
Erik Gilling
4c8eba6f2a am 2e317075: Merge "libc/arm: add cortex-a8 cpu variant"
* commit '2e317075b044e94fc75e36d08bec8a7eb5fc31ae':
  libc/arm: add cortex-a8 cpu variant
2013-05-16 13:19:07 -07:00
Erik Gilling
2e317075b0 Merge "libc/arm: add cortex-a8 cpu variant" 2013-05-16 19:57:28 +00:00
The Android Open Source Project
0ae3304f83 am 5b75f3bf: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit '5b75f3bfa1a8f380ce213a0088afec7a7901a25b':
2013-05-16 05:44:28 -07:00
The Android Open Source Project
5b75f3bfa1 Reconcile with jb-mr2-release - do not merge
Change-Id: I0839dac295b83f3c5d53d0bb81925b44e3ec17cc
2013-05-16 05:42:53 -07:00
Rom Lemarchand
22bda4bd67 libc/arm: add cortex-a8 cpu variant
Change-Id: I30e8dd6d4b2e7889aea8f5ed21182a5941bfb489
2013-05-15 20:13:28 -07:00
The Android Automerger
231ea5a414 merge in master-release history after reset to master 2013-05-15 07:49:27 -07:00
Elliott Hughes
217c816480 am 0a7fe991: am 5217fb52: Merge "Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX."
* commit '0a7fe991530308fbae9ca033c0045bfc27a7f4c1':
  Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX.
2013-05-14 18:11:57 -07:00
Elliott Hughes
0a7fe99153 am 5217fb52: Merge "Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX."
* commit '5217fb528ca40ece0dbb459dedf7d6fae81dde68':
  Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX.
2013-05-14 18:10:45 -07:00
Elliott Hughes
5217fb528c Merge "Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX." 2013-05-15 00:56:06 +00:00
Elliott Hughes
d35106fd55 Fix sysconf(3) for _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX.
Change-Id: Ie16cb21c1a5a2bdce8502b5974e2c4dbb1d679ce
2013-05-14 17:20:34 -07:00
Elliott Hughes
543f3f0ec4 am 975d4464: am 6f502bc7: Merge "Add more __restricts, clean up __format__ attributes."
* commit '975d4464cef774768cf99a68f3537cfc0678e3f7':
  Add more __restricts, clean up __format__ attributes.
2013-05-14 16:59:34 -07:00
Elliott Hughes
975d4464ce am 6f502bc7: Merge "Add more __restricts, clean up __format__ attributes."
* commit '6f502bc74374804766639e6b1515644875810bda':
  Add more __restricts, clean up __format__ attributes.
2013-05-14 16:56:49 -07:00
Elliott Hughes
6f502bc743 Merge "Add more __restricts, clean up __format__ attributes." 2013-05-14 23:45:49 +00:00
Elliott Hughes
940e30cf34 am 20516923: am 349ef893: Merge "Pull upstream FreeBSD revision 249810."
* commit '20516923f59b859f8ca1bfdb3927bc23819ecdb3':
  Pull upstream FreeBSD revision 249810.
2013-05-14 16:26:42 -07:00
Elliott Hughes
20516923f5 am 349ef893: Merge "Pull upstream FreeBSD revision 249810."
* commit '349ef893e82f37632a705f39efc47c0d440f63c7':
  Pull upstream FreeBSD revision 249810.
2013-05-14 16:25:49 -07:00
Elliott Hughes
d04c183979 Add more __restricts, clean up __format__ attributes.
Change-Id: I7e2d270cc722d339d221eaea92747eaff3b51403
2013-05-14 16:08:43 -07:00
Elliott Hughes
349ef893e8 Merge "Pull upstream FreeBSD revision 249810." 2013-05-14 23:06:34 +00:00
Elliott Hughes
b2e1abda05 Pull upstream FreeBSD revision 249810.
Fix license clause numbering.

Convert libc/stdio from K&R to ANSI C.

And add '__restrict' where it appeared in the header prototypes.

Change-Id: I5fdb22f79d3effa2298d03f9aa8412b4b087da04
Upstream: http://svnweb.freebsd.org/base?view=revision&revision=249810
2013-05-14 15:02:16 -07:00
Elliott Hughes
0128b2c752 am 01678789: am 5b7b2809: Merge "epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events"
* commit '01678789bca18d1a4894ae7f987f847b5ae0ce62':
  epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events
2013-05-14 15:01:33 -07:00
Elliott Hughes
7c7f098995 am 562804ff: am f0f4fa3f: Merge "libc: add timerfd calls"
* commit '562804ff878ede5d0ce0cb0c79ffb9b26777bf76':
  libc: add timerfd calls
2013-05-14 15:01:32 -07:00
Elliott Hughes
d3d014da91 am 31366236: am e1c58ab5: Merge "libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR"
* commit '3136623600a9488859ed7c1681b084ea8315ed50':
  libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR
2013-05-14 15:01:32 -07:00
Elliott Hughes
47e46ed157 am 91cc8014: am 7cb82791: Merge "libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM"
* commit '91cc8014e8cbc5ebfa90708f77f4f319e553a904':
  libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM
2013-05-14 15:01:31 -07:00
Elliott Hughes
01678789bc am 5b7b2809: Merge "epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events"
* commit '5b7b2809a2110dad1b2434f1070e13a08085d94b':
  epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events
2013-05-14 14:59:16 -07:00
Elliott Hughes
562804ff87 am f0f4fa3f: Merge "libc: add timerfd calls"
* commit 'f0f4fa3fb1ea8623b1e1bc59f7967e0470c8e532':
  libc: add timerfd calls
2013-05-14 14:59:16 -07:00
Elliott Hughes
3136623600 am e1c58ab5: Merge "libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR"
* commit 'e1c58ab5bb6284b3e3a2d0e54c295a93780b3f70':
  libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR
2013-05-14 14:59:15 -07:00
Elliott Hughes
91cc8014e8 am 7cb82791: Merge "libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM"
* commit '7cb82791cada0283648fedc316171cbffda79af7':
  libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM
2013-05-14 14:59:15 -07:00
Elliott Hughes
5b7b2809a2 Merge "epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events" 2013-05-14 21:49:09 +00:00
Todd Poynor
b0a2fc35d6 epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events
(cherry-pick of d1ad4f6dab06189d4d3dcfa19ae4bc301481eb3f.)

Change-Id: I4a8476bff068951533d4188de94097c8b84bc489
2013-05-14 14:48:43 -07:00
Elliott Hughes
f0f4fa3fb1 Merge "libc: add timerfd calls" 2013-05-14 21:45:29 +00:00
Todd Poynor
4200e6203a libc: add timerfd calls
(cherry-pick of 04c0ac14a49e0969333008a9522b64046d58fbdc.)

Change-Id: I06d0b6c2a8781602362b81f48faf1cca76b9ec05
2013-05-14 14:45:02 -07:00
Elliott Hughes
e1c58ab5bb Merge "libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR" 2013-05-14 21:44:28 +00:00
Todd Poynor
5c4340b2ab libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR
Add CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, and CLOCK_MONOTONIC_COARSE
as supported by recent linux kernels.

(cherry-pick of 60e5144ca312b210b54ac8e6966108da0c97ff80.)

Bug: 8895727
Change-Id: If79a4d05d1301108f49a37588f9416c4be19277a
2013-05-14 14:43:59 -07:00
Elliott Hughes
7cb82791ca Merge "libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM" 2013-05-14 21:43:37 +00:00
Todd Poynor
23b9fd2c1d libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM
(cherry-pick of b928bda83d4413b703329f607e2706602f15293f.)

Change-Id: Ica6aad84299819ffc5e57ae4891e057d2e401fa1
2013-05-14 14:43:09 -07:00
Elliott Hughes
ff5fb5cc4b am 509fc806: am d8a9cccb: Merge "Fix all printf warnings in res_send.c."
* commit '509fc8069757aa6091e044f659f76da0bf59723c':
  Fix all printf warnings in res_send.c.
2013-05-14 11:13:39 -07:00
Elliott Hughes
509fc80697 am d8a9cccb: Merge "Fix all printf warnings in res_send.c."
* commit 'd8a9cccb4d77eecc36425c9240a12bd305031ee3':
  Fix all printf warnings in res_send.c.
2013-05-14 11:10:23 -07:00
Elliott Hughes
d8a9cccb4d Merge "Fix all printf warnings in res_send.c." 2013-05-14 17:10:21 +00:00
Kito Cheng
bb0b09cad6 Fix all printf warnings in res_send.c.
Change-Id: I4bf959140b5a5475897bd80704e64e3c4645fc3f
2013-05-14 10:09:23 -07:00
The Android Automerger
46fa11a0ae merge in master-release history after reset to master 2013-05-14 07:49:17 -07:00
Todd Poynor
d1ad4f6dab epoll: add EPOLLRDHUP, EPOLLWAKEUP, and EPOLLONESHOT events
Change-Id: I4a579fc4a74adaee57911b3974ec2f93d9321e8b
2013-05-13 12:06:36 -07:00
Todd Poynor
04c0ac14a4 libc: add timerfd calls
Change-Id: Id63b907266d5b87c7422a51d393a1430551ca33d
2013-05-13 12:06:15 -07:00
Todd Poynor
60e5144ca3 libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR
Add CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, and CLOCK_MONOTONIC_COARSE
as supported by recent linux kernels.

Bug: 8895727
Change-Id: I3d415a2edbcf2928dd855e876337bf2239ac134a
2013-05-13 11:00:07 -07:00
Todd Poynor
b928bda83d libc: add clock ids CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM
Change-Id: I3bf934ab207e39b435e6b41a5fbe7eb318496dc0
2013-05-13 11:00:06 -07:00
The Android Automerger
5ff2b9aafd merge in master-release history after reset to master 2013-05-13 07:49:31 -07:00
The Android Automerger
d146e8e4e9 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-05-13 05:55:12 -07:00
Elliott Hughes
a28cb8bd35 am 30d7485d: am 738370d9: Don\'t fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
* commit '30d7485dd30a06e2fb7b8134b6e1a3ecb0ac7ba7':
  Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
2013-05-10 03:06:52 -07:00
Elliott Hughes
30d7485dd3 am 738370d9: Don\'t fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
* commit '738370d9387396922c10910edb61272e585be107':
  Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
2013-05-09 23:40:47 -07:00
Elliott Hughes
a74e6c21e7 am 58f3dbda: am 98f7659d: Merge "Don\'t fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors."
* commit '58f3dbdacd496838661affce358518e0b3a4f7f6':
  Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
2013-05-09 17:56:31 -07:00
Elliott Hughes
58f3dbdacd am 98f7659d: Merge "Don\'t fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors."
* commit '98f7659d7e3a7d75c68a41299f6ee55d7d35c27b':
  Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
2013-05-09 17:53:38 -07:00
Elliott Hughes
738370d938 Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
The GNU dynamic linker silently ignores a DT_PREINIT_ARRAY section
in a shared library. We had ineffectual code that tried to report
an error, which I tried to fix but got wrong --- my version still
wouldn't report the error to the caller, but would prevent us from
continuing to call constructors.

Bug: 8825226

(cherry picked from commit 8147d3c284)

Change-Id: Iad8e7e3743d1a5e6bd1d44ef40b1ab3499cb64f2
2013-05-09 15:53:30 -07:00
Elliott Hughes
98f7659d7e Merge "Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors." 2013-05-09 22:30:21 +00:00
Elliott Hughes
8147d3c284 Don't fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.
The GNU dynamic linker silently ignores a DT_PREINIT_ARRAY section
in a shared library. We had ineffectual code that tried to report
an error, which I tried to fix but got wrong --- my version still
wouldn't report the error to the caller, but would prevent us from
continuing to call constructors.

Bug: 8825226
Change-Id: I4fd8450ecc44d8767a1cb808aeecfbfbfc77c070
2013-05-09 15:29:54 -07:00
Ben Cheng
3c2ab6ffbb am ca54ae44: am 262b7384: Adjust PC value in ARM stack trace.
* commit 'ca54ae44a4c8764028b3092f9f1cfdd619a94fa6':
  Adjust PC value in ARM stack trace.
2013-05-09 09:41:18 -07:00
Ben Cheng
ca54ae44a4 am 262b7384: Adjust PC value in ARM stack trace.
* commit '262b7384e4e691d42070a57472ecc64cf668c480':
  Adjust PC value in ARM stack trace.
2013-05-09 09:37:50 -07:00
The Android Automerger
0d4e9fe58a merge in master-release history after reset to master 2013-05-09 07:49:16 -07:00
Ben Cheng
a078f9dcf0 am 49f6e970: am ff220f70: Merge "Remove a spurious FIXME and unnecessary type cast."
* commit '49f6e9706202b5caef3a68690153a96baa14cab1':
  Remove a spurious FIXME and unnecessary type cast.
2013-05-08 15:04:56 -07:00
Ben Cheng
77a2932836 am 3353e653: am b9256ada: Merge "Adjust PC value in ARM stack trace."
* commit '3353e6535a6964c92c280c36c99e1493befa9dc0':
  Adjust PC value in ARM stack trace.
2013-05-08 15:04:56 -07:00
Nick Kralevich
f8867a5632 am 37cd8800: am d541ba17: Merge "Use restrict pointers for various libc functions."
* commit '37cd8800d532e5901cc3b332bc39d8580f2ba9ab':
  Use restrict pointers for various libc functions.
2013-05-08 15:04:55 -07:00
Ben Cheng
49f6e97062 am ff220f70: Merge "Remove a spurious FIXME and unnecessary type cast."
* commit 'ff220f70036178aa0d7dcf1cbc4825085a84441e':
  Remove a spurious FIXME and unnecessary type cast.
2013-05-08 13:26:12 -07:00
Ben Cheng
3353e6535a am b9256ada: Merge "Adjust PC value in ARM stack trace."
* commit 'b9256adab3aa7e7628d7bbd015132a511de7a43d':
  Adjust PC value in ARM stack trace.
2013-05-08 13:26:11 -07:00
Nick Kralevich
37cd8800d5 am d541ba17: Merge "Use restrict pointers for various libc functions."
* commit 'd541ba17197fd3ef1f60462e51261c4340369218':
  Use restrict pointers for various libc functions.
2013-05-08 13:26:11 -07:00
Ben Cheng
262b7384e4 Adjust PC value in ARM stack trace.
-2 for Thumb BLX(2) or -4 for the rest.

Change-Id: Ie59351a0012c2267309f63f0462fdba4698846fe
2013-05-08 11:21:53 -07:00
Ben Cheng
ff220f7003 Merge "Remove a spurious FIXME and unnecessary type cast." 2013-05-07 23:56:11 +00:00
Ben Cheng
63dd03cced Remove a spurious FIXME and unnecessary type cast.
Change-Id: I05dcefdec7f047bef7eef5c5ceb7453992d56c24
2013-05-07 16:53:33 -07:00
Ben Cheng
b9256adab3 Merge "Adjust PC value in ARM stack trace." 2013-05-07 22:45:42 +00:00
Ben Cheng
52171b9bdc Adjust PC value in ARM stack trace.
-2 for Thumb BLX(2) or -4 for the rest.

Change-Id: I804fdabfa1db4709bede222d4b432e8d42d53167
2013-05-07 15:44:13 -07:00
Nick Kralevich
d541ba1719 Merge "Use restrict pointers for various libc functions." 2013-05-07 17:37:48 +00:00
Nick Kralevich
1c462b7a04 Use restrict pointers for various libc functions.
All the cool kids say this is the best thing since sliced bread.
http://cellperformance.beyond3d.com/articles/2006/05/demystifying-the-restrict-keyword.html

For the most part, these changes match what glibc does.

Change-Id: I176268f27f82800162fe5f2515b08d5469ea2dfe
2013-05-07 10:00:21 -07:00
The Android Automerger
237ac7be01 merge in master-release history after reset to master 2013-05-06 07:49:08 -07:00
Christopher Ferris
a14f7933f4 Merge "Tune the memcpy for krait." 2013-05-03 23:12:18 +00:00
The Android Automerger
e68c711e78 merge in master-release history after reset to master 2013-05-03 07:49:10 -07:00
Nick Kralevich
f0c9683e17 am c9757ac8: am b01f7afd: Merge "Use __predict_false on some fortify methods."
* commit 'c9757ac81eb48f9cfee0ba7833fed8a3363ecee2':
  Use __predict_false on some fortify methods.
2013-05-02 15:00:41 -07:00
Nick Kralevich
c9757ac81e am b01f7afd: Merge "Use __predict_false on some fortify methods."
* commit 'b01f7afd5fd5df5f8fe925b4fe493269191b62a2':
  Use __predict_false on some fortify methods.
2013-05-02 14:56:37 -07:00
Nick Kralevich
b01f7afd5f Merge "Use __predict_false on some fortify methods." 2013-05-02 21:52:19 +00:00
Nick Kralevich
532d6f09b1 Use __predict_false on some fortify methods.
Give the compiler some hints that these error conditions
are unlikely to occur in practice.

Change-Id: Ifaf7322a12120ef663c8315c1a18c2dcbe4bda23
2013-05-02 14:31:51 -07:00
Nick Kralevich
137a9ad176 am 4f614a70: am e4ac8feb: Merge "libc: cleanup strchr"
* commit '4f614a7036b37480695884a4be3f3fe70188cd60':
  libc: cleanup strchr
2013-05-02 14:28:18 -07:00
Nick Kralevich
4f614a7036 am e4ac8feb: Merge "libc: cleanup strchr"
* commit 'e4ac8feb58ed1f963db9a1f32fa74a06a1f594f2':
  libc: cleanup strchr
2013-05-02 14:25:42 -07:00
Nick Kralevich
e4ac8feb58 Merge "libc: cleanup strchr" 2013-05-02 21:17:16 +00:00
Christopher Ferris
4d8fe5177e Tune the memcpy for krait.
Streamline the memcpy a bit removing some unnecessary instructions.

The biggest speed improvement comes from changing the size of
the preload. On krait, the sweet spot for the preload in the main
loop is twice the L1 cache line size.

In most cases, these small tweaks yield > 1000MB/s speed ups. As
the size of the memcpy approaches about 1MB, the speed improvement
disappears.

Change-Id: Ief79694d65324e2db41bee4707dae19b8c24be62
2013-05-02 14:04:31 -07:00
Nick Kralevich
4f40e511b0 libc: cleanup strchr
Move strchr to a .cpp file, and change to bionic directory.

Change-Id: I64ade7df326c0a9a714aca4caf5647b6833b1c97
2013-05-02 13:58:03 -07:00
The Android Automerger
2a9966da82 merge in master-release history after reset to master 2013-05-02 07:49:13 -07:00
Nick Kralevich
240bc95be1 am 65fe3ea7: am 5e3b502b: Merge "keep test names consistent with other tests."
* commit '65fe3ea708bf16ebaa354080b90b6e6c83a24e70':
  keep test names consistent with other tests.
2013-05-01 15:11:32 -07:00
Nick Kralevich
874ea191de am b9aab3a4: am 8c00c91a: Merge "add strrchr -D_FORTIFY_SOURCE=2 test."
* commit 'b9aab3a462efb79cdae83d9b819e299216f9cf5f':
  add strrchr -D_FORTIFY_SOURCE=2 test.
2013-05-01 15:11:32 -07:00
Nick Kralevich
65fe3ea708 am 5e3b502b: Merge "keep test names consistent with other tests."
* commit '5e3b502b6b56634953ea152409363088974fa5e9':
  keep test names consistent with other tests.
2013-05-01 15:10:07 -07:00
Nick Kralevich
b9aab3a462 am 8c00c91a: Merge "add strrchr -D_FORTIFY_SOURCE=2 test."
* commit '8c00c91aa051f18e107466b5d8c9280a2e1fabc1':
  add strrchr -D_FORTIFY_SOURCE=2 test.
2013-05-01 15:10:07 -07:00
Nick Kralevich
5e3b502b6b Merge "keep test names consistent with other tests." 2013-05-01 22:06:15 +00:00
Nick Kralevich
277226bf43 keep test names consistent with other tests.
Change-Id: I23dc4d963af40406b270af83cd17f6c8c95f1de3
2013-05-01 15:05:01 -07:00
Nick Kralevich
8c00c91aa0 Merge "add strrchr -D_FORTIFY_SOURCE=2 test." 2013-05-01 22:01:20 +00:00
Nick Kralevich
80541922e3 add strrchr -D_FORTIFY_SOURCE=2 test.
Change-Id: I1b95bb0086ae9f2f506f3cc90cee834c0ce3b1d8
2013-05-01 14:55:33 -07:00
The Android Automerger
33cd3f6848 merge in master-release history after reset to master 2013-05-01 07:49:28 -07:00
Nick Kralevich
6c6949fc00 am 8355ab55: am bee0ab16: Merge "libc: upgrade strrchr to FORTIFY_SOURCE=2"
* commit '8355ab5524557da2737ea9084a8131c1015ae14f':
  libc: upgrade strrchr to FORTIFY_SOURCE=2
2013-04-30 16:30:20 -07:00
Nick Kralevich
8355ab5524 am bee0ab16: Merge "libc: upgrade strrchr to FORTIFY_SOURCE=2"
* commit 'bee0ab16e47086d2f31f6f9ff41328066d5a7128':
  libc: upgrade strrchr to FORTIFY_SOURCE=2
2013-04-30 16:25:23 -07:00
Nick Kralevich
bee0ab16e4 Merge "libc: upgrade strrchr to FORTIFY_SOURCE=2" 2013-04-30 23:13:04 +00:00
Nick Kralevich
3b2e6bc9ac libc: upgrade strrchr to FORTIFY_SOURCE=2
Change-Id: I4c34c2ce22c5092c4446dc1ab55f37604c1c223f
2013-04-30 14:19:23 -07:00
Nick Kralevich
c9bf778112 am 2ff94a09: am c4687130: Merge "libc: upgrade some libc functions to _FORTIFY_SOURCE=2"
* commit '2ff94a096427a5b5e729ae356c98463c9a9dabf1':
  libc: upgrade some libc functions to _FORTIFY_SOURCE=2
2013-04-30 11:57:22 -07:00
Nick Kralevich
2ff94a0964 am c4687130: Merge "libc: upgrade some libc functions to _FORTIFY_SOURCE=2"
* commit 'c46871302e7bd099aaf54d91da93a2248acbf733':
  libc: upgrade some libc functions to _FORTIFY_SOURCE=2
2013-04-30 11:56:08 -07:00
Nick Kralevich
c46871302e Merge "libc: upgrade some libc functions to _FORTIFY_SOURCE=2" 2013-04-30 18:51:22 +00:00
Nick Kralevich
9020fd503c libc: upgrade some libc functions to _FORTIFY_SOURCE=2
Upgrade the following functions:

* vsnprintf
* vsprintf
* snprintf
* fgets
* strcpy
* strcat
* strncat
* strlcpy
* strlcat
* strlen
* strchr

Change-Id: Icc036fc7f0bb317e05f7c051617887a1601271aa
2013-04-30 11:31:35 -07:00
The Android Automerger
3fa53b5978 merge in master-release history after reset to master 2013-04-30 10:23:01 -07:00
Nick Kralevich
d411fbd497 am aed0c3ac: am b94b2851: Merge "libc: upgrade sprintf to _FORTIFY_SOURCE=2"
* commit 'aed0c3ac54fa944b1f8512938277e7dc6b6fa2ee':
  libc: upgrade sprintf to _FORTIFY_SOURCE=2
2013-04-30 08:54:30 -07:00
Nick Kralevich
90a293f7d3 am 56a1b492: am 382a7753: Merge "strncpy: implement _FORTIFY_SOURCE=2"
* commit '56a1b492c40b51204ad1b46a6b46819775c8912a':
  strncpy: implement _FORTIFY_SOURCE=2
2013-04-30 08:54:28 -07:00
Nick Kralevich
780cf25bf4 am 89357dc7: am c6dc62f0: Merge "[NETFILTER]: Fix iptables ABI breakage"
* commit '89357dc730f6bfd532c4aed80373c84904cc3319':
  [NETFILTER]: Fix iptables ABI breakage
2013-04-30 08:46:47 -07:00
Nick Kralevich
aed0c3ac54 am b94b2851: Merge "libc: upgrade sprintf to _FORTIFY_SOURCE=2"
* commit 'b94b2851d72187cc9095864a9c99429ee62d7786':
  libc: upgrade sprintf to _FORTIFY_SOURCE=2
2013-04-29 16:56:29 -07:00
Nick Kralevich
b94b2851d7 Merge "libc: upgrade sprintf to _FORTIFY_SOURCE=2" 2013-04-29 23:50:46 +00:00
Nick Kralevich
78d6d9888c libc: upgrade sprintf to _FORTIFY_SOURCE=2
Upgrade sprintf to fortify_source level 2, to catch
additional security bugs.

Change-Id: Ibc957d65e4cb96152de84b3745a04e00fa22659e
2013-04-29 16:41:54 -07:00
Nick Kralevich
56a1b492c4 am 382a7753: Merge "strncpy: implement _FORTIFY_SOURCE=2"
* commit '382a7753786646483a8101f4e337f9e3a82ec852':
  strncpy: implement _FORTIFY_SOURCE=2
2013-04-29 16:25:41 -07:00
Nick Kralevich
382a775378 Merge "strncpy: implement _FORTIFY_SOURCE=2" 2013-04-29 23:07:33 +00:00
Nick Kralevich
1aae9bd170 strncpy: implement _FORTIFY_SOURCE=2
Add support for fortify source level 2 to strncpy.
This will enable detection of more areas where strncpy
is used inappropriately. For example, this would have detected
bug 8727221.

Move the fortify_source tests out of string_test.cpp, and
put it into fortify1_test.cpp.

Create a new fortify2_test.cpp file, which copies all
the tests in fortify1_test.cpp, and adds fortify_source level
2 specific tests.

Change-Id: Ica0fba531cc7d0609e4f23b8176739b13f7f7a83
2013-04-29 15:22:10 -07:00
Nick Kralevich
89357dc730 am c6dc62f0: Merge "[NETFILTER]: Fix iptables ABI breakage"
* commit 'c6dc62f09c814b9688aee83e80dcfe80cb0ef604':
  [NETFILTER]: Fix iptables ABI breakage
2013-04-29 12:51:35 -07:00
Nick Kralevich
c6dc62f09c Merge "[NETFILTER]: Fix iptables ABI breakage" 2013-04-29 19:44:30 +00:00
Nick Kralevich
e66ad7809e [NETFILTER]: Fix iptables ABI breakage
Pick up Linux kernel patch 2748e5dec7ca8a3804852c7c4171f9156384d15c
from 2007

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2748e5dec7ca8a3804852c7c4171f9156384d15c

[NETFILTER]: Fix iptables ABI breakage on (at least) CRIS
With the introduction of x_tables we accidentally broke compatibility
by defining IPT_TABLE_MAXNAMELEN to XT_FUNCTION_MAXNAMELEN instead of
XT_TABLE_MAXNAMELEN, which is two bytes larger.

On most architectures it doesn't really matter since we don't have
any tables with names that long in the kernel and the structure
layout didn't change because of alignment requirements of following
members. On CRIS however (and other architectures that don't align
data) this changed the structure layout and thus broke compatibility
with old iptables binaries.

Changing it back will break compatibility with binaries compiled
against recent kernels again, but since the breakage has only been
there for three releases this seems like the better choice.

Change-Id: Ie9552b25892109c7042b9752132dc8ebd3552dc3
2013-04-29 12:31:01 -07:00
Andrew Hsieh
cfb0b8bd5e am 83966db8: am f7153fd1: Merge "Remove redundant space within square brackets"
* commit '83966db80b9cccc3417db7566242d30a330cde29':
  Remove redundant space within square brackets
2013-04-25 21:26:46 -07:00
Andrew Hsieh
83966db80b am f7153fd1: Merge "Remove redundant space within square brackets"
* commit 'f7153fd13f469e9ba5aecbfa00fde42530ca2124':
  Remove redundant space within square brackets
2013-04-25 21:22:26 -07:00
Elliott Hughes
b03dc7cfa3 am 9aa57e09: am 9ff1ffd8: Merge "Improve diagnostics in the face of bad tzdata."
* commit '9aa57e09ef7234b6d82ffa4a4889508e64e424b9':
  Improve diagnostics in the face of bad tzdata.
2013-04-25 21:19:48 -07:00
Nick Kralevich
95a46909c7 am ed572aaa: am 5f28fde8: Merge "linker: only re-open std* for setuid programs."
* commit 'ed572aaa0d275eed753afd4b92e05991310e76ac':
  linker: only re-open std* for setuid programs.
2013-04-25 21:19:48 -07:00
Andrew Hsieh
f7153fd13f Merge "Remove redundant space within square brackets" 2013-04-26 01:54:38 +00:00
Elliott Hughes
9aa57e09ef am 9ff1ffd8: Merge "Improve diagnostics in the face of bad tzdata."
* commit '9ff1ffd805b57160079f42d7eea051c63e0e2bca':
  Improve diagnostics in the face of bad tzdata.
2013-04-25 17:01:42 -07:00
Nick Kralevich
ed572aaa0d am 5f28fde8: Merge "linker: only re-open std* for setuid programs."
* commit '5f28fde8aeee047a70e344c9da937695dc51a3ba':
  linker: only re-open std* for setuid programs.
2013-04-25 17:01:41 -07:00
Elliott Hughes
9ff1ffd805 Merge "Improve diagnostics in the face of bad tzdata." 2013-04-25 22:31:14 +00:00
Elliott Hughes
e7aaad8b83 Improve diagnostics in the face of bad tzdata.
Bug: 8373554
Change-Id: If8df5e956105e01cce95221ff0a7fa9d2b474db3
2013-04-25 14:02:59 -07:00
Nick Kralevich
5f28fde8ae Merge "linker: only re-open std* for setuid programs." 2013-04-25 20:31:41 +00:00
Nick Kralevich
8d3e91d4f8 linker: only re-open std* for setuid programs.
get_AT_SECURE() was getting called before linker_env_init() had
been called, and returning the default value ("true"). This was
causing us to reopen closed stdin, stdout, and stderr for ALL
processes, not just privileged (setuid) processes.

Calling path:
  - __linker_init
    - soinfo_link_image
      - get_AT_SECURE
    - __linker_init_post_relocation
      - linker_env_init

This change restores the intended behavior of only re-opening
stdin, stdout, and stderr for privileged processes.

Change-Id: I8b085ea6597710ac4c1a3c93f1bf8b81eecb08c0
2013-04-25 13:15:24 -07:00
The Android Automerger
59f27ec089 merge in master-release history after reset to master 2013-04-25 07:49:12 -07:00
The Android Automerger
46de17d26d merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-25 05:55:12 -07:00
Andrew Hsieh
e8f46e8edd Remove redundant space within square brackets
The new "as" in binutils-2.23 (with gcc4.8) is more picky:
it expects register right after [

Change-Id: I876124841582070ab2083ffafe38bc333b5812d0
2013-04-25 15:05:03 +08:00
Elliott Hughes
baa836baa4 am eb22fc33: am 389b5c1e: Upgrade to tzdata2013c.
* commit 'eb22fc331ed1bff5ee146c252fb4b9fa7f198523':
  Upgrade to tzdata2013c.
2013-04-24 14:28:10 -07:00
Elliott Hughes
eb22fc331e am 389b5c1e: Upgrade to tzdata2013c.
* commit '389b5c1ee52cbf0de4dcdfe266832d251f55db62':
  Upgrade to tzdata2013c.
2013-04-24 14:25:33 -07:00
Elliott Hughes
537e1aa9c6 am b6e895e8: am 87efcd2e: Merge "Don\'t avoid IPv6 when looking for new tzdata."
* commit 'b6e895e80f96301b3921a2ec7327c337ab988b41':
  Don't avoid IPv6 when looking for new tzdata.
2013-04-24 11:01:28 -07:00
Elliott Hughes
b6e895e80f am 87efcd2e: Merge "Don\'t avoid IPv6 when looking for new tzdata."
* commit '87efcd2e63c9f218f476ef88f21e660f9bce633f':
  Don't avoid IPv6 when looking for new tzdata.
2013-04-24 10:58:37 -07:00
Elliott Hughes
87efcd2e63 Merge "Don't avoid IPv6 when looking for new tzdata." 2013-04-24 17:52:29 +00:00
Elliott Hughes
85aeb49144 Don't avoid IPv6 when looking for new tzdata.
Our internal IPv6 FTP networking problems have been fixed.

Change-Id: I9949a13fa20a3b0f3845e565e1461320078d3f14
2013-04-24 10:50:45 -07:00
Elliott Hughes
389b5c1ee5 Upgrade to tzdata2013c.
From the release notes:

  Changes affecting current and future time stamps:

    Palestine observed DST starting March 29, 2013.  (Thanks to
    Steffen Thorsen.)  From 2013 on, Gaza and Hebron both observe DST,
    with the predicted rules being the last Thursday in March at 24:00
    to the first Friday on or after September 21 at 01:00.

    Assume that the recent change to Paraguay's DST rules is permanent,
    by moving the end of DST to the 4th Sunday in March every year.
    (Thanks to Carlos Raúl Perasso.)

  Changes affecting past time stamps:

    Fix some historical data for Palestine to agree with that of
    timeanddate.com, as follows:

          The spring 2008 change in Gaza and Hebron was on 00:00 Mar 28, not
          00:00 Apr 1.

          The fall 2009 change in Gaza and Hebron on Sep 4 was at 01:00, not
          02:00.

          The spring 2010 change in Hebron was 00:00 Mar 26, not 00:01 Mar 27.

          The spring 2011 change in Gaza was 00:01 Apr 1, not 12:01 Apr 2.

          The spring 2011 change in Hebron on Apr 1 was at 00:01, not 12:01.

          The fall 2011 change in Hebron on Sep 30 was at 00:00, not 03:00.

    Fix times of habitation for Macquarie to agree with the Tasmania
    Parks & Wildlife Service history, which indicates that permanent
    habitation was 1899-1919 and 1948 on.

  Changing affecting metadata only:

    Macquarie Island is politically part of Australia, not Antarctica.
    (Thanks to Tobias Conradi.)

    Sort Macquarie more-consistently with other parts of Australia.
    (Thanks to Tim Parenti.)

(cherry picked from commit 2379088a90)

Change-Id: I77d0ceebdba3489da0069f5792e930adc5810d34
2013-04-23 18:22:31 -07:00
The Android Automerger
70ef50862c merge in master-release history after reset to master 2013-04-23 07:49:08 -07:00
Elliott Hughes
14cbb15b99 am 41dcafc2: am c705daa0: Merge "Disable IPv6 when looking for tzdata updates."
* commit '41dcafc27627dbc79e492056799b3cde4056d412':
  Disable IPv6 when looking for tzdata updates.
2013-04-22 16:57:46 -07:00
Elliott Hughes
41dcafc276 am c705daa0: Merge "Disable IPv6 when looking for tzdata updates."
* commit 'c705daa0a2684d31b8ddc9230e7aa5573880adef':
  Disable IPv6 when looking for tzdata updates.
2013-04-22 16:55:59 -07:00
Elliott Hughes
c705daa0a2 Merge "Disable IPv6 when looking for tzdata updates." 2013-04-22 23:41:37 +00:00
Elliott Hughes
21da42ea91 Disable IPv6 when looking for tzdata updates.
My problems connecting to ftp.iana.org are only via IPv6.

Change-Id: I42e4bae7981ec4b64822f745a7a15544d77ef22d
2013-04-22 13:44:50 -07:00
Elliott Hughes
dd15d3cb28 am dc7e8b89: am 2c60c18c: Merge "Upgrade to tzdata2013c."
* commit 'dc7e8b892db0e997c12a6574ee2468cb3f8a6a2c':
  Upgrade to tzdata2013c.
2013-04-22 12:29:42 -07:00
Elliott Hughes
dc7e8b892d am 2c60c18c: Merge "Upgrade to tzdata2013c."
* commit '2c60c18c505491631a07380f80438fafa80d39f0':
  Upgrade to tzdata2013c.
2013-04-22 12:27:17 -07:00
Elliott Hughes
6180ab7850 am 4f89ab31: am bda2fb5e: Merge "Add signature checking to HTTP tzdata updates."
* commit '4f89ab3166586378d448ca8d5eb4688ab33bb28b':
  Add signature checking to HTTP tzdata updates.
2013-04-22 12:14:04 -07:00
Elliott Hughes
4f89ab3166 am bda2fb5e: Merge "Add signature checking to HTTP tzdata updates."
* commit 'bda2fb5efab914e8442ec9c38961b7182ac5978c':
  Add signature checking to HTTP tzdata updates.
2013-04-22 12:11:48 -07:00
Elliott Hughes
2c60c18c50 Merge "Upgrade to tzdata2013c." 2013-04-22 19:10:08 +00:00
Elliott Hughes
bda2fb5efa Merge "Add signature checking to HTTP tzdata updates." 2013-04-22 19:03:06 +00:00
Elliott Hughes
676e66db25 Add signature checking to HTTP tzdata updates.
Change-Id: Idcfd217eb215d6a170e6884be8d8ad28cd4fe70d
2013-04-22 11:41:57 -07:00
Elliott Hughes
652c68c50e am 9f10e6a9: am 70e0bd3a: Merge "Rename the tzdata update tool, and add HTTP support."
* commit '9f10e6a96afbe85239d18c1cffb560c4f6ae9b4d':
  Rename the tzdata update tool, and add HTTP support.
2013-04-22 11:36:51 -07:00
Elliott Hughes
9f10e6a96a am 70e0bd3a: Merge "Rename the tzdata update tool, and add HTTP support."
* commit '70e0bd3a448fc345d75d16caf40babf36463f0ec':
  Rename the tzdata update tool, and add HTTP support.
2013-04-22 11:34:48 -07:00
Elliott Hughes
2379088a90 Upgrade to tzdata2013c.
From the release notes:

  Changes affecting current and future time stamps:

    Palestine observed DST starting March 29, 2013.  (Thanks to
    Steffen Thorsen.)  From 2013 on, Gaza and Hebron both observe DST,
    with the predicted rules being the last Thursday in March at 24:00
    to the first Friday on or after September 21 at 01:00.

    Assume that the recent change to Paraguay's DST rules is permanent,
    by moving the end of DST to the 4th Sunday in March every year.
    (Thanks to Carlos Raúl Perasso.)

  Changes affecting past time stamps:

    Fix some historical data for Palestine to agree with that of
    timeanddate.com, as follows:

          The spring 2008 change in Gaza and Hebron was on 00:00 Mar 28, not
          00:00 Apr 1.

          The fall 2009 change in Gaza and Hebron on Sep 4 was at 01:00, not
          02:00.

          The spring 2010 change in Hebron was 00:00 Mar 26, not 00:01 Mar 27.

          The spring 2011 change in Gaza was 00:01 Apr 1, not 12:01 Apr 2.

          The spring 2011 change in Hebron on Apr 1 was at 00:01, not 12:01.

          The fall 2011 change in Hebron on Sep 30 was at 00:00, not 03:00.

    Fix times of habitation for Macquarie to agree with the Tasmania
    Parks & Wildlife Service history, which indicates that permanent
    habitation was 1899-1919 and 1948 on.

  Changing affecting metadata only:

    Macquarie Island is politically part of Australia, not Antarctica.
    (Thanks to Tobias Conradi.)

    Sort Macquarie more-consistently with other parts of Australia.
    (Thanks to Tim Parenti.)

Change-Id: I3df146d046eda26dbc6ce2a0a26ad9214ec4eaca
2013-04-22 11:33:14 -07:00
Elliott Hughes
70e0bd3a44 Merge "Rename the tzdata update tool, and add HTTP support." 2013-04-22 18:28:49 +00:00
Elliott Hughes
f8dff7d449 Rename the tzdata update tool, and add HTTP support.
The FTP server is currently unavailable, but the HTTP server is working
fine.

Change-Id: If7f2f396e89aca022a60af531f3604523b7bf95c
2013-04-22 11:11:43 -07:00
The Android Automerger
c689ed1ef7 merge in master-release history after reset to master 2013-04-16 07:49:11 -07:00
Elliott Hughes
9a41d425ea am d23a87d3: am 8c181aa8: Merge "Use hidden visibility for internal-use-only functions"
* commit 'd23a87d3b1c7269a4b55f082555790a3003ba228':
  Use hidden visibility for internal-use-only functions
2013-04-15 11:26:47 -07:00
Elliott Hughes
d23a87d3b1 am 8c181aa8: Merge "Use hidden visibility for internal-use-only functions"
* commit '8c181aa8fe421c62a8e30f4c10e322aca968c27c':
  Use hidden visibility for internal-use-only functions
2013-04-15 11:24:14 -07:00
Elliott Hughes
8c181aa8fe Merge "Use hidden visibility for internal-use-only functions" 2013-04-15 17:51:24 +00:00
The Android Automerger
94dcdb0352 merge in master-release history after reset to master 2013-04-15 07:49:20 -07:00
Christopher Ferris
5274339979 am 39e4ed96: am 516a8970: Merge "Rewrite memset for cortexa15 to use strd."
* commit '39e4ed969948fd738d7b670b099c0b2c25351d95':
  Rewrite memset for cortexa15 to use strd.
2013-04-12 12:33:57 -07:00
Elliott Hughes
35a2a61d49 am cf4a5302: am b3c8c4d8: Merge "Switch to current FreeBSD qsort."
* commit 'cf4a53020d85b0017799c31dc41823f9e775a1c5':
  Switch to current FreeBSD qsort.
2013-04-12 12:33:56 -07:00
Christopher Ferris
39e4ed9699 am 516a8970: Merge "Rewrite memset for cortexa15 to use strd."
* commit '516a89705378f43646678e75924529404e52b613':
  Rewrite memset for cortexa15 to use strd.
2013-04-12 12:30:22 -07:00
Elliott Hughes
cf4a53020d am b3c8c4d8: Merge "Switch to current FreeBSD qsort."
* commit 'b3c8c4d8654894cdc72d32bde84a520ccda4d8f3':
  Switch to current FreeBSD qsort.
2013-04-12 12:30:22 -07:00
Christopher Ferris
516a897053 Merge "Rewrite memset for cortexa15 to use strd." 2013-04-12 19:16:44 +00:00
Elliott Hughes
b3c8c4d865 Merge "Switch to current FreeBSD qsort." 2013-04-12 19:12:29 +00:00
Christopher Ferris
796cbe249b Rewrite memset for cortexa15 to use strd.
Merge from internal master.

(cherry-picked from commit 7ffad9c120)

Change-Id: Ia67f2a545399f4fa37b63d5634a3565e4f5482f9
2013-04-12 10:58:25 -07:00
The Android Automerger
5703eb8007 merge in master-release history after reset to master 2013-04-12 07:49:26 -07:00
Kito Cheng
ea489745dc Use hidden visibility for internal-use-only functions
- malloc_debug_init and malloc_debug_fini

Change-Id: I4261ff428a50d8f0371415cda71bcc0a9487ce67
2013-04-12 16:34:38 +08:00
Elliott Hughes
0b25f633a2 Switch to current FreeBSD qsort.
Change-Id: Ic46cd0b663dc5fa78c99dd38db0bfe849a25e789
2013-04-11 18:08:34 -07:00
Elliott Hughes
a1826f6e59 am 5fe62e50: am ed36d95f: Merge "Start moving to current FreeBSD stdio."
* commit '5fe62e50f61b353657e1cd9cc6b1b1fc02870c9b':
  Start moving to current FreeBSD stdio.
2013-04-11 14:58:37 -07:00
Elliott Hughes
5fe62e50f6 am ed36d95f: Merge "Start moving to current FreeBSD stdio."
* commit 'ed36d95fac5881f78a601e2932f51edfd27c6ba6':
  Start moving to current FreeBSD stdio.
2013-04-11 14:24:37 -07:00
Elliott Hughes
ed36d95fac Merge "Start moving to current FreeBSD stdio." 2013-04-11 21:18:14 +00:00
Elliott Hughes
6b05c8e280 Start moving to current FreeBSD stdio.
This only touches the easy stuff.

Change-Id: Iecee57f1681dba5c56bff59f0e9a89811a71f0ca
2013-04-11 13:55:01 -07:00
The Android Automerger
651b3e1f9e merge in master-release history after reset to master 2013-04-11 09:22:10 -07:00
The Android Open Source Project
6c48aca345 am ab911a02: Reconcile with jb-mr2-release - do not merge
* commit 'ab911a02af2a5c3977b55cb0994f74635edc7c3a':
2013-04-11 07:47:08 -07:00
The Android Open Source Project
ab911a02af Reconcile with jb-mr2-release - do not merge
Change-Id: I15e9944781325d7a44f0d40ab078aec7723ce9ac
2013-04-11 07:44:55 -07:00
The Android Automerger
637d50e6c0 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-11 05:55:13 -07:00
Elliott Hughes
980d21745c am 76db50dd: am b632857a: Merge "Add missing include and function prototype for sched_getaffinity."
* commit '76db50ddc948541d39bfc351666ba910bd8e6bab':
  Add missing include and function prototype for sched_getaffinity.
2013-04-10 18:22:50 -07:00
Christopher Ferris
b9cfe21c6e am 101dadf6: am fc76c7d3: Merge "Add missing branch in memcpy.S dst aligned case."
* commit '101dadf6a6a689b53f6db809578627448a14bff8':
  Add missing branch in memcpy.S dst aligned case.
2013-04-10 18:22:48 -07:00
Elliott Hughes
76db50ddc9 am b632857a: Merge "Add missing include and function prototype for sched_getaffinity."
* commit 'b632857a50a1fd2b759316d07ace6c36f6f418cf':
  Add missing include and function prototype for sched_getaffinity.
2013-04-10 17:56:22 -07:00
Christopher Ferris
dbc23ea51c resolved conflicts for merge of 3fe5b109 to master
Change-Id: Ifeecc0f8b0935ee1df057e944fc135d5047e248d
2013-04-10 17:54:53 -07:00
Elliott Hughes
b632857a50 Merge "Add missing include and function prototype for sched_getaffinity." 2013-04-11 00:45:33 +00:00
Kito Cheng
4ca685e36e Add missing include and function prototype for sched_getaffinity.
Change-Id: I649633c8d074def5d05bd0c8b92fb680d9d11d51
2013-04-10 17:44:29 -07:00
Christopher Ferris
101dadf6a6 am fc76c7d3: Merge "Add missing branch in memcpy.S dst aligned case."
* commit 'fc76c7d394ebe0e585777955efadf7cc8ed86636':
  Add missing branch in memcpy.S dst aligned case.
2013-04-10 17:37:49 -07:00
Christopher Ferris
3fe5b10948 am 68fd78ef: Merge "Update to latest cortexa15 memcpy code."
* commit '68fd78efa05fc61adfbdeadeb757caa45663570c':
  Update to latest cortexa15 memcpy code.
2013-04-10 17:37:49 -07:00
Christopher Ferris
fc76c7d394 Merge "Add missing branch in memcpy.S dst aligned case." 2013-04-11 00:23:46 +00:00
Christopher Ferris
bf0d1ad72b Add missing branch in memcpy.S dst aligned case.
Merge from internal master.

(cherry-picked from commit 6ffaa931c3)

Change-Id: Ifdcf01fd122866cf0d4c5b5f7a997803561d7889
2013-04-10 17:21:29 -07:00
Christopher Ferris
68fd78efa0 Merge "Update to latest cortexa15 memcpy code." 2013-04-11 00:18:04 +00:00
Eric Laurent
61735a9069 am 55c015cd: am ccaa0fa6: sound: Add ALSA compressed API headers
* commit '55c015cddd4d8d14e58e7134ae077d637ff5388e':
  sound: Add ALSA compressed API headers
2013-04-10 11:34:31 -07:00
Eric Laurent
55c015cddd am ccaa0fa6: sound: Add ALSA compressed API headers
* commit 'ccaa0fa6e90421831fa589e60f4e7ef6df39bd04':
  sound: Add ALSA compressed API headers
2013-04-10 11:31:08 -07:00
The Android Automerger
7b1d164a4e merge in master-release history after reset to master 2013-04-10 07:49:16 -07:00
Christopher Ferris
e27483c788 Merge "Rewrite memset for cortexa15 to use strd." 2013-04-09 22:58:26 +00:00
Eric Laurent
ccaa0fa6e9 sound: Add ALSA compressed API headers
Added the following headers for ALSA compressed
user space API:
- sound/compress_offload.h
- sound/compress_params.h

Change-Id: I9584c12acdadf31546d2921393b93d491e54a8d3
2013-04-09 09:37:44 -07:00
Christopher Ferris
7ffad9c120 Rewrite memset for cortexa15 to use strd.
Change-Id: Iac3af55f7813bd2b40a41bd19403f2b4dca5224b
2013-04-08 18:48:46 -07:00
Christopher Ferris
185ce72d00 Update to latest cortexa15 memcpy code.
This uses the new code original submitted as memcpy.a15.S as
the base. However, the old code handled unaligned src/dst better
so that was spliced in. I optimized the original unaligned code by
removing a few unnecessary instructions. I optimized the a15 code by
rewriting the pre and post code. I also modified the main loop to add
a pld so that larger copies would not stall waiting for memory.

Test cases for the new memcpy:

- Copy all sized values from 0 to 1024 bytes, using whatever alignment
  is returned by malloc.
For each alignment case described below, the test copied from 0 to 128
bytes.
- Src and dst pointers are both aligned to the same value, starting
  at one going through every power of two up to and including 128.
- Src aligned to double word boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to double word boundary.
- Src aligned to 16 bit boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to 16 byte boundary.
- Src aligned to word boundary, dst aligned to 1 byte from a word
  boundary.
- Src aligned to word boundary, dst aligned to 2 bytes from a word
  boundary.
- Src aligned to word boundary, dst aligned to 3 bytes from a word
  boundary.
- Src aligned to 1 byte from a word boundary, dst aligned to a word
  boundary.
- Src aligned to 2 bytes from a word boundary, dst aligned to a word
  boundary.
- Src aligned to 3 bytes from a word boundary, dst aligned to a word
  boundary.

Cases to verify the unaligned source code properly aligns to a 16 bit
boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  4 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  8 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  12 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  16 + 128 bit boundary.

In all cases, a two byte fencepost was placed at the end of the
destination to verify that only the requested number of bytes were copied.

Bug: 8005082

Merge from internal master.

(cherry-picked from commit 21ede92d79)

Change-Id: Ief70c9e6dc8c6473ae245b6570b2c266fed9618c
2013-04-08 18:13:35 -07:00
The Android Open Source Project
bc37bf00f8 am bb9842b6: Reconcile with jb-mr2-release - do not merge
* commit 'bb9842b61e188ed70cf9bfb0415f2ba8fb406937':
2013-04-08 13:40:28 -07:00
The Android Open Source Project
bb9842b61e Reconcile with jb-mr2-release - do not merge
Change-Id: I562a47cb4eb8222c26aff7652826752825b9a091
2013-04-08 13:35:31 -07:00
The Android Automerger
cad988dafb merge in master-release history after reset to master 2013-04-08 07:49:30 -07:00
The Android Automerger
d4cc0b8a61 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-08 05:55:25 -07:00
Elliott Hughes
8bed98c3ce am fe7f46c0: am 7b4d77e4: Make abort messages available to debuggerd.
* commit 'fe7f46c088f303ea2cb9f6b218cc0f46f5385d43':
  Make abort messages available to debuggerd.
2013-04-05 16:07:15 -07:00
Elliott Hughes
fe7f46c088 am 7b4d77e4: Make abort messages available to debuggerd.
* commit '7b4d77e400d321ccc7cdadd1cd225ebb1a69d358':
  Make abort messages available to debuggerd.
2013-04-05 16:04:13 -07:00
Elliott Hughes
7b4d77e400 Make abort messages available to debuggerd.
This adds __libc_fatal, cleans up the internal logging code a bit more,
and switches suitable callers over to __libc_fatal. In addition to logging,
__libc_fatal stashes the message somewhere that the debuggerd signal handler
can find it before calling abort.

In the debuggerd signal handler, we pass this address to debuggerd so that
it can come back with ptrace to read the message and present it to the user.

Bug: 8531731

(cherry picked from commit 0d787c1fa1)

Change-Id: I5daeeaa36c1fc23f7f437d73a19808d9d558dd4d
2013-04-05 15:57:53 -07:00
Elliott Hughes
f89ce5b518 am 9c7b510a: am 240fb862: Merge "Make abort messages available to debuggerd."
* commit '9c7b510a408740b5b53f8d14b8f43bf2f2d36ae6':
  Make abort messages available to debuggerd.
2013-04-05 11:47:00 -07:00
Elliott Hughes
9c7b510a40 am 240fb862: Merge "Make abort messages available to debuggerd."
* commit '240fb8623b1fe027d0d33a9d4c41d99ceb385b58':
  Make abort messages available to debuggerd.
2013-04-05 11:43:37 -07:00
Elliott Hughes
240fb8623b Merge "Make abort messages available to debuggerd." 2013-04-05 18:25:21 +00:00
Elliott Hughes
0d787c1fa1 Make abort messages available to debuggerd.
This adds __libc_fatal, cleans up the internal logging code a bit more,
and switches suitable callers over to __libc_fatal. In addition to logging,
__libc_fatal stashes the message somewhere that the debuggerd signal handler
can find it before calling abort.

In the debuggerd signal handler, we pass this address to debuggerd so that
it can come back with ptrace to read the message and present it to the user.

Bug: 8531731
Change-Id: I416ec1da38a8a1b0d0a582ccd7c8aaa681ed4a29
2013-04-05 11:24:19 -07:00
The Android Automerger
291f5c1e4b merge in master-release history after reset to master 2013-04-04 07:49:14 -07:00
The Android Automerger
ddbe8a23a8 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-04 05:55:10 -07:00
The Android Open Source Project
9207e5aed8 am cd6f4804: Reconcile with jb-mr2-release - do not merge
* commit 'cd6f4804d22a119c1aaf915d70a53924b1666777':
2013-04-03 18:05:26 -07:00
The Android Open Source Project
cd6f4804d2 Reconcile with jb-mr2-release - do not merge
Change-Id: I716c266ad98beb8523f0e4a4a04bbc326388fe93
2013-04-03 16:43:02 -07:00
Elliott Hughes
fbfedc7a7c am 13ab5591: am 014c75c7: Merge "Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a"
* commit '13ab55918a0a114ce1d5c67eeca9c94ce08803ee':
  Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
2013-04-03 12:40:33 -07:00
Elliott Hughes
acec23561e am f5dc9086: am 14c840df: Merge "Fix the SYSCALLS.TXT documentation and remove a dead script."
* commit 'f5dc908695ad4e513504e1a29613d797b95adbf0':
  Fix the SYSCALLS.TXT documentation and remove a dead script.
2013-04-03 12:40:33 -07:00
Kito Cheng
98ac1d64bd am 4bc54686: am 9b84824d: Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
* commit '4bc546860ec36f7ed86ee1a6a7e2bf6db028f02a':
  Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
2013-04-03 12:40:32 -07:00
Elliott Hughes
f3810dbb0a am 57148994: am a69103ff: Fix the SYSCALLS.TXT documentation and remove a dead script.
* commit '57148994df6c3ca0d3c60abe2e1e891e7e12b39c':
  Fix the SYSCALLS.TXT documentation and remove a dead script.
2013-04-03 12:40:31 -07:00
Elliott Hughes
13ab55918a am 014c75c7: Merge "Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a"
* commit '014c75c78bdcad8acde8d0abb2450aa1f78e1a1f':
  Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
2013-04-03 12:37:52 -07:00
Elliott Hughes
f5dc908695 am 14c840df: Merge "Fix the SYSCALLS.TXT documentation and remove a dead script."
* commit '14c840df90bb4fc9935f7e24350e3269b6bd7f17':
  Fix the SYSCALLS.TXT documentation and remove a dead script.
2013-04-03 12:37:51 -07:00
Kito Cheng
4bc546860e am 9b84824d: Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
* commit '9b84824dfd597d8137137fa33295faa26cc70ae0':
  Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
2013-04-03 12:35:49 -07:00
Elliott Hughes
57148994df am a69103ff: Fix the SYSCALLS.TXT documentation and remove a dead script.
* commit 'a69103ffe4b3d55f5bab7e7bfba36ccecddfa4da':
  Fix the SYSCALLS.TXT documentation and remove a dead script.
2013-04-03 12:35:49 -07:00
Kito Cheng
9b84824dfd Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
- eventfd.cpp and eventfd.s will output to the same file when building libc.a
   out/target/product/*/obj/STATIC_LIBRARIES/libc_intermediates/WHOLE/libc_common_objs/eventfd.o
 - And then `eventfd` will undefined when statically linked to libc.

Also add a unit test.

(cherry-pick of 8baa929d5d3bcf63381cf78ba76168c80c303f5e.)

Change-Id: Icd0eb0f4ce0511fb9ec00a504d491afd47d744d3
2013-04-03 11:14:20 -07:00
Elliott Hughes
a69103ffe4 Fix the SYSCALLS.TXT documentation and remove a dead script.
We use the system call constants from the kernel header files now,
so there's no need to check that they've been correctly transcribed
into SYSCALLS.TXT.

This is a work in progress. I've added TODOs to SYSCALLS.TXT explaining
what's left to do.

(cherry-pick of a51916b58b2d211bcf8ffdbe9cf7faa58e57382f.)

Change-Id: I4484acd946b1f548ac3d95327e58add9f98246ab
2013-04-03 11:13:31 -07:00
Elliott Hughes
014c75c78b Merge "Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a" 2013-04-03 18:11:30 +00:00
Kito Cheng
8baa929d5d Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a
- eventfd.cpp and eventfd.s will output to the same file when building libc.a
   out/target/product/*/obj/STATIC_LIBRARIES/libc_intermediates/WHOLE/libc_common_objs/eventfd.o
 - And then `eventfd` will undefined when statically linked to libc.

Also add a unit test.

Change-Id: Ib310ade3256712ca617a90539e8eb07459c98505
2013-04-03 11:10:37 -07:00
Elliott Hughes
14c840df90 Merge "Fix the SYSCALLS.TXT documentation and remove a dead script." 2013-04-03 17:22:18 +00:00
Elliott Hughes
a51916b58b Fix the SYSCALLS.TXT documentation and remove a dead script.
We use the system call constants from the kernel header files now,
so there's no need to check that they've been correctly transcribed
into SYSCALLS.TXT.

This is a work in progress. I've added TODOs to SYSCALLS.TXT explaining
what's left to do.

Change-Id: I3b86acfe7f84b4da1c802ee5a4ef13a2e83e7939
2013-04-03 10:08:09 -07:00
The Android Automerger
c099884c7c merge in master-release history after reset to master 2013-04-03 07:49:14 -07:00
The Android Automerger
90e19c328f merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-03 06:02:06 -07:00
Elliott Hughes
168486f073 am fe51d25e: am 162b4411: Merge "Stop using unreasonable numbers of map entries."
* commit 'fe51d25e83a8487386c653493e587aa1686503aa':
  Stop using unreasonable numbers of map entries.
2013-04-02 19:25:21 -07:00
Elliott Hughes
a0340cf139 am 40147728: am 1fe11375: Stop using unreasonable numbers of map entries.
* commit '40147728d24a5a85b0ae0ee366b0a3cadb1ea65a':
  Stop using unreasonable numbers of map entries.
2013-04-02 19:25:19 -07:00
Elliott Hughes
fe51d25e83 am 162b4411: Merge "Stop using unreasonable numbers of map entries."
* commit '162b4411fc79fe906020ebdf9e85883237fac8c3':
  Stop using unreasonable numbers of map entries.
2013-04-02 18:05:25 -07:00
Elliott Hughes
40147728d2 am 1fe11375: Stop using unreasonable numbers of map entries.
* commit '1fe1137576a1b7faf2d9bede121cc6faeceb50ff':
  Stop using unreasonable numbers of map entries.
2013-04-02 17:52:20 -07:00
Elliott Hughes
1fe1137576 Stop using unreasonable numbers of map entries.
(cherry-pick of 4ace92c62ada583b220836d76de2cfcb78d4d48d.)

Bug: 8460659
Change-Id: I1a9dc30cbf6a7a2c68cb3d8000921e9178eedb85
2013-04-02 17:48:35 -07:00
Elliott Hughes
162b4411fc Merge "Stop using unreasonable numbers of map entries." 2013-04-03 00:48:07 +00:00
Elliott Hughes
4ace92c62a Stop using unreasonable numbers of map entries.
Bug: 8460659
Change-Id: Ib0ee71e3cf61e122d0449c9d8a4e4670a7d7129a
2013-04-02 17:41:14 -07:00
Kenny Root
4ea3580749 Merge branch 'master' of https://googleplex-android.googlesource.com/_direct/platform/bionic 2013-04-02 11:06:24 -07:00
Christopher Ferris
5014f417ea Merge "Add missing branch in memcpy.S dst aligned case." 2013-04-02 18:05:54 +00:00
The Android Open Source Project
6517d138fd am cc91c517: Reconcile with jb-mr2-release - do not merge
* commit 'cc91c517bf00431f098b7ca371113dc108071a45':
2013-04-02 11:04:15 -07:00
Lorenzo Colitti
5a3cc2018c am 9ef66e84: am 309e107f: Merge "Update getaddrinfo to RFC6724" into jb-mr2-dev
* commit '9ef66e842f28f58abfbc8458973a2511a055db0c':
  Update getaddrinfo to RFC6724
2013-04-02 11:04:09 -07:00
Christopher Ferris
6ffaa931c3 Add missing branch in memcpy.S dst aligned case.
Change-Id: I0651e46dc5d9b49a997c0c6d099b75097eedb504
2013-04-02 09:19:00 -07:00
The Android Automerger
ea01edd2d4 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-02 09:18:11 -07:00
The Android Automerger
02dc65183b merge in master-release history after reset to master 2013-04-02 09:17:13 -07:00
The Android Open Source Project
cc91c517bf Reconcile with jb-mr2-release - do not merge
Change-Id: Id1d2ab018ca9bc14b36395ae84eb73a120b2befc
2013-04-02 08:39:18 -07:00
Lorenzo Colitti
9ef66e842f am 309e107f: Merge "Update getaddrinfo to RFC6724" into jb-mr2-dev
* commit '309e107f01e13bbe90ba31f2eee5d526ff676222':
  Update getaddrinfo to RFC6724
2013-04-02 08:24:30 -07:00
Christopher Ferris
50bc9395e4 Merge "Update to latest cortexa15 memcpy code." 2013-04-02 02:04:47 +00:00
Elliott Hughes
7506673f63 am 8dd195c5: am 7a29f404: Merge "Update getaddrinfo to RFC6724"
* commit '8dd195c509eed45d1e4b5ab91ddc2ef56fcb0737':
  Update getaddrinfo to RFC6724
2013-04-01 18:21:58 -07:00
Elliott Hughes
8dd195c509 am 7a29f404: Merge "Update getaddrinfo to RFC6724"
* commit '7a29f404e11d3346e79154b8e8d72a3215febced':
  Update getaddrinfo to RFC6724
2013-04-01 18:20:10 -07:00
Elliott Hughes
7a29f404e1 Merge "Update getaddrinfo to RFC6724" 2013-04-02 01:05:23 +00:00
Lorenzo Colitti
378b0e1ea2 Update getaddrinfo to RFC6724
Currently, our getaddrinfo implementation does not conform to
any IETF standard. It follows draft-ietf-6man-rfc3484-revise-01,
but that draft has expired. Update the policy table to RFC6724.

(cherry-pick of e919b116d35aa7deb24ddece69c491e24c3b0d6f.)

Bug: 8276725
Change-Id: I2d17122defd966ac6c2c13d04887fb110f2598a0
2013-04-01 18:04:25 -07:00
Lorenzo Colitti
309e107f01 Merge "Update getaddrinfo to RFC6724" into jb-mr2-dev 2013-04-02 00:49:29 +00:00
The Android Automerger
1ec2cf5ba8 merge in master-release history after reset to master 2013-04-01 11:31:26 -07:00
The Android Automerger
a66f6570c1 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-04-01 05:55:14 -07:00
Lorenzo Colitti
e919b116d3 Update getaddrinfo to RFC6724
Currently, our getaddrinfo implementation does not conform to
any IETF standard. It follows draft-ietf-6man-rfc3484-revise-01,
but that draft has expired. Update the policy table to RFC6724.

Bug: 8276725
Change-Id: I03c63abfcad9b2f3a3bab2718bd2fc6440531843
2013-04-01 19:15:43 +09:00
Christopher Ferris
21ede92d79 Update to latest cortexa15 memcpy code.
This uses the new code original submitted as memcpy.a15.S as
the base. However, the old code handled unaligned src/dst better
so that was spliced in. I optimized the original unaligned code by
removing a few unnecessary instructions. I optimized the a15 code by
rewriting the pre and post code. I also modified the main loop to add
a pld so that larger copies would not stall waiting for memory.

Test cases for the new memcpy:

- Copy all sized values from 0 to 1024 bytes, using whatever alignment
  is returned by malloc.
For each alignment case described below, the test copied from 0 to 128
bytes.
- Src and dst pointers are both aligned to the same value, starting
  at one going through every power of two up to and including 128.
- Src aligned to double word boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to double word boundary.
- Src aligned to 16 bit boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to 16 byte boundary.
- Src aligned to word boundary, dst aligned to 1 byte from a word
  boundary.
- Src aligned to word boundary, dst aligned to 2 bytes from a word
  boundary.
- Src aligned to word boundary, dst aligned to 3 bytes from a word
  boundary.
- Src aligned to 1 byte from a word boundary, dst aligned to a word
  boundary.
- Src aligned to 2 bytes from a word boundary, dst aligned to a word
  boundary.
- Src aligned to 3 bytes from a word boundary, dst aligned to a word
  boundary.

Cases to verify the unaligned source code properly aligns to a 16 bit
boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  4 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  8 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  12 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  16 + 128 bit boundary.

In all cases, a two byte fencepost was placed at the end of the
destination to verify that only the requested number of bytes were copied.

Bug: 8005082
Change-Id: I700b2fab81941959d301ab1934c18fbd8ee3eee4
2013-03-30 14:32:49 -07:00
Elliott Hughes
c099b270c6 am e2bce303: am 96449b3d: Extra logging in pthread_create.
* commit 'e2bce30360a46fa3a235d1e9874d35891673826f':
  Extra logging in pthread_create.
2013-03-29 17:58:38 -07:00
Nick Kralevich
62bb090f8e resolved conflicts for merge of 5b661481 to master
Change-Id: Ifc68a87a95187b61f7f42a0217af43e14db6d4f8
2013-03-29 17:36:52 -07:00
Elliott Hughes
e2bce30360 am 96449b3d: Extra logging in pthread_create.
* commit '96449b3dc16d64ea91df83c9d7942f3e22e76b52':
  Extra logging in pthread_create.
2013-03-29 17:00:51 -07:00
Elliott Hughes
96449b3dc1 Extra logging in pthread_create.
pthread_create returns EAGAIN when it can't allocate a pthread_internal_t,
when it can't allocate a stack for the new thread, or when clone(2) fails
because there are too many threads. It's useful to be able to know why your
pthread_create just failed, so add some logging.

Bug: 8470684

(cherry picked from commit cfa089df23)

Change-Id: Ibfc98a84c1817a931f9ae4c2b88762f0edfb6b79
2013-03-29 16:58:33 -07:00
Elliott Hughes
113054c4eb am e59ecd32: am 6bb17dfa: Merge "Extra logging in pthread_create."
* commit 'e59ecd32798b08e59b4813b3ed8859e5dac5297c':
  Extra logging in pthread_create.
2013-03-29 16:58:02 -07:00
Nick Kralevich
5b661481a8 am b24b6e14: Merge "resolv_cache: hide some libc private functions" into jb-mr2-dev
* commit 'b24b6e1419382146f85571cdda27d48fb348141d':
  resolv_cache: hide some libc private functions
2013-03-29 16:55:20 -07:00
Nick Kralevich
b24b6e1419 Merge "resolv_cache: hide some libc private functions" into jb-mr2-dev 2013-03-29 23:53:40 +00:00
Elliott Hughes
e59ecd3279 am 6bb17dfa: Merge "Extra logging in pthread_create."
* commit '6bb17dfad36edda68da46c2bf68c4297a160ab8a':
  Extra logging in pthread_create.
2013-03-29 16:53:02 -07:00
Elliott Hughes
6bb17dfad3 Merge "Extra logging in pthread_create." 2013-03-29 23:47:24 +00:00
Elliott Hughes
cfa089df23 Extra logging in pthread_create.
pthread_create returns EAGAIN when it can't allocate a pthread_internal_t,
when it can't allocate a stack for the new thread, or when clone(2) fails
because there are too many threads. It's useful to be able to know why your
pthread_create just failed, so add some logging.

Bug: 8470684
Change-Id: I1bb4497d4f7528eacce0db35c2014771cba64569
2013-03-29 16:35:00 -07:00
Nick Kralevich
c01274c4aa resolv_cache: hide some libc private functions
Don't export unnecessary symbols to third party apps.

Bug: 8401049
Change-Id: Ide5abd6ed13e756a85bd1277d93da74d1419addb
2013-03-29 13:56:05 -07:00
The Android Open Source Project
2903a0bac3 am f9e4a6e9: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit 'f9e4a6e93b2d0ca6f2fd01547a04b63a94257a29':
2013-03-29 09:50:35 -07:00
The Android Open Source Project
f9e4a6e93b Reconcile with jb-mr2-release - do not merge
Change-Id: Ie2c8eed6e2ee90bc1d1a59184a503f9dd0dcdc80
2013-03-29 09:48:32 -07:00
The Android Automerger
0f7607f372 merge in master-release history after reset to master 2013-03-28 11:32:29 -07:00
Jean-Baptiste Queru
a3ce0bb1ad am a3de6b47: am d02dd19d: am 267290b3: am 74b324ac: Merge "Update processed linux/fs.h header file"
* commit 'a3de6b47bf444c6efbf386e01e70bc61f9c559de':
  Update processed linux/fs.h header file
2013-03-28 09:02:06 -07:00
Jean-Baptiste Queru
a3de6b47bf am d02dd19d: am 267290b3: am 74b324ac: Merge "Update processed linux/fs.h header file"
* commit 'd02dd19d51fd78c4cfea8be4eaba3df1668910c4':
  Update processed linux/fs.h header file
2013-03-28 09:01:01 -07:00
Jean-Baptiste Queru
d02dd19d51 am 267290b3: am 74b324ac: Merge "Update processed linux/fs.h header file"
* commit '267290b340bee74e5ebbbc60f8c5a9b2a5453957':
  Update processed linux/fs.h header file
2013-03-28 08:59:25 -07:00
Jean-Baptiste Queru
267290b340 am 74b324ac: Merge "Update processed linux/fs.h header file"
* commit '74b324ac09db35d29d16695e9b9c1f0601599812':
  Update processed linux/fs.h header file
2013-03-28 08:57:23 -07:00
Jean-Baptiste Queru
74b324ac09 Merge "Update processed linux/fs.h header file" 2013-03-28 15:49:04 +00:00
The Android Automerger
8398f82ddd merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-28 05:55:13 -07:00
Ken Sumrall
ce636ca088 Update processed linux/fs.h header file
Need to get the defintion of the FITRIM ioctl().  Also need
to update the blk_types.h header file as fs.h includes it.

Change-Id: I617622b620925942dc5aead9e49f8e17d17e5d74
2013-03-27 16:05:22 -07:00
Ken Sumrall
6ed55e06fd am 024f418a: am 887049e4: Merge "Update processed linux/fs.h header file" into jb-mr2-dev
* commit '024f418af284d79e2d307489f33d67b6c564a112':
  Update processed linux/fs.h header file
2013-03-27 14:18:37 -07:00
Ken Sumrall
024f418af2 am 887049e4: Merge "Update processed linux/fs.h header file" into jb-mr2-dev
* commit '887049e46bdd5c14cc00837f959a0195780118a9':
  Update processed linux/fs.h header file
2013-03-27 14:16:47 -07:00
Ken Sumrall
887049e46b Merge "Update processed linux/fs.h header file" into jb-mr2-dev 2013-03-27 21:15:29 +00:00
The Android Open Source Project
416d231f97 am fd59d4d3: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit 'fd59d4d3eaccb9b181f8a2b9c88ffe5060f1e528':
2013-03-26 12:17:40 -07:00
The Android Open Source Project
fd59d4d3ea Reconcile with jb-mr2-release - do not merge
Change-Id: Icad78517674982f0ed6f87a7cc72a4d5b74a519f
2013-03-26 10:49:00 -07:00
The Android Automerger
47a46646f0 merge in master-release history after reset to master 2013-03-26 07:49:18 -07:00
The Android Automerger
6147c2941e merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-26 05:55:11 -07:00
Elliott Hughes
d74b3bb1cb am c813182d: am da2c1586: am 8a6abe38: am bd014c2e: Merge "Remove some dead script code and fix a script comment."
* commit 'c813182d20fa853d944cb9b4dc5c3f1a4d1c7728':
  Remove some dead script code and fix a script comment.
2013-03-25 21:40:33 +00:00
Elliott Hughes
c813182d20 am da2c1586: am 8a6abe38: am bd014c2e: Merge "Remove some dead script code and fix a script comment."
* commit 'da2c158645e10671de990bb71b307d90035320a4':
  Remove some dead script code and fix a script comment.
2013-03-25 21:38:40 +00:00
Elliott Hughes
da2c158645 am 8a6abe38: am bd014c2e: Merge "Remove some dead script code and fix a script comment."
* commit '8a6abe380d2ba513bb714e54a74f4289089cbc18':
  Remove some dead script code and fix a script comment.
2013-03-25 14:36:24 -07:00
Elliott Hughes
8a6abe380d am bd014c2e: Merge "Remove some dead script code and fix a script comment."
* commit 'bd014c2e4246d6e64a6523c73b9a72f379255526':
  Remove some dead script code and fix a script comment.
2013-03-25 14:34:06 -07:00
Elliott Hughes
bd014c2e42 Merge "Remove some dead script code and fix a script comment." 2013-03-25 21:20:22 +00:00
Elliott Hughes
69684aa312 am 94510371: am 999dff0e: am a850ad4c: am e51d75a9: Merge "Clarify the dlmalloc USAGE_ERROR."
* commit '94510371951bc28f97cdb55df74be26fcebdc1e4':
  Clarify the dlmalloc USAGE_ERROR.
2013-03-25 21:12:59 +00:00
Elliott Hughes
9451037195 am 999dff0e: am a850ad4c: am e51d75a9: Merge "Clarify the dlmalloc USAGE_ERROR."
* commit '999dff0ef3d92c1e84d12d3b8d8324c5ef441b85':
  Clarify the dlmalloc USAGE_ERROR.
2013-03-25 21:10:49 +00:00
Elliott Hughes
e6ddfc55c8 Remove some dead script code and fix a script comment.
Change-Id: I91ca466d1b6f8a39da50ce61acebc268d0daab3a
2013-03-25 14:09:52 -07:00
Elliott Hughes
999dff0ef3 am a850ad4c: am e51d75a9: Merge "Clarify the dlmalloc USAGE_ERROR."
* commit 'a850ad4cf44e998e24f43df723b6928e42f8294d':
  Clarify the dlmalloc USAGE_ERROR.
2013-03-25 14:05:54 -07:00
Elliott Hughes
a850ad4cf4 am e51d75a9: Merge "Clarify the dlmalloc USAGE_ERROR."
* commit 'e51d75a9acef86008f4d64cf482bbc65e24dc66c':
  Clarify the dlmalloc USAGE_ERROR.
2013-03-25 14:03:38 -07:00
Elliott Hughes
e51d75a9ac Merge "Clarify the dlmalloc USAGE_ERROR." 2013-03-25 20:54:14 +00:00
Elliott Hughes
65a8eb606f Clarify the dlmalloc USAGE_ERROR.
Bug: 8468088
Change-Id: I1ff6d51ec17fc74ef56229aa76d2986cbd662874
2013-03-25 13:48:41 -07:00
Dima Zavin
e24ec2ad4c am bb06498d: am 369f9234: Merge "libc/arm: add cortex-a7 cpu variant" into jb-mr2-dev
* commit 'bb06498d89dd002a17bad6666276580c94da1749':
  libc/arm: add cortex-a7 cpu variant
2013-03-25 19:44:54 +00:00
Dima Zavin
bb06498d89 am 369f9234: Merge "libc/arm: add cortex-a7 cpu variant" into jb-mr2-dev
* commit '369f92349fc784f6c14ad30f5806f708a8f2c7f7':
  libc/arm: add cortex-a7 cpu variant
2013-03-25 19:43:41 +00:00
Dima Zavin
369f92349f Merge "libc/arm: add cortex-a7 cpu variant" into jb-mr2-dev 2013-03-25 19:42:28 +00:00
Elliott Hughes
7a7d39c3f0 am c538edc1: am c82b339a: am 3c1504d9: am 48f25cef: Merge "Stop generating <sys/linux-syscalls.h>."
* commit 'c538edc1e85b7df35852cf9fbc472b29683fc4a3':
  Stop generating <sys/linux-syscalls.h>.
2013-03-25 17:31:28 +00:00
Elliott Hughes
263be8b1a0 am 053ceea1: am 9386a33e: am 93f3811b: am a4075118: Merge "Unhide __set_errno for backwards compatibility."
* commit '053ceea1172a399b9fddf0ab010cff535c65be0e':
  Unhide __set_errno for backwards compatibility.
2013-03-25 17:31:27 +00:00
Elliott Hughes
c538edc1e8 am c82b339a: am 3c1504d9: am 48f25cef: Merge "Stop generating <sys/linux-syscalls.h>."
* commit 'c82b339a7da4dc36e644f5037c3868155fe454e4':
  Stop generating <sys/linux-syscalls.h>.
2013-03-25 17:29:11 +00:00
Elliott Hughes
053ceea117 am 9386a33e: am 93f3811b: am a4075118: Merge "Unhide __set_errno for backwards compatibility."
* commit '9386a33ea005fc008ff7ce0558d24e5ac68a6430':
  Unhide __set_errno for backwards compatibility.
2013-03-25 17:29:10 +00:00
Elliott Hughes
c82b339a7d am 3c1504d9: am 48f25cef: Merge "Stop generating <sys/linux-syscalls.h>."
* commit '3c1504d9d7d529b8281a447dc69af3ecf6b5ec83':
  Stop generating <sys/linux-syscalls.h>.
2013-03-25 10:24:42 -07:00
Elliott Hughes
9386a33ea0 am 93f3811b: am a4075118: Merge "Unhide __set_errno for backwards compatibility."
* commit '93f3811b744b2100d0f259916876965c242cd3d9':
  Unhide __set_errno for backwards compatibility.
2013-03-25 10:24:42 -07:00
Elliott Hughes
3c1504d9d7 am 48f25cef: Merge "Stop generating <sys/linux-syscalls.h>."
* commit '48f25cef45f8f68567d528a5d833ed45cb760bec':
  Stop generating <sys/linux-syscalls.h>.
2013-03-25 10:22:43 -07:00
Elliott Hughes
93f3811b74 am a4075118: Merge "Unhide __set_errno for backwards compatibility."
* commit 'a40751185f3a7245f73afb45382c23f71dbbcfc3':
  Unhide __set_errno for backwards compatibility.
2013-03-25 10:22:43 -07:00
Elliott Hughes
48f25cef45 Merge "Stop generating <sys/linux-syscalls.h>." 2013-03-25 17:13:26 +00:00
Elliott Hughes
a40751185f Merge "Unhide __set_errno for backwards compatibility." 2013-03-25 17:12:19 +00:00
The Android Automerger
a500fdb18e merge in master-release history after reset to master 2013-03-25 07:49:24 -07:00
The Android Automerger
af66ca6b19 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-25 05:55:24 -07:00
Dima Zavin
0c973d7049 libc/arm: add cortex-a7 cpu variant
Change-Id: I541d665805ea69ca96bb6a5f4d50e56287f8c08c
Signed-off-by: Dima Zavin <dima@android.com>
2013-03-23 01:38:22 -07:00
Elliott Hughes
3198850ea1 Unhide __set_errno for backwards compatibility.
This was in <errno.h>, and people called it :-(

Change-Id: I038490be77eb9372b3f31305ec580fa7b09c983e
2013-03-22 19:12:52 -07:00
Elliott Hughes
1b91c6c11f Stop generating <sys/linux-syscalls.h>.
The <asm/unistd.h> files contain the canonical data, and
<sys/glibc-syscalls.h> contain new glibc-compatible names,
and if you #include the standard <sys/syscall.h> you get
both sets of names.

Change-Id: I9919c080931c0ba1660f5e37c6a6265ea716d603
2013-03-22 18:56:24 -07:00
Elliott Hughes
4584721b5a am 9792b2d1: am ba61bb55: am a3fe475c: am c019345a: Merge "Use the correct names for the __ARM_NR_* syscalls."
* commit '9792b2d16062c3fa334a47501a1cde9bfbedb5c2':
  Use the correct names for the __ARM_NR_* syscalls.
2013-03-22 22:13:44 +00:00
Elliott Hughes
9792b2d160 am ba61bb55: am a3fe475c: am c019345a: Merge "Use the correct names for the __ARM_NR_* syscalls."
* commit 'ba61bb55c4f3d468dd93bedc3deb24a0ef28a948':
  Use the correct names for the __ARM_NR_* syscalls.
2013-03-22 22:12:16 +00:00
Elliott Hughes
ba61bb55c4 am a3fe475c: am c019345a: Merge "Use the correct names for the __ARM_NR_* syscalls."
* commit 'a3fe475c9ff444f45eb3c4dd7fd462326dfdb13d':
  Use the correct names for the __ARM_NR_* syscalls.
2013-03-22 15:09:13 -07:00
Elliott Hughes
a3fe475c9f am c019345a: Merge "Use the correct names for the __ARM_NR_* syscalls."
* commit 'c019345a3a0f3ee8561e595917b75d6419ee4cc8':
  Use the correct names for the __ARM_NR_* syscalls.
2013-03-22 15:07:06 -07:00
Elliott Hughes
c019345a3a Merge "Use the correct names for the __ARM_NR_* syscalls." 2013-03-22 21:50:49 +00:00
Elliott Hughes
cda62094ef Use the correct names for the __ARM_NR_* syscalls.
This lets us move all the ARM syscall stubs over to the kernel <asm/unistd.h>.
Our generated <sys/linux-syscalls.h> is now unused, but I'll remove that in a
later change.

Change-Id: Ie5ff2cc4abce1938576af7cbaef615a79c7f310d
2013-03-22 13:53:43 -07:00
Elliott Hughes
cf3fc45376 am dce1b3e2: am e0e5b2f6: am 65163750: am c37dd599: Merge "Fix builds where _FORTIFY_SOURCE is off."
* commit 'dce1b3e26a9f85fcc9a768cc69919299fcb2b5a5':
  Fix builds where _FORTIFY_SOURCE is off.
2013-03-22 18:26:45 +00:00
Elliott Hughes
dce1b3e26a am e0e5b2f6: am 65163750: am c37dd599: Merge "Fix builds where _FORTIFY_SOURCE is off."
* commit 'e0e5b2f6e731c639107e29abec17db2e6eb498e8':
  Fix builds where _FORTIFY_SOURCE is off.
2013-03-22 18:24:53 +00:00
Elliott Hughes
e0e5b2f6e7 am 65163750: am c37dd599: Merge "Fix builds where _FORTIFY_SOURCE is off."
* commit '65163750b11c814d6a75940ab1ede1e907b14d81':
  Fix builds where _FORTIFY_SOURCE is off.
2013-03-22 11:20:22 -07:00
Elliott Hughes
65163750b1 am c37dd599: Merge "Fix builds where _FORTIFY_SOURCE is off."
* commit 'c37dd599561ac07a895bc435d818f000054a498d':
  Fix builds where _FORTIFY_SOURCE is off.
2013-03-22 11:18:26 -07:00
Elliott Hughes
749a9e022c am fbb41988: am b826ebf4: am 85598626: am 34895c1b: Merge "Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'fbb4198857374b816a6c444a52cb3209101e02c9':
  Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 18:17:51 +00:00
Elliott Hughes
fbb4198857 am b826ebf4: am 85598626: am 34895c1b: Merge "Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'b826ebf41e701d0d73be2897cecd560606193bd2':
  Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 18:15:47 +00:00
Elliott Hughes
b826ebf41e am 85598626: am 34895c1b: Merge "Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit '85598626f4ca7914d996371ce0471ab154aa7585':
  Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 11:11:34 -07:00
Elliott Hughes
c37dd59956 Merge "Fix builds where _FORTIFY_SOURCE is off." 2013-03-22 18:01:50 +00:00
Elliott Hughes
85598626f4 am 34895c1b: Merge "Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit '34895c1bdfa5df48ee9a7b4368b6def403f24cf1':
  Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 10:59:57 -07:00
Elliott Hughes
890c8ed6ef Fix builds where _FORTIFY_SOURCE is off.
Also add a more intention-revealing guard so we don't have loads of
places checking whether our inlining macro is defined.

Change-Id: I168860cedcfc798b07a5145bc48a125700265e47
2013-03-22 10:58:55 -07:00
Elliott Hughes
34895c1bdf Merge "Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>." 2013-03-22 17:51:43 +00:00
Elliott Hughes
74c7d3ff03 am f30ff61e: am b44f9600: am b80a05fa: am 5c5f303e: Merge "Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'f30ff61ef61f3d8b73257e89e4635fc1436f4bbc':
  Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 16:47:49 +00:00
Elliott Hughes
90763e0aee am f0fc7b9b: am a0dcecc5: am bc0d7f73: am e7cb795c: Merge "Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'f0fc7b9bf93029e2e0e2a21ac037d14c7f4db7a2':
  Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 16:47:48 +00:00
Elliott Hughes
f30ff61ef6 am b44f9600: am b80a05fa: am 5c5f303e: Merge "Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'b44f9600a38988749d9f893fc5d2e3b3a07e6938':
  Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 16:45:18 +00:00
Elliott Hughes
f0fc7b9bf9 am a0dcecc5: am bc0d7f73: am e7cb795c: Merge "Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'a0dcecc53e2f45939fdcb0f1ec1d592d91cf41c7':
  Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 16:45:18 +00:00
Elliott Hughes
b44f9600a3 am b80a05fa: am 5c5f303e: Merge "Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'b80a05fa678b287f46dc596353d285a9a7d09fbc':
  Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 09:43:28 -07:00
Elliott Hughes
a0dcecc53e am bc0d7f73: am e7cb795c: Merge "Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'bc0d7f736c2c66868844f2b5c9e6507d3e7a7982':
  Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 09:43:28 -07:00
Elliott Hughes
b80a05fa67 am 5c5f303e: Merge "Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit '5c5f303e4c661a71ae8e4c7fd99fc7674360321e':
  Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 09:41:46 -07:00
Elliott Hughes
bc0d7f736c am e7cb795c: Merge "Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>."
* commit 'e7cb795cb639ef4e04b0417ebf4b16b12ea5dc4e':
  Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
2013-03-22 09:41:46 -07:00
Elliott Hughes
5c5f303e4c Merge "Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>." 2013-03-22 16:30:56 +00:00
Elliott Hughes
e7cb795cb6 Merge "Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>." 2013-03-22 16:30:37 +00:00
The Android Automerger
847a62270f merge in master-release history after reset to master 2013-03-22 07:49:16 -07:00
Ken Sumrall
d74a0ffba8 Update processed linux/fs.h header file
Need to get the defintion of the FITRIM ioctl().  Also need
to update the blk_types.h header file as fs.h includes it.

Change-Id: I617622b620925942dc5aead9e49f8e17d17e5d74
2013-03-22 02:12:46 -07:00
Elliott Hughes
8794ece296 Replace unnecessary ARM uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
For some reason, socketcalls.c was only being compiled for ARM, where
it makes no sense. For x86 we generate stubs for the socket functions
that use __NR_socketcall directly.

Change-Id: I84181e6183fae2314ae3ed862276eba82ad21e8e
2013-03-21 23:07:11 -07:00
Elliott Hughes
1d509cc043 am 472d7115: am ddda044a: am 5686bb30: am 3323628d: Merge "The SYS_ constants should cover all __NR_ values."
* commit '472d7115f1ec8968b645d72d18222687d39f189e':
  The SYS_ constants should cover all __NR_ values.
2013-03-22 05:57:05 +00:00
Elliott Hughes
472d7115f1 am ddda044a: am 5686bb30: am 3323628d: Merge "The SYS_ constants should cover all __NR_ values."
* commit 'ddda044a81b6be2ccdf351ad5c9a2b9800a60f5f':
  The SYS_ constants should cover all __NR_ values.
2013-03-22 05:55:47 +00:00
Elliott Hughes
ddda044a81 am 5686bb30: am 3323628d: Merge "The SYS_ constants should cover all __NR_ values."
* commit '5686bb300304f5de0597f356c6da72b8a090a647':
  The SYS_ constants should cover all __NR_ values.
2013-03-21 22:54:49 -07:00
Elliott Hughes
5686bb3003 am 3323628d: Merge "The SYS_ constants should cover all __NR_ values."
* commit '3323628d635d3973965ee458c1fee7d8ab45136f':
  The SYS_ constants should cover all __NR_ values.
2013-03-21 22:53:44 -07:00
Elliott Hughes
56d161bb62 Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
Change-Id: I193a35f9790b82c83fd3b5672e24ac1b2034d0b0
2013-03-21 22:52:25 -07:00
Elliott Hughes
4cdde5f123 Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>.
Change-Id: I9d016ee8e8329cccf244d27c336d9524348af996
2013-03-21 22:48:18 -07:00
Elliott Hughes
3323628d63 Merge "The SYS_ constants should cover all __NR_ values." 2013-03-22 05:39:06 +00:00
Elliott Hughes
5c2772f59d The SYS_ constants should cover all __NR_ values.
<sys/linux-syscalls.h> only contains constants for the syscalls
we're generating stubs for. We want all the syscalls available
on the architecture in question.

Keep using <sys/linux-syscalls.h> on ARM for now because the
__NR_ARM_set_tls and __NR_ARM_cacheflush values aren't in <asm/unistd.h>.

Change-Id: I66683950d87d9b18d6107d0acc0ed238a4496f44
2013-03-21 22:26:20 -07:00
Elliott Hughes
731381ad5f am dfde829f: am c8ded7c6: am a3167257: am babb72dc: Merge "Fix pthread_setname_np\'s behavior on invalid pthread_ts."
* commit 'dfde829fc1c97fe3fbdaf244d2444562b7c2fbfe':
  Fix pthread_setname_np's behavior on invalid pthread_ts.
2013-03-22 05:25:17 +00:00
Elliott Hughes
dfde829fc1 am c8ded7c6: am a3167257: am babb72dc: Merge "Fix pthread_setname_np\'s behavior on invalid pthread_ts."
* commit 'c8ded7c6b1b95ca530383b9698719892d13a4f9e':
  Fix pthread_setname_np's behavior on invalid pthread_ts.
2013-03-22 05:24:12 +00:00
Elliott Hughes
c8ded7c6b1 am a3167257: am babb72dc: Merge "Fix pthread_setname_np\'s behavior on invalid pthread_ts."
* commit 'a316725740ac123de65e225f5bfbf99450f66e6b':
  Fix pthread_setname_np's behavior on invalid pthread_ts.
2013-03-21 22:22:49 -07:00
Elliott Hughes
a316725740 am babb72dc: Merge "Fix pthread_setname_np\'s behavior on invalid pthread_ts."
* commit 'babb72dc292a567674f6d7d2ccf7f63edaf77b80':
  Fix pthread_setname_np's behavior on invalid pthread_ts.
2013-03-21 22:20:53 -07:00
Elliott Hughes
babb72dc29 Merge "Fix pthread_setname_np's behavior on invalid pthread_ts." 2013-03-22 05:11:35 +00:00
Elliott Hughes
bd43b613b8 am 3a6178f8: am 1e40ace4: am a596aa6a: am 26c815c4: Merge "Drop magic number in strrchr and strchr"
* commit '3a6178f8b9498ece5383fac9feb692e8ed2d4ce0':
  Drop magic number in strrchr and strchr
2013-03-22 03:03:15 +00:00
Elliott Hughes
06a06d5091 am 71afd315: am 17a0d191: am 01c0e19e: am 612333f6: Merge "Don\'t #define SYS_ constants unless they make sense for the current architecture."
* commit '71afd3153544a2795fcb74c86fd895df59aa5feb':
  Don't #define SYS_ constants unless they make sense for the current architecture.
2013-03-22 03:03:15 +00:00
Elliott Hughes
a41ba2f0bf Fix pthread_setname_np's behavior on invalid pthread_ts.
Change-Id: I0a154beaab4d164ac812f2564d12e4d79b80a8e8
2013-03-21 20:02:35 -07:00
Elliott Hughes
3a6178f8b9 am 1e40ace4: am a596aa6a: am 26c815c4: Merge "Drop magic number in strrchr and strchr"
* commit '1e40ace49e25ee4c469ed4613fe09656d3c0a5d7':
  Drop magic number in strrchr and strchr
2013-03-22 03:00:36 +00:00
Elliott Hughes
71afd31535 am 17a0d191: am 01c0e19e: am 612333f6: Merge "Don\'t #define SYS_ constants unless they make sense for the current architecture."
* commit '17a0d1915f871ad67608a582a4fb3352000cf719':
  Don't #define SYS_ constants unless they make sense for the current architecture.
2013-03-22 03:00:35 +00:00
Elliott Hughes
1e40ace49e am a596aa6a: am 26c815c4: Merge "Drop magic number in strrchr and strchr"
* commit 'a596aa6abfdd8ecdb4bcdd9bcad24a19adcf7525':
  Drop magic number in strrchr and strchr
2013-03-21 19:58:23 -07:00
Elliott Hughes
17a0d1915f am 01c0e19e: am 612333f6: Merge "Don\'t #define SYS_ constants unless they make sense for the current architecture."
* commit '01c0e19e426df5620c5ca822ab546907dbf1fa7d':
  Don't #define SYS_ constants unless they make sense for the current architecture.
2013-03-21 19:58:22 -07:00
Elliott Hughes
a596aa6abf am 26c815c4: Merge "Drop magic number in strrchr and strchr"
* commit '26c815c489197259e3692d4a1e35463989f7c7a3':
  Drop magic number in strrchr and strchr
2013-03-21 19:56:39 -07:00
Elliott Hughes
01c0e19e42 am 612333f6: Merge "Don\'t #define SYS_ constants unless they make sense for the current architecture."
* commit '612333f671a59d98fad6f594f5bf657dbd6c9c4d':
  Don't #define SYS_ constants unless they make sense for the current architecture.
2013-03-21 19:56:38 -07:00
Elliott Hughes
26c815c489 Merge "Drop magic number in strrchr and strchr" 2013-03-22 02:48:32 +00:00
Elliott Hughes
612333f671 Merge "Don't #define SYS_ constants unless they make sense for the current architecture." 2013-03-22 02:46:22 +00:00
Elliott Hughes
9724ce3a09 Don't #define SYS_ constants unless they make sense for the current architecture.
Fixes the MIPS and x86 builds. strace tests whether syscalls
are supported using #ifdef of the appropriate SYS_ constant.

Change-Id: I90be118dc42abfdaf5b0f9b1e676e8601f55106e
2013-03-21 19:44:36 -07:00
Elliott Hughes
2810ec5464 am 5bed5501: am 3077d883: am c48968d2: am 4453c51c: Merge "Drop unnecessary execution permission for .cpp/.c/.h"
* commit '5bed5501d7048acc77f5365e87fd8487b21ef1f6':
  Drop unnecessary execution permission for .cpp/.c/.h
2013-03-22 02:43:23 +00:00
Elliott Hughes
5bed5501d7 am 3077d883: am c48968d2: am 4453c51c: Merge "Drop unnecessary execution permission for .cpp/.c/.h"
* commit '3077d88347f4b120ee93e73efdbfb017e0e968ec':
  Drop unnecessary execution permission for .cpp/.c/.h
2013-03-22 02:42:02 +00:00
Elliott Hughes
3077d88347 am c48968d2: am 4453c51c: Merge "Drop unnecessary execution permission for .cpp/.c/.h"
* commit 'c48968d268820ee64986f738e227910b29290eab':
  Drop unnecessary execution permission for .cpp/.c/.h
2013-03-21 19:40:15 -07:00
Elliott Hughes
c48968d268 am 4453c51c: Merge "Drop unnecessary execution permission for .cpp/.c/.h"
* commit '4453c51c8269457b337578f809670d0fdb755132':
  Drop unnecessary execution permission for .cpp/.c/.h
2013-03-21 19:38:53 -07:00
Elliott Hughes
4453c51c82 Merge "Drop unnecessary execution permission for .cpp/.c/.h" 2013-03-22 02:30:28 +00:00
Kito Cheng
8f7120bbac Drop unnecessary execution permission for .cpp/.c/.h
Change-Id: I9ac2b9d8f6bdb4fab8962210c5ec8f9c3e8c0ebf
2013-03-22 10:28:15 +08:00
Kito Cheng
a6cc67c9b5 Drop magic number in strrchr and strchr
Change-Id: Ic7391be8575eaaac76914dab62bc41c9773d703d
2013-03-22 10:18:09 +08:00
Elliott Hughes
b11037a42a am 455637f2: am 5c9a25cc: am f977d2dc: am 800ad824: Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants."
* commit '455637f25180709f7baf261715873f4a0109583c':
  Provide glibc-compatible SYS_* aliases for the __NR_* constants.
2013-03-22 01:55:26 +00:00
Elliott Hughes
455637f251 am 5c9a25cc: am f977d2dc: am 800ad824: Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants."
* commit '5c9a25cc2369846f7cf7f4fe1bdb32cf3dc8a469':
  Provide glibc-compatible SYS_* aliases for the __NR_* constants.
2013-03-22 01:54:20 +00:00
Elliott Hughes
5c9a25cc23 am f977d2dc: am 800ad824: Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants."
* commit 'f977d2dc1dce28a517329e8b4990ebee696faec1':
  Provide glibc-compatible SYS_* aliases for the __NR_* constants.
2013-03-21 18:51:51 -07:00
Elliott Hughes
f977d2dc1d am 800ad824: Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants."
* commit '800ad8249a398e94d039b6f6597e2a51558e41dd':
  Provide glibc-compatible SYS_* aliases for the __NR_* constants.
2013-03-21 18:49:24 -07:00
Elliott Hughes
800ad8249a Merge "Provide glibc-compatible SYS_* aliases for the __NR_* constants." 2013-03-22 01:41:57 +00:00
Elliott Hughes
8ecf225827 Provide glibc-compatible SYS_* aliases for the __NR_* constants.
This helps us remove another external/strace bionic hack.

Change-Id: I3e82c0d2fd27e479be98f096e05b666fd16f8eb3
2013-03-21 18:06:55 -07:00
Elliott Hughes
a2e42c3798 am 6d460efe: am c9edc079: am 39e2a408: am 6eb978c9: Merge "Expose wait4 as wait4 rather than __wait4."
* commit '6d460efed94e3d5825b5c842c112aa6b26357d93':
  Expose wait4 as wait4 rather than __wait4.
2013-03-21 23:25:38 +00:00
Elliott Hughes
6d460efed9 am c9edc079: am 39e2a408: am 6eb978c9: Merge "Expose wait4 as wait4 rather than __wait4."
* commit 'c9edc0797779187ad1b429e956820928051047ae':
  Expose wait4 as wait4 rather than __wait4.
2013-03-21 23:23:46 +00:00
Elliott Hughes
c9edc07977 am 39e2a408: am 6eb978c9: Merge "Expose wait4 as wait4 rather than __wait4."
* commit '39e2a408a64bd24fb0fe7f5eb444b55af1160480':
  Expose wait4 as wait4 rather than __wait4.
2013-03-21 16:19:29 -07:00
Elliott Hughes
39e2a408a6 am 6eb978c9: Merge "Expose wait4 as wait4 rather than __wait4."
* commit '6eb978c9bf02d2bcdece2826577cc65900030690':
  Expose wait4 as wait4 rather than __wait4.
2013-03-21 16:18:22 -07:00
Elliott Hughes
6eb978c9bf Merge "Expose wait4 as wait4 rather than __wait4." 2013-03-21 23:14:48 +00:00
Elliott Hughes
17a8b0db63 Expose wait4 as wait4 rather than __wait4.
This helps strace(1) compile with one fewer hack.

Change-Id: I5296d0cfec5546709cda990abd705ad33d7c4626
2013-03-21 16:14:06 -07:00
The Android Automerger
3e036b0c99 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-21 05:55:07 -07:00
Christopher Ferris
e269711a1b am 774266bf: am f46e1454: am 9088af19: am 86c31849: Merge "Create arch specific versions of strcmp."
* commit '774266bfa281880e16c2447555177c037575cdaf':
  Create arch specific versions of strcmp.
2013-03-20 22:40:13 +00:00
Christopher Ferris
774266bfa2 am f46e1454: am 9088af19: am 86c31849: Merge "Create arch specific versions of strcmp."
* commit 'f46e14544b446e6dbc241aabb8090cd8e62c158d':
  Create arch specific versions of strcmp.
2013-03-20 22:37:58 +00:00
Christopher Ferris
f46e14544b am 9088af19: am 86c31849: Merge "Create arch specific versions of strcmp."
* commit '9088af19b45d1b7339b982c92ef9113337f5d2c6':
  Create arch specific versions of strcmp.
2013-03-20 15:33:54 -07:00
Christopher Ferris
9088af19b4 am 86c31849: Merge "Create arch specific versions of strcmp."
* commit '86c318497270c80a3791b4cd9835367653636377':
  Create arch specific versions of strcmp.
2013-03-20 15:29:06 -07:00
Christopher Ferris
86c3184972 Merge "Create arch specific versions of strcmp." 2013-03-20 22:14:48 +00:00
Christopher Ferris
31dea25b8b Create arch specific versions of strcmp.
This uses the new strcmp.a15.S code as the basis for new versions
of strcmp.S.

The cortex-a15 code is the performance optimized version of strcmp.a15.S
taken with only the addition of a few pld instructions.
The cortex-a9 code is the same as the cortex-a15 code except that the
unaligned strcmp code was taken from the original strcmp.S.
The krait code is the same as the cortex-a15 code except that one path
in the unaligned strcmp code was taken from the original strcmp.S code
(the 2 byte overlap case).
The generic code is the original unmodified strmp.S from the bionic
subdirectory.

All three new versions underwent these test cases:

Strings the same, all same size:
- Both pointers double word aligned.
- One pointer double word aligned, one pointer word aligned.
- Both pointers word aligned.
- One pointer double word aligned, one pointer 1 off a word alignment.
- One pointer double word aligned, one pointer 2 off a word alignment.
- One pointer double word aligned, one pointer 3 off a word alignment.
- One pointer word aligned, one pointer 1 off a word alignment.
- One pointer word aligned, one pointer 2 off a word alignment.
- One pointer word aligned, one pointer 3 off a word alignment.
For all cases where it made sense, the two pointers were also tested
swapped.

Different strings, all same size:
- Single difference at double word boundary.
- Single difference at word boudary.
- Single difference at 1 off a word alignment.
- Single difference at 2 off a word alignment.
- Single difference at 3 off a word alignment.

Different sized strings, strings the same until the end:
- Shorter string ends on a double word boundary.
- Shorter string ends on word boundary.
- Shorter string ends at 1 off a word boundary.
- Shorter string ends at 2 off a word boundary.
- Shorter string ends at 3 off a word boundary.

For all different cases, run them through the same pointer alignment
cases when the strings are the same size.
For all cases the two pointers were also tested swapped.

Bug: 8005082

Merge from internal master.

(cherry-picked from commit a9a5870d16)

Change-Id: I4c2b98f8a50804fb98ab67f75e9d660f1315a144
2013-03-20 14:33:54 -07:00
The Android Open Source Project
fd56f2a3cc am bad0c4d8: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit 'bad0c4d8bb85d91affb7274022f671b40b0a9305':
  am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
2013-03-20 16:42:00 +00:00
The Android Open Source Project
bad0c4d8bb Reconcile with jb-mr2-release - do not merge
Change-Id: I9358f7d5fb867340fa18195fbbd6394c4ad53fce
2013-03-20 09:32:10 -07:00
The Android Automerger
1565771b2a merge in master-release history after reset to master 2013-03-18 07:49:11 -07:00
The Android Automerger
ed12f36a09 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-18 05:55:24 -07:00
Elliott Hughes
6380d21a05 am 92a197f3: am d7dc414a: am 987fc5a3: am adeec096: Merge "Hide various symbols that shouldn\'t be exposed."
* commit '92a197f3051c5befd5e40ec7f23c0643999da259':
  Hide various symbols that shouldn't be exposed.
2013-03-16 00:11:52 +00:00
Elliott Hughes
92a197f305 am d7dc414a: am 987fc5a3: am adeec096: Merge "Hide various symbols that shouldn\'t be exposed."
* commit 'd7dc414afd1847e76ae317880bcedc9678953f9e':
  Hide various symbols that shouldn't be exposed.
2013-03-16 00:10:24 +00:00
Elliott Hughes
d7dc414afd am 987fc5a3: am adeec096: Merge "Hide various symbols that shouldn\'t be exposed."
* commit '987fc5a3c4046831dc9e6c252e99a9c694bbd9ee':
  Hide various symbols that shouldn't be exposed.
2013-03-15 17:09:17 -07:00
Elliott Hughes
987fc5a3c4 am adeec096: Merge "Hide various symbols that shouldn\'t be exposed."
* commit 'adeec096292a3ad63767f13af04836249ecbc075':
  Hide various symbols that shouldn't be exposed.
2013-03-15 17:07:45 -07:00
Elliott Hughes
adeec09629 Merge "Hide various symbols that shouldn't be exposed." 2013-03-15 23:52:09 +00:00
Elliott Hughes
90f7546c68 am cf23cbb1: am 12ea8005: am 5f829205: am c1416647: Merge "Clean up internal libc logging."
* commit 'cf23cbb1d4826ac579fae28e4fe796a6e4e1ddfd':
  Clean up internal libc logging.
2013-03-15 23:43:01 +00:00
Elliott Hughes
cf23cbb1d4 am 12ea8005: am 5f829205: am c1416647: Merge "Clean up internal libc logging."
* commit '12ea8005665085ae82c1b233ae93d12855e04b8b':
  Clean up internal libc logging.
2013-03-15 23:40:15 +00:00
Elliott Hughes
12ea800566 am 5f829205: am c1416647: Merge "Clean up internal libc logging."
* commit '5f8292050fc07f4bf9e70f37a807ad028e3cfc87':
  Clean up internal libc logging.
2013-03-15 16:36:37 -07:00
Elliott Hughes
5f8292050f am c1416647: Merge "Clean up internal libc logging."
* commit 'c14166477e7fd22693eab194d37624c2f7506ce4':
  Clean up internal libc logging.
2013-03-15 16:34:05 -07:00
Elliott Hughes
ce532721aa Hide various symbols that shouldn't be exposed.
A mangled symbol in libc.so is a symbol that shouldn't be exported
by libc.so.

Change-Id: Id92d1e1968b3d11d111a5d9ef692adb1ac7694a1
2013-03-15 16:31:09 -07:00
Elliott Hughes
c14166477e Merge "Clean up internal libc logging." 2013-03-15 23:21:36 +00:00
Elliott Hughes
8f2a5a0b40 Clean up internal libc logging.
We only need one logging API, and I prefer the one that does no
allocation and is thus safe to use in any context.

Also use O_CLOEXEC when opening the /dev/log files.

Move everything logging-related into one header file.

Change-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58
2013-03-15 16:12:58 -07:00
Elliott Hughes
744df77d47 am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit '2e7b8d6399fdea6e43dd07f353346324d2bf4ec4':
  Don't search off the end of the index for bad Olson ids.
2013-03-15 12:56:32 -07:00
Elliott Hughes
cc71361ed6 am 270595f4: am e1b0db13: am 50d42294: am e23ed8c6: Merge "Remove useless workaround for HTC RIL bugs."
* commit '270595f4c976a86033ac099a283299c2ec53f24a':
  Remove useless workaround for HTC RIL bugs.
2013-03-15 18:49:50 +00:00
Elliott Hughes
270595f4c9 am e1b0db13: am 50d42294: am e23ed8c6: Merge "Remove useless workaround for HTC RIL bugs."
* commit 'e1b0db1392050900e1f38b16ec2c8e213308e267':
  Remove useless workaround for HTC RIL bugs.
2013-03-15 18:47:48 +00:00
Elliott Hughes
e1b0db1392 am 50d42294: am e23ed8c6: Merge "Remove useless workaround for HTC RIL bugs."
* commit '50d42294bdc983e05eca0fb0099bbb9f634fd5e3':
  Remove useless workaround for HTC RIL bugs.
2013-03-15 11:46:05 -07:00
Elliott Hughes
50d42294bd am e23ed8c6: Merge "Remove useless workaround for HTC RIL bugs."
* commit 'e23ed8c6441389a79c6504295184f7249e01a197':
  Remove useless workaround for HTC RIL bugs.
2013-03-15 11:43:50 -07:00
Elliott Hughes
e23ed8c644 Merge "Remove useless workaround for HTC RIL bugs." 2013-03-15 18:26:49 +00:00
Elliott Hughes
2eb44c5aa4 Remove useless workaround for HTC RIL bugs.
HTC's RIL uses the liblog logging, not ours.

Change-Id: I56f9304e833ccb329df4ee55042012d7ad5f73ed
2013-03-15 11:21:15 -07:00
The Android Automerger
9d6a2c28a5 merge in master-release history after reset to master 2013-03-15 07:49:25 -07:00
Elliott Hughes
045e01caed am c204b501: am 9ede4549: am f8d689bc: am 4d696eb4: Merge "Fix a bug in ZoneCompactor that meant the zonetab offset was wrong."
* commit 'c204b501f44d7b08e2be06693322d5426b3f85ef':
  Fix a bug in ZoneCompactor that meant the zonetab offset was wrong.
2013-03-15 00:45:09 +00:00
Elliott Hughes
c204b501f4 am 9ede4549: am f8d689bc: am 4d696eb4: Merge "Fix a bug in ZoneCompactor that meant the zonetab offset was wrong."
* commit '9ede4549fe083e54cdf2f34b177fc32777f61fac':
  Fix a bug in ZoneCompactor that meant the zonetab offset was wrong.
2013-03-15 00:44:05 +00:00
Elliott Hughes
9ede4549fe am f8d689bc: am 4d696eb4: Merge "Fix a bug in ZoneCompactor that meant the zonetab offset was wrong."
* commit 'f8d689bc56976f8bd37b306053154a0e9d17fb1d':
  Fix a bug in ZoneCompactor that meant the zonetab offset was wrong.
2013-03-14 17:42:42 -07:00
Elliott Hughes
f8d689bc56 am 4d696eb4: Merge "Fix a bug in ZoneCompactor that meant the zonetab offset was wrong."
* commit '4d696eb49d24590a6d6d25657b5bc0103e2d90ba':
  Fix a bug in ZoneCompactor that meant the zonetab offset was wrong.
2013-03-14 17:40:26 -07:00
Elliott Hughes
4d696eb49d Merge "Fix a bug in ZoneCompactor that meant the zonetab offset was wrong." 2013-03-15 00:30:48 +00:00
Elliott Hughes
af7f2f2fcf Fix a bug in ZoneCompactor that meant the zonetab offset was wrong.
Bug: 8391426
Change-Id: Ia4a8889b5a613aa96bb3fb5d89a921c913ff7626
2013-03-14 17:10:24 -07:00
Christopher Ferris
18fcfa79d3 am 8dcbb90d: am f85fc022: am f694ed1c: am d30b9f09: Merge "Remove unused arm defines."
* commit '8dcbb90dea22a876d9cc517f382bb82c98d87450':
  Remove unused arm defines.
2013-03-14 23:43:26 +00:00
Christopher Ferris
8dcbb90dea am f85fc022: am f694ed1c: am d30b9f09: Merge "Remove unused arm defines."
* commit 'f85fc022f5ad405a7e43ecb6f48bcc6e061e01b5':
  Remove unused arm defines.
2013-03-14 23:40:36 +00:00
Christopher Ferris
f85fc022f5 am f694ed1c: am d30b9f09: Merge "Remove unused arm defines."
* commit 'f694ed1cdbfd2d26cdc2a008b67bfd3451522c8f':
  Remove unused arm defines.
2013-03-14 16:36:45 -07:00
Christopher Ferris
f694ed1cdb am d30b9f09: Merge "Remove unused arm defines."
* commit 'd30b9f0912b4763f0d98bdee23064015223ec03f':
  Remove unused arm defines.
2013-03-14 16:32:21 -07:00
Christopher Ferris
d30b9f0912 Merge "Remove unused arm defines." 2013-03-14 23:23:42 +00:00
Elliott Hughes
4982e345cf am 2d48d0ea: am c9358706: am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit '2d48d0ea36395da9af4537195483b006900bf7bd':
  Don't search off the end of the index for bad Olson ids.
2013-03-14 22:35:28 +00:00
Elliott Hughes
2d48d0ea36 am c9358706: am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit 'c9358706c6f48eb27f785f3bf15b2ab0d50ff7bc':
  Don't search off the end of the index for bad Olson ids.
2013-03-14 22:33:35 +00:00
Christopher Ferris
306a353825 Remove unused arm defines.
The defines HAVE_32_BYTE_CACHE_LINES and ARCH_ARM_USE_NON_NEON_MEMCPY
are not used by any code. The previous memcpy code that used these
has been split into different architecture versions to avoid the need
for them.

Bug: 8005082

Merge from internal master.

(cherry-picked from commit 6e1a5cf31b)

Change-Id: Ib18fc3f4131b21cdbd19b9dde7697ac25d066fcf
2013-03-14 15:32:18 -07:00
Elliott Hughes
c9358706c6 am 2e7b8d63: am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit '2e7b8d6399fdea6e43dd07f353346324d2bf4ec4':
  Don't search off the end of the index for bad Olson ids.
2013-03-14 15:30:13 -07:00
Elliott Hughes
2e7b8d6399 am f861bc5c: Merge "Don\'t search off the end of the index for bad Olson ids."
* commit 'f861bc5cc3e17322e49f89deea61f278aaefbe76':
  Don't search off the end of the index for bad Olson ids.
2013-03-14 15:17:09 -07:00
Elliott Hughes
f861bc5cc3 Merge "Don't search off the end of the index for bad Olson ids." 2013-03-14 22:05:44 +00:00
Elliott Hughes
e0175ca7e4 Don't search off the end of the index for bad Olson ids.
In the old code, the index was a file to itself, so it made sense to
read until you hit the end of the file. In the new code, the index is
followed by hundreds of KiB of data, so we need to just search the
index.

Bug: 8368791
Change-Id: Icf5f8b5516cf3a93679fa849c9f6cd1cb100e0f1
2013-03-14 14:38:08 -07:00
Christopher Ferris
65461bbe25 Merge "Create arch specific versions of strcmp." 2013-03-14 21:18:20 +00:00
The Android Automerger
e450d655ba merge in master-release history after reset to master 2013-03-13 07:49:07 -07:00
The Android Automerger
45508566d1 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-13 05:55:08 -07:00
Elliott Hughes
a00988312b am 76ade2ed: am f557e90b: am 2f44c05b: am ec706c24: Merge "Use the kernel\'s MAX_ERRNO in the syscall stubs."
* commit '76ade2ed6077fec0a4978ef7e7e2a99578512c39':
  Use the kernel's MAX_ERRNO in the syscall stubs.
2013-03-13 01:00:12 +00:00
Elliott Hughes
76ade2ed60 am f557e90b: am 2f44c05b: am ec706c24: Merge "Use the kernel\'s MAX_ERRNO in the syscall stubs."
* commit 'f557e90b348d9a3294391076bcd6604a13c803b6':
  Use the kernel's MAX_ERRNO in the syscall stubs.
2013-03-13 00:58:27 +00:00
Elliott Hughes
f557e90b34 am 2f44c05b: am ec706c24: Merge "Use the kernel\'s MAX_ERRNO in the syscall stubs."
* commit '2f44c05bc54073aa6decfc5d933b7e77e7ce5768':
  Use the kernel's MAX_ERRNO in the syscall stubs.
2013-03-12 17:55:54 -07:00
Elliott Hughes
2f44c05bc5 am ec706c24: Merge "Use the kernel\'s MAX_ERRNO in the syscall stubs."
* commit 'ec706c24acb4d1db6a583a57b76adfb9250d39eb':
  Use the kernel's MAX_ERRNO in the syscall stubs.
2013-03-12 17:54:00 -07:00
Elliott Hughes
ec706c24ac Merge "Use the kernel's MAX_ERRNO in the syscall stubs." 2013-03-13 00:44:33 +00:00
Elliott Hughes
9aceab5015 Use the kernel's MAX_ERRNO in the syscall stubs.
Bug: http://code.google.com/p/android/issues/detail?id=53104
Change-Id: Iaabf7025b153e96dc5eca231a33a32d4cb7d8116
2013-03-12 17:43:58 -07:00
Christopher Ferris
f0cd52305a am 8cca0154: am b0b974c1: am 2a66ccf1: am 980508b0: Merge "Break bionic implementations into arch versions."
* commit '8cca015403f2f021d557fc81a0423a04a551448a':
  Break bionic implementations into arch versions.
2013-03-12 22:45:21 +00:00
Christopher Ferris
8cca015403 am b0b974c1: am 2a66ccf1: am 980508b0: Merge "Break bionic implementations into arch versions."
* commit 'b0b974c10ce3494fe58be1a3f419656f95c54331':
  Break bionic implementations into arch versions.
2013-03-12 22:43:05 +00:00
Christopher Ferris
b0b974c10c am 2a66ccf1: am 980508b0: Merge "Break bionic implementations into arch versions."
* commit '2a66ccf1bb4dd0183b65264cb8107ba70748f626':
  Break bionic implementations into arch versions.
2013-03-12 15:40:22 -07:00
Christopher Ferris
2a66ccf1bb am 980508b0: Merge "Break bionic implementations into arch versions."
* commit '980508b0ead3ee01e99e93635c57eb76d1aba62d':
  Break bionic implementations into arch versions.
2013-03-12 15:39:38 -07:00
Christopher Ferris
980508b0ea Merge "Break bionic implementations into arch versions." 2013-03-12 22:24:09 +00:00
Christopher Ferris
04954a43b3 Break bionic implementations into arch versions.
Move arch specific code for arm, mips, x86 into separate
makefiles.
In addition, add different arm cpu versions of memcpy/memset.

Bug: 8005082

Merge from internal master (acdde8c1cf).

Change-Id: I04f3d0715104fab618e1abf7cf8f7eec9bec79df
2013-03-12 14:06:08 -07:00
Elliott Hughes
4f73423c68 am 0052a618: am b4d6f28c: am a3214c65: am 94a34010: Merge "Support large errno values on ARM."
* commit '0052a6188ba20c3a9ea99f974bce0c143bd379cb':
  Support large errno values on ARM.
2013-03-12 19:24:10 +00:00
Elliott Hughes
0052a6188b am b4d6f28c: am a3214c65: am 94a34010: Merge "Support large errno values on ARM."
* commit 'b4d6f28cc33f438f9859d6ab5f91e7f2ee1d6d33':
  Support large errno values on ARM.
2013-03-12 19:22:50 +00:00
Elliott Hughes
b4d6f28cc3 am a3214c65: am 94a34010: Merge "Support large errno values on ARM."
* commit 'a3214c65620827628a87849a5fbad5a4ef97eeb1':
  Support large errno values on ARM.
2013-03-12 12:18:49 -07:00
Elliott Hughes
a3214c6562 am 94a34010: Merge "Support large errno values on ARM."
* commit '94a34010c1f989032c0a4dc7a7a68d069ca23b1e':
  Support large errno values on ARM.
2013-03-12 12:17:15 -07:00
Elliott Hughes
94a34010c1 Merge "Support large errno values on ARM." 2013-03-12 19:08:36 +00:00
Elliott Hughes
6734451334 am 60414ba1: am 746f1286: am 5d998b4a: am f21aa3b6: Merge "Use more types than just \'unsigned\' in the linker."
* commit '60414ba165da87e427aef45b651ec7d4f26b084f':
  Use more types than just 'unsigned' in the linker.
2013-03-12 19:07:18 +00:00
Elliott Hughes
60414ba165 am 746f1286: am 5d998b4a: am f21aa3b6: Merge "Use more types than just \'unsigned\' in the linker."
* commit '746f128602772997b57e24fc8546473d01d6f955':
  Use more types than just 'unsigned' in the linker.
2013-03-12 19:05:53 +00:00
Elliott Hughes
746f128602 am 5d998b4a: am f21aa3b6: Merge "Use more types than just \'unsigned\' in the linker."
* commit '5d998b4a21aab09da750e8e43cb608f5ee6b1f3d':
  Use more types than just 'unsigned' in the linker.
2013-03-12 12:03:06 -07:00
Elliott Hughes
5d998b4a21 am f21aa3b6: Merge "Use more types than just \'unsigned\' in the linker."
* commit 'f21aa3b61ebc6b1a7c34265699f40bd9b5af7952':
  Use more types than just 'unsigned' in the linker.
2013-03-12 12:00:55 -07:00
Elliott Hughes
cb2069bf69 Support large errno values on ARM.
Bug: http://code.google.com/p/android/issues/detail?id=53104
Change-Id: Ic6c40be2dc50f0644a3d8b09ceae59c38f2d5b53
2013-03-12 11:55:45 -07:00
Elliott Hughes
f21aa3b61e Merge "Use more types than just 'unsigned' in the linker." 2013-03-12 18:54:27 +00:00
Elliott Hughes
ca0c11bd82 Use more types than just 'unsigned' in the linker.
Still chipping away at the situation where every variable in the
linker was of type 'unsigned'. This patch switches counts over to
being size_t and adds an explicit type for init/fini function pointers
and arrays of function pointers.

Also improve logging from CallArray.

Also remove trailing "\n"s from log messages.

Change-Id: Ie036d2622caac50f4d29f0570888bb527661d77e
2013-03-12 11:26:56 -07:00
Elliott Hughes
947695bd9b am 5487ecb5: am e9cdce33: am 3c9afb5e: am 6b4c77f8: Merge "Use Elf32_Addr instead of unsigned in linker"
* commit '5487ecb52a328906b81635f8c8018f48031c19a1':
  Use Elf32_Addr instead of unsigned in linker
2013-03-12 17:43:55 +00:00
Elliott Hughes
5487ecb52a am e9cdce33: am 3c9afb5e: am 6b4c77f8: Merge "Use Elf32_Addr instead of unsigned in linker"
* commit 'e9cdce33f398e43952d11ef38027e2d255f16531':
  Use Elf32_Addr instead of unsigned in linker
2013-03-12 17:42:37 +00:00
Elliott Hughes
e9cdce33f3 am 3c9afb5e: am 6b4c77f8: Merge "Use Elf32_Addr instead of unsigned in linker"
* commit '3c9afb5e17eaa2ed5a12d71a1a09fe85f06fcb48':
  Use Elf32_Addr instead of unsigned in linker
2013-03-12 10:40:56 -07:00
Elliott Hughes
3c9afb5e17 am 6b4c77f8: Merge "Use Elf32_Addr instead of unsigned in linker"
* commit '6b4c77f854c079138d552608b9df5fa3035f0fcc':
  Use Elf32_Addr instead of unsigned in linker
2013-03-12 10:38:46 -07:00
Christopher Ferris
a9a5870d16 Create arch specific versions of strcmp.
This uses the new strcmp.a15.S code as the basis for new versions
of strcmp.S.

The cortex-a15 code is the performance optimized version of strcmp.a15.S
taken with only the addition of a few pld instructions.
The cortex-a9 code is the same as the cortex-a15 code except that the
unaligned strcmp code was taken from the original strcmp.S.
The krait code is the same as the cortex-a15 code except that one path
in the unaligned strcmp code was taken from the original strcmp.S code
(the 2 byte overlap case).
The generic code is the original unmodified strmp.S from the bionic
subdirectory.

All three new versions underwent these test cases:

Strings the same, all same size:
- Both pointers double word aligned.
- One pointer double word aligned, one pointer word aligned.
- Both pointers word aligned.
- One pointer double word aligned, one pointer 1 off a word alignment.
- One pointer double word aligned, one pointer 2 off a word alignment.
- One pointer double word aligned, one pointer 3 off a word alignment.
- One pointer word aligned, one pointer 1 off a word alignment.
- One pointer word aligned, one pointer 2 off a word alignment.
- One pointer word aligned, one pointer 3 off a word alignment.
For all cases where it made sense, the two pointers were also tested
swapped.

Different strings, all same size:
- Single difference at double word boundary.
- Single difference at word boudary.
- Single difference at 1 off a word alignment.
- Single difference at 2 off a word alignment.
- Single difference at 3 off a word alignment.

Different sized strings, strings the same until the end:
- Shorter string ends on a double word boundary.
- Shorter string ends on word boundary.
- Shorter string ends at 1 off a word boundary.
- Shorter string ends at 2 off a word boundary.
- Shorter string ends at 3 off a word boundary.

For all different cases, run them through the same pointer alignment
cases when the strings are the same size.
For all cases the two pointers were also tested swapped.

Bug: 8005082
Change-Id: I5f3dc02b48afba2cb9c13332ab45c828ff171a1c
2013-03-12 10:25:11 -07:00
Elliott Hughes
6b4c77f854 Merge "Use Elf32_Addr instead of unsigned in linker" 2013-03-12 17:24:04 +00:00
Kito Cheng
fa8c05dc00 Use Elf32_Addr instead of unsigned in linker
Change-Id: I52dcbb4b0ff0a4052e0ad7a9bbeb2df65c9d2f66
2013-03-12 10:19:14 -07:00
The Android Automerger
1a6e73d0ac merge in master-release history after reset to master 2013-03-12 07:49:24 -07:00
The Android Open Source Project
70d97ae3d0 am 7c8af225: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit '7c8af2252a5814a34f30922ac7d5d63bd891e525':
2013-03-12 14:16:36 +00:00
The Android Open Source Project
7c8af2252a Reconcile with jb-mr2-release - do not merge
Change-Id: Ia0c7d98294053c4dfab78608959f2f3f53c8e2a0
2013-03-12 07:14:11 -07:00
The Android Automerger
24ec903cd8 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-12 05:55:15 -07:00
Elliott Hughes
3284773891 am 03e71235: am 8c73f69c: am 36cb88b7: am 53630c0e: Merge "Cache the most-recently used timezone for mktime_tz and localtime_tz."
* commit '03e712357d1f4de204ac9ad5cbef53acba48db9d':
  Cache the most-recently used timezone for mktime_tz and localtime_tz.
2013-03-12 01:50:53 +00:00
Elliott Hughes
03e712357d am 8c73f69c: am 36cb88b7: am 53630c0e: Merge "Cache the most-recently used timezone for mktime_tz and localtime_tz."
* commit '8c73f69cf42d78f37b9b82bf0cc62d2cd1985fcc':
  Cache the most-recently used timezone for mktime_tz and localtime_tz.
2013-03-12 01:48:34 +00:00
Elliott Hughes
8c73f69cf4 am 36cb88b7: am 53630c0e: Merge "Cache the most-recently used timezone for mktime_tz and localtime_tz."
* commit '36cb88b70c39e507e9017f0bd7121da57e568744':
  Cache the most-recently used timezone for mktime_tz and localtime_tz.
2013-03-11 18:46:23 -07:00
Elliott Hughes
36cb88b70c am 53630c0e: Merge "Cache the most-recently used timezone for mktime_tz and localtime_tz."
* commit '53630c0e5bb6f845ba633e8dedc08b827f7b5d0c':
  Cache the most-recently used timezone for mktime_tz and localtime_tz.
2013-03-11 18:44:19 -07:00
Elliott Hughes
53630c0e5b Merge "Cache the most-recently used timezone for mktime_tz and localtime_tz." 2013-03-12 01:28:36 +00:00
Elliott Hughes
4a05bef4c0 Cache the most-recently used timezone for mktime_tz and localtime_tz.
Normally, the C library implicitly caches your timezone by virtue
of the fact that the prehistoric API assumes a single timezone for
the entire process.

The unfortunate mktime_tz and localtime_tz extensions work around
this, but represent timezones as strings to their callers, so code
that makes heavy use of these needs a cache to be able to perform
acceptably until it can hopefully one day be rewritten to use
java.util.Calendar or icu4c.

Bug: 8270865
Change-Id: I92e3964e86dc33ceac925f819cc5e26ff4203f50
2013-03-11 17:17:02 -07:00
Jean-Baptiste Queru
23167e7556 am 1467dfa5: (-s ours) am a60f3818: am b2525ba8: am 7915b22e: am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '1467dfa5cd28b8b4e07cfe86b020a07bd0d0da24':
2013-03-11 19:51:51 +00:00
Jean-Baptiste Queru
1467dfa5cd am a60f3818: am b2525ba8: am 7915b22e: am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'a60f38181465d5f5a37ea8f9ad34326ea2e21ef0':
2013-03-11 19:41:34 +00:00
Elliott Hughes
3d0bf2b30c am 9969b48d: am 60ac09bd: am 6d6f5e61: am 4b032ee9: Merge "Let bionic use the correct definition of ssize_t."
* commit '9969b48d235e71f87be67549fdd274c8e82f3f6f':
  Let bionic use the correct definition of ssize_t.
2013-03-11 19:41:19 +00:00
Jean-Baptiste Queru
a60f381814 am b2525ba8: am 7915b22e: am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'b2525ba8a0f91594df17e893d036c416a109b012':
2013-03-11 12:35:36 -07:00
Elliott Hughes
9969b48d23 am 60ac09bd: am 6d6f5e61: am 4b032ee9: Merge "Let bionic use the correct definition of ssize_t."
* commit '60ac09bdb2ddc4076f78a91f260cd5a1e179c82b':
  Let bionic use the correct definition of ssize_t.
2013-03-11 19:34:11 +00:00
Jean-Baptiste Queru
b2525ba8a0 am 7915b22e: am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '7915b22e8f70b80a9fc2c41f9734194c58b546fc':
2013-03-11 12:30:58 -07:00
Jean-Baptiste Queru
7915b22e8f am a4b20d71: am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'a4b20d712b9c6cbc562529d3a41bf8ea1515562a':
2013-03-11 12:28:17 -07:00
Elliott Hughes
60ac09bdb2 am 6d6f5e61: am 4b032ee9: Merge "Let bionic use the correct definition of ssize_t."
* commit '6d6f5e618e054e79d80a02f2c3f76ce0fd73bb2a':
  Let bionic use the correct definition of ssize_t.
2013-03-11 12:27:58 -07:00
Jean-Baptiste Queru
a4b20d712b am b8e1033c: (-s ours) am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'b8e1033c5b5813cb97d19645075591a357e9f04a':
2013-03-11 12:22:41 -07:00
Jean-Baptiste Queru
b8e1033c5b am e5412a9a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'e5412a9a9597433ae2540b390269c514c46402f1':
2013-03-11 12:19:03 -07:00
Jean-Baptiste Queru
e5412a9a95 Reconcile with jb-mr1-release - do not merge 2013-03-11 12:15:11 -07:00
Elliott Hughes
cd9c4cfae3 am 022d7c50: am bf32ffcf: am 0b765862: am 62c5cd07: Merge "Upgrade to tzdata2013b."
* commit '022d7c50db28fbf90e197f0c88b23b7e3a74a07b':
  Upgrade to tzdata2013b.
2013-03-11 18:39:13 +00:00
Elliott Hughes
022d7c50db am bf32ffcf: am 0b765862: am 62c5cd07: Merge "Upgrade to tzdata2013b."
* commit 'bf32ffcf027d0089e84fafb0114f6b40825f84ac':
  Upgrade to tzdata2013b.
2013-03-11 18:33:57 +00:00
Elliott Hughes
bf32ffcf02 am 0b765862: am 62c5cd07: Merge "Upgrade to tzdata2013b."
* commit '0b765862e134e87174ddf9bdfa32528392f85e96':
  Upgrade to tzdata2013b.
2013-03-11 11:29:24 -07:00
Elliott Hughes
6d6f5e618e am 4b032ee9: Merge "Let bionic use the correct definition of ssize_t."
* commit '4b032ee9b94137e41ee54e9bb3bcf0ba5ad43cbc':
  Let bionic use the correct definition of ssize_t.
2013-03-11 11:07:29 -07:00
Elliott Hughes
4b032ee9b9 Merge "Let bionic use the correct definition of ssize_t." 2013-03-11 17:55:27 +00:00
Elliott Hughes
0b765862e1 am 62c5cd07: Merge "Upgrade to tzdata2013b."
* commit '62c5cd0781e95c1c50b63c37a9a87bc158e64d38':
  Upgrade to tzdata2013b.
2013-03-11 09:57:53 -07:00
Elliott Hughes
62c5cd0781 Merge "Upgrade to tzdata2013b." 2013-03-11 16:42:57 +00:00
Elliott Hughes
cdb27f239b Upgrade to tzdata2013b.
From the release notes:

  Changes affecting current and future time stamps:

    Haiti uses US daylight-saving rules this year, and presumably future years.
    This changes time stamps starting today.  (Thanks to Steffen Thorsen.)

    Paraguay will end DST on March 24 this year.
    (Thanks to Steffen Thorsen.)  For now, assume it's just this year.

    Morocco does not observe DST during Ramadan;
    try to predict Ramadan in Morocco as best we can.
    (Thanks to Erik Homoet for the heads-up.)

Change-Id: I98d5290ea5a1d9fb1eeddab1c9e72135dc9e4bd1
2013-03-11 09:41:45 -07:00
The Android Automerger
e767b0f555 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-11 05:55:24 -07:00
Elliott Hughes
b6e22482d4 Let bionic use the correct definition of ssize_t.
Bug: 8253769
Change-Id: I50c7cc20828fc089b83580e039ce9153a6c5a8cc
2013-03-08 15:28:52 -08:00
The Android Automerger
568eb7bd76 merge in master-release history after reset to master 2013-03-08 07:49:16 -08:00
Elliott Hughes
5bb64976a0 am 7a9749ec: am 8a015722: resolved conflicts for merge of 4706606c to jb-mr2-dev
* commit '7a9749eca06816ba3b63e55660bc1c2b7285dc52':
  Regenerate NOTICE files.
2013-03-07 21:25:35 +00:00
Elliott Hughes
7a9749eca0 am 8a015722: resolved conflicts for merge of 4706606c to jb-mr2-dev
* commit '8a0157227242eeb7917f064e0d81014bcda6d8f7':
  Regenerate NOTICE files.
2013-03-07 21:23:22 +00:00
Elliott Hughes
8a01572272 resolved conflicts for merge of 4706606c to jb-mr2-dev
Change-Id: Ibf6340df901c870cd05a2ab56536ad23b6fd491c
2013-03-07 13:19:20 -08:00
Elliott Hughes
4706606c88 am 809eed1d: Merge "Regenerate NOTICE files."
* commit '809eed1dedb833af1aba56c6a1d059123b43049a':
  Regenerate NOTICE files.
2013-03-07 12:02:00 -08:00
Elliott Hughes
809eed1ded Merge "Regenerate NOTICE files." 2013-03-07 19:57:17 +00:00
Elliott Hughes
0493a6f7be Regenerate NOTICE files.
Also clean up some obsolete cruft.

Change-Id: Iec3b36f6607f7a08b72de99294ed5b6cd910dd5f
2013-03-07 11:51:10 -08:00
The Android Automerger
a7a3bcef75 merge in master-release history after reset to master 2013-03-07 07:49:10 -08:00
The Android Automerger
a312b02e85 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-07 05:55:07 -08:00
Elliott Hughes
30be06bc7a am 0f644ccf: am 0a2ee475: am ad7c275e: am c9f80814: Merge "Upgrade to current NetBSD popen/pclose."
* commit '0f644ccf6dfb4f00473fc90f369d842e09ab13df':
  Upgrade to current NetBSD popen/pclose.
2013-03-07 01:09:36 +00:00
Elliott Hughes
0f644ccf6d am 0a2ee475: am ad7c275e: am c9f80814: Merge "Upgrade to current NetBSD popen/pclose."
* commit '0a2ee4750ac4e9e5949dbf97fbad68065e83b632':
  Upgrade to current NetBSD popen/pclose.
2013-03-07 01:07:08 +00:00
Elliott Hughes
0a2ee4750a am ad7c275e: am c9f80814: Merge "Upgrade to current NetBSD popen/pclose."
* commit 'ad7c275e45088e1f13656b97dabbe911fff83664':
  Upgrade to current NetBSD popen/pclose.
2013-03-07 01:04:52 +00:00
Elliott Hughes
ad7c275e45 am c9f80814: Merge "Upgrade to current NetBSD popen/pclose."
* commit 'c9f80814259a81dce12ba35d1750fa2b23fef48d':
  Upgrade to current NetBSD popen/pclose.
2013-03-06 17:03:28 -08:00
Elliott Hughes
c9f8081425 Merge "Upgrade to current NetBSD popen/pclose." 2013-03-07 00:54:22 +00:00
Elliott Hughes
6b3f49a537 Upgrade to current NetBSD popen/pclose.
This gets us back to using vfork now our ARM vfork assembler stub is
fixed, and adds the missing thread safety for the 'pidlist'.

Bug: 5335385
Change-Id: Ib08bfa65b2cb9fa695717aae629ea14816bf988d
2013-03-06 16:20:55 -08:00
Brian Carlstrom
4bf33991b2 am 6b89c634: am c7b9f954: am 91392116: am 33031fed: Merge "Fix typo of DT_NEEDED for DT_NULL"
* commit '6b89c6341f2d805b7d9913d69ef6038b60b2af7b':
  Fix typo of DT_NEEDED for DT_NULL
2013-03-07 00:18:45 +00:00
Brian Carlstrom
6b89c6341f am c7b9f954: am 91392116: am 33031fed: Merge "Fix typo of DT_NEEDED for DT_NULL"
* commit 'c7b9f954a5278115333516a40c0d2839648a6877':
  Fix typo of DT_NEEDED for DT_NULL
2013-03-07 00:15:48 +00:00
Brian Carlstrom
c7b9f954a5 am 91392116: am 33031fed: Merge "Fix typo of DT_NEEDED for DT_NULL"
* commit '91392116ff859b2e7656ded729b8c758107241aa':
  Fix typo of DT_NEEDED for DT_NULL
2013-03-07 00:12:13 +00:00
Brian Carlstrom
91392116ff am 33031fed: Merge "Fix typo of DT_NEEDED for DT_NULL"
* commit '33031fed84e24fb7791f123df45abc1a3812ac59':
  Fix typo of DT_NEEDED for DT_NULL
2013-03-06 16:11:07 -08:00
Brian Carlstrom
33031fed84 Merge "Fix typo of DT_NEEDED for DT_NULL" 2013-03-06 23:55:56 +00:00
Brian Carlstrom
2d4b9b7cff Fix typo of DT_NEEDED for DT_NULL
(cherry-pick of 138b205ea9efc117fe522c2d7191378023a6e2cd)

Change-Id: Ia895cb3018df55554627f1f61dcdfdada4a961ce
2013-03-06 15:50:30 -08:00
Elliott Hughes
85598b9668 am 165825e3: am 9c0c056b: am 6b1aa1b1: am db794197: Merge "Fix debug malloc."
* commit '165825e3e83fb2ae43b60b1b5ef44cbc55f7979f':
  Fix debug malloc.
2013-03-06 23:29:12 +00:00
Elliott Hughes
165825e3e8 am 9c0c056b: am 6b1aa1b1: am db794197: Merge "Fix debug malloc."
* commit '9c0c056beddf8c4100769ad01404311a6d70efae':
  Fix debug malloc.
2013-03-06 23:27:40 +00:00
Elliott Hughes
9c0c056bed am 6b1aa1b1: am db794197: Merge "Fix debug malloc."
* commit '6b1aa1b16bc2cf8ba17e33fca4ffc399368b356c':
  Fix debug malloc.
2013-03-06 23:24:59 +00:00
Elliott Hughes
6b1aa1b16b am db794197: Merge "Fix debug malloc."
* commit 'db794197cc880e3805bcefbea780476a359066c2':
  Fix debug malloc.
2013-03-06 15:22:24 -08:00
Elliott Hughes
db794197cc Merge "Fix debug malloc." 2013-03-06 23:13:01 +00:00
Elliott Hughes
642331b5dd Fix debug malloc.
This was broken by the change to use AT_RANDOM for the stack guards.

Bug: 7959813
Bug: 8330764
Change-Id: I791900092b72a9a900f16585237fa7ad82aaed9f
2013-03-06 15:03:53 -08:00
Elliott Hughes
6646adeac0 am bbef1f57: am bac72aba: am 50a2cd86: am 0b4a85bf: Merge "Fix TIMING/STATS/COUNT_PAGES dynamic linker build"
* commit 'bbef1f57509504ca11f26968beafd4aa0cfd4643':
  Fix TIMING/STATS/COUNT_PAGES dynamic linker build
2013-03-06 17:52:39 +00:00
Elliott Hughes
bbef1f5750 am bac72aba: am 50a2cd86: am 0b4a85bf: Merge "Fix TIMING/STATS/COUNT_PAGES dynamic linker build"
* commit 'bac72abae4578bf2df9227a9c3d2c7233c83a06b':
  Fix TIMING/STATS/COUNT_PAGES dynamic linker build
2013-03-06 17:47:07 +00:00
Elliott Hughes
bac72abae4 am 50a2cd86: am 0b4a85bf: Merge "Fix TIMING/STATS/COUNT_PAGES dynamic linker build"
* commit '50a2cd865e7cc8c72d926548ed5d64e269003055':
  Fix TIMING/STATS/COUNT_PAGES dynamic linker build
2013-03-06 17:44:43 +00:00
Elliott Hughes
50a2cd865e am 0b4a85bf: Merge "Fix TIMING/STATS/COUNT_PAGES dynamic linker build"
* commit '0b4a85bf1e11e28f66d0f101f9e7d4c51a0bb31c':
  Fix TIMING/STATS/COUNT_PAGES dynamic linker build
2013-03-06 09:41:56 -08:00
Elliott Hughes
0b4a85bf1e Merge "Fix TIMING/STATS/COUNT_PAGES dynamic linker build" 2013-03-06 17:25:51 +00:00
Brian Carlstrom
01b5c0f126 am 8f4880e2: am 2527a8b5: am 9043202b: am 20958207: Merge "Fix MIPS linker build"
* commit '8f4880e2c66d60283d443f6c9b5ef4136d2c6621':
  Fix MIPS linker build
2013-03-06 16:53:22 +00:00
Elliott Hughes
0864ade9de am 5673f9f7: am c1a5d20d: am 9a0b658c: am c41dcad0: Merge "More linker cleanup."
* commit '5673f9f73b545c8b4801c1494600ff2220bf8dca':
  More linker cleanup.
2013-03-06 16:53:22 +00:00
Brian Carlstrom
8f4880e2c6 am 2527a8b5: am 9043202b: am 20958207: Merge "Fix MIPS linker build"
* commit '2527a8b5a652d7f88b662fe3788e29b6bc2bbe78':
  Fix MIPS linker build
2013-03-06 16:48:18 +00:00
Elliott Hughes
5673f9f73b am c1a5d20d: am 9a0b658c: am c41dcad0: Merge "More linker cleanup."
* commit 'c1a5d20d08118bb778f99b14ca74d6654e4f4eba':
  More linker cleanup.
2013-03-06 16:48:05 +00:00
Kito Cheng
5e2492eb89 Fix TIMING/STATS/COUNT_PAGES dynamic linker build
Change-Id: I6432ac378816da253b83d1c7fb1d3fb64647b89e
2013-03-06 23:58:48 +08:00
The Android Automerger
bc08713ba4 merge in master-release history after reset to master 2013-03-06 07:49:13 -08:00
The Android Automerger
f5fc5d467c merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-06 05:55:11 -08:00
Brian Carlstrom
2527a8b5a6 am 9043202b: am 20958207: Merge "Fix MIPS linker build"
* commit '9043202b5bb8e0725b0302e9da9d3a57c837e798':
  Fix MIPS linker build
2013-03-06 09:18:59 +00:00
Brian Carlstrom
9043202b5b am 20958207: Merge "Fix MIPS linker build"
* commit '20958207d5f9d36cc6f6b3edc4ff899c73b72b02':
  Fix MIPS linker build
2013-03-06 01:17:27 -08:00
Brian Carlstrom
20958207d5 Merge "Fix MIPS linker build" 2013-03-06 09:06:16 +00:00
Brian Carlstrom
43cc7f795b Fix MIPS linker build
(cherry-picked from 8c7d8c2057e303985f78eab96da747ddaa013c78)

Change-Id: Idcf62ab95f8fccbc2d7c3e771a4cfbe768a1555e
2013-03-06 01:05:08 -08:00
Elliott Hughes
c1a5d20d08 am 9a0b658c: am c41dcad0: Merge "More linker cleanup."
* commit '9a0b658c9c1f8f4492f61a75909e5ca2f05c3ac1':
  More linker cleanup.
2013-03-06 06:44:06 +00:00
Elliott Hughes
9a0b658c9c am c41dcad0: Merge "More linker cleanup."
* commit 'c41dcad040ede2975ea63e383a8a3d36e3642d56':
  More linker cleanup.
2013-03-05 22:42:33 -08:00
Elliott Hughes
c41dcad040 Merge "More linker cleanup." 2013-03-06 06:26:56 +00:00
Elliott Hughes
650be4e584 More linker cleanup.
Change-Id: I9fb3c7c0d4b4ffef0eeaf092d4e30ffe63a08671
2013-03-05 22:24:34 -08:00
Brian Carlstrom
d18e5bb412 am a2cfd1a2: am 8c65a1e4: am a2517de3: am 036f9097: Merge "Minor linker cleanup, primarily to use Elf32_Dyn"
* commit 'a2cfd1a27fe552a42d668c708d98ca3f8bee90b9':
  Minor linker cleanup, primarily to use Elf32_Dyn
2013-03-06 01:27:56 +00:00
Brian Carlstrom
a2cfd1a27f am 8c65a1e4: am a2517de3: am 036f9097: Merge "Minor linker cleanup, primarily to use Elf32_Dyn"
* commit '8c65a1e466dae62217700065256921ba86290faa':
  Minor linker cleanup, primarily to use Elf32_Dyn
2013-03-06 01:25:09 +00:00
Brian Carlstrom
8c65a1e466 am a2517de3: am 036f9097: Merge "Minor linker cleanup, primarily to use Elf32_Dyn"
* commit 'a2517de3844d95b5f00a4666b8dae00ef893ac24':
  Minor linker cleanup, primarily to use Elf32_Dyn
2013-03-06 01:22:25 +00:00
Brian Carlstrom
a2517de384 am 036f9097: Merge "Minor linker cleanup, primarily to use Elf32_Dyn"
* commit '036f909720fd0d56dbd04b9a761fb1d0714980b0':
  Minor linker cleanup, primarily to use Elf32_Dyn
2013-03-05 17:20:35 -08:00
Brian Carlstrom
036f909720 Merge "Minor linker cleanup, primarily to use Elf32_Dyn" 2013-03-06 01:01:23 +00:00
Brian Carlstrom
d4ee82dfa3 Minor linker cleanup, primarily to use Elf32_Dyn
Change-Id: Ifa9408e9859c6f79444715bed4808b7c13fdced5
2013-03-05 15:27:21 -08:00
Elliott Hughes
074a94c01e am b3b00378: am 97a8217a: am 3f7b1cd3: am be21fe7a: Merge "Upgrade to tzdata2013a."
* commit 'b3b0037884e9b0bcba787e84448815f2a4b4dccd':
  Upgrade to tzdata2013a.
2013-03-05 22:29:17 +00:00
Elliott Hughes
b3b0037884 am 97a8217a: am 3f7b1cd3: am be21fe7a: Merge "Upgrade to tzdata2013a."
* commit '97a8217ae1a23a808f7bb3af2f492040e7080549':
  Upgrade to tzdata2013a.
2013-03-05 22:25:39 +00:00
Elliott Hughes
97a8217ae1 am 3f7b1cd3: am be21fe7a: Merge "Upgrade to tzdata2013a."
* commit '3f7b1cd3acf9990efea9f75559b2f873ab3838fe':
  Upgrade to tzdata2013a.
2013-03-05 22:23:45 +00:00
Elliott Hughes
3f7b1cd3ac am be21fe7a: Merge "Upgrade to tzdata2013a."
* commit 'be21fe7a5947e24f9f0db90f8e16c54766d1237a':
  Upgrade to tzdata2013a.
2013-03-05 14:22:01 -08:00
Elliott Hughes
be21fe7a59 Merge "Upgrade to tzdata2013a." 2013-03-05 22:19:14 +00:00
Elliott Hughes
69af6e61e1 Upgrade to tzdata2013a.
From the release notes:

    Chile's 2013 rules, and we guess rules for 2014 and later, will be
    the same as 2012, namely Apr Sun>=23 03:00 UTC to Sep Sun>=2 04:00 UTC.
    (Thanks to Steffen Thorsen and Robert Elz.)

    New Zones Asia/Khandyga, Asia/Ust-Nera, Europe/Busingen.
    (Thanks to Tobias Conradi and Arthur David Olson.)

Change-Id: I351e04b3348420ad7df7c648963c235b534033d2
2013-03-05 14:00:38 -08:00
Ben Cheng
fbb281b15d am 7eaed030: am 6ad68558: am e5e6e17c: am 133d97e4: Merge "Add stack unwinding directives to memcpy."
* commit '7eaed030deacb14a6fe628e229af6c9a3a620f3c':
  Add stack unwinding directives to memcpy.
2013-03-05 21:24:43 +00:00
Ben Cheng
7eaed030de am 6ad68558: am e5e6e17c: am 133d97e4: Merge "Add stack unwinding directives to memcpy."
* commit '6ad68558ed4429f7ab0dbad9a5bbf18aacde8362':
  Add stack unwinding directives to memcpy.
2013-03-05 21:22:49 +00:00
Ben Cheng
6ad68558ed am e5e6e17c: am 133d97e4: Merge "Add stack unwinding directives to memcpy."
* commit 'e5e6e17c5bd06e097c5bb4da9a23b5e293309ab9':
  Add stack unwinding directives to memcpy.
2013-03-05 21:20:42 +00:00
Ben Cheng
e5e6e17c5b am 133d97e4: Merge "Add stack unwinding directives to memcpy."
* commit '133d97e4b07a733787fb85692ad8427fdc3d1d22':
  Add stack unwinding directives to memcpy.
2013-03-05 13:17:23 -08:00
Elliott Hughes
c6ef78e83e am 136e00d6: am c96ad9bc: am 7b69ac53: am cf9a9604: Merge "Switch to upstream-freebsd for the unmolested wchar code."
* commit '136e00d6e9bc19617e49a6b7bf81f749ff8a48e3':
  Switch to upstream-freebsd for the unmolested wchar code.
2013-03-05 21:14:04 +00:00
Elliott Hughes
136e00d6e9 am c96ad9bc: am 7b69ac53: am cf9a9604: Merge "Switch to upstream-freebsd for the unmolested wchar code."
* commit 'c96ad9bcd28fcd2b34040a2a696262057a11470b':
  Switch to upstream-freebsd for the unmolested wchar code.
2013-03-05 21:05:24 +00:00
Ben Cheng
133d97e4b0 Merge "Add stack unwinding directives to memcpy." 2013-03-05 21:04:38 +00:00
Elliott Hughes
c96ad9bcd2 am 7b69ac53: am cf9a9604: Merge "Switch to upstream-freebsd for the unmolested wchar code."
* commit '7b69ac535abca0e7867524e68f5a3581cc367de8':
  Switch to upstream-freebsd for the unmolested wchar code.
2013-03-05 20:28:28 +00:00
Elliott Hughes
7b69ac535a am cf9a9604: Merge "Switch to upstream-freebsd for the unmolested wchar code."
* commit 'cf9a9604adb27600c79ca236578a8be89168202f':
  Switch to upstream-freebsd for the unmolested wchar code.
2013-03-05 12:27:09 -08:00
Elliott Hughes
cf9a9604ad Merge "Switch to upstream-freebsd for the unmolested wchar code." 2013-03-05 20:13:33 +00:00
The Android Open Source Project
69a278f679 am adff4e86: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit 'adff4e8630e8d468253255b521caecfbb161dbbe':
2013-03-05 15:58:51 +00:00
The Android Open Source Project
adff4e8630 Reconcile with jb-mr2-release - do not merge
Change-Id: I2635d0c79d4adc135c7f0b6345547ed5e3114158
2013-03-05 07:53:05 -08:00
The Android Automerger
ee84789761 merge in master-release history after reset to master 2013-03-05 07:49:15 -08:00
The Android Automerger
5b5aa0317c merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-05 05:55:15 -08:00
Elliott Hughes
3f794facd3 am 7ef3ccb7: am 81e0f35a: am 2125c155: am d392e044: Merge "Move realpath.c to upstream-freebsd."
* commit '7ef3ccb7bb5f334e4ca8911a5d0eca7dd0da6b92':
  Move realpath.c to upstream-freebsd.
2013-03-04 23:59:47 +00:00
Elliott Hughes
7ef3ccb7bb am 81e0f35a: am 2125c155: am d392e044: Merge "Move realpath.c to upstream-freebsd."
* commit '81e0f35acc41cfafccc6d28a9122f115ca6e4a16':
  Move realpath.c to upstream-freebsd.
2013-03-04 23:58:16 +00:00
Elliott Hughes
81e0f35acc am 2125c155: am d392e044: Merge "Move realpath.c to upstream-freebsd."
* commit '2125c15506cbe9e4062d72ebb723d164e9c01c1f':
  Move realpath.c to upstream-freebsd.
2013-03-04 23:56:56 +00:00
The Android Open Source Project
781c4b19f4 am 98650e04: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit '98650e04e6d87e0b2c82151eacbe483ac15949d9':
  Avoid changing the C++ ABI with ssize_t.
2013-03-04 19:10:07 +00:00
The Android Open Source Project
98650e04e6 Reconcile with jb-mr2-release - do not merge
Change-Id: I92fd2ef799f358dd022234bc5fa7e6693f0619f0
2013-03-04 11:06:25 -08:00
Elliott Hughes
2125c15506 am d392e044: Merge "Move realpath.c to upstream-freebsd."
* commit 'd392e044c7a03ff1c0903c3512d00955bc7de473':
  Move realpath.c to upstream-freebsd.
2013-03-04 08:25:58 -08:00
The Android Automerger
e290a7e348 merge in master-release history after reset to master 2013-03-04 07:49:05 -08:00
The Android Automerger
2ec68f6833 merge in jb-mr2-release history after reset to jb-mr2-dev 2013-03-04 05:55:08 -08:00
Elliott Hughes
eb93ebffba Switch to upstream-freebsd for the unmolested wchar code.
Change-Id: I87b4d76ff8da04109ae53638eec4f11629798960
2013-03-01 18:35:56 -08:00
Elliott Hughes
d392e044c7 Merge "Move realpath.c to upstream-freebsd." 2013-03-02 01:22:04 +00:00
Christopher Ferris
0a1ab287ff am 29cc4946: (-s ours) Merge "Remove unused arm defines. DO NOT MERGE" into jb-mr2-dev
* commit '29cc4946ac8ac89fa0c49e5da8b5b328065d4b2c':
  Remove unused arm defines. DO NOT MERGE
2013-03-02 01:19:47 +00:00
Christopher Ferris
29cc4946ac Merge "Remove unused arm defines. DO NOT MERGE" into jb-mr2-dev 2013-03-02 01:16:00 +00:00
Elliott Hughes
f0777843c0 Move realpath.c to upstream-freebsd.
This is actually a slightly newer upstream version than the one I
originally pulled. Hopefully now it's in upstream-freebsd it will
be easier to track upstream, though I still need to sit down and
write the necessary scripts at some point.

Bug: 5110679
Change-Id: I87e563f0f95aa8e68b45578e2a8f448bbf827a33
2013-03-01 17:11:39 -08:00
Christopher Ferris
947b3ab02b Remove unused arm defines. DO NOT MERGE
The defines HAVE_32_BYTE_CACHE_LINES and ARCH_ARM_USE_NON_NEON_MEMCPY
are not used by any code. The previous memcpy code that used these
has been split into different architecture versions to avoid the need
for them.

Bug: 8005082

(cherry picked from commit 6e1a5cf31b)

Change-Id: I69654d47db1458136782b5504290f620e924ee75
2013-03-01 16:54:56 -08:00
Ben Cheng
14283004f5 Add stack unwinding directives to memcpy.
Also include some Android specific header files.

Change-Id: Idbcbd43458ba945ca8c61bfbc04ea15fc0ae4e00
2013-03-01 14:56:04 -08:00
Ben Cheng
f85e173616 am b9ef7f4e: am 52b3aed7: am c5c6cb3f: am 66273ac2: Merge "Adding strcmp tuned for Cortex-A15."
* commit 'b9ef7f4e122bee55110ac703f391ab961484f3d8':
  Adding strcmp tuned for Cortex-A15.
2013-03-01 18:34:45 +00:00
Ben Cheng
89d7f5e482 am ae280bcd: am 55fc93a9: am 8f149da0: am b3b1ab62: Merge "Adding memcpy tuned for Cortex-A15."
* commit 'ae280bcdbee8d31096c1b332b20fa32f941ef12f':
  Adding memcpy tuned for Cortex-A15.
2013-03-01 18:34:45 +00:00
Nick Kralevich
1f415124ec am 04190c53: am cc646773: am 305a9995: am 8fa924e5: Merge "unistd.h: don\'t include sys/capability.h"
* commit '04190c53e3ac2958322a603d7bfb9b07b92d595e':
  unistd.h: don't include sys/capability.h
2013-03-01 18:34:44 +00:00
Ben Cheng
b9ef7f4e12 am 52b3aed7: am c5c6cb3f: am 66273ac2: Merge "Adding strcmp tuned for Cortex-A15."
* commit '52b3aed7982e9d68aad0652f54d5ee180ddf1c5a':
  Adding strcmp tuned for Cortex-A15.
2013-03-01 18:28:25 +00:00
Ben Cheng
ae280bcdbe am 55fc93a9: am 8f149da0: am b3b1ab62: Merge "Adding memcpy tuned for Cortex-A15."
* commit '55fc93a90961022e38ef0bb63bcb81d2b4e5aef6':
  Adding memcpy tuned for Cortex-A15.
2013-03-01 18:28:25 +00:00
Nick Kralevich
04190c53e3 am cc646773: am 305a9995: am 8fa924e5: Merge "unistd.h: don\'t include sys/capability.h"
* commit 'cc64677342209d38f88138c03d3ded0e1d61637c':
  unistd.h: don't include sys/capability.h
2013-03-01 18:28:24 +00:00
Ben Cheng
52b3aed798 am c5c6cb3f: am 66273ac2: Merge "Adding strcmp tuned for Cortex-A15."
* commit 'c5c6cb3f13642386e08acf687b4bc39f568bad0c':
  Adding strcmp tuned for Cortex-A15.
2013-03-01 10:26:52 -08:00
Ben Cheng
55fc93a909 am 8f149da0: am b3b1ab62: Merge "Adding memcpy tuned for Cortex-A15."
* commit '8f149da08dc3125824e168f8d29613be80b2085c':
  Adding memcpy tuned for Cortex-A15.
2013-03-01 10:26:52 -08:00
Nick Kralevich
cc64677342 am 305a9995: am 8fa924e5: Merge "unistd.h: don\'t include sys/capability.h"
* commit '305a999589a8dfde077589106853522d483d24d2':
  unistd.h: don't include sys/capability.h
2013-03-01 10:26:51 -08:00
Ben Cheng
c5c6cb3f13 am 66273ac2: Merge "Adding strcmp tuned for Cortex-A15."
* commit '66273ac2b6b8c2042350204575bd290d96dea681':
  Adding strcmp tuned for Cortex-A15.
2013-03-01 10:24:58 -08:00
Ben Cheng
8f149da08d am b3b1ab62: Merge "Adding memcpy tuned for Cortex-A15."
* commit 'b3b1ab6213df15f99c9af3088cfe733428816fd3':
  Adding memcpy tuned for Cortex-A15.
2013-03-01 10:24:58 -08:00
Nick Kralevich
305a999589 am 8fa924e5: Merge "unistd.h: don\'t include sys/capability.h"
* commit '8fa924e5dff4588cca8586e0e727b9a544db7083':
  unistd.h: don't include sys/capability.h
2013-03-01 10:24:57 -08:00
Ben Cheng
66273ac2b6 Merge "Adding strcmp tuned for Cortex-A15." 2013-03-01 18:18:34 +00:00
Ben Cheng
b3b1ab6213 Merge "Adding memcpy tuned for Cortex-A15." 2013-03-01 18:18:05 +00:00
Nick Kralevich
8fa924e5df Merge "unistd.h: don't include sys/capability.h" 2013-03-01 18:14:47 +00:00
Nick Kralevich
6524d3cad7 unistd.h: don't include sys/capability.h
Don't pull in unnecessary header files. AFAIK, I've fixed all
the code which didn't include the correct header files.

Change-Id: If0b7bba74e77cb24a0cf9ce8968aa07400855e58
2013-03-01 10:10:55 -08:00
The Android Automerger
424f21b6a7 merge in master-release history after reset to master 2013-03-01 07:49:10 -08:00
Greta Yorsh
eb149e954e Adding strcmp tuned for Cortex-A15.
The attached patch provides a new implementation of strcmp for ARM,
using LDRD instead of LDR whenever possible.

For older architectures that do not support LDRD, this implementation
uses the same algorithm as before.

Testing and benchmarking:
* Validation: successfully passes a test that compares different strings
of length 1-128 and offsets 0-8 from a word boundary. Checked on
qemu/A15/A9, ARM/Thumb mode, Big/Little Endian.
* Integration with gcc: no regression on qemu for arm-none-eabi --with-cpu
a15/a9 --with-mode arm/thumb.

Change-Id: I9e230e1b99dbdc9119b69ee858a89038c516a4ea
Signed-off-by: Vassilis Laganakos <vasileios.laganakos@arm.com>
2013-03-01 10:41:01 +00:00
Greta Yorsh
5b349fc22e Adding memcpy tuned for Cortex-A15.
The strategy for large block sizes is LDRD and STRD with offset addressing,
where the main loop copies 64 bytes in every iteration, (i.e., 8 calls to
LDRD and STRD pairs), interleaving load and stores (i.e., the pairs of LDRD
and STRD of the same data are consecutive instructions), and the writeback
of an updated address is a separate instruction, which allows us to write
back the accumulated update once per iteration.

This strategy is implemented in memcpy.S. In some configurations, a plain
version of memcpy (included from memcpy-stub.c) is used instead of the
optimized one.

Validation:
* Correctness: checked memcpy using a test harness for block sizes
ranging between 1 to 128, and source and destination buffers alignment
ranging in { 0,1,2,3,4,8,12 } bytes each.
* Performance: benchmarking on Cortex-A15 FPGA indicates that this strategy
is better for A15 than the strategy used by glibc and even slightly better
than using NEON. Benchmarking on Cortex-A9 bare metal and Linux shows
that the proposed strategy is reasonable: not as fast as the version of
memcpy from glibc (which is the best open source strategy for A9), but
comparable with csl and bionic.
* Integration with GCC: no regression for arm-none-eabi --with-cpu
cortex-a15 and cortex-a9.

Change-Id: Ied56354d8992c62ae3e02d582a2bd55585d814b9
Signed-off-by: Vassilis Laganakos <vasileios.laganakos@arm.com>
2013-03-01 10:40:50 +00:00
Christopher Ferris
c7f9669226 am 7c83a1ed: (-s ours) Break bionic implementations into arch versions. DO NOT MERGE
* commit '7c83a1ed81a15f3e75836c1ac7d500a952f02e10':
  Break bionic implementations into arch versions. DO NOT MERGE
2013-03-01 02:36:41 +00:00
Christopher Ferris
7c83a1ed81 Break bionic implementations into arch versions. DO NOT MERGE
Move arch specific code for arm, mips, x86 into separate
makefiles.
In addition, add different arm cpu versions of memcpy/memset.

Bug: 8005082

(cherry picked from commit acdde8c1cf)

Change-Id: I0108d432af9f6283ae99adfc92a3399e5ab3e31d
2013-02-28 17:45:16 -08:00
Elliott Hughes
730da15840 Avoid changing the C++ ABI with ssize_t.
Bug: 8253769
Change-Id: Ia325003ed6e59da553e2bdde7c43515bc191b8ba
2013-02-28 15:21:51 -08:00
Elliott Hughes
bfc25aa33c am 04766565: am 9c102ccf: am 7fe8229b: am 9c1912c4: Merge "Avoid changing the C++ ABI with ssize_t."
* commit '04766565d3743d70f679ca180d7fcc35321143b8':
  Avoid changing the C++ ABI with ssize_t.
2013-02-28 22:38:45 +00:00
Elliott Hughes
04766565d3 am 9c102ccf: am 7fe8229b: am 9c1912c4: Merge "Avoid changing the C++ ABI with ssize_t."
* commit '9c102ccf9517637f9d293b4e52f9a40573d8fc1d':
  Avoid changing the C++ ABI with ssize_t.
2013-02-28 19:46:19 +00:00
Elliott Hughes
9c102ccf95 am 7fe8229b: am 9c1912c4: Merge "Avoid changing the C++ ABI with ssize_t."
* commit '7fe8229b49ea091d769b63052247ca12280975eb':
  Avoid changing the C++ ABI with ssize_t.
2013-02-28 11:44:20 -08:00
Elliott Hughes
7fe8229b49 am 9c1912c4: Merge "Avoid changing the C++ ABI with ssize_t."
* commit '9c1912c4bf5eb0edc07bfd333226c4e0b7a629eb':
  Avoid changing the C++ ABI with ssize_t.
2013-02-28 11:43:11 -08:00
Elliott Hughes
9c1912c4bf Merge "Avoid changing the C++ ABI with ssize_t." 2013-02-28 19:28:53 +00:00
Elliott Hughes
e255642dc1 Avoid changing the C++ ABI with ssize_t.
Bug: 8253769
Change-Id: Ia325003ed6e59da553e2bdde7c43515bc191b8ba
2013-02-28 10:51:31 -08:00
Sasha Levitskiy
fbae9f3c30 Bionic: Libc: Resolv: Stricter function signatures, unitialized return bug fix.
Stricter input parameters help avoid ugly casting when passing
	pointers to immutable protobuf data.
	While at it: an int return was dropped from 2 functions whose users
	never used the result; one of the return paths was returning an
	uninitialized value.
	Size_t for portablity and warning supression, misc warnings addressed.

Change-Id: I2d5cbdaf0c9b6c4621a7d397772da13da5dc0943
2013-02-28 18:46:54 +00:00
The Android Automerger
de8481bcf7 merge in master-release history after reset to master 2013-02-28 07:49:07 -08:00
Christopher Ferris
6e1a5cf31b Remove unused arm defines.
The defines HAVE_32_BYTE_CACHE_LINES and ARCH_ARM_USE_NON_NEON_MEMCPY
are not used by any code. The previous memcpy code that used these
has been split into different architecture versions to avoid the need
for them.

Bug: 8005082
Change-Id: I14e0368c5bb4c3a80e72520f7cfd97e359918cce
2013-02-27 16:26:41 -08:00
The Android Automerger
e9ca2d80ed merge in master-release history after reset to master 2013-02-27 07:49:09 -08:00
Christopher Ferris
acdde8c1cf Break bionic implementations into arch versions.
Move arch specific code for arm, mips, x86 into separate
makefiles.
In addition, add different arm cpu versions of memcpy/memset.

Bug: 8005082
Change-Id: I04f3d0715104fab618e1abf7cf8f7eec9bec79df
2013-02-26 16:04:34 -08:00
Nick Kralevich
30f1622a34 am 82f4cc5d: am 58b997c8: am f5f906c1: Merge "libc: create sys/capability.h"
* commit '82f4cc5de495c6cc3d3736ab075ccd05285beabc':
  libc: create sys/capability.h
2013-02-26 21:55:28 +00:00
Nick Kralevich
82f4cc5de4 am 58b997c8: am f5f906c1: Merge "libc: create sys/capability.h"
* commit '58b997c8121455ecb9aa1b80d7c796115149ec2a':
  libc: create sys/capability.h
2013-02-26 13:51:26 -08:00
Nick Kralevich
58b997c812 am f5f906c1: Merge "libc: create sys/capability.h"
* commit 'f5f906c184677b8295523231cfeead9ed94661ad':
  libc: create sys/capability.h
2013-02-26 13:50:03 -08:00
Nick Kralevich
f5f906c184 Merge "libc: create sys/capability.h" 2013-02-26 21:38:11 +00:00
Nick Kralevich
7c0dd555c0 libc: create sys/capability.h
Per "man capset", sys/capability.h is the appropriate header file
for the capget / capset definition, not unistd.h. Fixed.

As a short term hack, continue to include sys/capability.h in
unistd.h, until we can fix all the code which uses capget / capset.

Change-Id: I6e7cf55955d761ca785a14c5e4b7a44125d8fc15
2013-02-26 13:27:15 -08:00
The Android Automerger
c453d42e20 merge in master-release history after reset to master 2013-02-26 07:49:08 -08:00
Elliott Hughes
aa13eaa934 am d9cb6988: am 406968b2: am c0e9ddd0: Merge "Reimplement scandir(3)."
* commit 'd9cb69881a062c615a8009be0a70270c70eb35da':
  Reimplement scandir(3).
2013-02-25 22:58:44 +00:00
Elliott Hughes
d9cb69881a am 406968b2: am c0e9ddd0: Merge "Reimplement scandir(3)."
* commit '406968b2444bf29e449acebdfb7ff174abd1e0ad':
  Reimplement scandir(3).
2013-02-25 14:56:51 -08:00
Elliott Hughes
406968b244 am c0e9ddd0: Merge "Reimplement scandir(3)."
* commit 'c0e9ddd002f6084c29c26236d741d64d01713c15':
  Reimplement scandir(3).
2013-02-25 14:54:54 -08:00
Elliott Hughes
c0e9ddd002 Merge "Reimplement scandir(3)." 2013-02-25 22:43:28 +00:00
Elliott Hughes
701bec2af3 Reimplement scandir(3).
The old scandir implementation didn't take into account the varying
size of directory entries, and didn't correctly clean up on its
error exits.

Bug: 7339844
Change-Id: Ib40e3564709752241a3119a496cbb2192e3f9abe
2013-02-25 13:14:31 -08:00
The Android Automerger
a6cef2de96 merge in master-release history after reset to master 2013-02-25 07:49:15 -08:00
Elliott Hughes
92ce5cc4bc am ed1068c8: am 7b8bf681: am f6bb5bf4: Merge "Add the glibc-compatible names to <sys/endian.h>."
* commit 'ed1068c86ea0380e4b4909252367ffacc812ad57':
  Add the glibc-compatible names to <sys/endian.h>.
2013-02-22 14:09:30 -08:00
Elliott Hughes
ed1068c86e am 7b8bf681: am f6bb5bf4: Merge "Add the glibc-compatible names to <sys/endian.h>."
* commit '7b8bf68133cda6c5ff9207248b563c2f6297e22a':
  Add the glibc-compatible names to <sys/endian.h>.
2013-02-22 14:06:12 -08:00
Elliott Hughes
7b8bf68133 am f6bb5bf4: Merge "Add the glibc-compatible names to <sys/endian.h>."
* commit 'f6bb5bf498810d0622f66020059c87b96738c35b':
  Add the glibc-compatible names to <sys/endian.h>.
2013-02-22 14:02:44 -08:00
Elliott Hughes
f6bb5bf498 Merge "Add the glibc-compatible names to <sys/endian.h>." 2013-02-22 21:46:59 +00:00
Elliott Hughes
726642cfa5 am dd843914: am 440bc83d: am 7b2c6385: Merge "Fix <memory.h> to be a synonym for <string.h> like in glibc."
* commit 'dd8439141aeac6dc3a64e25f313d08833e1d85f5':
  Fix <memory.h> to be a synonym for <string.h> like in glibc.
2013-02-22 12:16:14 -08:00
Elliott Hughes
dd8439141a am 440bc83d: am 7b2c6385: Merge "Fix <memory.h> to be a synonym for <string.h> like in glibc."
* commit '440bc83d924fa616614b4b426da66c2893048887':
  Fix <memory.h> to be a synonym for <string.h> like in glibc.
2013-02-22 12:12:45 -08:00
Elliott Hughes
440bc83d92 am 7b2c6385: Merge "Fix <memory.h> to be a synonym for <string.h> like in glibc."
* commit '7b2c6385effbb6d6e98bfe29cc6c144211128d9e':
  Fix <memory.h> to be a synonym for <string.h> like in glibc.
2013-02-22 12:10:15 -08:00
Nick Kralevich
bcedca25d3 am 41fb968c: am cadc8583: am bc0e7ee1: Merge "libc: add sys/signal.h for compatibility"
* commit '41fb968c4268d080b0be4493876672efc4a71e16':
  libc: add sys/signal.h for compatibility
2013-02-22 11:59:38 -08:00
Nick Kralevich
41fb968c42 am cadc8583: am bc0e7ee1: Merge "libc: add sys/signal.h for compatibility"
* commit 'cadc858329a5929911eff5f9a208229112e36a93':
  libc: add sys/signal.h for compatibility
2013-02-22 11:56:39 -08:00
Nick Kralevich
cadc858329 am bc0e7ee1: Merge "libc: add sys/signal.h for compatibility"
* commit 'bc0e7ee18157c2ffe65644514555689f4259ccfe':
  libc: add sys/signal.h for compatibility
2013-02-22 11:53:05 -08:00
Elliott Hughes
7b2c6385ef Merge "Fix <memory.h> to be a synonym for <string.h> like in glibc." 2013-02-22 19:49:39 +00:00
Nick Kralevich
bc0e7ee181 Merge "libc: add sys/signal.h for compatibility" 2013-02-22 19:33:53 +00:00
Nick Kralevich
5d36baee95 Merge "gethostbyname: fix crash" 2013-02-22 19:32:37 +00:00
Elliott Hughes
6f1b7a6407 Fix <memory.h> to be a synonym for <string.h> like in glibc.
Change-Id: If23589c5d85dffd28788e04b010303620fa178ca
2013-02-22 11:11:48 -08:00
Elliott Hughes
cf820d7e96 Add the glibc-compatible names to <sys/endian.h>.
Also remove declarations for functions that don't exist; these
are all macros.

Bug: http://code.google.com/p/android/issues/detail?id=41769
Change-Id: Ia3774ab2ff7d3c535f83774eac61068f9b11e194
2013-02-22 11:04:27 -08:00
Nick Kralevich
b22a684990 libc: add sys/signal.h for compatibility
Some applications look for sys/signal.h instead of signal.h.
Work around those apps.

Change-Id: I76ac7744ebc56d196b5f0cb9ed381d32817436b9
2013-02-22 10:38:28 -08:00
The Android Automerger
d2a3e69c26 merge in master-release history after reset to master 2013-02-22 07:49:20 -08:00
Nick Kralevich
bfe0640e41 Don't pass pid to dnsproxyd
dnsproxyd can already determine our pid by looking at our
socket connection. It's dangerous (and unneeded) to pass it
ourselves.

Change-Id: I2596d02e361b302259ddb084be2fb75be59889c5
2013-02-21 21:34:11 -08:00
Nick Kralevich
a6b24b7afb gethostbyname: fix crash
When an app doesn't have the internet permission, android_open_proxy
returns NULL, causing a segfault when calling fprintf. Fixed.

Change-Id: I598855350ed0db3cc88e5ae3b400145418a3a615
2013-02-21 20:12:42 -08:00
Elliott Hughes
7dfc6a3cd1 am e974e951: am 2a5b57db: am 580a7073: Merge "Stop advertising rindex(3), which is both deprecated and unimplemented."
* commit 'e974e951606d2efbad4bafe5edbd09c13d875f6a':
  Stop advertising rindex(3), which is both deprecated and unimplemented.
2013-02-21 18:01:17 -08:00
Elliott Hughes
e974e95160 am 2a5b57db: am 580a7073: Merge "Stop advertising rindex(3), which is both deprecated and unimplemented."
* commit '2a5b57db8c711b6f33581a68cfb7b82298ad988c':
  Stop advertising rindex(3), which is both deprecated and unimplemented.
2013-02-21 17:57:53 -08:00
Elliott Hughes
2a5b57db8c am 580a7073: Merge "Stop advertising rindex(3), which is both deprecated and unimplemented."
* commit '580a707376d81bfcb39919f0a1203b39a39dbd8a':
  Stop advertising rindex(3), which is both deprecated and unimplemented.
2013-02-21 17:55:28 -08:00
Nick Kralevich
d470955eb5 am 72e983d6: am 398f46dd: am a0259b42: Merge "libc: remove bcmp prototype"
* commit '72e983d62828e1db5049800b7edef5a1b0cbbcbd':
  libc: remove bcmp prototype
2013-02-21 17:45:27 -08:00
Elliott Hughes
580a707376 Merge "Stop advertising rindex(3), which is both deprecated and unimplemented." 2013-02-22 01:45:02 +00:00
Nick Kralevich
72e983d628 am 398f46dd: am a0259b42: Merge "libc: remove bcmp prototype"
* commit '398f46dd92fbb72e2a275cddccffdfde384bb3b4':
  libc: remove bcmp prototype
2013-02-21 17:42:07 -08:00
Elliott Hughes
538f6fc202 Stop advertising rindex(3), which is both deprecated and unimplemented.
Change-Id: I3c775d9974e49c3f76a53e46e022659657b89034
2013-02-21 17:39:06 -08:00
Nick Kralevich
398f46dd92 am a0259b42: Merge "libc: remove bcmp prototype"
* commit 'a0259b42eba08e6d71a274fa3f770afccbb93107':
  libc: remove bcmp prototype
2013-02-21 17:39:03 -08:00
Nick Kralevich
a0259b42eb Merge "libc: remove bcmp prototype" 2013-02-22 01:22:35 +00:00
Nick Kralevich
11ebbc8437 libc: remove bcmp prototype
AFAIK, bionic only ever provided an implementation of bcmp
for x86, and even then, the code was never actually compiled.
Remove the prototype.

bcmp() has been obsoleted and replaced by memcmp()

Change-Id: I549d02ab6a9241a9acbbbfade0d98a9a02c2eaee
2013-02-21 17:17:09 -08:00
Elliott Hughes
448f1f08c2 am caeb0bf5: am 719d46f8: am a9ff09d1: Merge "Fix raise(3) so it works in signal handlers."
* commit 'caeb0bf53c8299d53f246573392fd688cae8a625':
  Fix raise(3) so it works in signal handlers.
2013-02-21 15:19:55 -08:00
Elliott Hughes
caeb0bf53c am 719d46f8: am a9ff09d1: Merge "Fix raise(3) so it works in signal handlers."
* commit '719d46f8ac4f2af89f8e8927db8c460b91622417':
  Fix raise(3) so it works in signal handlers.
2013-02-21 14:21:13 -08:00
Elliott Hughes
719d46f8ac am a9ff09d1: Merge "Fix raise(3) so it works in signal handlers."
* commit 'a9ff09d1fc22292adc12cf99d4d44448d619b3cf':
  Fix raise(3) so it works in signal handlers.
2013-02-21 14:17:47 -08:00
Elliott Hughes
a9ff09d1fc Merge "Fix raise(3) so it works in signal handlers." 2013-02-21 20:05:35 +00:00
Elliott Hughes
fae89fc404 Fix raise(3) so it works in signal handlers.
We could special-case raise(3) in non-threaded programs, but the more
conservative course is to make pthread_kill(3) work in signal handlers
at the cost of a race shared by other C libraries.

Change-Id: I59fb23d03bdabf403435e731704b33acdf3e0234
2013-02-21 11:22:23 -08:00
The Android Automerger
8f8bc0664a merge in master-release history after reset to master 2013-02-21 08:30:27 -08:00
Jean-Baptiste Queru
55779c4316 am aa96db5b: (-s ours) am 818b1423: (-s ours) Fix mako builds. Do not merge.
* commit 'aa96db5ba0a39d8fac0925871632031d21e1ab3e':
  Fix mako builds. Do not merge.
2013-02-20 14:03:19 -08:00
Jean-Baptiste Queru
aa96db5ba0 am 818b1423: (-s ours) Fix mako builds. Do not merge.
* commit '818b1423d228e478245a1b0d2fe687606ea1741c':
  Fix mako builds. Do not merge.
2013-02-20 14:00:43 -08:00
Ed Heyl
37d6d8e933 Merge remote-tracking branch 'goog/jb-mr2-release' 2013-02-20 13:47:20 -08:00
Jean-Baptiste Queru
818b1423d2 Fix mako builds. Do not merge.
Revert "Regenerate msm_ion.h."

This reverts commit 3fac8f7f49.
2013-02-20 12:47:58 -08:00
The Android Automerger
44f8f7b86a merge in jb-mr2-release history after reset to master 2013-02-20 05:55:13 -08:00
Elliott Hughes
cae2173952 am ccd40316: Merge "use architecture-specific ssize_t definition"
* commit 'ccd403161cdcc88a0ffcaecd1bc707e2d4c88a1c':
  use architecture-specific ssize_t definition
2013-02-19 14:37:19 -08:00
Elliott Hughes
77272874f8 am 593abb7b: Merge "stdlib: atexit: include <sys/cdefs.h>"
* commit '593abb7b593a34d501c90512953a7368add6d185':
  stdlib: atexit: include <sys/cdefs.h>
2013-02-19 14:19:33 -08:00
Elliott Hughes
ccd403161c Merge "use architecture-specific ssize_t definition" 2013-02-19 22:13:53 +00:00
Thorsten Glaser
c641cafbc3 use architecture-specific ssize_t definition
after change 32822 was rejected, this is the more light-weight
version of the fix: libc/include/sys/types.h already - via
libc/kernel/common/linux/posix_types.h - includes a definition
of __kernel_ssize_t from libc/kernel/arch-*/asm/posix_types.h
which is architecture-specific, toolchain-agnostic and also
gets rid of the gcc -Wformat warning (which it issues correctly,
since this i̲s̲ indeed a bug in bionic)

Change-Id: Ie4503ab16628bc25815a836d07556f665e9795c7
2013-02-19 14:12:55 -08:00
Elliott Hughes
593abb7b59 Merge "stdlib: atexit: include <sys/cdefs.h>" 2013-02-19 21:58:18 +00:00
Elliott Hughes
5593d50c72 am eeecff72: Merge "Fix pthreads functions that should return ESRCH."
* commit 'eeecff7293efd6becf3b07b8d24cada3d820c894':
  Fix pthreads functions that should return ESRCH.
2013-02-19 13:46:37 -08:00
Elliott Hughes
eeecff7293 Merge "Fix pthreads functions that should return ESRCH." 2013-02-19 21:37:55 +00:00
Elliott Hughes
9d23e04c43 Fix pthreads functions that should return ESRCH.
imgtec pointed out that pthread_kill(3) was broken, but most of the
other functions that ought to return ESRCH for invalid/exited threads
were equally broken.

Change-Id: I96347f6195549aee0c72dc39063e6c5d06d2e01f
2013-02-19 12:21:41 -08:00
Elliott Hughes
6f55284103 am b5862d4d: Merge "Update linker README."
* commit 'b5862d4d8a1246dc1e21695cf3bacafefedf0428':
  Update linker README.
2013-02-19 11:39:40 -08:00
Elliott Hughes
b5862d4d8a Merge "Update linker README." 2013-02-19 19:14:26 +00:00
Elliott Hughes
aa772a33ba Update linker README.
Change-Id: Icaa353e9cf1848c86e7445f4ad590bdab44f7941
2013-02-19 11:13:44 -08:00
The Android Automerger
82232f0e6b merge in jb-mr2-release history after reset to master 2013-02-19 09:50:40 -08:00
Chirayu Desai
61ba9b526b stdlib: atexit: include <sys/cdefs.h>
Change-Id: Ib9eb167710a021e0a2b5c77a06a9338cdc748e6d
2013-02-16 21:23:27 +05:30
Elliott Hughes
4174337525 am 7f67f78a: Merge "dalvik is big enough and ugly enough to handle System.arraycopy itself."
* commit '7f67f78ad5c3da689997edd8fbb5afb6e5fc6355':
  dalvik is big enough and ugly enough to handle System.arraycopy itself.
2013-02-15 17:00:58 -08:00
Elliott Hughes
7f67f78ad5 Merge "dalvik is big enough and ugly enough to handle System.arraycopy itself." 2013-02-16 00:40:21 +00:00
Elliott Hughes
6af19237b7 am 39804dcd: Merge "Fix the pthread_setname_np test."
* commit '39804dcde6c1c596285432b28cdb09382ce59663':
  Fix the pthread_setname_np test.
2013-02-15 14:48:05 -08:00
Elliott Hughes
081318e355 dalvik is big enough and ugly enough to handle System.arraycopy itself.
Change-Id: I4b54a15ea101c0c6bab06cfb11e4178f5a57fc05
2013-02-15 14:27:52 -08:00
Elliott Hughes
39804dcde6 Merge "Fix the pthread_setname_np test." 2013-02-15 21:55:22 +00:00
Elliott Hughes
40eabe24e4 Fix the pthread_setname_np test.
Fix the pthread_setname_np test to take into account that emulator kernels are
so old that they don't support setting the name of other threads.

The CLONE_DETACHED thread is obsolete since 2.5 kernels.

Rename kernel_id to tid.

Fix the signature of __pthread_clone.

Clean up the clone and pthread_setname_np implementations slightly.

Change-Id: I16c2ff8845b67530544bbda9aa6618058603066d
2013-02-15 12:08:59 -08:00
Elliott Hughes
15c401d4ac am 3e3b239d: Merge "Fix the stack protector death test."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '3e3b239d2be0c5a92e91385f4f10b8f7da8d2837':
  Fix the stack protector death test.
2013-02-14 18:22:16 -08:00
Elliott Hughes
3e3b239d2b Merge "Fix the stack protector death test." 2013-02-15 02:10:29 +00:00
Elliott Hughes
7fd803cdfa Fix the stack protector death test.
Now __stack_chk_fail calls abort(3) directly, we terminate with
SIGSEGV rather than SIGABRT. (Because of the workaround for the
debuggerd lossage in the abort(3) implementation, which was the
motivation for switching __stack_chk_fail over to abort(3).)

Also clarify the comment on the weird pthread death test, so it
doesn't get copied and pasted onto real death tests.

Change-Id: Ie832eaded61359c99e7a10db65e28f35e8f63eed
2013-02-14 16:35:58 -08:00
Elliott Hughes
56a007c157 am 0a2cb815: Merge "Simplify __stack_chk_fail, and fix it so we get debuggerd stack traces."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '0a2cb815974ea96af664fa966079966a08916722':
  Simplify __stack_chk_fail, and fix it so we get debuggerd stack traces.
2013-02-14 15:59:15 -08:00
Elliott Hughes
0a2cb81597 Merge "Simplify __stack_chk_fail, and fix it so we get debuggerd stack traces." 2013-02-14 23:50:13 +00:00
Nick Kralevich
f93de61e7b am b128f49f: Merge "bionic: Add securebits.h"
# Via Gerrit Code Review (1) and Nick Kralevich (1)
* commit 'b128f49fd58beecc5287ddff6366a97e5aa2e468':
  bionic: Add securebits.h
2013-02-14 15:05:22 -08:00
Nick Kralevich
b128f49fd5 Merge "bionic: Add securebits.h" 2013-02-14 22:49:28 +00:00
Elliott Hughes
fb7eb5e07f Simplify __stack_chk_fail, and fix it so we get debuggerd stack traces.
Bug: 2487269
Change-Id: Iec5e470fc22cd9108404f634a9d4baa2c7b7f58f
2013-02-14 14:37:34 -08:00
Nick Kralevich
0276656daa bionic: Add securebits.h
Change-Id: I2031796b9be117558b80246498b29736492cf269
2013-02-14 14:03:37 -08:00
Elliott Hughes
7331af73f2 am c2d26ce7: Merge "Turn on -Werror for ssp.cpp."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'c2d26ce7452e69b9492cd28b7c0271866798658b':
  Turn on -Werror for ssp.cpp.
2013-02-14 11:23:48 -08:00
Elliott Hughes
c2d26ce745 Merge "Turn on -Werror for ssp.cpp." 2013-02-14 19:17:33 +00:00
Elliott Hughes
dc5ec07158 Turn on -Werror for ssp.cpp.
libc_bionic.a is already compiled -Werror, but this one file gets
compiled into its own library because it needs to be compiled with
-fno-stack-protector.

Change-Id: I273c535ab5c73ccaccbcf793fda1f788a2589abe
2013-02-14 11:15:58 -08:00
Nick Kralevich
dfa1e59b7d am fe33fc79: Merge "fix compiler warning."
# Via Gerrit Code Review (1) and Nick Kralevich (1)
* commit 'fe33fc790a16d85ce4109a4575d6fdcd88d42023':
  fix compiler warning.
2013-02-14 09:59:09 -08:00
Nick Kralevich
fe33fc790a Merge "fix compiler warning." 2013-02-14 17:48:30 +00:00
Nick Kralevich
a261afb7c9 fix compiler warning.
bionic/libc/bionic/ssp.cpp:41:31: warning: converting to non-pointer type 'uintptr_t {aka unsigned int}' from NULL [-Wconversion-null]

Change-Id: Id154ed4a99520cca64ffd3dbe4d743db6e2da28a
2013-02-14 09:44:13 -08:00
The Android Automerger
8561261b5e merge in jb-mr2-release history after reset to master 2013-02-14 05:55:17 -08:00
Elliott Hughes
2346559cb4 am 6b97c7dc: Merge "ffs was not being built for x86."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '6b97c7dc0376577276abbdacc52e5cc11cf8a7fd':
  ffs was not being built for x86.
2013-02-13 17:08:07 -08:00
Elliott Hughes
4c897b692d am 97f2ec50: Merge "Stop using the local gcc."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '97f2ec50a7993d2db7ef4511a251e6823f5dba10':
  Stop using the local gcc.
2013-02-13 17:08:07 -08:00
Elliott Hughes
6b97c7dc03 Merge "ffs was not being built for x86." 2013-02-14 00:49:47 +00:00
Elliott Hughes
97f2ec50a7 Merge "Stop using the local gcc." 2013-02-14 00:48:53 +00:00
Elliott Hughes
26a13bcfb8 Stop using the local gcc.
Some build servers are still out of date, so we're better off having
the known quanitity of the consistently out-of-date prebuilt host gcc.

Change-Id: Ib6308ae926ffa1ac5d95efbbf32052344c17a6b8
2013-02-13 16:32:47 -08:00
Elliott Hughes
d2547040a1 ffs was not being built for x86.
Change-Id: I53e92273664a4d0a13536c2fa1aeb87e1f3cf4e8
2013-02-13 16:31:52 -08:00
Elliott Hughes
5ca3e4a349 am 95b1ea1b: Merge "Add a bunch more missing ENDs to assembler routines."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '95b1ea1bb3c93369d96045420b91b7617992d8bd':
  Add a bunch more missing ENDs to assembler routines.
2013-02-13 15:27:11 -08:00
Elliott Hughes
a7603ff87a am 2fee0340: Merge "Everyone has CLZ."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '2fee0340a93637507de6a860914dc3e14d44ee94':
  Everyone has CLZ.
2013-02-13 15:27:10 -08:00
Elliott Hughes
95b1ea1bb3 Merge "Add a bunch more missing ENDs to assembler routines." 2013-02-13 23:18:26 +00:00
Elliott Hughes
6719500dbd Add a bunch more missing ENDs to assembler routines.
This isn't everything; I've missed out those x86 files that are

Change-Id: Idb7bb1a68796d6c0b70ea2b5c3300e49da6c62d2
2013-02-13 15:12:32 -08:00
Elliott Hughes
2fee0340a9 Merge "Everyone has CLZ." 2013-02-13 23:10:19 +00:00
Elliott Hughes
73964c592c Everyone has CLZ.
Even armv5 had CLZ.

Change-Id: I51bc8d1166d09940fd0d3f4c7717edf26977082c
2013-02-13 14:40:48 -08:00
Elliott Hughes
8ca1da6e71 resolved conflicts for merge of 62727429 to master
Change-Id: I8a3d167f3ef279a7c46cb8fb90c9477beff84d8e
2013-02-13 13:51:54 -08:00
Elliott Hughes
627274292e Merge "Update getnameinfo.c, remove dead code, and fix error reporting." 2013-02-13 21:15:05 +00:00
Elliott Hughes
d8213bb573 Update getnameinfo.c, remove dead code, and fix error reporting.
Also add a unit test for the salen size checking.

Bug: 1889275
Change-Id: I8ec4107df9e2e9a8571e8915525249c6e44b98ad
2013-02-13 13:11:11 -08:00
Elliott Hughes
6aca0ce367 am f659b3c9: Merge "Add a test that getaddrinfo works when hints are NULL."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'f659b3c90d8b55a44945af807364a5df0475bd0e':
  Add a test that getaddrinfo works when hints are NULL.
2013-02-13 09:18:45 -08:00
Elliott Hughes
f659b3c90d Merge "Add a test that getaddrinfo works when hints are NULL." 2013-02-13 17:04:01 +00:00
Elliott Hughes
d3b9d11369 Add a test that getaddrinfo works when hints are NULL.
Bug: 1827911
Change-Id: I9e1b774c44c10a8c5391bcf3baf1607f50eaf214
2013-02-13 08:22:07 -08:00
Elliott Hughes
2db16ea38e am 3002d64b: Merge "Everyone has a TLS register."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '3002d64bcd4644456803dd0547d20b39e14be02c':
  Everyone has a TLS register.
2013-02-13 08:11:24 -08:00
Elliott Hughes
32a2340067 am 9cbe1e63: Merge "Fix __pthread_clone and __bionic_clone error handling on x86."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '9cbe1e63ddf8b61b8ded3d357a30c3d6ed67906f':
  Fix __pthread_clone and __bionic_clone error handling on x86.
2013-02-13 08:11:23 -08:00
Elliott Hughes
3002d64bcd Merge "Everyone has a TLS register." 2013-02-13 16:03:32 +00:00
Elliott Hughes
9cbe1e63dd Merge "Fix __pthread_clone and __bionic_clone error handling on x86." 2013-02-13 16:02:10 +00:00
The Android Automerger
d41c26e2d8 merge in jb-mr2-release history after reset to master 2013-02-13 05:55:21 -08:00
Elliott Hughes
b6032515a0 Fix __pthread_clone and __bionic_clone error handling on x86.
Bug: 3461078
Change-Id: I93c151e27411211dd32717f206745c62c08c21ee
2013-02-12 23:02:33 -08:00
Elliott Hughes
91a9925998 Everyone has a TLS register.
Change-Id: Id7cdf67087aa7d5074c9c59b7e595bc391d9f146
2013-02-12 21:56:42 -08:00
Elliott Hughes
a244e4eb61 am baf2c09f: Merge "Put the right number of Ls after 64-bit constants."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'baf2c09f3f47a35b195eb83cc7acffeaf4b6d4e9':
  Put the right number of Ls after 64-bit constants.
2013-02-12 20:38:05 -08:00
Elliott Hughes
baf2c09f3f Merge "Put the right number of Ls after 64-bit constants." 2013-02-13 04:20:43 +00:00
Elliott Hughes
5227663d2f Put the right number of Ls after 64-bit constants.
Change-Id: I9f96259f21e42a84b9ebe20655fe0edb31f41892
2013-02-12 20:18:49 -08:00
Elliott Hughes
761b344bff am 59aeff94: Merge "Use ENTRY/END in custom x86 assembler too."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '59aeff94178e03c908791695f6dd4c9bd8c7115b':
  Use ENTRY/END in custom x86 assembler too.
2013-02-12 20:17:26 -08:00
Elliott Hughes
59aeff9417 Merge "Use ENTRY/END in custom x86 assembler too." 2013-02-13 04:01:01 +00:00
Elliott Hughes
bc35693e6b am 07f7e62a: Merge "Clean up pthread_create."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '07f7e62a259d13208d6186670d3748e339690127':
  Clean up pthread_create.
2013-02-12 18:20:10 -08:00
Elliott Hughes
d8ceaf5afa am 899d6528: Merge "Give up trying to build the pthread_setname_np tests for glibc."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '899d65283db0c78537ed27aa3a6c019000ec05da':
  Give up trying to build the pthread_setname_np tests for glibc.
2013-02-12 18:20:09 -08:00
Elliott Hughes
07f7e62a25 Merge "Clean up pthread_create." 2013-02-13 01:56:46 +00:00
Elliott Hughes
899d65283d Merge "Give up trying to build the pthread_setname_np tests for glibc." 2013-02-13 01:56:07 +00:00
Elliott Hughes
9701d4b701 Give up trying to build the pthread_setname_np tests for glibc.
Looks like using /usr/bin/g++ isn't enough on some of our older
build servers.

Change-Id: Id7681fb164eb6324b10050f6bb237393e95b41e9
2013-02-12 17:55:22 -08:00
Elliott Hughes
4b4a882428 Clean up pthread_create.
Bug: 3461078
Change-Id: I082122a86d7692cd58f4145539241be026258ee0
2013-02-12 17:15:59 -08:00
Elliott Hughes
dde1d876b1 am 991ee7d8: Merge "Simplify pthread_create, using more public API."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '991ee7d89574e8d04c8863a2850613073a2f96b3':
  Simplify pthread_create, using more public API.
2013-02-12 16:52:26 -08:00
Elliott Hughes
991ee7d895 Merge "Simplify pthread_create, using more public API." 2013-02-13 00:39:41 +00:00
Elliott Hughes
6d33918207 Simplify pthread_create, using more public API.
Change-Id: I08e65ba88ed01436223e4e528631c9e41ec0e7f4
2013-02-12 16:36:04 -08:00
Elliott Hughes
f4e258c22e am 4912782c: Merge "Really set errno if __pthread_clone fails."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '4912782c6af7169686acc9553fb0bb33251b0d0d':
  Really set errno if __pthread_clone fails.
2013-02-12 16:23:25 -08:00
Elliott Hughes
78715fca0b am 558a8b1d: Merge "Revert "Revert "More pthreads cleanup."""
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '558a8b1d3b31300941af78232f2f7f4cb4e933b9':
  Revert "Revert "More pthreads cleanup.""
2013-02-12 16:23:24 -08:00
Elliott Hughes
4912782c6a Merge "Really set errno if __pthread_clone fails." 2013-02-13 00:12:42 +00:00
Elliott Hughes
9f878c2fca Really set errno if __pthread_clone fails.
If r0 == 0, we're the child. If r0 > 0, we're the parent.
Otherwise set errno.

The __bionic_clone code I copy & pasted was wrong. This patch
fixes both.

Bug: 3461078
Change-Id: Ibb7d6cc7e54e666841f2f0dc59a141a0b31982e4
2013-02-12 16:07:06 -08:00
Elliott Hughes
558a8b1d3b Merge "Revert "Revert "More pthreads cleanup.""" 2013-02-13 00:05:24 +00:00
Elliott Hughes
3e898476c7 Revert "Revert "More pthreads cleanup.""
This reverts commit 6f94de3ca4

(Doesn't try to increase the number of TLS slots; that leads to
an inability to boot. Adds more tests.)

Change-Id: Ia7d25ba3995219ed6e686463dbba80c95cc831ca
2013-02-12 15:27:18 -08:00
Dima Zavin
ac480b422a am 3fa67465: Merge "add factory property file definition"
# By Andrew Boie
# Via Andrew Boie (1) and Gerrit Code Review (1)
* commit '3fa67465365baf87f751bea09847e32f01005788':
  add factory property file definition
2013-02-12 11:12:49 -08:00
Dima Zavin
3fa6746536 Merge "add factory property file definition" 2013-02-12 18:33:26 +00:00
The Android Automerger
1bb43b02ad merge in jb-mr2-release history after reset to master 2013-02-12 07:10:11 -08:00
Elliott Hughes
191f880bdf am bfa199ab: am fcaf4e9f: Merge "Revert "More pthreads cleanup.""
# Via Gerrit Code Review (2) and Android Git Automerger (1)
* commit 'bfa199ab4019a7de9b95cd3db86c4d7176438803':
  Revert "More pthreads cleanup."
2013-02-11 22:20:39 -08:00
Elliott Hughes
bfa199ab40 am fcaf4e9f: Merge "Revert "More pthreads cleanup.""
# Via Gerrit Code Review
* commit 'fcaf4e9f9b735e053469c7ecbf63584e10fd67a7':
  Revert "More pthreads cleanup."
2013-02-11 22:16:56 -08:00
Elliott Hughes
fcaf4e9f9b Merge "Revert "More pthreads cleanup."" 2013-02-12 06:07:32 +00:00
Elliott Hughes
6f94de3ca4 Revert "More pthreads cleanup."
This reverts commit 2a1bb4e646

Change-Id: Ia443d0748015c8e9fc3121e40e68258616767b51
2013-02-12 06:06:22 +00:00
Elliott Hughes
23731e841a am a2a9817f: am 85f491f9: Merge "More pthreads cleanup."
# Via Android Git Automerger (1) and others
* commit 'a2a9817f4c08d1f56d90f02ed13f531e8093f8e8':
  More pthreads cleanup.
2013-02-11 18:39:32 -08:00
Elliott Hughes
a2a9817f4c am 85f491f9: Merge "More pthreads cleanup."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '85f491f96da3b79d0d7cc5368bc1f649e1a82340':
  More pthreads cleanup.
2013-02-11 18:35:56 -08:00
Elliott Hughes
85f491f96d Merge "More pthreads cleanup." 2013-02-12 02:33:08 +00:00
Elliott Hughes
13478d856a am 605cc293: am 83bf28e6: Merge "Fix MIPS build."
# Via Android Git Automerger (1) and others
* commit '605cc29358c9a6d575d097fd4b78a483c9dbf89e':
  Fix MIPS build.
2013-02-11 18:23:17 -08:00
Elliott Hughes
605cc29358 am 83bf28e6: Merge "Fix MIPS build."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '83bf28e6a38dbf28707147b50d29e81f4b555046':
  Fix MIPS build.
2013-02-11 18:19:34 -08:00
Elliott Hughes
0f6882f43d am 8e2b28cb: am c56be54a: Merge "Use ENTRY/END in ARM __get_sp."
# Via Android Git Automerger (1) and others
* commit '8e2b28cb6c16d8a5671ccb333965bb56b2990d7a':
  Use ENTRY/END in ARM __get_sp.
2013-02-11 18:15:13 -08:00
Elliott Hughes
a2b8b833d2 am c440d244: am cae7b2cf: Merge "Fix __pthread_clone on ARM to set errno on failure."
# Via Android Git Automerger (1) and others
* commit 'c440d2442361b78196d2935469ecf78d5c3470e5':
  Fix __pthread_clone on ARM to set errno on failure.
2013-02-11 18:15:07 -08:00
Elliott Hughes
b940711587 am 03798dd2: am 1fea0f25: Merge "Clean up ARM assembler files to use ENTRY/END."
# Via Android Git Automerger (1) and others
* commit '03798dd23cd3d1dc1ee4c4b0472c75369aa1e10f':
  Clean up ARM assembler files to use ENTRY/END.
2013-02-11 18:15:04 -08:00
Elliott Hughes
83bf28e6a3 Merge "Fix MIPS build." 2013-02-12 02:08:05 +00:00
Elliott Hughes
ba342c11ad Fix MIPS build.
Change-Id: I4863f21f3c2fd597ea36cb7096fc72db808643a3
2013-02-11 18:06:23 -08:00
Elliott Hughes
5bb4f54b4d am 6b73d13f: am 2d3e7233: Merge "Revert "Revert "Pull the pthread_key_t functions out of pthread.c."""
# Via Android Git Automerger (1) and others
* commit '6b73d13fa414afeecba6718bf724e8ac922bac39':
  Revert "Revert "Pull the pthread_key_t functions out of pthread.c.""
2013-02-11 17:34:32 -08:00
Elliott Hughes
1b21249d5a am e4b08318: am 8397cdba: Merge "Revert "Pull the pthread_key_t functions out of pthread.c.""
# Via Gerrit Code Review (2) and Android Git Automerger (1)
* commit 'e4b08318c13fac774b233a5459427563d2983f79':
  Revert "Pull the pthread_key_t functions out of pthread.c."
2013-02-11 17:34:30 -08:00
Elliott Hughes
376bce0097 am 024246ec: am 09e89c3c: Merge "Pull the pthread_key_t functions out of pthread.c."
# Via Android Git Automerger (1) and others
* commit '024246ec274e30bb4a24468d8319620534e13b34':
  Pull the pthread_key_t functions out of pthread.c.
2013-02-11 17:34:29 -08:00
Elliott Hughes
8e2b28cb6c am c56be54a: Merge "Use ENTRY/END in ARM __get_sp."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'c56be54a18eff7e1c35c9a19cfc8b84a80780b73':
  Use ENTRY/END in ARM __get_sp.
2013-02-11 17:27:40 -08:00
Elliott Hughes
bdff26df27 Use ENTRY/END in custom x86 assembler too.
Change-Id: Ic2e482e5daff29c65d3b2ab0b2111c996bbc6226
2013-02-11 17:08:16 -08:00
Elliott Hughes
c56be54a18 Merge "Use ENTRY/END in ARM __get_sp." 2013-02-12 00:59:43 +00:00
Elliott Hughes
d7a3a403c1 Use ENTRY/END in ARM __get_sp.
Change-Id: If2f159b266f5fa4ad9d188a17d4cd318b605e446
2013-02-11 16:58:34 -08:00
Elliott Hughes
c440d24423 am cae7b2cf: Merge "Fix __pthread_clone on ARM to set errno on failure."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'cae7b2cfb509e7d5d10a8085b1ec319daaef768f':
  Fix __pthread_clone on ARM to set errno on failure.
2013-02-11 16:55:16 -08:00
Elliott Hughes
cae7b2cfb5 Merge "Fix __pthread_clone on ARM to set errno on failure." 2013-02-12 00:49:28 +00:00
Elliott Hughes
5e3fc43dde Fix __pthread_clone on ARM to set errno on failure.
MIPS and x86 appear to have been correct already.

(Also fix unit tests that ASSERT_EQ with errno so that the
arguments are in the retarded junit order.)

Bug: 3461078
Change-Id: I2418ea98927b56e15b4ba9cfec97f5e7094c6291
2013-02-11 16:39:10 -08:00
Elliott Hughes
03798dd23c am 1fea0f25: Merge "Clean up ARM assembler files to use ENTRY/END."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '1fea0f258a45d918fe5ae8e9769f45c0348bd095':
  Clean up ARM assembler files to use ENTRY/END.
2013-02-11 16:17:48 -08:00
Elliott Hughes
1fea0f258a Merge "Clean up ARM assembler files to use ENTRY/END." 2013-02-12 00:05:27 +00:00
Elliott Hughes
f94fd3ccc6 Clean up ARM assembler files to use ENTRY/END.
We also don't need legacy syscall support (non-"swi 0").

Change-Id: Id1012e8ca18bf13f3f4e42200f39ba0e2e632cbf
2013-02-11 15:36:59 -08:00
Elliott Hughes
2a1bb4e646 More pthreads cleanup.
POSIX says pthread_create returns EAGAIN, not ENOMEM.

Also pull pthread_attr_t functions into their own file.

Also pull pthread_setname_np into its own file.

Also remove unnecessary #includes from pthread_key.cpp.

Also account for those pthread keys used internally by bionic,
so they don't count against the number of keys available to user
code. (They do with glibc, but glibc's limit is the much more
generous 1024.)

Also factor out the common errno-restoring idiom to reduce gotos.

Bug: 6702535
Change-Id: I555e66efffcf2c1b5a2873569e91489156efca42
2013-02-11 14:56:39 -08:00
Elliott Hughes
6b73d13fa4 am 2d3e7233: Merge "Revert "Revert "Pull the pthread_key_t functions out of pthread.c."""
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '2d3e72336e76180fb00822386da4f14203d117ce':
  Revert "Revert "Pull the pthread_key_t functions out of pthread.c.""
2013-02-11 12:38:30 -08:00
Elliott Hughes
2d3e72336e Merge "Revert "Revert "Pull the pthread_key_t functions out of pthread.c.""" 2013-02-11 20:21:59 +00:00
Elliott Hughes
e4b08318c1 am 8397cdba: Merge "Revert "Pull the pthread_key_t functions out of pthread.c.""
# Via Gerrit Code Review
* commit '8397cdba9424febeaed4068829a5b0174ee1138c':
  Revert "Pull the pthread_key_t functions out of pthread.c."
2013-02-11 12:21:50 -08:00
Elliott Hughes
44b53ad681 Revert "Revert "Pull the pthread_key_t functions out of pthread.c.""
This reverts commit 6260553d48

(Removing the accidental libm/Android.mk change.)

Change-Id: I6cddd9857c31facc05636e8221505b3d2344cb75
2013-02-11 12:20:33 -08:00
Elliott Hughes
8397cdba94 Merge "Revert "Pull the pthread_key_t functions out of pthread.c."" 2013-02-11 20:18:28 +00:00
Elliott Hughes
6260553d48 Revert "Pull the pthread_key_t functions out of pthread.c."
This reverts commit ad59322ae4

somehow my unfinished libm/Android.mk change got into here.

Change-Id: I46be626c5269d60fb1ced9862f2ebaa380b4e0af
2013-02-11 20:18:16 +00:00
Elliott Hughes
024246ec27 am 09e89c3c: Merge "Pull the pthread_key_t functions out of pthread.c."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '09e89c3ced51d846e13c2508fbb6812bb61475cd':
  Pull the pthread_key_t functions out of pthread.c.
2013-02-11 12:05:45 -08:00
Elliott Hughes
09e89c3ced Merge "Pull the pthread_key_t functions out of pthread.c." 2013-02-11 20:02:29 +00:00
Elliott Hughes
ad59322ae4 Pull the pthread_key_t functions out of pthread.c.
This was originally motivated by noticing that we were setting the
wrong bits for the well-known tls entries. That was a harmless bug
because none of the well-known tls entries has a destructor, but
it's best not to leave land mines lying around.

Also add some missing POSIX constants, a new test, and fix
pthread_key_create's return value when we hit the limit.

Change-Id: Ife26ea2f4b40865308e8410ec803b20bcc3e0ed1
2013-02-11 12:00:48 -08:00
The Android Automerger
c087b7a80f merge in jb-mr2-release history after reset to master 2013-02-11 07:10:25 -08:00
Elliott Hughes
63358ae068 am 8f509e8b: am 9a9bb243: Merge "Switch to using AT_RANDOM for the stack guards."
# Via Android Git Automerger (1) and others
* commit '8f509e8be11876023d4bcb3e827ca096f22fc0c5':
  Switch to using AT_RANDOM for the stack guards.
2013-02-08 11:43:09 -08:00
Elliott Hughes
8f509e8be1 am 9a9bb243: Merge "Switch to using AT_RANDOM for the stack guards."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '9a9bb243b50be5e3910b8edad72327bc216e72d0':
  Switch to using AT_RANDOM for the stack guards.
2013-02-08 11:22:05 -08:00
Elliott Hughes
9a9bb243b5 Merge "Switch to using AT_RANDOM for the stack guards." 2013-02-08 19:17:33 +00:00
Elliott Hughes
d3920b3a99 Switch to using AT_RANDOM for the stack guards.
Bug: 7959813
Change-Id: I8db4b8912ba649bfe668c6f22aa44690ddd401a2
2013-02-08 11:16:13 -08:00
Elliott Hughes
01cf1678e7 am 636d21f3: am 03579da2: Merge "Add a few more missing libm long double stubs."
# Via Android Git Automerger (1) and others
* commit '636d21f32b8aa9cd3ef7c91c729179e53daddc3a':
  Add a few more missing libm long double stubs.
2013-02-07 20:29:44 -08:00
Nick Kralevich
5eef90699d am f156b901: am fa75fce5: Merge "update xattr.h"
# Via Android Git Automerger (1) and others
* commit 'f156b901b1e51971192c573444b5b7f63e6bc22a':
  update xattr.h
2013-02-07 20:29:43 -08:00
Elliott Hughes
7d2bc92717 am 86e4e234: am 964886af: Merge "Remove dead code from gensyscalls.py."
# Via Android Git Automerger (1) and others
* commit '86e4e23408c157176d20b4baca00eb4d2f7566dc':
  Remove dead code from gensyscalls.py.
2013-02-07 20:29:42 -08:00
Elliott Hughes
636d21f32b am 03579da2: Merge "Add a few more missing libm long double stubs."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '03579da2d91a57a0f22da14e4216ecaf811869f4':
  Add a few more missing libm long double stubs.
2013-02-07 18:15:06 -08:00
Elliott Hughes
03579da2d9 Merge "Add a few more missing libm long double stubs." 2013-02-08 02:02:39 +00:00
Elliott Hughes
170dbe25d6 Add a few more missing libm long double stubs.
Change-Id: I6c44b9f3eee730253a958d6cefdac99e6f79da3e
2013-02-07 17:45:11 -08:00
Nick Kralevich
f156b901b1 am fa75fce5: Merge "update xattr.h"
# Via Gerrit Code Review (1) and Nick Kralevich (1)
* commit 'fa75fce56641255a571b8b472f010863c3095b70':
  update xattr.h
2013-02-07 16:50:08 -08:00
Nick Kralevich
fa75fce566 Merge "update xattr.h" 2013-02-08 00:42:29 +00:00
Nick Kralevich
b184d3ba33 update xattr.h
Change-Id: Ibd91167ba56e2692359b92fe3108da271f0c2e38
2013-02-07 16:23:16 -08:00
Elliott Hughes
86e4e23408 am 964886af: Merge "Remove dead code from gensyscalls.py."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '964886afa339959aedad1c09af738df4ffa4091d':
  Remove dead code from gensyscalls.py.
2013-02-07 14:57:41 -08:00
Elliott Hughes
8c372fc77e am 5bb67760: am f6afd3b6: Merge "Fix x86 build, remove void* arithmetic."
# Via Android Git Automerger (1) and others
* commit '5bb67760f0baddd815334bf87be79f0e7fd9fafe':
  Fix x86 build, remove void* arithmetic.
2013-02-07 14:45:28 -08:00
Elliott Hughes
dd698ec89a am 8ddef40d: am 59e9a496: Merge "__progname should be const char*, not char*."
# Via Android Git Automerger (1) and others
* commit '8ddef40dad42372ac5596d48f327f162745d7bb8':
  __progname should be const char*, not char*.
2013-02-07 14:45:27 -08:00
Elliott Hughes
389ebfa16f am 6f67cd22: am 2f41531f: Merge "Clean up the argc/argv/envp/auxv handling."
# Via Android Git Automerger (1) and others
* commit '6f67cd224e6ffdfa2619849eb4b9b2ff6c1e2c59':
  Clean up the argc/argv/envp/auxv handling.
2013-02-07 14:45:24 -08:00
Elliott Hughes
964886afa3 Merge "Remove dead code from gensyscalls.py." 2013-02-07 22:17:55 +00:00
Elliott Hughes
cd6780b167 Remove dead code from gensyscalls.py.
Change-Id: I0df69f8fd990f829ccbfcd5123c17b523d5a4d45
2013-02-07 14:07:00 -08:00
Elliott Hughes
5bb67760f0 am f6afd3b6: Merge "Fix x86 build, remove void* arithmetic."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'f6afd3b670e23f56bf341d12136416aee17ea249':
  Fix x86 build, remove void* arithmetic.
2013-02-07 12:34:24 -08:00
Elliott Hughes
8ddef40dad am 59e9a496: Merge "__progname should be const char*, not char*."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '59e9a496b4341fd2b11d4a01544bf7edf3d00cc5':
  __progname should be const char*, not char*.
2013-02-07 12:34:23 -08:00
Elliott Hughes
f6afd3b670 Merge "Fix x86 build, remove void* arithmetic." 2013-02-07 20:27:40 +00:00
Elliott Hughes
59e9a496b4 Merge "__progname should be const char*, not char*." 2013-02-07 20:16:32 +00:00
Elliott Hughes
646e058136 Fix x86 build, remove void* arithmetic.
Change-Id: Idc7f14af2e094ac33de315e808176237af063bb8
2013-02-07 12:16:10 -08:00
Elliott Hughes
e4ccf5a138 __progname should be const char*, not char*.
Change-Id: I8e846872c30a712fbc05c8da59ffa1cec1be31a4
2013-02-07 12:06:44 -08:00
Elliott Hughes
6f67cd224e am 2f41531f: Merge "Clean up the argc/argv/envp/auxv handling."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '2f41531ff9f48dbdaf2ba711e14c669031728e99':
  Clean up the argc/argv/envp/auxv handling.
2013-02-07 11:56:57 -08:00
Elliott Hughes
2f41531ff9 Merge "Clean up the argc/argv/envp/auxv handling." 2013-02-07 19:48:17 +00:00
Elliott Hughes
42b2c6a5ee Clean up the argc/argv/envp/auxv handling.
There's now only one place where we deal with this stuff, it only needs to
be parsed once by the dynamic linker (rather than by each recipient), and it's
now easier for us to get hold of auxv data early on.

Change-Id: I6314224257c736547aac2e2a650e66f2ea53bef5
2013-02-07 11:44:21 -08:00
Robert Greenwalt
a7d9b655e5 Merge "dns cache per interface iteration 2" 2013-02-07 19:02:16 +00:00
Mattias Falk
c63e59039d dns cache per interface iteration 2
name server addresses are read from the dns
cache associated wih the interface on which
the request shall be done.

processes which has requested to issue dns request
using specific interface are now proxied to netd.

added methods to attach/detach a process to a specific
dns cache/interface.

added getaddrinfoforinface method which takes an
interface as an argument.

bug:4815099
bug:5465296
Change-Id: I7a8fe1980cdf99d4d296ddc5c6411f0c72162263
2013-02-07 09:40:16 -08:00
Elliott Hughes
ffc807fdb6 am 4e9d9e4d: am d4187efd: Merge "Switch x86 syscall stubs over to the ENTER/END style of the ARM stubs."
# Via Android Git Automerger (1) and others
* commit '4e9d9e4df8309493e65c5ca15513644361fda314':
  Switch x86 syscall stubs over to the ENTER/END style of the ARM stubs.
2013-02-07 09:17:14 -08:00
Elliott Hughes
4e9d9e4df8 am d4187efd: Merge "Switch x86 syscall stubs over to the ENTER/END style of the ARM stubs."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'd4187efd7f9c30ffaff4738862e3d08be27a52e9':
  Switch x86 syscall stubs over to the ENTER/END style of the ARM stubs.
2013-02-07 09:12:18 -08:00
Elliott Hughes
d4187efd7f Merge "Switch x86 syscall stubs over to the ENTER/END style of the ARM stubs." 2013-02-07 16:55:28 +00:00
The Android Automerger
a3e0f95fba merge in jb-mr2-release history after reset to master 2013-02-07 07:10:16 -08:00
Elliott Hughes
001437e861 am 09559dd0: am d32fdbaf: Merge "Add a missing logbl stub."
# Via Android Git Automerger (1) and others
* commit '09559dd04604dae062a2a50ce8dc78fd7d0e4a2f':
  Add a missing logbl stub.
2013-02-06 19:45:01 -08:00
Elliott Hughes
5dc29e97a6 am d2a6d8d7: am c9ab32e4: Merge "Improve benchmarking tool, add a few math benchmarks."
# Via Android Git Automerger (1) and others
* commit 'd2a6d8d77d1052b2cef7c0296d1396da5d3f7736':
  Improve benchmarking tool, add a few math benchmarks.
2013-02-06 19:44:53 -08:00
Elliott Hughes
7582a9c119 Switch x86 syscall stubs over to the ENTER/END style of the ARM stubs.
Also update the x86 asm.h to support this; we need it for libm assembler
anyway.

Also clean up the _FBSDID hack in <sys/cdefs.h>.

Change-Id: Iababd977b8110ec022bf7c93f4d62ece47630e7c
2013-02-06 17:08:15 -08:00
Elliott Hughes
09559dd046 am d32fdbaf: Merge "Add a missing logbl stub."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'd32fdbaf03f688497adbec885e85c0a69f7a4542':
  Add a missing logbl stub.
2013-02-06 16:30:26 -08:00
Elliott Hughes
d32fdbaf03 Merge "Add a missing logbl stub." 2013-02-07 00:09:49 +00:00
Elliott Hughes
926a307ce1 Add a missing logbl stub.
This doesn't usually matter because there's a weak reference; you'd
miss this if you stopped using s_logb.c though.

Change-Id: I912fceae327a378031cd24a64aefa9dfd84f7f90
2013-02-06 16:07:54 -08:00
Elliott Hughes
d2a6d8d77d am c9ab32e4: Merge "Improve benchmarking tool, add a few math benchmarks."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'c9ab32e4e94f770de347d6da8e7615fa131bcfbb':
  Improve benchmarking tool, add a few math benchmarks.
2013-02-06 16:06:24 -08:00
Elliott Hughes
c9ab32e4e9 Merge "Improve benchmarking tool, add a few math benchmarks." 2013-02-07 00:04:24 +00:00
Elliott Hughes
9edb3e004b Improve benchmarking tool, add a few math benchmarks.
Change-Id: I641305dd0e4ac0705381e735ed1604c5be7aa536
2013-02-06 15:47:09 -08:00
Elliott Hughes
4b9ed9e153 am 5fe28661: am d10a5a02: Merge "Remove the currently-unused i387 assembler to make way for the new."
# Via Android Git Automerger (1) and others
* commit '5fe286618ffea7cb8872a74501bf36d5036ca2a9':
  Remove the currently-unused i387 assembler to make way for the new.
2013-02-06 12:27:59 -08:00
Elliott Hughes
5fe286618f am d10a5a02: Merge "Remove the currently-unused i387 assembler to make way for the new."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'd10a5a02d1e9315dd7d780c2f221d116ced45a69':
  Remove the currently-unused i387 assembler to make way for the new.
2013-02-06 12:22:30 -08:00
Elliott Hughes
d10a5a02d1 Merge "Remove the currently-unused i387 assembler to make way for the new." 2013-02-06 19:57:51 +00:00
Elliott Hughes
1c3039301b am 0e51a861: am 4fc2a74b: Merge "Remove partial implementation of MIPS non-PIC support."
# Via Android Git Automerger (1) and others
* commit '0e51a861241ea49455c519890b34e80eccfd4709':
  Remove partial implementation of MIPS non-PIC support.
2013-02-06 11:55:06 -08:00
Elliott Hughes
0e51a86124 am 4fc2a74b: Merge "Remove partial implementation of MIPS non-PIC support."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '4fc2a74b29a12ed7fb4edc6b76db96b9d7dfa3f2':
  Remove partial implementation of MIPS non-PIC support.
2013-02-06 11:51:12 -08:00
Elliott Hughes
ef545a29ad Remove the currently-unused i387 assembler to make way for the new.
Change-Id: I37e4e8fce881246b9b028f9e1619247b1ac25261
2013-02-06 11:50:19 -08:00
Elliott Hughes
4fc2a74b29 Merge "Remove partial implementation of MIPS non-PIC support." 2013-02-06 19:40:47 +00:00
Elliott Hughes
d2b1a7311f Remove partial implementation of MIPS non-PIC support.
Change-Id: I3c287e52aae10559508174e73113367aea40e5c2
2013-02-06 11:02:28 -08:00
The Android Automerger
a9ebf6c951 merge in jb-mr2-release history after reset to master 2013-02-06 07:10:08 -08:00
Elliott Hughes
6dd470d4d0 am df8c72e5: am d7ff139f: Merge "Remove bogus extra alignment from sbrk."
# Via Android Git Automerger (1) and others
* commit 'df8c72e510ae9d0a9970a31555ea51ea0c8f19ca':
  Remove bogus extra alignment from sbrk.
2013-02-05 17:14:50 -08:00
Elliott Hughes
df8c72e510 am d7ff139f: Merge "Remove bogus extra alignment from sbrk."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'd7ff139fec5cec08793523aa97503ade2b13c38e':
  Remove bogus extra alignment from sbrk.
2013-02-05 17:09:55 -08:00
Elliott Hughes
d7ff139fec Merge "Remove bogus extra alignment from sbrk." 2013-02-06 00:57:44 +00:00
Elliott Hughes
428f5567be Remove bogus extra alignment from sbrk.
Bug: https://code.google.com/p/android/issues/detail?id=37349
Change-Id: I970c7b6be7bb7fbe6bbbe2c332f05816aeb0e09f
2013-02-05 16:10:59 -08:00
The Android Automerger
d418c2bd0a merge in jb-mr2-release history after reset to master 2013-02-05 07:10:12 -08:00
Elliott Hughes
303339e8d1 am 3cbcb87b: am a4f88fdc: Merge "Document the mallinfo struct, add missing attributes."
# Via Android Git Automerger (1) and others
* commit '3cbcb87bd1e86bd2bdb218fd324648e5bc7e8260':
  Document the mallinfo struct, add missing attributes.
2013-02-04 17:19:44 -08:00
Elliott Hughes
d1f2fafb72 am 384bdb37: am a3120aaf: Merge "Add basic tests for posix_memalign."
# Via Android Git Automerger (1) and others
* commit '384bdb3776bedaf22e8f1a3dfe7c6118b4bcefa4':
  Add basic tests for posix_memalign.
2013-02-04 17:19:34 -08:00
Elliott Hughes
b72952171b am ada6de67: (-s ours) am a1821f01: Merge "Regenerate msm_ion.h."
# Via Android Git Automerger (1) and others
* commit 'ada6de673be2a66bcfa822e0bb895219391c22a8':
  Regenerate msm_ion.h.
2013-02-04 17:00:26 -08:00
Elliott Hughes
3cbcb87bd1 am a4f88fdc: Merge "Document the mallinfo struct, add missing attributes."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'a4f88fdcf0e9be084d04048ad65671716298c3c2':
  Document the mallinfo struct, add missing attributes.
2013-02-04 13:59:15 -08:00
Elliott Hughes
a4f88fdcf0 Merge "Document the mallinfo struct, add missing attributes." 2013-02-04 21:53:18 +00:00
Elliott Hughes
24fad01755 Document the mallinfo struct, add missing attributes.
Change-Id: Ia97acce1f6a83bd8b3ba8dd20efd962bc96f35a9
2013-02-04 13:44:14 -08:00
Elliott Hughes
384bdb3776 am a3120aaf: Merge "Add basic tests for posix_memalign."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'a3120aaf2f4e20261a2ea9fd8862e2b360183fc5':
  Add basic tests for posix_memalign.
2013-02-04 13:25:55 -08:00
Elliott Hughes
a3120aaf2f Merge "Add basic tests for posix_memalign." 2013-02-04 21:19:19 +00:00
Elliott Hughes
b16b72248b Add basic tests for posix_memalign.
Change-Id: Ie34fcc87aa9e8bfc715e25161752024b11e2032a
2013-02-04 13:18:00 -08:00
Elliott Hughes
54a2587446 am 16444e0f: am 3dc6b57c: Merge "Don\'t claim there were no leaks if we weren\'t even checking."
# Via Android Git Automerger (1) and others
* commit '16444e0f85585508e74d6166b8bbb4acb19738a0':
  Don't claim there were no leaks if we weren't even checking.
2013-02-04 11:29:33 -08:00
Elliott Hughes
46b3f0bb97 am 33e4365d: am 1bf83555: Merge "Make sincosl call sinl and cosl."
# Via Android Git Automerger (1) and others
* commit '33e4365d87364d8d9c8c4427255050b5e9b8cffe':
  Make sincosl call sinl and cosl.
2013-02-04 11:29:26 -08:00
Elliott Hughes
9cdd76954d am 422c400d: am ae70b946: Merge "Update the libm/NOTICE file after the upgrade."
# Via Android Git Automerger (1) and others
* commit '422c400dd3f6f2fdf096dc33da5b7033b6a58a10':
  Update the libm/NOTICE file after the upgrade.
2013-02-04 11:29:25 -08:00
Elliott Hughes
96a5819afb am 704d9c5b: am a9dd3670: Merge "Restore bionic\'s <linux/elf-em.h>."
# Via Android Git Automerger (1) and others
* commit '704d9c5b45515cc2421bfe3b37c93117da0a1334':
  Restore bionic's <linux/elf-em.h>.
2013-02-04 11:29:24 -08:00
Elliott Hughes
fb7a4850b8 am ff26e25b: am 44badc70: Merge "Upgrade libm."
# Via Android Git Automerger (1) and others
* commit 'ff26e25b51eb672a4c8244946e0f2b4328786f55':
  Upgrade libm.
2013-02-04 11:29:22 -08:00
Elliott Hughes
ada6de673b am a1821f01: Merge "Regenerate msm_ion.h."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'a1821f015306e221e6a51e5acc27176ae2d72f6b':
  Regenerate msm_ion.h.
2013-02-04 10:52:16 -08:00
Elliott Hughes
a1821f0153 Merge "Regenerate msm_ion.h." 2013-02-04 18:42:14 +00:00
The Android Automerger
37247ae63c merge in jb-mr2-release history after reset to master 2013-02-04 07:10:06 -08:00
Elliott Hughes
3fac8f7f49 Regenerate msm_ion.h.
Bug: 8000377
Change-Id: If496d9972cb8aebfc996ac641aa762220aa71f3b
2013-02-01 18:21:08 -08:00
Elliott Hughes
16444e0f85 am 3dc6b57c: Merge "Don\'t claim there were no leaks if we weren\'t even checking."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '3dc6b57cf54b15a756551deeda33df5715e519bb':
  Don't claim there were no leaks if we weren't even checking.
2013-02-01 17:26:56 -08:00
Elliott Hughes
3dc6b57cf5 Merge "Don't claim there were no leaks if we weren't even checking." 2013-02-02 01:18:44 +00:00
Elliott Hughes
9c81892c2e Don't claim there were no leaks if we weren't even checking.
Bug: 8107016
Change-Id: I9059f1f8374ebcdf00dfc6ac74d3709f501292c9
2013-02-01 17:07:40 -08:00
Elliott Hughes
33e4365d87 am 1bf83555: Merge "Make sincosl call sinl and cosl."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '1bf835558a3f7424c805766250ace88fa70e0630':
  Make sincosl call sinl and cosl.
2013-02-01 16:50:49 -08:00
Elliott Hughes
1bf835558a Merge "Make sincosl call sinl and cosl." 2013-02-02 00:42:01 +00:00
Elliott Hughes
422c400dd3 am ae70b946: Merge "Update the libm/NOTICE file after the upgrade."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'ae70b9467419c5a9b21e06dc1dba201a112a83be':
  Update the libm/NOTICE file after the upgrade.
2013-02-01 16:35:08 -08:00
Elliott Hughes
9b05df325c Make sincosl call sinl and cosl.
Bug: 2748728
Change-Id: Id18070963b91b144758c567ad7ac80758e3a638b
2013-02-01 16:32:50 -08:00
Brian Muramatsu
322c7edba3 Remove MSM headers
Bug 7115545

These headers will be moved to hardware/qcom/msm8960 project.

Change-Id: Idb970c196be239e186e0a406d19135aa27225aca
2013-02-01 16:28:40 -08:00
Elliott Hughes
ae70b94674 Merge "Update the libm/NOTICE file after the upgrade." 2013-02-02 00:26:12 +00:00
Elliott Hughes
704d9c5b45 am a9dd3670: Merge "Restore bionic\'s <linux/elf-em.h>."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'a9dd36702f4a9d65d084387050b688b8965b13b3':
  Restore bionic's <linux/elf-em.h>.
2013-02-01 16:19:37 -08:00
Elliott Hughes
d65bd8400e Update the libm/NOTICE file after the upgrade.
Change-Id: Icf9c44402d6f86117d61307219bb1cccd288854d
2013-02-01 16:16:54 -08:00
Elliott Hughes
a9dd36702f Merge "Restore bionic's <linux/elf-em.h>." 2013-02-02 00:11:33 +00:00
Elliott Hughes
a48e1b2aac Restore bionic's <linux/elf-em.h>.
Used by <linux/audit.h>.

Change-Id: Ica4ebb7f52a7fce13c52fdff35e187ded3939382
2013-02-01 16:10:28 -08:00
Elliott Hughes
ff26e25b51 am 44badc70: Merge "Upgrade libm."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '44badc70ccd35d7690bda9f107e3e5da0b80d295':
  Upgrade libm.
2013-02-01 15:24:27 -08:00
Elliott Hughes
44badc70cc Merge "Upgrade libm." 2013-02-01 23:07:49 +00:00
Elliott Hughes
a0ee07829a Upgrade libm.
This brings us up to date with FreeBSD HEAD, fixes various bugs, unifies
the set of functions we support on ARM, MIPS, and x86, fixes "long double",
adds ISO C99 support, and adds basic unit tests.

It turns out that our "long double" functions have always been broken
for non-normal numbers. This patch fixes that by not using the upstream
implementations and just forwarding to the regular "double" implementation
instead (since "long double" on Android is just "double" anyway, which is
what BSD doesn't support).

All the tests pass on ARM, MIPS, and x86, plus glibc on x86-64.

Bug: 3169850
Bug: 8012787
Bug: https://code.google.com/p/android/issues/detail?id=6697
Change-Id: If0c343030959c24bfc50d4d21c9530052c581837
2013-02-01 14:51:19 -08:00
The Android Automerger
3c72524611 merge in jb-mr2-release history after reset to master 2013-01-31 07:10:09 -08:00
Elliott Hughes
8db7a4cb20 am 9743d7fb: am fb55511e: am e1a124e5: Merge "Say explicitly if there were no leaks."
# Via Android Git Automerger (2) and others
* commit '9743d7fb60836229fde0fbdbd9fb87c78eaa00b7':
  Say explicitly if there were no leaks.
2013-01-30 12:27:12 -08:00
Elliott Hughes
9743d7fb60 am fb55511e: am e1a124e5: Merge "Say explicitly if there were no leaks."
# Via Android Git Automerger (1) and others
* commit 'fb55511e71900476fd03f9c490dc60269d076d1f':
  Say explicitly if there were no leaks.
2013-01-30 12:11:30 -08:00
Elliott Hughes
fb55511e71 am e1a124e5: Merge "Say explicitly if there were no leaks."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'e1a124e5c93b59e2b6792e4de8a2c72dc0a78be1':
  Say explicitly if there were no leaks.
2013-01-30 12:09:14 -08:00
Elliott Hughes
e1a124e5c9 Merge "Say explicitly if there were no leaks." 2013-01-30 19:53:49 +00:00
Elliott Hughes
1d12d57416 Say explicitly if there were no leaks.
Otherwise people trying to use this are left wondering "did I not leak, or did
the leak checking code not get called when I exited?".

Change-Id: If79b225f8a2e24dd69aba1fb836bf9e81bb00efe
2013-01-30 11:38:26 -08:00
Elliott Hughes
0243962d20 am 9d43c079: am 4e882503: am a990cf5b: Merge "Clean up trailing whitespace in the kernel headers."
# Via Android Git Automerger (2) and others
* commit '9d43c079875ebd2540daccb180e9d6d0fa06061d':
  Clean up trailing whitespace in the kernel headers.
2013-01-30 10:33:52 -08:00
Elliott Hughes
9d43c07987 am 4e882503: am a990cf5b: Merge "Clean up trailing whitespace in the kernel headers."
# Via Android Git Automerger (1) and others
* commit '4e8825038e08762dcc973fa435b531f10290ffa8':
  Clean up trailing whitespace in the kernel headers.
2013-01-30 10:31:24 -08:00
Elliott Hughes
4e8825038e am a990cf5b: Merge "Clean up trailing whitespace in the kernel headers."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'a990cf5b3392c5aef767aee1e67b4d7ef651afc6':
  Clean up trailing whitespace in the kernel headers.
2013-01-30 10:28:59 -08:00
Elliott Hughes
a990cf5b33 Merge "Clean up trailing whitespace in the kernel headers." 2013-01-30 18:13:29 +00:00
Elliott Hughes
c95eb57405 Clean up trailing whitespace in the kernel headers.
And fix the scripts so they stop letting trailing whitespace through.

Change-Id: Ie109fbe1f63321e565ba0fa60fee8e9cf3a61cfc
2013-01-30 10:13:07 -08:00
The Android Automerger
4c59597089 merge in jb-mr2-release history after reset to master 2013-01-30 07:10:15 -08:00
Elliott Hughes
8dfe0daf6f am 5821e11d: am 7bc49fcf: am 323287ea: Merge "Fix valgrind build."
# Via Android Git Automerger (2) and others
* commit '5821e11d0b577fda45b81f0c9ea13c1c1c5de1a8':
  Fix valgrind build.
2013-01-29 18:11:34 -08:00
Elliott Hughes
5821e11d0b am 7bc49fcf: am 323287ea: Merge "Fix valgrind build."
# Via Android Git Automerger (1) and others
* commit '7bc49fcfc0de8ce6f386f362cdab6902e6bbe7b4':
  Fix valgrind build.
2013-01-29 18:09:26 -08:00
Elliott Hughes
7bc49fcfc0 am 323287ea: Merge "Fix valgrind build."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '323287ea7fb1d22f64b49d701b33cef9fbaf757d':
  Fix valgrind build.
2013-01-29 18:06:19 -08:00
Elliott Hughes
323287ea7f Merge "Fix valgrind build." 2013-01-30 01:50:16 +00:00
Elliott Hughes
6fe67c3cf2 Fix valgrind build.
Change-Id: Ie375d32565d10f4c0c56da5422f52b68cb069654
2013-01-29 17:49:12 -08:00
Elliott Hughes
278c059663 am 9d995d67: am 1cc09402: am f6721978: Merge "Fix x86 build to use <elf.h>."
# Via Android Git Automerger (2) and others
* commit '9d995d67217e44e022c9e5d0767634fa81f87b78':
  Fix x86 build to use <elf.h>.
2013-01-29 17:09:13 -08:00
Elliott Hughes
d9397a7c5e am 0a383883: am be11de2b: am 5fb409b7: Merge "Bring the NOTICE files back up to date."
# Via Android Git Automerger (2) and others
* commit '0a383883fa3d358ff4af6b653a0918f4cd01ef7e':
  Bring the NOTICE files back up to date.
2013-01-29 17:09:12 -08:00
Elliott Hughes
a1b8c145cb am a7f44b5a: am 172e038f: am f09f6db5: Merge "Use the NetBSD <sys/exec_elf.h>."
# Via Android Git Automerger (2) and others
* commit 'a7f44b5afe64199eeee715e613c7d42d2724232c':
  Use the NetBSD <sys/exec_elf.h>.
2013-01-29 17:09:11 -08:00
Elliott Hughes
9d995d6721 am 1cc09402: am f6721978: Merge "Fix x86 build to use <elf.h>."
# Via Android Git Automerger (1) and others
* commit '1cc09402e86b91213e06a9a349c5c510cefcf1d5':
  Fix x86 build to use <elf.h>.
2013-01-29 17:04:14 -08:00
Elliott Hughes
0a383883fa am be11de2b: am 5fb409b7: Merge "Bring the NOTICE files back up to date."
# Via Android Git Automerger (1) and others
* commit 'be11de2b52ac5f8cbb5a733821cb27002f2ea975':
  Bring the NOTICE files back up to date.
2013-01-29 17:04:13 -08:00
Elliott Hughes
a7f44b5afe am 172e038f: am f09f6db5: Merge "Use the NetBSD <sys/exec_elf.h>."
# Via Android Git Automerger (1) and others
* commit '172e038f9e5b711a77afe7e8899343215cf25c9e':
  Use the NetBSD <sys/exec_elf.h>.
2013-01-29 17:04:11 -08:00
Elliott Hughes
1cc09402e8 am f6721978: Merge "Fix x86 build to use <elf.h>."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'f67219783fa7c38c1f4f077364290d10d3aa1db4':
  Fix x86 build to use <elf.h>.
2013-01-29 16:58:45 -08:00
Elliott Hughes
be11de2b52 am 5fb409b7: Merge "Bring the NOTICE files back up to date."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '5fb409b7b0b0a4ecca5fd2a6c7dc5ce421f6b7cf':
  Bring the NOTICE files back up to date.
2013-01-29 16:42:04 -08:00
Elliott Hughes
f67219783f Merge "Fix x86 build to use <elf.h>." 2013-01-30 00:41:24 +00:00
Elliott Hughes
d070df4c74 Fix x86 build to use <elf.h>.
Change-Id: I7b697d5eae69dc08eb31471a42cb8bbe5360be76
2013-01-29 16:40:39 -08:00
Elliott Hughes
5fb409b7b0 Merge "Bring the NOTICE files back up to date." 2013-01-30 00:33:53 +00:00
Elliott Hughes
172e038f9e am f09f6db5: Merge "Use the NetBSD <sys/exec_elf.h>."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'f09f6db5dd87856bbbb7a3d465187b9d8799a788':
  Use the NetBSD <sys/exec_elf.h>.
2013-01-29 16:26:10 -08:00
Elliott Hughes
448080d372 Bring the NOTICE files back up to date.
Change-Id: I978275cf6604b90595ee79d897c0460eeadc7dc8
2013-01-29 16:25:06 -08:00
Elliott Hughes
f09f6db5dd Merge "Use the NetBSD <sys/exec_elf.h>." 2013-01-30 00:06:11 +00:00
Elliott Hughes
a6a3ac5924 Use the NetBSD <sys/exec_elf.h>.
Replace a kernel header file dependency with files from NetBSD.
They're more complete, and ELF is ELF, whether you're on Linux or a BSD.

Bug: 7973611
Change-Id: I83ee719e7efdf432ec2ddbe8be271d05b2f558d7
2013-01-29 15:02:50 -08:00
Elliott Hughes
3638641014 am f5d6238c: am 3f20ecc2: am 3db2fc5a: Merge "Don\'t collect useless stack frames; do demangle C++ symbols."
# Via Android Git Automerger (2) and others
* commit 'f5d6238c4b6433f193c6d06c1dd89110b497e449':
  Don't collect useless stack frames; do demangle C++ symbols.
2013-01-29 12:09:31 -08:00
Elliott Hughes
f5d6238c4b am 3f20ecc2: am 3db2fc5a: Merge "Don\'t collect useless stack frames; do demangle C++ symbols."
# Via Android Git Automerger (1) and others
* commit '3f20ecc20486ae8fe8d9332102b503135f83c62d':
  Don't collect useless stack frames; do demangle C++ symbols.
2013-01-29 12:07:13 -08:00
Elliott Hughes
3f20ecc204 am 3db2fc5a: Merge "Don\'t collect useless stack frames; do demangle C++ symbols."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '3db2fc5acb4894a2cb22533b165a0de1bbafc3f6':
  Don't collect useless stack frames; do demangle C++ symbols.
2013-01-29 12:03:53 -08:00
Elliott Hughes
3db2fc5acb Merge "Don't collect useless stack frames; do demangle C++ symbols." 2013-01-29 19:59:30 +00:00
Elliott Hughes
35b621c5f4 Don't collect useless stack frames; do demangle C++ symbols.
Previously, we'd collect every stack frame and then throw some away
when we came to log them. This meant that stack traces were effectively
shorter than the buffers that had been allocated for them. This patch
only stores frames we'll actually output.

Also dynamically call the C++ demangler so we don't have to try to
read mangled names. Because no one knows the mangling of operator new[]
for int arrays off the top of their head.

Bug: 7291287
Change-Id: I42b022fd7cd61675d05171de4c3b2704d058ef2a
2013-01-29 09:56:31 -08:00
The Android Automerger
2a523d1a06 merge in jb-mr2-release history after reset to master 2013-01-29 07:10:09 -08:00
Elliott Hughes
62228694a0 am 2218b89c: am d383ac15: am a0151cbf: Merge "Unit tests for formatting code, fix %%."
# Via Android Git Automerger (2) and others
* commit '2218b89ca7017e3f1cdb0641528787cd9985501a':
  Unit tests for formatting code, fix %%.
2013-01-28 14:14:44 -08:00
Elliott Hughes
2218b89ca7 am d383ac15: am a0151cbf: Merge "Unit tests for formatting code, fix %%."
# Via Android Git Automerger (1) and others
* commit 'd383ac1570b553d68ed399c74b73bad1498d78f6':
  Unit tests for formatting code, fix %%.
2013-01-28 14:11:54 -08:00
Elliott Hughes
d383ac1570 am a0151cbf: Merge "Unit tests for formatting code, fix %%."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit 'a0151cbfbaa37965dbcd188a55a78d3ad4802b9b':
  Unit tests for formatting code, fix %%.
2013-01-28 14:10:08 -08:00
Elliott Hughes
a0151cbfba Merge "Unit tests for formatting code, fix %%." 2013-01-28 22:04:45 +00:00
Elliott Hughes
41b3179c9e Unit tests for formatting code, fix %%.
Also fix <signal.h> and <stdio.h> so they don't cause compiler warnings.

Change-Id: Ib1a746bf01de22d47dbd964de0e6af80a7c96303
2013-01-28 10:36:31 -08:00
The Android Automerger
8482fbb691 merge in jb-mr2-release history after reset to master 2013-01-28 07:10:05 -08:00
Elliott Hughes
609ca692a9 am d265d367: am f07db754: am 0a91b11d: Merge "More debug malloc fixes."
# Via Android Git Automerger (2) and others
* commit 'd265d3674937651d23a0252e6aad0ee09b02492a':
  More debug malloc fixes.
2013-01-25 18:11:55 -08:00
Elliott Hughes
d265d36749 am f07db754: am 0a91b11d: Merge "More debug malloc fixes."
# Via Android Git Automerger (1) and others
* commit 'f07db75443cce4ab96c93bdaa0793d7b8e87547e':
  More debug malloc fixes.
2013-01-25 18:09:45 -08:00
Elliott Hughes
f07db75443 am 0a91b11d: Merge "More debug malloc fixes."
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '0a91b11d286446fe7849a6f537b4a21a52f63399':
  More debug malloc fixes.
2013-01-25 18:07:23 -08:00
Elliott Hughes
0a91b11d28 Merge "More debug malloc fixes." 2013-01-26 01:55:43 +00:00
Iliyan Malchev
ac10757e2a Merge "bionic: update processed msm_vidc_enc.h" 2013-01-26 01:41:55 +00:00
Elliott Hughes
239e7a0756 More debug malloc fixes.
Include the leaky executable's name in the log output. Fix the "sh" test.
Use uintptr_t instead of intptr_t.

Also fix debug formatting of NULL with %s.

Bug: 7291287
Change-Id: I015bf341cd48d43a247173612e6ccb1bf1243d53
2013-01-25 17:13:45 -08:00
Elliott Hughes
98ce9888b1 am 88af7232: am 7ae99845: am 6a94cb74: Merge "arm syscall : for eabi call_default don\'t use stack"
# By Matthieu Castet
# Via Android Git Automerger (2) and others
* commit '88af723267e86c7b2a685f97c6e442d3766ad9a9':
  arm syscall : for eabi call_default don't use stack
2013-01-25 17:11:52 -08:00
Nick Kralevich
85e76a3652 am 2ebcd19c: am 27818d2a: am b871e5d6: Merge "system_properties: do more checking of file"
# Via Android Git Automerger (2) and others
* commit '2ebcd19cbc42c5edce189df630a48feb9ffec16d':
  system_properties: do more checking of file
2013-01-25 17:11:51 -08:00
Elliott Hughes
88af723267 am 7ae99845: am 6a94cb74: Merge "arm syscall : for eabi call_default don\'t use stack"
# By Matthieu Castet
# Via Android Git Automerger (1) and others
* commit '7ae998456c2564aff4ecbe6a6df214821f6e26cc':
  arm syscall : for eabi call_default don't use stack
2013-01-25 14:10:02 -08:00
Nick Kralevich
2ebcd19cbc am 27818d2a: am b871e5d6: Merge "system_properties: do more checking of file"
# Via Android Git Automerger (1) and others
* commit '27818d2a16e4972acba15368f55a59cc0ed990f0':
  system_properties: do more checking of file
2013-01-25 14:10:01 -08:00
Elliott Hughes
7ae998456c am 6a94cb74: Merge "arm syscall : for eabi call_default don\'t use stack"
# By Matthieu Castet
# Via Gerrit Code Review (1) and Matthieu Castet (1)
* commit '6a94cb748bf63278c3271b0ab610061b0dc6f04a':
  arm syscall : for eabi call_default don't use stack
2013-01-25 14:08:26 -08:00
Nick Kralevich
27818d2a16 am b871e5d6: Merge "system_properties: do more checking of file"
# Via Gerrit Code Review (1) and Nick Kralevich (1)
* commit 'b871e5d6b3b4a214c7f19bdfca7663f1fe49fda8':
  system_properties: do more checking of file
2013-01-25 14:08:26 -08:00
Elliott Hughes
6a94cb748b Merge "arm syscall : for eabi call_default don't use stack" 2013-01-25 21:57:58 +00:00
Nick Kralevich
b871e5d6b3 Merge "system_properties: do more checking of file" 2013-01-25 21:52:00 +00:00
Nick Kralevich
c16961b8c3 system_properties: do more checking of file
Check that the permissions on the properties file
are exactly as we expect them to be.

Make sure we close the fd if fstat fails.

Refactor the code slightly.

Change-Id: I5503fd58c3b8093ce7e6d05920748ed70eaf8e2c
2013-01-25 13:07:31 -08:00
Iliyan Malchev
3eaa03df03 bionic: update processed msm_vidc_enc.h
Change-Id: If9aeec6f43b8b2951d1372042c884cd0e01f0a5a
Signed-off-by: Iliyan Malchev <malchev@google.com>
2013-01-25 11:26:53 -08:00
The Android Automerger
0f01df7fc9 merge in jb-mr2-release history after reset to master 2013-01-25 07:10:05 -08:00
Nick Kralevich
ddbb728eff am 151e91e6: am da2d2c61: am 82ef8296: Merge "prctl.h: include sys/cdefs.h"
# Via Android Git Automerger (2) and others
* commit '151e91e66c95a7e415903b87b8157a9bc422df45':
  prctl.h: include sys/cdefs.h
2013-01-24 16:15:39 -08:00
Nick Kralevich
151e91e66c am da2d2c61: am 82ef8296: Merge "prctl.h: include sys/cdefs.h"
# Via Android Git Automerger (1) and others
* commit 'da2d2c618c23f212f8dec0c0615bf75d7c18b88d':
  prctl.h: include sys/cdefs.h
2013-01-24 16:11:56 -08:00
Nick Kralevich
da2d2c618c am 82ef8296: Merge "prctl.h: include sys/cdefs.h"
# Via Gerrit Code Review (1) and Nick Kralevich (1)
* commit '82ef8296dc5e25b9cc8e7231f9515f50185dac9d':
  prctl.h: include sys/cdefs.h
2013-01-24 08:59:00 -08:00
Nick Kralevich
82ef8296dc Merge "prctl.h: include sys/cdefs.h" 2013-01-24 16:44:59 +00:00
Nick Kralevich
8e70b0d5c3 prctl.h: include sys/cdefs.h
prctl.h uses __BEGIN_DECLS but fails to include sys/cdefs.h
(where it's defined).  Code which includes prctl.h without
previously including sys/cdefs.h will fail to compile.

Fixed.

Change-Id: If4c9f3308f08b93596dcd00e351ae786807e9320
2013-01-23 16:49:47 -08:00
Nick Kralevich
472fdc95a6 am b8726037: am e7d937b5: am b3351f12: Merge "libc: use more secure system properties if available"
* commit 'b8726037ee1100e2704e90d0a54ea2313bf96b00':
  libc: use more secure system properties if available
2013-01-23 16:16:06 -08:00
Nick Kralevich
f5b111df06 am b8726037: am e7d937b5: am b3351f12: Merge "libc: use more secure system properties if available"
* commit 'b8726037ee1100e2704e90d0a54ea2313bf96b00':
  libc: use more secure system properties if available
2013-01-23 11:12:07 -08:00
Nick Kralevich
b8726037ee am e7d937b5: am b3351f12: Merge "libc: use more secure system properties if available"
* commit 'e7d937b52f183ce84751701c369ffe6a4c81d033':
  libc: use more secure system properties if available
2013-01-23 11:09:40 -08:00
Nick Kralevich
e7d937b52f am b3351f12: Merge "libc: use more secure system properties if available"
* commit 'b3351f12047747b603efb070069e7afdf3040335':
  libc: use more secure system properties if available
2013-01-23 11:07:23 -08:00
Nick Kralevich
b3351f1204 Merge "libc: use more secure system properties if available" 2013-01-23 18:50:24 +00:00
Nick Kralevich
32417fb376 libc: use more secure system properties if available
Currently, system properties are passed via the environment
variable ANDROID_PROPERTY_WORKSPACE and a file descriptor passed
from parent to child. This is insecure for setuid executables,
as the environment variable can be changed by the caller.

Modify system property handling so that we get the properties
from a root owned properties file, rather than using an
environment variable.  Fall back to the environment variable
if the file doesn't exist.

Bug: 8045561
Change-Id: I54f3efa98cf7d63d88788da5ce0d19e34fd7851a
2013-01-23 09:28:35 -08:00
The Android Automerger
d72183aa16 merge in jb-mr2-release history after reset to master 2013-01-23 07:10:07 -08:00
Elliott Hughes
828aaaac5e am c08ab018: am 40107623: am 778a68e1: Merge "Don\'t free anything when reporting leaks."
* commit 'c08ab018ad133a4e177013d79be547fd55968eac':
  Don't free anything when reporting leaks.
2013-01-22 22:16:11 -08:00
Elliott Hughes
9d28f5bf4a am ce8732b1: am 552e02fa: am 5c8f75ef: Merge "Disable leak checking for mksh; it\'s way too leaky."
* commit 'ce8732b188d96f4c313d20e6be17362a508f572d':
  Disable leak checking for mksh; it's way too leaky.
2013-01-22 22:16:10 -08:00
Elliott Hughes
c08ab018ad am 40107623: am 778a68e1: Merge "Don\'t free anything when reporting leaks."
* commit '40107623b05fdc2b6c61d9c885483abd3add486a':
  Don't free anything when reporting leaks.
2013-01-22 22:14:32 -08:00
Elliott Hughes
ce8732b188 am 552e02fa: am 5c8f75ef: Merge "Disable leak checking for mksh; it\'s way too leaky."
* commit '552e02fa9c99fd234c57d756358e3208d11a13ad':
  Disable leak checking for mksh; it's way too leaky.
2013-01-22 22:14:31 -08:00
Elliott Hughes
40107623b0 am 778a68e1: Merge "Don\'t free anything when reporting leaks."
* commit '778a68e1e57408be04806b5bfc3150aade44bcbf':
  Don't free anything when reporting leaks.
2013-01-22 22:11:55 -08:00
Elliott Hughes
552e02fa9c am 5c8f75ef: Merge "Disable leak checking for mksh; it\'s way too leaky."
* commit '5c8f75ef8bd89498de1d1108efa54869a2784738':
  Disable leak checking for mksh; it's way too leaky.
2013-01-22 22:11:54 -08:00
Elliott Hughes
778a68e1e5 Merge "Don't free anything when reporting leaks." 2013-01-23 06:06:21 +00:00
Elliott Hughes
5c8f75ef8b Merge "Disable leak checking for mksh; it's way too leaky." 2013-01-23 06:05:19 +00:00
Elliott Hughes
848247a972 Don't free anything when reporting leaks.
We don't know that they're not going to be cleaned up by a
C++ global destructor that runs after us. This is the case with
bootanimation, for example.

Bug: 7291287
Change-Id: Iba402514d1735fdc2ae4bc95b65396d816be46c0
2013-01-22 18:36:28 -08:00
Elliott Hughes
84f8b5f401 Disable leak checking for mksh; it's way too leaky.
When each shell leaks ~240 allocations, you can't see the leaks from
the program you ran with "adb shell".

Bug: 7291287
Change-Id: Ib8780db72ba0114ebdb24768537da74bbb61f354
2013-01-22 18:35:14 -08:00
Elliott Hughes
28fa8e109e am a8e0f2b9: am b16ec162: am 28f82b26: Merge "Add const for first argument of sigismember for fit POSIX spec"
* commit 'a8e0f2b956b5a31311d778b478e63093bc2cac7a':
  Add const for first argument of sigismember for fit POSIX spec
2013-01-22 17:31:20 -08:00
Elliott Hughes
a8e0f2b956 am b16ec162: am 28f82b26: Merge "Add const for first argument of sigismember for fit POSIX spec"
* commit 'b16ec162881110a30f665ce7bd1432ccefba60b7':
  Add const for first argument of sigismember for fit POSIX spec
2013-01-22 17:29:01 -08:00
Elliott Hughes
b16ec16288 am 28f82b26: Merge "Add const for first argument of sigismember for fit POSIX spec"
* commit '28f82b260c9076aae437dafb57193a174aef1eb3':
  Add const for first argument of sigismember for fit POSIX spec
2013-01-22 17:26:45 -08:00
Elliott Hughes
28f82b260c Merge "Add const for first argument of sigismember for fit POSIX spec" 2013-01-23 01:11:28 +00:00
Elliott Hughes
7f0976ef0e am 5f79f75b: am 57edf36c: am 8d6302cd: Merge "Our strcoll(3) is no different from NetBSD\'s, so take exactly theirs."
* commit '5f79f75ba6241ca9cab42e69a68d66d1ca28e031':
  Our strcoll(3) is no different from NetBSD's, so take exactly theirs.
2013-01-22 15:36:26 -08:00
Elliott Hughes
5f79f75ba6 am 57edf36c: am 8d6302cd: Merge "Our strcoll(3) is no different from NetBSD\'s, so take exactly theirs."
* commit '57edf36c5f83fa7bcf9d8d028cde0acc7ddfadcc':
  Our strcoll(3) is no different from NetBSD's, so take exactly theirs.
2013-01-22 15:33:24 -08:00
Elliott Hughes
57edf36c5f am 8d6302cd: Merge "Our strcoll(3) is no different from NetBSD\'s, so take exactly theirs."
* commit '8d6302cdcff9c53fe3ecd36ab479fdf08318c504':
  Our strcoll(3) is no different from NetBSD's, so take exactly theirs.
2013-01-22 15:31:26 -08:00
Elliott Hughes
774cef56ee am ad551eaa: am 5f7b6b83: am 547eba0a: Merge "Avoid overflow in memccpy."
* commit 'ad551eaa0429bf5085f2901c5d367e8a54b7ed16':
  Avoid overflow in memccpy.
2013-01-22 15:23:53 -08:00
Elliott Hughes
bdd209561e am 1029364e: am e8e1f34a: am 85597e2b: Merge "Clean up debuggerd-related logging."
* commit '1029364ec5710755164ec9a7f0fe625cc184bb60':
  Clean up debuggerd-related logging.
2013-01-22 15:23:49 -08:00
Elliott Hughes
0b9b068b3f am 0dfb2eca: am 0609c0fe: am 7af7895e: Merge "Use the new non-allocating logging for dlmalloc failures."
* commit '0dfb2ecaab681e27fa81462daec9882ebcf36edc':
  Use the new non-allocating logging for dlmalloc failures.
2013-01-22 15:23:48 -08:00
Nick Kralevich
f27874740f Revert "libc: make system properties more secure."
This reverts commit f10c5a2215.

Bug: 8045561
2013-01-22 15:21:01 -08:00
Elliott Hughes
8d6302cdcf Merge "Our strcoll(3) is no different from NetBSD's, so take exactly theirs." 2013-01-22 23:19:35 +00:00
Elliott Hughes
2b47307012 Our strcoll(3) is no different from NetBSD's, so take exactly theirs.
Change-Id: I45251047202a229f9175735ecc23c0ebcda71e8d
2013-01-22 15:10:19 -08:00
Elliott Hughes
ad551eaa04 am 5f7b6b83: am 547eba0a: Merge "Avoid overflow in memccpy."
* commit '5f7b6b8301658a834516f05e8e0a9eb4513e6e62':
  Avoid overflow in memccpy.
2013-01-22 15:08:58 -08:00
Elliott Hughes
5f7b6b8301 am 547eba0a: Merge "Avoid overflow in memccpy."
* commit '547eba0a63951d7db93c0542e1ecab891725b9a8':
  Avoid overflow in memccpy.
2013-01-22 15:05:31 -08:00
Elliott Hughes
547eba0a63 Merge "Avoid overflow in memccpy." 2013-01-22 22:53:54 +00:00
Elliott Hughes
1029364ec5 am e8e1f34a: am 85597e2b: Merge "Clean up debuggerd-related logging."
* commit 'e8e1f34a33158290aa3bb9059e31ddc7a73ac1e6':
  Clean up debuggerd-related logging.
2013-01-22 14:53:25 -08:00
Elliott Hughes
e8e1f34a33 am 85597e2b: Merge "Clean up debuggerd-related logging."
* commit '85597e2b59af91be0607ed073b6574b934ed369d':
  Clean up debuggerd-related logging.
2013-01-22 14:49:11 -08:00
Elliott Hughes
c51cd764a2 Avoid overflow in memccpy.
Just take the upstream NetBSD code.

Bug: http://code.google.com/p/android/issues/detail?id=43078
Change-Id: Ibbbde9d00e8bc6a09c9503aab2b04b4e3d1f98b0
2013-01-22 14:41:23 -08:00
Elliott Hughes
85597e2b59 Merge "Clean up debuggerd-related logging." 2013-01-22 22:37:28 +00:00
Elliott Hughes
0dfb2ecaab am 0609c0fe: am 7af7895e: Merge "Use the new non-allocating logging for dlmalloc failures."
* commit '0609c0fe8dae2ec10f1811c46a4d583f557c68f7':
  Use the new non-allocating logging for dlmalloc failures.
2013-01-22 14:35:06 -08:00
Elliott Hughes
0609c0fe8d am 7af7895e: Merge "Use the new non-allocating logging for dlmalloc failures."
* commit '7af7895eeb810ff1a1ca8b60fcda13595d551114':
  Use the new non-allocating logging for dlmalloc failures.
2013-01-22 14:32:02 -08:00
Elliott Hughes
7af7895eeb Merge "Use the new non-allocating logging for dlmalloc failures." 2013-01-22 22:26:35 +00:00
Elliott Hughes
ce4cf90d79 Use the new non-allocating logging for dlmalloc failures.
Change-Id: I88afe0201ee5766a295fc5a9e710fba9d6e0d363
2013-01-22 14:24:52 -08:00
Elliott Hughes
6b8e321e61 Clean up debuggerd-related logging.
Bug: 7291287
Change-Id: Ia7aa386e8b75b8058d7d9e707e11b1da7dc62f00
2013-01-22 14:17:14 -08:00
Nick Kralevich
0acf4069e9 am 98ae1a85: am e652ed30: am 244bee5b: Merge "bionic_auxv.h: fix #define conflict"
* commit '98ae1a85b057f6534bee7e52897a80694ba8b2e1':
  bionic_auxv.h: fix #define conflict
2013-01-22 13:46:31 -08:00
Nick Kralevich
98ae1a85b0 am e652ed30: am 244bee5b: Merge "bionic_auxv.h: fix #define conflict"
* commit 'e652ed30514afcf314b40c69b9cac088602a83da':
  bionic_auxv.h: fix #define conflict
2013-01-22 13:43:46 -08:00
Nick Kralevich
e652ed3051 am 244bee5b: Merge "bionic_auxv.h: fix #define conflict"
* commit '244bee5bb6e0bc12b739c57028ac8af23a18aed0':
  bionic_auxv.h: fix #define conflict
2013-01-22 13:38:53 -08:00
Nick Kralevich
244bee5bb6 Merge "bionic_auxv.h: fix #define conflict" 2013-01-22 21:30:27 +00:00
Nick Kralevich
25e3f4a90d Merge "Revert "libc: make system properties more secure."" 2013-01-22 21:26:18 +00:00
Nick Kralevich
abc21c8056 bionic_auxv.h: fix #define conflict
Both libc/include/sys/auxv.h and libc/private/bionic_auxv.h
use _SYS_AUXV_H_ to see if a header file has already been included.
This prevents both of these files from being included at the same
time.

Fix this name conflict.

Change-Id: Ifaec88aa9779d784b95f8e75145117acf3d5cfc5
2013-01-22 13:09:04 -08:00
Nick Kralevich
8897a9565a Revert "libc: make system properties more secure."
This reverts commit f10c5a2215.

Bug: 8045561
2013-01-22 12:44:11 -08:00
Elliott Hughes
f669fdf11e am 04afcd25: am 8ef83bc4: am 02f96b9d: Merge "Add missing extern "C"."
* commit '04afcd25a3758090009d3261f4c573b8ed73e03a':
  Add missing extern "C".
2013-01-22 11:35:50 -08:00
Elliott Hughes
04afcd25a3 am 8ef83bc4: am 02f96b9d: Merge "Add missing extern "C"."
* commit '8ef83bc46e06e8fe98e918fcb1c582d6f5807461':
  Add missing extern "C".
2013-01-22 11:34:25 -08:00
Elliott Hughes
8ef83bc46e am 02f96b9d: Merge "Add missing extern "C"."
* commit '02f96b9db0242711fe1dfe0713c0c4e698561da5':
  Add missing extern "C".
2013-01-22 11:32:16 -08:00
Elliott Hughes
02f96b9db0 Merge "Add missing extern "C"." 2013-01-22 19:22:47 +00:00
Elliott Hughes
f90b95ea1a Add missing extern "C".
Change-Id: Idbf24ce8482ff03f24caa89bafb08677b1c5cec3
2013-01-22 11:20:45 -08:00
Elliott Hughes
16f7b78fd1 am 4cd5703b: am 75b64a1b: am ca483765: Merge "Fix the duplication in the debugging code."
* commit '4cd5703b9eef30a32271819503808576666e1601':
  Fix the duplication in the debugging code.
2013-01-22 10:05:19 -08:00
Elliott Hughes
4cd5703b9e am 75b64a1b: am ca483765: Merge "Fix the duplication in the debugging code."
* commit '75b64a1b64e788b9e69ac4f4cd8cce37932513a8':
  Fix the duplication in the debugging code.
2013-01-22 10:02:12 -08:00
Elliott Hughes
75b64a1b64 am ca483765: Merge "Fix the duplication in the debugging code."
* commit 'ca483765bd0dc16294b9e67dd0de5c6d53b1bfa3':
  Fix the duplication in the debugging code.
2013-01-22 09:59:44 -08:00
Elliott Hughes
ca483765bd Merge "Fix the duplication in the debugging code." 2013-01-22 17:44:15 +00:00
The Android Automerger
5f0de35c3e merge in jb-mr2-release history after reset to master 2013-01-21 07:10:08 -08:00
Kito Cheng
f373b11f9f Add const for first argument of sigismember for fit POSIX spec
Change-Id: Icbc67375282f2a22dce02e4bacab15ddae846057
2013-01-20 00:15:23 +08:00
Elliott Hughes
1e980b6bc8 Fix the duplication in the debugging code.
We had two copies of the backtrace code, and two copies of the
libcorkscrew /proc/pid/maps code. This patch gets us down to one.

We also had hacks so we could log in the malloc debugging code.
This patch pulls the non-allocating "printf" code out of the
dynamic linker so everyone can share.

This patch also makes the leak diagnostics easier to read, and
makes it possible to paste them directly into the 'stack' tool (by
using relative PCs).

This patch also fixes the stdio standard stream leak that was
causing a leak warning every time tf_daemon ran.

Bug: 7291287
Change-Id: I66e4083ac2c5606c8d2737cb45c8ac8a32c7cfe8
2013-01-18 22:20:06 -08:00
Robert Greenwalt
1136b7d821 Merge "Revert "dns cache per interface iteration 2"" 2013-01-19 00:40:38 +00:00
Robert Greenwalt
b002a2ff77 Revert "dns cache per interface iteration 2"
This reverts commit f1464ff956

Change-Id: I3496b9a8cb54614fe3eea016d1391c8a89f3db38
2013-01-19 00:40:24 +00:00
Geremy Condra
b1d1a7682f Merge "libc: make system properties more secure." 2013-01-19 00:26:23 +00:00
Nick Kralevich
f10c5a2215 libc: make system properties more secure.
Currently, system properties are passed via the environment
variable ANDROID_PROPERTY_WORKSPACE and a file descriptor passed
from parent to child. This is insecure for setuid executables,
as the environment variable can be changed by the caller.

Modify system property handling so that we get the properties
from a root owned properties file, rather than using an
environment variable.

Related to bug: 8029617

Change-Id: I5717e51f20f9e4339ed0a1fdf2fc797e52670fbb
2013-01-18 14:30:07 -08:00
Nick Kralevich
c82bc4f472 am 9468ee53: am f246ae98: am 5496bbf6: Merge "Revert "Filter ANDROID_PROPERTY_WORKSPACE""
* commit '9468ee53ac01a86255bd00976d8aa5a1a4141020':
  Revert "Filter ANDROID_PROPERTY_WORKSPACE"
2013-01-18 14:01:54 -08:00
Nick Kralevich
9468ee53ac am f246ae98: am 5496bbf6: Merge "Revert "Filter ANDROID_PROPERTY_WORKSPACE""
* commit 'f246ae984baa133b93af4e14f94ba35990b43dbb':
  Revert "Filter ANDROID_PROPERTY_WORKSPACE"
2013-01-18 13:11:13 -08:00
Nick Kralevich
f246ae984b am 5496bbf6: Merge "Revert "Filter ANDROID_PROPERTY_WORKSPACE""
* commit '5496bbf6a3592fd99cee6b8c20c8624c2aeea0c1':
  Revert "Filter ANDROID_PROPERTY_WORKSPACE"
2013-01-18 13:10:04 -08:00
Nick Kralevich
5496bbf6a3 Merge "Revert "Filter ANDROID_PROPERTY_WORKSPACE"" 2013-01-18 20:50:41 +00:00
Guang Zhu
4df577fef7 Revert "Filter ANDROID_PROPERTY_WORKSPACE"
Temporarily revert the change since DNS resolution seems
broken right now in ping util.

Bug: 8029617

This reverts commit a0f64756a4.
2013-01-18 11:28:47 -08:00
The Android Automerger
f73a885f53 merge in jb-mr2-release history after reset to master 2013-01-18 07:10:09 -08:00
Guang Zhu
bf1d225593 Revert "Filter ANDROID_PROPERTY_WORKSPACE"
Temporarily revert the change since DNS resolution seems
broken right now in ping util.

Bug: 8029617

This reverts commit a0f64756a4.
2013-01-17 23:25:24 -08:00
Nick Kralevich
c5c99adeed am 8e833972: am 0a0c2321: am 4bfaf1e5: Merge "FORTIFY_SOURCE: optimize"
* commit '8e833972c2506267024136a0f609bdbb26dcc498':
  FORTIFY_SOURCE: optimize
2013-01-17 17:08:21 -08:00
Nick Kralevich
8e833972c2 am 0a0c2321: am 4bfaf1e5: Merge "FORTIFY_SOURCE: optimize"
* commit '0a0c23216766adf76739dc38dcb45934105cd41c':
  FORTIFY_SOURCE: optimize
2013-01-17 17:06:11 -08:00
Nick Kralevich
0a0c232167 am 4bfaf1e5: Merge "FORTIFY_SOURCE: optimize"
* commit '4bfaf1e5f62748b305406ff4ceebd5f4b750038c':
  FORTIFY_SOURCE: optimize
2013-01-17 17:04:33 -08:00
Elliott Hughes
e230306135 am a4723742: am 261e9d08: am e4ca88d9: Merge "Add functionlity to the scripts to replace tokens in kernel headers based on architecture."
* commit 'a4723742c1ee0daa2ec17a148334c548b5edf3a8':
  Add functionlity to the scripts to replace tokens in kernel headers based on architecture.
2013-01-17 16:53:57 -08:00
Elliott Hughes
a4723742c1 am 261e9d08: am e4ca88d9: Merge "Add functionlity to the scripts to replace tokens in kernel headers based on architecture."
* commit '261e9d08dbf1cd7fea7e1799338238d11d18cb7c':
  Add functionlity to the scripts to replace tokens in kernel headers based on architecture.
2013-01-17 16:51:09 -08:00
Nick Kralevich
4bfaf1e5f6 Merge "FORTIFY_SOURCE: optimize" 2013-01-18 00:49:36 +00:00
Elliott Hughes
261e9d08db am e4ca88d9: Merge "Add functionlity to the scripts to replace tokens in kernel headers based on architecture."
* commit 'e4ca88d9fa8757e4fb4056fcafa5bc15b406a2fd':
  Add functionlity to the scripts to replace tokens in kernel headers based on architecture.
2013-01-17 16:48:45 -08:00
Elliott Hughes
e4ca88d9fa Merge "Add functionlity to the scripts to replace tokens in kernel headers based on architecture." 2013-01-18 00:34:13 +00:00
Nick Kralevich
a44e9afdd1 FORTIFY_SOURCE: optimize
Don't do the fortify_source checks if we can determine, at
compile time, that the provided operation is safe.

This avoids silliness like calling fortify source on things like:

  size_t len = strlen("asdf");
  printf("%d\n", len);

and allows the compiler to optimize this code to:

  printf("%d\n", 4);

Defer to gcc's builtin functions instead of pointing our code
to the libc implementation.

Change-Id: I5e1dcb61946461c4afaaaa983e39f07c7a0df0ae
2013-01-17 15:41:33 -08:00
Raghu Gandham
a864c2c234 Add functionlity to the scripts to replace tokens in kernel headers
based on architecture.
2013-01-17 14:39:09 -08:00
Nick Kralevich
dbcf3ed458 am 36c4eb18: am 3a72fe58: am f3fe1945: Merge "linker: add -Wl,--exclude-libs,ALL to LDFLAGS"
* commit '36c4eb188c6594db877bd7b9f46c55264180dc3f':
  linker: add -Wl,--exclude-libs,ALL to LDFLAGS
2013-01-17 11:34:20 -08:00
Nick Kralevich
36c4eb188c am 3a72fe58: am f3fe1945: Merge "linker: add -Wl,--exclude-libs,ALL to LDFLAGS"
* commit '3a72fe587f454a2eea79b5564e4ab1d3880b51c8':
  linker: add -Wl,--exclude-libs,ALL to LDFLAGS
2013-01-17 09:01:14 -08:00
Nick Kralevich
3a72fe587f am f3fe1945: Merge "linker: add -Wl,--exclude-libs,ALL to LDFLAGS"
* commit 'f3fe19459fd9263e8cc8a413a5313b1ec3cf3975':
  linker: add -Wl,--exclude-libs,ALL to LDFLAGS
2013-01-17 08:58:27 -08:00
Nick Kralevich
f3fe19459f Merge "linker: add -Wl,--exclude-libs,ALL to LDFLAGS" 2013-01-17 16:41:31 +00:00
Robert Greenwalt
89f9b30e4d Merge "dns cache per interface iteration 2" 2013-01-17 16:14:52 +00:00
The Android Automerger
ff1c00a29e merge in jb-mr2-release history after reset to master 2013-01-17 07:10:10 -08:00
Nick Kralevich
d89ce40d8e linker: add -Wl,--exclude-libs,ALL to LDFLAGS
The linker is essentially a shared library, and incorporates
it's own copy of libc. Even though it's unnecessary, currently
/system/bin/linker is exporting various libc symbols (only to
apps which explicitly dlopen /system/bin/linker)

Add --exclude-libs,ALL, which tells the static linker to mark
all of the imported libc symbols as hidden. This reduces the
size of /system/bin/linker from 92K to 67K with no obvious
loss in functionality.

  $ adb shell ls -l /system/bin/linker
  -rwxrwxrwx root     root        92260 2013-01-16 16:52 linker

  $ adb shell ls -l /system/bin/linker
  -rwxrwxrwx root     root        67660 2013-01-16 16:49 linker

Documentation on exclude-libs can be found at
http://sourceware.org/binutils/docs-2.21/ld/Options.html

Change-Id: I4508287770e4b7a845def2e6b4af969f9c866c6a
2013-01-16 16:43:58 -08:00
Nick Kralevich
927d904d52 am 91bc5865: am 8d01c055: am 1271cdc1: Merge "Revert "stack protector: use AT_RANDOM""
* commit '91bc5865a333212e7cac934b0a2ac7c522911d58':
  Revert "stack protector: use AT_RANDOM"
2013-01-16 13:58:04 -08:00
Nick Kralevich
91bc5865a3 am 8d01c055: am 1271cdc1: Merge "Revert "stack protector: use AT_RANDOM""
* commit '8d01c0557bb2b7ea30f4038b6c84b816800073a7':
  Revert "stack protector: use AT_RANDOM"
2013-01-16 13:55:55 -08:00
Nick Kralevich
8d01c0557b am 1271cdc1: Merge "Revert "stack protector: use AT_RANDOM""
* commit '1271cdc1c91c6ae688917bc8f4ae59d2a97b3e99':
  Revert "stack protector: use AT_RANDOM"
2013-01-16 13:53:25 -08:00
Nick Kralevich
1271cdc1c9 Merge "Revert "stack protector: use AT_RANDOM"" 2013-01-16 21:36:53 +00:00
Nick Kralevich
bcd18c0485 am 27ff1ae4: am de666485: am ba117e41: Merge "stack protector: use AT_RANDOM"
* commit '27ff1ae414915789b27d0a485ff6d856ae742aad':
  stack protector: use AT_RANDOM
2013-01-16 13:34:46 -08:00
Nick Kralevich
dde6b88a9f am 079e4356: am 30894bdf: am 1b34228b: Merge "Filter ANDROID_PROPERTY_WORKSPACE"
* commit '079e4356550030e8bacec86b8aa058ade2b7142c':
  Filter ANDROID_PROPERTY_WORKSPACE
2013-01-16 13:34:45 -08:00
Elliott Hughes
31ecd0c342 am b989c9ce: (-s ours) Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
* commit 'b989c9ceda71f6f75112645b5c45af341275cbab':
  Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
2013-01-16 13:31:35 -08:00
Nick Kralevich
27ff1ae414 am de666485: am ba117e41: Merge "stack protector: use AT_RANDOM"
* commit 'de666485b8123ac35be94109336f7c56a7e9e3c2':
  stack protector: use AT_RANDOM
2013-01-16 13:31:24 -08:00
Nick Kralevich
079e435655 am 30894bdf: am 1b34228b: Merge "Filter ANDROID_PROPERTY_WORKSPACE"
* commit '30894bdfd6e4c74ab673d47391e62fb14fb51381':
  Filter ANDROID_PROPERTY_WORKSPACE
2013-01-16 13:31:23 -08:00
Nick Kralevich
36bd371e26 Revert "stack protector: use AT_RANDOM"
The AT_RANDOM changes broke setuid / setgid executables
such as "ping". When the linker executes a setuid program,
it cleans the environment, removing any invalid environment
entries, and adding "NULL"s to the end of the environment
array for each removed variable. Later on, we try to determine
the location of the aux environment variable, and get tripped
up by these extra NULLs.

Reverting this patch will get setuid executables working again,
but getauxval() is still broken for setuid programs because of
this bug.

This reverts commit e3a49a8661.

Change-Id: I05c58a896b1fe32cfb5d95d43b096045cda0aa4a
2013-01-16 13:16:42 -08:00
Nick Kralevich
de666485b8 am ba117e41: Merge "stack protector: use AT_RANDOM"
* commit 'ba117e4172fe6f160bf5f4d58b37e12c08c34245':
  stack protector: use AT_RANDOM
2013-01-16 11:31:00 -08:00
Nick Kralevich
ba117e4172 Merge "stack protector: use AT_RANDOM" 2013-01-16 11:23:26 -08:00
Nick Kralevich
30894bdfd6 am 1b34228b: Merge "Filter ANDROID_PROPERTY_WORKSPACE"
* commit '1b34228bb289723c4ba0534eae57d0d085a3d0fa':
  Filter ANDROID_PROPERTY_WORKSPACE
2013-01-16 11:14:01 -08:00
Nick Kralevich
1b34228bb2 Merge "Filter ANDROID_PROPERTY_WORKSPACE" 2013-01-16 11:11:17 -08:00
Elliott Hughes
b989c9ceda Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
This reverts commit f4b34b6c39.
2013-01-16 10:34:33 -08:00
Nick Kralevich
e3a49a8661 stack protector: use AT_RANDOM
Populate the stack canaries from the kernel supplied
AT_RANDOM value, which doesn't involve any system calls.
This is slightly faster (6 fewer syscalls) and avoids
unnecessarily reading /dev/urandom, which depletes entropy.

Bug: 7959813

Change-Id: If2b43100a2a9929666df3de56b6139fed969e0f1
2013-01-16 10:09:52 -08:00
The Android Automerger
b3aff045b2 merge in jb-mr2-release history after reset to master 2013-01-16 10:08:57 -08:00
Elliott Hughes
1a18895ebc am e05709b1: am e611fad0: am 14e1975e: Merge "Fix signalfd for MIPS."
* commit 'e05709b1df7dba98c37e83f84dcbd2ad8429bcfc':
  Fix signalfd for MIPS.
2013-01-16 09:50:42 -08:00
Elliott Hughes
e05709b1df am e611fad0: am 14e1975e: Merge "Fix signalfd for MIPS."
* commit 'e611fad0d055f2d869981136e5e51b7a01d525fc':
  Fix signalfd for MIPS.
2013-01-16 09:48:04 -08:00
Elliott Hughes
e611fad0d0 am 14e1975e: Merge "Fix signalfd for MIPS."
* commit '14e1975e13c197180ed0481f305f83a362b16a24':
  Fix signalfd for MIPS.
2013-01-16 09:45:57 -08:00
Elliott Hughes
14e1975e13 Merge "Fix signalfd for MIPS." 2013-01-16 09:42:51 -08:00
Elliott Hughes
f193b9fc21 Fix signalfd for MIPS.
Also mark signalfd's sigset_t* argument as non-nullable.

Change-Id: I466e09cdf3fb92480744c496da92274a97f99dd1
2013-01-16 09:40:25 -08:00
The Android Automerger
27b8421a15 merge in master-release history after reset to master 2013-01-16 07:49:04 -08:00
Matthieu Castet
faa0fdb119 arm syscall : for eabi call_default don't use stack
In the default case, we don't need to use the stack, we can save r7 with
ip register (that what does eglibc).

This allow to fix vfork data corruption
(see 3884bfe966), because vfork now don't
use the stack.
2013-01-16 14:53:37 +01:00
Nick Kralevich
a0f64756a4 Filter ANDROID_PROPERTY_WORKSPACE
When executing a setuid executable, filter out ANDROID_PROPERTY_WORKSPACE
from the environment. Some applications implicitly trust the property
space and don't realize that it's passed by an environment variable
which can be modified by the caller.

Change-Id: I3e3a98941f0a1f249a2ff983ecbcfe1278aa9159
2013-01-15 16:02:03 -08:00
Elliott Hughes
7cfe0d2602 am 04aa0fdd: (-s ours) am 42c5847d: (-s ours) am 791e26d9: (-s ours) Merge "Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."""
* commit '04aa0fdda60b6a492e572c2a79f21c732e8c33c8':
  Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
2013-01-15 13:40:39 -08:00
Elliott Hughes
04aa0fdda6 am 42c5847d: (-s ours) am 791e26d9: (-s ours) Merge "Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."""
* commit '42c5847d65d3e50a3efc4e32bb913dc66c9d0e4d':
  Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
2013-01-15 13:37:56 -08:00
Elliott Hughes
42c5847d65 am 791e26d9: (-s ours) Merge "Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."""
* commit '791e26d9598a72376b8a16a5ccfb5d1ae0010965':
  Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
2013-01-15 13:35:58 -08:00
Elliott Hughes
791e26d959 Merge "Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""" 2013-01-15 13:21:52 -08:00
Nick Kralevich
0112ee2190 am d29c9fc1: am b59e358b: Merge "fix strerror_r test"
* commit 'd29c9fc18860a41f59d390b4aab937b61dd63ea1':
  fix strerror_r test
2013-01-15 11:20:23 -08:00
Nick Kralevich
d29c9fc188 am b59e358b: Merge "fix strerror_r test"
* commit 'b59e358bb902124cc7d648266a97f96beefc8142':
  fix strerror_r test
2013-01-15 11:15:21 -08:00
Elliott Hughes
acb907fb0d Revert "DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic.""
This reverts commit f4b34b6c39.

The revert was only meant to apply to the jb-mr1 branch, but accidentally
leaked out into AOSP. This revert-revert gets AOSP master and internal
master back in sync.
2013-01-15 11:12:18 -08:00
Nick Kralevich
b59e358bb9 Merge "fix strerror_r test" 2013-01-15 10:56:07 -08:00
Nick Kralevich
606058933c fix strerror_r test
e6e60065ff modified strerror_r to
treat errno as signed. However, the change to the test code
modified the "strerror" test, not the "strerror_r" test.

Make the same change for the strerror_r code.

Change-Id: Ia236a53df5745935e229a4446a74da8bed0cfd7b
2013-01-15 10:35:09 -08:00
The Android Automerger
e7cc7957ac merge in master-release history after reset to master 2013-01-15 07:49:22 -08:00
Ben Cheng
6405103a32 am 4130af46: am b09d7d86: Merge "Add __aeabi_idiv to the dummy reference list."
* commit '4130af46bf120ac82ed61453215c7a692d84c1dd':
  Add __aeabi_idiv to the dummy reference list.
2013-01-14 18:01:35 -08:00
Ben Cheng
4130af46bf am b09d7d86: Merge "Add __aeabi_idiv to the dummy reference list."
* commit 'b09d7d86004ab75b774358454d8ee261987af96b':
  Add __aeabi_idiv to the dummy reference list.
2013-01-14 15:44:01 -08:00
Ben Cheng
b09d7d8600 Merge "Add __aeabi_idiv to the dummy reference list." 2013-01-14 15:35:04 -08:00
Ben Cheng
35f5385aa5 Add __aeabi_idiv to the dummy reference list.
If the platform code is compiled with -mcpu=cortex-a15, then without this
change prebuilt libraries built against -march=armv7 cannot resolve the
dependency on __aeabi_idiv (provided by libgcc.a).

Bug: 7961327

cherry-picked from internal master.

Change-Id: I8fe59a98eb53d641518b882523c1d6a724fb7e55
2013-01-14 15:33:40 -08:00
Nick Kralevich
9e22af2363 am 1519690c: am 29fe857e: Merge "headers: update auxvec.h from Linux kernel"
* commit '1519690cfb27af79627a8d39bf158a1feca953e3':
  headers: update auxvec.h from Linux kernel
2013-01-14 14:38:36 -08:00
Nick Kralevich
1519690cfb am 29fe857e: Merge "headers: update auxvec.h from Linux kernel"
* commit '29fe857ec80e59347e28458a5396eb68d1cba0e4':
  headers: update auxvec.h from Linux kernel
2013-01-14 14:31:28 -08:00
Nick Kralevich
29fe857ec8 Merge "headers: update auxvec.h from Linux kernel" 2013-01-14 14:14:49 -08:00
Ben Cheng
86050b9e92 Merge "Add __aeabi_idiv to the dummy reference list." 2013-01-14 13:36:33 -08:00
Nick Kralevich
a67e4de662 headers: update auxvec.h from Linux kernel
Pull a new version of auxvec.h from the upstream Linux
kernel at commit b719f43059903820c31edb30f4663a2818836e7f

These files were generated using the following commands:

cd bionic/libc/kernel
./tools/clean_header.py -u ../../../external/kernel-headers/original/uapi/linux/auxvec.h
./tools/clean_header.py -u ../../../external/kernel-headers/original/linux/auxvec.h
./tools/clean_header.py -u ../../../external/kernel-headers/original/asm-x86/auxvec.h

This change is needed to get AT_RANDOM defined.

Change-Id: Ib064649684b17af6ff4b1a31d501a05f78bb81d0
2013-01-14 11:49:59 -08:00
Ben Cheng
a4e964d200 Add __aeabi_idiv to the dummy reference list.
If the platform code is compiled with -mcpu=cortex-a15, then without this
change prebuilt libraries built against -march=armv7 cannot resolve the
dependency on __aeabi_idiv (provided by libgcc.a).

Bug: 7961327

Change-Id: I0a05ce9c44e44d39b8ce1f0e319e2d37a010f3c7
2013-01-14 11:27:29 -08:00
Ian Rogers
7f7f232f4a am 763d4bb3: am 68fa57f0: Merge "Name anonymous mmap mallocs."
* commit '763d4bb345b2e8882dd39d0656ee9f23ca1d0512':
  Name anonymous mmap mallocs.
2013-01-14 11:22:56 -08:00
Ian Rogers
763d4bb345 am 68fa57f0: Merge "Name anonymous mmap mallocs."
* commit '68fa57f000285af20100c00db3d2bc143ad32294':
  Name anonymous mmap mallocs.
2013-01-14 11:19:00 -08:00
Ian Rogers
68fa57f000 Merge "Name anonymous mmap mallocs." 2013-01-14 10:54:44 -08:00
Nick Kralevich
1165da8390 am 13bd3716: am bb897fa9: Merge "libc_init_static: apply relro earlier."
* commit '13bd37160ee340ddcf7e1fb57251b124e0ec69c1':
  libc_init_static: apply relro earlier.
2013-01-14 10:34:45 -08:00
Elliott Hughes
32cefdbc7a am 375db86a: am 09d13c39: Merge "Fix my git mistake."
* commit '375db86aeaedfe716b69a62f81a2484ee446d5e5':
  Fix my git mistake.
2013-01-14 10:34:44 -08:00
Nick Kralevich
13bd37160e am bb897fa9: Merge "libc_init_static: apply relro earlier."
* commit 'bb897fa9f79d25e4445fe3ab46b86657d6660c10':
  libc_init_static: apply relro earlier.
2013-01-14 10:25:16 -08:00
Nick Kralevich
bb897fa9f7 Merge "libc_init_static: apply relro earlier." 2013-01-14 10:21:23 -08:00
Elliott Hughes
375db86aea am 09d13c39: Merge "Fix my git mistake."
* commit '09d13c393e7b6a77cc33e5ef87e5c92ccd13fe63':
  Fix my git mistake.
2013-01-14 10:08:56 -08:00
Elliott Hughes
09d13c393e Merge "Fix my git mistake." 2013-01-14 09:57:45 -08:00
Elliott Hughes
99c32055cb Fix my git mistake.
This was the formatting change that was supposed to be in
cf23905a4b.

Change-Id: Ib79fa031b68f6f541f532507eb589afeaedb831f
2013-01-14 09:56:21 -08:00
Elliott Hughes
14ab1a63d6 am bc3c7183: am 48c632a3: Merge "[MIPS] Set DT_DEBUG dyntab entry if it is writable"
* commit 'bc3c718346d81c04451c35c2d8fb00c68b0a815d':
  [MIPS] Set DT_DEBUG dyntab entry if it is writable
2013-01-14 09:50:50 -08:00
Elliott Hughes
bc3c718346 am 48c632a3: Merge "[MIPS] Set DT_DEBUG dyntab entry if it is writable"
* commit '48c632a381b10996ec72a53cc95b009b06785d09':
  [MIPS] Set DT_DEBUG dyntab entry if it is writable
2013-01-14 09:46:19 -08:00
Elliott Hughes
48c632a381 Merge "[MIPS] Set DT_DEBUG dyntab entry if it is writable" 2013-01-14 09:31:04 -08:00
Chris Dearman
cf23905a4b [MIPS] Set DT_DEBUG dyntab entry if it is writable
This is primarily for MIPS exutables that do not have a
DT_MIPS_RLD_MAP entry.

Change-Id: I4c221d92debcfed961eeee2515123f3fb21ec8e6
Signed-off-by: Chris Dearman <chris@mips.com>
2013-01-14 09:30:25 -08:00
The Android Automerger
76c8c61517 merge in master-release history after reset to master 2013-01-14 07:49:05 -08:00
Nick Kralevich
9fb48ac257 libc_init_static: apply relro earlier.
The dynamic linker applies relro before the preinit and init
arrays are executed, so we should be consistent for statically
linked executables.

Change-Id: Ia0a49d0e981a6e8791f74eed00280edf576ba139
2013-01-11 18:38:26 -08:00
Ian Rogers
8921060253 Name anonymous mmap mallocs.
Change-Id: Icc53ba1eecb8445210623826d8e99a611d686f7f
2013-01-11 17:42:17 -08:00
Nick Kralevich
8ffe08c86b am fdd6dfa8: am 2c5153b0: libc: add getauxval()
* commit 'fdd6dfa863ea73251b5d59990e239854c31ecee3':
  libc: add getauxval()
2013-01-11 17:04:04 -08:00
Nick Kralevich
fdd6dfa863 am 2c5153b0: libc: add getauxval()
* commit '2c5153b043b44e9935a334ae9b2d5a4bc5258b40':
  libc: add getauxval()
2013-01-11 16:59:57 -08:00
Nick Kralevich
2c5153b043 libc: add getauxval()
Add support for getauxval().  This method allows a program an easy way
to retrieve information from the kernel auxiliary vector, and will
hopefully replace other clumsy ways of accessing this same information.

This particular function was also added to glibc in glibc 2.16.
See the following URLs for more details.

  * http://lwn.net/Articles/519085/
  * http://www.gnu.org/software/libc/manual/html_node/Auxiliary-Vector.html

This change is a prerequisite for bug 7959813.

Bug: http://code.google.com/p/android/issues/detail?id=38441
Change-Id: Iba19d899df334bddc6f4899077ece2fc87564ea8
2013-01-11 16:44:15 -08:00
Mattias Falk
f1464ff956 dns cache per interface iteration 2
name server addresses are read from the dns
cache associated wih the interface on which
the request shall be done.

processes which has requested to issue dns request
using specific interface are now proxied to netd.

added methods to attach/detach a process to a specific
dns cache/interface.

added getaddrinfoforinface method which takes an
interface as an argument.

Change-Id: I851ec8ab8ce3112626ad2a729078b91d013f32fd
bug:4815099
bug:5465296
2013-01-11 15:47:27 -08:00
Andrew Boie
07564f2d3a add factory property file definition
This property file is used for properties which are set at device
provisioning time or in the factory. They are never touched by
a software update or factory data reset and typically contain
data specific to the particular unit.

Change-Id: I2e7c2fe62cb684cb2449eea917c42b19462e89a5
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2013-01-11 13:02:27 -08:00
Nick Kralevich
0529a52c60 am d0f81466: am 69c89942: Merge "Add stack canaries / strcpy tests."
* commit 'd0f81466e4e8e4179054a484cf6145efedfd7cb5':
  Add stack canaries / strcpy tests.
2013-01-11 11:31:07 -08:00
Nick Kralevich
d0f81466e4 am 69c89942: Merge "Add stack canaries / strcpy tests."
* commit '69c89942db2ed472c71aa84903d0259cc84aa074':
  Add stack canaries / strcpy tests.
2013-01-11 11:26:54 -08:00
Nick Kralevich
69c89942db Merge "Add stack canaries / strcpy tests." 2013-01-11 11:03:40 -08:00
Wink Saville
8deebb34d3 am 801aeefe: am a12c5445: Fix unused warnings in pthread.c
* commit '801aeefe2d77a957172c3994f1c20cd0ac8d9bd8':
  Fix unused warnings in pthread.c
2013-01-11 10:54:50 -08:00
Elliott Hughes
376889ad71 am 0f9be1ea: am bfde0b6f: Merge "glibc 2.15 treats errno as signed in strerror(3)."
* commit '0f9be1eaee5a9367fb2f8c6ed86ed2fc1faa70b9':
  glibc 2.15 treats errno as signed in strerror(3).
2013-01-11 10:54:43 -08:00
Elliott Hughes
73dd37d8fe am 34c7a3c2: am 0d3700d9: Merge "Only have one copy of the kernel_sigset_t hack, and add more tests."
* commit '34c7a3c2b0ec50a749e25bd786e670025a6f1c5b':
  Only have one copy of the kernel_sigset_t hack, and add more tests.
2013-01-11 10:54:25 -08:00
Elliott Hughes
7e29f81163 am 4ff6fa97: am 2bbb8fac: Merge "Add signalfd call to bionic"
* commit '4ff6fa97e7cf247e17600cf0d64911c1579df841':
  Add signalfd call to bionic
2013-01-11 10:54:02 -08:00
Nick Kralevich
dcab1b2c76 Add stack canaries / strcpy tests.
Add a test to ensure that stack canaries are working
correctly. Since stack canaries aren't normally generated
on non-string functions, we have to enable stack-protector-all.

Add a test to ensure that an out of bounds strcpy generates
a runtime failure.

Change-Id: Id0d3e59fc4b9602da019e4d35c5c653e1a57fae4
2013-01-11 10:52:36 -08:00
Wink Saville
801aeefe2d am a12c5445: Fix unused warnings in pthread.c
* commit 'a12c54454f3a6132988b68873903f6e9eed7f384':
  Fix unused warnings in pthread.c
2013-01-11 10:12:12 -08:00
The Android Automerger
ef06105819 merge in master-release history after reset to master 2013-01-11 07:49:08 -08:00
Wink Saville
a12c54454f Fix unused warnings in pthread.c
Change-Id: I0287aadb825fd8cda29dc976bce55d75a1279fc5
2013-01-10 16:30:22 -08:00
Elliott Hughes
0f9be1eaee am bfde0b6f: Merge "glibc 2.15 treats errno as signed in strerror(3)."
* commit 'bfde0b6fd9e5de545746ab963d3a05ed2a8014f6':
  glibc 2.15 treats errno as signed in strerror(3).
2013-01-10 16:27:26 -08:00
Elliott Hughes
bfde0b6fd9 Merge "glibc 2.15 treats errno as signed in strerror(3)." 2013-01-10 16:24:36 -08:00
Elliott Hughes
e6e60065ff glibc 2.15 treats errno as signed in strerror(3).
And the only reason I hadn't done that in bionic is because I wanted to behave
the same as glibc.

Change-Id: I2cf1bf0aac82a748cd6305a2cabbac0790058570
2013-01-10 16:01:59 -08:00
Elliott Hughes
34c7a3c2b0 am 0d3700d9: Merge "Only have one copy of the kernel_sigset_t hack, and add more tests."
* commit '0d3700d957debe841c385f66a8026ca8b3755815':
  Only have one copy of the kernel_sigset_t hack, and add more tests.
2013-01-10 15:28:46 -08:00
Elliott Hughes
0d3700d957 Merge "Only have one copy of the kernel_sigset_t hack, and add more tests." 2013-01-10 15:12:46 -08:00
Elliott Hughes
c5d028fc91 Only have one copy of the kernel_sigset_t hack, and add more tests.
Change-Id: I377522fcba6fb4b5fd2754ab15b091014bd7c16f
2013-01-10 14:42:14 -08:00
Robert Greenwalt
d09bdc7148 Merge "Cache negative DNS results." 2013-01-10 14:30:37 -08:00
Elliott Hughes
4ff6fa97e7 am 2bbb8fac: Merge "Add signalfd call to bionic"
* commit '2bbb8fac61e482dd96386620cc6f7f193e9c6840':
  Add signalfd call to bionic
2013-01-10 13:30:16 -08:00
Elliott Hughes
2bbb8fac61 Merge "Add signalfd call to bionic" 2013-01-10 13:17:27 -08:00
Rom Lemarchand
a4b2dc016f Add signalfd call to bionic
Add signalfd() call to bionic.

Adding the signalfd call was done in 3 steps:
- add signalfd4 system call (function name and syscall
  number) to libc/SYSCALLS.TXT
- generate all necessary headers by calling
  libc/tools/gensyscalls.py. This patch is adding
  the generated files since the build system
  does not call gensyscalls.py.
- create the signalfd wrapper in signalfd.cpp and add
  the function prototype to sys/signalfd.h

(cherry-pick of 0c11611c11, modified to
work with older versions of GCC still in use on some branches.)

Change-Id: I4c6c3f12199559af8be63f93a5336851b7e63355
2013-01-10 13:14:46 -08:00
Elliott Hughes
19dd1567a0 Revert "Add signalfd call to bionic"
This reverts commit 0c11611c11

Change-Id: I1a2beae7ed66ec995fdf6c96c53c35598ac6cde0
2013-01-10 10:47:58 -08:00
Rom Lemarchand
0c11611c11 Add signalfd call to bionic
Add signalfd() call to bionic.

Adding the signalfd call was done in 3 steps:
- add signalfd4 system call (function name and syscall
  number) to libc/SYSCALLS.TXT
- generate all necessary headers by calling
  libc/tools/gensyscalls.py. This patch is adding
  the generated files since the build system
  does not call gensyscalls.py.
- create the signalfd wrapper in signalfd.cpp and add
  the function prototype to sys/signalfd.h

Change-Id: I7ee1d3e60d5d3e1c73d9820e07d23b9ce6e1a5ab
2013-01-10 10:25:42 -08:00
Robert Greenwalt
78851f10d1 Cache negative DNS results.
Find the TTL for the negative results using the minimum of
the SOA records TTL or the MINIMUM-TTL field (RFC-2308).

bug:5926539
Change-Id: I6d39c9fb558afcb7a4a5bc014d97dab4a85c0d4f
2013-01-09 16:36:33 -08:00
The Android Automerger
8868be3a9f merge in master-release history after reset to master 2013-01-09 07:49:04 -08:00
Elliott Hughes
5043c376c9 am 5c5fe07e: am 364d9ee6: Merge "Don\'t test GNU-style ELF hashes on MIPS."
* commit '5c5fe07e43a20cd28c20bbf7a4a0443062ef144f':
  Don't test GNU-style ELF hashes on MIPS.
2013-01-08 10:27:20 -08:00
Elliott Hughes
76187899a6 am 79cecbd4: am 7e22db03: Merge "Fix an off-by-one error in the sigset_t function error handling."
* commit '79cecbd42187c13cfdb5462c93de42168e56f49b':
  Fix an off-by-one error in the sigset_t function error handling.
2013-01-08 10:27:15 -08:00
Elliott Hughes
375e10f739 am 2458d06f: am 26c5b2d4: Merge "[MIPS] Rewrite fenv.h for Android"
* commit '2458d06fc17ade76a8e2ae980a1e38f36350c6ee':
  [MIPS] Rewrite fenv.h for Android
2013-01-08 10:27:14 -08:00
Elliott Hughes
5c5fe07e43 am 364d9ee6: Merge "Don\'t test GNU-style ELF hashes on MIPS."
* commit '364d9ee62f583bca795a2b40f71a04e272c80389':
  Don't test GNU-style ELF hashes on MIPS.
2013-01-07 15:00:28 -08:00
Elliott Hughes
364d9ee62f Merge "Don't test GNU-style ELF hashes on MIPS." 2013-01-07 14:46:13 -08:00
Elliott Hughes
a43e906221 Don't test GNU-style ELF hashes on MIPS.
The MIPS toolchain can't generate them because they're incompatible
with the MIPS ABI (which requires .dynsym match the GOT, while GNU-style
requires .dynsym to be sorted by hash code), so there's nothing to test.

Change-Id: I2220f452fe6fe595ec1312544cc741dd390a36a5
2013-01-07 14:44:36 -08:00
Elliott Hughes
79cecbd421 am 7e22db03: Merge "Fix an off-by-one error in the sigset_t function error handling."
* commit '7e22db037e6d9ab117bf5d50c7aca85fe74941a0':
  Fix an off-by-one error in the sigset_t function error handling.
2013-01-07 14:21:26 -08:00
Elliott Hughes
7e22db037e Merge "Fix an off-by-one error in the sigset_t function error handling." 2013-01-07 14:11:43 -08:00
Elliott Hughes
fb5e5cbdd4 Fix an off-by-one error in the sigset_t function error handling.
Spotted while running the tests on MIPS, where sigset_t is
actually large enough. The bits in sigset_t are used such that
signal 1 is represented by bit 0, so the range of signals is
actually [1, 8*sizeof(sigset_t)]; it seems clearer to reword
the code in terms of valid bit offsets [0, 8*sizeof(sigset_t)),
which leads to the usual bounds checking idiom.

Change-Id: Id899c288e15ff71c85dd2fd33c47f8e97aa1956f
2013-01-07 13:58:49 -08:00
Elliott Hughes
2458d06fc1 am 26c5b2d4: Merge "[MIPS] Rewrite fenv.h for Android"
* commit '26c5b2d460e3b2595eb7f0605edcd02753a13594':
  [MIPS] Rewrite fenv.h for Android
2013-01-07 13:48:55 -08:00
Elliott Hughes
26c5b2d460 Merge "[MIPS] Rewrite fenv.h for Android" 2013-01-07 13:30:58 -08:00
Raghu Gandham
d199017101 [MIPS] Rewrite fenv.h for Android
Change-Id: I4d1e2f0b37b587426ccc9f26c525ec0d36637c7d
2013-01-04 16:32:54 -08:00
The Android Automerger
326cb73c58 merge in master-release history after reset to master 2013-01-04 07:49:06 -08:00
Elliott Hughes
00ab4eb0db am ec137019: am 63dc5927: Merge "Add AF_CAN and PF_CAN (and other missing families)."
* commit 'ec1370191e3f0a8aedb8d77d1cec9a8aa58ebdd3':
  Add AF_CAN and PF_CAN (and other missing families).
2013-01-03 17:05:12 -08:00
Elliott Hughes
ec1370191e am 63dc5927: Merge "Add AF_CAN and PF_CAN (and other missing families)."
* commit '63dc592789e386ba2cd4e748090ba71d449a1e7c':
  Add AF_CAN and PF_CAN (and other missing families).
2013-01-03 16:59:39 -08:00
Elliott Hughes
63dc592789 Merge "Add AF_CAN and PF_CAN (and other missing families)." 2013-01-03 16:55:30 -08:00
Elliott Hughes
8dd63f31ba am 81508de3: am f0036944: Merge "Fix debug malloc."
* commit '81508de3d277db2ef3c8aa55b57ce3ce0a142e48':
  Fix debug malloc.
2013-01-03 16:47:22 -08:00
Elliott Hughes
81508de3d2 am f0036944: Merge "Fix debug malloc."
* commit 'f0036944a13a76dddda70347032128d4a27081d6':
  Fix debug malloc.
2013-01-03 16:42:42 -08:00
Elliott Hughes
d73c0b300e Add AF_CAN and PF_CAN (and other missing families).
Change-Id: I2c183a6f5f7a7e81e87dad85d8c9aff9c43ed33a
2013-01-03 16:25:47 -08:00
Elliott Hughes
f0036944a1 Merge "Fix debug malloc." 2013-01-03 16:20:01 -08:00
Elliott Hughes
db492b3ca7 Fix debug malloc.
...which has been broken since the linker data structures went read-only.

Bug: 7941716
Change-Id: If28f6bac0fcb13e371e4d85b064544f561c8d692
2013-01-03 15:44:03 -08:00
Elliott Hughes
27a7a5c138 am c654f4fd: am b1b53177: Merge "sysconf.c was renamed to sysconf.cpp (and modified)..."
* commit 'c654f4fda8f1b38109669cf0f5cb8a7d43860974':
  sysconf.c was renamed to sysconf.cpp (and modified)...
2013-01-03 12:10:17 -08:00
Elliott Hughes
c654f4fda8 am b1b53177: Merge "sysconf.c was renamed to sysconf.cpp (and modified)..."
* commit 'b1b5317799a34ac9e93f568af82952e52a9e9a13':
  sysconf.c was renamed to sysconf.cpp (and modified)...
2013-01-03 12:04:48 -08:00
Elliott Hughes
b1b5317799 Merge "sysconf.c was renamed to sysconf.cpp (and modified)..." 2013-01-03 11:54:57 -08:00
Elliott Hughes
7cbff41ba3 sysconf.c was renamed to sysconf.cpp (and modified)...
...but sysconf.c still lingers on due to some git/repo accident. Kill it.

Change-Id: Iae354ecb21abf03a3f718cc45cfdddb7a9347778
2013-01-03 11:53:35 -08:00
The Android Automerger
5c532dc8ee merge in master-release history after reset to master 2013-01-03 07:49:09 -08:00
Elliott Hughes
e9d6575e10 am 1287d106: am fb62558b: Merge "Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK)."
* commit '1287d106ed235e7366912bc7ab09df532848dd7a':
  Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK).
2013-01-02 16:35:08 -08:00
Elliott Hughes
1287d106ed am fb62558b: Merge "Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK)."
* commit 'fb62558bb4c25c8f71e0b949ba8552c674578674':
  Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK).
2013-01-02 15:55:42 -08:00
Elliott Hughes
fb62558bb4 Merge "Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK)." 2013-01-02 15:51:15 -08:00
Elliott Hughes
a55f63083f Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK).
Bug: http://code.google.com/p/android/issues/detail?id=39680
Change-Id: I11cf10a66f9d305868a725f04f581099fb88bbfc
2013-01-02 14:23:43 -08:00
The Android Automerger
803bd660b6 merge in master-release history after reset to master 2012-12-31 07:49:13 -08:00
Elliott Hughes
36a9f354c0 am c0c05ff8: am 918d776f: Merge "Support System.loadLibrary for libraries with transitive dependencies."
* commit 'c0c05ff8ecfe5f27aedcd6315e191245aa7b4824':
  Support System.loadLibrary for libraries with transitive dependencies.
2012-12-28 09:48:19 -08:00
Elliott Hughes
0ce87c8984 am df5c77c9: am f6524f8b: Merge "Fix format_number."
* commit 'df5c77c91a276a79d05f58241df3695b56422d54':
  Fix format_number.
2012-12-28 09:46:53 -08:00
Elliott Hughes
c0c05ff8ec am 918d776f: Merge "Support System.loadLibrary for libraries with transitive dependencies."
* commit '918d776f7edf1a9c4209ada4c2401ef0ea0bf660':
  Support System.loadLibrary for libraries with transitive dependencies.
2012-12-21 17:54:07 -08:00
Elliott Hughes
918d776f7e Merge "Support System.loadLibrary for libraries with transitive dependencies." 2012-12-21 17:46:22 -08:00
Elliott Hughes
df5c77c91a am f6524f8b: Merge "Fix format_number."
* commit 'f6524f8bda87f7d25dad7bed7091a93f3de58728':
  Fix format_number.
2012-12-21 10:04:27 -08:00
Elliott Hughes
f6524f8bda Merge "Fix format_number." 2012-12-20 19:08:17 -08:00
Elliott Hughes
eababde214 Fix format_number.
I broke this the other day when silencing x86 gcc warnings.

Bug: 7904160
Change-Id: I8e60cc1f8cbaff95248c8738d84e515413d839e4
2012-12-20 19:00:48 -08:00
Elliott Hughes
cade4c36e7 Support System.loadLibrary for libraries with transitive dependencies.
Also fix the FLAG_ERROR annoyance --- it's not helpful to cache failures.

Bug: 7896159
Bug: http://code.google.com/p/android/issues/detail?id=34416
Bug: http://code.google.com/p/android/issues/detail?id=22143
Change-Id: I60f235edb4ea4756e1f7ce56f7739f18e8a50789
2012-12-20 14:42:14 -08:00
The Android Automerger
2937d9ab54 merge in master-release history after reset to master 2012-12-20 07:49:12 -08:00
Elliott Hughes
d020802e37 am 5fd31f68: am 4b582142: Merge "Fix x86 dynamic linker build."
* commit '5fd31f6891a6e0b5db84c4c7992d0a4b08f3dddd':
  Fix x86 dynamic linker build.
2012-12-19 09:51:36 -08:00
Elliott Hughes
5fd31f6891 am 4b582142: Merge "Fix x86 dynamic linker build."
* commit '4b58214205d3d29dbdfed49964010235ef3f0403':
  Fix x86 dynamic linker build.
2012-12-19 09:46:32 -08:00
The Android Automerger
efe3ca7b48 merge in master-release history after reset to master 2012-12-19 07:49:06 -08:00
Elliott Hughes
05ab167cf7 am a0edecf3: am a4ebdcf5: Merge "Check for unknown flags passed to dlopen(3)."
* commit 'a0edecf3438d036ee2353076d171ee68939c2a5e':
  Check for unknown flags passed to dlopen(3).
2012-12-18 19:44:10 -08:00
Elliott Hughes
a0edecf343 am a4ebdcf5: Merge "Check for unknown flags passed to dlopen(3)."
* commit 'a4ebdcf5bd20072f9a0e48c22fff401acda43e1e':
  Check for unknown flags passed to dlopen(3).
2012-12-18 19:41:24 -08:00
Elliott Hughes
4b58214205 Merge "Fix x86 dynamic linker build." 2012-12-18 18:16:09 -08:00
Elliott Hughes
45288c5ce3 Fix x86 dynamic linker build.
Change-Id: Ia9fc6342e3d409de86dcd187c7402e8ac2ae96c8
2012-12-18 18:13:19 -08:00
Elliott Hughes
a4ebdcf5bd Merge "Check for unknown flags passed to dlopen(3)." 2012-12-18 16:38:37 -08:00
Elliott Hughes
e66190d2a9 Check for unknown flags passed to dlopen(3).
Change-Id: I56f4aab0e5a1487bc32d2c4d231e8bd15c4ac8da
2012-12-18 15:57:55 -08:00
The Android Automerger
b9cb7ee082 merge in master-release history after reset to master 2012-12-12 07:49:10 -08:00
Elliott Hughes
78b90c744d am 607bd477: am 4c4b08a3: Merge "Fix <endian.h> and <sys/endian.h>."
* commit '607bd47707680db36f377c5e8fc330953fd407e7':
  Fix <endian.h> and <sys/endian.h>.
2012-12-11 17:29:17 -08:00
Elliott Hughes
607bd47707 am 4c4b08a3: Merge "Fix <endian.h> and <sys/endian.h>."
* commit '4c4b08a32eace878e4780ee340a57c43be950159':
  Fix <endian.h> and <sys/endian.h>.
2012-12-11 17:27:41 -08:00
Elliott Hughes
4c4b08a32e Merge "Fix <endian.h> and <sys/endian.h>." 2012-12-11 17:18:58 -08:00
Elliott Hughes
4fa35d8ae8 Fix <endian.h> and <sys/endian.h>.
Previously we'd been relying on getting the machine-specific <endian.h>
instead of the top-level <endian.h>, and <sys/endian.h> was basically broken.
Now, with this patch and the previous patch we should have <endian.h>
and <sys/endian.h> behaving the same. This is basically how NetBSD's endian.h
works, and was probably how ours was originally intended to work.

Bug: http://code.google.com/p/android/issues/detail?id=39824
Change-Id: I71de5a507e633de166013a658b5764df9e1aa09c
2012-12-11 16:17:33 -08:00
The Android Automerger
f096529317 merge in master-release history after reset to master 2012-12-11 07:49:16 -08:00
Elliott Hughes
42d7a26d23 am f822e7f6: am 0521ff82: Merge "Use pthread_kill() in raise()"
* commit 'f822e7f68eec30bb175ccb46cd379f4a060b6c74':
  Use pthread_kill() in raise()
2012-12-10 11:42:06 -08:00
Elliott Hughes
f822e7f68e am 0521ff82: Merge "Use pthread_kill() in raise()"
* commit '0521ff8234cafcc61060961b2f856fcf4dae1e7d':
  Use pthread_kill() in raise()
2012-12-10 11:40:04 -08:00
Elliott Hughes
0521ff8234 Merge "Use pthread_kill() in raise()" 2012-12-10 11:21:42 -08:00
Chris Dearman
d8a5a6f513 Use pthread_kill() in raise()
raise() should use pthread_kill() in a pthreads environment.
For bionic this means it should always be used.

Change-Id: Ic679272b664d2b8a7068b628fb83a9f7395c441f
2012-12-10 11:20:57 -08:00
The Android Automerger
d08e76cd35 merge in master-release history after reset to master 2012-12-10 07:49:11 -08:00
Geremy Condra
edb53b3e9d am 28996f80: am 6fcf1770: Merge "Added audit.h from the kernel."
* commit '28996f80064579566d5a2ec5c69a00ef159a7e32':
  Added audit.h from the kernel.
2012-12-07 14:34:12 -08:00
Geremy Condra
28996f8006 am 6fcf1770: Merge "Added audit.h from the kernel."
* commit '6fcf1770e5829b8439b7e7ed7efb39ee5d425e23':
  Added audit.h from the kernel.
2012-12-07 14:32:21 -08:00
Geremy Condra
6fcf1770e5 Merge "Added audit.h from the kernel." 2012-12-07 14:21:16 -08:00
Geremy Condra
03e1ebbdd6 Added audit.h from the kernel.
Just followed the recipe in I1ca996541d05b0d5927ab828a6ce49c09877ea01

Change-Id: I5713d9ce5ff62e310a694ecfbe21cad6577bcb4d
2012-12-07 14:13:23 -08:00
Nick Kralevich
a710682db3 am 080210c1: am c8354f50: Merge "FORTIFY_SOURCE: remove memcpy overlap checks"
* commit '080210c16a3c233dacf26dda168932a475fdd40b':
  FORTIFY_SOURCE: remove memcpy overlap checks
2012-12-07 12:24:08 -08:00
Nick Kralevich
5e6213af54 am 79e1a01e: am 5dfdb701: Merge "FORTIFY_SOURCE: fix up previous commit"
* commit '79e1a01e9e994d88e17f6d11819dcfd35cfa5e19':
  FORTIFY_SOURCE: fix up previous commit
2012-12-07 12:24:07 -08:00
Nick Kralevich
080210c16a am c8354f50: Merge "FORTIFY_SOURCE: remove memcpy overlap checks"
* commit 'c8354f501ef9a6d3430de27386bf0b42c30981d9':
  FORTIFY_SOURCE: remove memcpy overlap checks
2012-12-07 12:19:08 -08:00
Nick Kralevich
79e1a01e9e am 5dfdb701: Merge "FORTIFY_SOURCE: fix up previous commit"
* commit '5dfdb701292c53e74e319f277d808e598389c8e7':
  FORTIFY_SOURCE: fix up previous commit
2012-12-07 12:18:58 -08:00
Nick Kralevich
c8354f501e Merge "FORTIFY_SOURCE: remove memcpy overlap checks" 2012-12-07 10:10:49 -08:00
Nick Kralevich
5787475390 FORTIFY_SOURCE: remove memcpy overlap checks
These checks haven't been as useful as I hoped, and it's
causing a false positive finding.  Remove the overlap
compile time checks.

Change-Id: I5d45dde10ae4663d728230d41fa904adf20acaea
2012-12-07 09:57:01 -08:00
Nick Kralevich
5dfdb70129 Merge "FORTIFY_SOURCE: fix up previous commit" 2012-12-06 14:48:24 -08:00
The Android Automerger
439bc8d540 merge in master-release history after reset to master 2012-12-06 07:49:14 -08:00
Nick Kralevich
8b6fea59ac FORTIFY_SOURCE: fix up previous commit
I forgot two files in 326ea5413d.

Change-Id: I30430f65bfafad4274193fc5b973959eac0791a7
2012-12-05 15:26:54 -08:00
Nick Kralevich
1c88362021 am 8717c3db: am 7a34ed2b: Merge "clean up FORTIFY_SOURCE handling."
* commit '8717c3db2f864226bb68c7e26ad73fcff1212b31':
  clean up FORTIFY_SOURCE handling.
2012-12-05 08:25:37 -08:00
The Android Automerger
c3d031ee91 merge in master-release history after reset to master 2012-12-05 07:49:06 -08:00
Nick Kralevich
8717c3db2f am 7a34ed2b: Merge "clean up FORTIFY_SOURCE handling."
* commit '7a34ed2bb36fcbe6967d8b670f4d70ada1dcef49':
  clean up FORTIFY_SOURCE handling.
2012-12-04 15:52:53 -08:00
Nick Kralevich
7a34ed2bb3 Merge "clean up FORTIFY_SOURCE handling." 2012-12-04 15:44:22 -08:00
Nick Kralevich
326ea5413d clean up FORTIFY_SOURCE handling.
Avoid duplicating huge chunks of code.

Change-Id: Id6145cdfce781c5ffba2abaaa79681d25a7ab28f
2012-12-04 15:27:30 -08:00
Nick Kralevich
babe7e16a1 am ded6e3bf: am db79e827: Merge "FORTIFY_SOURCE: fortify strrchr"
* commit 'ded6e3bfca3010350d58d93f5f0f5cea256a4f73':
  FORTIFY_SOURCE: fortify strrchr
2012-12-04 11:45:28 -08:00
Nick Kralevich
ded6e3bfca am db79e827: Merge "FORTIFY_SOURCE: fortify strrchr"
* commit 'db79e827ebcb077ebaa6d6c96915c5bffba9a0ca':
  FORTIFY_SOURCE: fortify strrchr
2012-12-04 11:43:30 -08:00
Nick Kralevich
db79e827eb Merge "FORTIFY_SOURCE: fortify strrchr" 2012-12-04 11:30:18 -08:00
The Android Automerger
49dd0409e0 merge in master-release history after reset to master 2012-12-04 07:49:13 -08:00
Nick Kralevich
9a4d305340 FORTIFY_SOURCE: fortify strrchr
This change compliments 049e58369c

Change-Id: I27d015d70a520713c7472558a3c427f546d36ee4
2012-12-03 10:39:16 -08:00
Elliott Hughes
a03b2b075f am 3960fb60: am 60fb6833: Merge "mmap: Remove madvise() workaround"
* commit '3960fb602ce0346aecae7eede0f5d2bc1f7463ed':
  mmap: Remove madvise() workaround
2012-12-03 09:38:44 -08:00
Elliott Hughes
3960fb602c am 60fb6833: Merge "mmap: Remove madvise() workaround"
* commit '60fb68338b7541b6022fc343857b90c088c399cd':
  mmap: Remove madvise() workaround
2012-12-03 09:36:47 -08:00
Elliott Hughes
60fb68338b Merge "mmap: Remove madvise() workaround" 2012-12-03 09:13:20 -08:00
Elliott Hughes
db11fdef1a am 43701d68: am 46d64ed2: Merge "Add argument checking to sigemptyset(3) and friends."
* commit '43701d68a90b161c64aa354a7d3e4ad9234a3174':
  Add argument checking to sigemptyset(3) and friends.
2012-12-03 07:55:38 -08:00
Elliott Hughes
43701d68a9 am 46d64ed2: Merge "Add argument checking to sigemptyset(3) and friends."
* commit '46d64ed2e5cf8e37d53b116f2281b4a39cc4f288':
  Add argument checking to sigemptyset(3) and friends.
2012-12-03 07:53:28 -08:00
The Android Automerger
ae7af291e6 merge in master-release history after reset to master 2012-12-03 07:49:12 -08:00
Elliott Hughes
46d64ed2e5 Merge "Add argument checking to sigemptyset(3) and friends." 2012-12-03 07:45:46 -08:00
Nick Kralevich
59b8677562 am 4140d90c: am 3acc908c: Merge "FORTIFY_SOURCE: fortify strchr"
* commit '4140d90c60e0a9b5b2f1b8ad3d17e169f7288ae9':
  FORTIFY_SOURCE: fortify strchr
2012-11-30 18:47:06 -08:00
Nick Kralevich
4140d90c60 am 3acc908c: Merge "FORTIFY_SOURCE: fortify strchr"
* commit '3acc908c79aa9cba975861fa23fa2672733b5d5d':
  FORTIFY_SOURCE: fortify strchr
2012-11-30 17:13:20 -08:00
Nick Kralevich
3acc908c79 Merge "FORTIFY_SOURCE: fortify strchr" 2012-11-30 16:50:59 -08:00
Elliott Hughes
da73f655fc Add argument checking to sigemptyset(3) and friends.
You could argue that this is hurting people smart enough to have manually
allocated a large-enough sigset_t, but those people are smart enough to
implement their own sigset functions too.

I wonder whether our least unpleasant way out of our self-inflicted 32-bit
cesspool is to have equivalents of _FILE_OFFSET_BITS such as _SIGSET_T_BITS,
so calling code could opt in? You'd have to be careful passing sigset_t
arguments between code compiled with different options.

Bug: 5828899
Change-Id: I0ae60ee8544835b069a2b20568f38ec142e0737b
2012-11-30 16:40:55 -08:00
Nick Kralevich
049e58369c FORTIFY_SOURCE: fortify strchr
Detect when strchr reads off the end of a buffer.

Change-Id: I0e952eedcff5c36d646a9c3bc4e1337b959224f2
2012-11-30 15:19:15 -08:00
Elliott Hughes
dcb8209409 am 7beaa502: am 16c61f08: Merge "Reduce the exposure of the __set_errno implementation detail."
* commit '7beaa5024f083431ca74ee73b01f5ad1e5b4198f':
  Reduce the exposure of the __set_errno implementation detail.
2012-11-30 14:46:50 -08:00
Elliott Hughes
7beaa5024f am 16c61f08: Merge "Reduce the exposure of the __set_errno implementation detail."
* commit '16c61f088524756ef0fa1b030719f6745eaef2db':
  Reduce the exposure of the __set_errno implementation detail.
2012-11-30 14:45:23 -08:00
Elliott Hughes
16c61f0885 Merge "Reduce the exposure of the __set_errno implementation detail." 2012-11-30 14:41:07 -08:00
Elliott Hughes
4a9e837840 Reduce the exposure of the __set_errno implementation detail.
Change-Id: I395e1b46a9491e34fc53e71853e932ea90b3d1cc
2012-11-30 12:05:18 -08:00
Elliott Hughes
2e51dc444f am 4835e6ef: am 97b70b2b: Merge "Replace .S version of x86 crtfiles with .c version"
* commit '4835e6ef519fc941651bbc13909cff971a6ec81b':
  Replace .S version of x86 crtfiles with .c version
2012-11-30 10:16:06 -08:00
Elliott Hughes
4835e6ef51 am 97b70b2b: Merge "Replace .S version of x86 crtfiles with .c version"
* commit '97b70b2bda47af46adf58dfde61050357114aa1f':
  Replace .S version of x86 crtfiles with .c version
2012-11-30 10:13:57 -08:00
Elliott Hughes
97b70b2bda Merge "Replace .S version of x86 crtfiles with .c version" 2012-11-30 10:07:19 -08:00
The Android Automerger
3fa99562ea merge in master-release history after reset to master 2012-11-30 07:49:20 -08:00
Pavel Chupin
20c4a3a8ee Replace .S version of x86 crtfiles with .c version
This patch replaces .S versions of x86 crtfiles with .c which are much
easier to support. Some of the files are matching .c version of Arm
crtfiles. x86 files required some cleanup anyway and this cleanup actually
led to matching Arm files.

I didn't change anything to share the same crt*.c between x86 and Arm. I
prefer to keep them separate for a while in case any change is required
for one of the arch, but it's good thing to do in the following patches.

Change-Id: Ibcf033f8d15aa5b10c05c879fd4b79a64dfc70f3
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2012-11-30 17:41:25 +04:00
Elliott Hughes
4ef6bc2e62 am 55210f74: am 07c0b73a: Merge "Remove (near-)duplicate definitions of size_t and ssize_t."
* commit '55210f74c71899b16f068bf30d7c9c5e647c490d':
  Remove (near-)duplicate definitions of size_t and ssize_t.
2012-11-29 19:45:27 -08:00
Elliott Hughes
55210f74c7 am 07c0b73a: Merge "Remove (near-)duplicate definitions of size_t and ssize_t."
* commit '07c0b73a7fc9214e50fc6b9a15a06aeef0506e0f':
  Remove (near-)duplicate definitions of size_t and ssize_t.
2012-11-29 19:43:50 -08:00
Elliott Hughes
07c0b73a7f Merge "Remove (near-)duplicate definitions of size_t and ssize_t." 2012-11-29 19:33:01 -08:00
Elliott Hughes
3975cec694 Remove (near-)duplicate definitions of size_t and ssize_t.
The near duplicates upset fussier compilers that insist that
typedefs be exactly the same, but the fix isn't to make all
copies identical...

Change-Id: Icfdace41726f36ec33c9ae919dbb5a54d3529cc9
2012-11-29 17:25:23 -08:00
Elliott Hughes
4ad0910774 am c5861c09: am 50e62e40: Merge "Bug: __WINT_TYPE__ and wint_t reference to different types"
* commit 'c5861c09d5be632c2d42a8dcbd3eba97bdf80e0d':
  Bug: __WINT_TYPE__ and wint_t reference to different types
2012-11-29 15:59:48 -08:00
Elliott Hughes
c5861c09d5 am 50e62e40: Merge "Bug: __WINT_TYPE__ and wint_t reference to different types"
* commit '50e62e4051c14d7d2a5e07ebe66afd2a81693a26':
  Bug: __WINT_TYPE__ and wint_t reference to different types
2012-11-29 15:58:13 -08:00
Elliott Hughes
50e62e4051 Merge "Bug: __WINT_TYPE__ and wint_t reference to different types" 2012-11-29 15:51:57 -08:00
The Android Open Source Project
e12a238d41 am d6d5cbb0: (-s ours) Reconcile with jb-mr1.1-release - do not merge
* commit 'd6d5cbb02a263bb8b5ae9e3721b3ee80575c110a':
  msm_mdp: Update header for 4 layer support
2012-11-29 15:42:37 -08:00
The Android Open Source Project
d6d5cbb02a Reconcile with jb-mr1.1-release - do not merge
Change-Id: Ib3c4bb83421360add15219251a389d25f1211497
2012-11-29 15:40:29 -08:00
Elliott Hughes
e8be11969f am 9ea86011: am 99ea84b1: Merge "[MIPS] Fix the MIPS getsid system call"
* commit '9ea86011a2c379b58df8c5b92efddf6764a57084':
  [MIPS] Fix the MIPS getsid system call
2012-11-29 15:15:33 -08:00
Elliott Hughes
7492875448 am 852935b6: am 5d4b8421: Merge "Verify architecture neutral syscall numbers"
* commit '852935b68f8b516f9f3f9cdff410b6a4b0cefc28':
  Verify architecture neutral syscall numbers
2012-11-29 15:15:33 -08:00
Elliott Hughes
3b48de92c7 am 56eb0bfe: am 78114220: Merge "Define DEFFILEMODE and friends"
* commit '56eb0bfedb5747407f1db5145f571695450c178d':
  Define DEFFILEMODE and friends
2012-11-29 15:15:27 -08:00
Naseer Ahmed
80a161db5c am ef7eea55: am 940e4c9d: am f61e5020: msm_mdp: Update header for 4 layer support
* commit 'ef7eea5538308d4a6d40cf964a6676409e890c24':
  msm_mdp: Update header for 4 layer support
2012-11-29 15:12:33 -08:00
Elliott Hughes
9ea86011a2 am 99ea84b1: Merge "[MIPS] Fix the MIPS getsid system call"
* commit '99ea84b12dd3ebebbbd527b8748f0d74bb1dfc0d':
  [MIPS] Fix the MIPS getsid system call
2012-11-29 14:51:57 -08:00
Elliott Hughes
852935b68f am 5d4b8421: Merge "Verify architecture neutral syscall numbers"
* commit '5d4b8421b3d040e8c2bdb83c8adb2752eab7b4b6':
  Verify architecture neutral syscall numbers
2012-11-29 14:51:56 -08:00
Elliott Hughes
99ea84b12d Merge "[MIPS] Fix the MIPS getsid system call" 2012-11-29 14:37:14 -08:00
Elliott Hughes
56eb0bfedb am 78114220: Merge "Define DEFFILEMODE and friends"
* commit '781142208033e72b3773bcfab83cddf5ca34c9b2':
  Define DEFFILEMODE and friends
2012-11-29 14:37:06 -08:00
Elliott Hughes
5d4b8421b3 Merge "Verify architecture neutral syscall numbers" 2012-11-29 14:34:19 -08:00
Elliott Hughes
7811422080 Merge "Define DEFFILEMODE and friends" 2012-11-29 14:31:19 -08:00
Naseer Ahmed
ef7eea5538 am 940e4c9d: am f61e5020: msm_mdp: Update header for 4 layer support
* commit '940e4c9d9218ee183c8eb522beb9838c0482084b':
  msm_mdp: Update header for 4 layer support
2012-11-29 14:28:29 -08:00
Naseer Ahmed
5115d4348e msm_mdp: Update header for 4 layer support
Bug: 7626586
Change-Id: I37730470dc09b7a9d6336b1603f87efd98f45e97
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-11-29 14:00:46 -08:00
Naseer Ahmed
940e4c9d92 am f61e5020: msm_mdp: Update header for 4 layer support
* commit 'f61e50201b7d5e793a479979c304d3388ca1405f':
  msm_mdp: Update header for 4 layer support
2012-11-29 12:40:57 -08:00
Chris Dearman
58aaaa730b [MIPS] Fix the MIPS getsid system call
Change-Id: I30a27941125bccb35d73a572a729ecf7dd555389
Signed-off-by: Chris Dearman <chris@mips.com>
2012-11-29 12:05:25 -08:00
Chris Dearman
285b02582b Verify architecture neutral syscall numbers
Also removed some dead code and fixed comment

Change-Id: I5d6a04b4af3d95e34368136cf2eeb3c9b6f99769
Signed-off-by: Chris Dearman <chris@mips.com>
2012-11-29 12:04:23 -08:00
Hakan Kvist
f27b7fb056 Define DEFFILEMODE and friends
Define the macros ACCESSPERMS, ALLPERMS and DEFFILEMODE.
These macros originates from BSD but has been available in glibc
for quite some time.

Change-Id: I429cd30aa4e73f53b153ee7740070cebba166c57
2012-11-29 11:53:33 -08:00
Naseer Ahmed
f61e50201b msm_mdp: Update header for 4 layer support
Bug: 7626586
Change-Id: I37730470dc09b7a9d6336b1603f87efd98f45e97
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-11-29 10:47:35 -08:00
The Android Automerger
d8366eae3b merge in master-release history after reset to master 2012-11-28 07:49:16 -08:00
Elliott Hughes
321b545ad9 am dea13da3: Merge "Clean up _BYTE_ORDER definitions for better x86 portability."
* commit 'dea13da3407873e4f3fec9ba1a04b4fdacea07f4':
  Clean up _BYTE_ORDER definitions for better x86 portability.
2012-11-27 18:44:17 -08:00
Elliott Hughes
dea13da340 Merge "Clean up _BYTE_ORDER definitions for better x86 portability." 2012-11-27 17:34:52 -08:00
Elliott Hughes
b15c58bb0f Clean up _BYTE_ORDER definitions for better x86 portability.
We'd manually hacked _BYTE_ORDER into the arm and mips "_types.h" headers,
but not into the x86 one. Judging by upstream, _BYTE_ORDER should be in
the "endian.h" headers instead, so let's uniformly do that.

I've also ironed out some of the other differences between the different
architectures' header files too.

Bug: http://code.google.com/p/android/issues/detail?id=39824
Change-Id: I19d3af7ffd74e1c02b1b6886aec0f0d11f44ab8d
2012-11-27 14:18:04 -08:00
The Android Automerger
947f74dc95 merge in master-release history after reset to master 2012-11-27 07:49:30 -08:00
Elliott Hughes
4867b00666 am f2de6b0f: Merge "Do not include \'\0\' when writing error messages to stderr"
* commit 'f2de6b0f6e873f9cb28682b8fc6764b0ab41c6ee':
  Do not include '\0' when writing error messages to stderr
2012-11-26 16:04:19 -08:00
Elliott Hughes
f2de6b0f6e Merge "Do not include '\0' when writing error messages to stderr" 2012-11-26 15:44:58 -08:00
Chris Dearman
20a24403bc Do not include '\0' when writing error messages to stderr
Change-Id: I6adc806c3920e5a4ae61ca55c40613fcf338b18c
Signed-off-by: Chris Dearman <chris@mips.com>
2012-11-26 15:43:17 -08:00
Elliott Hughes
03ff63cee0 am 429b05a1: Merge "Upgrade to tzdata2012j."
* commit '429b05a1dfa71c6085590d60e0bdfa09beb50844':
  Upgrade to tzdata2012j.
2012-11-26 15:12:30 -08:00
Elliott Hughes
429b05a1df Merge "Upgrade to tzdata2012j." 2012-11-26 14:52:07 -08:00
Elliott Hughes
5d2ef8724d Upgrade to tzdata2012j.
This reflects the following changes recently circulated on the tz mailing list:

  Libya moved to CET [2012-11-11], but with DST planned [2013].
  (Thanks to Even Scharning, Steffen Thorsen, and Tim Parenti.)

I also had to change the script to cope with:

  Signatures now have the extension .asc, not .sign, as that's more
  standard.  (Thanks to Phil Pennock.)

Change-Id: Ie9711c5c796b3c122daea9690929edcc3ddd32da
2012-11-26 14:51:39 -08:00
Sergey Melnikov
a437bff914 Bug: __WINT_TYPE__ and wint_t reference to different types
__WINT_TYPE__ type provided by gcc. It references to unsigned int
type for android and linux. Patch corrects wint_t typedef to
__WINT_TYPE__.

Signed-off-by: Sergey Melnikov <sergey.melnikov@intel.com>
Change-Id: Iabeb9fcb0b7bb303a8b220043e339126f125dd68
2012-11-26 12:01:58 +04:00
The Android Automerger
72f43a929f merge in master-release history after reset to master 2012-11-20 07:49:04 -08:00
Nick Kralevich
635df850e5 mmap: Remove madvise() workaround
Remove mmap() calling madvise(MADV_MERGEABLE) added
in b8e1e9685e

Change-Id: I80dbf6afe750348964d83097f993ea6cb8a065d5
2012-11-19 11:46:33 -08:00
Nick Kralevich
c16ea16134 am 8784709a: Merge "We should use load_bias. This patch fixes MIPS NDK device exception test failures."
* commit '8784709a2cfe6d32b5fff2c6b826b8d9cbf73d7b':
  We should use load_bias.  This patch fixes MIPS NDK device exception test failures.
2012-11-19 11:08:49 -08:00
Nick Kralevich
8784709a2c Merge "We should use load_bias. This patch fixes MIPS NDK device exception test failures." 2012-11-19 10:45:18 -08:00
Chao-Ying Fu
c5db969aa4 We should use load_bias. This patch fixes MIPS NDK device exception test failures.
Change-Id: I4b718c36666e66062c1f13e4deea1ec7a7951c54
2012-11-19 10:30:15 -08:00
The Android Automerger
8dd20fcd88 merge in master-release history after reset to master 2012-11-19 07:49:16 -08:00
Robert Greenwalt
3269d63772 Merge "Add search domain to dns interface data." 2012-11-16 12:21:33 -08:00
Nick Kralevich
3a681c8db1 am fe07ca04: Merge "Support GNU_RELRO for static executables."
* commit 'fe07ca04e4af6c43d068df0e23dc83431053fc22':
  Support GNU_RELRO for static executables.
2012-11-16 11:27:30 -08:00
Nick Kralevich
aec9a254a2 am 170168cd: Merge "Temporarily address gcc 4.7 breakage."
* commit '170168cdf37111b45b15817fab9e3df54cbc27b7':
  Temporarily address gcc 4.7 breakage.
2012-11-16 10:42:55 -08:00
Nick Kralevich
fe07ca04e4 Merge "Support GNU_RELRO for static executables." 2012-11-16 08:45:52 -08:00
Nick Kralevich
170168cdf3 Merge "Temporarily address gcc 4.7 breakage." 2012-11-15 15:57:15 -08:00
Nick Kralevich
83697b8b76 Temporarily address gcc 4.7 breakage.
Change-Id: I8ebb2d5df2f8f8aedf252c94ff69505e61ed0a74
2012-11-15 15:48:19 -08:00
Nick Kralevich
ac3de8d080 Support GNU_RELRO for static executables.
In 9ec0f03a0d, we added dynamic
linker support for GNU_RELRO protections. These protections
make certain regions of memory read-only, helping protect certain
data structures from accidental or deliberate modifications.

This change adds GNU_RELRO support to STATIC executables.  We can
determine if we're compiled with relro protections by examining
our own program headers, which is passed to us by the kernel
in the AT_PHDR and AT_PHNUM auxiliary vectors.

Parts of this code were stolen from the dynamic linker.

Change-Id: Ic17eb5f932218538ec25347ece314d4dc7549de1
2012-11-15 12:52:06 -08:00
Robert Greenwalt
6f3222ea42 Add search domain to dns interface data.
This doesn't currently use this info - it's still using the system
property based data-passing.  That change is comming.

bug:6799630
Change-Id: I725463209855447cd04bf1457281f3084fffd692
2012-11-13 11:50:57 -08:00
The Android Automerger
5b3aa025f3 merge in master-release history after reset to master 2012-11-12 07:49:10 -08:00
Elliott Hughes
da273a17e7 am c079dfe4: am 6542ac03: Merge "Add a memmove(3) benchmark."
* commit 'c079dfe4153941e6da881be9a143b41a1112c2ac':
  Add a memmove(3) benchmark.
2012-11-09 22:44:35 -08:00
Elliott Hughes
02a6ca7ef5 am d86d713b: am b62e2770: Merge "Add optimized version of memset for Cortex A9"
* commit 'd86d713b6345ac9c030aeb0eedee11fc17d2fba1':
  Add optimized version of memset for Cortex A9
2012-11-09 22:44:17 -08:00
Elliott Hughes
c079dfe415 am 6542ac03: Merge "Add a memmove(3) benchmark."
* commit '6542ac0380581e0cd0ad47e2763b732d93e9d6bd':
  Add a memmove(3) benchmark.
2012-11-09 16:21:08 -08:00
Elliott Hughes
6542ac0380 Merge "Add a memmove(3) benchmark." 2012-11-09 16:17:35 -08:00
Elliott Hughes
d86d713b63 am b62e2770: Merge "Add optimized version of memset for Cortex A9"
* commit 'b62e2770e7c41f9cbe41acca4f25966eea2bc533':
  Add optimized version of memset for Cortex A9
2012-11-09 15:15:09 -08:00
Elliott Hughes
b62e2770e7 Merge "Add optimized version of memset for Cortex A9" 2012-11-09 15:06:50 -08:00
Henrik Smiding
884e4f839b Add optimized version of memset for Cortex A9
Adds new code to function memset, optimized for Cortex A9.

Copyright (C) ST-Ericsson SA 2010

Added neon implementation

Author: Henrik Smiding henrik.smiding@stericsson.com for ST-Ericsson.

Change-Id: Id3c87767953439269040e15bd30a27aba709aef6
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
2012-11-09 15:05:32 -08:00
Elliott Hughes
fbe44ec043 Add a memmove(3) benchmark.
Change-Id: I9c0ffae0b5aae29521b7e68e5ce2318b5a401cba
2012-11-09 14:59:21 -08:00
The Android Automerger
6aa473274c merge in master-release history after reset to master 2012-11-09 07:49:12 -08:00
Elliott Hughes
b3dc5c60aa am 0b25791a: am 49677dec: Merge "Add optimized version of memcpy for Cortex A9"
* commit '0b25791a2819e01b28f777901facd5db03ba6961':
  Add optimized version of memcpy for Cortex A9
2012-11-08 18:18:35 -08:00
Elliott Hughes
0b25791a28 am 49677dec: Merge "Add optimized version of memcpy for Cortex A9"
* commit '49677deca2c2984ae6c0a3df8fbada7132e82940':
  Add optimized version of memcpy for Cortex A9
2012-11-08 18:13:30 -08:00
Elliott Hughes
aad391b8a6 am 6181aead: am c2132915: Merge "Add optimized version of memcmp for Cortex A9"
* commit '6181aead7b052503518d3c4ee836b7e9ddeca157':
  Add optimized version of memcmp for Cortex A9
2012-11-08 18:11:55 -08:00
Elliott Hughes
1233104f5e am 66eada96: am 7aca3103: Merge "Simple google3-compatible benchmarking."
* commit '66eada963290104e56a3c1785ff8a08ee5d800b5':
  Simple google3-compatible benchmarking.
2012-11-08 18:11:54 -08:00
Elliott Hughes
49677deca2 Merge "Add optimized version of memcpy for Cortex A9" 2012-11-08 18:04:28 -08:00
Henrik Smiding
6d0bcdc832 Add optimized version of memcpy for Cortex A9
Adds new code to memcpy function, optimized for Cortex A9.
Adds new ARM-only loop, for operations where source and
destination are aligned.

Copyright (C) ST-Ericsson SA 2010

Modified neon implementation to fit Cortex A9 cache line size,
for those running 32 bytes L2 cache line size.
Also split the implementation in aligned and unaligned access,
for those that allows unaligned memory access with Neon.
For totally aligned operations, arm-only code is used.

Change-Id: I95ebf6164cd6486b12a7e3e98e369db21e7e18d2
Author: Henrik Smiding henrik.smiding@stericsson.com for ST-Ericsson.
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
2012-11-08 18:02:14 -08:00
Elliott Hughes
6181aead7b am c2132915: Merge "Add optimized version of memcmp for Cortex A9"
* commit 'c2132915158014f578c3f003c9399961fe8d6da2':
  Add optimized version of memcmp for Cortex A9
2012-11-08 17:53:41 -08:00
Elliott Hughes
c213291515 Merge "Add optimized version of memcmp for Cortex A9" 2012-11-08 17:48:19 -08:00
Elliott Hughes
66eada9632 am 7aca3103: Merge "Simple google3-compatible benchmarking."
* commit '7aca3103069d7603cff47db7141b64f6a9d94f86':
  Simple google3-compatible benchmarking.
2012-11-08 16:31:13 -08:00
Elliott Hughes
7aca310306 Merge "Simple google3-compatible benchmarking." 2012-11-08 16:26:45 -08:00
Elliott Hughes
7be369d4c6 Simple google3-compatible benchmarking.
Based on our open-source RE2 benchmarking code.

Includes benchmarks for a handful of <string.h> functions.

Change-Id: I30eb70d25dbf4ad5f2ca44976a8ce3b1ff7dad01
2012-11-08 15:37:43 -08:00
Elliott Hughes
dfaf06ac03 am 70827cc8: am d460f3f1: Merge "Tests for string routines."
* commit '70827cc85ad8f7085131ff9c8d1e69bc80f9a9f3':
  Tests for string routines.
2012-11-08 09:33:57 -08:00
Elliott Hughes
70827cc85a am d460f3f1: Merge "Tests for string routines."
* commit 'd460f3f1af80af40d8c3fab12a68459d8d1ec4c5':
  Tests for string routines.
2012-11-08 09:29:33 -08:00
Elliott Hughes
d460f3f1af Merge "Tests for string routines." 2012-11-08 09:15:22 -08:00
The Android Automerger
930a507786 merge in master-release history after reset to master 2012-11-08 07:49:11 -08:00
Elliott Hughes
2c9590664f am e4180f85: am 5408ac3c: Merge "Fix dlopen_library_with_only_gnu_hash_Test."
* commit 'e4180f85b717a4aec8024babda394221ba177c26':
  Fix dlopen_library_with_only_gnu_hash_Test.
2012-11-07 18:36:34 -08:00
Elliott Hughes
e4180f85b7 am 5408ac3c: Merge "Fix dlopen_library_with_only_gnu_hash_Test."
* commit '5408ac3c8dfe4857985b94fb7bd883fd3899c48b':
  Fix dlopen_library_with_only_gnu_hash_Test.
2012-11-07 18:31:37 -08:00
Elliott Hughes
5408ac3c8d Merge "Fix dlopen_library_with_only_gnu_hash_Test." 2012-11-07 18:19:00 -08:00
Elliott Hughes
6e33b0296d Fix dlopen_library_with_only_gnu_hash_Test.
Change-Id: Id3395f155587cfa74061f97a2cb4c6a6e59c13dc
2012-11-07 18:16:02 -08:00
Anna Tikhonova
036154b0c2 Tests for string routines.
Change-Id: I24068a228f59df1c3b758c5b2026a09720490616
Signed-off-by: Anna Tikhonova <anna.tikhonova@intel.com>
2012-11-07 18:14:29 -08:00
The Android Automerger
bace2c47d3 merge in master-release history after reset to master 2012-11-07 07:49:17 -08:00
The Android Open Source Project
d15c8737ce am 92b7fbf8: (-s ours) am 414aadc7: am 3bf2fcf9: Reconcile with jb-mr1-factory-release jb-mr1-release - do not merge
* commit '92b7fbf8725fed5bfa3cae7c26d09e813b3ae920':
2012-11-06 11:18:49 -08:00
The Android Open Source Project
92b7fbf872 am 414aadc7: am 3bf2fcf9: Reconcile with jb-mr1-factory-release jb-mr1-release - do not merge
* commit '414aadc79de68713e0a80a033c03b651615176f8':
2012-11-06 11:16:38 -08:00
The Android Open Source Project
414aadc79d am 3bf2fcf9: Reconcile with jb-mr1-factory-release jb-mr1-release - do not merge
* commit '3bf2fcf9a2bc811bbee194b19f2a00c4cfb24701':
  Revert "Update ion header"
  :Revert "Update ion header"
  Revert "Upgrade to dlmalloc 2.8.5."
  Revert "Restore posix_memalign"
  When compiling with clang, don't "fortify_source" the strlcpy and strlcat.
  When compiling with clang, don't "fortify_source" the strlen.
  Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
  Update msm_camera.h to version that supports instance handle based lookup
  Replace ALL_PREBUILTS with BUILD_PREBUILT
2012-11-06 11:13:52 -08:00
The Android Open Source Project
3bf2fcf9a2 Reconcile with jb-mr1-factory-release jb-mr1-release - do not merge
Change-Id: I8a58a6aebc81829d15af6802f16d956cad2d39c8
2012-11-06 11:12:01 -08:00
Elliott Hughes
d052eb6b47 am 8baaf6ff: am 604a163e: Merge "Rewrite <fenv.h> for ARM."
* commit '8baaf6ff9617ea5d0e49ca4a954c1b01cc306cbc':
  Rewrite <fenv.h> for ARM.
2012-11-05 16:57:23 -08:00
Elliott Hughes
8baaf6ff96 am 604a163e: Merge "Rewrite <fenv.h> for ARM."
* commit '604a163e4c7724f881605fdbda94db4f7c8f0e7a':
  Rewrite <fenv.h> for ARM.
2012-11-05 16:51:53 -08:00
Elliott Hughes
604a163e4c Merge "Rewrite <fenv.h> for ARM." 2012-11-05 16:43:35 -08:00
Elliott Hughes
dc20297f8d am 06224085: am bb91e9fb: Merge "Upgrade to tzdata2012i."
* commit '062240853d75a795db956965cacd4ab09a959ce7':
  Upgrade to tzdata2012i.
2012-11-05 11:34:20 -08:00
Elliott Hughes
062240853d am bb91e9fb: Merge "Upgrade to tzdata2012i."
* commit 'bb91e9fb96ec6ea8a6ebcf17bf70f66f957df30b':
  Upgrade to tzdata2012i.
2012-11-05 10:57:20 -08:00
Elliott Hughes
bb91e9fb96 Merge "Upgrade to tzdata2012i." 2012-11-05 10:42:58 -08:00
Elliott Hughes
da71c7d9a3 am ce876beb: am a41e6426: Merge "Tone down some of the overly-verbose linker logging."
* commit 'ce876bebf250d386a06ebc1145c6959e30bf413c':
  Tone down some of the overly-verbose linker logging.
2012-11-05 09:21:57 -08:00
Elliott Hughes
ce876bebf2 am a41e6426: Merge "Tone down some of the overly-verbose linker logging."
* commit 'a41e6426073c57881f49bdaec46ca90a5b164401':
  Tone down some of the overly-verbose linker logging.
2012-11-05 09:19:57 -08:00
Elliott Hughes
a41e642607 Merge "Tone down some of the overly-verbose linker logging." 2012-11-05 09:13:31 -08:00
Elliott Hughes
9c94fc9fbe Tone down some of the overly-verbose linker logging.
We don't need to see every dlopen(3)/dlsym(3) failure unless LD_DEBUG is on.

Change-Id: I1edfe8b72f32ff54dd30e1acf32e20d470d5e9f7
2012-11-05 09:11:43 -08:00
Elliott Hughes
e3063f4e55 Upgrade to tzdata2012i.
Also support GPG signature verification of updates, and fix remaining
pylint complaints.

The 2012i release of the tz data reflects the following changes recently
circulated on the tz mailing list:

* Cuba switches from DST [2012-11-04] at 01:00.  (Thanks to Steffen Thorsen.)

Change-Id: Ie81d395afa40aa217a0196aad8ca1f9a870bbc31
2012-11-05 08:53:28 -08:00
Elliott Hughes
90e10d41c4 Rewrite <fenv.h> for ARM.
The old code was one big no-op.

Bug: http://code.google.com/p/android/issues/detail?id=38196
Change-Id: I201a6ffa477385b2629f45e8c948bdfbd47b5bf1
2012-11-05 08:50:19 -08:00
The Android Automerger
5793235ec4 merge in master-release history after reset to master 2012-11-05 07:49:21 -08:00
Elliott Hughes
f1566fd692 am bc35807f: am 9df2e000: Merge "Cleaning the linker environment as we initialize it requires less API."
* commit 'bc35807fc6c5f11b6d057b20250d41ebc419da62':
  Cleaning the linker environment as we initialize it requires less API.
2012-11-02 13:58:48 -07:00
Elliott Hughes
d752fc0286 am cfb47daf: am 01271b18: Merge "Make dynamic linker debugging always available."
* commit 'cfb47daf4eb4741ac462c7350c73ad1cf96cf83f':
  Make dynamic linker debugging always available.
2012-11-02 13:58:47 -07:00
Elliott Hughes
bc35807fc6 am 9df2e000: Merge "Cleaning the linker environment as we initialize it requires less API."
* commit '9df2e000b5d56b2e529656034d684e370aa6a8d1':
  Cleaning the linker environment as we initialize it requires less API.
2012-11-02 13:56:00 -07:00
Elliott Hughes
cfb47daf4e am 01271b18: Merge "Make dynamic linker debugging always available."
* commit '01271b1812f2cec8aaf3c105b9f960f027b33a95':
  Make dynamic linker debugging always available.
2012-11-02 13:55:59 -07:00
Elliott Hughes
9df2e000b5 Merge "Cleaning the linker environment as we initialize it requires less API." 2012-11-02 13:47:50 -07:00
Elliott Hughes
01271b1812 Merge "Make dynamic linker debugging always available." 2012-11-02 13:46:55 -07:00
Elliott Hughes
61a9ccb41e Make dynamic linker debugging always available.
If you need to build your own linker to get debugging, the debugging
is never available when you need it.

Change-Id: I5ff7e55753459d49a2990f25d9aa155e0b8602e0
2012-11-02 13:46:23 -07:00
Elliott Hughes
0894b2c5d3 Cleaning the linker environment as we initialize it requires less API.
Change-Id: I612fd699e46833a411589478564a1f859223c380
2012-11-02 12:40:11 -07:00
Elliott Hughes
1d0129b1b2 am cdc5a17c: am ed537239: Merge "Adjust symbol lookup for DT_SYMBOLIC case"
* commit 'cdc5a17cef00c49086e1bfe4c3715d2ebd61addb':
  Adjust symbol lookup for DT_SYMBOLIC case
2012-11-02 11:39:02 -07:00
Elliott Hughes
cdc5a17cef am ed537239: Merge "Adjust symbol lookup for DT_SYMBOLIC case"
* commit 'ed537239a94ebd11a8c262a319d81fd1f0d3f73f':
  Adjust symbol lookup for DT_SYMBOLIC case
2012-11-02 11:37:40 -07:00
Elliott Hughes
ed537239a9 Merge "Adjust symbol lookup for DT_SYMBOLIC case" 2012-11-02 11:25:49 -07:00
The Android Automerger
80bcf54766 merge in master-release history after reset to master 2012-11-02 07:49:13 -07:00
Pavel Chupin
c77c434149 Adjust symbol lookup for DT_SYMBOLIC case
According ELF spec re. DT_SYMBOLIC:
This element's presence in a shared object library alters the dynamic
linker's symbol resolution algorithm for references within the library.
Instead of starting a symbol search with the executable file, the
dynamic linker starts from the shared object itself. If the shared
object fails to supply the referenced symbol, the dynamic linker then
searches the executable file and other shared objects as usual.

This change implements the last part.

Change-Id: Iae95d53d455313a4306f11733941bcd3596ac85f
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2012-11-02 18:34:22 +04:00
Elliott Hughes
eb15e1d485 am e109930e: am dc77a228: Merge "Allow dlopen("egl/blah.so")."
* commit 'e109930e9fd0922280e6f74b3df270093ee95fa6':
  Allow dlopen("egl/blah.so").
2012-11-01 23:10:56 -07:00
Elliott Hughes
e109930e9f am dc77a228: Merge "Allow dlopen("egl/blah.so")."
* commit 'dc77a22850e31eb369ec9776c13c967566bf61d0':
  Allow dlopen("egl/blah.so").
2012-11-01 23:08:27 -07:00
Elliott Hughes
dc77a22850 Merge "Allow dlopen("egl/blah.so")." 2012-11-01 23:01:58 -07:00
Elliott Hughes
6971fe4ca5 Allow dlopen("egl/blah.so").
NVIDIA binary blobs construct strings to pass to dlopen(3) that
contain '/' but require that we fall back to LD_LIBRARY_PATH.

Change-Id: Iad831899986baace6962f4b335eeb288250a1e22
2012-11-01 22:59:19 -07:00
Elliott Hughes
ceda36fa12 am 7f7ac8cd: am e3c7b519: Merge "Don\'t corrupt the thread list if the main thread exits."
* commit '7f7ac8cd19f1a7fc61aa640505747dee9036fa61':
  Don't corrupt the thread list if the main thread exits.
2012-11-01 17:39:12 -07:00
Elliott Hughes
7f7ac8cd19 am e3c7b519: Merge "Don\'t corrupt the thread list if the main thread exits."
* commit 'e3c7b5192e65eeb0bd90bf884d3435ed9adfad0e':
  Don't corrupt the thread list if the main thread exits.
2012-11-01 17:37:04 -07:00
Elliott Hughes
e3c7b5192e Merge "Don't corrupt the thread list if the main thread exits." 2012-11-01 17:28:01 -07:00
Elliott Hughes
4f251bee5d Don't corrupt the thread list if the main thread exits.
...and don't pass a non-heap pointer to free(3), either.

This patch replaces the "node** prev" with the clearer "node* prev"
style and fixes the null pointer dereference in the old code. That's
not sufficient to fix the reporter's bug, though. The pthread_internal_t*
for the main thread isn't heap-allocated --- __libc_init_tls causes a
pointer to a statically-allocated pthread_internal_t to be added to
the thread list.

Bug: http://code.google.com/p/android/issues/detail?id=37410
Change-Id: I112b7f22782fc789d58f9c783f7b323bda8fb8b7
2012-11-01 17:27:07 -07:00
Elliott Hughes
d781dfdb09 am 6db8f5bb: am d30116cf: Merge "Keep the dynamic linker\'s soinfo pools mostly read-only."
* commit '6db8f5bb75bb79e0b4873e6d293aa25e2c9f090b':
  Keep the dynamic linker's soinfo pools mostly read-only.
2012-11-01 17:02:23 -07:00
Elliott Hughes
6db8f5bb75 am d30116cf: Merge "Keep the dynamic linker\'s soinfo pools mostly read-only."
* commit 'd30116cf4a590e7bea3b73fa49bb27502a920819':
  Keep the dynamic linker's soinfo pools mostly read-only.
2012-11-01 17:00:13 -07:00
Elliott Hughes
d30116cf4a Merge "Keep the dynamic linker's soinfo pools mostly read-only." 2012-11-01 16:49:37 -07:00
Elliott Hughes
d23736e4f2 Keep the dynamic linker's soinfo pools mostly read-only.
We'll need a lot more refactoring of this code before we can reduce
the granularity, but this is a step forward.

Change-Id: I07061720e734b571a8399c1d5b4f2f35cd681307
2012-11-01 16:48:14 -07:00
Elliott Hughes
02c3513e5f am 65ba5b62: am 064f862d: Merge "Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too."
* commit '65ba5b62c5a59181317b86f772d9ebb756d4741f':
  Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too.
2012-11-01 14:15:11 -07:00
Elliott Hughes
65ba5b62c5 am 064f862d: Merge "Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too."
* commit '064f862d557ab741575dfae479499a07ca0ab742':
  Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too.
2012-11-01 14:14:00 -07:00
Elliott Hughes
064f862d55 Merge "Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too." 2012-11-01 13:57:00 -07:00
Elliott Hughes
1a6961650c Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too.
Also remove an unnecessary #include and a now-obsolete TODO.

Change-Id: I36d923721e349a286934b9534090a67ce0786e7b
2012-11-01 13:53:26 -07:00
Elliott Hughes
00fe4a20d7 am 3bb62578: am 0be1819b: Merge "Dynamically allocate soinfo-structs in linker"
* commit '3bb62578beb36a35d3b1d2fbe18bd34a9d4ecca4':
  Dynamically allocate soinfo-structs in linker
2012-11-01 11:47:31 -07:00
Elliott Hughes
3bb62578be am 0be1819b: Merge "Dynamically allocate soinfo-structs in linker"
* commit '0be1819b22b33fbedcb150f96a196ed096abe2fc':
  Dynamically allocate soinfo-structs in linker
2012-11-01 11:44:29 -07:00
Elliott Hughes
0be1819b22 Merge "Dynamically allocate soinfo-structs in linker" 2012-11-01 11:36:02 -07:00
Magnus Malmborn
ba98d9237b Dynamically allocate soinfo-structs in linker
Request memory from the system when needed instead of having a fixed
array for soinfo structs. Note that malloc() et al can't be used in
linker, so use mmap() instead.

Change-Id: I4b495995931d7752b0e8c944e64d1fe41b9f7144
2012-11-01 11:31:39 -07:00
The Android Automerger
7a6ae1d667 merge in master-release history after reset to master 2012-11-01 07:49:21 -07:00
Elliott Hughes
e892414bd3 am 1de3af51: am c0ac7eba: Merge "Reject .so files with no sysv hash table."
* commit '1de3af51d459c2ced602f10e4f7e7fe704400cdc':
  Reject .so files with no sysv hash table.
2012-10-31 15:15:45 -07:00
Elliott Hughes
1de3af51d4 am c0ac7eba: Merge "Reject .so files with no sysv hash table."
* commit 'c0ac7eba934fb88f321c75a71312ea482e9a85e9':
  Reject .so files with no sysv hash table.
2012-10-31 15:13:30 -07:00
Elliott Hughes
c0ac7eba93 Merge "Reject .so files with no sysv hash table." 2012-10-31 15:09:46 -07:00
Elliott Hughes
124fae9eab Reject .so files with no sysv hash table.
Also ensure that dlopen(3) errors always include the name of the library we
failed to open.

Also fix a bug where we'd fall back to searching LD_LIBRARY_PATH and the
built-in paths for names that include slashes.

Bug: http://code.google.com/p/android/issues/detail?id=38479
Change-Id: Ib2c009ed083344a7a012749d58f8679db2f26c78
2012-10-31 14:30:50 -07:00
Elliott Hughes
a4242290a1 am f510fc78: am b46530bd: Merge "Start cleaning up libm."
* commit 'f510fc789a67344080543b9ae06d0ff3322561d5':
  Start cleaning up libm.
2012-10-31 13:54:18 -07:00
Elliott Hughes
f510fc789a am b46530bd: Merge "Start cleaning up libm."
* commit 'b46530bd3e5984047bd780f5d3a6a5ebabd9f02d':
  Start cleaning up libm.
2012-10-31 13:51:50 -07:00
Elliott Hughes
b46530bd3e Merge "Start cleaning up libm." 2012-10-31 13:43:41 -07:00
Elliott Hughes
0f7809d5c3 Start cleaning up libm.
We have two copies of fenv.h for every architecture, one of which
isn't used. We also have unused makefiles and files for architectures
we don't support.

This patch removes all the obviously useless files.

Bug: http://code.google.com/p/android/issues/detail?id=38196
Change-Id: I1919b6621ba513aa24aa947a34815bc51191487c
2012-10-31 13:32:34 -07:00
The Android Open Source Project
b5b52e73e9 am 089111a8: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '089111a80a6a167de827bf32ae2d2a935ff5874f':
2012-10-31 09:19:14 -07:00
The Android Open Source Project
089111a80a Reconcile with jb-mr1-release - do not merge
Change-Id: Ice07f7813d823b0419153d5ac321ad784a690af4
2012-10-31 09:15:16 -07:00
The Android Automerger
a9b0cd68de merge in master-release history after reset to master 2012-10-31 07:49:21 -07:00
The Android Automerger
f29c214d6a merge in jb-mr1-release history after reset to jb-mr1-dev 2012-10-30 20:11:57 -07:00
Elliott Hughes
8478dbc85f am 3cd7a165: am 084be591: Merge "linker: handle R_ARM_COPY relocations in a proper way"
* commit '3cd7a1653aa579213cb68a666bd9949e2b8fff95':
  linker: handle R_ARM_COPY relocations in a proper way
2012-10-30 17:20:01 -07:00
Elliott Hughes
3cd7a1653a am 084be591: Merge "linker: handle R_ARM_COPY relocations in a proper way"
* commit '084be591923d3d509cea0a0f4b11b073e362d730':
  linker: handle R_ARM_COPY relocations in a proper way
2012-10-30 17:18:04 -07:00
Elliott Hughes
084be59192 Merge "linker: handle R_ARM_COPY relocations in a proper way" 2012-10-30 17:10:30 -07:00
Ard Biesheuvel
5ae44f302b linker: handle R_ARM_COPY relocations in a proper way
If an executable contain copy relocations, other references
to the symbol it points to should be preempted and made to
point to the copy instead.

Also, the linker should make sure the target area has
sufficient space to contain the copy. It also checks
whether the library that supplies the symbol is built
with -Bsymbolic, and errors out if this is the case.

Change-Id: If135c83590092741cfd8f82f54816f363a4a4a3b
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
2012-10-30 17:09:21 -07:00
Elliott Hughes
864d48917a am 914112ea: am 155e8d1d: Merge "More dynamic linker cleanup."
* commit '914112ea21a62c7658dc4b094a369358009be6a9':
  More dynamic linker cleanup.
2012-10-30 16:59:17 -07:00
Elliott Hughes
914112ea21 am 155e8d1d: Merge "More dynamic linker cleanup."
* commit '155e8d1df5b8fdfeabda3e7b61d95beb5b8d1467':
  More dynamic linker cleanup.
2012-10-30 16:56:29 -07:00
Elliott Hughes
155e8d1df5 Merge "More dynamic linker cleanup." 2012-10-30 16:41:01 -07:00
Elliott Hughes
18a206c81d More dynamic linker cleanup.
I still want to break linker_format out into its own library so we can reuse
it for malloc debugging and so forth. (There are many similar pieces of code
in bionic, but the linker's one seems to be the most complete/functional.)

Change-Id: If3721853d28937c8e821ca1d23cf200e228a409a
2012-10-30 16:35:38 -07:00
Elliott Hughes
08c4e30e23 am b0ac82e9: Merge commit \'bd8ee3d3\' into mm
* commit 'b0ac82e9baf969236be1174b49784500b33e6f48':
  Upgrade to tzdata2012h.
2012-10-30 15:24:37 -07:00
Elliott Hughes
b0ac82e9ba Merge commit 'bd8ee3d3' into mm 2012-10-30 15:20:13 -07:00
Elliott Hughes
bd8ee3d35e am a811d7a8: Upgrade to tzdata2012h.
* commit 'a811d7a8e638ca49aee704c613cb9f1e03c3698d':
  Upgrade to tzdata2012h.
2012-10-30 14:30:12 -07:00
Elliott Hughes
4d2ea14288 am 4569ab97: am 06b59610: Merge "Fix bug in pthread_join, pthread_exit, pthread_detach"
* commit '4569ab9773efb1c984bde146002975e7a3753f11':
  Fix bug in pthread_join, pthread_exit, pthread_detach
2012-10-30 13:06:47 -07:00
Elliott Hughes
4569ab9773 am 06b59610: Merge "Fix bug in pthread_join, pthread_exit, pthread_detach"
* commit '06b596104a9ed3ac089abd00186a5698d7e8544f':
  Fix bug in pthread_join, pthread_exit, pthread_detach
2012-10-30 13:04:23 -07:00
Elliott Hughes
06b596104a Merge "Fix bug in pthread_join, pthread_exit, pthread_detach" 2012-10-30 12:57:58 -07:00
Elliott Hughes
c7358ee57c am 743a273e: am 1f21ece4: Merge "Clean up the <libgen.h> implementation a little, bring in tests."
* commit '743a273e40e49c199d79462338fc606ae12c999f':
  Clean up the <libgen.h> implementation a little, bring in tests.
2012-10-30 10:11:44 -07:00
Elliott Hughes
7d617d0db9 am 5f787190: am 4d36b0bd: Merge "Fix the pthread_join on self error case."
* commit '5f787190a9e7a749d95f566f920b78eafcd05050':
  Fix the pthread_join on self error case.
2012-10-30 10:11:43 -07:00
Elliott Hughes
5e805afa79 am 0b8fa1d4: am 9297af94: Merge "Fix a potential NULL pointer dereference in _init_thread()."
* commit '0b8fa1d456f6cf831be41a6dc6b0a67e89f01bd5':
  Fix a potential NULL pointer dereference in _init_thread().
2012-10-30 10:11:42 -07:00
Elliott Hughes
d4834a217e am 40e467ec: am 33c4a3ad: Merge "libc: Fix alphasort() signature (and implementation)."
* commit '40e467ec668b59be25491bd44bf348a884d6a68d':
  libc: Fix alphasort() signature (and implementation).
2012-10-30 10:11:41 -07:00
Elliott Hughes
5ce5edd6cf am 85765609: am 8f9a1eb1: Merge "Upgrade to tzdata2012h."
* commit '8576560979e3d126ef8204959b87336d980b390b':
  Upgrade to tzdata2012h.
2012-10-30 10:11:40 -07:00
Elliott Hughes
96b52e104a am a67cedb5: am 9e783963: Merge "Clean up the implementation of the <dirent.h> functions."
* commit 'a67cedb52cb57f116a545482bddb979d995fd634':
  Clean up the implementation of the <dirent.h> functions.
2012-10-30 10:11:39 -07:00
Elliott Hughes
743a273e40 am 1f21ece4: Merge "Clean up the <libgen.h> implementation a little, bring in tests."
* commit '1f21ece48a87abbbdd9fb939b79a1dd81fb867eb':
  Clean up the <libgen.h> implementation a little, bring in tests.
2012-10-29 17:15:12 -07:00
Elliott Hughes
5f787190a9 am 4d36b0bd: Merge "Fix the pthread_join on self error case."
* commit '4d36b0bd38559ae0376b61a0ac2f5fa8329ec56d':
  Fix the pthread_join on self error case.
2012-10-29 17:15:09 -07:00
Elliott Hughes
0b8fa1d456 am 9297af94: Merge "Fix a potential NULL pointer dereference in _init_thread()."
* commit '9297af943887d9d6974aaec8c45a4e7d93422965':
  Fix a potential NULL pointer dereference in _init_thread().
2012-10-29 17:15:03 -07:00
Elliott Hughes
40e467ec66 am 33c4a3ad: Merge "libc: Fix alphasort() signature (and implementation)."
* commit '33c4a3adde3cf1753af0661f48ce86358e105277':
  libc: Fix alphasort() signature (and implementation).
2012-10-29 17:15:02 -07:00
Elliott Hughes
8576560979 am 8f9a1eb1: Merge "Upgrade to tzdata2012h."
* commit '8f9a1eb108f22fc2ce7283ef184d909ec0ca1152':
  Upgrade to tzdata2012h.
2012-10-29 17:15:01 -07:00
Elliott Hughes
a67cedb52c am 9e783963: Merge "Clean up the implementation of the <dirent.h> functions."
* commit '9e783963d58acf48e06902236ea64c7f5b337a0f':
  Clean up the implementation of the <dirent.h> functions.
2012-10-29 17:14:59 -07:00
Elliott Hughes
1f21ece48a Merge "Clean up the <libgen.h> implementation a little, bring in tests." 2012-10-29 15:03:36 -07:00
Elliott Hughes
58b575485c Clean up the <libgen.h> implementation a little, bring in tests.
Most of these tests were in system/extras, but I've added more to cover other
cases explicitly mentioned by POSIX.

Change-Id: I5e8d77e4179028d77306935cceadbb505515dcde
2012-10-29 14:27:10 -07:00
Sergey Melnikov
10ce96944e Fix bug in pthread_join, pthread_exit, pthread_detach
pthread_no_op_detach_after_join test from bionic-unit-tests hangs
on x86 emulator. There is a race in the pthread_join, pthread_exit,
pthread_detach functions:
- pthread_join waits for the non-detached thread
- pthread_detach sets the detached flag on that thread
- the thread executes pthread_exit which just kills the now-detached
thread, without sending the join notification.

This patch improves the test so it fails on ARM too, and modifies
pthread_detach to behave more like glibc, not setting the detach state if
called on a thread that's already being joined (but not returning an error).

Change-Id: I87dc688221ce979ef5178753dd63d01ac0b108e6
Signed-off-by: Sergey Melnikov <sergey.melnikov@intel.com>
2012-10-29 11:31:26 -07:00
Elliott Hughes
4d36b0bd38 Merge "Fix the pthread_join on self error case." 2012-10-29 10:30:16 -07:00
Elliott Hughes
14f19592ae Fix the pthread_join on self error case.
We should return EDEADLK, not deadlock the calling thread.

Change-Id: I1243483f709c11b2a60e41142725c54c7dbfcbc9
2012-10-29 10:19:44 -07:00
Elliott Hughes
9297af9438 Merge "Fix a potential NULL pointer dereference in _init_thread()." 2012-10-29 08:26:01 -07:00
Xi Wang
ae8eb74675 Fix a potential NULL pointer dereference in _init_thread().
The first NULL pointer check against `attr' suggests that `attr' can
be NULL.  Then later `attr' is directly dereferenced, suggesting the
opposite.

    if (attr == NULL) {
        ...
    } else {
        ...
    }
    ...
    if (attr->stack_base == ...) { ... }

The public API pthread_create(3) allows NULL, and interprets it as "default".
Our implementation actually swaps in a pointer to the global default
pthread_attr_t, so we don't need any NULL checks in _init_thread. (The other
internal caller passes its own pthread_attr_t.)

Change-Id: I0a4e79b83f5989249556a07eed1f2887e96c915e
Signed-off-by: Xi Wang <xi.wang@gmail.com>
2012-10-29 08:22:13 -07:00
Elliott Hughes
33c4a3adde Merge "libc: Fix alphasort() signature (and implementation)." 2012-10-29 07:45:13 -07:00
David 'Digit' Turner
c30396f5f2 libc: Fix alphasort() signature (and implementation).
The declaration for alphasort() in <dirent.h> used the deprecated:

  int alphasort(const void*, const void*);

while both Posix and GLibc use instead:

  int alphasort(const struct dirent** a, const struct dirent** b);

See: http://pubs.opengroup.org/onlinepubs/9699919799/functions/alphasort.html

This patch does the following:

- Update the declaration to match Posix/GLibc
- Get rid of the upstream BSD code which isn't compatible with the new
  signature.
- Implement a new trivial alphasort() with the right signature, and
  ensure that it uses strcoll() instead of strcmp().
- Remove Bionic-specific #ifdef .. #else .. #endif block in
  dirent_test.cpp which uses alphasort().

Even through strcoll() currently uses strcmp(), this does the right
thing in the case where we decide to update strcoll() to properly
implement locale-specific ordered comparison.

Change-Id: I4fd45604d8a940aaf2eb0ecd7d73e2f11c9bca96
2012-10-29 07:44:27 -07:00
Elliott Hughes
8f9a1eb108 Merge "Upgrade to tzdata2012h." 2012-10-29 07:29:13 -07:00
Elliott Hughes
f93fc10fc4 Upgrade to tzdata2012h.
The 2012h release reflects the following changes recently circulated
on the tz mailing list:

[Brazil]  Bahia no longer has DST.  (Thanks to Kelley Cook.)

[Brazil]  Tocantins has DST.  (Thanks to Rodrigo Severo.)

[Israel]  Israel has new DST rules next year.  (Thanks to Ephraim Silverberg.)

[Jordan]  Jordan stays on DST this winter.  (Thanks to Steffen Thorsen.)

Bug: 7429010
Change-Id: I0ec5fb72343e42f3f79490dfdea5f7f1946ae76f
2012-10-28 11:34:35 -07:00
Elliott Hughes
a811d7a8e6 Upgrade to tzdata2012h.
The 2012h release reflects the following changes recently circulated
on the tz mailing list:

[Brazil]  Bahia no longer has DST.  (Thanks to Kelley Cook.)

[Brazil]  Tocantins has DST.  (Thanks to Rodrigo Severo.)

[Israel]  Israel has new DST rules next year.  (Thanks to Ephraim Silverberg.)

[Jordan]  Jordan stays on DST this winter.  (Thanks to Steffen Thorsen.)

Bug: 7429010
Change-Id: I82f19ce49f944f928b6dd8dc5a893786266e5cb9
2012-10-28 11:33:56 -07:00
Elliott Hughes
9e783963d5 Merge "Clean up the implementation of the <dirent.h> functions." 2012-10-26 16:42:48 -07:00
Elliott Hughes
063cfb2084 Clean up the implementation of the <dirent.h> functions.
Change-Id: I3c647cc9588525afc41fee90ee468d58cd13503a
2012-10-26 16:42:06 -07:00
The Android Automerger
5b006f3d08 merge in master-release history after reset to master 2012-10-26 07:49:10 -07:00
Elliott Hughes
4e0b489a0c am 8cacc639: am 7193731a: Merge "Workaround g++ 4.7 compfail"
* commit '8cacc639b6ae660c494aca07c537cb443c6c6cd9':
  Workaround g++ 4.7 compfail
2012-10-25 15:23:29 -07:00
Elliott Hughes
8cacc639b6 am 7193731a: Merge "Workaround g++ 4.7 compfail"
* commit '7193731ae6b8083bc7a5e5e468fb98b1dbcf3f3d':
  Workaround g++ 4.7 compfail
2012-10-25 15:20:29 -07:00
Elliott Hughes
a7bb83475b am 85819efe: am f2b3ac95: Merge "Fix recovery: don\'t assert if there\'s no tzdata."
* commit '85819efe8f771759d12ab86f0bd47ede621dbb7d':
  Fix recovery: don't assert if there's no tzdata.
2012-10-25 15:16:44 -07:00
Elliott Hughes
85819efe8f am f2b3ac95: Merge "Fix recovery: don\'t assert if there\'s no tzdata."
* commit 'f2b3ac9502e08ef53d4eedd7e93ea9a00d185055':
  Fix recovery: don't assert if there's no tzdata.
2012-10-25 15:09:29 -07:00
Elliott Hughes
7193731ae6 Merge "Workaround g++ 4.7 compfail" 2012-10-25 15:00:45 -07:00
Elliott Hughes
f2b3ac9502 Merge "Fix recovery: don't assert if there's no tzdata." 2012-10-25 14:56:53 -07:00
Elliott Hughes
49271d89da Fix recovery: don't assert if there's no tzdata.
Change-Id: I4d808b57c63ec1ccc024da7fd6a65691e0d455c5
2012-10-25 14:56:08 -07:00
Elliott Hughes
0f96dd8dcb am df7f24f3: am 7b68e3f7: Merge "Per-thread -fstack-protector guards for x86."
* commit 'df7f24f310ee3ceb1dc9413d59d5a8816eb584ef':
  Per-thread -fstack-protector guards for x86.
2012-10-25 12:23:56 -07:00
Elliott Hughes
df7f24f310 am 7b68e3f7: Merge "Per-thread -fstack-protector guards for x86."
* commit '7b68e3f799d87e84c56687033326924fd8fec84c':
  Per-thread -fstack-protector guards for x86.
2012-10-25 12:22:34 -07:00
Elliott Hughes
7b68e3f799 Merge "Per-thread -fstack-protector guards for x86." 2012-10-25 12:08:50 -07:00
Elliott Hughes
ad88a08631 Per-thread -fstack-protector guards for x86.
Based on a pair of patches from Intel:

  https://android-review.googlesource.com/#/c/43909/
  https://android-review.googlesource.com/#/c/44903/

For x86, this patch supports _both_ the global that ARM/MIPS use
and the per-thread TLS entry (%gs:20) that GCC uses by default. This
lets us support binaries built with any x86 toolchain (right now,
the NDK is emitting x86 code that uses the global).

I've also extended the original tests to cover ARM/MIPS too, and
be a little more thorough for x86.

Change-Id: I02f279a80c6b626aecad449771dec91df235ad01
2012-10-25 12:04:03 -07:00
The Android Automerger
2654447c0e merge in master-release history after reset to master 2012-10-25 07:52:10 -07:00
Pavel Chupin
20aa6c0f4c Workaround g++ 4.7 compfail
error: C99 designator 'name' outside aggregate initializer

G++ 4.7+ can't handle some of C99 designated initializers.
Most likely it's just not implemented yet. Other possible workarounds is
to compile this as C not C++ or define name as char* instead of char[SIZE].

Appeared after this change https://android-review.googlesource.com/#/c/44470

Change-Id: Ib28157848ce759b8bb5dbb2ac0d9a768fa4e5107
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2012-10-25 17:58:45 +04:00
Elliott Hughes
4cdc426207 am 60c7ac26: am d0f2b7e7: Merge "More upstream NetBSD upgrades."
* commit '60c7ac262241588f7942ca068f33d706c8fe5cc4':
  More upstream NetBSD upgrades.
2012-10-23 17:29:47 -07:00
Elliott Hughes
60c7ac2622 am d0f2b7e7: Merge "More upstream NetBSD upgrades."
* commit 'd0f2b7e7e65f19f978c59abcbb522c08e76b1508':
  More upstream NetBSD upgrades.
2012-10-23 17:15:07 -07:00
Elliott Hughes
d0f2b7e7e6 Merge "More upstream NetBSD upgrades." 2012-10-23 16:55:19 -07:00
Elliott Hughes
ab44f52202 More upstream NetBSD upgrades.
Change-Id: Idb781d37de3b05585271d7d258ecffd5ba87d0b8
2012-10-23 16:05:09 -07:00
Elliott Hughes
217e616772 am 45f07555: am e3dbe1e3: Merge "Upgrade more functions to the current upstream NetBSD copy."
* commit '45f075556b26cfe91b1b7e1299b54f0328a06acb':
  Upgrade more functions to the current upstream NetBSD copy.
2012-10-23 13:58:25 -07:00
Elliott Hughes
45f075556b am e3dbe1e3: Merge "Upgrade more functions to the current upstream NetBSD copy."
* commit 'e3dbe1e3820d6ab0370566055e9cdc593c5cce48':
  Upgrade more functions to the current upstream NetBSD copy.
2012-10-23 13:55:59 -07:00
Elliott Hughes
e3dbe1e382 Merge "Upgrade more functions to the current upstream NetBSD copy." 2012-10-23 13:45:37 -07:00
Elliott Hughes
e8bcca3a2c Upgrade more functions to the current upstream NetBSD copy.
Change-Id: Ie0b3f8b3fccef28609eb210434413ebd51d6ef45
2012-10-23 12:29:53 -07:00
Elliott Hughes
1d212fa6eb am 4280143d: am fb93e6a5: Merge "Move setlocale(3) and the wchar stubs over to .cpp."
* commit '4280143d371eae2123a5d8c4d8779db159ecd1e2':
  Move setlocale(3) and the wchar stubs over to .cpp.
2012-10-22 18:08:54 -07:00
Elliott Hughes
4280143d37 am fb93e6a5: Merge "Move setlocale(3) and the wchar stubs over to .cpp."
* commit 'fb93e6a5b322a87e61de19421a72d6dfcc82b614':
  Move setlocale(3) and the wchar stubs over to .cpp.
2012-10-22 18:06:55 -07:00
Elliott Hughes
fb93e6a5b3 Merge "Move setlocale(3) and the wchar stubs over to .cpp." 2012-10-22 17:50:27 -07:00
Elliott Hughes
29c7f0b4d1 Move setlocale(3) and the wchar stubs over to .cpp.
Also separate out the C++ files so we can use -Werror on them. I'd
rather wait for LOCAL_CPPFLAGS to be in AOSP, but this also lets us
see which files still need to be sorted into one bucket or the other.

Change-Id: I6acc1f7c043935c70a3b089f705d218b9aaaba0a
2012-10-22 17:05:27 -07:00
Elliott Hughes
1d8b87d2b4 am 69ec117b: am 5a9911e9: Merge "Add missing BEGIN_DECLS/END_DECLS for FORTIFY_SOURCE stdio prototypes."
* commit '69ec117b22e3e842bff15f54f3e777cdf3206d21':
  Add missing BEGIN_DECLS/END_DECLS for FORTIFY_SOURCE stdio prototypes.
2012-10-22 16:31:29 -07:00
Elliott Hughes
c866dc20bf am 9d5a96c0: am 574773b1: Merge "Clean up warnings in stubs.cpp."
* commit '9d5a96c0d9583fe9a02190ba54a855a2dcc87eb9':
  Clean up warnings in stubs.cpp.
2012-10-22 16:31:28 -07:00
Elliott Hughes
69ec117b22 am 5a9911e9: Merge "Add missing BEGIN_DECLS/END_DECLS for FORTIFY_SOURCE stdio prototypes."
* commit '5a9911e94086a15a7f2d5a7c9173847f123a46ea':
  Add missing BEGIN_DECLS/END_DECLS for FORTIFY_SOURCE stdio prototypes.
2012-10-22 16:29:13 -07:00
Elliott Hughes
9d5a96c0d9 am 574773b1: Merge "Clean up warnings in stubs.cpp."
* commit '574773b1eae797e2f7a1d11d0176755d2e74eb41':
  Clean up warnings in stubs.cpp.
2012-10-22 16:29:12 -07:00
Elliott Hughes
5a9911e940 Merge "Add missing BEGIN_DECLS/END_DECLS for FORTIFY_SOURCE stdio prototypes." 2012-10-22 16:13:04 -07:00
Elliott Hughes
574773b1ea Merge "Clean up warnings in stubs.cpp." 2012-10-22 16:12:47 -07:00
Elliott Hughes
ce45fea03d Add missing BEGIN_DECLS/END_DECLS for FORTIFY_SOURCE stdio prototypes.
Change-Id: I35ceb09fedf873c5e98e1e26efce5e4f00a17e74
2012-10-22 16:10:27 -07:00
Elliott Hughes
6fa26e21bc Clean up warnings in stubs.cpp.
Change-Id: Ie0792846de7cf5f5c72737494bf78ab8dcb8cc3e
2012-10-22 16:04:56 -07:00
Elliott Hughes
8b8cc88d39 am 75f33adc: am 4e457759: Merge "Move the FORTIFY_SOURCE helpers over to .cpp."
* commit '75f33adcb1f845ae121eb5508b120aaaa9f7a217':
  Move the FORTIFY_SOURCE helpers over to .cpp.
2012-10-22 16:00:03 -07:00
Elliott Hughes
75f33adcb1 am 4e457759: Merge "Move the FORTIFY_SOURCE helpers over to .cpp."
* commit '4e457759893a6a6ab4f84a5aea231d0a11c7bb13':
  Move the FORTIFY_SOURCE helpers over to .cpp.
2012-10-22 15:57:42 -07:00
Elliott Hughes
4e45775989 Merge "Move the FORTIFY_SOURCE helpers over to .cpp." 2012-10-22 15:51:12 -07:00
Elliott Hughes
4035b7a321 Move the FORTIFY_SOURCE helpers over to .cpp.
Change-Id: Ib5067d51b983cac7760c975becce7fe2408ead04
2012-10-22 15:32:01 -07:00
Elliott Hughes
3135c87ca8 am 008744ce: am df92635a: Merge "Support zone.tab in bionic, and remove the file format version."
* commit '008744cedaa7e3be533bbedb51dd986c6dfea987':
  Support zone.tab in bionic, and remove the file format version.
2012-10-22 15:11:07 -07:00
Elliott Hughes
008744ceda am df92635a: Merge "Support zone.tab in bionic, and remove the file format version."
* commit 'df92635a57e8093d9cbffc38bbf513f3361ee91e':
  Support zone.tab in bionic, and remove the file format version.
2012-10-22 15:08:38 -07:00
Elliott Hughes
df92635a57 Merge "Support zone.tab in bionic, and remove the file format version." 2012-10-22 14:56:32 -07:00
Elliott Hughes
2393535f0d Support zone.tab in bionic, and remove the file format version.
Bug: 7012465
Change-Id: I6335c91ebadc609fae85bad94db972be7574b6e4
2012-10-22 14:47:58 -07:00
Elliott Hughes
9407c5c126 am 417834b1: am eb370aa3: Merge "Make bionic look in /data/misc for tzdata updates."
* commit '417834b17ee00a6b1cd4e816f632c3596f3f51c3':
  Make bionic look in /data/misc for tzdata updates.
2012-10-22 11:55:42 -07:00
Elliott Hughes
417834b17e am eb370aa3: Merge "Make bionic look in /data/misc for tzdata updates."
* commit 'eb370aa31dd549ad7a7a2044dedab1140a7aeda9':
  Make bionic look in /data/misc for tzdata updates.
2012-10-22 11:53:22 -07:00
Elliott Hughes
eb370aa31d Merge "Make bionic look in /data/misc for tzdata updates." 2012-10-22 11:37:26 -07:00
Elliott Hughes
1c29572034 Make bionic look in /data/misc for tzdata updates.
Bug: 7012465
Change-Id: I4d1018f686f2409600fdb6630732cae33efe8f02
2012-10-22 11:34:05 -07:00
Elliott Hughes
1b62d4e72e am 629a28cd: am dc595d83: Merge "Change ZoneCompator to generate the single "tzdata" file."
* commit '629a28cdf384d83a4d433de8e1299b01e42cc75e':
  Change ZoneCompator to generate the single "tzdata" file.
2012-10-19 17:24:22 -07:00
Elliott Hughes
421083359e am 58d08711: am 7a85c42b: Merge "Update generate-NOTICE.py to know about tzdata."
* commit '58d08711af5e8237d6196652d59cc4e8b8caafcf':
  Update generate-NOTICE.py to know about tzdata.
2012-10-19 17:24:21 -07:00
Elliott Hughes
629a28cdf3 am dc595d83: Merge "Change ZoneCompator to generate the single "tzdata" file."
* commit 'dc595d830898e5859bf98d7436af2a777a11f810':
  Change ZoneCompator to generate the single "tzdata" file.
2012-10-19 17:21:41 -07:00
Elliott Hughes
58d08711af am 7a85c42b: Merge "Update generate-NOTICE.py to know about tzdata."
* commit '7a85c42b8f7af801a31208ed83589b5397baee73':
  Update generate-NOTICE.py to know about tzdata.
2012-10-19 17:21:40 -07:00
Elliott Hughes
dc595d8308 Merge "Change ZoneCompator to generate the single "tzdata" file." 2012-10-19 17:12:37 -07:00
Elliott Hughes
7a85c42b8f Merge "Update generate-NOTICE.py to know about tzdata." 2012-10-19 17:07:46 -07:00
The Android Automerger
5ba74660e3 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-10-19 15:45:58 -07:00
Elliott Hughes
5b1497acdb Change ZoneCompator to generate the single "tzdata" file.
Also remove the obsolete individual files, and the temporary script
that converted between the formats.

Bug: 7012465
Change-Id: I5a4030098e4d53e747fd6d395df2679d1567ee1f
2012-10-19 15:45:46 -07:00
Elliott Hughes
4612763b44 Update generate-NOTICE.py to know about tzdata.
Also regenerate the NOTICE files. One had slipped behind.

Bug: 7012465
Change-Id: Ice2e909b521472eb1acd53d8151038bebe19984a
2012-10-19 14:55:19 -07:00
Elliott Hughes
933746ad7d am af72df5b: am e75c273a: Merge "Track the tzdata2012g update in the new file format."
* commit 'af72df5b98944cfb89cecb7abc05bceec0612981':
  Track the tzdata2012g update in the new file format.
2012-10-19 14:42:05 -07:00
Elliott Hughes
af72df5b98 am e75c273a: Merge "Track the tzdata2012g update in the new file format."
* commit 'e75c273ac434043153f22b1c2f89c042928407bc':
  Track the tzdata2012g update in the new file format.
2012-10-19 14:40:25 -07:00
Elliott Hughes
e75c273ac4 Merge "Track the tzdata2012g update in the new file format." 2012-10-19 14:30:05 -07:00
Elliott Hughes
8af5412efc Track the tzdata2012g update in the new file format.
Change-Id: Id18aeb1122df769d83c4be06fbf37681231e79f0
2012-10-19 14:28:56 -07:00
Elliott Hughes
bde97cf154 am 98533cfa: am 88cd1a21: Merge "Upgrade to tzdata2012g."
* commit '98533cfa4b69d053e111e46bc74d8e9b2035a96e':
  Upgrade to tzdata2012g.
2012-10-19 13:53:21 -07:00
Elliott Hughes
18ee86f892 am f0af78c2: am 551ca77e: Merge "Do all the zoneinfo.* file generation in Java."
* commit 'f0af78c27bede71304a894c23fb3100d027fc74b':
  Do all the zoneinfo.* file generation in Java.
2012-10-19 13:53:20 -07:00
Elliott Hughes
98533cfa4b am 88cd1a21: Merge "Upgrade to tzdata2012g."
* commit '88cd1a2188cde62d9f94881549791b7c197b2116':
  Upgrade to tzdata2012g.
2012-10-19 13:51:19 -07:00
Elliott Hughes
f0af78c27b am 551ca77e: Merge "Do all the zoneinfo.* file generation in Java."
* commit '551ca77e35098272abfe9484457827c661d23ef0':
  Do all the zoneinfo.* file generation in Java.
2012-10-19 13:51:18 -07:00
Elliott Hughes
88cd1a2188 Merge "Upgrade to tzdata2012g." 2012-10-19 13:45:55 -07:00
Elliott Hughes
c2c2a48845 Upgrade to tzdata2012g.
This release reflects the following changes recently circulated on the tz
mailing list:

        Samoa fall 2012 and later.  (Thanks to Nicholas Pereira
        and Robert Elz.)

        Palestine fall 2012.  (Thanks to Steffen Thorsen.)

This release does not reflect the possible changes discussed yesterday
for Tocantins and Bahia.

(cherry-pick of f0e402dbd257ab495eab514b347db4b3d6844826.)

Change-Id: I8202292b11accedb811194a821dacf837a1bbd6e
2012-10-19 13:43:10 -07:00
Elliott Hughes
551ca77e35 Merge "Do all the zoneinfo.* file generation in Java." 2012-10-19 13:37:25 -07:00
Elliott Hughes
174b6d0e19 am 356c0af6: am 2266e495: Merge "Switch bionic over to using libcore\'s copy of libcore.util.ZoneInfo."
* commit '356c0af60b83988bdb55970c8f29886a2fa5a672':
  Switch bionic over to using libcore's copy of libcore.util.ZoneInfo.
2012-10-19 13:22:50 -07:00
Elliott Hughes
356c0af60b am 2266e495: Merge "Switch bionic over to using libcore\'s copy of libcore.util.ZoneInfo."
* commit '2266e4956f4b245903acd66f0cc32ec5caf5abae':
  Switch bionic over to using libcore's copy of libcore.util.ZoneInfo.
2012-10-19 13:18:07 -07:00
Elliott Hughes
328a484588 Do all the zoneinfo.* file generation in Java.
Bug: 7012465
Change-Id: Ia5d5ad75db94d680a6b34ccc26eb68d5bd2bfc29
2012-10-19 13:03:52 -07:00
Elliott Hughes
2266e4956f Merge "Switch bionic over to using libcore's copy of libcore.util.ZoneInfo." 2012-10-19 13:01:04 -07:00
Elliott Hughes
eb06129c5c Switch bionic over to using libcore's copy of libcore.util.ZoneInfo.
Bug: 7012465
Change-Id: I1225494c5d77a20fd48be1e904d8695ef95860e3
2012-10-19 12:05:24 -07:00
Elliott Hughes
a7bc708e0c am fb8ecd6e: am bc77942a: am f0e402db: Upgrade to tzdata2012g.
* commit 'fb8ecd6e2f20dba3b6eaf0bd6b834c2c072322c5':
  Upgrade to tzdata2012g.
2012-10-19 10:02:11 -07:00
Elliott Hughes
fb8ecd6e2f am bc77942a: am f0e402db: Upgrade to tzdata2012g.
* commit 'bc77942a9a5b2a30eb04fab495cb30ac21bb150d':
  Upgrade to tzdata2012g.
2012-10-19 09:59:52 -07:00
Elliott Hughes
bc77942a9a am f0e402db: Upgrade to tzdata2012g.
* commit 'f0e402dbd257ab495eab514b347db4b3d6844826':
  Upgrade to tzdata2012g.
2012-10-19 09:57:49 -07:00
Elliott Hughes
f0e402dbd2 Upgrade to tzdata2012g.
This release reflects the following changes recently circulated on the tz
mailing list:

        Samoa fall 2012 and later.  (Thanks to Nicholas Pereira
        and Robert Elz.)

        Palestine fall 2012.  (Thanks to Steffen Thorsen.)

This release does not reflect the possible changes discussed yesterday
for Tocantins and Bahia.

Change-Id: I52d9d2cd6e8e755885dc258200c014bee75527c9
2012-10-18 16:34:48 -07:00
Elliott Hughes
0f7814264c am 4d71adbc: am 10225071: Merge "Fixes x86 build."
* commit '4d71adbc0d12e5153f537f84cce8d9686762e5b9':
  Fixes x86 build.
2012-10-18 13:58:18 -07:00
Elliott Hughes
4d71adbc0d am 10225071: Merge "Fixes x86 build."
* commit '102250719f8aff443741e54ba5633c7722544620':
  Fixes x86 build.
2012-10-18 13:56:02 -07:00
Elliott Hughes
102250719f Merge "Fixes x86 build." 2012-10-18 13:43:41 -07:00
Elliott Hughes
8b95404d00 Fixes x86 build.
Change-Id: I0e576784b2224668d58ebea03986d534ee0e43b4
2012-10-18 13:42:59 -07:00
Elliott Hughes
c0e8400361 am 79c6a8d2: am ca7466d2: Merge "Make bionic\'s dependency on the tzdata explicit."
* commit '79c6a8d2b163e40eb6f19bbf8f59eb85fb7996e6':
  Make bionic's dependency on the tzdata explicit.
2012-10-18 13:40:19 -07:00
Elliott Hughes
79c6a8d2b1 am ca7466d2: Merge "Make bionic\'s dependency on the tzdata explicit."
* commit 'ca7466d2b8ee6baad86afc82fa18cda4d931b6d3':
  Make bionic's dependency on the tzdata explicit.
2012-10-18 13:37:54 -07:00
Elliott Hughes
ca7466d2b8 Merge "Make bionic's dependency on the tzdata explicit." 2012-10-18 13:19:14 -07:00
Elliott Hughes
914d8d4cff Make bionic's dependency on the tzdata explicit.
Also stop building the obsolete three files, now bionic and libcore
both use the new single file.

Bug: 7012465
Change-Id: I1b9b49af7382c57b6cb8820c2275e6d4044b2bb6
2012-10-18 12:23:34 -07:00
Elliott Hughes
c63dda22dd am 1b315363: am 5ae762a3: Merge "Pull bionic\'s time zone data from the new single \'tzdata\' file."
* commit '1b315363c22fdf53d77fc83ec0bbada32e73ccc7':
  Pull bionic's time zone data from the new single 'tzdata' file.
2012-10-18 11:02:01 -07:00
Elliott Hughes
1b315363c2 am 5ae762a3: Merge "Pull bionic\'s time zone data from the new single \'tzdata\' file."
* commit '5ae762a393168932602eb7269a7d30a53de1c83c':
  Pull bionic's time zone data from the new single 'tzdata' file.
2012-10-18 10:59:27 -07:00
Elliott Hughes
5ae762a393 Merge "Pull bionic's time zone data from the new single 'tzdata' file." 2012-10-18 10:48:11 -07:00
Elliott Hughes
9648b588b4 am e5c8ced4: am 9ffaabcc: Merge "Remove obsolete CHANGES.TXT and ISSUES.TXT."
* commit 'e5c8ced4f95e97b2fadc0c64fbdbeeb023677035':
  Remove obsolete CHANGES.TXT and ISSUES.TXT.
2012-10-18 10:28:52 -07:00
Elliott Hughes
e5c8ced4f9 am 9ffaabcc: Merge "Remove obsolete CHANGES.TXT and ISSUES.TXT."
* commit '9ffaabcc49776676cb2ea60f0846f2c208f6d715':
  Remove obsolete CHANGES.TXT and ISSUES.TXT.
2012-10-18 10:26:36 -07:00
Elliott Hughes
9ffaabcc49 Merge "Remove obsolete CHANGES.TXT and ISSUES.TXT." 2012-10-18 10:09:47 -07:00
Elliott Hughes
d23af23268 Pull bionic's time zone data from the new single 'tzdata' file.
Bug: 7012465
Change-Id: Iec71e448bf7a40af30ca89150b3c336e67a44a43
2012-10-17 16:30:47 -07:00
Elliott Hughes
f190a16e5e am c2e4c310: am 32ea9fe5: Merge "Put all the tzdata in one file."
* commit 'c2e4c310ff9ace06be0376d649a09abb51813981':
  Put all the tzdata in one file.
2012-10-17 16:12:19 -07:00
Elliott Hughes
c2e4c310ff am 32ea9fe5: Merge "Put all the tzdata in one file."
* commit '32ea9fe5783e3cc9756205c0ac46482afc700a3d':
  Put all the tzdata in one file.
2012-10-17 16:09:31 -07:00
Elliott Hughes
32ea9fe578 Merge "Put all the tzdata in one file." 2012-10-17 15:52:09 -07:00
Elliott Hughes
fb018a2dde Put all the tzdata in one file.
I'll come back and remove the separate files (and change the regular 'generate'
script) when the separate files are obsolete, but in the interim period, it's
easier to have both old and new files available.

Bug: 7012465
Change-Id: I36e2fd49c08ff79ded6eca1c5bc4c08837cc490a
2012-10-17 14:24:50 -07:00
Elliott Hughes
ead7819f51 Remove obsolete CHANGES.TXT and ISSUES.TXT.
These haven't been updated in a long time, and "git log" is the source of truth.

Change-Id: I99036f6111e53425f32df510b7b717deb77513a5
2012-10-17 11:33:59 -07:00
Elliott Hughes
9eaa953642 am 06abe13c: am a2f596b6: Merge "Make dlerror(3) thread-safe."
* commit '06abe13c5f7a318eef316268d0d25d92ff128c19':
  Make dlerror(3) thread-safe.
2012-10-17 11:05:19 -07:00
Elliott Hughes
06abe13c5f am a2f596b6: Merge "Make dlerror(3) thread-safe."
* commit 'a2f596b65075db7916ffffa2f5059e7953719578':
  Make dlerror(3) thread-safe.
2012-10-17 11:03:12 -07:00
Elliott Hughes
a2f596b650 Merge "Make dlerror(3) thread-safe." 2012-10-17 10:50:48 -07:00
David 'Digit' Turner
826215bec2 am c7dc8425: am 42ac0e50: Merge "Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>""
* commit 'c7dc842529ea6f8801164eb8b4f7d036acc53955':
  Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"
2012-10-17 10:32:36 -07:00
David 'Digit' Turner
c7dc842529 am 42ac0e50: Merge "Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>""
* commit '42ac0e50302c4d5ce855444e44615489ab662452':
  Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"
2012-10-17 10:30:01 -07:00
David 'Digit' Turner
42ac0e5030 Merge "Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"" 2012-10-17 10:11:23 -07:00
David 'Digit' Turner
c1b44ecc53 Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"
This creates build issues in the internal Android tree.
Will investigate later.

Original patch: https://android-review.googlesource.com/#/c/38875/

Change-Id: I12c5995ebf172890051af42a5d3b31014c9c5117
2012-10-17 19:10:11 +02:00
David 'Digit' Turner
87f487f6ce am 423a0740: am 4136c3a2: Merge "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"
* commit '423a0740b536f688b0c1866437dfe59e06413435':
  libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>
2012-10-17 07:34:57 -07:00
David 'Digit' Turner
423a0740b5 am 4136c3a2: Merge "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"
* commit '4136c3a2b7f7546968c5a305aa2ef0663fcb6c6d':
  libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>
2012-10-17 07:32:56 -07:00
David 'Digit' Turner
4136c3a2b7 Merge "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>" 2012-10-17 07:20:54 -07:00
David 'Digit' Turner
c124baaf29 libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>
This patch updates the C library headers to provide ucontext_t
definitions for three architectures.

+ Fix <signal.h> to always define 'struct sigcontext'.

The new declarations are announced with new macros defined in
<sys/cdefs.h> in order to make it easier to adapt client code
that already defines its own, incompatible, versions of the
structures seen here.

http://code.google.com/p/android/issues/detail?id=34784

Change-Id: Ie78c48690a4ce61c50593f6c39639be7fead3596
2012-10-17 15:59:23 +02:00
Elliott Hughes
5419b94747 Make dlerror(3) thread-safe.
I gave up trying to use the usual thread-local buffer idiom; calls to
calloc(3) and free(3) from any of the "dl" functions -- which live in
the dynamic linker -- end up resolving to the dynamic linker's stubs.
I tried to work around that, but was just making things more complicated.
This alternative costs us a well-known TLS slot (instead of the
dynamically-allocated TLS slot we'd have used otherwise, so no difference
there), plus an extra buffer inside every pthread_internal_t.

Bug: 5404023
Change-Id: Ie9614edd05b6d1eeaf7bf9172792d616c6361767
2012-10-16 17:58:17 -07:00
Elliott Hughes
2734345095 am ee7a28c5: am a9944cfe: Merge "LONG_LONG_MIN/MAX: Move declarations to <limits.h>"
* commit 'ee7a28c529dad9f51aa86271350a4e2d7cddc9d4':
  LONG_LONG_MIN/MAX: Move declarations to <limits.h>
2012-10-15 20:25:32 -07:00
Elliott Hughes
ee7a28c529 am a9944cfe: Merge "LONG_LONG_MIN/MAX: Move declarations to <limits.h>"
* commit 'a9944cfe9e152ca46afb0a77300ec5a2a1a24e64':
  LONG_LONG_MIN/MAX: Move declarations to <limits.h>
2012-10-15 20:20:50 -07:00
Elliott Hughes
a9944cfe9e Merge "LONG_LONG_MIN/MAX: Move declarations to <limits.h>" 2012-10-15 17:34:13 -07:00
David 'Digit' Turner
f8a2c51bf3 LONG_LONG_MIN/MAX: Move declarations to <limits.h>
LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX are
GLibc-specific macros that are better defined in <limits.h>
instead of the current exotic location (<pthread.h>).

Note that GCC's <limits.h> only defines these macros
when __GNU_LIBRARY__ is also defined. This is only the
case when building against GLibc, so manually redefine
the macros here.

Note that using LLONG_MIN/LLONG_MAX/ULLONG_MAX is the
C99-compliant way to get these values, but it's easier
to define these compatibility macros for the sake of
porting existing code.

Change-Id: I8023918d73b4685238054932f94a4006c1ca7d03
2012-10-15 18:52:55 +02:00
Elliott Hughes
b2d2b30a13 am 1452324f: am fcf901d5: Merge "Fix realloc(3) when chk_malloc debugging is on."
* commit '1452324ff551f3aa7f9d61186d3b9cb04f7e9d39':
  Fix realloc(3) when chk_malloc debugging is on.
2012-10-12 17:15:39 -07:00
Elliott Hughes
1452324ff5 am fcf901d5: Merge "Fix realloc(3) when chk_malloc debugging is on."
* commit 'fcf901d5c0924a71a1405a2535051663281da048':
  Fix realloc(3) when chk_malloc debugging is on.
2012-10-12 17:14:29 -07:00
Elliott Hughes
fcf901d5c0 Merge "Fix realloc(3) when chk_malloc debugging is on." 2012-10-12 17:09:03 -07:00
Elliott Hughes
e7e274b13a Fix realloc(3) when chk_malloc debugging is on.
The tests for a NULL pointer and size 0 were the wrong way round.

From Intel's patch 9cae4f2ffc4778ed82be04711d8775a84092d4e2.

Change-Id: I118aff3358aa5f34126d74bfaa43f6e2f1a89055
2012-10-12 17:05:05 -07:00
Elliott Hughes
4089dea451 am c2483ea9: am 9434e8fe: Merge "Make the dlfcn mutex static."
* commit 'c2483ea9b63de373e7521e39162395a8c667239a':
  Make the dlfcn mutex static.
2012-10-12 11:24:25 -07:00
Elliott Hughes
c2483ea9b6 am 9434e8fe: Merge "Make the dlfcn mutex static."
* commit '9434e8febc8b223db2d49e7f97140771700113b9':
  Make the dlfcn mutex static.
2012-10-12 11:21:59 -07:00
Elliott Hughes
9434e8febc Merge "Make the dlfcn mutex static." 2012-10-12 10:59:59 -07:00
Elliott Hughes
22d629211d Make the dlfcn mutex static.
More style fixes too, and removal of yet another lingering SH reference!

Change-Id: Iebc34a46475dd11845ad172b9108bb6ddd7585bb
2012-10-12 10:50:21 -07:00
Elliott Hughes
66d71c8f13 am ab4e2ed1: am db4fdf1a: Merge "Fix dlerror(3)."
* commit 'ab4e2ed182011998751ff5d6c321ff5bae20c6cd':
  Fix dlerror(3).
2012-10-12 10:49:08 -07:00
Elliott Hughes
ab4e2ed182 am db4fdf1a: Merge "Fix dlerror(3)."
* commit 'db4fdf1aafb63b09ee967066d9b8107a9812db2d':
  Fix dlerror(3).
2012-10-12 10:47:59 -07:00
Elliott Hughes
db4fdf1aaf Merge "Fix dlerror(3)." 2012-10-12 10:27:44 -07:00
The Android Open Source Project
aff37491a1 am cf3fa7f4: (-s ours) Reconcile with jb-mr1-factory-release - do not merge
* commit 'cf3fa7f45742c870f1478b1bf7717d3042d599d7':
2012-10-12 07:32:05 -07:00
The Android Open Source Project
cf3fa7f457 Reconcile with jb-mr1-factory-release - do not merge
Change-Id: I833db3c1458b360d17442413b86b546dc650bc0c
2012-10-12 07:30:26 -07:00
Elliott Hughes
3b297c4079 Fix dlerror(3).
Add unit tests for dlerror(3) in various situations. I think We're at least
as good as glibc now.

Also factor out the ScopedPthreadMutexLock and use it here too.

Bug: http://code.google.com/p/android/issues/detail?id=38398
Change-Id: I040938b4366ab836e3df46d1d8055b92f4ea6ed8
2012-10-11 16:08:51 -07:00
Elliott Hughes
f0f052f28d am 2facd5b5: am 417fd233: Merge "Fix perf_event_open syscall for x86 and mips"
* commit '2facd5b5ef3e52b11590b4de01e17f6923a85aee':
  Fix perf_event_open syscall for x86 and mips
2012-10-11 10:43:49 -07:00
Elliott Hughes
2facd5b5ef am 417fd233: Merge "Fix perf_event_open syscall for x86 and mips"
* commit '417fd2334a694cf6a831b81cd672b4ca31ff2f54':
  Fix perf_event_open syscall for x86 and mips
2012-10-11 10:42:00 -07:00
Elliott Hughes
417fd2334a Merge "Fix perf_event_open syscall for x86 and mips" 2012-10-11 10:26:00 -07:00
Shuo Gao
4e75c4b2d7 Fix perf_event_open syscall for x86 and mips
perf_event_open syscall has a different syscall number for
the 3 supported architectures: arm, x86 and mips. Currenlty
only the arm syscall number is defined for all architectures.
Tracing tools like perf will not work on other architectures
than arm.

Add the different values for perf_event_open on x86 and mips
and run gensyscalls.py to update generated headers.

Change-Id: I2ed78bd42c0e5df8dbc51d784be49cccda5fab30
Author: Irina Tirdea <irina.tirdea@intel.com>
Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
2012-10-11 10:24:51 -07:00
The Android Automerger
b5f1e03079 merge in jb-mr1-factory-release history after reset to jb-mr1-dev 2012-10-11 08:18:46 -07:00
The Android Open Source Project
3622c73cfc am d1844d4b: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'd1844d4b30a0f75ed0c30c923bea7c718ba53034':
2012-10-11 05:59:18 -07:00
The Android Open Source Project
d1844d4b30 Reconcile with jb-mr1-release - do not merge
Change-Id: I8ceb7a33ab427c2d3e884e8b71064ecbc531fd1e
2012-10-11 05:56:36 -07:00
The Android Automerger
7cc2dec82e merge in jb-mr1-release history after reset to jb-mr1-dev 2012-10-10 14:06:19 -07:00
Ying Wang
9ab8851756 am 06201227: am ecbded40: am 2c287e95: Set up the private variables.
* commit '0620122763502e4ec6f9939c009faaf5a890ad08':
  Set up the private variables.
2012-10-10 13:54:48 -07:00
Ying Wang
0620122763 am ecbded40: am 2c287e95: Set up the private variables.
* commit 'ecbded40ff1278ddb155d3e1a5d137285f18629f':
  Set up the private variables.
2012-10-10 13:52:59 -07:00
Ying Wang
ecbded40ff am 2c287e95: Set up the private variables.
* commit '2c287e9510ec1d379b3cd779651b595dafb6a2ff':
  Set up the private variables.
2012-10-10 13:51:30 -07:00
Ying Wang
2c287e9510 Set up the private variables.
Now we use private variables in transform-o-to-executable to support
build executables against the NDK.
Cherry-picked from master.

Bug: 7170098
Change-Id: Ic8f1d36a116fce24f3ea6a3ff5e9bfab6cafee99
2012-10-10 10:25:13 -07:00
Elliott Hughes
c41e2216f4 am 4c3d7a86: am 1ceb9824: Merge "Fix a getcwd(3) bug and make our tests run correctly under valgrind."
* commit '4c3d7a86bb568e0b3fa5c9e24d32fa1ee9404b2e':
  Fix a getcwd(3) bug and make our tests run correctly under valgrind.
2012-10-09 18:29:25 -07:00
Elliott Hughes
4c3d7a86bb am 1ceb9824: Merge "Fix a getcwd(3) bug and make our tests run correctly under valgrind."
* commit '1ceb9824ab39501e98300bc87f7984ee6b455ce8':
  Fix a getcwd(3) bug and make our tests run correctly under valgrind.
2012-10-09 18:27:11 -07:00
Elliott Hughes
1ceb9824ab Merge "Fix a getcwd(3) bug and make our tests run correctly under valgrind." 2012-10-09 18:14:37 -07:00
Elliott Hughes
5a16e92eb5 am c7f654df: am b83cad79: Merge "Fix two comment typos."
* commit 'c7f654dffea47a80ba566cd05f9212c8c7359a67':
  Fix two comment typos.
2012-10-09 17:39:51 -07:00
Elliott Hughes
c7f654dffe am b83cad79: Merge "Fix two comment typos."
* commit 'b83cad79838f780779bd129da9ed4662b741bd31':
  Fix two comment typos.
2012-10-09 17:38:01 -07:00
Elliott Hughes
b83cad7983 Merge "Fix two comment typos." 2012-10-09 17:23:38 -07:00
Elliott Hughes
e5d5f7f0d8 Fix two comment typos.
Change-Id: Icb2d6f7fa97ef5a4409a7606875e416cfab0a4b3
2012-10-09 17:23:09 -07:00
Elliott Hughes
156da96621 Fix a getcwd(3) bug and make our tests run correctly under valgrind.
The getcwd(3) bug was found by valgrind.

Bug: 7291287
Change-Id: I59f3bff1c1392a408b905934eebcd5d894d37492
2012-10-09 17:17:24 -07:00
Ying Wang
ed0570bf0c am a55f0a10: am b04598a6: Set up the private variables.
* commit 'a55f0a1007423837ff8dc26336a1976469439def':
  Set up the private variables.
2012-10-08 16:21:46 -07:00
Ying Wang
a55f0a1007 am b04598a6: Set up the private variables.
* commit 'b04598a63c3f0df597f6186beea3adafc665ef56':
  Set up the private variables.
2012-10-08 14:21:38 -07:00
Ying Wang
b04598a63c Set up the private variables.
Now we use private variables in transform-o-to-executable to support
build executables against the NDK.

Bug: 7170098
Change-Id: I6e505b33001b76f4b11fcbbb1d35392c4ddf4c70
2012-10-08 14:12:56 -07:00
Elliott Hughes
1cae8da8e7 am 7e785323: am 9a7366e8: am fa7e2586: Merge "Test flags before using "info""
* commit '7e7853230fcf141477d7332634858c08d8eec5b9':
  Test flags before using "info"
2012-10-03 17:44:53 -07:00
Elliott Hughes
7e7853230f am 9a7366e8: am fa7e2586: Merge "Test flags before using "info""
* commit '9a7366e8943990619c494548050aa906f1971332':
  Test flags before using "info"
2012-10-03 17:42:35 -07:00
Elliott Hughes
9a7366e894 am fa7e2586: Merge "Test flags before using "info""
* commit 'fa7e2586176711896e6c0b94c7b811f7cbe29907':
  Test flags before using "info"
2012-10-03 17:41:08 -07:00
Elliott Hughes
fa7e258617 Merge "Test flags before using "info"" 2012-10-03 17:27:51 -07:00
Andy McFadden
1db6f2db49 Test flags before using "info"
Our debugger signal catcher expects to receive three args, but if
somebody cleared SA_SIGINFO we only get one, and bad things happen
when we try to use the second one.  Test to see if SA_SIGINFO is
still set before we try to use the argument.

(cherry-pick of f84bc8d6f6368f1c846124a8168761ee8cc589c0.)

Bug: 7272866
Change-Id: I69a65c25e833aea70acb78f9ba40ed93308583e6
2012-10-03 17:20:06 -07:00
The Android Open Source Project
c34bdc957c am ae8000f3: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'ae8000f368926478b7a1e0a56a3d3ee53c2c4a01':
2012-10-03 07:36:22 -07:00
The Android Open Source Project
ae8000f368 Reconcile with jb-mr1-release - do not merge
Change-Id: I80b71067d1e628d18a19d94219fcfa1000133abf
2012-10-03 07:33:03 -07:00
The Android Automerger
956092e07c merge in jb-mr1-release history after reset to jb-mr1-dev 2012-10-03 06:59:12 -07:00
Naseer Ahmed
2d5d80985e am 9c389255: am 6b1ba118: am 3ef4fecd: bionic: update processed msm_mdp.h
* commit '9c3892558f68ec8791283844e2d7d7326bcd3574':
  bionic: update processed msm_mdp.h
2012-10-03 01:05:02 -07:00
Naseer Ahmed
9c3892558f am 6b1ba118: am 3ef4fecd: bionic: update processed msm_mdp.h
* commit '6b1ba1184a5e0884686b63da837a85f8c861d1fc':
  bionic: update processed msm_mdp.h
2012-10-03 01:03:04 -07:00
Naseer Ahmed
6b1ba1184a am 3ef4fecd: bionic: update processed msm_mdp.h
* commit '3ef4fecd30c22f3c17c1dadfce4527e858b42e7e':
  bionic: update processed msm_mdp.h
2012-10-03 00:57:49 -07:00
Naseer Ahmed
3ef4fecd30 bionic: update processed msm_mdp.h
-- Has display commit ioctl

Bug: 7274951
Change-Id: If2d47edf3ada418e8c61a2acc7b79fb3422f3473
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-10-02 23:37:34 -07:00
Andy McFadden
399f54c133 am 51c7167d: am 7c67e4e4: am 98957db5: Merge "Test flags before using "info"" into jb-mr1-dev
* commit '51c7167d2245286e3458ffb06b0b5068d8f04e1b':
  Test flags before using "info"
2012-10-02 15:28:17 -07:00
Andy McFadden
51c7167d22 am 7c67e4e4: am 98957db5: Merge "Test flags before using "info"" into jb-mr1-dev
* commit '7c67e4e423f7608c50a1fc7c355d87593cfdbcca':
  Test flags before using "info"
2012-10-02 15:27:09 -07:00
Andy McFadden
7c67e4e423 am 98957db5: Merge "Test flags before using "info"" into jb-mr1-dev
* commit '98957db5536e93724c2e9e6bd19d5063f9d4dc2c':
  Test flags before using "info"
2012-10-02 15:24:25 -07:00
Andy McFadden
98957db553 Merge "Test flags before using "info"" into jb-mr1-dev 2012-10-02 15:23:20 -07:00
Andreas Huber
ae554abd41 am 3a0aa5e0: am cafbc940: am 2e0452cb: bionic: update processed msm_vidc_enc.h
* commit '3a0aa5e0a01c26278438513a73bc0150d5fc215c':
  bionic: update processed msm_vidc_enc.h
2012-10-02 14:44:32 -07:00
Andreas Huber
3a0aa5e0a0 am cafbc940: am 2e0452cb: bionic: update processed msm_vidc_enc.h
* commit 'cafbc9404310828ecddc55a1eed5fc897008b1f3':
  bionic: update processed msm_vidc_enc.h
2012-10-02 14:42:35 -07:00
Andreas Huber
cafbc94043 am 2e0452cb: bionic: update processed msm_vidc_enc.h
* commit '2e0452cbd1f5b981fbadb4021198d2c27ec1cde3':
  bionic: update processed msm_vidc_enc.h
2012-10-02 14:40:02 -07:00
Andreas Huber
2e0452cbd1 bionic: update processed msm_vidc_enc.h
Updated kernel headers to support a video encoder ioctl to preprend each IDR
frame with SPS/PPS.

related-to-bug: 7245308
Change-Id: I7244c521690d69a905deb19940a04fd4f2e06935
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-10-02 14:34:03 -07:00
Andy McFadden
f84bc8d6f6 Test flags before using "info"
Our debugger signal catcher expects to receive three args, but if
somebody cleared SA_SIGINFO we only get one, and bad things happen
when we try to use the second one.  Test to see if SA_SIGINFO is
still set before we try to use the argument.

Bug: 7272866
Change-Id: If682a2262fe8a575f3802fb0c60a53eea3082456
2012-10-02 14:30:41 -07:00
Elliott Hughes
f0a9cd7847 am 92e6de6f: am b95ad82f: am 95a2a7f3: Merge "Fix MIPS build."
* commit '92e6de6f940fee6362dd306ad77c6d7bfa56e4cb':
  Fix MIPS build.
2012-10-02 11:34:14 -07:00
Elliott Hughes
92e6de6f94 am b95ad82f: am 95a2a7f3: Merge "Fix MIPS build."
* commit 'b95ad82f7d175a4f79eb0cbf6caedf0653603590':
  Fix MIPS build.
2012-10-02 11:33:03 -07:00
Elliott Hughes
b95ad82f7d am 95a2a7f3: Merge "Fix MIPS build."
* commit '95a2a7f325330830d6227aa683948b325e38e653':
  Fix MIPS build.
2012-10-02 11:31:30 -07:00
Elliott Hughes
95a2a7f325 Merge "Fix MIPS build." 2012-10-02 11:22:33 -07:00
Elliott Hughes
857fed50cb Fix MIPS build.
ARM and x86 have custom memcpy implementations, but MIPS relies on the generic
one, which I recently moved.

Change-Id: I9e49243f63b27a4123f2c6623d6286ec82d333c7
2012-10-02 11:20:07 -07:00
Elliott Hughes
6cdf8dd025 am 80a29832: am 90172541: am b98204a9: Merge "Move non-upstream code into the libc/bionic directory."
* commit '80a298327299aa28b564941f90818911023ae544':
  Move non-upstream code into the libc/bionic directory.
2012-10-02 09:28:31 -07:00
Elliott Hughes
80a2983272 am 90172541: am b98204a9: Merge "Move non-upstream code into the libc/bionic directory."
* commit '90172541866696a5a46fae7ff7e186126ee37318':
  Move non-upstream code into the libc/bionic directory.
2012-10-02 09:25:12 -07:00
Elliott Hughes
9017254186 am b98204a9: Merge "Move non-upstream code into the libc/bionic directory."
* commit 'b98204a9fb5c84478a9710163df395486443c7f6':
  Move non-upstream code into the libc/bionic directory.
2012-10-02 09:22:03 -07:00
The Android Open Source Project
4fbb1569f5 am 4cf143f1: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '4cf143f1c8e7147e696225cc852e532f50115624':
2012-10-02 09:17:27 -07:00
The Android Open Source Project
4cf143f1c8 Reconcile with jb-mr1-release - do not merge
Change-Id: I2c724a28984aa03b2887b3db58bd59699b428e85
2012-10-02 09:16:33 -07:00
Elliott Hughes
b98204a9fb Merge "Move non-upstream code into the libc/bionic directory." 2012-10-02 09:13:34 -07:00
Elliott Hughes
95114ff5c5 am 15edd80a: am 39d7c607: am 75f43525: Merge "Always take GCC\'s definition of NULL."
* commit '15edd80a696c1b5243874f7db9ef2d753016ade8':
  Always take GCC's definition of NULL.
2012-10-01 18:23:31 -07:00
Elliott Hughes
15edd80a69 am 39d7c607: am 75f43525: Merge "Always take GCC\'s definition of NULL."
* commit '39d7c6072dc4d587c32405f3c7de12e60559cfc8':
  Always take GCC's definition of NULL.
2012-10-01 18:21:35 -07:00
Elliott Hughes
39d7c6072d am 75f43525: Merge "Always take GCC\'s definition of NULL."
* commit '75f43525550c5cad3980f7dd125cb838836790b8':
  Always take GCC's definition of NULL.
2012-10-01 18:18:06 -07:00
Elliott Hughes
75f4352555 Merge "Always take GCC's definition of NULL." 2012-10-01 18:11:20 -07:00
Elliott Hughes
7d56ccbfaa Always take GCC's definition of NULL.
There's a (bad) definition of NULL in <linux/stddef.h>, and this
definition of NULL, and the One True definition in the <stddef.h> provided
by the compiler. This change at least kills one of the bad duplicates.
Killing the <linux/stddef.h> one is harder, because it's in a generated
file.

Change-Id: Iea4ccb12d6758199f312ea9cd753b84322d5c471
2012-10-01 17:56:58 -07:00
Elliott Hughes
a89864a20b Move non-upstream code into the libc/bionic directory.
I'll need at least one more pass, because there's some upstream code
lurking in libc/bionic, but this is still a step in the right direction.

Change-Id: I55927315972da8327ae01c5240ed587db17e8462
2012-10-01 17:35:49 -07:00
Elliott Hughes
be02504f5f am baa7ee03: am bb7dfcd3: am d3bf954e: Merge "Remove useless #defines and incorrect claims from header files."
* commit 'baa7ee0370fcb88625a666141431a4187c0f91b2':
  Remove useless #defines and incorrect claims from header files.
2012-10-01 15:54:48 -07:00
Elliott Hughes
baa7ee0370 am bb7dfcd3: am d3bf954e: Merge "Remove useless #defines and incorrect claims from header files."
* commit 'bb7dfcd3b8744fdf37857375ffe279d2b87a8b22':
  Remove useless #defines and incorrect claims from header files.
2012-10-01 15:52:56 -07:00
Elliott Hughes
bb7dfcd3b8 am d3bf954e: Merge "Remove useless #defines and incorrect claims from header files."
* commit 'd3bf954e9ffbdee8d732ccb6ad6143dc31b605fc':
  Remove useless #defines and incorrect claims from header files.
2012-10-01 15:50:51 -07:00
Elliott Hughes
d3bf954e9f Merge "Remove useless #defines and incorrect claims from header files." 2012-10-01 15:37:18 -07:00
Elliott Hughes
0cc0d250fd Remove useless #defines and incorrect claims from header files.
The various __need_* macros were write-only.

Change-Id: Id3cca34188e0801fdf93a038b22f2817226ad9c2
2012-10-01 15:12:40 -07:00
Elliott Hughes
b5d5173139 am a54d08a7: am a428bc12: am fe712e6c: Merge "Upgrade seed48 too."
* commit 'a54d08a7c15e15f24d94ca6fb97329134d4441a2':
  Upgrade seed48 too.
2012-10-01 14:48:57 -07:00
Elliott Hughes
a54d08a7c1 am a428bc12: am fe712e6c: Merge "Upgrade seed48 too."
* commit 'a428bc1288e28a05b036597db4f0409fa7f3923d':
  Upgrade seed48 too.
2012-10-01 14:47:52 -07:00
Elliott Hughes
a428bc1288 am fe712e6c: Merge "Upgrade seed48 too."
* commit 'fe712e6caedccbbba24bda8429cb0b8cc6057ff1':
  Upgrade seed48 too.
2012-10-01 14:46:46 -07:00
Elliott Hughes
fe712e6cae Merge "Upgrade seed48 too." 2012-10-01 14:38:09 -07:00
Elliott Hughes
b28c547aa4 am 6ed5bc12: am b650111a: am cd195eba: Merge "Upgrade to the current NetBSD rand implementation."
* commit '6ed5bc12dac544004f8e79b6393b2a8e260a7cc1':
  Upgrade to the current NetBSD rand implementation.
2012-10-01 14:16:53 -07:00
Elliott Hughes
6ed5bc12da am b650111a: am cd195eba: Merge "Upgrade to the current NetBSD rand implementation."
* commit 'b650111a11b84d7c91145c4f29b58b5742afa572':
  Upgrade to the current NetBSD rand implementation.
2012-10-01 14:15:36 -07:00
Elliott Hughes
31a1060a5a Upgrade seed48 too.
Missed this in 774c7f54ff.

Change-Id: Ic24fd67f003d0e2d192cfb08f96f63024ca817eb
2012-10-01 14:14:21 -07:00
Elliott Hughes
b650111a11 am cd195eba: Merge "Upgrade to the current NetBSD rand implementation."
* commit 'cd195eba1f9235b9b9d4dda70142d927b1b9802d':
  Upgrade to the current NetBSD rand implementation.
2012-10-01 14:13:16 -07:00
Elliott Hughes
cd195eba1f Merge "Upgrade to the current NetBSD rand implementation." 2012-10-01 14:05:09 -07:00
Elliott Hughes
774c7f54ff Upgrade to the current NetBSD rand implementation.
Also add basic unit tests.

Change-Id: I7fc7ef61d47c1e8fdf8b8eff67a635220c3afd56
2012-10-01 13:53:41 -07:00
Elliott Hughes
7f1464c03c am 068f3398: am 0fa6279f: am 5b6346f6: Merge "bionic: linker: Need update the map->l_addr for execution."
* commit '068f33981ddaee7e397eee73ea5ea97827aabeb7':
  bionic: linker: Need update the map->l_addr for execution.
2012-10-01 09:25:18 -07:00
Elliott Hughes
068f33981d am 0fa6279f: am 5b6346f6: Merge "bionic: linker: Need update the map->l_addr for execution."
* commit '0fa6279f394bb5a5cfeb7996d28b8fd2365477e7':
  bionic: linker: Need update the map->l_addr for execution.
2012-10-01 09:23:11 -07:00
Elliott Hughes
0fa6279f39 am 5b6346f6: Merge "bionic: linker: Need update the map->l_addr for execution."
* commit '5b6346f6d5dca4022fe0044dd2807c19ac596788':
  bionic: linker: Need update the map->l_addr for execution.
2012-10-01 09:21:08 -07:00
Elliott Hughes
5b6346f6d5 Merge "bionic: linker: Need update the map->l_addr for execution." 2012-10-01 09:09:17 -07:00
The Android Automerger
f27642c082 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-30 06:59:14 -07:00
Jean-Baptiste Queru
eab85a379d am adc32bc3: Merge from jb-mr1-aah-dev
* commit 'adc32bc3b18576a554143631ab72dc14c1b905c3':
2012-09-28 17:08:41 -07:00
Jean-Baptiste Queru
adc32bc3b1 Merge from jb-mr1-aah-dev
Change-Id: Iea13ecd8b6edd42b3dc9c59755d51c1bb36afe4a
2012-09-28 17:06:59 -07:00
Saurabh Shah
04373fe6fe am c556da9e: am 204b26b4: bionic: Update msm_mdp.h with new MSMFB_OVERLAY_COMMIT ioctl
* commit 'c556da9ed7b0142523d349e7af8ba6492b98a683':
  bionic: Update msm_mdp.h with new MSMFB_OVERLAY_COMMIT ioctl
2012-09-28 15:52:50 -07:00
Jean-Baptiste Queru
4dc7206c94 am de1efebd: Merge from jb-mr1-aah-dev
* commit 'de1efebdcac1bfa0e30fa7fbe0b4c7860a72a6a0':
2012-09-28 15:52:31 -07:00
Saurabh Shah
c556da9ed7 am 204b26b4: bionic: Update msm_mdp.h with new MSMFB_OVERLAY_COMMIT ioctl
* commit '204b26b4402249566e0190154cddb2cfc2cf42a7':
  bionic: Update msm_mdp.h with new MSMFB_OVERLAY_COMMIT ioctl
2012-09-28 15:00:03 -07:00
Saurabh Shah
52b4ccbc49 am 204b26b4: bionic: Update msm_mdp.h with new MSMFB_OVERLAY_COMMIT ioctl
* commit '204b26b4402249566e0190154cddb2cfc2cf42a7':
  bionic: Update msm_mdp.h with new MSMFB_OVERLAY_COMMIT ioctl
2012-09-28 14:59:36 -07:00
Jean-Baptiste Queru
de1efebdca Merge from jb-mr1-aah-dev
Change-Id: I56ae94f8efe9eecedc17da2f573e8fde2b80d151
2012-09-28 14:29:56 -07:00
Saurabh Shah
204b26b440 bionic: Update msm_mdp.h with new MSMFB_OVERLAY_COMMIT ioctl
This change adds msm_mdp.h header changes to bionic.

This IOCTL is a substitute for PAN on external panel.  It waits for DMAE to
finish before returning and avoid delays in the PAN path.

Bug: 7249589
Acked-by: Arun Kumar K.R <akumarkr@codeaurora.org>
Change-Id: I4b04a4538919ffcb994699a432c4322e9f94e870
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-09-28 13:46:13 -07:00
Elliott Hughes
326e4037e9 am 8e1a87b5: am bb892a1b: am d03bfe68: Merge "Define ssize_t if necessary."
* commit '8e1a87b5470d0708b0503c3a33580e1782e2bda2':
  Define ssize_t if necessary.
2012-09-28 10:31:09 -07:00
Elliott Hughes
8e1a87b547 am bb892a1b: am d03bfe68: Merge "Define ssize_t if necessary."
* commit 'bb892a1b63a2e88c98a2ba31aa659b7efac44e4f':
  Define ssize_t if necessary.
2012-09-28 10:28:30 -07:00
Elliott Hughes
bb892a1b63 am d03bfe68: Merge "Define ssize_t if necessary."
* commit 'd03bfe689a6e29aa010a927741f42c08f89ef04d':
  Define ssize_t if necessary.
2012-09-28 10:27:06 -07:00
Elliott Hughes
d03bfe689a Merge "Define ssize_t if necessary." 2012-09-28 10:16:58 -07:00
Elliott Hughes
422b6ef92c Define ssize_t if necessary.
Change-Id: I63801cc1f09be5e4ca20a6da7ec3366ba6441afd
2012-09-28 10:15:52 -07:00
Elliott Hughes
2e223d208f am fb1e192e: am 72b08af3: am f9163dd1: Merge "Add getdelim(3) and getline(3) to bionic"
* commit 'fb1e192e12fb4047bf5f01ccf0fd4e5644743adb':
  Add getdelim(3) and getline(3) to bionic
2012-09-28 09:57:11 -07:00
Elliott Hughes
fb1e192e12 am 72b08af3: am f9163dd1: Merge "Add getdelim(3) and getline(3) to bionic"
* commit '72b08af300703a08bf2081304ab81b9e4dba003c':
  Add getdelim(3) and getline(3) to bionic
2012-09-28 09:55:02 -07:00
Elliott Hughes
72b08af300 am f9163dd1: Merge "Add getdelim(3) and getline(3) to bionic"
* commit 'f9163dd1f0f6cbd7b8305fa1b2ce46754ed95278':
  Add getdelim(3) and getline(3) to bionic
2012-09-28 09:53:08 -07:00
Elliott Hughes
f9163dd1f0 Merge "Add getdelim(3) and getline(3) to bionic" 2012-09-28 09:44:24 -07:00
Irina Tirdea
eac9eb462e Add getdelim(3) and getline(3) to bionic
Some userspace programs (e.g. perf) need getline.

Changes:
() add getdelim.c, getline.c from NetBSD (http://netbsd.org/) under the
NetBSD Foundation's (TNF) license ("2 clause" Berkeley-style license).
() add stub for reentrant.h header that is needed by getdelim.c
() add tests for getdelim(3) and getline(3).
() update NOTICE file.

Change-Id: I22ed82dd5904b9d7a3695535c04f502be3c27c5d
Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
2012-09-27 11:38:57 -07:00
Elliott Hughes
4137d67cde am 209d67d4: am fd6ca57f: am e4030e0b: Merge "Fix several compiler warnings."
* commit '209d67d448a64d147521b3d2efb3efa392dd3ccd':
  Fix several compiler warnings.
2012-09-26 16:09:26 -07:00
Elliott Hughes
209d67d448 am fd6ca57f: am e4030e0b: Merge "Fix several compiler warnings."
* commit 'fd6ca57f24cbfd8a8074ee6f1c22dd973f1b172f':
  Fix several compiler warnings.
2012-09-26 16:07:02 -07:00
Elliott Hughes
fd6ca57f24 am e4030e0b: Merge "Fix several compiler warnings."
* commit 'e4030e0bfc427e755477bbea69afe60308a62d91':
  Fix several compiler warnings.
2012-09-26 16:04:51 -07:00
Elliott Hughes
e4030e0bfc Merge "Fix several compiler warnings." 2012-09-26 15:51:01 -07:00
Elliott Hughes
6a3d9af46e am bdc51470: am 2c29bcf7: am 827a2604: Merge "Replace __unused in kernel headers with __linux_unused to avoid conflicts with __unused macro in sys/cdefs.h"
* commit 'bdc514700d9f766f5a44a95bb80dab15846bd1c4':
  Replace __unused in kernel headers with __linux_unused to avoid conflicts with __unused macro in sys/cdefs.h
2012-09-26 15:20:38 -07:00
Elliott Hughes
bdc514700d am 2c29bcf7: am 827a2604: Merge "Replace __unused in kernel headers with __linux_unused to avoid conflicts with __unused macro in sys/cdefs.h"
* commit '2c29bcf77f0d7dd7fce284ac0c17ff12663413d0':
  Replace __unused in kernel headers with __linux_unused to avoid conflicts with __unused macro in sys/cdefs.h
2012-09-26 15:19:22 -07:00
Elliott Hughes
2c29bcf77f am 827a2604: Merge "Replace __unused in kernel headers with __linux_unused to avoid conflicts with __unused macro in sys/cdefs.h"
* commit '827a2604ee660df80feb231a1f8bcc96ea6e64ce':
  Replace __unused in kernel headers with __linux_unused to avoid conflicts with __unused macro in sys/cdefs.h
2012-09-26 15:17:07 -07:00
Elliott Hughes
827a2604ee Merge "Replace __unused in kernel headers with __linux_unused to avoid conflicts with __unused macro in sys/cdefs.h" 2012-09-26 14:58:11 -07:00
Elliott Hughes
ac184b2142 Fix several compiler warnings.
Change-Id: I55caa50a5937442734f4fcbdb4edf1c70f335bf8
2012-09-26 14:20:22 -07:00
Elliott Hughes
100e313c75 am 0792223a: am dd9fbc86: am 8e630dac: Merge "Simple tests for dladdr(3)."
* commit '0792223a8ab0f9ecb5fc8fe471dbb7890bb6c2cc':
  Simple tests for dladdr(3).
2012-09-26 12:21:03 -07:00
Elliott Hughes
0a2d31838f am 66569e3d: am a48d5e5f: am 855dde44: Merge "Fix tmpfile(3)."
* commit '66569e3d53643fe4682091c4e11c25449e9b7fdc':
  Fix tmpfile(3).
2012-09-26 12:21:02 -07:00
Elliott Hughes
0792223a8a am dd9fbc86: am 8e630dac: Merge "Simple tests for dladdr(3)."
* commit 'dd9fbc8646178dc34a92c5fbc0adc8b503cc3cd9':
  Simple tests for dladdr(3).
2012-09-26 12:19:34 -07:00
Elliott Hughes
66569e3d53 am a48d5e5f: am 855dde44: Merge "Fix tmpfile(3)."
* commit 'a48d5e5f127df0f76b49e046be042f46f211e8bc':
  Fix tmpfile(3).
2012-09-26 12:19:33 -07:00
Elliott Hughes
dd9fbc8646 am 8e630dac: Merge "Simple tests for dladdr(3)."
* commit '8e630dacf61307e4681f04fc6b5ee593f30d91d0':
  Simple tests for dladdr(3).
2012-09-26 12:18:14 -07:00
Elliott Hughes
a48d5e5f12 am 855dde44: Merge "Fix tmpfile(3)."
* commit '855dde44266e3c8384ea419f51f9a5c748253eda':
  Fix tmpfile(3).
2012-09-26 12:18:13 -07:00
Elliott Hughes
8e630dacf6 Merge "Simple tests for dladdr(3)." 2012-09-26 12:10:56 -07:00
Elliott Hughes
855dde4426 Merge "Fix tmpfile(3)." 2012-09-26 12:04:59 -07:00
Elliott Hughes
91875dcd6e Fix tmpfile(3).
This could be better, but at least now it works.

Change-Id: I88b7cf3f7ce8e5fa0b3fe678b7d1679a68ffffc9
2012-09-26 12:02:17 -07:00
Elliott Hughes
8e15b08ae2 Simple tests for dladdr(3).
Change-Id: I22160b7fc9b950ea19adb6da42af2f893f4fe5d5
2012-09-26 11:44:01 -07:00
Ying Wang
1be6e685a5 Merge "Set up the private variables." 2012-09-26 11:27:48 -07:00
Nick Kralevich
0147bd2f78 am 06abf4ed: am 5989ed5c: am 25937d36: Merge "FORTIFY_SOURCE: add umask check"
* commit '06abf4edbf4b6d10ee82369ed48b8145a94ba1aa':
  FORTIFY_SOURCE: add umask check
2012-09-26 11:15:38 -07:00
Nick Kralevich
06abf4edbf am 5989ed5c: am 25937d36: Merge "FORTIFY_SOURCE: add umask check"
* commit '5989ed5cb8a1d11c140aa61a718e386c2cc88307':
  FORTIFY_SOURCE: add umask check
2012-09-26 11:14:12 -07:00
Nick Kralevich
5989ed5cb8 am 25937d36: Merge "FORTIFY_SOURCE: add umask check"
* commit '25937d36a0639593520d2765c59736c40095f0ae':
  FORTIFY_SOURCE: add umask check
2012-09-26 11:12:34 -07:00
Nick Kralevich
25937d36a0 Merge "FORTIFY_SOURCE: add umask check" 2012-09-26 10:59:29 -07:00
Ying Wang
f680b0f404 Set up the private variables.
Now we use private variables in transform-o-to-executable to support
build executables against the NDK.

Bug: 7170098
Change-Id: I6e505b33001b76f4b11fcbbb1d35392c4ddf4c70
2012-09-26 10:54:45 -07:00
Elliott Hughes
2fb6457efb am c3233178: am 00f33977: am 3307bff0: Merge "Revert dl_fbase initialization to the address where the shared object is loaded."
* commit 'c32331781097b51a46c03b002cd813752677236a':
  Revert dl_fbase initialization to the address where the shared object is loaded.
2012-09-26 10:46:39 -07:00
Elliott Hughes
c323317810 am 00f33977: am 3307bff0: Merge "Revert dl_fbase initialization to the address where the shared object is loaded."
* commit '00f339771b7b5bca1abeb375feb3ce9a04f6daa7':
  Revert dl_fbase initialization to the address where the shared object is loaded.
2012-09-26 10:45:06 -07:00
Elliott Hughes
00f339771b am 3307bff0: Merge "Revert dl_fbase initialization to the address where the shared object is loaded."
* commit '3307bff0232a00f879053e94a5f37f1ca1256f7c':
  Revert dl_fbase initialization to the address where the shared object is loaded.
2012-09-26 10:43:00 -07:00
Elliott Hughes
3307bff023 Merge "Revert dl_fbase initialization to the address where the shared object is loaded." 2012-09-26 10:38:10 -07:00
Nick Kralevich
cd587701c8 FORTIFY_SOURCE: add umask check
Verify that the call to umask makes sense. While this wouldn't
have detected bug 7094213 (because the low order bits were all zero),
it might detect other similar bugs.

References: https://code.google.com/p/android-source-browsing/source/detail?r=acba45cc4b1f98f67fcdeda2f7c13ed57659b92a&repo=platform--libcore

Change-Id: I966a531d6b3cf8e1c5eacd69bd3cbec475b5fa58
2012-09-26 10:19:31 -07:00
The Android Open Source Project
23042bab43 am db2b9d05: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'db2b9d052b3ebab73695af9335d649340cb8d193':
2012-09-26 10:08:03 -07:00
The Android Open Source Project
db2b9d052b Reconcile with jb-mr1-release - do not merge
Change-Id: I5d92da8a0dae14bcd6a61f1e015f818d25066763
2012-09-26 09:05:40 -07:00
Raghu Gandham
0e77287209 Replace __unused in kernel headers with __linux_unused to avoid
conflicts with __unused macro in sys/cdefs.h

Change-Id: Ice664397e0b7c7a90795012f30be5e43a9675525
2012-09-25 17:54:43 -07:00
Raghu Gandham
e6dc2a664e Revert dl_fbase initialization to the address where the shared object is loaded.
Change-Id: If868cab774a1ae5ff370208216cecda9b8c3b9fd
2012-09-25 15:58:01 -07:00
The Android Automerger
9014818f61 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-25 06:59:12 -07:00
Elliott Hughes
a638642f44 am 354867d7: am 0eb4f255: am 6e0e03c3: Merge "Add the cleaned kernel headers"
* commit '354867d7020d4c7fb001c659245b60bff82a1a32':
  Add the cleaned kernel headers
2012-09-24 13:52:05 -07:00
Elliott Hughes
354867d702 am 0eb4f255: am 6e0e03c3: Merge "Add the cleaned kernel headers"
* commit '0eb4f255d2dc1778b9a5fabb0f65c81ac4dad4a4':
  Add the cleaned kernel headers
2012-09-24 13:50:04 -07:00
Elliott Hughes
0eb4f255d2 am 6e0e03c3: Merge "Add the cleaned kernel headers"
* commit '6e0e03c38bc0e864225b89b3fb273fb56ded8940':
  Add the cleaned kernel headers
2012-09-24 13:47:29 -07:00
Elliott Hughes
51d1a14c80 am a06e11cc: am c746bed8: am 7b0377ed: Merge "[MIPS] Removed the unused header"
* commit 'a06e11cc34612ef814a0f73bccdd43059111a735':
  [MIPS] Removed the unused header
2012-09-24 13:43:59 -07:00
Elliott Hughes
0647355bef am 28bd96cc: am d5c654c0: am 3b6914bf: Merge "Fix dlsym and dladdr to use load_bias instead of base"
* commit '28bd96cc0b9a5eed785df09a4c1bffc43b95fe6b':
  Fix dlsym and dladdr to use load_bias instead of base
2012-09-24 13:43:58 -07:00
Elliott Hughes
a06e11cc34 am c746bed8: am 7b0377ed: Merge "[MIPS] Removed the unused header"
* commit 'c746bed88931fab8abcc4d01a5c53b95fff1ba8f':
  [MIPS] Removed the unused header
2012-09-24 13:40:53 -07:00
Elliott Hughes
28bd96cc0b am d5c654c0: am 3b6914bf: Merge "Fix dlsym and dladdr to use load_bias instead of base"
* commit 'd5c654c053bb100cb2d4a71260a507e20eb30e79':
  Fix dlsym and dladdr to use load_bias instead of base
2012-09-24 13:40:42 -07:00
Elliott Hughes
6e0e03c38b Merge "Add the cleaned kernel headers" 2012-09-24 13:39:33 -07:00
Elliott Hughes
c746bed889 am 7b0377ed: Merge "[MIPS] Removed the unused header"
* commit '7b0377eda03abc9db79faa244e28aea1ac7b64da':
  [MIPS] Removed the unused header
2012-09-24 12:41:20 -07:00
Raghu Gandham
bfeb8a98b6 Add the cleaned kernel headers
Change-Id: Ied4e3ca765672ebaebe9d4d0909b3278c2ff3cd8
2012-09-24 12:33:57 -07:00
Elliott Hughes
7b0377eda0 Merge "[MIPS] Removed the unused header" 2012-09-24 12:24:01 -07:00
Raghu Gandham
d769826b0d [MIPS] Removed the unused header
Change-Id: I8756a862669d4e5f283945496983f11a59dea30c
2012-09-24 11:52:00 -07:00
Elliott Hughes
d5c654c053 am 3b6914bf: Merge "Fix dlsym and dladdr to use load_bias instead of base"
* commit '3b6914bf04942f74e9dba43a75d5d5ae94161b95':
  Fix dlsym and dladdr to use load_bias instead of base
2012-09-24 10:21:23 -07:00
Elliott Hughes
25b3416960 am f153ed38: (-s ours) am f4b34b6c: DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."
* commit 'f153ed380d94123d873d7ff04bc9b5b65f989c1d':
  DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."
2012-09-24 10:18:48 -07:00
Elliott Hughes
a9a1d8a5d2 am f4b34b6c: (-s ours) DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."
* commit 'f4b34b6c3942be273ad7298a40be0d312b183aab':
  DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."
2012-09-24 10:16:43 -07:00
Elliott Hughes
f153ed380d am f4b34b6c: DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."
* commit 'f4b34b6c3942be273ad7298a40be0d312b183aab':
  DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."
2012-09-24 10:16:37 -07:00
The Android Open Source Project
7c7609f95e am 51d270af: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '51d270af6d9e648fdec43f716833b6f69688048e':
2012-09-24 10:14:49 -07:00
Elliott Hughes
f4b34b6c39 DO NOT MERGE Revert "Add the libcutils localtime_tz and mktime_t extensions to bionic."
This reverts commit 3a936a4980.

We don't want this in jb-mr1.
2012-09-24 10:13:12 -07:00
The Android Open Source Project
51d270af6d Reconcile with jb-mr1-release - do not merge
Change-Id: I933866be4d956f18dff51676c8027f807cea26d7
2012-09-24 10:11:18 -07:00
Elliott Hughes
3b6914bf04 Merge "Fix dlsym and dladdr to use load_bias instead of base" 2012-09-24 10:03:51 -07:00
Elliott Hughes
c08088376a am 82ec6850: am 6c0e373d: am ec432608: am 0c24effd: Merge "Add the libcutils localtime_tz and mktime_t extensions to bionic."
* commit '82ec685054bd14e596fcb0661c7f5c398743b4b3':
  Add the libcutils localtime_tz and mktime_t extensions to bionic.
2012-09-24 09:48:35 -07:00
Elliott Hughes
9f3c0d32a4 am 6da07f02: am ecf67e15: am 2d51dddf: am 85049ead: Merge "Use hidden visibility for several internal-use-only functions."
* commit '6da07f02bd064cfae852df2b8ac82203432aef35':
  Use hidden visibility for several internal-use-only functions.
2012-09-24 09:48:34 -07:00
Elliott Hughes
2b83e0e67e am 0349e3d3: am d2eea0e6: am baa74eff: am 882c6af9: Merge "[MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro."
* commit '0349e3d3ffa411ffd47f005af7f9c5585e469165':
  [MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro.
2012-09-24 09:48:33 -07:00
Elliott Hughes
82ec685054 am 6c0e373d: am ec432608: am 0c24effd: Merge "Add the libcutils localtime_tz and mktime_t extensions to bionic."
* commit '6c0e373d38a9cb424bd6d9c4d5d6168960846aa5':
  Add the libcutils localtime_tz and mktime_t extensions to bionic.
2012-09-24 09:47:01 -07:00
Elliott Hughes
6da07f02bd am ecf67e15: am 2d51dddf: am 85049ead: Merge "Use hidden visibility for several internal-use-only functions."
* commit 'ecf67e152aecb67bff950d72582ef54b56191096':
  Use hidden visibility for several internal-use-only functions.
2012-09-24 09:46:47 -07:00
Elliott Hughes
0349e3d3ff am d2eea0e6: am baa74eff: am 882c6af9: Merge "[MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro."
* commit 'd2eea0e6d6d4e7c406b06d90316713482d650290':
  [MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro.
2012-09-24 09:46:46 -07:00
Elliott Hughes
6c0e373d38 am ec432608: am 0c24effd: Merge "Add the libcutils localtime_tz and mktime_t extensions to bionic."
* commit 'ec4326084ed2a717b3e318f36c2675ef033c30ff':
  Add the libcutils localtime_tz and mktime_t extensions to bionic.
2012-09-24 09:40:18 -07:00
Naseer Ahmed
f9355bc5cd am 21e0a7ee: am f7070074: bionic: Update MDP header for sync
* commit '21e0a7ee8bd9862452a429cef554f31e3c379903':
  bionic: Update MDP header for sync
2012-09-24 09:36:43 -07:00
Naseer Ahmed
21e0a7ee8b am f7070074: bionic: Update MDP header for sync
* commit 'f707007435ee4798815bd507d86b1460204cfc4f':
  bionic: Update MDP header for sync
2012-09-24 09:26:33 -07:00
Elliott Hughes
ec4326084e am 0c24effd: Merge "Add the libcutils localtime_tz and mktime_t extensions to bionic."
* commit '0c24effd01736e533fd082b2cf1de8926b0fe880':
  Add the libcutils localtime_tz and mktime_t extensions to bionic.
2012-09-24 08:55:27 -07:00
Elliott Hughes
ecf67e152a am 2d51dddf: am 85049ead: Merge "Use hidden visibility for several internal-use-only functions."
* commit '2d51dddf1a649c73f207ecf48d419fea8a8ed4de':
  Use hidden visibility for several internal-use-only functions.
2012-09-24 08:52:15 -07:00
Elliott Hughes
d2eea0e6d6 am baa74eff: am 882c6af9: Merge "[MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro."
* commit 'baa74eff0dd56b1dbf8e8a233a82e6382828ad72':
  [MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro.
2012-09-24 08:52:14 -07:00
Elliott Hughes
2d51dddf1a am 85049ead: Merge "Use hidden visibility for several internal-use-only functions."
* commit '85049ead251b0af9411ada3ad1db0f6b75f8e4a8':
  Use hidden visibility for several internal-use-only functions.
2012-09-24 08:43:45 -07:00
Elliott Hughes
baa74eff0d am 882c6af9: Merge "[MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro."
* commit '882c6af953e5b3fd4b9f4fe74a68128ea16fba3b':
  [MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro.
2012-09-24 08:43:44 -07:00
Elliott Hughes
0c24effd01 Merge "Add the libcutils localtime_tz and mktime_t extensions to bionic." 2012-09-24 08:41:55 -07:00
Elliott Hughes
85049ead25 Merge "Use hidden visibility for several internal-use-only functions." 2012-09-23 11:08:19 -07:00
The Android Automerger
cc95d69c25 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-22 09:41:22 -07:00
Elliott Hughes
95a7a64ac8 Use hidden visibility for several internal-use-only functions.
Change-Id: Ibeea6963ff0cc06479d0a3ed7e868eeece8c55a0
2012-09-21 18:27:40 -07:00
Elliott Hughes
882c6af953 Merge "[MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS. Some of the required structure definitons are defined under this macro." 2012-09-21 18:20:03 -07:00
Raghu Gandham
988ff8ff9f [MIPS] Add CONFIG_32BIT to kernel_default_arch_macros for MIPS.
Some of the required structure definitons are defined under this macro.

Change-Id: I7a9a986e371381697dcb56bd8ea362856ffa7509
2012-09-21 17:14:05 -07:00
Raghu Gandham
c1993cac40 Fix dlsym and dladdr to use load_bias instead of base
Change-Id: If0f9aa944ccb1f90451aa6674428e34494331d2d
2012-09-21 17:00:30 -07:00
The Android Automerger
e0a00a8a2c merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-21 06:59:14 -07:00
Naseer Ahmed
f707007435 bionic: Update MDP header for sync
Change-Id: I5e13cdc9132fd99b8072b2e0836b9a92bc54f9c3
2012-09-20 18:29:45 -07:00
Rebecca Schultz Zavin
e06f77dce0 am 27cfd6af: am a9dca773: Update ion header to add FLAG_CACHED_NEEDS_SYNC
* commit '27cfd6afd4039a72e3669a2ff32685e81dd455aa':
  Update ion header to add FLAG_CACHED_NEEDS_SYNC
2012-09-20 15:46:02 -07:00
Rebecca Schultz Zavin
27cfd6afd4 am a9dca773: Update ion header to add FLAG_CACHED_NEEDS_SYNC
* commit 'a9dca77315b85f61e7386ca8dc931f79f6396531':
  Update ion header to add FLAG_CACHED_NEEDS_SYNC
2012-09-20 14:00:15 -07:00
The Android Open Source Project
284de14ebb am 0a6cbb97: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '0a6cbb97a82ac6cfc3ce3d1eaf2785f911600584':
2012-09-20 12:52:38 -07:00
The Android Open Source Project
0a6cbb97a8 Reconcile with jb-mr1-release - do not merge
Change-Id: I487c32c629ef85a9aea22fb7564fd868618f56c3
2012-09-20 10:34:47 -07:00
Rebecca Schultz Zavin
a9dca77315 Update ion header to add FLAG_CACHED_NEEDS_SYNC
Bug: 6854979
Change-Id: Ic94c1b7b10ab750a6b4b0db83d2fb1fa073d91b9
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
2012-09-20 09:47:37 -07:00
Iliyan Malchev
dcc80e127c am e5521822: am 4430aa6a: Merge "Update headers for Adreno graphics driver" into jb-mr1-dev
* commit 'e55218223b070d5745dc73c5593c436277c5b9c0':
  Update headers for Adreno graphics driver
2012-09-19 15:18:52 -07:00
The Android Automerger
8ab03a28d0 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-19 07:01:27 -07:00
Iliyan Malchev
e55218223b am 4430aa6a: Merge "Update headers for Adreno graphics driver" into jb-mr1-dev
* commit '4430aa6aaaa8e93bb7fbca761bf18540a7d95ca0':
  Update headers for Adreno graphics driver
2012-09-18 20:30:06 -07:00
Iliyan Malchev
4430aa6aaa Merge "Update headers for Adreno graphics driver" into jb-mr1-dev 2012-09-18 20:27:34 -07:00
Jeff Boody
02e06782fc Update headers for Adreno graphics driver
Change-Id: Ic66de698667c8c8607b2c19712a8626a4651da7f
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-09-18 19:52:01 -07:00
Elliott Hughes
73b5a72134 am ae0bccf7: am 0ef00090: am 30289f0d: am 47dc4d43: Merge "Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326"
* commit 'ae0bccf7d3252900d2ef31df2c6e4515908b89ec':
  Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
2012-09-18 17:31:35 -07:00
Elliott Hughes
ae0bccf7d3 am 0ef00090: am 30289f0d: am 47dc4d43: Merge "Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326"
* commit '0ef00090444883508b6405726150fe7e12ca5476':
  Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
2012-09-18 17:26:14 -07:00
Elliott Hughes
0ef0009044 am 30289f0d: am 47dc4d43: Merge "Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326"
* commit '30289f0dd6ab644290bfb37b22b03b7d006628f4':
  Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
2012-09-18 17:18:39 -07:00
Elliott Hughes
30289f0dd6 am 47dc4d43: Merge "Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326"
* commit '47dc4d431017e701239dd7d9a16333e0ad56a0ac':
  Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
2012-09-18 17:13:15 -07:00
Elliott Hughes
47dc4d4310 Merge "Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326" 2012-09-18 16:56:45 -07:00
Dave Burke
88f1ea8f82 Make pthread_create more forgiving of invalid sched_policy.
Bug: 7005326

(cherry-pick of e58303249b9e799a4fe84c5a2dfe71518441a6ec.)

Change-Id: Ie81494e0f6a71caa6fd9fabbcfc47a23077554d6
2012-09-18 16:55:24 -07:00
The Android Automerger
4513ad77ef merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-18 06:59:21 -07:00
Dave Burke
5c5b720d81 am baa09d1e: am e5830324: Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
* commit 'baa09d1e0a408d410fc5a834fe9c283ae589ff13':
  Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
2012-09-18 00:10:52 -07:00
Dave Burke
baa09d1e0a am e5830324: Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
* commit 'e58303249b9e799a4fe84c5a2dfe71518441a6ec':
  Make pthread_create more forgiving of invalid sched_policy. Bug: 7005326
2012-09-18 00:05:21 -07:00
Dave Burke
e58303249b Make pthread_create more forgiving of invalid sched_policy.
Bug: 7005326

Change-Id: I4e33d8e7d70fbfcf8a1bcc0e4c33279b42092a0a
2012-09-17 21:55:24 -07:00
Elliott Hughes
41bb2eb806 am 1f1e7b70: am 2aceb4bc: am e2a17ef4: am 77ac158e: Merge "Don\'t copy strerror(3) or strsignal(3) strings if we can share."
* commit '1f1e7b70b7e37039ce53aed8b1b651c8692347e7':
  Don't copy strerror(3) or strsignal(3) strings if we can share.
2012-09-17 16:00:07 -07:00
Elliott Hughes
1f1e7b70b7 am 2aceb4bc: am e2a17ef4: am 77ac158e: Merge "Don\'t copy strerror(3) or strsignal(3) strings if we can share."
* commit '2aceb4bcb30def2207fd8d6e7d30df35f9f91504':
  Don't copy strerror(3) or strsignal(3) strings if we can share.
2012-09-17 15:57:46 -07:00
Elliott Hughes
2aceb4bcb3 am e2a17ef4: am 77ac158e: Merge "Don\'t copy strerror(3) or strsignal(3) strings if we can share."
* commit 'e2a17ef444e1d3b3e27e649440a320139038d1d9':
  Don't copy strerror(3) or strsignal(3) strings if we can share.
2012-09-17 15:53:22 -07:00
Elliott Hughes
e2a17ef444 am 77ac158e: Merge "Don\'t copy strerror(3) or strsignal(3) strings if we can share."
* commit '77ac158e90712a975f61b7559b8de558f644f48d':
  Don't copy strerror(3) or strsignal(3) strings if we can share.
2012-09-17 15:50:18 -07:00
Elliott Hughes
77ac158e90 Merge "Don't copy strerror(3) or strsignal(3) strings if we can share." 2012-09-17 15:36:27 -07:00
Elliott Hughes
4198fa4c23 Don't copy strerror(3) or strsignal(3) strings if we can share.
Change-Id: Ic405269f63b945c6fb347e7c4346cd6f104aff35
2012-09-17 15:23:35 -07:00
Elliott Hughes
7379f525be am 469bd669: am 4b3ff1f0: am f8902bf7: am 047a285d: Merge "Fix <sys/klog.h> to correspond to the kernel operations."
* commit '469bd6692b984cfbecc96522960bb83baf7c9131':
  Fix <sys/klog.h> to correspond to the kernel operations.
2012-09-17 12:45:38 -07:00
Elliott Hughes
0e4065e8c7 am e409645c: am b67d4ec5: am 950a3c01: am 51519521: Merge "Add tty defaults to bionic"
* commit 'e409645c9953bb11bbad116834cecaebff444009':
  Add tty defaults to bionic
2012-09-17 12:45:34 -07:00
The Android Automerger
dd526b010d merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-16 06:59:15 -07:00
Elliott Hughes
469bd6692b am 4b3ff1f0: am f8902bf7: am 047a285d: Merge "Fix <sys/klog.h> to correspond to the kernel operations."
* commit '4b3ff1f0fa141b95bacf52960be588c343d8e5d6':
  Fix <sys/klog.h> to correspond to the kernel operations.
2012-09-14 16:23:07 -07:00
Elliott Hughes
4b3ff1f0fa am f8902bf7: am 047a285d: Merge "Fix <sys/klog.h> to correspond to the kernel operations."
* commit 'f8902bf7079be1a7ad51b82ebb24556ff40a1fff':
  Fix <sys/klog.h> to correspond to the kernel operations.
2012-09-14 16:21:18 -07:00
Elliott Hughes
f8902bf707 am 047a285d: Merge "Fix <sys/klog.h> to correspond to the kernel operations."
* commit '047a285d41e3fe0b1a8071ec19f436baf6f187b2':
  Fix <sys/klog.h> to correspond to the kernel operations.
2012-09-14 16:18:00 -07:00
Elliott Hughes
047a285d41 Merge "Fix <sys/klog.h> to correspond to the kernel operations." 2012-09-14 16:14:48 -07:00
Elliott Hughes
e409645c99 am b67d4ec5: am 950a3c01: am 51519521: Merge "Add tty defaults to bionic"
* commit 'b67d4ec5babf7d26bc0e52b942779012d14e14c8':
  Add tty defaults to bionic
2012-09-14 16:06:15 -07:00
Elliott Hughes
b67d4ec5ba am 950a3c01: am 51519521: Merge "Add tty defaults to bionic"
* commit '950a3c010cfbb18bb5974a78040ab9946370e553':
  Add tty defaults to bionic
2012-09-14 16:04:30 -07:00
Elliott Hughes
950a3c010c am 51519521: Merge "Add tty defaults to bionic"
* commit '51519521979c2daa417f6ca50c175e631c55dfb0':
  Add tty defaults to bionic
2012-09-14 16:01:19 -07:00
Elliott Hughes
5151952197 Merge "Add tty defaults to bionic" 2012-09-14 15:45:46 -07:00
Elliott Hughes
e249b05963 Fix <sys/klog.h> to correspond to the kernel operations.
This makes the constants correspond to those in the Linux kernel's
include/linux/syslog.h, but keeping our old badly-named constants for
source compatibility.

Change-Id: Ia47d1299205754cbfffd29ed48b497b53d1edaae
2012-09-14 15:42:30 -07:00
Elliott Hughes
62466a55bf am 7e9d6d8a: am b2af8b68: am 66a97ea9: am 4e9d953a: Merge "libc: add ftw / nftw functions"
* commit '7e9d6d8abba781992b1f55f36e02b2baae368d07':
  libc: add ftw / nftw functions
2012-09-14 10:28:47 -07:00
Elliott Hughes
cd1fb029eb am c9134074: am 1eaa3e6f: am 77fd7075: am e895e6de: Merge "Update libc/NOTICE and record the incantation."
* commit 'c91340749015c4d7e35bd377f9103a340ef65c6a':
  Update libc/NOTICE and record the incantation.
2012-09-14 10:28:46 -07:00
Kenny Root
07ab5cbbed am c01915fd: am 2b270a0c: am a4ea1a3d: am f7e403d6: Merge changes I06ee0b67,I914d2205
* commit 'c01915fd04dc352c77d4e2a0fbc906b515d2533c':
  Print out shared app gids correctly
  Add tests for Android-specific stubs
2012-09-14 10:28:05 -07:00
Elliott Hughes
6a163a1bf1 am c9829a2b: am 155a70b9: am de9db8f7: am fa36875d: Merge "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3)."
* commit 'c9829a2b6fb70f2eb0fc6a21f48546c66d9724c7':
  Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).
2012-09-14 10:28:04 -07:00
Elliott Hughes
8631744c49 am 953dbbda: am c7fda6a9: am d4623e56: am b338ea30: Merge "Upgrade to tzdata2012f."
* commit '953dbbda49c9a46e5b1b8d78a643c44eb1426d0e':
  Upgrade to tzdata2012f.
2012-09-14 10:28:03 -07:00
The Android Automerger
9d1defbf47 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-14 07:11:00 -07:00
Elliott Hughes
7e9d6d8abb am b2af8b68: am 66a97ea9: am 4e9d953a: Merge "libc: add ftw / nftw functions"
* commit 'b2af8b6848bfd5dbc6dbc10a8267b0e387780888':
  libc: add ftw / nftw functions
2012-09-13 17:13:57 -07:00
Elliott Hughes
c913407490 am 1eaa3e6f: am 77fd7075: am e895e6de: Merge "Update libc/NOTICE and record the incantation."
* commit '1eaa3e6f72bd20eeea64bb3f46d965658695dade':
  Update libc/NOTICE and record the incantation.
2012-09-13 17:13:56 -07:00
Elliott Hughes
b2af8b6848 am 66a97ea9: am 4e9d953a: Merge "libc: add ftw / nftw functions"
* commit '66a97ea9fbc96c8ebf7f9aae8c2512ec3ffbdb80':
  libc: add ftw / nftw functions
2012-09-13 17:12:40 -07:00
Elliott Hughes
1eaa3e6f72 am 77fd7075: am e895e6de: Merge "Update libc/NOTICE and record the incantation."
* commit '77fd70758ae579aadf153124f7c26494e4a54988':
  Update libc/NOTICE and record the incantation.
2012-09-13 17:12:39 -07:00
Elliott Hughes
66a97ea9fb am 4e9d953a: Merge "libc: add ftw / nftw functions"
* commit '4e9d953a0e9334c0f3519f470b97973c31da5bb6':
  libc: add ftw / nftw functions
2012-09-13 17:09:51 -07:00
Elliott Hughes
77fd70758a am e895e6de: Merge "Update libc/NOTICE and record the incantation."
* commit 'e895e6deaab620f874b3e9f196eb6b67f58dc278':
  Update libc/NOTICE and record the incantation.
2012-09-13 17:09:50 -07:00
Elliott Hughes
4e9d953a0e Merge "libc: add ftw / nftw functions" 2012-09-13 16:55:39 -07:00
Nick Kralevich
5e58ea07d4 libc: add ftw / nftw functions
Please see "man 3 ftw" for a description of the
ftw / nftw functions.

This code is taken directly from netbsd unmodified.

Change-Id: Ia4879ac57212b424adf5281b5e92858e216d0f14
2012-09-13 16:54:57 -07:00
Elliott Hughes
e895e6deaa Merge "Update libc/NOTICE and record the incantation." 2012-09-13 16:52:35 -07:00
Elliott Hughes
965b867512 Update libc/NOTICE and record the incantation.
Change-Id: I0673d6263de2c5a21cd549f18c0648d0fa4bb40f
2012-09-13 16:51:57 -07:00
Kenny Root
c01915fd04 am 2b270a0c: am a4ea1a3d: am f7e403d6: Merge changes I06ee0b67,I914d2205
* commit '2b270a0caceaf79a799a55fc29fe43b6f0482ba9':
  Print out shared app gids correctly
  Add tests for Android-specific stubs
2012-09-13 15:36:06 -07:00
Elliott Hughes
c9829a2b6f am 155a70b9: am de9db8f7: am fa36875d: Merge "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3)."
* commit '155a70b93fcccf8e5dec108fb730e25471eaecba':
  Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).
2012-09-13 15:36:05 -07:00
Elliott Hughes
953dbbda49 am c7fda6a9: am d4623e56: am b338ea30: Merge "Upgrade to tzdata2012f."
* commit 'c7fda6a96daeb6d089f3d8f4426b6fc211017289':
  Upgrade to tzdata2012f.
2012-09-13 15:36:03 -07:00
Kenny Root
2b270a0cac am a4ea1a3d: am f7e403d6: Merge changes I06ee0b67,I914d2205
* commit 'a4ea1a3d2e12f8b240a70d90ddf1f54af06c286c':
  Print out shared app gids correctly
  Add tests for Android-specific stubs
2012-09-13 15:33:57 -07:00
Elliott Hughes
155a70b93f am de9db8f7: am fa36875d: Merge "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3)."
* commit 'de9db8f7efb10cdab1c81f1d3164f3b55e5f08e9':
  Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).
2012-09-13 15:33:57 -07:00
Elliott Hughes
c7fda6a96d am d4623e56: am b338ea30: Merge "Upgrade to tzdata2012f."
* commit 'd4623e56fb61b38e2c436f214a1282252908b93b':
  Upgrade to tzdata2012f.
2012-09-13 15:33:56 -07:00
Kenny Root
a4ea1a3d2e am f7e403d6: Merge changes I06ee0b67,I914d2205
* commit 'f7e403d66355faed93bb1472f6961acd380796d1':
  Print out shared app gids correctly
  Add tests for Android-specific stubs
2012-09-13 15:30:35 -07:00
Elliott Hughes
de9db8f7ef am fa36875d: Merge "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3)."
* commit 'fa36875df423af968d053c584c0de18a2448516b':
  Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).
2012-09-13 15:30:34 -07:00
Elliott Hughes
d4623e56fb am b338ea30: Merge "Upgrade to tzdata2012f."
* commit 'b338ea30b299099a2b26a4e8a6b2ccd7bfac631a':
  Upgrade to tzdata2012f.
2012-09-13 15:30:33 -07:00
Kenny Root
f7e403d663 Merge changes I06ee0b67,I914d2205
* changes:
  Print out shared app gids correctly
  Add tests for Android-specific stubs
2012-09-13 15:26:13 -07:00
Kenny Root
8a05a01de7 Print out shared app gids correctly
For applications that share resources across users such as
forward-locked applications, print out their group name correctly.

Change-Id: I06ee0b67e4325cfa415ffd7a03e301700399a66d
2012-09-13 15:25:09 -07:00
Kenny Root
2a54e5ecd0 Add tests for Android-specific stubs
Also fix problem with multi-user IDs that the home directory was
returned as "/data" instead of "/" unlike all the other uids.

Change-Id: I914d22052e5a86552989f8969b85aadbc748c65d
2012-09-13 15:25:09 -07:00
Elliott Hughes
fa36875df4 Merge "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3)." 2012-09-13 15:19:37 -07:00
Irina Tirdea
b5f053b5a7 Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).
Change-Id: I426109db25e907980d6cb3a7a695796e45783b78
2012-09-13 15:18:21 -07:00
Elliott Hughes
b338ea30b2 Merge "Upgrade to tzdata2012f." 2012-09-13 15:15:09 -07:00
Elliott Hughes
88b61cb691 Upgrade to tzdata2012f.
This release reflects the following change circulated on the tz
mailing list:

  * australasia (Pacific/Fiji): Fiji DST is October 21 through January
    20 this year.  (Thanks to Steffen Thorsen.)

Change-Id: Ie21ea791ff5191264967aff685cbfa5c73f1fa5c
2012-09-13 14:54:51 -07:00
Elliott Hughes
4aebbf63c3 am 3d019017: am bec648ee: am 8db4b91b: am d2236e2c: Merge "Fix Mac build."
* commit '3d0190177469a8a25895117fc41625cd22e2fb28':
  Fix Mac build.
2012-09-13 14:12:31 -07:00
Elliott Hughes
ce061964f7 am c005a55c: am 478f8ff3: am b2550dd4: am 4a9b7c69: Merge "Add libdl into libc_malloc_debug_leak build"
* commit 'c005a55c74105c4eed8e2b0ba68ce0bfd67ccffe':
  Add libdl into libc_malloc_debug_leak build
2012-09-13 14:12:02 -07:00
Elliott Hughes
9f7d6840da am 00f927f1: am 29861b5d: am 58d15966: am af4d630e: Merge "Added new test for dlopen which is failing for MIPS."
* commit '00f927f137b553caa19fdc62497c012a1cb95f88':
  Added new test for dlopen which is failing for MIPS.
2012-09-13 14:12:01 -07:00
Elliott Hughes
3d01901774 am bec648ee: am 8db4b91b: am d2236e2c: Merge "Fix Mac build."
* commit 'bec648ee9f47c4120e5a4f82c7f0e6d225cb107f':
  Fix Mac build.
2012-09-13 11:14:23 -07:00
Elliott Hughes
bec648ee9f am 8db4b91b: am d2236e2c: Merge "Fix Mac build."
* commit '8db4b91bd2a069b2afb377f7e5190f625c3002cf':
  Fix Mac build.
2012-09-13 11:11:54 -07:00
Elliott Hughes
8db4b91bd2 am d2236e2c: Merge "Fix Mac build."
* commit 'd2236e2c0717818e150215b4eee7af58cd3540d8':
  Fix Mac build.
2012-09-13 11:09:49 -07:00
Elliott Hughes
d2236e2c07 Merge "Fix Mac build." 2012-09-13 11:02:22 -07:00
Elliott Hughes
38bfa21695 Fix Mac build.
Change-Id: Id625806fab0f2f7f90f9508c5fce649afe970414
2012-09-13 11:01:46 -07:00
Elliott Hughes
c005a55c74 am 478f8ff3: am b2550dd4: am 4a9b7c69: Merge "Add libdl into libc_malloc_debug_leak build"
* commit '478f8ff3f0bd0b805702eb1f90bd03eef6d19e89':
  Add libdl into libc_malloc_debug_leak build
2012-09-13 09:54:31 -07:00
Elliott Hughes
00f927f137 am 29861b5d: am 58d15966: am af4d630e: Merge "Added new test for dlopen which is failing for MIPS."
* commit '29861b5d8edf9506acd2289fb5b993b9a7997a59':
  Added new test for dlopen which is failing for MIPS.
2012-09-13 09:54:30 -07:00
Elliott Hughes
478f8ff3f0 am b2550dd4: am 4a9b7c69: Merge "Add libdl into libc_malloc_debug_leak build"
* commit 'b2550dd4c85845974bf61d3e4071b2b957fbcf09':
  Add libdl into libc_malloc_debug_leak build
2012-09-13 09:52:38 -07:00
Elliott Hughes
29861b5d8e am 58d15966: am af4d630e: Merge "Added new test for dlopen which is failing for MIPS."
* commit '58d15966c8f95998f82a90a5b24e23d56ba6254f':
  Added new test for dlopen which is failing for MIPS.
2012-09-13 09:52:37 -07:00
Elliott Hughes
b2550dd4c8 am 4a9b7c69: Merge "Add libdl into libc_malloc_debug_leak build"
* commit '4a9b7c694a8312160d3cd953a8227c23a1624868':
  Add libdl into libc_malloc_debug_leak build
2012-09-13 09:47:52 -07:00
Elliott Hughes
58d15966c8 am af4d630e: Merge "Added new test for dlopen which is failing for MIPS."
* commit 'af4d630e4d87dca38cc2026b992bb50c49911db9':
  Added new test for dlopen which is failing for MIPS.
2012-09-13 09:47:51 -07:00
Elliott Hughes
4a9b7c694a Merge "Add libdl into libc_malloc_debug_leak build" 2012-09-13 09:46:31 -07:00
Elliott Hughes
af4d630e4d Merge "Added new test for dlopen which is failing for MIPS." 2012-09-13 09:42:50 -07:00
The Android Automerger
f238e06d3a merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-13 06:59:18 -07:00
Elliott Hughes
9a78257905 am cf57515f: am f801cf55: resolved conflicts for merge of 47bda0c2 to jb-mr1-dev
* commit 'cf57515f7070539d560640247df6941a360fcff9':
  Update the kernel headers to match external/kernel-headers.
2012-09-13 03:21:42 -07:00
Xiaokang Qin
9c3449ecd9 bionic: linker: Need update the map->l_addr for execution.
Currently, linker doesn't update the map->l_addr for execution.
Which could break the Unwind_Backtrace with PT_GNU_EH_FRAME enabled
in new toolchain.

Change-Id: Ifbd853134da64a962f7e4c4105e56a3f20def1b2
Author: Fengwei Yin <fengwei.yin@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 57077
2012-09-13 18:09:20 +08:00
Pavel Chupin
e007775f4b Add libdl into libc_malloc_debug_leak build
Otherwise libc_malloc_debug_leak.so is failed to load runtime in x86
case

Change-Id: I8207ce06d1ec17b233f4e4fcfdd2b161673b4fa8
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2012-09-13 12:03:06 +04:00
jeffhao
acf5aa76a5 Added new test for dlopen which is failing for MIPS.
Change-Id: I2240faefb387a11647f49b1a15699907a40f98c1
2012-09-12 19:19:13 -07:00
Elliott Hughes
218c7f5dbe am 7f598671: am ccd7ee62: am 90ae787b: am 666d06fe: Merge "Backwards and forwards compatibility for an upcoming <sys/socket.h> change."
* commit '7f59867170653a62fb1fbce91bca5f4673be065d':
  Backwards and forwards compatibility for an upcoming <sys/socket.h> change.
2012-09-12 17:02:36 -07:00
The Android Open Source Project
b8ceb988ea am 76a3777a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '76a3777a4d6c3233ba2935828371abd3fbbac843':
2012-09-12 16:58:49 -07:00
Elliott Hughes
cf57515f70 am f801cf55: resolved conflicts for merge of 47bda0c2 to jb-mr1-dev
* commit 'f801cf55bebc8d0d397fbe6db8cc91b3afb78149':
  Update the kernel headers to match external/kernel-headers.
2012-09-12 16:11:21 -07:00
Elliott Hughes
f801cf55be resolved conflicts for merge of 47bda0c2 to jb-mr1-dev
Change-Id: Ia1969c79111c006bde709920254a515646c20aa7
2012-09-12 16:08:14 -07:00
Elliott Hughes
47bda0c293 am 7593fa8e: Merge "Update the kernel headers to match external/kernel-headers."
* commit '7593fa8eb7d8c3950a069e5edd244fb68872ec17':
  Update the kernel headers to match external/kernel-headers.
2012-09-12 15:59:29 -07:00
Elliott Hughes
7593fa8eb7 Merge "Update the kernel headers to match external/kernel-headers." 2012-09-12 15:56:11 -07:00
Elliott Hughes
e290cd1606 am 68221a76: am cc0f2253: am 7f798147: am cc8668f2: Merge "[MIPS] Check error status from pipe system call"
* commit '68221a76b7ecfe5ed5d43d76eb3b7a505bf83c0d':
  [MIPS] Check error status from pipe system call
2012-09-12 15:35:00 -07:00
Elliott Hughes
86ec05acc9 Update the kernel headers to match external/kernel-headers.
Note that the Linux kernel handed over responsibility for most of the
socket constants to glibc some time ago. Someone had updated our
external/kernel-headers file but not regenerated the bionic headers,
so this change copies the missing stuff from the old bionic <linux/socket.h>
into <sys/socket.h>. This is what glibc does.

I've hacked a few of the other files to #include <sys/socket.h> for
backward compatibility, but even so this requires numerous other
changes to switch people over from direct inclusion of <linux/...> headers.

Change-Id: I0e4af64e631d3cef911a31d90f2f806e058278a0
2012-09-12 12:30:22 -07:00
Elliott Hughes
7f59867170 am ccd7ee62: am 90ae787b: am 666d06fe: Merge "Backwards and forwards compatibility for an upcoming <sys/socket.h> change."
* commit 'ccd7ee624a81d61675fa08e149fe190a317341eb':
  Backwards and forwards compatibility for an upcoming <sys/socket.h> change.
2012-09-12 11:08:30 -07:00
Elliott Hughes
ccd7ee624a am 90ae787b: am 666d06fe: Merge "Backwards and forwards compatibility for an upcoming <sys/socket.h> change."
* commit '90ae787b30890dc7d0f5d95b67ea5578d53bd61e':
  Backwards and forwards compatibility for an upcoming <sys/socket.h> change.
2012-09-12 11:07:12 -07:00
Elliott Hughes
90ae787b30 am 666d06fe: Merge "Backwards and forwards compatibility for an upcoming <sys/socket.h> change."
* commit '666d06fee9e1d2e1401a4b42d94d01e8f38ad1a5':
  Backwards and forwards compatibility for an upcoming <sys/socket.h> change.
2012-09-12 11:03:24 -07:00
Elliott Hughes
666d06fee9 Merge "Backwards and forwards compatibility for an upcoming <sys/socket.h> change." 2012-09-12 10:51:48 -07:00
Elliott Hughes
0d207ba624 Backwards and forwards compatibility for an upcoming <sys/socket.h> change.
Change-Id: Iba58077a1f057a968eb2283ebba259975925ff4c
2012-09-12 10:51:05 -07:00
The Android Open Source Project
76a3777a4d Reconcile with jb-mr1-release - do not merge
Change-Id: I1cd7d82959c5e821c23be974b7eb9d4914593bef
2012-09-12 07:39:34 -07:00
The Android Automerger
5766b0932f merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-12 06:59:18 -07:00
Elliott Hughes
68221a76b7 am cc0f2253: am 7f798147: am cc8668f2: Merge "[MIPS] Check error status from pipe system call"
* commit 'cc0f225365d7103baaba80517850489a5ff17d89':
  [MIPS] Check error status from pipe system call
2012-09-11 16:48:50 -07:00
Elliott Hughes
cc0f225365 am 7f798147: am cc8668f2: Merge "[MIPS] Check error status from pipe system call"
* commit '7f798147980798718ac893229ae20dba9e3a26c7':
  [MIPS] Check error status from pipe system call
2012-09-11 16:47:25 -07:00
Elliott Hughes
7f79814798 am cc8668f2: Merge "[MIPS] Check error status from pipe system call"
* commit 'cc8668f261ae5d0ed38961f357e33c026502ed0d':
  [MIPS] Check error status from pipe system call
2012-09-11 16:43:39 -07:00
Elliott Hughes
cc8668f261 Merge "[MIPS] Check error status from pipe system call" 2012-09-11 16:38:43 -07:00
KwongYuan Wong
b03bc56b79 [MIPS] Check error status from pipe system call
Change-Id: Iaaea0e826c2678aa7f6fad9d46b16302a4d3b876
2012-09-11 16:38:04 -07:00
Irina Tirdea
e77e1afe24 Add tty defaults to bionic
Add ttydefaults.h bionic. Some userspace programs (e.g. perf) need the
definitions from this file. This header file is copied from NetBSD
(http://netbsd.org/) under the NetBSD Foundation's (TNF) license (“2 clause”
Berkeley-style license).

Change-Id: I9c862415b52b710f25adb1629a699627cd715775
Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
2012-09-11 22:47:31 +03:00
Elliott Hughes
3a936a4980 Add the libcutils localtime_tz and mktime_t extensions to bionic.
Bug: 7012465
Change-Id: Ib66f061e29199ba134545111dc79f9b50c8f4a21
2012-09-11 11:15:53 -07:00
The Android Automerger
49b5eb4ded merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-11 06:59:14 -07:00
Elliott Hughes
20599f5c9e am eeabbaee: am f50b99f4: am e8b4d67a: am 59726bed: Merge "Rename crtstart variables as crtbegin, to match reality."
* commit 'eeabbaee88202a459ec381edc45c0995bdcfa3c8':
  Rename crtstart variables as crtbegin, to match reality.
2012-09-10 17:15:10 -07:00
Ying Wang
62fd0b699a am 33d552a4: am e3738414: am f9920563: am 67546bf2: Merge "Generate header dependency makefiles for the crt*.o"
* commit '33d552a4d1c766aeb99c71060aa091e7aafaaac9':
  Generate header dependency makefiles for the crt*.o
2012-09-10 17:14:10 -07:00
Elliott Hughes
d203fba8f0 am 934e18e7: am af4371b4: am 56ba6336: am f1d57e16: Merge "Add more pthreads tests."
* commit '934e18e715b0f6627f258d6fc8dc9406f39705f6':
  Add more pthreads tests.
2012-09-10 17:09:54 -07:00
Elliott Hughes
b3cbcb3547 am 5804b88a: am b0102454: am 7c7a7f8e: am d10309c3: Merge "Rename __dso_handle_so.c to __dso_handle_so.h"
* commit '5804b88a44c153fa1b39dd3095be9e905d77cee0':
  Rename __dso_handle_so.c to __dso_handle_so.h
2012-09-10 17:05:15 -07:00
Elliott Hughes
b35a90d682 am ffcb92e7: am b18d4f63: am 72fcdbe9: am 691ef3c8: Merge "Add mlockall and munlockall for Google TV."
* commit 'ffcb92e779b347b3725e560aa3aabd122a4dbd62':
  Add mlockall and munlockall for Google TV.
2012-09-10 17:05:14 -07:00
Elliott Hughes
eeabbaee88 am f50b99f4: am e8b4d67a: am 59726bed: Merge "Rename crtstart variables as crtbegin, to match reality."
* commit 'f50b99f471a9af07b2dec6ac3fe1abca5ba9a20b':
  Rename crtstart variables as crtbegin, to match reality.
2012-09-10 12:06:50 -07:00
Elliott Hughes
f50b99f471 am e8b4d67a: am 59726bed: Merge "Rename crtstart variables as crtbegin, to match reality."
* commit 'e8b4d67a37e27ffc34086562ad13dcd9316a8249':
  Rename crtstart variables as crtbegin, to match reality.
2012-09-10 12:04:28 -07:00
Elliott Hughes
e8b4d67a37 am 59726bed: Merge "Rename crtstart variables as crtbegin, to match reality."
* commit '59726beda5bec7e3db9d0c403a0ef11d0a7f182f':
  Rename crtstart variables as crtbegin, to match reality.
2012-09-10 12:01:04 -07:00
Elliott Hughes
59726beda5 Merge "Rename crtstart variables as crtbegin, to match reality." 2012-09-10 11:52:12 -07:00
Elliott Hughes
12949e5d39 Rename crtstart variables as crtbegin, to match reality.
No functional change, but it's confusing that the variable
names don't match the filenames.

Change-Id: I7109f917797be2f056e69fddb92e4a7306281813
2012-09-10 11:16:12 -07:00
Ying Wang
33d552a4d1 am e3738414: am f9920563: am 67546bf2: Merge "Generate header dependency makefiles for the crt*.o"
* commit 'e3738414a62f9c9b43e158af590d127b9659030d':
  Generate header dependency makefiles for the crt*.o
2012-09-10 10:09:13 -07:00
Ying Wang
e3738414a6 am f9920563: am 67546bf2: Merge "Generate header dependency makefiles for the crt*.o"
* commit 'f9920563dabc21a5c741ef630e6ca8fe66fbbe5b':
  Generate header dependency makefiles for the crt*.o
2012-09-10 10:07:17 -07:00
Ying Wang
f9920563da am 67546bf2: Merge "Generate header dependency makefiles for the crt*.o"
* commit '67546bf209b2c5480aa4811b2bb3c42e7862af62':
  Generate header dependency makefiles for the crt*.o
2012-09-10 10:05:14 -07:00
Ying Wang
67546bf209 Merge "Generate header dependency makefiles for the crt*.o" 2012-09-10 09:48:46 -07:00
The Android Automerger
9209fd3868 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-09 06:59:39 -07:00
Elliott Hughes
934e18e715 am af4371b4: am 56ba6336: am f1d57e16: Merge "Add more pthreads tests."
* commit 'af4371b46b71116bd40b6ef1eb32fdfc301a38e9':
  Add more pthreads tests.
2012-09-07 20:36:20 -07:00
Elliott Hughes
af4371b46b am 56ba6336: am f1d57e16: Merge "Add more pthreads tests."
* commit '56ba6336d9c07cdfb5af2324aaa52da0c8d00ef2':
  Add more pthreads tests.
2012-09-07 20:35:01 -07:00
Elliott Hughes
56ba6336d9 am f1d57e16: Merge "Add more pthreads tests."
* commit 'f1d57e16686153b69a27c1eb9e339c77232c0edd':
  Add more pthreads tests.
2012-09-07 18:38:41 -07:00
Elliott Hughes
f1d57e1668 Merge "Add more pthreads tests." 2012-09-07 18:30:18 -07:00
Ying Wang
cf464878ef Generate header dependency makefiles for the crt*.o
Bug: 7127743
Change-Id: I606e5f7cd2b513f855a1fefd2b001abd365fc854
2012-09-07 17:13:37 -07:00
Elliott Hughes
4d014e15b4 Add more pthreads tests.
Someone reported a bug if pthread_detach is called while a pthread_join is
already in progress, but I'm unable to reproduce it. Keep the tests I wrote,
though.

Change-Id: I3d71450bbbb5345f2cb213dc56310ec020d528cc
2012-09-07 16:47:54 -07:00
Elliott Hughes
5804b88a44 am b0102454: am 7c7a7f8e: am d10309c3: Merge "Rename __dso_handle_so.c to __dso_handle_so.h"
* commit 'b010245490f50601b13ee17238e31162b6143d71':
  Rename __dso_handle_so.c to __dso_handle_so.h
2012-09-07 11:11:35 -07:00
Elliott Hughes
ffcb92e779 am b18d4f63: am 72fcdbe9: am 691ef3c8: Merge "Add mlockall and munlockall for Google TV."
* commit 'b18d4f6361c4ae011c7661da46ad0501eecba591':
  Add mlockall and munlockall for Google TV.
2012-09-07 11:11:34 -07:00
Elliott Hughes
b010245490 am 7c7a7f8e: am d10309c3: Merge "Rename __dso_handle_so.c to __dso_handle_so.h"
* commit '7c7a7f8e526518f37eae3ce2a785344316f263e0':
  Rename __dso_handle_so.c to __dso_handle_so.h
2012-09-07 11:09:23 -07:00
Elliott Hughes
b18d4f6361 am 72fcdbe9: am 691ef3c8: Merge "Add mlockall and munlockall for Google TV."
* commit '72fcdbe9025b0405251c17eb391f326e03bf92ef':
  Add mlockall and munlockall for Google TV.
2012-09-07 11:09:23 -07:00
Elliott Hughes
7c7a7f8e52 am d10309c3: Merge "Rename __dso_handle_so.c to __dso_handle_so.h"
* commit 'd10309c36b93176a473baeeddef6f3fba8bf0678':
  Rename __dso_handle_so.c to __dso_handle_so.h
2012-09-07 11:07:13 -07:00
Elliott Hughes
72fcdbe902 am 691ef3c8: Merge "Add mlockall and munlockall for Google TV."
* commit '691ef3c80b4af278aa90d6e005ba42de1e52c140':
  Add mlockall and munlockall for Google TV.
2012-09-07 11:07:10 -07:00
Elliott Hughes
d10309c36b Merge "Rename __dso_handle_so.c to __dso_handle_so.h" 2012-09-07 10:59:20 -07:00
Elliott Hughes
691ef3c80b Merge "Add mlockall and munlockall for Google TV." 2012-09-07 10:51:49 -07:00
Andrew Hsieh
048569be54 Rename __dso_handle_so.c to __dso_handle_so.h
Also chang libc/arch-arm/bionic/crtbegin_so.c to include it
as a header.

Change-Id: Ib91b0b8caf5c8b936425aa8a4fc1a229b2b27929
2012-09-07 12:49:41 +08:00
Ian Rogers
593315c327 am e9859df7: am 973bf681: am 77039d34: am e8f81547: Merge "Fix build warning of initialization but no use."
* commit 'e9859df7cc57f761a4b9457b4d55ecff33bfdc8b':
  Fix build warning of initialization but no use.
2012-09-06 11:54:48 -07:00
Ian Rogers
e9859df7cc am 973bf681: am 77039d34: am e8f81547: Merge "Fix build warning of initialization but no use."
* commit '973bf681b74d418704202cbfefef5d3be031b066':
  Fix build warning of initialization but no use.
2012-09-06 11:52:24 -07:00
Ian Rogers
973bf681b7 am 77039d34: am e8f81547: Merge "Fix build warning of initialization but no use."
* commit '77039d34449e369b9425a36eaed38d41b9d20884':
  Fix build warning of initialization but no use.
2012-09-06 11:50:22 -07:00
Ian Rogers
77039d3444 am e8f81547: Merge "Fix build warning of initialization but no use."
* commit 'e8f815473ba463b875cea757bc0a52fc32f10748':
  Fix build warning of initialization but no use.
2012-09-06 11:45:54 -07:00
Ian Rogers
e8f815473b Merge "Fix build warning of initialization but no use." 2012-09-06 11:41:52 -07:00
Elliott Hughes
1ad05db9ce Add mlockall and munlockall for Google TV.
Change-Id: I10e961d701e74aab07211ec7975f61167e387853
2012-09-06 11:24:45 -07:00
Elliott Hughes
f28d8d7042 am 684669df: am de0dc251: am 41ff8b98: am 6e3b0f2d: Merge "Don\'t corrupt the thread list in static executables."
* commit '684669dfd7fdefa1e0f45e91667af628d3742429':
  Don't corrupt the thread list in static executables.
2012-09-06 10:48:52 -07:00
Elliott Hughes
684669dfd7 am de0dc251: am 41ff8b98: am 6e3b0f2d: Merge "Don\'t corrupt the thread list in static executables."
* commit 'de0dc251120e03622d89d7af2ce44530d665e065':
  Don't corrupt the thread list in static executables.
2012-09-06 10:46:41 -07:00
Elliott Hughes
de0dc25112 am 41ff8b98: am 6e3b0f2d: Merge "Don\'t corrupt the thread list in static executables."
* commit '41ff8b98044de19d6ea5228452c2d555c4224da7':
  Don't corrupt the thread list in static executables.
2012-09-06 10:44:13 -07:00
Elliott Hughes
41ff8b9804 am 6e3b0f2d: Merge "Don\'t corrupt the thread list in static executables."
* commit '6e3b0f2d2e89a8f3bbfc5d26dcdc13233c1111ba':
  Don't corrupt the thread list in static executables.
2012-09-06 10:40:43 -07:00
Elliott Hughes
6e3b0f2d2e Merge "Don't corrupt the thread list in static executables." 2012-09-06 10:31:52 -07:00
Ian Rogers
09f76cdd9b Fix build warning of initialization but no use.
first_run is only used with LOCK_AT_FORK, however, care needs to be
taken with the #if to avoid compiler warnings when LOCK_AT_FORK isn't
being used.

Change-Id: I6bcfac2ab8732c91607f4a1bcd7c0019f29c2eec
2012-09-06 09:59:13 -07:00
The Android Open Source Project
c99828169b am c0ee1171: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'c0ee117170e9a8976ffd2afc99bce8f1242cefd1':
  Revert "Update ion header"
  :Revert "Update ion header"
2012-09-06 09:12:34 -07:00
The Android Open Source Project
c0ee117170 Reconcile with jb-mr1-release - do not merge
Change-Id: If42e786ae4ba616676fad3872f3c36f0c0be16f8
2012-09-06 07:52:32 -07:00
The Android Automerger
abce26b05a merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-06 06:33:25 -07:00
Ajay Dudani
58deb845c5 am d58928e8: am 183d0a57: Update msm_ion.h ioctls so they dont conflict with ion.h
* commit 'd58928e83109aeac42e2226de3ec99a91e59a695':
  Update msm_ion.h ioctls so they dont conflict with ion.h
2012-09-05 21:52:04 -07:00
Ajay Dudani
d58928e831 am 183d0a57: Update msm_ion.h ioctls so they dont conflict with ion.h
* commit '183d0a57a292a33d92baa099b14425805a94306d':
  Update msm_ion.h ioctls so they dont conflict with ion.h
2012-09-05 21:49:44 -07:00
Ajay Dudani
1c24c54840 am bf3da78e: am 85811fc7: Revert "msm_ion: switch to using legacy_ion.h"
* commit 'bf3da78e690524414a8874313638f7cf33b44424':
  Revert "msm_ion: switch to using legacy_ion.h"
2012-09-05 21:47:56 -07:00
Ajay Dudani
183d0a57a2 Update msm_ion.h ioctls so they dont conflict with ion.h
Change-Id: Ib6ffcc147e39b3f9f2eb9a8ed403b74d99bc755f
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-09-05 21:47:32 -07:00
Ajay Dudani
457e60a2f8 am 7649d622: am dc81b447: Revert "add legacy_ion.h"
* commit '7649d62255f056d1520cd746ddcd6352d091f76f':
  Revert "add legacy_ion.h"
2012-09-05 21:46:33 -07:00
Ajay Dudani
bf3da78e69 am 85811fc7: Revert "msm_ion: switch to using legacy_ion.h"
* commit '85811fc7c244c977186cff501063d5f67fb5352b':
  Revert "msm_ion: switch to using legacy_ion.h"
2012-09-05 21:45:39 -07:00
Ajay Dudani
7649d62255 am dc81b447: Revert "add legacy_ion.h"
* commit 'dc81b44759b30a7fe0951d35f658700afd806bea':
  Revert "add legacy_ion.h"
2012-09-05 21:44:13 -07:00
Ajay Dudani
85811fc7c2 Revert "msm_ion: switch to using legacy_ion.h"
This reverts commit 66edcd9dad.
2012-09-05 21:43:15 -07:00
Ajay Dudani
dc81b44759 Revert "add legacy_ion.h"
This reverts commit 5f1d206de3.
2012-09-05 21:42:10 -07:00
Elliott Hughes
bfeab1bbe7 Don't corrupt the thread list in static executables.
Several previous changes conspired to make a mess of the thread list
in static binaries. This was most obvious when trying to call
pthread_key_delete(3) on the main thread.

Bug: http://code.google.com/p/android/issues/detail?id=36893
Change-Id: I2a2f553114d8fb40533c481252b410c10656da2e
2012-09-05 17:47:37 -07:00
Elliott Hughes
bc30d0a798 am 8140487f: am 2da90705: am 008f4df5: am ff4608ae: Merge "Add missing dependencies."
* commit '8140487f6014f83c14cecb6ecb9535bd4966a13e':
  Add missing dependencies.
2012-09-05 15:22:28 -07:00
Elliott Hughes
8140487f60 am 2da90705: am 008f4df5: am ff4608ae: Merge "Add missing dependencies."
* commit '2da907059e187ffdcc25b15af91f912eecdcf776':
  Add missing dependencies.
2012-09-05 14:57:27 -07:00
Elliott Hughes
2da907059e am 008f4df5: am ff4608ae: Merge "Add missing dependencies."
* commit '008f4df5ba52ff502651da957ad8dbe149ff2ed6':
  Add missing dependencies.
2012-09-05 14:55:45 -07:00
Elliott Hughes
008f4df5ba am ff4608ae: Merge "Add missing dependencies."
* commit 'ff4608ae0cb78caa05b83e109fc2633682958089':
  Add missing dependencies.
2012-09-05 14:51:30 -07:00
Elliott Hughes
ff4608ae0c Merge "Add missing dependencies." 2012-09-05 14:46:15 -07:00
Elliott Hughes
2e8f4345df Add missing dependencies.
Change-Id: I53c1cfb59ac7a89952a8d6b906b2b9e16a66624f
2012-09-05 14:27:17 -07:00
Elliott Hughes
db18cbdd85 am d5b14e35: am faf361a6: am 2fc3e1ef: am b2c5bd54: Merge "ARM: warn about atexit() calls from legacy shared libraries"
* commit 'd5b14e35521ee6a038714c42ec523dcfe183b65b':
  ARM: warn about atexit() calls from legacy shared libraries
2012-09-05 10:36:09 -07:00
Elliott Hughes
d5b14e3552 am faf361a6: am 2fc3e1ef: am b2c5bd54: Merge "ARM: warn about atexit() calls from legacy shared libraries"
* commit 'faf361a6ac23af030268728f6eb02a3d1080a5ff':
  ARM: warn about atexit() calls from legacy shared libraries
2012-09-05 10:34:23 -07:00
Elliott Hughes
faf361a6ac am 2fc3e1ef: am b2c5bd54: Merge "ARM: warn about atexit() calls from legacy shared libraries"
* commit '2fc3e1efda003d9eb110c3fc08bb32f29c6e8a4b':
  ARM: warn about atexit() calls from legacy shared libraries
2012-09-05 10:32:25 -07:00
Elliott Hughes
2fc3e1efda am b2c5bd54: Merge "ARM: warn about atexit() calls from legacy shared libraries"
* commit 'b2c5bd543dcbbc1b2cbf7afd8b124256ce2c128e':
  ARM: warn about atexit() calls from legacy shared libraries
2012-09-05 10:29:23 -07:00
Elliott Hughes
b2c5bd543d Merge "ARM: warn about atexit() calls from legacy shared libraries" 2012-09-05 10:18:43 -07:00
Elliott Hughes
ec0d2a86b7 am 340ff83f: am ac3e35cd: am a76f2eca: am 26f2e4a1: Merge "ARM: make CRT_LEGACY_WORKAROUND work as intended"
* commit '340ff83f9878a478cfa4b5aaaf4260f96304c416':
  ARM: make CRT_LEGACY_WORKAROUND work as intended
2012-09-05 10:06:25 -07:00
Elliott Hughes
340ff83f98 am ac3e35cd: am a76f2eca: am 26f2e4a1: Merge "ARM: make CRT_LEGACY_WORKAROUND work as intended"
* commit 'ac3e35cd8f1ba8133905ee3700e092efef98ab12':
  ARM: make CRT_LEGACY_WORKAROUND work as intended
2012-09-05 10:03:37 -07:00
Elliott Hughes
ac3e35cd8f am a76f2eca: am 26f2e4a1: Merge "ARM: make CRT_LEGACY_WORKAROUND work as intended"
* commit 'a76f2ecaa203bd8b5cc2ca157f06c0d2de66a52f':
  ARM: make CRT_LEGACY_WORKAROUND work as intended
2012-09-05 10:01:48 -07:00
Elliott Hughes
a76f2ecaa2 am 26f2e4a1: Merge "ARM: make CRT_LEGACY_WORKAROUND work as intended"
* commit '26f2e4a1639a959513c4ff5981b4eb52757e8012':
  ARM: make CRT_LEGACY_WORKAROUND work as intended
2012-09-05 09:57:15 -07:00
Elliott Hughes
26f2e4a163 Merge "ARM: make CRT_LEGACY_WORKAROUND work as intended" 2012-09-05 09:43:35 -07:00
Ian Rogers
48468f258a am 64f4e714: am f71d757f: am 7310a1c4: am 82978cae: Merge "Avoid malloc lock while calling pthread_atfork."
* commit '64f4e714186ff69016abcb241fd912ed8ef8472a':
  Avoid malloc lock while calling pthread_atfork.
2012-09-05 07:56:21 -07:00
Ian Rogers
64f4e71418 am f71d757f: am 7310a1c4: am 82978cae: Merge "Avoid malloc lock while calling pthread_atfork."
* commit 'f71d757f6eea0394654b5c07a580bf3b4d048853':
  Avoid malloc lock while calling pthread_atfork.
2012-09-05 07:54:35 -07:00
Ian Rogers
f71d757f6e am 7310a1c4: am 82978cae: Merge "Avoid malloc lock while calling pthread_atfork."
* commit '7310a1c4326bc875aeea2ce091a4b6558d183b2d':
  Avoid malloc lock while calling pthread_atfork.
2012-09-05 07:52:12 -07:00
Ian Rogers
7310a1c432 am 82978cae: Merge "Avoid malloc lock while calling pthread_atfork."
* commit '82978cae4eec238a9d631d2b61b8985daa02516e':
  Avoid malloc lock while calling pthread_atfork.
2012-09-05 07:48:14 -07:00
Ian Rogers
82978cae4e Merge "Avoid malloc lock while calling pthread_atfork." 2012-09-05 07:41:32 -07:00
The Android Automerger
3a8807df34 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-05 06:33:22 -07:00
Elliott Hughes
3ee5775a0f am 9deb460a: am ab558163: am b9f0a6eb: am be19a367: Merge "termios: add tcdrain"
* commit '9deb460a26b8d5f6c74b5935e35b6f419775a1e5':
  termios: add tcdrain
2012-09-04 18:18:01 -07:00
Elliott Hughes
9deb460a26 am ab558163: am b9f0a6eb: am be19a367: Merge "termios: add tcdrain"
* commit 'ab558163a3f79834d4aa3107f4fed20bb242860b':
  termios: add tcdrain
2012-09-04 18:15:48 -07:00
Elliott Hughes
ab558163a3 am b9f0a6eb: am be19a367: Merge "termios: add tcdrain"
* commit 'b9f0a6eb75aa8f1eec95fb5718d84cef1d0f61b8':
  termios: add tcdrain
2012-09-04 18:13:50 -07:00
Elliott Hughes
b9f0a6eb75 am be19a367: Merge "termios: add tcdrain"
* commit 'be19a3671709879ccc0156b94f7ef7540027dc37':
  termios: add tcdrain
2012-09-04 18:10:07 -07:00
Elliott Hughes
be19a36717 Merge "termios: add tcdrain" 2012-09-04 17:52:40 -07:00
Elliott Hughes
6b08ed7937 am fe7ac11a: am f34c6d77: am bc374078: am 5ff23471: Merge "Add getsid system call to bionic"
* commit 'fe7ac11afa1c3a64c12e7e632e12b5c853ca3d89':
  Add getsid system call to bionic
2012-09-04 16:52:05 -07:00
Elliott Hughes
fe7ac11afa am f34c6d77: am bc374078: am 5ff23471: Merge "Add getsid system call to bionic"
* commit 'f34c6d7796102cf33bd8887efd0ba3f70884acd9':
  Add getsid system call to bionic
2012-09-04 16:49:27 -07:00
Elliott Hughes
f34c6d7796 am bc374078: am 5ff23471: Merge "Add getsid system call to bionic"
* commit 'bc3740787ac4108c2e0e247bc7ca2ea66329c5ab':
  Add getsid system call to bionic
2012-09-04 16:47:44 -07:00
Elliott Hughes
bc3740787a am 5ff23471: Merge "Add getsid system call to bionic"
* commit '5ff23471303a1b99ddc1e1751662aa45f34b5e21':
  Add getsid system call to bionic
2012-09-04 16:44:54 -07:00
Elliott Hughes
5ff2347130 Merge "Add getsid system call to bionic" 2012-09-04 16:36:27 -07:00
Elliott Hughes
5f517ce256 am ad639c1d: am 877ad30f: am 507bcabb: am e03ab936: Merge "Add missing MALLOC_FAILURE_ACTION calls to dlmalloc."
* commit 'ad639c1d2bf0c12a77c24a3247cedf86cc719d6e':
  Add missing MALLOC_FAILURE_ACTION calls to dlmalloc.
2012-09-04 16:05:33 -07:00
Elliott Hughes
ad639c1d2b am 877ad30f: am 507bcabb: am e03ab936: Merge "Add missing MALLOC_FAILURE_ACTION calls to dlmalloc."
* commit '877ad30fd6e8745b43063947a9220d1f1398ee02':
  Add missing MALLOC_FAILURE_ACTION calls to dlmalloc.
2012-09-04 16:03:30 -07:00
Elliott Hughes
877ad30fd6 am 507bcabb: am e03ab936: Merge "Add missing MALLOC_FAILURE_ACTION calls to dlmalloc."
* commit '507bcabb3565d20541242ad61f987bc1a6483ba1':
  Add missing MALLOC_FAILURE_ACTION calls to dlmalloc.
2012-09-04 16:00:20 -07:00
Elliott Hughes
507bcabb35 am e03ab936: Merge "Add missing MALLOC_FAILURE_ACTION calls to dlmalloc."
* commit 'e03ab936996a1a46d461cdad463d7f5bca10b051':
  Add missing MALLOC_FAILURE_ACTION calls to dlmalloc.
2012-09-04 15:56:12 -07:00
Elliott Hughes
e03ab93699 Merge "Add missing MALLOC_FAILURE_ACTION calls to dlmalloc." 2012-09-04 15:51:55 -07:00
Elliott Hughes
63deae5e4f Add missing MALLOC_FAILURE_ACTION calls to dlmalloc.
Without these, sometimes malloc(3) returns NULL without setting errno.

Change-Id: I4708c3f675bf2c878ddcaf012fde7848b255826b
2012-09-04 15:42:23 -07:00
Elliott Hughes
839ae785d8 am 1d07eda8: am c0e3b9dd: am b438c54d: am 1db615b4: Merge "bionic: Fix TINY_ANDROID build"
* commit '1d07eda8db4a8a8986b0e2681eef0d839c9901df':
  bionic: Fix TINY_ANDROID build
2012-09-04 13:53:51 -07:00
Elliott Hughes
1d07eda8db am c0e3b9dd: am b438c54d: am 1db615b4: Merge "bionic: Fix TINY_ANDROID build"
* commit 'c0e3b9ddd6c7dae0a402067c79609ddefcde125b':
  bionic: Fix TINY_ANDROID build
2012-09-04 13:51:57 -07:00
Elliott Hughes
c0e3b9ddd6 am b438c54d: am 1db615b4: Merge "bionic: Fix TINY_ANDROID build"
* commit 'b438c54d02b722a93a72ff6e834ab78053ca3add':
  bionic: Fix TINY_ANDROID build
2012-09-04 13:49:41 -07:00
Elliott Hughes
b438c54d02 am 1db615b4: Merge "bionic: Fix TINY_ANDROID build"
* commit '1db615b4ae469c9f33dc1d88b24924ca8efc10ef':
  bionic: Fix TINY_ANDROID build
2012-09-04 13:46:46 -07:00
Elliott Hughes
1db615b4ae Merge "bionic: Fix TINY_ANDROID build" 2012-09-04 13:42:57 -07:00
Benoit Goby
5ac9eee1d3 bionic: Fix TINY_ANDROID build
(cherry-pick of 545d5dbbcb0dc9e44323c4f2e687a3aace75a483.)

Change-Id: Ifc91e84ffed5a3a287accabd7f08b02752688db6
2012-09-04 13:36:54 -07:00
Vitaly Wool
954923858b termios: add tcdrain
Change-Id: I05c0007f7bcc6ef5295c32f86fafbf1ad31e07fa
2012-09-04 14:11:28 +02:00
The Android Automerger
2b49277d84 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-09-03 06:33:17 -07:00
Irina Tirdea
1ad10a566e Add getsid system call to bionic
Add getsid() system call to bionic for
all architectures. This is needed for various tools
(e.g. perf).

Adding the getsid system call was done in 3 steps:
() add getsid system call (function name and syscall
number) to libc/SYSCALLS.TXT
() generate all necessary headers by calling
libc/tools/gensyscalls.py. This patch is adding
the generated files since the build system
does not call gensyscalls.py.
() add the system call signature to libc/include/unistd.h

Change-Id: Id69a257e13ec02e1a44085a6b217a3f19ab025b1
Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
2012-09-03 01:38:34 +03:00
Kirill Artamonov
3e2d2936b0 Avoid malloc lock while calling pthread_atfork.
Expecting the memory in a forked child process to be sane wrt threading
is a bad idea. An example of a problem is when the parent process has
the malloc lock and a child process is forked. The malloc lock in the
child will appear locked by a thread that doesn't exist.

This change aims to make bionic more compatible with glibc by reseting
the malloc lock in the child forked process, as well as holding it
during the fork. This is a feature in dlmalloc 2.8.6 called
LOCK_AT_FORK. In general this feature isn't necessary as a forked
process will then exec. Some bad applications rely on being able to use
features like malloc before the exec and having multiple threads running
in the parent program. This isn't a problem with glibc and this patch
makes it not a problem for bionic.

Unfortunately for use in bionic, LOCK_AT_FORK has an issue as internally
it uses pthread_atfork that in bionic uses malloc. This leads to the
LOCK_AT_FORK initialization deadlocking with pthread_atfork's call to
malloc due to the malloc lock. This change moves the pthread_atfork logic
in LOCK_AT_FORK to be called without the malloc lock held.

Change-Id: Id68175a564a6abb936ee4488b44d9479f7311f69
2012-08-31 11:11:40 -07:00
Ian Rogers
a4e3391db2 am 5b0e2de6: am b9ad1a1e: am 6abab301: am 6fe901ef: Merge "Upgrade to dlmalloc 2.8.6."
* commit '5b0e2de6aef96e10c26034d9b447208a56df82d9':
  Upgrade to dlmalloc 2.8.6.
2012-08-31 09:03:23 -07:00
Ian Rogers
5b0e2de6ae am b9ad1a1e: am 6abab301: am 6fe901ef: Merge "Upgrade to dlmalloc 2.8.6."
* commit 'b9ad1a1e001cc06db121994ca0da7deb4c60914a':
  Upgrade to dlmalloc 2.8.6.
2012-08-31 09:01:07 -07:00
Ian Rogers
b9ad1a1e00 am 6abab301: am 6fe901ef: Merge "Upgrade to dlmalloc 2.8.6."
* commit '6abab301db84af7c98a4873fbf49997078aa19cc':
  Upgrade to dlmalloc 2.8.6.
2012-08-31 08:58:33 -07:00
Ian Rogers
6abab301db am 6fe901ef: Merge "Upgrade to dlmalloc 2.8.6."
* commit '6fe901ef38898d9cb6007720940e915f7180fc11':
  Upgrade to dlmalloc 2.8.6.
2012-08-31 08:55:41 -07:00
Ian Rogers
6fe901ef38 Merge "Upgrade to dlmalloc 2.8.6." 2012-08-31 08:42:41 -07:00
The Android Automerger
83d5e567d6 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-30 06:33:17 -07:00
Ian Rogers
c6d95add30 Upgrade to dlmalloc 2.8.6.
This fixes a bug and enables the use of MORECORE_CONTIGUOUS.

Change-Id: Ia7c5d32bdc46e99b3ecb92ee94d1f702c4385d5d
2012-08-29 18:18:29 -07:00
Elliott Hughes
6709aba126 am 418ecb7e: am 8c368b5d: am dde94f4c: am 8b4e8a93: Merge "Improve the dynamic linker diagnostics."
* commit '418ecb7ec800d8caa97b01a84d7403272fab4e28':
  Improve the dynamic linker diagnostics.
2012-08-29 14:11:52 -07:00
Nick Kralevich
35c3408b0d am 29e52652: am fe7d7d46: am 92133ca4: am 17d9be8a: Merge "disable _FORTIFY_SOURCE under clang"
* commit '29e526527c10f92d0a563d1cdec5f4eab0b33875':
  disable _FORTIFY_SOURCE under clang
2012-08-29 14:11:52 -07:00
Elliott Hughes
418ecb7ec8 am 8c368b5d: am dde94f4c: am 8b4e8a93: Merge "Improve the dynamic linker diagnostics."
* commit '8c368b5d1d43bf5d9fdf1f6e99190437da882f95':
  Improve the dynamic linker diagnostics.
2012-08-29 14:09:36 -07:00
Nick Kralevich
29e526527c am fe7d7d46: am 92133ca4: am 17d9be8a: Merge "disable _FORTIFY_SOURCE under clang"
* commit 'fe7d7d4693463945155b8548f9c33db5b3c90377':
  disable _FORTIFY_SOURCE under clang
2012-08-29 14:09:32 -07:00
Elliott Hughes
8c368b5d1d am dde94f4c: am 8b4e8a93: Merge "Improve the dynamic linker diagnostics."
* commit 'dde94f4c1664c6908d9a2944aff84e8667557d02':
  Improve the dynamic linker diagnostics.
2012-08-29 14:06:58 -07:00
Nick Kralevich
fe7d7d4693 am 92133ca4: am 17d9be8a: Merge "disable _FORTIFY_SOURCE under clang"
* commit '92133ca427b9c697d5afb59b74cb2cff50840c8e':
  disable _FORTIFY_SOURCE under clang
2012-08-29 14:06:57 -07:00
Elliott Hughes
dde94f4c16 am 8b4e8a93: Merge "Improve the dynamic linker diagnostics."
* commit '8b4e8a937be2e7ac94e52d596813095ef16c9ec8':
  Improve the dynamic linker diagnostics.
2012-08-29 14:04:25 -07:00
Nick Kralevich
92133ca427 am 17d9be8a: Merge "disable _FORTIFY_SOURCE under clang"
* commit '17d9be8ad73170275f25ffe8795a0d04b3e2cd8b':
  disable _FORTIFY_SOURCE under clang
2012-08-29 14:04:24 -07:00
Elliott Hughes
8b4e8a937b Merge "Improve the dynamic linker diagnostics." 2012-08-29 13:56:40 -07:00
Nick Kralevich
17d9be8ad7 Merge "disable _FORTIFY_SOURCE under clang" 2012-08-29 13:54:49 -07:00
Elliott Hughes
5fe555ecac am b3732862: am 8900e2de: am e5b85f45: am 0d7177c0: Merge "Clean up warnings in the malloc_debug_* files."
* commit 'b37328627be403b9c2a2896765a7bc7a357cb073':
  Clean up warnings in the malloc_debug_* files.
2012-08-29 13:23:34 -07:00
Elliott Hughes
b37328627b am 8900e2de: am e5b85f45: am 0d7177c0: Merge "Clean up warnings in the malloc_debug_* files."
* commit '8900e2de450726982de466bfc3639dd71630178c':
  Clean up warnings in the malloc_debug_* files.
2012-08-29 13:22:18 -07:00
Elliott Hughes
8900e2de45 am e5b85f45: am 0d7177c0: Merge "Clean up warnings in the malloc_debug_* files."
* commit 'e5b85f45f9b23b4adbea5a9bb0bc29099880ed69':
  Clean up warnings in the malloc_debug_* files.
2012-08-29 13:19:58 -07:00
Elliott Hughes
e5b85f45f9 am 0d7177c0: Merge "Clean up warnings in the malloc_debug_* files."
* commit '0d7177c0d47517514c81713427fc28e04dc3cd37':
  Clean up warnings in the malloc_debug_* files.
2012-08-29 13:15:10 -07:00
Elliott Hughes
e9b6fc6f82 Improve the dynamic linker diagnostics.
Lose the pid, only show the name of the function (not its whole signature),
and include the name of the library we failed to load. (I hadn't noticed
that the library name was missing before because in Java we add that into
the UnsatisfiedLinkError detail message.)

The new output looks like this:

  Cannot load library: soinfo_relocate(linker.cpp:968): cannot locate symbol "__libc_malloc_default_dispatch" referenced by "libc_malloc_debug_leak.so"...

Change-Id: I3bb5c9780d9aaf3a9e4418ea55bc98122a81f80f
2012-08-29 13:10:54 -07:00
Elliott Hughes
0d7177c0d4 Merge "Clean up warnings in the malloc_debug_* files." 2012-08-29 13:08:50 -07:00
Nick Kralevich
829c089f83 disable _FORTIFY_SOURCE under clang
Clang and _FORTIFY_SOURCE are just plain incompatible with
each other.  First of all, clang doesn't understand the
__attribute__((gnu_inline)) header. Second of all,
Clang doesn't have support for __builtin_va_arg_pack()
and __builtin_va_arg_pack_len() (see
http://clang.llvm.org/docs/UsersManual.html#c_unimpl_gcc)

Until we can resolve these issues, don't even try using
_FORTIFY_SOURCE under clang.

Change-Id: I81c2b8073bb3276fa9a4a6b93c427b641038356a
2012-08-29 12:47:41 -07:00
Elliott Hughes
c4d1fecc10 Clean up warnings in the malloc_debug_* files.
Also clean up cpplint.py-detected lint.

Change-Id: Ia18e89c4c6878764f8d7ed34b8247e7a8d8fe88b
2012-08-29 12:08:13 -07:00
Ian Rogers
72758a138e am 71258e0d: am 15afed42: Merge "Revert "Revert "Restore posix_memalign""" into jb-mr1-dev
* commit '71258e0d207b9b51f1295808837df95e4dd2711a':
  Revert "Revert "Restore posix_memalign""
2012-08-29 08:57:50 -07:00
Ian Rogers
31abfc3a98 am 1df8fe33: am f71fa083: Merge "Revert "Revert "Upgrade to dlmalloc 2.8.5.""" into jb-mr1-dev
* commit '1df8fe33d59df1be3b1d33db033e379a32416a68':
  Revert "Revert "Upgrade to dlmalloc 2.8.5.""
2012-08-29 08:57:49 -07:00
Ian Rogers
71258e0d20 am 15afed42: Merge "Revert "Revert "Restore posix_memalign""" into jb-mr1-dev
* commit '15afed42ca0b9e5954b121d1a6ca1bdb6b5dc55c':
  Revert "Revert "Restore posix_memalign""
2012-08-29 08:55:24 -07:00
Ian Rogers
1df8fe33d5 am f71fa083: Merge "Revert "Revert "Upgrade to dlmalloc 2.8.5.""" into jb-mr1-dev
* commit 'f71fa0830a1d1280174f25309b05612af4f20fb3':
  Revert "Revert "Upgrade to dlmalloc 2.8.5.""
2012-08-29 08:55:23 -07:00
Ian Rogers
15afed42ca Merge "Revert "Revert "Restore posix_memalign""" into jb-mr1-dev 2012-08-29 08:53:41 -07:00
Ian Rogers
f71fa0830a Merge "Revert "Revert "Upgrade to dlmalloc 2.8.5.""" into jb-mr1-dev 2012-08-29 08:53:26 -07:00
The Android Automerger
b2d46d3632 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-29 06:33:16 -07:00
Iliyan Malchev
230752b861 am 7e585192: am 66edcd9d: msm_ion: switch to using legacy_ion.h
* commit '7e5851922ce5430ea55e3c9325386846fbedf16c':
  msm_ion: switch to using legacy_ion.h
2012-08-29 01:39:28 -07:00
Iliyan Malchev
e59f4c31cb am ba13ae76: am 5f1d206d: add legacy_ion.h
* commit 'ba13ae767207d50dd2214cd5e8a941ab4da74d56':
  add legacy_ion.h
2012-08-29 01:39:28 -07:00
Iliyan Malchev
7e5851922c am 66edcd9d: msm_ion: switch to using legacy_ion.h
* commit '66edcd9dad6a10622015f6350ea9bc11a358801a':
  msm_ion: switch to using legacy_ion.h
2012-08-29 01:37:21 -07:00
Iliyan Malchev
ba13ae7672 am 5f1d206d: add legacy_ion.h
* commit '5f1d206de357684365a98c53b505491e18b6694a':
  add legacy_ion.h
2012-08-29 01:37:20 -07:00
Iliyan Malchev
66edcd9dad msm_ion: switch to using legacy_ion.h
Change-Id: I0fa64cb9684062f371bd21a1f94f6c7dad8d854d
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-08-29 01:31:34 -07:00
Iliyan Malchev
5f1d206de3 add legacy_ion.h
legacy_ion.h is a pre android-3.4 copy of the ion.h header, for backwards
compatibility

Change-Id: Iaf2f1659f19a3b55334df929d9500069bf8acbdd
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-08-29 01:24:49 -07:00
Ian Rogers
e0d680176f Revert "Revert "Restore posix_memalign""
This reverts commit 78a3069f82.
2012-08-28 16:36:08 -07:00
Ian Rogers
2c344d3631 Revert "Revert "Upgrade to dlmalloc 2.8.5.""
This reverts commit f72ee26927.
2012-08-28 15:53:10 -07:00
Nick Kralevich
9416782be5 am 2868bbab: am 4f90a093: am d3d09f7d: am 069c64cd: Merge "ARM: make sure __on_dlclose() actually gets called"
* commit '2868bbabf3a3146e682f314794b8803bfd60963b':
  ARM: make sure __on_dlclose() actually gets called
2012-08-28 13:46:31 -07:00
Nick Kralevich
2868bbabf3 am 4f90a093: am d3d09f7d: am 069c64cd: Merge "ARM: make sure __on_dlclose() actually gets called"
* commit '4f90a0932c087e4bb13dab2d30a424c04c1f9f80':
  ARM: make sure __on_dlclose() actually gets called
2012-08-28 13:43:57 -07:00
Nick Kralevich
4f90a0932c am d3d09f7d: am 069c64cd: Merge "ARM: make sure __on_dlclose() actually gets called"
* commit 'd3d09f7d75726dbe7cd9dfae211427f8bebe1397':
  ARM: make sure __on_dlclose() actually gets called
2012-08-28 13:41:10 -07:00
Nick Kralevich
d3d09f7d75 am 069c64cd: Merge "ARM: make sure __on_dlclose() actually gets called"
* commit '069c64cdf2d3da7b7ff6ea5d1041f982fb10ab22':
  ARM: make sure __on_dlclose() actually gets called
2012-08-28 13:17:00 -07:00
Nick Kralevich
97b9643c5b am 036fa6e6: am 54662dd4: am 1389db8b: am e026b1d8: Merge "ARM: remove dummy entries from .so init_array/fini_array"
* commit '036fa6e66958a05fbde9fddefc5fc8e31741fe80':
  ARM: remove dummy entries from .so init_array/fini_array
2012-08-28 13:09:40 -07:00
Nick Kralevich
c64bb00cdf am 773a7832: am d7440f37: am 7cab2188: am ad180738: Merge "linker: Fix ARM_R_COPY relocations"
* commit '773a783295e758bdef1a7e205761bcc1f832af95':
  linker: Fix ARM_R_COPY relocations
2012-08-28 13:09:39 -07:00
Nick Kralevich
036fa6e669 am 54662dd4: am 1389db8b: am e026b1d8: Merge "ARM: remove dummy entries from .so init_array/fini_array"
* commit '54662dd4de8151383be4b518f4161f171359186f':
  ARM: remove dummy entries from .so init_array/fini_array
2012-08-28 13:06:48 -07:00
Nick Kralevich
773a783295 am d7440f37: am 7cab2188: am ad180738: Merge "linker: Fix ARM_R_COPY relocations"
* commit 'd7440f3725b196f6624f74d2cee50dbdac647372':
  linker: Fix ARM_R_COPY relocations
2012-08-28 13:06:47 -07:00
Nick Kralevich
54662dd4de am 1389db8b: am e026b1d8: Merge "ARM: remove dummy entries from .so init_array/fini_array"
* commit '1389db8b94ca0cff4744dc070d99f48c6cf53b07':
  ARM: remove dummy entries from .so init_array/fini_array
2012-08-28 13:04:47 -07:00
Nick Kralevich
d7440f3725 am 7cab2188: am ad180738: Merge "linker: Fix ARM_R_COPY relocations"
* commit '7cab21885ac039375264a45b2c774106415be664':
  linker: Fix ARM_R_COPY relocations
2012-08-28 13:04:46 -07:00
Nick Kralevich
069c64cdf2 Merge "ARM: make sure __on_dlclose() actually gets called" 2012-08-28 13:04:22 -07:00
Nick Kralevich
953de64819 am 88160880: am 3ffdef19: am c7d9c400: am c410a961: Merge "libc: remove ctors/dtors sections"
* commit '88160880953e01f4fa7523938b6448f194f598a0':
  libc: remove ctors/dtors sections
2012-08-28 13:02:10 -07:00
Nick Kralevich
1389db8b94 am e026b1d8: Merge "ARM: remove dummy entries from .so init_array/fini_array"
* commit 'e026b1d89a0dcada499da186d4d94cc3ce5d3ef3':
  ARM: remove dummy entries from .so init_array/fini_array
2012-08-28 13:01:22 -07:00
Nick Kralevich
7cab21885a am ad180738: Merge "linker: Fix ARM_R_COPY relocations"
* commit 'ad18073897378d3a13aaa6a7e7005f254ab8c1c8':
  linker: Fix ARM_R_COPY relocations
2012-08-28 13:01:21 -07:00
Nick Kralevich
e026b1d89a Merge "ARM: remove dummy entries from .so init_array/fini_array" 2012-08-28 12:49:46 -07:00
Nick Kralevich
ad18073897 Merge "linker: Fix ARM_R_COPY relocations" 2012-08-28 12:48:01 -07:00
The Android Automerger
6fa20f8296 Revert "Update ion header"
This reverts commit eb75db7d83.
2012-08-28 11:49:35 -07:00
Nick Kralevich
d39c3abd5a linker: Fix ARM_R_COPY relocations
Per http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044d/IHI0044D_aaelf.pdf
Section 4.7.1.10, ARM_R_COPY relocations are only suppose to reference shared
libraries, not the executable itself.  When resolving an R_ARM_COPY symbol,
ensure we don't look in our own symbol.

This partially addresses
http://code.google.com/p/android/issues/detail?id=28598 .  After this
patch, the printfs generated by the test program are:

global = 0x42 (0x401c7000)
global = 0x42 (0x11000)

before, the output was:

global = 0x42 (0x40071000)
global = 0x0 (0x11000)

I'm still not very happy with this patch, but I think it's an improvement
over where we were at before.

This change was modeled after https://android-review.googlesource.com/38871

Change-Id: Id7ad921e58395e76a36875bcc742ec5eeba53f08
2012-08-28 11:48:32 -07:00
Nick Kralevich
8816088095 am 3ffdef19: am c7d9c400: am c410a961: Merge "libc: remove ctors/dtors sections"
* commit '3ffdef19b4e9c8bae4fb0591afc0074eab0e5ac6':
  libc: remove ctors/dtors sections
2012-08-28 10:40:58 -07:00
Nick Kralevich
3ffdef19b4 am c7d9c400: am c410a961: Merge "libc: remove ctors/dtors sections"
* commit 'c7d9c400126f1d1159025d1005248ab556dbdb7e':
  libc: remove ctors/dtors sections
2012-08-28 10:38:28 -07:00
Nick Kralevich
c7d9c40012 am c410a961: Merge "libc: remove ctors/dtors sections"
* commit 'c410a9613a837790d2ea13aee3f88881e0d54c17':
  libc: remove ctors/dtors sections
2012-08-28 10:34:14 -07:00
Nick Kralevich
c410a9613a Merge "libc: remove ctors/dtors sections" 2012-08-28 10:20:27 -07:00
The Android Automerger
4be256b50b merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-28 06:33:16 -07:00
Ard Biesheuvel
144c291866 ARM: warn about atexit() calls from legacy shared libraries
Legacy ARM shared libraries use this generic version of atexit(),
which queues exit functions for invocation at program exit, at
which time the library may have been dlclose()'d, causing the
program to crash.

Change-Id: I41ae153c23268daa65ede7fb8966fc3e9caec369
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
2012-08-28 11:23:06 +02:00
Ard Biesheuvel
f3cfcd869d ARM: make CRT_LEGACY_WORKAROUND work as intended
To properly support legacy ARM shared libraries, libc.so needs
to export the symbols __dso_handle and atexit, even though
these are now supplied by the crt startup code.

This patch reshuffles the existing CRT_LEGACY_WORKAROUND
conditionally compiled code slightly so it works as the
original author likely intended.

Change-Id: Id6c0e94dc65b7928324a5f0bad7eba6eb2f464b9
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
2012-08-28 10:27:02 +02:00
Ard Biesheuvel
c23092887f ARM: remove dummy entries from .so init_array/fini_array
The runtime linker parses the ELF section headers to
discover the size of the init_array and fini_array, so
there is no point in putting NULL terminators at the end.

Change-Id: I3246cd585efce9314155600277dd829e9f37d04f
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
2012-08-28 09:55:51 +02:00
Nick Kralevich
47cac977f5 am 5443561d: am 48c88804: am 775dabd4: am 9dfaa63a: Merge "Allow linker to compile with -DLINKER_DEBUG=1"
* commit '5443561d5d9fd8ababac989116a036b3ab7b15b0':
  Allow linker to compile with -DLINKER_DEBUG=1
2012-08-27 16:12:39 -07:00
Nick Kralevich
5443561d5d am 48c88804: am 775dabd4: am 9dfaa63a: Merge "Allow linker to compile with -DLINKER_DEBUG=1"
* commit '48c88804293c8ebebe8c6035b0e077f4d55fe625':
  Allow linker to compile with -DLINKER_DEBUG=1
2012-08-27 16:09:49 -07:00
Nick Kralevich
48c8880429 am 775dabd4: am 9dfaa63a: Merge "Allow linker to compile with -DLINKER_DEBUG=1"
* commit '775dabd4d7f1c08d4229a3578d15990e86dd9c92':
  Allow linker to compile with -DLINKER_DEBUG=1
2012-08-27 16:08:12 -07:00
Nick Kralevich
775dabd4d7 am 9dfaa63a: Merge "Allow linker to compile with -DLINKER_DEBUG=1"
* commit '9dfaa63a1c0d1b8e75dd9d7077a8103a19821fa9':
  Allow linker to compile with -DLINKER_DEBUG=1
2012-08-27 16:06:34 -07:00
Nick Kralevich
9dfaa63a1c Merge "Allow linker to compile with -DLINKER_DEBUG=1" 2012-08-27 16:00:50 -07:00
Elliott Hughes
80921057d4 am ea108d8a: am 8c7f4777: am d2d8031d: am bc366292: Merge "Added missing cache failed notification"
* commit 'ea108d8a665aa708e878432ab1cdab959809ef9b':
  Added missing cache failed notification
2012-08-27 15:27:46 -07:00
Elliott Hughes
ea108d8a66 am 8c7f4777: am d2d8031d: am bc366292: Merge "Added missing cache failed notification"
* commit '8c7f4777ec2127a95f7f0aea3bf32fe9309a6ada':
  Added missing cache failed notification
2012-08-27 15:25:02 -07:00
Elliott Hughes
8c7f4777ec am d2d8031d: am bc366292: Merge "Added missing cache failed notification"
* commit 'd2d8031df16c78b4d5bdbe481ebe6856caa69fd1':
  Added missing cache failed notification
2012-08-27 15:22:35 -07:00
Elliott Hughes
d2d8031df1 am bc366292: Merge "Added missing cache failed notification"
* commit 'bc366292ff47ad9a5053e213ec253992baeee648':
  Added missing cache failed notification
2012-08-27 15:18:52 -07:00
Iliyan Malchev
5006660be8 am c9008991: am 3ad36e52: bionic: update sanitized MSM, V4L2 kernel headers
* commit 'c9008991f33b95831f94e0cc970c94a6ea6f4199':
  bionic: update sanitized MSM, V4L2 kernel headers
2012-08-27 15:17:31 -07:00
Iliyan Malchev
c9008991f3 am 3ad36e52: bionic: update sanitized MSM, V4L2 kernel headers
* commit '3ad36e525f1e0c5c35c9e854e542acff48e515a8':
  bionic: update sanitized MSM, V4L2 kernel headers
2012-08-27 15:13:48 -07:00
Elliott Hughes
bc366292ff Merge "Added missing cache failed notification" 2012-08-27 15:00:51 -07:00
The Android Automerger
19c0b800a3 :Revert "Update ion header"
This reverts commit eb75db7d83.
2012-08-27 12:46:37 -07:00
Iliyan Malchev
3ad36e525f bionic: update sanitized MSM, V4L2 kernel headers
Change-Id: I4ca8835ff7a1d21f80a139b1d76ceacf82b48502
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-08-27 12:11:41 -07:00
The Android Automerger
eeddc30e7e merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-27 06:33:20 -07:00
The Android Open Source Project
99696a9373 am 75f3d25c: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '75f3d25cef30dfa4578b1bb7562222ad51a75de5':
2012-08-25 07:16:49 -07:00
The Android Open Source Project
75f3d25cef Reconcile with jb-mr1-release - do not merge
Change-Id: I81e9084dd1f51185ecced85fecd1439a72f8c82c
2012-08-25 07:15:24 -07:00
Nick Kralevich
3697b52605 Allow linker to compile with -DLINKER_DEBUG=1
Change-Id: I27e734048cbcb9ed936369115582b3c734de1280
2012-08-24 17:11:45 -07:00
Ian Rogers
995f8c925f am 1f84a4e4: am a190cbb8: am 05fddb41: am a37ce7fa: Merge "Add missing va_end() to prevent stack corruptions"
* commit '1f84a4e426aca34ad17b6d626bd725e86a7c97b8':
  Add missing va_end() to prevent stack corruptions
2012-08-24 15:27:30 -07:00
Ian Rogers
1f84a4e426 am a190cbb8: am 05fddb41: am a37ce7fa: Merge "Add missing va_end() to prevent stack corruptions"
* commit 'a190cbb825c690e9e2423e022cabb844a0cd8a5a':
  Add missing va_end() to prevent stack corruptions
2012-08-24 15:25:44 -07:00
Ian Rogers
a190cbb825 am 05fddb41: am a37ce7fa: Merge "Add missing va_end() to prevent stack corruptions"
* commit '05fddb41d00710a31181693cebed570d711acd37':
  Add missing va_end() to prevent stack corruptions
2012-08-24 15:23:11 -07:00
Ian Rogers
05fddb41d0 am a37ce7fa: Merge "Add missing va_end() to prevent stack corruptions"
* commit 'a37ce7faa6d6c7355e3c6f6e09e5268cbf29c291':
  Add missing va_end() to prevent stack corruptions
2012-08-24 15:21:12 -07:00
Ian Rogers
a37ce7faa6 Merge "Add missing va_end() to prevent stack corruptions" 2012-08-24 15:10:07 -07:00
Rebecca Schultz Zavin
bbe3d3916f am fa5942cc: am cbd76d15: Merge "Update ion header" into jb-mr1-dev
* commit 'fa5942cc081f3aef1ceb8cf6f0d8c0984d18bf82':
  Update ion header
2012-08-23 16:34:33 -07:00
Rebecca Schultz Zavin
fa5942cc08 am cbd76d15: Merge "Update ion header" into jb-mr1-dev
* commit 'cbd76d15aff86ed63747d2a3b41a999e0cf9302f':
  Update ion header
2012-08-23 16:33:19 -07:00
Rebecca Schultz Zavin
cbd76d15af Merge "Update ion header" into jb-mr1-dev 2012-08-23 16:31:45 -07:00
Rebecca Schultz Zavin
eb75db7d83 Update ion header
Change-Id: Ib06a2c63070c9f507c14a43a0a0ac4d362f68d22
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
2012-08-23 16:29:23 -07:00
Nick Kralevich
b46a1d8890 am dd5d865d: am 81af404b: am e8198b97: am 26facba2: Merge "hardening: remove pointless ARM __get_pc() function"
* commit 'dd5d865d92c21105d28dd931d56c2f5e2f4df275':
  hardening: remove pointless ARM __get_pc() function
2012-08-23 12:37:19 -07:00
Nick Kralevich
dd5d865d92 am 81af404b: am e8198b97: am 26facba2: Merge "hardening: remove pointless ARM __get_pc() function"
* commit '81af404b634dc75581ab2dedf0c3d68b8666aee4':
  hardening: remove pointless ARM __get_pc() function
2012-08-23 12:35:53 -07:00
Nick Kralevich
81af404b63 am e8198b97: am 26facba2: Merge "hardening: remove pointless ARM __get_pc() function"
* commit 'e8198b97c369292a3ea97e5a2009bfba8229ddb5':
  hardening: remove pointless ARM __get_pc() function
2012-08-23 12:34:21 -07:00
The Android Automerger
21120f6d7b merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-23 06:33:25 -07:00
The Android Open Source Project
e2862bb984 am b1d43872: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'b1d43872224837a85f593d9f946686c7272c7d0e':
  Revert "Upgrade to dlmalloc 2.8.5."
  Revert "Restore posix_memalign"
2012-08-22 15:35:50 -07:00
The Android Open Source Project
b1d4387222 Reconcile with jb-mr1-release - do not merge
Change-Id: I3a81059b919617b639d4b39c40235301db4dd86a
2012-08-22 15:34:31 -07:00
Brian Carlstrom
561bf16be5 Revert "Upgrade to dlmalloc 2.8.5."
This reverts commit 999089181e.
2012-08-22 14:56:19 -07:00
Brian Carlstrom
453294d1da Revert "Restore posix_memalign"
This reverts commit bfc1d97531.
2012-08-22 14:56:13 -07:00
Brian Carlstrom
2bdfdfbf09 am 4a56211b: am f72ee269: Revert "Upgrade to dlmalloc 2.8.5."
* commit '4a56211b0b30757c8a5d64a59976a3a97d300a18':
  Revert "Upgrade to dlmalloc 2.8.5."
2012-08-22 13:56:16 -07:00
Brian Carlstrom
3985fbb348 am 71633454: am 78a3069f: Revert "Restore posix_memalign"
* commit '716334543788fe564b7d91055d6122657d409efd':
  Revert "Restore posix_memalign"
2012-08-22 13:56:16 -07:00
Brian Carlstrom
4a56211b0b am f72ee269: Revert "Upgrade to dlmalloc 2.8.5."
* commit 'f72ee269274170cd46af2844a2fe88767fb6e43c':
  Revert "Upgrade to dlmalloc 2.8.5."
2012-08-22 13:55:11 -07:00
Brian Carlstrom
7163345437 am 78a3069f: Revert "Restore posix_memalign"
* commit '78a3069f827386df6166ccf9366a89be782f1dde':
  Revert "Restore posix_memalign"
2012-08-22 13:55:10 -07:00
Brian Carlstrom
f72ee26927 Revert "Upgrade to dlmalloc 2.8.5."
This reverts commit 999089181e.
2012-08-22 12:07:33 -07:00
Brian Carlstrom
78a3069f82 Revert "Restore posix_memalign"
This reverts commit bfc1d97531.
2012-08-22 12:07:26 -07:00
Nick Kralevich
e8198b97c3 am 26facba2: Merge "hardening: remove pointless ARM __get_pc() function"
* commit '26facba288df013fd898f8df12d84e5669ece6eb':
  hardening: remove pointless ARM __get_pc() function
2012-08-22 11:55:59 -07:00
Ard Biesheuvel
0a150ead18 libc: remove ctors/dtors sections
None of the supported ARCHs actually populate these sections,
so there is no point in keeping them in the binaries.

Change-Id: I21a364f510118ac1114e1b49c53ec8c895c6bc6b
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
2012-08-22 20:45:26 +02:00
Nick Kralevich
26facba288 Merge "hardening: remove pointless ARM __get_pc() function" 2012-08-22 11:41:53 -07:00
Ard Biesheuvel
404e28ff8c hardening: remove pointless ARM __get_pc() function
Useful if you're trying to defeat ASLR, otherwise not
so much ...

Change-Id: I17ebb50bb490a3967db9c3038f049adafe2b8ea7
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
2012-08-22 20:38:54 +02:00
Jean-Baptiste Queru
3487c9b4a8 am 2400c7a6: am e49df020: am 170ad354: am c7de0225: Merge "Use unambiguous mnemonics"
* commit '2400c7a60edb18ab62fedcad86ce0d709895e26d':
  Use unambiguous mnemonics
2012-08-22 07:35:31 -07:00
Jean-Baptiste Queru
2400c7a60e am e49df020: am 170ad354: am c7de0225: Merge "Use unambiguous mnemonics"
* commit 'e49df0203c112bf44b166cde733554072b115ec5':
  Use unambiguous mnemonics
2012-08-22 07:33:51 -07:00
Jean-Baptiste Queru
e49df0203c am 170ad354: am c7de0225: Merge "Use unambiguous mnemonics"
* commit '170ad35419620b428c15a8945416ce8cedef3e81':
  Use unambiguous mnemonics
2012-08-22 07:32:21 -07:00
Jean-Baptiste Queru
170ad35419 am c7de0225: Merge "Use unambiguous mnemonics"
* commit 'c7de02259052b1eeebbfd3a0c21acf56a7e84357':
  Use unambiguous mnemonics
2012-08-22 07:30:56 -07:00
Jean-Baptiste Queru
c7de022590 Merge "Use unambiguous mnemonics" 2012-08-22 07:18:50 -07:00
The Android Automerger
6773054eb3 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-22 06:33:14 -07:00
Erik Gilling
98b62860cf am fed12112: am 974e16cd: update linux/sync.h
* commit 'fed121126afa91eb04a073ecc1e42535b1b52d27':
  update linux/sync.h
2012-08-21 19:14:12 -07:00
Erik Gilling
fed121126a am 974e16cd: update linux/sync.h
* commit '974e16cd829b6f75a5861759e86c1c09768272f2':
  update linux/sync.h
2012-08-21 19:11:07 -07:00
Erik Gilling
974e16cd82 update linux/sync.h
Change-Id: Ic2133976b675cdcd3ca88f4845180a7ff1c79e34
Signed-off-by: Erik Gilling <konkers@android.com>
2012-08-21 18:17:24 -07:00
The Android Open Source Project
92042e8b91 am a5b7d6dd: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'a5b7d6dd00914651f77c4ff6604a2c16df6d73b9':
2012-08-21 16:07:05 -07:00
The Android Open Source Project
a5b7d6dd00 Reconcile with jb-mr1-release - do not merge
Change-Id: I559e0ba590f5beee87871ecfbdfc185566d40f9f
2012-08-21 16:04:39 -07:00
Kevin Schoedel
c0b4d18d7d Use unambiguous mnemonics
Change-Id: I8da0af54cc3cbf69d9e485eb71bc44a6976b1adc
Author: Kevin P Schoedel <kevin.p.schoedel@intel.com>
Reviewed-by: Edwin Vane <edwin.vane@intel.com>
2012-08-21 15:28:23 -04:00
The Android Automerger
5d8cfb3e66 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-21 06:33:32 -07:00
Ard Biesheuvel
5ed48a4d7f ARM: make sure __on_dlclose() actually gets called
Change-Id: I280e5428b0543cccf17ca36baee4865395928cdb
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
2012-08-21 12:56:05 +02:00
Andrew Hsieh
0b8770ccbd am 5e2aa357: am f861705f: am 5cd1efb2: am 1bd035cf: Merge "Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS"
* commit '5e2aa357d2f76a01c403a208524137c6fccf7304':
  Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS
2012-08-21 03:34:44 -07:00
Andrew Hsieh
5e2aa357d2 am f861705f: am 5cd1efb2: am 1bd035cf: Merge "Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS"
* commit 'f861705f8c64af968b542c23932994cd17bb5db9':
  Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS
2012-08-21 03:33:02 -07:00
Andrew Hsieh
f861705f8c am 5cd1efb2: am 1bd035cf: Merge "Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS"
* commit '5cd1efb2ba68cdde13682ee37a3499b7bd974bdb':
  Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS
2012-08-21 03:31:02 -07:00
Andrew Hsieh
5cd1efb2ba am 1bd035cf: Merge "Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS"
* commit '1bd035cf119a2e4a667f07907c7860e5ec223cee':
  Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS
2012-08-21 03:29:14 -07:00
Andrew Hsieh
1bd035cf11 Merge "Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS" 2012-08-21 03:25:46 -07:00
Andrew Hsieh
2f7d7c6538 Enclosed functions in fenv.h with __BEGIN_DECLS/__END_DECLS
Those are C funcitons

Related CL: https://android-review.googlesource.com/#/c/41833/

Change-Id: I4386bcf948ad31c3690c9b7a145103088133d041
2012-08-21 15:41:34 +08:00
Ian Rogers
6acc9d10e2 am 7c6cc4df: am 4ac3b0a1: am 8af726b2: am 7b0d9b79: Merge "Restore posix_memalign"
* commit '7c6cc4dffdcfad48733ac3c3001f5d9b137182b1':
  Restore posix_memalign
2012-08-20 19:47:21 -07:00
Ian Rogers
7c6cc4dffd am 4ac3b0a1: am 8af726b2: am 7b0d9b79: Merge "Restore posix_memalign"
* commit '4ac3b0a1487cc97e86bd98959e23bf2303942945':
  Restore posix_memalign
2012-08-20 19:46:25 -07:00
Ian Rogers
4ac3b0a148 am 8af726b2: am 7b0d9b79: Merge "Restore posix_memalign"
* commit '8af726b24fbb9ab545719bd3980a4f0ad9bcb8a8':
  Restore posix_memalign
2012-08-20 19:45:12 -07:00
Ian Rogers
8af726b24f am 7b0d9b79: Merge "Restore posix_memalign"
* commit '7b0d9b798474ab62d4bf67c79ae901f4c4789f27':
  Restore posix_memalign
2012-08-20 19:43:15 -07:00
Ian Rogers
7b0d9b7984 Merge "Restore posix_memalign" 2012-08-20 19:35:25 -07:00
Brian Carlstrom
bfc1d97531 Restore posix_memalign
Change-Id: I24e31bcb8b1d8be9375852e76964f09becd11938
2012-08-20 19:25:39 -07:00
Brian Carlstrom
4beae98ae0 am 638b0fd9: am cc1f4acb: Restore posix_memalign
* commit '638b0fd95346c8930aabcdec933e8caa6d6b4c7c':
  Restore posix_memalign
2012-08-20 18:38:50 -07:00
Brian Carlstrom
638b0fd953 am cc1f4acb: Restore posix_memalign
* commit 'cc1f4acbda8f12c2020c2e5f1f8a03221c9ae4e9':
  Restore posix_memalign
2012-08-20 18:36:44 -07:00
Brian Carlstrom
cc1f4acbda Restore posix_memalign
Change-Id: I24e31bcb8b1d8be9375852e76964f09becd11938
2012-08-20 18:28:20 -07:00
Brian Carlstrom
d03266b2b7 am 94c82633: am 76f60e2e: am fe87596a: am c37dcd3d: Merge "Upgrade to dlmalloc 2.8.5."
* commit '94c82633c72acae0eb7a3390167b35eb3008b4ff':
  Upgrade to dlmalloc 2.8.5.
2012-08-20 16:36:05 -07:00
Brian Carlstrom
94c82633c7 am 76f60e2e: am fe87596a: am c37dcd3d: Merge "Upgrade to dlmalloc 2.8.5."
* commit '76f60e2ebd8750c4e4594158745e752b6a10ea0b':
  Upgrade to dlmalloc 2.8.5.
2012-08-20 16:34:22 -07:00
Brian Carlstrom
76f60e2ebd am fe87596a: am c37dcd3d: Merge "Upgrade to dlmalloc 2.8.5."
* commit 'fe87596a5ba5a5b0773b2854f9fce85f49367611':
  Upgrade to dlmalloc 2.8.5.
2012-08-20 16:31:29 -07:00
Brian Carlstrom
fe87596a5b am c37dcd3d: Merge "Upgrade to dlmalloc 2.8.5."
* commit 'c37dcd3d3ab8e32c37ce034b8d1772b4a7b9add9':
  Upgrade to dlmalloc 2.8.5.
2012-08-20 16:29:48 -07:00
Brian Carlstrom
c37dcd3d3a Merge "Upgrade to dlmalloc 2.8.5." 2012-08-20 16:12:33 -07:00
Ian Rogers
999089181e Upgrade to dlmalloc 2.8.5.
Move dlmalloc code to upstream-dlmalloc to make pulling upstream changes
easier.
Declare pvalloc and malloc_usable_size routines present in malloc.h but with
missing implementations. Remove other functions from malloc.h that have
no implementation nor use in Android.

Change-Id: Ia6472ec6cbebc9ad1ef99f4669de9d33fcc2efb4
2012-08-20 14:12:20 -07:00
The Android Automerger
f706b3dfcf merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-20 06:33:38 -07:00
Elliott Hughes
758b1c46fb am 98f26893: am dd0e991c: am 2651d6c6: am 9417a80e: Merge "Always define the 64-bit int types."
* commit '98f26893a6a8811df1fe7e012f6cf8885e6c560e':
  Always define the 64-bit int types.
2012-08-17 17:01:23 -07:00
Elliott Hughes
98f26893a6 am dd0e991c: am 2651d6c6: am 9417a80e: Merge "Always define the 64-bit int types."
* commit 'dd0e991c6a0d4d71f1698fd57608a7d42401b6da':
  Always define the 64-bit int types.
2012-08-17 17:00:03 -07:00
Elliott Hughes
dd0e991c6a am 2651d6c6: am 9417a80e: Merge "Always define the 64-bit int types."
* commit '2651d6c6cbd0fafff83aafb61ab7bc9cbab413d2':
  Always define the 64-bit int types.
2012-08-17 16:58:10 -07:00
Elliott Hughes
2651d6c6cb am 9417a80e: Merge "Always define the 64-bit int types."
* commit '9417a80e48d3bba4bea814178aaa79b905ebab8c':
  Always define the 64-bit int types.
2012-08-17 16:56:14 -07:00
Elliott Hughes
9417a80e48 Merge "Always define the 64-bit int types." 2012-08-17 16:48:14 -07:00
Elliott Hughes
230df050ed am ea5dea8e: am db2903fa: am cbeccc84: am 200de748: Merge "Fix race condition in pthread_create()"
* commit 'ea5dea8edb4217da7798ef29759c2b5d27f7dcfb':
  Fix race condition in pthread_create()
2012-08-17 16:30:02 -07:00
Elliott Hughes
ea5dea8edb am db2903fa: am cbeccc84: am 200de748: Merge "Fix race condition in pthread_create()"
* commit 'db2903fac3d4548de1fd0fda1d3b7460c723282e':
  Fix race condition in pthread_create()
2012-08-17 16:28:00 -07:00
Elliott Hughes
db2903fac3 am cbeccc84: am 200de748: Merge "Fix race condition in pthread_create()"
* commit 'cbeccc849a45ac9adc124a6d1781c1ddc7bad54e':
  Fix race condition in pthread_create()
2012-08-17 16:26:37 -07:00
Elliott Hughes
cbeccc849a am 200de748: Merge "Fix race condition in pthread_create()"
* commit '200de748b91d7638a2c434584abcb3840704494b':
  Fix race condition in pthread_create()
2012-08-17 16:23:53 -07:00
Elliott Hughes
200de748b9 Merge "Fix race condition in pthread_create()" 2012-08-17 16:19:56 -07:00
Jurijs Oniscuks
2932f04832 Fix race condition in pthread_create()
Save thread id to *thread_out before new
thread is allowed to run else there's a
risk that the thread has finished and
been deleted when *thread_out is assigned.

Change-Id: I6b84c61a8df06840877d4ab036f26feace3192d8
2012-08-17 16:18:32 -07:00
Elliott Hughes
6d6731adc0 Always define the 64-bit int types.
These preprocessor tricks have caused trouble for -std=gnu99 and -ansi, and
both netbsd's libc and glibc seem to unconditionally define these types.

Change-Id: Ib8dffa341a8ca88f80d275ba2b7f93a4c910ee32
2012-08-17 14:30:06 -07:00
Elliott Hughes
1f6639a1bf am d060b824: am efd39834: am e5242bfd: am 1771a33d: Merge "Add link.h for all platforms with dl_phdr_info"
* commit 'd060b824dd293bf1ecd7814cd2e75a77186cefcb':
  Add link.h for all platforms with dl_phdr_info
2012-08-17 14:04:52 -07:00
Elliott Hughes
d060b824dd am efd39834: am e5242bfd: am 1771a33d: Merge "Add link.h for all platforms with dl_phdr_info"
* commit 'efd3983446c6574c9662b01f441776cf299c0c80':
  Add link.h for all platforms with dl_phdr_info
2012-08-17 14:03:53 -07:00
Elliott Hughes
efd3983446 am e5242bfd: am 1771a33d: Merge "Add link.h for all platforms with dl_phdr_info"
* commit 'e5242bfdd731a67282389ece515f094d57bb7300':
  Add link.h for all platforms with dl_phdr_info
2012-08-17 14:01:53 -07:00
Elliott Hughes
e5242bfdd7 am 1771a33d: Merge "Add link.h for all platforms with dl_phdr_info"
* commit '1771a33d11a24f1c47b1ef75e3726c5d9e751f5b':
  Add link.h for all platforms with dl_phdr_info
2012-08-17 14:00:11 -07:00
Elliott Hughes
1771a33d11 Merge "Add link.h for all platforms with dl_phdr_info" 2012-08-17 13:54:43 -07:00
Pavel Chupin
b7beb69075 Add link.h for all platforms with dl_phdr_info
This header is used on bionic build and should be propagated into
sysroot on toolchain rebuild. Discussion re. this header is here:
http://gcc.gnu.org/ml/gcc-patches/2012-08/msg00936.html

It is available already in mips NDK platforms:
development/ndk/platforms/android-9/arch-mips/include/link.h

Change-Id: I39ff467cdac9f448e31c11ee3e14a6200e82ab57
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2012-08-17 12:44:23 -07:00
Henrik Engström
ce5ba8bfcd Added missing cache failed notification
Added a missing call to _resolv_cache_query_failed for another fail
case where it was missing (it doesn't go through the error handling
under the "fail" label). This missing notification caused requests to
have to wait for timeout instead of beeing notified on some failed
requests.

Change-Id: I904d60269c59b926784e3a397d2a860329f55142
2012-08-17 09:18:47 +02:00
Joe Onorato
342e174b24 am 947f2e61: am 28ae6f5d: am cefb93b6: am 6c98cdb1: Merge "Don\'t over-generalize makefiles. Host modules always build. This isn\'t needed on eng builds."
* commit '947f2e610a89931b20a4ddd678e89df12c76e058':
  Don't over-generalize makefiles.  Host modules always build. This isn't needed on eng builds.
2012-08-17 00:18:26 -07:00
Joe Onorato
947f2e610a am 28ae6f5d: am cefb93b6: am 6c98cdb1: Merge "Don\'t over-generalize makefiles. Host modules always build. This isn\'t needed on eng builds."
* commit '28ae6f5dfd024dd3f860b134ebed56a0248a1097':
  Don't over-generalize makefiles.  Host modules always build. This isn't needed on eng builds.
2012-08-17 00:14:21 -07:00
Joe Onorato
28ae6f5dfd am cefb93b6: am 6c98cdb1: Merge "Don\'t over-generalize makefiles. Host modules always build. This isn\'t needed on eng builds."
* commit 'cefb93b632fc5a65bf7620095155cc1c314e29f2':
  Don't over-generalize makefiles.  Host modules always build. This isn't needed on eng builds.
2012-08-17 00:11:56 -07:00
Joe Onorato
cefb93b632 am 6c98cdb1: Merge "Don\'t over-generalize makefiles. Host modules always build. This isn\'t needed on eng builds."
* commit '6c98cdb1924afd3e71d39904557933fa10adaebf':
  Don't over-generalize makefiles.  Host modules always build. This isn't needed on eng builds.
2012-08-16 23:50:35 -07:00
Joe Onorato
6c98cdb192 Merge "Don't over-generalize makefiles. Host modules always build. This isn't needed on eng builds." 2012-08-16 23:37:50 -07:00
Joe Onorato
7b841f3b4a Don't over-generalize makefiles. Host modules always build. This isn't needed on eng builds.
Change-Id: I5821ced7a8a9042fd2094204e07470d8002263ca
2012-08-16 22:36:36 -07:00
The Android Open Source Project
cd6fd2f14d am 89a4090e: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '89a4090ecae61053e3ac6c9b96a8ee469495cf01':
2012-08-16 19:11:21 -07:00
The Android Open Source Project
89a4090eca Reconcile with jb-mr1-release - do not merge
Change-Id: I56a0568d05e01d6ca908c97af3036ffe5a057df0
2012-08-16 19:09:40 -07:00
Elliott Hughes
4b027b381f am 12911624: am a7d8f3d5: am c80ca54f: am 60ef95e1: Merge "Enhance getcwd(3) to handle NULL like glibc."
* commit '129116241022d51ca915ef1d6b94d131a3f5569f':
  Enhance getcwd(3) to handle NULL like glibc.
2012-08-16 17:09:35 -07:00
Elliott Hughes
1291162410 am a7d8f3d5: am c80ca54f: am 60ef95e1: Merge "Enhance getcwd(3) to handle NULL like glibc."
* commit 'a7d8f3d50e6b0858b3b6494d772167286cdeb986':
  Enhance getcwd(3) to handle NULL like glibc.
2012-08-16 17:07:18 -07:00
Elliott Hughes
a7d8f3d50e am c80ca54f: am 60ef95e1: Merge "Enhance getcwd(3) to handle NULL like glibc."
* commit 'c80ca54f3cd2d7e20770e286f4478fb589742478':
  Enhance getcwd(3) to handle NULL like glibc.
2012-08-16 17:05:40 -07:00
Elliott Hughes
c80ca54f3c am 60ef95e1: Merge "Enhance getcwd(3) to handle NULL like glibc."
* commit '60ef95e1c1b171635adb4d11289347674b1b8987':
  Enhance getcwd(3) to handle NULL like glibc.
2012-08-16 17:04:11 -07:00
Elliott Hughes
60ef95e1c1 Merge "Enhance getcwd(3) to handle NULL like glibc." 2012-08-16 16:58:34 -07:00
Elliott Hughes
04a83a48ed Enhance getcwd(3) to handle NULL like glibc.
Bug: http://code.google.com/p/android/issues/detail?id=36085
Change-Id: I960a1b585887eb66176c61d29c5c61c239a4003f
2012-08-16 15:59:12 -07:00
Elliott Hughes
0a14d9f5c8 am ca82e1f3: am 820ad428: am 74438bb2: am 449d4634: Merge "bionic: add macro protection for MALLOC_ALIGNMENT"
* commit 'ca82e1f3d17b57b1d5bbf0527cae58be1861e9ae':
  bionic: add macro protection for MALLOC_ALIGNMENT
2012-08-16 14:28:52 -07:00
Elliott Hughes
ca82e1f3d1 am 820ad428: am 74438bb2: am 449d4634: Merge "bionic: add macro protection for MALLOC_ALIGNMENT"
* commit '820ad4283d71c4f2303f80d8ccbe6c90a6ec5407':
  bionic: add macro protection for MALLOC_ALIGNMENT
2012-08-16 14:27:28 -07:00
Elliott Hughes
820ad4283d am 74438bb2: am 449d4634: Merge "bionic: add macro protection for MALLOC_ALIGNMENT"
* commit '74438bb22505b55ec72224932ae9982fbf9b4b65':
  bionic: add macro protection for MALLOC_ALIGNMENT
2012-08-16 14:23:56 -07:00
Elliott Hughes
74438bb225 am 449d4634: Merge "bionic: add macro protection for MALLOC_ALIGNMENT"
* commit '449d4634bea0ff8f6b29a2826871279dd654f941':
  bionic: add macro protection for MALLOC_ALIGNMENT
2012-08-16 12:27:47 -07:00
Elliott Hughes
449d4634be Merge "bionic: add macro protection for MALLOC_ALIGNMENT" 2012-08-16 12:09:13 -07:00
Jin Wei
9862f5e08b bionic: add macro protection for MALLOC_ALIGNMENT
In previous commit: 2fd81ef7, .mk file has been modified to
configure MALLOC_ALIGNMENT dynamicly according to board config.
Add the missing macor protection here.

Change-Id: I703cca2ce0504ab3e11aab226b2c61fcc0c6afa1
Author: Jin Wei <wei.a.jin@intel.com>
Signed-off-by: Xiaokang Qin <xiaokang.qin@intel.com>
Signed-off-by: Beare, Bruce J <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
2012-08-16 12:08:36 -07:00
Scott Anderson
4628d2f6bb am cc8165ae: am 09d9dd3a: Merge "Add clean kernel header for uhid." into jb-mr1-dev
* commit 'cc8165aea50294c6a86ad456967a7a741ac85a65':
  Add clean kernel header for uhid.
2012-08-16 12:07:53 -07:00
Scott Anderson
cc8165aea5 am 09d9dd3a: Merge "Add clean kernel header for uhid." into jb-mr1-dev
* commit '09d9dd3acdf74630eb7eb6896007e803085f45c6':
  Add clean kernel header for uhid.
2012-08-16 12:05:44 -07:00
Scott Anderson
09d9dd3acd Merge "Add clean kernel header for uhid." into jb-mr1-dev 2012-08-16 12:03:25 -07:00
Scott Anderson
52bf2d5659 Add clean kernel header for uhid.
The original kernel header was submitted in this change:

  commit 45b515c106161bb3b00d2c097504b9d44505f2d9
  Author: Scott Anderson <saa@android.com>
  Date:   Wed Aug 15 14:52:27 2012 -0700

      Add uhid original header.

      This header was cherry-picked from the upstream series that ends
      with patch adefb69b1b94df29ea2df05cd838c0e032b2c473.

      Change-Id: If516e41b6b14754e7feebdf062461dd38a31900a
      Signed-off-by: Scott Anderson <saa@android.com>

Change-Id: I088a0df4449df859835f8267d0d2e6cd4ed3c478
Signed-off-by: Scott Anderson <saa@android.com>
2012-08-16 11:56:11 -07:00
The Android Automerger
e20afb140c merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-16 06:33:16 -07:00
Elliott Hughes
26145cfc18 am 949d6faa: am a626bbdb: am 4af9141c: am ae728099: Merge "enable clone system call for x86"
* commit '949d6faa96e25170293d2a9ebe6f76cc91b77a6e':
  enable clone system call for x86
2012-08-15 17:26:44 -07:00
Elliott Hughes
949d6faa96 am a626bbdb: am 4af9141c: am ae728099: Merge "enable clone system call for x86"
* commit 'a626bbdb361539d6667932027ea9ffa26ef1faf4':
  enable clone system call for x86
2012-08-15 17:25:35 -07:00
Elliott Hughes
a626bbdb36 am 4af9141c: am ae728099: Merge "enable clone system call for x86"
* commit '4af9141c5cc0989df6a1efcb10b2cfd484f2d9d2':
  enable clone system call for x86
2012-08-15 17:24:21 -07:00
Elliott Hughes
4af9141c5c am ae728099: Merge "enable clone system call for x86"
* commit 'ae7280994e7845037b667fd6ebdcb6f299ba1aab':
  enable clone system call for x86
2012-08-15 17:22:50 -07:00
Elliott Hughes
1d16b89289 am 31041a01: am 29af938c: am ab8850f7: am 07cd1125: Merge "Fix comment typos."
* commit '31041a0138d62879257d6980abd1e006c299752b':
  Fix comment typos.
2012-08-15 17:11:48 -07:00
Elliott Hughes
b8d2695c82 am cdbd3406: am 4d63f33c: am 76aad1d2: am e1cd69a7: Merge "Regenerate all NOTICE files with the latest version of the script."
* commit 'cdbd3406f51d7f21326fe99df21e48a9191dddc1':
  Regenerate all NOTICE files with the latest version of the script.
2012-08-15 17:11:47 -07:00
Elliott Hughes
31041a0138 am 29af938c: am ab8850f7: am 07cd1125: Merge "Fix comment typos."
* commit '29af938cbd9b898c92f44c022dc7f5d3ab9782a7':
  Fix comment typos.
2012-08-15 17:09:39 -07:00
Elliott Hughes
cdbd3406f5 am 4d63f33c: am 76aad1d2: am e1cd69a7: Merge "Regenerate all NOTICE files with the latest version of the script."
* commit '4d63f33cdc74c340c13b96143833f669835764f2':
  Regenerate all NOTICE files with the latest version of the script.
2012-08-15 17:09:38 -07:00
Elliott Hughes
29af938cbd am ab8850f7: am 07cd1125: Merge "Fix comment typos."
* commit 'ab8850f7e2b79914af4cf83816e9a263b9e6dec3':
  Fix comment typos.
2012-08-15 17:08:01 -07:00
Elliott Hughes
4d63f33cdc am 76aad1d2: am e1cd69a7: Merge "Regenerate all NOTICE files with the latest version of the script."
* commit '76aad1d2746f62aaaacdf717b4f51fa45560521d':
  Regenerate all NOTICE files with the latest version of the script.
2012-08-15 17:07:59 -07:00
Elliott Hughes
ab8850f7e2 am 07cd1125: Merge "Fix comment typos."
* commit '07cd11251f52ff8a8a98dba795f69aaa75199473':
  Fix comment typos.
2012-08-15 17:06:53 -07:00
Elliott Hughes
76aad1d274 am e1cd69a7: Merge "Regenerate all NOTICE files with the latest version of the script."
* commit 'e1cd69a708d30fbc3b9e0e8d4db67f67fc123b65':
  Regenerate all NOTICE files with the latest version of the script.
2012-08-15 17:06:51 -07:00
Elliott Hughes
ae7280994e Merge "enable clone system call for x86" 2012-08-15 17:05:47 -07:00
Jin Wei
22d366cc09 enable clone system call for x86
Add __bionic_clone function for x86, which will be
used for clone system call.

Change-Id: I889dc9bf4b7ebb4358476e17e6f3233e26491f4d
Signed-off-by: Jin Wei <wei.a.jin@intel.com>
Signed-off-by: Xiaokang Qin <xiaokang.qin@intel.com>
Signed-off-by: Beare, Bruce J <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 51414
2012-08-15 17:04:50 -07:00
Elliott Hughes
07cd11251f Merge "Fix comment typos." 2012-08-15 16:59:21 -07:00
Elliott Hughes
105bc26fa6 Fix comment typos.
Change-Id: I8feeec1ee9935a6d6baebe57f1c0043ff90ff94f
2012-08-15 16:56:00 -07:00
Elliott Hughes
e1cd69a708 Merge "Regenerate all NOTICE files with the latest version of the script." 2012-08-15 16:51:56 -07:00
Elliott Hughes
0681b2e477 am f53c75e5: am 2e3756b4: am 9b3bbcda: am fe43c768: Merge "Switch to the current NetBSD regex implementation."
* commit 'f53c75e513cb088d712badc32b89a8792a329d63':
  Switch to the current NetBSD regex implementation.
2012-08-15 16:03:03 -07:00
Elliott Hughes
f53c75e513 am 2e3756b4: am 9b3bbcda: am fe43c768: Merge "Switch to the current NetBSD regex implementation."
* commit '2e3756b4d36c9b7f6a892b87757d41b3201b9773':
  Switch to the current NetBSD regex implementation.
2012-08-15 16:01:22 -07:00
Elliott Hughes
2e3756b4d3 am 9b3bbcda: am fe43c768: Merge "Switch to the current NetBSD regex implementation."
* commit '9b3bbcda8478a31fa2c3865e0bd8cb3011dfc26e':
  Switch to the current NetBSD regex implementation.
2012-08-15 15:59:44 -07:00
Elliott Hughes
9b3bbcda84 am fe43c768: Merge "Switch to the current NetBSD regex implementation."
* commit 'fe43c768ec803a1febde0424bb5e69c343dd7ae9':
  Switch to the current NetBSD regex implementation.
2012-08-15 15:58:39 -07:00
Elliott Hughes
32dbc03c73 Regenerate all NOTICE files with the latest version of the script.
This sorts every entry, so we should have more stability and fewer
merge conflicts in future.

Change-Id: Ifc5347dc53352da22c82d41ca59b483966fcfc6b
2012-08-15 15:43:13 -07:00
Elliott Hughes
fe43c768ec Merge "Switch to the current NetBSD regex implementation." 2012-08-15 15:39:49 -07:00
Elliott Hughes
cc213f871b Switch to the current NetBSD regex implementation.
Change-Id: If32b28dd85d6a7ab8957ab81d19fa4c0de9499d5
2012-08-15 15:39:11 -07:00
The Android Open Source Project
c05ca5f058 am e24cde44: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'e24cde4406792ee57f5dbfaa1efc35131f289063':
2012-08-15 08:29:17 -07:00
The Android Open Source Project
e24cde4406 Reconcile with jb-mr1-release - do not merge
Change-Id: I2f6d32a6bc10f17d85930b21c2ac55c91d5e252e
2012-08-15 08:26:11 -07:00
The Android Automerger
46bb2a222e merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-15 06:33:26 -07:00
Elliott Hughes
cc9f4d56c0 am ff45d5cd: am 82259117: am 008a0a5d: am 53493a9b: Merge "Sort NOTICE entries."
* commit 'ff45d5cdbfc4117d69fc688f12ec251297eb8751':
  Sort NOTICE entries.
2012-08-14 15:47:31 -07:00
Elliott Hughes
ff45d5cdbf am 82259117: am 008a0a5d: am 53493a9b: Merge "Sort NOTICE entries."
* commit '82259117753adffdab3ce74efb12d30a5289ad2b':
  Sort NOTICE entries.
2012-08-14 15:46:26 -07:00
Elliott Hughes
8225911775 am 008a0a5d: am 53493a9b: Merge "Sort NOTICE entries."
* commit '008a0a5d50965f73d5954607a0b17b95a7f1fd0e':
  Sort NOTICE entries.
2012-08-14 15:43:57 -07:00
Iliyan Malchev
422bb8b5c4 am 912dd712: am df88d88f: Merge changes I2e8af44e,Ie9250a0e into jb-mr1-dev
* commit '912dd71259959a259478465296438e83d0ad8e64':
  update msm_mdp.h header to support vsync
  update processed msm_camera.h and msm_isp.h
2012-08-14 15:43:18 -07:00
Elliott Hughes
008a0a5d50 am 53493a9b: Merge "Sort NOTICE entries."
* commit '53493a9b26e9fb665de590abf3502af94eaf3f44':
  Sort NOTICE entries.
2012-08-14 15:42:36 -07:00
Iliyan Malchev
912dd71259 am df88d88f: Merge changes I2e8af44e,Ie9250a0e into jb-mr1-dev
* commit 'df88d88f56f37cdf75ab03c6b68a42010d9ac6c7':
  update msm_mdp.h header to support vsync
  update processed msm_camera.h and msm_isp.h
2012-08-14 15:41:38 -07:00
Iliyan Malchev
df88d88f56 Merge changes I2e8af44e,Ie9250a0e into jb-mr1-dev
* changes:
  update msm_mdp.h header to support vsync
  update processed msm_camera.h and msm_isp.h
2012-08-14 15:40:21 -07:00
Elliott Hughes
53493a9b26 Merge "Sort NOTICE entries." 2012-08-14 15:31:18 -07:00
Elliott Hughes
ea4900b89a am 0a3f66e9: am fdbecf3b: am 63696738: am b6a97196: Merge "More cleanup."
* commit '0a3f66e9a0ef47dc2f751292a69434405221ef90':
  More cleanup.
2012-08-14 15:14:56 -07:00
Elliott Hughes
0a3f66e9a0 am fdbecf3b: am 63696738: am b6a97196: Merge "More cleanup."
* commit 'fdbecf3b5a16f8e35e1ad67ec9c807eb66e2ac3b':
  More cleanup.
2012-08-14 15:13:10 -07:00
Elliott Hughes
fdbecf3b5a am 63696738: am b6a97196: Merge "More cleanup."
* commit '63696738e5d0684fb1e769c541fba2e552c5110a':
  More cleanup.
2012-08-14 15:10:51 -07:00
Elliott Hughes
63696738e5 am b6a97196: Merge "More cleanup."
* commit 'b6a971962acdf2684fd98658ec6fe6aa9952d84b':
  More cleanup.
2012-08-14 15:08:38 -07:00
Elliott Hughes
261e2232c1 Sort NOTICE entries.
Also make sure we get the whole of any copyright header, in case
there's text before the "Copyright" line.

Change-Id: Iabcc5e0931a39c0107b833539fec7c5a3d134592
2012-08-14 15:04:05 -07:00
Elliott Hughes
b6a971962a Merge "More cleanup." 2012-08-14 15:02:40 -07:00
Elliott Hughes
bedfe38b8b More cleanup.
Make more stuff static, remove some dead code, and fix a few typos.

Change-Id: I010b0eadeaf61e2899c37014ad1e7082c70bd510
2012-08-14 14:07:59 -07:00
Naseer Ahmed
056b4bc499 update msm_mdp.h header to support vsync
Change-Id: I2e8af44e430ff4955615d166bd25d7a2102ccc0f
2012-08-14 12:51:42 -07:00
Ajay Dudani
77b25702ba update processed msm_camera.h and msm_isp.h
Change-Id: Ie9250a0ef888a2d1ba0b736b19fede369daeef84
2012-08-14 12:51:42 -07:00
Elliott Hughes
8af9d9a7d0 am 7bb37492: am 89a35435: am 16a0cbaa: am b7c6991c: Merge "Update MS_ mount flags, define unshare() syscall."
* commit '7bb37492cc371e9bbca68406af1b94ae1348fe3c':
  Update MS_ mount flags, define unshare() syscall.
2012-08-14 12:33:05 -07:00
Elliott Hughes
7bb37492cc am 89a35435: am 16a0cbaa: am b7c6991c: Merge "Update MS_ mount flags, define unshare() syscall."
* commit '89a3543568ffedb54473f961f36f17d211d9c7e1':
  Update MS_ mount flags, define unshare() syscall.
2012-08-14 12:31:15 -07:00
Elliott Hughes
89a3543568 am 16a0cbaa: am b7c6991c: Merge "Update MS_ mount flags, define unshare() syscall."
* commit '16a0cbaa83dc653a5b6a0fa62088f08cdfa4dedc':
  Update MS_ mount flags, define unshare() syscall.
2012-08-14 12:29:01 -07:00
Elliott Hughes
16a0cbaa83 am b7c6991c: Merge "Update MS_ mount flags, define unshare() syscall."
* commit 'b7c6991c9af3882bd13cbf6bc42da85c884aa5f5':
  Update MS_ mount flags, define unshare() syscall.
2012-08-14 12:27:44 -07:00
Elliott Hughes
6bdc30e923 am 028ed539: am dc320d99: am 82b69fcb: am b9c6854c: Merge "linker: avoid clobbering the .dynamic section of shared libs"
* commit '028ed539ddbe577687ac9778382c98aab3bf279f':
  linker: avoid clobbering the .dynamic section of shared libs
2012-08-14 12:21:21 -07:00
Elliott Hughes
a10b277de2 am bfcd5525: am b6d6ec53: am 370a7094: am c50e0197: Merge "Switch to upstream NetBSD tdelete/tfind/tsearch."
* commit 'bfcd55250058e927e0c6d0b94337c89fc2d86fa2':
  Switch to upstream NetBSD tdelete/tfind/tsearch.
2012-08-14 12:21:20 -07:00
Elliott Hughes
028ed539dd am dc320d99: am 82b69fcb: am b9c6854c: Merge "linker: avoid clobbering the .dynamic section of shared libs"
* commit 'dc320d99f1e09c0e42fc86f3cb28c15b77d7701b':
  linker: avoid clobbering the .dynamic section of shared libs
2012-08-14 12:17:27 -07:00
Elliott Hughes
bfcd552500 am b6d6ec53: am 370a7094: am c50e0197: Merge "Switch to upstream NetBSD tdelete/tfind/tsearch."
* commit 'b6d6ec5326a016e60d2bd82edf857aaec6d5ce95':
  Switch to upstream NetBSD tdelete/tfind/tsearch.
2012-08-14 12:17:26 -07:00
Elliott Hughes
b7c6991c9a Merge "Update MS_ mount flags, define unshare() syscall." 2012-08-14 12:14:29 -07:00
Elliott Hughes
dc320d99f1 am 82b69fcb: am b9c6854c: Merge "linker: avoid clobbering the .dynamic section of shared libs"
* commit '82b69fcbb3cc94bcde82c72d5c66fb3b504cdb6e':
  linker: avoid clobbering the .dynamic section of shared libs
2012-08-14 12:14:13 -07:00
Elliott Hughes
b6d6ec5326 am 370a7094: am c50e0197: Merge "Switch to upstream NetBSD tdelete/tfind/tsearch."
* commit '370a70948ad56046f685ffda34ead8ae88dcad2a':
  Switch to upstream NetBSD tdelete/tfind/tsearch.
2012-08-14 12:14:12 -07:00
Elliott Hughes
82b69fcbb3 am b9c6854c: Merge "linker: avoid clobbering the .dynamic section of shared libs"
* commit 'b9c6854cd9d5286f991aec66be3a8a57f5e3e7be':
  linker: avoid clobbering the .dynamic section of shared libs
2012-08-14 12:11:54 -07:00
Elliott Hughes
370a70948a am c50e0197: Merge "Switch to upstream NetBSD tdelete/tfind/tsearch."
* commit 'c50e019734fb379e2efc1d50e188dd51cf085b96':
  Switch to upstream NetBSD tdelete/tfind/tsearch.
2012-08-14 12:11:53 -07:00
Jeff Sharkey
0febe091a5 am 21f7ef9e: am d8450043: Merge "Update MS_ mount flags, define unshare() syscall." into jb-mr1-dev
* commit '21f7ef9eb269f75d7c291b4c574eabc865bf4362':
  Update MS_ mount flags, define unshare() syscall.
2012-08-14 12:11:01 -07:00
Jeff Sharkey
74c0464006 Update MS_ mount flags, define unshare() syscall.
(cherry-pick of 82393decdfc6b0383054fb5d2f54725bbee88b8c.)

Bug: 6925012
Change-Id: I4f962d8975ad62ff4b9983150f9e481796092b9d
2012-08-14 12:09:25 -07:00
Elliott Hughes
b9c6854cd9 Merge "linker: avoid clobbering the .dynamic section of shared libs" 2012-08-14 12:07:18 -07:00
Jeff Sharkey
21f7ef9eb2 am d8450043: Merge "Update MS_ mount flags, define unshare() syscall." into jb-mr1-dev
* commit 'd8450043b060358e1235a1f052d63aa4527b2400':
  Update MS_ mount flags, define unshare() syscall.
2012-08-14 12:06:36 -07:00
Jeff Sharkey
d8450043b0 Merge "Update MS_ mount flags, define unshare() syscall." into jb-mr1-dev 2012-08-14 12:05:46 -07:00
Elliott Hughes
c50e019734 Merge "Switch to upstream NetBSD tdelete/tfind/tsearch." 2012-08-14 11:56:30 -07:00
Jeff Sharkey
82393decdf Update MS_ mount flags, define unshare() syscall.
Bug: 6925012
Change-Id: I4ad79b4bccb7737d4dc704476cdb5795d124f53e
2012-08-14 11:45:12 -07:00
Ard Biesheuvel
12c78bbded linker: avoid clobbering the .dynamic section of shared libs
This patch removes the DT_NEEDED hack which stores pointers
to soinfo structs in the .dynamic section of the library
being loaded.

Instead, it caches the soinfo struct pointers on the stack
during relocation time. After relocation time, i.e. when
calling constructors and destructors of the shared library
and its dependencies, uncached access is used instead,
doing lookups using the string table entries pointed to by
the DT_NEEDED entries.

By removing this hack, it is no longer needed to undo the
PT_GNURELRO protection, i.e., all non-writable mappings
can remain non-writable during their entire lifespan.

Even though, strictly speaking, the algorithmic complexity
has increased somewhat, the real-world adverse effect
is negligible on the systems I have tested.

Change-Id: I2361502560b96b5878f7f94a8e8a215350d70d64
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
2012-08-14 19:38:28 +02:00
The Android Automerger
59b222ac75 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-14 07:06:10 -07:00
Elliott Hughes
409302f0f9 Switch to upstream NetBSD tdelete/tfind/tsearch.
tdestroy is a GNU extension, so that stays.

Change-Id: Iedebaff25ea7e92b1ab1dd4440da12b67b99aa40
2012-08-13 17:41:49 -07:00
Elliott Hughes
d52075bd97 am 2bc1cade: am 93a9d534: am d544bdfa: am 54655eaf: Merge "Fix nice..."
* commit '2bc1cadeff4b7d41c889b8f1b965028ec575bed6':
  Fix nice...
2012-08-13 17:16:55 -07:00
Elliott Hughes
2bc1cadeff am 93a9d534: am d544bdfa: am 54655eaf: Merge "Fix nice..."
* commit '93a9d53485677fb5b897a127b27e6bdbc40911c7':
  Fix nice...
2012-08-13 17:15:40 -07:00
Elliott Hughes
93a9d53485 am d544bdfa: am 54655eaf: Merge "Fix nice..."
* commit 'd544bdfac8da8aa7052aab47468acb3baf8e461a':
  Fix nice...
2012-08-13 17:14:40 -07:00
Elliott Hughes
d544bdfac8 am 54655eaf: Merge "Fix nice..."
* commit '54655eaf92ca91bfe2fa293896059a181e27b6eb':
  Fix nice...
2012-08-13 17:12:48 -07:00
Elliott Hughes
54655eaf92 Merge "Fix nice..." 2012-08-13 16:56:18 -07:00
Elliott Hughes
3d2d448af1 Fix nice...
...by switching to the NetBSD implementation.

Change-Id: I562b27b237a24ded95804035cc322c7bff12ff59
2012-08-13 16:38:29 -07:00
Elliott Hughes
50b4523380 am aa29740c: am 69fc1522: am aa6c8994: am b66bc514: Merge "Clean up warnings in stubs.cpp."
* commit 'aa29740ce252113071f96872b7b99c8528bd1637':
  Clean up warnings in stubs.cpp.
2012-08-13 16:28:44 -07:00
Elliott Hughes
aa29740ce2 am 69fc1522: am aa6c8994: am b66bc514: Merge "Clean up warnings in stubs.cpp."
* commit '69fc1522a30df39fcf115f09f7665b590677ba27':
  Clean up warnings in stubs.cpp.
2012-08-13 16:27:05 -07:00
Elliott Hughes
69fc1522a3 am aa6c8994: am b66bc514: Merge "Clean up warnings in stubs.cpp."
* commit 'aa6c8994b7c40ea637d60fa4413928e62b5d814a':
  Clean up warnings in stubs.cpp.
2012-08-13 16:24:38 -07:00
Elliott Hughes
aa6c8994b7 am b66bc514: Merge "Clean up warnings in stubs.cpp."
* commit 'b66bc51423a1f3969d0e70e035126ac4c4898b50':
  Clean up warnings in stubs.cpp.
2012-08-13 16:22:43 -07:00
Elliott Hughes
b66bc51423 Merge "Clean up warnings in stubs.cpp." 2012-08-13 16:17:55 -07:00
Elliott Hughes
71c9a05614 am c37b31d8: am eab7bddd: am ca09412a: am 222eec2e: Merge "Handle naming for system uids running as secondary users"
* commit 'c37b31d848050b6bc534984556641f738fa0324b':
  Handle naming for system uids running as secondary users
2012-08-13 16:10:32 -07:00
Elliott Hughes
66c033868f am c64c1b49: am ad8ff472: am c1eb7619: am 440e417d: Merge "Add dependencies on all the makefiles."
* commit 'c64c1b49fd5c51b1b6e87d88b233d23fa172d372':
  Add dependencies on all the makefiles.
2012-08-13 16:10:31 -07:00
Elliott Hughes
4a5ab7a191 am 141a3b10: am cfd0345f: am 35dcf19b: am 66fba009: Merge "Update arch-mips/asm/unistd.h for the newer syscalls"
* commit '141a3b109c32acb0d7279ea85706db781bfc0594':
  Update arch-mips/asm/unistd.h for the newer syscalls
2012-08-13 16:10:30 -07:00
Elliott Hughes
de727caee2 Clean up warnings in stubs.cpp.
Switch to C++ to get extra warnings, and format the code Google style.

Change-Id: Ifc0131bf297a6ee8a8a6b8d049a02518b0b1a4b7
2012-08-13 16:10:19 -07:00
Elliott Hughes
c37b31d848 am eab7bddd: am ca09412a: am 222eec2e: Merge "Handle naming for system uids running as secondary users"
* commit 'eab7bddd9eb585ce3992314c9e411b909c05e87b':
  Handle naming for system uids running as secondary users
2012-08-13 16:07:46 -07:00
Elliott Hughes
c64c1b49fd am ad8ff472: am c1eb7619: am 440e417d: Merge "Add dependencies on all the makefiles."
* commit 'ad8ff472b6d80561629db4826452fddf3007bdce':
  Add dependencies on all the makefiles.
2012-08-13 16:07:45 -07:00
Elliott Hughes
141a3b109c am cfd0345f: am 35dcf19b: am 66fba009: Merge "Update arch-mips/asm/unistd.h for the newer syscalls"
* commit 'cfd0345fe056cf945f5b6f61d4316536781697b4':
  Update arch-mips/asm/unistd.h for the newer syscalls
2012-08-13 16:07:44 -07:00
Elliott Hughes
eab7bddd9e am ca09412a: am 222eec2e: Merge "Handle naming for system uids running as secondary users"
* commit 'ca09412a1f13c6e2df72c1efccdad1d9960ba99b':
  Handle naming for system uids running as secondary users
2012-08-13 16:03:27 -07:00
Elliott Hughes
ad8ff472b6 am c1eb7619: am 440e417d: Merge "Add dependencies on all the makefiles."
* commit 'c1eb76198ec81802f69b52a8c6fbf97765d46f53':
  Add dependencies on all the makefiles.
2012-08-13 16:03:26 -07:00
Elliott Hughes
cfd0345fe0 am 35dcf19b: am 66fba009: Merge "Update arch-mips/asm/unistd.h for the newer syscalls"
* commit '35dcf19b2bcf388cda7f4c9baacb159c15c9b03f':
  Update arch-mips/asm/unistd.h for the newer syscalls
2012-08-13 16:03:16 -07:00
Elliott Hughes
ca09412a1f am 222eec2e: Merge "Handle naming for system uids running as secondary users"
* commit '222eec2ecfc4afcbd5cf0f08e16f69f6c3c424fa':
  Handle naming for system uids running as secondary users
2012-08-13 15:00:55 -07:00
Elliott Hughes
222eec2ecf Merge "Handle naming for system uids running as secondary users" 2012-08-13 14:45:27 -07:00
Elliott Hughes
c1eb76198e am 440e417d: Merge "Add dependencies on all the makefiles."
* commit '440e417d5f8fb3ab3b5296eaea3720be52086730':
  Add dependencies on all the makefiles.
2012-08-13 14:30:35 -07:00
Amith Yamasani
bf9441efb8 Handle naming for system uids running as secondary users
Allow naming such as u1_system, u2_radio, u2_media.
Forward and reverse mapping for the above.

(cherry-pick of c60a0027b1ef3bc4929d2023e7083fbce12fafe7.)

Change-Id: I46eeb23fee4f57b2907640570504123d3ce99985
2012-08-13 14:19:16 -07:00
Elliott Hughes
440e417d5f Merge "Add dependencies on all the makefiles." 2012-08-13 14:12:02 -07:00
Elliott Hughes
ae5c64413b Add dependencies on all the makefiles.
This should help prevent broken builds next time I'm messing with
assembler/compiler/linker flags...

Change-Id: I30f15a3ce3c3f3c60cad7bc59aaba9f42d792224
2012-08-13 14:06:05 -07:00
Amith Yamasani
79f3698f39 am c6c26a08: am ca7ee8a9: Merge "Handle naming for system uids running as secondary users" into jb-mr1-dev
* commit 'c6c26a08c8ffd431824e13c40328c35394fb4148':
  Handle naming for system uids running as secondary users
2012-08-13 13:53:55 -07:00
Amith Yamasani
c6c26a08c8 am ca7ee8a9: Merge "Handle naming for system uids running as secondary users" into jb-mr1-dev
* commit 'ca7ee8a9e50d99f3d014a523460191b1e67e9c9f':
  Handle naming for system uids running as secondary users
2012-08-13 13:52:07 -07:00
Amith Yamasani
ca7ee8a9e5 Merge "Handle naming for system uids running as secondary users" into jb-mr1-dev 2012-08-13 13:49:51 -07:00
Amith Yamasani
c60a0027b1 Handle naming for system uids running as secondary users
Allow naming such as u1_system, u2_radio, u2_media.
Forward and reverse mapping for the above.

Change-Id: Iebe6e5702fc1ed83aa67769a12f693c1be7968ed
2012-08-13 13:35:31 -07:00
Elliott Hughes
35dcf19b2b am 66fba009: Merge "Update arch-mips/asm/unistd.h for the newer syscalls"
* commit '66fba00991f03d07c72f809d033b88748f839bda':
  Update arch-mips/asm/unistd.h for the newer syscalls
2012-08-13 12:47:13 -07:00
Elliott Hughes
66fba00991 Merge "Update arch-mips/asm/unistd.h for the newer syscalls" 2012-08-13 12:42:01 -07:00
Raghu Gandham
7d9f1c46bb Update arch-mips/asm/unistd.h for the newer syscalls
Change-Id: Ie292c091cbf4b972e1b5faa7d779645c6e4442f0
2012-08-13 11:54:53 -07:00
Elliott Hughes
5dcf871abb am 94d7f701: am 71c0366f: am e135d7f3: am a61ac525: Merge "Fix module constructor order."
* commit '94d7f701d1b5cda0621eb46160e11ccbeb85cdd3':
  Fix module constructor order.
2012-08-13 11:15:25 -07:00
Elliott Hughes
94d7f701d1 am 71c0366f: am e135d7f3: am a61ac525: Merge "Fix module constructor order."
* commit '71c0366fc7f5436c6cffc2f43637f487dd734444':
  Fix module constructor order.
2012-08-13 11:13:18 -07:00
Elliott Hughes
71c0366fc7 am e135d7f3: am a61ac525: Merge "Fix module constructor order."
* commit 'e135d7f305c00272ce1544b8243f999bb99979ec':
  Fix module constructor order.
2012-08-13 11:11:58 -07:00
Elliott Hughes
e135d7f305 am a61ac525: Merge "Fix module constructor order."
* commit 'a61ac5257bea15d6cbfc640c03f18c2fb808b139':
  Fix module constructor order.
2012-08-13 11:10:32 -07:00
Elliott Hughes
a61ac5257b Merge "Fix module constructor order." 2012-08-13 11:06:53 -07:00
Evgeniy Stepanov
9181a5dcfe Fix module constructor order.
.preinit_array goes before the constructors of LD_PRELOAD-ed libraries.

Change-Id: I1af32ce29eaf3ca4351ae8a0f7f5da5165853216
2012-08-13 11:05:47 -07:00
Nick Kralevich
f574ce603a am 34e52129: am 19b10419: am 89fd9ecc: am 20b94c0c: Merge "linker: don\'t perform unnecessary mprotects"
* commit '34e5212961cb64cf690289bc94c59b3b6245694c':
  linker: don't perform unnecessary mprotects
2012-08-13 09:51:48 -07:00
Nick Kralevich
34e5212961 am 19b10419: am 89fd9ecc: am 20b94c0c: Merge "linker: don\'t perform unnecessary mprotects"
* commit '19b104193067a42806dd291a20af29ebbd1c37f0':
  linker: don't perform unnecessary mprotects
2012-08-13 09:50:30 -07:00
Nick Kralevich
19b1041930 am 89fd9ecc: am 20b94c0c: Merge "linker: don\'t perform unnecessary mprotects"
* commit '89fd9eccdca0eb5aed296bd7a2003424defe970c':
  linker: don't perform unnecessary mprotects
2012-08-13 09:48:17 -07:00
Nick Kralevich
89fd9eccdc am 20b94c0c: Merge "linker: don\'t perform unnecessary mprotects"
* commit '20b94c0ce99ea3d2315535091c8bcd02f831d252':
  linker: don't perform unnecessary mprotects
2012-08-13 09:46:43 -07:00
Nick Kralevich
20b94c0ce9 Merge "linker: don't perform unnecessary mprotects" 2012-08-13 09:28:54 -07:00
Nick Kralevich
5135b3ae6e linker: don't perform unnecessary mprotects
The linker only needs to mark the text segment as
writable iff the file has text relocations. Unnecessarily
calling mprotect when it isn't necessary is slow, and some
security enhanced kernels don't like it. Pages which are
simultaneously writable and executable are considered a no-no.

The vast majority of executables / shared libraries on Android
do NOT have text relocations.

Change-Id: Ic38ce30a99b7e33ecf21efd9c108547a58eafa35
2012-08-13 08:50:11 -07:00
The Android Automerger
df0cf64781 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-13 08:09:08 -07:00
Elliott Hughes
259f4a1503 am 7261264c: am 2a22a69e: am 877dc946: am 072a7e6c: Merge "MIPS support to the libc Makefile"
* commit '7261264c3a336bfb6e52241c2ba80679cbba68c8':
  MIPS support to the libc Makefile
2012-08-11 15:19:34 -07:00
Ben Cheng
dd8cd5d6bc am daedcfc5: am 9eeaa4bd: am 7e3918eb: am 0bf5cf87: Merge "Set the dynamic field in the link map for the linker itself."
* commit 'daedcfc595f51b1fe22b53d272cee1a142305a11':
  Set the dynamic field in the link map for the linker itself.
2012-08-11 15:19:33 -07:00
Elliott Hughes
7261264c3a am 2a22a69e: am 877dc946: am 072a7e6c: Merge "MIPS support to the libc Makefile"
* commit '2a22a69e942cde007a1253e82be44548cfc018f8':
  MIPS support to the libc Makefile
2012-08-11 15:18:04 -07:00
Ben Cheng
daedcfc595 am 9eeaa4bd: am 7e3918eb: am 0bf5cf87: Merge "Set the dynamic field in the link map for the linker itself."
* commit '9eeaa4bd17b7131e20ad2e36f1372605e80a1332':
  Set the dynamic field in the link map for the linker itself.
2012-08-11 15:18:03 -07:00
Elliott Hughes
2a22a69e94 am 877dc946: am 072a7e6c: Merge "MIPS support to the libc Makefile"
* commit '877dc946090749ba7a71f7ae07f51aa32f966083':
  MIPS support to the libc Makefile
2012-08-11 15:16:34 -07:00
Ben Cheng
9eeaa4bd17 am 7e3918eb: am 0bf5cf87: Merge "Set the dynamic field in the link map for the linker itself."
* commit '7e3918eb62d31224fc5d1cff44d591fecd31e9d0':
  Set the dynamic field in the link map for the linker itself.
2012-08-11 15:16:33 -07:00
Ying Wang
c97c5fc788 Split out LOCAL_ASFLAGS.
Bug: 6967574
Change-Id: I5be50d582c1cb8075039b06292cf0745a996c3c4
2012-08-11 14:23:19 -07:00
Elliott Hughes
877dc94609 am 072a7e6c: Merge "MIPS support to the libc Makefile"
* commit '072a7e6ced29d9be29e38721d0ab7de0ba3f7377':
  MIPS support to the libc Makefile
2012-08-11 11:51:37 -07:00
Ben Cheng
7e3918eb62 am 0bf5cf87: Merge "Set the dynamic field in the link map for the linker itself."
* commit '0bf5cf87c6b7d3de8962ba132ecfb6f0e4b84f06':
  Set the dynamic field in the link map for the linker itself.
2012-08-11 11:51:36 -07:00
Elliott Hughes
072a7e6ced Merge "MIPS support to the libc Makefile" 2012-08-11 09:36:05 -07:00
Raghu Gandham
a4c7933b49 MIPS support to the libc Makefile
Change-Id: Ia1f3f545ca61a5abb235e99046cb3cdaf24d4205
2012-08-10 17:24:02 -07:00
Ben Cheng
0bf5cf87c6 Merge "Set the dynamic field in the link map for the linker itself." 2012-08-10 16:46:09 -07:00
Ben Cheng
06f0e74a2b Set the dynamic field in the link map for the linker itself.
Otherwise gdb will print a spurious warning each time gdb is used:

warning: .dynamic section for "/system/bin/linker" is not at the expected
address (wrong library or version mismatch?)

BUG:6946614
Change-Id: Ib21b8db0615751189c1601140deb43bc089289b6
2012-08-10 16:07:02 -07:00
Elliott Hughes
6a80cc9e08 am 516b26f2: am 0837c69a: am edf09bf9: am 316ee626: Merge "MIPS support to sigsuspend and sigwait routines"
* commit '516b26f2bf755879feb51d06dcd9511903d0a9bd':
  MIPS support to sigsuspend and sigwait routines
2012-08-10 15:20:58 -07:00
Elliott Hughes
516b26f2bf am 0837c69a: am edf09bf9: am 316ee626: Merge "MIPS support to sigsuspend and sigwait routines"
* commit '0837c69a63439b0c1bf3fbf1b93f3003fc5c9a2d':
  MIPS support to sigsuspend and sigwait routines
2012-08-10 15:18:59 -07:00
Elliott Hughes
0837c69a63 am edf09bf9: am 316ee626: Merge "MIPS support to sigsuspend and sigwait routines"
* commit 'edf09bf990c8b011a084dbdb92050879e08ad8a9':
  MIPS support to sigsuspend and sigwait routines
2012-08-10 15:17:05 -07:00
Elliott Hughes
edf09bf990 am 316ee626: Merge "MIPS support to sigsuspend and sigwait routines"
* commit '316ee626b729e3f66a5505a20128af26440cfd19':
  MIPS support to sigsuspend and sigwait routines
2012-08-10 15:15:23 -07:00
Elliott Hughes
316ee626b7 Merge "MIPS support to sigsuspend and sigwait routines" 2012-08-10 15:05:36 -07:00
Nick Kralevich
d7a941f210 am 17f65bf4: am 73d99958: am fabeb736: am 38a02b4b: Merge "crtend*: Add GNU_STACK note"
* commit '17f65bf468074083624aa7546da024193d70c50a':
  crtend*: Add GNU_STACK note
2012-08-10 14:50:02 -07:00
Nick Kralevich
17f65bf468 am 73d99958: am fabeb736: am 38a02b4b: Merge "crtend*: Add GNU_STACK note"
* commit '73d99958bb8bb4cd8f8a7632aeb7e6afaa1e38f1':
  crtend*: Add GNU_STACK note
2012-08-10 14:48:44 -07:00
Nick Kralevich
73d99958bb am fabeb736: am 38a02b4b: Merge "crtend*: Add GNU_STACK note"
* commit 'fabeb736e91d4f4f79a1cbbed696cffb50a860a9':
  crtend*: Add GNU_STACK note
2012-08-10 14:46:56 -07:00
Nick Kralevich
fabeb736e9 am 38a02b4b: Merge "crtend*: Add GNU_STACK note"
* commit '38a02b4b80f50aa1b3e2ee39e9e98146cf42be3d':
  crtend*: Add GNU_STACK note
2012-08-10 14:42:11 -07:00
Nick Kralevich
38a02b4b80 Merge "crtend*: Add GNU_STACK note" 2012-08-10 14:29:27 -07:00
Elliott Hughes
4a20a7f77c am 623ed02e: am d71ada63: am 535477ca: am 3ede900b: Merge "Revert "Revert "Switch to NetBSD\'s strxfrm(3)."""
* commit '623ed02e35fb8c5b8c868b11f53c005e39707f74':
  Revert "Revert "Switch to NetBSD's strxfrm(3).""
2012-08-10 14:16:50 -07:00
Elliott Hughes
623ed02e35 am d71ada63: am 535477ca: am 3ede900b: Merge "Revert "Revert "Switch to NetBSD\'s strxfrm(3)."""
* commit 'd71ada630d5390b7fb6838cb48cb79a1581df1b1':
  Revert "Revert "Switch to NetBSD's strxfrm(3).""
2012-08-10 14:14:29 -07:00
Elliott Hughes
d71ada630d am 535477ca: am 3ede900b: Merge "Revert "Revert "Switch to NetBSD\'s strxfrm(3)."""
* commit '535477ca5e29f3c14dff11ac362423156b5971ec':
  Revert "Revert "Switch to NetBSD's strxfrm(3).""
2012-08-10 14:12:08 -07:00
Nick Kralevich
6eee1fc68f crtend*: Add GNU_STACK note
Add a GNU_STACK marker to crtend* files. This tells the linker
that these files do not require an executable stack.

When linking, a missing GNU_STACK marker in any .o file can prevent
the compiler from automatically marking the final executable as NX
safe (executable stack not required).  In Android, we normally work
around this by adding -Wa,--noexecstack / -Wl,-z,noexecstack.
For files like crtend.S / crtend_so.S, which are included in every
executable / shared library, it's better to add the GNU_STACK note
directly to the assembly file.  This allows the compiler to
automatically mark the final executable as NX safe without any
special command line options.

References: http://www.gentoo.org/proj/en/hardened/gnu-stack.xml

Change-Id: I07bd058f9f60ddd8b146e0fb36ba26ff84c0357d
2012-08-10 14:12:00 -07:00
Elliott Hughes
535477ca5e am 3ede900b: Merge "Revert "Revert "Switch to NetBSD\'s strxfrm(3)."""
* commit '3ede900b644c2a7c2fa41177b81735c8a09bd14a':
  Revert "Revert "Switch to NetBSD's strxfrm(3).""
2012-08-10 14:10:03 -07:00
Elliott Hughes
3ede900b64 Merge "Revert "Revert "Switch to NetBSD's strxfrm(3).""" 2012-08-10 14:03:06 -07:00
Elliott Hughes
63c16f85c5 am be01adce: am 5adc7fdc: am b54e5f2a: am a1822dce: Merge "Add unshare() syscall."
* commit 'be01adce3653912644b33e34a3c7894cf42c71e9':
  Add unshare() syscall.
2012-08-10 13:10:22 -07:00
Elliott Hughes
be01adce36 am 5adc7fdc: am b54e5f2a: am a1822dce: Merge "Add unshare() syscall."
* commit '5adc7fdc2bc8e6e513c3dd9cd0c5cb7617d08d14':
  Add unshare() syscall.
2012-08-10 13:08:05 -07:00
Elliott Hughes
5adc7fdc2b am b54e5f2a: am a1822dce: Merge "Add unshare() syscall."
* commit 'b54e5f2a2fd014a5cbf105daea7b2eb8b59dec29':
  Add unshare() syscall.
2012-08-10 13:06:35 -07:00
Elliott Hughes
b54e5f2a2f am a1822dce: Merge "Add unshare() syscall."
* commit 'a1822dced3ed8625438b3cbf1c53f907f78a3a48':
  Add unshare() syscall.
2012-08-10 13:04:22 -07:00
Elliott Hughes
a1822dced3 Merge "Add unshare() syscall." 2012-08-10 12:59:49 -07:00
Jeff Sharkey
e36c826f7a Add unshare() syscall.
(cherry-pick of 5467f25f82934d611c60f8bc57a05114f3c1bea0.)

Bug: 6925012
Change-Id: Ic5ea2fbd606311087de05d7a3594df2fa9b2fef9
2012-08-10 12:57:43 -07:00
Elliott Hughes
c383a32926 am 4fc5f6c3: am 5140b785: am f6922be2: am f91e2f72: Merge "Fix typo in SIGTTOU description."
* commit '4fc5f6c366dac9c3c264b94b413b1f162a60a53d':
  Fix typo in SIGTTOU description.
2012-08-10 12:54:39 -07:00
Elliott Hughes
1bb1aea178 am 7186a132: am 55206504: am a618ea30: am 4ec9e343: Merge "Revert "Switch to NetBSD\'s strxfrm(3).""
* commit '7186a13284bd70840b396aaec2090804e461869c':
  Revert "Switch to NetBSD's strxfrm(3)."
2012-08-10 12:54:38 -07:00
Elliott Hughes
c2817899e4 am 731ecf0a: am 29b8fb3d: am 3e83da43: am 9ad1d6f5: Merge "Switch to NetBSD\'s strxfrm(3)."
* commit '731ecf0a317b46e12a71542fdaa289d31898f3c0':
  Switch to NetBSD's strxfrm(3).
2012-08-10 12:54:37 -07:00
Elliott Hughes
4fc5f6c366 am 5140b785: am f6922be2: am f91e2f72: Merge "Fix typo in SIGTTOU description."
* commit '5140b785a04827d34225241f99f17e49aadbf3bb':
  Fix typo in SIGTTOU description.
2012-08-10 12:52:23 -07:00
Elliott Hughes
7186a13284 am 55206504: am a618ea30: am 4ec9e343: Merge "Revert "Switch to NetBSD\'s strxfrm(3).""
* commit '552065048334cc893dadbc926701d08dc6c66fcc':
  Revert "Switch to NetBSD's strxfrm(3)."
2012-08-10 12:52:22 -07:00
Elliott Hughes
731ecf0a31 am 29b8fb3d: am 3e83da43: am 9ad1d6f5: Merge "Switch to NetBSD\'s strxfrm(3)."
* commit '29b8fb3d5ea06d05fcd36e298b464dce7dc06803':
  Switch to NetBSD's strxfrm(3).
2012-08-10 12:52:20 -07:00
Elliott Hughes
5140b785a0 am f6922be2: am f91e2f72: Merge "Fix typo in SIGTTOU description."
* commit 'f6922be2a5e30fc594f48ec435d92b5386648061':
  Fix typo in SIGTTOU description.
2012-08-10 12:49:12 -07:00
Elliott Hughes
5520650483 am a618ea30: am 4ec9e343: Merge "Revert "Switch to NetBSD\'s strxfrm(3).""
* commit 'a618ea30e1c9d4f06031fb4ecdae31666db92993':
  Revert "Switch to NetBSD's strxfrm(3)."
2012-08-10 12:49:10 -07:00
Elliott Hughes
29b8fb3d5e am 3e83da43: am 9ad1d6f5: Merge "Switch to NetBSD\'s strxfrm(3)."
* commit '3e83da435b3ad7bee739972fca53dbfb692e6438':
  Switch to NetBSD's strxfrm(3).
2012-08-10 12:49:08 -07:00
Elliott Hughes
75501a17f2 am d18b181a: am b6c1e34d: am dc6d5327: am 0836a7ff: Merge "Auto-generate a complete NOTICE file."
* commit 'd18b181a25b2fa21c20ecd4faaf5c8e6e50fb35b':
  Auto-generate a complete NOTICE file.
2012-08-10 12:40:35 -07:00
Elliott Hughes
d18b181a25 am b6c1e34d: am dc6d5327: am 0836a7ff: Merge "Auto-generate a complete NOTICE file."
* commit 'b6c1e34dca58734c949b6c80d68c74104e1190e0':
  Auto-generate a complete NOTICE file.
2012-08-10 12:38:37 -07:00
Elliott Hughes
b6c1e34dca am dc6d5327: am 0836a7ff: Merge "Auto-generate a complete NOTICE file."
* commit 'dc6d5327bb6b030d154675f753d3e4f96dfa5e14':
  Auto-generate a complete NOTICE file.
2012-08-10 12:36:22 -07:00
Elliott Hughes
f6922be2a5 am f91e2f72: Merge "Fix typo in SIGTTOU description."
* commit 'f91e2f72861643e1d31ffc3e6c374b52d33d2423':
  Fix typo in SIGTTOU description.
2012-08-10 12:34:17 -07:00
Elliott Hughes
f91e2f7286 Merge "Fix typo in SIGTTOU description." 2012-08-10 12:27:06 -07:00
Elliott Hughes
01030e6388 Fix typo in SIGTTOU description.
Change-Id: Ie0db3e7df3e1f17b43f5645d027a90603139be2f
2012-08-10 12:23:58 -07:00
Elliott Hughes
f8b3a920a8 Revert "Revert "Switch to NetBSD's strxfrm(3).""
This reverts commit 8793e7c7d2,
and fixes the build by building upstream NetBSD source as a
separate library that's then swallowed whole into libc_common.

Change-Id: I6c9317d8c48b5ccaf85a7b185bc07fb31176ff97
2012-08-10 12:10:10 -07:00
Elliott Hughes
a618ea30e1 am 4ec9e343: Merge "Revert "Switch to NetBSD\'s strxfrm(3).""
* commit '4ec9e343cf445c5032d9a782d2e92b1dba713e61':
  Revert "Switch to NetBSD's strxfrm(3)."
2012-08-10 11:44:29 -07:00
Elliott Hughes
4ec9e343cf Merge "Revert "Switch to NetBSD's strxfrm(3)."" 2012-08-10 11:36:31 -07:00
Elliott Hughes
8793e7c7d2 Revert "Switch to NetBSD's strxfrm(3)."
This reverts commit be1d78b0dc

Change-Id: I11a95db474796f3da004f27652b081d5ba4ec9b4
2012-08-10 11:36:17 -07:00
Jeff Sharkey
b17cd156b5 am 9a477de2: am 6ccc2c8f: Merge "Add unshare() syscall." into jb-mr1-dev
* commit '9a477de2f54922ba28dbc4789b12b83e64bd1474':
  Add unshare() syscall.
2012-08-10 11:33:26 -07:00
Jeff Sharkey
9a477de2f5 am 6ccc2c8f: Merge "Add unshare() syscall." into jb-mr1-dev
* commit '6ccc2c8f435e42db3d844698f82ab6884798624a':
  Add unshare() syscall.
2012-08-10 11:31:20 -07:00
Jeff Sharkey
6ccc2c8f43 Merge "Add unshare() syscall." into jb-mr1-dev 2012-08-10 11:29:53 -07:00
Elliott Hughes
3e83da435b am 9ad1d6f5: Merge "Switch to NetBSD\'s strxfrm(3)."
* commit '9ad1d6f58ccbc830ce87e3ddf35708e519a8f23e':
  Switch to NetBSD's strxfrm(3).
2012-08-10 11:28:40 -07:00
Elliott Hughes
9ad1d6f58c Merge "Switch to NetBSD's strxfrm(3)." 2012-08-10 11:23:30 -07:00
Jeff Sharkey
5467f25f82 Add unshare() syscall.
Bug: 6925012
Change-Id: I2530a8f6cea49eb32b60f8f9c4d86963773456ca
2012-08-10 11:17:59 -07:00
Elliott Hughes
be1d78b0dc Switch to NetBSD's strxfrm(3).
There were two bugs in our implementation. Intel found one, but another
remainined, and tracking upstream is the way forward for functions where
we add no value.

Change-Id: Ida9bac0293fb2c4cbc942b1e0515ee0477c6538b
2012-08-10 11:03:02 -07:00
The Android Open Source Project
cb221a5cbe am 1551f18a: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '1551f18af0c75c2b2c3ca61168fe4284b54f1a2e':
2012-08-10 08:53:33 -07:00
The Android Open Source Project
1551f18af0 Reconcile with jb-mr1-release - do not merge
Change-Id: Idae4db637990d9326dffba6d0679f520f7c69da0
2012-08-10 08:51:39 -07:00
Raghu Gandham
abd10011a7 MIPS support to sigsuspend and sigwait routines
Change-Id: I870e798ed7eac5a8c74e5784a670f3a4f24331a9
2012-08-09 18:51:19 -07:00
Elliott Hughes
dc6d5327bb am 0836a7ff: Merge "Auto-generate a complete NOTICE file."
* commit '0836a7ffb13890558fe568119b023007cce66373':
  Auto-generate a complete NOTICE file.
2012-08-09 16:39:15 -07:00
Elliott Hughes
0836a7ffb1 Merge "Auto-generate a complete NOTICE file." 2012-08-09 16:25:19 -07:00
Elliott Hughes
387d4b7de9 Auto-generate a complete NOTICE file.
Remove the hand-collated ones, and switch to a script that pulls the
copyright headers out of every file and collects the unique ones.

Change-Id: Ied3b98b3f56241df97166c410ff81de4e0157c9d
2012-08-09 16:05:31 -07:00
Elliott Hughes
444a2bf314 am 8e1e66da: am 31ab6ac0: am 8cc8f7e0: am 709bb0f7: Merge "Remove ThirdPartyProject.prop."
* commit '8e1e66da21398b9ccd4ce68d855909e5eb53f6f0':
  Remove ThirdPartyProject.prop.
2012-08-09 14:51:21 -07:00
Elliott Hughes
8e1e66da21 am 31ab6ac0: am 8cc8f7e0: am 709bb0f7: Merge "Remove ThirdPartyProject.prop."
* commit '31ab6ac05ebbf29f767a15525f6f7fa2054cc8e3':
  Remove ThirdPartyProject.prop.
2012-08-09 14:49:14 -07:00
Elliott Hughes
31ab6ac05e am 8cc8f7e0: am 709bb0f7: Merge "Remove ThirdPartyProject.prop."
* commit '8cc8f7e0d566aaa4c4fbf9d9c8da72b268250617':
  Remove ThirdPartyProject.prop.
2012-08-09 14:47:24 -07:00
Elliott Hughes
8cc8f7e0d5 am 709bb0f7: Merge "Remove ThirdPartyProject.prop."
* commit '709bb0f79ced522e5fb145182472ee4063b85368':
  Remove ThirdPartyProject.prop.
2012-08-09 14:46:00 -07:00
Elliott Hughes
709bb0f79c Merge "Remove ThirdPartyProject.prop." 2012-08-09 14:31:27 -07:00
Elliott Hughes
df675370d7 Remove ThirdPartyProject.prop.
These are dead. I cleaned up external/ a long time ago, but didn't
realize there were any in the main tree.

Change-Id: I5f35b2da132558e2763164285eb38629cd68ffda
2012-08-09 14:29:23 -07:00
Elliott Hughes
f1e95d935f am 9550a7c5: am 3fc21198: am 531d348d: am a17b85d9: Merge "Remove the last .jam file."
* commit '9550a7c57c7f2ed98a5266843e1929cfd92c4a16':
  Remove the last .jam file.
2012-08-09 12:15:02 -07:00
Elliott Hughes
9550a7c57c am 3fc21198: am 531d348d: am a17b85d9: Merge "Remove the last .jam file."
* commit '3fc211983eb447dd4309c2f8d0e8c33ae685f02f':
  Remove the last .jam file.
2012-08-09 12:13:27 -07:00
Elliott Hughes
3fc211983e am 531d348d: am a17b85d9: Merge "Remove the last .jam file."
* commit '531d348d6e37deb751efbefc0613934c5a80de1d':
  Remove the last .jam file.
2012-08-09 12:11:08 -07:00
Elliott Hughes
531d348d6e am a17b85d9: Merge "Remove the last .jam file."
* commit 'a17b85d97b16583ba922a88346cc54976a0bfa28':
  Remove the last .jam file.
2012-08-09 12:08:53 -07:00
Elliott Hughes
a17b85d97b Merge "Remove the last .jam file." 2012-08-09 11:59:20 -07:00
Elliott Hughes
a554212992 Remove the last .jam file.
How did I miss this before?

Change-Id: I2e582133fc4800656fdd81104f8dfc7ee8f5b580
2012-08-09 11:54:23 -07:00
The Android Automerger
536b1daf00 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-09 09:29:41 -07:00
Elliott Hughes
1ab6f486de am 0ac6d235: am b13ad93f: am 3820229b: am d504eee9: Merge "MIPS support to sys/ headers"
* commit '0ac6d23515cbeb8462b62be713119edb8718cd70':
  MIPS support to sys/ headers
2012-08-08 17:49:39 -07:00
Elliott Hughes
a8e76ddf9e am 1afca3f6: am 73ac7d94: am d2040cb2: am f655ce7e: Merge "Fix x86 build."
* commit '1afca3f69887d9c761d448ddc0c4031176351fe1':
  Fix x86 build.
2012-08-08 17:49:38 -07:00
Elliott Hughes
0ac6d23515 am b13ad93f: am 3820229b: am d504eee9: Merge "MIPS support to sys/ headers"
* commit 'b13ad93f4a452b1ec7a37e1426f664787b83836f':
  MIPS support to sys/ headers
2012-08-08 17:47:30 -07:00
Elliott Hughes
1afca3f698 am 73ac7d94: am d2040cb2: am f655ce7e: Merge "Fix x86 build."
* commit '73ac7d94b7cf627524be97da7704206b5ffd4fcf':
  Fix x86 build.
2012-08-08 17:47:29 -07:00
Elliott Hughes
b13ad93f4a am 3820229b: am d504eee9: Merge "MIPS support to sys/ headers"
* commit '3820229b46ed3012f19a32cea70b6007ad54b746':
  MIPS support to sys/ headers
2012-08-08 17:44:20 -07:00
Elliott Hughes
73ac7d94b7 am d2040cb2: am f655ce7e: Merge "Fix x86 build."
* commit 'd2040cb2244bbd253951b5ff808efe67246e5154':
  Fix x86 build.
2012-08-08 17:44:14 -07:00
Elliott Hughes
3820229b46 am d504eee9: Merge "MIPS support to sys/ headers"
* commit 'd504eee9fa7dda59a41eb3e12ef973f32ee1169f':
  MIPS support to sys/ headers
2012-08-08 16:51:01 -07:00
Elliott Hughes
d504eee9fa Merge "MIPS support to sys/ headers" 2012-08-08 16:32:55 -07:00
Elliott Hughes
d2040cb224 am f655ce7e: Merge "Fix x86 build."
* commit 'f655ce7ef3df277442ccc47f91cb919c1cd9ebd6':
  Fix x86 build.
2012-08-08 16:19:25 -07:00
Elliott Hughes
f655ce7ef3 Merge "Fix x86 build." 2012-08-08 16:07:27 -07:00
Elliott Hughes
57e6d9ab48 Fix x86 build.
Change-Id: Ice50ca71a19f3bf26de7cfd4c02075f1e6e0823f
2012-08-08 16:06:51 -07:00
Elliott Hughes
40805076f9 am b02f100f: am 366c0199: am f3ffb8fa: am 78129204: Merge "Clean up the linker a bit, remove prelinking support."
* commit 'b02f100fa41d1905013b571fa4092857b873d78d':
  Clean up the linker a bit, remove prelinking support.
2012-08-08 15:34:04 -07:00
Elliott Hughes
b02f100fa4 am 366c0199: am f3ffb8fa: am 78129204: Merge "Clean up the linker a bit, remove prelinking support."
* commit '366c01992a73c40c1b6722bf9d51755c4a7ea83e':
  Clean up the linker a bit, remove prelinking support.
2012-08-08 15:32:19 -07:00
Elliott Hughes
366c01992a am f3ffb8fa: am 78129204: Merge "Clean up the linker a bit, remove prelinking support."
* commit 'f3ffb8fa6ecd9db2da19eb3144a5da7724a875bc':
  Clean up the linker a bit, remove prelinking support.
2012-08-08 15:30:39 -07:00
Elliott Hughes
f3ffb8fa6e am 78129204: Merge "Clean up the linker a bit, remove prelinking support."
* commit '7812920487070d392984f94c9f80006dad8c198a':
  Clean up the linker a bit, remove prelinking support.
2012-08-08 15:29:27 -07:00
Elliott Hughes
7812920487 Merge "Clean up the linker a bit, remove prelinking support." 2012-08-08 15:17:23 -07:00
Elliott Hughes
baa35efba8 am 96fd6601: am 10e2d222: am d463f6e9: am 34959e0b: Merge "Clean up libc/Android.mk a bit after the crtbrand changes."
* commit '96fd66018cff2e3a217abdc95aafbcaea94e4a4e':
  Clean up libc/Android.mk a bit after the crtbrand changes.
2012-08-08 15:11:55 -07:00
Jean-Baptiste Queru
6dd6634bf6 am d0a7bc2f: am affd1b42: am 9f3a8aaf: am 7e248be7: Merge "Add a .note.android.ident section to Android ELF binaries."
* commit 'd0a7bc2fd61c052801226a7b92f544ebed6eb59a':
  Add a .note.android.ident section to Android ELF binaries.
2012-08-08 15:11:30 -07:00
Elliott Hughes
96fd66018c am 10e2d222: am d463f6e9: am 34959e0b: Merge "Clean up libc/Android.mk a bit after the crtbrand changes."
* commit '10e2d222ce3db0c310c00cd1a5cffdd2223b5dfe':
  Clean up libc/Android.mk a bit after the crtbrand changes.
2012-08-08 14:43:55 -07:00
Elliott Hughes
10e2d222ce am d463f6e9: am 34959e0b: Merge "Clean up libc/Android.mk a bit after the crtbrand changes."
* commit 'd463f6e98011fe3b5a23cef2502705dedd702173':
  Clean up libc/Android.mk a bit after the crtbrand changes.
2012-08-08 14:43:00 -07:00
Elliott Hughes
d463f6e980 am 34959e0b: Merge "Clean up libc/Android.mk a bit after the crtbrand changes."
* commit '34959e0bd5c0d7c9d9b243adbf7752077436cbb5':
  Clean up libc/Android.mk a bit after the crtbrand changes.
2012-08-08 14:40:54 -07:00
Elliott Hughes
34959e0bd5 Merge "Clean up libc/Android.mk a bit after the crtbrand changes." 2012-08-08 14:32:24 -07:00
Jean-Baptiste Queru
d0a7bc2fd6 am affd1b42: am 9f3a8aaf: am 7e248be7: Merge "Add a .note.android.ident section to Android ELF binaries."
* commit 'affd1b4243f37d32881e190302bd418000465c10':
  Add a .note.android.ident section to Android ELF binaries.
2012-08-08 14:10:45 -07:00
Jean-Baptiste Queru
affd1b4243 am 9f3a8aaf: am 7e248be7: Merge "Add a .note.android.ident section to Android ELF binaries."
* commit '9f3a8aaf926bb0439b7e6b7b62efab62f1900d02':
  Add a .note.android.ident section to Android ELF binaries.
2012-08-08 14:08:29 -07:00
Elliott Hughes
76be660aae Clean up libc/Android.mk a bit after the crtbrand changes.
Change-Id: Icfb95fffe70967418cd93da8cbeae22dcd68f8c9
2012-08-08 14:07:37 -07:00
Jean-Baptiste Queru
9f3a8aaf92 am 7e248be7: Merge "Add a .note.android.ident section to Android ELF binaries."
* commit '7e248be76441daa0ee27cc461c806e6010405c25':
  Add a .note.android.ident section to Android ELF binaries.
2012-08-08 14:04:19 -07:00
Jean-Baptiste Queru
7e248be764 Merge "Add a .note.android.ident section to Android ELF binaries." 2012-08-08 13:44:27 -07:00
Elliott Hughes
4688279db5 Clean up the linker a bit, remove prelinking support.
Also make the errors more readable, since none of us seemed to know
what they actually meant. The new style is still as verbose as the
old, but that's probably necessary in the absence of chained exceptions
in C. Here's what you'd see if you try to boot after removing
libsurfaceflinger.so:

  32267 32267 E AndroidRuntime: java.lang.UnsatisfiedLinkError: Cannot load library: (linker.c:1629, pid 32259) soinfo_link_image: could not load library "libsystem_server.so" needed by "libandroid_servers.so"; caused by (linker.c:1629, pid 32259) soinfo_link_image: could not load library "libsurfaceflinger.so" needed by "libsystem_server.so"; caused by (linker.c:709, pid 32259) load_library: library "libsurfaceflinger.so" not found

This patch also fixes almost all of the compiler warnings.

Change-Id: I64bb59aed6d4e039c15ea45be2367f319ef879f8
2012-08-07 11:41:10 -07:00
The Android Open Source Project
60ca41ebb7 am d9c2de10: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'd9c2de10d94b1c46e0e3dee41bd6d8de673d2267':
2012-08-07 11:04:10 -07:00
The Android Open Source Project
d9c2de10d9 Reconcile with jb-mr1-release - do not merge
Change-Id: I753a2c0b3bfb42c526b954e58d8874daf31420ed
2012-08-07 11:02:30 -07:00
The Android Automerger
eeb321c54e merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-07 06:33:32 -07:00
The Android Open Source Project
fa844eff32 am 45193df5: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '45193df53aebb0764853aa21541e6f6ab73b9b9f':
  When compiling with clang, don't "fortify_source" the strlcpy and strlcat.
  When compiling with clang, don't "fortify_source" the strlen.
  Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
2012-08-06 13:35:38 -07:00
The Android Open Source Project
45193df53a Reconcile with jb-mr1-release - do not merge
Change-Id: If9b215d19d88c3f1793013adc8cb81c8c890faa0
2012-08-06 13:34:18 -07:00
The Android Open Source Project
31096ceb79 am 1466b1aa: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '1466b1aad294138fc1e189c6fdce5eb7a2d06a42':
  Update msm_camera.h to version that supports instance handle based lookup
2012-08-06 13:19:43 -07:00
The Android Open Source Project
1466b1aad2 Reconcile with jb-mr1-release - do not merge
Change-Id: I801dd8874ff1b1b61858cac3bf716906825b214d
2012-08-06 13:17:46 -07:00
Shih-wei Liao
f4497e15b7 When compiling with clang, don't "fortify_source" the strlcpy and
strlcat.

Change-Id: I91f58322f28e425ab9d22b51c23fcd6b772ede97
2012-08-06 13:17:05 -07:00
Shih-wei Liao
a72246d67e When compiling with clang, don't "fortify_source" the strlen.
At this point, FORTIFY_SOURCE and clang are just plain incompatible.
Need to solve the underlying incompatibility first.

Change-Id: I3366477d19461e1ec93b1c30e0c7e8145b391b9b
2012-08-06 13:16:56 -07:00
Shih-wei Liao
5fec211f60 Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
This reverts commit 4f1f149c37.
2012-08-06 13:16:48 -07:00
Shih-wei Liao
6f2e8f9878 am 25ef2bbf: am 3b4c9db2: am df523880: am e2731d98: Merge "When compiling with clang, don\'t "fortify_source" the strlcpy and strlcat."
* commit '25ef2bbf01bf6f8e934a07bd1304cba35ae5a38e':
  When compiling with clang, don't "fortify_source" the strlcpy and strlcat.
2012-08-06 11:12:30 -07:00
Shih-wei Liao
25ef2bbf01 am 3b4c9db2: am df523880: am e2731d98: Merge "When compiling with clang, don\'t "fortify_source" the strlcpy and strlcat."
* commit '3b4c9db2561233fb81ac0c42b3976deb2e648df0':
  When compiling with clang, don't "fortify_source" the strlcpy and strlcat.
2012-08-06 11:10:41 -07:00
Shih-wei Liao
3b4c9db256 am df523880: am e2731d98: Merge "When compiling with clang, don\'t "fortify_source" the strlcpy and strlcat."
* commit 'df523880b59604ef36e212cb7ba30d663eeea179':
  When compiling with clang, don't "fortify_source" the strlcpy and strlcat.
2012-08-06 11:09:35 -07:00
Shih-wei Liao
df523880b5 am e2731d98: Merge "When compiling with clang, don\'t "fortify_source" the strlcpy and strlcat."
* commit 'e2731d98c1f0cd32d94b34cc4ee77148d6d52647':
  When compiling with clang, don't "fortify_source" the strlcpy and strlcat.
2012-08-06 11:08:40 -07:00
Shih-wei Liao
e2731d98c1 Merge "When compiling with clang, don't "fortify_source" the strlcpy and strlcat." 2012-08-06 11:02:19 -07:00
Shih-wei Liao
d600617645 When compiling with clang, don't "fortify_source" the strlcpy and
strlcat.

Change-Id: I91f58322f28e425ab9d22b51c23fcd6b772ede97
2012-08-06 10:57:37 -07:00
Shih-wei Liao
dec42d9112 am 42bfbd1e: am 6ff66601: am ce4a5cd5: am 8173d767: Merge "Revert "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute""
* commit '42bfbd1e617b7430fd5c62cb9162ab5c79655e3d':
  Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
2012-08-06 10:23:24 -07:00
Shih-wei Liao
839c4f1eb6 am ed33635d: am cddedade: am 924fd920: am 601a49d3: Merge "When compiling with clang, don\'t "fortify_source" the strlen."
* commit 'ed33635da7d8cfc6f5c61c5d7ab9bc42ab5b3916':
  When compiling with clang, don't "fortify_source" the strlen.
2012-08-06 10:23:23 -07:00
Shih-wei Liao
42bfbd1e61 am 6ff66601: am ce4a5cd5: am 8173d767: Merge "Revert "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute""
* commit '6ff66601a47d7b74544310e4a5535d572e23d68e':
  Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
2012-08-06 10:20:48 -07:00
Shih-wei Liao
ed33635da7 am cddedade: am 924fd920: am 601a49d3: Merge "When compiling with clang, don\'t "fortify_source" the strlen."
* commit 'cddedade5b1138d5ddafe5b084923f21bba75526':
  When compiling with clang, don't "fortify_source" the strlen.
2012-08-06 10:20:47 -07:00
Shih-wei Liao
6ff66601a4 am ce4a5cd5: am 8173d767: Merge "Revert "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute""
* commit 'ce4a5cd5f3ee09fbc8dea7ffdfcd4fd097f8ed34':
  Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
2012-08-06 10:18:21 -07:00
Shih-wei Liao
cddedade5b am 924fd920: am 601a49d3: Merge "When compiling with clang, don\'t "fortify_source" the strlen."
* commit '924fd920137135729483d0beacea20d5a0552c15':
  When compiling with clang, don't "fortify_source" the strlen.
2012-08-06 10:18:20 -07:00
Shih-wei Liao
ce4a5cd5f3 am 8173d767: Merge "Revert "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute""
* commit '8173d76740cafc2ceb49d2fddf1ceabfaa823236':
  Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
2012-08-06 10:17:09 -07:00
Shih-wei Liao
924fd92013 am 601a49d3: Merge "When compiling with clang, don\'t "fortify_source" the strlen."
* commit '601a49d39829005803670088da02179e61719551':
  When compiling with clang, don't "fortify_source" the strlen.
2012-08-06 10:17:08 -07:00
Shih-wei Liao
8173d76740 Merge "Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"" 2012-08-06 10:05:15 -07:00
Shih-wei Liao
601a49d398 Merge "When compiling with clang, don't "fortify_source" the strlen." 2012-08-06 10:04:22 -07:00
Shih-wei Liao
9a3d53fad0 When compiling with clang, don't "fortify_source" the strlen.
At this point, FORTIFY_SOURCE and clang are just plain incompatible.
Need to solve the underlying incompatibility first.

Change-Id: I3366477d19461e1ec93b1c30e0c7e8145b391b9b
2012-08-06 09:50:56 -07:00
Elliott Hughes
b11eaaed35 am a870ded2: am eaac1e5a: am 94ce1356: am 7c92b6ca: Merge "Remove an awkward #include that is no longer upstream."
* commit 'a870ded21ac2e8b792ddc1fe1c5d71c421f0d8a1':
  Remove an awkward #include that is no longer upstream.
2012-08-06 08:09:25 -07:00
Elliott Hughes
a870ded21a am eaac1e5a: am 94ce1356: am 7c92b6ca: Merge "Remove an awkward #include that is no longer upstream."
* commit 'eaac1e5a1c62a9dc9edd3a858a367bbb16194272':
  Remove an awkward #include that is no longer upstream.
2012-08-06 08:08:05 -07:00
Elliott Hughes
eaac1e5a1c am 94ce1356: am 7c92b6ca: Merge "Remove an awkward #include that is no longer upstream."
* commit '94ce135693a73ac09116dabc0f2440604bba5c87':
  Remove an awkward #include that is no longer upstream.
2012-08-06 08:06:27 -07:00
Elliott Hughes
94ce135693 am 7c92b6ca: Merge "Remove an awkward #include that is no longer upstream."
* commit '7c92b6ca409f514e7ff67ac8c10d73ce92ff38d2':
  Remove an awkward #include that is no longer upstream.
2012-08-06 08:04:33 -07:00
Elliott Hughes
7c92b6ca40 Merge "Remove an awkward #include that is no longer upstream." 2012-08-06 07:57:59 -07:00
The Android Automerger
7bf1c31cac merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-06 06:27:31 -07:00
Shih-wei Liao
2b7f68c03d Revert "Fix the clang build: this compiler doesn't support the gnu_inline function attribute"
This reverts commit 4f1f149c37.
2012-08-03 17:44:08 -07:00
Elliott Hughes
15b3aef581 am 8ccbc90a: am 4bac8f68: am 7e81ee04: am 1c861728: Merge "Remove yet more SH4 cruft."
* commit '8ccbc90a3b6071dff015bff284b0a11d95a00349':
  Remove yet more SH4 cruft.
2012-08-03 15:17:14 -07:00
Elliott Hughes
8ccbc90a3b am 4bac8f68: am 7e81ee04: am 1c861728: Merge "Remove yet more SH4 cruft."
* commit '4bac8f689efd8f10850e60c52c206b20e4a90fd7':
  Remove yet more SH4 cruft.
2012-08-03 15:14:16 -07:00
Elliott Hughes
4bac8f689e am 7e81ee04: am 1c861728: Merge "Remove yet more SH4 cruft."
* commit '7e81ee04532e9c26f90d73061d9a53f09e2c3fa1':
  Remove yet more SH4 cruft.
2012-08-03 15:12:39 -07:00
Elliott Hughes
7e81ee0453 am 1c861728: Merge "Remove yet more SH4 cruft."
* commit '1c861728e5c8dda7589e6595f4850d77ec21a236':
  Remove yet more SH4 cruft.
2012-08-03 15:09:55 -07:00
Elliott Hughes
1c861728e5 Merge "Remove yet more SH4 cruft." 2012-08-03 15:05:15 -07:00
Ajay Dudani
5f0701c9fa Update msm_camera.h to version that supports instance handle based lookup
Change-Id: If33a45f378e2cbbfe28b51643808df94e8d1f5e7
2012-08-03 15:02:07 -07:00
Elliott Hughes
bbf094fdf5 Remove yet more SH4 cruft.
Surely this is the last piece?

Change-Id: I4bd43afb102334ec34d0e14a65c2b319826473d7
2012-08-03 14:58:18 -07:00
Elliott Hughes
031226a9fd am 9f8c7daf: am c9dbebe3: am f5385754: am aea5f00d: Merge "bionic: modify syscall to use 6 registers to pass parameter."
* commit '9f8c7daf402738beda56868692e62a90e095481d':
  bionic: modify syscall to use 6 registers to pass parameter.
2012-08-03 14:34:57 -07:00
Elliott Hughes
9f8c7daf40 am c9dbebe3: am f5385754: am aea5f00d: Merge "bionic: modify syscall to use 6 registers to pass parameter."
* commit 'c9dbebe344d2f6a4623a67d1c005bcb6137642c4':
  bionic: modify syscall to use 6 registers to pass parameter.
2012-08-03 14:33:20 -07:00
Elliott Hughes
c9dbebe344 am f5385754: am aea5f00d: Merge "bionic: modify syscall to use 6 registers to pass parameter."
* commit 'f5385754e29dcb093cb9445c40b69e45bd71d685':
  bionic: modify syscall to use 6 registers to pass parameter.
2012-08-03 14:29:45 -07:00
Elliott Hughes
f5385754e2 am aea5f00d: Merge "bionic: modify syscall to use 6 registers to pass parameter."
* commit 'aea5f00df4704a618331e16473b552e54bed269b':
  bionic: modify syscall to use 6 registers to pass parameter.
2012-08-03 14:27:08 -07:00
Elliott Hughes
aea5f00df4 Merge "bionic: modify syscall to use 6 registers to pass parameter." 2012-08-03 13:55:56 -07:00
Jin Wei
c164f2a969 bionic: modify syscall to use 6 registers to pass parameter.
Kernel allows to use 6 registers(exclude eax) to pass parameter.
But in syscall's implementation, it only uses five registers.
It will lead to error when 6 parameters passed.

Change-Id: I92d663194e6334c3847f0c0c257ca3b9dee0edef
Author: Jin Wei <wei.a.jin@intel.com>
Signed-off-by: Xiaokang Qin <xiaokang.qin@intel.com>
Signed-off-by: Beare, Bruce J <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 30838
2012-08-03 13:54:29 -07:00
Elliott Hughes
7478b0bfa6 am 58234e78: am 48955d24: am c6f15ecf: am 1510795f: Merge "Upgrade to tzdata2012e."
* commit '58234e788be30a16e6ba745adc21cbfd6d9828ec':
  Upgrade to tzdata2012e.
2012-08-03 13:41:39 -07:00
Elliott Hughes
58234e788b am 48955d24: am c6f15ecf: am 1510795f: Merge "Upgrade to tzdata2012e."
* commit '48955d24b9f3e8c15028a6dbb54e2e96fd41780a':
  Upgrade to tzdata2012e.
2012-08-03 13:39:38 -07:00
Elliott Hughes
48955d24b9 am c6f15ecf: am 1510795f: Merge "Upgrade to tzdata2012e."
* commit 'c6f15ecf76842801db653d58a262c7d342be2a93':
  Upgrade to tzdata2012e.
2012-08-03 13:33:15 -07:00
Elliott Hughes
c6f15ecf76 am 1510795f: Merge "Upgrade to tzdata2012e."
* commit '1510795fec5aa8b8700a08200f37f6e57dea8d04':
  Upgrade to tzdata2012e.
2012-08-03 13:30:44 -07:00
Elliott Hughes
1510795fec Merge "Upgrade to tzdata2012e." 2012-08-03 12:30:18 -07:00
Elliott Hughes
094651335e Upgrade to tzdata2012e.
Includes this change:

  * australasia (Pacific/Fakaofo): Tokelau is UTC+13, not UTC+14.
    (Thanks to Steffen Thorsen.)

Change-Id: I51bfab759f424b90daeb1960c6cfb2b55b78ff46
2012-08-03 12:26:06 -07:00
David Turner
65f12237b8 am c7813c08: am d7552a31: am 2f2b7212: am 16d40217: Merge "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute"
* commit 'c7813c08570a5e6ef3e410973d7f4b4befebee77':
  Fix the clang build: this compiler doesn't support the gnu_inline function attribute
2012-08-03 05:04:06 -07:00
David Turner
c7813c0857 am d7552a31: am 2f2b7212: am 16d40217: Merge "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute"
* commit 'd7552a3101affbc531f3c33deca10c28417a864c':
  Fix the clang build: this compiler doesn't support the gnu_inline function attribute
2012-08-03 05:02:00 -07:00
David Turner
d7552a3101 am 2f2b7212: am 16d40217: Merge "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute"
* commit '2f2b72120489d9e7e67a97a059a731aa72a34f72':
  Fix the clang build: this compiler doesn't support the gnu_inline function attribute
2012-08-03 05:00:03 -07:00
David Turner
2f2b721204 am 16d40217: Merge "Fix the clang build: this compiler doesn\'t support the gnu_inline function attribute"
* commit '16d40217d05a1d9ad8ec475ce5f68c35bbef7029':
  Fix the clang build: this compiler doesn't support the gnu_inline function attribute
2012-08-03 04:57:56 -07:00
David Turner
16d40217d0 Merge "Fix the clang build: this compiler doesn't support the gnu_inline function attribute" 2012-08-03 04:40:37 -07:00
Shih-wei Liao
4f1f149c37 Fix the clang build: this compiler doesn't support the gnu_inline function attribute
Recent clang compiler doesn't have gnu_inline working. When frameworks/rs
is compiled with clang instead of gcc, it no longer works. Will be fixed
by this patch.

Change-Id: I8b281a1305151909e18958b73914ea27343cb4cd
2012-08-03 04:38:15 -07:00
Elliott Hughes
889a706637 am df7aa950: am 9b6a4538: am 0ce92b96: am 1e304a3b: Merge "[MIPS] Support for TLS register"
* commit 'df7aa95031f5f99ba3fc95956c38bf7ffd037ab4':
  [MIPS] Support for TLS register
2012-08-02 18:51:38 -07:00
Elliott Hughes
df7aa95031 am 9b6a4538: am 0ce92b96: am 1e304a3b: Merge "[MIPS] Support for TLS register"
* commit '9b6a45386555a11aa1c7f473b21c480b4a158ea7':
  [MIPS] Support for TLS register
2012-08-02 18:49:12 -07:00
Elliott Hughes
9b6a453865 am 0ce92b96: am 1e304a3b: Merge "[MIPS] Support for TLS register"
* commit '0ce92b9625c5d0cc4e72047e6c8759c4cc079dcb':
  [MIPS] Support for TLS register
2012-08-02 18:48:04 -07:00
Elliott Hughes
0ce92b9625 am 1e304a3b: Merge "[MIPS] Support for TLS register"
* commit '1e304a3bce347da08f0f9409829d911493bad1bb':
  [MIPS] Support for TLS register
2012-08-02 18:45:56 -07:00
Elliott Hughes
1e304a3bce Merge "[MIPS] Support for TLS register" 2012-08-02 18:33:20 -07:00
Elliott Hughes
bdcc14d721 Remove an awkward #include that is no longer upstream.
This was causing trouble in https://android-review.googlesource.com/#/c/37590/.

Change-Id: Ib7cb4fbaef6e9c1470c59f67d24bd24c7ce90bcc
2012-08-02 18:12:36 -07:00
Raghu Gandham
6437eac15a MIPS support to sys/ headers
Change-Id: I32207a1d918e4842da341f6b242ae39c69a83b03
2012-08-02 18:03:54 -07:00
Raghu Gandham
1c30398143 [MIPS] Support for TLS register
Change-Id: I6b5194e5e379b573e3b1203d8015e20fb3edd647
Signed-off-by: Chris Dearman <chris@mips.com>
2012-08-02 18:01:05 -07:00
Elliott Hughes
855a3779be am e5bd6efa: am f94effda: am fd4685be: am 52f3ee96: Merge "MIPS support for libc."
* commit 'e5bd6efa0805a743ed6c2022c65c5a8ff79d7310':
  MIPS support for libc.
2012-08-02 16:39:18 -07:00
Elliott Hughes
e5bd6efa08 am f94effda: am fd4685be: am 52f3ee96: Merge "MIPS support for libc."
* commit 'f94effdab27f2bbe3f079d454e71ca9e60166318':
  MIPS support for libc.
2012-08-02 16:37:07 -07:00
Elliott Hughes
f94effdab2 am fd4685be: am 52f3ee96: Merge "MIPS support for libc."
* commit 'fd4685be87fa2c957d4f95deb75a6ba763fd7339':
  MIPS support for libc.
2012-08-02 16:34:57 -07:00
Elliott Hughes
fd4685be87 am 52f3ee96: Merge "MIPS support for libc."
* commit '52f3ee962b384bf247638adb653f0024ce92a895':
  MIPS support for libc.
2012-08-02 16:32:47 -07:00
Elliott Hughes
52f3ee962b Merge "MIPS support for libc." 2012-08-02 16:14:47 -07:00
Elliott Hughes
36c27b547e am 79d834b5: am 82dcfee5: am 19e30fc4: am a1c0f08d: Merge "Fix a ENOTUP/ENOTSUP typo."
* commit '79d834b5aba80407046ece1377033c8d48fbd427':
  Fix a ENOTUP/ENOTSUP typo.
2012-08-02 16:13:40 -07:00
Elliott Hughes
967c9f7fcb am 422067eb: am c0719660: am 670766c5: am 994935f6: Merge "Error numbers are target specific."
* commit '422067eb3ceba3c39903df5562cb8997b40d61c4':
  Error numbers are target specific.
2012-08-02 16:13:38 -07:00
Elliott Hughes
79d834b5ab am 82dcfee5: am 19e30fc4: am a1c0f08d: Merge "Fix a ENOTUP/ENOTSUP typo."
* commit '82dcfee5fcd5243ff9df2aa7497e83dd567b6f95':
  Fix a ENOTUP/ENOTSUP typo.
2012-08-02 16:10:34 -07:00
Elliott Hughes
422067eb3c am c0719660: am 670766c5: am 994935f6: Merge "Error numbers are target specific."
* commit 'c07196605cc9bb55af2173832536e342e902d2c5':
  Error numbers are target specific.
2012-08-02 16:10:32 -07:00
Elliott Hughes
82dcfee5fc am 19e30fc4: am a1c0f08d: Merge "Fix a ENOTUP/ENOTSUP typo."
* commit '19e30fc41030ab0524134b097dfef88baea14f4a':
  Fix a ENOTUP/ENOTSUP typo.
2012-08-02 16:07:41 -07:00
Elliott Hughes
c07196605c am 670766c5: am 994935f6: Merge "Error numbers are target specific."
* commit '670766c5649086ad5ffe26c0deadeb460139202f':
  Error numbers are target specific.
2012-08-02 16:07:40 -07:00
Raghu Gandham
405b8029a6 MIPS support for libc.
Change-Id: I2864dea04b3faf2d919165dcaa600af5b16c41c8
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Raghu Gandham <raghu@mips.com>
2012-08-02 16:07:26 -07:00
Elliott Hughes
19e30fc410 am a1c0f08d: Merge "Fix a ENOTUP/ENOTSUP typo."
* commit 'a1c0f08d3ccbe5c40be53903615e59113ade4922':
  Fix a ENOTUP/ENOTSUP typo.
2012-08-02 15:59:22 -07:00
Elliott Hughes
670766c564 am 994935f6: Merge "Error numbers are target specific."
* commit '994935f64cdbd7553ecbfbd15d4e4dd429277409':
  Error numbers are target specific.
2012-08-02 15:59:21 -07:00
Elliott Hughes
a1c0f08d3c Merge "Fix a ENOTUP/ENOTSUP typo." 2012-08-02 15:46:44 -07:00
Elliott Hughes
fccadc38bd am 0b8dda0e: am 673c092e: am 54830578: am f34ecbff: Merge "MIPS support to the linker"
* commit '0b8dda0e422e9669af06d9e6d264fb14652b23b5':
  MIPS support to the linker
2012-08-02 15:45:45 -07:00
Elliott Hughes
ecb53eab4b Fix a ENOTUP/ENOTSUP typo.
Change-Id: Ifa347a09a2aa1f505965ae7c1383fd0caf95793c
2012-08-02 15:45:04 -07:00
Elliott Hughes
0b8dda0e42 am 673c092e: am 54830578: am f34ecbff: Merge "MIPS support to the linker"
* commit '673c092e0fc40afa291086d06ab39a6d22e7f894':
  MIPS support to the linker
2012-08-02 15:43:44 -07:00
Elliott Hughes
994935f64c Merge "Error numbers are target specific." 2012-08-02 15:42:48 -07:00
Elliott Hughes
673c092e0f am 54830578: am f34ecbff: Merge "MIPS support to the linker"
* commit '5483057817d071140d94299452b31881c4a6e748':
  MIPS support to the linker
2012-08-02 15:39:45 -07:00
Brian Muramatsu
963a8fc036 am fa22fd9f: am 402ec708: Merge "Update msm_camera.h to version that supports instance handle based lookup" into jb-mr1-dev
* commit 'fa22fd9f817e0fe49e0f7524f5589710f1140d8f':
  Update msm_camera.h to version that supports instance handle based lookup
2012-08-02 15:24:34 -07:00
Brian Muramatsu
fa22fd9f81 am 402ec708: Merge "Update msm_camera.h to version that supports instance handle based lookup" into jb-mr1-dev
* commit '402ec70899909f0b32c1ac304e3f26434424a3b3':
  Update msm_camera.h to version that supports instance handle based lookup
2012-08-02 15:22:34 -07:00
Brian Muramatsu
402ec70899 Merge "Update msm_camera.h to version that supports instance handle based lookup" into jb-mr1-dev 2012-08-02 15:20:58 -07:00
The Android Open Source Project
3a6e56534d am d7b3cc0c: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'd7b3cc0c69b02cad4090a0068349f1ab83e3112f':
2012-08-02 15:09:18 -07:00
Elliott Hughes
5483057817 am f34ecbff: Merge "MIPS support to the linker"
* commit 'f34ecbff0dd2b8e6961020b8c91260f33d4cf3ea':
  MIPS support to the linker
2012-08-02 14:57:52 -07:00
Elliott Hughes
f34ecbff0d Merge "MIPS support to the linker" 2012-08-02 14:43:55 -07:00
Raghu Gandham
d7daacb463 MIPS support to the linker
Change-Id: I37ec2d6c51d82bb9e9dbfef4b38c85366bead255
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Raghu Gandham <raghu@mips.com>
Signed-off-by: Bhanu Chetlapalli <bhanu@mips.com>
2012-08-02 14:39:50 -07:00
The Android Open Source Project
d7b3cc0c69 Reconcile with jb-mr1-release - do not merge
Change-Id: Ia1f59a486efa98614b8f97f9432e1040c90d2ec7
2012-08-02 11:26:02 -07:00
The Android Automerger
248321bb6f merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-02 07:41:45 -07:00
Chris Dearman
da2611084f Error numbers are target specific.
Use the system supplied error numbers when mapping error numbers to messages.

Change-Id: I520556fa3e2ff668fdc4eda36ad31491fbb48ea8
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Raghu Gandham <raghu@mips.com>
2012-08-01 17:53:07 -07:00
The Android Open Source Project
2a258c9f2d am 8f2f2466: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '8f2f24661870c349a19bff71d85ed5eb897c7c9f':
2012-08-01 14:50:42 -07:00
The Android Open Source Project
8f2f246618 Reconcile with jb-mr1-release - do not merge
Change-Id: I2295284f2cccfc72a25c2675762cc613faa337a4
2012-08-01 13:11:49 -07:00
The Android Automerger
617a5ee417 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-08-01 07:10:06 -07:00
Ajay Dudani
cbbe9528ca Update msm_camera.h to version that supports instance handle based lookup
Change-Id: If33a45f378e2cbbfe28b51643808df94e8d1f5e7
2012-07-31 21:32:50 -07:00
Shih-wei Liao
543960121c am cfc8b93c: am 4f13bdd4: am 7565d5b1: am 0ca9d074: Merge "Had include/arm/fenv.h, but missed include/mips/fenv.h."
* commit 'cfc8b93c4e223f72a2e419f4571f55f7eb819df3':
  Had include/arm/fenv.h, but missed include/mips/fenv.h.
2012-07-31 21:07:50 -07:00
Shih-wei Liao
cfc8b93c4e am 4f13bdd4: am 7565d5b1: am 0ca9d074: Merge "Had include/arm/fenv.h, but missed include/mips/fenv.h."
* commit '4f13bdd45c73194a49d3a5844746248c7dcd9432':
  Had include/arm/fenv.h, but missed include/mips/fenv.h.
2012-07-31 21:05:09 -07:00
Shih-wei Liao
4f13bdd45c am 7565d5b1: am 0ca9d074: Merge "Had include/arm/fenv.h, but missed include/mips/fenv.h."
* commit '7565d5b118420cc0dff2d59cf3542e99f415601a':
  Had include/arm/fenv.h, but missed include/mips/fenv.h.
2012-07-31 21:02:52 -07:00
Shih-wei Liao
7565d5b118 am 0ca9d074: Merge "Had include/arm/fenv.h, but missed include/mips/fenv.h."
* commit '0ca9d0748e3229c849e3ee17259e0e55d7214800':
  Had include/arm/fenv.h, but missed include/mips/fenv.h.
2012-07-31 21:00:39 -07:00
Shih-wei Liao
0ca9d0748e Merge "Had include/arm/fenv.h, but missed include/mips/fenv.h." 2012-07-31 20:54:18 -07:00
Elliott Hughes
96ca71a7a6 am 029cf34c: am 81f1617a: am 8d2c5b24: am b910b6f8: Merge "Updated the cleaned header file mman.h for MIPS."
* commit '029cf34cfd3fc50fe373527c82855924a1db41ad':
  Updated the cleaned header file mman.h for MIPS.
2012-07-31 15:35:53 -07:00
Elliott Hughes
029cf34cfd am 81f1617a: am 8d2c5b24: am b910b6f8: Merge "Updated the cleaned header file mman.h for MIPS."
* commit '81f1617a689931388c0b223ec729297b3a2bc792':
  Updated the cleaned header file mman.h for MIPS.
2012-07-31 15:33:45 -07:00
Elliott Hughes
81f1617a68 am 8d2c5b24: am b910b6f8: Merge "Updated the cleaned header file mman.h for MIPS."
* commit '8d2c5b247e701f51ce3d750e9ee3ff37009630c3':
  Updated the cleaned header file mman.h for MIPS.
2012-07-31 15:32:45 -07:00
Elliott Hughes
8d2c5b247e am b910b6f8: Merge "Updated the cleaned header file mman.h for MIPS."
* commit 'b910b6f8dee14e379664635f4cd7343b3acc7b27':
  Updated the cleaned header file mman.h for MIPS.
2012-07-31 15:31:53 -07:00
Elliott Hughes
b910b6f8de Merge "Updated the cleaned header file mman.h for MIPS." 2012-07-31 15:16:07 -07:00
The Android Open Source Project
338d3fbc8b am 6ac55791: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit '6ac557918a1a5703f0376f659e5cb1a9af6a2901':
2012-07-31 15:05:49 -07:00
The Android Open Source Project
6ac557918a Reconcile with jb-mr1-release - do not merge
Change-Id: Icba591905e72d5567b361d7e994cafc65e6f932a
2012-07-31 15:02:24 -07:00
Raghu Gandham
c29f295d39 Updated the cleaned header file mman.h for MIPS.
Change-Id: I8b3734e535711ca07fbf4066e6d967d1ce0f30eb
2012-07-31 14:47:51 -07:00
Elliott Hughes
0f004be596 am 494e534b: am f1997971: am 7645355e: am a513f70b: Merge "bionic: Stack pointer/signal race condition."
* commit '494e534b003a45c32e06d225cd89ad84777d28f7':
  bionic: Stack pointer/signal race condition.
2012-07-31 10:43:46 -07:00
Elliott Hughes
120e7fbeb9 am ad2e065d: am b78aa539: am bf397b60: am 21372896: Merge "fix __cxa_finalize() implementation to be thread safe."
* commit 'ad2e065de11748e1c33562cd2005ce14843d64f0':
  fix __cxa_finalize() implementation to be thread safe.
2012-07-31 10:43:45 -07:00
Elliott Hughes
494e534b00 am f1997971: am 7645355e: am a513f70b: Merge "bionic: Stack pointer/signal race condition."
* commit 'f19979710a2f34e5a6ef5cc6f900c40690d65db4':
  bionic: Stack pointer/signal race condition.
2012-07-31 10:41:41 -07:00
Elliott Hughes
ad2e065de1 am b78aa539: am bf397b60: am 21372896: Merge "fix __cxa_finalize() implementation to be thread safe."
* commit 'b78aa5390492cfe288d0128b749b18d2c740635e':
  fix __cxa_finalize() implementation to be thread safe.
2012-07-31 10:41:40 -07:00
Elliott Hughes
f19979710a am 7645355e: am a513f70b: Merge "bionic: Stack pointer/signal race condition."
* commit '7645355ecdf29301bdc65f9ea8e00c20e51da3f5':
  bionic: Stack pointer/signal race condition.
2012-07-31 10:40:06 -07:00
Elliott Hughes
b78aa53904 am bf397b60: am 21372896: Merge "fix __cxa_finalize() implementation to be thread safe."
* commit 'bf397b601189f8a63c8a842e16af5ed004ef75f5':
  fix __cxa_finalize() implementation to be thread safe.
2012-07-31 10:40:05 -07:00
Elliott Hughes
7645355ecd am a513f70b: Merge "bionic: Stack pointer/signal race condition."
* commit 'a513f70b43e75136145d756388b50028ac4fc4b8':
  bionic: Stack pointer/signal race condition.
2012-07-31 10:38:26 -07:00
Elliott Hughes
bf397b6011 am 21372896: Merge "fix __cxa_finalize() implementation to be thread safe."
* commit '21372896ea0f13938c130c8c82cdc3a6b9ccd297':
  fix __cxa_finalize() implementation to be thread safe.
2012-07-31 10:38:25 -07:00
Elliott Hughes
a513f70b43 Merge "bionic: Stack pointer/signal race condition." 2012-07-31 10:32:59 -07:00
Elliott Hughes
21372896ea Merge "fix __cxa_finalize() implementation to be thread safe." 2012-07-31 10:31:20 -07:00
The Android Automerger
15e0ca8186 merge in jb-mr1-release history after reset to jb-mr1-dev 2012-07-31 07:35:13 -07:00
Srinavasa Nagaraju
2270dfa0c4 fix __cxa_finalize() implementation to be thread safe.
__cxa_finalize() modifies the access permissions of __atexit
global variable without acquiring  _ATEXIT_LOCK(). Fix it prevent
any possible races.

Change-Id: I11939d0ebcbf6f360c14163222d40a449d96948e
2012-07-31 12:30:28 +02:00
Michael Hope
ea8fad11d9 Add a .note.android.ident section to Android ELF binaries.
This allows debugging tools to know they are working with Android
binaries and adapt accordingly.

Signed-off-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Signed-off-by: Michael Hope <michael.hope@linaro.org>

Change-Id: Ic906992fcad61c028bb765821637a3e1333bf52b
2012-07-31 16:18:22 +12:00
Shih-wei Liao
4e86ebb4b6 Had include/arm/fenv.h, but missed include/mips/fenv.h.
Needed for the device-build for LLVM's constant folding pass.

Change-Id: I412a98d52458231650801a8b59fe3159a789b8b9
Author: fu@mips.com
2012-07-30 20:12:46 -07:00
The Android Open Source Project
d8b46b7bc4 am 0531d199: Reconcile with jb-mr1-release
* commit '0531d199dca9d70ccfd4642f845de02736ecf87f':
2012-07-30 15:10:37 -07:00
The Android Open Source Project
0531d199dc Reconcile with jb-mr1-release
Change-Id: Ib68b14addd9f82526c451c988ae2e307cd7add19
2012-07-30 15:03:20 -07:00
Shih-wei Liao
a68c57ee5f am 0c2d3188: am 18421669: am 1ee6e3b7: Merge "Install crt(begin|end)_so.o to target library path."
* commit '0c2d3188373d7386b5946d1cf70155188cd616cd':
  Install crt(begin|end)_so.o to target library path.
2012-07-30 13:17:01 -07:00
Shih-wei Liao
0c2d318837 am 18421669: am 1ee6e3b7: Merge "Install crt(begin|end)_so.o to target library path."
* commit '184216696a9945a5bf6cb186b4d3a42ffe582818':
  Install crt(begin|end)_so.o to target library path.
2012-07-30 13:13:26 -07:00
Shih-wei Liao
184216696a am 1ee6e3b7: Merge "Install crt(begin|end)_so.o to target library path."
* commit '1ee6e3b7370b36ac72a14c0e31c34963b1bdbbb2':
  Install crt(begin|end)_so.o to target library path.
2012-07-30 13:10:11 -07:00
Shih-wei Liao
1ee6e3b737 Merge "Install crt(begin|end)_so.o to target library path." 2012-07-30 12:44:58 -07:00
Ed Heyl
e5b635c885 am 681ccffb: Merge jb-dev-mako plus fixes to libc/kernel/common/linux/fb.h
* commit '681ccffb4593875a3bcc2c17da9713a1215232d9':
  bionic: Update MDP and rotator headers
  Adding msm_dsps.h header
  Update msm headers for audio, camera, ion, charm, rmnet
  bionic: Update msm_mdp.h from the kernel
  update linux/fb.h to support fb ioctl in kernel 3.4
  Use sanitized video decode/encode header files
  bionic: Update MDP and KGSL headers
  add processed sound/tlv.h header
  add processed genlock.h for qualcomm
2012-07-29 22:40:26 -07:00
Ed Heyl
681ccffb45 Merge jb-dev-mako plus fixes to libc/kernel/common/linux/fb.h
Change-Id: I1fbe64653db7b8e9bfc6e10fa42deb295aa15a09
2012-07-29 08:22:16 -07:00
Shih-wei Liao
fc0725ec5c Install crt(begin|end)_so.o to target library path.
BUG=6886348.

Change-Id: I176b2c4963d9731b06d10d4e0b92c010a0006b59
2012-07-28 00:33:28 -07:00
Elliott Hughes
b7dd54f0c7 am d6c3369c: am 7a450b4d: am 643e5722: Merge "Report errors to the log, not just stderr."
* commit 'd6c3369cec68de60dec0d9ab7469457d817539e1':
  Report errors to the log, not just stderr.
2012-07-27 18:32:56 -07:00
Elliott Hughes
d6c3369cec am 7a450b4d: am 643e5722: Merge "Report errors to the log, not just stderr."
* commit '7a450b4d9efc5457a987f5b5665ca7c6e7f57e34':
  Report errors to the log, not just stderr.
2012-07-27 18:30:04 -07:00
Elliott Hughes
7a450b4d9e am 643e5722: Merge "Report errors to the log, not just stderr."
* commit '643e5722338d303c0b5aac41107432d8fde4081c':
  Report errors to the log, not just stderr.
2012-07-27 18:28:11 -07:00
Elliott Hughes
643e572233 Merge "Report errors to the log, not just stderr." 2012-07-27 18:16:17 -07:00
Elliott Hughes
52d6233296 Report errors to the log, not just stderr.
In particular this affects assert(3) and __cxa_pure_virtual, both of
which have managed to confuse people this week by apparently aborting
without reason. (Because stderr goes nowhere, normally.)

Bug: 6852995
Bug: 6840813
Change-Id: I7f5d17d5ddda439e217b7932096702dc013b9142
2012-07-27 17:43:38 -07:00
Elliott Hughes
65b48f892e am c823b2c7: am 616f3680: am a7916509: Merge "Fix a TEMP_FAILURE_RETRY usage error in the linker."
* commit 'c823b2c74137230fc1a166527b5141e3a6bacd65':
  Fix a TEMP_FAILURE_RETRY usage error in the linker.
2012-07-27 16:25:03 -07:00
Elliott Hughes
2eb46df63a am d7dfcb0c: am 514ace95: am 9061c6e7: Merge "Replace ALL_PREBUILTS with BUILD_PREBUILT"
* commit 'd7dfcb0cb07bc1bb2b716075697f86de1b4d8e54':
  Replace ALL_PREBUILTS with BUILD_PREBUILT
2012-07-27 16:24:50 -07:00
The Android Open Source Project
a1d1abbc26 am 22bd479e: am e35ae86e: Reconcile with jb-release
* commit '22bd479e2e8454ed726f8c650e52b78702262d34':
2012-07-27 16:24:00 -07:00
Elliott Hughes
c823b2c741 am 616f3680: am a7916509: Merge "Fix a TEMP_FAILURE_RETRY usage error in the linker."
* commit '616f368076c9d7f0fc4459b79ba26c1d1ec0a247':
  Fix a TEMP_FAILURE_RETRY usage error in the linker.
2012-07-27 16:00:36 -07:00
Elliott Hughes
616f368076 am a7916509: Merge "Fix a TEMP_FAILURE_RETRY usage error in the linker."
* commit 'a7916509a3446afd0e863b03e4204cee73e81555':
  Fix a TEMP_FAILURE_RETRY usage error in the linker.
2012-07-27 15:58:57 -07:00
Elliott Hughes
d7dfcb0cb0 am 514ace95: am 9061c6e7: Merge "Replace ALL_PREBUILTS with BUILD_PREBUILT"
* commit '514ace9534233aa7ef5ff3f9d9c614c94eeefc1f':
  Replace ALL_PREBUILTS with BUILD_PREBUILT
2012-07-27 15:51:24 -07:00
Elliott Hughes
514ace9534 am 9061c6e7: Merge "Replace ALL_PREBUILTS with BUILD_PREBUILT"
* commit '9061c6e7ae1d9b0e4d2f8a62b3682a565282f9b9':
  Replace ALL_PREBUILTS with BUILD_PREBUILT
2012-07-27 15:47:37 -07:00
The Android Open Source Project
22bd479e2e am e35ae86e: Reconcile with jb-release
* commit 'e35ae86e70b1e728c220867d5a2aa66955c87c34':
2012-07-27 15:45:49 -07:00
Elliott Hughes
a7916509a3 Merge "Fix a TEMP_FAILURE_RETRY usage error in the linker." 2012-07-27 15:43:11 -07:00
Elliott Hughes
8dfc073b14 Fix a TEMP_FAILURE_RETRY usage error in the linker.
Similar to the fix in c20d0f3993.

grep(1) says this was the only other instance in bionic.

Change-Id: I1729038762ee1c7c4743a6bd11d5558afd6f5749
2012-07-27 15:30:51 -07:00
The Android Open Source Project
e35ae86e70 Reconcile with jb-release
Change-Id: I89a2498aeb91f29a70f1e100c41f03cf41a2e49e
2012-07-27 14:49:51 -07:00
Elliott Hughes
9061c6e7ae Merge "Replace ALL_PREBUILTS with BUILD_PREBUILT" 2012-07-27 14:14:41 -07:00
Ying Wang
6171d11e72 Replace ALL_PREBUILTS with BUILD_PREBUILT
(cherry-picked from 186b36b65bdfbf2c89a661539bf530359364eac9.)

Bug: 6857263
Change-Id: If787d84415dd2ac07105fe0d0b7a27c9be75df64
2012-07-27 13:44:01 -07:00
Elliott Hughes
cb9ea8873a am 408e3e50: am 45038ae4: am 12f411d9: Merge "Correction to use of TEMP_FAILURE_RETRY in send_prop_msg"
* commit '408e3e5046ed030c464cdae6c95bc6a9d6de39cc':
  Correction to use of TEMP_FAILURE_RETRY in send_prop_msg
2012-07-27 10:21:45 -07:00
Elliott Hughes
408e3e5046 am 45038ae4: am 12f411d9: Merge "Correction to use of TEMP_FAILURE_RETRY in send_prop_msg"
* commit '45038ae483313a5cc445a90fb0499d4c6ad69b1d':
  Correction to use of TEMP_FAILURE_RETRY in send_prop_msg
2012-07-27 10:16:50 -07:00
Elliott Hughes
45038ae483 am 12f411d9: Merge "Correction to use of TEMP_FAILURE_RETRY in send_prop_msg"
* commit '12f411d9a696ca7a0fe490fb530a9accbda66a99':
  Correction to use of TEMP_FAILURE_RETRY in send_prop_msg
2012-07-27 10:14:50 -07:00
Elliott Hughes
12f411d9a6 Merge "Correction to use of TEMP_FAILURE_RETRY in send_prop_msg" 2012-07-27 10:02:59 -07:00
Jens Gulin
c20d0f3993 Correction to use of TEMP_FAILURE_RETRY in send_prop_msg
RETRY macro may retry command if result is -1. In this
case the command was "connect < 0" instead of just
connect. The comparison will not return -1 and thus
retry is never done. This is now corrected so that
interrupts will cause retry instead of fail.

(There was no other negative side effect of the bug.
The result code from RETRY was used in an if-statement
and it would be true for all negative connect results.
This was according to expectations.)

Change-Id: Ie206b39878e9befea4e3be9a4061ee39eb232d80
2012-07-27 15:18:23 +02:00
Peter Enderborg
3460db9490 bionic: Stack pointer/signal race condition.
Move the stackpointer so a captured signal does not corrupt
stack variables needed for __thread_entry.

Change-Id: I3e1e7b94a6d7cd3a07081f849043262743aa8064
2012-07-27 15:11:01 +02:00
Elliott Hughes
6320848df6 am c636ff19: am 9a9ca7c1: am 7d6c3f70: Merge "Remove the \'Factory\' time zone by not processing the \'factory\' file."
* commit 'c636ff1944ca9c67953e3162ba7a8c39e44fff42':
  Remove the 'Factory' time zone by not processing the 'factory' file.
2012-07-26 22:56:12 -07:00
Elliott Hughes
c636ff1944 am 9a9ca7c1: am 7d6c3f70: Merge "Remove the \'Factory\' time zone by not processing the \'factory\' file."
* commit '9a9ca7c1e8079aaae6b1833bd06719e98ca0783e':
  Remove the 'Factory' time zone by not processing the 'factory' file.
2012-07-26 22:34:57 -07:00
Elliott Hughes
9a9ca7c1e8 am 7d6c3f70: Merge "Remove the \'Factory\' time zone by not processing the \'factory\' file."
* commit '7d6c3f700b8089d31a33ba0f9f6eed9407724d0d':
  Remove the 'Factory' time zone by not processing the 'factory' file.
2012-07-26 17:44:38 -07:00
Elliott Hughes
7d6c3f700b Merge "Remove the 'Factory' time zone by not processing the 'factory' file." 2012-07-26 17:36:21 -07:00
Elliott Hughes
541c225320 Remove the 'Factory' time zone by not processing the 'factory' file.
The factory file (and Factory time zone) was meant as a way to say
"not configured" that would give a clear error when running date(1).
For us it would just look like UTC, so it is of no value.

Bug: 2997381
Change-Id: I1a4b85dce97d1d9370b22ba79e8fe5dafff56541
2012-07-26 16:19:46 -07:00
Ying Wang
186b36b65b Replace ALL_PREBUILTS with BUILD_PREBUILT
Bug: 6857263
Change-Id: Ib639f1c4d572fec088298f95f6d5a2951d56cd12
2012-07-26 15:55:34 -07:00
Nick Kralevich
68c1f682ff am b4fc64c9: am cc5edd83: Merge "vfprintf: fix spelling."
* commit 'b4fc64c96cad1be63b5c52af835c4a93b0e60204':
  vfprintf: fix spelling.
2012-07-25 22:26:13 -07:00
Nick Kralevich
b4fc64c96c am cc5edd83: Merge "vfprintf: fix spelling."
* commit 'cc5edd83ec0303ceb682c563073d98f8a592737d':
  vfprintf: fix spelling.
2012-07-25 22:22:20 -07:00
Nick Kralevich
cc5edd83ec Merge "vfprintf: fix spelling." 2012-07-25 16:09:34 -07:00
Nick Kralevich
9145ad3f0a vfprintf: fix spelling.
Change-Id: I6dc611143fb1f3e9ccf0a77b40ee48a3c1d72ca9
2012-07-25 16:01:38 -07:00
The Android Automerger
f40c69c259 merge in master-release history after reset to master 2012-07-25 07:49:07 -07:00
The Android Automerger
a501f6c7e3 merge in jb-release history after reset to jb-dev 2012-07-24 20:23:07 -07:00
Elliott Hughes
edc5fe530f am 9dbd4c06: am c27103d8: Merge "[MIPS] Use an aligned address to provoke SIGSEGV in abort()"
* commit '9dbd4c06fe143a4187d2d8d418c1a3b7c1ed39ba':
  [MIPS] Use an aligned address to provoke SIGSEGV in abort()
2012-07-24 18:05:28 -07:00
Elliott Hughes
7c3323516b am 860dc7e2: am c98e2365: Merge "Fix implementation of generic atomic operations"
* commit '860dc7e25d4ba64b5bd49fe123bae6e6105dd2e7':
  Fix implementation of generic atomic operations
2012-07-24 18:05:27 -07:00
Elliott Hughes
9dbd4c06fe am c27103d8: Merge "[MIPS] Use an aligned address to provoke SIGSEGV in abort()"
* commit 'c27103d84c124d40f3f4cff46d7cfa74342e0585':
  [MIPS] Use an aligned address to provoke SIGSEGV in abort()
2012-07-24 18:03:22 -07:00
Elliott Hughes
860dc7e25d am c98e2365: Merge "Fix implementation of generic atomic operations"
* commit 'c98e2365cdd0c2330711118b689171df143f6399':
  Fix implementation of generic atomic operations
2012-07-24 18:03:12 -07:00
Elliott Hughes
c27103d84c Merge "[MIPS] Use an aligned address to provoke SIGSEGV in abort()" 2012-07-24 17:42:51 -07:00
Chris Dearman
00a66a6fe8 [MIPS] Use an aligned address to provoke SIGSEGV in abort()
Change-Id: I269c9ccc07058773fb0f9d70673673157ab38f6a
2012-07-24 17:42:06 -07:00
Elliott Hughes
c98e2365cd Merge "Fix implementation of generic atomic operations" 2012-07-24 17:21:47 -07:00
Chris Dearman
958dad705a Fix implementation of generic atomic operations
Change-Id: Ie1ea5aacc561e2d6d40125d2952ed0e9116b7b0d
2012-07-24 13:56:38 -07:00
Elliott Hughes
0b82e1bd77 am d33ce20e: am 344aca8c: Merge "[MIPS] Add atomic routines"
* commit 'd33ce20e6dfbe5be081867c9ace538022991bb10':
  [MIPS] Add atomic routines
2012-07-24 13:53:37 -07:00
Elliott Hughes
d33ce20e6d am 344aca8c: Merge "[MIPS] Add atomic routines"
* commit '344aca8ced2522074f799439e201226377d02dba':
  [MIPS] Add atomic routines
2012-07-24 13:51:10 -07:00
Elliott Hughes
344aca8ced Merge "[MIPS] Add atomic routines" 2012-07-24 13:41:06 -07:00
Raghu Gandham
f7fb9e1ef1 [MIPS] Add atomic routines
Change-Id: I2cb20ce44dd230d222b7fc1ede2e1e3dce6e692b
2012-07-24 10:30:22 -07:00
The Android Automerger
1e52e79b70 merge in master-release history after reset to master 2012-07-24 07:49:06 -07:00
Elliott Hughes
7cfe2c5c07 am 5e2a2705: am b109e437: Merge "Upgrade to tzdata2012d."
* commit '5e2a2705f237130bc516b62ff1372e94ad508f12':
  Upgrade to tzdata2012d.
2012-07-23 19:04:50 -07:00
Elliott Hughes
5e2a2705f2 am b109e437: Merge "Upgrade to tzdata2012d."
* commit 'b109e437fcbc1cbe09fce8ce2abb6f951d5a0274':
  Upgrade to tzdata2012d.
2012-07-21 14:20:17 -07:00
Elliott Hughes
b109e437fc Merge "Upgrade to tzdata2012d." 2012-07-21 14:09:24 -07:00
Elliott Hughes
5d967e43d0 Upgrade to tzdata2012d.
This upgrade involved rewriting the script; the data has moved to ftp.iana.org,
where it's slightly less convenient to access, so it's time to use something
that can talk FTP...

As for tzdata2012d, it's just updating Morocco for this weekend's changes, now
they've been decided at the last minute (as usual).

Change-Id: I772df57a6e09b3bf3d9541bfc08930d6f18633b4
2012-07-20 16:53:32 -07:00
Elliott Hughes
acda32c8f2 am a94c708a: am 654b1501: Merge "Update time.h for CLOCK_BOOTTIME."
* commit 'a94c708a15713535c0ece63ffc43d016eccfebe1':
  Update time.h for CLOCK_BOOTTIME.
2012-07-20 10:00:47 -07:00
Naseer Ahmed
2730674ca9 bionic: Update MDP and rotator headers
Change-Id: I585e07b004dfa6b5113050211ca67e4c057f5531
2012-07-20 08:54:32 -07:00
The Android Automerger
aaba380787 merge in master-release history after reset to master 2012-07-20 07:59:22 -07:00
Elliott Hughes
a94c708a15 am 654b1501: Merge "Update time.h for CLOCK_BOOTTIME."
* commit '654b1501f7a936034d07f579c3d4a15d1319dac2':
  Update time.h for CLOCK_BOOTTIME.
2012-07-19 17:37:33 -07:00
Elliott Hughes
654b1501f7 Merge "Update time.h for CLOCK_BOOTTIME." 2012-07-19 17:18:37 -07:00
Nick Pelly
0351955a68 Update time.h for CLOCK_BOOTTIME.
(cherry-pick of 8958a38329)

Change-Id: Ie8de6b32fa81566db53ad7e9fd4b197f4cede628
2012-07-19 17:10:14 -07:00
Nick Pelly
8958a38329 Update time.h for CLOCK_BOOTTIME.
Change-Id: Iafbc6a2f57587feb68526e4eab67452aa0db5311
2012-07-19 16:33:58 -07:00
The Android Open Source Project
6591be6c52 Reconcile with jb-mr0-release
Change-Id: I5e181b92fbcc4b3d312396124a149f1c5224e55b
2012-07-19 08:35:39 -07:00
The Android Automerger
43ef6784df merge in master-release history after reset to master 2012-07-19 07:49:05 -07:00
Ajay Dudani
3e210abf7d Adding msm_dsps.h header
Change-Id: I7736a3a895b9c81d5184f7c97ac0ed5aeb138d25
2012-07-19 07:26:26 -07:00
The Android Automerger
59fae8abaf merge in jb-release history after reset to jb-dev 2012-07-18 23:04:34 -07:00
Nick Kralevich
f6ee33cee7 Merge "linker: Fix LD_PRELOADS for calling constructors" 2012-07-18 14:02:22 -07:00
The Android Automerger
d18f341398 merge in master-release history after reset to master 2012-07-17 09:10:34 -07:00
Nick Kralevich
761ba27d62 Merge "FORTIFY_SOURCE: revert memcpy changes." 2012-07-16 15:18:43 -07:00
Elliott Hughes
3fd5e91e58 Merge "bionic: Report linker relocation address to gdb" 2012-07-16 11:38:23 -07:00
Elliott Hughes
05f03b8875 Merge "linker: cleanup of undefined state handling, which is really dead code" 2012-07-16 10:08:17 -07:00
Robin Burchell
8211bc6325 linker: cleanup of undefined state handling, which is really dead code
Given that _elf_lookup (and thus, _do_lookup) cannot possibly return an
undefined symbol (due to the check for SHN_UNDEF in _elf_lookup), there's
no need for spurious checks for SHN_UNDEF on its return value.

Conflicts:

	linker/linker.c

Change-Id: Ic73cf439924b45f72d4d9ba3f64a888c96cbbd9b
2012-07-16 10:03:35 -07:00
Elliott Hughes
decb531ce2 Merge "linker: Use SHN_UNDEF instead of describing what it is trying to do." 2012-07-16 10:00:38 -07:00
Robin Burchell
439fa8ea8c linker: Use SHN_UNDEF instead of describing what it is trying to do. 2012-07-16 09:51:17 -07:00
Elliott Hughes
8d7355ac2f Merge "Use std=gnu99 for the dynamic linker as well as libc." 2012-07-16 09:45:27 -07:00
Elliott Hughes
856512ea9c Use std=gnu99 for the dynamic linker as well as libc.
Change-Id: I76dd78576c5af6eb6282555f069647b6260edc31
2012-07-16 09:43:14 -07:00
Elliott Hughes
fabddfe833 Merge "limits.h: Include page.h when relying on PAGE_SIZE" 2012-07-16 09:39:24 -07:00
Nick Kralevich
b0f0d4276d Merge "FORTIFY_SOURCE: revert memcpy changes." 2012-07-16 08:24:32 -07:00
Ryan V. Bissell
bb5c30a3ee bionic: Report linker relocation address to gdb
GDB needs the runtime linker's base address in order to
locate the latter's ".text" and ".plt" sections, for the
purpose of detecting solib trampolines.  It also can
potentially use this to calculate the relocated address
of rtld_db_dlactivity.

Bug: http://code.google.com/p/android/issues/detail?id=34856
Change-Id: I63d3e7ae4e20a684ceb25967f2241e7d58dd685d
Signed-off-by: Ryan V. Bissell <ryan@bissell.org>
2012-07-16 02:16:18 -05:00
Kito Cheng
326e85eca6 linker: Fix LD_PRELOADS for calling constructors
Change-Id: I1eae77a4c59e8a5acc009127d271455bb6fc01b6
2012-07-15 00:49:34 +08:00
Nick Kralevich
c37fc1ab6a FORTIFY_SOURCE: revert memcpy changes.
Performance regressions.  Hopefully this is a temporary
rollback.

Bug: 6821003
Change-Id: I84abbb89e1739d506b583f2f1668f31534127764
2012-07-13 17:58:37 -07:00
Nick Kralevich
e1d909f71e Merge "FORTIFY_SOURCE: introduce __BIONIC_FORTIFY_UNKNOWN_SIZE macro" 2012-07-13 15:06:56 -07:00
Nick Kralevich
147b0690a9 Merge "FORTIFY_SOURCE: strlen check." 2012-07-13 15:06:41 -07:00
Nick Kralevich
ad7f966281 Merge "FORTIFY_SOURCE: restore __memcpy_chk()" 2012-07-13 14:52:26 -07:00
Nick Kralevich
9b6cc223a3 FORTIFY_SOURCE: introduce __BIONIC_FORTIFY_UNKNOWN_SIZE macro
Replace all occurances of "(size_t) -1" with a
__BIONIC_FORTIFY_UNKNOWN_SIZE macro.

Change-Id: I0b188f6cf31417d2dbef0e1bd759de3f9782873a
2012-07-13 14:49:33 -07:00
Nick Kralevich
260bf8cfe0 FORTIFY_SOURCE: strlen check.
This test is designed to detect code such as:

int main() {
  char buf[10];
  memcpy(buf, "1234567890", sizeof(buf));
  size_t len = strlen(buf); // segfault here with _FORTIFY_SOURCE
  printf("%d\n", len);
  return 0;
}

or anytime strlen reads beyond an object boundary. This should
help address memory leakage vulnerabilities and make other
unrelated vulnerabilities harder to exploit.

Change-Id: I354b425be7bef4713c85f6bab0e9738445e00182
2012-07-13 13:49:59 -07:00
Nick Kralevich
b2060b027c FORTIFY_SOURCE: restore __memcpy_chk()
In our previous FORTIFY_SOURCE change, we started using a custom
inline for memcpy(), rather than using GCC's __builtin_memcpy_chk().
This allowed us to delete our copy of __memcpy_chk(), and replace it
by __memcpy_chk2().

Apparently GCC uses __memcpy_chk() outside of __builtin_memcpy_chk().
Specifically, __memcpy_chk() is used by __builtin__memMOVE_chk() under
certain optimization levels.

Keep the old __memcpy_chk() function around, and have it call into
__memcpy_chk2().

Change-Id: I2453930b24b8a492a3b6ed860e18d92a6b762b80
2012-07-13 13:49:45 -07:00
Nick Kralevich
88bfc28ac4 Merge "FORTIFY_SOURCE: enhanced memcpy protections." 2012-07-13 07:57:58 -07:00
Yaroslav Miroshnychenko
c7dcd67d56 Add missing va_end() to prevent stack corruptions
Added va_end() for copied variable arguments lists
in __vfprintf() and __find_arguments().
This is by C standard.
Important for systems which pass arguments in registers.

Change-Id: I7ac42beaa6645bfe856c18132253352dae29ea37
2012-07-13 09:37:57 +02:00
Nick Kralevich
f3913b5b68 FORTIFY_SOURCE: enhanced memcpy protections.
Two changes:

1) Detect memory read overruns.

For example:

int main() {
  char buf[10];
  memcpy(buf, "abcde", sizeof(buf));
  sprintf("%s\n", buf);
}

because "abcde" is only 6 bytes, copying 10 bytes from it is a bug.
This particular bug will be detected at compile time.  Other similar
bugs may be detected at runtime.

2) Detect overlapping buffers on memcpy()

It is a bug to call memcpy() on buffers which overlap. For
example, the following code is buggy:

  char buf3[0x800];
  char *first_half  = &buf3[0x400];
  char *second_half = &buf3[1];
  memset(buf3, 0, sizeof(buf3));
  memcpy(first_half, second_half, 0x400);
  printf("1: %s\n", buf3);

We now detect this at compile and run time.

Change-Id: I092bd89f11f18e08e8a9dda0ca903aaea8e06d91
2012-07-12 15:38:15 -07:00
Nick Kralevich
86a4fca0b4 Merge "memmove: Don't call memcpy if regions overlap" 2012-07-12 10:06:28 -07:00
The Android Automerger
e13338429f merge in jb-mr0-release history after reset to jb-dev 2012-07-11 23:11:59 -07:00
Nick Kralevich
e64259e860 memmove: Don't call memcpy if regions overlap
memmove() unconditionally calls memcpy() if "dst" < "src". For
example, in the code below, memmove() would end up calling memcpy(),
even though the regions of memory overlap.

int main() {
  char buf3[0x800];
  char *dst  = &buf3[1];
  char *src = &buf3[0x400];
  memset(buf3, 0, sizeof(buf3));
  memmove(dst, src, 0x400);
  printf("1: %s\n", buf3);
  return 0;
}

Calling memcpy() on overlaping regions only works if you assume
that memcpy() copies from start to finish. On some architectures,
it's more efficient to call memcpy() from finish to start.

This is also triggering a failure in some of my code.

More reading:
* http://lwn.net/Articles/414467/
* https://bugzilla.redhat.com/show_bug.cgi?id=638477#c31 (comment 31)

Change-Id: I65a51ae3a52dd4af335fe5c278056b8c2cbd8948
2012-07-11 17:46:03 -07:00
Nick Kralevich
6334c662ca Don't use -fstack-protector on ssp.c
libc's stack protector initialization routine (__guard_setup)
is in bionic/ssp.c. This code deliberately modifies the stack
canary.  This code should never be compiled with -fstack-protector-all
otherwise it will crash (mismatched canary value).

Force bionic/ssp.c to be compiled with -fno-stack-protector

Change-Id: Ib95a5736e4bafe1a460d6b4e522ca660b417d8d6
2012-07-10 10:51:41 -07:00
Arun Raghavan
6331db3fd2 limits.h: Include page.h when relying on PAGE_SIZE
limits.h relies on PAGE_SIZE being defined without actually including
page.h. Make sure this is included to avoid compilation failures.

Signed-off-by: Arun Raghavan <arun.raghavan@collabora.co.uk>
2012-07-10 10:36:37 +05:30
Nick Kralevich
8f08e1c902 Merge "FORTIFY_SOURCE: Add openat, fix bug" 2012-07-09 12:55:32 -07:00
Nick Kralevich
a3e230d1fa FORTIFY_SOURCE: Add openat, fix bug
Add fortify_source support for openat(). This change requires that
an argument be supplied when using O_CREAT.

Fix unnecessary call to __open_2. If, at compile time, we know that
"flags" is constant and DOESN'T contain O_CREAT, the call to __open_2
is useless.

Change-Id: Ifcd29c4fb25e25656961d7552d672e161f0cfdbd
2012-07-09 12:30:40 -07:00
Nick Kralevich
a099e8e7d3 Merge "FORTIFY_SOURCE: add fgets support." 2012-07-09 12:28:35 -07:00
Andrew Hsieh
793e6aedf2 am 67636eea: am 40e7ed58: Unhide rtld_db_dlactivity()
* commit '67636eea20f7789e6689ee8cf6017e7d48735ca1':
  Unhide rtld_db_dlactivity()
2012-07-09 11:07:46 -07:00
Andrew Hsieh
b9462d5f88 am 40e7ed58: Unhide rtld_db_dlactivity()
* commit '40e7ed58d73eae59d0cf2fed61284d16692e307b':
  Unhide rtld_db_dlactivity()
2012-07-09 11:05:49 -07:00
Andrew Hsieh
67636eea20 am 40e7ed58: Unhide rtld_db_dlactivity()
* commit '40e7ed58d73eae59d0cf2fed61284d16692e307b':
  Unhide rtld_db_dlactivity()
2012-07-09 11:05:16 -07:00
Nick Kralevich
965dbc6405 FORTIFY_SOURCE: add fgets support.
Change-Id: I8c3410a90c71a3336c4ac8581618fa9330edf5e3
2012-07-09 09:57:18 -07:00
Ajay Dudani
3fc3b7fd94 Update msm headers for audio, camera, ion, charm, rmnet
Change-Id: I226a1c57b94ea542fa5f3ea081582d49b3b9a3d1
2012-07-08 23:53:32 -07:00
Naseer Ahmed
05ad617b5b bionic: Update msm_mdp.h from the kernel
Adds more color formats that were missing

Change-Id: I4e247ab630d9afa3ba75444bde7cd2dcd39f2ab2
2012-07-06 12:03:26 -07:00
choongryeol.lee
402b93c16d update linux/fb.h to support fb ioctl in kernel 3.4
Change-Id: I959e4f445360263a34f20b0ae1a8b42123710c13
2012-06-28 21:11:08 -07:00
Rebecca Schultz Zavin
2ddf77b377 Merge "Modify ion header" 2012-06-28 14:16:10 -07:00
Nick Kralevich
bd73eede46 Merge "FORTIFY_SOURCE: add open() checks" 2012-06-27 12:56:52 -07:00
Nick Kralevich
cb228fb4a9 libc: cleanups
Prefix private functions with underscores, to prevent name
conflicts.

Use __error__ instead of error, since occasionally programs will
create their own "#define error ...".

Change-Id: I7bb171df58aec5627e61896032a140db547fd95d
2012-06-26 16:05:19 -07:00
Nick Kralevich
8118f62a7d FORTIFY_SOURCE: add open() checks
Add a FORTIFY_SOURCE check which requires that you pass a
"mode" argument when calling open(..., O_CREAT). If a mode isn't
passed, then the file is created with "undefined" permissions.

Change-Id: I4427be4f9ce170c69da01af5b00fb05b03613a28
2012-06-26 15:19:12 -07:00
David 'Digit' Turner
b52e4385c4 linker: improve loadable segment protection.
Use the functions in linker_phdr.c to load the PT_LOAD segments
in memory, and toggle their mapping's writable protection bit
as needed. In particular:

  - when loading a library, load the segments then unprotected
    them to allow relocations to work.

  - when relocating the linker of the executable, unprotect
    the segments loaded by the kernel to make relocations work
    too.

  - after all relocations are done, re-protect the segments,
    and apply GNU RELRO protection if needed.

  - just before calling the destructors, undo the GNU RELRO
    protection.

Change-Id: I50e709f03958204b8d6140c0f51ebe24fe089a1b
2012-06-26 10:39:55 +02:00
David 'Digit' Turner
63f99f4a4e linker: simplify code for dynamic and ARM exidx sections.
This moves the code that determines where the .dynamic and .ARM.exidx
sections are to a single place in soinfo_link_image().

Change-Id: I98adcb440577bed86442349f03f3c629c945efec
2012-06-26 10:39:55 +02:00
David 'Digit' Turner
8941cfa17a Merge "linker: rename load_offset to load_bias." 2012-06-26 01:34:41 -07:00
David 'Digit' Turner
ff9ff758ad Merge "linker: avoid mapping the whole library before load." 2012-06-26 01:34:31 -07:00
David 'Digit' Turner
48d6c8ed23 Merge "linker: Add PAGE_START/OFFSET/END convenience macros" 2012-06-26 01:34:18 -07:00
David 'Digit' Turner
c6025b6047 Merge "linker: New sources to manage the ELF program header table." 2012-06-26 01:34:07 -07:00
Elliott Hughes
0ff08d22f0 am 5af97ca8: am c7bab8cb: Merge "Enable sqrtf() x86 assembly code"
* commit '5af97ca8514d9fb4175bff3a79abf26889b94530':
  Enable sqrtf() x86 assembly code
2012-06-25 14:09:42 -07:00
Elliott Hughes
5af97ca851 am c7bab8cb: Merge "Enable sqrtf() x86 assembly code"
* commit 'c7bab8cb8483e7869eabdbd4add7c9e5beeecc80':
  Enable sqrtf() x86 assembly code
2012-06-25 14:06:06 -07:00
Elliott Hughes
c7bab8cb84 Merge "Enable sqrtf() x86 assembly code" 2012-06-25 10:46:41 -07:00
David 'Digit' Turner
bea23e59f7 linker: rename load_offset to load_bias.
This patch changes the definition of the 'load_offset' field
in struct soinfo. The field is renamed because it is not the
basic load bias to add to every p_vaddr value read from the ELF
file to get the corresponding memory address.

This also slightly simplifies the relocation code.

+ Fix for proper load_bias computation for relocatable executables.

Change-Id: I72502c75a70751cba324deee7d313ae61f96609e
2012-06-25 11:52:40 +02:00
David 'Digit' Turner
23363ed750 linker: avoid mapping the whole library before load.
This patch changes the load_library() function in the
dynamic linker to avoid reserving a huge read-only
address-space range just to read the ELF header and
program header (which are typically very small and easily
fit in the first page).

Instead, we use the functions in linker_phdr.c to only
load the data that we need in a temporary mmap-allocated
page of memory, which we release when the function exits.

This avoids issues when loading very large libraries, or
simply debug versions that only need to load a tiny percentage
of their overall file content in RAM.

Change-Id: Id3a189fad2119a870a1b3d43dd81380c54ea6044
2012-06-25 11:52:40 +02:00
David 'Digit' Turner
a6545f4678 linker: Add PAGE_START/OFFSET/END convenience macros
This patch adds a few macros related to memory pages to help
clarify some of the code in linker.c

Change-Id: I36c727132d257b1497398dd0a9e8a5a4505467ca
2012-06-25 11:52:40 +02:00
David 'Digit' Turner
c1bd559d5b linker: New sources to manage the ELF program header table.
This patch introduces two new source files containing a set of functions
to manage the program header table in an ELF binary, including the ability
to load PT_LOAD segments, and apply PT_GNU_RELRO protection.

Note: the files are not used currently, this will appear in a series
      of future patches that will gradually modify linker.c to use
      the phdr_table_xxx functions properly.

Change-Id: Ia3d4c1ff5fc3e265d8258b64b492f4e643f51bdc
2012-06-25 11:52:40 +02:00
xqian6
29aa009924 Enable sqrtf() x86 assembly code
This patch can improve the sqrtf() performance.

Change-Id: Ic9d11d6a9ecd9b263f54d4878e13595e136b95ce
2012-06-25 16:20:09 +08:00
Evgeniy Stepanov
20bc061dc7 Add module base to main executable's ARM_exidx.
BUG:6697872

Change-Id: I448f4b86397307086231776da38a7af334a75fe5
2012-06-22 14:56:01 +04:00
Haynes Mathew George
3fad2b17b9 Use sanitized video decode/encode header files
Change-Id: Id4897181da94af51992c71cd49aff1f40970e6c7
2012-06-21 15:45:28 -07:00
Naseer Ahmed
240b3349fc bionic: Update MDP and KGSL headers
Update headers for MSM MDP, MSM KGSL and MSM
rotator to match the version in the Linux
3.4 kernel baseline

Change-Id: I37052486be8c8862e65cac1f6934368ecc055a76
2012-06-21 11:50:01 -07:00
Andrew Hsieh
63d0ceec75 am fa136e8c: am a5948157: Merge "Define __stack_chk_fail_local.S"
* commit 'fa136e8ca71cb20956cd1792251869cac8bed257':
  Define __stack_chk_fail_local.S
2012-06-20 19:00:55 -07:00
Andrew Hsieh
fa136e8ca7 am a5948157: Merge "Define __stack_chk_fail_local.S"
* commit 'a5948157fd34acb2b1d1bfaf129901af865ab5fc':
  Define __stack_chk_fail_local.S
2012-06-20 18:58:18 -07:00
Andrew Hsieh
a5948157fd Merge "Define __stack_chk_fail_local.S" 2012-06-20 18:37:48 -07:00
Andrew Hsieh
6973e3da87 Define __stack_chk_fail_local.S
With -fstack-protector, x86 -m32 needs __stack_chk_fail_local
defined in crtbegin_*.o.

Include __stack_chk_fail_local.S in begin.S otherwise linker
(which is built w/o crt*) may not link.

Change-Id: Id242fcf3eff157264afe3b04f27288ab7991220a
2012-06-21 09:26:33 +08:00
The Android Open Source Project
214feeba19 am effc607e: Reconcile with jb-release
* commit 'effc607e87add0aec14fefb4ac1c00d36559149a':
2012-06-20 08:28:23 -07:00
The Android Open Source Project
effc607e87 Reconcile with jb-release
Change-Id: Ia5de9692e507a605d3b6937ec65da26169a3ea8e
2012-06-20 08:25:32 -07:00
The Android Automerger
77093f2a8b merge in jb-release history after reset to jb-dev 2012-06-20 06:59:21 -07:00
David 'Digit' Turner
823aeb9294 Merge "linker: reduce size by nearly 20KB" 2012-06-19 14:51:28 -07:00
Andy McFadden
f2ba5c9afa am 63c4179f: am 4d0128f1: Merge "Minor tweak to get memory around corrupted heap chunks dumped." into jb-dev
* commit '63c4179f5951edc2d68700fe75659fbd34febe63':
  Minor tweak to get memory around corrupted heap chunks dumped.
2012-06-19 11:33:19 -07:00
Andy McFadden
63c4179f59 am 4d0128f1: Merge "Minor tweak to get memory around corrupted heap chunks dumped." into jb-dev
* commit '4d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3':
  Minor tweak to get memory around corrupted heap chunks dumped.
2012-06-19 11:31:14 -07:00
Andy McFadden
5e94df8a4f am 4d0128f1: Merge "Minor tweak to get memory around corrupted heap chunks dumped." into jb-dev
* commit '4d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3':
  Minor tweak to get memory around corrupted heap chunks dumped.
2012-06-19 11:31:06 -07:00
David 'Digit' Turner
166b7dbd4a linker: reduce size by nearly 20KB
This patch adds a trivial implementation of snprintf() that calls
our internal vsnprintf().

Inspection of the generated machine code showed that the linker
contained a full implementation of stdio's vfprintf. It was pulled
in because the pthread implementation uses snprintf() somewhere.

ProTip: It's possible to see why specific objects files are included
in a final binary by adding the following to your Android.mk, then
looking at the content of /tmp/MAP.TXT:

  LOCAL_LDFLAGS += -Wl,-Map=/tmp/MAP.TXT

Change-Id: I325e71b0cad1d01116a2e00c09e30a80cb716aa3
2012-06-19 10:53:11 +02:00
Arve Hjønnevåg
ece8f502ed Merge "Add watchdog.h" 2012-06-14 16:13:16 -07:00
Nick Kralevich
70f6901c3d libc: make atoi, atol, and atoll pure functions
Change-Id: Ib831c079c865929b6c91d42f35e117f2e974808f
2012-06-14 13:57:43 -07:00
Nick Kralevich
8df49ad246 FORTIFY_SOURCE: add strlcpy / strlcat support
Add strlcpy / strlcat support to FORTIFY_SOURCE. This allows
us to do consistency checks on to ensure we don't overflow buffers
when the compiler is able to tell us the size of the buffer we're
dealing with.

Unlike previous changes, this change DOES NOT use the compiler's
builtin support. Instead, we do everything the compiler would
normally do.

Change-Id: I47c099a911382452eafd711f8e9bfe7c2d0a0d22
2012-06-14 12:52:42 -07:00
Arve Hjønnevåg
420f4939b3 Add watchdog.h
Change-Id: Ib12d437151ccfbd634e9f01acd8556c79977ca04
2012-06-13 21:58:08 -07:00
David 'Digit' Turner
4442d512c6 Merge "linker: small code-cleanup" 2012-06-13 21:45:52 -07:00
Nick Kralevich
a5eaa02f62 Merge "Don't mark realloc with __attribute__((malloc))" 2012-06-13 16:13:32 -07:00
Nick Kralevich
b27631b9ae Don't mark realloc with __attribute__((malloc))
According to
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

realloc should NOT be marked with __attribute__((malloc)). Quoting:

   realloc-like functions do not have this property as the memory
   pointed to does not have undefined content.

For reference, __mallocfunc is defined in sys/cdefs.h as:

    #define __mallocfunc  __attribute__((malloc))

Change-Id: I56083542ba92e4608dd7c55fb5596a138eb50cc9
2012-06-13 15:43:14 -07:00
David 'Digit' Turner
1608416811 linker: small code-cleanup
This patch adds to make the linker a little bit easier to understand
by making all functions that acts on a sofino object with a soinfo_
prefix.

This is to more easily distinguish functions that operate on global
state, and those that operate on individual libraries.

This should be purely stylistic, i.e. no feature/behaviour change.

Change-Id: Ie510d13d743aa4317644caefa9910b8af7e84f44
2012-06-13 22:47:20 +02:00
Nick Kralevich
8c54c56723 Merge "FORTIFY_SOURCE: add sprintf / vsprintf support" 2012-06-13 11:03:42 -07:00
Nick Kralevich
9b549c39c9 FORTIFY_SOURCE: add sprintf / vsprintf support
sprintf FORTIFY_SOURCE protections are not available
on clang.

Also add various __attribute__s to stdio functions.

Change-Id: I936d1f9e55fe53a68885c4524b7b59e68fed218d
2012-06-13 09:14:30 -07:00
Nick Kralevich
ca622f5748 Merge "update filter.h / prctl.h / seccomp.h" 2012-06-12 16:34:46 -07:00
Robert Greenwalt
8f88aa7d38 am c5cab345: am 028ccf5d: Merge "Avoid multiple dns lookups for the same query"
* commit 'c5cab3452d5ced55474e56497594579108670b51':
  Avoid multiple dns lookups for the same query
2012-06-12 15:56:29 -07:00
Robert Greenwalt
c5cab3452d am 028ccf5d: Merge "Avoid multiple dns lookups for the same query"
* commit '028ccf5d40dd9a945ea92aa79822c08c6f6aa1d2':
  Avoid multiple dns lookups for the same query
2012-06-12 15:52:56 -07:00
Nick Kralevich
d1a6918508 update filter.h / prctl.h / seccomp.h
Pull in an updated version of filter.h / prctl.h / seccomp.h
from the linux kernel.  Pulled from upstream kernel at
94fa83c424321189ca24fb6cb4c0d224cdedc72d

This file was generated using the following command:

cd bionic/libc/kernel/
./tools/clean_header.py -u ../../../external/kernel-headers/original/linux/seccomp.h
./tools/clean_header.py -u ../../../external/kernel-headers/original/linux/filter.h
./tools/clean_header.py -u ../../../external/kernel-headers/original/linux/prctl.h

Change-Id: I1ca996541d05b0d5927ab828a6ce49c09877ea01
2012-06-12 15:46:31 -07:00
Robert Greenwalt
028ccf5d40 Merge "Avoid multiple dns lookups for the same query" 2012-06-12 15:06:24 -07:00
Nick Kralevich
c2f1d215b1 Merge "FORTIFY_SOURCE: add snprintf, vsnprintf" 2012-06-12 08:50:57 -07:00
Elliott Hughes
f525fb525b am 20afd4e7: am e0961445: Merge "Remove the meaningless on Linux if_dl.h header."
* commit '20afd4e70c2f346d7cd03a7a3049f8de2d176d5c':
  Remove the meaningless on Linux if_dl.h header.
2012-06-11 17:42:44 -07:00
Elliott Hughes
c9142d4d8e am 571da80c: am c75491e2: Merge "Remove an obsolete jamfile."
* commit '571da80c58e13eac4d4fb29d38342879e5dede13':
  Remove an obsolete jamfile.
2012-06-11 17:42:43 -07:00
Elliott Hughes
20afd4e70c am e0961445: Merge "Remove the meaningless on Linux if_dl.h header."
* commit 'e0961445124b5ff39412da32578e14e0d1f6afd6':
  Remove the meaningless on Linux if_dl.h header.
2012-06-11 17:41:10 -07:00
Elliott Hughes
571da80c58 am c75491e2: Merge "Remove an obsolete jamfile."
* commit 'c75491e291586540c213ae088fc75b71fc4d3752':
  Remove an obsolete jamfile.
2012-06-11 17:41:04 -07:00
Elliott Hughes
e096144512 Merge "Remove the meaningless on Linux if_dl.h header." 2012-06-11 16:49:57 -07:00
Nick Kralevich
cffdf6693f FORTIFY_SOURCE: add snprintf, vsnprintf
Add _FORTIFY_SOURCE support for snprintf, vsnprintf

At this time, we opt out of these protections for clang, as clang
does not implement __builtin_va_arg_pack().

http://clang.llvm.org/docs/UsersManual.html#c_unimpl_gcc

Change-Id: I73ebe5ec8dad1dca8898a76d6afb693a25f75375
2012-06-11 16:46:16 -07:00
Elliott Hughes
c75491e291 Merge "Remove an obsolete jamfile." 2012-06-11 16:29:46 -07:00
Elliott Hughes
4c19e4f64f Remove an obsolete jamfile.
Was bionic ever built with jam? Weird!

Change-Id: Iea9a7af8bf46ee8319963e642da48e3bb49f6c60
2012-06-11 16:17:45 -07:00
Nick Kralevich
0f5b48ce28 Merge "inet_ntop: pass the size of tmp to snprintf()" 2012-06-11 16:11:20 -07:00
Nick Kralevich
85b06f9365 inet_ntop: pass the size of tmp to snprintf()
Fix runtime error when snprintf() FORTIFY_SOURCE protections are
applied. The size passed to snprintf() is larger than the tmp
buffer size, which results in a runtime assertion failure.

Even though the size passed to snprintf is larger than the buffer,
there's no danger of overwriting the buffer because of the format
string passed to snprintf.

Change-Id: I35f0217d25f3b9c6d04c5a76c3238759c235545a
2012-06-11 16:00:52 -07:00
Rebecca Schultz Zavin
6d3f548294 Modify ion header
Change-Id: Ib963e8b064f7883bf098e006c70df20732496100
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
2012-06-11 15:52:02 -07:00
Elliott Hughes
c3d45b822c Remove the meaningless on Linux if_dl.h header.
This was misleading 'configure' into thinking we actually support AF_LINK,
but we're Linux, so we don't, and we never implemented the functions we
declared here either.

Reported to AOSP by Jun-ya Kato.

(cherry-pick of 5056f1fad1187cd67729bb04ba72397d78256f03.)

Change-Id: Ic67f674d2221497c8166994812bb5fc7f0831066
2012-06-11 15:13:37 -07:00
Elliott Hughes
7c5c68f5c7 Merge "Remove the meaningless on Linux if_dl.h header." 2012-06-11 15:09:57 -07:00
Elliott Hughes
5056f1fad1 Remove the meaningless on Linux if_dl.h header.
This was misleading 'configure' into thinking we actually support AF_LINK,
but we're Linux, so we don't, and we never implemented the functions we
declared here either.

Reported to AOSP by Jun-ya Kato.

Change-Id: I111f9887f3812469b411b9cf5124d9dd624f19f7
2012-06-11 15:01:10 -07:00
Iliyan Malchev
29d03a8f39 add processed sound/tlv.h header
Change-Id: Ia57dd1293a5bd58c1b1950f1d243b394a0dd1eb8
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-06-11 14:54:44 -07:00
Iliyan Malchev
3cb8cdea3c add processed genlock.h for qualcomm
Change-Id: Id1ea77cf84e4924077b30c661d1c4bea427ad87e
Signed-off-by: Iliyan Malchev <malchev@google.com>
2012-06-11 14:16:21 -07:00
Geremy Condra
631498de43 Merge "Added event logging for some spoofed DNS queries." 2012-06-11 12:17:12 -07:00
Geremy Condra
fd49579f3a Merge "Added actual event logging calls to the FORTIFY_SOURCE methods." 2012-06-11 11:50:03 -07:00
Geremy Condra
524c87c61c Added event logging for some spoofed DNS queries.
Change-Id: I40909306e8cf922f1dd5a5685db89f732a709794
2012-06-11 11:44:48 -07:00
Geremy Condra
009f38478e Added actual event logging calls to the FORTIFY_SOURCE methods.
Change-Id: I3bf4fa8678c33187cb8ce4b75e666ddcd24403ab
2012-06-11 11:30:56 -07:00
The Android Open Source Project
8f2887be93 am 5ff025a5: Reconcile with jb-release
* commit '5ff025a50ccd7d30ea39c989d9ed8b1084ded47f':
2012-06-11 09:23:11 -07:00
The Android Open Source Project
5ff025a50c Reconcile with jb-release
Change-Id: I7cbfbab55783f245c0854543843c2052c4c2e932
2012-06-11 09:20:36 -07:00
The Android Automerger
ff7eae7b08 merge in jb-release history after reset to jb-dev 2012-06-11 06:59:25 -07:00
Nick Kralevich
76656afc6d _FORTIFY_SOURCE: check for integer overflows
Ensure that strcat / strncat check for integer overflows
when computing the length of the resulting string.

Change-Id: Ib806ad33a0d3b50876f384bc17787a28f0dddc37
2012-06-08 20:18:19 -07:00
Jeff Brown
f41855949d am e4db460a: am b7630f01: Use new debuggerd protocol.
* commit 'e4db460a54e4f024b83a7df9a3f9920d695da9f3':
  Use new debuggerd protocol.
2012-06-08 15:33:31 -07:00
Jeff Brown
e4db460a54 am b7630f01: Use new debuggerd protocol.
* commit 'b7630f018abc83261acf78e8cf9a88c1df72f7f5':
  Use new debuggerd protocol.
2012-06-08 15:30:39 -07:00
Geremy Condra
ec8addcc8a Merge "Adding event logging to libc." 2012-06-08 12:17:11 -07:00
Geremy Condra
8b11c4cec2 Adding event logging to libc.
I've basically just copied the relevant bits out of liblog and
EventLog.cpp. While this will let us do the uid logging we want
to address the concerns in 245c07027f78565858dd489eb0d94c3d48743e9d
it doesn't give us much else.

Change-Id: Icac6ff20bc0a3ade5927f6f76fedffe1ae6f8522
2012-06-08 12:14:48 -07:00
Nick Kralevich
7e5993bec7 Merge "_FORTIFY_SOURCE: add memset / bzero support" 2012-06-07 14:30:20 -07:00
Nick Kralevich
71a18dd435 _FORTIFY_SOURCE: add memset / bzero support
Add _FORTIFY_SOURCE support for the following functions:

* memset
* bzero

Move the __BIONIC_FORTIFY_INLINE definition to cdefs.h so it
can be used from multiple header files.

Change-Id: Iead4d5e35de6ec97786d58ee12573f9b11135bb7
2012-06-07 14:19:52 -07:00
Elliott Hughes
1a6b0bb3a6 Merge "Support non-zero p_vaddr in first PT_LOAD segment" 2012-06-07 11:43:47 -07:00
The Android Open Source Project
7d11009a97 am d06a73bc: Reconcile with jb-release
* commit 'd06a73bcb330e1a560373158be9009daef10a046':
2012-06-07 07:51:59 -07:00
The Android Open Source Project
d06a73bcb3 Reconcile with jb-release
Change-Id: I2c8264a9a4e3299bca7fc01d67063993b6b1b886
2012-06-07 07:48:47 -07:00
Elliott Hughes
459049719c am d0c25027: am 2b89f1e3: Merge "Fix sysconf(_SC_NPROCESSORS_CONF) on ARM."
* commit 'd0c250271c983c3de282ff02bd2528e74ad8b5f1':
  Fix sysconf(_SC_NPROCESSORS_CONF) on ARM.
2012-06-06 13:50:29 -07:00
Elliott Hughes
d0c250271c am 2b89f1e3: Merge "Fix sysconf(_SC_NPROCESSORS_CONF) on ARM."
* commit '2b89f1e37df838e466d382fc602728930bad4c68':
  Fix sysconf(_SC_NPROCESSORS_CONF) on ARM.
2012-06-06 13:48:07 -07:00
Elliott Hughes
2b89f1e37d Merge "Fix sysconf(_SC_NPROCESSORS_CONF) on ARM." 2012-06-06 13:32:19 -07:00
Elliott Hughes
a985076bfe Fix sysconf(_SC_NPROCESSORS_CONF) on ARM.
Bug: http://code.google.com/p/enh/issues/detail?id=33
Change-Id: I679b4cd888d362031042284e8edf01c5273a92aa
2012-06-06 12:04:38 -07:00
Elliott Hughes
158ad015c2 am 3069270d: am c2bba24d: Merge "Give the timer_create SIGEV_THREAD helper threads sensible names."
* commit '3069270d8641c7bb57aa308d8f90b4d2dcbf66fc':
  Give the timer_create SIGEV_THREAD helper threads sensible names.
2012-06-06 11:37:25 -07:00
Elliott Hughes
3069270d86 am c2bba24d: Merge "Give the timer_create SIGEV_THREAD helper threads sensible names."
* commit 'c2bba24d0a6b906f00d7b9f20ac9d32d63bb2e9d':
  Give the timer_create SIGEV_THREAD helper threads sensible names.
2012-06-06 11:35:32 -07:00
Elliott Hughes
c2bba24d0a Merge "Give the timer_create SIGEV_THREAD helper threads sensible names." 2012-06-06 10:44:32 -07:00
Elliott Hughes
470631ed79 Give the timer_create SIGEV_THREAD helper threads sensible names.
Bug: 6609676
Change-Id: I286b197c75beee4d9930b0973f2d7dd47c14e91c
2012-06-06 10:32:56 -07:00
Nick Kralevich
204c6e5ff3 Merge "arm: rewrite crtbegin* as C files." 2012-06-06 08:54:22 -07:00
Nick Kralevich
0a2301598c libc: implement some FORTIFY_SOURCE functions
Add initial support for -D_FORTIFY_SOURCE to bionic for the
following functions:

* memcpy
* memmove
* strcpy
* strcat
* strncpy
* strncat

This change adds a new version of the above functions which passes
the size of the destination buffer to __builtin___*_chk.

If the compiler can determine, at compile time, that the destination
buffer is large enough, or the destination buffer can point to an object
of unknown size, then the check call is bypassed.

If the compiler can't make a compile time decision, then it calls
the __*_chk() function, which does a runtime buffer size check

These options are only enabled if the code is compiled with
-D_FORTIFY_SOURCE=1 or 2, and only when optimizations are enabled.

Please see
* http://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html
* http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html

for additional details on FORTIFY_SOURCE.

Testing: Compiled the entire Android tree with -D_FORTIFY_SOURCE=1,
and verified that everything appears to be working properly.
Also created a test buffer overflow, and verified that it was
caught by this change.

Change-Id: I4fddb445bafe92b16845b22458d72e6dedd24fbc
2012-06-05 15:44:31 -07:00
Ji-Hwan Lee
f186a1819a Support non-zero p_vaddr in first PT_LOAD segment
Before changing mmap() permission to PROT_NONE in alloc_mem_region(),
such libraries once worked with a bug that uses mmap'ed region outside of
memory region allocated by alloc_mem_region().  This possibly incurs
SIGSEGV because it can overwrite memory region of previously loaded
library, but it sometimes worked, depending on loading order.

After PROT_NONE, this caused SIGSEGV earlier during calculation of
si->phdr in load_library(), but this was fixed by:

    75917c84d1  Use mmap to read an ...

Now the behaviour is the same as before applying PROT_NONE in
alloc_mem_region().

This CL fixed the original issue, supporting shared libraries that have
non-zero p_vaddr in first (= with lowest p_vaddr) PT_LOAD segment.

Bug: 6561258
Change-Id: Ib6176dd3e44c4d99a340eb1cbd16fb037586b0bc
2012-06-04 07:44:10 -07:00
The Android Automerger
db2e7a4cb6 merge in jb-release history after reset to jb-dev 2012-06-03 05:59:30 -07:00
Iliyan Malchev
31431f454a am 252a5c85: resolved conflicts for merge of e1dd3c28 to jb-dev-plus-aosp
* commit '252a5c854a08e89fc7337ea679220161fe4ea98f':
  bionic: import heaptracker as chk_malloc
2012-06-02 08:35:07 -07:00
Iliyan Malchev
143ad4cf31 am f0ddaa2f: am 7d2e24eb: bionic: introduce libc.debug.malloc.program
* commit 'f0ddaa2fac00ac20059c0b2c142da9de2838a7b6':
  bionic: introduce libc.debug.malloc.program
2012-06-02 08:20:09 -07:00
Iliyan Malchev
252a5c854a resolved conflicts for merge of e1dd3c28 to jb-dev-plus-aosp
Change-Id: I58b9c13d20771aa39b703ec05cbff8aeaad38fe8
2012-06-02 08:14:36 -07:00
Iliyan Malchev
f0ddaa2fac am 7d2e24eb: bionic: introduce libc.debug.malloc.program
* commit '7d2e24eb167b6257f7935c7bd2023a708704ca1a':
  bionic: introduce libc.debug.malloc.program
2012-06-01 19:03:06 -07:00
Nick Kralevich
9d40326830 arm: rewrite crtbegin* as C files.
Rewrite
 crtbegin.S     -> crtbegin.c
 crtbegin_so.S  -> crtbegin_so.c

This change allows us to generate PIC code without relying
on text relocations.

As a consequence of this rewrite, also rewrite
  __dso_handle.S    -> __dso_handle.c
  __dso_handle_so.S -> __dso_handle_so.c
  atexit.S          -> atexit.c

In crtbegin.c _start, place the __PREINIT_ARRAY__, __INIT_ARRAY__,
__FINI_ARRAY__, and __CTOR_LIST__ variables onto the stack, instead of
passing a pointer to the text section of the binary.

This change appears sorta wonky, as I attempted to preserve,
as much as possible, the structure of the original assembly.
As a result, you have C files including other C files, and other
programming uglyness.

Result: This change reduces the number of files with text-relocations
from 315 to 19 on my Android build.

Before:
  $ scanelf -aR $OUT/system | grep TEXTREL | wc -l
  315

After:
  $ scanelf -aR $OUT/system | grep TEXTREL | wc -l
  19

Change-Id: Ib9f98107c0eeabcb606e1ddc7ed7fc4eba01c9c4
2012-06-01 14:41:27 -07:00
The Android Automerger
e1d591540e merge in jb-release history after reset to jb-dev 2012-05-31 06:59:25 -07:00
Nick Kralevich
857fc9eab9 Merge "crtbegin: eliminate duplicate code" 2012-05-30 13:29:58 -07:00
Nick Kralevich
83a73d1afe crtbegin: eliminate duplicate code
crtbegin_dynamic and crtbegin_static are essentially identical,
minus a few trivial differences (comments and whitespace).

Eliminate duplicates.

Change-Id: Ic9fae6bc9695004974493b53bfc07cd3bb904480
2012-05-30 11:45:12 -07:00
Geremy Condra
207d7673e5 am 5a095ef2: am 03539a36: Merge "Ensure that the port number and TXID are properly randomized." into jb-dev
* commit '5a095ef28716b54f86d9c1727b9a2493ba775255':
  Ensure that the port number and TXID are properly randomized.
2012-05-30 11:11:33 -07:00
Geremy Condra
5a095ef287 am 03539a36: Merge "Ensure that the port number and TXID are properly randomized." into jb-dev
* commit '03539a36b634bdfa61c06277cf25e0ca8e3105ba':
  Ensure that the port number and TXID are properly randomized.
2012-05-30 11:09:05 -07:00
The Android Open Source Project
1ebb243d1a am cb9ba3c8: Reconcile with jb-release
* commit 'cb9ba3c88a97f34784559a55317ff5970d4c4dba':
  Print the corrupted address passed to free().
2012-05-29 09:41:51 -07:00
The Android Open Source Project
cb9ba3c88a Reconcile with jb-release
Change-Id: Id0b365ef6729dc36b88193f1675d3819e56bd426
2012-05-29 09:39:17 -07:00
Elliott Hughes
1dd9efc541 Merge "Use mmap to read an initial ELF header of library" 2012-05-25 15:11:35 -07:00
Ji-Hwan Lee
75917c84d1 Use mmap to read an initial ELF header of library
Also, fixes SIGSEV during calculation of si->phdr in load_library(),
which is caused by accessing PHDR area, which is not guaranteed to be
loaded.

Note that this usually does not happen because program header area is
covered by immediately following PT_LOAD entry.  But it does not hold
always.

Bug: 6561258
Change-Id: Ie376253c773b5420279ca89044e81b1aad5a5736
2012-05-26 06:15:50 +09:00
Ben Cheng
2481468f22 Print the corrupted address passed to free().
For example:

@@@ ABORTING: INVALID HEAP ADDRESS IN dlfree addr=0x5c3bfbd0
Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 2942

The addr=0x5c3bfbd0 part is new.

Change-Id: I8670144b2b0a3a6182384150d762c97dfee5452f
2012-05-25 11:14:20 -07:00
Ben Cheng
41c2a112c2 am d7b60b20: am c84ff11d: Print the corrupted address passed to free().
* commit 'd7b60b207be79513b99faf2ef576db333f9c7a78':
  Print the corrupted address passed to free().
2012-05-24 17:23:43 -07:00
Ben Cheng
d7b60b207b am c84ff11d: Print the corrupted address passed to free().
* commit 'c84ff11dad26435dc5760bceda18e8f1175a6061':
  Print the corrupted address passed to free().
2012-05-24 17:21:03 -07:00
Jean-Baptiste Queru
15ed08d065 am d155ba57: am c7882ab2: Merge "bionic: add clean kernel header ucontext.h"
* commit 'd155ba57a32ce3182d8a5b79ff27bc5e7fa55df9':
  bionic: add clean kernel header ucontext.h
2012-05-21 12:41:30 -07:00
Henrik Smiding
3ebd31c0a1 Add optimized version of memcmp for Cortex A9
Adds new code to function memcmp, optimized for Cortex A9.

Copyright (C) ST-Ericsson SA 2010

Added neon optimization

Change-Id: I8864d277042db40778b33232feddd90a02a27fb0
Author: Henrik Smiding henrik.smiding@stericsson.com for ST-Ericsson.
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
2012-05-19 14:04:59 +02:00
Elliott Hughes
7cce04381a resolved conflicts for merge of dc6c2b77 to master
Change-Id: Ifab4573a825cf5caa7158d8888243bb8d5d01148
2012-05-17 17:15:01 -07:00
Jean-Baptiste Queru
d155ba57a3 am c7882ab2: Merge "bionic: add clean kernel header ucontext.h"
* commit 'c7882ab2a99a74c8f772ab03fdfd9a3b53515e46':
  bionic: add clean kernel header ucontext.h
2012-05-17 13:28:10 -07:00
Jean-Baptiste Queru
c7882ab2a9 Merge "bionic: add clean kernel header ucontext.h" 2012-05-17 12:25:02 -07:00
Elliott Hughes
dc6c2b779b am 70cf0bc0: Merge "Remove the last references to SuperH."
* commit '70cf0bc0496a1d4c0e83fe3f1933f667ab66c148':
  Remove the last references to SuperH.
2012-05-16 17:18:23 -07:00
Elliott Hughes
70cf0bc049 Merge "Remove the last references to SuperH." 2012-05-16 09:56:37 -07:00
Nick Kralevich
d8f9198644 am 1727a041: am cf8e554c: (-s ours) Merge "Make the linker relocatable."
* commit '1727a041b59995b00c1d497022600be929bcaf3e':
  Make the linker relocatable.
2012-05-16 09:17:32 -07:00
Nick Kralevich
38e81b4294 am 574e8ec2: am 36e0345a: Merge "linker: set LOCAL_NO_CRT := true"
* commit '574e8ec28fac106a5e9b2c98b7b5a4e9532ecf5c':
  linker: set LOCAL_NO_CRT := true
2012-05-16 09:15:15 -07:00
Nick Kralevich
ed434302f0 am ee6916c0: am 1adc7c03: Merge "linker: Fix the computation of si->base"
* commit 'ee6916c00718185df3930a18050e5b47685ef524':
  linker: Fix the computation of si->base
2012-05-16 09:15:14 -07:00
Nick Kralevich
82576526e3 am c62d55cb: am cd6b2007: (-s ours) Merge "Add linker support for PIE"
* commit 'c62d55cbaef8001c7eb0a8d5e85e2fc72283063a':
  Add linker support for PIE
2012-05-16 09:15:07 -07:00
Nick Kralevich
1727a041b5 am cf8e554c: (-s ours) Merge "Make the linker relocatable."
* commit 'cf8e554c72af1dd634d4f36a9065e34e853f8714':
  Make the linker relocatable.
2012-05-16 09:14:22 -07:00
Nick Kralevich
574e8ec28f am 36e0345a: Merge "linker: set LOCAL_NO_CRT := true"
* commit '36e0345af89e2ed768ed38dcdf016a7640cf8ba5':
  linker: set LOCAL_NO_CRT := true
2012-05-16 09:11:52 -07:00
Nick Kralevich
ee6916c007 am 1adc7c03: Merge "linker: Fix the computation of si->base"
* commit '1adc7c03898ee1f6a4c7f8cffa3c07507b9da5a9':
  linker: Fix the computation of si->base
2012-05-16 09:11:50 -07:00
Nick Kralevich
c62d55cbae am cd6b2007: (-s ours) Merge "Add linker support for PIE"
* commit 'cd6b2007b851f1cfa47d8bcc7ec859dfa7557382':
  Add linker support for PIE
2012-05-16 09:11:49 -07:00
The Android Open Source Project
75931ee6e1 am 918e6a73: Reconcile with jb-release nakasi-factoryrom-release
* commit '918e6a730cd059392ee6d8b5c5a0f5fa0e5bbd93':
  Revert "linker: remove STB_LOCAL hack"
  Revert "Reference __dso_handle in PIC way"
  Revert "Use the new NativeDaemonConnector style."
  libc: Add __aeabi_llsl and __aeabi_llsr to libgcc_compat
2012-05-16 08:34:13 -07:00
The Android Open Source Project
918e6a730c Reconcile with jb-release nakasi-factoryrom-release
Change-Id: I5a5b95da6c33afbc36893e162f3b57c09c161ee2
2012-05-16 08:31:49 -07:00
Elliott Hughes
e33af61c70 Remove the last references to SuperH.
Change-Id: Icb44c1f94cb178d90b4c2b1e8f6d175586aec4e1
2012-05-15 17:08:41 -07:00
Ying Wang
fc9e525fe0 Rename the misleading var name TARGET_OUT_STATIC_LIBRARIES
TARGET_OUT_STATIC_LIBRARIES is actually the same as
TARGET_OUT_INTERMEDIATE_LIBRARIES.

Change-Id: I11ac35256031d461d20156cd4c19ed7eae781d22
2012-05-15 15:15:11 -07:00
Nick Kralevich
cf8e554c72 Merge "Make the linker relocatable." 2012-05-15 15:10:24 -07:00
Nick Kralevich
36e0345af8 Merge "linker: set LOCAL_NO_CRT := true" 2012-05-15 15:10:12 -07:00
Nick Kralevich
1adc7c0389 Merge "linker: Fix the computation of si->base" 2012-05-15 15:10:01 -07:00
Nick Kralevich
cd6b2007b8 Merge "Add linker support for PIE" 2012-05-15 15:09:45 -07:00
Nick Kralevich
dcbc3787bf Make the linker relocatable.
Previously, the linker always loaded itself into the same
location in memory, which inhibited the effectiveness of Android's
ASLR implementation. Modify the linker code so it can be relocatable
and link itself at runtime.

Change-Id: Ia80273d7a00ff648b4da545f4b69debee6343968
2012-05-15 10:41:14 -07:00
Nick Kralevich
e742c1f564 linker: set LOCAL_NO_CRT := true
Use LOCAL_NO_CRT to prevent linking against crtbegin.o, rather than
messing with build rules. This also prevents linking against crtend.o,
which isn't needed for the linker.

Change-Id: I0c5b9999be7e8676560fe145c1c033ffce8db4d1
2012-05-15 10:08:39 -07:00
David 'Digit' Turner
077891b199 linker: Fix the computation of si->base
The computation of si->base assumed that the first entry in the
program header table is a PT_PHDR. This results in the dynamic
linker crashing with a SIGSEGV/MAPERR when trying to load some
of the NDK unit test programs, which happen to have an EXIDX
header first, followed byu a PHDR one.

This patch fixes the computation by parsing the program header
table, looking explicitely for the PHDR entry. This fixes the
load of the NDK unit test programs, and doesn't affect system
libraries.

Change-Id: Id18ea6037dbe950b5abbbce816c2960321f0b81d
2012-05-15 09:58:33 -07:00
Nick Kralevich
6cdefd06c0 Add linker support for PIE
Modify the dynamic linker so that executables can be loaded
at locations other than 0x00000000.

Modify crtbegin* so that non-PIC compilant "thumb interwork
veneers" are not created by the linker.

Bug: 5323301
Change-Id: Iece0272e2b708c79034f302c20160e1fe9029588
2012-05-15 09:56:32 -07:00
Kito Cheng
c425bc0532 bionic: add clean kernel header ucontext.h
Change-Id: I34fd0b0147fa33fd74c13480bc11827634233a41
2012-05-14 01:42:12 +08:00
Cédric Cabessa
beb349348e syslog needs a valid socket path for _PATH_LOG
/dev/kmsg is a character device already used for different purposes.
Most distribution use /dev/log for _PATH_LOG but this path is already used
by logcat.
I suggest using /dev/syslog.
This change was tested with busybox's syslogd.

Change-Id: I75b428123c7a0b3ca4bea656ce06860f6f727dde
2012-05-13 17:16:06 +02:00
Elliott Hughes
1b56aaa659 am f2f7bf76: am 4f05d1c7: Merge "bionic/x86: Optimization for memcpy"
* commit 'f2f7bf76dfd1d6014ed3baa1e27b221388e70a09':
  bionic/x86: Optimization for memcpy
2012-05-10 23:15:00 -07:00
Elliott Hughes
f2f7bf76df am 4f05d1c7: Merge "bionic/x86: Optimization for memcpy"
* commit '4f05d1c758ba141c617f25251a661ecb66627e9e':
  bionic/x86: Optimization for memcpy
2012-05-10 21:31:48 -07:00
Elliott Hughes
4f05d1c758 Merge "bionic/x86: Optimization for memcpy" 2012-05-10 10:14:44 -07:00
Iliyan Malchev
83a38b8c44 am 8034415d: resolved conflicts for merge of 08e72d01 to jb-dev-plus-aosp
* commit '8034415ddd8404f8788199ed993af89692235dc5':
  bionic: add support for non-NEON memcpy() on NEON SoCs
2012-05-10 09:24:46 -07:00
Iliyan Malchev
8034415ddd resolved conflicts for merge of 08e72d01 to jb-dev-plus-aosp
Change-Id: If00e354a5953ed54b31963d4f8ea77e1603c321e
2012-05-10 09:19:59 -07:00
The Android Automerger
4dc3a7e1ed merge in jb-release history after reset to jb-dev 2012-05-10 06:59:27 -07:00
Elliott Hughes
537867aed8 am 804147cb: am edb7cad9: Merge "Actually set the header guard in "linux-syscalls.h"."
* commit '804147cb7d533f5635da6adc28fbca1467a3078b':
  Actually set the header guard in "linux-syscalls.h".
2012-05-09 20:12:40 -07:00
Elliott Hughes
804147cb7d am edb7cad9: Merge "Actually set the header guard in "linux-syscalls.h"."
* commit 'edb7cad9b764f029c5faac2750f749d3d84bd86a':
  Actually set the header guard in "linux-syscalls.h".
2012-05-09 20:10:14 -07:00
Elliott Hughes
edb7cad9b7 Merge "Actually set the header guard in "linux-syscalls.h"." 2012-05-09 16:39:40 -07:00
Elliott Hughes
1928523c87 Actually set the header guard in "linux-syscalls.h".
Spotted while merging a MIPS change.

Change-Id: I36fb5a07d0bba0c117e9fe9733957bd37ca4b4c0
2012-05-09 16:34:11 -07:00
Elliott Hughes
2a5fab9a5f am dbd5ecad: resolved conflicts for merge of e5408907 to jb-dev-plus-aosp
* commit 'dbd5ecad26e39281bb83f97664bc32555c5c071a':
  [MIPS] Add support for MIPS syscalls
2012-05-09 13:57:12 -07:00
Elliott Hughes
dbd5ecad26 resolved conflicts for merge of e5408907 to jb-dev-plus-aosp
Change-Id: If4c3f51bf87b28da8074be2e46ae772a374b266f
2012-05-09 13:53:37 -07:00
Elliott Hughes
fd8bd2c432 am 58a00b49: am 7eb1cc23: Merge "bionic: allow the board to customize MALLOC_ALIGNMENT"
* commit '58a00b4977b6fa073a8f56d94d741b1e4cb49856':
  bionic: allow the board to customize MALLOC_ALIGNMENT
2012-05-09 12:56:15 -07:00
Elliott Hughes
22167aafba am eab2889e: am fd955033: Merge "pthread: Invalidate stale stack pointers on pthread_exit()"
* commit 'eab2889e66d4fe03f3c5590d7e8b14e3777179ec':
  pthread: Invalidate stale stack pointers on pthread_exit()
2012-05-09 12:56:15 -07:00
Elliott Hughes
58a00b4977 am 7eb1cc23: Merge "bionic: allow the board to customize MALLOC_ALIGNMENT"
* commit '7eb1cc23f8976a2062ba0cf92f030216a8e64e60':
  bionic: allow the board to customize MALLOC_ALIGNMENT
2012-05-09 12:53:16 -07:00
Elliott Hughes
eab2889e66 am fd955033: Merge "pthread: Invalidate stale stack pointers on pthread_exit()"
* commit 'fd95503347acba5c52d669a186ad2b161338a8a7':
  pthread: Invalidate stale stack pointers on pthread_exit()
2012-05-09 12:53:16 -07:00
Elliott Hughes
e54089079b Merge "[MIPS] Add support for MIPS syscalls" 2012-05-09 11:50:07 -07:00
Raghu Gandham
1fa0d84957 [MIPS] Add support for MIPS syscalls
Change-Id: I4deba67e15c865c4c2db03064c04098a09828ea6
Signed-off-by: Raghu Gandham <raghu@mips.com>
Signed-off-by: Chris Dearman <chris@mips.com>
2012-05-09 11:46:28 -07:00
Elliott Hughes
7d4da4ea5c am 57f8d4b5: resolved conflicts for merge of 3919b96e to jb-dev-plus-aosp
* commit '57f8d4b5b5564fad7a9c7f8a6e5108f31c75056f':
  Implement the "abort" stub in assembly for ARM.
2012-05-09 10:13:02 -07:00
Ben Cheng
8e38a509d2 am da0d8534: am 08b51e2c: Implement the "abort" stub in assembly for ARM.
* commit 'da0d8534f1a6273a383f1dc631fbaf032674bb4d':
  Implement the "abort" stub in assembly for ARM.
2012-05-09 10:12:04 -07:00
Elliott Hughes
7eb1cc23f8 Merge "bionic: allow the board to customize MALLOC_ALIGNMENT" 2012-05-09 09:52:56 -07:00
Jack Ren
2fd81ef71c bionic: allow the board to customize MALLOC_ALIGNMENT
Currently the dlmalloc allocates the memory with 8-byte alignment.
According to the com.aurorasoftworks.quadrant.ui.professional benchmark data:
We can get much better memory performance if we change it to be 16-byte aligned.
For example, On Nexus-S:
8-byte aligned :
    1378 1070  1142 1665 1765  1163 1179  1263  1404 avg: 1336.555555556
16-byte aligned:
    1691 1731  1780 1691 1671  1678 1802  1758  1780 avg: 1731.333333333
                                                    gain: 29.53%

That patch provides flexibity to customize the MALLOC_ALIGNMENT from the
board config.The macro MALLOC_ALIGNMENT defaults to 8.
To change it, please define BOARD_MALLOC_ALIGNMENT in the BoardConfig.mk:
BOARD_MALLOC_ALIGNMENT := <whatever>

Change-Id: I8da0376944a0bbcef1d0fc026bfb6d9125db9739
Signed-off-by: Jin Wei <wei.a.jin@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Signed-off-by: Beare, Bruce J <bruce.j.beare@intel.com>
2012-05-09 09:52:22 -07:00
Elliott Hughes
fd95503347 Merge "pthread: Invalidate stale stack pointers on pthread_exit()" 2012-05-09 09:46:02 -07:00
Elliott Hughes
57f8d4b5b5 resolved conflicts for merge of 3919b96e to jb-dev-plus-aosp
Change-Id: I80571b5f024a4e1abe2606d10e07006f53bbc01f
2012-05-09 09:38:40 -07:00
The Android Automerger
e2390bff2e merge in jb-release history after reset to jb-dev 2012-05-09 07:46:07 -07:00
Elliott Hughes
1d8b9ef92c am a674a571: am 20bea000: Merge "Cherry-pick "generate PIC code"."
* commit 'a674a571dbf0eebf4825f80f3ab229b1d62d49da':
  Cherry-pick "generate PIC code".
2012-05-09 01:54:16 -07:00
Ben Cheng
da0d8534f1 am 08b51e2c: Implement the "abort" stub in assembly for ARM.
* commit '08b51e2c091d036c124259ae59eb7be6bbe346af':
  Implement the "abort" stub in assembly for ARM.
2012-05-09 01:48:40 -07:00
Elliott Hughes
a674a571db am 20bea000: Merge "Cherry-pick "generate PIC code"."
* commit '20bea00090e530f2e6f4d97de4b7cf8031b86a86':
  Cherry-pick "generate PIC code".
2012-05-08 19:57:58 -07:00
Bjorn Andersson
0753dc653e pthread: Invalidate stale stack pointers on pthread_exit()
A call to pthread_key_delete() after pthread_exit() have unmapped the stack of a thread
but before the ongoing pthread_join() have finished executing will result in an access
to unmapped memory.
Avoid this by invalidating the stack_base and tls pointers during pthread_exit().

This is based on the investigation and proprosed solution by
Srinavasa Nagaraju <srinavasa.x.nagaraju@sonyericsson.com>

Change-Id: I145fb5d57930e91b00f1609d7b2cd16a55d5b3a9
2012-05-08 17:43:57 -07:00
Elliott Hughes
a4e84d285c am 9c3eca7b: resolved conflicts for merge of 6cf3c7c5 to jb-dev-plus-aosp
* commit '9c3eca7bcee694e6a477a7d50065f11cf1e805bb':
  Let pthread_create fail if schedparam can't be set
2012-05-08 15:13:20 -07:00
Elliott Hughes
3919b96ecc Merge "Implement the "abort" stub in assembly for ARM." 2012-05-08 14:54:57 -07:00
Ben Cheng
eda7be454d Implement the "abort" stub in assembly for ARM.
So that we can always get the full stack trace regardless of gcc's handling
of the "noreturn" attribute associated with abort().

(Cherry pick of Id264a5167e7cabbf11515fbc48f5469c527e34d4.)

Bug: 6455193

Conflicts:

	libc/Android.mk

Change-Id: I568fc5303fd1d747075ca933355f914122f94dac
2012-05-08 14:47:20 -07:00
Ben Cheng
12cbf0605e Merge "Implement the "abort" stub in assembly for ARM." 2012-05-08 14:01:22 -07:00
Ben Cheng
017f438534 Implement the "abort" stub in assembly for ARM.
So that we can always get the full stack trace regardless of gcc's handling
of the "noreturn" attribute associated with abort().

BUG:6455193
Change-Id: Id264a5167e7cabbf11515fbc48f5469c527e34d4
2012-05-08 13:43:12 -07:00
Elliott Hughes
9c3eca7bce resolved conflicts for merge of 6cf3c7c5 to jb-dev-plus-aosp
Change-Id: Ib22a8ae1ef63bf9b9c82ce6e22afd188ba7c2806
2012-05-08 13:26:28 -07:00
Jack Ren
c47703a521 bionic/x86: Optimization for memcpy
Signed-off-by: Liubov Dmitrieva <liubov.dmitrieva@intel.com>
Signed-off-by: H.J. Lu <hongjiu.lu@intel.com>
Signed-off-by: Wei A Jin <wei.a.jin@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>

Conflicts:

	libc/arch-x86/string/ssse3-memcpy5.S

Change-Id: I41e70d1d19d5457e65c89b64da452fbdaf3a00a7
2012-05-08 12:18:25 -07:00
Elliott Hughes
20bea00090 Merge "Cherry-pick "generate PIC code"." 2012-05-08 11:56:13 -07:00
Nick Kralevich
5982e33aca Cherry-pick "generate PIC code".
Change-Id: I7d5f2e5663df263493f65e364c959e663fc4d13a
2012-05-08 11:53:28 -07:00
Elliott Hughes
2eef0ca111 am ff0d1ce4: am e3bc7192: Merge "bionic: fix integer overflows in chk_malloc(), leak_malloc(), and leak_memalign()"
* commit 'ff0d1ce4dfceb35a65440259c3f325106fc9e39b':
  bionic: fix integer overflows in chk_malloc(), leak_malloc(), and leak_memalign()
2012-05-08 11:32:58 -07:00
Elliott Hughes
9b25457498 am 53daf475: am 73a6566d: Merge "Remove expired dns cache entries before removing oldest"
* commit '53daf4757d36522c132006e2f74ed81bb4ed717a':
  Remove expired dns cache entries before removing oldest
2012-05-08 11:32:57 -07:00
Elliott Hughes
e34c7ffc57 am e636e1f2: am 8657eafc: Merge "Adjust memcpy for ARM Cortex A9 cache line size"
* commit 'e636e1f2c17d7097b6638cb4ae2b4857765b502d':
  Adjust memcpy for ARM Cortex A9 cache line size
2012-05-08 11:32:55 -07:00
Elliott Hughes
6cf3c7c50a Merge "Let pthread_create fail if schedparam can't be set" 2012-05-08 10:56:01 -07:00
Pierre Peiffer
d0c884d359 Let pthread_create fail if schedparam can't be set
The creation of a thread succeeds even if the requested scheduling
parameters can not be set. This is not POSIX compliant, and even
worse, it leads to a wrong behavior. Let pthread_create() fail in this
case.

Change-Id: Ice66e2a720975c6bde9fe86c2cf8f649533a169c
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
2012-05-08 10:54:51 -07:00
Mattias Falk
a59cfcfd08 Avoid multiple dns lookups for the same query
If two or more rapid dns requests for the same server are done
from different threads it turns into separate dns reques, if
the response of the request isn't found in the cache.

This patch avoid multiple request for the same server by
letting subsequents request wait until the first request
has finished.

Change-Id: Ic72ea0e7d3964a4164eddf866feb4357ec4dfe54
2012-05-07 18:04:25 -07:00
Nick Kralevich
a2758f19ce libc: stop using the custom linker script
stop using the custom linker script. It prevents relro from
working on libc.

This reverts commit b091dd9bf2.
2012-05-07 14:33:32 -07:00
Elliott Hughes
ff0d1ce4df am e3bc7192: Merge "bionic: fix integer overflows in chk_malloc(), leak_malloc(), and leak_memalign()"
* commit 'e3bc7192ec4254bed00eb8b352735665c6072995':
  bionic: fix integer overflows in chk_malloc(), leak_malloc(), and leak_memalign()
2012-05-07 14:00:01 -07:00
Elliott Hughes
53daf4757d am 73a6566d: Merge "Remove expired dns cache entries before removing oldest"
* commit '73a6566da337db50cfc73c369d774ac1905a30c2':
  Remove expired dns cache entries before removing oldest
2012-05-07 13:59:59 -07:00
Elliott Hughes
e636e1f2c1 am 8657eafc: Merge "Adjust memcpy for ARM Cortex A9 cache line size"
* commit '8657eafc3552f36c176667c1591beab255308da6':
  Adjust memcpy for ARM Cortex A9 cache line size
2012-05-07 13:59:58 -07:00
Elliott Hughes
e3bc7192ec Merge "bionic: fix integer overflows in chk_malloc(), leak_malloc(), and leak_memalign()" 2012-05-07 10:51:29 -07:00
Xi Wang
7f5aa4f35e bionic: fix integer overflows in chk_malloc(), leak_malloc(), and leak_memalign()
The allocation size in chk_malloc(), leak_malloc(), and leak_memalign()
functions may be rounded up to a small value, leading to buffer overflows.
The code only runs in debugging mode.

This patch complements commit 6f04a0f4 (CVE-2009-0607).

Change-Id: Id899bcd2bcd2ea2205e5753c433390710032dc83
Signed-off-by: Xi Wang <xi.wang@gmail.com>
2012-05-07 10:50:21 -07:00
Elliott Hughes
73a6566da3 Merge "Remove expired dns cache entries before removing oldest" 2012-05-07 10:41:53 -07:00
Elliott Hughes
8657eafc35 Merge "Adjust memcpy for ARM Cortex A9 cache line size" 2012-05-07 09:13:35 -07:00
Henrik Smiding
fe6338da91 Adjust memcpy for ARM Cortex A9 cache line size
ARM Cortex A8 use 64 bytes and ARM Cortex A9 use 32 bytes cache line
size.

The following patch:
  Adds code to adjust memcpy cache line size to match A9 cache line
  size.
  Adds a flag to select between 32 bytes and 64 bytes cache line
  size.

  Copyright (C) ST-Ericsson SA 2010
    Modified neon implementation to fit Cortex A9 cache line size
    Author: Henrik Smiding henrik.smiding@stericsson.com for
            ST-Ericsson.

Change-Id: I8a55946bfb074e6ec0a14805ed65f73fcd0984a3
Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
2012-05-07 14:18:02 +02:00
Elliott Hughes
2ddea18f81 am f7db5ecc: Merge "MIPS support to libm, libdl and libthread_db"
* commit 'f7db5ecc4d662da8368f31d57401ca1a39690e40':
  MIPS support to libm, libdl and libthread_db
2012-05-04 18:07:11 -07:00
Elliott Hughes
f7db5ecc4d Merge "MIPS support to libm, libdl and libthread_db" 2012-05-04 12:00:19 -07:00
Chris Dearman
726800e8f4 MIPS support to libm, libdl and libthread_db
Change-Id: I9106721af7fe0cd45df82976250db0d300a20117
Signed-off-by: Raghu Gandham <raghu@mips.com>
2012-05-04 11:34:40 -07:00
Elliott Hughes
5a6c96396b am 10579fc4: Merge "Update s_fabsl.c to upstream head."
* commit '10579fc43d3ade285eed7318aee062a999f2784d':
  Update s_fabsl.c to upstream head.
2012-05-01 04:56:57 -07:00
Elliott Hughes
10579fc43d Merge "Update s_fabsl.c to upstream head." 2012-04-30 22:35:02 -07:00
Elliott Hughes
7735a38935 Update s_fabsl.c to upstream head.
Bug: http://code.google.com/p/android/issues/detail?id=29539
Change-Id: I843dcfcbfe49e8e9f43c49aae6ade1edb57a3053
2012-04-30 16:12:43 -07:00
The Android Automerger
e0f1fca46c merge in jb-release history after reset to jb-dev 2012-04-30 06:59:25 -07:00
Ken Sumrall
3f31504db9 am 6baffed2: Add the posix_memalign(3) function to bionic
* commit '6baffed252d0efbce5a79f356c2f156f4f818996':
  Add the posix_memalign(3) function to bionic
2012-04-27 10:49:42 -07:00
Ken Sumrall
6baffed252 Add the posix_memalign(3) function to bionic
The posix_memalign(3) function is very similar to the traditional
memalign(3) function, but with better error reporting and a guarantee
that the memory it allocates can be freed.  In bionic, memalign(3)
allocated memory can be freed, so posix_memalign(3) is just a wrapper
around memalign(3).

Change-Id: I62ee908aa5ba6b887d8446a00d8298d080a6a299
2012-04-27 09:34:53 -07:00
Mike Lockwood
4fab6f901c am efcf8893: Merge "Update f_accessory.h kernel header" into jb-dev
* commit 'efcf8893a97df2eb2ecb7aab305998878771d2f2':
  Update f_accessory.h kernel header
2012-04-26 13:12:54 -07:00
Nick Kralevich
2cc0894992 am b091dd9b: libc: continue to use Android\'s custom linker script
* commit 'b091dd9bf27a9132c4ac9da55f2f4a87ffe3b59f':
  libc: continue to use Android's custom linker script
2012-04-26 11:58:48 -07:00
Jean-Baptiste Queru
203aae7d79 Merge from AOSP
Change-Id: If2e8e4305d10df738cc4ebcf226077f273a48cbf
2012-04-25 09:29:40 -07:00
The Android Automerger
22d80c0b35 merge in jb-release history after reset to jb-dev 2012-04-25 07:47:06 -07:00
Andrew Hsieh
1e343cb119 Merge "[MIPS] Fix the warning originating from the kernel header signal.h. This is a clean header generated from the corresponding change in external/kernel-headers repository. (CL 35760)" 2012-04-24 23:44:18 -07:00
Raghu Gandham
e328ce6c55 [MIPS] Fix the warning originating from the kernel header signal.h.
This is a clean header generated from the corresponding change in
external/kernel-headers repository. (CL 35760)
2012-04-23 18:59:41 -07:00
The Android Automerger
5fb8130be9 merge in jb-release history after reset to master 2012-04-19 06:59:25 -07:00
The Android Automerger
91b76aa298 merge in jb-release history after reset to master 2012-04-18 06:59:34 -07:00
The Android Automerger
bfb300152c merge in jb-release history after reset to master 2012-04-17 06:59:17 -07:00
The Android Automerger
b5e8d57664 merge in jb-release history after reset to master 2012-04-16 06:59:27 -07:00
The Android Automerger
f0a9d98a39 merge in jb-release history after reset to master 2012-04-12 06:59:24 -07:00
The Android Automerger
85611165ab merge in jb-release history after reset to master 2012-04-11 06:59:29 -07:00
Nick Kralevich
ad7ff82771 Revert "linker: remove STB_LOCAL hack"
This reverts commit 61ff83475c.

This code is harmless, and only applies to the linker, so
there's no harm in keeping it in the tree a little bit longer.
Let's roll this back while we try to figure out the root cause
of bug 6314858.

Bug: 6314858
Change-Id: I9f5ed81d23a7abe273baf792aa8a0a2839ef094c
2012-04-10 16:08:31 -07:00
The Android Automerger
92cf47c006 merge in jb-release history after reset to master 2012-04-10 06:59:26 -07:00
The Android Automerger
66929e845d merge in jb-release history after reset to master 2012-04-09 06:59:24 -07:00
The Android Automerger
199213bba9 merge in jb-release history after reset to master 2012-04-05 06:59:23 -07:00
The Android Automerger
485fc9f4ef merge in jb-release history after reset to master 2012-04-03 03:27:58 -07:00
The Android Automerger
b955ffa5b3 merge in jb-release history after reset to master 2012-04-02 06:59:31 -07:00
The Android Automerger
30c8b110f3 merge in jb-release history after reset to master 2012-03-28 06:59:31 -07:00
The Android Automerger
8149d73652 merge in jb-release history after reset to master 2012-03-27 06:59:30 -07:00
The Android Automerger
665a2207af merge in jb-release history after reset to master 2012-03-26 06:59:35 -07:00
The Android Automerger
9f7df549a2 merge in jb-release history after reset to master 2012-03-21 06:59:50 -07:00
The Android Automerger
6e9e53d15f merge in jb-release history after reset to master 2012-03-19 06:59:35 -07:00
The Android Automerger
9bcaf0ea6d merge in jb-release history after reset to master 2012-03-14 06:59:45 -07:00
The Android Automerger
26b666b35e merge in jb-release history after reset to master 2012-03-12 06:59:42 -07:00
The Android Automerger
56ae6bdaa1 merge in jb-release history after reset to master 2012-03-08 06:59:22 -08:00
The Android Automerger
151fac68c3 merge in jb-release history after reset to master 2012-03-07 06:59:17 -08:00
Kenny Root
fa3f72ee53 Revert "Reference __dso_handle in PIC way"
This reverts commit 93cb308137
2012-03-05 11:55:23 -08:00
The Android Automerger
fa944c190c merge in jb-release history after reset to master 2012-03-05 06:59:32 -08:00
The Android Automerger
73c88b70b2 merge in jb-release history after reset to master 2012-03-01 06:59:21 -08:00
The Android Automerger
16310b5582 merge in jb-release history after reset to master 2012-02-29 06:59:21 -08:00
The Android Automerger
fcf16907c7 merge in jb-release history after reset to master 2012-02-27 06:59:29 -08:00
Kenny Root
93b8f941f2 Revert "Use the new NativeDaemonConnector style."
The other changes relating to this were already reverted.

This reverts commit 1625c7a837
2012-02-25 10:39:07 -08:00
Dima Zavin
906dbea2b4 libc: Add __aeabi_llsl and __aeabi_llsr to libgcc_compat
Some platform libraries built for ICS do not work with master
because of some refactoring in frameworks/base.

Make sure that these libgcc symbols are always present in our libc

Change-Id: Ib8d345878be0ba711f051082a778f5cc1f1b3a19
Signed-off-by: Dima Zavin <dima@android.com>
2012-02-24 11:38:07 -08:00
The Android Automerger
f351ae488b merge in jb-release history after reset to master 2012-02-14 06:59:28 -08:00
The Android Automerger
8f627eec55 merge in jb-release history after reset to master 2012-02-13 08:56:04 -08:00
The Android Automerger
bec678c5a7 merge in jb-release history after reset to master 2012-02-08 06:59:26 -08:00
The Android Automerger
a7bd1bf276 merge in jb-release history after reset to master 2012-02-02 06:59:19 -08:00
The Android Automerger
a43debbc43 merge in jb-release history after reset to master 2012-02-01 06:59:19 -08:00
The Android Automerger
3350468499 merge in jb-release history after reset to master 2012-01-31 06:59:17 -08:00
The Android Automerger
a0b800aba9 merge in jb-release history after reset to master 2012-01-30 06:59:27 -08:00
The Android Automerger
056daf6a1c merge in jb-release history after reset to master 2012-01-25 15:49:01 -08:00
The Android Automerger
7cad7230ff merge in ics-release history after reset to master 2012-01-25 06:59:13 -08:00
The Android Automerger
70f0e9d86d merge in ics-release history after reset to master 2012-01-23 06:59:19 -08:00
The Android Automerger
cd24e61e57 merge in ics-release history after reset to master 2012-01-19 06:59:13 -08:00
The Android Automerger
45af9ba7c4 merge in ics-release history after reset to master 2012-01-18 06:59:12 -08:00
The Android Automerger
09670ec2d1 merge in ics-release history after reset to master 2012-01-17 06:59:15 -08:00
The Android Automerger
348eea2dbe merge in ics-release history after reset to master 2012-01-12 14:11:59 -08:00
The Android Automerger
13585da4b4 merge in ics-release history after reset to master 2012-01-09 06:59:16 -08:00
The Android Automerger
f40d3e7608 merge in ics-release history after reset to master 2012-01-04 06:59:09 -08:00
The Android Automerger
646ca9f1c9 merge in ics-release history after reset to master 2011-12-21 06:59:12 -08:00
The Android Automerger
f920b20654 merge in ics-release history after reset to master 2011-12-20 06:59:10 -08:00
The Android Automerger
fbc3abcbfc merge in ics-release history after reset to master 2011-12-15 06:59:15 -08:00
The Android Automerger
3ea9368d92 merge in ics-release history after reset to master 2011-12-14 06:59:15 -08:00
The Android Automerger
55b9099976 merge in ics-release history after reset to master 2011-12-13 06:59:15 -08:00
The Android Automerger
d6da8336b8 merge in ics-release history after reset to master 2011-12-08 06:59:13 -08:00
The Android Automerger
6855359e57 merge in ics-release history after reset to master 2011-12-07 06:59:12 -08:00
The Android Automerger
04c3d4d709 merge in ics-release history after reset to master 2011-12-06 06:59:14 -08:00
The Android Automerger
5e7783097a merge in ics-release history after reset to master 2011-12-01 06:59:15 -08:00
The Android Automerger
d999c93401 merge in ics-release history after reset to master 2011-11-30 06:59:12 -08:00
The Android Automerger
86ad80b6be merge in ics-release history after reset to master 2011-11-28 12:23:08 -08:00
The Android Automerger
71b9eedbea merge in ics-release history after reset to master 2011-11-17 06:59:15 -08:00
The Android Automerger
a938409c0e merge in ics-release history after reset to master 2011-11-16 06:59:17 -08:00
The Android Automerger
2f3309c9e3 merge in ics-release history after reset to master 2011-11-15 06:59:11 -08:00
The Android Automerger
16e818f90b merge in ics-release history after reset to master 2011-11-06 06:59:20 -08:00
The Android Automerger
9bf1daaaf9 merge in ics-release history after reset to master 2011-11-01 06:59:13 -07:00
The Android Automerger
98873f6540 merge in ics-release history after reset to master 2011-10-25 07:14:09 -07:00
Anders Fredlund
dd16182b4b Remove expired dns cache entries before removing oldest
A suggestion how to make a smarter delete function when the cache
is full. First look through the entire cache and remove all entries
which have expired. If none use the old solution and just remove
the last entry in the MRU list.

Change-Id: I5f997ab35290a55dc6e1ddf37d725759edf83d36
2011-05-20 08:12:37 +02:00
2086 changed files with 107347 additions and 55722 deletions

15
ABI-bugs.txt Normal file
View File

@@ -0,0 +1,15 @@
KNOWN ABI BUGS
--------------
time_t is 32-bit. http://b/5819737
off_t is 32-bit. There is off64_t, but no _FILE_OFFSET_BITS support.
sigset_t is too small on ARM and x86 (but correct on MIPS), so support
for real-time signals is broken. http://b/5828899
Too few TLS slots mean we can't allocate 128 pthread_key_t instances,
which POSIX says should be the minimum.
atexit(3) handlers registered by a shared library aren't called on
dlclose(3); this only affects ARM. http://b/4998315

View File

@@ -1,6 +0,0 @@
Bionic support for SuperH
-------------------------
Bionic support for SuperH architecture is written by
Shin-ichiro KAWASAKI <shinichiro.kawasaki.mg@hitachi.com>
and Contributed to Android by Hitachi, Ltd. and Renesas Solutions Corp.

View File

@@ -1,10 +0,0 @@
# Copyright 2010 Google Inc. All Rights Reserved.
#Fri Jul 16 10:03:08 PDT 2010
currentVersion=Unknown
version=Unknown
isNative=true
feedurl=http\://www.openbsd.org/security.html
name=openbsd
keywords=openbsd
onDevice=true
homepage=http\://openbsd.org

File diff suppressed because it is too large Load Diff

View File

@@ -1,441 +0,0 @@
# This file is used to build the Bionic library with the Jam build
# tool. For info, see www.perforce.com/jam/jam.html
#
BIONIC_TOP ?= $(DOT) ;
DEBUG = 1 ;
# pattern used for automatic heade inclusion detection
HDRPATTERN = "^[ ]*#[ ]*include[ ]*[<\"]([^\">]*)[\">].*$" ;
# debugging support, simply define the DEBUG variable to activate verbose output
rule Debug
{
if $(DEBUG) {
Echo $(1) ;
}
}
# return all elements from $(1) that are not in $(2)
rule Filter list : filter
{
local result = ;
local item ;
for item in $(list) {
if ! $(item) in $(filter) {
result += $(item) ;
}
}
return $(result) ;
}
# reverse a list of elements
rule Reverse list
{
local result = ;
local item ;
for item in $(list) {
result = $(item) $(result) ;
}
return $(result) ;
}
# decompose a path into a list of elements
rule PathDecompose dir
{
local result ;
while $(dir:D)
{
if ! $(dir:BS) { # for rooted paths like "/foo"
break ;
}
result = $(dir:BS) $(result) ;
dir = $(dir:D) ;
}
result = $(dir) $(result) ;
return $(result) ;
}
# simply a file path, i.e. get rid of . or .. when possible
rule _PathSimplify dir
{
local result = ;
local dir2 d ;
dir = [ PathDecompose $(dir) ] ;
# get rid of any single dot
dir2 = ;
for d in $(dir) {
if $(d) = "." {
continue ;
}
dir2 += $(d) ;
}
# get rid of .. when possible
for d in $(dir2) {
if $(d) = ".." && $(result) {
result = $(result[2-]) ;
}
else
result = $(d) $(result) ;
}
# now invert the result
result = [ Reverse $(result) ] ;
if ! $(result) {
result = "." ;
}
return $(result:J="/") ;
}
rule PathSimplify dirs
{
local result ;
local d ;
for d in $(dirs) {
result += [ _PathSimplify $(d) ] ;
}
return $(result) ;
}
# retrieve list of subdirectories
rule ListSubDirs paths
{
local result = ;
local entry ;
for entry in [ Glob $(paths) : * ] {
if ! $(entry:S) {
result += $(entry) ;
}
}
return [ PathSimplify $(result) ] ;
}
# retrieve list of sources in a given directory
rule ListSources path
{
return [ Glob $(path) : *.S *.c ] ;
}
# find the prebuilt directory
#
if ! $(TOP) {
Echo "Please define TOP as the root of your device build tree" ;
Exit ;
}
Debug "OS is" $(OS) ;
Debug "CPU is" $(CPU) ;
if $(OS) = LINUX
{
PREBUILT = $(TOP)/prebuilt/Linux ;
}
else if $(OS) = MACOSX
{
switch $(CPU) {
case i386 : PREBUILT = $(TOP)/prebuilt/darwin-x86 ; break ;
case ppc : PREBUILT = $(TOP)/prebuilt/darwin-ppc ; break ;
case * : Echo "unsupported CPU" "$(CPU) !!" ;
Echo "Please contact digit@google.com for help" ;
Exit ;
}
}
else
{
Echo "Unsupported operating system" $(OS) ;
Echo "Please contact digit@google.com for help" ;
Exit ;
}
Debug "TOP is" $(TOP) ;
Debug "PREBUILT is" $(PREBUILT) ;
# check architectures and setup toolchain variables
#
SUPPORTED_ARCHS = x86 arm ;
ARCH ?= $(SUPPORTED_ARCHS) ;
if ! $(ARCH) in $(SUPPORTED_ARCHS) {
Echo "The variable ARCH contains an unsupported value, use one or more of these instead" ;
Echo "separated by spaces:" $(SUPPORTED_ARCHS) ;
Exit ;
}
x86_TOOLSET_PREFIX ?= "" ;
arm_TOOLSET_PREFIX ?= $(TOP)/prebuilt/Linux/toolchain-4.1.1/bin/arm-elf- ;
for arch in $(ARCH) {
CC_$(arch) = $($(arch)_TOOLSET_PREFIX)gcc ;
C++_$(arch) = $($(arch)_TOOLSET_PREFIX)g++ ;
AR_$(arch) = $($(arch)_TOOLSET_PREFIX)ar ;
}
# the list of arch-independent source subdirectories
BIONIC_SRC_SUBDIRS = string ;
BIONIC_x86_SUBDIRS = ;
BIONIC_arm_SUBDIRS = ;
CFLAGS = -O0 -g -W ;
# find sources in a given list of subdirectories
rule FindSources dirs
{
local dir ;
for dir in $(dirs)
{
local LOCAL_SRC NO_LOCAL_SRC ;
if [ Glob $(dir) : rules.jam ] {
include $(dir)/rules.jam ;
if $(LOCAL_SRC) {
_sources = $(LOCAL_SRC) ;
}
else {
_sources = [ Glob $(dir) : *.S *.c ] ;
_sources = $(_sources:BS) ;
}
if $(NO_LOCAL_SRC) {
_sources = [ Filter $(_sources) : $(NO_LOCAL_SRC) ] ;
}
sources += $(dir)/$(_sources) ;
}
else
sources += [ ListSources $(dir) ] ;
}
}
# Compile a given object file from a source
rule Compile object : source
{
Depends $(object) : $(source) ;
Depends bionic : $(object) ;
Clean clean : $(object) ;
MakeLocate $(object) : $(OUT) ;
CC on $(object) = $(CC_$(arch)) ;
CFLAGS on $(object) = $(CFLAGS) ;
INCLUDES on $(object) = $(INCLUDES) ;
DEFINES on $(object) = $(DEFINES) ;
HDRRULE on $(>) = HdrRule ;
HDRSCAN on $(>) = $(HDRPATTERN) ;
HDRSEARCH on $(>) = $(INCLUDES) ;
HDRGRIST on $(>) = $(HDRGRIST) ;
}
actions Compile
{
$(CC) -c -o $(1) $(CFLAGS) -I$(INCLUDES) -D$(DEFINES) $(2)
}
rule RmTemps
{
Temporary $(2) ;
}
actions quietly updated piecemeal together RmTemps
{
rm -f $(2)
}
actions Archive
{
$(AR) ru $(1) $(2)
}
rule Library library : objects
{
local obj ;
if ! $(library:S) {
library = $(library:S=.a) ;
}
library = $(library:G=<$(arch)>) ;
Depends all : $(library) ;
if ! $(library:D) {
MakeLocate $(library) $(library)($(objects:BS)) : $(OUT) ;
}
Depends $(library) : $(library)($(objects:BS)) ;
for obj in $(objects) {
Depends $(library)($(obj:BS)) : $(obj) ;
}
Clean clean : $(library) ;
AR on $(library) = $(AR_$(arch)) ;
Archive $(library) : $(objects) ;
RmTemps $(library) : $(objects) ;
}
rule ProcessDir
{
local CFLAGS = $(CFLAGS) ;
local DEFINES = $(DEFINES) ;
local INCLUDES = $(INCLUDES) ;
local local_rules = [ Glob $(1) : rules.jam ] ;
local source sources ;
if $(local_rules) {
local LOCAL_CFLAGS LOCAL_DEFINES LOCAL_INCLUDES LOCAL_SRC NO_LOCAL_SRC ;
include $(local_rules) ;
CFLAGS += $(LOCAL_CFLAGS) ;
DEFINES += $(LOCAL_DEFINES) ;
INCLUDES += $(LOCAL_INCLUDES) ;
if $(LOCAL_SRC) {
sources = $(LOCAL_SRC) ;
}
else {
sources = [ Glob $(1) : *.S *.c ] ;
sources = $(sources:BS) ;
}
if $(NO_LOCAL_SRC) {
sources = [ Filter $(sources) : $(NO_LOCAL_SRC) ] ;
}
sources = $(1)/$(sources) ;
}
else
sources = [ Glob $(1) : *.S *.c ] ;
for source in $(sources) {
local name = $(source:B) ;
if $(source:S) = ".S" {
# record the list of assembler sources
ASSEMBLER_SOURCES += $(name) ;
}
else if $(source:S) = ".c" && $(name) in $(ASSEMBLER_SOURCES) {
# skip C source file if corresponding assembler exists
continue ;
}
objname = <$(arch)>$(name).o ;
Compile $(objname) : $(source) ;
ALL_OBJECTS += $(objname) ;
}
}
rule ProcessDirs
{
local dir ;
for dir in $(1) {
ProcessDir $(dir) ;
}
}
INCLUDES_x86 = /usr/src/linux/include ;
INCLUDES_arm = ../kernel_headers
include/arch/arm
include/bits32
;
INCLUDES = include stdio string stdlib .
../msun/include
;
DEFINES = ANDROID_CHANGES
USE_LOCKS
REALLOC_ZERO_BYTES_FREES
_LIBC=1
SOFTFLOAT
FLOATING_POINT
NEED_PSELECT=1
ANDROID
;
CFLAGS_x86 = ;
for arch in $(ARCH)
{
local ARCH_DIR = $(BIONIC_TOP)/arch-$(arch) ;
local INCLUDES = $(INCLUDES_$(arch)) $(ARCH_DIR)/include $(INCLUDES) ;
local DEFINES = $(DEFINES_$(arch)) $(DEFINES) ARCH=$(arch) ;
local CFLAGS = $(CFLAGS) $(CFLAGS_$(arch)) ;
local OUT = out/$(arch) ;
local ASSEMBLER_SOURCES ALL_OBJECTS ;
ProcessDirs [ ListSubDirs $(ARCH_DIR) ] ;
ProcessDirs stdlib stdio unistd string tzcode inet ;
ProcessDirs [ ListSubDirs netbsd ] ;
ProcessDirs bionic ;
Library bionic : $(ALL_OBJECTS) ;
}
BIONIC_SEARCH = $(BIONIC_TOP)/include ;
# /HdrRule source : headers ;
#
# Arranges the proper dependencies when the file _source_ includes the files
# _headers_ through the #include C preprocessor directive
#
# this rule is not intendend to be called explicitely. It is called
# automatically during header scanning on sources handled by the @Object
# rule (e.g. sources in @Main or @Library rules)
#
rule HdrRule
{
# HdrRule source : headers ;
# N.B. This rule is called during binding, potentially after
# the fate of many targets has been determined, and must be
# used with caution: don't add dependencies to unrelated
# targets, and don't set variables on $(<).
# Tell Jam that anything depending on $(<) also depends on $(>),
# set SEARCH so Jam can find the headers, but then say we don't
# care if we can't actually find the headers (they may have been
# within ifdefs),
local s = $(>:G=$(HDRGRIST:E)) ;
Includes $(<) : $(s) ;
SEARCH on $(s) = $(HDRSEARCH) ;
NoCare $(s) ;
# Propagate on $(<) to $(>)
HDRSEARCH on $(s) = $(HDRSEARCH) ;
HDRSCAN on $(s) = $(HDRSCAN) ;
HDRRULE on $(s) = $(HDRRULE) ;
HDRGRIST on $(s) = $(HDRGRIST) ;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,54 +0,0 @@
Welcome to Bionic, Android's small and custom C library for the Android
platform.
Bionic is mainly a port of the BSD C library to our Linux kernel with the
following additions/changes:
- no support for locales
- no support for wide chars (i.e. multi-byte characters)
- its own smallish implementation of pthreads based on Linux futexes
- support for x86, ARM and ARM thumb CPU instruction sets and kernel interfaces
Bionic is released under the standard 3-clause BSD License
Bionic doesn't want to implement all features of a traditional C library, we only
add features to it as we need them, and we try to keep things as simple and small
as possible. Our goal is not to support scaling to thousands of concurrent threads
on multi-processors machines; we're running this on cell-phones, damnit !!
Note that Bionic doesn't provide a libthread_db or a libm implementation.
Adding new syscalls:
====================
Bionic provides the gensyscalls.py Python script to automatically generate syscall
stubs from the list defined in the file SYSCALLS.TXT. You can thus add a new syscall
by doing the following:
- edit SYSCALLS.TXT
- add a new line describing your syscall, it should look like:
return_type syscall_name(parameters) syscall_number
- in the event where you want to differentiate the syscall function from its entry name,
use the alternate:
return_type funcname:syscall_name(parameters) syscall_number
- additionally, if the syscall number is different between ARM and x86, use:
return_type funcname[:syscall_name](parameters) arm_number,x86_number
- a syscall number can be -1 to indicate that the syscall is not implemented on
a given platform, for example:
void __set_tls(void*) arm_number,-1
the comments in SYSCALLS.TXT contain more information about the line format
You can also use the 'checksyscalls.py' script to check that all the syscall
numbers you entered are correct. It does so by looking at the values defined in
your Linux kernel headers. The script indicates where the values are incorrect
and what is expected instead.

View File

@@ -1,13 +1,11 @@
# this file is used to list all the syscalls that will be supported by
# the Bionic C library. It is used to automatically generate the syscall
# stubs, the list of syscall constants (__NR_xxxx) and the content of <linux/_unitsd.h>
# This file is used to automatically generate bionic's the system calls stubs.
#
# each non comment line has the following format:
# Each non comment line has the following format:
#
# return_type func_name[:syscall_name[:call_id]]([parameter_list]) (syscall_number|"stub")
# return_type func_name[:syscall_name[:call_id]]([parameter_list]) (1|-1|"stub")
#
# note that:
# - syscall_name correspond to the name of the syscall, which may differ from
# Note that:
# - syscall_name corresponds to the name of the syscall, which may differ from
# the exported function name (example: the exit syscall is implemented by the _exit()
# function, which is not the same as the standard C exit() function which calls it)
# The call_id parameter, given that func_name and syscall_name have
@@ -18,271 +16,311 @@
# - each parameter type is assumed to be stored on 32 bits, there is no plan to support
# 64-bit architectures at the moment
#
# - it there is "stub" instead of a syscall number, the tool will not generate any
# assembler template for the syscall; it's up to the bionic implementation to provide
# a relevant C stub
# - the final field can be "1", meaning: generate a stub for each architecture,
# taking the constants from the kernel header files.
#
# - additionally, if the syscall number is different amoung ARM, and x86, use:
# return_type funcname[:syscall_name](parameters) arm_number,x86_number
# - the final field can be "stub" meaning: do not generate any stubs ---
# in this case, a hand-written custom stub must be provided.
# TODO: replace this with something like "custom" or "none", or remove
# it entirely.
#
# the file is processed by a python script named gensyscalls.py
# - the final field can be a three-element list of 1s and -1 meaning:
# this system call is only available on some of the architectures (1),
# and no stub should be generated for those architectures marked with -1.
# the order is arm,x86,mips.
# TODO: replace this with something more readable like "-arm,-mips" (meaning x86 only).
#
# This file is processed by a python script named gensyscalls.py.
#
# process management
void _exit:exit_group (int) 248,252
void _exit:exit_group (int) 1
void _exit_thread:exit (int) 1
pid_t __fork:fork (void) 2
pid_t _waitpid:waitpid (pid_t, int*, int, struct rusage*) -1,7
int __waitid:waitid(int, pid_t, struct siginfo_t*, int,void*) 280,284
pid_t __fork:fork (void) 1
pid_t _waitpid:waitpid (pid_t, int*, int, struct rusage*) -1,1,1
int __waitid:waitid(int, pid_t, struct siginfo_t*, int,void*) 1
pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage) 1
# NOTE: this system call is never called directly, but we list it there
# to have __NR_clone properly defined.
#
pid_t __sys_clone:clone (int, void*, int*, void*, int*) 120
pid_t __sys_clone:clone (int, void*, int*, void*, int*) 1
int execve (const char*, char* const*, char* const*) 11
int execve (const char*, char* const*, char* const*) 1
int __setuid:setuid32 (uid_t) 213
uid_t getuid:getuid32 () 199
gid_t getgid:getgid32 () 200
uid_t geteuid:geteuid32 () 201
gid_t getegid:getegid32 () 202
uid_t getresuid:getresuid32 (uid_t *ruid, uid_t *euid, uid_t *suid) 209
gid_t getresgid:getresgid32 (gid_t *rgid, gid_t *egid, gid_t *sgid) 211
pid_t gettid() 224
ssize_t readahead(int, off64_t, size_t) 225
int getgroups:getgroups32(int, gid_t *) 205
pid_t getpgid(pid_t) 132
pid_t getppid() 64
pid_t setsid() 66
int setgid:setgid32(gid_t) 214
int __setuid:setuid32 (uid_t) 1,1,-1
int __setuid:setuid (uid_t) -1,-1,1
uid_t getuid:getuid32 () 1,1,-1
uid_t getuid:getuid () -1,-1,1
gid_t getgid:getgid32 () 1,1,-1
gid_t getgid:getgid () -1,-1,1
uid_t geteuid:geteuid32 () 1,1,-1
uid_t geteuid:geteuid () -1,-1,1
gid_t getegid:getegid32 () 1,1,-1
gid_t getegid:getegid () -1,-1,1
uid_t getresuid:getresuid32 (uid_t *ruid, uid_t *euid, uid_t *suid) 1,1,-1
uid_t getresuid:getresuid (uid_t *ruid, uid_t *euid, uid_t *suid) -1,-1,1
gid_t getresgid:getresgid32 (gid_t *rgid, gid_t *egid, gid_t *sgid) 1,1,-1
gid_t getresgid:getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid) -1,-1,1
pid_t gettid() 1
ssize_t readahead(int, off64_t, size_t) 1
int getgroups:getgroups32(int, gid_t *) 1,1,-1
int getgroups:getgroups(int, gid_t *) -1,-1,1
pid_t getpgid(pid_t) 1
pid_t getppid() 1
pid_t getsid(pid_t) 1
pid_t setsid() 1
int setgid:setgid32(gid_t) 1,1,-1
int setgid:setgid(gid_t) -1,-1,1
int seteuid:seteuid32(uid_t) stub
int __setreuid:setreuid32(uid_t, uid_t) 203
int __setresuid:setresuid32(uid_t, uid_t, uid_t) 208
int setresgid:setresgid32(gid_t, gid_t, gid_t) 210
void* __brk:brk(void*) 45
int __setreuid:setreuid32(uid_t, uid_t) 1,1,-1
int __setreuid:setreuid(uid_t, uid_t) -1,-1,1
int __setresuid:setresuid32(uid_t, uid_t, uid_t) 1,1,-1
int __setresuid:setresuid(uid_t, uid_t, uid_t) -1,-1,1
int setresgid:setresgid32(gid_t, gid_t, gid_t) 1,1,-1
int setresgid:setresgid(gid_t, gid_t, gid_t) -1,-1,1
void* __brk:brk(void*) 1
# see comments in arch-arm/bionic/kill.S to understand why we don't generate an ARM stub for kill/tkill
int kill(pid_t, int) -1,37
int tkill(pid_t tid, int sig) -1,238
int tgkill(pid_t tgid, pid_t tid, int sig) -1,270
int __ptrace:ptrace(int request, int pid, void* addr, void* data) 26
int __set_thread_area:set_thread_area(void* user_desc) -1,243
int __getpriority:getpriority(int, int) 96
int setpriority(int, int, int) 97
int setrlimit(int resource, const struct rlimit *rlp) 75
int getrlimit:ugetrlimit(int resource, struct rlimit *rlp) 191
int getrusage(int who, struct rusage* r_usage) 77
int setgroups:setgroups32(int, const gid_t *) 206
int kill(pid_t, int) -1,1,1
int tkill(pid_t tid, int sig) -1,1,1
int tgkill(pid_t tgid, pid_t tid, int sig) -1,1,1
int __ptrace:ptrace(int request, int pid, void* addr, void* data) 1
int __set_thread_area:set_thread_area(void* user_desc) -1,1,1
int __getpriority:getpriority(int, int) 1
int setpriority(int, int, int) 1
int setrlimit(int resource, const struct rlimit *rlp) 1
int getrlimit:ugetrlimit(int resource, struct rlimit *rlp) 1,1,-1
int getrlimit:getrlimit(int resource, struct rlimit *rlp) -1,-1,1
int getrusage(int who, struct rusage* r_usage) 1
int setgroups:setgroups32(int, const gid_t *) 1,1,-1
int setgroups:setgroups(int, const gid_t *) -1,-1,1
pid_t getpgrp(void) stub
int setpgid(pid_t, pid_t) 57
pid_t vfork(void) 190,-1,190
int setregid:setregid32(gid_t, gid_t) 204
int chroot(const char *) 61
int setpgid(pid_t, pid_t) 1
pid_t vfork(void) 1,-1,-1
int setregid:setregid32(gid_t, gid_t) 1,1,-1
int setregid:setregid(gid_t, gid_t) -1,-1,1
int chroot(const char *) 1
# IMPORTANT: Even though <sys/prctl.h> declares prctl(int,...), the syscall stub must take 6 arguments
# to match the kernel implementation.
int prctl(int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5) 172
int capget(cap_user_header_t header, cap_user_data_t data) 184
int capset(cap_user_header_t header, const cap_user_data_t data) 185
int sigaltstack(const stack_t*, stack_t*) 186
int acct(const char* filepath) 51
int prctl(int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5) 1
int capget(cap_user_header_t header, cap_user_data_t data) 1
int capset(cap_user_header_t header, const cap_user_data_t data) 1
int sigaltstack(const stack_t*, stack_t*) 1
int acct(const char* filepath) 1
# file descriptors
ssize_t read (int, void*, size_t) 3
ssize_t write (int, const void*, size_t) 4
ssize_t pread64 (int, void *, size_t, off64_t) 180
ssize_t pwrite64 (int, void *, size_t, off64_t) 181
int __open:open (const char*, int, mode_t) 5
int __openat:openat (int, const char*, int, mode_t) 322,295
int close (int) 6
ssize_t read (int, void*, size_t) 1
ssize_t write (int, const void*, size_t) 1
ssize_t pread64 (int, void *, size_t, off64_t) 1
ssize_t pwrite64 (int, void *, size_t, off64_t) 1
int __open:open (const char*, int, mode_t) 1
int __openat:openat (int, const char*, int, mode_t) 1
int close (int) 1
int creat(const char*, mode_t) stub
off_t lseek(int, off_t, int) 19
int __llseek:_llseek (int, unsigned long, unsigned long, loff_t*, int) 140
pid_t getpid () 20
off_t lseek(int, off_t, int) 1
int __llseek:_llseek (int, unsigned long, unsigned long, loff_t*, int) 1
pid_t getpid () 1
void * mmap(void *, size_t, int, int, int, long) stub
void * __mmap2:mmap2(void*, size_t, int, int, int, long) 192
int munmap(void *, size_t) 91
void * mremap(void *, size_t, size_t, unsigned long) 163
int msync(const void *, size_t, int) 144
int mprotect(const void *, size_t, int) 125
int madvise(const void *, size_t, int) 220,219
int mlock(const void *addr, size_t len) 150
int munlock(const void *addr, size_t len) 151
int mincore(void* start, size_t length, unsigned char* vec) 219,218
int __ioctl:ioctl(int, int, void *) 54
int readv(int, const struct iovec *, int) 145
int writev(int, const struct iovec *, int) 146
int __fcntl:fcntl(int, int, void*) 55
int flock(int, int) 143
int fchmod(int, mode_t) 94
int dup(int) 41
int pipe(int *) 42,42
int pipe2(int *, int) 359,331
int dup2(int, int) 63
int select:_newselect(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *) 142
int ftruncate(int, off_t) 93
int ftruncate64(int, off64_t) 194
int getdents:getdents64(unsigned int, struct dirent *, unsigned int) 217,220
int fsync(int) 118
int fdatasync(int) 148
int fchown:fchown32(int, uid_t, gid_t) 207
void sync(void) 36
int __fcntl64:fcntl64(int, int, void *) 221
int __fstatfs64:fstatfs64(int, size_t, struct statfs *) 267,269
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count) 187
int fstatat:fstatat64(int dirfd, const char *path, struct stat *buf, int flags) 327,300
int mkdirat(int dirfd, const char *pathname, mode_t mode) 323,296
int fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags) 325,298
int fchmodat(int dirfd, const char *path, mode_t mode, int flags) 333,306
int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath) 329,302
int fsetxattr(int, const char *, const void *, size_t, int) 228
ssize_t fgetxattr(int, const char *, void *, size_t) 231
ssize_t flistxattr(int, char *, size_t) 234
int fremovexattr(int, const char *) 237
void * __mmap2:mmap2(void*, size_t, int, int, int, long) 1
int munmap(void *, size_t) 1
void * mremap(void *, size_t, size_t, unsigned long) 1
int msync(const void *, size_t, int) 1
int mprotect(const void *, size_t, int) 1
int madvise(const void *, size_t, int) 1
int mlock(const void *addr, size_t len) 1
int munlock(const void *addr, size_t len) 1
int mlockall(int flags) 1
int munlockall() 1
int mincore(void* start, size_t length, unsigned char* vec) 1
int __ioctl:ioctl(int, int, void *) 1
int readv(int, const struct iovec *, int) 1
int writev(int, const struct iovec *, int) 1
int __fcntl:fcntl(int, int, void*) 1
int flock(int, int) 1
int fchmod(int, mode_t) 1
int dup(int) 1
int pipe(int *) 1,1,-1
int pipe2(int *, int) 1
int dup2(int, int) 1
int select:_newselect(int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *) 1
int ftruncate(int, off_t) 1
int ftruncate64(int, off64_t) 1
int getdents:getdents64(unsigned int, struct dirent *, unsigned int) 1
int fsync(int) 1
int fdatasync(int) 1
int fchown:fchown32(int, uid_t, gid_t) 1,1,-1
int fchown:fchown(int, uid_t, gid_t) -1,-1,1
void sync(void) 1
int __fcntl64:fcntl64(int, int, void *) 1
int __fstatfs64:fstatfs64(int, size_t, struct statfs *) 1
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count) 1
int fstatat:fstatat64(int dirfd, const char *path, struct stat *buf, int flags) 1
int mkdirat(int dirfd, const char *pathname, mode_t mode) 1
int fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags) 1
int fchmodat(int dirfd, const char *path, mode_t mode, int flags) 1
int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath) 1
int fsetxattr(int, const char *, const void *, size_t, int) 1
ssize_t fgetxattr(int, const char *, void *, size_t) 1
ssize_t flistxattr(int, char *, size_t) 1
int fremovexattr(int, const char *) 1
# file system
int link (const char*, const char*) 9
int unlink (const char*) 10
int unlinkat (int, const char *, int) 328,301
int chdir (const char*) 12
int mknod (const char*, mode_t, dev_t) 14
int chmod (const char*,mode_t) 15
int chown:chown32(const char *, uid_t, gid_t) 212
int lchown:lchown32 (const char*, uid_t, gid_t) 198
int mount (const char*, const char*, const char*, unsigned long, const void*) 21
int link (const char*, const char*) 1
int unlink (const char*) 1
int unlinkat (int, const char *, int) 1
int chdir (const char*) 1
int mknod (const char*, mode_t, dev_t) 1
int chmod (const char*,mode_t) 1
int chown:chown32(const char *, uid_t, gid_t) 1,1,-1
int chown:chown(const char *, uid_t, gid_t) -1,-1,1
int lchown:lchown32 (const char*, uid_t, gid_t) 1,1,-1
int lchown:lchown (const char*, uid_t, gid_t) -1,-1,1
int mount (const char*, const char*, const char*, unsigned long, const void*) 1
int umount(const char*) stub
int umount2 (const char*, int) 52
int fstat:fstat64(int, struct stat*) 197
int stat:stat64(const char *, struct stat *) 195
int lstat:lstat64(const char *, struct stat *) 196
int mkdir(const char *, mode_t) 39
int readlink(const char *, char *, size_t) 85
int rmdir(const char *) 40
int rename(const char *, const char *) 38
int __getcwd:getcwd(char * buf, size_t size) 183
int access(const char *, int) 33
int faccessat(int, const char *, int, int) 334,307
int symlink(const char *, const char *) 83
int fchdir(int) 133
int truncate(const char*, off_t) 92
int setxattr(const char *, const char *, const void *, size_t, int) 226
int lsetxattr(const char *, const char *, const void *, size_t, int) 227
ssize_t getxattr(const char *, const char *, void *, size_t) 229
ssize_t lgetxattr(const char *, const char *, void *, size_t) 230
ssize_t listxattr(const char *, char *, size_t) 232
ssize_t llistxattr(const char *, char *, size_t) 233
int removexattr(const char *, const char *) 235
int lremovexattr(const char *, const char *) 236
int __statfs64:statfs64(const char *, size_t, struct statfs *) 266,268
int umount2 (const char*, int) 1
int fstat:fstat64(int, struct stat*) 1
int stat:stat64(const char *, struct stat *) 1
int lstat:lstat64(const char *, struct stat *) 1
int mkdir(const char *, mode_t) 1
int readlink(const char *, char *, size_t) 1
int rmdir(const char *) 1
int rename(const char *, const char *) 1
int __getcwd:getcwd(char * buf, size_t size) 1
int access(const char *, int) 1
int faccessat(int, const char *, int, int) 1
int symlink(const char *, const char *) 1
int fchdir(int) 1
int truncate(const char*, off_t) 1
int setxattr(const char *, const char *, const void *, size_t, int) 1
int lsetxattr(const char *, const char *, const void *, size_t, int) 1
ssize_t getxattr(const char *, const char *, void *, size_t) 1
ssize_t lgetxattr(const char *, const char *, void *, size_t) 1
ssize_t listxattr(const char *, char *, size_t) 1
ssize_t llistxattr(const char *, char *, size_t) 1
int removexattr(const char *, const char *) 1
int lremovexattr(const char *, const char *) 1
int __statfs64:statfs64(const char *, size_t, struct statfs *) 1
long unshare(unsigned long) 1
int swapon(const char *, int) 1
int swapoff(const char *) 1
# time
int pause () 29
int gettimeofday(struct timeval*, struct timezone*) 78
int settimeofday(const struct timeval*, const struct timezone*) 79
clock_t times(struct tms *) 43
int nanosleep(const struct timespec *, struct timespec *) 162
int clock_gettime(clockid_t clk_id, struct timespec *tp) 263,265
int clock_settime(clockid_t clk_id, const struct timespec *tp) 262,264
int clock_getres(clockid_t clk_id, struct timespec *res) 264,266
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *req, struct timespec *rem) 265,267
int getitimer(int, const struct itimerval *) 105
int setitimer(int, const struct itimerval *, struct itimerval *) 104
int __timer_create:timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid) 257,259
int __timer_settime:timer_settime(timer_t, int, const struct itimerspec*, struct itimerspec*) 258,260
int __timer_gettime:timer_gettime(timer_t, struct itimerspec*) 259,261
int __timer_getoverrun:timer_getoverrun(timer_t) 260,262
int __timer_delete:timer_delete(timer_t) 261,263
int utimes(const char*, const struct timeval tvp[2]) 269, 271
int utimensat(int, const char *, const struct timespec times[2], int) 348, 320, 320
int pause () 1
int gettimeofday(struct timeval*, struct timezone*) 1
int settimeofday(const struct timeval*, const struct timezone*) 1
clock_t times(struct tms *) 1
int nanosleep(const struct timespec *, struct timespec *) 1
int clock_gettime(clockid_t clk_id, struct timespec *tp) 1
int clock_settime(clockid_t clk_id, const struct timespec *tp) 1
int clock_getres(clockid_t clk_id, struct timespec *res) 1
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *req, struct timespec *rem) 1
int getitimer(int, const struct itimerval *) 1
int setitimer(int, const struct itimerval *, struct itimerval *) 1
int __timer_create:timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid) 1
int __timer_settime:timer_settime(timer_t, int, const struct itimerspec*, struct itimerspec*) 1
int __timer_gettime:timer_gettime(timer_t, struct itimerspec*) 1
int __timer_getoverrun:timer_getoverrun(timer_t) 1
int __timer_delete:timer_delete(timer_t) 1
int utimes(const char*, const struct timeval tvp[2]) 1
int utimensat(int, const char *, const struct timespec times[2], int) 1
int timerfd_create(clockid_t, int) 1
int timerfd_settime(int, int, const struct itimerspec *, struct itimerspec *) 1
int timerfd_gettime(int, struct itimerspec *) 1
# signals
int sigaction(int, const struct sigaction *, struct sigaction *) 67
int sigprocmask(int, const sigset_t *, sigset_t *) 126
int __sigsuspend:sigsuspend(int unused1, int unused2, unsigned mask) 72
int __rt_sigaction:rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize) 174
int __rt_sigprocmask:rt_sigprocmask (int how, const sigset_t *set, sigset_t *oset, size_t sigsetsize) 175
int __rt_sigtimedwait:rt_sigtimedwait(const sigset_t *set, struct siginfo_t *info, struct timespec_t *timeout, size_t sigset_size) 177
int sigpending(sigset_t *) 73
int sigaction(int, const struct sigaction *, struct sigaction *) 1
int sigprocmask(int, const sigset_t *, sigset_t *) 1
int __sigsuspend:sigsuspend(int unused1, int unused2, unsigned mask) 1,1,-1
int __sigsuspend:sigsuspend(const sigset_t *mask) -1,-1,1
int __rt_sigaction:rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize) 1
int __rt_sigprocmask:rt_sigprocmask (int how, const sigset_t *set, sigset_t *oset, size_t sigsetsize) 1
int __rt_sigtimedwait:rt_sigtimedwait(const sigset_t *set, struct siginfo_t *info, struct timespec_t *timeout, size_t sigset_size) 1
int sigpending(sigset_t *) 1
int signalfd4(int fd, const sigset_t *mask, size_t sizemask, int flags) 1
# sockets
int socket(int, int, int) 281,-1
int socketpair(int, int, int, int*) 288,-1
int bind(int, struct sockaddr *, int) 282,-1
int connect(int, struct sockaddr *, socklen_t) 283,-1
int listen(int, int) 284,-1
int accept(int, struct sockaddr *, socklen_t *) 285,-1
int getsockname(int, struct sockaddr *, socklen_t *) 286,-1
int getpeername(int, struct sockaddr *, socklen_t *) 287,-1
int sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t) 290,-1
int recvfrom(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) 292,-1
int shutdown(int, int) 293,-1
int setsockopt(int, int, int, const void *, socklen_t) 294,-1
int getsockopt(int, int, int, void *, socklen_t *) 295,-1
int sendmsg(int, const struct msghdr *, unsigned int) 296,-1
int recvmsg(int, struct msghdr *, unsigned int) 297,-1
int socket(int, int, int) 1,-1,1
int socketpair(int, int, int, int*) 1,-1,1
int bind(int, struct sockaddr *, int) 1,-1,1
int connect(int, struct sockaddr *, socklen_t) 1,-1,1
int listen(int, int) 1,-1,1
int accept(int, struct sockaddr *, socklen_t *) 1,-1,1
int getsockname(int, struct sockaddr *, socklen_t *) 1,-1,1
int getpeername(int, struct sockaddr *, socklen_t *) 1,-1,1
int sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t) 1,-1,1
int recvfrom(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) 1,-1,1
int shutdown(int, int) 1,-1,1
int setsockopt(int, int, int, const void *, socklen_t) 1,-1,1
int getsockopt(int, int, int, void *, socklen_t *) 1,-1,1
int sendmsg(int, const struct msghdr *, unsigned int) 1,-1,1
int recvmsg(int, struct msghdr *, unsigned int) 1,-1,1
# sockets for x86. These are done as an "indexed" call to socketcall syscall.
int socket:socketcall:1 (int, int, int) -1,102
int bind:socketcall:2 (int, struct sockaddr *, int) -1,102
int connect:socketcall:3(int, struct sockaddr *, socklen_t) -1,102
int listen:socketcall:4(int, int) -1,102
int accept:socketcall:5(int, struct sockaddr *, socklen_t *) -1,102
int getsockname:socketcall:6(int, struct sockaddr *, socklen_t *) -1,102
int getpeername:socketcall:7(int, struct sockaddr *, socklen_t *) -1,102
int socketpair:socketcall:8(int, int, int, int*) -1,102
int sendto:socketcall:11(int, const void *, size_t, int, const struct sockaddr *, socklen_t) -1,102
int recvfrom:socketcall:12(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) -1,102
int shutdown:socketcall:13(int, int) -1,102,-1
int setsockopt:socketcall:14(int, int, int, const void *, socklen_t) -1,102
int getsockopt:socketcall:15(int, int, int, void *, socklen_t *) -1,102
int sendmsg:socketcall:16(int, const struct msghdr *, unsigned int) -1,102
int recvmsg:socketcall:17(int, struct msghdr *, unsigned int) -1,102
int socket:socketcall:1 (int, int, int) -1,1,-1
int bind:socketcall:2 (int, struct sockaddr *, int) -1,1,-1
int connect:socketcall:3(int, struct sockaddr *, socklen_t) -1,1,-1
int listen:socketcall:4(int, int) -1,1,-1
int accept:socketcall:5(int, struct sockaddr *, socklen_t *) -1,1,-1
int getsockname:socketcall:6(int, struct sockaddr *, socklen_t *) -1,1,-1
int getpeername:socketcall:7(int, struct sockaddr *, socklen_t *) -1,1,-1
int socketpair:socketcall:8(int, int, int, int*) -1,1,-1
int sendto:socketcall:11(int, const void *, size_t, int, const struct sockaddr *, socklen_t) -1,1,-1
int recvfrom:socketcall:12(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *) -1,1,-1
int shutdown:socketcall:13(int, int) -1,1,-1
int setsockopt:socketcall:14(int, int, int, const void *, socklen_t) -1,1,-1
int getsockopt:socketcall:15(int, int, int, void *, socklen_t *) -1,1,-1
int sendmsg:socketcall:16(int, const struct msghdr *, unsigned int) -1,1,-1
int recvmsg:socketcall:17(int, struct msghdr *, unsigned int) -1,1,-1
# scheduler & real-time
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param) 156
int sched_getscheduler(pid_t pid) 157
int sched_yield(void) 158
int sched_setparam(pid_t pid, const struct sched_param *param) 154
int sched_getparam(pid_t pid, struct sched_param *param) 155
int sched_get_priority_max(int policy) 159
int sched_get_priority_min(int policy) 160
int sched_rr_get_interval(pid_t pid, struct timespec *interval) 161
int sched_setaffinity(pid_t pid, size_t setsize, const cpu_set_t* set) 241
int __sched_getaffinity:sched_getaffinity(pid_t pid, size_t setsize, cpu_set_t* set) 242
int __getcpu:getcpu(unsigned *cpu, unsigned *node, void *unused) 345,318
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param) 1
int sched_getscheduler(pid_t pid) 1
int sched_yield(void) 1
int sched_setparam(pid_t pid, const struct sched_param *param) 1
int sched_getparam(pid_t pid, struct sched_param *param) 1
int sched_get_priority_max(int policy) 1
int sched_get_priority_min(int policy) 1
int sched_rr_get_interval(pid_t pid, struct timespec *interval) 1
int sched_setaffinity(pid_t pid, size_t setsize, const cpu_set_t* set) 1
int __sched_getaffinity:sched_getaffinity(pid_t pid, size_t setsize, cpu_set_t* set) 1
int __getcpu:getcpu(unsigned *cpu, unsigned *node, void *unused) 1
# io priorities
int ioprio_set(int which, int who, int ioprio) 314,289
int ioprio_get(int which, int who) 315,290
int ioprio_set(int which, int who, int ioprio) 1
int ioprio_get(int which, int who) 1
# other
int uname(struct utsname *) 122
pid_t __wait4:wait4(pid_t pid, int *status, int options, struct rusage *rusage) 114
mode_t umask(mode_t) 60
int __reboot:reboot(int, int, int, void *) 88
int __syslog:syslog(int, char *, int) 103
int init_module(void *, unsigned long, const char *) 128
int delete_module(const char*, unsigned int) 129
int klogctl:syslog(int, char *, int) 103
int sysinfo(struct sysinfo *) 116
int personality(unsigned long) 136
long perf_event_open(struct perf_event_attr *attr_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags) 364
int uname(struct utsname *) 1
mode_t umask(mode_t) 1
int __reboot:reboot(int, int, int, void *) 1
int __syslog:syslog(int, char *, int) 1
int init_module(void *, unsigned long, const char *) 1
int delete_module(const char*, unsigned int) 1
int klogctl:syslog(int, char *, int) 1
int sysinfo(struct sysinfo *) 1
int personality(unsigned long) 1
long perf_event_open(struct perf_event_attr *attr_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags) 1
# futex
int futex(void *, int, int, void *, void *, int) 240
int futex(void *, int, int, void *, void *, int) 1
# epoll
int epoll_create(int size) 250,254
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) 251,255
int epoll_wait(int epfd, struct epoll_event *events, int max, int timeout) 252,256
int epoll_create(int size) 1
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) 1
int epoll_wait(int epfd, struct epoll_event *events, int max, int timeout) 1
int inotify_init(void) 316,291,290
int inotify_add_watch(int, const char *, unsigned int) 317,292
int inotify_rm_watch(int, unsigned int) 318,293
int inotify_init(void) 1
int inotify_add_watch(int, const char *, unsigned int) 1
int inotify_rm_watch(int, unsigned int) 1
int poll(struct pollfd *, unsigned int, long) 168
int poll(struct pollfd *, unsigned int, long) 1
int eventfd:eventfd2(unsigned int, int) 356,328
int eventfd:eventfd2(unsigned int, int) 1
# ARM-specific ARM_NR_BASE == 0x0f0000 == 983040
int __set_tls:ARM_set_tls(void*) 983045,-1
int cacheflush:ARM_cacheflush(long start, long end, long flags) 983042,-1
int __set_tls:__ARM_NR_set_tls(void*) 1,-1,-1
int cacheflush:__ARM_NR_cacheflush(long start, long end, long flags) 1,-1,-1
# MIPS-specific
int _flush_cache:cacheflush(char *addr, const int nbytes, const int op) -1,-1,1
int syscall(int number,...) -1,-1,1

44
libc/arch-arm/arm.mk Normal file
View File

@@ -0,0 +1,44 @@
_LIBC_ARCH_COMMON_SRC_FILES := \
arch-arm/bionic/abort_arm.S \
arch-arm/bionic/atomics_arm.c \
arch-arm/bionic/clone.S \
arch-arm/bionic/eabi.c \
arch-arm/bionic/_exit_with_stack_teardown.S \
arch-arm/bionic/ffs.S \
arch-arm/bionic/futex_arm.S \
arch-arm/bionic/__get_sp.S \
arch-arm/bionic/kill.S \
arch-arm/bionic/libgcc_compat.c \
arch-arm/bionic/memcmp16.S \
arch-arm/bionic/memcmp.S \
arch-arm/bionic/_setjmp.S \
arch-arm/bionic/setjmp.S \
arch-arm/bionic/sigsetjmp.S \
arch-arm/bionic/syscall.S \
arch-arm/bionic/tgkill.S \
arch-arm/bionic/tkill.S \
# These are used by the static and dynamic versions of the libc
# respectively.
_LIBC_ARCH_STATIC_SRC_FILES := \
arch-arm/bionic/exidx_static.c
_LIBC_ARCH_DYNAMIC_SRC_FILES := \
arch-arm/bionic/exidx_dynamic.c
# Remove the C++ fortify function implementations for which there is an
# arm assembler version.
_LIBC_FORTIFY_FILES_TO_REMOVE := \
bionic/__memcpy_chk.cpp \
bionic/__memset_chk.cpp \
bionic/__strcpy_chk.cpp \
bionic/__strcat_chk.cpp \
libc_common_src_files := \
$(filter-out $(_LIBC_FORTIFY_FILES_TO_REMOVE),$(libc_common_src_files))
ifeq ($(strip $(wildcard bionic/libc/arch-arm/$(TARGET_CPU_VARIANT)/$(TARGET_CPU_VARIANT).mk)),)
$(error "TARGET_CPU_VARIANT not set or set to an unknown value. Possible values are cortex-a7, cortex-a8, cortex-a9, cortex-a15, krait. Use generic for devices that do not have a CPU similar to any of the supported cpu variants.")
endif
include bionic/libc/arch-arm/$(TARGET_CPU_VARIANT)/$(TARGET_CPU_VARIANT).mk

View File

@@ -25,10 +25,10 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
.global __get_sp
.type __get_sp, %function
__get_sp:
mov r0, sp
bx lr
#include <machine/asm.h>
ENTRY(__get_sp)
mov r0, sp
bx lr
END(__get_sp)

View File

@@ -25,27 +25,20 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <asm/unistd.h>
#include <machine/asm.h>
#include <asm/unistd.h>
@ void _exit_with_stack_teardown(void * stackBase, int stackSize, int retCode)
// void _exit_with_stack_teardown(void* stackBase, int stackSize, int retCode)
ENTRY(_exit_with_stack_teardown)
#if __ARM_EABI__
mov lr, r2
ldr r7, =__NR_munmap
swi #0 @ the stack is destroyed by this call
swi #0 // the stack is destroyed by this call
mov r0, lr
ldr r7, =__NR_exit
swi #0
#else
mov lr, r2
swi # __NR_munmap @ the stack is destroyed by this call
mov r0, lr
swi # __NR_exit
#endif
@ exit() should never return, cause a crash if it does
mov r0, #0
ldr r0, [r0]
// exit() should never return, cause a crash if it does
mov r0, #0
ldr r0, [r0]
END(_exit_with_stack_teardown)

View File

@@ -38,5 +38,5 @@
ENTRY(abort)
.save {r3, r14}
stmfd sp!, {r3, r14}
blx PIC_SYM(_C_LABEL(__libc_android_abort), PLT)
bl PIC_SYM(_C_LABEL(__libc_android_abort), PLT)
END(abort)

View File

@@ -0,0 +1,35 @@
/*
* Copyright (C) 2012 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
extern void *__dso_handle;
__attribute__ ((visibility ("hidden")))
int atexit(void (*func)(void))
{
return (__cxa_atexit((void (*)(void *))func, (void *)0, &__dso_handle));
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2009 The Android Open Source Project
* Copyright (c) 2012 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,16 +25,35 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <string.h>
#include <sys/types.h>
#include <private/libc_logging.h>
#include <stdio.h>
/*
* Compare strings using the current locale. Since Bionic really does not
* support locales, we assume we always use the C locale and call strcmp.
*
* This function is provided to make libstdc++-v3 usable.
* This source file should only be included by libc.so, its purpose is
* to support legacy ARM binaries by exporting a publicly visible
* implementation of atexit().
*/
extern int __cxa_atexit(void (*func)(void *), void *arg, void *dso);
/*
* Register a function to be performed at exit.
*/
int
strcoll(const char *s1, const char *s2)
atexit(void (*func)(void))
{
return strcmp(s1, s2);
/*
* Exit functions queued by this version of atexit will not be called
* on dlclose(), and when they are called (at program exit), the
* calling library may have been dlclose()'d, causing the program to
* crash.
*/
static char const warning[] = "WARNING: generic atexit() called from legacy shared library\n";
__libc_format_log(ANDROID_LOG_WARN, "libc", warning);
fprintf(stderr, warning);
return (__cxa_atexit((void (*)(void *))func, NULL, NULL));
}

View File

@@ -25,49 +25,42 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/linux-syscalls.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <asm/unistd.h>
// int __pthread_clone(void* (*fn)(void*), void* child_stack, int flags, void* arg);
ENTRY(__pthread_clone)
@ insert the args onto the new stack
str r0, [r1, #-4]
str r3, [r1, #-8]
@ do the system call
@ get flags
# Push 'fn' and 'arg' onto 'child_stack'.
stmdb r1!, {r0, r3}
# The sys_clone system call only takes two arguments: 'flags' and 'child_stack'.
# 'child_stack' is already in r1, but we need to move 'flags' into position.
mov r0, r2
@ new sp is already in r1
#if __ARM_EABI__
stmfd sp!, {r4, r7}
# System call.
mov ip, r7
ldr r7, =__NR_clone
swi #0
#else
swi #__NR_clone
#endif
# Child?
movs r0, r0
#if __ARM_EABI__
ldmnefd sp!, {r4, r7}
#endif
blt __error
bxne lr
beq 1f
# Parent.
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
@ pick the function arg and call address off the stack and jump
@ to the C __thread_entry function which does some setup and then
@ calls the thread's start function
ldr r0, [sp, #-4]
ldr r1, [sp, #-8]
mov r2, sp @ __thread_entry needs the TLS pointer
1: # Child.
# Pop 'fn' and 'arg' back off the stack and call __thread_entry.
pop {r0, r1}
# __thread_entry also needs our stack pointer.
mov r2, sp
b __thread_entry
__error:
mov r0, #-1
bx lr
END(__pthread_clone)
@@ -78,8 +71,8 @@ END(__pthread_clone)
# pid_t *pid, void *tls, pid_t *ctid,
# int (*fn)(void *), void* arg );
#
# NOTE: This is not the same signature than the GLibc
# __clone function here !! Placing 'fn' and 'arg'
# NOTE: This is not the same signature as the glibc
# __clone function. Placing 'fn' and 'arg'
# at the end of the parameter list makes the
# implementation much simpler.
#
@@ -98,20 +91,20 @@ ENTRY(__bionic_clone)
str r5, [r1, #-4]
str r6, [r1, #-8]
# system call
# System call
ldr r7, =__NR_clone
swi #0
movs r0, r0
beq 1f
# in parent, reload saved registers
# then either exit or error
#
# In the parent, reload saved registers then either return or set errno.
ldmfd sp!, {r4, r5, r6, r7}
bxne lr
b __set_syscall_errno
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
1: # in the child - pick arguments
1: # The child.
ldr r0, [sp, #-4]
ldr r1, [sp, #-8]
b __bionic_clone_entry

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2010 The Android Open Source Project
* Copyright (C) 2012 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,17 +25,29 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _LINKER_FORMAT_H
#define _LINKER_FORMAT_H
#include <stdarg.h>
#include "../../bionic/libc_init_common.h"
#include <stddef.h>
#include <stdint.h>
/* Formatting routines for the dynamic linker's debug traces */
/* We want to avoid dragging the whole C library fprintf() */
/* implementation into the dynamic linker since this creates */
/* issues (it uses malloc()/free()) and increases code size */
__attribute__ ((section (".preinit_array")))
void (*__PREINIT_ARRAY__)(void) = (void (*)(void)) -1;
int format_buffer(char *buffer, size_t bufsize, const char *format, ...);
__attribute__ ((section (".init_array")))
void (*__INIT_ARRAY__)(void) = (void (*)(void)) -1;
#endif /* _LINKER_FORMAT_H */
__attribute__ ((section (".fini_array")))
void (*__FINI_ARRAY__)(void) = (void (*)(void)) -1;
__LIBC_HIDDEN__ void _start() {
structors_array_t array;
array.preinit_array = &__PREINIT_ARRAY__;
array.init_array = &__INIT_ARRAY__;
array.fini_array = &__FINI_ARRAY__;
void* raw_args = (void*) ((uintptr_t) __builtin_frame_address(0) + sizeof(void*));
__libc_init(raw_args, NULL, &main, &array);
}
#include "__dso_handle.h"
#include "atexit.h"

View File

@@ -1,86 +0,0 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
.text
.align 4
.type _start,#function
.globl _start
# this is the small startup code that is first run when
# any executable that is dynamically-linked with Bionic
# runs.
#
# it's purpose is to call __libc_init with appropriate
# arguments, which are:
#
# - the address of the raw data block setup by the Linux
# kernel ELF loader
#
# - address of an "onexit" function, not used on any
# platform supported by Bionic
#
# - address of the "main" function of the program.
#
# - address of the constructor list
#
_start:
mov r0, sp
mov r1, #0
ldr r2, =main
adr r3, 1f
ldr r4, =__libc_init
blx r4
mov r0, #0
bx r0
1: .long __PREINIT_ARRAY__
.long __INIT_ARRAY__
.long __FINI_ARRAY__
.long __CTOR_LIST__
.section .preinit_array, "aw"
.globl __PREINIT_ARRAY__
__PREINIT_ARRAY__:
.long -1
.section .init_array, "aw"
.globl __INIT_ARRAY__
__INIT_ARRAY__:
.long -1
.section .fini_array, "aw"
.globl __FINI_ARRAY__
__FINI_ARRAY__:
.long -1
.section .ctors, "aw"
.globl __CTOR_LIST__
__CTOR_LIST__:
.long -1
#include "__dso_handle.S"
#include "atexit.S"

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* Copyright (C) 2012 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,39 +26,33 @@
* SUCH DAMAGE.
*/
#include <machine/asm.h>
extern void __cxa_finalize(void *);
extern void *__dso_handle;
# Implement static C++ destructors when the shared
# library is unloaded through dlclose().
#
# A call to this function must be the first entry
# in the .fini_array. See 3.3.5.3.C of C++ ABI
# standard.
#
ENTRY(__on_dlclose)
adr r0, 0f
ldr r0, [r0]
b __cxa_finalize
END(__on_dlclose)
__attribute__((visibility("hidden"),destructor))
void __on_dlclose() {
__cxa_finalize(&__dso_handle);
}
0:
.long __dso_handle
.section .init_array, "aw"
.globl __INIT_ARRAY__
__INIT_ARRAY__:
.long -1
.section .fini_array, "aw"
.globl __FINI_ARRAY__
__FINI_ARRAY__:
.long -1
.long __on_dlclose
/* CRT_LEGACY_WORKAROUND should only be defined when building
* this file as part of the platform's C library.
*
* The C library already defines a function named 'atexit()'
* for backwards compatibility with older NDK-generated binaries.
*
* For newer ones, 'atexit' is actually embedded in the C
* runtime objects that are linked into the final ELF
* binary (shared library or executable), and will call
* __cxa_atexit() in order to un-register any atexit()
* handler when a library is unloaded.
*
* This function must be global *and* hidden. Only the
* code inside the same ELF binary should be able to access it.
*/
#ifdef CRT_LEGACY_WORKAROUND
#include "__dso_handle.S"
#include "__dso_handle.h"
#else
#include "__dso_handle_so.S"
#include "__dso_handle_so.h"
#include "atexit.h"
#endif
#include "atexit.S"

View File

@@ -1,87 +0,0 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
.text
.align 4
.type _start,#function
.globl _start
# this is the small startup code that is first run when
# any executable that is statically-linked with Bionic
# runs.
#
# it's purpose is to call __libc_init with appropriate
# arguments, which are:
#
# - the address of the raw data block setup by the Linux
# kernel ELF loader
#
# - address of an "onexit" function, not used on any
# platform supported by Bionic
#
# - address of the "main" function of the program.
#
# - address of the constructor list
#
_start:
mov r0, sp
mov r1, #0
ldr r2, =main
adr r3, 1f
ldr r4, =__libc_init
blx r4
mov r0, #0
bx r0
1: .long __PREINIT_ARRAY__
.long __INIT_ARRAY__
.long __FINI_ARRAY__
.long __CTOR_LIST__
.section .preinit_array, "aw"
.globl __PREINIT_ARRAY__
__PREINIT_ARRAY__:
.long -1
.section .init_array, "aw"
.globl __INIT_ARRAY__
__INIT_ARRAY__:
.long -1
.section .fini_array, "aw"
.globl __FINI_ARRAY__
__FINI_ARRAY__:
.long -1
.section .ctors, "aw"
.globl __CTOR_LIST__
__CTOR_LIST__:
.long -1
#include "__dso_handle.S"
#include "atexit.S"

View File

@@ -35,6 +35,6 @@
.section .fini_array, "aw"
.long 0
.section .ctors, "aw"
.long 0
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@@ -26,13 +26,6 @@
* SUCH DAMAGE.
*/
/* This is the same than crtend.S except that a shared library
* cannot have a .preinit_array
*/
.section .init_array, "aw"
.long 0
.section .fini_array, "aw"
.long 0
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@@ -30,22 +30,6 @@
extern int __cxa_atexit(void (*)(void*), void*, void* );
/* Temporary hack: this variable should not be part of the C library
* itself, but placed in the .bss section of each executable or
* shared library instead.
*
* We keep it here temporarily until the build system has been
* modified properly to use crtbegin_so.S and crtend_so.S when
* generating shared libraries.
*
* It must be a 'weak' symbol to avoid conflicts with the definitions
* that have been moved to crtbegin_static.S and crtbegin_dynamic.S
*
* For the record, it is used for static C++ object construction
* and destruction. See http://www.codesourcery.com/public/cxx-abi/abi.html#dso-dtor
*/
void* __attribute__((weak)) __dso_handle;
/* The "C++ ABI for ARM" document states that static C++ constructors,
* which are called from the .init_array, should manually call
* __aeabi_atexit() to register static destructors explicitely.

View File

@@ -25,12 +25,8 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
typedef long unsigned int *_Unwind_Ptr;
/* Stubbed out in libdl and defined in the dynamic linker.
* Same semantics as __gnu_Unwind_Find_exidx().
*/
extern _Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr pc, int *pcount);
#include <link.h>
/* For a given PC, find the .so that it belongs to.
* Returns the base address of the .ARM.exidx section

View File

@@ -25,7 +25,8 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
typedef long unsigned int *_Unwind_Ptr;
#include <link.h>
/* Find the .ARM.exidx section (which in the case of a static executable
* can be identified through its start and end symbols), and return its

View File

@@ -31,55 +31,11 @@
#include <machine/asm.h>
#include <machine/cpu-features.h>
/*
* ffs - find first set bit, this algorithm isolates the first set
* bit, then multiplies the number by 0x0450fbaf which leaves the top
* 6 bits as an index into the table. This algorithm should be a win
* over the checking each bit in turn as per the C compiled version.
*
* Some newer ARM architectures have an instruction named
* CLZ (count leading Zero's) that is used
*
* This is the ffs algorithm devised by d.seal and posted to comp.sys.arm on
* 16 Feb 1994.
*/
ENTRY(ffs)
/* Standard trick to isolate bottom bit in r0 or 0 if r0 = 0 on entry */
rsb r1, r0, #0
ands r0, r0, r1
#ifndef __ARM_HAVE_CLZ
/*
* now r0 has at most one set bit, call this X
* if X = 0, all further instructions are skipped
*/
adrne r2, .L_ffs_table
orrne r0, r0, r0, lsl #4 /* r0 = X * 0x11 */
orrne r0, r0, r0, lsl #6 /* r0 = X * 0x451 */
rsbne r0, r0, r0, lsl #16 /* r0 = X * 0x0450fbaf */
/* now lookup in table indexed on top 6 bits of r0 */
ldrneb r0, [ r2, r0, lsr #26 ]
bx lr
END(ffs)
.text;
.type .L_ffs_table, _ASM_TYPE_OBJECT;
.L_ffs_table:
/* 0 1 2 3 4 5 6 7 */
.byte 0, 1, 2, 13, 3, 7, 0, 14 /* 0- 7 */
.byte 4, 0, 8, 0, 0, 0, 0, 15 /* 8-15 */
.byte 11, 5, 0, 0, 9, 0, 0, 26 /* 16-23 */
.byte 0, 0, 0, 0, 0, 22, 28, 16 /* 24-31 */
.byte 32, 12, 6, 0, 0, 0, 0, 0 /* 32-39 */
.byte 10, 0, 0, 25, 0, 0, 21, 27 /* 40-47 */
.byte 31, 0, 0, 0, 0, 24, 0, 20 /* 48-55 */
.byte 30, 0, 23, 19, 29, 18, 17, 0 /* 56-63 */
#else /* !defined(__ARM_HAVE_CLZ) */
clzne r0, r0
rsbne r0, r0, #32
bx lr
END(ffs)
#endif /* !defined(__ARM_HAVE_CLZ) */

View File

@@ -25,88 +25,46 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/linux-syscalls.h>
#include <asm/unistd.h>
#include <machine/asm.h>
#include <machine/cpu-features.h>
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
/* __futex_wait(*ftx, val, *timespec) */
/* __futex_wake(*ftx, counter) */
/* __futex_syscall3(*ftx, op, val) */
/* __futex_syscall4(*ftx, op, val, *timespec) */
.global __futex_wait
.type __futex_wait, %function
.global __futex_wake
.type __futex_wake, %function
.global __futex_syscall3
.type __futex_syscall3, %function
.global __futex_syscall4
.type __futex_syscall4, %function
#if __ARM_EABI__
// __futex_syscall3(*ftx, op, val)
ENTRY(__futex_syscall3)
stmdb sp!, {r4, r7}
.save {r4, r7}
mov ip, r7
ldr r7, =__NR_futex
swi #0
ldmia sp!, {r4, r7}
mov r7, ip
bx lr
END(__futex_syscall3)
ENTRY(__futex_wait)
stmdb sp!, {r4, r7}
.save {r4, r7}
mov r3, r2
mov r2, r1
mov r1, #FUTEX_WAIT
ldr r7, =__NR_futex
swi #0
ldmia sp!, {r4, r7}
bx lr
END(__futex_wait)
ENTRY(__futex_wake)
.save {r4, r7}
stmdb sp!, {r4, r7}
mov r2, r1
mov r1, #FUTEX_WAKE
ldr r7, =__NR_futex
swi #0
ldmia sp!, {r4, r7}
bx lr
END(__futex_wake)
#else
ENTRY(__futex_syscall3)
swi #__NR_futex
bx lr
END(__futex_syscall3)
ENTRY(__futex_wait)
mov r3, r2
mov r2, r1
mov r1, #FUTEX_WAIT
swi #__NR_futex
bx lr
END(__futex_wait)
ENTRY(__futex_wake)
mov r2, r1
mov r1, #FUTEX_WAKE
swi #__NR_futex
bx lr
END(__futex_wake)
#endif
// __futex_syscall4(*ftx, op, val, *timespec)
ENTRY(__futex_syscall4)
b __futex_syscall3
END(__futex_syscall4)
// __futex_wait(*ftx, val, *timespec)
ENTRY(__futex_wait)
mov ip, r7
mov r3, r2
mov r2, r1
mov r1, #FUTEX_WAIT
ldr r7, =__NR_futex
swi #0
mov r7, ip
bx lr
END(__futex_wait)
// __futex_wake(*ftx, counter)
ENTRY(__futex_wake)
mov ip, r7
mov r2, r1
mov r1, #FUTEX_WAKE
ldr r7, =__NR_futex
swi #0
mov r7, ip
bx lr
END(__futex_wake)

View File

@@ -25,6 +25,11 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <linux/err.h>
#include <asm/unistd.h>
#include <machine/asm.h>
/* unlike our auto-generated syscall stubs, this code saves lr
on the stack, as well as a few other registers. this makes
our stack unwinder happy, when we generate debug stack
@@ -32,19 +37,14 @@
abort due to a fatal runtime error (e.g. detection
of a corrupted malloc heap).
*/
#include <sys/linux-syscalls.h>
#include <machine/asm.h>
#ifndef __NR_kill
#define __NR_kill 37
#endif
ENTRY(kill)
stmfd sp!, {r4-r7, ip, lr}
ldr r7, =__NR_kill
swi #0
ldmfd sp!, {r4-r7, ip, lr}
movs r0, r0
bxpl lr
b __set_syscall_errno
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(kill)

View File

@@ -30,8 +30,8 @@
* dynamic linker to copy their definition into the final libc.so binary.
*
* They are required to ensure backwards binary compatibility with
* Android 1.5, 1.6 and even 3.0 system images. Some applications built
* using the NDK require them to be here.
* libc.so provided by the platform and binaries built with the NDK or
* different versions/configurations of toolchains.
*
* Now, for a more elaborate description of the issue:
*
@@ -48,7 +48,9 @@
* gcc <options> -o libfoo.so foo.a libgcc.a -lc -lm
*
* This ensures that any helper function needed by the code in foo.a is copied
* into the final libfoo.so. Unfortunately, the Android build system has been
* into the final libfoo.so. However, doing so will link a bunch of other __cxa
* functions from libgcc.a into each .so and executable, causing 4k+ increase
* in every binary. Therefore the Android platform build system has been
* using this instead:
*
* gcc <options> -o libfoo.so foo.a -lc -lm libgcc.a
@@ -58,9 +60,10 @@
* into libfoo.so. Instead, a symbol import definition will be added to it
* so libfoo.so can directly call the one in libc.so at runtime.
*
* When changing toolchains for 2.0, the set of helper functions copied to
* libc.so changed, which resulted in some native shared libraries generated
* with the NDK to fail to load properly.
* When refreshing toolchains for new versions or using different architecture
* flags, the set of helper functions copied to libc.so may change, which
* resulted in some native shared libraries generated with the NDK or prebuilts
* from vendors to fail to load properly.
*
* The NDK has been fixed after 1.6_r1 to use the correct link command, so
* any native shared library generated with it should now be safe from that
@@ -73,6 +76,11 @@
* but it is easier to add a single function here than asking several app
* developers to fix their build.
*
* The __aeabi_idiv function is added to the list since cortex-a15 supports
* HW idiv instructions so the system libc.so doesn't pull in the reference to
* __aeabi_idiv but legacy libraries built against cortex-a9 targets still need
* it.
*
* Final note: some of the functions below should really be in libm.so to
* completely reflect the state of 1.5/1.6 system images. However,
* since libm.so depends on libc.so, it's easier to put all of
@@ -110,8 +118,10 @@
XX(__aeabi_fsub) \
XX(__aeabi_i2d) \
XX(__aeabi_i2f) \
XX(__aeabi_idiv) \
XX(__aeabi_l2d) \
XX(__aeabi_l2f) \
XX(__aeabi_lasr) \
XX(__aeabi_lmul) \
XX(__aeabi_llsl) \
XX(__aeabi_llsr) \
@@ -122,7 +132,7 @@
XX(__cmpdf2) \
XX(__divdf3) \
XX(__divsf3) \
XX(__eqdf2) \
XX(__eqdf2) \
XX(__extendsfdf2) \
XX(__fixdfsi) \
XX(__fixsfsi) \

View File

@@ -29,44 +29,93 @@
#include <machine/cpu-features.h>
#include <machine/asm.h>
#ifdef HAVE_32_BYTE_CACHE_LINE
#define CACHE_LINE_SIZE 32
#else
#define CACHE_LINE_SIZE 64
#endif
/*
* Optimized memcmp() for ARM9.
* This would not be optimal on XScale or ARM11, where more prefetching
* and use of PLD will be needed.
* The 2 major optimzations here are
* (1) The main loop compares 16 bytes at a time
* (2) The loads are scheduled in a way they won't stall
* Optimized memcmp() for Cortex-A9.
*/
ENTRY(memcmp)
PLD (r0, #0)
PLD (r1, #0)
pld [r0, #(CACHE_LINE_SIZE * 0)]
pld [r0, #(CACHE_LINE_SIZE * 1)]
/* take of the case where length is 0 or the buffers are the same */
cmp r0, r1
cmpne r2, #0
moveq r0, #0
bxeq lr
pld [r1, #(CACHE_LINE_SIZE * 0)]
pld [r1, #(CACHE_LINE_SIZE * 1)]
/* make sure we have at least 8+4 bytes, this simplify things below
* and avoid some overhead for small blocks
*/
cmp r2, #(8+4)
bmi 10f
/*
* Neon optimization
* Comparing 32 bytes at a time
*/
#if defined(__ARM_NEON__) && defined(NEON_UNALIGNED_ACCESS)
subs r2, r2, #32
blo 3f
/* preload all the cache lines we need. */
pld [r0, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 2)]
1: /* The main loop compares 32 bytes at a time */
vld1.8 {d0 - d3}, [r0]!
pld [r0, #(CACHE_LINE_SIZE * 2)]
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(CACHE_LINE_SIZE * 2)]
/* Start subtracting the values and merge results */
vsub.i8 q0, q2
vsub.i8 q1, q3
vorr q2, q0, q1
vorr d4, d5
vmov r3, ip, d4
/* Check if there are any differences among the 32 bytes */
orrs r3, ip
bne 2f
subs r2, r2, #32
bhs 1b
b 3f
2:
/* Check if the difference was in the first or last 16 bytes */
sub r0, #32
vorr d0, d1
sub r1, #32
vmov r3, ip, d0
orrs r3, ip
/* if the first 16 bytes are equal, we only have to rewind 16 bytes */
ittt eq
subeq r2, #16
addeq r0, #16
addeq r1, #16
3: /* fix-up the remaining count */
add r2, r2, #32
cmp r2, #(8+4)
bmi 10f
#endif
.save {r4, lr}
/* save registers */
stmfd sp!, {r4, lr}
PLD (r0, #32)
PLD (r1, #32)
/* since r0 hold the result, move the first source
* pointer somewhere else
*/
mov r4, r0
/* make sure we have at least 8+4 bytes, this simplify things below
* and avoid some overhead for small blocks
*/
cmp r2, #(8+4)
bmi 8f
/* align first pointer to word boundary
* offset = -src & 3
*/
@@ -102,9 +151,9 @@ ENTRY(memcmp)
ldr ip, [r1]
subs r2, r2, #(32 + 4)
bmi 1f
0: PLD (r4, #64)
PLD (r1, #64)
0: pld [r4, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 2)]
ldr r0, [r4], #4
ldr lr, [r1, #4]!
eors r0, r0, ip
@@ -129,14 +178,14 @@ ENTRY(memcmp)
ldreq r0, [r4], #4
ldreq ip, [r1, #4]!
eoreqs r0, r0, lr
bne 2f
bne 2f
subs r2, r2, #32
bhs 0b
/* do we have at least 4 bytes left? */
1: adds r2, r2, #(32 - 4 + 4)
bmi 4f
/* finish off 4 bytes at a time */
3: ldr r0, [r4], #4
ldr ip, [r1], #4
@@ -170,19 +219,28 @@ ENTRY(memcmp)
9: /* restore registers and return */
ldmfd sp!, {r4, lr}
bx lr
END(memcmp)
10: /* process less than 12 bytes */
cmp r2, #0
moveq r0, #0
bxeq lr
mov r3, r0
11:
ldrb r0, [r3], #1
ldrb ip, [r1], #1
subs r0, ip
bxne lr
subs r2, r2, #1
bne 11b
bx lr
5: /*************** non-congruent case ***************/
and r0, r1, #3
and r0, r1, #3
cmp r0, #2
bne 4f
/* here, offset is 2 (16-bits aligned, special cased) */
/* make sure we have at least 16 bytes to process */
subs r2, r2, #16
addmi r2, r2, #16
@@ -192,8 +250,8 @@ END(memcmp)
bic r1, r1, #3
ldr lr, [r1], #4
6: PLD (r1, #64)
PLD (r4, #64)
6: pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r4, #(CACHE_LINE_SIZE * 2)]
mov ip, lr, lsr #16
ldr lr, [r1], #4
ldr r0, [r4], #4
@@ -280,3 +338,4 @@ END(memcmp)
mov r2, #4
ldmfd sp!, {r5, r6, r7}
b 8b
END(memcmp)

View File

@@ -34,26 +34,38 @@
.text
.fpu neon
#ifdef HAVE_32_BYTE_CACHE_LINE
/* a prefetch distance of 2 cache-lines */
#define CACHE_LINE_SIZE 32
#else
/* a prefetch distance of 4 cache-lines works best experimentally */
#define CACHE_LINE_SIZE 64
#define PREFETCH_DISTANCE (CACHE_LINE_SIZE*4)
#endif
ENTRY(memcpy)
.save {r0, lr}
stmfd sp!, {r0, lr}
/* start preloading as early as possible */
pld [r1, #(CACHE_LINE_SIZE*0)]
pld [r1, #(CACHE_LINE_SIZE*1)]
pld [r1, #(CACHE_LINE_SIZE * 0)]
stmfd sp!, {r0, lr}
pld [r1, #(CACHE_LINE_SIZE * 1)]
/* If Neon supports unaligned access then remove the align code,
* unless a size limit has been specified.
*/
#ifndef NEON_UNALIGNED_ACCESS
/* do we have at least 16-bytes to copy (needed for alignment below) */
cmp r2, #16
blo 5f
/* align destination to half cache-line for the write-buffer */
/* check if buffers are aligned. If so, run arm-only version */
eor r3, r0, r1
ands r3, r3, #0x3
beq 11f
/* align destination to cache-line for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 0f
beq 2f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
@@ -74,14 +86,14 @@ ENTRY(memcpy)
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2:
/* preload immediately the next cache line, which we may need */
pld [r1, #(CACHE_LINE_SIZE * 0)]
pld [r1, #(CACHE_LINE_SIZE * 1)]
0: /* preload immediately the next cache line, which we may need */
pld [r1, #(CACHE_LINE_SIZE*0)]
pld [r1, #(CACHE_LINE_SIZE*1)]
/* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
#ifdef HAVE_32_BYTE_CACHE_LINE
/* make sure we have at least 32 bytes to copy */
subs r2, r2, #32
blo 4f
/* preload all the cache lines we need.
* NOTE: the number of pld below depends on PREFETCH_DISTANCE,
@@ -89,17 +101,35 @@ ENTRY(memcpy)
* avoid the goofy code below. In practice this doesn't seem to make
* a big difference.
*/
pld [r1, #(CACHE_LINE_SIZE*2)]
pld [r1, #(CACHE_LINE_SIZE*3)]
pld [r1, #(PREFETCH_DISTANCE)]
1: /* The main loop copies 64 bytes at a time */
1: /* The main loop copies 32 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(PREFETCH_DISTANCE)]
subs r2, r2, #64
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
bhs 1b
#else
/* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
/* preload all the cache lines we need. */
pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 3)]
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
#ifdef HAVE_32_BYTE_CACHE_LINE
pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 3)]
#else
pld [r1, #(CACHE_LINE_SIZE * 3)]
#endif
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
@@ -108,11 +138,11 @@ ENTRY(memcpy)
blo 4f
3: /* 32 bytes at a time. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d0 - d3}, [r1]!
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d0 - d3}, [r0, :128]!
bhs 3b
#endif
4: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
@@ -120,7 +150,6 @@ ENTRY(memcpy)
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0, :128]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
@@ -139,6 +168,164 @@ ENTRY(memcpy)
ldmfd sp!, {r0, lr}
bx lr
#else /* NEON_UNALIGNED_ACCESS */
// Check so divider is at least 16 bytes, needed for alignment code.
cmp r2, #16
blo 5f
#ifdef NEON_MEMCPY_ALIGNMENT_DIVIDER
/* Check the upper size limit for Neon unaligned memory access in memcpy */
#if NEON_MEMCPY_ALIGNMENT_DIVIDER >= 16
cmp r2, #NEON_MEMCPY_ALIGNMENT_DIVIDER
blo 3f
#endif
/* check if buffers are aligned. If so, run arm-only version */
eor r3, r0, r1
ands r3, r3, #0x3
beq 11f
/* align destination to 16 bytes for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 3f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
ldrmib lr, [r1], #1
strmib lr, [r0], #1
ldrcsb ip, [r1], #1
ldrcsb lr, [r1], #1
strcsb ip, [r0], #1
strcsb lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// copies 4 bytes, destination 32-bits aligned
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0, :32]!
1: bcc 2f
// copies 8 bytes, destination 64-bits aligned
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2:
/* preload immediately the next cache line, which we may need */
pld [r1, #(CACHE_LINE_SIZE * 0)]
pld [r1, #(CACHE_LINE_SIZE * 1)]
3:
#endif
/* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
/* preload all the cache lines we need */
pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 3)]
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
#ifdef HAVE_32_BYTE_CACHE_LINE
pld [r1, #(CACHE_LINE_SIZE * 2)]
pld [r1, #(CACHE_LINE_SIZE * 3)]
#else
pld [r1, #(CACHE_LINE_SIZE * 3)]
#endif
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0]!
vst1.8 {d4 - d7}, [r0]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
add r2, r2, #64
subs r2, r2, #32
blo 4f
3: /* 32 bytes at a time. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0]!
bhs 3b
4: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 5f
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
ldrmib r3, [r1], #1
ldrcsb ip, [r1], #1
ldrcsb lr, [r1], #1
strmib r3, [r0], #1
strcsb ip, [r0], #1
strcsb lr, [r0], #1
ldmfd sp!, {r0, lr}
bx lr
#endif /* NEON_UNALIGNED_ACCESS */
11:
/* Simple arm-only copy loop to handle aligned copy operations */
stmfd sp!, {r4, r5, r6, r7, r8}
pld [r1, #(CACHE_LINE_SIZE * 2)]
/* Check alignment */
rsb r3, r1, #0
ands r3, #3
beq 2f
/* align source to 32 bits. We need to insert 2 instructions between
* a ldr[b|h] and str[b|h] because byte and half-word instructions
* stall 2 cycles.
*/
movs r12, r3, lsl #31
sub r2, r2, r3 /* we know that r3 <= r2 because r2 >= 4 */
ldrmib r3, [r1], #1
ldrcsb r4, [r1], #1
ldrcsb r5, [r1], #1
strmib r3, [r0], #1
strcsb r4, [r0], #1
strcsb r5, [r0], #1
2:
subs r2, #32
blt 5f
pld [r1, #(CACHE_LINE_SIZE * 3)]
3: /* Main copy loop, copying 32 bytes at a time */
pld [r1, #(CACHE_LINE_SIZE * 4)]
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
subs r2, r2, #32
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
bge 3b
5: /* Handle any remaining bytes */
adds r2, #32
beq 6f
movs r12, r2, lsl #28
ldmcsia r1!, {r3, r4, r5, r6} /* 16 bytes */
ldmmiia r1!, {r7, r8} /* 8 bytes */
stmcsia r0!, {r3, r4, r5, r6}
stmmiia r0!, {r7, r8}
movs r12, r2, lsl #30
ldrcs r3, [r1], #4 /* 4 bytes */
ldrmih r4, [r1], #2 /* 2 bytes */
strcs r3, [r0], #4
strmih r4, [r0], #2
tst r2, #0x1
ldrneb r3, [r1] /* last byte */
strneb r3, [r0]
6:
ldmfd sp!, {r4, r5, r6, r7, r8}
ldmfd sp!, {r0, pc}
END(memcpy)

View File

@@ -0,0 +1,406 @@
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* Prototype: void *memcpy (void *dst, const void *src, size_t count). */
/* Use the version of memcpy implemented using LDRD and STRD.
This version is tuned for Cortex-A15.
This might not be the best for other ARMv7-A CPUs,
but there is no predefine to distinguish between
different CPUs in the same architecture,
and this version is better than the plain memcpy provided in newlib.
Therefore, we use this version for all ARMv7-A CPUS. */
/* To make the same code compile for both ARM and Thumb instruction
sets, switch to unified syntax at the beginning of this function.
However, by using the same code, we may be missing optimization
opportunities. For instance, in LDRD/STRD instructions, the first
destination register must be even and the second consecutive in
ARM state, but not in Thumb state. */
#include <machine/cpu-features.h>
#include <machine/asm.h>
.syntax unified
ENTRY(memcpy)
/* Assumes that n >= 0, and dst, src are valid pointers.
If there is at least 8 bytes to copy, use LDRD/STRD.
If src and dst are misaligned with different offsets,
first copy byte by byte until dst is aligned,
and then copy using LDRD/STRD and shift if needed.
When less than 8 left, copy a word and then byte by byte. */
/* Save registers (r0 holds the return value):
optimized push {r0, r4, r5, r6, r7, lr}.
To try and improve performance, stack layout changed,
i.e., not keeping the stack looking like users expect
(highest numbered register at highest address). */
.save {r0, lr}
push {r0, lr}
.save {r4, r5}
strd r4, r5, [sp, #-8]!
.save {r6, r7}
strd r6, r7, [sp, #-8]!
/* TODO: Add debug frame directives.
We don't need exception unwind directives, because the code below
does not throw any exceptions and does not call any other functions.
Generally, newlib functions like this lack debug information for
assembler source. */
/* Get copying of tiny blocks out of the way first. */
/* Is there at least 4 bytes to copy? */
subs r2, r2, #4
blt copy_less_than_4 /* If n < 4. */
/* Check word alignment. */
ands ip, r0, #3 /* ip = last 2 bits of dst. */
bne dst_not_word_aligned /* If dst is not word-aligned. */
/* Get here if dst is word-aligned. */
ands ip, r1, #3 /* ip = last 2 bits of src. */
bne src_not_word_aligned /* If src is not word-aligned. */
word_aligned:
/* Get here if source and dst both are word-aligned.
The number of bytes remaining to copy is r2+4. */
/* Is there is at least 64 bytes to copy? */
subs r2, r2, #60
blt copy_less_than_64 /* If r2 + 4 < 64. */
/* First, align the destination buffer to 8-bytes,
to make sure double loads and stores don't cross cache line boundary,
as they are then more expensive even if the data is in the cache
(require two load/store issue cycles instead of one).
If only one of the buffers is not 8-bytes aligned,
then it's more important to align dst than src,
because there is more penalty for stores
than loads that cross cacheline boundary.
This check and realignment are only worth doing
if there is a lot to copy. */
/* Get here if dst is word aligned,
i.e., the 2 least significant bits are 0.
If dst is not 2w aligned (i.e., the 3rd bit is not set in dst),
then copy 1 word (4 bytes). */
ands r3, r0, #4
beq 11f /* If dst already two-word aligned. */
ldr r3, [r1], #4
str r3, [r0], #4
subs r2, r2, #4
blt copy_less_than_64
11:
/* TODO: Align to cacheline (useful for PLD optimization). */
/* Every loop iteration copies 64 bytes. */
1:
.irp offset, #0, #8, #16, #24, #32, #40, #48, #56
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
add r0, r0, #64
add r1, r1, #64
subs r2, r2, #64
bge 1b /* If there is more to copy. */
copy_less_than_64:
/* Get here if less than 64 bytes to copy, -64 <= r2 < 0.
Restore the count if there is more than 7 bytes to copy. */
adds r2, r2, #56
blt copy_less_than_8
/* Copy 8 bytes at a time. */
2:
ldrd r4, r5, [r1], #8
strd r4, r5, [r0], #8
subs r2, r2, #8
bge 2b /* If there is more to copy. */
copy_less_than_8:
/* Get here if less than 8 bytes to copy, -8 <= r2 < 0.
Check if there is more to copy. */
cmn r2, #8
beq return /* If r2 + 8 == 0. */
/* Restore the count if there is more than 3 bytes to copy. */
adds r2, r2, #4
blt copy_less_than_4
/* Copy 4 bytes. */
ldr r3, [r1], #4
str r3, [r0], #4
copy_less_than_4:
/* Get here if less than 4 bytes to copy, -4 <= r2 < 0. */
/* Restore the count, check if there is more to copy. */
adds r2, r2, #4
beq return /* If r2 == 0. */
/* Get here with r2 is in {1,2,3}={01,10,11}. */
/* Logical shift left r2, insert 0s, update flags. */
lsls r2, r2, #31
/* Copy byte by byte.
Condition ne means the last bit of r2 is 0.
Condition cs means the second to last bit of r2 is set,
i.e., r2 is 1 or 3. */
itt ne
ldrbne r3, [r1], #1
strbne r3, [r0], #1
itttt cs
ldrbcs r4, [r1], #1
ldrbcs r5, [r1]
strbcs r4, [r0], #1
strbcs r5, [r0]
return:
/* Restore registers: optimized pop {r0, r4, r5, r6, r7, pc} */
/* This is the only return point of memcpy. */
ldrd r6, r7, [sp], #8
ldrd r4, r5, [sp], #8
pop {r0, pc}
#ifndef __ARM_FEATURE_UNALIGNED
/* The following assembly macro implements misaligned copy in software.
Assumes that dst is word aligned, src is at offset "pull" bits from
word, push = 32 - pull, and the number of bytes that remain to copy
is r2 + 4, r2 >= 0. */
/* In the code below, r2 is the number of bytes that remain to be
written. The number of bytes read is always larger, because we have
partial words in the shift queue. */
.macro miscopy pull push shiftleft shiftright
/* Align src to the previous word boundary. */
bic r1, r1, #3
/* Initialize the shift queue. */
ldr r5, [r1], #4 /* Load a word from source. */
subs r2, r2, #4
blt 6f /* Go to misaligned copy of less than 8 bytes. */
/* Get here if there is more than 8 bytes to copy.
The number of bytes to copy is r2+8, r2 >= 0. */
subs r2, r2, #56
blt 4f /* Go to misaligned copy of less than 64 bytes. */
3:
/* Get here if there is more than 64 bytes to copy.
The number of bytes to copy is r2+64, r2 >= 0. */
/* Copy 64 bytes in every iteration.
Use a partial word from the shift queue. */
.irp offset, #0, #8, #16, #24, #32, #40, #48, #56
mov r6, r5, \shiftleft #\pull
ldrd r4, r5, [r1, \offset]
orr r6, r6, r4, \shiftright #\push
mov r7, r4, \shiftleft #\pull
orr r7, r7, r5, \shiftright #\push
strd r6, r7, [r0, \offset]
.endr
add r1, r1, #64
add r0, r0, #64
subs r2, r2, #64
bge 3b
4:
/* Get here if there is less than 64 bytes to copy (-64 <= r2 < 0)
and they are misaligned. */
/* Restore the count if there is more than 7 bytes to copy. */
adds r2, r2, #56
blt 6f /* Go to misaligned copy of less than 8 bytes. */
5:
/* Copy 8 bytes at a time.
Use a partial word from the shift queue. */
mov r6, r5, \shiftleft #\pull
ldrd r4, r5, [r1], #8
orr r6, r6, r4, \shiftright #\push
mov r7, r4, \shiftleft #\pull
orr r7, r7, r5, \shiftright #\push
strd r6, r7, [r0], #8
subs r2, r2, #8
bge 5b /* If there is more to copy. */
6:
/* Get here if there less than 8 bytes to copy (-8 <= r2 < 0)
and they are misaligned. */
/* Check if there is more to copy. */
cmn r2, #8
beq return
/* Check if there is less than 4 bytes to copy. */
cmn r2, #4
itt lt
/* Restore src offset from word-align. */
sublt r1, r1, #(\push / 8)
blt copy_less_than_4
/* Use a partial word from the shift queue. */
mov r3, r5, \shiftleft #\pull
/* Load a word from src, but without writeback
(this word is not fully written to dst). */
ldr r5, [r1]
/* Restore src offset from word-align. */
add r1, r1, #(\pull / 8)
/* Shift bytes to create one dst word and store it. */
orr r3, r3, r5, \shiftright #\push
str r3, [r0], #4
/* Use single byte copying of the remaining bytes. */
b copy_less_than_4
.endm
#endif /* not __ARM_FEATURE_UNALIGNED */
dst_not_word_aligned:
/* Get here when dst is not aligned and ip has the last 2 bits of dst,
i.e., ip is the offset of dst from word.
The number of bytes that remains to copy is r2 + 4,
i.e., there are at least 4 bytes to copy.
Write a partial word (0 to 3 bytes), such that dst becomes
word-aligned. */
/* If dst is at ip bytes offset from a word (with 0 < ip < 4),
then there are (4 - ip) bytes to fill up to align dst to the next
word. */
rsb ip, ip, #4 /* ip = #4 - ip. */
cmp ip, #2
/* Copy byte by byte with conditionals. */
itt gt
ldrbgt r3, [r1], #1
strbgt r3, [r0], #1
itt ge
ldrbge r4, [r1], #1
strbge r4, [r0], #1
ldrb lr, [r1], #1
strb lr, [r0], #1
/* Update the count.
ip holds the number of bytes we have just copied. */
subs r2, r2, ip /* r2 = r2 - ip. */
blt copy_less_than_4 /* If r2 < ip. */
/* Get here if there are more than 4 bytes to copy.
Check if src is aligned. If beforehand src and dst were not word
aligned but congruent (same offset), then now they are both
word-aligned, and we can copy the rest efficiently (without
shifting). */
ands ip, r1, #3 /* ip = last 2 bits of src. */
beq word_aligned /* If r1 is word-aligned. */
src_not_word_aligned:
/* Get here when src is not word-aligned, but dst is word-aligned.
The number of bytes that remains to copy is r2+4. */
#ifdef __ARM_FEATURE_UNALIGNED
/* Copy word by word using LDR when alignment can be done in hardware,
i.e., SCTLR.A is set, supporting unaligned access in LDR and STR. */
subs r2, r2, #60
blt 8f
7:
/* Copy 64 bytes in every loop iteration. */
.irp offset, #0, #4, #8, #12, #16, #20, #24, #28, #32, #36, #40, #44, #48, #52, #56, #60
ldr r3, [r1, \offset]
str r3, [r0, \offset]
.endr
add r0, r0, #64
add r1, r1, #64
subs r2, r2, #64
bge 7b
8:
/* Get here if less than 64 bytes to copy, -64 <= r2 < 0.
Check if there is more than 3 bytes to copy. */
adds r2, r2, #60
blt copy_less_than_4
9:
/* Get here if there is less than 64 but at least 4 bytes to copy,
where the number of bytes to copy is r2+4. */
ldr r3, [r1], #4
str r3, [r0], #4
subs r2, r2, #4
bge 9b
b copy_less_than_4
#else /* not __ARM_FEATURE_UNALIGNED */
/* ip has last 2 bits of src,
i.e., ip is the offset of src from word, and ip > 0.
Compute shifts needed to copy from src to dst. */
cmp ip, #2
beq miscopy_16_16 /* If ip == 2. */
bge miscopy_24_8 /* If ip == 3. */
/* Get here if ip == 1. */
/* Endian independent macros for shifting bytes within registers. */
#ifndef __ARMEB__
miscopy_8_24: miscopy pull=8 push=24 shiftleft=lsr shiftright=lsl
miscopy_16_16: miscopy pull=16 push=16 shiftleft=lsr shiftright=lsl
miscopy_24_8: miscopy pull=24 push=8 shiftleft=lsr shiftright=lsl
#else /* not __ARMEB__ */
miscopy_8_24: miscopy pull=8 push=24 shiftleft=lsl shiftright=lsr
miscopy_16_16: miscopy pull=16 push=16 shiftleft=lsl shiftright=lsr
miscopy_24_8: miscopy pull=24 push=8 shiftleft=lsl shiftright=lsr
#endif /* not __ARMEB__ */
#endif /* not __ARM_FEATURE_UNALIGNED */
END(memcpy)

View File

@@ -0,0 +1,614 @@
/* Copyright (c) 2013, Linaro Limited
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Linaro Limited nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
This memcpy routine is optimised for Cortex-A15 cores and takes advantage
of VFP or NEON when built with the appropriate flags.
Assumptions:
ARMv6 (ARMv7-a if using Neon)
ARM state
Unaligned accesses
LDRD/STRD support unaligned word accesses
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
.syntax unified
/* This implementation requires ARM state. */
.arm
#ifdef __ARM_NEON__
.fpu neon
.arch armv7-a
# define FRAME_SIZE 4
# define USE_VFP
# define USE_NEON
#elif !defined (__SOFTFP__)
.arch armv6
.fpu vfpv2
# define FRAME_SIZE 32
# define USE_VFP
#else
.arch armv6
# define FRAME_SIZE 32
#endif
/* Old versions of GAS incorrectly implement the NEON align semantics. */
#ifdef BROKEN_ASM_NEON_ALIGN
#define ALIGN(addr, align) addr,:align
#else
#define ALIGN(addr, align) addr:align
#endif
#define PC_OFFSET 8 /* PC pipeline compensation. */
#define INSN_SIZE 4
/* Call parameters. */
#define dstin r0
#define src r1
#define count r2
/* Locals. */
#define tmp1 r3
#define dst ip
#define tmp2 r10
#ifndef USE_NEON
/* For bulk copies using GP registers. */
#define A_l r2 /* Call-clobbered. */
#define A_h r3 /* Call-clobbered. */
#define B_l r4
#define B_h r5
#define C_l r6
#define C_h r7
#define D_l r8
#define D_h r9
#endif
/* Number of lines ahead to pre-fetch data. If you change this the code
below will need adjustment to compensate. */
#define prefetch_lines 5
#ifdef USE_VFP
.macro cpy_line_vfp vreg, base
vstr \vreg, [dst, #\base]
vldr \vreg, [src, #\base]
vstr d0, [dst, #\base + 8]
vldr d0, [src, #\base + 8]
vstr d1, [dst, #\base + 16]
vldr d1, [src, #\base + 16]
vstr d2, [dst, #\base + 24]
vldr d2, [src, #\base + 24]
vstr \vreg, [dst, #\base + 32]
vldr \vreg, [src, #\base + prefetch_lines * 64 - 32]
vstr d0, [dst, #\base + 40]
vldr d0, [src, #\base + 40]
vstr d1, [dst, #\base + 48]
vldr d1, [src, #\base + 48]
vstr d2, [dst, #\base + 56]
vldr d2, [src, #\base + 56]
.endm
.macro cpy_tail_vfp vreg, base
vstr \vreg, [dst, #\base]
vldr \vreg, [src, #\base]
vstr d0, [dst, #\base + 8]
vldr d0, [src, #\base + 8]
vstr d1, [dst, #\base + 16]
vldr d1, [src, #\base + 16]
vstr d2, [dst, #\base + 24]
vldr d2, [src, #\base + 24]
vstr \vreg, [dst, #\base + 32]
vstr d0, [dst, #\base + 40]
vldr d0, [src, #\base + 40]
vstr d1, [dst, #\base + 48]
vldr d1, [src, #\base + 48]
vstr d2, [dst, #\base + 56]
vldr d2, [src, #\base + 56]
.endm
#endif
.p2align 6
ENTRY(memcpy)
mov dst, dstin /* Preserve dstin, we need to return it. */
cmp count, #64
bge .Lcpy_not_short
/* Deal with small copies quickly by dropping straight into the
exit block. */
.Ltail63unaligned:
#ifdef USE_NEON
and tmp1, count, #0x38
rsb tmp1, tmp1, #(56 - PC_OFFSET + INSN_SIZE)
add pc, pc, tmp1
vld1.8 {d0}, [src]! /* 14 words to go. */
vst1.8 {d0}, [dst]!
vld1.8 {d0}, [src]! /* 12 words to go. */
vst1.8 {d0}, [dst]!
vld1.8 {d0}, [src]! /* 10 words to go. */
vst1.8 {d0}, [dst]!
vld1.8 {d0}, [src]! /* 8 words to go. */
vst1.8 {d0}, [dst]!
vld1.8 {d0}, [src]! /* 6 words to go. */
vst1.8 {d0}, [dst]!
vld1.8 {d0}, [src]! /* 4 words to go. */
vst1.8 {d0}, [dst]!
vld1.8 {d0}, [src]! /* 2 words to go. */
vst1.8 {d0}, [dst]!
tst count, #4
ldrne tmp1, [src], #4
strne tmp1, [dst], #4
#else
/* Copy up to 15 full words of data. May not be aligned. */
/* Cannot use VFP for unaligned data. */
and tmp1, count, #0x3c
add dst, dst, tmp1
add src, src, tmp1
rsb tmp1, tmp1, #(60 - PC_OFFSET/2 + INSN_SIZE/2)
/* Jump directly into the sequence below at the correct offset. */
add pc, pc, tmp1, lsl #1
ldr tmp1, [src, #-60] /* 15 words to go. */
str tmp1, [dst, #-60]
ldr tmp1, [src, #-56] /* 14 words to go. */
str tmp1, [dst, #-56]
ldr tmp1, [src, #-52]
str tmp1, [dst, #-52]
ldr tmp1, [src, #-48] /* 12 words to go. */
str tmp1, [dst, #-48]
ldr tmp1, [src, #-44]
str tmp1, [dst, #-44]
ldr tmp1, [src, #-40] /* 10 words to go. */
str tmp1, [dst, #-40]
ldr tmp1, [src, #-36]
str tmp1, [dst, #-36]
ldr tmp1, [src, #-32] /* 8 words to go. */
str tmp1, [dst, #-32]
ldr tmp1, [src, #-28]
str tmp1, [dst, #-28]
ldr tmp1, [src, #-24] /* 6 words to go. */
str tmp1, [dst, #-24]
ldr tmp1, [src, #-20]
str tmp1, [dst, #-20]
ldr tmp1, [src, #-16] /* 4 words to go. */
str tmp1, [dst, #-16]
ldr tmp1, [src, #-12]
str tmp1, [dst, #-12]
ldr tmp1, [src, #-8] /* 2 words to go. */
str tmp1, [dst, #-8]
ldr tmp1, [src, #-4]
str tmp1, [dst, #-4]
#endif
lsls count, count, #31
ldrhcs tmp1, [src], #2
ldrbne src, [src] /* Src is dead, use as a scratch. */
strhcs tmp1, [dst], #2
strbne src, [dst]
bx lr
.Lcpy_not_short:
/* At least 64 bytes to copy, but don't know the alignment yet. */
str tmp2, [sp, #-FRAME_SIZE]!
and tmp2, src, #7
and tmp1, dst, #7
cmp tmp1, tmp2
bne .Lcpy_notaligned
#ifdef USE_VFP
/* Magic dust alert! Force VFP on Cortex-A9. Experiments show
that the FP pipeline is much better at streaming loads and
stores. This is outside the critical loop. */
vmov.f32 s0, s0
#endif
/* SRC and DST have the same mutual 32-bit alignment, but we may
still need to pre-copy some bytes to get to natural alignment.
We bring DST into full 64-bit alignment. */
lsls tmp2, dst, #29
beq 1f
rsbs tmp2, tmp2, #0
sub count, count, tmp2, lsr #29
ldrmi tmp1, [src], #4
strmi tmp1, [dst], #4
lsls tmp2, tmp2, #2
ldrhcs tmp1, [src], #2
ldrbne tmp2, [src], #1
strhcs tmp1, [dst], #2
strbne tmp2, [dst], #1
1:
subs tmp2, count, #64 /* Use tmp2 for count. */
blt .Ltail63aligned
cmp tmp2, #512
bge .Lcpy_body_long
.Lcpy_body_medium: /* Count in tmp2. */
#ifdef USE_VFP
1:
vldr d0, [src, #0]
subs tmp2, tmp2, #64
vldr d1, [src, #8]
vstr d0, [dst, #0]
vldr d0, [src, #16]
vstr d1, [dst, #8]
vldr d1, [src, #24]
vstr d0, [dst, #16]
vldr d0, [src, #32]
vstr d1, [dst, #24]
vldr d1, [src, #40]
vstr d0, [dst, #32]
vldr d0, [src, #48]
vstr d1, [dst, #40]
vldr d1, [src, #56]
vstr d0, [dst, #48]
add src, src, #64
vstr d1, [dst, #56]
add dst, dst, #64
bge 1b
tst tmp2, #0x3f
beq .Ldone
.Ltail63aligned: /* Count in tmp2. */
and tmp1, tmp2, #0x38
add dst, dst, tmp1
add src, src, tmp1
rsb tmp1, tmp1, #(56 - PC_OFFSET + INSN_SIZE)
add pc, pc, tmp1
vldr d0, [src, #-56] /* 14 words to go. */
vstr d0, [dst, #-56]
vldr d0, [src, #-48] /* 12 words to go. */
vstr d0, [dst, #-48]
vldr d0, [src, #-40] /* 10 words to go. */
vstr d0, [dst, #-40]
vldr d0, [src, #-32] /* 8 words to go. */
vstr d0, [dst, #-32]
vldr d0, [src, #-24] /* 6 words to go. */
vstr d0, [dst, #-24]
vldr d0, [src, #-16] /* 4 words to go. */
vstr d0, [dst, #-16]
vldr d0, [src, #-8] /* 2 words to go. */
vstr d0, [dst, #-8]
#else
sub src, src, #8
sub dst, dst, #8
1:
ldrd A_l, A_h, [src, #8]
strd A_l, A_h, [dst, #8]
ldrd A_l, A_h, [src, #16]
strd A_l, A_h, [dst, #16]
ldrd A_l, A_h, [src, #24]
strd A_l, A_h, [dst, #24]
ldrd A_l, A_h, [src, #32]
strd A_l, A_h, [dst, #32]
ldrd A_l, A_h, [src, #40]
strd A_l, A_h, [dst, #40]
ldrd A_l, A_h, [src, #48]
strd A_l, A_h, [dst, #48]
ldrd A_l, A_h, [src, #56]
strd A_l, A_h, [dst, #56]
ldrd A_l, A_h, [src, #64]!
strd A_l, A_h, [dst, #64]!
subs tmp2, tmp2, #64
bge 1b
tst tmp2, #0x3f
bne 1f
ldr tmp2,[sp], #FRAME_SIZE
bx lr
1:
add src, src, #8
add dst, dst, #8
.Ltail63aligned: /* Count in tmp2. */
/* Copy up to 7 d-words of data. Similar to Ltail63unaligned, but
we know that the src and dest are 32-bit aligned so we can use
LDRD/STRD to improve efficiency. */
/* TMP2 is now negative, but we don't care about that. The bottom
six bits still tell us how many bytes are left to copy. */
and tmp1, tmp2, #0x38
add dst, dst, tmp1
add src, src, tmp1
rsb tmp1, tmp1, #(56 - PC_OFFSET + INSN_SIZE)
add pc, pc, tmp1
ldrd A_l, A_h, [src, #-56] /* 14 words to go. */
strd A_l, A_h, [dst, #-56]
ldrd A_l, A_h, [src, #-48] /* 12 words to go. */
strd A_l, A_h, [dst, #-48]
ldrd A_l, A_h, [src, #-40] /* 10 words to go. */
strd A_l, A_h, [dst, #-40]
ldrd A_l, A_h, [src, #-32] /* 8 words to go. */
strd A_l, A_h, [dst, #-32]
ldrd A_l, A_h, [src, #-24] /* 6 words to go. */
strd A_l, A_h, [dst, #-24]
ldrd A_l, A_h, [src, #-16] /* 4 words to go. */
strd A_l, A_h, [dst, #-16]
ldrd A_l, A_h, [src, #-8] /* 2 words to go. */
strd A_l, A_h, [dst, #-8]
#endif
tst tmp2, #4
ldrne tmp1, [src], #4
strne tmp1, [dst], #4
lsls tmp2, tmp2, #31 /* Count (tmp2) now dead. */
ldrhcs tmp1, [src], #2
ldrbne tmp2, [src]
strhcs tmp1, [dst], #2
strbne tmp2, [dst]
.Ldone:
ldr tmp2, [sp], #FRAME_SIZE
bx lr
.Lcpy_body_long: /* Count in tmp2. */
/* Long copy. We know that there's at least (prefetch_lines * 64)
bytes to go. */
#ifdef USE_VFP
/* Don't use PLD. Instead, read some data in advance of the current
copy position into a register. This should act like a PLD
operation but we won't have to repeat the transfer. */
vldr d3, [src, #0]
vldr d4, [src, #64]
vldr d5, [src, #128]
vldr d6, [src, #192]
vldr d7, [src, #256]
vldr d0, [src, #8]
vldr d1, [src, #16]
vldr d2, [src, #24]
add src, src, #32
subs tmp2, tmp2, #prefetch_lines * 64 * 2
blt 2f
1:
cpy_line_vfp d3, 0
cpy_line_vfp d4, 64
cpy_line_vfp d5, 128
add dst, dst, #3 * 64
add src, src, #3 * 64
cpy_line_vfp d6, 0
cpy_line_vfp d7, 64
add dst, dst, #2 * 64
add src, src, #2 * 64
subs tmp2, tmp2, #prefetch_lines * 64
bge 1b
2:
cpy_tail_vfp d3, 0
cpy_tail_vfp d4, 64
cpy_tail_vfp d5, 128
add src, src, #3 * 64
add dst, dst, #3 * 64
cpy_tail_vfp d6, 0
vstr d7, [dst, #64]
vldr d7, [src, #64]
vstr d0, [dst, #64 + 8]
vldr d0, [src, #64 + 8]
vstr d1, [dst, #64 + 16]
vldr d1, [src, #64 + 16]
vstr d2, [dst, #64 + 24]
vldr d2, [src, #64 + 24]
vstr d7, [dst, #64 + 32]
add src, src, #96
vstr d0, [dst, #64 + 40]
vstr d1, [dst, #64 + 48]
vstr d2, [dst, #64 + 56]
add dst, dst, #128
add tmp2, tmp2, #prefetch_lines * 64
b .Lcpy_body_medium
#else
/* Long copy. Use an SMS style loop to maximize the I/O
bandwidth of the core. We don't have enough spare registers
to synthesise prefetching, so use PLD operations. */
/* Pre-bias src and dst. */
sub src, src, #8
sub dst, dst, #8
pld [src, #8]
pld [src, #72]
subs tmp2, tmp2, #64
pld [src, #136]
ldrd A_l, A_h, [src, #8]
strd B_l, B_h, [sp, #8]
ldrd B_l, B_h, [src, #16]
strd C_l, C_h, [sp, #16]
ldrd C_l, C_h, [src, #24]
strd D_l, D_h, [sp, #24]
pld [src, #200]
ldrd D_l, D_h, [src, #32]!
b 1f
.p2align 6
2:
pld [src, #232]
strd A_l, A_h, [dst, #40]
ldrd A_l, A_h, [src, #40]
strd B_l, B_h, [dst, #48]
ldrd B_l, B_h, [src, #48]
strd C_l, C_h, [dst, #56]
ldrd C_l, C_h, [src, #56]
strd D_l, D_h, [dst, #64]!
ldrd D_l, D_h, [src, #64]!
subs tmp2, tmp2, #64
1:
strd A_l, A_h, [dst, #8]
ldrd A_l, A_h, [src, #8]
strd B_l, B_h, [dst, #16]
ldrd B_l, B_h, [src, #16]
strd C_l, C_h, [dst, #24]
ldrd C_l, C_h, [src, #24]
strd D_l, D_h, [dst, #32]
ldrd D_l, D_h, [src, #32]
bcs 2b
/* Save the remaining bytes and restore the callee-saved regs. */
strd A_l, A_h, [dst, #40]
add src, src, #40
strd B_l, B_h, [dst, #48]
ldrd B_l, B_h, [sp, #8]
strd C_l, C_h, [dst, #56]
ldrd C_l, C_h, [sp, #16]
strd D_l, D_h, [dst, #64]
ldrd D_l, D_h, [sp, #24]
add dst, dst, #72
tst tmp2, #0x3f
bne .Ltail63aligned
ldr tmp2, [sp], #FRAME_SIZE
bx lr
#endif
.Lcpy_notaligned:
pld [src]
pld [src, #64]
/* There's at least 64 bytes to copy, but there is no mutual
alignment. */
/* Bring DST to 64-bit alignment. */
lsls tmp2, dst, #29
pld [src, #(2 * 64)]
beq 1f
rsbs tmp2, tmp2, #0
sub count, count, tmp2, lsr #29
ldrmi tmp1, [src], #4
strmi tmp1, [dst], #4
lsls tmp2, tmp2, #2
ldrbne tmp1, [src], #1
ldrhcs tmp2, [src], #2
strbne tmp1, [dst], #1
strhcs tmp2, [dst], #2
1:
pld [src, #(3 * 64)]
subs count, count, #64
ldrmi tmp2, [sp], #FRAME_SIZE
bmi .Ltail63unaligned
pld [src, #(4 * 64)]
#ifdef USE_NEON
vld1.8 {d0-d3}, [src]!
vld1.8 {d4-d7}, [src]!
subs count, count, #64
bmi 2f
1:
pld [src, #(4 * 64)]
vst1.8 {d0-d3}, [ALIGN (dst, 64)]!
vld1.8 {d0-d3}, [src]!
vst1.8 {d4-d7}, [ALIGN (dst, 64)]!
vld1.8 {d4-d7}, [src]!
subs count, count, #64
bpl 1b
2:
vst1.8 {d0-d3}, [ALIGN (dst, 64)]!
vst1.8 {d4-d7}, [ALIGN (dst, 64)]!
ands count, count, #0x3f
#else
/* Use an SMS style loop to maximize the I/O bandwidth. */
sub src, src, #4
sub dst, dst, #8
subs tmp2, count, #64 /* Use tmp2 for count. */
ldr A_l, [src, #4]
ldr A_h, [src, #8]
strd B_l, B_h, [sp, #8]
ldr B_l, [src, #12]
ldr B_h, [src, #16]
strd C_l, C_h, [sp, #16]
ldr C_l, [src, #20]
ldr C_h, [src, #24]
strd D_l, D_h, [sp, #24]
ldr D_l, [src, #28]
ldr D_h, [src, #32]!
b 1f
.p2align 6
2:
pld [src, #(5 * 64) - (32 - 4)]
strd A_l, A_h, [dst, #40]
ldr A_l, [src, #36]
ldr A_h, [src, #40]
strd B_l, B_h, [dst, #48]
ldr B_l, [src, #44]
ldr B_h, [src, #48]
strd C_l, C_h, [dst, #56]
ldr C_l, [src, #52]
ldr C_h, [src, #56]
strd D_l, D_h, [dst, #64]!
ldr D_l, [src, #60]
ldr D_h, [src, #64]!
subs tmp2, tmp2, #64
1:
strd A_l, A_h, [dst, #8]
ldr A_l, [src, #4]
ldr A_h, [src, #8]
strd B_l, B_h, [dst, #16]
ldr B_l, [src, #12]
ldr B_h, [src, #16]
strd C_l, C_h, [dst, #24]
ldr C_l, [src, #20]
ldr C_h, [src, #24]
strd D_l, D_h, [dst, #32]
ldr D_l, [src, #28]
ldr D_h, [src, #32]
bcs 2b
/* Save the remaining bytes and restore the callee-saved regs. */
strd A_l, A_h, [dst, #40]
add src, src, #36
strd B_l, B_h, [dst, #48]
ldrd B_l, B_h, [sp, #8]
strd C_l, C_h, [dst, #56]
ldrd C_l, C_h, [sp, #16]
strd D_l, D_h, [dst, #64]
ldrd D_l, D_h, [sp, #24]
add dst, dst, #72
ands count, tmp2, #0x3f
#endif
ldr tmp2, [sp], #FRAME_SIZE
bne .Ltail63unaligned
bx lr
END(memcpy)

View File

@@ -26,23 +26,114 @@
* SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
/*
* Optimized memset() for ARM.
*
* memset() returns its first argument.
*/
#if defined(__ARM_NEON__)
.fpu neon
#endif
ENTRY(bzero)
mov r2, r1
mov r1, #0
// Fall through to memset...
END(bzero)
ENTRY(memset)
#if defined(__ARM_NEON__)
#ifdef NEON_MEMSET_DIVIDER
cmp r2, #NEON_MEMSET_DIVIDER
bhi 11f
#endif
.save {r0}
stmfd sp!, {r0}
vdup.8 q0, r1
#ifndef NEON_UNALIGNED_ACCESS
/* do we have at least 16-bytes to write (needed for alignment below) */
cmp r2, #16
blo 3f
/* align destination to 16 bytes for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 2f
/* write up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
strmib r1, [r0], #1
strcsb r1, [r0], #1
strcsb r1, [r0], #1
movs ip, r3, lsl #29
bge 1f
// writes 4 bytes, 32-bits aligned
vst1.32 {d0[0]}, [r0, :32]!
1: bcc 2f
// writes 8 bytes, 64-bits aligned
vst1.8 {d0}, [r0, :64]!
2:
#endif
/* make sure we have at least 32 bytes to write */
subs r2, r2, #32
blo 2f
vmov q1, q0
1: /* The main loop writes 32 bytes at a time */
subs r2, r2, #32
#ifndef NEON_UNALIGNED_ACCESS
vst1.8 {d0 - d3}, [r0, :128]!
#else
vst1.8 {d0 - d3}, [r0]!
#endif
bhs 1b
2: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 3f
// writes 16 bytes, 128-bits aligned
#ifndef NEON_UNALIGNED_ACCESS
vst1.8 {d0, d1}, [r0, :128]!
#else
vst1.8 {d0, d1}, [r0]!
#endif
3: /* write up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vst1.8 {d0}, [r0]!
1: bge 2f
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
strmib r1, [r0], #1
strcsb r1, [r0], #1
strcsb r1, [r0], #1
ldmfd sp!, {r0}
bx lr
11:
#endif
/*
* Optimized memset() for ARM.
*
* memset() returns its first argument.
*/
/* compute the offset to align the destination
* offset = (4-(src&3))&3 = -src & 3
*/
.save {r0, r4-r7, lr}
stmfd sp!, {r0, r4-r7, lr}
rsb r3, r0, #0
@@ -70,7 +161,7 @@ ENTRY(memset)
mov r5, r1
mov r6, r1
mov r7, r1
rsb r3, r0, #0
ands r3, r3, #0x1C
beq 3f
@@ -78,7 +169,7 @@ ENTRY(memset)
andhi r3, r2, #0x1C
sub r2, r2, r3
/* conditionnaly writes 0 to 7 words (length in r3) */
/* conditionally writes 0 to 7 words (length in r3) */
movs r3, r3, lsl #28
stmcsia r0!, {r1, lr}
stmcsia r0!, {r1, lr}
@@ -95,7 +186,7 @@ ENTRY(memset)
bhs 1b
2: add r2, r2, #32
/* conditionnaly stores 0 to 31 bytes */
/* conditionally stores 0 to 31 bytes */
movs r2, r2, lsl #28
stmcsia r0!, {r1,r3,r12,lr}
stmmiia r0!, {r1, lr}

View File

@@ -0,0 +1,787 @@
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "arm_asm.h"
#ifdef __ARMEB__
#define S2LOMEM lsl
#define S2LOMEMEQ lsleq
#define S2HIMEM lsr
#define MSB 0x000000ff
#define LSB 0xff000000
#define BYTE0_OFFSET 24
#define BYTE1_OFFSET 16
#define BYTE2_OFFSET 8
#define BYTE3_OFFSET 0
#else /* not __ARMEB__ */
#define S2LOMEM lsr
#define S2LOMEMEQ lsreq
#define S2HIMEM lsl
#define BYTE0_OFFSET 0
#define BYTE1_OFFSET 8
#define BYTE2_OFFSET 16
#define BYTE3_OFFSET 24
#define MSB 0xff000000
#define LSB 0x000000ff
#endif /* not __ARMEB__ */
.syntax unified
#if defined (__thumb__)
.thumb
.thumb_func
#endif
.global strcmp
.type strcmp, %function
strcmp:
#if (defined (__thumb__) && !defined (__thumb2__))
1:
ldrb r2, [r0]
ldrb r3, [r1]
adds r0, r0, #1
adds r1, r1, #1
cmp r2, #0
beq 2f
cmp r2, r3
beq 1b
2:
subs r0, r2, r3
bx lr
#elif (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED))
1:
ldrb r2, [r0], #1
ldrb r3, [r1], #1
cmp r2, #1
it cs
cmpcs r2, r3
beq 1b
subs r0, r2, r3
RETURN
#elif (defined (_ISA_THUMB_2) || defined (_ISA_ARM_6))
/* Use LDRD whenever possible. */
/* The main thing to look out for when comparing large blocks is that
the loads do not cross a page boundary when loading past the index
of the byte with the first difference or the first string-terminator.
For example, if the strings are identical and the string-terminator
is at index k, byte by byte comparison will not load beyond address
s1+k and s2+k; word by word comparison may load up to 3 bytes beyond
k; double word - up to 7 bytes. If the load of these bytes crosses
a page boundary, it might cause a memory fault (if the page is not mapped)
that would not have happened in byte by byte comparison.
If an address is (double) word aligned, then a load of a (double) word
from that address will not cross a page boundary.
Therefore, the algorithm below considers word and double-word alignment
of strings separately. */
/* High-level description of the algorithm.
* The fast path: if both strings are double-word aligned,
use LDRD to load two words from each string in every loop iteration.
* If the strings have the same offset from a word boundary,
use LDRB to load and compare byte by byte until
the first string is aligned to a word boundary (at most 3 bytes).
This is optimized for quick return on short unaligned strings.
* If the strings have the same offset from a double-word boundary,
use LDRD to load two words from each string in every loop iteration, as in the fast path.
* If the strings do not have the same offset from a double-word boundary,
load a word from the second string before the loop to initialize the queue.
Use LDRD to load two words from every string in every loop iteration.
Inside the loop, load the second word from the second string only after comparing
the first word, using the queued value, to guarantee safety across page boundaries.
* If the strings do not have the same offset from a word boundary,
use LDR and a shift queue. Order of loads and comparisons matters,
similarly to the previous case.
* Use UADD8 and SEL to compare words, and use REV and CLZ to compute the return value.
* The only difference between ARM and Thumb modes is the use of CBZ instruction.
* The only difference between big and little endian is the use of REV in little endian
to compute the return value, instead of MOV.
* No preload. [TODO.]
*/
.macro m_cbz reg label
#ifdef __thumb2__
cbz \reg, \label
#else /* not defined __thumb2__ */
cmp \reg, #0
beq \label
#endif /* not defined __thumb2__ */
.endm /* m_cbz */
.macro m_cbnz reg label
#ifdef __thumb2__
cbnz \reg, \label
#else /* not defined __thumb2__ */
cmp \reg, #0
bne \label
#endif /* not defined __thumb2__ */
.endm /* m_cbnz */
.macro init
/* Macro to save temporary registers and prepare magic values. */
subs sp, sp, #16
strd r4, r5, [sp, #8]
strd r6, r7, [sp]
mvn r6, #0 /* all F */
mov r7, #0 /* all 0 */
.endm /* init */
.macro magic_compare_and_branch w1 w2 label
/* Macro to compare registers w1 and w2 and conditionally branch to label. */
cmp \w1, \w2 /* Are w1 and w2 the same? */
magic_find_zero_bytes \w1
it eq
cmpeq ip, #0 /* Is there a zero byte in w1? */
bne \label
.endm /* magic_compare_and_branch */
.macro magic_find_zero_bytes w1
/* Macro to find all-zero bytes in w1, result is in ip. */
#if (defined (__ARM_FEATURE_DSP))
uadd8 ip, \w1, r6
sel ip, r7, r6
#else /* not defined (__ARM_FEATURE_DSP) */
/* __ARM_FEATURE_DSP is not defined for some Cortex-M processors.
Coincidently, these processors only have Thumb-2 mode, where we can use the
the (large) magic constant available directly as an immediate in instructions.
Note that we cannot use the magic constant in ARM mode, where we need
to create the constant in a register. */
sub ip, \w1, #0x01010101
bic ip, ip, \w1
and ip, ip, #0x80808080
#endif /* not defined (__ARM_FEATURE_DSP) */
.endm /* magic_find_zero_bytes */
.macro setup_return w1 w2
#ifdef __ARMEB__
mov r1, \w1
mov r2, \w2
#else /* not __ARMEB__ */
rev r1, \w1
rev r2, \w2
#endif /* not __ARMEB__ */
.endm /* setup_return */
/*
optpld r0, #0
optpld r1, #0
*/
/* Are both strings double-word aligned? */
orr ip, r0, r1
tst ip, #7
bne do_align
/* Fast path. */
init
doubleword_aligned:
/* Get here when the strings to compare are double-word aligned. */
/* Compare two words in every iteration. */
.p2align 2
2:
/*
optpld r0, #16
optpld r1, #16
*/
/* Load the next double-word from each string. */
ldrd r2, r3, [r0], #8
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r2, w2=r4, label=return_24
magic_compare_and_branch w1=r3, w2=r5, label=return_35
b 2b
do_align:
/* Is the first string word-aligned? */
ands ip, r0, #3
beq word_aligned_r0
/* Fast compare byte by byte until the first string is word-aligned. */
/* The offset of r0 from a word boundary is in ip. Thus, the number of bytes
to read until the next word boudnary is 4-ip. */
bic r0, r0, #3
ldr r2, [r0], #4
lsls ip, ip, #31
beq byte2
bcs byte3
byte1:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE1_OFFSET
subs ip, r3, ip
bne fast_return
m_cbz reg=r3, label=fast_return
byte2:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE2_OFFSET
subs ip, r3, ip
bne fast_return
m_cbz reg=r3, label=fast_return
byte3:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE3_OFFSET
subs ip, r3, ip
bne fast_return
m_cbnz reg=r3, label=word_aligned_r0
fast_return:
mov r0, ip
bx lr
word_aligned_r0:
init
/* The first string is word-aligned. */
/* Is the second string word-aligned? */
ands ip, r1, #3
bne strcmp_unaligned
word_aligned:
/* The strings are word-aligned. */
/* Is the first string double-word aligned? */
tst r0, #4
beq doubleword_aligned_r0
/* If r0 is not double-word aligned yet, align it by loading
and comparing the next word from each string. */
ldr r2, [r0], #4
ldr r4, [r1], #4
magic_compare_and_branch w1=r2 w2=r4 label=return_24
doubleword_aligned_r0:
/* Get here when r0 is double-word aligned. */
/* Is r1 doubleword_aligned? */
tst r1, #4
beq doubleword_aligned
/* Get here when the strings to compare are word-aligned,
r0 is double-word aligned, but r1 is not double-word aligned. */
/* Initialize the queue. */
ldr r5, [r1], #4
/* Compare two words in every iteration. */
.p2align 2
3:
/*
optpld r0, #16
optpld r1, #16
*/
/* Load the next double-word from each string and compare. */
ldrd r2, r3, [r0], #8
magic_compare_and_branch w1=r2 w2=r5 label=return_25
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r3 w2=r4 label=return_34
b 3b
.macro miscmp_word offsetlo offsethi
/* Macro to compare misaligned strings. */
/* r0, r1 are word-aligned, and at least one of the strings
is not double-word aligned. */
/* Compare one word in every loop iteration. */
/* OFFSETLO is the original bit-offset of r1 from a word-boundary,
OFFSETHI is 32 - OFFSETLO (i.e., offset from the next word). */
/* Initialize the shift queue. */
ldr r5, [r1], #4
/* Compare one word from each string in every loop iteration. */
.p2align 2
7:
ldr r3, [r0], #4
S2LOMEM r5, r5, #\offsetlo
magic_find_zero_bytes w1=r3
cmp r7, ip, S2HIMEM #\offsetlo
and r2, r3, r6, S2LOMEM #\offsetlo
it eq
cmpeq r2, r5
bne return_25
ldr r5, [r1], #4
cmp ip, #0
eor r3, r2, r3
S2HIMEM r2, r5, #\offsethi
it eq
cmpeq r3, r2
bne return_32
b 7b
.endm /* miscmp_word */
strcmp_unaligned:
/* r0 is word-aligned, r1 is at offset ip from a word. */
/* Align r1 to the (previous) word-boundary. */
bic r1, r1, #3
/* Unaligned comparison word by word using LDRs. */
cmp ip, #2
beq miscmp_word_16 /* If ip == 2. */
bge miscmp_word_24 /* If ip == 3. */
miscmp_word offsetlo=8 offsethi=24 /* If ip == 1. */
miscmp_word_16: miscmp_word offsetlo=16 offsethi=16
miscmp_word_24: miscmp_word offsetlo=24 offsethi=8
return_32:
setup_return w1=r3, w2=r2
b do_return
return_34:
setup_return w1=r3, w2=r4
b do_return
return_25:
setup_return w1=r2, w2=r5
b do_return
return_35:
setup_return w1=r3, w2=r5
b do_return
return_24:
setup_return w1=r2, w2=r4
do_return:
#ifdef __ARMEB__
mov r0, ip
#else /* not __ARMEB__ */
rev r0, ip
#endif /* not __ARMEB__ */
/* Restore temporaries early, before computing the return value. */
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
/* There is a zero or a different byte between r1 and r2. */
/* r0 contains a mask of all-zero bytes in r1. */
/* Using r0 and not ip here because cbz requires low register. */
m_cbz reg=r0, label=compute_return_value
clz r0, r0
/* r0 contains the number of bits on the left of the first all-zero byte in r1. */
rsb r0, r0, #24
/* Here, r0 contains the number of bits on the right of the first all-zero byte in r1. */
lsr r1, r1, r0
lsr r2, r2, r0
compute_return_value:
movs r0, #1
cmp r1, r2
/* The return value is computed as follows.
If r1>r2 then (C==1 and Z==0) and LS doesn't hold and r0 is #1 at return.
If r1<r2 then (C==0 and Z==0) and we execute SBC with carry_in=0,
which means r0:=r0-r0-1 and r0 is #-1 at return.
If r1=r2 then (C==1 and Z==1) and we execute SBC with carry_in=1,
which means r0:=r0-r0 and r0 is #0 at return.
(C==0 and Z==1) cannot happen because the carry bit is "not borrow". */
it ls
sbcls r0, r0, r0
bx lr
#else /* !(defined (_ISA_THUMB_2) || defined (_ISA_ARM_6)
defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) ||
(defined (__thumb__) && !defined (__thumb2__))) */
/* Use LDR whenever possible. */
#ifdef __thumb2__
#define magic1(REG) 0x01010101
#define magic2(REG) 0x80808080
#else
#define magic1(REG) REG
#define magic2(REG) REG, lsl #7
#endif
optpld r0
optpld r1
eor r2, r0, r1
tst r2, #3
/* Strings not at same byte offset from a word boundary. */
bne strcmp_unaligned
ands r2, r0, #3
bic r0, r0, #3
bic r1, r1, #3
ldr ip, [r0], #4
it eq
ldreq r3, [r1], #4
beq 1f
/* Although s1 and s2 have identical initial alignment, they are
not currently word aligned. Rather than comparing bytes,
make sure that any bytes fetched from before the addressed
bytes are forced to 0xff. Then they will always compare
equal. */
eor r2, r2, #3
lsl r2, r2, #3
mvn r3, MSB
S2LOMEM r2, r3, r2
ldr r3, [r1], #4
orr ip, ip, r2
orr r3, r3, r2
1:
#ifndef __thumb2__
/* Load the 'magic' constant 0x01010101. */
str r4, [sp, #-4]!
mov r4, #1
orr r4, r4, r4, lsl #8
orr r4, r4, r4, lsl #16
#endif
.p2align 2
4:
optpld r0, #8
optpld r1, #8
sub r2, ip, magic1(r4)
cmp ip, r3
itttt eq
/* check for any zero bytes in first word */
biceq r2, r2, ip
tsteq r2, magic2(r4)
ldreq ip, [r0], #4
ldreq r3, [r1], #4
beq 4b
2:
/* There's a zero or a different byte in the word */
S2HIMEM r0, ip, #24
S2LOMEM ip, ip, #8
cmp r0, #1
it cs
cmpcs r0, r3, S2HIMEM #24
it eq
S2LOMEMEQ r3, r3, #8
beq 2b
/* On a big-endian machine, r0 contains the desired byte in bits
0-7; on a little-endian machine they are in bits 24-31. In
both cases the other bits in r0 are all zero. For r3 the
interesting byte is at the other end of the word, but the
other bits are not necessarily zero. We need a signed result
representing the differnece in the unsigned bytes, so for the
little-endian case we can't just shift the interesting bits
up. */
#ifdef __ARMEB__
sub r0, r0, r3, lsr #24
#else
and r3, r3, #255
#ifdef __thumb2__
/* No RSB instruction in Thumb2 */
lsr r0, r0, #24
sub r0, r0, r3
#else
rsb r0, r3, r0, lsr #24
#endif
#endif
#ifndef __thumb2__
ldr r4, [sp], #4
#endif
RETURN
strcmp_unaligned:
#if 0
/* The assembly code below is based on the following alogrithm. */
#ifdef __ARMEB__
#define RSHIFT <<
#define LSHIFT >>
#else
#define RSHIFT >>
#define LSHIFT <<
#endif
#define body(shift) \
mask = 0xffffffffU RSHIFT shift; \
w1 = *wp1++; \
w2 = *wp2++; \
do \
{ \
t1 = w1 & mask; \
if (__builtin_expect(t1 != w2 RSHIFT shift, 0)) \
{ \
w2 RSHIFT= shift; \
break; \
} \
if (__builtin_expect(((w1 - b1) & ~w1) & (b1 << 7), 0)) \
{ \
/* See comment in assembler below re syndrome on big-endian */\
if ((((w1 - b1) & ~w1) & (b1 << 7)) & mask) \
w2 RSHIFT= shift; \
else \
{ \
w2 = *wp2; \
t1 = w1 RSHIFT (32 - shift); \
w2 = (w2 LSHIFT (32 - shift)) RSHIFT (32 - shift); \
} \
break; \
} \
w2 = *wp2++; \
t1 ^= w1; \
if (__builtin_expect(t1 != w2 LSHIFT (32 - shift), 0)) \
{ \
t1 = w1 >> (32 - shift); \
w2 = (w2 << (32 - shift)) RSHIFT (32 - shift); \
break; \
} \
w1 = *wp1++; \
} while (1)
const unsigned* wp1;
const unsigned* wp2;
unsigned w1, w2;
unsigned mask;
unsigned shift;
unsigned b1 = 0x01010101;
char c1, c2;
unsigned t1;
while (((unsigned) s1) & 3)
{
c1 = *s1++;
c2 = *s2++;
if (c1 == 0 || c1 != c2)
return c1 - (int)c2;
}
wp1 = (unsigned*) (((unsigned)s1) & ~3);
wp2 = (unsigned*) (((unsigned)s2) & ~3);
t1 = ((unsigned) s2) & 3;
if (t1 == 1)
{
body(8);
}
else if (t1 == 2)
{
body(16);
}
else
{
body (24);
}
do
{
#ifdef __ARMEB__
c1 = (char) t1 >> 24;
c2 = (char) w2 >> 24;
#else /* not __ARMEB__ */
c1 = (char) t1;
c2 = (char) w2;
#endif /* not __ARMEB__ */
t1 RSHIFT= 8;
w2 RSHIFT= 8;
} while (c1 != 0 && c1 == c2);
return c1 - c2;
#endif /* 0 */
wp1 .req r0
wp2 .req r1
b1 .req r2
w1 .req r4
w2 .req r5
t1 .req ip
@ r3 is scratch
/* First of all, compare bytes until wp1(sp1) is word-aligned. */
1:
tst wp1, #3
beq 2f
ldrb r2, [wp1], #1
ldrb r3, [wp2], #1
cmp r2, #1
it cs
cmpcs r2, r3
beq 1b
sub r0, r2, r3
RETURN
2:
str r5, [sp, #-4]!
str r4, [sp, #-4]!
//stmfd sp!, {r4, r5}
mov b1, #1
orr b1, b1, b1, lsl #8
orr b1, b1, b1, lsl #16
and t1, wp2, #3
bic wp2, wp2, #3
ldr w1, [wp1], #4
ldr w2, [wp2], #4
cmp t1, #2
beq 2f
bhi 3f
/* Critical inner Loop: Block with 3 bytes initial overlap */
.p2align 2
1:
bic t1, w1, MSB
cmp t1, w2, S2LOMEM #8
sub r3, w1, b1
bic r3, r3, w1
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, S2HIMEM #24
bne 6f
ldr w1, [wp1], #4
b 1b
4:
S2LOMEM w2, w2, #8
b 8f
5:
#ifdef __ARMEB__
/* The syndrome value may contain false ones if the string ends
with the bytes 0x01 0x00 */
tst w1, #0xff000000
itt ne
tstne w1, #0x00ff0000
tstne w1, #0x0000ff00
beq 7f
#else
bics r3, r3, #0xff000000
bne 7f
#endif
ldrb w2, [wp2]
S2LOMEM t1, w1, #24
#ifdef __ARMEB__
lsl w2, w2, #24
#endif
b 8f
6:
S2LOMEM t1, w1, #24
and w2, w2, LSB
b 8f
/* Critical inner Loop: Block with 2 bytes initial overlap */
.p2align 2
2:
S2HIMEM t1, w1, #16
sub r3, w1, b1
S2LOMEM t1, t1, #16
bic r3, r3, w1
cmp t1, w2, S2LOMEM #16
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, S2HIMEM #16
bne 6f
ldr w1, [wp1], #4
b 2b
5:
#ifdef __ARMEB__
/* The syndrome value may contain false ones if the string ends
with the bytes 0x01 0x00 */
tst w1, #0xff000000
it ne
tstne w1, #0x00ff0000
beq 7f
#else
lsls r3, r3, #16
bne 7f
#endif
ldrh w2, [wp2]
S2LOMEM t1, w1, #16
#ifdef __ARMEB__
lsl w2, w2, #16
#endif
b 8f
6:
S2HIMEM w2, w2, #16
S2LOMEM t1, w1, #16
4:
S2LOMEM w2, w2, #16
b 8f
/* Critical inner Loop: Block with 1 byte initial overlap */
.p2align 2
3:
and t1, w1, LSB
cmp t1, w2, S2LOMEM #24
sub r3, w1, b1
bic r3, r3, w1
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, S2HIMEM #8
bne 6f
ldr w1, [wp1], #4
b 3b
4:
S2LOMEM w2, w2, #24
b 8f
5:
/* The syndrome value may contain false ones if the string ends
with the bytes 0x01 0x00 */
tst w1, LSB
beq 7f
ldr w2, [wp2], #4
6:
S2LOMEM t1, w1, #8
bic w2, w2, MSB
b 8f
7:
mov r0, #0
//ldmfd sp!, {r4, r5}
ldr r4, [sp], #4
ldr r5, [sp], #4
RETURN
8:
and r2, t1, LSB
and r0, w2, LSB
cmp r0, #1
it cs
cmpcs r0, r2
itt eq
S2LOMEMEQ t1, t1, #8
S2LOMEMEQ w2, w2, #8
beq 8b
sub r0, r2, r0
//ldmfd sp!, {r4, r5}
ldr r4, [sp], #4
ldr r5, [sp], #4
RETURN
#endif /* !(defined (_ISA_THUMB_2) || defined (_ISA_ARM_6)
defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) ||
(defined (__thumb__) && !defined (__thumb2__))) */

View File

@@ -25,47 +25,22 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/linux-syscalls.h>
#include <linux/err.h>
#include <machine/asm.h>
.text
.align 4
.type syscall,#function
.globl syscall
.text
.align
#if __ARM_EABI__
syscall:
ENTRY(syscall)
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
stmfd sp!, {r4, r5, r6, r7}
mov r7, r0
mov r0, r1
mov r1, r2
mov r2, r3
ldmfd ip, {r3, r4, r5, r6}
ldmfd ip, {r3, r4, r5, r6}
swi #0
ldmfd sp!, {r4, r5, r6, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
#else
#ifndef __NR_syscall
#define __NR_syscall 113
#endif
syscall:
stmfd sp!, {r4, r5, lr}
ldr r4, [sp, #12]
ldr r5, [sp, #16]
swi __NR_syscall
ldmfd sp!, {r4, r5, lr}
movs r0, r0
bxpl lr
b __set_syscall_errno
#endif
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(syscall)

View File

@@ -25,6 +25,11 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <linux/err.h>
#include <asm/unistd.h>
#include <machine/asm.h>
/* unlike our auto-generated syscall stubs, this code saves lr
on the stack, as well as a few other registers. this makes
our stack unwinder happy, when we generate debug stack
@@ -33,19 +38,14 @@
of a corrupted malloc heap).
*/
#include <sys/linux-syscalls.h>
#include <machine/asm.h>
#ifndef __NR_tgkill
#define __NR_tgkill 268
#endif
ENTRY(tgkill)
.save {r4-r7, ip, lr}
stmfd sp!, {r4-r7, ip, lr}
ldr r7, =__NR_tgkill
swi #0
ldmfd sp!, {r4-r7, ip, lr}
movs r0, r0
bxpl lr
b __set_syscall_errno
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(tgkill)

View File

@@ -25,6 +25,11 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <linux/err.h>
#include <asm/unistd.h>
#include <machine/asm.h>
/* unlike our auto-generated syscall stubs, this code saves lr
on the stack, as well as a few other registers. this makes
our stack unwinder happy, when we generate debug stack
@@ -33,19 +38,13 @@
of a corrupted malloc heap).
*/
#include <sys/linux-syscalls.h>
#include <machine/asm.h>
#ifndef __NR_tkill
#define __NR_tkill 238
#endif
ENTRY(tkill)
stmfd sp!, {r4-r7, ip, lr}
ldr r7, =__NR_tkill
swi #0
ldmfd sp!, {r4-r7, ip, lr}
movs r0, r0
bxpl lr
b __set_syscall_errno
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(tkill)

View File

@@ -0,0 +1,227 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.thumb
.thumb_func
// Get the length of src string, then get the source of the dst string.
// Check that the two lengths together don't exceed the threshold, then
// do a memcpy of the data.
ENTRY(__strcat_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
mov lr, r2
// Save the dst register to r5
mov r5, r0
// Zero out r4
eor r4, r4, r4
// r1 contains the address of the string to count.
.L_strlen_start:
mov r0, r1
ands r3, r1, #7
beq .L_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
.L_align_to_32:
bcc .L_align_to_64
ands ip, r3, #2
beq .L_align_to_64
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r3, [r1], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
.p2align 2
.L_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_update_count_and_finish:
sub r3, r1, r0
sub r3, r3, #1
b .L_finish
.L_zero_in_first_register:
sub r3, r1, r0
lsls r2, ip, #17
bne .L_sub8_and_finish
bcs .L_sub7_and_finish
lsls ip, ip, #1
bne .L_sub6_and_finish
sub r3, r3, #5
b .L_finish
.L_sub8_and_finish:
sub r3, r3, #8
b .L_finish
.L_sub7_and_finish:
sub r3, r3, #7
b .L_finish
.L_sub6_and_finish:
sub r3, r3, #6
b .L_finish
.L_zero_in_second_register:
sub r3, r1, r0
lsls r2, ip, #17
bne .L_sub4_and_finish
bcs .L_sub3_and_finish
lsls ip, ip, #1
bne .L_sub2_and_finish
sub r3, r3, #1
b .L_finish
.L_sub4_and_finish:
sub r3, r3, #4
b .L_finish
.L_sub3_and_finish:
sub r3, r3, #3
b .L_finish
.L_sub2_and_finish:
sub r3, r3, #2
.L_finish:
cmp r4, #0
bne .L_strlen_done
// Time to get the dst string length.
mov r1, r5
// Save the original source address to r5.
mov r5, r0
// Save the current length (adding 1 for the terminator).
add r4, r3, #1
b .L_strlen_start
// r0 holds the pointer to the dst string.
// r3 holds the dst string length.
// r4 holds the src string length + 1.
.L_strlen_done:
add r2, r3, r4
cmp r2, lr
bhi __strcat_chk_failed
// Set up the registers for the memcpy code.
mov r1, r5
pld [r1, #64]
mov r2, r4
add r0, r0, r3
pop {r4, r5}
.cfi_endproc
END(__strcat_chk)
#define MEMCPY_BASE __strcat_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcat_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcat_chk_failed)
.cfi_startproc
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcat_chk_failed)
.data
error_string:
.string "strcat buffer overflow"

View File

@@ -0,0 +1,188 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.thumb
.thumb_func
// Get the length of the source string first, then do a memcpy of the data
// instead of a strcpy.
ENTRY(__strcpy_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
mov lr, r2
mov r0, r1
ands r3, r1, #7
beq .L_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
.L_align_to_32:
bcc .L_align_to_64
ands ip, r3, #2
beq .L_align_to_64
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r3, [r0], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
.p2align 2
.L_mainloop:
ldrd r2, r3, [r0], #8
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_update_count_and_finish:
sub r3, r0, r1
sub r3, r3, #1
b .L_check_size
.L_zero_in_first_register:
sub r3, r0, r1
lsls r2, ip, #17
bne .L_sub8_and_finish
bcs .L_sub7_and_finish
lsls ip, ip, #1
bne .L_sub6_and_finish
sub r3, r3, #5
b .L_check_size
.L_sub8_and_finish:
sub r3, r3, #8
b .L_check_size
.L_sub7_and_finish:
sub r3, r3, #7
b .L_check_size
.L_sub6_and_finish:
sub r3, r3, #6
b .L_check_size
.L_zero_in_second_register:
sub r3, r0, r1
lsls r2, ip, #17
bne .L_sub4_and_finish
bcs .L_sub3_and_finish
lsls ip, ip, #1
bne .L_sub2_and_finish
sub r3, r3, #1
b .L_check_size
.L_sub4_and_finish:
sub r3, r3, #4
b .L_check_size
.L_sub3_and_finish:
sub r3, r3, #3
b .L_check_size
.L_sub2_and_finish:
sub r3, r3, #2
.L_check_size:
pld [r1, #0]
pld [r1, #64]
ldr r0, [sp]
cmp r3, lr
bhs __strcpy_chk_failed
// Add 1 for copy length to get the string terminator.
add r2, r3, #1
.cfi_endproc
END(__strcpy_chk)
#define MEMCPY_BASE __strcpy_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcpy_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcpy_chk_failed)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcpy_chk_failed)
.data
error_string:
.string "strcpy buffer overflow"

View File

@@ -0,0 +1,112 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
// Prototype: void *memcpy (void *dst, const void *src, size_t count).
#include <machine/asm.h>
#include "libc_events.h"
.text
.syntax unified
.fpu neon
ENTRY(__memcpy_chk)
.cfi_startproc
cmp r2, r3
bhi __memcpy_chk_fail
// Fall through to memcpy...
.cfi_endproc
END(__memcpy_chk)
ENTRY(memcpy)
.cfi_startproc
pld [r1, #64]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
.cfi_endproc
END(memcpy)
#define MEMCPY_BASE __memcpy_base
#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__memcpy_chk_fail)
.cfi_startproc
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
.cfi_endproc
END(__memcpy_chk_fail)
.data
error_string:
.string "memcpy buffer overflow"

View File

@@ -0,0 +1,329 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
ENTRY(MEMCPY_BASE)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
// Assumes that n >= 0, and dst, src are valid pointers.
// For any sizes less than 832 use the neon code that doesn't
// care about the src alignment. This avoids any checks
// for src alignment, and offers the best improvement since
// smaller sized copies are dominated by the overhead of
// the pre and post main loop.
// For larger copies, if src and dst cannot both be aligned to
// word boundaries, use the neon code.
// For all other copies, align dst to a double word boundary
// and copy using LDRD/STRD instructions.
cmp r2, #16
blo .L_copy_less_than_16_unknown_align
// TODO: The aligned copy code is extremely slow copying some large
// buffers so always go through the unaligned path for now.
//cmp r2, #832
//bge .L_check_alignment
.L_copy_unknown_alignment:
// Unknown alignment of src and dst.
// Assumes that the first few bytes have already been prefetched.
// Align destination to 128 bits. The mainloop store instructions
// require this alignment or they will throw an exception.
rsb r3, r0, #0
ands r3, r3, #0xF
beq 2f
// Copy up to 15 bytes (count in r3).
sub r2, r2, r3
movs ip, r3, lsl #31
itt mi
ldrbmi lr, [r1], #1
strbmi lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// Copies 4 bytes, dst 32 bits aligned before, at least 64 bits after.
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0, :32]!
1: bcc 2f
// Copies 8 bytes, dst 64 bits aligned before, at least 128 bits after.
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2: // Make sure we have at least 64 bytes to copy.
subs r2, r2, #64
blo 2f
1: // The main loop copies 64 bytes at a time.
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(64*4)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
bhs 1b
2: // Fix-up the remaining count and make sure we have >= 32 bytes left.
adds r2, r2, #32
blo 3f
// 32 bytes. These cache lines were already preloaded.
vld1.8 {d0 - d3}, [r1]!
sub r2, r2, #32
vst1.8 {d0 - d3}, [r0, :128]!
3: // Less than 32 left.
add r2, r2, #32
tst r2, #0x10
beq .L_copy_less_than_16_unknown_align
// Copies 16 bytes, destination 128 bits aligned.
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0, :128]!
.L_copy_less_than_16_unknown_align:
// Copy up to 15 bytes (count in r2).
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0]!
2: // Copy 0 to 4 bytes.
lsls r2, r2, #31
itt ne
ldrbne lr, [r1], #1
strbne lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1]
strbcs ip, [r0], #1
strbcs lr, [r0]
pop {r0, pc}
.L_check_alignment:
// If src and dst cannot both be aligned to a word boundary,
// use the unaligned copy version.
eor r3, r0, r1
ands r3, r3, #0x3
bne .L_copy_unknown_alignment
.cfi_endproc
END(MEMCPY_BASE)
ENTRY(MEMCPY_BASE_ALIGNED)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
// To try and improve performance, stack layout changed,
// i.e., not keeping the stack looking like users expect
// (highest numbered register at highest address).
strd r4, r5, [sp, #-8]!
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
strd r6, r7, [sp, #-8]!
.save {r6, r7}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r6, 0
.cfi_rel_offset r7, 0
strd r8, r9, [sp, #-8]!
.save {r8, r9}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r8, 0
.cfi_rel_offset r9, 4
// Optimized for already aligned dst code.
ands ip, r0, #3
bne .L_dst_not_word_aligned
.L_word_aligned:
// Align the destination buffer to 8 bytes, to make sure double
// loads and stores don't cross a cache line boundary,
// as they are then more expensive even if the data is in the cache
// (require two load/store issue cycles instead of one).
// If only one of the buffers is not 8 bytes aligned,
// then it's more important to align dst than src,
// because there is more penalty for stores
// than loads that cross a cacheline boundary.
// This check and realignment are only done if there is >= 832
// bytes to copy.
// Dst is word aligned, but check if it is already double word aligned.
ands r3, r0, #4
beq 1f
ldr r3, [r1], #4
str r3, [r0], #4
sub r2, #4
1: // Can only get here if > 64 bytes to copy, so don't do check r2.
sub r2, #64
2: // Every loop iteration copies 64 bytes.
.irp offset, #0, #8, #16, #24, #32
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
ldrd r4, r5, [r1, #40]
ldrd r6, r7, [r1, #48]
ldrd r8, r9, [r1, #56]
// Keep the pld as far from the next load as possible.
// The amount to prefetch was determined experimentally using
// large sizes, and verifying the prefetch size does not affect
// the smaller copies too much.
// WARNING: If the ldrd and strd instructions get too far away
// from each other, performance suffers. Three loads
// in a row is the best tradeoff.
pld [r1, #(64*16)]
strd r4, r5, [r0, #40]
strd r6, r7, [r0, #48]
strd r8, r9, [r0, #56]
add r0, r0, #64
add r1, r1, #64
subs r2, r2, #64
bge 2b
// Fix-up the remaining count and make sure we have >= 32 bytes left.
adds r2, r2, #32
blo 4f
// Copy 32 bytes. These cache lines were already preloaded.
.irp offset, #0, #8, #16, #24
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
add r1, r1, #32
add r0, r0, #32
sub r2, r2, #32
4: // Less than 32 left.
add r2, r2, #32
tst r2, #0x10
beq 5f
// Copy 16 bytes.
.irp offset, #0, #8
ldrd r4, r5, [r1, \offset]
strd r4, r5, [r0, \offset]
.endr
add r1, r1, #16
add r0, r0, #16
5: // Copy up to 15 bytes (count in r2).
movs ip, r2, lsl #29
bcc 1f
// Copy 8 bytes.
ldrd r4, r5, [r1], #8
strd r4, r5, [r0], #8
1: bge 2f
// Copy 4 bytes.
ldr r4, [r1], #4
str r4, [r0], #4
2: // Copy 0 to 4 bytes.
lsls r2, r2, #31
itt ne
ldrbne lr, [r1], #1
strbne lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1]
strbcs ip, [r0], #1
strbcs lr, [r0]
// Restore registers: optimized pop {r0, pc}
ldrd r8, r9, [sp], #8
ldrd r6, r7, [sp], #8
ldrd r4, r5, [sp], #8
pop {r0, pc}
.L_dst_not_word_aligned:
// Align dst to word.
rsb ip, ip, #4
cmp ip, #2
itt gt
ldrbgt lr, [r1], #1
strbgt lr, [r0], #1
itt ge
ldrbge lr, [r1], #1
strbge lr, [r0], #1
ldrb lr, [r1], #1
strb lr, [r0], #1
sub r2, r2, ip
// Src is guaranteed to be at least word aligned by this point.
b .L_word_aligned
.cfi_endproc
END(MEMCPY_BASE_ALIGNED)

View File

@@ -0,0 +1,200 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* Optimized memset() for ARM.
*
* memset() returns its first argument.
*/
.fpu neon
.syntax unified
ENTRY(__memset_chk)
.cfi_startproc
cmp r2, r3
bls .L_done
// Preserve lr for backtrace.
.save {lr}
push {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
.cfi_endproc
END(__memset_chk)
ENTRY(bzero)
.cfi_startproc
mov r2, r1
mov r1, #0
.L_done:
// Fall through to memset...
.cfi_endproc
END(bzero)
ENTRY(memset)
.cfi_startproc
.save {r0}
stmfd sp!, {r0}
.cfi_def_cfa_offset 4
.cfi_rel_offset r0, 0
// The new algorithm is slower for copies < 16 so use the old
// neon code in that case.
cmp r2, #16
blo .L_set_less_than_16_unknown_align
// Use strd which requires an even and odd register so move the
// values so that:
// r0 and r1 contain the memset value
// r2 is the number of bytes to set
// r3 is the destination pointer
mov r3, r0
// Copy the byte value in every byte of r1.
mov r1, r1, lsl #24
orr r1, r1, r1, lsr #8
orr r1, r1, r1, lsr #16
.L_check_alignment:
// Align destination to a double word to avoid the strd crossing
// a cache line boundary.
ands ip, r3, #7
bne .L_do_double_word_align
.L_double_word_aligned:
mov r0, r1
subs r2, #64
blo .L_set_less_than_64
1: // Main loop sets 64 bytes at a time.
.irp offset, #0, #8, #16, #24, #32, #40, #48, #56
strd r0, r1, [r3, \offset]
.endr
add r3, #64
subs r2, #64
bge 1b
.L_set_less_than_64:
// Restore r2 to the count of bytes left to set.
add r2, #64
lsls ip, r2, #27
bcc .L_set_less_than_32
// Set 32 bytes.
.irp offset, #0, #8, #16, #24
strd r0, r1, [r3, \offset]
.endr
add r3, #32
.L_set_less_than_32:
bpl .L_set_less_than_16
// Set 16 bytes.
.irp offset, #0, #8
strd r0, r1, [r3, \offset]
.endr
add r3, #16
.L_set_less_than_16:
// Less than 16 bytes to set.
lsls ip, r2, #29
bcc .L_set_less_than_8
// Set 8 bytes.
strd r0, r1, [r3], #8
.L_set_less_than_8:
bpl .L_set_less_than_4
// Set 4 bytes
str r1, [r3], #4
.L_set_less_than_4:
lsls ip, r2, #31
it ne
strbne r1, [r3], #1
itt cs
strbcs r1, [r3], #1
strbcs r1, [r3]
ldmfd sp!, {r0}
bx lr
.L_do_double_word_align:
rsb ip, ip, #8
sub r2, r2, ip
movs r0, ip, lsl #31
it mi
strbmi r1, [r3], #1
itt cs
strbcs r1, [r3], #1
strbcs r1, [r3], #1
// Dst is at least word aligned by this point.
cmp ip, #4
blo .L_double_word_aligned
str r1, [r3], #4
b .L_double_word_aligned
.L_set_less_than_16_unknown_align:
// Set up to 15 bytes.
vdup.8 d0, r1
movs ip, r2, lsl #29
bcc 1f
vst1.8 {d0}, [r0]!
1: bge 2f
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
it mi
strbmi r1, [r0], #1
itt cs
strbcs r1, [r0], #1
strbcs r1, [r0], #1
ldmfd sp!, {r0}
bx lr
.cfi_endproc
END(memset)
.data
error_string:
.string "memset buffer overflow"

View File

@@ -0,0 +1,568 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_pop
pop {r0, r4, r5, pc}
.endm // m_pop
.macro m_scan_byte
ldrb r3, [r0]
cbz r3, strcat_r0_scan_done
add r0, #1
.endm // m_scan_byte
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcat)
// Quick check to see if src is empty.
ldrb r2, [r1]
pld [r1, #0]
cbnz r2, strcat_continue
bx lr
strcat_continue:
// To speed up really small dst strings, unroll checking the first 4 bytes.
m_push
m_scan_byte
m_scan_byte
m_scan_byte
m_scan_byte
ands r3, r0, #7
beq strcat_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcat_align_to_32
ldrb r5, [r0]
cbz r5, strcat_r0_scan_done
add r0, r0, #1
strcat_align_to_32:
bcc strcat_align_to_64
ldrb r2, [r0]
cbz r2, strcat_r0_scan_done
add r0, r0, #1
ldrb r4, [r0]
cbz r4, strcat_r0_scan_done
add r0, r0, #1
strcat_align_to_64:
tst r3, #4
beq strcat_mainloop
ldr r3, [r0], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcat_zero_in_second_register
b strcat_mainloop
strcat_r0_scan_done:
// For short copies, hard-code checking the first 8 bytes since this
// new code doesn't win until after about 8 bytes.
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_pop
strcpy_continue:
ands r3, r0, #7
beq strcpy_check_src_align
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
str r2, [r0], #4
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_mainloop
strcpy_complete:
m_pop
strcpy_zero_in_first_register:
lsls lr, ip, #17
bne strcpy_copy1byte
bcs strcpy_copy2bytes
lsls ip, ip, #1
bne strcpy_copy3bytes
strcpy_copy4bytes:
// Copy 4 bytes to the destiniation.
str r2, [r0]
m_pop
strcpy_copy1byte:
strb r2, [r0]
m_pop
strcpy_copy2bytes:
strh r2, [r0]
m_pop
strcpy_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
bne strcpy_copy5bytes
bcs strcpy_copy6bytes
lsls ip, ip, #1
bne strcpy_copy7bytes
// Copy 8 bytes to the destination.
strd r2, r3, [r0]
m_pop
strcpy_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
m_pop
strcpy_copy6bytes:
str r2, [r0], #4
strh r3, [r0]
m_pop
strcpy_copy7bytes:
str r2, [r0], #4
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
strcpy_unalign_return:
m_pop
strcpy_unalign7_copy6bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
m_pop
strcpy_unalign7_copy7bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_copy7bytes
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign6
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign5
strcpy_unalign_copy5bytes:
str r2, [r0], #4
strb r4, [r0]
m_pop
strcpy_unalign_copy6bytes:
str r2, [r0], #4
strb r4, [r0], #1
strb r5, [r0]
m_pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_copy3bytes
lsrs ip, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r4, [r0]
m_pop
.p2align 2
strcat_mainloop:
ldrd r2, r3, [r0], #8
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcat_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcat_zero_in_second_register
b strcat_mainloop
strcat_zero_in_first_register:
// Prefetch the src now, it's going to be used soon.
pld [r1, #0]
lsls lr, ip, #17
bne strcat_sub8
bcs strcat_sub7
lsls ip, ip, #1
bne strcat_sub6
sub r0, r0, #5
b strcat_r0_scan_done
strcat_sub8:
sub r0, r0, #8
b strcat_r0_scan_done
strcat_sub7:
sub r0, r0, #7
b strcat_r0_scan_done
strcat_sub6:
sub r0, r0, #6
b strcat_r0_scan_done
strcat_zero_in_second_register:
// Prefetch the src now, it's going to be used soon.
pld [r1, #0]
lsls lr, ip, #17
bne strcat_sub4
bcs strcat_sub3
lsls ip, ip, #1
bne strcat_sub2
sub r0, r0, #1
b strcat_r0_scan_done
strcat_sub4:
sub r0, r0, #4
b strcat_r0_scan_done
strcat_sub3:
sub r0, r0, #3
b strcat_r0_scan_done
strcat_sub2:
sub r0, r0, #2
b strcat_r0_scan_done
END(strcat)

View File

@@ -0,0 +1,390 @@
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
#ifdef __ARMEB__
#define S2LOMEM lsl
#define S2LOMEMEQ lsleq
#define S2HIMEM lsr
#define MSB 0x000000ff
#define LSB 0xff000000
#define BYTE0_OFFSET 24
#define BYTE1_OFFSET 16
#define BYTE2_OFFSET 8
#define BYTE3_OFFSET 0
#else /* not __ARMEB__ */
#define S2LOMEM lsr
#define S2LOMEMEQ lsreq
#define S2HIMEM lsl
#define BYTE0_OFFSET 0
#define BYTE1_OFFSET 8
#define BYTE2_OFFSET 16
#define BYTE3_OFFSET 24
#define MSB 0xff000000
#define LSB 0x000000ff
#endif /* not __ARMEB__ */
.syntax unified
#if defined (__thumb__)
.thumb
.thumb_func
#endif
ENTRY(strcmp)
/* Use LDRD whenever possible. */
/* The main thing to look out for when comparing large blocks is that
the loads do not cross a page boundary when loading past the index
of the byte with the first difference or the first string-terminator.
For example, if the strings are identical and the string-terminator
is at index k, byte by byte comparison will not load beyond address
s1+k and s2+k; word by word comparison may load up to 3 bytes beyond
k; double word - up to 7 bytes. If the load of these bytes crosses
a page boundary, it might cause a memory fault (if the page is not mapped)
that would not have happened in byte by byte comparison.
If an address is (double) word aligned, then a load of a (double) word
from that address will not cross a page boundary.
Therefore, the algorithm below considers word and double-word alignment
of strings separately. */
/* High-level description of the algorithm.
* The fast path: if both strings are double-word aligned,
use LDRD to load two words from each string in every loop iteration.
* If the strings have the same offset from a word boundary,
use LDRB to load and compare byte by byte until
the first string is aligned to a word boundary (at most 3 bytes).
This is optimized for quick return on short unaligned strings.
* If the strings have the same offset from a double-word boundary,
use LDRD to load two words from each string in every loop iteration, as in the fast path.
* If the strings do not have the same offset from a double-word boundary,
load a word from the second string before the loop to initialize the queue.
Use LDRD to load two words from every string in every loop iteration.
Inside the loop, load the second word from the second string only after comparing
the first word, using the queued value, to guarantee safety across page boundaries.
* If the strings do not have the same offset from a word boundary,
use LDR and a shift queue. Order of loads and comparisons matters,
similarly to the previous case.
* Use UADD8 and SEL to compare words, and use REV and CLZ to compute the return value.
* The only difference between ARM and Thumb modes is the use of CBZ instruction.
* The only difference between big and little endian is the use of REV in little endian
to compute the return value, instead of MOV.
*/
.macro m_cbz reg label
#ifdef __thumb2__
cbz \reg, \label
#else /* not defined __thumb2__ */
cmp \reg, #0
beq \label
#endif /* not defined __thumb2__ */
.endm /* m_cbz */
.macro m_cbnz reg label
#ifdef __thumb2__
cbnz \reg, \label
#else /* not defined __thumb2__ */
cmp \reg, #0
bne \label
#endif /* not defined __thumb2__ */
.endm /* m_cbnz */
.macro init
/* Macro to save temporary registers and prepare magic values. */
subs sp, sp, #16
.cfi_def_cfa_offset 16
strd r4, r5, [sp, #8]
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
strd r6, r7, [sp]
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
mvn r6, #0 /* all F */
mov r7, #0 /* all 0 */
.endm /* init */
.macro magic_compare_and_branch w1 w2 label
/* Macro to compare registers w1 and w2 and conditionally branch to label. */
cmp \w1, \w2 /* Are w1 and w2 the same? */
magic_find_zero_bytes \w1
it eq
cmpeq ip, #0 /* Is there a zero byte in w1? */
bne \label
.endm /* magic_compare_and_branch */
.macro magic_find_zero_bytes w1
/* Macro to find all-zero bytes in w1, result is in ip. */
#if (defined (__ARM_FEATURE_DSP))
uadd8 ip, \w1, r6
sel ip, r7, r6
#else /* not defined (__ARM_FEATURE_DSP) */
/* __ARM_FEATURE_DSP is not defined for some Cortex-M processors.
Coincidently, these processors only have Thumb-2 mode, where we can use the
the (large) magic constant available directly as an immediate in instructions.
Note that we cannot use the magic constant in ARM mode, where we need
to create the constant in a register. */
sub ip, \w1, #0x01010101
bic ip, ip, \w1
and ip, ip, #0x80808080
#endif /* not defined (__ARM_FEATURE_DSP) */
.endm /* magic_find_zero_bytes */
.macro setup_return w1 w2
#ifdef __ARMEB__
mov r1, \w1
mov r2, \w2
#else /* not __ARMEB__ */
rev r1, \w1
rev r2, \w2
#endif /* not __ARMEB__ */
.endm /* setup_return */
.cfi_startproc
pld [r0, #0]
pld [r1, #0]
/* Are both strings double-word aligned? */
orr ip, r0, r1
tst ip, #7
bne .L_do_align
/* Fast path. */
.save {r4-r7}
init
.L_doubleword_aligned:
/* Get here when the strings to compare are double-word aligned. */
/* Compare two words in every iteration. */
.p2align 2
2:
pld [r0, #16]
pld [r1, #16]
/* Load the next double-word from each string. */
ldrd r2, r3, [r0], #8
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r2, w2=r4, label=.L_return_24
magic_compare_and_branch w1=r3, w2=r5, label=.L_return_35
b 2b
.L_do_align:
/* Is the first string word-aligned? */
ands ip, r0, #3
beq .L_word_aligned_r0
/* Fast compare byte by byte until the first string is word-aligned. */
/* The offset of r0 from a word boundary is in ip. Thus, the number of bytes
to read until the next word boundary is 4-ip. */
bic r0, r0, #3
ldr r2, [r0], #4
lsls ip, ip, #31
beq .L_byte2
bcs .L_byte3
.L_byte1:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE1_OFFSET
subs ip, r3, ip
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
.L_byte2:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE2_OFFSET
subs ip, r3, ip
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
.L_byte3:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE3_OFFSET
subs ip, r3, ip
bne .L_fast_return
m_cbnz reg=r3, label=.L_word_aligned_r0
.L_fast_return:
mov r0, ip
bx lr
.L_word_aligned_r0:
init
/* The first string is word-aligned. */
/* Is the second string word-aligned? */
ands ip, r1, #3
bne .L_strcmp_unaligned
.L_word_aligned:
/* The strings are word-aligned. */
/* Is the first string double-word aligned? */
tst r0, #4
beq .L_doubleword_aligned_r0
/* If r0 is not double-word aligned yet, align it by loading
and comparing the next word from each string. */
ldr r2, [r0], #4
ldr r4, [r1], #4
magic_compare_and_branch w1=r2 w2=r4 label=.L_return_24
.L_doubleword_aligned_r0:
/* Get here when r0 is double-word aligned. */
/* Is r1 doubleword_aligned? */
tst r1, #4
beq .L_doubleword_aligned
/* Get here when the strings to compare are word-aligned,
r0 is double-word aligned, but r1 is not double-word aligned. */
/* Initialize the queue. */
ldr r5, [r1], #4
/* Compare two words in every iteration. */
.p2align 2
3:
pld [r0, #16]
pld [r1, #16]
/* Load the next double-word from each string and compare. */
ldrd r2, r3, [r0], #8
magic_compare_and_branch w1=r2 w2=r5 label=.L_return_25
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r3 w2=r4 label=.L_return_34
b 3b
.macro miscmp_word offsetlo offsethi
/* Macro to compare misaligned strings. */
/* r0, r1 are word-aligned, and at least one of the strings
is not double-word aligned. */
/* Compare one word in every loop iteration. */
/* OFFSETLO is the original bit-offset of r1 from a word-boundary,
OFFSETHI is 32 - OFFSETLO (i.e., offset from the next word). */
/* Initialize the shift queue. */
ldr r5, [r1], #4
/* Compare one word from each string in every loop iteration. */
.p2align 2
7:
ldr r3, [r0], #4
S2LOMEM r5, r5, #\offsetlo
magic_find_zero_bytes w1=r3
cmp r7, ip, S2HIMEM #\offsetlo
and r2, r3, r6, S2LOMEM #\offsetlo
it eq
cmpeq r2, r5
bne .L_return_25
ldr r5, [r1], #4
cmp ip, #0
eor r3, r2, r3
S2HIMEM r2, r5, #\offsethi
it eq
cmpeq r3, r2
bne .L_return_32
b 7b
.endm /* miscmp_word */
.L_strcmp_unaligned:
/* r0 is word-aligned, r1 is at offset ip from a word. */
/* Align r1 to the (previous) word-boundary. */
bic r1, r1, #3
/* Unaligned comparison word by word using LDRs. */
cmp ip, #2
beq .L_miscmp_word_16 /* If ip == 2. */
bge .L_miscmp_word_24 /* If ip == 3. */
miscmp_word offsetlo=8 offsethi=24 /* If ip == 1. */
.L_miscmp_word_16: miscmp_word offsetlo=16 offsethi=16
.L_miscmp_word_24: miscmp_word offsetlo=24 offsethi=8
.L_return_32:
setup_return w1=r3, w2=r2
b .L_do_return
.L_return_34:
setup_return w1=r3, w2=r4
b .L_do_return
.L_return_25:
setup_return w1=r2, w2=r5
b .L_do_return
.L_return_35:
setup_return w1=r3, w2=r5
b .L_do_return
.L_return_24:
setup_return w1=r2, w2=r4
.L_do_return:
#ifdef __ARMEB__
mov r0, ip
#else /* not __ARMEB__ */
rev r0, ip
#endif /* not __ARMEB__ */
/* Restore temporaries early, before computing the return value. */
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
/* There is a zero or a different byte between r1 and r2. */
/* r0 contains a mask of all-zero bytes in r1. */
/* Using r0 and not ip here because cbz requires low register. */
m_cbz reg=r0, label=.L_compute_return_value
clz r0, r0
/* r0 contains the number of bits on the left of the first all-zero byte in r1. */
rsb r0, r0, #24
/* Here, r0 contains the number of bits on the right of the first all-zero byte in r1. */
lsr r1, r1, r0
lsr r2, r2, r0
.L_compute_return_value:
movs r0, #1
cmp r1, r2
/* The return value is computed as follows.
If r1>r2 then (C==1 and Z==0) and LS doesn't hold and r0 is #1 at return.
If r1<r2 then (C==0 and Z==0) and we execute SBC with carry_in=0,
which means r0:=r0-r0-1 and r0 is #-1 at return.
If r1=r2 then (C==1 and Z==1) and we execute SBC with carry_in=1,
which means r0:=r0-r0 and r0 is #0 at return.
(C==0 and Z==1) cannot happen because the carry bit is "not borrow". */
it ls
sbcls r0, r0, r0
bx lr
.cfi_endproc
END(strcmp)

View File

@@ -0,0 +1,451 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_pop
pop {r0, r4, r5, pc}
.endm // m_pop
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcpy)
// For short copies, hard-code checking the first 8 bytes since this
// new code doesn't win until after about 8 bytes.
m_push
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_pop
strcpy_continue:
pld [r1, #0]
ands r3, r0, #7
beq strcpy_check_src_align
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
str r2, [r0], #4
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_mainloop
strcpy_complete:
m_pop
strcpy_zero_in_first_register:
lsls lr, ip, #17
bne strcpy_copy1byte
bcs strcpy_copy2bytes
lsls ip, ip, #1
bne strcpy_copy3bytes
strcpy_copy4bytes:
// Copy 4 bytes to the destiniation.
str r2, [r0]
m_pop
strcpy_copy1byte:
strb r2, [r0]
m_pop
strcpy_copy2bytes:
strh r2, [r0]
m_pop
strcpy_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
bne strcpy_copy5bytes
bcs strcpy_copy6bytes
lsls ip, ip, #1
bne strcpy_copy7bytes
// Copy 8 bytes to the destination.
strd r2, r3, [r0]
m_pop
strcpy_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
m_pop
strcpy_copy6bytes:
str r2, [r0], #4
strh r3, [r0]
m_pop
strcpy_copy7bytes:
str r2, [r0], #4
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
str r2, [r0], #4
strb r3, [r0]
strcpy_unalign_return:
m_pop
strcpy_unalign7_copy6bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
m_pop
strcpy_unalign7_copy7bytes:
str r2, [r0], #4
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_copy7bytes
lsrs ip, r3, #24
strd r2, r3, [r0], #8
beq strcpy_unalign_return
b strcpy_unalign6
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign5
strcpy_unalign_copy5bytes:
str r2, [r0], #4
strb r4, [r0]
m_pop
strcpy_unalign_copy6bytes:
str r2, [r0], #4
strb r4, [r0], #1
strb r5, [r0]
m_pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_copy3bytes
lsrs ip, r2, #24
beq strcpy_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
strd r2, r3, [r0], #8
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r4, [r0]
m_pop
END(strcpy)

View File

@@ -0,0 +1,165 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
ENTRY(strlen)
pld [r0, #0]
mov r1, r0
ands r3, r0, #7
beq mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq align_to_32
ldrb r2, [r1], #1
cbz r2, update_count_and_return
align_to_32:
bcc align_to_64
ands ip, r3, #2
beq align_to_64
ldrb r2, [r1], #1
cbz r2, update_count_and_return
ldrb r2, [r1], #1
cbz r2, update_count_and_return
align_to_64:
tst r3, #4
beq mainloop
ldr r3, [r1], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne zero_in_second_register
.p2align 2
mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne zero_in_second_register
b mainloop
update_count_and_return:
sub r0, r1, r0
sub r0, r0, #1
bx lr
zero_in_first_register:
sub r0, r1, r0
lsls r3, ip, #17
bne sub8_and_return
bcs sub7_and_return
lsls ip, ip, #1
bne sub6_and_return
sub r0, r0, #5
bx lr
sub8_and_return:
sub r0, r0, #8
bx lr
sub7_and_return:
sub r0, r0, #7
bx lr
sub6_and_return:
sub r0, r0, #6
bx lr
zero_in_second_register:
sub r0, r1, r0
lsls r3, ip, #17
bne sub4_and_return
bcs sub3_and_return
lsls ip, ip, #1
bne sub2_and_return
sub r0, r0, #1
bx lr
sub4_and_return:
sub r0, r0, #4
bx lr
sub3_and_return:
sub r0, r0, #3
bx lr
sub2_and_return:
sub r0, r0, #2
bx lr
END(strlen)

View File

@@ -0,0 +1,10 @@
$(call libc-add-cpu-variant-src,MEMCPY,arch-arm/cortex-a15/bionic/memcpy.S)
$(call libc-add-cpu-variant-src,MEMSET,arch-arm/cortex-a15/bionic/memset.S)
$(call libc-add-cpu-variant-src,STRCAT,arch-arm/cortex-a15/bionic/strcat.S)
$(call libc-add-cpu-variant-src,STRCMP,arch-arm/cortex-a15/bionic/strcmp.S)
$(call libc-add-cpu-variant-src,STRCPY,arch-arm/cortex-a15/bionic/strcpy.S)
$(call libc-add-cpu-variant-src,STRLEN,arch-arm/cortex-a15/bionic/strlen.S)
$(call libc-add-cpu-variant-src,__STRCAT_CHK,arch-arm/cortex-a15/bionic/__strcat_chk.S)
$(call libc-add-cpu-variant-src,__STRCPY_CHK,arch-arm/cortex-a15/bionic/__strcpy_chk.S)
include bionic/libc/arch-arm/generic/generic.mk

View File

@@ -0,0 +1 @@
include bionic/libc/arch-arm/cortex-a15/cortex-a15.mk

View File

@@ -0,0 +1 @@
include bionic/libc/arch-arm/cortex-a15/cortex-a15.mk

View File

@@ -0,0 +1,230 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.fpu neon
.thumb
.thumb_func
// Get the length of src string, then get the source of the dst string.
// Check that the two lengths together don't exceed the threshold, then
// do a memcpy of the data.
ENTRY(__strcat_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
mov lr, r2
// Save the dst register to r5
mov r5, r0
// Zero out r4
eor r4, r4, r4
// r1 contains the address of the string to count.
.L_strlen_start:
mov r0, r1
ands r3, r0, #7
bne .L_align_src
.p2align 2
.L_mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_zero_in_first_register:
sub r3, r1, r0
// Check for zero in byte 0.
lsls r2, ip, #17
beq .L_check_byte1_reg1
sub r3, r3, #8
b .L_finish
.L_check_byte1_reg1:
bcc .L_check_byte2_reg1
sub r3, r3, #7
b .L_finish
.L_check_byte2_reg1:
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r3, r3, #6
bne .L_finish
sub r3, r3, #5
b .L_finish
.L_zero_in_second_register:
sub r3, r1, r0
// Check for zero in byte 0.
lsls r2, ip, #17
beq .L_check_byte1_reg2
sub r3, r3, #4
b .L_finish
.L_check_byte1_reg2:
bcc .L_check_byte2_reg2
sub r3, r3, #3
b .L_finish
.L_check_byte2_reg2:
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r3, r3, #2
bne .L_finish
sub r3, r3, #1
b .L_finish
.L_align_src:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r1], #1
cbz r2, .L_done
.L_align_to_32:
bcc .L_align_to_64
ldrb r2, [r1], #1
cbz r2, .L_done
ldrb r2, [r1], #1
cbz r2, .L_done
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_done:
sub r3, r1, r0
sub r3, r3, #1
.L_finish:
cmp r4, #0
bne .L_strlen_done
// Time to get the dst string length.
mov r1, r5
// Save the original source address to r5.
mov r5, r0
// Save the current length (adding 1 for the terminator).
add r4, r3, #1
b .L_strlen_start
// r0 holds the pointer to the dst string.
// r3 holds the dst string length.
// r4 holds the src string length + 1.
.L_strlen_done:
add r2, r3, r4
cmp r2, lr
bhi __strcat_chk_fail
// Set up the registers for the memcpy code.
mov r1, r5
pld [r1, #64]
mov r2, r4
add r0, r0, r3
pop {r4, r5}
// Fall through into the memcpy_base function.
.cfi_endproc
END(__strcat_chk)
#define MEMCPY_BASE __strcat_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcat_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcat_chk_fail)
.cfi_startproc
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcat_chk_fail)
.data
error_string:
.string "strcat buffer overflow"

View File

@@ -0,0 +1,194 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.fpu neon
.thumb
.thumb_func
// Get the length of the source string first, then do a memcpy of the data
// instead of a strcpy.
ENTRY(__strcpy_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
mov lr, r2
mov r0, r1
ands r3, r0, #7
bne .L_align_src
.p2align 2
.L_mainloop:
ldmia r0!, {r2, r3}
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_zero_in_first_register:
sub r3, r0, r1
// Check for zero in byte 0.
lsls r2, ip, #17
beq .L_check_byte1_reg1
sub r3, r3, #8
b .L_check_size
.L_check_byte1_reg1:
bcc .L_check_byte2_reg1
sub r3, r3, #7
b .L_check_size
.L_check_byte2_reg1:
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r3, r3, #6
bne .L_check_size
sub r3, r3, #5
b .L_check_size
.L_zero_in_second_register:
sub r3, r0, r1
// Check for zero in byte 0.
lsls r2, ip, #17
beq .L_check_byte1_reg2
sub r3, r3, #4
b .L_check_size
.L_check_byte1_reg2:
bcc .L_check_byte2_reg2
sub r3, r3, #3
b .L_check_size
.L_check_byte2_reg2:
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r3, r3, #2
bne .L_check_size
sub r3, r3, #1
b .L_check_size
.L_align_src:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r0], #1
cbz r2, .L_done
.L_align_to_32:
bcc .L_align_to_64
ldrb r2, [r0], #1
cbz r2, .L_done
ldrb r2, [r0], #1
cbz r2, .L_done
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r2, [r0], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_done:
sub r3, r0, r1
sub r3, r3, #1
.L_check_size:
pld [r1, #0]
pld [r1, #64]
ldr r0, [sp]
cmp r3, lr
bhs __strcpy_chk_fail
// Add 1 for copy length to get the string terminator.
add r2, r3, #1
.cfi_endproc
// Fall through into the memcpy_base function.
END(__strcpy_chk)
#define MEMCPY_BASE __strcpy_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcpy_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcpy_chk_fail)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcpy_chk_fail)
.data
error_string:
.string "strcpy buffer overflow"

View File

@@ -0,0 +1,92 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
/*
* This code assumes it is running on a processor that supports all arm v7
* instructions, that supports neon instructions, and that has a 32 byte
* cache line.
*/
.syntax unified
.fpu neon
.thumb
.thumb_func
ENTRY(__memcpy_chk)
.cfi_startproc
cmp r2, r3
bhi __memcpy_chk_fail
// Fall through to memcpy...
.cfi_endproc
END(__memcpy_chk)
ENTRY(memcpy)
.cfi_startproc
pld [r1, #0]
stmfd sp!, {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
pld [r1, #64]
.cfi_endproc
END(memcpy)
#define MEMCPY_BASE __memcpy_base
#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__memcpy_chk_fail)
.cfi_startproc
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__memcpy_chk_fail)
.data
error_string:
.string "memcpy buffer overflow"

View File

@@ -0,0 +1,233 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* This code assumes it is running on a processor that supports all arm v7
* instructions, that supports neon instructions, and that has a 32 byte
* cache line.
*/
ENTRY(MEMCPY_BASE)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
// Check so divider is at least 16 bytes, needed for alignment code.
cmp r2, #16
blo 5f
/* check if buffers are aligned. If so, run arm-only version */
eor r3, r0, r1
ands r3, r3, #0x3
beq __memcpy_base_aligned
/* Check the upper size limit for Neon unaligned memory access in memcpy */
cmp r2, #224
blo 3f
/* align destination to 16 bytes for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 3f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
itt mi
ldrbmi lr, [r1], #1
strbmi lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// copies 4 bytes, destination 32-bits aligned
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0, :32]!
1: bcc 2f
// copies 8 bytes, destination 64-bits aligned
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2:
/* preload immediately the next cache line, which we may need */
pld [r1, #0]
pld [r1, #(32 * 2)]
3:
/* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
/* preload all the cache lines we need */
pld [r1, #(32 * 4)]
pld [r1, #(32 * 6)]
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(32 * 6)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0]!
vst1.8 {d4 - d7}, [r0]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
add r2, r2, #64
subs r2, r2, #32
blo 4f
3: /* 32 bytes at a time. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0]!
bhs 3b
4: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 5f
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld1.32 {d0[0]}, [r1]!
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
itt mi
ldrbmi r3, [r1], #1
strbmi r3, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
ldmfd sp!, {r0, lr}
bx lr
.cfi_endproc
END(MEMCPY_BASE)
ENTRY(MEMCPY_BASE_ALIGNED)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
/* Simple arm-only copy loop to handle aligned copy operations */
stmfd sp!, {r4-r8}
.save {r4-r8}
.cfi_adjust_cfa_offset 20
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
.cfi_rel_offset r8, 16
pld [r1, #(32 * 4)]
/* Check alignment */
rsb r3, r1, #0
ands r3, #3
beq 2f
/* align source to 32 bits. We need to insert 2 instructions between
* a ldr[b|h] and str[b|h] because byte and half-word instructions
* stall 2 cycles.
*/
movs r12, r3, lsl #31
sub r2, r2, r3 /* we know that r3 <= r2 because r2 >= 4 */
itt mi
ldrbmi r3, [r1], #1
strbmi r3, [r0], #1
itttt cs
ldrbcs r4, [r1], #1
ldrbcs r5, [r1], #1
strbcs r4, [r0], #1
strbcs r5, [r0], #1
2:
subs r2, r2, #64
blt 4f
3: /* Main copy loop, copying 64 bytes at a time */
pld [r1, #(32 * 8)]
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
subs r2, r2, #64
bge 3b
4: /* Check if there are > 32 bytes left */
adds r2, r2, #64
subs r2, r2, #32
blt 5f
/* Copy 32 bytes */
ldmia r1!, {r3, r4, r5, r6, r7, r8, r12, lr}
stmia r0!, {r3, r4, r5, r6, r7, r8, r12, lr}
subs r2, #32
5: /* Handle any remaining bytes */
adds r2, #32
beq 6f
movs r12, r2, lsl #28
itt cs
ldmiacs r1!, {r3, r4, r5, r6} /* 16 bytes */
stmiacs r0!, {r3, r4, r5, r6}
itt mi
ldmiami r1!, {r7, r8} /* 8 bytes */
stmiami r0!, {r7, r8}
movs r12, r2, lsl #30
itt cs
ldrcs r3, [r1], #4 /* 4 bytes */
strcs r3, [r0], #4
itt mi
ldrhmi r4, [r1], #2 /* 2 bytes */
strhmi r4, [r0], #2
tst r2, #0x1
itt ne
ldrbne r3, [r1] /* last byte */
strbne r3, [r0]
6:
ldmfd sp!, {r4-r8}
ldmfd sp!, {r0, pc}
.cfi_endproc
END(MEMCPY_BASE_ALIGNED)

View File

@@ -0,0 +1,204 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* This code assumes it is running on a processor that supports all arm v7
* instructions and that supports neon instructions.
*/
.fpu neon
ENTRY(__memset_chk)
.cfi_startproc
cmp r2, r3
bls .L_done
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
.cfi_endproc
END(__memset_chk)
ENTRY(bzero)
.cfi_startproc
mov r2, r1
mov r1, #0
.L_done:
// Fall through to memset...
.cfi_endproc
END(bzero)
/* memset() returns its first argument. */
ENTRY(memset)
.cfi_startproc
# The neon memset only wins for less than 132.
cmp r2, #132
bhi __memset_large_copy
stmfd sp!, {r0}
.save {r0}
.cfi_def_cfa_offset 4
.cfi_rel_offset r0, 0
vdup.8 q0, r1
/* make sure we have at least 32 bytes to write */
subs r2, r2, #32
blo 2f
vmov q1, q0
1: /* The main loop writes 32 bytes at a time */
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0]!
bhs 1b
2: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 3f
// writes 16 bytes, 128-bits aligned
vst1.8 {d0, d1}, [r0]!
3: /* write up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vst1.8 {d0}, [r0]!
1: bge 2f
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
strmib r1, [r0], #1
strcsb r1, [r0], #1
strcsb r1, [r0], #1
ldmfd sp!, {r0}
bx lr
.cfi_endproc
END(memset)
ENTRY(__memset_large_copy)
.cfi_startproc
/* compute the offset to align the destination
* offset = (4-(src&3))&3 = -src & 3
*/
stmfd sp!, {r0, r4-r7, lr}
.save {r0, r4-r7, lr}
.cfi_def_cfa_offset 24
.cfi_rel_offset r0, 0
.cfi_rel_offset r4, 4
.cfi_rel_offset r5, 8
.cfi_rel_offset r6, 12
.cfi_rel_offset r7, 16
.cfi_rel_offset lr, 20
rsb r3, r0, #0
ands r3, r3, #3
cmp r3, r2
movhi r3, r2
/* splat r1 */
mov r1, r1, lsl #24
orr r1, r1, r1, lsr #8
orr r1, r1, r1, lsr #16
movs r12, r3, lsl #31
strcsb r1, [r0], #1 /* can't use strh (alignment unknown) */
strcsb r1, [r0], #1
strmib r1, [r0], #1
subs r2, r2, r3
ldmlsfd sp!, {r0, r4-r7, lr} /* return */
bxls lr
/* align the destination to a cache-line */
mov r12, r1
mov lr, r1
mov r4, r1
mov r5, r1
mov r6, r1
mov r7, r1
rsb r3, r0, #0
ands r3, r3, #0x1C
beq 3f
cmp r3, r2
andhi r3, r2, #0x1C
sub r2, r2, r3
/* conditionally writes 0 to 7 words (length in r3) */
movs r3, r3, lsl #28
stmcsia r0!, {r1, lr}
stmcsia r0!, {r1, lr}
stmmiia r0!, {r1, lr}
movs r3, r3, lsl #2
strcs r1, [r0], #4
3:
subs r2, r2, #32
mov r3, r1
bmi 2f
1: subs r2, r2, #32
stmia r0!, {r1,r3,r4,r5,r6,r7,r12,lr}
bhs 1b
2: add r2, r2, #32
/* conditionally stores 0 to 31 bytes */
movs r2, r2, lsl #28
stmcsia r0!, {r1,r3,r12,lr}
stmmiia r0!, {r1, lr}
movs r2, r2, lsl #2
strcs r1, [r0], #4
strmih r1, [r0], #2
movs r2, r2, lsl #2
strcsb r1, [r0]
ldmfd sp!, {r0, r4-r7, lr}
bx lr
.cfi_endproc
END(__memset_large_copy)
.data
error_string:
.string "memset buffer overflow"

View File

@@ -0,0 +1,548 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_ret inst
\inst {r0, r4, r5, pc}
.endm // m_ret
.macro m_scan_byte
ldrb r3, [r0]
cbz r3, strcat_r0_scan_done
add r0, #1
.endm // m_scan_byte
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcat)
// Quick check to see if src is empty.
ldrb r2, [r1]
pld [r1, #0]
cbnz r2, strcat_continue
bx lr
strcat_continue:
// To speed up really small dst strings, unroll checking the first 4 bytes.
m_push
m_scan_byte
m_scan_byte
m_scan_byte
m_scan_byte
ands r3, r0, #7
bne strcat_align_src
.p2align 2
strcat_mainloop:
ldmia r0!, {r2, r3}
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcat_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcat_zero_in_second_register
b strcat_mainloop
strcat_zero_in_first_register:
sub r0, r0, #4
strcat_zero_in_second_register:
// Check for zero in byte 0.
tst ip, #0x80
it ne
subne r0, r0, #4
bne strcat_r0_scan_done
// Check for zero in byte 1.
tst ip, #0x8000
it ne
subne r0, r0, #3
bne strcat_r0_scan_done
// Check for zero in byte 2.
tst ip, #0x800000
it ne
subne r0, r0, #2
it eq
// Zero is in byte 3.
subeq r0, r0, #1
strcat_r0_scan_done:
// Unroll the first 8 bytes that will be copied.
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_ret inst=pop
strcpy_continue:
pld [r1, #0]
ands r3, r0, #7
bne strcpy_align_dst
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_mainloop
strcpy_zero_in_first_register:
lsls lr, ip, #17
itt ne
strbne r2, [r0]
m_ret inst=popne
itt cs
strhcs r2, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
streq r2, [r0]
m_ret inst=popeq
strh r2, [r0], #2
lsr r3, r2, #16
strb r3, [r0]
m_ret inst=pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
ittt ne
stmiane r0!, {r2}
strbne r3, [r0]
m_ret inst=popne
ittt cs
strcs r2, [r0], #4
strhcs r3, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
stmiaeq r0, {r2, r3}
m_ret inst=popeq
stmia r0!, {r2}
strh r3, [r0], #2
lsr r4, r3, #16
strb r4, [r0]
m_ret inst=pop
strcpy_align_dst:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r4, [r1], #1
strb r4, [r0], #1
cmp r4, #0
it eq
m_ret inst=popeq
ldrb r5, [r1], #1
strb r5, [r0], #1
cmp r5, #0
it eq
m_ret inst=popeq
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
stmia r0!, {r2}
b strcpy_check_src_align
strcpy_complete:
m_ret inst=pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
stmia r0!, {r2}
strb r3, [r0]
strcpy_unalign_return:
m_ret inst=pop
strcpy_unalign7_copy6bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
m_ret inst=pop
strcpy_unalign7_copy7bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_ret inst=pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_unalign6_copy7bytes
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign6
strcpy_unalign6_copy7bytes:
stmia r0!, {r2}
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_ret inst=pop
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign5
strcpy_unalign_copy5bytes:
stmia r0!, {r2}
strb r4, [r0]
m_ret inst=pop
strcpy_unalign_copy6bytes:
stmia r0!, {r2}
strb r4, [r0], #1
strb r5, [r0]
m_ret inst=pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldmia r1!, {r2}
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldmia r1!, {r3}
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_ret inst=pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_unalign_copy3bytes
lsrs ip, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy4bytes:
stmia r0, {r2}
m_ret inst=pop
strcat_align_src:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcat_align_to_32
ldrb r2, [r0], #1
cbz r2, strcat_r0_update
strcat_align_to_32:
bcc strcat_align_to_64
ldrb r2, [r0], #1
cbz r2, strcat_r0_update
ldrb r2, [r0], #1
cbz r2, strcat_r0_update
strcat_align_to_64:
tst r3, #4
beq strcat_mainloop
ldr r3, [r0], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcat_zero_in_second_register
b strcat_mainloop
strcat_r0_update:
sub r0, r0, #1
b strcat_r0_scan_done
END(strcat)

View File

@@ -0,0 +1,562 @@
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
#ifdef __ARMEB__
#define S2LOMEM lsl
#define S2LOMEMEQ lsleq
#define S2HIMEM lsr
#define MSB 0x000000ff
#define LSB 0xff000000
#define BYTE0_OFFSET 24
#define BYTE1_OFFSET 16
#define BYTE2_OFFSET 8
#define BYTE3_OFFSET 0
#else /* not __ARMEB__ */
#define S2LOMEM lsr
#define S2LOMEMEQ lsreq
#define S2HIMEM lsl
#define BYTE0_OFFSET 0
#define BYTE1_OFFSET 8
#define BYTE2_OFFSET 16
#define BYTE3_OFFSET 24
#define MSB 0xff000000
#define LSB 0x000000ff
#endif /* not __ARMEB__ */
.syntax unified
#if defined (__thumb__)
.thumb
.thumb_func
#endif
ENTRY(strcmp)
/* Use LDRD whenever possible. */
/* The main thing to look out for when comparing large blocks is that
the loads do not cross a page boundary when loading past the index
of the byte with the first difference or the first string-terminator.
For example, if the strings are identical and the string-terminator
is at index k, byte by byte comparison will not load beyond address
s1+k and s2+k; word by word comparison may load up to 3 bytes beyond
k; double word - up to 7 bytes. If the load of these bytes crosses
a page boundary, it might cause a memory fault (if the page is not mapped)
that would not have happened in byte by byte comparison.
If an address is (double) word aligned, then a load of a (double) word
from that address will not cross a page boundary.
Therefore, the algorithm below considers word and double-word alignment
of strings separately. */
/* High-level description of the algorithm.
* The fast path: if both strings are double-word aligned,
use LDRD to load two words from each string in every loop iteration.
* If the strings have the same offset from a word boundary,
use LDRB to load and compare byte by byte until
the first string is aligned to a word boundary (at most 3 bytes).
This is optimized for quick return on short unaligned strings.
* If the strings have the same offset from a double-word boundary,
use LDRD to load two words from each string in every loop iteration, as in the fast path.
* If the strings do not have the same offset from a double-word boundary,
load a word from the second string before the loop to initialize the queue.
Use LDRD to load two words from every string in every loop iteration.
Inside the loop, load the second word from the second string only after comparing
the first word, using the queued value, to guarantee safety across page boundaries.
* If the strings do not have the same offset from a word boundary,
use LDR and a shift queue. Order of loads and comparisons matters,
similarly to the previous case.
* Use UADD8 and SEL to compare words, and use REV and CLZ to compute the return value.
* The only difference between ARM and Thumb modes is the use of CBZ instruction.
* The only difference between big and little endian is the use of REV in little endian
to compute the return value, instead of MOV.
*/
.macro m_cbz reg label
#ifdef __thumb2__
cbz \reg, \label
#else /* not defined __thumb2__ */
cmp \reg, #0
beq \label
#endif /* not defined __thumb2__ */
.endm /* m_cbz */
.macro m_cbnz reg label
#ifdef __thumb2__
cbnz \reg, \label
#else /* not defined __thumb2__ */
cmp \reg, #0
bne \label
#endif /* not defined __thumb2__ */
.endm /* m_cbnz */
.macro init
/* Macro to save temporary registers and prepare magic values. */
subs sp, sp, #16
.cfi_def_cfa_offset 16
strd r4, r5, [sp, #8]
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
strd r6, r7, [sp]
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
mvn r6, #0 /* all F */
mov r7, #0 /* all 0 */
.endm /* init */
.macro magic_compare_and_branch w1 w2 label
/* Macro to compare registers w1 and w2 and conditionally branch to label. */
cmp \w1, \w2 /* Are w1 and w2 the same? */
magic_find_zero_bytes \w1
it eq
cmpeq ip, #0 /* Is there a zero byte in w1? */
bne \label
.endm /* magic_compare_and_branch */
.macro magic_find_zero_bytes w1
/* Macro to find all-zero bytes in w1, result is in ip. */
#if (defined (__ARM_FEATURE_DSP))
uadd8 ip, \w1, r6
sel ip, r7, r6
#else /* not defined (__ARM_FEATURE_DSP) */
/* __ARM_FEATURE_DSP is not defined for some Cortex-M processors.
Coincidently, these processors only have Thumb-2 mode, where we can use the
the (large) magic constant available directly as an immediate in instructions.
Note that we cannot use the magic constant in ARM mode, where we need
to create the constant in a register. */
sub ip, \w1, #0x01010101
bic ip, ip, \w1
and ip, ip, #0x80808080
#endif /* not defined (__ARM_FEATURE_DSP) */
.endm /* magic_find_zero_bytes */
.macro setup_return w1 w2
#ifdef __ARMEB__
mov r1, \w1
mov r2, \w2
#else /* not __ARMEB__ */
rev r1, \w1
rev r2, \w2
#endif /* not __ARMEB__ */
.endm /* setup_return */
.cfi_startproc
pld [r0, #0]
pld [r1, #0]
/* Are both strings double-word aligned? */
orr ip, r0, r1
tst ip, #7
bne .L_do_align
/* Fast path. */
.save {r4-r7}
init
.L_doubleword_aligned:
/* Get here when the strings to compare are double-word aligned. */
/* Compare two words in every iteration. */
.p2align 2
2:
pld [r0, #16]
pld [r1, #16]
/* Load the next double-word from each string. */
ldrd r2, r3, [r0], #8
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r2, w2=r4, label=.L_return_24
magic_compare_and_branch w1=r3, w2=r5, label=.L_return_35
b 2b
.L_do_align:
/* Is the first string word-aligned? */
ands ip, r0, #3
beq .L_word_aligned_r0
/* Fast compare byte by byte until the first string is word-aligned. */
/* The offset of r0 from a word boundary is in ip. Thus, the number of bytes
to read until the next word boundary is 4-ip. */
bic r0, r0, #3
ldr r2, [r0], #4
lsls ip, ip, #31
beq .L_byte2
bcs .L_byte3
.L_byte1:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE1_OFFSET
subs ip, r3, ip
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
.L_byte2:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE2_OFFSET
subs ip, r3, ip
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
.L_byte3:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE3_OFFSET
subs ip, r3, ip
bne .L_fast_return
m_cbnz reg=r3, label=.L_word_aligned_r0
.L_fast_return:
mov r0, ip
bx lr
.L_word_aligned_r0:
init
/* The first string is word-aligned. */
/* Is the second string word-aligned? */
ands ip, r1, #3
bne .L_strcmp_unaligned
.L_word_aligned:
/* The strings are word-aligned. */
/* Is the first string double-word aligned? */
tst r0, #4
beq .L_doubleword_aligned_r0
/* If r0 is not double-word aligned yet, align it by loading
and comparing the next word from each string. */
ldr r2, [r0], #4
ldr r4, [r1], #4
magic_compare_and_branch w1=r2 w2=r4 label=.L_return_24
.L_doubleword_aligned_r0:
/* Get here when r0 is double-word aligned. */
/* Is r1 doubleword_aligned? */
tst r1, #4
beq .L_doubleword_aligned
/* Get here when the strings to compare are word-aligned,
r0 is double-word aligned, but r1 is not double-word aligned. */
/* Initialize the queue. */
ldr r5, [r1], #4
/* Compare two words in every iteration. */
.p2align 2
3:
pld [r0, #16]
pld [r1, #16]
/* Load the next double-word from each string and compare. */
ldrd r2, r3, [r0], #8
magic_compare_and_branch w1=r2 w2=r5 label=.L_return_25
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r3 w2=r4 label=.L_return_34
b 3b
.macro miscmp_word offsetlo offsethi
/* Macro to compare misaligned strings. */
/* r0, r1 are word-aligned, and at least one of the strings
is not double-word aligned. */
/* Compare one word in every loop iteration. */
/* OFFSETLO is the original bit-offset of r1 from a word-boundary,
OFFSETHI is 32 - OFFSETLO (i.e., offset from the next word). */
/* Initialize the shift queue. */
ldr r5, [r1], #4
/* Compare one word from each string in every loop iteration. */
.p2align 2
7:
ldr r3, [r0], #4
S2LOMEM r5, r5, #\offsetlo
magic_find_zero_bytes w1=r3
cmp r7, ip, S2HIMEM #\offsetlo
and r2, r3, r6, S2LOMEM #\offsetlo
it eq
cmpeq r2, r5
bne .L_return_25
ldr r5, [r1], #4
cmp ip, #0
eor r3, r2, r3
S2HIMEM r2, r5, #\offsethi
it eq
cmpeq r3, r2
bne .L_return_32
b 7b
.endm /* miscmp_word */
.L_return_32:
setup_return w1=r3, w2=r2
b .L_do_return
.L_return_34:
setup_return w1=r3, w2=r4
b .L_do_return
.L_return_25:
setup_return w1=r2, w2=r5
b .L_do_return
.L_return_35:
setup_return w1=r3, w2=r5
b .L_do_return
.L_return_24:
setup_return w1=r2, w2=r4
.L_do_return:
#ifdef __ARMEB__
mov r0, ip
#else /* not __ARMEB__ */
rev r0, ip
#endif /* not __ARMEB__ */
/* Restore temporaries early, before computing the return value. */
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
/* There is a zero or a different byte between r1 and r2. */
/* r0 contains a mask of all-zero bytes in r1. */
/* Using r0 and not ip here because cbz requires low register. */
m_cbz reg=r0, label=.L_compute_return_value
clz r0, r0
/* r0 contains the number of bits on the left of the first all-zero byte in r1. */
rsb r0, r0, #24
/* Here, r0 contains the number of bits on the right of the first all-zero byte in r1. */
lsr r1, r1, r0
lsr r2, r2, r0
.L_compute_return_value:
movs r0, #1
cmp r1, r2
/* The return value is computed as follows.
If r1>r2 then (C==1 and Z==0) and LS doesn't hold and r0 is #1 at return.
If r1<r2 then (C==0 and Z==0) and we execute SBC with carry_in=0,
which means r0:=r0-r0-1 and r0 is #-1 at return.
If r1=r2 then (C==1 and Z==1) and we execute SBC with carry_in=1,
which means r0:=r0-r0 and r0 is #0 at return.
(C==0 and Z==1) cannot happen because the carry bit is "not borrow". */
it ls
sbcls r0, r0, r0
bx lr
/* The code from the previous version of strcmp.S handles all of the
* cases where the first string and seconds string cannot both be
* aligned to a word boundary faster than the new algorithm. See
* bionic/libc/arch-arm/cortex-a15/bionic/strcmp.S for the unedited
* version of the code.
*/
.L_strcmp_unaligned:
wp1 .req r0
wp2 .req r1
b1 .req r2
w1 .req r4
w2 .req r5
t1 .req ip
@ r3 is scratch
2:
mov b1, #1
orr b1, b1, b1, lsl #8
orr b1, b1, b1, lsl #16
and t1, wp2, #3
bic wp2, wp2, #3
ldr w1, [wp1], #4
ldr w2, [wp2], #4
cmp t1, #2
beq 2f
bhi 3f
/* Critical inner Loop: Block with 3 bytes initial overlap */
.p2align 2
1:
bic t1, w1, #MSB
cmp t1, w2, S2LOMEM #8
sub r3, w1, b1
bic r3, r3, w1
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, S2HIMEM #24
bne 6f
ldr w1, [wp1], #4
b 1b
4:
S2LOMEM w2, w2, #8
b 8f
5:
#ifdef __ARMEB__
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #0xff000000
itt ne
tstne w1, #0x00ff0000
tstne w1, #0x0000ff00
beq 7f
#else
bics r3, r3, #0xff000000
bne 7f
#endif
ldrb w2, [wp2]
S2LOMEM t1, w1, #24
#ifdef __ARMEB__
lsl w2, w2, #24
#endif
b 8f
6:
S2LOMEM t1, w1, #24
and w2, w2, #LSB
b 8f
/* Critical inner Loop: Block with 2 bytes initial overlap */
.p2align 2
2:
S2HIMEM t1, w1, #16
sub r3, w1, b1
S2LOMEM t1, t1, #16
bic r3, r3, w1
cmp t1, w2, S2LOMEM #16
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, S2HIMEM #16
bne 6f
ldr w1, [wp1], #4
b 2b
5:
#ifdef __ARMEB__
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #0xff000000
it ne
tstne w1, #0x00ff0000
beq 7f
#else
lsls r3, r3, #16
bne 7f
#endif
ldrh w2, [wp2]
S2LOMEM t1, w1, #16
#ifdef __ARMEB__
lsl w2, w2, #16
#endif
b 8f
6:
S2HIMEM w2, w2, #16
S2LOMEM t1, w1, #16
4:
S2LOMEM w2, w2, #16
b 8f
/* Critical inner Loop: Block with 1 byte initial overlap */
.p2align 2
3:
and t1, w1, #LSB
cmp t1, w2, S2LOMEM #24
sub r3, w1, b1
bic r3, r3, w1
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, S2HIMEM #8
bne 6f
ldr w1, [wp1], #4
b 3b
4:
S2LOMEM w2, w2, #24
b 8f
5:
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #LSB
beq 7f
ldr w2, [wp2], #4
6:
S2LOMEM t1, w1, #8
bic w2, w2, #MSB
b 8f
7:
mov r0, #0
/* Restore registers and stack. */
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
bx lr
8:
and r2, t1, #LSB
and r0, w2, #LSB
cmp r0, #1
it cs
cmpcs r0, r2
itt eq
S2LOMEMEQ t1, t1, #8
S2LOMEMEQ w2, w2, #8
beq 8b
sub r0, r2, r0
/* Restore registers and stack. */
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
bx lr
.cfi_endproc
END(strcmp)

View File

@@ -0,0 +1,456 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
.macro m_push
push {r0, r4, r5, lr}
.endm // m_push
.macro m_ret inst
\inst {r0, r4, r5, pc}
.endm // m_ret
.macro m_copy_byte reg, cmd, label
ldrb \reg, [r1], #1
strb \reg, [r0], #1
\cmd \reg, \label
.endm // m_copy_byte
ENTRY(strcpy)
// Unroll the first 8 bytes that will be copied.
m_push
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r2, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r3, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r4, cmd=cbz, label=strcpy_finish
m_copy_byte reg=r5, cmd=cbnz, label=strcpy_continue
strcpy_finish:
m_ret inst=pop
strcpy_continue:
pld [r1, #0]
ands r3, r0, #7
bne strcpy_align_dst
strcpy_check_src_align:
// At this point dst is aligned to a double word, check if src
// is also aligned to a double word.
ands r3, r1, #7
bne strcpy_unaligned_copy
.p2align 2
strcpy_mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_mainloop
strcpy_zero_in_first_register:
lsls lr, ip, #17
itt ne
strbne r2, [r0]
m_ret inst=popne
itt cs
strhcs r2, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
streq r2, [r0]
m_ret inst=popeq
strh r2, [r0], #2
lsr r3, r2, #16
strb r3, [r0]
m_ret inst=pop
strcpy_zero_in_second_register:
lsls lr, ip, #17
ittt ne
stmiane r0!, {r2}
strbne r3, [r0]
m_ret inst=popne
ittt cs
strcs r2, [r0], #4
strhcs r3, [r0]
m_ret inst=popcs
lsls ip, ip, #1
itt eq
stmiaeq r0, {r2, r3}
m_ret inst=popeq
stmia r0!, {r2}
strh r3, [r0], #2
lsr r4, r3, #16
strb r4, [r0]
m_ret inst=pop
strcpy_align_dst:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq strcpy_align_to_32
ldrb r2, [r1], #1
strb r2, [r0], #1
cbz r2, strcpy_complete
strcpy_align_to_32:
bcc strcpy_align_to_64
ldrb r4, [r1], #1
strb r4, [r0], #1
cmp r4, #0
it eq
m_ret inst=popeq
ldrb r5, [r1], #1
strb r5, [r0], #1
cmp r5, #0
it eq
m_ret inst=popeq
strcpy_align_to_64:
tst r3, #4
beq strcpy_check_src_align
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
stmia r0!, {r2}
b strcpy_check_src_align
strcpy_complete:
m_ret inst=pop
strcpy_unaligned_copy:
// Dst is aligned to a double word, while src is at an unknown alignment.
// There are 7 different versions of the unaligned copy code
// to prevent overreading the src. The mainloop of every single version
// will store 64 bits per loop. The difference is how much of src can
// be read without potentially crossing a page boundary.
tbb [pc, r3]
strcpy_unaligned_branchtable:
.byte 0
.byte ((strcpy_unalign7 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign6 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign5 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign4 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign3 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign2 - strcpy_unaligned_branchtable)/2)
.byte ((strcpy_unalign1 - strcpy_unaligned_branchtable)/2)
.p2align 2
// Can read 7 bytes before possibly crossing a page.
strcpy_unalign7:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r3, [r1]
cbz r3, strcpy_unalign7_copy5bytes
ldrb r4, [r1, #1]
cbz r4, strcpy_unalign7_copy6bytes
ldrb r5, [r1, #2]
cbz r5, strcpy_unalign7_copy7bytes
ldr r3, [r1], #4
pld [r1, #64]
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign7
strcpy_unalign7_copy5bytes:
stmia r0!, {r2}
strb r3, [r0]
strcpy_unalign_return:
m_ret inst=pop
strcpy_unalign7_copy6bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
m_ret inst=pop
strcpy_unalign7_copy7bytes:
stmia r0!, {r2}
strb r3, [r0], #1
strb r4, [r0], #1
strb r5, [r0], #1
m_ret inst=pop
.p2align 2
// Can read 6 bytes before possibly crossing a page.
strcpy_unalign6:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldrb r5, [r1, #1]
cbz r5, strcpy_unalign_copy6bytes
ldr r3, [r1], #4
pld [r1, #64]
tst r3, #0xff0000
beq strcpy_unalign6_copy7bytes
lsrs ip, r3, #24
stmia r0!, {r2, r3}
beq strcpy_unalign_return
b strcpy_unalign6
strcpy_unalign6_copy7bytes:
stmia r0!, {r2}
strh r3, [r0], #2
lsr r3, #16
strb r3, [r0]
m_ret inst=pop
.p2align 2
// Can read 5 bytes before possibly crossing a page.
strcpy_unalign5:
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldrb r4, [r1]
cbz r4, strcpy_unalign_copy5bytes
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign5
strcpy_unalign_copy5bytes:
stmia r0!, {r2}
strb r4, [r0]
m_ret inst=pop
strcpy_unalign_copy6bytes:
stmia r0!, {r2}
strb r4, [r0], #1
strb r5, [r0]
m_ret inst=pop
.p2align 2
// Can read 4 bytes before possibly crossing a page.
strcpy_unalign4:
ldmia r1!, {r2}
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
ldmia r1!, {r3}
pld [r1, #64]
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign4
.p2align 2
// Can read 3 bytes before possibly crossing a page.
strcpy_unalign3:
ldrb r2, [r1]
cbz r2, strcpy_unalign3_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign3_copy2bytes
ldrb r4, [r1, #2]
cbz r4, strcpy_unalign3_copy3bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
lsrs lr, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign3
strcpy_unalign3_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign3_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign3_copy3bytes:
strb r2, [r0], #1
strb r3, [r0], #1
strb r4, [r0]
m_ret inst=pop
.p2align 2
// Can read 2 bytes before possibly crossing a page.
strcpy_unalign2:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldrb r3, [r1, #1]
cbz r3, strcpy_unalign_copy2bytes
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
tst r2, #0xff0000
beq strcpy_unalign_copy3bytes
lsrs ip, r2, #24
beq strcpy_unalign_copy4bytes
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign2
.p2align 2
// Can read 1 byte before possibly crossing a page.
strcpy_unalign1:
ldrb r2, [r1]
cbz r2, strcpy_unalign_copy1byte
ldr r2, [r1], #4
ldr r3, [r1], #4
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne strcpy_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne strcpy_zero_in_second_register
stmia r0!, {r2, r3}
b strcpy_unalign1
strcpy_unalign_copy1byte:
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy2bytes:
strb r2, [r0], #1
strb r3, [r0]
m_ret inst=pop
strcpy_unalign_copy3bytes:
strh r2, [r0], #2
lsr r2, #16
strb r2, [r0]
m_ret inst=pop
strcpy_unalign_copy4bytes:
stmia r0, {r2}
m_ret inst=pop
END(strcpy)

View File

@@ -0,0 +1,167 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
.syntax unified
.thumb
.thumb_func
ENTRY(strlen)
pld [r0, #0]
mov r1, r0
ands r3, r0, #7
bne align_src
.p2align 2
mainloop:
ldmia r1!, {r2, r3}
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne zero_in_second_register
b mainloop
zero_in_first_register:
sub r0, r1, r0
// Check for zero in byte 0.
lsls r2, ip, #17
beq check_byte1_reg1
sub r0, r0, #8
bx lr
check_byte1_reg1:
bcc check_byte2_reg1
sub r0, r0, #7
bx lr
check_byte2_reg1:
// Check for zero in byte 2.
tst ip, #0x800000
itt ne
subne r0, r0, #6
bxne lr
sub r0, r0, #5
bx lr
zero_in_second_register:
sub r0, r1, r0
// Check for zero in byte 0.
lsls r2, ip, #17
beq check_byte1_reg2
sub r0, r0, #4
bx lr
check_byte1_reg2:
bcc check_byte2_reg2
sub r0, r0, #3
bx lr
check_byte2_reg2:
// Check for zero in byte 2.
tst ip, #0x800000
itt ne
subne r0, r0, #2
bxne lr
sub r0, r0, #1
bx lr
align_src:
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq align_to_32
ldrb r2, [r1], #1
cbz r2, done
align_to_32:
bcc align_to_64
ldrb r2, [r1], #1
cbz r2, done
ldrb r2, [r1], #1
cbz r2, done
align_to_64:
tst r3, #4
beq mainloop
ldr r2, [r1], #4
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne zero_in_second_register
b mainloop
done:
sub r0, r1, r0
sub r0, r0, #1
bx lr
END(strlen)

View File

@@ -0,0 +1,10 @@
$(call libc-add-cpu-variant-src,MEMCPY,arch-arm/cortex-a9/bionic/memcpy.S)
$(call libc-add-cpu-variant-src,MEMSET,arch-arm/cortex-a9/bionic/memset.S)
$(call libc-add-cpu-variant-src,STRCAT,arch-arm/cortex-a9/bionic/strcat.S)
$(call libc-add-cpu-variant-src,STRCMP,arch-arm/cortex-a9/bionic/strcmp.S)
$(call libc-add-cpu-variant-src,STRCPY,arch-arm/cortex-a9/bionic/strcpy.S)
$(call libc-add-cpu-variant-src,STRLEN,arch-arm/cortex-a9/bionic/strlen.S)
$(call libc-add-cpu-variant-src,__STRCAT_CHK,arch-arm/cortex-a9/bionic/__strcat_chk.S)
$(call libc-add-cpu-variant-src,__STRCPY_CHK,arch-arm/cortex-a9/bionic/__strcpy_chk.S)
include bionic/libc/arch-arm/generic/generic.mk

View File

@@ -0,0 +1,404 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* Optimized memcpy() for ARM.
*
* note that memcpy() always returns the destination pointer,
* so we have to preserve R0.
*/
ENTRY(__memcpy_chk)
cmp r2, r3
bgt fortify_check_failed
// Fall through to memcpy...
END(__memcpy_chk)
ENTRY(memcpy)
/* The stack must always be 64-bits aligned to be compliant with the
* ARM ABI. Since we have to save R0, we might as well save R4
* which we can use for better pipelining of the reads below
*/
.save {r0, r4, lr}
stmfd sp!, {r0, r4, lr}
/* Making room for r5-r11 which will be spilled later */
.pad #28
sub sp, sp, #28
// preload the destination because we'll align it to a cache line
// with small writes. Also start the source "pump".
PLD (r0, #0)
PLD (r1, #0)
PLD (r1, #32)
/* it simplifies things to take care of len<4 early */
cmp r2, #4
blo copy_last_3_and_return
/* compute the offset to align the source
* offset = (4-(src&3))&3 = -src & 3
*/
rsb r3, r1, #0
ands r3, r3, #3
beq src_aligned
/* align source to 32 bits. We need to insert 2 instructions between
* a ldr[b|h] and str[b|h] because byte and half-word instructions
* stall 2 cycles.
*/
movs r12, r3, lsl #31
sub r2, r2, r3 /* we know that r3 <= r2 because r2 >= 4 */
ldrmib r3, [r1], #1
ldrcsb r4, [r1], #1
ldrcsb r12,[r1], #1
strmib r3, [r0], #1
strcsb r4, [r0], #1
strcsb r12,[r0], #1
src_aligned:
/* see if src and dst are aligned together (congruent) */
eor r12, r0, r1
tst r12, #3
bne non_congruent
/* Use post-incriment mode for stm to spill r5-r11 to reserved stack
* frame. Don't update sp.
*/
stmea sp, {r5-r11}
/* align the destination to a cache-line */
rsb r3, r0, #0
ands r3, r3, #0x1C
beq congruent_aligned32
cmp r3, r2
andhi r3, r2, #0x1C
/* conditionally copies 0 to 7 words (length in r3) */
movs r12, r3, lsl #28
ldmcsia r1!, {r4, r5, r6, r7} /* 16 bytes */
ldmmiia r1!, {r8, r9} /* 8 bytes */
stmcsia r0!, {r4, r5, r6, r7}
stmmiia r0!, {r8, r9}
tst r3, #0x4
ldrne r10,[r1], #4 /* 4 bytes */
strne r10,[r0], #4
sub r2, r2, r3
congruent_aligned32:
/*
* here source is aligned to 32 bytes.
*/
cached_aligned32:
subs r2, r2, #32
blo less_than_32_left
/*
* We preload a cache-line up to 64 bytes ahead. On the 926, this will
* stall only until the requested world is fetched, but the linefill
* continues in the the background.
* While the linefill is going, we write our previous cache-line
* into the write-buffer (which should have some free space).
* When the linefill is done, the writebuffer will
* start dumping its content into memory
*
* While all this is going, we then load a full cache line into
* 8 registers, this cache line should be in the cache by now
* (or partly in the cache).
*
* This code should work well regardless of the source/dest alignment.
*
*/
// Align the preload register to a cache-line because the cpu does
// "critical word first" (the first word requested is loaded first).
bic r12, r1, #0x1F
add r12, r12, #64
1: ldmia r1!, { r4-r11 }
PLD (r12, #64)
subs r2, r2, #32
// NOTE: if r12 is more than 64 ahead of r1, the following ldrhi
// for ARM9 preload will not be safely guarded by the preceding subs.
// When it is safely guarded the only possibility to have SIGSEGV here
// is because the caller overstates the length.
ldrhi r3, [r12], #32 /* cheap ARM9 preload */
stmia r0!, { r4-r11 }
bhs 1b
add r2, r2, #32
less_than_32_left:
/*
* less than 32 bytes left at this point (length in r2)
*/
/* skip all this if there is nothing to do, which should
* be a common case (if not executed the code below takes
* about 16 cycles)
*/
tst r2, #0x1F
beq 1f
/* conditionnaly copies 0 to 31 bytes */
movs r12, r2, lsl #28
ldmcsia r1!, {r4, r5, r6, r7} /* 16 bytes */
ldmmiia r1!, {r8, r9} /* 8 bytes */
stmcsia r0!, {r4, r5, r6, r7}
stmmiia r0!, {r8, r9}
movs r12, r2, lsl #30
ldrcs r3, [r1], #4 /* 4 bytes */
ldrmih r4, [r1], #2 /* 2 bytes */
strcs r3, [r0], #4
strmih r4, [r0], #2
tst r2, #0x1
ldrneb r3, [r1] /* last byte */
strneb r3, [r0]
/* we're done! restore everything and return */
1: ldmfd sp!, {r5-r11}
ldmfd sp!, {r0, r4, lr}
bx lr
/********************************************************************/
non_congruent:
/*
* here source is aligned to 4 bytes
* but destination is not.
*
* in the code below r2 is the number of bytes read
* (the number of bytes written is always smaller, because we have
* partial words in the shift queue)
*/
cmp r2, #4
blo copy_last_3_and_return
/* Use post-incriment mode for stm to spill r5-r11 to reserved stack
* frame. Don't update sp.
*/
stmea sp, {r5-r11}
/* compute shifts needed to align src to dest */
rsb r5, r0, #0
and r5, r5, #3 /* r5 = # bytes in partial words */
mov r12, r5, lsl #3 /* r12 = right */
rsb lr, r12, #32 /* lr = left */
/* read the first word */
ldr r3, [r1], #4
sub r2, r2, #4
/* write a partial word (0 to 3 bytes), such that destination
* becomes aligned to 32 bits (r5 = nb of words to copy for alignment)
*/
movs r5, r5, lsl #31
strmib r3, [r0], #1
movmi r3, r3, lsr #8
strcsb r3, [r0], #1
movcs r3, r3, lsr #8
strcsb r3, [r0], #1
movcs r3, r3, lsr #8
cmp r2, #4
blo partial_word_tail
/* Align destination to 32 bytes (cache line boundary) */
1: tst r0, #0x1c
beq 2f
ldr r5, [r1], #4
sub r2, r2, #4
orr r4, r3, r5, lsl lr
mov r3, r5, lsr r12
str r4, [r0], #4
cmp r2, #4
bhs 1b
blo partial_word_tail
/* copy 32 bytes at a time */
2: subs r2, r2, #32
blo less_than_thirtytwo
/* Use immediate mode for the shifts, because there is an extra cycle
* for register shifts, which could account for up to 50% of
* performance hit.
*/
cmp r12, #24
beq loop24
cmp r12, #8
beq loop8
loop16:
ldr r12, [r1], #4
1: mov r4, r12
ldmia r1!, { r5,r6,r7, r8,r9,r10,r11}
PLD (r1, #64)
subs r2, r2, #32
ldrhs r12, [r1], #4
orr r3, r3, r4, lsl #16
mov r4, r4, lsr #16
orr r4, r4, r5, lsl #16
mov r5, r5, lsr #16
orr r5, r5, r6, lsl #16
mov r6, r6, lsr #16
orr r6, r6, r7, lsl #16
mov r7, r7, lsr #16
orr r7, r7, r8, lsl #16
mov r8, r8, lsr #16
orr r8, r8, r9, lsl #16
mov r9, r9, lsr #16
orr r9, r9, r10, lsl #16
mov r10, r10, lsr #16
orr r10, r10, r11, lsl #16
stmia r0!, {r3,r4,r5,r6, r7,r8,r9,r10}
mov r3, r11, lsr #16
bhs 1b
b less_than_thirtytwo
loop8:
ldr r12, [r1], #4
1: mov r4, r12
ldmia r1!, { r5,r6,r7, r8,r9,r10,r11}
PLD (r1, #64)
subs r2, r2, #32
ldrhs r12, [r1], #4
orr r3, r3, r4, lsl #24
mov r4, r4, lsr #8
orr r4, r4, r5, lsl #24
mov r5, r5, lsr #8
orr r5, r5, r6, lsl #24
mov r6, r6, lsr #8
orr r6, r6, r7, lsl #24
mov r7, r7, lsr #8
orr r7, r7, r8, lsl #24
mov r8, r8, lsr #8
orr r8, r8, r9, lsl #24
mov r9, r9, lsr #8
orr r9, r9, r10, lsl #24
mov r10, r10, lsr #8
orr r10, r10, r11, lsl #24
stmia r0!, {r3,r4,r5,r6, r7,r8,r9,r10}
mov r3, r11, lsr #8
bhs 1b
b less_than_thirtytwo
loop24:
ldr r12, [r1], #4
1: mov r4, r12
ldmia r1!, { r5,r6,r7, r8,r9,r10,r11}
PLD (r1, #64)
subs r2, r2, #32
ldrhs r12, [r1], #4
orr r3, r3, r4, lsl #8
mov r4, r4, lsr #24
orr r4, r4, r5, lsl #8
mov r5, r5, lsr #24
orr r5, r5, r6, lsl #8
mov r6, r6, lsr #24
orr r6, r6, r7, lsl #8
mov r7, r7, lsr #24
orr r7, r7, r8, lsl #8
mov r8, r8, lsr #24
orr r8, r8, r9, lsl #8
mov r9, r9, lsr #24
orr r9, r9, r10, lsl #8
mov r10, r10, lsr #24
orr r10, r10, r11, lsl #8
stmia r0!, {r3,r4,r5,r6, r7,r8,r9,r10}
mov r3, r11, lsr #24
bhs 1b
less_than_thirtytwo:
/* copy the last 0 to 31 bytes of the source */
rsb r12, lr, #32 /* we corrupted r12, recompute it */
add r2, r2, #32
cmp r2, #4
blo partial_word_tail
1: ldr r5, [r1], #4
sub r2, r2, #4
orr r4, r3, r5, lsl lr
mov r3, r5, lsr r12
str r4, [r0], #4
cmp r2, #4
bhs 1b
partial_word_tail:
/* we have a partial word in the input buffer */
movs r5, lr, lsl #(31-3)
strmib r3, [r0], #1
movmi r3, r3, lsr #8
strcsb r3, [r0], #1
movcs r3, r3, lsr #8
strcsb r3, [r0], #1
/* Refill spilled registers from the stack. Don't update sp. */
ldmfd sp, {r5-r11}
copy_last_3_and_return:
movs r2, r2, lsl #31 /* copy remaining 0, 1, 2 or 3 bytes */
ldrmib r2, [r1], #1
ldrcsb r3, [r1], #1
ldrcsb r12,[r1]
strmib r2, [r0], #1
strcsb r3, [r0], #1
strcsb r12,[r0]
/* we're done! restore sp and spilled registers and return */
add sp, sp, #28
ldmfd sp!, {r0, r4, lr}
bx lr
// Only reached when the __memcpy_chk check fails.
fortify_check_failed:
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
END(memcpy)
.data
error_string:
.string "memcpy buffer overflow"

View File

@@ -0,0 +1,133 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
/*
* Optimized memset() for ARM.
*
* memset() returns its first argument.
*/
ENTRY(__memset_chk)
cmp r2, r3
bls done
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
END(__memset_chk)
ENTRY(bzero)
mov r2, r1
mov r1, #0
done:
// Fall through to memset...
END(bzero)
ENTRY(memset)
/* compute the offset to align the destination
* offset = (4-(src&3))&3 = -src & 3
*/
.save {r0, r4-r7, lr}
stmfd sp!, {r0, r4-r7, lr}
rsb r3, r0, #0
ands r3, r3, #3
cmp r3, r2
movhi r3, r2
/* splat r1 */
mov r1, r1, lsl #24
orr r1, r1, r1, lsr #8
orr r1, r1, r1, lsr #16
movs r12, r3, lsl #31
strcsb r1, [r0], #1 /* can't use strh (alignment unknown) */
strcsb r1, [r0], #1
strmib r1, [r0], #1
subs r2, r2, r3
ldmlsfd sp!, {r0, r4-r7, lr} /* return */
bxls lr
/* align the destination to a cache-line */
mov r12, r1
mov lr, r1
mov r4, r1
mov r5, r1
mov r6, r1
mov r7, r1
rsb r3, r0, #0
ands r3, r3, #0x1C
beq 3f
cmp r3, r2
andhi r3, r2, #0x1C
sub r2, r2, r3
/* conditionally writes 0 to 7 words (length in r3) */
movs r3, r3, lsl #28
stmcsia r0!, {r1, lr}
stmcsia r0!, {r1, lr}
stmmiia r0!, {r1, lr}
movs r3, r3, lsl #2
strcs r1, [r0], #4
3:
subs r2, r2, #32
mov r3, r1
bmi 2f
1: subs r2, r2, #32
stmia r0!, {r1,r3,r4,r5,r6,r7,r12,lr}
bhs 1b
2: add r2, r2, #32
/* conditionally stores 0 to 31 bytes */
movs r2, r2, lsl #28
stmcsia r0!, {r1,r3,r12,lr}
stmmiia r0!, {r1, lr}
movs r2, r2, lsl #2
strcs r1, [r0], #4
strmih r1, [r0], #2
movs r2, r2, lsl #2
strcsb r1, [r0]
ldmfd sp!, {r0, r4-r7, lr}
bx lr
END(memset)
.data
error_string:
.string "memset buffer overflow"

View File

@@ -0,0 +1,317 @@
/*
* Copyright (c) 2011 The Android Open Source Project
* Copyright (c) 2008 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
.text
#ifdef __ARMEB__
#define SHFT2LSB lsl
#define SHFT2LSBEQ lsleq
#define SHFT2MSB lsr
#define SHFT2MSBEQ lsreq
#define MSB 0x000000ff
#define LSB 0xff000000
#else
#define SHFT2LSB lsr
#define SHFT2LSBEQ lsreq
#define SHFT2MSB lsl
#define SHFT2MSBEQ lsleq
#define MSB 0xff000000
#define LSB 0x000000ff
#endif
#define magic1(REG) REG
#define magic2(REG) REG, lsl #7
ENTRY(strcmp)
PLD(r0, #0)
PLD(r1, #0)
eor r2, r0, r1
tst r2, #3
/* Strings not at same byte offset from a word boundary. */
bne .Lstrcmp_unaligned
ands r2, r0, #3
bic r0, r0, #3
bic r1, r1, #3
ldr ip, [r0], #4
it eq
ldreq r3, [r1], #4
beq 1f
/* Although s1 and s2 have identical initial alignment, they are
* not currently word aligned. Rather than comparing bytes,
* make sure that any bytes fetched from before the addressed
* bytes are forced to 0xff. Then they will always compare
* equal.
*/
eor r2, r2, #3
lsl r2, r2, #3
mvn r3, #MSB
SHFT2LSB r2, r3, r2
ldr r3, [r1], #4
orr ip, ip, r2
orr r3, r3, r2
1:
/* Load the 'magic' constant 0x01010101. */
str r4, [sp, #-4]!
mov r4, #1
orr r4, r4, r4, lsl #8
orr r4, r4, r4, lsl #16
.p2align 2
4:
PLD(r0, #8)
PLD(r1, #8)
sub r2, ip, magic1(r4)
cmp ip, r3
itttt eq
/* check for any zero bytes in first word */
biceq r2, r2, ip
tsteq r2, magic2(r4)
ldreq ip, [r0], #4
ldreq r3, [r1], #4
beq 4b
2:
/* There's a zero or a different byte in the word */
SHFT2MSB r0, ip, #24
SHFT2LSB ip, ip, #8
cmp r0, #1
it cs
cmpcs r0, r3, SHFT2MSB #24
it eq
SHFT2LSBEQ r3, r3, #8
beq 2b
/* On a big-endian machine, r0 contains the desired byte in bits
* 0-7; on a little-endian machine they are in bits 24-31. In
* both cases the other bits in r0 are all zero. For r3 the
* interesting byte is at the other end of the word, but the
* other bits are not necessarily zero. We need a signed result
* representing the differnece in the unsigned bytes, so for the
* little-endian case we can't just shift the interesting bits up.
*/
#ifdef __ARMEB__
sub r0, r0, r3, lsr #24
#else
and r3, r3, #255
/* No RSB instruction in Thumb2 */
#ifdef __thumb2__
lsr r0, r0, #24
sub r0, r0, r3
#else
rsb r0, r3, r0, lsr #24
#endif
#endif
ldr r4, [sp], #4
bx lr
.Lstrcmp_unaligned:
wp1 .req r0
wp2 .req r1
b1 .req r2
w1 .req r4
w2 .req r5
t1 .req ip
@ r3 is scratch
/* First of all, compare bytes until wp1(sp1) is word-aligned. */
1:
tst wp1, #3
beq 2f
ldrb r2, [wp1], #1
ldrb r3, [wp2], #1
cmp r2, #1
it cs
cmpcs r2, r3
beq 1b
sub r0, r2, r3
bx lr
2:
str r5, [sp, #-4]!
str r4, [sp, #-4]!
mov b1, #1
orr b1, b1, b1, lsl #8
orr b1, b1, b1, lsl #16
and t1, wp2, #3
bic wp2, wp2, #3
ldr w1, [wp1], #4
ldr w2, [wp2], #4
cmp t1, #2
beq 2f
bhi 3f
/* Critical inner Loop: Block with 3 bytes initial overlap */
.p2align 2
1:
bic t1, w1, #MSB
cmp t1, w2, SHFT2LSB #8
sub r3, w1, b1
bic r3, r3, w1
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, SHFT2MSB #24
bne 6f
ldr w1, [wp1], #4
b 1b
4:
SHFT2LSB w2, w2, #8
b 8f
5:
#ifdef __ARMEB__
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #0xff000000
itt ne
tstne w1, #0x00ff0000
tstne w1, #0x0000ff00
beq 7f
#else
bics r3, r3, #0xff000000
bne 7f
#endif
ldrb w2, [wp2]
SHFT2LSB t1, w1, #24
#ifdef __ARMEB__
lsl w2, w2, #24
#endif
b 8f
6:
SHFT2LSB t1, w1, #24
and w2, w2, #LSB
b 8f
/* Critical inner Loop: Block with 2 bytes initial overlap */
.p2align 2
2:
SHFT2MSB t1, w1, #16
sub r3, w1, b1
SHFT2LSB t1, t1, #16
bic r3, r3, w1
cmp t1, w2, SHFT2LSB #16
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, SHFT2MSB #16
bne 6f
ldr w1, [wp1], #4
b 2b
5:
#ifdef __ARMEB__
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #0xff000000
it ne
tstne w1, #0x00ff0000
beq 7f
#else
lsls r3, r3, #16
bne 7f
#endif
ldrh w2, [wp2]
SHFT2LSB t1, w1, #16
#ifdef __ARMEB__
lsl w2, w2, #16
#endif
b 8f
6:
SHFT2MSB w2, w2, #16
SHFT2LSB t1, w1, #16
4:
SHFT2LSB w2, w2, #16
b 8f
/* Critical inner Loop: Block with 1 byte initial overlap */
.p2align 2
3:
and t1, w1, #LSB
cmp t1, w2, SHFT2LSB #24
sub r3, w1, b1
bic r3, r3, w1
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, SHFT2MSB #8
bne 6f
ldr w1, [wp1], #4
b 3b
4:
SHFT2LSB w2, w2, #24
b 8f
5:
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #LSB
beq 7f
ldr w2, [wp2], #4
6:
SHFT2LSB t1, w1, #8
bic w2, w2, #MSB
b 8f
7:
mov r0, #0
ldr r4, [sp], #4
ldr r5, [sp], #4
bx lr
8:
and r2, t1, #LSB
and r0, w2, #LSB
cmp r0, #1
it cs
cmpcs r0, r2
itt eq
SHFT2LSBEQ t1, t1, #8
SHFT2LSBEQ w2, w2, #8
beq 8b
sub r0, r2, r0
ldr r4, [sp], #4
ldr r5, [sp], #4
bx lr
END(strcmp)

View File

@@ -33,16 +33,16 @@ size_t strlen(const char *s)
{
__builtin_prefetch(s);
__builtin_prefetch(s+32);
union {
const char *b;
const uint32_t *w;
uintptr_t i;
} u;
// these are some scratch variables for the asm code below
uint32_t v, t;
// initialize the string length to zero
size_t l = 0;
@@ -60,52 +60,60 @@ size_t strlen(const char *s)
// We need to process 32 bytes per loop to schedule PLD properly
// and achieve the maximum bus speed.
asm(
"ldr %[v], [ %[s] ], #4 \n"
"ldr %[v], [%[s]], #4 \n"
"sub %[l], %[l], %[s] \n"
"0: \n"
#if __ARM_HAVE_PLD
"pld [ %[s], #64 ] \n"
"pld [%[s], #64] \n"
#endif
"sub %[t], %[v], %[mask], lsr #7\n"
"and %[t], %[t], %[mask] \n"
"bics %[t], %[t], %[v] \n"
"ldreq %[v], [ %[s] ], #4 \n"
"it eq \n"
"ldreq %[v], [%[s]], #4 \n"
#if !defined(__OPTIMIZE_SIZE__)
"bne 1f \n"
"sub %[t], %[v], %[mask], lsr #7\n"
"and %[t], %[t], %[mask] \n"
"bics %[t], %[t], %[v] \n"
"ldreq %[v], [ %[s] ], #4 \n"
"it eq \n"
"ldreq %[v], [%[s]], #4 \n"
"bne 1f \n"
"sub %[t], %[v], %[mask], lsr #7\n"
"and %[t], %[t], %[mask] \n"
"bics %[t], %[t], %[v] \n"
"ldreq %[v], [ %[s] ], #4 \n"
"it eq \n"
"ldreq %[v], [%[s]], #4 \n"
"bne 1f \n"
"sub %[t], %[v], %[mask], lsr #7\n"
"and %[t], %[t], %[mask] \n"
"bics %[t], %[t], %[v] \n"
"ldreq %[v], [ %[s] ], #4 \n"
"it eq \n"
"ldreq %[v], [%[s]], #4 \n"
"bne 1f \n"
"sub %[t], %[v], %[mask], lsr #7\n"
"and %[t], %[t], %[mask] \n"
"bics %[t], %[t], %[v] \n"
"ldreq %[v], [ %[s] ], #4 \n"
"it eq \n"
"ldreq %[v], [%[s]], #4 \n"
"bne 1f \n"
"sub %[t], %[v], %[mask], lsr #7\n"
"and %[t], %[t], %[mask] \n"
"bics %[t], %[t], %[v] \n"
"ldreq %[v], [ %[s] ], #4 \n"
"it eq \n"
"ldreq %[v], [%[s]], #4 \n"
"bne 1f \n"
"sub %[t], %[v], %[mask], lsr #7\n"
"and %[t], %[t], %[mask] \n"
"bics %[t], %[t], %[v] \n"
"ldreq %[v], [ %[s] ], #4 \n"
"it eq \n"
"ldreq %[v], [%[s]], #4 \n"
"bne 1f \n"
"sub %[t], %[v], %[mask], lsr #7\n"
"and %[t], %[t], %[mask] \n"
"bics %[t], %[t], %[v] \n"
"ldreq %[v], [ %[s] ], #4 \n"
"it eq \n"
"ldreq %[v], [%[s]], #4 \n"
#endif
"beq 0b \n"
"1: \n"
@@ -117,13 +125,14 @@ size_t strlen(const char *s)
"beq 2f \n"
"add %[l], %[l], #1 \n"
"tst %[v], #0xFF0000 \n"
"it ne \n"
"addne %[l], %[l], #1 \n"
"2: \n"
: [l]"=&r"(l), [v]"=&r"(v), [t]"=&r"(t), [s]"=&r"(u.b)
: "%[l]"(l), "%[s]"(u.b), [mask]"r"(0x80808080UL)
: "cc"
);
done:
return l;
}

View File

@@ -0,0 +1,8 @@
$(call libc-add-cpu-variant-src,MEMCPY,arch-arm/generic/bionic/memcpy.S)
$(call libc-add-cpu-variant-src,MEMSET,arch-arm/generic/bionic/memset.S)
$(call libc-add-cpu-variant-src,STRCAT,string/strcat.c)
$(call libc-add-cpu-variant-src,STRCMP,arch-arm/generic/bionic/strcmp.S)
$(call libc-add-cpu-variant-src,STRCPY,arch-arm/generic/bionic/strcpy.S)
$(call libc-add-cpu-variant-src,STRLEN,arch-arm/generic/bionic/strlen.c)
$(call libc-add-cpu-variant-src,__STRCAT_CHK,bionic/__strcat_chk.cpp)
$(call libc-add-cpu-variant-src,__STRCPY_CHK,bionic/__strcpy_chk.cpp)

View File

@@ -35,17 +35,6 @@
#ifndef _ARM__TYPES_H_
#define _ARM__TYPES_H_
#if !defined(__ARM_EABI__)
/* the kernel defines size_t as unsigned int, but g++ wants it to be unsigned long */
#define _SIZE_T
#define _SSIZE_T
#define _PTRDIFF_T
typedef unsigned long size_t;
typedef long ssize_t;
typedef long ptrdiff_t;
#endif
/* 7.18.1.1 Exact-width integer types */
typedef __signed char __int8_t;
typedef unsigned char __uint8_t;
@@ -98,6 +87,8 @@ typedef unsigned long __psize_t;
/* Standard system types */
typedef int __clock_t;
typedef int __clockid_t;
typedef double __double_t;
typedef float __float_t;
typedef long __ptrdiff_t;
typedef int __time_t;
typedef int __timer_t;
@@ -116,10 +107,4 @@ typedef int __rune_t;
typedef void * __wctrans_t;
typedef void * __wctype_t;
#ifdef __ARMEB__
#define _BYTE_ORDER _BIG_ENDIAN
#else
#define _BYTE_ORDER _LITTLE_ENDIAN
#endif
#endif /* _ARM__TYPES_H_ */

View File

@@ -0,0 +1,138 @@
/* $NetBSD: elf_machdep.h,v 1.10 2012/08/05 04:12:46 matt Exp $ */
#ifndef _ARM_ELF_MACHDEP_H_
#define _ARM_ELF_MACHDEP_H_
#if defined(__ARMEB__)
#define ELF32_MACHDEP_ENDIANNESS ELFDATA2MSB
#else
#define ELF32_MACHDEP_ENDIANNESS ELFDATA2LSB
#endif
#define ELF64_MACHDEP_ENDIANNESS XXX /* break compilation */
#define ELF64_MACHDEP_ID_CASES \
/* no 64-bit ELF machine types supported */
/* Processor specific flags for the ELF header e_flags field. */
#define EF_ARM_RELEXEC 0x00000001
#define EF_ARM_HASENTRY 0x00000002
#define EF_ARM_INTERWORK 0x00000004 /* GNU binutils 000413 */
#define EF_ARM_SYMSARESORTED 0x00000004 /* ARM ELF A08 */
#define EF_ARM_APCS_26 0x00000008 /* GNU binutils 000413 */
#define EF_ARM_DYNSYMSUSESEGIDX 0x00000008 /* ARM ELF B01 */
#define EF_ARM_APCS_FLOAT 0x00000010 /* GNU binutils 000413 */
#define EF_ARM_MAPSYMSFIRST 0x00000010 /* ARM ELF B01 */
#define EF_ARM_PIC 0x00000020
#define EF_ARM_ALIGN8 0x00000040 /* 8-bit structure alignment. */
#define EF_ARM_NEW_ABI 0x00000080
#define EF_ARM_OLD_ABI 0x00000100
#define EF_ARM_SOFT_FLOAT 0x00000200
#define EF_ARM_EABIMASK 0xff000000
#define EF_ARM_EABI_VER1 0x01000000
#define EF_ARM_EABI_VER2 0x02000000
#define EF_ARM_EABI_VER3 0x03000000
#define EF_ARM_EABI_VER4 0x04000000
#define EF_ARM_EABI_VER5 0x05000000
#define ELF32_MACHDEP_ID_CASES \
case EM_ARM: \
break;
#define ELF32_MACHDEP_ID EM_ARM
#define ARCH_ELFSIZE 32 /* MD native binary size */
/* Processor specific relocation types */
#define R_ARM_NONE 0
#define R_ARM_PC24 1
#define R_ARM_ABS32 2
#define R_ARM_REL32 3
#define R_ARM_PC13 4
#define R_ARM_ABS16 5
#define R_ARM_ABS12 6
#define R_ARM_THM_ABS5 7
#define R_ARM_ABS8 8
#define R_ARM_SBREL32 9
#define R_ARM_THM_PC22 10
#define R_ARM_THM_PC8 11
#define R_ARM_AMP_VCALL9 12
#define R_ARM_SWI24 13
#define R_ARM_THM_SWI8 14
#define R_ARM_XPC25 15
#define R_ARM_THM_XPC22 16
/* TLS relocations */
#define R_ARM_TLS_DTPMOD32 17 /* ID of module containing symbol */
#define R_ARM_TLS_DTPOFF32 18 /* Offset in TLS block */
#define R_ARM_TLS_TPOFF32 19 /* Offset in static TLS block */
/* 20-31 are reserved for ARM Linux. */
#define R_ARM_COPY 20
#define R_ARM_GLOB_DAT 21
#define R_ARM_JUMP_SLOT 22
#define R_ARM_RELATIVE 23
#define R_ARM_GOTOFF 24
#define R_ARM_GOTPC 25
#define R_ARM_GOT32 26
#define R_ARM_PLT32 27
#define R_ARM_ALU_PCREL_7_0 32
#define R_ARM_ALU_PCREL_15_8 33
#define R_ARM_ALU_PCREL_23_15 34
#define R_ARM_ALU_SBREL_11_0 35
#define R_ARM_ALU_SBREL_19_12 36
#define R_ARM_ALU_SBREL_27_20 37
/* 96-111 are reserved to G++. */
#define R_ARM_GNU_VTENTRY 100
#define R_ARM_GNU_VTINHERIT 101
#define R_ARM_THM_PC11 102
#define R_ARM_THM_PC9 103
/* More TLS relocations */
#define R_ARM_TLS_GD32 104 /* PC-rel 32 bit for global dynamic */
#define R_ARM_TLS_LDM32 105 /* PC-rel 32 bit for local dynamic */
#define R_ARM_TLS_LDO32 106 /* 32 bit offset relative to TLS */
#define R_ARM_TLS_IE32 107 /* PC-rel 32 bit for GOT entry of */
#define R_ARM_TLS_LE32 108
#define R_ARM_TLS_LDO12 109
#define R_ARM_TLS_LE12 110
#define R_ARM_TLS_IE12GP 111
/* 112-127 are reserved for private experiments. */
#define R_ARM_RXPC25 249
#define R_ARM_RSBREL32 250
#define R_ARM_THM_RPC22 251
#define R_ARM_RREL32 252
#define R_ARM_RABS32 253
#define R_ARM_RPC24 254
#define R_ARM_RBASE 255
#define R_TYPE(name) __CONCAT(R_ARM_,name)
/* Processor specific program header flags */
#define PF_ARM_SB 0x10000000
#define PF_ARM_PI 0x20000000
#define PF_ARM_ENTRY 0x80000000
/* Processor specific section header flags */
#define SHF_ENTRYSECT 0x10000000
#define SHF_COMDEF 0x80000000
/* Processor specific symbol types */
#define STT_ARM_TFUNC STT_LOPROC
#ifdef _KERNEL
#ifdef ELFSIZE
#define ELF_MD_PROBE_FUNC ELFNAME2(arm_netbsd,probe)
#endif
struct exec_package;
int arm_netbsd_elf32_probe(struct lwp *, struct exec_package *, void *, char *,
vaddr_t *);
#endif
#endif /* _ARM_ELF_MACHDEP_H_ */

View File

@@ -77,7 +77,7 @@
#endif /* __ARM_ARCH__ */
#endif /* __GNUC__ */
#ifdef __ARMEB__
#if defined(__ARMEB__)
#define _BYTE_ORDER _BIG_ENDIAN
#else
#define _BYTE_ORDER _LITTLE_ENDIAN

View File

@@ -0,0 +1,225 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.thumb
.thumb_func
// Get the length of src string, then get the source of the dst string.
// Check that the two lengths together don't exceed the threshold, then
// do a memcpy of the data.
ENTRY(__strcat_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
push {r4, r5}
.save {r4, r5}
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
mov lr, r2
// Save the dst register to r5
mov r5, r0
// Zero out r4
eor r4, r4, r4
// r1 contains the address of the string to count.
.L_strlen_start:
mov r0, r1
ands r3, r1, #7
beq .L_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
.L_align_to_32:
bcc .L_align_to_64
ands ip, r3, #2
beq .L_align_to_64
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
ldrb r2, [r1], #1
cbz r2, .L_update_count_and_finish
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r3, [r1], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
.p2align 2
.L_mainloop:
ldrd r2, r3, [r1], #8
pld [r1, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_update_count_and_finish:
sub r3, r1, r0
sub r3, r3, #1
b .L_finish
.L_zero_in_first_register:
sub r3, r1, r0
lsls r2, ip, #17
bne .L_sub8_and_finish
bcs .L_sub7_and_finish
lsls ip, ip, #1
bne .L_sub6_and_finish
sub r3, r3, #5
b .L_finish
.L_sub8_and_finish:
sub r3, r3, #8
b .L_finish
.L_sub7_and_finish:
sub r3, r3, #7
b .L_finish
.L_sub6_and_finish:
sub r3, r3, #6
b .L_finish
.L_zero_in_second_register:
sub r3, r1, r0
lsls r2, ip, #17
bne .L_sub4_and_finish
bcs .L_sub3_and_finish
lsls ip, ip, #1
bne .L_sub2_and_finish
sub r3, r3, #1
b .L_finish
.L_sub4_and_finish:
sub r3, r3, #4
b .L_finish
.L_sub3_and_finish:
sub r3, r3, #3
b .L_finish
.L_sub2_and_finish:
sub r3, r3, #2
.L_finish:
cmp r4, #0
bne .L_strlen_done
// Time to get the dst string length.
mov r1, r5
// Save the original source address to r5.
mov r5, r0
// Save the current length (adding 1 for the terminator).
add r4, r3, #1
b .L_strlen_start
// r0 holds the pointer to the dst string.
// r3 holds the dst string length.
// r4 holds the src string length + 1.
.L_strlen_done:
add r2, r3, r4
cmp r2, lr
bhi __strcat_chk_failed
// Set up the registers for the memcpy code.
mov r1, r5
pld [r1, #64]
mov r2, r4
add r0, r0, r3
pop {r4, r5}
.cfi_endproc
END(__strcat_chk)
#define MEMCPY_BASE __strcat_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcat_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcat_chk_failed)
.cfi_startproc
.save {r0, lr}
.save {r4, r5}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcat_chk_failed)
.data
error_string:
.string "strcat buffer overflow"

View File

@@ -0,0 +1,187 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
#include "libc_events.h"
.syntax unified
.thumb
.thumb_func
// Get the length of the source string first, then do a memcpy of the data
// instead of a strcpy.
ENTRY(__strcpy_chk)
.cfi_startproc
pld [r0, #0]
push {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
mov lr, r2
mov r0, r1
ands r3, r1, #7
beq .L_mainloop
// Align to a double word (64 bits).
rsb r3, r3, #8
lsls ip, r3, #31
beq .L_align_to_32
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
.L_align_to_32:
bcc .L_align_to_64
ands ip, r3, #2
beq .L_align_to_64
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
ldrb r2, [r0], #1
cbz r2, .L_update_count_and_finish
.L_align_to_64:
tst r3, #4
beq .L_mainloop
ldr r3, [r0], #4
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
.p2align 2
.L_mainloop:
ldrd r2, r3, [r0], #8
pld [r0, #64]
sub ip, r2, #0x01010101
bic ip, ip, r2
ands ip, ip, #0x80808080
bne .L_zero_in_first_register
sub ip, r3, #0x01010101
bic ip, ip, r3
ands ip, ip, #0x80808080
bne .L_zero_in_second_register
b .L_mainloop
.L_update_count_and_finish:
sub r3, r0, r1
sub r3, r3, #1
b .L_check_size
.L_zero_in_first_register:
sub r3, r0, r1
lsls r2, ip, #17
bne .L_sub8_and_finish
bcs .L_sub7_and_finish
lsls ip, ip, #1
bne .L_sub6_and_finish
sub r3, r3, #5
b .L_check_size
.L_sub8_and_finish:
sub r3, r3, #8
b .L_check_size
.L_sub7_and_finish:
sub r3, r3, #7
b .L_check_size
.L_sub6_and_finish:
sub r3, r3, #6
b .L_check_size
.L_zero_in_second_register:
sub r3, r0, r1
lsls r2, ip, #17
bne .L_sub4_and_finish
bcs .L_sub3_and_finish
lsls ip, ip, #1
bne .L_sub2_and_finish
sub r3, r3, #1
b .L_check_size
.L_sub4_and_finish:
sub r3, r3, #4
b .L_check_size
.L_sub3_and_finish:
sub r3, r3, #3
b .L_check_size
.L_sub2_and_finish:
sub r3, r3, #2
.L_check_size:
pld [r1, #0]
pld [r1, #64]
ldr r0, [sp]
cmp r3, lr
bhs __strcpy_chk_failed
// Add 1 for copy length to get the string terminator.
add r2, r3, #1
.cfi_endproc
END(__strcpy_chk)
#define MEMCPY_BASE __strcpy_chk_memcpy_base
#define MEMCPY_BASE_ALIGNED __strcpy_chk_memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__strcpy_chk_failed)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__strcpy_chk_failed)
.data
error_string:
.string "strcpy buffer overflow"

View File

@@ -0,0 +1,92 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/* Assumes neon instructions and a cache line size of 32 bytes. */
#include <machine/asm.h>
#include "libc_events.h"
/*
* This code assumes it is running on a processor that supports all arm v7
* instructions, that supports neon instructions, and that has a 32 byte
* cache line.
*/
.text
.syntax unified
.fpu neon
.thumb
.thumb_func
ENTRY(__memcpy_chk)
.cfi_startproc
cmp r2, r3
bhi __memcpy_chk_fail
// Fall through to memcpy...
.cfi_endproc
END(__memcpy_chk)
ENTRY(memcpy)
.cfi_startproc
pld [r1, #64]
stmfd sp!, {r0, lr}
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
.cfi_endproc
END(memcpy)
#define MEMCPY_BASE __memcpy_base
#define MEMCPY_BASE_ALIGNED __memcpy_base_aligned
#include "memcpy_base.S"
ENTRY(__memcpy_chk_fail)
.cfi_startproc
// Preserve lr for backtrace.
push {lr}
.save {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+4)
.cfi_endproc
END(__memcpy_chk_fail)
.data
error_string:
.string "memcpy buffer overflow"

View File

@@ -0,0 +1,127 @@
/*
* Copyright (C) 2013 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* This code assumes it is running on a processor that supports all arm v7
* instructions, that supports neon instructions, and that has a 32 byte
* cache line.
*/
// Assumes neon instructions and a cache line size of 32 bytes.
ENTRY(MEMCPY_BASE)
.cfi_startproc
.save {r0, lr}
.cfi_def_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset lr, 4
/* do we have at least 16-bytes to copy (needed for alignment below) */
cmp r2, #16
blo 5f
/* align destination to cache-line for the write-buffer */
rsb r3, r0, #0
ands r3, r3, #0xF
beq 2f
/* copy up to 15-bytes (count in r3) */
sub r2, r2, r3
movs ip, r3, lsl #31
itt mi
ldrbmi lr, [r1], #1
strbmi lr, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
movs ip, r3, lsl #29
bge 1f
// copies 4 bytes, destination 32-bits aligned
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0, :32]!
1: bcc 2f
// copies 8 bytes, destination 64-bits aligned
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0, :64]!
2: /* make sure we have at least 64 bytes to copy */
subs r2, r2, #64
blo 2f
1: /* The main loop copies 64 bytes at a time */
vld1.8 {d0 - d3}, [r1]!
vld1.8 {d4 - d7}, [r1]!
pld [r1, #(32*8)]
subs r2, r2, #64
vst1.8 {d0 - d3}, [r0, :128]!
vst1.8 {d4 - d7}, [r0, :128]!
bhs 1b
2: /* fix-up the remaining count and make sure we have >= 32 bytes left */
adds r2, r2, #32
blo 4f
/* Copy 32 bytes. These cache lines were already preloaded */
vld1.8 {d0 - d3}, [r1]!
sub r2, r2, #32
vst1.8 {d0 - d3}, [r0, :128]!
4: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 5f
// copies 16 bytes, 128-bits aligned
vld1.8 {d0, d1}, [r1]!
vst1.8 {d0, d1}, [r0, :128]!
5: /* copy up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vld1.8 {d0}, [r1]!
vst1.8 {d0}, [r0]!
1: bge 2f
vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r1]!
vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0]!
2: movs ip, r2, lsl #31
itt mi
ldrbmi r3, [r1], #1
strbmi r3, [r0], #1
itttt cs
ldrbcs ip, [r1], #1
ldrbcs lr, [r1], #1
strbcs ip, [r0], #1
strbcs lr, [r0], #1
ldmfd sp!, {r0, lr}
bx lr
.cfi_endproc
END(MEMCPY_BASE)

View File

@@ -0,0 +1,119 @@
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
#include "libc_events.h"
/*
* This code assumes it is running on a processor that supports all arm v7
* instructions, that supports neon instructions, and that supports
* unaligned neon instruction accesses to memory.
*/
.fpu neon
ENTRY(__memset_chk)
.cfi_startproc
cmp r2, r3
bls .L_done
// Preserve lr for backtrace.
.save {lr}
push {lr}
.cfi_def_cfa_offset 4
.cfi_rel_offset lr, 0
ldr r0, error_message
ldr r1, error_code
1:
add r0, pc
bl __fortify_chk_fail
error_code:
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
error_message:
.word error_string-(1b+8)
.cfi_endproc
END(__memset_chk)
ENTRY(bzero)
.cfi_startproc
mov r2, r1
mov r1, #0
.L_done:
// Fall through to memset...
.cfi_endproc
END(bzero)
/* memset() returns its first argument. */
ENTRY(memset)
.cfi_startproc
.save {r0}
stmfd sp!, {r0}
.cfi_def_cfa_offset 4
.cfi_rel_offset r0, 0
vdup.8 q0, r1
/* make sure we have at least 32 bytes to write */
subs r2, r2, #32
blo 2f
vmov q1, q0
1: /* The main loop writes 32 bytes at a time */
subs r2, r2, #32
vst1.8 {d0 - d3}, [r0]!
bhs 1b
2: /* less than 32 left */
add r2, r2, #32
tst r2, #0x10
beq 3f
// writes 16 bytes, 128-bits aligned
vst1.8 {d0, d1}, [r0]!
3: /* write up to 15-bytes (count in r2) */
movs ip, r2, lsl #29
bcc 1f
vst1.8 {d0}, [r0]!
1: bge 2f
vst1.32 {d0[0]}, [r0]!
2: movs ip, r2, lsl #31
strmib r1, [r0], #1
strcsb r1, [r0], #1
strcsb r1, [r0], #1
ldmfd sp!, {r0}
bx lr
.cfi_endproc
END(memset)
.data
error_string:
.string "memset buffer overflow"

View File

@@ -0,0 +1,500 @@
/*
* Copyright (c) 2013 ARM Ltd
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the company may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/cpu-features.h>
#include <machine/asm.h>
#ifdef __ARMEB__
#define S2LOMEM lsl
#define S2LOMEMEQ lsleq
#define S2HIMEM lsr
#define MSB 0x000000ff
#define LSB 0xff000000
#define BYTE0_OFFSET 24
#define BYTE1_OFFSET 16
#define BYTE2_OFFSET 8
#define BYTE3_OFFSET 0
#else /* not __ARMEB__ */
#define S2LOMEM lsr
#define S2LOMEMEQ lsreq
#define S2HIMEM lsl
#define BYTE0_OFFSET 0
#define BYTE1_OFFSET 8
#define BYTE2_OFFSET 16
#define BYTE3_OFFSET 24
#define MSB 0xff000000
#define LSB 0x000000ff
#endif /* not __ARMEB__ */
.syntax unified
#if defined (__thumb__)
.thumb
.thumb_func
#endif
ENTRY(strcmp)
/* Use LDRD whenever possible. */
/* The main thing to look out for when comparing large blocks is that
the loads do not cross a page boundary when loading past the index
of the byte with the first difference or the first string-terminator.
For example, if the strings are identical and the string-terminator
is at index k, byte by byte comparison will not load beyond address
s1+k and s2+k; word by word comparison may load up to 3 bytes beyond
k; double word - up to 7 bytes. If the load of these bytes crosses
a page boundary, it might cause a memory fault (if the page is not mapped)
that would not have happened in byte by byte comparison.
If an address is (double) word aligned, then a load of a (double) word
from that address will not cross a page boundary.
Therefore, the algorithm below considers word and double-word alignment
of strings separately. */
/* High-level description of the algorithm.
* The fast path: if both strings are double-word aligned,
use LDRD to load two words from each string in every loop iteration.
* If the strings have the same offset from a word boundary,
use LDRB to load and compare byte by byte until
the first string is aligned to a word boundary (at most 3 bytes).
This is optimized for quick return on short unaligned strings.
* If the strings have the same offset from a double-word boundary,
use LDRD to load two words from each string in every loop iteration, as in the fast path.
* If the strings do not have the same offset from a double-word boundary,
load a word from the second string before the loop to initialize the queue.
Use LDRD to load two words from every string in every loop iteration.
Inside the loop, load the second word from the second string only after comparing
the first word, using the queued value, to guarantee safety across page boundaries.
* If the strings do not have the same offset from a word boundary,
use LDR and a shift queue. Order of loads and comparisons matters,
similarly to the previous case.
* Use UADD8 and SEL to compare words, and use REV and CLZ to compute the return value.
* The only difference between ARM and Thumb modes is the use of CBZ instruction.
* The only difference between big and little endian is the use of REV in little endian
to compute the return value, instead of MOV.
*/
.macro m_cbz reg label
#ifdef __thumb2__
cbz \reg, \label
#else /* not defined __thumb2__ */
cmp \reg, #0
beq \label
#endif /* not defined __thumb2__ */
.endm /* m_cbz */
.macro m_cbnz reg label
#ifdef __thumb2__
cbnz \reg, \label
#else /* not defined __thumb2__ */
cmp \reg, #0
bne \label
#endif /* not defined __thumb2__ */
.endm /* m_cbnz */
.macro init
/* Macro to save temporary registers and prepare magic values. */
subs sp, sp, #16
.cfi_def_cfa_offset 16
strd r4, r5, [sp, #8]
.cfi_rel_offset r4, 0
.cfi_rel_offset r5, 4
strd r6, r7, [sp]
.cfi_rel_offset r6, 8
.cfi_rel_offset r7, 12
mvn r6, #0 /* all F */
mov r7, #0 /* all 0 */
.endm /* init */
.macro magic_compare_and_branch w1 w2 label
/* Macro to compare registers w1 and w2 and conditionally branch to label. */
cmp \w1, \w2 /* Are w1 and w2 the same? */
magic_find_zero_bytes \w1
it eq
cmpeq ip, #0 /* Is there a zero byte in w1? */
bne \label
.endm /* magic_compare_and_branch */
.macro magic_find_zero_bytes w1
/* Macro to find all-zero bytes in w1, result is in ip. */
#if (defined (__ARM_FEATURE_DSP))
uadd8 ip, \w1, r6
sel ip, r7, r6
#else /* not defined (__ARM_FEATURE_DSP) */
/* __ARM_FEATURE_DSP is not defined for some Cortex-M processors.
Coincidently, these processors only have Thumb-2 mode, where we can use the
the (large) magic constant available directly as an immediate in instructions.
Note that we cannot use the magic constant in ARM mode, where we need
to create the constant in a register. */
sub ip, \w1, #0x01010101
bic ip, ip, \w1
and ip, ip, #0x80808080
#endif /* not defined (__ARM_FEATURE_DSP) */
.endm /* magic_find_zero_bytes */
.macro setup_return w1 w2
#ifdef __ARMEB__
mov r1, \w1
mov r2, \w2
#else /* not __ARMEB__ */
rev r1, \w1
rev r2, \w2
#endif /* not __ARMEB__ */
.endm /* setup_return */
.cfi_startproc
pld [r0, #0]
pld [r1, #0]
/* Are both strings double-word aligned? */
orr ip, r0, r1
tst ip, #7
bne .L_do_align
/* Fast path. */
.save {r4-r7}
init
.L_doubleword_aligned:
/* Get here when the strings to compare are double-word aligned. */
/* Compare two words in every iteration. */
.p2align 2
2:
pld [r0, #16]
pld [r1, #16]
/* Load the next double-word from each string. */
ldrd r2, r3, [r0], #8
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r2, w2=r4, label=.L_return_24
magic_compare_and_branch w1=r3, w2=r5, label=.L_return_35
b 2b
.L_do_align:
/* Is the first string word-aligned? */
ands ip, r0, #3
beq .L_word_aligned_r0
/* Fast compare byte by byte until the first string is word-aligned. */
/* The offset of r0 from a word boundary is in ip. Thus, the number of bytes
to read until the next word boundary is 4-ip. */
bic r0, r0, #3
ldr r2, [r0], #4
lsls ip, ip, #31
beq .L_byte2
bcs .L_byte3
.L_byte1:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE1_OFFSET
subs ip, r3, ip
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
.L_byte2:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE2_OFFSET
subs ip, r3, ip
bne .L_fast_return
m_cbz reg=r3, label=.L_fast_return
.L_byte3:
ldrb ip, [r1], #1
uxtb r3, r2, ror #BYTE3_OFFSET
subs ip, r3, ip
bne .L_fast_return
m_cbnz reg=r3, label=.L_word_aligned_r0
.L_fast_return:
mov r0, ip
bx lr
.L_word_aligned_r0:
init
/* The first string is word-aligned. */
/* Is the second string word-aligned? */
ands ip, r1, #3
bne .L_strcmp_unaligned
.L_word_aligned:
/* The strings are word-aligned. */
/* Is the first string double-word aligned? */
tst r0, #4
beq .L_doubleword_aligned_r0
/* If r0 is not double-word aligned yet, align it by loading
and comparing the next word from each string. */
ldr r2, [r0], #4
ldr r4, [r1], #4
magic_compare_and_branch w1=r2 w2=r4 label=.L_return_24
.L_doubleword_aligned_r0:
/* Get here when r0 is double-word aligned. */
/* Is r1 doubleword_aligned? */
tst r1, #4
beq .L_doubleword_aligned
/* Get here when the strings to compare are word-aligned,
r0 is double-word aligned, but r1 is not double-word aligned. */
/* Initialize the queue. */
ldr r5, [r1], #4
/* Compare two words in every iteration. */
.p2align 2
3:
pld [r0, #16]
pld [r1, #16]
/* Load the next double-word from each string and compare. */
ldrd r2, r3, [r0], #8
magic_compare_and_branch w1=r2 w2=r5 label=.L_return_25
ldrd r4, r5, [r1], #8
magic_compare_and_branch w1=r3 w2=r4 label=.L_return_34
b 3b
.macro miscmp_word offsetlo offsethi
/* Macro to compare misaligned strings. */
/* r0, r1 are word-aligned, and at least one of the strings
is not double-word aligned. */
/* Compare one word in every loop iteration. */
/* OFFSETLO is the original bit-offset of r1 from a word-boundary,
OFFSETHI is 32 - OFFSETLO (i.e., offset from the next word). */
/* Initialize the shift queue. */
ldr r5, [r1], #4
/* Compare one word from each string in every loop iteration. */
.p2align 2
7:
ldr r3, [r0], #4
S2LOMEM r5, r5, #\offsetlo
magic_find_zero_bytes w1=r3
cmp r7, ip, S2HIMEM #\offsetlo
and r2, r3, r6, S2LOMEM #\offsetlo
it eq
cmpeq r2, r5
bne .L_return_25
ldr r5, [r1], #4
cmp ip, #0
eor r3, r2, r3
S2HIMEM r2, r5, #\offsethi
it eq
cmpeq r3, r2
bne .L_return_32
b 7b
.endm /* miscmp_word */
.L_strcmp_unaligned:
/* r0 is word-aligned, r1 is at offset ip from a word. */
/* Align r1 to the (previous) word-boundary. */
bic r1, r1, #3
/* Unaligned comparison word by word using LDRs. */
cmp ip, #2
beq .L_miscmp_word_16 /* If ip == 2. */
bge .L_miscmp_word_24 /* If ip == 3. */
miscmp_word offsetlo=8 offsethi=24 /* If ip == 1. */
.L_miscmp_word_24: miscmp_word offsetlo=24 offsethi=8
.L_return_32:
setup_return w1=r3, w2=r2
b .L_do_return
.L_return_34:
setup_return w1=r3, w2=r4
b .L_do_return
.L_return_25:
setup_return w1=r2, w2=r5
b .L_do_return
.L_return_35:
setup_return w1=r3, w2=r5
b .L_do_return
.L_return_24:
setup_return w1=r2, w2=r4
.L_do_return:
#ifdef __ARMEB__
mov r0, ip
#else /* not __ARMEB__ */
rev r0, ip
#endif /* not __ARMEB__ */
/* Restore temporaries early, before computing the return value. */
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
/* There is a zero or a different byte between r1 and r2. */
/* r0 contains a mask of all-zero bytes in r1. */
/* Using r0 and not ip here because cbz requires low register. */
m_cbz reg=r0, label=.L_compute_return_value
clz r0, r0
/* r0 contains the number of bits on the left of the first all-zero byte in r1. */
rsb r0, r0, #24
/* Here, r0 contains the number of bits on the right of the first all-zero byte in r1. */
lsr r1, r1, r0
lsr r2, r2, r0
.L_compute_return_value:
movs r0, #1
cmp r1, r2
/* The return value is computed as follows.
If r1>r2 then (C==1 and Z==0) and LS doesn't hold and r0 is #1 at return.
If r1<r2 then (C==0 and Z==0) and we execute SBC with carry_in=0,
which means r0:=r0-r0-1 and r0 is #-1 at return.
If r1=r2 then (C==1 and Z==1) and we execute SBC with carry_in=1,
which means r0:=r0-r0 and r0 is #0 at return.
(C==0 and Z==1) cannot happen because the carry bit is "not borrow". */
it ls
sbcls r0, r0, r0
bx lr
/* The code from the previous version of strcmp.S handles this
* particular case (the second string is 2 bytes off a word alignment)
* faster than any current version. In this very specific case, use the
* previous version. See bionic/libc/arch-arm/cortex-a15/bionic/strcmp.S
* for the unedited version of this code.
*/
.L_miscmp_word_16:
wp1 .req r0
wp2 .req r1
b1 .req r2
w1 .req r4
w2 .req r5
t1 .req ip
@ r3 is scratch
/* At this point, wp1 (r0) has already been word-aligned. */
2:
mov b1, #1
orr b1, b1, b1, lsl #8
orr b1, b1, b1, lsl #16
and t1, wp2, #3
bic wp2, wp2, #3
ldr w1, [wp1], #4
ldr w2, [wp2], #4
/* Critical inner Loop: Block with 2 bytes initial overlap */
.p2align 2
2:
S2HIMEM t1, w1, #16
sub r3, w1, b1
S2LOMEM t1, t1, #16
bic r3, r3, w1
cmp t1, w2, S2LOMEM #16
bne 4f
ands r3, r3, b1, lsl #7
it eq
ldreq w2, [wp2], #4
bne 5f
eor t1, t1, w1
cmp t1, w2, S2HIMEM #16
bne 6f
ldr w1, [wp1], #4
b 2b
5:
#ifdef __ARMEB__
/* The syndrome value may contain false ones if the string ends
* with the bytes 0x01 0x00
*/
tst w1, #0xff000000
it ne
tstne w1, #0x00ff0000
beq 7f
#else
lsls r3, r3, #16
bne 7f
#endif
ldrh w2, [wp2]
S2LOMEM t1, w1, #16
#ifdef __ARMEB__
lsl w2, w2, #16
#endif
b 8f
6:
S2HIMEM w2, w2, #16
S2LOMEM t1, w1, #16
4:
S2LOMEM w2, w2, #16
b 8f
7:
mov r0, #0
/* Restore registers and stack. */
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
bx lr
8:
and r2, t1, #LSB
and r0, w2, #LSB
cmp r0, #1
it cs
cmpcs r0, r2
itt eq
S2LOMEMEQ t1, t1, #8
S2LOMEMEQ w2, w2, #8
beq 8b
sub r0, r2, r0
/* Restore registers and stack. */
ldrd r6, r7, [sp]
ldrd r4, r5, [sp, #8]
adds sp, sp, #16
.cfi_def_cfa_offset 0
.cfi_restore r4
.cfi_restore r5
.cfi_restore r6
.cfi_restore r7
bx lr
.cfi_endproc
END(strcmp)

View File

@@ -0,0 +1,11 @@
$(call libc-add-cpu-variant-src,MEMCPY,arch-arm/krait/bionic/memcpy.S)
$(call libc-add-cpu-variant-src,MEMSET,arch-arm/krait/bionic/memset.S)
$(call libc-add-cpu-variant-src,STRCMP,arch-arm/krait/bionic/strcmp.S)
$(call libc-add-cpu-variant-src,__STRCAT_CHK,arch-arm/krait/bionic/__strcat_chk.S)
$(call libc-add-cpu-variant-src,__STRCPY_CHK,arch-arm/krait/bionic/__strcpy_chk.S)
# Use cortex-a15 versions of strcat/strcpy/strlen.
$(call libc-add-cpu-variant-src,STRCAT,arch-arm/cortex-a15/bionic/strcat.S)
$(call libc-add-cpu-variant-src,STRCPY,arch-arm/cortex-a15/bionic/strcpy.S)
$(call libc-add-cpu-variant-src,STRLEN,arch-arm/cortex-a15/bionic/strlen.S)
include bionic/libc/arch-arm/generic/generic.mk

View File

@@ -4,6 +4,7 @@ syscall_src += arch-arm/syscalls/_exit.S
syscall_src += arch-arm/syscalls/_exit_thread.S
syscall_src += arch-arm/syscalls/__fork.S
syscall_src += arch-arm/syscalls/__waitid.S
syscall_src += arch-arm/syscalls/wait4.S
syscall_src += arch-arm/syscalls/__sys_clone.S
syscall_src += arch-arm/syscalls/execve.S
syscall_src += arch-arm/syscalls/__setuid.S
@@ -18,6 +19,7 @@ syscall_src += arch-arm/syscalls/readahead.S
syscall_src += arch-arm/syscalls/getgroups.S
syscall_src += arch-arm/syscalls/getpgid.S
syscall_src += arch-arm/syscalls/getppid.S
syscall_src += arch-arm/syscalls/getsid.S
syscall_src += arch-arm/syscalls/setsid.S
syscall_src += arch-arm/syscalls/setgid.S
syscall_src += arch-arm/syscalls/__setreuid.S
@@ -58,6 +60,8 @@ syscall_src += arch-arm/syscalls/mprotect.S
syscall_src += arch-arm/syscalls/madvise.S
syscall_src += arch-arm/syscalls/mlock.S
syscall_src += arch-arm/syscalls/munlock.S
syscall_src += arch-arm/syscalls/mlockall.S
syscall_src += arch-arm/syscalls/munlockall.S
syscall_src += arch-arm/syscalls/mincore.S
syscall_src += arch-arm/syscalls/__ioctl.S
syscall_src += arch-arm/syscalls/readv.S
@@ -121,6 +125,9 @@ syscall_src += arch-arm/syscalls/llistxattr.S
syscall_src += arch-arm/syscalls/removexattr.S
syscall_src += arch-arm/syscalls/lremovexattr.S
syscall_src += arch-arm/syscalls/__statfs64.S
syscall_src += arch-arm/syscalls/unshare.S
syscall_src += arch-arm/syscalls/swapon.S
syscall_src += arch-arm/syscalls/swapoff.S
syscall_src += arch-arm/syscalls/pause.S
syscall_src += arch-arm/syscalls/gettimeofday.S
syscall_src += arch-arm/syscalls/settimeofday.S
@@ -139,6 +146,9 @@ syscall_src += arch-arm/syscalls/__timer_getoverrun.S
syscall_src += arch-arm/syscalls/__timer_delete.S
syscall_src += arch-arm/syscalls/utimes.S
syscall_src += arch-arm/syscalls/utimensat.S
syscall_src += arch-arm/syscalls/timerfd_create.S
syscall_src += arch-arm/syscalls/timerfd_settime.S
syscall_src += arch-arm/syscalls/timerfd_gettime.S
syscall_src += arch-arm/syscalls/sigaction.S
syscall_src += arch-arm/syscalls/sigprocmask.S
syscall_src += arch-arm/syscalls/__sigsuspend.S
@@ -146,6 +156,7 @@ syscall_src += arch-arm/syscalls/__rt_sigaction.S
syscall_src += arch-arm/syscalls/__rt_sigprocmask.S
syscall_src += arch-arm/syscalls/__rt_sigtimedwait.S
syscall_src += arch-arm/syscalls/sigpending.S
syscall_src += arch-arm/syscalls/signalfd4.S
syscall_src += arch-arm/syscalls/socket.S
syscall_src += arch-arm/syscalls/socketpair.S
syscall_src += arch-arm/syscalls/bind.S
@@ -175,7 +186,6 @@ syscall_src += arch-arm/syscalls/__getcpu.S
syscall_src += arch-arm/syscalls/ioprio_set.S
syscall_src += arch-arm/syscalls/ioprio_get.S
syscall_src += arch-arm/syscalls/uname.S
syscall_src += arch-arm/syscalls/__wait4.S
syscall_src += arch-arm/syscalls/umask.S
syscall_src += arch-arm/syscalls/__reboot.S
syscall_src += arch-arm/syscalls/__syslog.S

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__brk)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_brk
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__brk)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__fcntl)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_fcntl
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__fcntl)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__fcntl64)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_fcntl64
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__fcntl64)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__fork)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_fork
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__fork)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__fstatfs64)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_fstatfs64
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__fstatfs64)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__getcpu)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_getcpu
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__getcpu)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__getcwd)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_getcwd
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__getcwd)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__getpriority)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_getpriority
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__getpriority)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__ioctl)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_ioctl
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__ioctl)

View File

@@ -1,6 +1,7 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__llseek)
mov ip, sp
@@ -10,7 +11,8 @@ ENTRY(__llseek)
ldr r7, =__NR__llseek
swi #0
ldmfd sp!, {r4, r5, r6, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__llseek)

View File

@@ -1,6 +1,7 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__mmap2)
mov ip, sp
@@ -10,7 +11,8 @@ ENTRY(__mmap2)
ldr r7, =__NR_mmap2
swi #0
ldmfd sp!, {r4, r5, r6, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__mmap2)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__open)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_open
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__open)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__openat)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_openat
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__openat)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__ptrace)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_ptrace
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__ptrace)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__reboot)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_reboot
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__reboot)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__rt_sigaction)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_rt_sigaction
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__rt_sigaction)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__rt_sigprocmask)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_rt_sigprocmask
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__rt_sigprocmask)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__rt_sigtimedwait)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_rt_sigtimedwait
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__rt_sigtimedwait)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__sched_getaffinity)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_sched_getaffinity
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__sched_getaffinity)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__set_tls)
.save {r4, r7}
stmfd sp!, {r4, r7}
ldr r7, =__NR_ARM_set_tls
mov ip, r7
ldr r7, =__ARM_NR_set_tls
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__set_tls)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__setresuid)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_setresuid32
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__setresuid)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__setreuid)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_setreuid32
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__setreuid)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__setuid)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_setuid32
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__setuid)

View File

@@ -1,14 +1,15 @@
/* autogenerated by gensyscalls.py */
#include <asm/unistd.h>
#include <linux/err.h>
#include <machine/asm.h>
#include <sys/linux-syscalls.h>
ENTRY(__sigsuspend)
.save {r4, r7}
stmfd sp!, {r4, r7}
mov ip, r7
ldr r7, =__NR_sigsuspend
swi #0
ldmfd sp!, {r4, r7}
movs r0, r0
bxpl lr
b __set_syscall_errno
mov r7, ip
cmn r0, #(MAX_ERRNO + 1)
bxls lr
neg r0, r0
b __set_errno
END(__sigsuspend)

Some files were not shown because too many files have changed in this diff Show More