)]}'
{
  "log": [
    {
      "commit": "c88331b062803cf2a5257e41b9e38c6a2ea25122",
      "tree": "b46535897888d14c00dea3a16672987feec52064",
      "parents": [
        "a6bf7f2ee355559ec95378c7290702290aafb73c"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Fri Dec 20 10:27:45 2019 -0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Mon Dec 23 07:22:48 2019 -0800"
      },
      "message": "versioner: Add versioner_fortify_inline annotation\n\nThis commit adds versioner_fortify_inline annotation.  This annotation\nindicates that the annotated function is an overloaded inline function\nfor _FORTIFY_SOURCE implementation.  They are usually enabled/disabled\nby the enable_if attribute, thus the versioner don\u0027t have to check\nwhether they have conflicting definitions.\n\nBug: 118991081\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: If5c739fc0c8a218907855939c1fe5338134da7f7\n"
    },
    {
      "commit": "a6bf7f2ee355559ec95378c7290702290aafb73c",
      "tree": "46e5291f90223f14ac9333a66e192b202b9038d3",
      "parents": [
        "d98dac41df84e3f99d9a2e2bf158dc29ca7edf53"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Nov 27 07:24:42 2019 -0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Mon Dec 23 07:14:05 2019 -0800"
      },
      "message": "versioner: Add a built-in macro for conditional compilation\n\nThis commit adds a built-in macro for conditional compilation because\n__attribute__((annotate(...))) may pull unused static inline functions\ninto object files.\n\nWe must not generate those functions in object files because it can\nresult in undefined references to __strchr_chk on linux_glibc.\n\nBug: 118991081\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: I0c9d967413ec8e8655e91316973a79b81e2129b1\n"
    },
    {
      "commit": "1da9f9646374d05ad54d60138a9b8e0ae0ae9241",
      "tree": "4676a817e287c1df3d5bbfeab6772a229e43a67c",
      "parents": [
        "1752b5b9c0f2ae3845278e72d7ac9f83e33f0e32"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Dec 05 14:00:44 2019 -0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Dec 05 14:03:05 2019 -0800"
      },
      "message": "versioner: Migrate to clang-r370808\n\nBug: 139945549\nTest: lunch aosp_arm64-userdebug \u0026\u0026 \\\n      m versioner \u0026\u0026 \\\n      PATH\u003dout/host/linux-x86/bin:$PATH \\\n      ./bionic/tools/versioner/run_tests.py\n\nChange-Id: I1a548de9d1ce82aee30144a359e215a4daf5fc2b\n"
    },
    {
      "commit": "f7db8507ee547721a434499cfcb2ebe70c666974",
      "tree": "21b74717e5bea0c4b9c27e3f4d7b7e8097426b0a",
      "parents": [
        "590bdbe6e938e1bc53b09674b7eedde440863f11"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 14:35:34 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 14:35:34 2019 -0800"
      },
      "message": "Restore _FORTIFY_SOURCE in versioner.\n\nBug: http://b/118991081\nTest: treehugger\nChange-Id: I2818d8c27ecc5a48666013cdd0eaa26ec7900688\n"
    },
    {
      "commit": "5bd4f335a5f0ea4d2e1ade6d3def4099e63c5072",
      "tree": "2535504163d3157b45b3821dfef3c7e49a4166d6",
      "parents": [
        "e6c3f0628c61fae8db1cce2b90d6ae4cb77a7cec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 17 16:41:20 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 17 16:41:20 2019 -0700"
      },
      "message": "Remove bionicbb.\n\nTurned down years ago, and we can get it from the history if we ever\nneed it again...\n\nTest: N/A\nChange-Id: I6923bd4cbc68139e0b89149280864b9da422013d\n"
    },
    {
      "commit": "8fd8b999783aacd73c8164c3453d6c6212907fb1",
      "tree": "ea91f94264e0dce8ea3de088b6877e166a7253bf",
      "parents": [
        "c071fe40899c9374a1ea143c4b6264cf05788d9d"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Aug 27 10:45:42 2019 -0700"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Aug 27 11:54:28 2019 -0700"
      },
      "message": "versioner: Add R to codename map\n\nThis commit adds \"R\" to codename map because `libc.map.txt` started\nusing \"introduced\u003dR\".\n\nTest: PATH\u003dprebuilts/clang-tools/linux-x86/bin:$PATH \\\n      ./bionic/tools/versioner/run_tests.py\nBug: 140110040\n\nChange-Id: Ibc1154557c29d9580b5c527160116b24fa4c656f\n"
    },
    {
      "commit": "c071fe40899c9374a1ea143c4b6264cf05788d9d",
      "tree": "8c036a18c873530c75e218d357103555145221cc",
      "parents": [
        "74a62838fbaf0cc9286969506606c697b956ae33"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Aug 27 09:53:53 2019 -0700"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Aug 27 09:53:53 2019 -0700"
      },
      "message": "versioner: Update clang prebuilts to clang-r365631\n\nThis commit ports bionic version to clang-r365631.\n`clang::CompilerInstance::setVirtualFileSystem(VFS)` has been replaced\nby `clang::CompilerInstance::createFileManager(VFS)`.\n\nTest: OUT_DIR\u003dout ./prebuilts/clang-tools/build-prebuilts.sh\nBug: 140110040\nChange-Id: Ia833d502765dd9885eb85026d513bdfdee3756f3\n"
    },
    {
      "commit": "584bc626b65edc09ca8a23426403e736a67599e9",
      "tree": "8705e7f3b9da6ea58b7d8ee330ef572b8e6e276a",
      "parents": [
        "75f7b06454f9a0f0ebc232605e8faec4ac0db4ee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 19 14:18:07 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 19 14:18:07 2019 -0700"
      },
      "message": "Move libdl and linker to static NOTICE files.\n\nThe libstdc++ directory has no copyright headers, so it was a no-op\nanyway.\n\nThe interesting part will be switching libc and libm over to genrules...\n\nTest: N/A\nChange-Id: Iec92562af40c451fdcb4a7468984878ec5dba2ce\n"
    },
    {
      "commit": "032aed9f4b6727bba3b5012d6232544490d35230",
      "tree": "51ea08110c967e522a6649a81aa928bac97535fc",
      "parents": [
        "be128f38d697ebb2f1483208eb27540dbdd6a3b4",
        "782c4858807869528577e26f98f68a2c2d0b5977"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 17 15:11:15 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 17 15:11:15 2019 +0000"
      },
      "message": "Merge \"Generate assembler system call stubs via genrule.\""
    },
    {
      "commit": "7d8c4602fb2e95b9792b556db3f96b96f321d1c9",
      "tree": "3e8cb8c4009756af9ddc49bf35d274226248002f",
      "parents": [
        "b9a7c651f178323e27752406f89d741cfb143e61"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 16 12:34:03 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 16 12:34:03 2019 -0700"
      },
      "message": "Remove dead script.\n\nThis is already handled by genrules.\n\nTest: N/A\nChange-Id: I123a971486431cc2b888df515b7bda8e408fa876\n"
    },
    {
      "commit": "782c4858807869528577e26f98f68a2c2d0b5977",
      "tree": "fe65cc99aaabbba2a7963c9f23b8573c81bc0a9e",
      "parents": [
        "b9a7c651f178323e27752406f89d741cfb143e61"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 16 12:31:00 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 16 12:31:00 2019 -0700"
      },
      "message": "Generate assembler system call stubs via genrule.\n\nThere\u0027s no need to check in generated code.\n\nTest: builds \u0026 boots\nChange-Id: Ife368bca4349d4adeb0666db590356196b4fbd63\n"
    },
    {
      "commit": "6b6a6c8407e9ecfaefd3bd35d41a8fb48fa3645d",
      "tree": "5f3c3ae6d309330047ecab784da63d340e79fe65",
      "parents": [
        "d1ff49c24afb1bb09925cda295d2bb52d514f879"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 10:42:19 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 10:42:19 2019 -0700"
      },
      "message": "Remove seccomp upload hook.\n\nWe switched to genrules already, and the lack of `set -e` in the script\nmeans that no-one\u0027s even noticed that this script has been failing since\nthen...\n\nTest: N/A\nChange-Id: Ie57cc97ab4e1003a106d4667cd404d22f0ee68a2\n"
    },
    {
      "commit": "358603a40908415d5fe780f9321ba7d6b9941638",
      "tree": "4485083508172c6474755333b0edd99ad7c7da0f",
      "parents": [
        "3e742cb6133ad37ce28e8f0bffdf70f763ed45a3"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Mar 29 14:25:16 2019 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Mar 29 14:27:27 2019 -0700"
      },
      "message": "Modernise code to use override specifier\n\nGenerated by clang-tidy.\n\nTest: m checkbuild\nChange-Id: I8e23da6b8af31b291be2eefe9937ca222ea8a8c3\n"
    },
    {
      "commit": "5270017ab30fda270cdff4e096adfab539bf90fe",
      "tree": "ffd2a39d65baf6c8bc49ff489ea00e438ab26297",
      "parents": [
        "0ab20442e49316899050d3af72257d5f483761d0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 13:34:21 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 13:34:21 2019 -0700"
      },
      "message": "Remove __INTRODUCED_IN_FUTURE.\n\nThis hasn\u0027t been particularly useful, we haven\u0027t used it consistently,\nand it has caused trouble.\n\nTest: builds\nChange-Id: Ic5b5b5124af98aa8301e602fd75b0eb72a5fc7f6\n"
    },
    {
      "commit": "2ae246d0d142b4d6a096ab7adfab0d03e03edd59",
      "tree": "f4ea2a477f97f7ffac80af7a63726102c257b7da",
      "parents": [
        "1b82812635e35667df9d28e7416d4b02c2083dfe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 15 13:24:09 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 15 13:24:09 2019 -0800"
      },
      "message": "Remove unused .mk file.\n\nTest: treehugger\nChange-Id: I5e560247e466dd2fe0038e787756f5a47461f240\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": "f42616d765b4ee5541523b564df21964894efca7",
      "tree": "e966a61297b078ad29551414322da530ac5cf65f",
      "parents": [
        "998175dc6f45e401746fb420c7c245ef8eb074c4"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 04 23:51:10 2018 +0000"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 04 23:51:44 2018 +0000"
      },
      "message": "Revert \"Work around bugprone-exception-escape bug.\"\n\nThis reverts commit 153b71c4073e9512e8315673cdbd835b0646af87.\n\nReason for revert: fixed in clang-r346389\nBug: 117120485\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003dbugprone-*\n\nChange-Id: I49971e4227d6d5772efccd551d493a0f1e68416a\n"
    },
    {
      "commit": "aef762aee1acfdd8083947041e7aed4ceacb1426",
      "tree": "49bcda04925d56da91bbd933b1ef91ea52e8c86c",
      "parents": [
        "c69218d47ed3f915357fb3782dd0a528efc745e5"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Dec 04 17:17:51 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Dec 04 17:20:22 2018 +0800"
      },
      "message": "versioner: Use llvm::opt::ArgStringList\n\nThis commit replaces `clang::driver::ArgStringList` with\n`llvm::opt::ArgStringList` because starting from r344398, the alias for\n`llvm::opt::ArgStringList` has been removed from the `clang::driver`\nnamespace.\n\nNote: This is a step to port clang tools to clang-r346389.\n\nSee also. https://reviews.llvm.org/rL344398\n\nBug: 119558057\nTest: cd bionic/tools/versioner; mma; ./run_tests.py\nChange-Id: I9b5ff572a9af6c6ffaf2c4c9cb01c97f4b85ac22\n"
    },
    {
      "commit": "9a9db3444f772a7f14847790af0fd1a80b938091",
      "tree": "7fd620f3a9fa756e3188e96773da986263d11165",
      "parents": [
        "c466664c4703fdb9e540c33bd31e0b44d88d891d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 03 09:29:36 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 03 09:29:36 2018 -0800"
      },
      "message": "C++17 is the default now.\n\nTest: builds\nChange-Id: I283ae69a69da95f20ee924885321677c6d5f4429\n"
    },
    {
      "commit": "6c148d17e570cbb2a67516a07341286bc2213b50",
      "tree": "30e70600f6c1261fef215b02bc7569bee4aa406a",
      "parents": [
        "0c39bd468d3aa19b3e27937b36b101cc4aa65dab"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Nov 07 10:35:38 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Nov 07 10:35:38 2018 +0800"
      },
      "message": "versioner: Port to clang-r344140\n\nThis commit updates bionic versioner to use clang-r344140.  To be\nspecific, this commit renames `clang::vfs::FileSystem` to\n`llvm::vfs::FileSystem` and updates the headers.\n\nBug: 111759196\nTest: bionic/tools/versioner/run_tests.py\nChange-Id: I304ecae79da5a1638ae755dac92b52e314019cf1\n"
    },
    {
      "commit": "c16d65d70e7e6501529ece4780815b527cc552c2",
      "tree": "3a6067c9735bb03300ea454571d0be6e5c553762",
      "parents": [
        "d6ac79300d2dc777b1df7345e68d5ad04e5e666c"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Oct 23 22:05:28 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Oct 31 14:53:30 2018 +0800"
      },
      "message": "versioner: Port to clang-r339409b\n\nThis commit ports versions to clang-r339409b and utilizes\n`libclang-cxx.so`.\n\nBug: 113263746\nTest: ./bionic/tools/versioner/run_tests.py\nChange-Id: Ib104a6c8c2c69df51cfa2760dbca125f4cfa054b\n"
    },
    {
      "commit": "9c123230e22d8fe9f691a72cc74def92d302a021",
      "tree": "cfcccc4d3116a42b26ed85c134a1d82a40ef31c2",
      "parents": [
        "3fc86c158f841de1befee1390de09007d279efad"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Oct 23 10:47:17 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Oct 25 14:54:39 2018 +0800"
      },
      "message": "versioner: Build SymbolDatabase from version scripts\n\nThis commit adds a version script parser so that versioner can build\nSymbolDatabase from version scripts.\n\nBug: 113263746\nTest: ./bionic/tools/versioner/run_tests.py\nChange-Id: Iedcfe36b51a62693668e07b86aa13592096262db\n"
    },
    {
      "commit": "3fc86c158f841de1befee1390de09007d279efad",
      "tree": "24497f014e7a707f21507fe7f770ae929cfc12ab",
      "parents": [
        "aede30d316fae9399c52b26e70f7e71fdb965412"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Oct 23 15:04:00 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Oct 23 21:47:39 2018 +0800"
      },
      "message": "versioner: Add 28 to version list\n\nThis commit adds 28 to version list so that we can pass\nslow_preprocessor_idempotence.  If 28 is not in the version list,\nversioner will add another `#ifdef` guard and fail the test.\n\nBug: 113263746\nTest: ./bionic/tools/versioner/run_tests.py\nChange-Id: I3f21fc71ffd9e55326c4587bbc5e689eb72596b6\n"
    },
    {
      "commit": "153b71c4073e9512e8315673cdbd835b0646af87",
      "tree": "9a0353d718ca70fcecc5c605bd50b48d7a0ab725",
      "parents": [
        "05ba56d6c0811928b555393e912b1080bc90c923"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 01 16:16:02 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 01 16:17:44 2018 -0700"
      },
      "message": "Work around bugprone-exception-escape bug.\n\nBug: 117120485\nTest: build with WITH_TIDY\u003d1 and global bugprone-* checks.\nChange-Id: I28aa2a176bd7d2ae4961877a8122a09666d85237\n"
    },
    {
      "commit": "386ae3aff6200dcadce2693996bb2dacfe236428",
      "tree": "7f5066a484b6a99dbdcc8df31f67b9746e851100",
      "parents": [
        "52a7e7e1bcb7513ddf798eff4c0b713c26861cb5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 22 15:52:27 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 22 15:52:27 2018 -0700"
      },
      "message": "Remove relocation_packer.\n\nWe\u0027ll be using the lld built-in relocation packing going forward.\n\nBug: http://b/110715614\nTest: builds\nChange-Id: Ib3c086b642b8e3ab1dac022c0edef3b91665e477\n"
    },
    {
      "commit": "5cec377f49d6429b19895eb632225cd757ea611e",
      "tree": "bcd08fe1e6b656a5a4e235a225fbe88feb54a112",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:45:23 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:56:12 2018 -0800"
      },
      "message": "Address a bunch of clang-tidy complaints.\n\nThere were a bunch more unreasonable/incorrect ones, but these ones\nseemed legit. Nothing very interesting, though.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f\n"
    },
    {
      "commit": "4d1cc9df119e017abb4f71b9198e5024afd2d7ad",
      "tree": "d985346e036a46931b0c370ed6ed1524279116ba",
      "parents": [
        "558a4f59237245916d93075eb60ed7d16cf55c42"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jan 08 14:44:42 2018 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jan 08 14:44:42 2018 -0800"
      },
      "message": "Adapt to the new libc++/libc++abi update.\n\nC++17 removed a handful of things that are used in the libclang\nheaders, which are used by the versioner. Enable the flag that\nre-exposes these until we have a C++17 compatible libclang.\n\nAdd a stub posix_memalign to the linker. libc++abi uses posix_memalign\nwhen allocating exceptions, which the linker does not use.\n\nTest: make checkbuild\nBug: None\nChange-Id: I32f9d0591ef99a610f27efed90a5c9fd150f0d3e\n"
    },
    {
      "commit": "c166113c2bb9a96ec1abdaabbaf47a88718143c7",
      "tree": "584ff1331938e0896ca0032ac4448888dc67a8a5",
      "parents": [
        "e57a398977c3523a16fbb4760e98119ccb6510be"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Dec 12 11:51:32 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Dec 12 12:01:22 2017 -0800"
      },
      "message": "versioner: remove parsing of platforms.\n\nLeave the machinery to use a symbol database around so that we can\nswitch over to parsing libc.map.txt in the future.\n\nTest: tools/versioner/run_tests.py\nChange-Id: Ifa8899b698764e4aeb6aa8bb2cdb2d44a67b863f\n"
    },
    {
      "commit": "c6fa2c392548936165b71088afec74bf11512be4",
      "tree": "76d8393080eff48f2799483cea5e259b8e9bf32f",
      "parents": [
        "ccea8430848833b60ad95488f4a7b48065c6e54c",
        "ac5603a979248dda5173bc889c9ae1fc338a358e"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Nov 09 21:59:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 09 21:59:54 2017 +0000"
      },
      "message": "Merge \"Make versioner depend on lib{LLVM,clang}_android.so\""
    },
    {
      "commit": "8e13b67c64df389ce72bcb02ab3e1888da48f254",
      "tree": "267672ca0200e822e6139271abd404893880e754",
      "parents": [
        "db4f3346958684424815720ca00a56c75fc536e0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Nov 06 17:15:47 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Nov 06 17:23:36 2017 -0800"
      },
      "message": "versioner: properly handle extern \"C\", \"C++\".\n\nextern \"C\" and \"C++\" are parsed as a LinkageSpecDecl with the real Decl\nas a child node. This leads to the preprocessor sticking its guard\nbetween the extern specifier and the declaration.\n\nUpdate the AST visitor to add a special-case for calculating the\nSourceRange on a LinkageSpecDecl, and add a test.\n\nBug: https://github.com/android-ndk/ndk/issues/440\nTest: python run_tests.py\nChange-Id: I76445fe366cef46cfd2f16fb93d534d410c5edca\n"
    },
    {
      "commit": "ac5603a979248dda5173bc889c9ae1fc338a358e",
      "tree": "38a784fc9ee5f2601f40fc4bf1ed66a57d1477d3",
      "parents": [
        "c18f55ca2b9cc61bca1ab187a806e859ca2651b8"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Aug 03 11:33:56 2017 -0700"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Mon Nov 06 11:26:57 2017 -0800"
      },
      "message": "Make versioner depend on lib{LLVM,clang}_android.so\n\nBug: http://b/64121881\n\nThe modules built in the Android tree are now named\nlib{LLVM,clang}_android.so.  Let versioner depend on these temporarily\nbefore eventually depending on the prebuilt libraries.\n\nTest: aosp_marlin checkbuild with FORCE_BUILD_LLVM_COMPONENTS set and\nunset.\n\nChange-Id: I4e04dd2c74a19e0918f81bac04c1daee63ed6b24\n"
    },
    {
      "commit": "564ed96cafa3f95902ca213778bd804f3ab1502d",
      "tree": "dfd18d903103d166f1f2069d2f35f6b4d00cccdb",
      "parents": [
        "261dbdf1d0d7891072943ed6d5b33d365f087b92"
      ],
      "author": {
        "name": "Sergii Piatakov",
        "email": "sergii.piatakov@globallogic.com",
        "time": "Thu Nov 02 17:55:20 2017 +0200"
      },
      "committer": {
        "name": "Sergii Piatakov",
        "email": "sergii.piatakov@globallogic.com",
        "time": "Thu Nov 02 20:41:59 2017 +0200"
      },
      "message": "tools: fix error when `/bin/sh` isn\u0027t `bash`\n\nThe following scripts use `bash` specific variable `${BASH_SOURCE[0]}`\nso this doesn\u0027t work correct in case when `/bin/sh` isn\u0027t `bash`.\n\nTest: repo upload bionic\nChange-Id: I12ce0666f9404107dceb03960bad4ec11b14ba2d\nSigned-off-by: Sergii Piatakov \u003csergii.piatakov@globallogic.com\u003e\n"
    },
    {
      "commit": "ab25d0bd102f844338d7a4e0fb24e7f24d435e67",
      "tree": "8978a961f3c9ef311885198b9796b882d7914787",
      "parents": [
        "38685e188787e657f8b1f5962b963210ecca5ffa"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 10 10:50:33 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Oct 30 12:47:24 2017 -0700"
      },
      "message": "versioner: compile headers in both C and C++ mode.\n\nBug: https://github.com/android-ndk/ndk/issues/440\nTest: python run_tests.py\nChange-Id: Ib572a8fdcc00f6b88a25003a085b16ce9698d692\n"
    },
    {
      "commit": "38685e188787e657f8b1f5962b963210ecca5ffa",
      "tree": "9cad988b69a0ba19d47798924f1ff16a5b015f16",
      "parents": [
        "dfece7a3ee1b8a11abea3f55bf44df21ebc4bc79"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Oct 30 12:45:09 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Oct 30 12:47:24 2017 -0700"
      },
      "message": "versioner: follow __asm__ labels.\n\nAttribute the versioning information on `void foo() __asm(\"bar\")` to\nbar, not foo.\n\nThe various long double functions in \u003cmath.h\u003e run into this.\n\nBug: https://github.com/android-ndk/ndk/issues/440\nTest: python run_tests.py\nTest: m\nChange-Id: Idd3681ddbd006b4705608449935c9cfacfa3556e\n"
    },
    {
      "commit": "35aa21352ec69678288d7ea6c18438baafa43b21",
      "tree": "782baaa1160ae6e4d5a96b8b0bdc05b4f9ce76c3",
      "parents": [
        "0062b3e60ad7cc529715f47285a1e9065364ba89"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 24 17:05:49 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 24 17:51:25 2017 -0700"
      },
      "message": "versioner: kill some obsolete versions.\n\nMake the selection of a non-default API level non-fatal, so that we\nwon\u0027t have to continually fix all of the tests every time we remove an\nAPI version.\n\nTest: versioner\nTest: python run_tests.py\nChange-Id: I96429584e352f7e012c5129da3c02dc1b4b30061\n"
    },
    {
      "commit": "0062b3e60ad7cc529715f47285a1e9065364ba89",
      "tree": "73707680cdbd1501125881e6a1e9e974716c94fa",
      "parents": [
        "5317f2d48b30bc02a21b3160562022d5169d5045"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 24 17:03:58 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 24 17:51:06 2017 -0700"
      },
      "message": "versioner: properly handle declarations with no identifier.\n\nSome declarations, like bitfield members, don\u0027t need identifiers.\n\nBug: https://github.com/android-ndk/ndk/issues/440\nTest: ran versioner with -x c++ on a manually reduced \u003clinux/timex.h\u003e\nChange-Id: Ic7eea780762cff653c54fdde4d10df203d630c25\n"
    },
    {
      "commit": "5317f2d48b30bc02a21b3160562022d5169d5045",
      "tree": "b04664324e629828b947de297a3e23f664af7617",
      "parents": [
        "34cf31a81ba5099a69327c5182ceb4a7fe46c2a2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 30 14:35:00 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 24 16:02:25 2017 -0700"
      },
      "message": "versioner: add extern \"C\" to tests.\n\nBug: https://github.com/android-ndk/ndk/issues/440\nTest: python run_tests.py\nChange-Id: Id893979146bc609a17bd1fa2a6bec6f10dfe4804\n"
    },
    {
      "commit": "84f0dcd59ee41b385e819b2563cbd1a7f8700cba",
      "tree": "cd9b9ab3ccdb207959abdde679a0d23dd53f2fea",
      "parents": [
        "b3639adf9ce41f520f7a64a5016e6ffc41ccd009"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 02 11:47:31 2017 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 02 13:21:22 2017 -0700"
      },
      "message": "Use -Werror in bionic\n\nBug: 66996870\nTest: build with WITH_TIDY\u003d1\nChange-Id: Ic68141a5c50880c485646e38349f94b866267bd9\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": "96510935697c2934427f0c14d0b153244e8cfb2b",
      "tree": "9d24bda7e80bb8a633651fa7ca646fe757c070c8",
      "parents": [
        "2e01f39c31e042482fbe10df79d8b2837ae79239"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 28 15:20:40 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 28 22:28:23 2017 -0700"
      },
      "message": "Run other maintenance scripts as part of the preupload hooks.\n\nAnd get back up to date by actually running them...\n\nBug: N/A\nTest: uploaded this\nChange-Id: I54fec461190e8570929fdcbcbf2746ddd6a4b293\n"
    },
    {
      "commit": "7ebc81f4a2b093c978d1f61db8c0af0adf1ec66e",
      "tree": "7f55523c8a9205bb6039814f0d1cdd3c4200c8bc",
      "parents": [
        "24c9c3f3800eb66640d95eaa251a97cf97d5f438"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Sep 21 16:58:15 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Sep 22 19:37:35 2017 +0000"
      },
      "message": "Fix error found building relocation packer for host bionic\n\nbionic/tools/relocation_packer/src/main.cc:109:7: error: comparison of constant\n-1 with expression of type \u0027typeof (read(fd.get(), e_ident, (16)) !\u003d (16))\u0027\n(aka \u0027bool\u0027) is always false [-Werror,-Wtautological-constant-out-of-range-compare]\n\n  if (TEMP_FAILURE_RETRY(read(fd.get(), e_ident, EI_NIDENT) !\u003d EI_NIDENT)) {\n      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nbionic/libc/include/unistd.h:243:18: note: expanded from macro \u0027TEMP_FAILURE_RETRY\u0027\n    } while (_rc \u003d\u003d -1 \u0026\u0026 errno \u003d\u003d EINTR); \\\n             ~~~ ^  ~~\n1 error generated.\n\nBug: 31559095\nTest: mmma bionic\nChange-Id: I473a19e3d51ff355233ae7f87b1013be069edb1f\n"
    },
    {
      "commit": "ad5c4e359611fc683a535d7167ee87dbe04a264b",
      "tree": "384531d05a9f9c655f17de25c5ecafa6f006e923",
      "parents": [
        "cf3b0c183d9a6910db6384e6f8095c414041ea0c",
        "113e9b1bc146f945274fa5b5088ebf45ea0b37d8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 18 01:55:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 18 01:55:39 2017 +0000"
      },
      "message": "Merge \"Fix out-of-bounds deque access causing build failure.\""
    },
    {
      "commit": "113e9b1bc146f945274fa5b5088ebf45ea0b37d8",
      "tree": "c5ca7ef20a765b819baa8fad26e8a9ec9303a722",
      "parents": [
        "b2688f4a2a25781efbef33a2f4b8bde2592a0a81"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 17 14:46:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 17 22:26:20 2017 +0000"
      },
      "message": "Fix out-of-bounds deque access causing build failure.\n\nBug: http://b/64802958\nTest: built successfully\n\nChange-Id: I8029826f0e4c7f578155d7db545e7786c76a0cdf\n"
    },
    {
      "commit": "1de2e358caf9a22359e38ab8573cc3e5dcc1602f",
      "tree": "4098a9c70235e18fc187e4972c91392a98fdc548",
      "parents": [
        "30438e4cea83628bcacbedff37a35398bb8b40e7"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Aug 15 11:03:07 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Aug 15 21:20:09 2017 -0700"
      },
      "message": "Enable FORTIFY in unoptimized builds\n\nGCC\u0027s FORTIFY required optimizations to be enabled in order to function\nproperly. Clang\u0027s FORTIFY doesn\u0027t have this limitation, so it seems\npointless to keep it disabled due to a GCC-specific limitation.\n\nBug: 12231437\nTest: Checkbuild on bullhead internal master + CtsBionicTestCases. No\nnew failures.\n\nChange-Id: I74aa35f9d3f3d2a6b11a7adfe72a787e3d7f7f36\n"
    },
    {
      "commit": "1db06faa3891bd056431a5aa8f27c5bc34ad7988",
      "tree": "34534e0d9ab0152ab0b095145df9d57e7c4d17e4",
      "parents": [
        "4dd33f92d82b9fb77152bfc68f312d2fa5710a28",
        "b97049c0390cb1a11b9cb0b14391972e69398ce5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 01 02:03:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 01 02:03:52 2017 +0000"
      },
      "message": "Merge \"libc: Split FORTIFY into its own headers\""
    },
    {
      "commit": "b1bbf2bb24caf85e85bc69ea3ead6bfb54bccfc6",
      "tree": "b06875108c5a5fe1b1b71a9a2d3917586669fb9e",
      "parents": [
        "8aa4bc7c558843ab3199792b0fde207195f66a2a",
        "d2ab9ffcb6a29f38cb007875520035fc70376847"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jul 29 16:36:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jul 29 16:36:33 2017 +0000"
      },
      "message": "Merge \"versioner: compile with `clang -include foo.h -`.\""
    },
    {
      "commit": "d2ab9ffcb6a29f38cb007875520035fc70376847",
      "tree": "eb6d6516effe78d4cd5002e703ee1f56bd4a7272",
      "parents": [
        "e76ff925df7d0b9aef84fe230c7497ff6a8fbba4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 28 12:53:36 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 28 12:57:16 2017 -0700"
      },
      "message": "versioner: compile with `clang -include foo.h -`.\n\nAt least one warning only triggers in files that are included, instead\nof being passed directly. Switch to compiling with -include, and fix\nthe resulting warnings.\n\nBug: https://github.com/android-ndk/ndk/issues/474\nTest: mma -j \u0026\u0026 versioner\nTest: python tools/versioner/run_tests.py\nChange-Id: I784698c18540c9cc30f372f279a1cec1d75721ea\n"
    },
    {
      "commit": "b97049c0390cb1a11b9cb0b14391972e69398ce5",
      "tree": "c331f88d0cb75e427564fdebd15738adf410f501",
      "parents": [
        "38bcf2b704eb5038668759d2dd37115aea1dc437"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jul 24 15:05:05 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jul 27 17:00:13 2017 -0700"
      },
      "message": "libc: Split FORTIFY into its own headers\n\nThis patch cleans up our standard headers by moving most of the FORTIFY\ncruft out in to its own sandbox. In order to include the *_chk and\n*_real declarations, you can either enable FORTIFY, or `#define\n__BIONIC_DECLARE_FORTIFY_HELPERS`.\n\nBoth sys/select.h and strings.h are explicitly ignored by this patch.\nBoth of these files have very small __BIONIC_FORTIFY blocks, and don\u0027t\ndefine any actual FORTIFY\u0027ed functions (just macros, and 3 *_chk\nfunctions).\n\nThis patch also makes the versioner ignore the FORTIFY implementation\nheaders, since we\u0027re guaranteed to pick the FORTIFY\u0027ed headers up when\nlooking at the regular headers. (...Not to mention that making the\nFORTIFY\u0027ed headers freestanding would be annoying to do and maintain for\n~no benefit).\n\nWe bake the knowledge of where FORTIFY headers live directly into the\nversioner. We could go with a more general approach (e.g. adding an -X\nIGNORED_FILE flag that tells the versioner to ignore\n$HEADER_PATH/$IGNORED_FILE), but we\u0027d then have to repeat that for every\ntest, every manual invocation of the versioner, etc. for no benefit\nthat\u0027s obvious to me.\n\nBug: 12231437\nTest: m checkbuild on bullhead internal master + CtsBionicTestCases. no\nnew errors.\n\nChange-Id: Iffc0cc609009b33d989cdaddde0a809282131a5b\n"
    },
    {
      "commit": "0acb63aaa636651deb5d55217633065ee50a7eee",
      "tree": "2bd4e648eb73e4e3c02ff405c06f647faaec4d48",
      "parents": [
        "ddefae7ba92c40d60f2401e010e7789bee6f260d"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jul 11 16:51:45 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jul 11 17:00:09 2017 +0200"
      },
      "message": "Properly handle elf-files without relocation sections\n\nRelocation packer no longer complains about missing\nrelocation sections.\n\nTest: relocation-packer-unit-tests\nTest: mm\nChange-Id: I56814be326c15e046db1a96d14568d951f689ae2\n"
    },
    {
      "commit": "05fd20c797c0aab700183131023130e45a748a47",
      "tree": "8572db00e4fa83d6569aa9d2f4d3df61aab472d9",
      "parents": [
        "5725481f1e4cb2e2042b5469b5863023556cf2dd",
        "b50b8c888618c4da4bde8490206d1706a5882542"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 04 04:08:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 04 04:08:22 2017 +0000"
      },
      "message": "Merge changes Ia7200bf0,I86999bb7\n\n* changes:\n  versioner: fix leak.\n  versioner: add symlink for dependencies.\n"
    },
    {
      "commit": "d10d3eece155670d5922b27f99f92c487b6682a4",
      "tree": "9e75f7d8181c8b95a46050dde40551c94723bbd6",
      "parents": [
        "fd478a8cba97680974494bc72727fba6d8136805"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 28 19:32:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 01 16:31:51 2017 -0700"
      },
      "message": "versioner: disable container overflow checks\n\nTemporary workaround.\n\nBug: 37775238\nTest: ASAN_OPTIONS\u003d SANITIZE_HOST\u003daddress m\nChange-Id: If9e9df45d83f8412caafcece87337a5c9df3a1c8\n"
    },
    {
      "commit": "b50b8c888618c4da4bde8490206d1706a5882542",
      "tree": "cf47be17871fe84e11a2d65d9898a33d7cc4442d",
      "parents": [
        "0be1dabfc66e884c91bb93d4e96c10f3577385c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 27 17:22:52 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 27 17:25:32 2017 -0700"
      },
      "message": "versioner: fix leak.\n\nReplace an intentional leak of a buffer allocated by realpath with a use\nof android::base::Realpath.\n\nBug: http://b/37727515\nTest: tools/versioner/run_tests.py\nChange-Id: Ia7200bf0e1c485050e860e21ff15784941366bec\n"
    },
    {
      "commit": "0be1dabfc66e884c91bb93d4e96c10f3577385c0",
      "tree": "b68a9d1d8cf12049947d9911b3248210451d6b4b",
      "parents": [
        "e54e64bd605f74936e1b8b6f5bf525b77abba00d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 13:02:57 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 27 17:25:23 2017 -0700"
      },
      "message": "versioner: add symlink for dependencies.\n\nAdd a symlink where dependencies used to live, so that `versioner`\nworks.\n\nTest: versioner\nTest: tools/versioner/run_tests.py\nChange-Id: I86999bb79baad16039709306591cb9540fb533ca\n"
    },
    {
      "commit": "06be3459cadb085cbecd0c2f8ce5e78ab6dbc307",
      "tree": "d78f996ebc34ebec205b476ee4b4f36a1199277b",
      "parents": [
        "5deddda68e780aaa26e4777378fee10d543eb719"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Apr 20 14:27:28 2017 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Apr 26 10:44:12 2017 -0700"
      },
      "message": "Update bionic after Clang rebase\n\nAfter the new rebase of Clang, we now supports alloc_size attribute, so\nwe can remove the warning about switching to alloc_size once Clang has\nsupport.\n\nCompiler.setInvocation has changed argument type from raw pointer to\nshared pointer. Add version check here so that we can build under either\nold rebase or the new rebase.\n\nTest: build\nBug: 37423073\nChange-Id: I4563eaf93bae6c59a4a19318f8caa92bd361b3ab\n"
    },
    {
      "commit": "ff6c8de4f51536855a05b71ff336257a36d7c215",
      "tree": "9cb372ce38225bfa50d65f34b789cf691e4938de",
      "parents": [
        "627ed9162538d847ea4e530fd443570d37f57d65"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Apr 20 09:08:11 2017 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Apr 20 14:37:56 2017 -0700"
      },
      "message": "Remove unused lambda captures\n\nClean up. This fixes build under -Wunused-lambda-capture.\n\nTest: build\nChange-Id: Ic12aa39e14ed55dbb28cf55303f9c4258179037d\n"
    },
    {
      "commit": "a07033e0dc9cc0f3144954afda67103942216149",
      "tree": "698d8321b60e81f50a799ba1c88298bfce5963e9",
      "parents": [
        "c40af334c7f2e76c3a34824a17ea3803caedbd7d",
        "8ef9874d564e1de25057817b43a5ef6f5065b458"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 06 23:35:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 06 23:35:52 2017 +0000"
      },
      "message": "Merge \"versioner: fix LLVM assertion failure.\""
    },
    {
      "commit": "8ef9874d564e1de25057817b43a5ef6f5065b458",
      "tree": "0dda79ba52c176dd0865692c88490adcdaee7ac7",
      "parents": [
        "4df5ca1e0254790d41f945352a93f5c783ea8de0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 06 12:57:22 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 06 13:37:56 2017 -0700"
      },
      "message": "versioner: fix LLVM assertion failure.\n\nMemoryBuffer::getOpenFileSlice asserts that the map size passed in\nisn\u0027t -1 (presumably because the offset can be nonzero). Switch to\ngetOpenFile, which results in an identical call to the implementation\nfunction without the assert.\n\nBug: http://b/37002637\nTest: export FORCE_BUILD_LLVM_COMPONENTS\u003dtrue\n      export FORCE_BUILD_LLVM_DEBUG\u003dtrue\n      export FORCE_BUILD_LLVM_DISABLE_NDEBUG\u003dtrue\n      mma -j \u0026\u0026 versioner\n\nChange-Id: Ib610db9e07429aa3f64128eaef6ef555c4d1868e\n"
    },
    {
      "commit": "acc7921580522f759cba2ac782921d683665b6b9",
      "tree": "f6912c86aaba46713017c92e1e26b1b79a808ed6",
      "parents": [
        "d744a9bcd5128b106ba2f4cf991d4e6a510751e1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 11:48:55 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 12:41:35 2017 -0700"
      },
      "message": "versioner: remove useless log message.\n\nTest: tools/versioner/run_tests.py\nChange-Id: I70edafb7ad6a6274e7daa508903520dbb4b399c8\n"
    },
    {
      "commit": "d744a9bcd5128b106ba2f4cf991d4e6a510751e1",
      "tree": "82f74d961467e566390f821dc68abf89ea739496",
      "parents": [
        "3fcf747f1daefcd7995a3c22f42e9f5c987e7142"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 11:24:48 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 12:41:35 2017 -0700"
      },
      "message": "versioner: fix indentation in usage.\n\nTest: versioner -h\nChange-Id: I96cba65e53c564c8f47714c74d300e8f3dee7e82\n"
    },
    {
      "commit": "3fcf747f1daefcd7995a3c22f42e9f5c987e7142",
      "tree": "16ec78eb984d4876b5542a8c6f7db5fd3d768dfc",
      "parents": [
        "4df5ca1e0254790d41f945352a93f5c783ea8de0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 11:24:17 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 12:41:35 2017 -0700"
      },
      "message": "versioner: guard preprocessing messages with -v.\n\nBug: http://b/36751878\nTest: tools/versioner/run_tests.py\nChange-Id: I5142a33519b101548ccaec8a3bc498e446a648a7\n"
    },
    {
      "commit": "69cb22f4d73bf432d2b0bb78b74801c94b0824b5",
      "tree": "f8bb77baece5f1d97062dd5319edc646eadb6c03",
      "parents": [
        "22805ea9b843f1b56932be9508d179438d23427e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Mar 27 13:28:27 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Mar 27 13:28:27 2017 -0700"
      },
      "message": "Build the versioner even on unbundled branches.\n\nThis is needed to generate the NDK, so unbundled projects using the\nNDK need to build this. If they don\u0027t need the NDK, they should just\nremove bionic from their manifest.\n\nTest: make checkbuild\nBug: None\nChange-Id: I7db816c4a341cf34d4d11739dc64182af630ad63\n"
    },
    {
      "commit": "22805ea9b843f1b56932be9508d179438d23427e",
      "tree": "2504c07308e47a6c69b340b2f6433b42678ecf1f",
      "parents": [
        "840ae69408c9b6ca269bce4657b9696cc6720918"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Mar 22 15:28:05 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Mar 27 13:06:45 2017 -0700"
      },
      "message": "Revert \"Revert \"Run the versioner as part of the build.\"\"\n\nThis reverts commit 69c7562f5983ed5bc1d330b1f44b5cf506efb60e.\n\nTest: make checkbuild\nChange-Id: Ie443029398c01b45e0a0317a8074808b064f35d4\n"
    },
    {
      "commit": "b8a3ae4bcb0713a3e316a92939468212eefaa86d",
      "tree": "08bb14f3f6511fb9beb03d7f0a45537dd71d6f1a",
      "parents": [
        "3f76dadf15aa8ca4f2eaf471a9a1f1c661b353c2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Feb 23 13:52:49 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Feb 23 13:52:49 2017 -0800"
      },
      "message": "versioner: fix darwin build.\n\nUse struct stat::st_mtime instead of the underlying st_mtim, which is\ncalled something different on Darwin.\n\nTest: mma on linux, darwin\nChange-Id: I2695a6c83ebb7d08ec56b1355e0f4bc0993a0acb\n"
    },
    {
      "commit": "0a284f5c05f36c7be570f1a2750eba79fa883291",
      "tree": "3aa5e5d761af135745c1b543af6ca889d8c62bb7",
      "parents": [
        "f7e793ef7fcfc8f20be3cadd2f5a233151d4b9c9"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Dec 15 13:56:00 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Dec 15 13:56:00 2016 -0800"
      },
      "message": "versioner: start using C++17.\n\nBug: None\nTest: python run_tests.py\nChange-Id: I10101d26b7816a83445f25b33b97ed47d42fd135\n"
    },
    {
      "commit": "68d6a9288afd724fc7137aa75b22456213cebf5d",
      "tree": "fb14a7944f5946afdb50c2305a45ae6f323bf476",
      "parents": [
        "a1d32f95c3bfc899b7f80ea39a52199a5d33abee"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 07 11:24:06 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 15 10:44:41 2016 -0800"
      },
      "message": "Convert versioner to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: mma -j\nChange-Id: I0e648143ac480c1257d9829f9b9087ee22005855\n"
    },
    {
      "commit": "cdbf6fe94f1907e29aa816471c9d093375ccba2f",
      "tree": "e3196cbcc73440aa22726d181fd6c37d7313fd48",
      "parents": [
        "11b362d284b49e070813cd459584ea3dabb20b1e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 18:28:37 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 29 08:28:49 2016 -0800"
      },
      "message": "versioner: use unique_ptr to handle ownership of FTS*.\n\nBug: None\nTest: python run_tests.py\nChange-Id: I510063e9b57afda4f5492198cd40c15fc6380d2d\n"
    },
    {
      "commit": "9f9200c2ee7e5583282f4151ff9c18f1f1bcbcb9",
      "tree": "3792f29dd17de3f7ed7945cb34137e2741d5193a",
      "parents": [
        "2796894c98e8ef9639c7781cb343ce23cbd3781a",
        "acc3d80edf9912d0c30f951e498959b9ff74f0e2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 22 00:51:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 00:51:14 2016 +0000"
      },
      "message": "Merge \"versioner: extract strict warnings out of -v into its own flag.\""
    },
    {
      "commit": "2796894c98e8ef9639c7781cb343ce23cbd3781a",
      "tree": "147fa29d23e8b39668f1e213b799420714093c52",
      "parents": [
        "5fabe027571627bf72eec1e23bfbb3a69845480a",
        "338cf129630ca5839f1ab695b04f7afbe18bb92d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 22 00:50:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 00:50:59 2016 +0000"
      },
      "message": "Merge \"versioner: use a single work queue.\""
    },
    {
      "commit": "acc3d80edf9912d0c30f951e498959b9ff74f0e2",
      "tree": "0ac8f0bbf4cc479744da4caad3ed75134c12f689",
      "parents": [
        "338cf129630ca5839f1ab695b04f7afbe18bb92d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 18:22:44 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 17 18:12:21 2016 -0800"
      },
      "message": "versioner: extract strict warnings out of -v into its own flag.\n\nBug: None\nTest: versioner -v; versioner -s\nChange-Id: I8f6ac7064c6f05de0811677f7fcfce929a2568c1\n"
    },
    {
      "commit": "338cf129630ca5839f1ab695b04f7afbe18bb92d",
      "tree": "72f3aab6dea788568808228b9e22f33c2fb4bb76",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 18:01:41 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 17 18:11:57 2016 -0800"
      },
      "message": "versioner: use a single work queue.\n\nPreviously, each thread was assigned a fixed list of work, and the main\nthread would block until every thread was finished, leading to most\ncores sitting idle for the last few hundred milliseconds while a few\nparticularly long running threads would keep working. Use a single work\nqueue to evenly distribute load across the threads.\n\nBug: http://b/32748936\nTest: python run_tests.py\nChange-Id: I80e231ece3b95e2721a32f658905841b89a8dc3b\n"
    },
    {
      "commit": "3091f5a06e82186bbf8cfde3498fa9aef4d389ee",
      "tree": "17e571f7c6da4054aabc8d7372255e6cf1442134",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 16 17:01:57 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 16 17:01:57 2016 -0800"
      },
      "message": "versioner: ignore non-header files.\n\nDon\u0027t try to compile non-headers (vim swap files, etc.) that happen to\nbe in the header directory.\n\nBug: none\nTest: manually created a file in libc/include\nChange-Id: I2c1647ec7174dc617898dc2f07c9a80a08b69c72\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": "78b8a1430debfb9361e425e52e8366409b9e5cd2",
      "tree": "63054645e21f43fc7626156843a511398a61194e",
      "parents": [
        "b5c496346f19cba410b3191b9c3297507bba854a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 01:00:41 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 18:12:10 2016 -0800"
      },
      "message": "versioner: use a virtual filesystem for input files.\n\nUse an InMemoryFileSystem to store and share input files across\ncompilations.\n\nThis improves the result of `time versioner` further, from:\n    versioner  109.12s user 17.43s system 2433% cpu 5.201 total\nto:\n    versioner  112.20s user 1.38s system 2416% cpu 4.700 total\n\nBug: http://b/32748936\nTest: python run_tests.py\nChange-Id: I72d37b7c30850b8399cc40338247700fe3e7b2f9\n"
    },
    {
      "commit": "b5c496346f19cba410b3191b9c3297507bba854a",
      "tree": "f5e01af0d1c789c719a83fd4c89ec8f3f0b0aafe",
      "parents": [
        "16016df79f846d6d21266c3b1dce1e7c24dc4be1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 08 22:21:31 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 18:10:15 2016 -0800"
      },
      "message": "versioner: cache -cc1 flags generated by the clang Driver.\n\nProfiling showed that majority of time spent by versioner was being\nspent in the x86 and x86_64 driver statting random files in /usr/lib,\nlooking for a toolchain. Hardcode a list of per-target flags which\ncorrespond to a subset of the ones generated by clang, and use those\ninstead of calling out to Driver.\n\nThis changes the result of `time versioner` from:\n    versioner  156.57s user 1180.08s system 4109% cpu 32.525 total\nto:\n    versioner  109.12s user 17.43s system 2433% cpu 5.201 total\n\nBug: http://b/32748936\nTest: python run_tests.py\nChange-Id: I7d254a105bf1a283cbba0546321b04e308e703d1\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": "84e269d5af7f6ae82afb066a6b69674180d44d2d",
      "tree": "e934ca88f5d8efd776d1e5e744f16fbed42e5d9e",
      "parents": [
        "64fc6b5e20201ff80f68c0754bc6f12a4750c32d",
        "9ae2b9a5213219e929e5cab6cea3f1f1e476d2fd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 09 02:07:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 02:07:17 2016 +0000"
      },
      "message": "Merge \"versioner: don\u0027t always hide future decls.\""
    },
    {
      "commit": "9ae2b9a5213219e929e5cab6cea3f1f1e476d2fd",
      "tree": "724d367bbca0ed14f34eff36e077d6b601ec1416",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 08 16:17:45 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 08 16:28:07 2016 -0800"
      },
      "message": "versioner: don\u0027t always hide future decls.\n\nBug: http://b/32748732\nTest: python run_tests.py\nChange-Id: I8f799015ebb1017f5e7d1324fb4c724e12a268bc\n"
    },
    {
      "commit": "147fdb4724b58efed40327d3537425574fc56730",
      "tree": "a8b9ba6ffea02af8373d6ff314105207b4694df5",
      "parents": [
        "f41032a3e2da87d51a161da8bbcec8ae9f254bdd",
        "b89b7a502282f6110279d9a3ad74106eaa7f5072"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 05 20:09:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Nov 05 20:09:12 2016 +0000"
      },
      "message": "Merge \"Clean up update_headers.sh.\""
    },
    {
      "commit": "1a176de2f15392c4789b071d5f05ed6950807a0e",
      "tree": "1afc5fb6af2a5136fea70d01247e2f83cd0f3546",
      "parents": [
        "a00e672361893fdaf7e87577e75290523c07d27d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Nov 04 13:15:11 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Nov 04 13:16:29 2016 -0700"
      },
      "message": "versioner: allow static inlines that don\u0027t conflict.\n\nBug: http://b/32664285\nTest: python run_test.py\nChange-Id: I9d050e545390eccd82661325c0ec58055f5f28a3\n"
    },
    {
      "commit": "a00e672361893fdaf7e87577e75290523c07d27d",
      "tree": "2856695e790b730c4185a74e3437f6d7e39f4885",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Nov 04 12:04:38 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Nov 04 13:16:16 2016 -0700"
      },
      "message": "versioner: fix output.\n\nBug: http://b/32664285\nTest: python run_test.py\nChange-Id: Ic487036a17cc6778493e316146e54ead8ce3e65b\n"
    },
    {
      "commit": "b89b7a502282f6110279d9a3ad74106eaa7f5072",
      "tree": "4d1cecabe50ab1479f9fa61530f4d66c276daf5c",
      "parents": [
        "aea8407ad5c7e559c4cc6a05e46e37fa22f81d35"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 04 11:40:27 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 04 11:41:14 2016 -0700"
      },
      "message": "Clean up update_headers.sh.\n\nClean up some output, check for errors from the versioner.\n\nTest: tools/update_headers.sh\nBug: None\nChange-Id: Ib398b534a9a8ee6dc6a2b4d90747f628aa911bab\n"
    },
    {
      "commit": "ae50e9d85c2683ced6ab8e41b487304958e2f591",
      "tree": "63e1357ddb5f9a576603b1fa9bdcf116aa0eb2b0",
      "parents": [
        "9b908c8e36a6e644d5c42a7ed549ae7d4ab57667"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 20 12:45:03 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 31 16:18:29 2016 -0700"
      },
      "message": "Copy the NOTICE file when updating headers.\n\nTest: ./update_headers.sh\nBug: None\nChange-Id: Ibde1e6d7ef1750d8369b65b3125b55023efb5b2a\n"
    },
    {
      "commit": "079be165a66181386f14263b3024f1943ebcd624",
      "tree": "edf038caff6bacad592f874e8a4d77a0d1466360",
      "parents": [
        "268b3d8878e6b22a57fe52b127aa4bcdbf7c2c2b"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Sep 16 16:56:15 2016 -0700"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Tue Oct 25 09:35:20 2016 -0700"
      },
      "message": "Make versioner build with LLVM r275480\n\nBug: http://b/31320715\n\nTest: tools/versioner/preupload.sh\nChange-Id: Icdff19b214b2b26c60288e49d26a88f04df68ef0\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": "c30862fdbc99eaf4c3859e915846e2ef316b1a47",
      "tree": "8fed9a6b9eec7c4b4b7ccce1ea51e8053835463c",
      "parents": [
        "32d5592a6930ba4b05cbbed1b3e933d71cf7e794"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 20 11:45:16 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 20 11:48:55 2016 -0700"
      },
      "message": "One NOTICE file to rule them all.\n\nGenerate a single NOTICE file rather than one per library. All the\nheaders come from libc these days anyway.\n\nTest: tools/update_notice.sh\nBug: None\nChange-Id: I127da185fdabc2815042e19aea74c507ec108f46\n"
    },
    {
      "commit": "32d5592a6930ba4b05cbbed1b3e933d71cf7e794",
      "tree": "a9ba300bc3b59322a8cb4044bda22a830f3f86e9",
      "parents": [
        "d8244214751f9b48e60e69910c4e7175f8fab1ac"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 20 10:34:47 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 20 11:27:50 2016 -0700"
      },
      "message": "Update our notice files as a pre-upload step.\n\nAlso updates the license files, since apparently they\u0027re out of date.\n\nTest: repo upload --cbr .\nBug: None\nChange-Id: Ic8d855a7ee5185c4933da699292868e02ef79531\n"
    },
    {
      "commit": "01733796100d63baf0b27f647fed98894e05a29a",
      "tree": "8cc6f6255386aca63373314e0792845e68f9a3b2",
      "parents": [
        "0855431067159f05a657eb99f63ee99fdf18d8ae"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 22 17:28:12 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 23 14:34:03 2016 -0700"
      },
      "message": "Add versioner to preupload hook.\n\nBug: http://b/31676510\nChange-Id: Ic7cfad1cb214c9f711a985bace484a20db1a89b6\nTest: submitted this patch, and it failed\n"
    },
    {
      "commit": "ac3e5641428512c12ff2c463005ab29b026a928c",
      "tree": "2564871000f3897a815e765d7c34886969b41dab",
      "parents": [
        "81b4aadb4857f351915b6fc215a73baacc90d22a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 14:16:15 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 14:21:28 2016 -0700"
      },
      "message": "versioner: turn on -Wundef.\n\nPoking around with -Wundef exposed a pretty horrifying bug, so we\nshould probably keep it turned on.\n\nBug: http://b/31496165\nChange-Id: Iada279eec91ded0d59ff3841d5a3ce1a36e34c3a\n"
    },
    {
      "commit": "bb96628f487aaa55ce861d5d72c9c38d5943c9a6",
      "tree": "46aaaac0add4344a4177843c54fe534eb0d82374",
      "parents": [
        "76fcad2a6f6b6633c49f4f0b703ef490d2d127fd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 14 14:21:56 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 14 14:22:27 2016 -0700"
      },
      "message": "versioner: turn on -Wall -Wextra -Werror.\n\nChange-Id: Ica47d0fa671934a1ea193869265de8986b012a58\nTest: mma \u0026\u0026 versioner\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": "061446c2df4ac5f06d10da755d5977abdcb152b9",
      "tree": "fa65c3de71f955f3a5faa7f5e9b61bc897d29998",
      "parents": [
        "8ca3f3116d1401cd88040acb831f95d2840f7fcb",
        "8420be9bcc961b0a197d889b89b3035c7dcd15f4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 16 17:08:46 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 16 17:08:46 2016 +0000"
      },
      "message": "Merge \"Add a script to update the bionic headers.\""
    },
    {
      "commit": "a77b3a9464641ba813018b9cab0555d9d800d65e",
      "tree": "d3f90e5a9d9d4e3983b698c6b3b00ece3aefd064",
      "parents": [
        "3b2d331e77143ce63ad7f404ab6669c03178eff4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 16:39:27 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 16:43:13 2016 -0700"
      },
      "message": "versioner: handle _FILE_OFFSET_BITS\u003d64.\n\nCompile headers with both -D_FILE_OFFSET_BITS\u003d32 and -D_FILE_OFFSET_BITS\u003d64.\n\nBug: http://b/30170081\nChange-Id: I92651e075cc69bdc1a2581f99892c9a7fdcdb35b\nTest: python run_tests.py\n"
    },
    {
      "commit": "9ab148c450731d289a421b6ae76de136df7f8e21",
      "tree": "8f95092a52ef6e7cd4df4dee9b24002da5504427",
      "parents": [
        "9f7ce3d27f5ad369db54047d3f6029add70a55b9"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 14:19:05 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 14:28:25 2016 -0700"
      },
      "message": "versioner: add idempotence test that uses the bionic headers.\n\nBug: http://b/30170081\nChange-Id: Iaf798077518a1a82c626c3b1524633c6df578409\nTest: python run_tests.py\n"
    },
    {
      "commit": "9f7ce3d27f5ad369db54047d3f6029add70a55b9",
      "tree": "723dc1b3374bc2c3c27c3a6d9faabada945ed6d1",
      "parents": [
        "1b4b3d7a3cf5d81d84f3e27d0bdee744cc6ad05e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 13:44:37 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 14:09:53 2016 -0700"
      },
      "message": "versioner: fix off-by-one error in header guard calculation.\n\nThis was causing redundant guards to be emitted in cases where\ndeclarations were already guarded by another macro.\n\nBug: http://b/30170081\nChange-Id: I9080838fbea5a56225df4b26d0918657fb6c4f21\nTest: python run_tests.py\n"
    },
    {
      "commit": "8420be9bcc961b0a197d889b89b3035c7dcd15f4",
      "tree": "a3c386bfad791119f74607f350cffb6f5731bf5d",
      "parents": [
        "0deb70cd04aef99b12d9596615c661a87cf6b95c"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 15 13:22:07 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 15 13:55:22 2016 -0700"
      },
      "message": "Add a script to update the bionic headers.\n\nTest: ./update_headers.sh\nBug: http://b/30465923\nChange-Id: I888a1ec0c4f26134845583a03bbaad88fa17afa0\n"
    },
    {
      "commit": "1b4b3d7a3cf5d81d84f3e27d0bdee744cc6ad05e",
      "tree": "7d2fc789cedd266e32b47030b8733e65bec70e3a",
      "parents": [
        "a6b8c4e163a976a2befe4f3bfbfa9ce66d159d30"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 13:07:40 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 13:42:36 2016 -0700"
      },
      "message": "versioner: improve preprocessor tests.\n\nMake sure everything works with relative/absolute paths, and with and\nwithout trailing slashes.\n\nBug: http://b/30170081\nChange-Id: Ia13a8ae2fa44590e835d0f4b006d4c31e9eaea83\nTest: python run_tests.py\n"
    },
    {
      "commit": "a6b8c4e163a976a2befe4f3bfbfa9ce66d159d30",
      "tree": "c7f61ffafa591bc54945614594225094cdcc82ef",
      "parents": [
        "b0af100297ead6f6f3637b9b00d55d161f368ec3"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 13:04:51 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 13:41:57 2016 -0700"
      },
      "message": "versioner: always copy over source headers when preprocessing.\n\nAlso, be less noisy when preprocessing.\n\nBug: http://b/30170081\nChange-Id: If0d81b0a3a49756164e4945a20703afeb302fd4d\nTest: python run_tests.py\n"
    },
    {
      "commit": "b0af100297ead6f6f3637b9b00d55d161f368ec3",
      "tree": "7dd3d80c41f8521e0f980a5f9a92759240fed03a",
      "parents": [
        "228e747b6c40da2945310cda214b829f7de8cb60"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 11:30:41 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 15 13:41:47 2016 -0700"
      },
      "message": "versioner: add test output directories to gitignore.\n\nBug: http://b/30170081\nChange-Id: Ie493d8c321bb0e8d308234dec2d42ac8306c21c6\nTest: python run_tests.py\n"
    },
    {
      "commit": "64da0060637cce4f24f743437dbada6ab928ded0",
      "tree": "6aac578b0b19dd51d5b64f7ec9d528d852f1e002",
      "parents": [
        "e73fc63f96aa99adaf65dfe1e04c726a1f65ba75"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 12 19:10:21 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 12 19:10:21 2016 -0700"
      },
      "message": "versioner: Ignore if Clang is missing\n\nThis happens in some branches. Work around for now.\n\nChange-Id: I75c01a3ae52ce89f6c56a19728903bf86db0a309\n"
    },
    {
      "commit": "79786347db99cfddcce89138c212e6d23daa9b2e",
      "tree": "236dd6e05a56e75ff36fe40aa5b41b22e735b89e",
      "parents": [
        "9519fc08b730ca5857ac70debd799c5f590d01cd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 12 16:17:22 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 12 16:24:04 2016 -0700"
      },
      "message": "versioner: copy unmodified headers when preprocessing.\n\nChange-Id: I2517f560fd44fb519d6ee7e8d0a485036d3ecd87\n"
    }
  ],
  "next": "f8592a3ff3d452b7d784d34814e5d04c20348343"
}
