)]}'
{
  "log": [
    {
      "commit": "3048a36a34c5124a435df8a1d343b791f59a7f0b",
      "tree": "faa8a603ab38fdde244f7121527291e7e9c7b86c",
      "parents": [
        "2b66844a0beffff0d2fcf20938e64cdd387131ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 17:58:07 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 17:58:07 2018 -0800"
      },
      "message": "Simplify CT_CCL and CT_STRING inner loop.\n\nMakes no difference to the benchmarks, but does make the code a bit\nmore readable.\n\nBug: http://b/68672236\nTest: ran tests, benchmarks\nChange-Id: I63fa5f78d077c86e4f4f194f2c76ab5510c29109\n"
    },
    {
      "commit": "2b66844a0beffff0d2fcf20938e64cdd387131ac",
      "tree": "c3882636c464bd981f06ac7f99ff136e68c636b4",
      "parents": [
        "df4c92888e6283c8f6f1731391a6bccbc30d64db",
        "38e4aefe6c7804d809cfe9e05619ac1a6935e565"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 20 01:17:25 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 20 01:17:25 2018 +0000"
      },
      "message": "Merge \"Support %mc/%ms/%m[ in sscanf.\""
    },
    {
      "commit": "38e4aefe6c7804d809cfe9e05619ac1a6935e565",
      "tree": "162d29d0e7128f5e7fdf59bb6ad072cc57d79d0a",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 18 10:21:29 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 14:53:55 2018 -0800"
      },
      "message": "Support %mc/%ms/%m[ in sscanf.\n\nAlso support the \"long\" (wchar_t) variants.\n\nBug: http://b/68672236\nTest: ran tests\nChange-Id: I060e98b4d2feb61e12986d9d51e4710b2b1d9724\n"
    },
    {
      "commit": "b6310c2aa704bd30990f4e3152e494b5290972b2",
      "tree": "818a92a3148fa0ec488d11b5281bc4026b7ca5dc",
      "parents": [
        "ee88e76f14111ea94745d7eec6caca9ffb526f1a"
      ],
      "author": {
        "name": "Ian Pedowitz",
        "email": "ijpedowitz@google.com",
        "time": "Thu Jan 18 16:26:19 2018 -0800"
      },
      "committer": {
        "name": "Ian Pedowitz",
        "email": "ijpedowitz@google.com",
        "time": "Thu Jan 18 16:26:45 2018 -0800"
      },
      "message": "Fixing app compat issue b/72143978\n\nThis is a squash revert of a4a4854 and 1b0f2b4\n\n  Revert \"Remove a test for backwards compatibility we no longer support.\"\n\n  This reverts commit a4a485454a3a117eccdca1113681f770d765d865.\n\n  # This is the commit message #2:\n\n  Revert \"Remove obsolete workaround.\"\n\n  This reverts commit 1b0f2b49d528c90842b4263269d9039d7e07415e.\n\nBug: 72143978\nBug: 24465209\nTest: Tested failing case on sailfish, reverted back all CL\u0027s since\nTest: 3471433 for b/24465209 and apps open\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": "1b0f2b49d528c90842b4263269d9039d7e07415e",
      "tree": "1be7ae23d7716db86552beca0064cf6e74e7d6e3",
      "parents": [
        "a238a9a32815f63b286d8383f7f73e2319472583"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 10 11:05:19 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 10 11:05:19 2018 -0800"
      },
      "message": "Remove obsolete workaround.\n\nBug: http://b/24465209\nTest: manually ran the app.\nChange-Id: I1e2a498864c74ff3a9886b97f7dc60ad7f6dfa44\n"
    },
    {
      "commit": "a238a9a32815f63b286d8383f7f73e2319472583",
      "tree": "2de1da4de2774b2788b87d97cc357780190d667f",
      "parents": [
        "41971399cf330f2b3170d45442319b31989b25f3",
        "06016f226efe7aff2736643cb8e719c513948ecc"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 10 13:50:01 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 10 13:50:01 2018 +0000"
      },
      "message": "Merge \"Fix dlclose for libraries with thread_local dtors\""
    },
    {
      "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": "ca056d742f0d83e586a0ebf2cd75cae8f625ce7e",
      "tree": "498605c1609faf4adf5bfce628bb3ab5d6dead6e",
      "parents": [
        "f9fcb1efae7458109b13260d7a7f8db939a1aa2c"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Jan 08 14:00:24 2018 -0800"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Jan 08 14:00:24 2018 -0800"
      },
      "message": "Expose kernel input headers for toolbox\n\nToolbox is moving to Android.bp, and its genrule needs access to these\nkernel headers.\n\nTest: mmma system/core/toolbox\nChange-Id: I213a36e1f4bb5d4e3e3e105ed7ab01ec945014a2\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": "e6e8f6ee77ac0be9b950ddd94f52ebcefe4433ce",
      "tree": "e9f19eaab6d54c42730a8fb3fe96a455ac008b11",
      "parents": [
        "eb7347aedbc61ba45555aef3e6e863f0d90b407b",
        "79b724ca5a33e5dff7c2530b2649648021c1258d"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Dec 13 01:28:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 13 01:28:29 2017 +0000"
      },
      "message": "Merge \"Add support for serialized property contexts\""
    },
    {
      "commit": "79b724ca5a33e5dff7c2530b2649648021c1258d",
      "tree": "703e81d1d3c41fe093f4747d4d7d4324427dde2c",
      "parents": [
        "78b40e8fe1f37de319344c92d8e6e1eb595c1067"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Nov 17 17:14:05 2017 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Dec 12 00:36:20 2017 -0800"
      },
      "message": "Add support for serialized property contexts\n\nThis adds support for reading a serialized\n/dev/__properties__/property_info file, which contains a\nserialized trie that maps property names to the SELinux context to\nwhich they belong.\n\nPerformance wise on walleye, this change reduces the start up cost in\nlibc from ~3000us to ~430us.  On a benchmark that calls\n__system_property_find() for each property set on the system, it\nreduces the time per iteration from ~650us to ~292us.\n\nBug: 36001741\nTest: Boot bullhead, walleye, run unit tests\nTest: Benchmark initialization and lookup performance\n\nChange-Id: I0887a3a7da88eb51b6d1bd494fa5bce593423599\n"
    },
    {
      "commit": "ee291c021c58cd1e0f235572c4ad2f9813b51cdc",
      "tree": "05c92a0322d611f2758dbe277acf5b14a7d553c5",
      "parents": [
        "d351581aa9ba1fbce227db35500471fe59c45f08"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 11 11:32:34 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 11 11:32:34 2017 -0800"
      },
      "message": "Explain why the mips/mips64 ndk headers need to be present.\n\nBug: N/A\nTest: N/A\nChange-Id: I70e3a043884784d86a9a3ec7066d945803481b54\n"
    },
    {
      "commit": "790d2f7161328a281de68252894b80689a820e90",
      "tree": "449a11a1410a8a72a40811a37de805a40987966f",
      "parents": [
        "b7d6df2b61f7941e24d362105a43950da6f2da05"
      ],
      "author": {
        "name": "Lazar Trsic",
        "email": "Lazar.Trsic@mips.com",
        "time": "Mon Nov 27 11:54:11 2017 +0100"
      },
      "committer": {
        "name": "Lazar Trsic",
        "email": "Lazar.Trsic@mips.com",
        "time": "Mon Nov 27 16:48:14 2017 +0100"
      },
      "message": "Revert \"Remove mips/mips64 headers from the NDK sysroot.\"\n\nThis reverts commit 050f046d3d3685c5419b265efe83da67a6e016bb.\n\nChange-Id: I2549dfccced02b61383cd9e534bfd34cf1d6dba1\n"
    },
    {
      "commit": "b7d6df2b61f7941e24d362105a43950da6f2da05",
      "tree": "9c5f0893d8e2df1a4ddd003188f5496dc7f04f81",
      "parents": [
        "8fb8c61e4854c7383b18a643713b7f19b6987b62",
        "5e7c90b7f1d6e6e14f8571f36b7c5548f4fa5de6"
      ],
      "author": {
        "name": "Isaac Chen",
        "email": "ycchen@google.com",
        "time": "Thu Nov 23 09:08:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 23 09:08:24 2017 +0000"
      },
      "message": "Merge \"Optimize libc for generic armv7/armv8 neon cores\""
    },
    {
      "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": "db4f3346958684424815720ca00a56c75fc536e0",
      "tree": "34a3ce2d28d787895f118017c0c873ca52882989",
      "parents": [
        "8697f10e747eada34fa91d838c1ce95b687068f5",
        "7d7b368a44f8531805618d58ef78efa21b3a1cea"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 06 22:09:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 06 22:09:22 2017 +0000"
      },
      "message": "Merge \"Clean up crt defaults\""
    },
    {
      "commit": "8697f10e747eada34fa91d838c1ce95b687068f5",
      "tree": "1a244cf548ec7672de884ab071753b3e84e35726",
      "parents": [
        "2ca61ebe970c7980107437c3bcc1d6d3485e9547",
        "6a2610dbd3a865505df3661f0ae435ad8e07c043"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Nov 06 18:59:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 06 18:59:00 2017 +0000"
      },
      "message": "Merge \"Remove no_default_compiler_flags from crt*\""
    },
    {
      "commit": "7d7b368a44f8531805618d58ef78efa21b3a1cea",
      "tree": "00bab86ca9dc0ed0eb0626b07c73475bd6fd8482",
      "parents": [
        "6a2610dbd3a865505df3661f0ae435ad8e07c043"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 03 13:38:40 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 03 13:38:40 2017 -0700"
      },
      "message": "Clean up crt defaults\n\nMake crt_so_defaults inherit from crt_defaults, remove duplicates\nfrom crt_so_defaults, and make the users of crt_so_defaults not\ndirectly use crt_defaults.\n\nTest: m checkbuild\nChange-Id: I1448a5a4c86521b994fd4d79120e0b7d3a9c5ba9\n"
    },
    {
      "commit": "6a2610dbd3a865505df3661f0ae435ad8e07c043",
      "tree": "fa7a6484a9a729371a8fc573622b26af8acbe43a",
      "parents": [
        "232541aa02e22ab8fafcdd503c74aae22fa09699"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 03 13:37:42 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 03 13:37:42 2017 -0700"
      },
      "message": "Remove no_default_compiler_flags from crt*\n\nno_default_compiler_flags is unnecessary and causes problems when\nnecessary flags like -no-canonical-prefixes are not passed.\n\nBug: 68719465\nTest: m checkbuild\nChange-Id: Ifdc68067eb3208b151b0a96820aa9a57b82db057\n"
    },
    {
      "commit": "050f046d3d3685c5419b265efe83da67a6e016bb",
      "tree": "acf3e538ccf260d0fb0ee9d8199334bedb14e625",
      "parents": [
        "232541aa02e22ab8fafcdd503c74aae22fa09699"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 03 12:02:50 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 03 12:02:50 2017 -0700"
      },
      "message": "Remove mips/mips64 headers from the NDK sysroot.\n\nTest: build/soong/scripts/build-ndk-prebuilts.sh\nBug: None\nChange-Id: Iac212939636abbbf8402c85c5e89c724fb531c91\n"
    },
    {
      "commit": "2f9c8ce38a885791dfa4cefb6370b5025c55ae82",
      "tree": "efbdbe306e126b1bad2d3bd455e23e49639f0a64",
      "parents": [
        "0cbbdaa5cfa131e33dbfc80ce9b34c9fe1523f08"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 01 13:54:47 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 01 18:13:36 2017 -0700"
      },
      "message": "Start de-duplicating the regular and wide printf implementations.\n\nThis patch switches to C++ (in anticipation of needing it later), removes\na little duplication (via a macro for now), and ensures uniform support\nfor %C/%lc and %S/%ls between regular and wide (with new tests).\n\nSince it\u0027s so hard to debug problems in printf (as the time I\u0027ve wasted\nalready today will testify), that\u0027s all I want to do in this change. The\nother 500 lines of diff can wait...\n\n(Also merge \"floatio.h\" into \"local.h\" now all the users are in forked\ncode.)\n\nBug: http://b/67371539\nTest: ran tests\nChange-Id: I083353d89c32b9302d759ca6967cc6d8a62cd8a5\n"
    },
    {
      "commit": "07e412419b63a9055465515845d7542e5e87176b",
      "tree": "6eaf8d440565181b8422d1a90c157e2ef9541774",
      "parents": [
        "555a6d19c8691519d24d1415b5749ac0b447f5cc",
        "37ad9597839c70a7ec79578e5072df9c189fc830"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 31 22:43:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 31 22:43:34 2017 +0000"
      },
      "message": "Merge \"More missing _unlocked \u003cstdio.h\u003e functions.\""
    },
    {
      "commit": "37ad9597839c70a7ec79578e5072df9c189fc830",
      "tree": "f1f70a143c99b072b040f5592f1b42da464b35f8",
      "parents": [
        "e379a202504911d228ae07d9ba32c5a02274fe1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 30 17:47:12 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 31 13:23:41 2017 -0700"
      },
      "message": "More missing _unlocked \u003cstdio.h\u003e functions.\n\nAlso simplify trivial one-liners like perror/puts/fputs, and clean up\nfread/fwrite slightly.\n\nFix perror to match POSIX.\n\nAdd basic perror and *_unlocked tests.\n\nBug: N/A\nTest: ran tests\nChange-Id: I63f83c8e0c15c3c4096509d17421ac331b6fc23d\n"
    },
    {
      "commit": "3a589c23626c64b34ec6840271033c9ff486c8c5",
      "tree": "240bcbe8483839db6c439445535b9ef047888982",
      "parents": [
        "e379a202504911d228ae07d9ba32c5a02274fe1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 30 11:43:58 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 30 11:43:58 2017 -0700"
      },
      "message": "Fork vfprintf.c/vfwprintf.c.\n\nFuture changes will start reducing the duplication...\n\nBug: http://b/67371539\nTest: ran tests\nChange-Id: I477afea34f9e1f41817823984bd0548944ee5eec\n"
    },
    {
      "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": "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": "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": "ddd6436df2adef2e195cf45634750a31c3e03bd1",
      "tree": "ae58a01e0582b0a5b19f7545b048e56756993052",
      "parents": [
        "01bb7bf6fb6b5b43c4b1ff00be79b64f01015691",
        "d4ca231ae2891e5c9eccb6e9a2e6af7fabcfc2a5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 12 22:23:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 12 22:23:58 2017 +0000"
      },
      "message": "Merge \"Unified sysroot: kill arch-specific include dirs.\""
    },
    {
      "commit": "d4ca231ae2891e5c9eccb6e9a2e6af7fabcfc2a5",
      "tree": "4ffbf1b6c0d0acb3df88b1ce02d574eeaead3f0a",
      "parents": [
        "36f7b8b7891f0af56eb61e7d32cc8cedb5ded8de"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 11 22:27:45 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 12 13:19:51 2017 -0700"
      },
      "message": "Unified sysroot: kill arch-specific include dirs.\n\n\u003cmachine/asm.h\u003e was internal use only.\n\n\u003cmachine/fenv.h\u003e is quite large, but can live in \u003cbits/...\u003e.\n\n\u003cmachine/regdef.h\u003e is trivially replaced by saying $x instead of x in\nour assembler.\n\n\u003cmachine/setjmp.h\u003e is trivially inlined into \u003csetjmp.h\u003e.\n\n\u003csgidefs.h\u003e is unused.\n\nBug: N/A\nTest: builds\nChange-Id: Id05dbab43a2f9537486efb8f27a5ef167b055815\n"
    },
    {
      "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": "5e7c90b7f1d6e6e14f8571f36b7c5548f4fa5de6",
      "tree": "b15501e91ee7058b7073abd78bced93d0f5adc7c",
      "parents": [
        "6e6e1abb89913463778ae7559dd6b70049c52216"
      ],
      "author": {
        "name": "Isaac Chen",
        "email": "ycchen@google.com",
        "time": "Wed Sep 20 14:44:42 2017 +0800"
      },
      "committer": {
        "name": "Isaac Chen",
        "email": "ycchen@google.com",
        "time": "Wed Oct 11 19:12:21 2017 +0800"
      },
      "message": "Optimize libc for generic armv7/armv8 neon cores\n\nIf (2nd) arch is \"arm\", (2nd) arch variant is \"armv7-a-neon\" or\n\"armv8-a\", and (2nd) cpu variant is \"generic\", current Android.bp only\nuses generic ARM assmebly or C code, even though they all have NEON.\n\nThis change use functions optimized for cortex-a15 (for these generic\ncores), which are a reasonable balance for most ARM cores with Neon.\n\nAlso build script for specific armv7/armv8 cores are refactored to\ntake advantage of the common part (mostly cortex-a15 code), so more\nthan 150 repeated lines are removed.\n\nBug: 66064745\nTest: For armv7-a-neon/armv8-a \"generic\" core\n       - boot with GSI on sailfish\n       - related cortex-a15 function are built and linked.\n      All libc.a/libc.so built are identical for the following cores:\n       - cortex-a7, cortex-a8, cortex-a9, cortex-a15, krait\n       - cortex-a53, cortex-a53.a57, cortex-a73, denver, kryo\n      $ lunch aosp_arm64 # with TARGET_2ND_CPU_VARIANT unset\n      # For each $core listed above\n      $ TARGET_2ND_CPU_VARIANT\u003d$core m -e -j libc\nChange-Id: Ia565d3ea09e034adcd014e7467a5b791cff908cb\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": "f1c568d1eac6d2baba62af35e5b9856fb7e98319",
      "tree": "a7840d0a41465e4bc73e766bfc212bee12c6eaa0",
      "parents": [
        "2e01f39c31e042482fbe10df79d8b2837ae79239"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 26 17:09:07 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 26 18:46:09 2017 -0700"
      },
      "message": "Add \u003cglob.h\u003e.\n\nThis is the FreeBSD implementation, plus some tests. The FreeBSD\nimplementation includes the GNU extensions and seems to be what\niOS is using too, which should provide bug compatibility for app\ndevelopers.\n\nThe code unfortunately uses a lot of stack, and uses FreeBSD locale\nimplementation that we don\u0027t have, but it does seem better maintained\nthan the other BSDs.\n\nBug: http://b/29251134\nTest: ran tests\nChange-Id: Ie477b45e42a6df1319b25712098519d2b33adf67\n"
    },
    {
      "commit": "7ccc50d2e48b9d8027a1f382b0408e9c36e56731",
      "tree": "5c0f8742d17baa66596860f88bfe387020b2d864",
      "parents": [
        "4326d84d217b40b819729da153f97217ea4ec932"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Sep 18 21:28:14 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Sep 20 13:59:13 2017 -0700"
      },
      "message": "Use an embedded linker for host bionic\n\nThe linux kernel requires that the ELF interpreter (runtime linker)\nthat\u0027s referenced by PT_INTERP be either an absolute path, or a relative\npath from the current working directory. We\u0027d prefer a relative path\nfrom the binary, similarly to how we handle looking up shared libraries,\nbut that\u0027s not supported.\n\nInstead, extract the LOAD segments from the runtime linker ELF binary\nand embed them into each host bionic binary, omitting the PT_INTERP\ndeclaration. The kernel will treat it as a static binary, and we\u0027ll use\na special entry point (linker_wrapper) to fix up the arguments passed by\nthe kernel before jumping to the embedded linker. From the linker\u0027s\npoint of view, it looks like the kernel loaded the linker like normal.\n\nBug: 31559095\nTest: Enable host bionic, build and run libdemangle_test\nChange-Id: I1753401ef91eecbf0ae3376faca31eec1c53842b\n"
    },
    {
      "commit": "7e6f98b93d8f386d3c9413ab17998591a0e1cf3a",
      "tree": "daac1c1a5d7c0ad3c71ea9bb68478670663cc5e2",
      "parents": [
        "40756d61ac05c71a1a00aa686bf5105bda420661",
        "2286b9f5ae822445646a5ed403949986498116b0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 11 21:39:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 11 21:39:41 2017 +0000"
      },
      "message": "Merge \"Remove clang: true\""
    },
    {
      "commit": "2286b9f5ae822445646a5ed403949986498116b0",
      "tree": "5ce4cb329035ba39834f1555b881eef1fe5a14ea",
      "parents": [
        "d74088bc46bba234a9bf24a91c16e64fc05ba3be"
      ],
      "author": {
        "name": "Lennart Wieboldt",
        "email": "lennart.1997@gmx.de",
        "time": "Mon Jul 24 20:06:15 2017 +0200"
      },
      "committer": {
        "name": "Lennart Wieboldt",
        "email": "lennart.1997@gmx.de",
        "time": "Mon Sep 11 21:43:58 2017 +0200"
      },
      "message": "Remove clang: true\n\nclang is the default compiler since Android nougat\n\nTest: mma \u0026 verified it´s still build with clang\nChange-Id: Id8b5361d18c1b2febb2dc6cc44502feaa08f605c\nSigned-off-by: Lennart Wieboldt \u003clennart.1997@gmx.de\u003e\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": "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": "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": "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": "1db06faa3891bd056431a5aa8f27c5bc34ad7988",
      "tree": "34534e0d9ab0152ab0b095145df9d57e7c4d17e4",
      "parents": [
        "4dd33f92d82b9fb77152bfc68f312d2fa5710a28",
        "b97049c0390cb1a11b9cb0b14391972e69398ce5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 01 02:03:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 01 02:03:52 2017 +0000"
      },
      "message": "Merge \"libc: Split FORTIFY into its own headers\""
    },
    {
      "commit": "bafa1985eccaac231ade6f15d340759f44928524",
      "tree": "4680ad77b3501d3df5cd0932eda2a9d86fe03d7f",
      "parents": [
        "07d2d327bfdfe51c000842125cabd852ce264b2b",
        "c41b560f5f624cbf40febd0a3ec0b2a3f74b8e42"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 28 21:42:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 28 21:42:13 2017 +0000"
      },
      "message": "Merge \"Implement wcwidth(3) in terms of icu4c.\""
    },
    {
      "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": "b97049c0390cb1a11b9cb0b14391972e69398ce5",
      "tree": "c331f88d0cb75e427564fdebd15738adf410f501",
      "parents": [
        "38bcf2b704eb5038668759d2dd37115aea1dc437"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jul 24 15:05:05 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jul 27 17:00:13 2017 -0700"
      },
      "message": "libc: Split FORTIFY into its own headers\n\nThis patch cleans up our standard headers by moving most of the FORTIFY\ncruft out in to its own sandbox. In order to include the *_chk and\n*_real declarations, you can either enable FORTIFY, or `#define\n__BIONIC_DECLARE_FORTIFY_HELPERS`.\n\nBoth sys/select.h and strings.h are explicitly ignored by this patch.\nBoth of these files have very small __BIONIC_FORTIFY blocks, and don\u0027t\ndefine any actual FORTIFY\u0027ed functions (just macros, and 3 *_chk\nfunctions).\n\nThis patch also makes the versioner ignore the FORTIFY implementation\nheaders, since we\u0027re guaranteed to pick the FORTIFY\u0027ed headers up when\nlooking at the regular headers. (...Not to mention that making the\nFORTIFY\u0027ed headers freestanding would be annoying to do and maintain for\n~no benefit).\n\nWe bake the knowledge of where FORTIFY headers live directly into the\nversioner. We could go with a more general approach (e.g. adding an -X\nIGNORED_FILE flag that tells the versioner to ignore\n$HEADER_PATH/$IGNORED_FILE), but we\u0027d then have to repeat that for every\ntest, every manual invocation of the versioner, etc. for no benefit\nthat\u0027s obvious to me.\n\nBug: 12231437\nTest: m checkbuild on bullhead internal master + CtsBionicTestCases. no\nnew errors.\n\nChange-Id: Iffc0cc609009b33d989cdaddde0a809282131a5b\n"
    },
    {
      "commit": "82e950c9fb183a0f1be9bd99f8e1c4ef5ddbddbc",
      "tree": "46ac8301e1ea1619e212cf3138e0303da10c2fa4",
      "parents": [
        "38bcf2b704eb5038668759d2dd37115aea1dc437"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 27 16:39:02 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 27 16:39:02 2017 -0700"
      },
      "message": "Actually turn on -Werror for crtbegin.\n\nAnd then -Wno-gcc-compat in the right place this time. (But leaving the\nother one because I don\u0027t care in the non-crtbegin code either.)\n\nBug: N/A\nTest: builds without warnings now\nChange-Id: Id2cfa3392ee80c045644ebfdf92c6d341db90964\n"
    },
    {
      "commit": "4f36cabd8d1b1f3ed6ad4586f86aad5731f4bdaf",
      "tree": "cbdf4e391733c4436bc50174d24289f0791e82a5",
      "parents": [
        "93068895091ee516c55a7873a4056145a7da3644",
        "d34b0a946c551db59b29a1446bbc3d4f6973d959"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 26 02:44:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 26 02:44:21 2017 +0000"
      },
      "message": "Merge \"libc: Move FORTIFY into one file; make style fixups\""
    },
    {
      "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": "93068895091ee516c55a7873a4056145a7da3644",
      "tree": "7735a719acaecd5848ddb714035e40b6a42b7e6e",
      "parents": [
        "33f9043f482769c35f82df9d25b4ccc8f1193229",
        "b348d5cda89d0f4a8306056dde1c0423887854d6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 25 21:03:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 25 21:03:26 2017 +0000"
      },
      "message": "Merge \"Build crtbegin with clang too.\""
    },
    {
      "commit": "b348d5cda89d0f4a8306056dde1c0423887854d6",
      "tree": "2a9c140dc3166ebc22527373169734a9fa841582",
      "parents": [
        "4fce647a5bcb61680c9f865b05c9f43a4841b244"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 24 16:53:11 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 25 11:54:33 2017 -0700"
      },
      "message": "Build crtbegin with clang too.\n\nIf _start_main is static, clang optimizes it out and then generates an\nundefined reference from the inline assembler, so let\u0027s explicitly tell\nthe compiler it\u0027s used.\n\nBug: N/A\nTest: ran tests\nChange-Id: Iba3d9c63abae9a0dc32f236b01783515f0190956\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": "bff8da308ffee03645b7e9e435b5ec51d71cf39c",
      "tree": "5583c567e32a8a59da652b56b33ef005e6162e57",
      "parents": [
        "89ff49942b16a3aaf8bc65a42c2c03a956f5e9a0",
        "3a4c45499e9b67799fdfe4693e0a4fbbb5e955e2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 24 20:36:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 20:36:16 2017 +0000"
      },
      "message": "Merge \"Replace fmemopen.\""
    },
    {
      "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": "fd80e39546c3f8567be9e7a208fb07c32ef52657",
      "tree": "389c88a22e41362d329f54831f857d31066f01f5",
      "parents": [
        "248b5cb672a9eadde695edb7d73e9d1ed5cb0b7f",
        "20f3399956b691d79b3979d586d76d8180113f07"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 24 19:23:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 24 19:23:36 2017 +0000"
      },
      "message": "Merge \"Switch to FreeBSD for wcsstr and wmemcpy.\""
    },
    {
      "commit": "3a4c45499e9b67799fdfe4693e0a4fbbb5e955e2",
      "tree": "e91cf7421899cec6afcd4ee04ce5ecd63e67fc4b",
      "parents": [
        "0d6485eca47f0e860486795b2da97679948fd5d5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 19 17:20:24 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 24 10:48:42 2017 -0700"
      },
      "message": "Replace fmemopen.\n\nA new implementation starting from the FreeBSD fmemopen rather than the\nOpenBSD one we used to use.\n\nThe tests were arrived at by translating each sentence in\nhttp://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html,\nplus http://man7.org/linux/man-pages/man3/fmemopen.3.html for historical\nGNU bugs.\n\nBug: http://b/31304889\nTest: ran tests\nChange-Id: Id8b168c9ecde638e9cdedbc3b8a0982fc83c7048\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"
    },
    {
      "commit": "20f3399956b691d79b3979d586d76d8180113f07",
      "tree": "288c7548e672dfbd3cb1264a64145487d47423f7",
      "parents": [
        "3537331942cdebab5ab53104b852c997a9bc0be5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 13 09:45:00 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 13 09:45:00 2017 -0700"
      },
      "message": "Switch to FreeBSD for wcsstr and wmemcpy.\n\nAlmost all of our w* functions come from FreeBSD already. The one downside is\nthat we can\u0027t take all our w* functions from FreeBSD because FreeBSD handles\nlocales very differently from us.\n\nBug: N/A\nTest: ran tests\nChange-Id: I177b4332499992babd5d5afe5b3f469f8c4345a5\n"
    },
    {
      "commit": "2d585e0070f33ec86a5d5decf9642ee9f2501324",
      "tree": "c4a95ed3dde95f48b6141cc0c015ba1d8818f31c",
      "parents": [
        "ada33eb9b4ec9e9fe2a37c8dbe1aa68348aa66b1",
        "1a8b7f2d1ca7c605e8e0e6a707a8c4bc9839dcda"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jul 13 08:34:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 13 08:34:57 2017 +0000"
      },
      "message": "Merge changes from topic \u0027locale-android-support\u0027\n\n* changes:\n  Add a non-TLS slot implementation of locale.cpp.\n  Move non-locale.h APIs out of locale.cpp.\n"
    },
    {
      "commit": "e2fd01035ba85b906dbf0e6b6112b7f8ff52beef",
      "tree": "8bbe318fca314962ff32b5cd10eee318c440aa6e",
      "parents": [
        "82d746fb39465e78088aeb11a5dc178cf264d0c0"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jul 11 14:27:07 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 12 12:41:47 2017 -0700"
      },
      "message": "Move non-locale.h APIs out of locale.cpp.\n\nlibandroid_support only needs the locale.h stuff.\n\nTest: make checkbuild\nBug: None\nChange-Id: I0c53fe9d2df4f9ff4b99771727034508bc89cb32\n"
    },
    {
      "commit": "7532b3262797e964438e7ed50450d04ef33d85c6",
      "tree": "182c0d46a964f6fad2cd220b4b5c4cb89dc4713c",
      "parents": [
        "3537331942cdebab5ab53104b852c997a9bc0be5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 11 15:00:17 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 11 15:00:17 2017 -0700"
      },
      "message": "Replace killpg.\n\nUpstream\u0027s killpg is diverging further from glibc behavior, so let\u0027s just fork.\n\nBug: N/A\nTest: ran tests\nChange-Id: I70a3543018bc0a5c0bbf019ac527043b90568fda\n"
    },
    {
      "commit": "0a0743f86454f8f50d04127beb614094f3b5a593",
      "tree": "388be22547813c653c147e3104abcff923dcab28",
      "parents": [
        "ddefae7ba92c40d60f2401e010e7789bee6f260d"
      ],
      "author": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Mon Jul 10 21:15:37 2017 +0200"
      },
      "committer": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Mon Jul 10 21:44:17 2017 +0200"
      },
      "message": "Move environ valiable into it\u0027s own file\n\nTest: build statically the example program below\n\n  char** environ;\n  int main() {\n  }\n\nChange-Id: I3f01652da1d5063d92ba7cbff7fb09bd0a89325c\n"
    },
    {
      "commit": "f4b1cbda4a6fa15b0223b952a343f87523b8578d",
      "tree": "44fb71a2252acb9f4c024eb779b6283b87ba2cc3",
      "parents": [
        "d411524609186dc6b243156e4df43617ab33d0f4"
      ],
      "author": {
        "name": "Stephen Crane",
        "email": "sjc@immunant.com",
        "time": "Tue May 09 14:27:43 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 21 23:53:46 2017 +0000"
      },
      "message": "Disable stack protector for __libc_preinit\n\n__libc_preinit sets up the stack protector global cookie value, and thus\ncannot intialize a stack protector cookie for itself in the function\nprologue. LTO compilation can inline functions requiring a stack\nprotector into __libc_preinit. This patch disables stack protection for\n__libc_preinit and forces all potentially inlined functions into a\nhelper that can have a stack protector.\n\nTest: run bionic-unit-tests\n\nChange-Id: I45911611190f216c91eb6feff722967214c5f99f\n"
    },
    {
      "commit": "5059939c87f4806a8c9f67cfbd1a4f9fe2d4e59c",
      "tree": "982bc3947088a422d6e51f05ee15afff6fb7e5cf",
      "parents": [
        "025fb33c9dbae35ce343d3f15cbf642518f82893"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 25 17:13:32 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 25 19:17:55 2017 -0700"
      },
      "message": "Enable exporting the non-uapi scsi headers.\n\nCallers are supposed to #include \u003cscsi/sg.h\u003e but if we tell soong to add\nbionic/libc/kernel/android/ to the include path, the uapi headers in there\nwould be (unintentionally) accessible as either \u003clinux/name.h\u003e or\n\u003cuapi/linux/name.h\u003e.\n\nBug: N/A (hit while upgrading strace to 4.17)\nTest: builds\nChange-Id: I8d47dd51da688c38f747a255d401dfb2c209c805\n"
    },
    {
      "commit": "94072fbb4e42a195cd6cec97f9af15ff45cb84ee",
      "tree": "fe577acf1afd7e7be2372bf419537177da508011",
      "parents": [
        "4767bc4a6cebc2ad4c61cccdf92290e17227a792"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 23 11:03:58 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 23 14:47:16 2017 -0700"
      },
      "message": "Switch to inline assembler in crtbegin.\n\nUsing __builtin_frame_address was clever, but didn\u0027t work for arm64 (for\nreasons which were never investigated) and the ChromeOS folks claim it\ncauses trouble for x86 with ARC++ (though without a reproduceable test case).\n\nNaked functions turn out to be quite unevenly supported: some architectures\ndo the right thing, others don\u0027t; some architectures warn, others don\u0027t (and\nthe warnings don\u0027t always match the platforms that _actually_ have problems).\n\nInline assembler also removes the guessing games: everyone knows what the\ncouple of instructions _ought_ to be, and now we don\u0027t have to reason about\nwhat the compiler will actually do (yet still keep the majority of the code\nin C).\n\nBug: N/A\nTest: builds, boots\nChange-Id: I14207ef50ca46b6eca273c3cb7509c311146a3ca\n"
    },
    {
      "commit": "94bd274551189c26e061aed7515f7c7332ee2a16",
      "tree": "a29714c155308d53045308aff4f156e274228f8d",
      "parents": [
        "ac58d33d343eba6a3370f541467f09802c48b24b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 08 12:09:03 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 15 12:44:58 2017 -0700"
      },
      "message": "Add support for cortex-a73.\n\nBug: 37647380\n\nTest: Built target with cortex-a73 for both 32 bit/64 bit.\nTest: Built target with cortex-a53.cortex-a57 for both 32 bit/64 bit.\nTest: Ran bionic unit tests, ran art target tests.\n\n(cherry picked from commit 6fca047b5379c2bf7b6b874a2b2f9cc44e1b01fa)\n\nChange-Id: I2c48e1bc7f4a3c4548d1c66f87eab19c8618a0b8\n"
    },
    {
      "commit": "7a3681e5b6c39bc2b3b62031ca5941dbf7bc4e63",
      "tree": "78c25e2a38b7efed8db770a623a5cbfb7eaab11d",
      "parents": [
        "ca5e0f49ca5df873a20c996755175b5c9c1e2ed9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 24 17:48:32 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 08:50:43 2017 -0700"
      },
      "message": "Move libc_log code into libasync_safe.\n\nThis library is used by a number of different libraries in the system.\nMake it easy for platform libraries to use this library and create\nan actual exported include file.\n\nChange the names of the functions to reflect the new name of the library.\n\nRun clang_format on the async_safe_log.cpp file since the formatting is\nall over the place.\n\nBug: 31919199\n\nTest: Compiled for angler/bullhead, and booted.\nTest: Ran bionic unit tests.\nTest: Ran the malloc debug tests.\nChange-Id: I8071bf690c17b0ea3bc8dc5749cdd5b6ad58478a\n"
    },
    {
      "commit": "2fad0d59278a86847bf58bfd8d7d2bf8b1467b3d",
      "tree": "2e0fa13829b911b76be301391650a71f7b18e986",
      "parents": [
        "82f7208ac0b4e31003ddfbad4a4e64e3e0e5550d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 27 16:26:55 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 27 16:26:55 2017 -0700"
      },
      "message": "Include the libc/kernel/android/scsi headers in the NDK.\n\nWe have some non-upstream (but Android common kernel) scsi headers to include\nin the NDK.\n\nBug: N/A\nTest: checked out/soong/ndk/sysroot\nChange-Id: If7611e1e554ada63f266ec99d95dfedb99562ae9\n"
    },
    {
      "commit": "04d99df80db386cad1e3f83f3d760920e6f61b32",
      "tree": "8d52e4795bda9c224b572bfb34938f8153c1f171",
      "parents": [
        "f568ccd34afddc2b4223b309109d533349d73749"
      ],
      "author": {
        "name": "Jake Weinstein",
        "email": "xboxlover360@gmail.com",
        "time": "Thu Aug 25 20:03:25 2016 -0400"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Apr 13 11:18:56 2017 -0700"
      },
      "message": "libc: ARM: Add 32-bit Kryo memcpy\n\n* Memcpy is based on Scorpion due to Qualcomm\u0027s\n  128-bit cache line size optimizations.\n\n* PLDOFFSET and PLDSIZE are from the ARM64 Kryo memcpy routine.\n\nBelow are the results of the benchmark, tested on a OnePlus 3 with MSM8996.\n\nBefore:\nBM_string_memcpy/8                          1000k          8    0.934 GiB/s\nBM_string_memcpy/64                         1000k         11    5.785 GiB/s\nBM_string_memcpy/512                        1000k         25   19.918 GiB/s\nBM_string_memcpy/1024                         50M         42   23.938 GiB/s\nBM_string_memcpy/8Ki                          10M        473   17.291 GiB/s\nBM_string_memcpy/16Ki                          5M        565   28.976 GiB/s\nBM_string_memcpy/32Ki                       1000k       1105   29.631 GiB/s\nBM_string_memcpy/64Ki                       1000k       2194   29.864 GiB/s\n\nAfter:\nBM_string_memcpy/8                          1000k          6    1.145 GiB/s\nBM_string_memcpy/64                         1000k          7    8.560 GiB/s\nBM_string_memcpy/512                        1000k         18   27.370 GiB/s\nBM_string_memcpy/1024                         50M         33   30.340 GiB/s\nBM_string_memcpy/8Ki                          10M        266   30.770 GiB/s\nBM_string_memcpy/16Ki                          5M        553   29.599 GiB/s\nBM_string_memcpy/32Ki                       1000k       1121   29.219 GiB/s\nBM_string_memcpy/64Ki                       1000k       2208   29.678 GiB/s\n\nTest: make otapackage\nTest: Ran bionic unit tests on Pixel device. Verified memcpy wins on\nTest: Pixel device.\n\nChange-Id: Id7a9c37ef75a306dd5cf8d374d79d0fe83f8a3ba\n"
    },
    {
      "commit": "4d114f9e215fadc7d4f65f4d1ddccf95523ad6ee",
      "tree": "105cb4dfc9f71e59a0a7dae904b40c6c90cb607d",
      "parents": [
        "2be801302725ab10f7e1fb62ba663ef477f58c6d"
      ],
      "author": {
        "name": "Jake Weinstein",
        "email": "xboxlover360@gmail.com",
        "time": "Fri Apr 07 14:55:53 2017 -0400"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 12 14:58:29 2017 -0700"
      },
      "message": "libc: use Cortex-A7/A53 memset on Kryo\n\nTested on OnePlus 3 with MSM8996\n\nBefore (Krait):\nBM_string_memset/8                          1000k          7    1.071 GiB/s\nBM_string_memset/64                         1000k          9    6.720 GiB/s\nBM_string_memset/512                        1000k         19   26.699 GiB/s\nBM_string_memset/1024                       1000k         29   34.214 GiB/s\nBM_string_memset/8Ki                          10M        184   44.302 GiB/s\nBM_string_memset/16Ki                          5M        351   46.656 GiB/s\nBM_string_memset/32Ki                          5M        686   47.744 GiB/s\nBM_string_memset/64Ki                       1000k       1355   48.342 GiB/s\n\nAfter (A7/A53):\nBM_string_memset/8                          1000k          7    1.017 GiB/s\nBM_string_memset/64                         1000k          7    8.039 GiB/s\nBM_string_memset/512                        1000k         13   37.976 GiB/s\nBM_string_memset/1024                       1000k         21   47.595 GiB/s\nBM_string_memset/8Ki                          10M        150   54.354 GiB/s\nBM_string_memset/16Ki                         10M        285   57.336 GiB/s\nBM_string_memset/32Ki                          5M        555   59.016 GiB/s\nBM_string_memset/64Ki                       1000k       1097   59.720 GiB/s\n\nTest: make otapackage\nTest: Verified this wins in all dimensions on a Pixel device.\n\nChange-Id: I4cb72cc0363877de7c41d6f991149fda42fd0b4b\n"
    },
    {
      "commit": "21d4a9ac6b6203733acedde5534083eaadfad5a7",
      "tree": "f2b0dfc360f890801125ac7f21398ce6c5843e0a",
      "parents": [
        "faf7f3542a1b7c850450df158072f021537f40c1",
        "0e8616a37ab3af8567c130de8e83b968ffca79a6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 12 18:15:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 12 18:15:53 2017 +0000"
      },
      "message": "Merge \"Move localtime.c over to CachedProperty.\""
    },
    {
      "commit": "230a7a44ceb82db5d709cbe718dab95d8159633c",
      "tree": "ce414b3c49900025f15f6d73d059929b0a24c143",
      "parents": [
        "d517ac2dcde4afe9d7eead7b460367694c9ece01"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Apr 07 14:09:05 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Apr 12 00:06:47 2017 +0000"
      },
      "message": "Mark CRT objects as vendor available\n\nThis will build separate copies of the CRT for vendor vs system when\nBOARD_VNDK_VERSION is set. We\u0027ll be able to change crtbrand / etc as\nneeded with #ifdef __ANDROID_VNDK__ and similar.\n\nBug: 36426473\nBug: 36079834\nTest: Put #ifdef __ANDROID_VNDK__ into crtbrand.S, see changes\nChange-Id: I7db0cccfe94d144f072e7cef23832884f3c066f0\n"
    },
    {
      "commit": "0e8616a37ab3af8567c130de8e83b968ffca79a6",
      "tree": "a7d0ce44b22d59d19c6ffe22882598b5b1402d67",
      "parents": [
        "2d389ffee98b6f480f4340ec408d37457e02fbd7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 11 14:44:51 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 11 14:44:51 2017 -0700"
      },
      "message": "Move localtime.c over to CachedProperty.\n\nSince localtime.c is C, this entails pulling our code out into its own\nC++ file, which we should probably have done years ago anyway.\n\nBug: N/A\nTest: ran tests, and manually tested via Settings\nChange-Id: Ifc787a553e8f739a87641a2d35321aca40a47286\n"
    },
    {
      "commit": "51a9bf16733595fcd7ffcde3cd3832262516a390",
      "tree": "f9c293c54697c4169cebeb36d696ee4bb6456991",
      "parents": [
        "df244d876a5da87161e550147cc03c4373b49ca6"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Apr 07 14:09:18 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Apr 11 15:15:30 2017 +0000"
      },
      "message": "Remove .(ll)ndk suffix from (ll)ndk_library\n\nSoong handles these automatically now.\n\nBug: 33241851\nTest: Android-aosp_arm.mk is the same before/after\nTest: build.ninja is the same before/after\nTest: build-aosp_arm.ninja is the same before/after\nMerged-In: Ibfe4cf5db732d9007b1cc12dbc523c427de1b23d\nChange-Id: Ibfe4cf5db732d9007b1cc12dbc523c427de1b23d\n"
    },
    {
      "commit": "b8f7fde4bdfba5a65ef5a88265fdb79403e8a699",
      "tree": "e98bbe6b0ad4cccccbe00d5f4c903ab66be95c3e",
      "parents": [
        "a3ed901ef82fae908858f08a62e3d04f769c26ce"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Mar 20 14:07:47 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Apr 05 22:42:08 2017 +0000"
      },
      "message": "Add LLNDK stub libraries for the VNDK\n\nThe stub libraries are the same as the (equivalent version) NDK, but\nthey also contain symbols tagged with \u0027vndk\u0027. Except there are none of\nthose in Bionic currently.\n\nFor headers, the LLNDK/VNDK isn\u0027t using a sysroot like the NDK. Nor is\nit hardcoding an explicit source path list like the platform. Instead it\nruns the bionic/libc/include directory through versioner like the NDK,\nthen exports those generated headers and the kernel headers from the\nstub library like any other exported header. Except it uses -isystem\ninstead of -I due to export_headers_as_system.\n\nTest: aosp_arm; m -j\nTest: Enable BOARD_VNDK_VERSION on aosp_arm; m -j\nTest: Inspect out/soong/build.ninja before/after (w/o vndk)\nChange-Id: Ief58a73907a83053b408b1d4b62999cba470d61c\n"
    },
    {
      "commit": "a3ed901ef82fae908858f08a62e3d04f769c26ce",
      "tree": "9383b5708b728f2cfc1c7898c58a1a305842659b",
      "parents": [
        "07807a10a2dfa85a952ee8c06188d0bc9597c184"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Apr 04 15:51:26 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Apr 04 15:52:13 2017 -0700"
      },
      "message": "Remove obsolete Android.mk comments\n\nTest: none\nChange-Id: I0419800d44a7918a4415baf840c7d30bf30a18ed\n"
    },
    {
      "commit": "07807a10a2dfa85a952ee8c06188d0bc9597c184",
      "tree": "1010d24db4a12c780043372860f28aae69540082",
      "parents": [
        "defecea27bbe2c3dd521dfb3054d270918178f53",
        "950a95836d5040e5d123a2128c85e8ac8b46588c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 04 21:10:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 04 21:10:55 2017 +0000"
      },
      "message": "Merge \"Add kryo support.\""
    },
    {
      "commit": "10ec9286ae843b0a84438699458ba17bff2f5602",
      "tree": "dec03457b63bc63468d1cf1f5afb1380aa59a089",
      "parents": [
        "4df5ca1e0254790d41f945352a93f5c783ea8de0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 15:13:29 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 16:00:10 2017 -0700"
      },
      "message": "Break android_set_abort_message out of libc_logging.\n\nlibc_logging is getting statically linked into the crash handler\nlibrary, resulting in two copies of the abort message code existing in\nprocesses, one in the linker, and one in the crash handler.\n\nMove android_set_abort_message to its own file to solve this.\n\nBug: http://b/36862204\nTest: /data/nativetest/debuggerd_test/debuggerd_test32\nChange-Id: Ie198c5a3bb07645aa43296915c9a6752693f14a9\n"
    },
    {
      "commit": "950a95836d5040e5d123a2128c85e8ac8b46588c",
      "tree": "8104c68ae420570acfdb0c3e2817d9bb85be6ee2",
      "parents": [
        "aa0b5054c52e10a9e4b5d5dd9daa90d707164af0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 29 13:10:56 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 03 10:30:55 2017 -0700"
      },
      "message": "Add kryo support.\n\nCurrently, using kryo is the same as using krait, but there are specialized\nroutines that are pending that will be used after this commit.\n\nBug: 36728278\n\nTest: Built and booted a sailfish using kryo.\nChange-Id: Id7510640673c31f7536367041212db6d96a564f0\n"
    },
    {
      "commit": "22805ea9b843f1b56932be9508d179438d23427e",
      "tree": "2504c07308e47a6c69b340b2f6433b42678ecf1f",
      "parents": [
        "840ae69408c9b6ca269bce4657b9696cc6720918"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Mar 22 15:28:05 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Mar 27 13:06:45 2017 -0700"
      },
      "message": "Revert \"Revert \"Run the versioner as part of the build.\"\"\n\nThis reverts commit 69c7562f5983ed5bc1d330b1f44b5cf506efb60e.\n\nTest: make checkbuild\nChange-Id: Ie443029398c01b45e0a0317a8074808b064f35d4\n"
    },
    {
      "commit": "fcb877ac4b05e65f64b9b3199d71dfeaae299177",
      "tree": "cbeafec613f5f3d8439acb16483fae8ed38d5ddc",
      "parents": [
        "616b2d87eabee34559b12a3ddd3e057a1ad49879"
      ],
      "author": {
        "name": "Prashant Patil",
        "email": "prashant.patil@imgtec.com",
        "time": "Thu Mar 16 18:07:00 2017 +0530"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 16 10:26:24 2017 -0700"
      },
      "message": "Add libc optimizations to bionic for MIPS\n\nTest: Used bionic tests available under bionic/tests folder.\n      Tested for mips32r1/mips32r2/mips64r6 on emulators.\n\nChange-Id: I589415ddc496df3f6067ae34cb33ca58b3a1f276\nSigned-off-by: Prashant Patil \u003cprashant.patil@imgtec.com\u003e\n"
    },
    {
      "commit": "926add15934f0b1d71874c85c3f1b3930e68a2fd",
      "tree": "c1b9ac4cb26192d937c95ce6206d5383e6465e67",
      "parents": [
        "5faa3166ce69d7ea710cee90e916f9d6611cbe07"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 02 18:56:12 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 02 18:57:44 2017 -0800"
      },
      "message": "Generate both static and shared libseccomp_policy.\n\nAlso switch to Android.bp\n\nBug: N/A\nTest: builds\nChange-Id: I33697a40b30d071f8d07aa33e1fb2b0c6e8a9f6d\n"
    },
    {
      "commit": "4021909162c8371557baeff4520c1eddeba7318f",
      "tree": "dd13df817ff9920da84aeea0477b6b98fe884bdc",
      "parents": [
        "2a4d892c7f14d849b5f349528ed2b921b19f5645"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 28 21:04:30 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 28 21:05:34 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Make libc.so global\"\"\"\n\nThis reverts commit 2a4d892c7f14d849b5f349528ed2b921b19f5645.\n\nBug: http://b/35417197\nBug: http://b/35338922\nBug: http://b/35700074\nTest: manual\nChange-Id: Ib99d23d46664f3efa5be70213aa093b505e38775\n"
    },
    {
      "commit": "2a4d892c7f14d849b5f349528ed2b921b19f5645",
      "tree": "4e010c7f493683d67d7d79d47923247ca0014a21",
      "parents": [
        "fec0e015ce0369b3ad710547f3d6af343b2cd5e1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 16 12:03:21 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 17 22:38:22 2017 +0000"
      },
      "message": "Revert \"Revert \"Make libc.so global\"\"\n\nThis reverts commit 65236d43e8e8ea2155c0d64e35f00b3c30b21147.\n\nBug: http://b/35417197\nBug: http://b/35338922\nTest: vogar --classpath out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/classes.jack  --mode\u003ddevice --variant\u003dX32 dalvik.system.JniTest#testGetSuperclass\nChange-Id: Ibf3bb7396e7d11ebe95e2f9267d0fc4af3fbe8c5\n"
    },
    {
      "commit": "65236d43e8e8ea2155c0d64e35f00b3c30b21147",
      "tree": "720378e423a3c702358bb4341f93e8e9517d625f",
      "parents": [
        "879177c9e12df4efe9f17ff3536005c258f625e8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 14 19:03:26 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 14 19:03:26 2017 +0000"
      },
      "message": "Revert \"Make libc.so global\"\n\nThis reverts commit 879177c9e12df4efe9f17ff3536005c258f625e8.\n\nBug: http://b/26833548\nChange-Id: I23e0b34777d18e369063185da14c57994807da29\n"
    },
    {
      "commit": "879177c9e12df4efe9f17ff3536005c258f625e8",
      "tree": "8181ac3c2da150c73e001412e8f1a3fb6a365afb",
      "parents": [
        "2cb4dfbb8c71ccc7890ecfd792790d7f6842b5a8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 13 09:17:21 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 13 10:05:17 2017 -0800"
      },
      "message": "Make libc.so global\n\nThis is a way to avoid loading multiple libc.so\nwhen non-default namespace search path includes\n/system/lib. This is used by some art tests.\n\nBug: http://b/26833548\nTest: m -j32 test-art-target-run-test-004-JniTest\nChange-Id: I919d3a0560bd3c9ac19df21a235641a667f0f017\n"
    },
    {
      "commit": "dd91b32baf376d4ef84f4713bb758e1a0c892701",
      "tree": "26f4813ef507d198465d74db5fcc9ca1c3754dad",
      "parents": [
        "f201c704d64ea40432123a90489d5dc88d613213"
      ],
      "author": {
        "name": "mspector",
        "email": "mspector@google.com",
        "time": "Wed Feb 08 17:01:27 2017 -0800"
      },
      "committer": {
        "name": "mspector",
        "email": "mspector@google.com",
        "time": "Thu Feb 09 18:37:52 2017 -0800"
      },
      "message": "Removing the kuser_helper elf note from building\n\nThis change removes the kuser_helper note from building automatically\nwith any binary but leaves the note.\nAlso fixes a typo in the note.\n\nOriginal patch adding the note:\nIb8366e2a0810092b71381d57dee4bdaa56369a24\n\nBug: 34815073\nTest: Manual - Note is no longer added to binaries\nChange-Id: Ieb81f9d9127d1f8a522434a31c696d743238e2a5\n"
    },
    {
      "commit": "a187a6f12e4ce0314baba73e77aa3b1ea46a72d2",
      "tree": "2d02e20bce64241c2815e50b5a0b75746d510af3",
      "parents": [
        "1fedfedda8a2b75ed56669e28265f943312ec22f",
        "7484c21c4c352a2200d94939fabc10d1bd3f0723"
      ],
      "author": {
        "name": "David James",
        "email": "davidjames@google.com",
        "time": "Thu Feb 02 02:46:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 02 02:46:40 2017 +0000"
      },
      "message": "Merge \"Revert \"Remove the global thread list.\"\""
    },
    {
      "commit": "7484c21c4c352a2200d94939fabc10d1bd3f0723",
      "tree": "fe089ec40970a76f11107534632b1fc5789660ed",
      "parents": [
        "b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 02:41:38 2017 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 02:41:38 2017 +0000"
      },
      "message": "Revert \"Remove the global thread list.\"\n\nThis reverts commit b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5.\n\nBreaks swiftshader (http:/b/34883464).\n\nChange-Id: I7b21193ba8a78f07d7ac65e41d0fe8516940a83b\n"
    },
    {
      "commit": "9b9d4ebc8bbbdfe627d23f58084ec4ea0bd7a0cb",
      "tree": "b46d2d5dc0e00d024b7d07b1195d5b48141c5922",
      "parents": [
        "b88112dcfc7954f001e722bb274b110e253dae6e",
        "b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 01 16:16:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 01 16:16:41 2017 +0000"
      },
      "message": "Merge \"Remove the global thread list.\""
    },
    {
      "commit": "f8562c5f8f0a8df88bd864b8c64eeb9b8905b97d",
      "tree": "b5f9e89d8683da813350e680a1e19882473e8485",
      "parents": [
        "6a9e0c8f15dee1b1b7c5cd7f8e058c2b18683bbc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 26 16:48:57 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 16:19:59 2017 -0800"
      },
      "message": "Remove backwards compatibility for old system properties.\n\nNo-one is directly upgrading from pre-K to O...\n\nAlso move more implementation details out of the header file.\n\nBug: http://b/33926793\nTest: boots\nChange-Id: I7a0936acbb1cea8a3b2cd6797ec53ba7e4a050f3\n"
    },
    {
      "commit": "2e3d6a1d67f78ea37ceb5a082eefbb812c0a320e",
      "tree": "21a3d3b8c084f2c2c66c56cb2f183ec4ac8999e6",
      "parents": [
        "3f6d59977545d65f01bd218c7453c7149d7374a4"
      ],
      "author": {
        "name": "mspector",
        "email": "mspector@google.com",
        "time": "Tue Jan 24 21:51:51 2017 -0800"
      },
      "committer": {
        "name": "mspector",
        "email": "mspector@google.com",
        "time": "Wed Jan 25 17:33:05 2017 -0800"
      },
      "message": "Adding kuser_helper on note to all arm32 binaries.\n\nA kernel change is going in for 64bit arm to disable kuser_helper vector\npages for 32bit processes.  This change adds a special elf note to\nall arm32 binaries built with bionic.  This note tells the kernel to\nload the kuser_helper vector page for the process.\n\nBug: 33689037\nTest: Manual - Phone boots, 32bit binaries have the notes, 64bit\nbinaries do not.\nChange-Id: Ib8366e2a0810092b71381d57dee4bdaa56369a24\n"
    },
    {
      "commit": "35bbed802085e81e268c1198333aa71d26d34109",
      "tree": "9f195438423944be9b2c722179686e606b16bb8e",
      "parents": [
        "98d200899bbce14e676154435c1a521f98d0c6ba"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 17 18:16:07 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 17 18:31:33 2017 -0800"
      },
      "message": "Declare dependency on android_filesystem_config.h\n\nandroid_filesystem_config.h comes from a directory outside bionic/libc\nso it can\u0027t be referenced directly, add it as a source file through\na filegroup module.\n\nBug: 34283327\nTest: builds\nTest: libc rebuilds after touch system/core/include/private/android_filesystem_config.h\nChange-Id: I90f6b7b25b70842b8619d558074449f13e6e6b03\n"
    },
    {
      "commit": "940d460f59e566f2d84ea3e114074a50996e76b3",
      "tree": "e8e782b4af97446e3938460330631fa4c3b56caa",
      "parents": [
        "74e1fe1cc04f11b05fdc653a992b72c1aa3ff2b5",
        "3f6eee9793e4c41c7f4b15a723c777ae67fb1e51"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 10 01:15:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 10 01:15:30 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"move android_ids into bionic\"\"\""
    }
  ],
  "next": "b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5"
}
