)]}'
{
  "log": [
    {
      "commit": "8178c417f68dac9c2d1a6b44dbca1e6b85e5b081",
      "tree": "ac31cd7fcd74e5b7beb05807bae4f288a6dbdf90",
      "parents": [
        "0c39bd468d3aa19b3e27937b36b101cc4aa65dab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 05 13:34:36 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 06 11:15:17 2018 -0800"
      },
      "message": "ART isn\u0027t using the ART-specific linker features any more.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ide3c295035687019608a2c4716a4a21cb889d121\n"
    },
    {
      "commit": "aede30d316fae9399c52b26e70f7e71fdb965412",
      "tree": "04c581d4e7a48e9932bed134511c72ffb79063cd",
      "parents": [
        "a8a716e42a8e6b8f28abf2b2f8f93b1e8579423d"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Oct 23 15:03:43 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Oct 23 21:47:34 2018 +0800"
      },
      "message": "libc: Add default __STRING implementation\n\nThis commit defines a default `__STRING()` definition.  There should be\na default definition because the unit test cases of versioner will\ninclude `android/versioning.h` directly.  We cannot include\n`sys/cdefs.h` in `android/versioning.h` either because that will lead to\ncircular inclusion.\n\nBug: 113263746\nTest: ./bionic/tools/versioner/run_tests.py\nChange-Id: Ie99c0eef4414fd687347baf3a2d295468877464f\n"
    },
    {
      "commit": "f7f71e3c7b70c0369cf04cedbd988f55f88918fb",
      "tree": "8872ac6e3608cd8d6feb74621a8c6ed3e8da0632",
      "parents": [
        "7ff7d03286dcf8abc6b4bd0455c428256493c96d"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Fri Aug 31 15:36:48 2018 -0700"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Thu Oct 18 21:38:06 2018 +0100"
      },
      "message": "Add RT signal to load heapprofd library.\n\nTests: Ran malloc_debug_unit_tests\nTests: Flashed to walleye, sent signal, observed\n  \"Unable to open shared library: heapprofd.so\".\n\nChange-Id: Ia8ce216837e29e3edbda8789ca28023d53fa1fda\n"
    },
    {
      "commit": "eb6143037423a241ba8035304936149b300f7a5d",
      "tree": "add55935abdf6bc16c16c6edc111b376a3e3c933",
      "parents": [
        "ecf0c7515d4416ab4bf708b303ab7beab79a6f2b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 17 14:27:36 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 17 14:27:36 2018 -0700"
      },
      "message": "Don\u0027t #define __ANDROID_NDK__ for the platform build!\n\nCaused an ODR violation trying to build current ToT of toybox.\n\nBug: N/A\nTest: can successfully build code with `#ifdef __ANDROID_NDK__`\nChange-Id: Ia80b8889b267779ee01f6257744e1794db0ebc65\n"
    },
    {
      "commit": "dd6763a6c677687ad06727af037ed9a7b018c773",
      "tree": "51170c743639731a7e5a1a7540eb3f68870cb893",
      "parents": [
        "9df26193c8adc43a7ac1ba807e70d0b0772712c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 04 16:35:13 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 04 16:35:13 2018 -0700"
      },
      "message": "Another round of documentation.\n\nBug: N/A\nTest: N/A\nChange-Id: I1b818fbb36ddd6d084dee56828290c2717a0c9b0\n"
    },
    {
      "commit": "5fa9df8efc96667564cc5289b176592bd7882953",
      "tree": "8ab3d295b163dfc47d4214c059c7e40596a6ea1c",
      "parents": [
        "d527cf1f993f43d23c0cc171d46849c6e427c493"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 07 12:47:00 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Sep 18 13:23:31 2018 -0700"
      },
      "message": "fdsan: add type for libziparchive\u0027s ZipArchive.\n\nTest: debuggerd `pidof system_server` | grep \" fd \"\nChange-Id: I6a9a4306ecffe3899e4cc7285a0eb33efaa62616\n"
    },
    {
      "commit": "d527cf1f993f43d23c0cc171d46849c6e427c493",
      "tree": "f15e7e05ac4716845f56849b9ec4923421699f9e",
      "parents": [
        "431d2ff1418cf94c36437f35b1f55b81e2e1d976"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 07 12:46:02 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Sep 17 17:31:58 2018 -0700"
      },
      "message": "fdsan: add types for Java sockets.\n\nTest: art/tools/run-libcore-tests.sh\nChange-Id: If61211bc4ae225c3f89db989a167f9dc4fce375a\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": "ab6a0802affb5c8050516c8dafc120906eca7e64",
      "tree": "8ef9fe80562b1b9f645f56419f92afdcac8dacd7",
      "parents": [
        "98b933a4b653f07d1e1f68d4f49aa98e6c60bb19"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 17:37:52 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 17:37:52 2018 -0700"
      },
      "message": "fdsan: add type for ART\u0027s FdFile.\n\nBug: http://b/113558485\nTest: none\nChange-Id: I9bc874d8689cc54563f2a5878d324b27ad85060e\n"
    },
    {
      "commit": "222ce95c8ab6bb01ced9652c904536adf72d9dc4",
      "tree": "a1b07a272b4d3604abe87cc5ee8ee930cd41af8c",
      "parents": [
        "003521af4760215c9c3b8ba80c88dd3b3c87ab67"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 09:26:43 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 09:26:43 2018 -0700"
      },
      "message": "Remove ARM/MIPS fenv duplication.\n\nBug: http://b/32709207\nTest: ran tests\nChange-Id: I58d354e9f8b1e6023427ba271bf39e4e24b7f8ab\n"
    },
    {
      "commit": "cd524ca71f90c1c1beca10c95d6cf1669da0b9fd",
      "tree": "c8275d162a2ca718f30c1dbe2cf3ef7ff3b00eac",
      "parents": [
        "ec247245deaaa9123c65f79f6f594c0a5db0c9d3",
        "be66a06412205baf1077e806eacf0c926e1d87ac"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 28 20:20:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 28 20:20:21 2018 +0000"
      },
      "message": "Merge changes from topic \"fdsan_abort_msg\"\n\n* changes:\n  fdsan: provide abort message in warning tombstones.\n  Implement pthread_sigqueue.\n  Stringify api_level in \u003candroid/versioning.h\u003e.\n  Delete archaic pre-ANSI C support.\n"
    },
    {
      "commit": "ec247245deaaa9123c65f79f6f594c0a5db0c9d3",
      "tree": "5faeec603f51574252675246955b9102378b68ee",
      "parents": [
        "24107698b4e75ad8f74376c1a86a9b3260622e96",
        "c1b4476808702c160595e1ec725a2b0f2fbd13be"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 28 20:17:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 28 20:17:59 2018 +0000"
      },
      "message": "Merge changes from topic \"bionic_fdsan_java\"\n\n* changes:\n  fdsan: make the tag type values sequential.\n  fdsan: expose functions to get and interpret tags.\n"
    },
    {
      "commit": "24107698b4e75ad8f74376c1a86a9b3260622e96",
      "tree": "0744c9675a39a82db87702b846330fe314f37e00",
      "parents": [
        "3e5a32ce2c24969932634d84e2755755094fa582",
        "27cc4bc4147da374e03d109d992895297be66722"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 28 00:16:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 28 00:16:34 2018 +0000"
      },
      "message": "Merge \"Add fdsan owner type for sqlite.\""
    },
    {
      "commit": "f3aa3007e34eb14e114bd86492d8e6b2673e83c6",
      "tree": "8809aa7a61d72a17c1dcf0bcb56a7d3492fa4819",
      "parents": [
        "1dc2503e1a62ae21f32ebaae483cc1f3bf43e33c"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 27 13:59:42 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 27 16:48:17 2018 -0700"
      },
      "message": "Stringify api_level in \u003candroid/versioning.h\u003e.\n\nMake it so that we can use __ANDROID_API_\u003cletter\u003e__ constants in\n__INTRODUCED_IN macros.\n\nTest: treehugger\nChange-Id: I0929c01e23e58f51d12f73200e1daf5ef484ea5d\n"
    },
    {
      "commit": "4b9379c889ed9958094a8e82b27eb8f5d9167e5f",
      "tree": "22369dd2ec648235f37a8fe67d522c67c32ea830",
      "parents": [
        "f7f86a9669fb0d41b8400443a5cc719de8b8f65e",
        "462e90cf4dde9a0e512749b735ea1441e27ed8c5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 24 17:16:53 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 24 17:16:53 2018 +0000"
      },
      "message": "Merge \"Start documenting libc.\""
    },
    {
      "commit": "c1b4476808702c160595e1ec725a2b0f2fbd13be",
      "tree": "f384f9441db83069f6e781d64c5886ce6bbec96c",
      "parents": [
        "b6b3a1d4f9ae5a86176d23774ce0112eafef03f3"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 23 14:21:03 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 23 23:10:52 2018 -0700"
      },
      "message": "fdsan: make the tag type values sequential.\n\nIn retrospect, allocating tag types from both ends will just make the\nfuture creation of user-defined tags harder, because constants that are\nintroduced, and then used in previous versions might collide with\nuser-defined tags. Move all of the tag values to the front, so that we\ncan allocate from the end to minimize this.\n\nTest: bionic_unit_tests\nChange-Id: I5063adf8301b1063bd4931a6ce8b70dfe2411efd\n"
    },
    {
      "commit": "27cc4bc4147da374e03d109d992895297be66722",
      "tree": "55525419847eacdc1e2450751ac979ae1b9310ab",
      "parents": [
        "f7f86a9669fb0d41b8400443a5cc719de8b8f65e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Aug 22 12:40:08 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 23 23:10:52 2018 -0700"
      },
      "message": "Add fdsan owner type for sqlite.\n\nTest: none\nChange-Id: Ib331d108e7e0431250eba3609f3557d8e4665aba\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": "462e90cf4dde9a0e512749b735ea1441e27ed8c5",
      "tree": "9b8f2f3a9430814c5670c319b8b1a8722b978aac",
      "parents": [
        "3fd45bba4857fdbf320b6e89d2ae0569d9463bf5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 21 16:10:48 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 23 11:03:17 2018 -0700"
      },
      "message": "Start documenting libc.\n\nBug: N/A\nTest: N/A\nChange-Id: I17345cb72a5ffc3af1688cf5874589cfb1e1fea0\n"
    },
    {
      "commit": "cf97d7f121c8e7c8127dbbe00ea2958b159368da",
      "tree": "cbd6c42b02d94b545bc939882adc0ceb1c265480",
      "parents": [
        "8f2298e73f4d930b58a8466fd7264e9a88c96d99"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 10:50:29 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 10:50:29 2018 -0700"
      },
      "message": "Folks are starting to need a placeholder name for Q.\n\nBetter to just have one place to update...\n\nBug: N/A\nTest: builds\nChange-Id: If7135d26f498b0841f9ae505bf6ca3ed05767345\n"
    },
    {
      "commit": "e899e798b8c9daf36cc15f01e97d9a3d3785ebe4",
      "tree": "c2fb9bce4a3575cef85e8667e4d326c907f61986",
      "parents": [
        "170540398a3eb7a4ef65fc3a9a6856a61a4ff369"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 20 13:12:31 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 20 13:51:28 2018 -0700"
      },
      "message": "Mark fdsan functions as __attribute__((weak)).\n\nMake it so that users can check for availability of fdsan at runtime.\n\nBug: http://b/110100358\nTest: treehugger\nTest: make libjnitest\nChange-Id: Ief3054161f3e255d048370975f7dd90cf7ad3687\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": "da1994ced6fd870a9ad198c0435d3e5ebbf65636",
      "tree": "42cf094bc08d6ce3006607257c1ceb6c5d32a594",
      "parents": [
        "48227e66026724f9a94d9ff9cdef0aacae75b3a9"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Apr 13 14:32:37 2018 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Apr 13 14:32:37 2018 -0700"
      },
      "message": "Add dlext.h to the libdl doc group.\n\nTest: https://irina-dot-devsite.googleplex.com/ndk/reference/group/libdl\nBug: http://b/77236573\nChange-Id: Ie09351ee961554488e34c79511712b07c345b8ad\n"
    },
    {
      "commit": "4d4a7832add84dbae97f17efd478cd0ecfb8d8bc",
      "tree": "51974db8a37e902d78d47578717f6fa9b2df2cc0",
      "parents": [
        "177429cb8db80496a5fe65430253b37d254dc66f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 06 13:45:29 2018 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 06 13:45:29 2018 -0800"
      },
      "message": "Add a few more legacy inlines for strto*_l.\n\nThese three functions are the only reason we need libandroid_support\npost-L. Add these so we can remove it entirely for LP64 or users\ntargeting L+.\n\nTest: make checkbuild\nTest: build/soong/scripts/build-ndk-prebuilts.sh\nTest: Imported the prebuilts generated from the above to the NDK,\n      `./checkbuild.py \u0026\u0026 ./run_tests.py` with a handful of patches\n      to remove libandroid_support for L+.\nBug: None\n\nChange-Id: I39f8ee686bd76ebdb2fc3745b013d56175ba8ff0\n"
    },
    {
      "commit": "cc0fe6e8c0bb2dfb250522872be6facb4d4a0339",
      "tree": "73b9e54a979e9d4b1e2ce50ccc129e58b0484b31",
      "parents": [
        "4cd3550d50cb14efe3d86ab9732ce75def5b85bd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 08:54:12 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 08:54:12 2018 -0800"
      },
      "message": "The future is now (2018 edition).\n\nBug: N/A\nTest: builds\nChange-Id: Ic638e5b1f4e5901885fe7bc60b2a265817636b21\n"
    },
    {
      "commit": "5046e5fe87a2638049ee3113b603944f42241ca5",
      "tree": "283a2d0e640c589ed0093358ed317fc963fdc11b",
      "parents": [
        "73871ad09be8a8259171d606c4e3e3cf08d4733c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 25 15:48:32 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 25 15:48:32 2018 -0800"
      },
      "message": "Make the \u003candroid/dlext.h\u003e docs show up on the web.\n\nJust enough doxygen so that\nhttps://developer.android.com/ndk/reference/dlext_8h.html won\u0027t be completely\ndevoid of all this.\n\nBug: N/A\nTest: ran doxygen manually\nChange-Id: I1e0667feae93227e32c1bd671065359f5be85d9d\n"
    },
    {
      "commit": "989d804859cea2712875a38a7a99d623d4000dd0",
      "tree": "c237d742b2d1136ff551f48c3bc63fb1ccc48c6d",
      "parents": [
        "54c71521b5295f82aaac7aa2f3ce918298fed70f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jan 18 19:38:50 2018 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jan 18 23:39:48 2018 +0000"
      },
      "message": "Reland \"Cleanup transitive includes in the legacy inlines.\"\n\nThis reverts commit 54c71521b5295f82aaac7aa2f3ce918298fed70f.\n\nBug: None\nTest: make checkbuild\nChange-Id: Ica6a4f7ecadfcc854160a60a5db1b44ae3b6c821\n"
    },
    {
      "commit": "54c71521b5295f82aaac7aa2f3ce918298fed70f",
      "tree": "1789fb1df0c8befc8a678f3704d6f11445acfdd4",
      "parents": [
        "a074ac79d7ac0be5537a8a5bcc1ac15c57d4c22b"
      ],
      "author": {
        "name": "Joachim Sauer",
        "email": "jsauer@google.com",
        "time": "Thu Jan 18 11:37:34 2018 +0000"
      },
      "committer": {
        "name": "Joachim Sauer",
        "email": "jsauer@google.com",
        "time": "Thu Jan 18 11:37:34 2018 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Revert \"Cleanup transitive includes in the legacy inlines.\"\"\"\"\"\n\nThis reverts commit a074ac79d7ac0be5537a8a5bcc1ac15c57d4c22b.\n\nReason for revert: Broke several builds.\n\nChange-Id: I406f0b0aa0c37961ad031d2f6c5ea4241f3f1111\n"
    },
    {
      "commit": "a074ac79d7ac0be5537a8a5bcc1ac15c57d4c22b",
      "tree": "c237d742b2d1136ff551f48c3bc63fb1ccc48c6d",
      "parents": [
        "25a3087d6dde58e126c5ecb1033319ff333fcc59"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 24 21:52:16 2017 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jan 11 09:43:23 2018 -0800"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Cleanup transitive includes in the legacy inlines.\"\"\"\"\n\nThis reverts commit b37e9aa9a63b7b703b5a03347555b1df9ac98ab3.\n\nReason for revert: trying again\nTest: make native\nChange-Id: Ide23f0a752fd6ca88e44449e996eb5809db6712d\n"
    },
    {
      "commit": "51a7fe8fbdda866ab5364c0b37b102be0ea337ad",
      "tree": "bd765653ad9de1774d2362c15e863bdfbc26528d",
      "parents": [
        "558a4f59237245916d93075eb60ed7d16cf55c42"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jan 08 16:18:48 2018 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jan 08 17:46:27 2018 -0800"
      },
      "message": "Mark abs/labs/llabs as 19+ rather than 21+\n\nThe libc.map.txt file already defines these three functions as having\nbeen introduced in API 19, but these header files had declared them as\n21 and up.\n\nSee https://android-review.googlesource.com/c/platform/development/+/233407\n\nimaxabs is already declared as 19 and up.\n\nTest: build-ndk-prebuilts.sh \u0026\u0026 ./update_platform.py \u0026\u0026\n  checkbuild.py \u0026\u0026 run_tests.py\nTest: manually build app against 18 and 19\n\nChange-Id: Iaeed48d7e6c438d816635a0433a056e557e8ebc2\n"
    },
    {
      "commit": "b6c7f6e5950e609a2ede7990d2be0a1d1b55304f",
      "tree": "3c68573b1d47c41b8a5e2102ec8295ff3f88f29c",
      "parents": [
        "b06bb71672094d18d928c19ddc631af07931431f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 03 16:46:32 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 03 16:46:32 2017 -0700"
      },
      "message": "Fix arm/arm64 \u003cfenv.h\u003e to match current reality.\n\nARM stopped supporting enabling of FP exceptions years ago.\n\nBug: http://b/68832485\nTest: ran tests\nChange-Id: I8450baa78e04d994c352180975b0a1ecd5a9f662\n"
    },
    {
      "commit": "b37e9aa9a63b7b703b5a03347555b1df9ac98ab3",
      "tree": "f4c6b8cfb9794b0cc5ee56034280cd194ca5e327",
      "parents": [
        "f945fb6b8a09d08be89b1b771b20d7291baab659"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 24 09:20:41 2017 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 24 09:20:41 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Cleanup transitive includes in the legacy inlines.\"\"\"\n\nThis reverts commit f945fb6b8a09d08be89b1b771b20d7291baab659.\n\nReason for revert: haven\u0027t fixed all the builds yet\n\nChange-Id: I55aff5d0290c27691427d91a8e46ae01c87da6b2\n"
    },
    {
      "commit": "f945fb6b8a09d08be89b1b771b20d7291baab659",
      "tree": "e4eaf9f9733ce84585c47ab8c3a2e96d0aa058bc",
      "parents": [
        "435e6384de8f9e35b8878b1ccda5bb5686c15207"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 17 11:07:26 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 17 11:07:26 2017 -0700"
      },
      "message": "Revert \"Revert \"Cleanup transitive includes in the legacy inlines.\"\"\n\nThis reverts commit 9cb8639b18bc90dab461b4709607083301c9f6fc.\n\nFixed all the broken builds that were reported to me before this was\nreverted.\n\nTest: make checkbuild  # kikey960, marlin, aosp_arm64; master and aosp\n"
    },
    {
      "commit": "9cb8639b18bc90dab461b4709607083301c9f6fc",
      "tree": "36a2c69a6fdca4c4da71da08cfc08e5e4cfcf395",
      "parents": [
        "43df953502c9615781e73ac3cc0db2a711a86998"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Oct 17 08:41:23 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Oct 17 08:41:23 2017 +0000"
      },
      "message": "Revert \"Cleanup transitive includes in the legacy inlines.\"\n\nThis reverts commit 43df953502c9615781e73ac3cc0db2a711a86998.\n\nReason for revert: Breaks most AOSP builds.\nhttps://android-build.googleplex.com/builds/branch-dashboard/aosp-master?build_id\u003d4399910\n\nChange-Id: I53459f97b7dffb1f7f602db03893564dd3cfe6bf\n"
    },
    {
      "commit": "43df953502c9615781e73ac3cc0db2a711a86998",
      "tree": "963a99ec161ed010560436f253a83d0aedecd9f4",
      "parents": [
        "c972ea7da0501d3082f06f65869776c786c19fca"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 09 14:42:16 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Oct 13 14:39:03 2017 -0700"
      },
      "message": "Cleanup transitive includes in the legacy inlines.\n\nWe don\u0027t want to be exposing so much through the headers for the\nimplementation details unless we have to.\n\nTest: make checkbuild\nBug: None\nChange-Id: Ieca9cd8106725e08887a3e9fde60d1eef64ef98b\n"
    },
    {
      "commit": "8c2323c697289508e7c9ec15ac802afb0ab9a046",
      "tree": "3999b3d031db052787c2259104187b34c57f9f37",
      "parents": [
        "3dacc4764220fc5e7969e4281f5cfca8f2082241"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 05 16:39:33 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Oct 06 16:01:36 2017 -0700"
      },
      "message": "Fix \"Add a legacy inline for mmap64\".\n\nAutosubmit fired before the CL was actually ready (forgot to hit \"y\"\non the repo upload).\n\nTest: make checkbuild\nTest: copied into the NDK and ran mmap64_fob64 test.\nBug: lots\nChange-Id: I8c0400a703f319e8e230f7ba9178009ed7c88be0\n"
    },
    {
      "commit": "a613d0df5c682617380728a7d151483de05a4f92",
      "tree": "5a73110db954e5fc92116ad0930ed83495607729",
      "parents": [
        "3e8584d4a7d617289e8a954711ba895415d781c4"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 05 16:39:33 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 05 23:41:47 2017 -0700"
      },
      "message": "Add a legacy inline for mmap64.\n\nWhile this was never an inline, this function alone has caused most of\nthe bug reports related to _FILE_OFFSET_BITS\u003d64. Providing an inline\nfor it should allow a lot more code to build with _FILE_OFFSET_BITS\u003d64\nwhen targeting pre-L.\n\nTest: make checkbuild\nTest: built trivial cc_binary for LP32 against API 14 with\n      _FILE_OFFSET_BITS\u003d64 set\nBug: lots\nChange-Id: I8479d34af4da358c11423bee43d45b59e9d4143e\n"
    },
    {
      "commit": "a0c7ec8080a7718c5711d9de405e039258d433bf",
      "tree": "44acbb52602f72fc7b8ff0ab4243586e1fe74849",
      "parents": [
        "95f90784eaa0b377d3c6d9101c84e8817cbea494"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Aug 07 11:19:17 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 02 08:14:56 2017 -0700"
      },
      "message": "Add O MR1 define\n\nBug: 64394076\nTest: none\nChange-Id: Ice3991c626dd2cce93c9a571ba529fa5b0129492\n"
    },
    {
      "commit": "2f94a29d9cf9574e38e87e7c8f760dd7277ab49a",
      "tree": "0890e98315da47a921bbea2c299deb2fe5239e63",
      "parents": [
        "0c9ea17e0c31540cb2caab7ec2149ae40670b2d2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 18 14:40:01 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 19 18:34:40 2017 +0000"
      },
      "message": "Rename _Exit in a way that works with libandroid_support.\n\nBug: N/A\nTest: builds\nChange-Id: I2aeaf9bafe7d51e91b67f22d68f4e52191df062b\n"
    },
    {
      "commit": "faa74342e3dc1fdb8832be9ad3a69c9f8fb749b9",
      "tree": "1c7819aa00942949400abca5c21a6e31fd72dec5",
      "parents": [
        "30438e4cea83628bcacbedff37a35398bb8b40e7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 11 17:34:44 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 11 17:45:59 2017 -0700"
      },
      "message": "Name function arguments in libc headers for Studio.\n\nFirst batch of headers...\n\nBug: http://b/64613623\nTest: builds\nChange-Id: I6bc3ad79daa635456b61d03b1f43f06c433ec596\n"
    },
    {
      "commit": "cd8828c3469022013ec75f4a6a0e72f995459e0a",
      "tree": "622bdba6e23a556222d6f1c11857c221a60ffab4",
      "parents": [
        "906dc0dd485d957e33446ee626090a639db402b6"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 07 14:47:00 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 07 14:47:00 2017 -0700"
      },
      "message": "Put back the _Exit rename for pre-L.\n\nSomehow I accidentally removed this in\nhttps://android-review.googlesource.com/c/445150.\n\nTest: make checkbuild\nBug: None\nChange-Id: Ia6744af6c7b6dc2f149e9eab6e1f39863f96f6ca\n"
    },
    {
      "commit": "9faa95c9ebdc9eb43522d1699a0aac0abbb46093",
      "tree": "076f9e8d803d8df2fef37771c021b100b2ce14ad",
      "parents": [
        "d3e656abeb1d603eae175b910d5cd1d5d9a1f1ab",
        "bd3f657e56a4846d6526a36badab0f7fe0dc14ab"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 27 02:40:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 27 02:40:40 2017 +0000"
      },
      "message": "Merge \"Fix error condition on strtof inline.\""
    },
    {
      "commit": "bd3f657e56a4846d6526a36badab0f7fe0dc14ab",
      "tree": "23281a4620991ca4112d4e859b7ba44babac922a",
      "parents": [
        "4f36cabd8d1b1f3ed6ad4586f86aad5731f4bdaf"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 26 14:59:24 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 26 17:21:47 2017 -0700"
      },
      "message": "Fix error condition on strtof inline.\n\nTest: make checkbuild\nTest: pull into ndk, ./run_tests.py\nBug: https://github.com/android-ndk/ndk/issues/415\nChange-Id: I1575f799c9e849d66456c785208a36709a7b8122\n"
    },
    {
      "commit": "f66fa495a883ee2f6df955e06f7b364907c6fcd9",
      "tree": "3f6f1dedf0cf95185c79dceb3bc4b259417ca047",
      "parents": [
        "93068895091ee516c55a7873a4056145a7da3644"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 26 14:27:43 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 26 14:27:43 2017 -0700"
      },
      "message": "Add __ANDROID_NDK__ to identify using the NDK.\n\nI\u0027ve added some things like __ANDROID_MAJOR__ to an ndk-version.h, but\nthat is only in the NDK itself and so doesn\u0027t help the platform. Add\n__ANDROID_NDK__ to identify that you\u0027re building for the NDK and not\nthe platform.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/407\nChange-Id: I2d1f1c28e3764e4e658cf675b290b7a17253ee33\n"
    },
    {
      "commit": "e76ff925df7d0b9aef84fe230c7497ff6a8fbba4",
      "tree": "9009caad2fd90f30494b915d367977b96867e0f8",
      "parents": [
        "6aaa227f74031ee461c7ce5b7a2a262397e866b2",
        "1449974d27473399a1fe25c2d28253908a57e382"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 10 20:40:53 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 10 20:40:53 2017 +0000"
      },
      "message": "Merge \"Make inline tcsetattr definition match constants.\""
    },
    {
      "commit": "c2828b87ec1066dfceb873532ef6cae7b64c2901",
      "tree": "0402071d3ab858220e409dd781942913800fa861",
      "parents": [
        "ddefae7ba92c40d60f2401e010e7789bee6f260d",
        "8f5608b614b7908f4edde20a5461e46d4b080d9a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 10 20:07:01 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 10 20:07:01 2017 +0000"
      },
      "message": "Merge \"Fix ffs on x86 for old API levels.\""
    },
    {
      "commit": "1449974d27473399a1fe25c2d28253908a57e382",
      "tree": "99ab00407ff51e8db4318365f31eabc9feb942af",
      "parents": [
        "f45bc14d5497c30bd43e22d025e3b88812b2baa4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 05 12:00:29 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 05 12:00:29 2017 -0700"
      },
      "message": "Make inline tcsetattr definition match constants.\n\nBefore this change we have the old NDK inline termios functions with the\nmodern constants. Unfortunately the old NDK inline functions relied on\nhacking the constants. Fix things by sharing the implementation between\nthe platform and the NDK headers.\n\nBug: https://github.com/android-ndk/ndk/issues/441\nTest: ran tests\nChange-Id: I2773634059530bc954167f29c4783413a2294d5a\n"
    },
    {
      "commit": "8f5608b614b7908f4edde20a5461e46d4b080d9a",
      "tree": "be5a6b6140467c0a9eaf3b7397b5fbac92fe3a64",
      "parents": [
        "e202036e0377a578f2ae9ba3b5610c7763e5ab9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 30 15:57:59 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 30 17:50:44 2017 -0700"
      },
      "message": "Fix ffs on x86 for old API levels.\n\n\u003cstrings.h\u003e\u0027s ffs used to work by accident. In the past, \u003cstrings.h\u003e used\nto incorrectly declare ffs for all platforms at all API levels. In the\nunified headers, there\u0027s no such declaration for x86 before API 18 (which\nmakes sense, because that function was missing on x86 until then).\n\nBut as long as there was a declaration for ffs, the compiler just inlined\n__builtin_ffs. There was no problem at link time because the compiler didn\u0027t\nactually add a reference to the missing ffs symbol.\n\nRestore the old behavior by manually instructing the compiler to inline its\nbuiltin in these cases.\n\nBug: https://github.com/android-ndk/ndk/issues/439\nTest: built new NDK \u0027ffs\u0027 test\nChange-Id: I840e99f237c86f7cb028a0f67aaa8c6ff3eda245\n"
    },
    {
      "commit": "79dd9889d1701dda881bb383b212932fcf2ff25f",
      "tree": "7a62a624475160459be01edcdf301153cb7476be",
      "parents": [
        "e202036e0377a578f2ae9ba3b5610c7763e5ab9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 30 16:39:25 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 30 16:39:25 2017 -0700"
      },
      "message": "Work around missing _Exit in old API levels.\n\nRather than do this in libandroid_support, we may as well just stick it with\nthe other historical stdlib workarounds in bionic itself...\n\nBug: N/A\nTest: built new NDK test\nChange-Id: Ia5cf4010581eb79d4adf924e87d0bc050b9e2839\n"
    },
    {
      "commit": "583ef362c8053e41e491f24ddc076f29fa7fbb92",
      "tree": "aed2759ac8d13ff90141f93f017dd6261ffe4d01",
      "parents": [
        "15eaaddef9fffda1209e9cc576b47b0f6e0cb379"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 13 14:29:15 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 13 14:29:15 2017 -0700"
      },
      "message": "The bsd_signal declaration shouldn\u0027t be visible if API \u003e 21.\n\nThis causes GNU make to fail to build:\n\n  main.o:main.c:(.text+0x18c): more undefined references to `bsd_signal\u0027 follow\n\nBug: N/A\nTest: built GNU make with a hacked standalone toolchain\nChange-Id: Icdfb4cf674df8abed44f6671454bed9f8d68e74b\n"
    },
    {
      "commit": "7ba2bed0b2597b59dcd3d99414bcfa1b559b0acc",
      "tree": "bc6fa032a1749216ce6008bd316d3097046d8da5",
      "parents": [
        "5deddda68e780aaa26e4777378fee10d543eb719"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 25 15:45:29 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 26 14:34:36 2017 -0700"
      },
      "message": "Make unified headers\u0027 SIGRTMIN/SIGRTMAX usable before API 21.\n\nBug: https://github.com/android-ndk/ndk/issues/352\nTest: built new NDK test\nChange-Id: Iacebe574bbf693701949e038005a40ba6520d592\n"
    },
    {
      "commit": "4473e34acbd9b8f97f04dd52ac7ccd856370e6d1",
      "tree": "2e05afe679d27eaad883e9c2a3bfd11fd2c74f33",
      "parents": [
        "45715b2a88c8daf5a721ce9b28391120f5507764"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Feb 23 11:09:32 2017 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Feb 23 11:09:32 2017 -0800"
      },
      "message": "Add legacy inlines for more termios stuff.\n\nTest: make checkbuild # with my versioner-in-build patches\nBug: https://github.com/android-ndk/ndk/issues/302\nChange-Id: Ib00b5dadf23592d101486b4f2188285ec03c9e2a\n"
    },
    {
      "commit": "5bc78c8bcd0c1e634c04029309ede3ec05f2d424",
      "tree": "ba41f009cdf5fb27c766b4efe05c4cbb566d2a85",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 11:35:43 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 16:55:42 2016 -0800"
      },
      "message": "Add and use constants for the Android API levels.\n\nTest: bionic tests still pass\nChange-Id: If1b619cfc9db1d3f5d91f14f2ace71058dca0c4a\n"
    },
    {
      "commit": "b3321c961452f69650e4a6bd2a7db317a80b3234",
      "tree": "9471f536d800a1ca4bb71a638edd11eb1a2496bd",
      "parents": [
        "cd9ce19e9ce34db6201bdb054c40c3b9e766d2d8",
        "78b8a1430debfb9361e425e52e8366409b9e5cd2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 15 00:54:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 15 00:54:09 2016 +0000"
      },
      "message": "Merge changes I72d37b7c,I7d254a10,I2e967acf\n\n* changes:\n  versioner: use a virtual filesystem for input files.\n  versioner: cache -cc1 flags generated by the clang Driver.\n  versioner: refactor to use CompilerInstance directly.\n"
    },
    {
      "commit": "16016df79f846d6d21266c3b1dce1e7c24dc4be1",
      "tree": "848d465210b468dbcdb9b94a2519b40a256bf323",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Nov 07 18:27:16 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 13:50:07 2016 -0800"
      },
      "message": "versioner: refactor to use CompilerInstance directly.\n\nThis will make it easier to switch over to a virtual filesystem,\nwhich should drastically improve performance.\n\nThis also fixes an issue with warning/error reporting.\n\nBug: http://b/32748936\nTest: python run_tests.py\nChange-Id: I2e967acf75db29c95f3a03f4f94cccd22c367ad5\n"
    },
    {
      "commit": "75097b1220c4d5851501736c79c2348adaee8cf2",
      "tree": "c53965b20c963294b3ae1ac23f70378c5b1decb3",
      "parents": [
        "2560a2703d1ab6df6d5f25ca9ff0c907de984885"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 04 11:39:16 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Nov 07 13:12:38 2016 -0800"
      },
      "message": "Add legacy inlines for fenv APIs.\n\nTest: make native\n      Copied into the NDK and ran ndk/checkbuild.py\nBug: None\n\nChange-Id: I3d1e9317952ad23145a1f5221e347a16ebad4b0d\n"
    },
    {
      "commit": "e749abe9ab6dfaf9be17097f97080ee9c2f67c5d",
      "tree": "f2ee3a35af85b6cefd39a8cc8955789422ef2be3",
      "parents": [
        "a3ce418ca6ad440d19c98e15132a76a877eb0bdc"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 31 20:12:03 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 31 20:20:25 2016 -0700"
      },
      "message": "Add legacy inline for wait4.\n\nThis wasn\u0027t added to Android until android-18. Note that the reason\nI\u0027m adding an inline here even though I just reverted a bunch of\ninlines in the previous commit is because this was an inline in the\nlegacy NDK headers. If it was in the old headers, it needs to be in\nthe unified headers. If it wasn\u0027t, it needs to be in\nlibandroid_support.\n\nTest: ./tools/update_headers.py \u0026\u0026 make ndk \u0026\u0026 make native\n      # Copied into working directory for unified headers NDK work.\n      ndk/checkbuild.py\n      ndk/run_tests.py --force-unified-headers\nBug: None\n\nChange-Id: I751520a1df34b3edb5c59b4bd47170c4634a1883\n"
    },
    {
      "commit": "a3ce418ca6ad440d19c98e15132a76a877eb0bdc",
      "tree": "58f66cc6dc1d48da0d67a0c409a3f534ed90f1e3",
      "parents": [
        "9b908c8e36a6e644d5c42a7ed549ae7d4ab57667"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 31 16:20:47 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 31 16:47:22 2016 -0700"
      },
      "message": "Revert \"Add legacy inlines for locale aware APIs.\"\n\nWe can\u0027t really add these to the unified headers yet since we\u0027re\nstill using the old headers as well, and libandroid_support needs to\nwork with both. These functions are already defined in\nlibandroid_support, so when using unified headers we\u0027ll get duplicate\ndefinitions.\n\nThis was only going to be a temporary solution anyway. Instead we\u0027ll\njust rely on libandroid_support (and eventually its rewrite) to handle\nthese.\n\nThis reverts commit 6576a3749bd3805508294bfcac3d9658fc0f8d6e.\n\nTest: ./tools/update_headers.py \u0026\u0026 make ndk \u0026\u0026 make native\n      # Copied into working directory for unified headers NDK work.\n      ndk/checkbuild.py\n      ndk/run_tests.py --force-unified-headers\nBug: None\n\nChange-Id: I5762e815e2030c89d7f2540df08dd67b6c2d10a5\n"
    },
    {
      "commit": "dfb74c5f597542c7587a4144eb31b143d82a2281",
      "tree": "6518b6dbd451d3359c9daec78867a66481dc77fd",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 12:53:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 12:57:55 2016 -0700"
      },
      "message": "Minor copyright header unification.\n\nRegenerating the NOTICE file the other day left me scratching my head at\nvarious \"how do they differ?\" cases, resolved by this patch.\n\nTest: N/A\nChange-Id: I4230bfa1d7ec842a4b9fb8c73dd3b39443d74054\n"
    },
    {
      "commit": "95fa061678400315ee757758bf5f9146176d47a0",
      "tree": "0b3428e9d7d274e79809471c1d7ae3896a10ff03",
      "parents": [
        "1d20532f5c5f8c1638735eb04586be82a7d0379c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 28 12:29:52 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 28 12:36:38 2016 -0700"
      },
      "message": "Rename __pure, __pure2, and __purefunc.\n\nThese names were pretty misleading (aka \"backwards\"), so switch to the\nsame obvious names glibc uses.\n\nTest: build.\nChange-Id: Ia98c9dbbccd0820386116562347654e84669034a\n"
    },
    {
      "commit": "6cd9fb080caca2d0d8fcb8f400c1ec466e7b2466",
      "tree": "100dbbffe89a02329ac0effd96ea3c322a2b9a77",
      "parents": [
        "01733796100d63baf0b27f647fed98894e05a29a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 23 14:06:05 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 23 14:34:03 2016 -0700"
      },
      "message": "Fix warnings (and errors) in static inline headers.\n\nBug: http://b/31676510\nChange-Id: Idcbc544e498f7e6bbe99c2bf7dc557a5681e96c4\nTest: preupload hook\n"
    },
    {
      "commit": "6576a3749bd3805508294bfcac3d9658fc0f8d6e",
      "tree": "d076b59a7c20d15f392428e9cf4c1e06e601b1b7",
      "parents": [
        "3103f6d39e4ae309a9374ee38f414400c889c558"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 21 01:16:13 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 22 00:44:37 2016 -0700"
      },
      "message": "Add legacy inlines for locale aware APIs.\n\nTest: make checkbuild tests\nBug: http://b/31639993\nChange-Id: Ic43d690dff3c6960d7826bd0b064640a3ea0e883\n"
    },
    {
      "commit": "495ec92605cb608730cc920ba5afe454860abf2b",
      "tree": "f5daaa0ceaa1e28183acd03e60ed936b23378d03",
      "parents": [
        "42743f1e9ebf0771fea41361e9424f58f8de1cde"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 21 01:08:44 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 21 01:08:44 2016 -0700"
      },
      "message": "Add __ANDROID_API_FUTURE__.\n\nNeeded for checking conditions like `__ANDROID_API__ \u003c\n__ANDROID_API_FUTURE__` for providing inlines for things that have\nnot yet been included in any release.\n\nTest: make checkbuild tests\nBug: None\nChange-Id: Ibcddac5a538ede020a8cb65fca03194475121966\n"
    },
    {
      "commit": "fff29fe17a4187ea83add76695040bc888e9d3bd",
      "tree": "d53910633fa98038db957b1cf767aa8fb0b26ca2",
      "parents": [
        "bfad958982a6b1c8c957c0eb951826d0c369eedd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 07 18:29:08 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 07 18:34:39 2016 -0700"
      },
      "message": "versioner: add support for __VERSIONER_NO_GUARD.\n\nAdd an attribute that tells the preprocessor not to guard a\ndeclaration, primarily for use with symbols that get reexported by\nlibc++ of the form `namespace std { using ::wctrans; }`.\n\nBug: http://b/28178111\nChange-Id: I08c8751214797e37e8f26e7f7416a19e81c2bb4c\n"
    },
    {
      "commit": "bfb6bae9fb5ef42e4f9ae2847f30f41938c04900",
      "tree": "e75bc213342719cd3f803db5d27f4f21d9601fe0",
      "parents": [
        "681f6b59d26c7c9470bc681b0ca0b43c3d0835db"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 15 17:25:21 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: replace availability attributes with annotate.\n\nMajor refactor to use __attribute__((annotate)) to be able to keep\ntrack of the semantic differences between __INTRODUCED_IN(x) and\n__INTRODUCED_IN_X86(x), for use in the upcoming preprocessor.\n\nBug: http://b/30170081\nChange-Id: I6496a8c40ba7f4553de9a2be0bbddcf37c813937\n"
    },
    {
      "commit": "3b2096a9d6edd74622b94cacc76b77100f919b84",
      "tree": "1e5db3202e110172e7db1ced6d87cf8ceca7ed0b",
      "parents": [
        "7101c48f20f2f19dd1d314d23251fb52995a0870"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 18:57:12 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 18:57:12 2016 -0700"
      },
      "message": "Remove unnecessary \u0027extern\u0027s.\n\nChange-Id: Iba2b3fb6ff88e504f1657b915120ae43d58a1e03\n"
    },
    {
      "commit": "203e13d97de840e01eded6a267fef9f245cf3a15",
      "tree": "83517885755d8c28f7f6934bff67f7ad36addf39",
      "parents": [
        "767e8147d7f38bd9a23100ec9fa07b6a14a8b680"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 14:56:18 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 17:01:54 2016 -0700"
      },
      "message": "Always include \u003csys/cdefs.h\u003e.\n\nI made a mistake caught by code review earlier, so let\u0027s try to be\nsafer by default.\n\nThis patch also moves all our \"forwarding\" headers to the guardless\njust-include-the-other-thing style that we usually use. (Where we\nhave a comment explaining where the header comes from, I\u0027ve kept\nthat.)\n\nChange-Id: I37342cf5e2563c6a269b2ba61a697069b1c7913b\n"
    },
    {
      "commit": "3ba55f8022f3d5c5ca94a3df46fa658eda791987",
      "tree": "9e500c17531ea742e86de6848cc10ebca7ef28cb",
      "parents": [
        "93bae32c27f41e55e1cf9a6f5f8a05fbc1feaf1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 08 18:11:23 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 09 17:40:19 2016 -0700"
      },
      "message": "Rationalize visibility.\n\nIf it\u0027s C or POSIX, it\u0027s in. If it\u0027s BSD or GNU, it\u0027s guarded by __USE_BSD\nor __USE_GNU.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d194631\nChange-Id: Ife51a21c2b37b060db56780d29c929805b199cb6\n"
    },
    {
      "commit": "46b44160e9e4c466be0faf1bb8d6ec70ecc83273",
      "tree": "80036c736b6315189745423724f1d69cb3b74682",
      "parents": [
        "6e9c1f61d8ea04d35d18709e373da355ca32e523"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 27 11:14:16 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 13:40:35 2016 -0700"
      },
      "message": "Update header versions for NDK platform fixes.\n\nBug: http://b/28178111\nChange-Id: Icd638673b409aa43a91490f77c6b4d79c9ea20d9\n"
    },
    {
      "commit": "41fd29532b52bb66e3e1f4620053713fd0299f6e",
      "tree": "2ce6fdaa53cdb51c20e1e966d9be612121f9226e",
      "parents": [
        "d2f3ce9c89715accb5b294f0c0a17b2a50656333"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 09 17:37:39 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 09 18:15:41 2016 -0700"
      },
      "message": "Remove linker-namespace functions from the header\n\nThey are intended for platform use only and we shouldn\u0027t have them\nin the public header file.\n\nBug: http://b/28174921\nChange-Id: Ib9b3d0fa9442cfa2e784a693ad567d1444d774e5\n"
    },
    {
      "commit": "ed507636c09a442b4da4e27314e1574e21e7db77",
      "tree": "11c5d69e760329a54885e93db680f624c166639b",
      "parents": [
        "3338ee52576632fd96bc131c6e943fa6f9a62139"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 02 16:03:10 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 02 16:04:57 2016 -0700"
      },
      "message": "Remove \u003csys/atomics.h\u003e.\n\nIt\u0027s no longer used in the platform (including vendor code), and everyone\nshould be using \u003cstdatomic.h\u003e anyway.\n\nChange-Id: Ic1ad743625ffb15b4837ff6ccb91dcd840d19ec2\n"
    },
    {
      "commit": "14adff1cfa06a3d4d3281a9bf7848b556d84c20d",
      "tree": "ce1fb2867f69e49f57d0bbe8a9099b09beda0c19",
      "parents": [
        "5a3d5cac642f9e58b2c510eab23789fb4fc3a753"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 12:00:55 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 16:39:50 2016 -0700"
      },
      "message": "Add versioning information to symbols.\n\nBug: http://b/28178111\nChange-Id: I46bf95accd819f4521afb1173d8badcc5e9df31c\n"
    },
    {
      "commit": "b8e1b705d187886decb5970f791358f928f93d75",
      "tree": "28f12472ef5f3119340975edc1010c52452b084c",
      "parents": [
        "99739d4280e11f3a63d23059349a0cf98c41f5c4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 13 17:18:20 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 15 13:06:08 2016 -0700"
      },
      "message": "Make the legacy inline headers compile standalone.\n\nIt\u0027s useful to have the legacy inlines compile by themselves, both to\nmake header unification easier, and to ensure that the inline versions\nmatch the regular declarations. Notably, this wasn\u0027t true for\nsigismember, which took a const sigset_t* in the regular header, and\nsigset_t* in the inline version.\n\nBug: http://b/28178111\nChange-Id: Id8a3b7dcb1bfa61eed93c9fb50d3192744f8bef5\n"
    },
    {
      "commit": "99739d4280e11f3a63d23059349a0cf98c41f5c4",
      "tree": "c23209fbc8c33e4362452c7dfdedf8b6cb8abdc8",
      "parents": [
        "26bc9c64d5b0cad921e3070a4f94fa04e1077d90"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 13 17:16:47 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 13 17:45:39 2016 -0700"
      },
      "message": "Don\u0027t redefine __ANDROID_API__.\n\nBug: http://b/28178111\nChange-Id: I00ded8f90694d9ed28f3b4c97778635f5a564592\n"
    },
    {
      "commit": "2675a9e343fa749aba57b1bfcc8f7f1f5db48c72",
      "tree": "07608d347f866904da58638945e9ad3e420bcb3d",
      "parents": [
        "ef7c95b8ab96897db09faec974c2547305887cbe"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 07 11:21:47 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 07 18:01:53 2016 -0700"
      },
      "message": "Make \u003candroid/dlext.h\u003e compile standalone.\n\nBug: http://b/28067717\nChange-Id: If087e0c931c69bda34263ea8e0b2dc46d932b2af\n"
    },
    {
      "commit": "7331fe18d7ffd550996e07b534bc7a6cf625afa5",
      "tree": "ffad9be2c77f5c3c1ad164aa055a0e4b08f91cb1",
      "parents": [
        "4afd635be1b956c40f36758a482e6d83502fbb42"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 14:11:17 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Dec 19 23:38:27 2015 -0800"
      },
      "message": "linker: implement shared namespaces\n\nShared namespaces clone the list of loaded native\nlibraries from the caller namespace. This allows\nclassloaders for bundled apps to share already loaded\nlibraries with default namespace.\n\nBug: http://b/22548808\nBug: http://b/26165097\nChange-Id: I8949d45937fdb38e1f586ff0679003adac0d9dad\n(cherry picked from commit e78deef364d952dd1141a2f3067a12060aaf11e6)\n"
    },
    {
      "commit": "284ae3559ed909613b189b98bdc3efab94373a30",
      "tree": "7f525b5244599a2caa7692d3d179dde4bbb61fe3",
      "parents": [
        "df196131f3c16f1eddb1542c7e04c675e7f1fbda"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 08 10:47:13 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 09 13:54:01 2015 -0800"
      },
      "message": "Add permitted_when_isolated_path to linker namespaces\n\nThe permitted_when_isolated_path is a way to white-list\ndirectories not present in search-path. It is ignored for\nnot isolated namespaces.\n\nBug: http://b/25853516\nBug: http://b/22548808\nChange-Id: Ib1538037268eea69323ea49968a34a4a1d1938a5\n"
    },
    {
      "commit": "1ffec1cc4d0e283bb1ff6f49843769a3493b8d73",
      "tree": "083c8af007b9a2e2ed01fbde2eea50ded648e114",
      "parents": [
        "a7fc7f9909c221a0f64c5c5ecc5fadd5fba467c5"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 23 11:26:35 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 23 16:13:10 2015 -0800"
      },
      "message": "Introduce anonymous namespace\n\nThe anonymous namespace is introduced to\nhandle cases when linker can not find the\ncaller. This usually happens when caller\ncode was not loaded by dynamic linker;\nfor example mono-generated code.\n\nBug: http://b/25844435\nBug: http://b/22548808\nChange-Id: I9e5b1d23c1c75bc78548d68e79216a6a943a33cf\n"
    },
    {
      "commit": "42d5fcb9f494eb45de3b6bf759f4a18076e84728",
      "tree": "8f653810d3ddecf30bb0b744d4564d406808fe3e",
      "parents": [
        "ffe5c24c8693f1f4fc8edb68075fb36df558b801"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 29 17:01:24 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sun Nov 15 12:09:16 2015 -0800"
      },
      "message": "Introducing linker namespaces\n\nBug: http://b/22548808\nChange-Id: Ia3af3c0a167f1d16447a3d83bb045d143319b1e1\n"
    },
    {
      "commit": "126af757c6d6a6447c19236df8d98ba07f21996f",
      "tree": "b303f921749f2bb077096218b22ab20bf789d4be",
      "parents": [
        "6a4ddeb56ef2144e98437ae82f84b09ea785e411"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 07 16:34:20 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 27 11:27:34 2015 -0700"
      },
      "message": "Implement load at fixed address feature\n\nBug: http://b/24683631\nChange-Id: I3a39ab526c8f9e213339b60e135e5459d0f41381\n"
    },
    {
      "commit": "8a1162835597be38705b381ac34c07da17932568",
      "tree": "13fb64618cf74789d9f47d7d438eda0e3fd27607",
      "parents": [
        "d9dc13d4172516342ceebf1b16624ed9fdf3fca2"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jun 05 22:16:23 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 09 13:44:31 2015 -0700"
      },
      "message": "Add flag that makes linker honor min(p_vaddr)\n\nBug: http://b/21523078\nChange-Id: Ice72766fb6ad3bd333c32b496e7870121e17a763\n"
    },
    {
      "commit": "9b82136b987bc01224e3b42732334ea27c97d188",
      "tree": "036facba010c670c5d6bfc3fa9dbb2de0f28caf8",
      "parents": [
        "ab7c79e22e5495a2aa171047a044ce1037e461a9"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 02 16:03:56 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 03 10:50:48 2015 -0700"
      },
      "message": "Add ANDROID_DLEXT_FORCE_LOAD flag\n\n  This flag allows to force loading of the library\n  in the case when for some reason multiple ELF files\n  share the same filename (because the already-loaded\n  library has been removed and overwritten, for example).\n\nChange-Id: I798d44409ee13d63eaa75d685e99c4d028d2b0c1\n"
    },
    {
      "commit": "466dbe444446da0a8729ae9ac7294f54276e29d7",
      "tree": "6930e91366bb16c0b12197dbf9efd18b458d2eaf",
      "parents": [
        "3780aba6352affc7d2dcdad0737cb4254448fcae"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jan 28 18:16:08 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jan 29 17:30:40 2015 -0800"
      },
      "message": "Put back inline definitions if using an old API.\n\nAll these inlines were turned in to out of line definitions in L.\nThis brings us a step closer to being able to just use the current\nbionic headers for the NDK, rather than having many old versions of\nthem.\n\nChange-Id: Ie010bc727d78d3742abc577c70f6578db2e68625\n"
    },
    {
      "commit": "aad1a39dfbdbb3cd2f9b1ba7f5c65fe68f179065",
      "tree": "565e3947bbf06e4c8c2fb7797ab25f0468d36f03",
      "parents": [
        "7602628e972b90689b8f39e0c837cad28383bc2b"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 18 12:21:55 2014 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 01 15:44:24 2014 +0100"
      },
      "message": "libc: Fix headers to allow direct inclusion.\n\nThese headers are missing a few #includes to allow their direct\ninclusion from C\n\nhttp://b.android.com/79841\n\nChange-Id: Ifc712c17f4da70b26adb67d4d49ed659f53c3621\n"
    },
    {
      "commit": "a6c1279098f24a675d0df74ce1946f5d534b425e",
      "tree": "093d8cf0f5610eaf29dad4415236baefda00f5ef",
      "parents": [
        "8f41d3d3bc7cf2375e5dd9202da619fd67a5928f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 21 12:09:18 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 21 13:51:08 2014 -0700"
      },
      "message": "Rename library_offset to library_fd_offset\n\n replace lseek() and use pread() instead\n add test for library_fd_offset \u003e file_size case\n\nBug: 17762003\nChange-Id: I4555f0be635124efe849c1f226985bcba72ffcbd\n"
    },
    {
      "commit": "07e5bc152d8a3ad4c50808bb86f3c0f2c5e2f514",
      "tree": "0d80ab6a46252135b3550f82766d300fe5284cfa",
      "parents": [
        "d5df4124bbbb30411ef19f7c2fbb3987d0eb9630"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 03 17:52:44 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Oct 06 10:02:34 2014 -0700"
      },
      "message": "Add file_offset parameter to android_extinfo\n\nBug: 17762003\nChange-Id: I8fb267a3155acef3dba534038cf5d1ef00d7154b\n"
    },
    {
      "commit": "3a25ab952befbe908f6df45805683ebe3bf65863",
      "tree": "1d80288dbaf200e247e7b8367451ac473f99a128",
      "parents": [
        "17f83c93cbbde3e38a03182931f40b7390061a7d"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Aug 19 11:06:33 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Aug 19 11:08:02 2014 -0700"
      },
      "message": "Missing #include \u003csys/cdefs.h\u003e.\n\nNeeded for __BEGIN_DECLS/__END_DECLS. Currently fine because it\u0027s being\nincluded after other files that do this.\n\nChange-Id: I1f12368fc461f6ef5ca90992cf19f317f0b5d7af\n"
    },
    {
      "commit": "ce6b1abbb1da797e716d8ec03da4e3b6304fd11d",
      "tree": "75acb30cfbe62bf3141fd01f7a37cc53c1d82dea",
      "parents": [
        "54d24e099c24d0811ae723640d4e12e9558cab73"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 18 14:37:42 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 18 14:37:42 2014 -0700"
      },
      "message": "Expose android_set_abort_message().\n\nRemoves the leading underscores from __android_set_abort_message() and\nmoves its declaration into a public header file.\n\nBug: 17059126\nChange-Id: I470c79db47ec783ea7a54b800f8b78ecbe7479ab\n"
    },
    {
      "commit": "3a8646fc5d9f1a9304251a1d1c8ff9e523d81b40",
      "tree": "337867e4fdbe7af8537462870d673664789165d9",
      "parents": [
        "7244a8610a1b6f7cb38336696e15e2e4ee04613c"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 08 11:21:56 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 08 11:24:03 2014 -0700"
      },
      "message": "Change android_dlextinfo flags to uint64_t\n\nChange-Id: Id27e8f8e58dbcf6ae79644f2ad3af3dd0aef9ae7\n"
    },
    {
      "commit": "04dc91ae763adc403a14c88b4c46f77b3d2d71a3",
      "tree": "aa8c5774929f43e2a13e308f93df4c65744f777d",
      "parents": [
        "4d299a2cf7880789e658f427196d1ca9fe02a9bc"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 01 14:10:16 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jul 02 13:20:47 2014 -0700"
      },
      "message": "Load library using file handle.\n\n * This patch enables dlopen by file descriptor\n   instead of path/name.\n\nBug: 15984217\nChange-Id: Ib39051e00567fb97070bf96d8ce63993877c0a01\n"
    },
    {
      "commit": "4aa2e6a32a1ab90dc5baa626f6efc0feb9082716",
      "tree": "c5b8bc72c189ea2f6548c7379cde40005b68519e",
      "parents": [
        "837abf04667c29db178fd28f500537429a18be30"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 07 12:37:44 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 07 12:57:51 2014 -0700"
      },
      "message": "Give bionic\u0027s __ANDROID_API__ a more reasonable value.\n\nThis matches what frameworks/base does with Build.VERSION and means that\nbionic\u0027s version number will always sort \u003e\u003d than any released version.\nThis should prevent confusion in code that builds both against bionic\nand the NDK.\n\n(Note that \u003csys/cdefs.h\u003e drags this in, so it\u0027s always in the namespace.)\n\nBug: 14613709\nChange-Id: I91fb745920e848a6b20f2f5797c0a7d6cde6c032\n"
    },
    {
      "commit": "183ad9df536ab04ef35a397a1f4724e4e401d11f",
      "tree": "65c76a120390c1350ff1d38b725b54cabd91c06b",
      "parents": [
        "12bbb9164578b6512b8b07a3fb093858244b7c7b"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Feb 27 13:18:00 2014 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Apr 17 14:30:46 2014 +0100"
      },
      "message": "Allow sharing the RELRO section via a file.\n\nAdd flags and a file descriptor to android_dlopen_ext() to allow writing\nthe RELRO section of the loaded library to a file after relocation\nprocessing, and to allow mapping identical pages from the file over the\ntop of relocated memory in another process. Explicitly comparing the\npages is required in case a page contains a reference to a symbol\ndefined in another library loaded at a random base address.\n\nBug: 13005501\nChange-Id: Ibb5b2d384edfaa5acf3e97a5f8b6115c10497a1e\n"
    },
    {
      "commit": "12bbb9164578b6512b8b07a3fb093858244b7c7b",
      "tree": "2a32dc3fe2902444aed43647f0ab1d2612507296",
      "parents": [
        "012cb4583a5f8564059142bb1900ea3a31e7cfa9"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Feb 06 14:34:21 2014 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Apr 17 14:22:17 2014 +0100"
      },
      "message": "Support loading libraries to a reserved address.\n\nAdd flags and parameters to android_dlopen_ext() to allow loading a\nlibrary at an already-reserved fixed address. If the library to be\nloaded will not fit within the space reserved, then the linker will\neither fail, or allocate its own address space as usual, according to\nwhich flag has been specified. This behaviour only applies to the\nspecific library requested; any other libraries loaded as dependencies\nwill be loaded in the normal fashion.\n\nThere is a new gtest included to cover the functionality added.\n\nBug: 13005501\nChange-Id: I5d1810375b20fc51ba6a9b3191a25f9792c687f1\n"
    },
    {
      "commit": "012cb4583a5f8564059142bb1900ea3a31e7cfa9",
      "tree": "60d2a27a83766f6ad6d20b124feb0bc48a332593",
      "parents": [
        "26c2bb84dd5cbd9ab43a5f0ebc2635bc3b64be3d"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Feb 06 14:34:21 2014 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Apr 17 13:50:55 2014 +0100"
      },
      "message": "Add android_dlopen_ext() interface to linker.\n\nAdd a function \"android_dlopen_ext()\", defined in \u003candroid/dlext.h\u003e.\nThis is an extended version of dlopen() which takes a struct for passing\nadditional parameters for Android-specific functionality. This will be\nused to support RELRO section sharing between separate processes.\n\nBug: 13005501\nChange-Id: I9c99b2f2a02ee329dedaeba09ef3a1113b17b2d6\n"
    },
    {
      "commit": "23d24394e72715ddf580726655c8ba3fbcf11bfe",
      "tree": "66d28b315a0891c1ea5e99e870ca03e511d3186c",
      "parents": [
        "9962cef7c6ba20bcb4d4f5e6a4c923aa335d9107"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:05:11 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:05:11 2010 +0100"
      },
      "message": "libc: Add \u003candroid/api-level.h\u003e\n\nAdd a new header that defines __ANDROID_API__ as a constant integer\ncorresponding to the current native API level. This header is included\nby \u003csys/cdefs.h\u003e\n\nChange-Id: Ib4774e247b395991266245815a24292afc919848\nNOTE: This header is already provided by the NDK\u0027s platform headers.\n      for levels 3 to 9.\n"
    }
  ]
}
