)]}'
{
  "log": [
    {
      "commit": "5cec377f49d6429b19895eb632225cd757ea611e",
      "tree": "bcd08fe1e6b656a5a4e235a225fbe88feb54a112",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:45:23 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:56:12 2018 -0800"
      },
      "message": "Address a bunch of clang-tidy complaints.\n\nThere were a bunch more unreasonable/incorrect ones, but these ones\nseemed legit. Nothing very interesting, though.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f\n"
    },
    {
      "commit": "f1515f64087e4635a7f53d0e1725240f91a0c4b1",
      "tree": "7a9924fa106ddd80aed09d9bf7eee0b576dfda57",
      "parents": [
        "25a3087d6dde58e126c5ecb1033319ff333fcc59"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 12 15:20:28 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 12 15:20:28 2018 -0800"
      },
      "message": "Clean up the time(2) implementation.\n\nThis is also slightly faster for the no VDSO case (56ns vs 66ns).\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: I2b0edd06ee6942eb57c32678279278a53ca5ee9b\n"
    },
    {
      "commit": "4473ccd5b002b70b04fbcfb1e7e1b93aec7f86d2",
      "tree": "1789fb1df0c8befc8a678f3704d6f11445acfdd4",
      "parents": [
        "b1e90d29ac22cf9c33662bf11a8b63b7f8f5d37a"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Dec 04 13:51:29 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Jan 11 15:46:11 2018 +0000"
      },
      "message": "bionic: add vdso time()\n\ntime() can be a hot call, and it currently uses __vdso_gettimeofday,\nwhich is already pretty fast (~3 times faster than the syscall),\nbut with a __vdso_time call it is ~3 times even faster, in part\nbecause __vdso_time does not require interlocking with updates,\nand the read for just the seconds is atomic.  __vdso_time is\nalways available, whereas __vdso_gettimeofday is gated on access\nto the physical timers.  arm improvement is compelling (x10),\nx86 improvement is even more pronounced (x100).\n\n[TL;DR]\n\nw/vdso32 kernel patches, locked cores to MAX, little cores only.\n\nBEFORE:\n\nhikey960 vdso (aarch64):\n\n----------------------------------------------------------------------\nBenchmark                               Time           CPU Iterations\n----------------------------------------------------------------------\nBM_time_clock_gettime                  48 ns         48 ns   15414753\nBM_time_clock_gettime_syscall         175 ns        175 ns    4062031\nBM_time_clock_gettime_REALTIME         44 ns         44 ns   15897875\nBM_time_clock_gettime_BOOTTIME         47 ns         47 ns   14307903\nBM_time_clock_gettime_TAI             210 ns        210 ns    3341372\nBM_time_clock_gettime_unsupported     100 ns        100 ns    7030649\nBM_time_gettimeofday                   47 ns         47 ns   14969643\nBM_time_gettimeofday_syscall          163 ns        163 ns    4283542\nBM_time_time                           59 ns         59 ns   11815385\n\nhikey960 vdso32 (aarch32):\n\n----------------------------------------------------------------------\nBenchmark                               Time           CPU Iterations\n----------------------------------------------------------------------\nBM_time_clock_gettime                  90 ns         90 ns    7572898\nBM_time_clock_gettime_syscall         251 ns        251 ns    2763442\nBM_time_clock_gettime_REALTIME         81 ns         80 ns    8699536\nBM_time_clock_gettime_BOOTTIME         97 ns         97 ns    7256667\nBM_time_clock_gettime_TAI             272 ns        272 ns    2570419\nBM_time_clock_gettime_unsupported     160 ns        160 ns    4379819\nBM_time_gettimeofday                   73 ns         73 ns    9608922\nBM_time_gettimeofday_syscall          200 ns        199 ns    3527957\nBM_time_time                          123 ns        123 ns    5651095\n\nx86_64 (glibc):\n\n--------------------------------------------------------------------\nBenchmark                             Time           CPU Iterations\n--------------------------------------------------------------------\nBM_time_clock_gettime                  21 ns         21 ns   28873070\nBM_time_clock_gettime_syscall         224 ns        224 ns    3095370\nBM_time_clock_gettime_REALTIME         17 ns         17 ns   42083086\nBM_time_clock_gettime_BOOTTIME        239 ns        239 ns    2924015\nBM_time_clock_gettime_TAI             236 ns        236 ns    2961423\nBM_time_clock_gettime_unsupported     221 ns        221 ns    3357696\nBM_time_gettimeofday                 22 ns         22 ns   27975154\nBM_time_gettimeofday_syscall        238 ns        238 ns    2882032\nBM_time_time                          2 ns          2 ns  340354885\nBM_time_time_syscall                207 ns        207 ns    3383073\n\nimx7d_pico IOT nyc (w/arm,cpu-registers-not-fw-configured) (armv7a):\n(virtual timers)\n\nBenchmark                           Time(ns)    CPU(ns) Iterations\n------------------------------------------------------------------\nBM_time_clock_gettime                     20        477    1489362\nBM_time_clock_gettime_syscall             20        487    1458333\nBM_time_clock_gettime_REALTIME            19        464    1400000\nBM_time_clock_gettime_BOOTTIME            29        700    1000000\nBM_time_clock_gettime_TAI                 29        690    1000000\nBM_time_clock_gettime_unsupported          9        227    3043478\nBM_time_gettimeofday                      18        444    1555556\nBM_time_gettimeofday_syscall              19        456    1555556\nBM_time_time                              21        497    1166667\n\nimx7d_pico IOT nyc (wo/arm,cpu-registers-not-fw-configured) (armv7a):\n(physical timers)\n\nBenchmark                           Time(ns)    CPU(ns) Iterations\n------------------------------------------------------------------\nBM_time_clock_gettime                      6        144    4666667\nBM_time_clock_gettime_syscall             20        486    1400000\nBM_time_clock_gettime_REALTIME             6        136    5000000\nBM_time_clock_gettime_BOOTTIME             6        153    4375000\nBM_time_clock_gettime_TAI                 31        760    1000000\nBM_time_clock_gettime_unsupported         10        233    3043478\nBM_time_gettimeofday                       6        140    5000000\nBM_time_gettimeofday_syscall              19        450    1555556\nBM_time_time                               9        203    3500000\n\nAFTER:\n\nhikey960 vdso (aarch64):\n\n--------------------------------------------------------------------\nBenchmark                             Time           CPU Iterations\n--------------------------------------------------------------------\nBM_time_clock_gettime                48 ns         48 ns   15414753\nBM_time_clock_gettime_syscall       175 ns        175 ns    4062031\nBM_time_clock_gettime_REALTIME       44 ns         44 ns   15897875\nBM_time_clock_gettime_BOOTTIME       47 ns         47 ns   14307903\nBM_time_clock_gettime_TAI           210 ns        210 ns    3341372\nBM_time_clock_gettime_unsupported   100 ns        100 ns    7030649\nBM_time_gettimeofday                 47 ns         47 ns   14975314\nBM_time_gettimeofday_syscall        164 ns        164 ns    4278797\nBM_time_time                         16 ns         16 ns   42932165\n\nhikey960 vdso32 (aarch32):\n\n--------------------------------------------------------------------\nBenchmark                             Time           CPU Iterations\n--------------------------------------------------------------------\nBM_time_clock_gettime                90 ns         90 ns    7572898\nBM_time_clock_gettime_syscall       251 ns        251 ns    2763442\nBM_time_clock_gettime_REALTIME       81 ns         80 ns    8699536\nBM_time_clock_gettime_BOOTTIME       97 ns         97 ns    7256667\nBM_time_clock_gettime_TAI           272 ns        272 ns    2570419\nBM_time_clock_gettime_unsupported   160 ns        160 ns    4379819\nBM_time_gettimeofday                 73 ns         73 ns    9596230\nBM_time_gettimeofday_syscall        199 ns        199 ns    3575428\nBM_time_time                         35 ns         35 ns   19798801\n\nimx7d_pico IOT nyc (w/arm,cpu-registers-not-fw-configured) (armv7a):\n\nBenchmark                           Time(ns)    CPU(ns) Iterations\n------------------------------------------------------------------\nBM_time_clock_gettime                     20        477    1489362\nBM_time_clock_gettime_syscall             20        487    1458333\nBM_time_clock_gettime_REALTIME            19        464    1400000\nBM_time_clock_gettime_BOOTTIME            29        700    1000000\nBM_time_clock_gettime_TAI                 29        690    1000000\nBM_time_clock_gettime_unsupported          9        227    3043478\nBM_time_gettimeofday                      18        444    1555556\nBM_time_gettimeofday_syscall              19        456    1555556\nBM_time_time                               2         50   11666667\n\nimx7d_pico IOT nyc (wo/arm,cpu-registers-not-fw-configured) (armv7a):\n\nBenchmark                           Time(ns)    CPU(ns) Iterations\n------------------------------------------------------------------\nBM_time_clock_gettime                      6        144    4666667\nBM_time_clock_gettime_syscall             20        486    1400000\nBM_time_clock_gettime_REALTIME             6        136    5000000\nBM_time_clock_gettime_BOOTTIME             6        153    4375000\nBM_time_clock_gettime_TAI                 31        760    1000000\nBM_time_clock_gettime_unsupported         10        233    3043478\nBM_time_gettimeofday                       6        140    5000000\nBM_time_gettimeofday_syscall              19        450    1555556\nBM_time_time                               2         50   10000000\n\nTest: bionic-unit-tests --gtest_filter\u003dtime.time\n      taskset F bionic-benchmarks --bionic_xml\u003dvdso.xml \\\n          --benchmark_filter\u003d\u0027BM_time_(time*|clock_gettime*|gettimeofday*)\u0027\nBug: 63737556\nChange-Id: I81b088a12ca41a6c4733d46c5477527777138efa\n"
    },
    {
      "commit": "06016f226efe7aff2736643cb8e719c513948ecc",
      "tree": "9966630fba35664dc74ac357c43dc81257115410",
      "parents": [
        "581723ebc7acdbf8b095b44928dac3d0767382fa"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Jan 05 11:39:28 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jan 10 10:24:06 2018 +0100"
      },
      "message": "Fix dlclose for libraries with thread_local dtors\n\nIntroduce new flag to mark soinfo as TLS_NODELETE when\nthere are thread_local dtors associated with dso_handle\nbelonging to it.\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*\nTest: bionic-unit-tests-glibc --gtest_filter\u003ddl*\nBug: https://github.com/android-ndk/ndk/issues/360\nChange-Id: I724ef89fc899788f95c47e6372c38b3313f18fed\n"
    },
    {
      "commit": "cb239bda6569c48efd3925bb87682fc0efa077fd",
      "tree": "becb3004fc64eee97b8dd3af604787b8a8eaa161",
      "parents": [
        "2c5f914584704878d6d1e0225304bd48844329e3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 20 17:37:11 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 21 17:44:22 2017 -0800"
      },
      "message": "Simplify atoi*/strto* for signed integers.\n\nMake the cost of strto\u003csigned\u003e closer to the cost of strto\u003cunsigned\u003e\nby removing an `if` from the inner loop. Previously a signed conversion\ncost 10ns more than an unsigned one.\n\nAfter:\n\n  BM_inttypes_strtoimax         81 ns         81 ns    8603362\n  BM_inttypes_strtoumax         78 ns         78 ns    8967174\n  BM_stdlib_strtol              81 ns         81 ns    8685537\n  BM_stdlib_strtoll             81 ns         81 ns    8685481\n  BM_stdlib_strtoul             78 ns         78 ns    8962569\n  BM_stdlib_strtoull            78 ns         78 ns    8972023\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: I72dd5499427b6a940bd94c4d6f727f7efe134d7e\n"
    },
    {
      "commit": "1133fecde3899183b5c0edee9c92736ad878a290",
      "tree": "00c55fa5d1a6971e5cbf47d4c6d84112c5c9165c",
      "parents": [
        "9dc37b9439063df2b0db6d1b3a37b491bc3cd427"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 16:30:55 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 16:37:01 2017 -0800"
      },
      "message": "Use inline ctype functions for ato*/strto* and scanf.\n\nThis also let us remove the `unsigned char` casts, since we define our\ninlines to work for all values.\n\nBefore:\n\n  Benchmark                      Time           CPU Iterations\n  -------------------------------------------------------------\n  BM_inttypes_strtoimax        112 ns        112 ns    6222193\n  BM_inttypes_strtoumax        104 ns        104 ns    6725010\n  BM_stdlib_strtol             113 ns        113 ns    6195861\n  BM_stdlib_strtoll            113 ns        113 ns    6195633\n  BM_stdlib_strtoul            105 ns        105 ns    6691394\n  BM_stdlib_strtoull           105 ns        105 ns    6690695\n\n  BM_stdio_scanf_d                    504 ns        503 ns    1385224\n  BM_stdio_scanf_maps                1900 ns       1898 ns     369260\n  BM_stdio_scanf_maps_baseline       1030 ns       1030 ns     678832\n  BM_stdio_scanf_s                    433 ns        432 ns    1619086\n\nAfter:\n\n  BM_inttypes_strtoimax         91 ns         91 ns    7718194\n  BM_inttypes_strtoumax         82 ns         82 ns    8508052\n  BM_stdlib_strtol              92 ns         92 ns    7674694\n  BM_stdlib_strtoll             91 ns         91 ns    7639228\n  BM_stdlib_strtoul             83 ns         82 ns    8500304\n  BM_stdlib_strtoull            82 ns         82 ns    8504929\n\n  BM_stdio_scanf_d                    465 ns        465 ns    1507891\n  BM_stdio_scanf_maps                1836 ns       1836 ns     381082\n  BM_stdio_scanf_maps_baseline        846 ns        845 ns     830881\n  BM_stdio_scanf_s                    419 ns        419 ns    1671979\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: I44681daf16c4328b060770cf11fc0633157c427f\n"
    },
    {
      "commit": "9dc37b9439063df2b0db6d1b3a37b491bc3cd427",
      "tree": "875c7be62c7bdb0bcfa8be79350e6b053d825603",
      "parents": [
        "811a1dd8680ccc0c052651cb30ecf6416613c627",
        "1921dce886c8ea17fb7958b59a18a71b6dc7ff96"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 20 00:05:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 20 00:05:57 2017 +0000"
      },
      "message": "Merge \"Refactor the ato* and strto* family.\""
    },
    {
      "commit": "1921dce886c8ea17fb7958b59a18a71b6dc7ff96",
      "tree": "7e28abec7cf31f9e06ebe79472e35a8b12af5ed2",
      "parents": [
        "721a5305e24b69b68ecc9431526f32131abc8f6c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 10:27:27 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 13:55:54 2017 -0800"
      },
      "message": "Refactor the ato* and strto* family.\n\nThere are no meaningful changes here, just a minimal conversion to two\nC++ templates to make further changes easier.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: I958fbf17a85f19dd8f17bfb4bbb9314d220daa3b\n"
    },
    {
      "commit": "e275d6d72db1868056a204e8483a7346a28cb8d6",
      "tree": "3191e33ca242518f7d486c6b37212c7f682498b0",
      "parents": [
        "721a5305e24b69b68ecc9431526f32131abc8f6c"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Dec 11 23:31:33 2017 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Dec 18 15:17:55 2017 -0800"
      },
      "message": "Split properties into their own class to make testing better\n\nReinitializing system properties can result in crashes later in the\nprogram, and is generally not recommended or even supported.  This\nchange moves the actual logic for system properties into a class that\ncan be tested in isolation, without reinitializing the actual system\nproperty area used in libc.\n\nBug: 62197783\nTest: boot devices, ensure properties work\nTest: system property unit tests and benchmarks\nChange-Id: I9ae6e1b56c62f51a4d3fdb5b62b8926cef545649\n"
    },
    {
      "commit": "b9d5a87b1b63095d7ad7a3d87d8d110d1662fcaa",
      "tree": "98b230bc67779a8da0d8fc085c4f2b32f8c8502f",
      "parents": [
        "59a6ee963f96eedf01df7db1e57397ff71852b15",
        "96bbc5ca87b0cfbcab3bd9e5fc49b71420bf3c08"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 15 17:41:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 15 17:41:27 2017 +0000"
      },
      "message": "Merge \"Use treble_linker_namespace instead of treble.\""
    },
    {
      "commit": "96bbc5ca87b0cfbcab3bd9e5fc49b71420bf3c08",
      "tree": "1980633e8aa554996f4c16a85e0e976bf34d80fe",
      "parents": [
        "78b40e8fe1f37de319344c92d8e6e1eb595c1067"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Dec 13 14:11:26 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Dec 13 14:11:26 2017 -0800"
      },
      "message": "Use treble_linker_namespace instead of treble.\n\nMore specific. Treble is being removed.\n\nBug: 62019611\nTest: manual\nChange-Id: I94c21c6a5cb6a258bfb36a0b7da23abdc73a67fb\n"
    },
    {
      "commit": "79249b0897016cdcd1344f4c5e8876fbf433de3e",
      "tree": "6b7a479b3a82507a0070777d1be3e6fa73b78cc3",
      "parents": [
        "6f9c35ded294ca7b0b8f9042f705cbfca1ec8518"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 07 08:19:20 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 07 09:41:48 2017 -0800"
      },
      "message": "bionic: add vdso clock_getres\n\nclock_getres() should not be a hot call, nevertheless it is\n~6-7 times faster for supported clock ids if it uses\n__vdso_clock_getres if available.  There is a 3% performance\npenalty for unsupported clock ids via __vdso_clock_getres with\nrespect to a direct syscall.\n\n[TL;DR]\n\nw/vdso32 kernel patches, locked cores to MAX, little cores only.\n\nBEFORE:\n\nhikey960 vdso (aarch64):\n\n----------------------------------------------------------------------\nBenchmark                               Time           CPU Iterations\n----------------------------------------------------------------------\nBM_time_clock_getres                  126 ns        126 ns    5577874\nBM_time_clock_getres_syscall          127 ns        127 ns    5505016\nBM_time_clock_getres_REALTIME         126 ns        126 ns    5574682\nBM_time_clock_getres_BOOTTIME         126 ns        126 ns    5575237\nBM_time_clock_getres_TAI              126 ns        126 ns    5576810\nBM_time_clock_getres_unsupported      128 ns        128 ns    5480189\n\nhikey960 vdso32 (aarch32):\n\n----------------------------------------------------------------------\nBenchmark                               Time           CPU Iterations\n----------------------------------------------------------------------\nBM_time_clock_getres                  199 ns        199 ns    3508708\nBM_time_clock_getres_syscall          220 ns        220 ns    3184676\nBM_time_clock_getres_REALTIME         199 ns        199 ns    3509697\nBM_time_clock_getres_BOOTTIME         199 ns        199 ns    3513551\nBM_time_clock_getres_TAI              200 ns        199 ns    3512412\nBM_time_clock_getres_unsupported      196 ns        196 ns    3575609\n\nx86_64 (glibc):\n\n---------------------------------------------------------------------\nBenchmark                              Time           CPU Iterations\n---------------------------------------------------------------------\nBM_time_clock_getres                 252 ns        252 ns    2370263\nBM_time_clock_getres_syscall         215 ns        215 ns    3287497\nBM_time_clock_getres_REALTIME        214 ns        214 ns    3294228\nBM_time_clock_getres_BOOTTIME        213 ns        213 ns    3277519\nBM_time_clock_getres_TAI             213 ns        213 ns    3294991\nBM_time_clock_getres_unsupported     206 ns        206 ns    3450654\n\nimx7d_pico IOT nyc (w/arm,cpu-registers-not-fw-configured) (armv7a):\n(Virtual Timers)\n\nBenchmark                           Time(ns)    CPU(ns) Iterations\n------------------------------------------------------------------\nBM_time_clock_getres                      16        345    2000000\nBM_time_clock_getres_syscall              16        339    2121212\nBM_time_clock_getres_REALTIME             17        350    2058824\nBM_time_clock_getres_BOOTTIME             17        345    2000000\nBM_time_clock_getres_TAI                  16        350    2000000\nBM_time_clock_getres_unsupported          13        284    2500000\n\nAFTER:\n\nhikey960 vdso (aarch64):\n\n---------------------------------------------------------------------\nBenchmark                              Time           CPU Iterations\n---------------------------------------------------------------------\nBM_time_clock_getres                  18 ns         18 ns   37880389\nBM_time_clock_getres_syscall         127 ns        127 ns    5520029\nBM_time_clock_getres_REALTIME         18 ns         18 ns   37879962\nBM_time_clock_getres_BOOTTIME         19 ns         18 ns   37878361\nBM_time_clock_getres_TAI             131 ns        131 ns    5368484\nBM_time_clock_getres_unsupported      97 ns         97 ns    7182864\n\nhikey960 vdso32 (aarch32):\n\n---------------------------------------------------------------------\nBenchmark                              Time           CPU Iterations\n---------------------------------------------------------------------\nBM_time_clock_getres                  36 ns         36 ns   19205240\nBM_time_clock_getres_syscall         212 ns        212 ns    3297100\nBM_time_clock_getres_REALTIME         36 ns         36 ns   19219109\nBM_time_clock_getres_BOOTTIME         36 ns         36 ns   19222490\nBM_time_clock_getres_TAI             206 ns        206 ns    3402868\nBM_time_clock_getres_unsupported     159 ns        159 ns    4409492\n\nimx7d_pico IOT nyc (wo/arm,cpu-registers-not-fw-configured) (armv7a):\n(Physical Timers)\n\nBenchmark                           Time(ns)    CPU(ns) Iterations\n------------------------------------------------------------------\nBM_time_clock_getres                       2         48   14000000\nBM_time_clock_getres_syscall              14        335    2058824\nBM_time_clock_getres_REALTIME              2         49   14583333\nBM_time_clock_getres_BOOTTIME              2         48   14000000\nBM_time_clock_getres_TAI                  14        350    2058824\nBM_time_clock_getres_unsupported           8        203    3500000\n\nTest: taskset F \\\n        /data/benchmarktest{64}/bionic-benchmarks/bionic-benchmarks \\\n        --bionic_xml\u003dvdso.xml --benchmark_filter\u003dBM_time_clock_getres*\nBug: 63737556\nChange-Id: I80c0a5106625d76720287f715fcf145d2aad1705\n"
    },
    {
      "commit": "c1f6219c32543cb1d6701b13eb53b82abe1e0a12",
      "tree": "81b7c1c2135335afdedb85a0669980d73dec57c6",
      "parents": [
        "d5e486cc88296ab71d09dff01df0230caa5012ae",
        "a6714d106b6dbab6cf994c8a4e1eff601a17d772"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 05 17:09:17 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 05 17:09:17 2017 +0000"
      },
      "message": "Merge \"Make our fortify FD_ISSET const, and expose the fd_mask type.\""
    },
    {
      "commit": "a6714d106b6dbab6cf994c8a4e1eff601a17d772",
      "tree": "ad5552dd505ed68b35f9aff8d91f3b8d17192872",
      "parents": [
        "fdacec1d4237373354d10c5a400c9c7a3a975285"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 04 14:16:38 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 04 14:16:38 2017 -0800"
      },
      "message": "Make our fortify FD_ISSET const, and expose the fd_mask type.\n\nBug: http://b/70171464\nTest: ran tests\nChange-Id: Ifbee29d9888ce7cf76b99844dd9700128256a486\n"
    },
    {
      "commit": "b8facf2aca530df01914f07c2c0693ff4319daaa",
      "tree": "3d6d0ed7d5fa4c64b5e511045e0e53017f964463",
      "parents": [
        "bfd06f63e538681beeb9ec67bccd994ad9cd5bdf"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Dec 04 13:46:36 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Dec 04 13:47:17 2017 -0800"
      },
      "message": "Reformat SIGRTMIN comments.\n\nTest: none\nChange-Id: Ief1f0c06c17df6704863c8c7176941447f2e28f4\n"
    },
    {
      "commit": "7bfacaabf250d8aed5de82e8091b3251bd8dd53f",
      "tree": "d7f131953ebc2112db639e19dad7f152faa7f155",
      "parents": [
        "0a25aa60a2a7cc6b681dd2e31321000cedbff77e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 19:58:00 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 18:36:38 2017 -0800"
      },
      "message": "Fix posix_spawn signal defaulting.\n\nAdd a new stress test, and fix the code to pass it. We need to ensure that\nwe reset signal handlers for caught signals before unblocking signals in\nthe child, we need to ensure that this happens even if you haven\u0027t passed\na pthread_spawn_attr_t, and we need to ensure that this happens if you\npass in an empty sigdefault set.\n\nBug: http://b/68707996\nTest: ran tests\nChange-Id: I348e9b17b1bdf221591da42c0ada133d98471d66\n"
    },
    {
      "commit": "9591df5294527616686c9a99f14a5d94572f637c",
      "tree": "43d8ffa8dac23e0712b7ce2bbb5e2386d74ff851",
      "parents": [
        "b7d6df2b61f7941e24d362105a43950da6f2da05"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 27 20:30:25 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 09:09:01 2017 -0800"
      },
      "message": "Fix vdso system call fallback failures.\n\nWhen a vdso call falls back to making a regular system call, the inline\ncode for the system call doesn\u0027t know about errno and just leaves the\nusual kernel result to be translated. Add the missing translation.\n\nAlso fix the defaults for non-vdso systems so we actually take the\nfallback path (and so avoid unintentionally doing the errno translation\ntwice in those cases).\n\nBug: http://b/69626243\nTest: ran new tests from http://b/63737556\nChange-Id: If379632ea2e059e3d3bc3ff41bf3608dc05fb0a3\n"
    },
    {
      "commit": "8c75675ec69a65faf9bd422b4df19588151da95d",
      "tree": "5387aeb938fc6e6c49bdecf6c87bc3559710e5d3",
      "parents": [
        "e0dfad45047ed5276b40f126f199b312fb1ea498",
        "baed51ee3a13dae4b87b11870bdf7f10bdc9efc1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 16 21:46:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 16 21:46:49 2017 +0000"
      },
      "message": "Merge \"Change ARG_MAX/_SC_ARG_MAX back to a constant.\""
    },
    {
      "commit": "c3f1b6a23d41d95b45cf66c57323939c3450d196",
      "tree": "3df7a9080cc0dc479874b8ab6e9f8f732ba6316e",
      "parents": [
        "de5f9a1c54eebd1b66a5dfeaffbe3e703e76c86e",
        "2b8ab4b5da58105432081ed8302a4364583c2279"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 16 00:08:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 16 00:08:31 2017 +0000"
      },
      "message": "Merge \"Simplify the posix_spawn sigdefault logic.\""
    },
    {
      "commit": "baed51ee3a13dae4b87b11870bdf7f10bdc9efc1",
      "tree": "7c04199156be4e1e7101b2c57cd4fa558baadcda",
      "parents": [
        "de5f9a1c54eebd1b66a5dfeaffbe3e703e76c86e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 15 15:14:35 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 15 15:14:35 2017 -0800"
      },
      "message": "Change ARG_MAX/_SC_ARG_MAX back to a constant.\n\nAs per the lkml thread https://lkml.org/lkml/2017/11/1/946.\n\nBug: http://b/65818597\nTest: ran tests\nChange-Id: I7a0610e6903e6761f2b31416e2f5017bd7a60659\n"
    },
    {
      "commit": "4362f897f73f95b5b9e48f2b758b5800f1cc83a2",
      "tree": "c02e8677078fba76d19b08d95427af4391cc329e",
      "parents": [
        "315dd896deae928f3e64f94d75cd20566cc95183"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Nov 14 08:50:43 2017 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Nov 15 10:31:49 2017 -0800"
      },
      "message": "Only use uids and gids for which we\u0027ve allocated AIDs\n\nCurrently, getpwnam, getpwent, etc return successfully for any uid\nfrom AID_APP_START (10000) to AID_USER_OFFSET (100000) for each user.\nThis is not correct however, as only specific ranges above\nAID_APP_START are reserved as valid ranges.  This change corrects this.\n\nThis is particularly important as the newly added AID_OVERFLOWUID is\n65534, which is above AID_APP_START but not in any reserved range,\ncollided with the faulty returned values.\n\nBug: 69119022\nBug: 69128408\nTest: pwd/grp bionic unit tests\nChange-Id: I3dae97a90597915fa30a88fe27cda88b107e9c35\n"
    },
    {
      "commit": "2b8ab4b5da58105432081ed8302a4364583c2279",
      "tree": "f145d820aaf468b3bc77df03370731a892edc5d5",
      "parents": [
        "40a5cfa8d11c7a36c546eb9acff19975a99450ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 14 22:31:43 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 14 22:31:43 2017 -0800"
      },
      "message": "Simplify the posix_spawn sigdefault logic.\n\nI don\u0027t think there\u0027s any observable difference, but this is certainly\nsimpler.\n\nBug: http://b/68707996\nTest: ran tests\nChange-Id: Id9e1a7d40533c90d073ebf391a72bbdfe79627de\n"
    },
    {
      "commit": "fd44b9f8d89ce4f33ff39d7f340a5ed08029d21c",
      "tree": "24268cde0a4afd99c6500691f949687c65ce5985",
      "parents": [
        "0793e3dd07b8ecb5bd0a0e91740f68f42f4f7e60"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Nov 08 14:01:00 2017 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Nov 14 08:50:52 2017 -0800"
      },
      "message": "Split system_properties.cpp into its component pieces\n\nsystem_properties.cpp is a little bit unmanageable in its current\nform, and is overdue for a refactoring into more clearly defined\ncomponents.\n\nOf particular interest, is creating of a Contexts interface that\nhandles mapping of system property name -\u003e SEContext and its\nassociated prop_area, and creating two classes that implement the\ncurrent and legacy functionality.  This is needed as there will likely\nbe a third even newer way to do this mapping.\n\nBug: 36001741\nTest: boot bullhead, system property unit tests\nChange-Id: Ie75ec6fea1a95f90813918f54669d533e51327c6\n"
    },
    {
      "commit": "38f01e05ef7f7ef18a43339436fba645d123b838",
      "tree": "e6dbb0977a34d052056e935d86bd3cdcc9473188",
      "parents": [
        "dfece7a3ee1b8a11abea3f55bf44df21ebc4bc79"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 27 15:28:54 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 27 15:40:15 2017 -0700"
      },
      "message": "Preserve historical pthread_create scheduler behavior better.\n\nAt the cost of two flag bits for what POSIX thinks should be a boolean\nchoice, plus somewhat confusing behavior from pthread_attr_getinheritsched\ndepending on when you call it/what specific scheduler attributes you\u0027ve\nset in the pthread_attr_t, we can emulate the old behavior exactly and\nprevent annoying SELinux denial spam caused by calls to sched_setscheduler.\n\nBug: http://b/68391226\nTest: adb logcat on boot contains no sys_nice avc denials\nChange-Id: I4f759c2c4fd1d80cceb0912d7da09d35902e2e5e\n"
    },
    {
      "commit": "fa432524a66e5797874ef50e4ede95ded4cee199",
      "tree": "63ae5385f8966b7dd107ed3e73b1d1043b8cb708",
      "parents": [
        "ae7483db2a6a93c0cb0c0eebc26f64b23168c6d3"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Oct 25 13:07:45 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Oct 27 10:01:46 2017 +0200"
      },
      "message": "Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols\n\nTo make it easier for Native Bridge implementations\nto override these symbols.\n\nBug: http://b/67993967\nTest: make\nChange-Id: I4c53e53af494bca365dd2b3305ab0ccc2b23ba44\n"
    },
    {
      "commit": "343d1c49535b4d33b383f34d03a3ca1d2681c442",
      "tree": "673eac1fbf229e1dc03ffe241cf944da90ca0222",
      "parents": [
        "8ae3fe2c50ccb16617fb1d28bd8bda7352528853"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 18:22:43 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 18:25:19 2017 -0700"
      },
      "message": "Don\u0027t allow LIBC_DEBUG_MALLOC_OPTIONS to cross security boundaries.\n\nBug: http://b/68003719\nTest: LIBC_DEBUG_MALLOC_OPTIONS\u003disbad1 MALLOC_CONF\u003disbad2 su 0 /system/bin/sh -c \u0027/system/bin/echo opt\u003d$LIBC_DEBUG_MALLOC_OPTIONS conf\u003d$MALLOC_CONF\u0027\nChange-Id: I796cc21b230a96cb0ed87d02ddcb1706a7749a90\n"
    },
    {
      "commit": "8ae3fe2c50ccb16617fb1d28bd8bda7352528853",
      "tree": "c42fd934ad68cd1838f9f976fe7692976d2338eb",
      "parents": [
        "d10d03ebd6647239806bd4da6149eaa169890ad7",
        "cc3d04f03ac0c3d60d00ae021f41f3610bb3b3eb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 27 01:03:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 27 01:03:32 2017 +0000"
      },
      "message": "Merge \"Add null checks to \u003cdirent.h\u003e functions.\""
    },
    {
      "commit": "cc3d04f03ac0c3d60d00ae021f41f3610bb3b3eb",
      "tree": "83fc235a8357f5b12802ccc3538dd14d38cef456",
      "parents": [
        "c6291b081d2089ba7a16d7777fb2713d828d537f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 15:38:06 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 16:16:33 2017 -0700"
      },
      "message": "Add null checks to \u003cdirent.h\u003e functions.\n\nMove all the new checks over to the existing __fortify_fatal.\n\nBug: http://b/67455242\nTest: ran tests\nChange-Id: Idb899c58c32d52d3b423caf1a91feb7defcba9b3\n"
    },
    {
      "commit": "374848a16e7d4ed2394474bf5298cbe4ddab265a",
      "tree": "74e9d08c5e26a69e16eba303fa0d17968dc396d1",
      "parents": [
        "c6291b081d2089ba7a16d7777fb2713d828d537f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 12:54:32 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 12:56:21 2017 -0700"
      },
      "message": "The main thread should just INHERIT its scheduler attributes.\n\nExplicitly setting SCHED_OTHER/0 was causing SELinux denials:\n\n  02-08 09:58:05.430   661   661 I auditd  : type\u003d1400 audit(0.0:20): avc: denied { sys_nice } for comm\u003d\"grep\" capability\u003d23 scontext\u003du:r:init-qcom-devstart-sh:s0 tcontext\u003du:r:init-qcom-devstart-sh:s0 tclass\u003dcapability permissive\u003d0\n  02-08 09:58:05.430   662   662 I auditd  : type\u003d1400 audit(0.0:21): avc: denied { sys_nice } for comm\u003d\"sed\" capability\u003d23 scontext\u003du:r:init-qcom-devstart-sh:s0 tcontext\u003du:r:init-qcom-devstart-sh:s0 tclass\u003dcapability permissive\u003d0\n\nAlso use public pthread API rather than modifying the main thread\u0027s\npthread_attr_t directly.\n\nBug: http://b/68328561\nTest: strace -f -e true\nChange-Id: I65b7ab3ce285a2901a6eaacb243000c780883c3a\n"
    },
    {
      "commit": "c8a2612ffc13a31aaedec26a45cdceb6fa8199cb",
      "tree": "8c12929cde798f3a49dfe0d9a59085d8b205f0b6",
      "parents": [
        "048e18045d6e7bcaf0870d8bb7cb671214c9ad50",
        "8aecba7aa6b7f7b92f69c0d3febef59fdb135f87"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 16:12:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 26 16:12:04 2017 +0000"
      },
      "message": "Merge \"Implement pthread_attr_getinheritsched/pthread_attr_setinheritsched.\""
    },
    {
      "commit": "8aecba7aa6b7f7b92f69c0d3febef59fdb135f87",
      "tree": "fd3d9743a0e282dcbb2a8b2b51906f7da3a84468",
      "parents": [
        "435e6384de8f9e35b8878b1ccda5bb5686c15207"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 17 15:34:41 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 25 14:28:42 2017 -0700"
      },
      "message": "Implement pthread_attr_getinheritsched/pthread_attr_setinheritsched.\n\nHistorically, Android defaulted to EXPLICIT but with a special case\nbecause SCHED_NORMAL/priority 0 was awkward. Because the code couldn\u0027t\nactually tell whether SCHED_NORMAL/priority 0 was a genuine attempt to\nexplicitly set those attributes (because the parent thread is SCHED_FIFO,\nsay) or just because the pthread_attr_t was left at its defaults.\n\nNow we support INHERIT, we could call sched_getscheduler to see whether\nwe actually need to call sched_setscheduler, but since the major cost\nis the fixed syscall overhead, we may as well just conservatively\ncall sched_setscheduler and let the kernel decide whether it\u0027s a\nno-op. (Especially because we\u0027d then have to add both sched_getscheduler\nand sched_setscheduler to any seccomp filter.)\n\nPlatform code (or app code that only needs to support \u003e\u003d P) can actually\nadd a call to pthread_attr_setinheritsched to say that they just want\nto inherit (if they know that none of their threads actually mess with\nscheduler attributes at all), which will save them a sched_setscheduler\ncall except in the doubly-special case of SCHED_RESET_ON_FORK (which we\ndo handle).\n\nAn alternative would be \"make pthread_attr_setschedparams and\npthread_attr_setschedprio set EXPLICIT and change the platform default\nto INHERIT\", but even though I can only think of weird pathological\nexamples where anyone would notice that change, that behavior -- of\npthread_attr_setschedparams/pthread_attr_setschedprio overriding an\nearlier call to pthread_attr_setinheritsched -- isn\u0027t allowed by POSIX\n(whereas defaulting to EXPLICIT is).\n\nIf we have a lot of trouble with this change in the app compatibility\ntesting phase, though, we\u0027ll want to reconsider this decision!\n\n -*-\n\nThis change also removes a comment about setting the scheduler attributes\nin main_thread because we\u0027d have to actually keep them up to date,\nand it\u0027s not clear that doing so would be worth the trouble.\n\nAlso make async_safe_format_log preserve errno so we don\u0027t have to be\nso careful around it.\n\nBug: http://b/67471710\nTest: ran tests\nChange-Id: Idd026c4ce78a536656adcb57aa2e7b2c616eeddf\n"
    },
    {
      "commit": "1d01fe8980d332a85f730bf2d2fef9dcf707c041",
      "tree": "41814512a8be716ba9ee7129beed7b1e85a9a23f",
      "parents": [
        "2e998d37ce5be9833c595bc97549793a81459ed4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 23 10:07:55 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 23 10:07:55 2017 -0700"
      },
      "message": "Fix LP32 large pid detection.\n\nBug: http://b/68046352\nTest: ran tests\nChange-Id: I89cb99173ca77e9457e677187430b61cedb55c04\n"
    },
    {
      "commit": "8f348a0cce048fc929b4ce0b850147cd7c737497",
      "tree": "0cb146fad1312d7b0f04bf8882ba122f1f6ec2d8",
      "parents": [
        "4075e21ba8ba79af1aa7feab6b1166f00f2e7566",
        "5c6a7bf0dc821bcaa49d5289f01360f8dd78aa86"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 20 18:40:17 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 20 18:40:17 2017 +0000"
      },
      "message": "Merge \"Remove some legacy declarations from \u003cmath.h\u003e.\""
    },
    {
      "commit": "ac29d9f3b9636818773d60df18eb17e79783f774",
      "tree": "b21bb54cdb9432056d9f83ffc8c80aea317ccdcd",
      "parents": [
        "1b6de8788918f806efd812b743dcc0bbdd232392",
        "fa386e0d1eb52478f11b7232d280919245c1616c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 19 21:49:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 21:49:29 2017 +0000"
      },
      "message": "Merge \"Add POSIX swab.\""
    },
    {
      "commit": "5c6a7bf0dc821bcaa49d5289f01360f8dd78aa86",
      "tree": "3c535768b792308647f3c7294d72799b2b70fb4d",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 19 13:56:28 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 19 14:15:31 2017 -0700"
      },
      "message": "Remove some legacy declarations from \u003cmath.h\u003e.\n\nThese are still needed for backwards compatibility with code built by old\nversions of the NDK, but we don\u0027t need to pollute the headers with them.\n\nAlso lose the hand-written code for these. The compiler-generated code\nis either the same or better, and no new code is calling these functions\nanyway.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ib01ad9805034433e0105aec882608cc8e6526f78\n"
    },
    {
      "commit": "1b6de8788918f806efd812b743dcc0bbdd232392",
      "tree": "a4b03d1cd2d338ba354a95a80ca7b30d8ee9196e",
      "parents": [
        "0fe734817fe79c80169ebafd5600a3311105203d",
        "b6d2b87d2d93eae0267f3c86017d5ebbc3cdb2f5"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 19 19:53:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 19:53:07 2017 +0000"
      },
      "message": "Merge \"Make __libc_init_main_thread and android_set_abort_message weak\""
    },
    {
      "commit": "b6d2b87d2d93eae0267f3c86017d5ebbc3cdb2f5",
      "tree": "b8ba0b16f41f42c3d5a78250ca5bd3c4c6df4eaf",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Oct 18 15:15:54 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Oct 19 18:18:23 2017 +0200"
      },
      "message": "Make __libc_init_main_thread and android_set_abort_message weak\n\nBug: http://b/67672033\nBug: http://b/67934730\nTest: make \u0026\u0026 flash and boot angler.\nTest: run bionic-unit-tests\nChange-Id: Ibf47f00dd7fae19014f56c857eb9712711363029\n"
    },
    {
      "commit": "4d215aad85cd9cba3e815eafb8c56eb5218eafb1",
      "tree": "9f987f65dfaa1dd321541189ea63c23b70c70cbc",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 15:54:56 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 16:26:17 2017 -0700"
      },
      "message": "Add POSIX fexecve.\n\nI\u0027m skeptical about the usefulness of this, but it\u0027s in POSIX, it\u0027s\nin glibc (but not iOS), and it is used in some internal source (test\nrunners and container code).\n\nBug: N/A\nTest: ran tests\nChange-Id: I92c5398f2a679b21a33fba92bc8e67e3ae2eb76f\n"
    },
    {
      "commit": "fa386e0d1eb52478f11b7232d280919245c1616c",
      "tree": "fcfb7d65c39ec91e1b1ec5bedeefe806861d21c4",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:34:32 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:34:32 2017 -0700"
      },
      "message": "Add POSIX swab.\n\nSurprisingly to me, there are actual uses of `swab` in the codebases\nI have available to search, including one with a #ifndef __ANDROID__\naround it.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ic91b78ae22bb65c346cb46dd38916f48d979abe0\n"
    },
    {
      "commit": "dff08ced5685a0d1adb0ef875a15caca99556e1e",
      "tree": "9b84626d5a3f8dec14c36ad7a42221b0e11a6f5a",
      "parents": [
        "bf886f621b7c5fb4f690fe182f42640410a32d5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 16 09:58:45 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 17 09:14:05 2017 -0700"
      },
      "message": "Add pthread_setschedprio.\n\nBug: http://b/26204555\nTest: ran tests\nChange-Id: Ic34062b9b6036a1ce2642a069514bab48a893338\n"
    },
    {
      "commit": "bf886f621b7c5fb4f690fe182f42640410a32d5c",
      "tree": "25e230e68d945e0e7eb221bb4c7a1acfd3089fd5",
      "parents": [
        "1ef6a6ad1a9708b79fc7c45296ddfa890d645064",
        "5033918092f27179b0c2bbe3babceaed509d4935"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 17 16:03:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 17 16:03:54 2017 +0000"
      },
      "message": "Merge \"Complete \u003cnetdb.h\u003e.\""
    },
    {
      "commit": "0e0e370154ea478c9d7102061cbb62d9bfea6c1d",
      "tree": "8a39ea9040d36a498bfb15815d16aa49f1bc06bb",
      "parents": [
        "a0f6dc577e1bf63e199599d8dc79311a3083aec2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Oct 12 13:34:42 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Oct 16 21:31:37 2017 -0700"
      },
      "message": "Add libc_nopthread.\n\nAdd a static library containing the non-pthread dependent parts of\nlibc.\n\nBug: http://b/64400027\nTest: sailfish boots\nTest: bionic-unit-tests32/64, no new failures\nTest: bionic-unit-tests-static32/64, no new failures\nChange-Id: I93dc3811acddad7936d11b369b98cefd945ee2d5\n"
    },
    {
      "commit": "5033918092f27179b0c2bbe3babceaed509d4935",
      "tree": "77f5a0f1eb5fec80dc7bc6a297eed66af83713b9",
      "parents": [
        "a27bfd4131441a24fcfe6b5b3cf1cf9469be6719"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 13 17:52:01 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 15 10:37:51 2017 -0700"
      },
      "message": "Complete \u003cnetdb.h\u003e.\n\nAdd all the missing \u003cnetdb.h\u003e functions.\n\nAlso fix getservbyport to handle a null protocol correctly.\n\nAlso fix getservbyname/getservbyport to not interfere with getservent.\n\nAlso fix endservent to reset getservent iteration.\n\nAlso reduce unnecessary differences from upstream NetBSD sethostent.c.\n\nThe servent implementation is still horrific, and we should\nprobably support protoent too so that debugging tools can use\ngetprotobyname/getprotobynumber.\n\nBug: N/A\nTest: ran tests\nChange-Id: I639108c46df0a768af297cf3bbce857cb1bef9d9\n"
    },
    {
      "commit": "c972ea7da0501d3082f06f65869776c786c19fca",
      "tree": "36a2c69a6fdca4c4da71da08cfc08e5e4cfcf395",
      "parents": [
        "9db0e013b195fb09831a17699e32bd1f40da823e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Oct 13 14:32:43 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Oct 13 14:38:55 2017 -0700"
      },
      "message": "Fix missing includes, again.\n\nTest: mma\nBug: None\nChange-Id: I17f07e51ebb425ebbcd2cd48e2aa173ab728c498\n"
    },
    {
      "commit": "01bb7bf6fb6b5b43c4b1ff00be79b64f01015691",
      "tree": "3142e44a0c79f3c15b1cb2286051ffec9be34f8b",
      "parents": [
        "b49ac81c8e7e4e0c6e931f97551236792e69d2be",
        "14e3ff9f09fdd52db43628ccd6f39a6d3fb41740"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 12 21:02:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 12 21:02:54 2017 +0000"
      },
      "message": "Merge \"Implement \u003cspawn.h\u003e.\""
    },
    {
      "commit": "a08f704e2a35aaa1173c762db037caa8aa166ba8",
      "tree": "050ad559f6855803a4a548a41e846b5ae0020dc1",
      "parents": [
        "36f7b8b7891f0af56eb61e7d32cc8cedb5ded8de",
        "8a311631edc0c6212d4f9c50854956d2233aea40"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Oct 12 00:22:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 12 00:22:57 2017 +0000"
      },
      "message": "Merge \"Allow read-only system properties to have arbitrary lengths\""
    },
    {
      "commit": "14e3ff9f09fdd52db43628ccd6f39a6d3fb41740",
      "tree": "8ed0ba1d0744ac95265e2ea634b6e1ff8d72d88c",
      "parents": [
        "e387c2f08841ac0f6578e903ab21b54d01f3266e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 06 16:58:36 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 11 14:57:49 2017 -0700"
      },
      "message": "Implement \u003cspawn.h\u003e.\n\nAs described here:\n\n  http://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html\n\nAnd here:\n\n  http://man7.org/linux/man-pages/man3/posix_spawn.3.html\n\nBug: N/A (but mentioned in my inbox since 2013)\nTest: ran tests\nChange-Id: I0b27b2919b660779e3bd8a25fb429527c16dc621\n"
    },
    {
      "commit": "1c78cb0fee257cdee13acceaee3de88e40d77e1b",
      "tree": "c6bf25c41c4e4d863871f4a7cc191542ffbe89f1",
      "parents": [
        "983c2da84cdcd0171b7f726b78990cabd0a58f49"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 11:25:25 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 11:25:52 2017 -0700"
      },
      "message": "Add missing includes.\n\nTest: mma\nBug: None\nChange-Id: I0221b213e08d07cc5ac0b704a86e98ae8c0f456f\n"
    },
    {
      "commit": "8a311631edc0c6212d4f9c50854956d2233aea40",
      "tree": "885d3feb21fc2545d9830aaa819e4f24236722fd",
      "parents": [
        "983c2da84cdcd0171b7f726b78990cabd0a58f49"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Oct 09 13:49:17 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Oct 10 15:52:25 2017 -0700"
      },
      "message": "Allow read-only system properties to have arbitrary lengths\n\nWe need to be able to store build fingerprints that are over 92 characters\nlong, which is the current restriction for system property value\nlength.\n\nIncreasing the value maximum across the board has plenty of caveats,\nparticularly that an allocator would be required to handle\ndeallocation when replacing long property values with short values.\nThere is also no compelling reasons to do this.\n\nBut, increasing the length of simply read-only properties, such as the\nbuild fingerprint, has less caveats as there will never be a\ndeallocation of these strings.\n\nThis change uses spare bits in the top of serial (only spare for\nread-only properties) to indicate if a property is \u0027long\u0027 or not.  The\ninformation required to access these \u0027long\u0027 properties is stored in a\nunion where the legacy property value is located.  An error message is\nretained for legacy callers.\n\nThe new property is readable via __system_property_read_callback() and\nmost importantly android::base::GetProperty and higher level (Java,\n`getprop`) callers.  All code should move to these higher level\nfunctions as much as possible.\n\nBug: 23102347\nBug: 34954705\nTest: bionic unit tests\nChange-Id: Ia85e0d979b92afff601cc52b39114379617a0c64\n"
    },
    {
      "commit": "3dacc4764220fc5e7969e4281f5cfca8f2082241",
      "tree": "59cf0da278f1f1c0bdbdd9f8158342ab7359ba9b",
      "parents": [
        "e387c2f08841ac0f6578e903ab21b54d01f3266e",
        "a613d0df5c682617380728a7d151483de05a4f92"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 06 22:20:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 06 22:20:54 2017 +0000"
      },
      "message": "Merge \"Add a legacy inline for mmap64.\""
    },
    {
      "commit": "e387c2f08841ac0f6578e903ab21b54d01f3266e",
      "tree": "ee40a87bb99b95e38e95a505e7084d6b695c21c9",
      "parents": [
        "7181e53cfed1ae9c877a6aacb7da6c48165e91f9",
        "93ea09f65c59585c082797bbfa4f4c7778d6e8b9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 06 17:08:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 06 17:08:34 2017 +0000"
      },
      "message": "Merge \"Add directives to force stop unwinding.\""
    },
    {
      "commit": "a613d0df5c682617380728a7d151483de05a4f92",
      "tree": "5a73110db954e5fc92116ad0930ed83495607729",
      "parents": [
        "3e8584d4a7d617289e8a954711ba895415d781c4"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 05 16:39:33 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 05 23:41:47 2017 -0700"
      },
      "message": "Add a legacy inline for mmap64.\n\nWhile this was never an inline, this function alone has caused most of\nthe bug reports related to _FILE_OFFSET_BITS\u003d64. Providing an inline\nfor it should allow a lot more code to build with _FILE_OFFSET_BITS\u003d64\nwhen targeting pre-L.\n\nTest: make checkbuild\nTest: built trivial cc_binary for LP32 against API 14 with\n      _FILE_OFFSET_BITS\u003d64 set\nBug: lots\nChange-Id: I8479d34af4da358c11423bee43d45b59e9d4143e\n"
    },
    {
      "commit": "93ea09f65c59585c082797bbfa4f4c7778d6e8b9",
      "tree": "635acc213edb1ed30cf595c4cb1f183bc0abc290",
      "parents": [
        "7c6784061dca3e36b6c80973573a0bea8896d585"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 05 15:18:47 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 05 15:18:47 2017 -0700"
      },
      "message": "Add directives to force stop unwinding.\n\nOn aarch64/x86/x86_64 add a macro that inserts a cfi directive that will\nstop unwinding.\n\nFor arm, clang doesn\u0027t allow emitting .cantunwind, so add a comment and\nleave it the same as it current is.\n\nAdd this macro to __libc_init and __start_thread.\n\nAlso, remove duplicate compilation of libc_init_static.cpp that already\nincludes the static library that includes that file.\n\nBug: 15469122\n\nTest: Did unwinds using new unwinder tool (unwind) and debuggerd -b\nTest: and verified new unwinder works on aarch64/x86/x86_64.\nTest: Verified that it works on old unwinder for aarch64/x86, but\nTest: x86_64 doesn\u0027t work properly, but as well as before.\nChange-Id: I77302e8f6c7ba1549d98a4a164106ee82c9ecadc\n"
    },
    {
      "commit": "3a8f75d8b052611c08ef17ecf625b8021f4e0229",
      "tree": "a41055f8209868da748f5118a24df528d1f07a9e",
      "parents": [
        "42f3bd0ffc3f0f0e3191c679ea4276f7f1882a00"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 05 10:33:18 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 05 10:33:18 2017 -0700"
      },
      "message": "POSIX clock cleanup.\n\nThe newest of these clocks was added in Linux 2.6.12, so no need for runtime\nchecks.\n\nAdd CTS tests that we can actually use the various clocks.\n\nBug: http://b/67458266\nTest: ran tests\nChange-Id: I3cfd7982043d6f8d4ebdc2b29e8722334f443ce5\n"
    },
    {
      "commit": "c51a404b1acba3305d777da8cb950b74460c34ba",
      "tree": "e8fc29560cd5306cd156fa182b52dec2c25ca4c9",
      "parents": [
        "6e6e1abb89913463778ae7559dd6b70049c52216"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 22 09:29:29 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 22 13:08:50 2017 -0700"
      },
      "message": "All architectures have AT_SYSINFO_EHDR now.\n\nBug: N/A\nTest: builds\nChange-Id: Ibc894be98ed0781c8b991ffadff34f616b934aa7\n"
    },
    {
      "commit": "53dc9dd70155fd75af744cbebecc563658c69818",
      "tree": "2c115be9ba0a403a6a42d9e880746275313dbd79",
      "parents": [
        "cce6ada00ad055ac52791526e44b1f223bec8ce4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 19 14:02:50 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 19 14:02:50 2017 -0700"
      },
      "message": "Improve pthread_create failure handling.\n\nReturn EAGAIN rather than aborting if we fail to set up the TLS for a new\nthread.\n\nAdd a test that uses all the VMAs so we can properly test these edge cases.\n\nAdd an explicit test for pthread_attr_setdetachstate, which we use in the\nprevious test, but other than that has no tests.\n\nRemove support for ro.logd.timestamp/persist.logd.timestamp, which doesn\u0027t\nseem to be used, and which prevents us from logging failures in cases where\nmmap fails (because we need to mmap in the system property implementation).\n\nBug: http://b/65608572\nTest: ran tests\nChange-Id: I9009f06546e1c2cc55eff996d08b55eff3482343\n"
    },
    {
      "commit": "dacbb04cde25bd8043aab9f0fe30b6dca798101d",
      "tree": "e0676490f8db47110ddb9f0bc16ea49d7a8048ec",
      "parents": [
        "7a5bb687f471a657432a0ef68bedd83a5f1641eb",
        "d6c678ca90d6f7843a9186515fa38d9eec467ff6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 19 01:08:25 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 19 01:08:25 2017 +0000"
      },
      "message": "Merge \"Support larger guard regions.\""
    },
    {
      "commit": "7a5bb687f471a657432a0ef68bedd83a5f1641eb",
      "tree": "6c991761a0e1e4f1f878f6e29e37dc4d34b0941e",
      "parents": [
        "0c9ea17e0c31540cb2caab7ec2149ae40670b2d2",
        "7982914faefdcc6b0fbb98d63bb9fde48d4efd18"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Sep 19 00:15:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 19 00:15:32 2017 +0000"
      },
      "message": "Merge \"Drop thread list lock before abort.\""
    },
    {
      "commit": "d6c678ca90d6f7843a9186515fa38d9eec467ff6",
      "tree": "bb6316d48f1ab523c0520bcba316b2ba232dfa34",
      "parents": [
        "0d5d0746e8b88dab66038d6150cb92b62467aac1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 27 17:01:57 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 18 16:09:43 2017 -0700"
      },
      "message": "Support larger guard regions.\n\nThis also fixes a long-standing bug where the guard region would be taken\nout of the stack itself, rather than being -- as POSIX demands -- additional\nspace after the stack. Historically a 128KiB stack with a 256KiB guard would\nhave given you an immediate crash.\n\nBug: http://b/38413813\nTest: builds, boots\nChange-Id: Idd12a3899be1d92fea3d3e0fa6882ca2216bd79c\n"
    },
    {
      "commit": "7982914faefdcc6b0fbb98d63bb9fde48d4efd18",
      "tree": "fe2b1b82412cc7bce48b49398221b37025ef5f01",
      "parents": [
        "5e805526422d90c4054c9fb0f7b1b915dc49f3c8"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Sep 18 14:39:33 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Sep 18 14:40:35 2017 -0700"
      },
      "message": "Drop thread list lock before abort.\n\nBug: 65656273\n\nTest: Ran the app and verified it crashes instead of deadlocks.\nChange-Id: I7dbe653d50a635a23993c99c5f73ca094ee80b28\n"
    },
    {
      "commit": "0c9ea17e0c31540cb2caab7ec2149ae40670b2d2",
      "tree": "7f1917b9e599acfe5b71a8a6b35d8e69a5661a3d",
      "parents": [
        "df862454b69f81b5574da415b61d9cbf12662bcc",
        "7b0af7ad82fcf88e800d1a553d81fda29dc064bd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 18 21:33:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 18 21:33:54 2017 +0000"
      },
      "message": "Merge \"Always log errno when aborting.\""
    },
    {
      "commit": "7b0af7ad82fcf88e800d1a553d81fda29dc064bd",
      "tree": "4cf982c55c48b49864bcb4f986c7400d640930e0",
      "parents": [
        "3b64f8ecb3db49574cc5b7c6030be98c159be4d4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 15 16:09:22 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 15 16:18:49 2017 -0700"
      },
      "message": "Always log errno when aborting.\n\n(Where errno is relevant.)\n\nAlso consistently use -1 as the fd for anonymous mmaps. (It doesn\u0027t matter,\nbut it\u0027s more common, and potentially more intention-revealing.)\n\nBug: http://b/65608572\nTest: ran tests\nChange-Id: Ie9a207632d8242f42086ba3ca862519014c3c102\n"
    },
    {
      "commit": "50cda38f1ddfb0216e986f60cdc877fb9c55ebba",
      "tree": "fb702878229b8b64a5386ece09d32653b7c6a3e4",
      "parents": [
        "3b64f8ecb3db49574cc5b7c6030be98c159be4d4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 14 15:30:08 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 14 16:10:43 2017 -0700"
      },
      "message": "Use __RENAME for long double functions.\n\nWe can cut a lot of stuff out of the NDK\u0027s libandroid_support with this,\nand reduce unnecessary relocations for all LP32 code. LP64 code should\nbe unaffected.\n\nBug: https://issuetracker.google.com/64450768\nBug: https://github.com/android-ndk/ndk/issues/507\nTest: ran tests, plus manual readelf on the _test.o files\nChange-Id: I3de6015921195304ea9c829ef31665cd34664066\n"
    },
    {
      "commit": "4c9d528a25a5b605643a13da24afb42d2d5d840c",
      "tree": "07ec4842deb71eadd51b231b8c86b5abf55e972d",
      "parents": [
        "d74088bc46bba234a9bf24a91c16e64fc05ba3be",
        "5702c6ff454a8a9695fae64597d7692b06fc27b5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 11 18:39:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 11 18:39:30 2017 +0000"
      },
      "message": "Merge \"Finish \u003csearch.h\u003e.\""
    },
    {
      "commit": "ab2f79c0daa113ceaacaa59c4573ba606ab7de15",
      "tree": "47b2c3045044274ff6a1413f106ed96cb4e8874c",
      "parents": [
        "04503da174b5e51ba9035fb79521a6a2af17c111"
      ],
      "author": {
        "name": "Jayant Chowdhary",
        "email": "jchowdhary@google.com",
        "time": "Fri Sep 01 16:29:44 2017 -0700"
      },
      "committer": {
        "name": "Jayant Chowdhary",
        "email": "jchowdhary@google.com",
        "time": "Thu Sep 07 17:19:21 2017 -0700"
      },
      "message": "For devices which are not treble enabled, return the system shell.\n\nFor treble enabled devices, still return the appropriate shell depending\non whether the process is a vendor process or a system one.\n\nTest: Manual testing: on a bullhead device, ran test programs from\n      /vendor/bin which used popen() and system(). The calls succeeded.\n\nBug: 65054230\n\nBug: 64516799\n\nMerged-In: I15dfdbb107cfca7c0f92f337c9bb46b9876eb38e\nChange-Id: I15dfdbb107cfca7c0f92f337c9bb46b9876eb38e\n(cherry picked from commit 1e52871773505edf70d10a3af7b003e9320ef6a3)\n"
    },
    {
      "commit": "7379018162d83da8f2c25690541fe169e820f5e8",
      "tree": "bbc0a4707f9c18704d29ae6e58d134a2dcb4e6dd",
      "parents": [
        "7f9f1b6f918bec90354f70f2eb3dcf87d85df918"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 07 13:28:14 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 07 13:28:14 2017 -0700"
      },
      "message": "\u003cstdbool.h\u003e not necessary in C++.\n\nBug: N/A\nTest: builds\nChange-Id: I40fffe92d4273eab5a98bd65013bb9da2aea2171\n"
    },
    {
      "commit": "5702c6ff454a8a9695fae64597d7692b06fc27b5",
      "tree": "198c64982038daff5603e6c6813089751f62328f",
      "parents": [
        "7f9f1b6f918bec90354f70f2eb3dcf87d85df918"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 31 17:27:05 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 31 17:38:51 2017 -0700"
      },
      "message": "Finish \u003csearch.h\u003e.\n\nI\u0027m unable to find a bug, but we\u0027ve had requests for this internally\nonce or twice (though I pointed those folks at the STL), and there\u0027s\ncode we build for the host or in our bootloaders that would use this,\nand there\u0027s reasonable-looking FreeBSD implementation ready and waiting.\n\nBug: N/A\nTest: ran tests\nChange-Id: I6ddee4b71bea4c22ed015debd31d3eaac4fcdd35\n"
    },
    {
      "commit": "a648733cb7398810df9a35528cc6e874edc57b06",
      "tree": "90ff33e6b479b5ccb20b1a8bb0007dacde75bc8d",
      "parents": [
        "571c88823636e3c6f894e806ea7c4dc8131a1ae4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 15 23:16:48 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 08:47:41 2017 -0700"
      },
      "message": "Implement \u003ciconv.h\u003e.\n\nBug: http://b/32978596\nTest: ran tests\nChange-Id: I56b6ae3d9c5a3a56d2b4afba33fb8f9e964bf7b9\n"
    },
    {
      "commit": "5da4fe4adaf80c1a5103f739f1ce51de0db795cf",
      "tree": "7b9f4331dd067ee80db331b59f2a795976217fb9",
      "parents": [
        "96c577c48284c376ec065f2b3a2d2987a7eeff5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 24 16:44:08 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 24 16:51:48 2017 -0700"
      },
      "message": "Fix overflow in get_phys_pages and get_avphys_pages.\n\nOn LP32 mem_unit will be 4096 to allow more than 4GiB in the \"ulong\"\nfields, but we need to promote to a 64-bit type before we multiply.\n\nBug: N/A\nTest: tested manually with an x86 static binary on my 64GiB desktop.\nSigned-off-by: YiPing Xu \u003cxuyiping@hisilicon.com\u003e\nChange-Id: Id663932503b75793bb7c26a008129f3e2e4cccbf\n"
    },
    {
      "commit": "7b4fb64177a3d82cc223553366c32f3f11bee680",
      "tree": "8bfecf0b4aa4980b6138a263139b762d0ae5ec11",
      "parents": [
        "8afd42ff285c9f1b28b437f4938fa9f56120c684",
        "df9a489b2bfcc224943a12b447e9cf00db81d9e0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 24 02:31:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 24 02:31:35 2017 +0000"
      },
      "message": "Merge \"Add more const-correct C++ overloads.\""
    },
    {
      "commit": "8f0c87e21f023cbbdc9a090535911619d2e881d7",
      "tree": "3347170c864d6f59fb08a34db28a504df0716ba0",
      "parents": [
        "73c23ead427037ffd891c1ee11d833b8e6c31386"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 15:40:03 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 15:40:03 2017 -0700"
      },
      "message": "Remove dead `longjmperror`.\n\nThis used to be used by the ARM longjmp implementation, but hasn\u0027t been in\nlibc.so for as long as we\u0027ve used a linker script.\n\nBug: N/A\nTest: builds\nChange-Id: I3dff4d154d5e317955c349c9eaa08b982cbf0285\n"
    },
    {
      "commit": "df9a489b2bfcc224943a12b447e9cf00db81d9e0",
      "tree": "4ab72c37dc663296fedc579b194646b89d8d931c",
      "parents": [
        "57e07a150e536f79d78f8203b0c807087b5c854b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 14:34:03 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Aug 23 14:34:40 2017 -0700"
      },
      "message": "Add more const-correct C++ overloads.\n\nlibc++ actually provides overloads for all the standard C library stuff,\nso we just need to handle the POSIX and GNU extensions, of which there\nare just two more: memrchr and strcasestr.\n\nBug: http://b/22768375\nTest: builds\nChange-Id: Ie9ed1fbcc794e14a0c9bba13b5307ad677949613\n"
    },
    {
      "commit": "4a3c9751ebb7054b27c0ee25d2891646a4a5699c",
      "tree": "9385ee595c5c7284d71199f9871a6b3432a8a460",
      "parents": [
        "8440dc736d6296a7966b543eeba4453a3e83db87",
        "9b1ca569db3e698c3a901720ae6989c876a9e6ee"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Tue Aug 22 19:55:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 22 19:55:41 2017 +0000"
      },
      "message": "Merge \"libc: Add support to allow library calls to find appropriate shell executable for a process\""
    },
    {
      "commit": "9b1ca569db3e698c3a901720ae6989c876a9e6ee",
      "tree": "586e7581ad2e2296aa8b24cb4c5bcf598255bfbb",
      "parents": [
        "611d0de62fc7d23dcdd120c2d3698acc85351f9e"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Mon Aug 21 12:17:19 2017 -0700"
      },
      "committer": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Tue Aug 22 10:17:28 2017 -0700"
      },
      "message": "libc: Add support to allow library calls to find appropriate shell executable for a process\n\nLibrary calls like system() and popen() invoke the shell executable\npointed to by \u0027_PATH_BSHELL\u0027 in order to run the command passed into the\nfunction. The _PATH_BSHELL points to /system/bin/sh by default and thus\nbreaks any vendor process trying to use system() / popen(), as they are\ndenied access to system shell by selinux.\n\nThis CL make necessary changes, so the implmentations of system() and popen()\ncan use the appropriate shell (e.g. /vendor/bin/sh for processes running\nout of /vendor partition). Also, changes the implementation of system()\nand popen().\n\nBug: 64832610\nTest: Manual, Using a test program running from /system/bin and\n      /vendor/bin to ensure correct shell is being used.\n\nChange-Id: Ie7168d69decb1ae98284446ae7db34dec930dc33\nMerged-In: Ie7168d69decb1ae98284446ae7db34dec930dc33\nSigned-off-by: Sandeep Patil \u003csspatil@google.com\u003e\n(cherry picked from commit aa3e32422cc7089b9b15976f2651a58840d95e4f)\n"
    },
    {
      "commit": "55d0f1636958abf700fcee4dc8765bc0c2cc86b5",
      "tree": "9f9fe9f562af4117ffbd2989fba463b1d3635319",
      "parents": [
        "169f883ef11995e782d0931e70495474556e1e13",
        "cbb09bcbb16d728a0e03de0d5d33fc95d833aedf"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Aug 18 20:06:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 18 20:06:28 2017 +0000"
      },
      "message": "Merge \"Always use CLOCK_MONOTONIC for pthreads and semaphores\"\nam: cbb09bcbb1\n\nChange-Id: Ic0192542c3f4de8afc4cdc4719c2db1e59bcfc4b\n"
    },
    {
      "commit": "cbb09bcbb16d728a0e03de0d5d33fc95d833aedf",
      "tree": "aa8a4c16b2f56f55d8d074be426dd98f4d12be7d",
      "parents": [
        "096fa4497c50cffdb56f06d7038adbeb3c1254d6",
        "ac49cedc7e2bab2073a0895ef01e31dac84f590b"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Aug 18 19:59:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 18 19:59:26 2017 +0000"
      },
      "message": "Merge \"Always use CLOCK_MONOTONIC for pthreads and semaphores\""
    },
    {
      "commit": "ac49cedc7e2bab2073a0895ef01e31dac84f590b",
      "tree": "49713323bcf5e81e429e669e359bd99021d771e6",
      "parents": [
        "30438e4cea83628bcacbedff37a35398bb8b40e7"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Aug 17 13:18:52 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Aug 18 09:11:05 2017 -0700"
      },
      "message": "Always use CLOCK_MONOTONIC for pthreads and semaphores\n\npthread\u0027s and semaphore\u0027s default behavior is to use CLOCK_REALTIME,\nhowever this behavior is essentially never intended, as that clock is\nprone to change discontinuously.\n\nWhat users really intend is to use CLOCK_MONOTONIC, however only\npthread_cond_timedwait() provides this as an option and even there, a\nlarge amount of existing code does not opt into CLOCK_MONOTONIC.\n\nWe have seen numerous bugs directly attributable to this difference.\nTherefore, we provide this general workaround to always use\nCLOCK_MONOTONIC for waiting, regardless of what the input timespec\nis.\n\nSpecifically this impacts the below APIs:\npthread_mutex_timedlock()\npthread_cond_timedwait()\npthread_rwlock_timedrdlock()\npthread_rwlock_timedwrlock()\nsem_timedwait()\n\nTest: boot bullhead, boot sailfish\nTest: bionic pthread/semaphore unit tests\nTest: check that pthread_cond_timedwait() timeouts are uneffected by\n      CLOCK_REALTIME time changes\n\nBug: 64694413\nBug: 64623895\nBug: 35756266\nBug: 35678943\nChange-Id: Ibba98f5d88be1c306d14e9b9366302ecbef6d534\n"
    },
    {
      "commit": "a86d68dcd2bd6a80c6df8569c6d6e0c029fcc982",
      "tree": "92772040dff6b82aaeda17635ec4571cb8a34516",
      "parents": [
        "f43e6a41cd3f5a200d1ae3c04f83d7c18f48fd5f",
        "b2688f4a2a25781efbef33a2f4b8bde2592a0a81"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Aug 16 11:27:21 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 16 11:27:21 2017 +0000"
      },
      "message": "Merge \"Report correct errno on clone failure\"\nam: b2688f4a2a\n\nChange-Id: I7ea8aae468320c16665729a3a925dc921ea35726\n"
    },
    {
      "commit": "6de60874aa4b2525df6acf93dbd00c048b464799",
      "tree": "bb85cea41de420d23b3b44bf56ea6e37147d0838",
      "parents": [
        "30438e4cea83628bcacbedff37a35398bb8b40e7"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Aug 14 14:42:19 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Aug 14 14:42:19 2017 +0200"
      },
      "message": "Report correct errno on clone failure\n\nTest: make\nChange-Id: Id0af3678627c06167a6d434d8616c4a304e1fbc0\n"
    },
    {
      "commit": "212ea2b74eb0313eeacdb02fcae7118d88430c10",
      "tree": "07ef2846627052be319434a81a3026f76232d53b",
      "parents": [
        "10d21d2e26dedfc5c644255143a6bb491be04a23",
        "2fdefadcee9bdcad11beb971c3e06fbf2cdf79ae"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 04 20:20:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 04 20:20:38 2017 +0000"
      },
      "message": "Merge \"With O_TMPFILE, open(2) takes a mode argument.\"\nam: 2fdefadcee\n\nChange-Id: I5cd1f9103b4b5f20f18fd3f7f5be2511e2b1990f\n"
    },
    {
      "commit": "b115aefbb3a472c605e167e09d14b1a797337e77",
      "tree": "4167aea0a211331deb64f66e3dfd6d931d20f246",
      "parents": [
        "cc3639b3eeb30cc4e994714254e8f995e77b30bf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 04 09:34:19 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 04 10:20:18 2017 -0700"
      },
      "message": "With O_TMPFILE, open(2) takes a mode argument.\n\nStrictly, the mode isn\u0027t really meaningful unless you supply O_EXCL,\nbut the kernel will take it and fstat will return it even if you\nnever give the file a name.\n\nAlso warn for O_TMPFILE without a mode at compile time where possible.\n\nBug: N/A\nTest: ran tests\nChange-Id: I729b6d6e6190676fd017a1190b6200bf9abdbfd8\n"
    },
    {
      "commit": "5869bbe1d0aa527066c1aa53ff40f165f86c9922",
      "tree": "8f1c792f4039cbd91bc93a547abcb8600a6be2ac",
      "parents": [
        "ec8c79aaa134b5735dfe2d721f40bdfa41088959",
        "b1b125ead1857dd0ffdd28e1ecfb3e1d1fd13882"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Aug 03 03:29:34 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 03 03:29:34 2017 +0000"
      },
      "message": "Merge \"libc fortify: make string.h use diagnose_if\"\nam: b1b125ead1\n\nChange-Id: I9e4508c73a83987bbd21550538ff77d6cb65cace\n"
    },
    {
      "commit": "b6300463a829762841e3fb7126833f77f62f7100",
      "tree": "3d827222033db09af663d069e569087f0f0d944d",
      "parents": [
        "aa8f766bf0ead7d87ed1084880f42aa4b2d01fbb"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jul 31 21:29:42 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Aug 01 22:41:11 2017 -0700"
      },
      "message": "libc fortify: make string.h use diagnose_if\n\nThis also has a handful of style fixups, to make this file more\nconsistent. And removes __bionic_zero_size_is_okay_t, since there\u0027s a\nbetter workaround available.\n\nBug: 12231437\nTest: m checkbuild on bionic internal master; CtsBionicTestCases show\nno new failures.\n\nChange-Id: I75a020630dbab0ce828563502900cba14ae992d1\n"
    },
    {
      "commit": "b3f134309872f58f1a2def3578a8f5b1e8057d8e",
      "tree": "93002f3c854efd045eadf27fd67d7a93e5441d80",
      "parents": [
        "8bfe9f81ba83e41af1cb39f20082b1cae54883e0",
        "6616056f0f89499d4662b646019f2d4a59624985"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 01 17:52:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 01 17:52:30 2017 +0000"
      },
      "message": "Merge \"Remove restrict/__restrict.\"\nam: 6616056f0f\n\nChange-Id: I5343c191c3f424343d1c7617e054b2347d0dc6b5\n"
    },
    {
      "commit": "ec6850d849746ffbafaaf9b993c5dbb74a014b3f",
      "tree": "61861bc94bfe8ebb50cfb263610f7d47d367b769",
      "parents": [
        "c2a10f7f1bc23e81a49bcf4e98989042865261b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 01 08:28:46 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 01 08:28:46 2017 -0700"
      },
      "message": "Remove restrict/__restrict.\n\nWe\u0027ve never really used __restrict: only \u003cstring.h\u003e and \u003cstdio.h\u003e (which\nare still very similar to upstream BSD headers) consistently have these\nannotations. Neither clang nor GCC warns for trivial cases, and there\u0027s\nlittle obvious documentation benefit.\n\nBug: http://b/30833514\nTest: builds\nChange-Id: I3e4384281865475d0c55d764b546d8166419ee31\n"
    },
    {
      "commit": "b82a2d0bd57708a8e44ae4426f568be259c6f3e2",
      "tree": "ad5afcc5449e1c0e09277d18dcfdd4b4916609c3",
      "parents": [
        "105e768638ff4a9fffc17bc621e59739755661bf",
        "8aa4bc7c558843ab3199792b0fde207195f66a2a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jul 29 14:59:15 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 29 14:59:15 2017 +0000"
      },
      "message": "Merge \"POSIX getlogin_r/LOGIN_NAME_MAX/TTY_NAME_MAX.\"\nam: 8aa4bc7c55\n\nChange-Id: I578d3e5c096401b0447f9ed7223d3e20ffb5b19e\n"
    },
    {
      "commit": "06bd5862b18e0b750a709f7f8a1d277f1f6d0c99",
      "tree": "f6d0db8de8f67383aa97056e6c73fb2c7be1b402",
      "parents": [
        "bafa1985eccaac231ade6f15d340759f44928524"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 28 16:27:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 28 16:34:38 2017 -0700"
      },
      "message": "POSIX getlogin_r/LOGIN_NAME_MAX/TTY_NAME_MAX.\n\nBug: N/A\nTest: ran tests\nChange-Id: I97c8ecc82fb09c3fa4bb5e6f000d46f04f3d1702\n"
    },
    {
      "commit": "a97079d94ef22bb56ff4e3b9bbeda5a43896174e",
      "tree": "78862b3c41fc1cb7dff89b552dfaf572194cf761",
      "parents": [
        "249792a5618bcb6d29f56226545371f4fe9d5f1b",
        "bafa1985eccaac231ade6f15d340759f44928524"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 28 21:50:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 28 21:50:26 2017 +0000"
      },
      "message": "Merge \"Implement wcwidth(3) in terms of icu4c.\"\nam: bafa1985ec\n\nChange-Id: Ia7e74b6124206fe5f2c5bf372c03ee5246045462\n"
    },
    {
      "commit": "c41b560f5f624cbf40febd0a3ec0b2a3f74b8e42",
      "tree": "4bf012d6072b455cee89a1d3ecf8b7654ec97628",
      "parents": [
        "38bcf2b704eb5038668759d2dd37115aea1dc437"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 27 17:08:08 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 27 17:08:24 2017 -0700"
      },
      "message": "Implement wcwidth(3) in terms of icu4c.\n\nBased on com.google.i18n.CharWidth by the icu-team folks.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ia9d818ec4ae60f2f3978533195330d00699397c5\n"
    },
    {
      "commit": "78d878c8df7c364875d8315c03342ee750122b05",
      "tree": "1c0b202f9826c5498033d25ee14b79999baf5e2d",
      "parents": [
        "da32d3349bba1fe37c0ef39521f919805567a06a",
        "4f36cabd8d1b1f3ed6ad4586f86aad5731f4bdaf"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Jul 26 02:55:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 26 02:55:44 2017 +0000"
      },
      "message": "Merge \"libc: Move FORTIFY into one file; make style fixups\"\nam: 4f36cabd8d\n\nChange-Id: I17f125e6100e0af30c083df7a6a7a19a90696dc3\n"
    },
    {
      "commit": "d34b0a946c551db59b29a1446bbc3d4f6973d959",
      "tree": "d88b9af0e9a725d70c02b8bb41fb172da7ab870a",
      "parents": [
        "086b1b5a22fdba8ace37919bfc4f27f9b27d78c2"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Jul 25 11:43:39 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Jul 25 17:39:21 2017 -0700"
      },
      "message": "libc: Move FORTIFY into one file; make style fixups\n\nThis addresses post-commit feedback from\nI88c39ca166bacde0b692aa3063e743bb046a5d2f. With this, our FORTIFY impl\nnow sits in one file.\n\nBug: 12231437\nTest: mma; no new CtsBionicTestCases failures on bullhead internal\nmaster.\nChange-Id: I6f9ff81c3e86cf9d6a0efa650eb5765f1e2fa09c\n"
    },
    {
      "commit": "b231a6335480adb2461dff8328c7ff69d77db1e1",
      "tree": "0c538f0e517a219e0ee8239681c2277a4c112719",
      "parents": [
        "c5c7bee0256b10db758c558f048d4e69d044f982",
        "086b1b5a22fdba8ace37919bfc4f27f9b27d78c2"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Jul 25 18:13:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 25 18:13:10 2017 +0000"
      },
      "message": "Merge \"Split our FORTIFY implementation into libc_fortify\"\nam: 086b1b5a22\n\nChange-Id: I6e05d09bc00135657a35420fe102a37ccf8c59fc\n"
    },
    {
      "commit": "086b1b5a22fdba8ace37919bfc4f27f9b27d78c2",
      "tree": "069e7f5721962a13f7b495bdefe8ef384f4de65b",
      "parents": [
        "b8115bdf4f9ec74f6bbc28f42f8e76a86a83fc00",
        "6cb06879323cb45440ca1c7b42a2cc754b3d50c6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 25 18:05:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 25 18:05:42 2017 +0000"
      },
      "message": "Merge \"Split our FORTIFY implementation into libc_fortify\""
    },
    {
      "commit": "6cb06879323cb45440ca1c7b42a2cc754b3d50c6",
      "tree": "6c57a6539009e2af358daa368f538e82da1593f2",
      "parents": [
        "248b5cb672a9eadde695edb7d73e9d1ed5cb0b7f"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Jul 21 13:28:42 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jul 24 14:20:16 2017 -0700"
      },
      "message": "Split our FORTIFY implementation into libc_fortify\n\nAs requested in the bug. This also rips __memcpy_chk out of memcpy.S,\nwhich lets us cut down on copypasta (all of the implementations look\nidentical).\n\nBug: 12231437\nTest: mma on aosp_{arm,arm64,mips,x86,x86_64} internal master;\ncheckbuild on bullhead internal master; CtsBionicTestCases on bullhead.\nNo new failures.\nChange-Id: I88c39ca166bacde0b692aa3063e743bb046a5d2f\n"
    },
    {
      "commit": "778b1bd7f66f85045fd67417cbace57b0ab69098",
      "tree": "52c30939a53a5a459a6bf2e1cf4652e073aaf685",
      "parents": [
        "15a65a7015f976d5ab8454f9ec5e54e71bfef445",
        "57ad09278f3a623da70c29a69fd232098fcc5abd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 24 20:22:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 24 20:22:39 2017 +0000"
      },
      "message": "Merge \"Replace killpg.\"\nam: 57ad09278f\n\nChange-Id: Ib1902dbe08b5c797278a4425ae8434dcadd7f06b\n"
    },
    {
      "commit": "57ad09278f3a623da70c29a69fd232098fcc5abd",
      "tree": "0565a6f3aa95a8877fc11bfcc96463f97030c184",
      "parents": [
        "fd80e39546c3f8567be9e7a208fb07c32ef52657",
        "7532b3262797e964438e7ed50450d04ef33d85c6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 24 20:16:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 20:16:40 2017 +0000"
      },
      "message": "Merge \"Replace killpg.\""
    },
    {
      "commit": "9a626a86e1fbdb9661911e29abc8d7b4c266694d",
      "tree": "c1a7150ab3dcf861f257f6895159c97cf03176f7",
      "parents": [
        "5641716a955d599236b0442d2b682b7634b064ba",
        "71853ad5c5e7572aed1568f661c100a21765ac14"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Jul 21 21:41:51 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 21 21:41:51 2017 +0000"
      },
      "message": "Merge \"Remove outdated _FORTIFY_SOURCE #undefs\"\nam: 71853ad5c5\n\nChange-Id: I4778897a4f7ccb9bb302480696ef765d549733d0\n"
    },
    {
      "commit": "53c4c8abb009e3381bd8f5d223045eb6985c4f3d",
      "tree": "32750eda49300dfda3c3815e6496429a6b6975e0",
      "parents": [
        "dcdd0e37603215320d4fd175792aeef279a80606"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jul 20 15:13:09 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Jul 21 11:25:52 2017 -0700"
      },
      "message": "Remove outdated _FORTIFY_SOURCE #undefs\n\nAFAICT, all of these were added prior to the new-style FORTIFY going\nin. Because clang saw two definitions of the \"same\" function, it got\nupset. (e.g. 35d937e4eb7b8e0a4e9a113d2f7434d55c0bc056)\n\nNow that our FORTIFY functions are overloads of their library functions,\nthese undefs can be removed.\n\n(This is a step toward making FORTIFY a library with -U_FORTIFY_SOURCE\non it, as requested in the bug.)\n\nBug: 12231437\nTest: CtsBionicUnitTests. No new failures.\n\nChange-Id: I844ff77106ee2bea72ae1cd0bb85d146939ecd05\n"
    },
    {
      "commit": "452c185a0bcfa468ac5c712f593dcf2939c91424",
      "tree": "6aa3c79069a1fe71784394a9d2e873df4024b264",
      "parents": [
        "18f0ad8b860504108e483d4cfff3fcde4cf668d2",
        "dcdd0e37603215320d4fd175792aeef279a80606"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jul 15 03:19:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 15 03:19:16 2017 +0000"
      },
      "message": "Merge \"Hide various mbstate implementation details.\"\nam: dcdd0e3760\n\nChange-Id: I4f2941939f40c04344f3f9dcfd5debe7780d9275\n"
    },
    {
      "commit": "697f42afdb8606f5ba431e72db065692bf61ffff",
      "tree": "900725232ca9b11d2f415544bdaea867123fbf19",
      "parents": [
        "03e9c498d4909d1f791800cae0d59db63a348328"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 14 17:00:05 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 14 17:00:05 2017 -0700"
      },
      "message": "Hide various mbstate implementation details.\n\n...by inlining them.\n\nAlso fix a couple of harmless bugs in passing. I\u0027ve added tests, but in\nboth cases I don\u0027t think it was actually possible to hit the bad behavior:\nwe\u0027d hit another test and fail immediately after in an externally\nindistinguishable way.\n\nBug: N/A\nTest: readelf\nChange-Id: I8466050b0bfe2b7b94c76b383cf10c1d9d28debd\n"
    }
  ],
  "next": "021d7ca543f549b71a968f92998258b64ef7d53d"
}
