)]}'
{
  "log": [
    {
      "commit": "57474c89fe2fe359128cae9a23ab9f614d0d7d07",
      "tree": "a566dd5a9d39e00e9da7e4ebfb531f2ef8d0c95e",
      "parents": [
        "dc4b3789e61e9514d0c32e99c1d6c5569a39e287"
      ],
      "author": {
        "name": "ZijunZhao",
        "email": "zijunzhao@google.com",
        "time": "Tue Oct 26 00:00:07 2021 +0000"
      },
      "committer": {
        "name": "ZijunZhao",
        "email": "zijunzhao@google.com",
        "time": "Tue Nov 09 23:29:33 2021 +0000"
      },
      "message": "Fix incorrect API level for wcstombs and mbstowcs.\n\nMbstowcs and wcstombs cannot get correct return value when called in the environment below api 21, and need to raise the API level to solve the problem.\n\nTest: None\nfix bug 1108 https://github.com/android/ndk/issues/1108\n\nChange-Id: Iabcf1bff0be087288646687732ef68870630b48a\n"
    },
    {
      "commit": "11526e2fc607624dbb8bd4acf2ffdd3a187e9c02",
      "tree": "d2ea11e8eec68b7f022ec5d8482072fa3860a374",
      "parents": [
        "a3c6e7030c128fbcb060ddbd6e89cf5ad2b95d05"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 14 22:44:47 2021 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Oct 20 21:53:07 2021 +0000"
      },
      "message": "Add execinfo functionality.\n\nBug: 27877410\n\nTest: Add new unit tests.\nChange-Id: Id5d7eb27a23f50e99a04f5ee1ab64047ba269bab\n"
    },
    {
      "commit": "cf59e19e22fc7c4795fd955eeecd1f457d79eba0",
      "tree": "619545ee8e093cad2d79464ff9b43a407d5fcdd4",
      "parents": [
        "ad60768bdfc4680edc07422693381ac152d74e37"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 13 18:25:21 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 18 12:58:47 2021 -0700"
      },
      "message": "Add preadv2/pwritev2 wrappers.\n\nThey\u0027re in glibc, though not in musl.\n\nAlso add basic doc comments to the whole of \u003csys/uio.h\u003e.\n\nBug: http://b/203002492\nTest: treehugger\nChange-Id: Ic607f7f349e5b7c9bf66c25b7bd68f827da530d6\n"
    },
    {
      "commit": "660ba39b52c16f17838d091bf772705eea4a02ae",
      "tree": "9eb672e837b8f9b31c12706260ffd03928242b3b",
      "parents": [
        "23e33cf94ec813094b5719d315b6540ebaf76d76"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Fri Feb 12 14:47:47 2021 -0800"
      },
      "committer": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Mon May 17 11:42:02 2021 -0700"
      },
      "message": "Move android_reset_stack_guard to LIBC_S\n\nTest: Declare as external and compile\nBug: 168258494\nChange-Id: I32d1c0cc6c150b440baeac458d7753445036b455\n"
    },
    {
      "commit": "dcc97c0887c57844c832f4497866320697811e88",
      "tree": "6f15dcf66c1b9b4b5e6e6d4b7642f555bf2a6ee6",
      "parents": [
        "87a205eefa2e12597f6d7a05db05fefbe498a292"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Dec 09 14:01:13 2020 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 07 19:00:45 2021 -0700"
      },
      "message": "Disable fdtrack post-fork.\n\nAlso delete some fdsan code that attempts to check for the post-fork\nstate, but never will, because we update the cached pid upon fork.\n\nBug: http://b/174542867\nTest: /data/nativetest64/bionic-unit-tests/bionic-unit-tests\nTest: treehugger\nChange-Id: I9b748dac9de9b4c741897d93e64d31737e52bf8e\n"
    },
    {
      "commit": "3de19151e508e14654a2d3204d9981c514f1c93a",
      "tree": "0b3131941af3ac9b58af130097a92774d1cdcd0b",
      "parents": [
        "14851abce9d6b46140760d9e73c43a8b045bc24e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Feb 22 18:09:48 2021 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Feb 25 13:55:12 2021 -0800"
      },
      "message": "Add wrappers for pidfd_{open,getfd,send_signal}.\n\nBug: http://b/172518739\nTest: `/data/nativetest64/bionic-unit-tests/bionic-unit-tests --gtest_filter\u003d\"*pidfd*\"` on blueline\nChange-Id: Ibae32bbedbcf26535a80a5cbfb55ce180906b610\n"
    },
    {
      "commit": "128ef8e981623d89b11f9947b1993c11b9e4b1cb",
      "tree": "3167d2f1637b23f43d07c0fc56fe7cd082acd525",
      "parents": [
        "d02148c31af0025582c633cc3dac177022d6da56"
      ],
      "author": {
        "name": "Edgar Arriaga",
        "email": "edgararriaga@google.com",
        "time": "Wed Dec 23 14:59:56 2020 -0800"
      },
      "committer": {
        "name": "Edgar Arriaga",
        "email": "edgararriaga@google.com",
        "time": "Thu Jan 14 19:34:40 2021 -0800"
      },
      "message": "Add bionic headers for process_madvise\n\nTest: atest bionic-unit-tests-static\nBug: 173258203\nChange-Id: I396945b95de364055b87cc53321aed4fad4ebc70\n"
    },
    {
      "commit": "0cdf132f84022b2a05082095733d530e31d72d61",
      "tree": "11c2c3ebfb67e914c37c6573d0b775f781b4f1ff",
      "parents": [
        "5d3aa86cd1fe2e8b1920003b14b9a0c91153b111"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Oct 05 21:55:26 2020 +0000"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Oct 09 00:33:30 2020 +0000"
      },
      "message": "Expose per-process memory init.\n\nIn order to disable memory initialization for a process, the following\ncommand can be used:\n\n    android_mallopt(M_DISABLE_MEMORY_MITIGATIONS, nullptr, 0);\n\nSince this is needed in vendor processes, this is exposing this\nfunctionality to llndk. For convenience (and adding standard logging),\na helper function is being added into libcutils in order to use this,\nw/o having to get into so many details.\n\nBug: 166675194\nTest: use function from libcutils\nChange-Id: Ia816089a9f3469c50c70afaa7244abeac5a51dcd\n"
    },
    {
      "commit": "5d3aa86cd1fe2e8b1920003b14b9a0c91153b111",
      "tree": "e17b86fb2a85a913c20d5f91405ef524e7c0c1c8",
      "parents": [
        "4edf74ab1ae2da4bda80d19f4c014e983c74903d"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Sep 11 15:05:17 2020 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Oct 08 14:02:36 2020 -0700"
      },
      "message": "Add an API for per-process disabling memory initialization.\n\nIntroduce an android_mallopt(M_DISABLE_MEMORY_MITIGATIONS) API call\nthat may be used to disable zero- or pattern-init on non-MTE hardware,\nor memory tagging on MTE hardware. The intent is that this function\nmay be called at any time, including when there are multiple threads\nrunning.\n\nDisabling zero- or pattern-init is quite trivial, we just need to set\na global variable to 0 via a Scudo API call (although there will be\nsome separate work required on the Scudo side to make this operation\nthread-safe).\n\nIt is a bit more tricky to disable MTE across a process, because\nthe kernel does not provide an API for disabling tag checking in all\nthreads in a process, only per-thread. We need to send a signal to each\nof the process\u0027s threads with a handler that issues the required prctl\ncall, and lock thread creation for the duration of the API call to\navoid races between thread enumeration and calls to pthread_create().\n\nBug: 135772972\nChange-Id: I81ece86ace916eb6b435ab516cd431ec4b48a3bf\n"
    },
    {
      "commit": "a1e3f2c50253c67f3ed647ae64a066751dc4b857",
      "tree": "ffd279a7c6f929f5bc4bc60a5e8cdaec596de45e",
      "parents": [
        "bba9153c5c4de2251a004a50f0be6681504e7af4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 10 18:26:08 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 11 08:56:58 2020 -0700"
      },
      "message": "Expose a function to reset the stack protector for the zygote.\n\nThis is already covered by the existing test by virtue of being used for\nall threads.\n\nBug: http://b/168258494\nTest: treehugger\nChange-Id: I5c872fd7f30a4c79de1d70e7702f4b12d4e94cd3\n"
    },
    {
      "commit": "d500751443dbd841445f019428099aae42bac007",
      "tree": "2c55d14b68aad215315d927885a12c427c58b451",
      "parents": [
        "f08e70a0d9a02cbec89be682d665c2c2896c968f"
      ],
      "author": {
        "name": "Vy Nguyen",
        "email": "vyng@google.com",
        "time": "Tue Jul 14 17:37:04 2020 -0400"
      },
      "committer": {
        "name": "Vy Nguyen",
        "email": "vyng@google.com",
        "time": "Tue Aug 11 16:51:43 2020 +0000"
      },
      "message": "Add a thread-properties API\n(Based on proposal at https://sourceware.org/glibc/wiki/ThreadPropertiesAPI)\n\nThis includes API to:\n - locate static and dynamic TLS\n - register thread-exit and  dynamic TLS creation/destruction callbacks\n\nChange-Id: Icd9d29a5b2f47495395645e19d3b2c96826f19c8\n"
    },
    {
      "commit": "14dcbf89ce6743ba037c8eddda1c6774a1137672",
      "tree": "42053fec96a1f7bcf3e4c176970dd3ea7f0eefeb",
      "parents": [
        "e05c449cd860b68e6339f71c98dd01748c22c01e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Mar 26 16:18:13 2020 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 09 12:38:53 2020 -0700"
      },
      "message": "Add API constant for S.\n\nTest: treehugger\nBug: http://b/152037166\nChange-Id: I9039377e80574cd59e13726a12072fe3002df67d\n"
    },
    {
      "commit": "4a6899ce0c0fc900354f44af400fb66ec29440e0",
      "tree": "ce91e984c6372ae2cb401ad58fc763a89ac19899",
      "parents": [
        "8d1849930f10e6b1a6b9c5885def5a08cee44040"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 25 10:34:46 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 26 11:43:05 2020 -0700"
      },
      "message": "Add ffsl(3), ffsll(3).\n\nPOSIX added these GNU extensions for issue 8.\n\nI\u0027ve made these always inline without the usual \"until API level X\"\nproviso because they\u0027re single instructions that the compiler can inline\nand there\u0027s really no point providing these if they add function call\noverhead --- everyone should just use __builtin_ffs() and friends\ninstead in that case.\n\nBug: https://austingroupbugs.net/view.php?id\u003d617\nTest: treehugger\nChange-Id: I33fc4b8648ea25917329e81c1b4c60eb9a66d667\n"
    },
    {
      "commit": "733cedd1c4696ea74dab34d629ef7ac28ecc2200",
      "tree": "6f24227b01f5bfea254d364bd90ee5a1067d4408",
      "parents": [
        "fcbdba22ab1c84825bd1e4cd18f8298c87991a5b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 21 23:21:28 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Feb 23 11:36:53 2020 -0800"
      },
      "message": "Add a libc wrapper for statx(2).\n\nBug: http://b/127675384\nBug: http://b/146676114\nTest: treehugger\nChange-Id: I844edc12f62717e579870a040cf03dfe60dc280b\n"
    },
    {
      "commit": "56a9fda6103cd3b903dffa013dc1532fc33d31ba",
      "tree": "5b7a5b38bd0b7436eb69ed89848a19e367c73d35",
      "parents": [
        "fb28c278b726a2281cef89cf25b5e9a2a5503b31"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 13 22:23:17 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 13 22:25:02 2020 -0800"
      },
      "message": "Remove dead code.\n\nWe haven\u0027t built any of this for years.\n\nTest: treehugger\nChange-Id: I3f8a85e9530af68587f47931d850eb60631a9481\n"
    },
    {
      "commit": "5f45c18a7fd77a1a9daf453c6dea9fceddf0184c",
      "tree": "0d37e47fa38981e5f895a290c3d09a834b60abd4",
      "parents": [
        "bdb678c9bdad161d033b236f261ba1cb299fada2"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Jan 14 17:59:41 2020 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Feb 03 10:30:45 2020 -0800"
      },
      "message": "Add an android_unsafe_frame_pointer_chase function.\n\nThis function will be used by Scudo and GWP-ASan to efficiently collect\nstack traces for frames built with frame pointers.\n\nBug: 135634846\nBug: 135772972\nChange-Id: Ic63efdbafe11dfbb1226b5b4b403d53c4dbf28f3\nMerged-In: Ic63efdbafe11dfbb1226b5b4b403d53c4dbf28f3\n"
    },
    {
      "commit": "759625072270f5b6940dae40c8039867a08eff12",
      "tree": "e0a1227301a6b67509badba95a91998d5c04e18d",
      "parents": [
        "97271920bf831610819ddfa44e4e2cc0815afd6e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 28 13:24:33 2020 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 30 13:55:10 2020 -0800"
      },
      "message": "Move fdtrack APIs to LLNDK.\n\nTest: logcat -c; fdtrack_test; logcat -d\nChange-Id: Ib6f75a7c8bbc4d6efa0708dcbbfe4ad3c0641022\n"
    },
    {
      "commit": "97271920bf831610819ddfa44e4e2cc0815afd6e",
      "tree": "0ba61ad31242b38becb89cab8702df68328a1e71",
      "parents": [
        "7ef4c774da59bbf942b5652b1f68e46cac2e5099"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 06 13:15:00 2019 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 30 13:55:10 2020 -0800"
      },
      "message": "Add a tool to track down fd leaks.\n\nAdd a hook that\u0027s called upon file descriptor creation to libc, and a\nlibrary that uses it to capture backtraces for file descriptor creation,\nto make it easier to hunt down file descriptor leaks.\n\nCurrently, this doesn\u0027t capture all of the ways of creating a file\ndescriptor, but completeness isn\u0027t required for this to be useful as\nlong as leaked file descriptors are created with a function that is\ntracked. The primary unhandled case is binder, which receives file\ndescriptors as a payload in a not-trivially-parsable byte blob, but\nthere\u0027s a chance that the leak we\u0027re currently trying to track down\nisn\u0027t of a file descriptor received over binder, so leave that for\nlater.\n\nBug: http://b/140703823\nTest: manual\nChange-Id: I308a14c2e234cdba4207157b634ab6b8bc539dd9\n(cherry picked from commit b7eccd4b1577c101132e52d4a5313d5322dcae2d)\n"
    },
    {
      "commit": "39d9156bdc435999f01d8a06983924b77a75580a",
      "tree": "d923c1a1cb43909d50b2e49b0e9bbd9bae8c36bf",
      "parents": [
        "b04be9b4ee45613000c669224044c2d2fbb86d4d",
        "f2b1e03606968acc7557c3e35e7e36a7da3ec524"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Jan 21 21:28:44 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 21 21:28:44 2020 +0000"
      },
      "message": "Merge \"Export the unwinder implementation from libc.\""
    },
    {
      "commit": "f2b1e03606968acc7557c3e35e7e36a7da3ec524",
      "tree": "97fc6c6a20f8a2eeb63d17dbeab9092feb8f584f",
      "parents": [
        "27a8c60f045f939ab1cb7157313778966ed29404"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Dec 10 17:41:16 2019 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Jan 10 19:07:59 2020 -0800"
      },
      "message": "Export the unwinder implementation from libc.\n\nThis supports the soong commit which causes most platform binaries to stop\nstatically linking against the unwinder implementation. The soong commit\nmessage has more motivation for this change.\n\nARM32 uses LLVM libunwind, while all other platforms use libgcc as the\nunwinder implementation. This matches the current choices of unwinders on\nthe various architectures, but means that apps which were directly linking\nagainst the libc.so unwinder symbols on ARM32 are now using LLVM libunwind\ninstead of libgcc.\n\nSet libc_headers sdk_version to 1 so that libunwind_llvm can depend on it,\nand stop statically linking libunwind into libc_malloc_debug.\n\nBug: 144430859\nChange-Id: I52c7f7893d93f500383aeb0b76086c3b6f1935a5\n"
    },
    {
      "commit": "aaffa3c6d4bf620e211257b505223fab370ba3a1",
      "tree": "fa460f4c50db045474035fa67f7fb4e41731c6f4",
      "parents": [
        "5e2ac29165a5ecdff9be1e8b3aa0c0f968abf539"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Nov 20 09:21:04 2019 -0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Mon Dec 23 07:13:33 2019 -0800"
      },
      "message": "versioner: Update libc.map.txt to match annotations\n\nThis commit removes several symbol versions (API 14 and 15) from\n`libc.map.txt` because we no longer support NDK with those API levels.\nThis also matches the versioner annotations in the header files.\n\nThis commit also annotates twalk() with __INTRODUCED_IN(21).  It was\naccidentally removed in aosp/1157510.\n\nTest: source development/vndk/tools/header-checker/android/envsetup.sh \u0026\u0026 \\\n      source build/envsetup.sh \u0026\u0026 \\\n      lunch aosp_arm64-userdebug \u0026\u0026 \\\n      m versioner \u0026\u0026 \\\n      ./bionic/tools/versioner/run_tests.py\nChange-Id: I211fe5b7b1b66793d5e76a8676f9d18825f96b5e\n"
    },
    {
      "commit": "73166c8bfb03e886708c8a798d7ecd3824417821",
      "tree": "05fedd720c32a88f40d7e48e18049e55c6ccf95a",
      "parents": [
        "0b12b006558769d8d7fb33ee2bd58ab0627fd942"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Nov 15 15:51:40 2019 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Nov 15 15:59:58 2019 -0800"
      },
      "message": "Stop exporting certain deprecated unwinder symbols from libc.so and libm.so.\n\nWe have data that indicates that we no longer need to export the libgcc\nunwinder\u0027s implementation detail symbols from libc.so, as well as the entire\nunwinder interface from libm.so, so stop exporting them.\n\nBug: 144430859\nChange-Id: Iebb591c4a121abe6368d9854ec96819abe70a006\n"
    },
    {
      "commit": "a4fe44e339e4e84bcea9d81d99625e53a3512f02",
      "tree": "fac9e8c6f4e2ef3978424817aea4172227e4c6aa",
      "parents": [
        "754b27d3ddf29a42b88cc0b2756dd789e83a46e4"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Nov 06 12:44:25 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Nov 13 14:31:26 2019 +0900"
      },
      "message": "Rename # vndk tag to # llndk\n\nThe APIs that are tagged with # vndk are actually for LLNDK libraries.\nAlthough LLNDK is part of VNDK, calling those APIs \u0027vndk\u0027 has given\nusers a wrong perception that the APIs don\u0027t need to be kept stable\nbecause that\u0027s the norm for most of the VNDK libraries that are not\nLLNDK.\n\nIn order to eliminate the misunderstanding, rename the tag to \u0027llndk\u0027 so\nthat people introducing new such API will realize what they are signing\nthemselves up for.\n\nBug: 143765505\nTest: m\nMerged-In: I56e49876410bd43723a80d0204a9aef21d20fca9\n(cherry picked from commit 3e2cd44aa41855286d71608810d4c81a7bcc83ae)\nChange-Id: I56e49876410bd43723a80d0204a9aef21d20fca9\n"
    },
    {
      "commit": "23e6f0a900fc2971c7c9b298d08a40c905f30d8c",
      "tree": "7f19c96c447c6aa556d367a84761b0640dd7402c",
      "parents": [
        "3aedee98286f2551742ec7b1ecb550ae334ebe50"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Oct 07 19:08:12 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Oct 07 19:09:38 2019 -0700"
      },
      "message": "libc: remove now-unused FORTIFY functions\n\nAs of I2037548cc2061e46c379931588194c21dfe234b4, these are no longer\nused. Since they\u0027re new in R, we can remove them instead of keeping\nbackwards compat \u0027forever\u0027. Take that opportunity now.\n\nBug: 141267932\nTest: TreeHugger\nChange-Id: I13f94cdcff6e75ad19b964be76445f113f79559b\n"
    },
    {
      "commit": "3d24d2b0883ea828443fd7c36d1b262410618aca",
      "tree": "90ddca40aa1d86f1c182462d5b3386a4375dcc3f",
      "parents": [
        "a5c9c7c56542b6471575148b8a3654078b180940"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 13:53:01 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 16:31:08 2019 -0700"
      },
      "message": "Add memfd_create(2) and mlock2(2).\n\nThese are old enough now that the latest devices will have kernels that\nsupport them.\n\nAlso add basic doc comments to \u003csys/mman.h\u003e.\n\nTest: treehugger\nChange-Id: I1b5ff5db0b6270f5c374287cac1d6a751a0259f5\n"
    },
    {
      "commit": "05b675e8bfec6e33138fd2e1b2e0e16afe745b37",
      "tree": "2de2c98f748581531eaa6b0bb92adbe30f891f36",
      "parents": [
        "c2a722f5d77911afd199f452b03d9c15fbe645f8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 17 13:01:06 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 02 09:09:59 2019 -0700"
      },
      "message": "Add renameat2.\n\nBug: http://b/127675384\nTest: new tests\nChange-Id: Ia2e3d5679180391ca98e62fa429fa11cbf167507\n"
    },
    {
      "commit": "30feb645f959d3e898292f4016c58e7ae5dec958",
      "tree": "2483c36caa9596ea02fc9587783ebee1c00f5e68",
      "parents": [
        "6d601458de0b6485743bc23732f200d91b999537"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jul 30 17:30:08 2019 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jul 30 20:55:54 2019 -0700"
      },
      "message": "Enable traditional TLS accesses on arm64\n\nHandle generic DTPMOD/DTPREL relocations on arm64. Expose __tls_get_addr.\n\nBug: http://b/123385182\nTest: manual -- compile code using arm64 gcc -mtls-dialect\u003dtrad\nChange-Id: I99d2faae35d1ebffc1be8de50b4a1f5e21b14348\n"
    },
    {
      "commit": "69010802d037dbc10377416bd9cc696fa34b9384",
      "tree": "cfe3d6b0d956daf3e68ee542bb8d855604d433c7",
      "parents": [
        "c80af7f146df928dadee254467d6f0fc4401585f"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue May 07 20:33:05 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Jul 15 09:06:19 2019 -0700"
      },
      "message": "Implement new clock wait functions\n\npthread_cond_clockwait\npthread_mutex_clocklock\npthread_rwlock_clockrdlock\npthread_rwlock_clockwrlock\nsem_clockwait\n\nBug: 35756266\nTest: new unit tests\nChange-Id: I71bd25eeec6476134b368d5bdf2f729d0bba595e\n"
    },
    {
      "commit": "849c0b9f51b65da9f3ac7a3222da9ae00893acfd",
      "tree": "1b118a1406ebeddc7786d35a4f06ebfa5b38b42e",
      "parents": [
        "74519e7aa58a19c0ed352b660f2e732148ae2f8a"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jun 10 16:22:09 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 13 23:29:37 2019 -0700"
      },
      "message": "fortify: add __mempcpy_chk\n\nBug: 131861088\nTest: mma + bionic-unit-tests on blueline\nChange-Id: I02f8f87d5db0ba5fecec410da32f6ffa2c98ef57\n"
    },
    {
      "commit": "2356c93d391c1948b3abb7602da3d97bd8b289f2",
      "tree": "a490fc205ecbbd2f21b93f0102a806ccc1a075de",
      "parents": [
        "77f99aaf58b944b23f2cfb38fce08a98feabe93f"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 06 17:18:13 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 13 23:26:02 2019 -0700"
      },
      "message": "fortify: add bit checking for open(at)?64 functions\n\nThis also adds _2-variants for these functions, for extra glorious\nchecking\n\nBug: 131861088\nTest: mma\nChange-Id: I80475ff4bb220c0c47894e9532426f53412f176f\n"
    },
    {
      "commit": "738a6c92e5f0d13b83697b1b610e4e884b8b8487",
      "tree": "0f6e4d113252cd30c3b6aa6bd3973e8cd8e4eae3",
      "parents": [
        "400b073ee38ecc2a38234261b221e3a7afc0498e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 06 09:56:06 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 06 09:57:54 2019 -0700"
      },
      "message": "\u003carpa/nameser.h\u003e: fix INTRODUCED_IN API level.\n\nHistorical research (see bug) suggests that these functions were all in\n22. The map file believed this with one (presumably typoed) exception,\nbut the header file didn\u0027t match the map file. It looks like the map was\ncorrect (modulo the one typo), so fix up all the disagreement.\n\nBug: http://b/113618851\nTest: treehugger\nChange-Id: Ia579f4e6163206abfac79aa54dc98c792f00ee86\n"
    },
    {
      "commit": "b9667b51a8e9831baa1e54362b1f614a911e4e76",
      "tree": "8cd85f5d36203311abe54a0aa1b977b59d9ad7f0",
      "parents": [
        "72aafad9506d65c8c0f957cae4b664402cc0e8ab"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 17 13:45:18 2019 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 17 14:26:31 2019 -0700"
      },
      "message": "Export some symbols for vendor libmemunreachable\n\nAdd the malloc symbols used by libmemunreachable to the VNDK, and\nmake libc_malloc_debug_backtrace vendor_available.\n\nBug: 132302484\nTest: m checkbuild\nChange-Id: Ide555195afa084c13eaeaf0eab6ff90787b5f2d0\n"
    },
    {
      "commit": "23c056dbcbc1e2bc624809a9e3ee2286409db361",
      "tree": "e6f700a30ecda842d66bc6034731ca44fffbf71f",
      "parents": [
        "f15a00b1ecc285dcf433fd38a9f05e4fe0030d85"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 07 16:02:49 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 08 15:43:25 2019 -0700"
      },
      "message": "Add removed platform functions used by apps.\n\nAdded get_malloc_leak_info and free_malloc_leak_info for arm 32 bit\nonly so that the kindle app will continue to run.\n\nBug: 132175052\n\nTest: Ran kindle app, read pdf file. Verified libKindleReaderJNI.so\nTest: is loaded in memory properly.\nChange-Id: Ib1ea3a37b3729f9bcc2739c5f3a584ea8f66d200\nMerged-In: Ib1ea3a37b3729f9bcc2739c5f3a584ea8f66d200\n(cherry picked from commit 235f35a26632c4c3c748f8079950bcd35f676b79)\n"
    },
    {
      "commit": "8c3140a6123137700a22ec1ab1d4a38318b5571c",
      "tree": "ad3c6d0131a9eed00e7f511f1eccef4329cdd032",
      "parents": [
        "06a5617f247b4396cb78993ebc616e6f9bac2bec",
        "420671135237cdf40c98d2336fb8712b7f0a2861"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 24 20:33:08 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 24 20:33:08 2019 +0000"
      },
      "message": "Merge \"threads.h: Add C11 thread support.\""
    },
    {
      "commit": "420671135237cdf40c98d2336fb8712b7f0a2861",
      "tree": "c4d85a256eb46c8aa1a00a1675ac31f60498e313",
      "parents": [
        "30bcaae2b6bcdeadd42066fe5b6f5a49bd5b9b07"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 18 14:27:24 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 24 09:12:29 2019 -0700"
      },
      "message": "threads.h: Add C11 thread support.\n\nFreeBSD, glibc, and musl have all implemented C11 threads at this\npoint. POSIX is looking at how to align with it. Probably time to jump\non the bandwagon ourselves...\n\nImplemented in the same style as \u003ctermios.h\u003e so we can provide this\nfunctionality even on older API levels. This does mean that this is\nstrictly more expensive than calling pthread functions directly.\n\nAlthough this isn\u0027t in POSIX yet, assume that it\u0027s going to be basically\nthe same as C11 and add the header test anyway. We should revisit this\nwhen POSIX actually adds \u003cthreads.h\u003e.\n\nTest: new tests\nChange-Id: I8602d67ce71ca7f8ed1529daa0a8ea1feb083dd6\n"
    },
    {
      "commit": "30659fd243d3996e0bb70be92469c65117cd465d",
      "tree": "c8465a06413c0a276f69c7593feeb0a9a66d9cbf",
      "parents": [
        "75f7b06454f9a0f0ebc232605e8faec4ac0db4ee"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 15 19:01:08 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 19 11:27:02 2019 -0700"
      },
      "message": "Move all leak info functions to android_mallopt.\n\nBug: 130028357\n\nTest: malloc_hooks unit tests.\nTest: Enable backtrace for mediaserver, run dumpsys media.player -m\nTest: Enable backtrace for calendar, run am dumpheap -n \u003cPID\u003e \u003cFILE\u003e\nChange-Id: I6774e28ccd9b3f2310127a5b39ccd15fe696a787\nMerged-In: I6774e28ccd9b3f2310127a5b39ccd15fe696a787\n(cherry picked from commit 3aadc5e80a5e2cf6b6760ed90d528709223bb449)\n"
    },
    {
      "commit": "8189e77bbb47dbaa1a09d565c62c2fed03e358c3",
      "tree": "2c8fc5d8fd1ec1ab881d35519670104ad86283e3",
      "parents": [
        "b9a7c651f178323e27752406f89d741cfb143e61"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 09 16:37:23 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 16 11:22:06 2019 -0700"
      },
      "message": "Remove gMallocLeakZygoteChild.\n\nRemove this global variable and change the setting of it to non-zero\nto a call to android_mallopt.\n\nIn addition, change the initialize function to use pass a bool* instead of\nint*.\n\nBug: 130028357\n\nTest: Ran malloc_debug/malloc_hooks/perfetto tests.\nChange-Id: I20d382bdeaaf38aac6b9dcabea5b3dfab3c945f6\nMerged-In: I20d382bdeaaf38aac6b9dcabea5b3dfab3c945f6\n(cherry picked from commit 5225b342f0810c027df3d09fbbcef4d324b19b93)\n"
    },
    {
      "commit": "1fc5ccfe762f4cf2322a53215934492003dae49e",
      "tree": "b07af2f8b2466d0a7210b2aaacd97af5fe70efbd",
      "parents": [
        "ac74615c1c3638d33448f0f6995fb8bc9599f062"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 15 18:06:15 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 15 10:54:55 2019 -0700"
      },
      "message": "Add a platform API for setting an allocation limit.\n\nIntroduce an M_SET_ALLOCATION_LIMIT enumerator for android_mallopt(),\nwhich can be used to set an upper bound on the total size of all\nallocations made using the memory allocation APIs.\n\nThis is useful for programs such as audioextractor and mediaserver\nwhich need to set such a limit as a security mitigation. Currently\nthese programs are using setrlimit(RLIMIT_AS) which isn\u0027t exactly\nwhat these programs want to control. RLIMIT_AS is also problematic\nunder sanitizers which allocate large amounts of address space as\nshadow memory, and is especially problematic under shadow call stack,\nwhich requires 16MB of address space per thread.\n\nAdd new unit tests for bionic.\n\nAdd new unit tests for malloc debug that verify that when the limit\nis enabled, malloc debug still functions for nearly every allocation\nfunction.\n\nBug: 118642754\nTest: Ran bionic-unit-tests/bionic-unit-tests-static.\nTest: Ran malloc debug tests and perfetto integration tests.\nChange-Id: I735403c4d2c87f00fb2cdef81d00af0af446b2bb\n"
    },
    {
      "commit": "e3d90de50b9d7c08be4ef165db877268c76c083d",
      "tree": "88f3add28ea1e6adece564238e6778e4d9168810",
      "parents": [
        "58239d002023143d43bdd1eb78f427ce985ad10b"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Feb 20 14:28:56 2019 -0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Feb 22 13:33:15 2019 -0800"
      },
      "message": "Switch libm to libcrt.builtins\n\nAfter switching libm from libgcc to libcrt.builtins, some of the symbols\nare no longer getting included in libm, causing the compiler to complain\nabout missing symbols from the version script. Explicitly export them in\nlibc (since libm depends on libc).\n\nBug: 122993571\nTest: m checkbuild\nTest: bionic-unit-tests\nChange-Id: Ie91765874d20df605f557b1a8c4236619553c549\n"
    },
    {
      "commit": "165b1cf57bab5db9716ea79e546d329b46159a3f",
      "tree": "9b075d69a23f65dd1aef96f88f23191754dc8929",
      "parents": [
        "be9b7240c2a5db3b9a23f37b57dc7513f64ad114"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Feb 13 14:10:10 2019 -0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Feb 15 12:46:19 2019 -0800"
      },
      "message": "Switch libc to libcrt.builtins\n\nWith the switch to libcrt.builtins, some symbols no longer becomes\nexported. Add dummy references to them to force them to be exported.\nThis is to maintain backwards binary compatibility with ancient Android\nversions.\n\nx86 and x86_64 crashes with libcrt, keep using libgcc for now.\n\nTest: bionic-unit-tests\nBug: 29275768\nBug: 122993569\nChange-Id: Ieab5af354e3924af4a03d888b28c6e75090cb613\n"
    },
    {
      "commit": "16455b5100ea46b930c1fa84d6bc905b7977643d",
      "tree": "2cbeacaeecab2980c47fbf21ce860d44d86ea8c6",
      "parents": [
        "3b463cf7f4f7fa54567ff42f6772091b22add2b8"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 18 01:00:59 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 17:53:01 2019 -0800"
      },
      "message": "Implement dynamic TLS accesses and allocation\n\nInitialize a thread\u0027s DTV to an empty zeroed DTV. Allocate the DTV and\nany ELF module\u0027s TLS segment on-demand in __tls_get_addr. Use a generation\ncounter, incremented in the linker, to signal when threads should\nupdate/reallocate their DTV objects.\n\nA generation count of 0 always indicates the constant zero DTV.\n\nOnce a DTV is allocated, it isn\u0027t freed until the thread exits, because\na signal handler could interrupt the fast path of __tls_get_addr between\naccessing the DTV slot and reading a field of the DTV. Bionic keeps a\nlinked list of DTV objects so it can free them at thread-exit.\n\nDynamic TLS memory is allocated using a BionicAllocator instance in\nlibc_shared_globals. For async-signal safety, access to the\nlinker/libc-shared state is protected by first blocking signals, then by\nacquiring the reader-writer lock, TlsModules::rwlock. A write lock is\nneeded to allocate or free memory.\n\nIn pthread_exit, unconditionally block signals before freeing dynamic\nTLS memory or freeing the shadow call stack.\n\nndk_cruft.cpp: Avoid including pthread_internal.h inside an extern \"C\".\n(The header now includes a C++ template that doesn\u0027t compile inside\nextern \"C\".)\n\nBug: http://b/78026329\nBug: http://b/123094171\nTest: bionic unit tests\nChange-Id: I3c9b12921c9e68b33dcc1d1dd276bff364eff5d7\n"
    },
    {
      "commit": "ecc37e38771aaf994a97c51104017a7d1b73a568",
      "tree": "2b1a1d908e99eb5181cdaf77e06005a4459dcaa1",
      "parents": [
        "176d2fbcaefe4691b8fd7844f6cec8e7a1a22c76"
      ],
      "author": {
        "name": "Ryan Savitski",
        "email": "rsavitski@google.com",
        "time": "Fri Dec 14 15:57:21 2018 +0000"
      },
      "committer": {
        "name": "Ryan Savitski",
        "email": "rsavitski@google.com",
        "time": "Wed Jan 23 18:30:54 2019 +0000"
      },
      "message": "conditional zygote child heap profiling + android_internal_mallopt\n\nOn user builds, heapprofd should only be allowed to profile apps that\nare either debuggable, or profileable (according to the manifest). This\nchange exposes extra zygote-specific knowledge to bionic, and makes the\ndedicated signal handler check for the special case of being in a zygote child.\n\nWith this \u0026 the corresponding framework change, we should now be\nhandling the 4 combinations of:\n  {java, native} x {profile_at_runtime, profile_at_startup}.\n\nSee internal go/heapprofd-java-trigger for further context.\n\nTest: on-device unit tests (shared \u0026 static) on blueline-userdebug.\nTest: flashed blueline-userdebug, confirmed that java profiling activates from startup and at runtime.\nBug: 120409382\nChange-Id: Ic251afeca4324dc650ac1d4f46976b526eae692a\n(cherry picked from commit 998792e2b6e1b84222b5d124f13ecdcb446cb22f)\nMerged-In: Ic251afeca4324dc650ac1d4f46976b526eae692a\n"
    },
    {
      "commit": "606191fd613a374391a321b30094fa120defab98",
      "tree": "b5fe2ff27c290da1b5ceef3a4a7d32345a2405b6",
      "parents": [
        "b21fc16a22cec7056a5231568e1eac636c115b19"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 17 04:03:49 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 17 04:04:42 2019 +0900"
      },
      "message": "Revert \"Expose more symbols temporarily\"\n\nThis reverts commit 220f51e5669571aaae66a47a5f29866792359fd7.\n\nThe internal modules that were using extra symbols are all fixed.\n\nBug: 120266448\nTest: m ndk_translation_all in cf_x86_phone\nChange-Id: I561b16de1c320d2624e7cf8e6211e0c70edc823d\n"
    },
    {
      "commit": "98564b8c743a5fdea7b8bb7c016921f208b9e1bb",
      "tree": "a92f91ad3351af94be0387d3644e81f933d695ef",
      "parents": [
        "688028d7a5b9c6ac5f38b216504d0880bbf6d0e9",
        "220f51e5669571aaae66a47a5f29866792359fd7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 11 16:59:15 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 11 16:59:15 2019 +0000"
      },
      "message": "Merge changes from topic \"move_bionic_to_apex\"\n\n* changes:\n  Expose more symbols temporarily\n  Add stubs variants for bionic libs\n"
    },
    {
      "commit": "45024fefe7507574faa0653b92c04536b36eb6ab",
      "tree": "40f657c63af98330eee9d1c2236bc7f522ad8b65",
      "parents": [
        "e7964158cedf37b50e42ab1988e67eb2154c74f2"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Sun Dec 30 21:10:26 2018 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jan 07 20:30:35 2019 -0800"
      },
      "message": "Add ARM EABI function __aeabi_read_tp\n\nBy default, Clang uses this arm32 function to read the thread pointer,\neither for ELF TLS or via __builtin_thread_pointer(). It\u0027s probably better\nto inline the cp15 access using -mtp\u003dcp15, but that\u0027s not the default yet.\n\nSee https://reviews.llvm.org/D34878?id\u003d114573.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: I93b8926075f0b2cea8df9ef518d54f2820a8ff5b\n"
    },
    {
      "commit": "220f51e5669571aaae66a47a5f29866792359fd7",
      "tree": "02b7b20c23f7fe8b7e54511617791be30c5703a5",
      "parents": [
        "c45fe9f7bd49b110f63b5928d00cf33a7b515d04"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Dec 28 23:27:02 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 04 22:29:36 2019 +0900"
      },
      "message": "Expose more symbols temporarily\n\nFollowing additional symbols are temporarily exposed from the runtime APEX\nto satisfy the dependencies from other non-AOSP modules. This will be\nreverted when the modules are built with the boostrap bionic libraries.\n\nBug: 120266448\nTest: m\nChange-Id: I39ac40a40545723ea2aeb185b9cd293d511f802f\n"
    },
    {
      "commit": "c45fe9f7bd49b110f63b5928d00cf33a7b515d04",
      "tree": "71c0df52796a2e3b24e1983897f019101e6bcf3e",
      "parents": [
        "c975355066daf0b3012d236aa4e726b0d3d7e06a"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Dec 13 18:26:48 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 04 22:29:36 2019 +0900"
      },
      "message": "Add stubs variants for bionic libs\n\nBionic libs are part of the runtime APEX (com.android.runtime). In order\nto be able to update the runtime APEX independetly from the platform, we\nhave to prevent things outside of the APEX from using bionic symbols\nthat are not guaranteed to be stable. Otherwise, platform could break\nwhen a symbol is removed from the libs via the APEX update.\n\nTo achive this goal, this change adds stubs variant to the bionic libs.\nWith this, things outside of the runtime APEX (i.e. other APEXes and the\nplatform) are built with the stubs variants that provide only the\nsymbols that are guaranteed to be stable.\n\nThe set of symbols are basically the same as the symbols available to\nNDK clients. However, there are a few additional symbols that are not\navailable for NDK but should be made available for platform components.\nThey are marked with \"# apex\" tag. Symbols with that tag are not exposed\nto apps (via NDK stubs) or vendors (via LLNDK stubs).\n\nNote that the stubs is a build-time only artifact. It is used just to\nbreak the build when private symbols are used outside of the runtime\nAPEX. At runtime, the real library in the APEX is used.\n\nBug: 120266448\nTest: m\nTest: m bionic-unit-tests\nChange-Id: I7b8d75830c81d7d7d54e2fca21a85b3417531b47\n"
    },
    {
      "commit": "d19b3c527427770164437d258744828acadb6e42",
      "tree": "d7628a87508447e39dd5a090481b357ad9ca5876",
      "parents": [
        "9ea997a2ac4eeb26230e65d2b680ebff6fe0b8a4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 16:04:08 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 17 12:26:42 2018 -0800"
      },
      "message": "Generate the per-arch .map files at build time.\n\nWe shouldn\u0027t be checking in these generated files...\n\nBug: N/A\nTest: ran tests\nChange-Id: Ib67c1ba839eacd7acebd713e1dcd4dd2c25d67f0\n"
    },
    {
      "commit": "2d0b28bc0da1ade2de2b72093dbdb740028fce7c",
      "tree": "75a1b66144e65f7141e3cf9ddaaae0049b07ca11",
      "parents": [
        "7562f1ab87e4b51042d185345248f1a54885489a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 11:23:00 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 11:23:00 2018 -0700"
      },
      "message": "Add getloadavg(3).\n\nLets us build ninja with bionic.\n\nBug: N/A\nTest: ran tests\nChange-Id: I97eef1247d794b58a2b9aee4851551632e5a4e48\n"
    },
    {
      "commit": "b177085ce7219562eecf77f2e8de49f8f2605005",
      "tree": "573947a27714273f7d78e9c6f85c9fd30e63dba9",
      "parents": [
        "e4e3de819d05481422f8bb9925486118924bf4a1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 18 12:52:42 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 14:24:18 2018 -0700"
      },
      "message": "Add reallocarray(3).\n\nOriginally a BSD extension, now in glibc too. We\u0027ve used it internally\nfor a while.\n\n(cherry-pick of e4b13f7e3ca68edfcc5faedc5e7d4e13c4e8edb9.)\n\nBug: http://b/112163459\nTest: ran tests\nChange-Id: I813c3a62b13ddb91ba41e32a5a853d09207ea6bc\nMerged-In: I813c3a62b13ddb91ba41e32a5a853d09207ea6bc\n"
    },
    {
      "commit": "ce934e3d9be9700946ba51a39ba966faf3867a93",
      "tree": "0db870d9253699cf6084818dabbe8f0a46bec6fc",
      "parents": [
        "74934aaf10d629de477095f0b92c467849f89638"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 13:26:08 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 14:19:46 2018 -0700"
      },
      "message": "Add android_get_device_api_level.\n\nBug: http://b/113615412\nTest: ran tests\nChange-Id: I0a7ae336c96c9ed6543b6935cbc242d14d4a4a67\n"
    },
    {
      "commit": "726b63f725ccfb270bf780c96bdf104a26e72dad",
      "tree": "0b6e0e688d10a1dfdd109f036f73198ec87414ac",
      "parents": [
        "f3aa3007e34eb14e114bd86492d8e6b2673e83c6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 27 16:00:58 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 27 16:48:17 2018 -0700"
      },
      "message": "Implement pthread_sigqueue.\n\nBug: http://b/112770187\nTest: bionic-unit-tests\nChange-Id: I03382cd5df2490b2e87265dba9007e2cb1b14cd2\n"
    },
    {
      "commit": "b6b3a1d4f9ae5a86176d23774ce0112eafef03f3",
      "tree": "e64e3bfe47d01b6a1241e79272e967288055ace4",
      "parents": [
        "27cc4bc4147da374e03d109d992895297be66722"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 23 14:04:11 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 23 23:10:52 2018 -0700"
      },
      "message": "fdsan: expose functions to get and interpret tags.\n\nMake it easier to write tests in users of fdsan by exposing functions\nto allow users to get and interpret the tags.\n\nTest: bionic_unit_tests\nChange-Id: Iafa9bcaeb5e4db230f3dfec6f483274f34602694\n"
    },
    {
      "commit": "e16082f717276fbbefb88418c82cd84dfba339c2",
      "tree": "c2be53510b5b50d4667da1e4e012a4f28cfe7f59",
      "parents": [
        "e6dab7b55fbcbb72b4b5b7edd3f46ca03da7bfe5"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 06 18:48:52 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 06 18:48:52 2018 -0700"
      },
      "message": "fdsan: expose the address of the table to the platform.\n\nLet the debuggerd handler get the address of the fdsan table so that\ncrash_dump can parse it and print it out in tombstones.\n\nTest: debuggerd `pidof adbd`\nChange-Id: I2297200cae52d0ff24479dba55d1ab4938583501\n"
    },
    {
      "commit": "6fdfd92e56132fa4f91f82c1f6d3b6abb44858c6",
      "tree": "d91763e382ec8242dcf293f1ac3f9eb441743666",
      "parents": [
        "c1c8a188b26be9a8b9c48e6b21af4035226f9d1f"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jul 31 00:17:02 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jul 31 00:17:02 2018 -0700"
      },
      "message": "Use LIBC_Q for LIBC_PRIVATE / LIBC_PLATFORM\n\nBug: none\nTest: run bionic unit tests\nChange-Id: I59794597db9cbd23c917498e5e82296a379c8fb5\n"
    },
    {
      "commit": "f6e5b582604715729b09db3e36a7aeb8c24b36a4",
      "tree": "1d68c449355f88a0652d3c1e2d6679b54fce1b20",
      "parents": [
        "ad596bf4fc406c0940d0f76f6b7c4ff22ecee7ac"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 01 15:30:54 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jul 19 14:28:54 2018 -0700"
      },
      "message": "Introduce api to track fd ownership in libc.\n\nAdd two functions to allow objects that own a file descriptor to\nenforce that only they can close their file descriptor.\n\nUse them in FILE* and DIR*.\n\nBug: http://b/110100358\nTest: bionic_unit_tests\nTest: aosp/master boots without errors\nTest: treehugger\nChange-Id: Iecd6e8b26c62217271e0822dc3d2d7888b091a45\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": "3a5fd0014c0a415b88467bb692a9606c5221d5f9",
      "tree": "913a06d1a4fd36b3a03e9127d61fd66ab395a0fa",
      "parents": [
        "a9713035baecf21f607ef81c8652eb344086966c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 17 13:02:52 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 17 13:02:52 2018 -0700"
      },
      "message": "Expose __res_randomid.\n\nI don\u0027t think this will help the original submitter, because \u003cresolv.h\u003e\nis mostly useless on Android. One day we might have a deprecation and\nremoval policy for the NDK, but until then we should probably maintain\nthis header.\n\nBug: https://github.com/android-ndk/ndk/issues/739\nTest: ran tests\nChange-Id: I2db859abfdebc3824c997462fa6133d5b355a8dd\n"
    },
    {
      "commit": "2e1a40a2033088e7f2e78424a8b163d3fcf84b1b",
      "tree": "51ec5d1703f6225d6dc58ad5b01f9c728e4f2883",
      "parents": [
        "2583b0adb201233313bbe02f665f5c623f2c5a30"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jun 13 10:46:34 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 15 12:29:13 2018 -0700"
      },
      "message": "Change heap dump format slightly.\n\nBump the version from v1.1 to v1.2 and add a build fingerprint line.\n\nUpdate the heap dump documentation to match the new format and reflect\nwhat made it in P and what made it in Q.\n\nUpdate the unit tests for this change.\n\nAdd -O0 to unit test code to make it easier to debug.\n\nAdd an external function that can be used by the framework code\nso that there is only one way to dump the heap.\n\nBug: 110095681\n\nTest: Ran unit tests.\nTest: Did a dump of a real process and verified fingerprint.\nTest: Did a dump of a process without malloc debug enabled.\nChange-Id: I769a476cbeaf4c85c5d75bd6d6385f0e3add948c\nMerged-In: I769a476cbeaf4c85c5d75bd6d6385f0e3add948c\n(cherry picked from commit c84a2a2601a4112ca6e43a33defb989c1da8c2f4)\n"
    },
    {
      "commit": "12306f0aa01517d5e5ee856624b248ed3b8455c9",
      "tree": "f98e122fc997b533f2de047fc1da790319c7f9ad",
      "parents": [
        "8aa6d67f2d48aa01f099a85adc432097a13172f1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 13:12:21 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 13:12:21 2018 -0700"
      },
      "message": "Fix the map for pthread_cond_timedwait_monotonic_np.\n\nBug: https://github.com/android-ndk/ndk/issues/708\nTest: builds\nChange-Id: Icaa1f8cb796a0a117cbe2e10391c965c857d6d37\n"
    },
    {
      "commit": "e219cefc173bf93b8ff710431784e5de30ffab8f",
      "tree": "98d61abdaa00c0e32000ef921958eb4822822bac",
      "parents": [
        "6880f936173081297be0dc12f687d341b86a4cfa"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Mar 29 15:12:05 2018 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Apr 20 10:46:16 2018 -0700"
      },
      "message": "Fix posix_memalign introduced tag.\n\nApparently this didn\u0027t make it to all android-16 devices. As far as\nwe know it did make it for all android-17 devices.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/647\nChange-Id: I2f07cfb1254e2a203c1c10b91b0be46bf37ea853\n"
    },
    {
      "commit": "b83bf14a352269135d3e2fe783414c3b6e1d0ac5",
      "tree": "3e3b5604f28445915e5011af96bacf8e6021f1aa",
      "parents": [
        "1423bb849879f3f126cb1e6dcb279da5360ef5fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 11:01:25 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 13:59:02 2018 -0700"
      },
      "message": "Fortify ppoll64.\n\nI\u0027ve deliberately not bothered with the GCC implementation because we\u0027ll\nhave removed GCC from the NDK before anyone gets to use this.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: Icfc2a3b214739ab53aa41bacacc11b5c67498fb4\n"
    },
    {
      "commit": "c6b5bcd182edef34f058827882b1908f890cc4cd",
      "tree": "63b9b787f9434c2424f0c2957eb8ce668cb9bd69",
      "parents": [
        "0bc4772ee5e9cbf772227732135fd13e125571a9"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Mar 05 14:14:44 2018 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Mar 20 18:41:22 2018 -0700"
      },
      "message": "Add _monotonic_np versions of timed wait functions\n\nAs a follow up to Ibba98f5d88be1c306d14e9b9366302ecbef6d534, where we\nadded a work around to convert the CLOCK_REALTIME timeouts to\nCLOCK_MONOTONIC for pthread and semaphore timed wait functions, we\u0027re\nintroducing a set of _monotonic_np versions of each of these functions\nthat wait on CLOCK_MONOTONIC directly.\n\nThe primary motivation here is that while the above work around helps\nfor 3rd party code, it creates a dilemma when implementing new code\nthat would use these functions: either one implements code with these\nfunctions knowing there is a race condition possible or one avoids\nthese functions and reinvent their own waiting/signaling mechanisms.\nNeither are satisfactory, so we create a third option to use these\nAndroid specific _monotonic_np functions that completely remove the\nrace condition while keeping the rest of the interface.\n\nSpecifically this adds the below functions:\npthread_mutex_timedlock_monotonic_np()\npthread_cond_timedwait_monotonic_np()\npthread_rwlock_timedrdlock_monotonic_np()\npthread_rwlock_timedwrlock_monotonic_np()\nsem_timedwait_monotonic_np()\n\nNote that pthread_cond_timedwait_monotonic_np() previously existed and\nwas removed since it\u0027s possible to initialize a condition variable to\nuse CLOCK_MONOTONIC.  It is added back for a mix of reasons,\n1) Symmetry with the rest of the functions we\u0027re adding\n2) libc++ cannot easily take advantage of the new initializer, but\n   will be able to use this function in order to wait on\n   std::steady_clock\n3) Frankly, it\u0027s a better API to specify the clock in the waiter function\n   than to specify the clock when the condition variable is\n   initialized.\n\nBug: 73951740\nTest: new unit tests\nChange-Id: I23aa5c204e36a194237d41e064c5c8ccaa4204e3\n"
    },
    {
      "commit": "d5172fced0f88114e21086db5defaee64371de32",
      "tree": "30bd20a165f5ba825d82e488a6f6f561c0f7de8b",
      "parents": [
        "665ce210fab00911321829e6e190405ef18e5032",
        "457852666cb870a844df016962fac487cb5e7559"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 02:36:38 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 15 02:36:38 2018 +0000"
      },
      "message": "Merge \"Add __fseterr.\""
    },
    {
      "commit": "665ce210fab00911321829e6e190405ef18e5032",
      "tree": "69b8621dfae13859842cc9a2f64f409fe16040cd",
      "parents": [
        "38a78728c343f6398763ae8d7e3e8202b927a056",
        "3376c23daceddd603478347c00163f39e7c9e1ee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 15 01:26:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 15 01:26:17 2018 +0000"
      },
      "message": "Merge \"Add remaining _l function stubs.\""
    },
    {
      "commit": "457852666cb870a844df016962fac487cb5e7559",
      "tree": "b6d5ea190fca3841b956dc1cbe714fdef8982655",
      "parents": [
        "38a78728c343f6398763ae8d7e3e8202b927a056"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 14 15:21:45 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 14 15:25:21 2018 -0800"
      },
      "message": "Add __fseterr.\n\nTrivial, obvious counterpart to the standard ferror(3) and clearerr(3),\nand lets us build bison out of the box.\n\nBug: http://b/64273806\nTest: ran tests\nChange-Id: I20affabddb71210051165c41e86adfe5ae04f77f\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": "db478a627482c73c52df9e3929fe7a39f03e4eeb",
      "tree": "15fcd3caeea9269e5e3eefb881ec25bade966bcb",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "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 13:37:30 2018 -0800"
      },
      "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(cherry picked from commit d6a1dc23796696f73f483943534d4c5c4b312d39)\n"
    },
    {
      "commit": "cae21a9b53a10f0cba79bf6783c4a5af16228fed",
      "tree": "c60c6622d2b80f9ad4ae5a990b7fb3439f16444b",
      "parents": [
        "be6fbae74fc3048647caadd58a9eaad81245e934"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Feb 05 18:14:55 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 07 06:57:14 2018 -0800"
      },
      "message": "Add aligned_alloc to libc.\n\nBug: 72969374\n\nTest: Bionic unit tests pass.\nTest: Malloc debug unit tests pass.\nChange-Id: I235985bbc638855d94249c97c98f14ab2924bda0\n(cherry picked from commit d69ee59594088c0d92ba9273188ef53ea5e6cd6a)\n"
    },
    {
      "commit": "3e235911c9cf5062adbb73efb53fe5ed712d7c53",
      "tree": "cdd84807bba4a7d0b0fd947555b2edaa2618df95",
      "parents": [
        "b44bd827abf2b870ebf4a0f6b126098a46bf42ec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 01 14:21:51 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 01 14:45:15 2018 -0800"
      },
      "message": "Add `struct sigaction64` and `sigaction64`.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: I47b0560a30aa33a9b1f1978dfb7f84d2e3d389b8\n"
    },
    {
      "commit": "5905d6f8797056ca4178d42bf1220b6692e557a5",
      "tree": "222848ae0ced32fcf2028a2c6502b4a763c83830",
      "parents": [
        "d435d256da57fdf4278b3198720d881f3edcf452"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 15:09:51 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 18:47:16 2018 -0800"
      },
      "message": "Add `sigset64_t` and accompanying functions.\n\nThis doesn\u0027t address `struct sigaction` and `sigaction`. That will\ncome later.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: I4134346757ce3a4dac6feae413361cec16223386\n"
    },
    {
      "commit": "6b9c85b36d2e69b45d780e6a0b27d64909311a7e",
      "tree": "eff21cc7000bc125f5c91f0d90819fd778be371f",
      "parents": [
        "73871ad09be8a8259171d606c4e3e3cf08d4733c"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 23 12:56:18 2018 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Jan 24 16:11:07 2018 -0800"
      },
      "message": "Support priority inheritance mutex in 64bit programs.\n\nBug: http://b/29177606\nTest: run bionic-unit-tests on walleye.\nTest: run bionic-unit-tests-glibc on host.\nChange-Id: Iac349284aa73515f384e7509445f87434757f59e\n"
    },
    {
      "commit": "37ad9597839c70a7ec79578e5072df9c189fc830",
      "tree": "f1f70a143c99b072b040f5592f1b42da464b35f8",
      "parents": [
        "e379a202504911d228ae07d9ba32c5a02274fe1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 30 17:47:12 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 31 13:23:41 2017 -0700"
      },
      "message": "More missing _unlocked \u003cstdio.h\u003e functions.\n\nAlso simplify trivial one-liners like perror/puts/fputs, and clean up\nfread/fwrite slightly.\n\nFix perror to match POSIX.\n\nAdd basic perror and *_unlocked tests.\n\nBug: N/A\nTest: ran tests\nChange-Id: I63f83c8e0c15c3c4096509d17421ac331b6fc23d\n"
    },
    {
      "commit": "c8a2612ffc13a31aaedec26a45cdceb6fa8199cb",
      "tree": "8c12929cde798f3a49dfe0d9a59085d8b205f0b6",
      "parents": [
        "048e18045d6e7bcaf0870d8bb7cb671214c9ad50",
        "8aecba7aa6b7f7b92f69c0d3febef59fdb135f87"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 16:12:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 26 16:12:04 2017 +0000"
      },
      "message": "Merge \"Implement pthread_attr_getinheritsched/pthread_attr_setinheritsched.\""
    },
    {
      "commit": "8aecba7aa6b7f7b92f69c0d3febef59fdb135f87",
      "tree": "fd3d9743a0e282dcbb2a8b2b51906f7da3a84468",
      "parents": [
        "435e6384de8f9e35b8878b1ccda5bb5686c15207"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 17 15:34:41 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 25 14:28:42 2017 -0700"
      },
      "message": "Implement pthread_attr_getinheritsched/pthread_attr_setinheritsched.\n\nHistorically, Android defaulted to EXPLICIT but with a special case\nbecause SCHED_NORMAL/priority 0 was awkward. Because the code couldn\u0027t\nactually tell whether SCHED_NORMAL/priority 0 was a genuine attempt to\nexplicitly set those attributes (because the parent thread is SCHED_FIFO,\nsay) or just because the pthread_attr_t was left at its defaults.\n\nNow we support INHERIT, we could call sched_getscheduler to see whether\nwe actually need to call sched_setscheduler, but since the major cost\nis the fixed syscall overhead, we may as well just conservatively\ncall sched_setscheduler and let the kernel decide whether it\u0027s a\nno-op. (Especially because we\u0027d then have to add both sched_getscheduler\nand sched_setscheduler to any seccomp filter.)\n\nPlatform code (or app code that only needs to support \u003e\u003d P) can actually\nadd a call to pthread_attr_setinheritsched to say that they just want\nto inherit (if they know that none of their threads actually mess with\nscheduler attributes at all), which will save them a sched_setscheduler\ncall except in the doubly-special case of SCHED_RESET_ON_FORK (which we\ndo handle).\n\nAn alternative would be \"make pthread_attr_setschedparams and\npthread_attr_setschedprio set EXPLICIT and change the platform default\nto INHERIT\", but even though I can only think of weird pathological\nexamples where anyone would notice that change, that behavior -- of\npthread_attr_setschedparams/pthread_attr_setschedprio overriding an\nearlier call to pthread_attr_setinheritsched -- isn\u0027t allowed by POSIX\n(whereas defaulting to EXPLICIT is).\n\nIf we have a lot of trouble with this change in the app compatibility\ntesting phase, though, we\u0027ll want to reconsider this decision!\n\n -*-\n\nThis change also removes a comment about setting the scheduler attributes\nin main_thread because we\u0027d have to actually keep them up to date,\nand it\u0027s not clear that doing so would be worth the trouble.\n\nAlso make async_safe_format_log preserve errno so we don\u0027t have to be\nso careful around it.\n\nBug: http://b/67471710\nTest: ran tests\nChange-Id: Idd026c4ce78a536656adcb57aa2e7b2c616eeddf\n"
    },
    {
      "commit": "ac29d9f3b9636818773d60df18eb17e79783f774",
      "tree": "b21bb54cdb9432056d9f83ffc8c80aea317ccdcd",
      "parents": [
        "1b6de8788918f806efd812b743dcc0bbdd232392",
        "fa386e0d1eb52478f11b7232d280919245c1616c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 19 21:49:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 21:49:29 2017 +0000"
      },
      "message": "Merge \"Add POSIX swab.\""
    },
    {
      "commit": "4d215aad85cd9cba3e815eafb8c56eb5218eafb1",
      "tree": "9f987f65dfaa1dd321541189ea63c23b70c70cbc",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 15:54:56 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 16:26:17 2017 -0700"
      },
      "message": "Add POSIX fexecve.\n\nI\u0027m skeptical about the usefulness of this, but it\u0027s in POSIX, it\u0027s\nin glibc (but not iOS), and it is used in some internal source (test\nrunners and container code).\n\nBug: N/A\nTest: ran tests\nChange-Id: I92c5398f2a679b21a33fba92bc8e67e3ae2eb76f\n"
    },
    {
      "commit": "fa386e0d1eb52478f11b7232d280919245c1616c",
      "tree": "fcfb7d65c39ec91e1b1ec5bedeefe806861d21c4",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:34:32 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:34:32 2017 -0700"
      },
      "message": "Add POSIX swab.\n\nSurprisingly to me, there are actual uses of `swab` in the codebases\nI have available to search, including one with a #ifndef __ANDROID__\naround it.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ic91b78ae22bb65c346cb46dd38916f48d979abe0\n"
    },
    {
      "commit": "dff08ced5685a0d1adb0ef875a15caca99556e1e",
      "tree": "9b84626d5a3f8dec14c36ad7a42221b0e11a6f5a",
      "parents": [
        "bf886f621b7c5fb4f690fe182f42640410a32d5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 16 09:58:45 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 17 09:14:05 2017 -0700"
      },
      "message": "Add pthread_setschedprio.\n\nBug: http://b/26204555\nTest: ran tests\nChange-Id: Ic34062b9b6036a1ce2642a069514bab48a893338\n"
    },
    {
      "commit": "5033918092f27179b0c2bbe3babceaed509d4935",
      "tree": "77f5a0f1eb5fec80dc7bc6a297eed66af83713b9",
      "parents": [
        "a27bfd4131441a24fcfe6b5b3cf1cf9469be6719"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 13 17:52:01 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 15 10:37:51 2017 -0700"
      },
      "message": "Complete \u003cnetdb.h\u003e.\n\nAdd all the missing \u003cnetdb.h\u003e functions.\n\nAlso fix getservbyport to handle a null protocol correctly.\n\nAlso fix getservbyname/getservbyport to not interfere with getservent.\n\nAlso fix endservent to reset getservent iteration.\n\nAlso reduce unnecessary differences from upstream NetBSD sethostent.c.\n\nThe servent implementation is still horrific, and we should\nprobably support protoent too so that debugging tools can use\ngetprotobyname/getprotobynumber.\n\nBug: N/A\nTest: ran tests\nChange-Id: I639108c46df0a768af297cf3bbce857cb1bef9d9\n"
    },
    {
      "commit": "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": "a5c316fe0c1b9d254421e22d8f2c6586ef3c64ec",
      "tree": "e439ddbe00bb5c9665c60542011546f6ad2f528b",
      "parents": [
        "8af55bdf93f074d621a44365fea4960d431aa1b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 02 10:10:15 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 02 10:10:15 2017 -0700"
      },
      "message": "Don\u0027t repeat ourselves unnecessarily in the maps.\n\nWe can mark a whole version \"introduced\u003d\" rather than doing every line\nseparately.\n\nBug: N/A\nTest: builds\nChange-Id: I3219edc755a42ce5ff6258efb744fb5e05967a3a\n"
    },
    {
      "commit": "b3639adf9ce41f520f7a64a5016e6ffc41ccd009",
      "tree": "c44e7963fa15992bcc5603c9608ec1359c672c87",
      "parents": [
        "bd2754177fc26b255b64af0b50c32f984a274cf9",
        "8465e968a8a92c77d57360837a9e725972a745e6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 29 15:39:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 29 15:39:29 2017 +0000"
      },
      "message": "Merge changes I76dde1e3,I54fec461\n\n* changes:\n  Add \u003csys/random.h\u003e.\n  Run other maintenance scripts as part of the preupload hooks.\n"
    },
    {
      "commit": "8465e968a8a92c77d57360837a9e725972a745e6",
      "tree": "f8bd05e55680224a407ac55afaef58b668868b05",
      "parents": [
        "96510935697c2934427f0c14d0b153244e8cfb2b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 27 16:33:35 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 29 05:31:35 2017 +0000"
      },
      "message": "Add \u003csys/random.h\u003e.\n\niOS 10 has \u003csys/random.h\u003e with getentropy, glibc \u003e\u003d 2.25 has\n\u003csys/random.h\u003e with getentropy and getrandom. (glibc also pollutes\n\u003cunistd.h\u003e, but that seems like a bad idea.)\n\nAlso, all supported devices now have kernels with the getrandom system\ncall.\n\nWe\u0027ve had these available internally for a while, but it seems like the\ntime is ripe to expose them.\n\nBug: http://b/67014255\nTest: ran tests\nChange-Id: I76dde1e3a2d0bc82777eea437ac193f96964f138\n"
    },
    {
      "commit": "f1c568d1eac6d2baba62af35e5b9856fb7e98319",
      "tree": "a7840d0a41465e4bc73e766bfc212bee12c6eaa0",
      "parents": [
        "2e01f39c31e042482fbe10df79d8b2837ae79239"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 26 17:09:07 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 26 18:46:09 2017 -0700"
      },
      "message": "Add \u003cglob.h\u003e.\n\nThis is the FreeBSD implementation, plus some tests. The FreeBSD\nimplementation includes the GNU extensions and seems to be what\niOS is using too, which should provide bug compatibility for app\ndevelopers.\n\nThe code unfortunately uses a lot of stack, and uses FreeBSD locale\nimplementation that we don\u0027t have, but it does seem better maintained\nthan the other BSDs.\n\nBug: http://b/29251134\nTest: ran tests\nChange-Id: Ie477b45e42a6df1319b25712098519d2b33adf67\n"
    },
    {
      "commit": "5702c6ff454a8a9695fae64597d7692b06fc27b5",
      "tree": "198c64982038daff5603e6c6813089751f62328f",
      "parents": [
        "7f9f1b6f918bec90354f70f2eb3dcf87d85df918"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 31 17:27:05 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 31 17:38:51 2017 -0700"
      },
      "message": "Finish \u003csearch.h\u003e.\n\nI\u0027m unable to find a bug, but we\u0027ve had requests for this internally\nonce or twice (though I pointed those folks at the STL), and there\u0027s\ncode we build for the host or in our bootloaders that would use this,\nand there\u0027s reasonable-looking FreeBSD implementation ready and waiting.\n\nBug: N/A\nTest: ran tests\nChange-Id: I6ddee4b71bea4c22ed015debd31d3eaac4fcdd35\n"
    },
    {
      "commit": "f11aa95ee7f3c7c3a8538deefd084cdab351c01a",
      "tree": "e19fa29f07c507e04a8484ffb60a60401b2d1111",
      "parents": [
        "d615a06068f9d0dd01df840122221d183ba1098e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 15:18:33 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 15:18:33 2017 -0700"
      },
      "message": "Pretend the \u003cfts.h\u003e functions didn\u0027t appear until 21.\n\nBecause there was an accidental ABI breakage in 21, and we can\u0027t fix\nthe past. It seems more useful to refuse to build code that won\u0027t work\non any current or future device.\n\nBug: https://issuetracker.google.com/37051826\nTest: builds\nChange-Id: I4b5c30f899e2c7307642e2fb20e43a3ca14ae7fe\n"
    },
    {
      "commit": "a648733cb7398810df9a35528cc6e874edc57b06",
      "tree": "90ff33e6b479b5ccb20b1a8bb0007dacde75bc8d",
      "parents": [
        "571c88823636e3c6f894e806ea7c4dc8131a1ae4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 15 23:16:48 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 08:47:41 2017 -0700"
      },
      "message": "Implement \u003ciconv.h\u003e.\n\nBug: http://b/32978596\nTest: ran tests\nChange-Id: I56b6ae3d9c5a3a56d2b4afba33fb8f9e964bf7b9\n"
    },
    {
      "commit": "44d8f7be1f82ef8db5d2cae9c820b532467466d5",
      "tree": "3f4b7d6786325a77267ee35d8813039c54fef345",
      "parents": [
        "fa3d3291e1107aeb84c0a9ff1687b0d24fd7176a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 08:42:48 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 08:42:48 2017 -0700"
      },
      "message": "Fix ndk build.\n\nThe NDK gen_stub_libs.py doesn\u0027t support introduced\u003dP yet:\n\n  Traceback (most recent call last):\n    File \"build/soong/cc/gen_stub_libs.py\", line 439, in \u003cmodule\u003e\n      main()\n    File \"build/soong/cc/gen_stub_libs.py\", line 429, in main\n      versions \u003d SymbolFileParser(symbol_file, api_map).parse()\n    File \"build/soong/cc/gen_stub_libs.py\", line 234, in parse\n      versions.append(self.parse_version())\n    File \"build/soong/cc/gen_stub_libs.py\", line 269, in parse_version\n      symbols.append(self.parse_symbol())\n    File \"build/soong/cc/gen_stub_libs.py\", line 286, in parse_symbol\n      tags \u003d decode_api_level_tags(tags, self.api_map)\n    File \"build/soong/cc/gen_stub_libs.py\", line 76, in decode_api_level_tags\n      raise ParseError(\u0027Unknown version name in tag: {}\u0027.format(tag))\n  __main__.ParseError: Unknown version name in tag: introduced\u003dP\n\nBug: N/A\nTest: builds\nChange-Id: Ifd91e525b30f3aa9ad8c889c9564cd769a3a603a\n"
    },
    {
      "commit": "896362eb0e82bcde71c137c925eae9e0882acb91",
      "tree": "3c4b2fb6e1626a2b377c93bd925f4f0fb4e02a9c",
      "parents": [
        "96c577c48284c376ec065f2b3a2d2987a7eeff5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 24 16:31:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 24 16:31:49 2017 -0700"
      },
      "message": "Add syncfs(2).\n\nGMM calls this system call directly at the moment. That\u0027s silly.\n\nBug: http://b/36405699\nTest: ran tests\nChange-Id: I1e14c0e5ce0bc2aa888d884845ac30dc20f13cd5\n"
    },
    {
      "commit": "5ba2c21159f0bb4c0f7f1fbdbd4671f381b75816",
      "tree": "6e4626b224d4105a66be2dfc265b982badf7ca3f",
      "parents": [
        "1bac61f09f46ac3c0a73387613dfd20023e39772"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 01 15:16:36 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 01 15:27:27 2017 -0700"
      },
      "message": "Finish \u003cstdio_ext.h\u003e.\n\nImplement __freading and __fwriting, and clarify the documentation that was\nthe cause of these not being implemented for years.\n\nBug: http://b/17157253\nTest: ran tests\nChange-Id: I89542c8131b13889e2585417a024050ecf2abcb7\n"
    },
    {
      "commit": "4dd33f92d82b9fb77152bfc68f312d2fa5710a28",
      "tree": "1d7415dc639db60e1160966a752cab0cbb1f5e86",
      "parents": [
        "f94ddd7a0eab6d4959227875e10aa9a949a289bc",
        "5f7135eddd40d290d2bc4d0e819a6276bc4b8a24"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 31 15:57:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 31 15:57:00 2017 +0000"
      },
      "message": "Merge \"Allow calling v?dprintf for any target API level.\""
    },
    {
      "commit": "06bd5862b18e0b750a709f7f8a1d277f1f6d0c99",
      "tree": "f6d0db8de8f67383aa97056e6c73fb2c7be1b402",
      "parents": [
        "bafa1985eccaac231ade6f15d340759f44928524"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 28 16:27:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 28 16:34:38 2017 -0700"
      },
      "message": "POSIX getlogin_r/LOGIN_NAME_MAX/TTY_NAME_MAX.\n\nBug: N/A\nTest: ran tests\nChange-Id: I97c8ecc82fb09c3fa4bb5e6f000d46f04f3d1702\n"
    },
    {
      "commit": "5f7135eddd40d290d2bc4d0e819a6276bc4b8a24",
      "tree": "a082dbb4c6fe86b4f10f67f4f01a1b407fbe50bf",
      "parents": [
        "93068895091ee516c55a7873a4056145a7da3644"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 26 14:09:45 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jul 27 16:32:01 2017 -0700"
      },
      "message": "Allow calling v?dprintf for any target API level.\n\nOld versions of Android called these fdprintf and vfdprintf out of\nfears that the glibc names would collide with user debug printfs.\n\nAllow users to just use dprintf and vfdprintf on any version by\nrenaming those calls to their legacy equivalents if needed.\n\nTest: built trivial NDK module targeting android-14 and using dprintf\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/72\nChange-Id: I90de149278f931380418536abaef47c5cee5c195\n"
    },
    {
      "commit": "488eb8b7d2fb7a51c90664ae0baea75b7280cddd",
      "tree": "4620330e37f8d498aa6aae20613815e40abe59b9",
      "parents": [
        "8f6f70db457e6f6d09a5f3b8be91adcea16b1067"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 31 11:00:18 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 31 11:00:18 2017 -0700"
      },
      "message": "Move mallopt to correct section.\n\nBug: 62202823\n\nTest: Built and built unit tests.\nChange-Id: Icefc152eb756fd60ce8f51d694f22923a41a9cd1\n"
    },
    {
      "commit": "ca84fe3be70666d015a7c069db2f16e57259ce85",
      "tree": "a10f9cc530fdf37b2242c40da9eb8caec2b18eef",
      "parents": [
        "6be65c135b1720353f0c2e472a5e01261a737cd1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 30 17:35:28 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 30 17:38:52 2017 -0700"
      },
      "message": "Add mallopt to canonical list of exports.\n\nBug: 62202823\n\nTest: Ran script and verified that none of the other map files are modified.\nChange-Id: Ib890ce77c60b877434fbb65a5add8f6c4603d3d0\n"
    },
    {
      "commit": "dd878fe129bb128fb28577c6ccc3fbf04addf898",
      "tree": "e789ad10dc04cdcee2c35f1891473812cce22f1b",
      "parents": [
        "4767bc4a6cebc2ad4c61cccdf92290e17227a792"
      ],
      "author": {
        "name": "Ben Schwartz",
        "email": "bemasc@google.com",
        "time": "Mon May 22 10:19:25 2017 -0400"
      },
      "committer": {
        "name": "Ben Schwartz",
        "email": "bemasc@google.com",
        "time": "Mon May 22 10:19:25 2017 -0400"
      },
      "message": "Add a netcontext variant of gethostbyname\n\nBug: 34953048\nTest: Integration tests pass\nChange-Id: I670427d67fde09d8e76ea6a920c90a1969230c4f\n"
    },
    {
      "commit": "50178056f7930a33cb1d0a45c76b3dfbe17c5506",
      "tree": "d8aec1bf9bd6c76b781b4d5c7d7e1ad8439ef1d5",
      "parents": [
        "5deddda68e780aaa26e4777378fee10d543eb719"
      ],
      "author": {
        "name": "Ben Schwartz",
        "email": "bemasc@google.com",
        "time": "Mon Apr 24 17:57:11 2017 -0400"
      },
      "committer": {
        "name": "Ben Schwartz",
        "email": "bemasc@google.com",
        "time": "Thu May 18 14:32:21 2017 -0400"
      },
      "message": "Add a netcontext variant of gethostbyaddr\n\nBug: 34953048\nTest: Integration tests pass\nChange-Id: Id04830345be56cd7a077981c6e2acfb5568e7a88\n"
    },
    {
      "commit": "2e8e5e60b6ecbcfe2110242e41b9ec5340b11cf5",
      "tree": "8810a00e508e0dd698d23f513432fff2e513e87e",
      "parents": [
        "ee1c45f88f5fcd1b1d43c325e0de366cc3d0ce36"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 20 12:58:31 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 20 16:57:25 2017 -0700"
      },
      "message": "DO NOT MERGE: The future is now.\n\n__INTRODUCED_IN_FUTURE -\u003e __INTRODUCED_IN(26)\n\nBug: http://b/37437368\nTest: treehugger\nChange-Id: I601a23da83b65a0cd582cc840ed3856a9031b673\n(cherry picked from commit cb302f932a3532f1484e1e70894e9b1199384283)\n"
    },
    {
      "commit": "b63ed1d2b94ccce7a346ed382e3675ed76bce0d7",
      "tree": "88ca1b23211be8a22386a0be9ab0373a97d0dc58",
      "parents": [
        "f568ccd34afddc2b4223b309109d533349d73749"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 12 18:05:56 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 13 11:18:53 2017 -0700"
      },
      "message": "Restore __system_property_find_nth version\n\nMoving this to LIBC_DEPRECATED caused compatibility\nproblems for some apps.\n\nBug: http://b/36566667\nTest: launch app and check that it does not crash\nChange-Id: I470f916ef818ff62ff5391b3a0c86dd44c1e8cd0\n(cherry picked from commit 2167e74f168a192ca9c63abee1c03197326b83d7)\n"
    }
  ],
  "next": "b876babd04fb8f59a83cac1ab8183f11e9fa9070"
}
