)]}'
{
  "log": [
    {
      "commit": "53df1f3772ad4843461e78540111b21e9061c051",
      "tree": "f43d0cf9b5f14461f63e624d3dcd11cf7669b743",
      "parents": [
        "2ef1cd3f4430d344d88f1275b850119dc963cfa1"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Jul 12 14:44:02 2021 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Jul 12 16:33:26 2021 -0700"
      },
      "message": "Make MTE tests pass with all values of MEMTAG_OPTIONS.\n\nDo not assume that tests start with Sync MTE; check the initial setting\nand change test logic as appropriate.\n\nBug: 192480262\nTest: bionic-unit-tests with MEMTAG_OPTIONS\u003d(off|sync|async)\nChange-Id: Id80301e6426af16f89bd80a7a7ab127b6fd60425\n"
    },
    {
      "commit": "f9cfecf3d4d848e247dc8bdc486ed227bff7315f",
      "tree": "00f1b5a19b7acaa16783ea14361d156a38a98989",
      "parents": [
        "15ade069b10f7f5291e48c01db2da4852dae04b7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 04 16:58:13 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 04 17:01:55 2021 -0800"
      },
      "message": "Fix freopen() where the path is null.\n\nThis has been in the standard since C99, but we\u0027ve never supported it\nbefore. It\u0027s apparently used by SPIRV-Tools.\n\nI tried implementing this the other way (with fcntl(2)) first, but\neventually realized that that\u0027s more complicated and gives worse\nresults. This implementation assumes that /proc is mounted, but so much\nof libc relies on that at this point that I don\u0027t think there\u0027s any\nrealistic case where the fcntl(2) implementation would be preferable,\nand there are many where it\u0027s not.\n\nThe fact that no-one\u0027s mentioned this until now suggests that it\u0027s not a\nheavily used feature anyway.\n\nI\u0027ve also replaced AssertCloseOnExec() with a CloseOnExec()\nboolean-valued function instead, because it\u0027s really annoying getting\nassertion failures that don\u0027t point you at the test line in question,\nand instead point to some common helper code.\n\nTest: treehugger\nChange-Id: Ia2e53bf2664a4f782581042054ecd492830e2aed\n"
    },
    {
      "commit": "7cda75f1d3e147a300d7ff4d690b13e36bff5c5d",
      "tree": "0d4390746ae35c223432964fce5041d3dc280bed",
      "parents": [
        "9aa6b15d799ac246e842552fca555920a93ce46b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 22 13:22:35 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 22 13:22:35 2020 -0700"
      },
      "message": "Add DoNotOptimize and use it in tests.\n\nBug: http://b/148307629\nTest: treehugger\nChange-Id: I3b1726ae55116f6553ea38fe163abdde179c21f0\n"
    },
    {
      "commit": "37c5ed3e50d28cba6d419c2e1c63f1ba77cba7c1",
      "tree": "ef9ee894d2f23b7adc4e33613178d4a5caabe689",
      "parents": [
        "66ae134614cbac430d12fde8b6d51cd02ae432a8"
      ],
      "author": {
        "name": "Lev Rumyantsev",
        "email": "levarum@google.com",
        "time": "Fri Sep 18 15:09:01 2020 -0700"
      },
      "committer": {
        "name": "Lev Rumyantsev",
        "email": "levarum@google.com",
        "time": "Fri Sep 18 15:09:01 2020 -0700"
      },
      "message": "Simplify native bridge skip check\n\nA follow-up to r.android.com/1430136.\n\nTest: CtsBionicTestCases\nBug: None\nChange-Id: I372bc0866b1d286637d3671f82be83cec1027bca\n"
    },
    {
      "commit": "b56d1182d1067e70910584cf0c8fd797a262d82a",
      "tree": "c648dd02c9428904e993dd0ccb83653e8fa11d11",
      "parents": [
        "9f2e171900f08c1b1099a8b5c5842856e5fbb987"
      ],
      "author": {
        "name": "Evgeny Eltsin",
        "email": "eaeltsin@google.com",
        "time": "Mon Jun 08 21:12:56 2020 +0200"
      },
      "committer": {
        "name": "Evgeny Eltsin",
        "email": "eaeltsin@google.com",
        "time": "Mon Jun 08 21:12:56 2020 +0200"
      },
      "message": "Add util to skip tests with native_bridge\n\nBug: 37920774\nBug: 157394871\nTest: bionic-unit-tests\nChange-Id: Id949c9e568fd068daaf405a377813ee1480c2df7\n"
    },
    {
      "commit": "a276343e141d03828f4916bd0e9934543ed3d5cf",
      "tree": "3a06e78c617262b47e3546759892e893142b34bd",
      "parents": [
        "d20571efe184fcc779a547cfbedec248a82ae759"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Apr 23 16:47:19 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Apr 29 18:14:11 2020 +0100"
      },
      "message": "Reland \"Make bionic_platform_headers available only for Bionic targets\".\n\nThe triggering reason for this change is that the SDK snapshot\ngeneration cannot readily handle header libraries that are required for\ntargets that the SDK itself isn\u0027t available for. However, these include\nfiles shouldn\u0027t be used without Bionic anyway.\n\nRelanding unchanged - the build problem was due to a split topic.\n\nTest: m checkbuild (on aosp_taimen)\nTest: m (on aosp_taimen_hwasan)\nTest: atest CtsBionicTestCases\nTest: lunch fvp-userdebug \u0026\u0026 mmm bionic\nBug: 152255951\nChange-Id: Iaf49597ea265e6f2a042de5ee873238073b2e545\n"
    },
    {
      "commit": "ed95d0134d323fcad28117edc31ff69921aee1fd",
      "tree": "33706e30b06cb4228697f91adf26a1f0f38852d2",
      "parents": [
        "249f726583050004cfff03d0cc7cdc4212994bdd"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Apr 29 12:14:09 2020 +0000"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Apr 29 12:18:36 2020 +0000"
      },
      "message": "Revert \"Make bionic_platform_headers available only for Bionic t...\"\n\nReason for revert: Breaks rvc-d1-dev-plus-aosp: http://ab/6443190\nReverted Changes:\nIde447b89a:bionic_libc_platform_headers is only available whe...\nIa93cd3ec8:bionic_libc_platform_headers is only available whe...\nIcdc495588:Make bionic_platform_headers available only for Bi...\nIdfd7c87dc:bionic_libc_platform_headers is only available whe...\n\nBug: 152255951\nBug: 155269399\nChange-Id: I214f1165bb0a7e59d3b35a13b3cceb1965be922b\n"
    },
    {
      "commit": "249f726583050004cfff03d0cc7cdc4212994bdd",
      "tree": "ea9f3bc73b189f40ec81a1cb05ee652ffc35f96e",
      "parents": [
        "1d9ccdfb1a8395078a2e6834ebe3e6454b85de65"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Apr 23 16:47:19 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Apr 27 19:07:01 2020 +0100"
      },
      "message": "Make bionic_platform_headers available only for Bionic targets.\n\nThe triggering reason for this change is that the SDK snapshot\ngeneration cannot readily handle header libraries that are required for\ntargets that the SDK itself isn\u0027t available for. However, these include\nfiles shouldn\u0027t be used without Bionic anyway.\n\nTest: m checkbuild (on aosp_taimen)\nTest: m (on aosp_taimen_hwasan)\nTest: atest CtsBionicTestCases\nTest: lunch fvp-userdebug \u0026\u0026 mmm bionic\nBug: 152255951\nChange-Id: Icdc49558893c5355860f78d23275c49ba0119900\n"
    },
    {
      "commit": "2528dab7419a63f57fe20027886ba7dd3857aba8",
      "tree": "bc87267e77806577a67579079356c53584a6ea33",
      "parents": [
        "2a069b24df1efffde894b186a669b8b95d4f1fc2"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Mar 12 18:29:52 2020 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Mar 20 15:35:54 2020 -0700"
      },
      "message": "Clean up untag_address.\n\nWe had two copies of this function, one (not quite correct) in tests/utils.h\nand another in bionic/macros.h. Delete the former and have the users include\nthe latter.\n\nAlso, create an overload of the function that takes a uintptr_t, which will\nbe useful for out-of-process scenarios such as the MTE support in debuggerd.\n\nBug: 135772972\nChange-Id: Ia3c2652c97797663146b3f05fa786afe09f7ea97\n"
    },
    {
      "commit": "3b21ada5f1bd98b337143ee5d5baba7373bfdbb1",
      "tree": "7e5bf3c1ae9008eccc61f7f6eefef9b0039af1b5",
      "parents": [
        "73e9f242ed07631798433df4e35f5f73443cb9f9"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Tue Jan 07 15:47:47 2020 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Jan 23 10:37:24 2020 -0800"
      },
      "message": "Add tagged pointers to bionic.\n\nThis patch introduces tagged pointers to bionic. We add a static tag to\nall pointers on arm64 compatible platforms (needs requisite\ntop-byte-ignore hardware feature and relevant kernel patches).\n\nWe dynamically detect TBI-compatible devices (a device with the TBI feature and\nkernel support) at process start time, and insert an implementation-dependent\ntag into the top byte of the pointer for all heap allocations. We then check\nthat the tag has not been truncated when deallocating the memory.\n\nIf an application incorrectly writes to the top byte of the pointer, we\nterminate the process at time of detection. This will allow MTE-incompatible\napplications to be caught early.\n\nBug: 135754954\nBug: 147147490\n\nTest: cd bionic \u0026\u0026 atest .\nChange-Id: Ie424325ba1e3c4443040ac265aeaa28d9e405d28\n"
    },
    {
      "commit": "ce4c42e09fb9039df7c6a5b7306119279a694897",
      "tree": "13e38338ea7bc859b295b923be6a7acd73edbebc",
      "parents": [
        "43d5f9d4dd83d15a859d9be1359c4a4a47381fea"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 21 13:56:21 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 21 13:57:26 2020 +0000"
      },
      "message": "Revert \"Add tagged pointers to bionic.\"\n\nThis reverts commit 43d5f9d4dd83d15a859d9be1359c4a4a47381fea.\n\nBug: 135754954\nBug: 147147490\n\nExempt-From-Owner-Approval: clean revert\n\nReason for revert: Breaks ART gtest, see:\nhttps://ci.chromium.org/p/art/builders/ci/angler-armv8-non-gen-cc/561\n\nThe crash happens on mprotect of a page, the test crashes with ENOMEM.\n\nChange-Id: I52eea1abbfaf8d8e2226f92d30aa55aba3810528\n"
    },
    {
      "commit": "43d5f9d4dd83d15a859d9be1359c4a4a47381fea",
      "tree": "95339c5cb5d055b8fd2b216b46e6264180c4fc36",
      "parents": [
        "d2b8149ddad8b21ce535fb02ff752c85c7aa9d43"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Tue Jan 07 15:47:47 2020 -0800"
      },
      "committer": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Wed Jan 15 15:03:00 2020 -0800"
      },
      "message": "Add tagged pointers to bionic.\n\nThis patch introduces tagged pointers to bionic. We add a static tag to\nall pointers on arm64 compatible platforms (needs requisite\ntop-byte-ignore hardware feature and relevant kernel patches).\n\nWe dynamically detect TBI-compatible devices (a device with the TBI feature and\nkernel support) at process start time, and insert an implementation-dependent\ntag into the top byte of the pointer for all heap allocations. We then check\nthat the tag has not been truncated when deallocating the memory.\n\nIf an application incorrectly writes to the top byte of the pointer, we\nterminate the process at time of detection. This will allow MTE-incompatible\napplications to be caught early.\n\nBug: 135754954\nBug: 147147490\n\nTest: cd bionic \u0026\u0026 atest .\nChange-Id: I6e5b809fc81f55dd517f845eaf20f3c0ebd4d86e\n"
    },
    {
      "commit": "fd7216cc199f9211863dd53caa56e3be63153c4b",
      "tree": "a84abf5b63c1c07ff411a4714f9a14c34c62180a",
      "parents": [
        "ef18d440d9606d855d3cdc6af0b67279e7a9fff2"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Nov 05 11:31:42 2019 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Nov 05 12:33:33 2019 -0800"
      },
      "message": "Check that __system_property_set() doesn\u0027t leak FDs\n\nBug: 143936364\nTest: fail when b/143936364 repros\nTest: pass when b/143936364 is fixed\nChange-Id: I01d061c4fb4f37b0300ef418a19c88003038092c\n"
    },
    {
      "commit": "ca3f8e4901b7e7da0cef6b11aad0ee484978211d",
      "tree": "54d05aceab505881e1004625af82f19b0dea1c72",
      "parents": [
        "9615e0ddacafcc728ff432fce61eaa0a1049880e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 15:59:38 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 22:25:02 2019 -0700"
      },
      "message": "sleep/usleep: switch to trivial implementations.\n\nUpstream keeps rearranging the deckchairs for these, so let\u0027s just\nswitch to the [roughly] one-liners rather than track that...\n\nTest: treehugger\nChange-Id: If655cf7a7f316657de44d41fadd43a8c55ee6f23\n"
    },
    {
      "commit": "bcaa454d32e1b4ccf92467bb263d627695ac9a5b",
      "tree": "65d7d4c493242ecb51bfe1796f133b32538de514",
      "parents": [
        "ff16c0b89b7297bc70353f60afac9bb93d6b0087"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 08 15:20:23 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 10:26:39 2019 -0700"
      },
      "message": "bionic tests: use GTEST_SKIP.\n\nAlso be a bit more to the point in our messages, focusing on \"why\" not\n\"what\".\n\nTest: ran tests\nChange-Id: I297806c7a102bd52602dcd2fcf7a2cd34aba3a11\n"
    },
    {
      "commit": "7cc670637005e88e00be467c6c387112644a9209",
      "tree": "0141df753769639688cc216287be3f7f76d5cbdf",
      "parents": [
        "352853a53525ecb2a120dfa4e9aa03b3970df8ee"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Feb 05 18:43:34 2019 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Feb 06 13:59:16 2019 -0800"
      },
      "message": "Cleanup bionic tests with hwasan.\n\nThe tests were patched earlier to run with tagging heap allocator.\nThis change enables hwasan code instrumentation in the tests themselves,\nand fixes the issues that arise, mainly in the code that:\n* compares addresses of unrelated stack variables\n* compares address of a stack variable with stack limits as found in\n  /proc/self/maps\n* writes address of a stack variable to a hardware watchpoint register\netc.\n\nNote that static tests are broken at the moment, like all static\nbinaries. Dynamic tests pass 100% with this change.\n\nBug: 114279110, 124007027\nTest: SANITIZE_TARGET\u003dhwaddress; run dynamic bionic tests\n\nChange-Id: I68b8df9dd3e30b47734ddc083811a75a7f27deaa\n"
    },
    {
      "commit": "acd6f4f9f5d248345231542df91947b44a309c26",
      "tree": "56ebc05a9af0de40af4c624e722ca2e489d0c7f1",
      "parents": [
        "96bd339c51194bf56781ccc738fde8babd618fc6"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Nov 06 16:48:27 2018 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Nov 06 16:59:25 2018 -0800"
      },
      "message": "Disable a few bionic tests under HWASan.\n\n* HWASan report invalid use of the allocator api (like alignment not\nbeing power of two, or allocation size too large) in a way tests do not\nexpect.\n* Code in .preinit_array runs before HWASan shadow is initialized and\nneeds to be excluded from instrumentation.\n* It looks that mm system calls (mmap/mprotect/etc) will not allow\ntagged pointers. In fact, the use of mprotect on malloc()ed memory is\ndoubtful - one can imagine some kind of speculative load from such\nmemory, as compiler knows that it is addressable.\n\nBug: 114279110\nTest: bionic-unit-tests with hwasan\n\nChange-Id: I6ba4b46a0d554de77c923ad134cf156ce4ddba1b\n"
    },
    {
      "commit": "8f639a40966c630c64166d2657da3ee641303194",
      "tree": "96e03d65a4efa6613941b748ed2c11b64a8dec1b",
      "parents": [
        "cb8ed207d2bb6113a80fc7f27cd0beb8897f5192"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Oct 01 23:10:05 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Oct 10 14:31:06 2018 -0700"
      },
      "message": "Allow invoking the linker on an executable.\n\nThe executable can be inside a zip file using the same syntax used for\nshared objects: path.zip!/libentry.so.\n\nThe linker currently requires an absolute path. This restriction could be\nloosened, but it didn\u0027t seem important? If it allowed non-absolute paths,\nwe\u0027d need to decide how to handle:\n - foo/bar      (relative to CWD?)\n - foo          (search PATH / LD_LIBRARY_PATH, or also relative to CWD?)\n - foo.zip!/bar (normalize_path() requires an absolute path)\n\nThe linker adjusts the argc/argv passed to main() and to constructor\nfunctions to hide the initial linker argument, but doesn\u0027t adjust the auxv\nvector or files like /proc/self/{exe,cmdline,auxv,stat}. Those files will\nreport that the kernel loaded the linker as an executable.\n\nI think the linker_logger.cpp change guarding against (g_argv \u003d\u003d NULL)\nisn\u0027t actually necessary, but it seemed like a good idea given that I\u0027m\ndelaying initialization of g_argv until after C++ constructors have run.\n\nBug: http://b/112050209\nTest: bionic unit tests\nChange-Id: I846faf98b16fd34218946f6167e8b451897debe5\n"
    },
    {
      "commit": "d6a1dc23796696f73f483943534d4c5c4b312d39",
      "tree": "a82e1dcd393a09e62dcafcebd0494d6b949f9703",
      "parents": [
        "75af1a3e8de5491307745f7332301d29ec7c892e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 07 18:42:14 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 13 04:09:37 2018 +0000"
      },
      "message": "Implement malloc hooks.\n\nUse the malloc debug framework to implement the malloc debug hooks\nsince it can introduce a performance issue.\n\nAlso, modify the bionic/tests/utils.h slightly to dump an error message\nwhen the exe failed.\n\nBug: 30561479\n\nTest: Ran malloc hook unit tests.\nTest: Ran malloc debug unit tests.\nTest: Enabled malloc hooks and ran bionic unit tests and verified no\nTest: unexpected failures.\nTest: Enabled malloc debug and malloc hooks and verified malloc debug wins.\nTest: Enabled malloc debug using env, property, and property with name\nTest: still works.\n\nChange-Id: Ib50046a0493c5c2050cf831befb812310bdcc249\n"
    },
    {
      "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": "a7f12944d4154a445ee774683e27447d609de540",
      "tree": "7e2683233d0a36b825f630b1fc0f069e306463e8",
      "parents": [
        "59a6ee963f96eedf01df7db1e57397ff71852b15"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 15 13:55:53 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 15 13:55:53 2017 -0800"
      },
      "message": "A few more trivial tests.\n\nBased on gaps in the list of functions not referenced by the test\nexecutable.\n\nBug: N/A\nTest: ran tests\nChange-Id: I73c238e7cf360f94670c7cd13eb954341c940b7b\n"
    },
    {
      "commit": "4af70b4e153831f267d7f2b51327dd1ffda0277e",
      "tree": "debdf36b2fe9a0cc954f2c72f43859d5ab1d7e2a",
      "parents": [
        "0a25aa60a2a7cc6b681dd2e31321000cedbff77e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 18:02:16 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 18:02:16 2017 -0800"
      },
      "message": "Fix Mac build.\n\nBug: N/A\nTest: builds\nChange-Id: I98e44bc7ec2534443a1973aacf4bb97853b3a51f\n"
    },
    {
      "commit": "cabc77f9172d74ff0bfc56d0797a6a8255b14f2a",
      "tree": "48d55bb7530c8fdf5ae0b72d65236d5c480def44",
      "parents": [
        "7d5777ef15136e4e12a27c85d7b06d6806b98e70"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 12:55:19 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 12:55:19 2017 -0800"
      },
      "message": "Always wrap waitpid in TEMP_FAILURE_RETRY.\n\nStrictly not needed in the WNOHANG case, but it\u0027s probably best to have\nevery waitpid wrapped for future copy \u0026 pasters.\n\nBug: https://issuetracker.google.com/69525592\nTest: ran tests\nChange-Id: I013b0a52d2753e3d32638e9b84c79af7327fb405\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": "a83849010120fc21eee46df3d4a29cca3f5cc120",
      "tree": "d39264982f78c52293283c1ab61283845f51bdea",
      "parents": [
        "c6021960a4cfe13d5dccdf54daf5a8db343e93d1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 03 10:18:58 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 03 13:51:45 2017 -0700"
      },
      "message": "Fix pthread_leak test flakiness.\n\nStop allocating and deallocating memory as part of the test itself.\n\nThere\u0027s still the fopen, but since our stdio reuses existing structs,\nthat doesn\u0027t seem to be a problem in practice.\n\nBug: http://b/67077411\nTest: ran tests with --gtest_repeat\u003d1000\nChange-Id: I99de5de0911161ec04afe75653075f1ccefb01a5\n"
    },
    {
      "commit": "966d8a321e12d5c4353d1b786e8523df94e11ff6",
      "tree": "eb3336ce916b80d334cc5d01731d6b0660e94d7c",
      "parents": [
        "dc7cc6258aa90409d3aa5453bdbb2667e049c9c1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 29 11:29:28 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 30 16:17:40 2017 +0000"
      },
      "message": "Use have_dl to guard all tests that rely on icu4c.\n\nBug: http://b/65138342\nTest: ran tests\nChange-Id: Iddded068a2481e8b15e102c8705545a886ae2772\n"
    },
    {
      "commit": "3fa758f49c42e963985b9b99202c65c217a0bb5b",
      "tree": "1641c5638c1480ecb6a107c0694968499004883a",
      "parents": [
        "7ff7ed1c7de40059f1f21f59eed338603bec08e0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 17 17:36:08 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 17 17:36:08 2017 -0700"
      },
      "message": "Fix Mac build.\n\nBug: N/A\nTest: builds\nChange-Id: Ia3dae9f86a0aaa5431929e790f5c36f8beaf3bed\n"
    },
    {
      "commit": "5d949da8a9749d9857294de5a2919ff0e7a1ef29",
      "tree": "2e4d0d5aad1cfabe1e3eaa4ce84ffe2b891428d0",
      "parents": [
        "d785b4465ead5ad26a300b0d3c05bad23515d00d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 17 11:43:39 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 17 11:43:39 2017 -0700"
      },
      "message": "tests/utils.h should #include \u003csys/sysmacros.h\u003e\n\nBug: https://github.com/android-ndk/ndk/issues/398\nTest: builds\nChange-Id: Ie81b49787d468e409db4024763f29946d3e4250f\n"
    },
    {
      "commit": "b8ab61804cec48e4ca585f4508fb1b7c6c5a04c5",
      "tree": "4a1045e4b9e30c52e6c3886de8474c0aeb2c8996",
      "parents": [
        "12021ce9cf1ec1bc47cded3402ac9a3aa7b9b396"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Apr 05 16:20:29 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Apr 05 16:37:07 2017 -0700"
      },
      "message": "Move scopeguard into android::base\n\nTest: boot bullhead, bionic unit tests\nChange-Id: I223249684867655ecb53713b10da41d3014f96ae\n"
    },
    {
      "commit": "5b2cd3a358dd45d28d794858f29f98b1d7d9d9df",
      "tree": "f5456b8b825b96381dc2069b6eb4fc3a079df007",
      "parents": [
        "b2882dd429f7a2ea925770ec7acd219edfe4aab8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 16 11:34:13 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 16 11:47:08 2017 -0700"
      },
      "message": "Use libbase for realpath and dirname\n\nTest: run bionic-unit-tests\nBug: http://b/31396973\nChange-Id: Ie8dc60348b9c57892a77be6a24dadb42241f6b62\n"
    },
    {
      "commit": "35c8e3b1251af62897a9babd693e2b1be5676160",
      "tree": "3cc1d7cfe239740c04f29d35058048bea7b47c9f",
      "parents": [
        "5f41ce25c60df2012b58846940dfac58dce50e59"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 27 12:17:47 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 27 14:16:04 2017 -0800"
      },
      "message": "Fix greylist exception to account for linked namespaces\n\nDo not load second copy of libraries that are supposed to\nbe provided by linked namespaces. Also do not print\nerror in the log if caller tries to open shared library\nusing absolute path for apps targeting N+.\n\nBug: http://b/35454141\nBug: http://b/26833548\nBug: http://b/35338922\nTest: run bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: Icf3aeedff18d287d2ba0b3df3808b100f3ef5f7a\n"
    },
    {
      "commit": "68ecec1965dcec08c7df3f0224d69604c683cd6c",
      "tree": "13d1842c2a6d22a8818f9d24d4f49273cfda5e3c",
      "parents": [
        "3c838bbb4aca12936aa3d8e96f3b04af3803d0f4"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 13:19:30 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Feb 02 14:44:46 2017 -0800"
      },
      "message": "Fix CFI initialization crash on x86.\n\nThird try.\n\nBug: 34752378\nTest: bionic tests\nChange-Id: I247c127489a8ee38404e104f28d916a704e35f36\n"
    },
    {
      "commit": "beb3eb1790dffc6e2f57a670aec89364944f66c4",
      "tree": "833fc173575d6617e7051fbd126e98fde1c80700",
      "parents": [
        "dd76f744e7a8431eb105f1e94fd1e407690a0b89"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 17:10:03 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 17:10:03 2017 -0800"
      },
      "message": "Revert \"Fix CFI initialization crash on x86.\"\n\nBreaks aosp-master/sdk.\n\nThis reverts commit 4ccd4317f9301ec9b32aa0d3317a0439b994d7bf.\n"
    },
    {
      "commit": "4ccd4317f9301ec9b32aa0d3317a0439b994d7bf",
      "tree": "10061ae5eae47aa226dbfc15658c1d44b9456884",
      "parents": [
        "eb35144e588dc3799b851b8504b0a7db6c9a0b91"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 13:19:30 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 13:44:55 2017 -0800"
      },
      "message": "Fix CFI initialization crash on x86.\n\nSecond try.\n\nBug: 34752378\nTest: bionic tests\nChange-Id: I0a7453154671918b2e6e72f0bb9074c29ceb0f34\n"
    },
    {
      "commit": "6fcd7a7d28aa6be42bbc99070c93d4d16b56ab57",
      "tree": "0daa51584f72beb67cbe072f34ca67898212f381",
      "parents": [
        "a5066640cc7274e317bf3bae2d960986d58dbbbd"
      ],
      "author": {
        "name": "Alex Cheung",
        "email": "alexcheung@google.com",
        "time": "Tue Jan 31 04:05:00 2017 +0000"
      },
      "committer": {
        "name": "Alex Cheung",
        "email": "alexcheung@google.com",
        "time": "Tue Jan 31 04:19:50 2017 +0000"
      },
      "message": "Revert \"Fix CFI initialization crash on x86.\"\n\nThis reverts commit be46d3871c91902504e5ec4c7f575c86f647aafc.\n\nReverting due to broken build:\n\nhttps://android-build.googleplex.com/builds/branch-dashboard/aosp-master?build_id\u003d3687823\n\nChange-Id: I30968398edd9a094fce878839ba0a002ed487a77\n"
    },
    {
      "commit": "be46d3871c91902504e5ec4c7f575c86f647aafc",
      "tree": "d202c0a4817459b1f6d5b971284b9afa2a9f795d",
      "parents": [
        "6a9e0c8f15dee1b1b7c5cd7f8e058c2b18683bbc"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jan 27 13:42:03 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Jan 30 14:29:48 2017 -0800"
      },
      "message": "Fix CFI initialization crash on x86.\n\nBug: 34752378\nTest: bionic tests\nChange-Id: If8e33f76a1a2d83356d818fed506ea624f579860\n"
    },
    {
      "commit": "2f06e1028037c63d517e45b4055f946aa79dc5ee",
      "tree": "942ce32487639c93dad1a00d1528bb14c457308d",
      "parents": [
        "010522229c2a984d3e553e244da67b449b9638d4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 10 13:00:37 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jan 11 13:00:15 2017 -0800"
      },
      "message": "Improve fmemopen tests.\n\nTag fmemopen_NULL as a known failure, and make it reliably fail by\nmemsetting the buffer we read to.\n\nBug: http://b/33251022\nTest: bionic-unit-tests/bionic-unit-tests64 on bullhead\nTest: bionic-unit-tests-glibc --gtest_filter\u003d\"*memopen*\"\nChange-Id: I381783282359851c9de47146dafbb5a291960c2a\n"
    },
    {
      "commit": "d0b5c3ad65accd2c0298edbdfd527ede63e68ba1",
      "tree": "2c38f769ab809642c585c84a5142f4507e788488",
      "parents": [
        "0dafdd430661b96439b1d154d6ce146fd46f617e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Nov 25 12:23:11 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 28 13:09:19 2016 -0800"
      },
      "message": "Fix bionic-unit-tests-glibc\n\nAlso add another test for dlsym(RTLD_NEXT, ..)\n\nBug: http://b/33106624\nTest: run bionic-unit-tests-glibc and bionic-unit-tests\nChange-Id: I340165d66bf2360b0e3273d3561a08cb5e7bd025\n"
    },
    {
      "commit": "ffbb0f8aa4d7c8ec166722a0276a9703898f9c3f",
      "tree": "4381a4b919193d2b5e207b8dd3ccfbe2c86e9419",
      "parents": [
        "c3e09e1ff093279ae247112527e3dd16ab0d0809"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 10 18:34:27 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 10 18:38:25 2016 -0700"
      },
      "message": "Fix Mac build.\n\nTest: builds on Linux (I don\u0027t have a Mac)\nChange-Id: I049e1d6420b0d169e727680da9c3d97e0b8aa3d2\n"
    },
    {
      "commit": "a36e59bb9973aaae2e3487e0bfadd1f79814097e",
      "tree": "340c2c5c1fceebc214e8c2c2f6f9cb2e875d8640",
      "parents": [
        "dd14725eeb1e5496e92ad777db165b21ad4651f0"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Sep 01 11:37:39 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 02 14:27:47 2016 -0700"
      },
      "message": "Move test libraries under /data/nativetests\n\nMove libraries used in bionic-unit-tests out of system partition to\n/data/nativetests../bionic-loader-test-libs\n\nBug: http://b/22182538\nTest: build bionic and run bionic-unit-tests\nChange-Id: I170177bef782839d0b4970ae4418bf54d0a77836\n"
    },
    {
      "commit": "554374693408cd7c74d0cae596fca7349661edea",
      "tree": "3eb695917d4e37fc7f78a26202ec2119692fd964",
      "parents": [
        "a9fbaee593242b3257819c1603cdd157604247e7"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jul 20 15:33:07 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jul 20 16:10:19 2016 -0700"
      },
      "message": "Pass argc/argv/envp to dso constructors\n\nThe glibc implementation of the loader passes argc/argv/envp\nto all elf constructors. This change makes bionic linker\nbehave in the same way.\n\nBug: http://b/30145768\nChange-Id: I1c65c42aa5305a5b133c64b5748205bbde869e0e\nTest: run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\n"
    },
    {
      "commit": "2ba1cf39ae6087249a839ec7b3793d4d4fa75438",
      "tree": "adf1d98570a548157112a307ccd58c17b5ffb320",
      "parents": [
        "5df5884743306f7b2ee437c293f4197101528a98"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 17 13:29:37 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 17 13:55:46 2016 -0700"
      },
      "message": "Fix dlopen of main executable by absolute path\n\nThis CL adds initialization of inode for the main executable\nwhich enables linker to resolve the correct soinfo when\napplication calls dlopen with absolute path to the\nmain executable.\n\nBug: http://b/28420266\nChange-Id: I102e07bde454bd44c6e46075e3faeeb5092830d8\n"
    },
    {
      "commit": "d17a377c49201bd5f0e4c71d84f1ce25a86642de",
      "tree": "fb819b9173b3c94398cea3d5287d2cd86563c010",
      "parents": [
        "c199690b5ffda0f4df50d1121f7ab577af1fe468"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 01 13:11:28 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 01 15:28:43 2016 -0800"
      },
      "message": "linker: print \"not accessible\" error message to the log\n\nPrint properties of the namespace on \"library is not accessible\"\nerror to better diagnose problems with native library accessiblity\n\nBug: http://b/27406143\nChange-Id: Icf3d6c604f09dfa015de863fdb1267d343930d2a\n(cherry picked from commit 350bdad61cc6551db649fcaeb8642f4a1d6b139a)\n"
    },
    {
      "commit": "33697a0c43c48e15c3bcf018138b9b837d0099cd",
      "tree": "5abb2ab07c7f1322defd9fd6313cd11e12978579",
      "parents": [
        "94bb0fab931102f1fcf393aa507a6b77b741844f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 13:04:57 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 13:13:52 2016 -0800"
      },
      "message": "Factor out the waiting for children in bionic tests.\n\nChange-Id: I4a1e51b6920b33dc892d447f5bd6d10f1cb2704a\n"
    },
    {
      "commit": "939a7e01197858fdb8463bb5a8284ba501a3e882",
      "tree": "aca21447754ac507be1d20a7afba02deb65ea4db",
      "parents": [
        "2558b112300e0a27590b9e31f627fe94594fa6a0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 15:27:46 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 15:27:46 2015 -0800"
      },
      "message": "Track rename from base/ to android-base/.\n\nChange-Id: I0a4592945400b1fa6892bf7c1fa8659fd711efa3\n"
    },
    {
      "commit": "76144aaa6397fe9e16893882cf59c5c9c0684a66",
      "tree": "366d104ea020fb5d9138d296aac1fcceda383c61",
      "parents": [
        "0ebe2f07c35d4b764bc5d8b5226004e3db46da91"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Nov 19 13:52:16 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Nov 20 17:44:26 2015 -0800"
      },
      "message": "Change _stdio_handles_locking into _caller_handles_locking.\n\nIt is reported by tsan that funlockfile() can unlock an unlocked mutex.\nIt happens when printf() is called before fopen() or other stdio stuff.\nAs FLOCKFILE(fp) is called before __sinit(), _stdio_handles_locking is false,\nand _FLOCK(fp) will not be locked. But then cantwrite(fp) in __vfprintf()\ncalls__sinit(), which makes _stdio_handles_locking become true, and\nFUNLOCKFILE(fp) unlocks _FLOCK(fp).\n\nChange _stdio_handles_locking into _caller_handles_locking,\nso __sinit() won\u0027t change its value. Add test due to my previous fault.\n\nBug: 25392375\nChange-Id: I483e3c3cdb28da65e62f1fd9615bf58c5403b4dd\n"
    },
    {
      "commit": "15dfd63aba596f95f2478bfca36b91f69ed7f9b3",
      "tree": "390876a7919699e07d43c93b38c139ccb2913a9c",
      "parents": [
        "9e3a24915241c07d8ea886533c8de6a85744a734"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 22 16:40:14 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 22 16:40:14 2015 -0700"
      },
      "message": "Fix another duplicate maps parser.\n\nChange-Id: Icb69f59ffbd0d5de7f727142260fae152d36a904\n"
    },
    {
      "commit": "1dce3ed24940808a553f4da1a92a9b6759efd4ab",
      "tree": "736d4b68165f00e2ca60a1eb4de086d5340cb138",
      "parents": [
        "8a1007dbababa6c4812c267ca9119cf0765afc3f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 06 19:05:58 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 06 19:05:58 2015 -0700"
      },
      "message": "Fix x86_64 build\n\nChange-Id: Id81c059bf3ecdb9cc84d04d16ffda34baaadc5a1\n"
    },
    {
      "commit": "aae859cc3ca127d890e853cbf12b731e05624a22",
      "tree": "159e996dd6756b99fe70371e99a69ec6040e851b",
      "parents": [
        "e686df8d839216460f02cf7db6c4e26a13e49afd"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 31 11:14:03 2015 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 06 21:15:43 2015 +0000"
      },
      "message": "Add realpath for soinfo\n\n  This change adds realpath to soinfo and\n  extends limit on filenames from 128 to PATH_MAX.\n\n  It also removes soinfo::name field, linker uses\n  dt_soname instead.\n\nBug: http://b/19818481\nBug: https://code.google.com/p/android/issues/detail?id\u003d80336\nChange-Id: I9cff4cb5bda3ee2bc74e1bbded9594ea7fbe2a08\n"
    }
  ]
}
