)]}'
{
  "log": [
    {
      "commit": "096f5954e4bf8ad23ac518aa28e6135f22f0062f",
      "tree": "eb3145edda1b46a06f1421a7048e84b2091dbc1c",
      "parents": [
        "ebc88d26a5548d65b45bbec1091d5573d011cc0d"
      ],
      "author": {
        "name": "Giuliano Procida",
        "email": "gprocida@google.com",
        "time": "Thu Apr 08 10:51:58 2021 +0100"
      },
      "committer": {
        "name": "Giuliano Procida",
        "email": "gprocida@google.com",
        "time": "Thu Apr 08 10:58:57 2021 +0100"
      },
      "message": "Deflake time.clock_gettime test\n\nThe test aims to check that the time obtained the VDSO is the \"same\"\nas that obtained via the system call. Unfortunately, time progresses.\nAny check involving some fixed tolerance will have some non-zero\nprobability of failure.\n\nWe can instead check that a VDSO time value lies between two system\ncall times.\n\nBug: 184819133\nChange-Id: Idb9c17b9f612613f6e18a56ee0f256971ddbdf1f\nSigned-off-by: Giuliano Procida \u003cgprocida@google.com\u003e\n"
    },
    {
      "commit": "ebc88d26a5548d65b45bbec1091d5573d011cc0d",
      "tree": "d9d420d614a2edbc73744443fd0117980f914f56",
      "parents": [
        "99d11ebe83b38837990bb485247d80a5d8659f10"
      ],
      "author": {
        "name": "Giuliano Procida",
        "email": "gprocida@google.com",
        "time": "Wed Apr 07 14:25:13 2021 +0100"
      },
      "committer": {
        "name": "Giuliano Procida",
        "email": "gprocida@google.com",
        "time": "Wed Apr 07 15:14:38 2021 +0100"
      },
      "message": "Use mean CPU time in an attempt to reduce test flakiness\n\nThe sleep(3) / clock(3) test is sensitive to outliers in the\ndistribution of CPU consumed by the sleep system call.\n\nThis changes the measured quantity to be the mean over 5 samples and\nsets the threshold to 10ms.\n\nBug: 184727758\nChange-Id: I20df3b620a5fbf4e58a3ca67306370351ac01d0c\nTest: treehugger\nSigned-off-by: Giuliano Procida \u003cgprocida@google.com\u003e\n"
    },
    {
      "commit": "527b78d1943cc42bafb39107b8cc3504a6c075a4",
      "tree": "6883e1aa308b5c46a49af04e415a3f9c58441be4",
      "parents": [
        "ef0ec82684ea52ee3a13db8df9103ca314ea17aa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 18 10:46:35 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 18 10:46:35 2021 -0800"
      },
      "message": "Increase leniancy in an inherently flaky test.\n\nThe example in the bug was 16ms instead of 10ms. Try 20ms?\n\nBug: http://b/180581857\nTest: treehugger\nChange-Id: I58302ad576ab5a031124244edef9df733d796c7e\n"
    },
    {
      "commit": "82c3c11c1870d4094acbd782df7c7f08ca4f2450",
      "tree": "650fe1c5b3dbe14abf3a3167475e214ccff1a69e",
      "parents": [
        "69d44fd55b531a8d8b8114a6b74e81569a0539a5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 11:31:29 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 11:31:29 2021 -0800"
      },
      "message": "Increase leniancy in an inherently flaky test.\n\nThe example in the bug was 6ms instead of 5ms. Try 10ms?\n\nBug: http://b/178437652\nTest: treehugger\nChange-Id: I192d602fa4f3499cbf072507245543d0435c5329\n"
    },
    {
      "commit": "d065c0489ed053fab047c88edde3335f7a5e961a",
      "tree": "742aceb1105a46504f739f4a4594e5ecce6321af",
      "parents": [
        "984b4e9ae1d99c86785c7e98a3fa28a60ca46962"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 01 19:02:44 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 01 19:11:28 2020 -0700"
      },
      "message": "Incorporate upstream\u0027s strptime %Z/%z support.\n\nI made toybox use strptime %Z recently (so that it can parse the default\nPOSIX date(1) output), forgetting that bionic\u0027s strptime(3) doesn\u0027t\nsupport %Z. Neither does glibc, for that matter; the toybox change works\non glibc effectively by accident --- glibc just ignores the next word\nwhen parsing %Z and assumes that the current time zone ($TZ) is\nappropriate. Which it is for the only obvious use case of \"round trip\ndate(1) output\".\n\nThe related %z is potentially quite a bit more useful in general (parsing\nany valid RFC822 time zone), though sadly not useful for the toybox case\nthat prompted.\n\nEvery time I touch this file I promise that I\u0027ll actually get us back in\nsync with upstream, and every time I fail to get round to it. Maybe\n2020 or 2021 will finally be the year...\n\nAlso add corresponding tests.\n\nBug: https://b/167455975\nTest: treehugger\nChange-Id: I13a7fb7e3ad01ae855750b9314d2eec661fe034f\n"
    },
    {
      "commit": "7cebf835f310650f67b254295a685918681656fc",
      "tree": "daf485447fccb691750149c465b2c629adf6e305",
      "parents": [
        "a4110def5cec22306313a34fff64b5810c9b1792"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 14:25:41 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 15:52:14 2020 -0700"
      },
      "message": "Various coverage improvements.\n\nMostly from extra test cases, but also:\n\n* Move the fgets size \u003c 0 assertion into fgets.\n\n* Use ELF aliases for strtoq/strtouq rather than duplicating code.\n\n* Don\u0027t check uname() succeeded, since it can\u0027t fail.\n\nTest: treehugger\nChange-Id: I2e6b3b88b0a3eb16bd68be68b9bc9f40d8043291\n"
    },
    {
      "commit": "cf346532fccbe35666b827fbbfd2cb951dd00dc2",
      "tree": "c1ab59c29e63dea1700f24edb6bfad28c9d0687f",
      "parents": [
        "b1d27cab96c7aa31470ed2a1a8b284f9422cef25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 31 10:35:03 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 31 10:35:03 2020 -0700"
      },
      "message": "More cleanup for #inclusivefixit.\n\nFound manually with grep, since the script seems to miss stuff.\n\nTest: treehugger\nChange-Id: I5933cbade9792801d4a0bec1ccb077efa6ad8fbc\n"
    },
    {
      "commit": "208fdd1963bfaa2a149e09a63fcf08b8c870e060",
      "tree": "dbdbea330325ac046711be751857f162a5f585a6",
      "parents": [
        "700f753c50971a573bfd84cf7d64483b94fcfe2c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 05 17:19:00 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 05 17:19:00 2020 -0700"
      },
      "message": "Trivial test for difftime(3).\n\npirama made me do this.\n\nTest: treehugger\nChange-Id: I0cf4466e494d92c96802e763b99346f7517bf3d7\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": "a9dfe1c3521776dab85edbec16e4cee60192c8aa",
      "tree": "f702f29b5e7ca3f9b028d0504e3b1fc757dccdd1",
      "parents": [
        "8eba2a59ac3fca54232cfc51e29d0dc3e7925a22"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Sep 24 16:20:17 2019 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Sep 24 16:20:17 2019 +0000"
      },
      "message": "Revert \"Temporarily disable some clock_getres tests.\"\n\nThis reverts commit 8eba2a59ac3fca54232cfc51e29d0dc3e7925a22.\n\nReason for revert: The kernel update has been reverted.\n\nChange-Id: I21d9ac3c319b8c6e8546a0b40c5646c5610cc8c5\n"
    },
    {
      "commit": "8eba2a59ac3fca54232cfc51e29d0dc3e7925a22",
      "tree": "4957db388644e343bbb8d0b3b56645c8e950d37e",
      "parents": [
        "14d5c12ed6d4febc054c49d6b48e3e3a94d3530d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Sep 23 18:44:22 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Sep 23 18:44:22 2019 -0700"
      },
      "message": "Temporarily disable some clock_getres tests.\n\nA kernel update broke three clock_getres tests, so disable\nthem while the kernel is fixed.\n\nBug: 141515847\n\nTest: All tests pass on cuttlefish.\nChange-Id: I7db789b2b8ba0bc5f8b13bb06e85711031735925\n"
    },
    {
      "commit": "5ae1628455aa64e68225fb00d4d04f645825aa71",
      "tree": "1352aec04d1b883abf1cb5bc466b7097dba2db7a",
      "parents": [
        "b42a488512422740df1d33157b59759076d7825d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 20 14:35:49 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 20 14:35:49 2019 -0700"
      },
      "message": "The time#clock test has been a bit flaky.\n\nBump our expectation up to \u003c5ms.\n\nTest: treehugger\nChange-Id: Ic1a704043efb55fc295482583fc7cc23d18cfbf4\n"
    },
    {
      "commit": "1167882a8733302ef5996efa714d6b7f266351d6",
      "tree": "a2aef8c58a71e875d8e7a1b92950dd0394a14a79",
      "parents": [
        "ff923681be7867f088a79d83a71a5ba4a78aaef7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 27 08:56:49 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 27 08:56:49 2019 -0700"
      },
      "message": "tests: test both upper- and lower-case with strptime %P/%p.\n\nTest: ran tests\nChange-Id: I7275808f2f0ae4f02d057542a13350895022910c\n"
    },
    {
      "commit": "a1fb15bb67bcdf426c012919c096e7235b551f40",
      "tree": "0410e1c0d036b886cb97c315a67ebc828a5b64fb",
      "parents": [
        "e08288465ece24860d61788b975a8267a4594379"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 26 19:07:40 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 26 19:07:40 2019 -0700"
      },
      "message": "strptime: support everything that strftime supports.\n\nOur strptime was missing `%F`, `%G`, `%g`, `%P`, `%u`, `%V`, and\n`%v`. Most of these are already supported upstream (and I\u0027ve just pulled\ntheir current implementation), but some aren\u0027t. We\u0027re horribly out of\nsync anyway, so I\u0027ll upstream the missing pieces and then try to get us\nback in sync later.\n\nTest: new tests, but originally found by toybox trying to use %F\nChange-Id: Ib1a10801a7a3b9c9189440c3b300109bde535fd9\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": "8dff0bb66bd48ef9f5ce472d94c99e5b656ba083",
      "tree": "26d5b4029a9f35eceb7e4daaef4e0b07e0bf9cc1",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 12:32:32 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 12:32:32 2019 -0800"
      },
      "message": "Allow more leeway to fix time.clock_gettime flakiness.\n\nBug: http://b/121156651\nTest: ran tests\nChange-Id: Ic949763e56c46f05ed2565ca4465a15c7ecf768c\n"
    },
    {
      "commit": "96bd339c51194bf56781ccc738fde8babd618fc6",
      "tree": "8aadb242fdb150116029677bac486866adb08001",
      "parents": [
        "6d1c5cab94f9fb7423198f950fb94dc7e31c4ddd"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Nov 06 16:44:45 2018 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Nov 06 16:59:21 2018 -0800"
      },
      "message": "Remove timer_delete_multiple test.\n\nAccording to posix, this test invokes undefined behavior by deleting\na timer twice.\n\nAccording to hwasan, the second call to timer_delete loads\nkernel_timer_id from previously deallocated PosixTimer (i.e.\nheap-use-after-free).\n\nBug: 114279110\nTest: bionic-unit-tests with hwasan\n\nChange-Id: Ic54579e3bb41d3f38282b8822dafaba51efd003a\n"
    },
    {
      "commit": "32bc0fcf69dfccb3726fe572833a38b01179580e",
      "tree": "abca656f500087493e0997d5cf38cbcc9ec98eb8",
      "parents": [
        "65f82092a17518080178ff7004cc6db362ebfbcd"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 17:31:13 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 18:09:44 2018 -0700"
      },
      "message": "Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: I5b4123bc6709641315120a191e36cc57541349b2\n"
    },
    {
      "commit": "f98d87b831958cc71ef7f6b6fa18a7a2a2d24737",
      "tree": "7f6aa1a75c0f51eb8b602c31d29a03ff71cdf7b1",
      "parents": [
        "3a5fd0014c0a415b88467bb692a9606c5221d5f9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 17 13:21:05 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 17 13:21:05 2018 -0700"
      },
      "message": "Add C11 timespec_get.\n\nBug: https://github.com/android-ndk/ndk/issues/744\nTest: ran tests\nChange-Id: Iad9514946e06d55b6a3aa0f945d9a63bff900881\n"
    },
    {
      "commit": "71ba5899ae5857a6510f0fa05039dccee73bcc6a",
      "tree": "9d34769766ce10c95ecb32bc5ec25949007a0048",
      "parents": [
        "0a8d5f3eb8f4087b307f237943a19ae36b094ced"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 07 12:44:45 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 05 17:20:12 2018 -0800"
      },
      "message": "Rewrite system(3) to use posix_spawn(3).\n\nWe saw crashes from pthread_exit+debuggerd on LP32\n(https://issuetracker.google.com/72291624), and it seems like the\nequivalent problem should exist with system(3). I fixed posix_spawn(3)\nas part of that bug, so the easiest fix is probably to reuse that.\n\nBug: http://b/72470344\nTest: ran tests\nChange-Id: I05f838706f2b4a14ac3ee21292833e6c8579b0d4\n"
    },
    {
      "commit": "81baaf272cb79c69ca9b0969466f5f946c923a2b",
      "tree": "2d9d27f9d151bc6cc9d55b1fb5d14c990a4dced6",
      "parents": [
        "bf6c0c8eaf755f5d1686b5022ee4c6d9eaf68686"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 28 15:22:48 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 28 16:29:40 2018 -0800"
      },
      "message": "Add strptime %s.\n\nBug: https://issuetracker.google.com/37128336\nTest: ran tests\nChange-Id: I1a660dbdb5f008e42226f26489f0f01b6db18025\n"
    },
    {
      "commit": "3376c23daceddd603478347c00163f39e7c9e1ee",
      "tree": "d8a6f5383a285783630af07f03e11a5a06677b10",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 23:14:12 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 23:14:12 2018 -0800"
      },
      "message": "Add remaining _l function stubs.\n\nBug: http://b/65595804\nTest: ran tests\nChange-Id: I3bea3af20b354d1f0d3e05fd35421a9045f29020\n"
    },
    {
      "commit": "0b846e8c66239090f69faf307ebeb0b4e0dee9e9",
      "tree": "ce7d93cb73ecd4eb89d4f0609123de961a13feb0",
      "parents": [
        "777d7c791488c9c7be7ec3d6e47fd02b0baee8bf"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Dec 20 08:56:18 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Dec 20 12:36:57 2017 -0800"
      },
      "message": "bionic: test: time()\n\nValidate return values from time(), confirm progression.\n\nTest: bionic-unit-tests --gtest_filter\u003dtime.time\nBug: 63737556\nChange-Id: I08186780c42ded9648b3e788bb2caa2210d00dab\n"
    },
    {
      "commit": "5a29d541fc6a54c922bce28c74cd22e763196529",
      "tree": "d7914e035bdab3376640c0618b7a4fccbafa4b82",
      "parents": [
        "c1f6219c32543cb1d6701b13eb53b82abe1e0a12"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 16:05:57 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 16:05:57 2017 -0800"
      },
      "message": "Add a few missing \u003ctime.h\u003e tests.\n\nBug: N/A\nTest: ran tests\nChange-Id: I0c1a17503eaceedac39320efa704313384c5b7be\n"
    },
    {
      "commit": "b441359be79dc60d6053309db75ef6e6d27d4518",
      "tree": "d7e8a99c011f9cfcfa9f374412b9cb1bb490f6c1",
      "parents": [
        "810802c1d0e1911a37b973970c7cb82e4d440603"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 18:17:06 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 18:20:25 2017 -0800"
      },
      "message": "Break up clock_getcpuclockid tests.\n\nBug: http://b/69569394\nTest: ran tests\nChange-Id: If273cf8162e7d10aa4aa037181aefea6533a3487\n"
    },
    {
      "commit": "71b81a2bb26ef855c62501e9fe0a4b620e1d6e95",
      "tree": "39217f0b6287952dfcbcdebb223340e16b504be2",
      "parents": [
        "7d5777ef15136e4e12a27c85d7b06d6806b98e70"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 28 13:48:45 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 28 14:09:09 2017 -0800"
      },
      "message": "bionic: test: report kernel sha for clock_getcpuclockid failure\n\nFor aarch64 only.\n\nOnce we activate support for vdso call for clock_getres, we also will\nhave to deal with kernel bugs in the implementation. If the kernel is\nprior to the vdso unification of arm, aarch64 and aarch32, estimated\nto land in 4.15, then the assembler implementation for aarch64 will\nneed two upstream kernel fixes e1b6b6ce and c80ed088. We report the\nrequired url for the upstream kernel fixes upon test failure.\n\nTest: bionic-unit-tests --gtest_filter\u003dtime.*\nBug: 20045882\nBug: 63737556\nBug: 69626243\nChange-Id: Id93056f432491679e349545cbd1d682074634c58\n"
    },
    {
      "commit": "6a5a99faf35d176e8ee4c6fbd5d148d6eaea91d9",
      "tree": "09157e29d67b354d7286211b561097d0a839f7d1",
      "parents": [
        "b7d6df2b61f7941e24d362105a43950da6f2da05"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 21 12:29:06 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 27 20:36:41 2017 -0800"
      },
      "message": "bionic: test: add clock_getres\n\nAdd clock_getres test combinations. Add clock_gettime_unknown test\nto ensure the errno is propagated correctly for that call as well.\n\nTest: bionic-unit-tests --gtest_filter\u003dtime.*\nBug: 63737556\nBug: 69626243\nChange-Id: I0256b7f03ac7e57bc5b36069b13fe576c29b9c75\n"
    },
    {
      "commit": "3a8f75d8b052611c08ef17ecf625b8021f4e0229",
      "tree": "a41055f8209868da748f5118a24df528d1f07a9e",
      "parents": [
        "42f3bd0ffc3f0f0e3191c679ea4276f7f1882a00"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 05 10:33:18 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 05 10:33:18 2017 -0700"
      },
      "message": "POSIX clock cleanup.\n\nThe newest of these clocks was added in Linux 2.6.12, so no need for runtime\nchecks.\n\nAdd CTS tests that we can actually use the various clocks.\n\nBug: http://b/67458266\nTest: ran tests\nChange-Id: I3cfd7982043d6f8d4ebdc2b29e8722334f443ce5\n"
    },
    {
      "commit": "11859d467c035081f8acafeaf0184b670cd41c48",
      "tree": "36afb3b9c9bbff69d83945e7ab08b7687908f74c",
      "parents": [
        "132768084e24119c337e56fd110b97a23e5593c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 17:59:29 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 17:59:29 2017 -0800"
      },
      "message": "Be more strict about using invalid `pthread_t`s.\n\nAnother release, another attempt to remove the global thread list.\n\nBut this time, let\u0027s admit that it\u0027s not going away. We can switch to using\na read/write lock for the global thread list, and to aborting rather than\nquietly returning ESRCH if we\u0027re given an invalid pthread_t.\n\nThis change affects pthread_detach, pthread_getcpuclockid,\npthread_getschedparam/pthread_setschedparam, pthread_join, and pthread_kill:\ninstead of returning ESRCH when passed an invalid pthread_t, if you\u0027re\ntargeting O or above, they\u0027ll abort with the message \"attempt to use\ninvalid pthread_t\".\n\nNote that this doesn\u0027t change behavior as much as you might think: the old\nlookup only held the global thread list lock for the duration of the lookup,\nso there was still a race between that and the dereference in the caller,\ngiven that callers actually need the tid to pass to some syscall or other,\nand sometimes update fields in the pthread_internal_t struct too.\n\n(This patch replaces such users with calls to pthread_gettid_np, which\nat least makes the TOCTOU window smaller.)\n\nWe can\u0027t check thread-\u003etid against 0 to see whether a pthread_t is still\nvalid because a dead thread gets its thread struct unmapped along with its\nstack, so the dereference isn\u0027t safe.\n\nTaking the affected functions one by one:\n\n    * pthread_getcpuclockid and pthread_getschedparam/pthread_setschedparam\n      should be fine. Unsafe calls to those seem highly unlikely.\n\n    * Unsafe pthread_detach callers probably want to switch to\n      pthread_attr_setdetachstate instead, or using\n      pthread_detach(pthread_self()) from the new thread\u0027s start routine\n      rather than doing the detach in the parent.\n\n    * pthread_join calls should be safe anyway, because a joinable thread\n      won\u0027t actually exit and unmap until it\u0027s joined. If you\u0027re joining an\n      unjoinable thread, the fix is to stop marking it detached. If you\u0027re\n      joining an already-joined thread, you need to rethink your design.\n\n    * Unsafe pthread_kill calls aren\u0027t portably fixable. (And are obviously\n      inherently non-portable as-is.) The best alternative on Android is to\n      use pthread_gettid_np at some point that you know the thread to be\n      alive, and then call kill/tgkill directly.\n\n      That\u0027s still not completely safe because if you\u0027re too late, the tid\n      may have been reused, but then your code is inherently unsafe anyway.\n\nBug: http://b/19636317\nTest: ran tests\nChange-Id: I0372c4428e8a7f1c3af5c9334f5d9c25f2c73f21\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": "ea87716696bf635706b6f3fa56b8a145add83aff",
      "tree": "9d8552a565789486c9d0f7e9057815924c946b90",
      "parents": [
        "940d460f59e566f2d84ea3e114074a50996e76b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:34:16 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:56:04 2017 -0800"
      },
      "message": "localtime_r(3) should act as if it calls tzset(3).\n\nSee code comment.\n\nBug: http://b/31339449\nTest: ran tests \u0026 benchmarks\nChange-Id: I6b6a63750ef41664dc4698207e6a53e77cc28cdf\n"
    },
    {
      "commit": "b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5",
      "tree": "8362f2754276b72e79a652885be7379127ca6e07",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 04 14:12:54 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 07 14:16:46 2017 -0800"
      },
      "message": "Remove the global thread list.\n\nAnother release, another attempt to fix this bug.\n\nThis change affects pthread_detach, pthread_getcpuclockid,\npthread_getschedparam/pthread_setschedparam, pthread_join, and pthread_kill:\ninstead of returning ESRCH when passed an invalid pthread_t, they\u0027ll now SEGV.\n\nNote that this doesn\u0027t change behavior as much as you might think: the old\nlookup only held the global thread list lock for the duration of the lookup,\nso there was still a race between that and the dereference in the caller,\ngiven that callers actually need the tid to pass to some syscall or other,\nand sometimes update fields in the pthread_internal_t struct too.\n\nWe can\u0027t check thread-\u003etid against 0 to see whether a pthread_t is still\nvalid because a dead thread gets its thread struct unmapped along with its\nstack, so the dereference isn\u0027t safe.\n\nTaking the affected functions one by one:\n\n* pthread_getcpuclockid and pthread_getschedparam/pthread_setschedparam\n  should be fine. Unsafe calls to those seem highly unlikely.\n\n* Unsafe pthread_detach callers probably want to switch to\n  pthread_attr_setdetachstate instead, or using pthread_detach(pthread_self())\n  from the new thread\u0027s start routine rather than doing the detach in the\n  parent.\n\n* pthread_join calls should be safe anyway, because a joinable thread won\u0027t\n  actually exit and unmap until it\u0027s joined. If you\u0027re joining an\n  unjoinable thread, the fix is to stop marking it detached. If you\u0027re\n  joining an already-joined thread, you need to rethink your design.\n\n* Unsafe pthread_kill calls aren\u0027t portably fixable. (And are obviously\n  inherently non-portable as-is.) The best alternative on Android is to\n  use pthread_gettid_np at some point that you know the thread to be alive,\n  and then call kill/tgkill directly. That\u0027s still not completely safe\n  because if you\u0027re too late, the tid may have been reused, but then your\n  code is inherently unsafe anyway.\n\nIf we find too much code is still broken, we can come back and disable\nthe global thread list lookups for anything targeting \u003e\u003d O and then have\nanother go at really removing this in P...\n\nBug: http://b/19636317\nTest: N6P boots, bionic tests pass\nChange-Id: Ia92641212f509344b99ee2a9bfab5383147fcba6\n"
    },
    {
      "commit": "12443702c28bc589b39ff71c917beab600e03a13",
      "tree": "fe8d583384cb8e17d843a7e10e58f8a9e4a2e574",
      "parents": [
        "0759e7f5c147b999e4f9037eb949c1949a9f734c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 19 16:02:31 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 19 16:02:31 2016 -0700"
      },
      "message": "Add regression test for http://b/31938693.\n\nBug: http://b/31938693\nBug: https://code.google.com/p/android/issues/detail?id\u003d225132\nTest: this is a test\nChange-Id: I858962a1dcd56d555a4836a7bfbdf92d5c3042f6\n"
    },
    {
      "commit": "47126edb90126164ba001a5782c3cb11fdea0ca1",
      "tree": "96d28c5710c0ea967f10fec822184934da6b21eb",
      "parents": [
        "85b15b1d0bb3e223313171a204fa820c598212c6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 06 13:25:53 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 06 13:34:15 2016 -0700"
      },
      "message": "Fix time.mktime_EOVERFLOW for LP32.\n\nTimes before 1901-12-13 *underflow* on LP32, making the year 1900 a bad\nchoice for success case.\n\nBug: http://b/31305222\nChange-Id: I20d4885c80b57707225580db044abc8948a55fdc\n"
    },
    {
      "commit": "f8ebaa498562cfb199a9b28da5eae2770f9b3163",
      "tree": "de04a55521fac877356a92a925b3b5487d39d46c",
      "parents": [
        "cea5c8a6099cff4f3ceccb3309a522bb1cf377b4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 16:28:36 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 16:28:36 2016 -0700"
      },
      "message": "Fix mktime\u0027s errno behavior.\n\nDon\u0027t touch errno on success, do set it to EOVERFLOW (the only allowed errno\nvalue according to POSIX: http://pubs.opengroup.org/onlinepubs/9699919799/functions/mktime.html)\non failure.\n\nBug: http://b/30477946\nChange-Id: Ia915c7b9c3bfcd2f9025530cf5b068fe4dd4fd9e\n"
    },
    {
      "commit": "0a610d00fee344f804d3338c880d73d2de5db143",
      "tree": "9f7c63a66f0fdf057b5b78d4c250ab80152e0659",
      "parents": [
        "4bc6eea83e127a50d4763f067486ec79ed4e61a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 14:04:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 14:04:17 2016 -0700"
      },
      "message": "Upgrade to tzcode-2016f.\n\nNo significant changes other than a default implementation of strftime_l.\n\nChange-Id: I6edd2c03e5e7559f012c0c87d43f7109d641d3ca\n"
    },
    {
      "commit": "62e3a078aa7b156139b1a2cec77e1a84eb10c5a4",
      "tree": "b37425943e0cd7284b319d6cad98bd71dcfdc8bb",
      "parents": [
        "9ee905f12fa0aeb4ae0df708e15d2ffcfaf58000"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I84effbdfa1b9b39328a909b7f70fe17e7ee316c8\n"
    },
    {
      "commit": "d15dfb2ff5835a04c66d328f27939fc4e0362c0f",
      "tree": "12ac9dd1a1c64741d649aaa0ce21a7c929cbb147",
      "parents": [
        "7c59c70200a86387d3c97e9d7f34e2b8dbed88b3"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Sat Mar 26 11:37:55 2016 -0700"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Mon Mar 28 10:29:16 2016 -0700"
      },
      "message": "clock_nanosleep: add CLOCK_THREAD_CPUTIME_ID special case\n\nPOSIX makes \"the CPU-time clock of the calling thread\" (i.e.,\nCLOCK_THREAD_CPUTIME_ID) a special case which returns EINVAL instead of\nENOTSUP.\n\nHowever, the clock_nanosleep syscall treats this clock just like any\nother, and returns -EOPNOTSUPP to indicate an unimplemented nanosleep\nhandler.  So we need to handle this ourselves in userspace.\n\nThis change fixes the LTP clock_nanosleep01 testcase.\n\nChange-Id: If3bed940d276834bcd114d8c17f96197e9384711\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "43f7c875654cb94e589ff9d0c4ac58ca9616093e",
      "tree": "b59e65b86870ef89c3965f32b18c52910f6038b4",
      "parents": [
        "b90837c3d316c6ea8d6f0b0b6a3643d0d3245a0e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 05 11:18:41 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 05 11:18:41 2016 -0800"
      },
      "message": "Add a test for snprintf on a PTHREAD_STACK_MIN-sized stack.\n\nThis is a common thing for people to want to do, snprintf requires\na lot of stack for itself, and PTHREAD_STACK_MIN should be usable\nfor realistic code.\n\nChange-Id: Ib09cfb4e0beec1c69ee0944c3ea4c5d03a94c491\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": "a9cac4c87a4ea3e6d1c0a1159909bf0e209a61a7",
      "tree": "1e70197326b7eed795ce0f4be2785ce2361836d4",
      "parents": [
        "7c10ee9473b5c46da733b2d3d24cf90fb8ac7672"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 12 16:51:31 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 12 16:51:31 2015 -0800"
      },
      "message": "Fix strftime if tm_zone is null.\n\nUpstream tzcode said \"On platforms with tm_zone, strftime.c now assumes it\nis not NULL\". Which is fine for any struct tm generated by tzcode, but not\nnecessarily true of a struct tm constructed by arbitrary code. In particular,\nNetflix on Nexus Player was failing to start because they format \"%Z\" with\na struct tm whose tm_zone is null (the other fields are valid, but, yeah,\nthat\u0027s probably not intentional).\n\nglibc takes a null tm_zone to mean \"the current time zone\", so let\u0027s do that\ntoo. (Historically Android would use the empty string, and POSIX doesn\u0027t\nclarify which of this is the appropriate behavior when tm_zone is null.)\n\nBug: http://b/25170306\nChange-Id: Idbf68bfe90d143aca7dada8607742905188b1d33\n"
    },
    {
      "commit": "857336809ec7fa4d5d9bff5fa5af0f1dee15c085",
      "tree": "eea43004d7f9bb6e619c6c86560ca1761dadc258",
      "parents": [
        "4b99bef35b740108c4a264efcf5744681f72b687",
        "0660be899f2d907dedbcb643315b73e652ec9510"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Aug 11 19:32:20 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 19:32:20 2015 +0000"
      },
      "message": "am 0660be89: am a6a12a78: am 0fdcdd00: Merge \"Fix flaky test time.timer_settime_0.\" into lollipop-mr1-cts-dev\n\n* commit \u00270660be899f2d907dedbcb643315b73e652ec9510\u0027:\n  Fix flaky test time.timer_settime_0.\n"
    },
    {
      "commit": "a6a12a7804402273e193074a58162cc0b3890812",
      "tree": "0c9203a5a50a8ffcde795c98cf00a8fc2fbfceb1",
      "parents": [
        "8beb0c34da46a5146a2de8256db8bb42febb283c",
        "0fdcdd0067af88e7deef73070d0861ceb9f53c37"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Aug 11 18:56:43 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 11 18:56:43 2015 +0000"
      },
      "message": "am 0fdcdd00: Merge \"Fix flaky test time.timer_settime_0.\" into lollipop-mr1-cts-dev\n\n* commit \u00270fdcdd0067af88e7deef73070d0861ceb9f53c37\u0027:\n  Fix flaky test time.timer_settime_0.\n"
    },
    {
      "commit": "bf572d91b50f818a7c3e29340cccf1931939ff8b",
      "tree": "aa668ecfa9218ebab90440531b846024cd6b679c",
      "parents": [
        "0f455612d3325932a851418634a17a61307948c5"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Aug 11 11:23:16 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Aug 11 11:25:02 2015 -0700"
      },
      "message": "Fix flaky test time.timer_settime_0.\n\nIt fixes the problem reported in https://code.google.com/p/android/issues/detail?id\u003d182395.\n\nChange-Id: Ie16aa04095dac08a62dd0d4c50e763b36526624c\n"
    },
    {
      "commit": "1df44bd0a4392ae87593d010817e25faded83551",
      "tree": "cebd3c715265eb3f415c34797822c1465656c2af",
      "parents": [
        "324bd8d0bbd242a2e7cd12c5786b096029f6c3c8",
        "cb0607590341ed2512a55015e66e19e7f7db3723"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jun 19 20:29:49 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 19 20:29:49 2015 +0000"
      },
      "message": "am cb060759: am 8beb0c34: am b245bc75: am 0f455612: Merge \"Fix flaky test of timer_create_multiple in L.\" into lollipop-mr1-cts-dev\n\n* commit \u0027cb0607590341ed2512a55015e66e19e7f7db3723\u0027:\n  Fix flaky test of timer_create_multiple in L.\n"
    },
    {
      "commit": "8beb0c34da46a5146a2de8256db8bb42febb283c",
      "tree": "757c1c3340eb6d8851dadbf311440aa018cd921e",
      "parents": [
        "00cef82013c0826bb43c11651d25de8b99335618",
        "b245bc750021ce6d220e71625fca66620cdd1f05"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jun 19 18:55:51 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 19 18:55:51 2015 +0000"
      },
      "message": "am b245bc75: am 0f455612: Merge \"Fix flaky test of timer_create_multiple in L.\" into lollipop-mr1-cts-dev\n\n* commit \u0027b245bc750021ce6d220e71625fca66620cdd1f05\u0027:\n  Fix flaky test of timer_create_multiple in L.\n"
    },
    {
      "commit": "d1ade7ce0237089d0e44eb2bee0691e4814d1289",
      "tree": "07d47b6970ab90a52ad2e2d86c6d3880fd5d4660",
      "parents": [
        "547fa54e6d5342f4ce68c7d78bd270595caf4b97"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jun 18 17:01:11 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jun 19 00:54:34 2015 +0000"
      },
      "message": "Don\u0027t use TIMER_ABSTIME in time_test.\n\nIf TIMER_ABSTIME is used in timer_settime(), the timer is always fired\nimmediately, which is not the intent of the tests.\n\nChange-Id: I76047dbeb2bdded272ee6d028630b53bfd7d8514\n"
    },
    {
      "commit": "410c1adf5fececb0149b7b65fde3130327ff24c8",
      "tree": "48ef2ad6b954690fca31d8f01d11b43be55eaf85",
      "parents": [
        "ea248d9ca80d4ef731d821648711094aa03b0318"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jun 18 16:19:02 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jun 18 16:19:02 2015 -0700"
      },
      "message": "Fix flaky test of timer_create_multiple in L.\n\nBug: 20677618\nChange-Id: I0cb5faf77edce042b10611543180f3e2e73d3d05\n"
    },
    {
      "commit": "fd20a8c2d669b3f2d63e2d33a32b90d1b7f17b82",
      "tree": "d183804463ff81ad063189ab61112eb17475b148",
      "parents": [
        "bb4961cd4f0348b5e88bdf81dded7b63d1aadb0b",
        "473d96c0a8bb890ac84f4a69a5c8c54134fd30ef"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed May 20 13:36:56 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed May 20 13:36:56 2015 -0700"
      },
      "message": "resolved conflicts for merge of 473d96c0 to lmp-mr1-ub-dev\n\nChange-Id: I48269218b152054d527d9257d40490b54205140f\n"
    },
    {
      "commit": "5c0996a96970eb7cf93d3203313a2532c119f1a7",
      "tree": "215389354714a898ed7b90420d99f38f3e439348",
      "parents": [
        "3da136aa47e2d1608b98abb2580f024b36f92831"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri May 08 12:01:52 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri May 08 13:12:01 2015 -0700"
      },
      "message": "Fix timer flaky test in lollipop-mr1-cts-dev.\n\nIt is partically cherry-pick from https://android-review.googlesource.com/#/c/123410/.\nAnd as lollipop-mr1-cts-dev still uses stlport, \u003cstdatomic.h\u003e is used instead of \u003catomic\u003e.\n\nBug: 20677618\nChange-Id: I952a6fd074facc4227c955fecf3ecbfbbaec4193\n"
    },
    {
      "commit": "64a869880921b7e12d092b3fe7adc68fc74f98c6",
      "tree": "5b33262117b723385189bd66ae05bc529a0957ba",
      "parents": [
        "7fbd6355ae809089ae9a62d0c738aea200ac20fe",
        "3da136aa47e2d1608b98abb2580f024b36f92831"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 04 16:45:13 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon May 04 16:45:13 2015 +0000"
      },
      "message": "Modify test to avoid race condition.\nautomerge: 3da136a\n\n* commit \u00273da136aa47e2d1608b98abb2580f024b36f92831\u0027:\n  Modify test to avoid race condition.\n"
    },
    {
      "commit": "95f1ee235ae257802a94d7e94d476ea0aaea5cd8",
      "tree": "cf163cac0ade7c84c7c07bbffcd8f5e07201a0d4",
      "parents": [
        "447cd19681cfd0a71282c87d1b32a7757bbaba81"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 13 19:53:15 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Apr 15 17:36:01 2015 -0700"
      },
      "message": "Change on handling of SIGEV_THREAD timers.\n\n1. Don\u0027t prevent calling callback when SIGEV_THREAD timers are disarmed by timer_settime.\nAs in POSIX standard: The effect of disarming or resetting a timer with pending\nexpiration notifications is unspecified. And glibc didn\u0027t prevent in this situation, so I\nthink it is fine to remove the support.\n2. Still prevent calling callback when SIGEV_THREAD timers are deleted by timer_delete.\nAs in POSIX standard: The disposition of pending signals for the deleted timer is unspecified.\nHowever, glibc handles this (although that is not perfect). And some of our tests in\ntime_test.cpp depend on this feature as described in b/18039727. so I retain the support.\n3. Fix some flaky test in time_test.cpp, and make \"time*\" test pass on bionic-unit-tests-glibcxx.\n\nBug: 18263854\n\nChange-Id: I8ced184eacdbfcf433fd81b0c69c38824beb8ebc\n"
    },
    {
      "commit": "3da136aa47e2d1608b98abb2580f024b36f92831",
      "tree": "555be2ba96c58e6d11c2dbdb5ed1376a4a41b1aa",
      "parents": [
        "4177bd8d16e0dc2d0d541fc54f81518c57651e55"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 18 17:11:47 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 18 17:45:50 2015 -0800"
      },
      "message": "Modify test to avoid race condition.\n\nThere is a possible race if a timer is set to trigger at nearly the same\ntime as it is set. Since nobody uses the timers like this, modify the test\nso this doesn\u0027t happen. The race that this can provoke has been fixed in\naosp.\n\nBug: 19423618\nChange-Id: I21084c99da5ae46f404936d673dae6bad7c82caa\n"
    },
    {
      "commit": "d5c652756bb1a52959cd5c62447b62462f90f983",
      "tree": "8804bb959d8d66a5a8557683416c254f2fc98530",
      "parents": [
        "f64c43ba6c9244c50e904961dc432f04b1dfcfd9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Nov 26 14:04:26 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Nov 26 17:14:50 2014 -0800"
      },
      "message": "support _POSIX_CPUTIME\n\nBug: 18490039\nChange-Id: I01fa83b48e1b908de1f227b6e4f98e280bcd50ee\n"
    },
    {
      "commit": "154e2026c83575eb17101df3a8d1192e305588d4",
      "tree": "754fa359b8acbe2be4049c45d8976056dc7c95cd",
      "parents": [
        "38569312bc5a3a4688d45997d81b59abb0a60825"
      ],
      "author": {
        "name": "Satoru Takeuchi",
        "email": "satoru.x.takeuchi@sonymobile.com",
        "time": "Tue May 27 17:04:04 2014 +0900"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 14 18:13:07 2014 -0800"
      },
      "message": "libc: Fix mktime returns an uncorrect time in empty TZ case\n\nThe mktime API returned an uncorrect time when TZ is set as empty.\nA timezone UTC/GMT+0 should be implied in the empty case. However\nmktime keeps previous information about timezone. If mktime was called\nwith a timezone which has DST before, the \"defaulttype\" member of\n\"state\" structure wouldn\u0027t be 0. Then it would be used next time,\neven though UTC/GMT+0 doesn\u0027t have DST.\n\nAdded initialization of the \"defaulttype\" in the empty TZ case.\n\nChange-Id: Ic480c63c548c05444134e0aefb30a7b380e3f40b\n"
    },
    {
      "commit": "62d84b19359a8ddd3df5b6293d1b05ef5281f532",
      "tree": "b614f0c9c9671eb6beaec448a7d22dc1ad44e298",
      "parents": [
        "098cf45f4e853f3c85c14af0e475bfae0839f027"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Oct 20 19:09:19 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Oct 22 13:20:39 2014 -0700"
      },
      "message": "Fix race condition in timer disarm/delete.\n\nWhen setting a repeat timer using the SIGEV_THREAD mechanism, it\u0027s possible\nthat the callback can be called after the timer is disarmed or deleted.\nThis happens because the kernel can generate signals that the timer thread\nwill continue to handle even after the timer is supposed to be off.\n\nAdd two new tests to verify that disarming/deleting doesn\u0027t continue to\ncall the callback.\n\nModify the repeat test to finish more quickly than before.\n\nRefactor the Counter implementation a bit.\n\nBug: 18039727\n\n(cherry pick from commit 0724132c3263145f2a667f453a199d313a5b3d9f)\n\nChange-Id: I135726ea4038a47920a6c511708813b1a9996c42\n"
    },
    {
      "commit": "0724132c3263145f2a667f453a199d313a5b3d9f",
      "tree": "4bf159213d27f805579fc8b9a5a5460d70df5a3d",
      "parents": [
        "c712ceeec4c15da8488c5ce143fcc6b0a02d74f3"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Oct 20 19:09:19 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 21 18:31:02 2014 -0700"
      },
      "message": "Fix race condition in timer disarm/delete.\n\nWhen setting a repeat timer using the SIGEV_THREAD mechanism, it\u0027s possible\nthat the callback can be called after the timer is disarmed or deleted.\nThis happens because the kernel can generate signals that the timer thread\nwill continue to handle even after the timer is supposed to be off.\n\nAdd two new tests to verify that disarming/deleting doesn\u0027t continue to\ncall the callback.\n\nModify the repeat test to finish more quickly than before.\n\nRefactor the Counter implementation a bit.\n\nBug: 18039727\nChange-Id: I73192c915cdacf608521b1792c54e5af14a34907\n"
    },
    {
      "commit": "18160256840e9bb097f17422ea47d54fabbc9f3f",
      "tree": "9e214fedefed00a66099d8cc9abab4dd68cbec80",
      "parents": [
        "c229705051c8b6a06ad81c221ca74ef9aa743e13"
      ],
      "author": {
        "name": "Haruki Hasegawa",
        "email": "h6a.h4i.0@gmail.com",
        "time": "Mon Oct 13 00:50:47 2014 +0900"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 13 17:04:10 2014 -0700"
      },
      "message": "Add clock_settime and clock_nanosleep.\n\nAdd the missing prototypes, fix the existing prototypes to use clockid_t\nrather than int, fix clock_nanosleep\u0027s failure behavior, and add simple\ntests.\n\nBug: 17644443\nBug: https://code.google.com/p/android/issues/detail?id\u003d77372\nChange-Id: I03fba369939403918abcabae9551a7123953d780\nSigned-off-by: Haruki Hasegawa \u003ch6a.h4i.0@gmail.com\u003e\n"
    },
    {
      "commit": "8d0b2dbf2154d5da17ff09b1d4f864d281362ad2",
      "tree": "f17c338cdad0320f0205f8d097d316c0ad2a1894",
      "parents": [
        "d5df4124bbbb30411ef19f7c2fbb3987d0eb9630"
      ],
      "author": {
        "name": "Alex Van Brunt",
        "email": "avanbrunt@nvidia.com",
        "time": "Fri Sep 26 13:32:47 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 03 18:54:28 2014 -0700"
      },
      "message": "Reimplement clock(3) using clock_gettime(3)\n\nUnlike times(), clock_gettime() is implemented as a vDSO on many architectures.\nSo, using clock_gettime() will return a more accurate time and do so with less\noverhead because it does have the overhead of calling into the kernel.\n\nIt is also significantly more accurate because it measures the actual time in\nnanoseconds rather than the number of ticks (typically 1 millisecond or more).\n\nBug: 17814435\nChange-Id: Id4945d9f387330518f78669809639952e9227ed9\n"
    },
    {
      "commit": "04303f5a8ab9a992f3671d46b6ee2171582cbd61",
      "tree": "98d3997d33e93eeb91a2c2f331b57f35c180cbb2",
      "parents": [
        "adc01348ee51a4ad678b1c277f85cbbed5c2e728"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 18 16:11:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 19 17:37:06 2014 -0700"
      },
      "message": "Add semaphore tests, fix sem_destroy.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d76088\nChange-Id: I4a0561b23e90312384d40a1c804ca64ee98f4066\n"
    },
    {
      "commit": "f4c948a9e9b616c4f133f9495dacb105e51b3e49",
      "tree": "47e300fdbb36f28ab843468ad484a8d8a74a06e9",
      "parents": [
        "17f83c93cbbde3e38a03182931f40b7390061a7d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 19 11:16:41 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 19 11:18:20 2014 -0700"
      },
      "message": "Move the meat of \u003cfeatures.h\u003e into \u003csys/cdefs.h\u003e.\n\nThis way it\u0027s a lot harder for us to screw up (since we should always\nbe including \u003csys/cdefs.h\u003e anyway).\n\nBug: 14659579\nChange-Id: I23070fff3296b0d1c683bb5e3a6e214146327d53\n"
    },
    {
      "commit": "708c11205443cda14cfb21138d441106aa77a5f9",
      "tree": "e7e467762f54f04df058431394a3841a305dfee2",
      "parents": [
        "65549969488bbce7f5d1b57714ba32c466943470"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 11:55:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 15:24:57 2014 -0700"
      },
      "message": "Start hiding \"private/bionic_time.h\".\n\nBug: 15765976\n\n(cherry picked from commit 905e6d58aaf515bf237e62078f8a321920fe4c6b)\n\nChange-Id: Ic7435308e8b521886f42ac7bf59531924921ea67\n"
    },
    {
      "commit": "905e6d58aaf515bf237e62078f8a321920fe4c6b",
      "tree": "07ee9fad11490db7e30bc27e359d5d1adf950cef",
      "parents": [
        "123172ae370fe51e2d1fc26fe0aafa095af52919"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 11:55:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 12:03:51 2014 -0700"
      },
      "message": "Start hiding \"private/bionic_time.h\".\n\nBug: 15765976\nChange-Id: Ibd9cf07067ec8dffe9fda6c3d498d4ab90708220\n"
    },
    {
      "commit": "3002131da33401cf1b45abbdbec58b7c751fc43a",
      "tree": "ddebae94546e50154d568cd9a9cac943e435a52a",
      "parents": [
        "a446505874ba52eb6ddb893c0d9c9321a73b235d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 15 16:53:13 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 16 15:15:53 2014 -0700"
      },
      "message": "Use VDSO for clock_gettime(2) and gettimeofday(2).\n\nBug: 15387103\n\n(cherry picked from commit 625993dfbb085a3cde7492eda8ec1cdc1ee39a78)\n\nChange-Id: I0e156d7049ba1495902259071a96936592e74025\n"
    },
    {
      "commit": "625993dfbb085a3cde7492eda8ec1cdc1ee39a78",
      "tree": "4385fee1dde6d90f42c616a2afc6766824f72835",
      "parents": [
        "770d0f6177ca1ad242b509151fb612f07ef8a07b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 15 16:53:13 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 16 14:27:43 2014 -0700"
      },
      "message": "Use VDSO for clock_gettime(2) and gettimeofday(2).\n\nBug: 15387103\nChange-Id: Ifc3608ea65060c1dc38120b10b6e79874f182a36\n"
    },
    {
      "commit": "7a39094465bbd01a22565fce1f1155c762f8d145",
      "tree": "c3d23c62894a3dbabd5d0160166afe7ab5f4fcf3",
      "parents": [
        "4d35da1df8b74c1965b2201f6089e7d7bb352def"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 19 23:46:51 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 19 23:46:51 2014 +0000"
      },
      "message": "Revert \"Removes bionic\u0027s dependence on stlport\"\n\nThis reverts commit 4d35da1df8b74c1965b2201f6089e7d7bb352def.\n\nChange-Id: Ie9a2620441edb55dbc5949e13a4b913ea4e66797\n"
    },
    {
      "commit": "4d35da1df8b74c1965b2201f6089e7d7bb352def",
      "tree": "21c58c7fa8fa2d34d777eeae25a79d5bf05b087a",
      "parents": [
        "48ee47ce25fa9c99df49855ebf77ae1758d58d47"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 19 10:50:15 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 19 11:33:14 2014 -0700"
      },
      "message": "Removes bionic\u0027s dependence on stlport\n\nOnly affects tests/benchmarks. Confirmed passing on arm.\n\nChange-Id: If158e23e8cd06e7597ef6f3c9376f6799b467e62\n"
    },
    {
      "commit": "329103d3e2f42d3e35a060c3e0d326d6476eb2ef",
      "tree": "0624fa58c29f43ffe405be7fa47a73f85ad29fae",
      "parents": [
        "f2dc7d17196de9904df67f21aad1525b8568a705"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 25 16:55:04 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 25 21:51:26 2014 -0700"
      },
      "message": "Don\u0027t use so much stack in tzcode.\n\nBug: 14313703\nBug: https://code.google.com/p/android/issues/detail?id\u003d61130\nChange-Id: Id9b240fce20d4a6f2660792070e02b2b5f287655\n"
    },
    {
      "commit": "efbdb53f84f4e1faf38f3c1a4cb60a83b9885ef4",
      "tree": "ce1cefce8be4e92dec242f1a06672b1dfbf566d7",
      "parents": [
        "5f149f1bdef31d198c0e84fd8c904204d263e825"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 07 15:17:19 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 07 15:17:19 2014 -0700"
      },
      "message": "Remove a non-standard turd: strtotimeval.\n\nChange-Id: I1b1e40746cb573e3fb73a5276969b40c5da36d15\n"
    },
    {
      "commit": "4bfaf462f0c864473faaca63cc4ba9e1a1b103a8",
      "tree": "c8514bbb56f1b835c2043367fc7df6b7eb3dd278",
      "parents": [
        "ecbf00bda2fcee65e4e6385772022529ffeeed91"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 26 14:21:11 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 26 17:57:48 2014 +0000"
      },
      "message": "Added strtotimeval tests.\n\nChange-Id: I3dfd3647a8494490a2d549bdb915968063a7fb99\n"
    },
    {
      "commit": "753ad778bc1c3aecc4cd82b8387a7dc8a9b44d34",
      "tree": "6eedabf25b6c892f6eb95b847e3100c8245dcacf",
      "parents": [
        "2cc58603d5fd68ec582984318fb3c5f8865a186f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 20 20:47:45 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 20 20:47:45 2014 -0700"
      },
      "message": "Fix deadlock in timer_delete.\n\nIf the callback function for a timer did a timer_delete, the function\nwould never return. The problem was that the timer_delete function would try\nto wait until the timer thread has finished. Waiting for yourself to finish\ndoesn\u0027t work very well.\n\nBug: 13397340\nChange-Id: Ica123a5bafbc8660c8a4a909e5c2dead55ca429d\n"
    },
    {
      "commit": "3e3409af0faa8843078a9e6e7110e69a88210da4",
      "tree": "ef07a9b1dac6181400f081a431b6665cbd86e416",
      "parents": [
        "2cd3490d7bdb18e5051a3cc66e7d03635bbcbeaf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 18:19:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 18:19:03 2014 -0700"
      },
      "message": "Add system/extras strftime and strptime tests.\n\nChange-Id: I889c58f6e2e27b99cf6328a8671858d2e5feaa4e\n"
    },
    {
      "commit": "be1d91dedcfb346ced5ac496cd454f5b2e9bc4a9",
      "tree": "a27aef46b6755f47ff36c6a40661f7f09e55950c",
      "parents": [
        "fd9e20d10f946334955ca199b0178580d284e89f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Mar 08 15:05:26 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Mar 08 15:09:43 2014 -0800"
      },
      "message": "Add includes for waitpid\n\n(cherry picked from commit f07c5dd9ab63f2e8ba736107bd4b69bbd8829c9f)\n\nChange-Id: I7a765fd7a3a5f8f29a703f6a591c4fd8df4ebf1c\n"
    },
    {
      "commit": "4b558f50a42c97d461f1dede5aaaae490ea99e2e",
      "tree": "c239a686131cdda28272c961ce98febbc0c772f8",
      "parents": [
        "bef5016491eed41521f514d5c5528e2274689948"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 04 15:58:02 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 07 16:49:46 2014 -0800"
      },
      "message": "Rewrite the POSIX timer functions.\n\nThis is a much simpler implementation that lets the kernel\ndo as much as possible.\n\nCo-authored-by: Jörgen Strand \u003cjorgen.strand@sonymobile.com\u003e\nCo-authored-by: Snild Dolkow \u003csnild.dolkow@sonymobile.com\u003e\nChange-Id: Iad19f155de977667aea09410266d54e63e8a26bf\n"
    },
    {
      "commit": "f04935c85e0b466f0d30d2cd4c0fa2fff62e7d6d",
      "tree": "8f1c6af75517892648f49adad9d4d5d44c20f49c",
      "parents": [
        "e163a3986aa7d1c67fe3274eb9204812be0a6245"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Dec 20 18:43:21 2013 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 06 20:12:21 2014 -0800"
      },
      "message": "Make sure that the same tests are on all platforms.\n\nIn order to be able to generate a list of tests for cts, the same set of\ntests must exist across all platforms. This CL adds empty tests where a\ntest was conditionally compiled out.\n\nThis CL creates a single library libBionicTests that includes all of\nthe tests found in bionic-unit-tests-static.\n\nAlso fix a few missing include files in some test files.\n\nTested by running and compiling the tests for every platform and\nverifying the same number of tests are on each platform.\n\nChange-Id: I9989d4bfebb0f9c409a0ce7e87169299eac605a2\n"
    },
    {
      "commit": "0c40152767188dc718a46e5b4e7e32e937c85bd8",
      "tree": "2960b8f779dcd252946da0cd5c29ec0760199f9e",
      "parents": [
        "d0402acdc76e1ea412085b3b633f5ae798022350"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 18 16:21:54 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 18 16:21:54 2013 -0700"
      },
      "message": "Fix the time unit tests for systems with 64-bit time_t.\n\nChange-Id: I29df50b25d022c1c00906e71b612defa58e46e81\n"
    },
    {
      "commit": "7843d44a594270bcb56e98b130603c054f8a9d38",
      "tree": "cfc044742a435671f93e4a6224f52d314c05c777",
      "parents": [
        "bb34907ff5f60cf1600e83ea1bb4a6c26da6854e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 22 11:37:32 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 22 12:21:18 2013 -0700"
      },
      "message": "Work around tzcode\u0027s reliance on signed overflow.\n\nI\u0027ve mailed the tz list about this, and will switch to whatever upstream\nfix comes along as soon as it\u0027s available.\n\nBug: 10310929\nChange-Id: I36bf3fcf11f5ac9b88137597bac3487a7bb81b0f\n"
    },
    {
      "commit": "ee178bfb794d16d6c5a35f424b28c8ebb83e1581",
      "tree": "5ed2fa5420c5e326ebd7f114463977a94f7d5122",
      "parents": [
        "8a363692be45ed1b36e1f1f21707b6f35f5519c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 12 11:25:20 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 12 11:25:20 2013 -0700"
      },
      "message": "Add a trivial gmtime(3) test.\n\nChange-Id: I849f200a455cd6971646fa45766ab22ba19fb866\n"
    },
    {
      "commit": "e0175ca7e440a87e9d03f249fc8f210063df7908",
      "tree": "982e64580d19fc846cd7f2a1fa1dee2fbe2274d8",
      "parents": [
        "ec706c24acb4d1db6a583a57b76adfb9250d39eb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 14:38:08 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 14:38:08 2013 -0700"
      },
      "message": "Don\u0027t search off the end of the index for bad Olson ids.\n\nIn the old code, the index was a file to itself, so it made sense to\nread until you hit the end of the file. In the new code, the index is\nfollowed by hundreds of KiB of data, so we need to just search the\nindex.\n\nBug: 8368791\nChange-Id: Icf5f8b5516cf3a93679fa849c9f6cd1cb100e0f1\n"
    }
  ]
}
