)]}'
{
  "log": [
    {
      "commit": "402a75060dcd194c1991a15df2aba51f0d868ac3",
      "tree": "2b59bfb2d5a206d2d5e830988874aad5981ab270",
      "parents": [
        "9ef26a3c4cd2e6d469f771815a07cb820800beb6"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 09 13:46:51 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jun 11 11:01:23 2015 -0700"
      },
      "message": "Make path to apk compliant with jar url format\n\nBug: http://b/21726698\nBug: http://b/8076853\nChange-Id: I8c1942a98fe3119746b4dc9f60a7ff215ea7009c\n(cherry picked from commit 524f1f1efe0cb32714c61e26f21701ac952b9e42)\n"
    },
    {
      "commit": "ef25592f14d23ce6294ea103e9edf894779d141d",
      "tree": "5c6bd7e34adb984bb2d63f9f115ce6d85b0803f5",
      "parents": [
        "598493e725e0298ae11ddbdee62c3a7007eb503c"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 08 11:53:08 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 09 14:56:26 2015 -0700"
      },
      "message": "Fix dl* tests to run-on-host\n\nBug: http://b/20121152\nChange-Id: I1e1f41d885c75dbb26f91565a53a15d62ef72ce6\n"
    },
    {
      "commit": "aae859cc3ca127d890e853cbf12b731e05624a22",
      "tree": "159e996dd6756b99fe70371e99a69ec6040e851b",
      "parents": [
        "e686df8d839216460f02cf7db6c4e26a13e49afd"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 31 11:14:03 2015 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 06 21:15:43 2015 +0000"
      },
      "message": "Add realpath for soinfo\n\n  This change adds realpath to soinfo and\n  extends limit on filenames from 128 to PATH_MAX.\n\n  It also removes soinfo::name field, linker uses\n  dt_soname instead.\n\nBug: http://b/19818481\nBug: https://code.google.com/p/android/issues/detail?id\u003d80336\nChange-Id: I9cff4cb5bda3ee2bc74e1bbded9594ea7fbe2a08\n"
    },
    {
      "commit": "9b82136b987bc01224e3b42732334ea27c97d188",
      "tree": "036facba010c670c5d6bfc3fa9dbb2de0f28caf8",
      "parents": [
        "ab7c79e22e5495a2aa171047a044ce1037e461a9"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 02 16:03:56 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 03 10:50:48 2015 -0700"
      },
      "message": "Add ANDROID_DLEXT_FORCE_LOAD flag\n\n  This flag allows to force loading of the library\n  in the case when for some reason multiple ELF files\n  share the same filename (because the already-loaded\n  library has been removed and overwritten, for example).\n\nChange-Id: I798d44409ee13d63eaa75d685e99c4d028d2b0c1\n"
    },
    {
      "commit": "52393a56335435efc605aff66aca3145873e1e56",
      "tree": "db601ac602f90c06269d41fb653c15797b2d7188",
      "parents": [
        "6943f2968cb6054f8874e30b309985b41a37e2e0"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 18 22:50:01 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 18 22:50:01 2015 -0700"
      },
      "message": "Move open from zip tests to dlext\n\n To avoid building them for glibc.\n\n Also replace snprintf with std::string\n\nChange-Id: I12e1d2e4ab46ff5af6c05453da67842e0d838fc5\n"
    },
    {
      "commit": "b1ada3dd3fbf188ced9ab1edf1ee154d119bbc02",
      "tree": "c395fa5f5d52694f53ea07877d2678c57f2cf68b",
      "parents": [
        "11a06c73f6e7d31442429a58a346d881b0a8a441"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 13:20:23 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 13:20:23 2015 -0700"
      },
      "message": "Fix typo\n\nChange-Id: Ie6dad7d09873c88f6bbb2d45c2780e3b0c618bd6\n"
    },
    {
      "commit": "294d1e2c9e17873a0ce1c23cb2a559fc04f610be",
      "tree": "15c59b1b6c1d5bf93b3577b6fddb2d1c57382393",
      "parents": [
        "0e32e39df0e487ec86d86627f1d4b43d1c8c524d"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sun Dec 07 20:43:37 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sat Dec 13 18:53:34 2014 -0800"
      },
      "message": "better gtest runner for bionic\n\n1. option to run each test in a separate forked process: \"--isolate\".\n2. warnings about slow tests: \"--warnline\".\n3. run multiple tests at the same time: \"-j N\".\n\nBug: 17589740\nChange-Id: Ife5f4cafec43aa051ad7bd9c9b2b7e2e437db0de\n"
    },
    {
      "commit": "16f7f8d2503a9033a09a4d7e857561d63471bb82",
      "tree": "6e90ea6e751a2a1b256a88d97e7a5fa81df80459",
      "parents": [
        "695781b6f0419f82939176a6ec1a240300d9f036"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Nov 04 11:08:05 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Nov 04 14:37:15 2014 -0800"
      },
      "message": "check invalid file offset when loading library\n\nBug: 18178121\nBug: 18078224\n\nChange-Id: I5254433d54645db68e9b83d5095dc2bf9d8531bc\n"
    },
    {
      "commit": "a6c1279098f24a675d0df74ce1946f5d534b425e",
      "tree": "093d8cf0f5610eaf29dad4415236baefda00f5ef",
      "parents": [
        "8f41d3d3bc7cf2375e5dd9202da619fd67a5928f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 21 12:09:18 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 21 13:51:08 2014 -0700"
      },
      "message": "Rename library_offset to library_fd_offset\n\n replace lseek() and use pread() instead\n add test for library_fd_offset \u003e file_size case\n\nBug: 17762003\nChange-Id: I4555f0be635124efe849c1f226985bcba72ffcbd\n"
    },
    {
      "commit": "667853d47770fbdb54aaf0b3261b0d4882725770",
      "tree": "b131912e106bc55a2148ee04e4120389ca037f18",
      "parents": [
        "ac3c94d031c16a0299471a593cdc6248494e539d"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Oct 08 16:22:03 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 08 16:38:58 2014 -0700"
      },
      "message": "Build dlext_testzip as custom module.\n\nUse $(BUILD_SYSTEM)/base_rules to build it as custom module, so that\nit\u0027s exposed to utilities like mm/mmma etc.\n\nBug: 17887283\nChange-Id: Idd7b62d08e4d56331a3ff15da6aa46eae8c41898\n"
    },
    {
      "commit": "07e5bc152d8a3ad4c50808bb86f3c0f2c5e2f514",
      "tree": "0d80ab6a46252135b3550f82766d300fe5284cfa",
      "parents": [
        "d5df4124bbbb30411ef19f7c2fbb3987d0eb9630"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 03 17:52:44 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Oct 06 10:02:34 2014 -0700"
      },
      "message": "Add file_offset parameter to android_extinfo\n\nBug: 17762003\nChange-Id: I8fb267a3155acef3dba534038cf5d1ef00d7154b\n"
    },
    {
      "commit": "69fb9f3f408b7d7f85522e3848a8ab5b87d6e377",
      "tree": "9d7ec530c4e87ec9b1e2be32c55f3d3caf696d56",
      "parents": [
        "3b10ba6f1b743ddced32474891ff6d1cb83c027a"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 03 11:30:21 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 03 11:30:21 2014 -0700"
      },
      "message": "Don\u0027t fail a test just because we aren\u0027t root.\n\nIf the tests are not being run as root, emit a message and don\u0027t\ncontinue with the test.\n\nChange-Id: I352e1a4162caaeb18b81b8daf44797009756dcd9\n"
    },
    {
      "commit": "a2c6ae6f841d088b79a2a7bbd73847b8b199a521",
      "tree": "eb4a0f2c52238e16735e90cc14fffacb87e4aa1b",
      "parents": [
        "9e307af982ea9030849293b5e3307733289e3c2c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 27 13:45:37 2014 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 27 13:45:37 2014 -0700"
      },
      "message": "Add missing type casts before comparison.\n\nBUG: 17300548\nChange-Id: Ice9868f36c8fa8cd40bb13741b0e33c8f8d354fd\n"
    },
    {
      "commit": "04dc91ae763adc403a14c88b4c46f77b3d2d71a3",
      "tree": "aa8c5774929f43e2a13e308f93df4c65744f777d",
      "parents": [
        "4d299a2cf7880789e658f427196d1ca9fe02a9bc"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 01 14:10:16 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jul 02 13:20:47 2014 -0700"
      },
      "message": "Load library using file handle.\n\n * This patch enables dlopen by file descriptor\n   instead of path/name.\n\nBug: 15984217\nChange-Id: Ib39051e00567fb97070bf96d8ce63993877c0a01\n"
    },
    {
      "commit": "26052616915fe2324755687c7db73d69c521b34d",
      "tree": "41cfb3c89c4ab9b94be4c31330877fc0abeeda6a",
      "parents": [
        "9b5ee4aa85cf55467eb9a749b6602f6f2ba1cfc6"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Fri May 02 14:57:42 2014 +0100"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue May 06 11:38:53 2014 +0100"
      },
      "message": "Test that relro sharing actually saves memory.\n\nSpawn 20 child processes, have them all load the library, and compare\nthe total PSS used in the case where we use dlopen() and the case where\nwe use android_dlopen_ext() with relro sharing. We assume we will save\nat least 10% of the memory; in practise this example saves 40% or more\nso this should be a reasonable threshold.\n\nBug: 14299541\nChange-Id: Idccf6b8b0eb137abae2200f1ce68fb76b3cbdd75\n"
    },
    {
      "commit": "26ec9679ff01fb155ae21015f31cc95bed24f670",
      "tree": "97478537891feb00d442d1e0eba5be1c0d64eefc",
      "parents": [
        "07bab525e24725aaacd71e7cc63dfc31d48ba8a7"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Apr 30 15:48:40 2014 +0100"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Fri May 02 14:25:45 2014 +0100"
      },
      "message": "Handle empty relro segment or incorrectly sized file.\n\nIf the file has no relro segment, the generated relro file will have\nlength 0, which caused mmap to fail. If the relro file has nonzero size,\nbut is too short (e.g. because it\u0027s for the wrong version of the\nlibrary), the linker would segfault while comparing the data. Fix both\nthese issues: don\u0027t try to map a zero length file, and don\u0027t try to\ncompare data that would be beyond the end of the file.\n\nImprove test to explicitly generate two versions of the library: one\nwith -z relro, and one with -z norelro, so we can test both cases; also\nexplicitly test the case where the relro file has length 0.\n\nBug: 14299541\nChange-Id: Id8b95585edda90e8bb5de452a35b70ed2d224934\n"
    },
    {
      "commit": "53c884e28166678b2fa40cb3763d1549074628ad",
      "tree": "a527d79401bc89a1fbb818869191509f78e88080",
      "parents": [
        "635edbdf93a127da7db77d9cd174615734b4fb85"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 22 17:48:08 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 22 18:44:55 2014 -0700"
      },
      "message": "Get ANDROID_DATA dir from enviroment\n\nChange-Id: Ie3675bd27bbc779fc2140f95b930eadd14838753\n"
    },
    {
      "commit": "183ad9df536ab04ef35a397a1f4724e4e401d11f",
      "tree": "65c76a120390c1350ff1d38b725b54cabd91c06b",
      "parents": [
        "12bbb9164578b6512b8b07a3fb093858244b7c7b"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Feb 27 13:18:00 2014 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Apr 17 14:30:46 2014 +0100"
      },
      "message": "Allow sharing the RELRO section via a file.\n\nAdd flags and a file descriptor to android_dlopen_ext() to allow writing\nthe RELRO section of the loaded library to a file after relocation\nprocessing, and to allow mapping identical pages from the file over the\ntop of relocated memory in another process. Explicitly comparing the\npages is required in case a page contains a reference to a symbol\ndefined in another library loaded at a random base address.\n\nBug: 13005501\nChange-Id: Ibb5b2d384edfaa5acf3e97a5f8b6115c10497a1e\n"
    },
    {
      "commit": "12bbb9164578b6512b8b07a3fb093858244b7c7b",
      "tree": "2a32dc3fe2902444aed43647f0ab1d2612507296",
      "parents": [
        "012cb4583a5f8564059142bb1900ea3a31e7cfa9"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Feb 06 14:34:21 2014 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Apr 17 14:22:17 2014 +0100"
      },
      "message": "Support loading libraries to a reserved address.\n\nAdd flags and parameters to android_dlopen_ext() to allow loading a\nlibrary at an already-reserved fixed address. If the library to be\nloaded will not fit within the space reserved, then the linker will\neither fail, or allocate its own address space as usual, according to\nwhich flag has been specified. This behaviour only applies to the\nspecific library requested; any other libraries loaded as dependencies\nwill be loaded in the normal fashion.\n\nThere is a new gtest included to cover the functionality added.\n\nBug: 13005501\nChange-Id: I5d1810375b20fc51ba6a9b3191a25f9792c687f1\n"
    }
  ]
}
