)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "f8592a3ff3d452b7d784d34814e5d04c20348343",
      "tree": "7b7b981e5c74280552b875bdbd4494c3000b38d9",
      "parents": [
        "8feba83242e32693b1853f0d6f141b7736008d4a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jul 26 18:58:27 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: add support for preprocessing headers.\n\nBug: http://b/30170081\nChange-Id: I9b662ca9e0fa3a1f9c0211594e851f5f9bef7266\n"
    },
    {
      "commit": "8feba83242e32693b1853f0d6f141b7736008d4a",
      "tree": "dbcba4ad11fb37714a17041249886f94df72fed1",
      "parents": [
        "566735df35488b332bedb2e384221c08c3ec686c"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 02 15:50:05 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: fix makefiles.\n\nMove the Android.mk to src/ so that mm in that directory works.\nAlso, remove the dependency on FORCE_BUILD_LLVM_COMPONENTS.\n\nChange-Id: Iad7f3fc96f5f26f9535141d752ba865b40d5ff7e\n"
    },
    {
      "commit": "566735df35488b332bedb2e384221c08c3ec686c",
      "tree": "44b6e4b8aa9143212fb9afe157a19057f2b7b24a",
      "parents": [
        "16057886d7aa2e30536908ae72451ebf42661080"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 02 15:07:32 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: purge iostreams.\n\nChange-Id: I1b16a4b5c4a8a1333f05636c8c67890d8ce1a090\n"
    },
    {
      "commit": "16057886d7aa2e30536908ae72451ebf42661080",
      "tree": "3db021441d0350caf3288f5fa3f627b991f0ecc1",
      "parents": [
        "bfb6bae9fb5ef42e4f9ae2847f30f41938c04900"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 02 14:54:09 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: assorted fixes.\n\nZero initialize the contents of ArchMap, keep track of the symbol name\nin Declaration, remove unnecessary copies in loops.\n\nChange-Id: I47b07755846f252b83ffc4c89547a34b2f7ab868\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": "681f6b59d26c7c9470bc681b0ca0b43c3d0835db",
      "tree": "07006456f1c03e49619319c12b135ab48d4c8e05",
      "parents": [
        "8a03c83ef824dc9f76839a5b1a5247999a8629c3"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jul 20 11:23:20 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: improve the test script.\n\nMake it actually run under python3, and add checking for unexpected\nsuccess.\n\nChange-Id: I9aac0e8cc1526fd63db21e57554f3aa5a9b4091d\n"
    },
    {
      "commit": "f9128bc7d4fff2f50705d92c4fd06e998b63f442",
      "tree": "83b6028c33fde3e9541c1c26d4799d480895ef4d",
      "parents": [
        "180c883f09e3e5529a3f4d68e954f9c425010b80"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jul 27 16:29:31 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 02 14:32:42 2016 -0700"
      },
      "message": "versioner: remove unnecessary kernel/common symlink.\n\nThe target was moved by commit 5956b4e, but none of the headers\ncontained were actually necessary to compile any bionic headers.\n\nBug: http://b/30170081\nChange-Id: I8c1a7464de0992c20af194340c0e36d131a836e7\n"
    },
    {
      "commit": "180c883f09e3e5529a3f4d68e954f9c425010b80",
      "tree": "52485953803913d31210f6a25469dcb7390b1a4f",
      "parents": [
        "bbf593f0f0c116305a0eafcf8271381d92b1143c"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jul 26 14:04:01 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 02 14:32:42 2016 -0700"
      },
      "message": "versioner: add symlink for kernel/android/uapi.\n\nThe android-only kernel headers were moved to their own directory by\ncommit d6e8b8c. Add a new symlink to match.\n\nChange-Id: I06ce7c3167fbb1e058e4a137fae9375bb5792a46\n"
    },
    {
      "commit": "0e25b3425b12da3f308500cfaa280e2ee2473b23",
      "tree": "faef8ad90606e8429cd874b5b129d21d1fe11218",
      "parents": [
        "55653cc33bb4ade9441d928540b9486029f6616f"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jul 14 16:53:18 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jul 14 16:53:18 2016 -0700"
      },
      "message": "Fix clean mma in bionic\n\nChange-Id: If2410c5ff9c08372098e5ec831e33e4da0e04b30\n"
    },
    {
      "commit": "d3b6bc76242c05a3172718ca3a2ffa6a86dc8635",
      "tree": "d5abee52b179379ddba184ee0612f1e19cd012d1",
      "parents": [
        "48cedda02a9874d59b2b3652d0427abce7fedaab"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jul 13 14:01:45 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jul 14 09:07:13 2016 -0700"
      },
      "message": "Move relocation_packer from Android.mk to Android.bp\n\nChange-Id: I3d24f8513fe3ca19900705d4861ab797464e0930\n"
    },
    {
      "commit": "d8c77257ea0b0b3a4f92f8ae20b230b545456fa5",
      "tree": "5603d67f343ea8c3fc96dcc6fa42916a4692f99d",
      "parents": [
        "4af829acb7bedbc2d08dfde0d099c658a1aa7567"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 13:54:28 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:19 2016 -0700"
      },
      "message": "versioner: whitelist atexit, turn on symbol checking by default.\n\nChange-Id: I32e726c74ee618ace3a4329d46408a42732a8d9d\n"
    },
    {
      "commit": "4af829acb7bedbc2d08dfde0d099c658a1aa7567",
      "tree": "64c3c9fc3ea147fbb02cc8732206fed302447a0c",
      "parents": [
        "958f3b31c49e1975117898a54d6e7c1fe2b386ec"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 13:46:06 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:19 2016 -0700"
      },
      "message": "versioner: add missing test.\n\nChange-Id: I1dc9a708b53dbb46af9e4b8ab69bf8ed46ab045f\n"
    },
    {
      "commit": "958f3b31c49e1975117898a54d6e7c1fe2b386ec",
      "tree": "a226bca1c97221743727d9421fe672d368e404e4",
      "parents": [
        "173e7c07539af0910d170cd17385cba6762cfbc8"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 13:44:00 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:19 2016 -0700"
      },
      "message": "versioner: fix false positive with functions only available as inlines.\n\nChange-Id: I09cc335b4006c6ceafcbd1bec9e50161f8262942\n"
    },
    {
      "commit": "173e7c07539af0910d170cd17385cba6762cfbc8",
      "tree": "ce1b645e69d8b9f510c10ea2805b9bcc67b04c23",
      "parents": [
        "658dbd920d8e8d17723e014d886e43615107a59a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 13:38:00 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:19 2016 -0700"
      },
      "message": "versioner: improve error output slightly.\n\nPrint [introduced \u003d 9, deprecated \u003d 10, obsoleted \u003d 11] instead of\n[9,10,11].\n\nChange-Id: Ifb8a66abbcec92aa13086d220af7ee6fa17b0897\n"
    },
    {
      "commit": "658dbd920d8e8d17723e014d886e43615107a59a",
      "tree": "e212dee161a3e97fab2d1171e04964d4c849b68d",
      "parents": [
        "80d909bbfb0ffb4955caebd80acf98120cb1b130"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 15:59:44 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:18 2016 -0700"
      },
      "message": "versioner: merge stdout and stderr in the test runner.\n\nSome of the error messages emitted by versioner (the ones where it was\ninvoked incorrectly) go to stderr, which meant that the test runner\nignored them. Merge stdout and stderr, and switch from testing for\nexact equality to endswith, because of the compilation errors test.\n\nChange-Id: I0e2c25bcc9dea4c12ea82a6a05b29e561a61a902\n"
    },
    {
      "commit": "80d909bbfb0ffb4955caebd80acf98120cb1b130",
      "tree": "e3b6ac95eaf855548afd1a144430f60f753650b7",
      "parents": [
        "d67dbf003e6b203a4ec41d01081190d3e40f00e2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 15:59:32 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:18 2016 -0700"
      },
      "message": "versioner: clean up tests, test runner.\n\nGit doesn\u0027t track empty directories, so most of the tests would fail on\na fresh checkout because of dependencies/common being missing. Remove\nthe use of dependencies from all of the non-dependency related tests.\n\nChange-Id: I09cc5765aae1576914c1c5d7dfa3fb666eab4a3f\n"
    },
    {
      "commit": "d67dbf003e6b203a4ec41d01081190d3e40f00e2",
      "tree": "8a1a7e3532876d06f805376ea7dda0efb28571e5",
      "parents": [
        "9b5af7ad5e5b36d751f152382971b034161755e5"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 15:21:14 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:18 2016 -0700"
      },
      "message": "versioner: ignore functions that are __INTRODUCED_IN_FUTURE.\n\nBug: http://b/28178111\nChange-Id: I8026181e08ed8f2d59b31a37adcf8b469fb6bdaf\n"
    },
    {
      "commit": "9b5af7ad5e5b36d751f152382971b034161755e5",
      "tree": "d352634230bcbebbc411783867e440e6e57356a3",
      "parents": [
        "62aaf8f8fe123e34ec0f66b0cd51ec24e304c9b5"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 14:29:13 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:18 2016 -0700"
      },
      "message": "versioner: autodetect paths when no specified.\n\nSearch for the header/dependency/platform directories in a hard-coded\npath relative to $ANDROID_BUILD_TOP when they\u0027re not specified.\n\nChange-Id: I476385cfc0247e3b2009348ec37c1810a0e9a7f7\n"
    },
    {
      "commit": "62aaf8f8fe123e34ec0f66b0cd51ec24e304c9b5",
      "tree": "f2c71111d1910cf6a9c116beac2a43ddf160ce09",
      "parents": [
        "99a84c83169a4443d844836bf5d892ec55130448"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 14:27:21 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:18 2016 -0700"
      },
      "message": "versioner: improve usage messages.\n\nDon\u0027t spew all of usage when called improperly, and add a -h option\nthat exits cleanly.\n\nChange-Id: I1a4517edce75afe0f9a80bc8d6c81353d6c12e99\n"
    },
    {
      "commit": "bf8a285e64055ffd7e0c8b91519b75ff9ad94184",
      "tree": "ed209dd25479e657ab2ca0b311aab46d62da75aa",
      "parents": [
        "46b44160e9e4c466be0faf1bb8d6ec70ecc83273"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 27 11:59:09 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 13:40:36 2016 -0700"
      },
      "message": "versioner: introduce.\n\nAdd a clang-based tool to inspect header availability attributes and\nverify them against the NDK platform definitions.\n\nBug: http://b/28178111\nChange-Id: I1bb1925a620e98cc9606cb5a3360b1224c700bd0\n"
    },
    {
      "commit": "18d0e8c11df23709184e55d0fb22e06d057ae898",
      "tree": "a55b3f7e45d075db0067c8a22ed3c40fe4e40165",
      "parents": [
        "98ac6f415f4cd68be6691c1d04f59a76af802485"
      ],
      "author": {
        "name": "rnk",
        "email": "rnk@chromium.org",
        "time": "Thu May 05 16:44:34 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri May 06 14:09:58 2016 -0700"
      },
      "message": "Re-land \"Fix invalid using decl in bionic relocation_packer\"\n\nThis time with more namespace qualification.\n\nTested manually by building clang_x64/android_relocation_packer locally,\nas the Android trybot analyze step does not think it needs to run for\nthis change.\n\nOriginal description:\n\n\u003e The code was essentially doing \u0027using Logger::INFO\u0027 in the global\n\u003e namespace to make its \u0027LOG(INFO)\u0027 macros work. Unfortunately, C++ does\n\u003e not allow you to use using decls on classes like this unless you are in\n\u003e a derived class. GCC does not accept this code, and Clang was recently\n\u003e updated (LLVM r268594) to reject it as well.\n\u003e\n\u003e This should fix the Chromium Android ASan build with TOT Clang:\n\u003e https://build.chromium.org/p/chromium.fyi/builders/ClangToTAndroidASan/\n\nTBR\u003dthakis@chromium.org,sgurun@chromium.org\nBUG\u003d609543\n\nReview-Url: https://codereview.chromium.org/1952353005\nCr-Commit-Position: refs/heads/master@{#391952}\n(cherry picked from commit 5762af8ad13e62957493c3e4314a234ee57a4200)\n\nChange-Id: Ibc6f6023aef028c5029be128ac799dc67fc6683c\n"
    },
    {
      "commit": "83b44a9e733a20695c7171c6272c0a0f4958e969",
      "tree": "972b1f9622652255bebf6da89c1a76adf5c59c54",
      "parents": [
        "733c92fa3632c5ac566cdf6f879e4b9e77c11ecb"
      ],
      "author": {
        "name": "Lazar Trsic",
        "email": "Lazar.Trsic@imgtec.com",
        "time": "Wed Apr 06 13:39:17 2016 +0200"
      },
      "committer": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Wed Apr 06 17:52:16 2016 +0000"
      },
      "message": "Rename DT_MIPS_RLD_MAP2 flag to DT_MIPS_RLD_MAP_REL\n\nChange-Id: I2c0972f5ce3586c3f4f130034f7063f97557ab4e\n"
    },
    {
      "commit": "7de1ff2ad63aedda5096d5ee64203703dbdecf17",
      "tree": "734822ad30c69306319b200c5f621a424d96fbdc",
      "parents": [
        "68a2f12304e960f2045f3819c48311e7bf4d3126"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 22 20:27:39 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 22 20:27:39 2016 -0700"
      },
      "message": "Move relocation_packer off libnativehelper.\n\nAlso remove other bits of makefile cruft.\n\nChange-Id: I8b69822200959368003a8af9d1595bea9182d6d8\n"
    },
    {
      "commit": "20322c25e7648215f8d01c05acd13c0b8275bf38",
      "tree": "a701990c32936dc10f1c953deb289dd3d9581fda",
      "parents": [
        "8d6e19408cfdbd73ba7e5c9e5b8716d9dad8dcf9"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Jan 25 10:28:26 2016 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Jan 25 11:12:14 2016 -0800"
      },
      "message": "Include libz for new libelf.\n\nNew external/elfutils needs libz.\n\nChange-Id: Ib2f2d56d4831809509a0fb3a849656f68adece7f\n"
    },
    {
      "commit": "4032d344d43d6495119bae41b5eaea3023d8d17b",
      "tree": "82f95f90b7160e365ae07b4b0b51cc99de8d5de4",
      "parents": [
        "d5e8a0499b9efa147d45aabd47cfb2d2204c2323"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 28 15:30:37 2015 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 28 15:30:37 2015 -0700"
      },
      "message": "Turn common INFO messages down to VLOG(1)\n\nTurn messages that are printed on every run of relocation_packer down to\nVLOG(1) to clean up ninja build output.\n\nBug: 24409581\nChange-Id: I040aed6a7b4261eefa6f7278fa451180115b0716\n"
    },
    {
      "commit": "4900f1c4cd41f57c6d453ecd84fd82b8d7d9e8fa",
      "tree": "6132b7243a1812b40ae9714878ecd7b9819dba53",
      "parents": [
        "12fb28bbd85cea72bd951d8263b05e54415780e7"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Sat Jun 06 11:55:16 2015 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Jun 08 12:23:48 2015 -0700"
      },
      "message": "Fix Mac checkbuild.\n\nBug: 21669400\nChange-Id: I54691661605a2e2c1871781964aed343840b8560\n\n(cherry-pick from commit 33c2d441b8f816722bed984c6e12b82b888c3ca2)\n"
    },
    {
      "commit": "1011e1a402017506c6a03d0457288f4b1267d9ca",
      "tree": "750578d62c463b28ec632d1018fb0fff717ad4ed",
      "parents": [
        "4fc106d34b70da868d194e8a0f0a3cddd1f4c22d"
      ],
      "author": {
        "name": "Simon Baldwin",
        "email": "simonb@google.com",
        "time": "Fri May 22 15:17:29 2015 +0100"
      },
      "committer": {
        "name": "Simon Baldwin",
        "email": "simonb@google.com",
        "time": "Wed May 27 13:20:00 2015 +0100"
      },
      "message": "Fix unit tests, and extend for other architectures\n\nOn unpacking, reinstate any p_align values that packing reduced to\npage size.  Ensures a round-trip pack and unpack is bit-equivalent\nto the original input.\nhttps://android-review.googlesource.com/#/c/148492/\n\nExtend unit tests to include ia32, x64, and mips32.\n\nRecreate test data for arm32 and arm64.  Generate new test data for\nia32, x64, and mips32.\n\nBug: http://b/20687795\nBug: http://b/18051137\nChange-Id: Ifbca8e206ef447297ba4f19272b813702be27a35\n"
    },
    {
      "commit": "ded34ce94f314a7c9ec13ef3026edcec8358151f",
      "tree": "6f19716d543c44ac5757f10d343bb8ebeaf28709",
      "parents": [
        "dc10b077ea52baaa1b7be42eb5d2ba05a8a8c860"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 07 16:33:42 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 07 16:33:42 2015 -0700"
      },
      "message": "Apply same URL workaround to clean build.\n\nChange-Id: I63e63f6ffb879f49e36ee2d09821fc6fc47952c8\n"
    },
    {
      "commit": "4637f3d66db541034bbd930dd054a1880ed0a137",
      "tree": "8ab82dbfe10f1663bffaec0bec15436a98ab61e4",
      "parents": [
        "64a869880921b7e12d092b3fe7adc68fc74f98c6"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 04 11:11:23 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 04 12:34:42 2015 -0700"
      },
      "message": "Do not adjust PT_GNU_STACK segment\n\nBug: http://b/20687795\nBug: http://b/18051137\nChange-Id: Ie8af3892cfbebcc0249e7981284c4ad97ff40317\n(cherry picked from commit 064a9800f372b8efd6d7b08150ab5204e5304c84)\n"
    },
    {
      "commit": "18c935ceabb54a32aff42f99c6d20680ac333157",
      "tree": "c9a777f51c0108b133eedd19eb67c172f0df1508",
      "parents": [
        "f29640c2d8920c98f4cfd461d80c297a1cafa86a"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 29 19:34:51 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 29 19:53:31 2015 -0700"
      },
      "message": "Adjust DT_MIPS_RLD_MAP2 value\n\n  DT_MIPS_RLD_MAP2 stores the difference between dynamic\n  entry address and the address of the _r_debug (used by GDB)\n  since the dynamic section and target address are on the\n  different sides of the hole it needs to be adjusted accordingly\n\nBug: http://b/20658994\nBug: http://b/18051137\nChange-Id: I4c5e379e8a4c68f029467df6dc660f81a7013a09\n"
    },
    {
      "commit": "b293969c6d4acede62ac7b035dcb598e63574ca0",
      "tree": "dfd6d9fd454c0f88ddd955438a650aade96442da",
      "parents": [
        "032907d8c7ad7a15798c123114b9c8e7601bb3ae"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 27 18:53:27 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 27 20:37:17 2015 -0700"
      },
      "message": "Reduce p_align for program header to page size.\n\n Having p_align \u003e page_size leads to the situation when striping\n packed executables results in unnecessary p_vaddr adjustments.\n And it also may result (with probability 1 - 1/sizeof(uintptr_t)) in\n misaligned segments following .dynstr\n\nBug: http://b/20629834\nBug: http://b/18051137\nChange-Id: I1c5da4911e4409d63cb09f6b6b0a16ef54f6501b\n"
    },
    {
      "commit": "b0b9338ff8655394311aeef77e2b795e6d8a453d",
      "tree": "471604b6ffae83c31bd73a856f560654f3332b7f",
      "parents": [
        "6c63ee41ac5a246fb46c51753cd4d50ccae0dd8f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 12:39:14 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 12:39:14 2015 -0700"
      },
      "message": "Exit normally when relocations are already packed.\n\nBug: http://b/18051137\nChange-Id: Idfffac5fe965e3cdeabe6d3b2dcd8c275c6ae5df\n"
    },
    {
      "commit": "adfcb9731755d6150275bb1729e4501e07f7a4f7",
      "tree": "16dd461a8bc5733c0c7c4381957ea22d75c4c65e",
      "parents": [
        "dc405b5230c3d72107b57798a2c23b1a46069f4d"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 23 13:47:39 2015 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 23 22:54:25 2015 +0000"
      },
      "message": "Exit normally when packing relocs saves no space.\n\nBug: http://b/18051137\nChange-Id: I43ea5678a677e5d39fb54fafcf3a2f3a252c79b0\n"
    },
    {
      "commit": "f15ceeb7841ef97c24a0b7708732756d433c5d0d",
      "tree": "b7888d48605d20313d6d417109da27043afc7995",
      "parents": [
        "913fe559f69395aaf160653c1d3994df3272810b"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 21 15:03:04 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 22 12:58:38 2015 -0700"
      },
      "message": "Always use signed leb128 encoding\n\n According to runs on /system/lib there using\n unsigned leb128 does not save us any additional\n space. In order to keep packing as simple as\n possible switch to using signed leb128 for\n everything.\n\nBug: http://b/18051137\nChange-Id: I1a47cb9eb2175895b3c3f7c13b4c6b1060de86c0\n"
    },
    {
      "commit": "2a6342187a4cbb0a8804394649893b8a306ceaeb",
      "tree": "5c820b1343060f8ab3bd43143090cc46c6cffb8a",
      "parents": [
        "da3c4f2f0d86b7e249c9b9b6cdf3bc0225b7178e"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 22 10:43:12 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 22 10:43:12 2015 -0700"
      },
      "message": "Statically link libc++ for prebuilts\n\n Statically link libc++ to relocation_packer in\n order to make it work from prebuilts\n\nBug: http://b/18051137\nChange-Id: I933ed6a0e48780a26b261069eb6a293432824fe7\n"
    },
    {
      "commit": "bb25bbe19e4e56aa612aeaaf2c53d79dadebc03e",
      "tree": "7a0ccbfe1ad4dc8afe11d5a7380772ff4fa22462",
      "parents": [
        "c5bd96efd27f756d07f1a306e4120cede17b39f5"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 20 17:41:28 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 21 12:28:21 2015 -0700"
      },
      "message": "Adjust DT_VERSYM/VERNEED/VERDEF dynamic sections\n\n  This is recent addition to bionic linker. The symbol\n  versioning was not supported before therefore this bug\n  went unnoticed.\n\n  Also normal exit when there is not enought relocations\n  to pack. This is to enable integration of relocation_packer\n  to android build system.\n\nBug: http://b/20139821\nBug: http://b/18051137\nChange-Id: Iaf36ae11c8e4b15cf785b6dd1712a3bdcf47cc45\n"
    },
    {
      "commit": "21988a3b1607cc4eb9f185109ed42c509b519662",
      "tree": "e8979e3b45797f371e1963f42408665dd7c712bd",
      "parents": [
        "d3fe4f1229ae0a50276b02d9c8e1efe8949a8726"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Apr 17 17:51:39 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Apr 17 17:57:15 2015 -0700"
      },
      "message": "Also send bionicbb logs to a file.\n\nChange-Id: If9a6fdbe004e3b4bb7d868b7255f83c232759f80\n"
    },
    {
      "commit": "d3fe4f1229ae0a50276b02d9c8e1efe8949a8726",
      "tree": "cc3d09517bf433bf3081c18562ac12a85ee5f468",
      "parents": [
        "3875744f89600027c69ea68650fff1eeb4b29723"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Apr 17 13:01:29 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Apr 17 17:39:36 2015 -0700"
      },
      "message": "Merge the two bionicbb services into one.\n\nChange-Id: I6490da1ec96b2e24b330296950be84424e11bd35\n"
    },
    {
      "commit": "a4061cddbefc3fd1c7eeb2ca270fd653a43372f1",
      "tree": "c769d9f942f572162cc4728e7e7b13d98c6da5ac",
      "parents": [
        "14af27a147b5e91eeb8632a3f99d4b6cc2ed26dc"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 16 14:20:13 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 16 14:20:13 2015 -0700"
      },
      "message": "Clean up \"logging\".\n\nPrint is bad and I should feel bad. Use the logging module instead.\nWill follow up by adding a persistent log destination instead of just\nthe console.\n\nChange-Id: I396ff10712f88a03f8d8183b6de29ea273815962\n"
    },
    {
      "commit": "a0ecd5b2b4bcb2979f0105c444fa48ef4a66ea8e",
      "tree": "290111b858d8575eedd1deaf94668d6c8a92c38f",
      "parents": [
        "de889741201faa338e01babdfd10bbd597769e60"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Apr 13 17:32:19 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Apr 13 17:33:51 2015 -0700"
      },
      "message": "Skip merge-failed messages from Gerrit.\n\nChange-Id: I2d8055a44cd78f95e64d6cf88e9efdd610a4fa88\n"
    },
    {
      "commit": "d032378790c787b8e03cebff92619b41ab0dffe4",
      "tree": "f9d46343b4e30398d633eef281d0c305b2b38e66",
      "parents": [
        "0a92ac884891b167d6393592fbf9ecf26218f9aa"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 09 17:18:53 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 09 17:18:53 2015 -0700"
      },
      "message": "Don\u0027t build any changes that touch bionicbb.\n\nRight now any changes in here would be innocuous because I manually\nupdate bionicbb, but I\u0027d like to check in the various job\nconfigurations. Once I have we don\u0027t want anyone to be able to make\nthe buildbot run any untrusted code.\n\nChange-Id: Ic050859cd5017615f71c75f995ba21bb45407b05\n"
    },
    {
      "commit": "dadac10fccb1558fb00bbafc3fc4f6b3a20f9591",
      "tree": "1684f8efd9dc16f40dd42e6a3c963bd7251276a9",
      "parents": [
        "4bd8f9637daaada333ff35945b00cfe6cb822376"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Apr 06 12:43:55 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Apr 06 14:22:37 2015 -0700"
      },
      "message": "Reject changes with cleanspecs.\n\nCleanspecs must not be removed once they have been built. This means\nthey can\u0027t be reverted, or reliably cherry-picked. Just skip any\nchanges that include them since they make such a mess.\n\nChange-Id: I3df8d81f93651d573485de7a75ecf5c6278c0001\n"
    },
    {
      "commit": "569a75268948e6ee8c1b2faf1f77877d4d3c678f",
      "tree": "9a960b69792bd47dc5e127f737ee4cc0cd3fec76",
      "parents": [
        "7f8d91ea8e24e89db39ae868085913e763e04557"
      ],
      "author": {
        "name": "Simon Baldwin",
        "email": "simonb@google.com",
        "time": "Thu Mar 26 17:13:19 2015 +0000"
      },
      "committer": {
        "name": "Simon Baldwin",
        "email": "simonb@google.com",
        "time": "Thu Mar 26 17:13:19 2015 +0000"
      },
      "message": "Fix comment drift in assorted relocation packer modules.\n\nSome of the commentary in relocation packer code is relevant\nonly to the packing strategy employed by chromium, and no\nlonger applies here.  This change fixes or deletes it.\n\nCode comment change only; no functional effect.\n\nChange-Id: Id229ee1d802bba608be15b79bc75bf90df557dab\nSigned-off-by: Simon Baldwin \u003csimonb@google.com\u003e\n"
    },
    {
      "commit": "d2bd5739ed005ddcfd9d91d42dc6d97f7db9ecbf",
      "tree": "10094f29ef29db3ddf0090c641666f62d3a8b8e2",
      "parents": [
        "f5e0ba94d911ef2622ecfd3f7fabc4432a4806d3"
      ],
      "author": {
        "name": "Simon Baldwin",
        "email": "simonb@google.com",
        "time": "Wed Mar 25 16:14:30 2015 +0000"
      },
      "committer": {
        "name": "Simon Baldwin",
        "email": "simonb@google.com",
        "time": "Wed Mar 25 16:23:01 2015 +0000"
      },
      "message": "Remove unused/unusable relocation packer files.\n\nRemoves:\n- src/run_length_encoder.h\n    artifact of the original packing tool, not used here\n- test_data/generate_elf_file_unittest_relocs.sh\n- test_data/generate_elf_file_unittest_relocs.py\n    test data generation for chromium/gyp, not usable here\n- README.TXT\n    because it is now almost entirely outdated\n\nChange-Id: Ic4cd372647d9a365dc52833a6cc1cf66f0c95ec9\n"
    },
    {
      "commit": "7d57623755e68c2310c2c87ada31128b9b1989b9",
      "tree": "8875e3fb86962c36e55e2b2f8dfb55390ba1dc5d",
      "parents": [
        "93d44ff2a6e0febe18d42d5690e85023545318b4"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Mar 24 11:43:55 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Mar 24 11:43:55 2015 -0700"
      },
      "message": "Convert result of a call to JSON.\n\nI still had the service that was relying on this running on top of\nlocal changes, so this hadn\u0027t been a problem yet.\n\nChange-Id: I63b45b8c7cf81972dbb7128013c1c777a2342d4c\n"
    },
    {
      "commit": "c889f13493e3ae5b6a75b59a575a7d2bffbd6481",
      "tree": "18d9b0a78a517706cae76655f6d833162aa00016",
      "parents": [
        "9bc8ce7c6a8abc09e76b0f35064d881385861537"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Mar 23 13:29:15 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Mar 23 13:29:15 2015 -0700"
      },
      "message": "Work around a bug in the Jenkins queue API.\n\nhttps://issues.jenkins-ci.org/browse/JENKINS-27256\n\n1.601 broke the ability to get a build\u0027s URL before the build had\nactually started. The bug is pseudo-fixed, but would require\ninstalling a new plugin and fixing the python jenkinsapi plugin for\nthe time being to use /queuefix/ rather than /queue/.\n\nJust avoiding logging a URL for now.\n\nChange-Id: Ibf90e5887fc4532dac688082ad7729787897da11\n"
    },
    {
      "commit": "f8ff6b103bde3433d6f7dbf762fc7bf657d7de5f",
      "tree": "fbff9b4213a98a600b559a67f3fc4da8b972294c",
      "parents": [
        "87a0617ebe7561bf28d3a19fbe192372598969b8"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 27 19:32:56 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 06 13:01:08 2015 -0800"
      },
      "message": "Generalize compression tool\n\n 1. One binary for all architectures\n 2. Generalize (and slightly improve) compression\n 2.1 works on all relocation types (rela?.dyn section only so far)\n 2.2 Uses same format to encode ElfW(Rel) as well as ElfW(Rela) tables\n\nBug: 18051137\nChange-Id: I66c95d9076954ca115816fc577d0f5ef274e5e72\n"
    },
    {
      "commit": "87a0617ebe7561bf28d3a19fbe192372598969b8",
      "tree": "555035b9e767ddbe092c8e66ba9de82fd71637e3",
      "parents": [
        "45ee73a7fbe98cba2ccb007b60c027d27dfca1cb"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 06 10:56:28 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 06 13:01:08 2015 -0800"
      },
      "message": "Import relocation packer from chromium repo\n\nBug: 18051137\nChange-Id: Ia67fa11da8247e3f86f70a8ce99e6695f2c05423\n"
    }
  ],
  "next": "d280675405e605d47c74c037b0d2b4f06826ed4d"
}
