)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
