)]}'
{
  "log": [
    {
      "commit": "d02148c31af0025582c633cc3dac177022d6da56",
      "tree": "b92a7e724664b8e6ce725c62e65e5e18f09b243e",
      "parents": [
        "e925485acdfdbef0894bf26e1d0595002b83c696"
      ],
      "author": {
        "name": "Edgar Arriaga",
        "email": "edgararriaga@google.com",
        "time": "Mon Nov 23 18:11:02 2020 -0800"
      },
      "committer": {
        "name": "Edgar Arriaga",
        "email": "edgararriaga@google.com",
        "time": "Thu Jan 14 19:34:39 2021 -0800"
      },
      "message": "Add a flag to distinguish shared VMAs\n\nThis flag is required to filter out shared VMAs when compacting memory\nusing process_madvise.\n\nTest: atest bionic-unit-tests-static\nBug: 173258203\n\nChange-Id: I01fc0cc614b03128a5a9b0a6c8c5c2d829b701f9\n"
    },
    {
      "commit": "aff9a34bd8bb7b4d92a4cebd64a710e36ac0b3ca",
      "tree": "a95c7679349a7017a5b1b808394404ad843a2173",
      "parents": [
        "95dbcfaf045edfb17c48fd3e46fe2e3a278dc148"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Aug 03 15:29:12 2020 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Aug 03 16:17:00 2020 -0700"
      },
      "message": "Rename linker greylist to exempt-list\n\nUpdate a comment in android-changes-for-ndk-developers.md about the\nremoved debug.ld.greylist_disabled system property.\n\nUpdate language to comply with Android\u0027s inclusive language guidance\n\n  #inclusivefixit\n\nSee https://source.android.com/setup/contribute/respectful-code for reference\n\nBug: http://b/162536543\nTest: bionic-unit-tests\nChange-Id: I760ee14bce14d9d799926c43d2c14fd8ffbc6968\n"
    },
    {
      "commit": "68ae6ad12e4f89526638f167c380d0b28b3bdeac",
      "tree": "e18075751c1f0d08d94d7c6be14e1a18b560b285",
      "parents": [
        "c79ea239415963d4a38752d0f3efe50531c8e04f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 21 16:11:30 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 21 16:34:58 2020 -0700"
      },
      "message": "Changes for #inclusivefixit.\n\nTest: treehugger\nChange-Id: I7ff0496c5c2792a41781e74634247f55b0548213\n"
    },
    {
      "commit": "b8cd7e7f587d6157c547bbcd8d03374d71fdb3dc",
      "tree": "f5177cdcc13fea6ecf9b36cb305ebf69c4862f5a",
      "parents": [
        "01790fdc6928a34125f092bbf98e9217a2251fa5"
      ],
      "author": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Fri May 15 16:21:39 2020 +0000"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Fri May 15 22:01:00 2020 +0000"
      },
      "message": "Revert \"Disable dlfcn#dlopen_system_libicuuc_ tests due to test failures on cuttlefish\"\n\nThis reverts commit 01fb8d7120d51cbb65de177f3ed95094549cf094.\n\nReason for revert: Re-land the test after fixing b/156397945\n\nBug: 156397945\nChange-Id: Ie9ec5fef7a308e28d512c6438c5c06758bdbcf06\n"
    },
    {
      "commit": "01fb8d7120d51cbb65de177f3ed95094549cf094",
      "tree": "00f7df0bce7d80b8624d1027234ac1fd8208f917",
      "parents": [
        "e3bc50d44f40c311ad0dcb380f8d0d1f6a7b231b"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Tue May 12 11:07:54 2020 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Tue May 12 10:10:32 2020 +0000"
      },
      "message": "Disable dlfcn#dlopen_system_libicuuc_ tests due to test failures on cuttlefish\n\nBug: 156315785\nTest: atest CtsBionicTestCases\nChange-Id: I6d61a2dcf55ebf67587ccf2653af3aca493b022d\n"
    },
    {
      "commit": "f248d2de848ecccc75b3ec7af6b463578cbe611a",
      "tree": "6587a06d682f7463d5e0e339ab9f5c79f4f9a75a",
      "parents": [
        "95c00dcf0bb3cae35a199efcb93b81092983c151"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Wed May 06 21:05:03 2020 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Thu May 07 23:15:01 2020 +0000"
      },
      "message": "Move libicuuc.so into com.android.i18n module.\n\nChange the location set in the linker\n\nBug: 130219528\nBug: 138994281\nTest: atest CtsBionicTestCases\nTest: atest CtsJniTestCases\nChange-Id: I215a8e023ccc4d5ffdd7df884c809f8d12050c8f\n"
    },
    {
      "commit": "22fa3dde076bf6dbe432acdbede7693d0544564e",
      "tree": "4a4b6aac84b51fb871d2e924703f50186e32165e",
      "parents": [
        "e503383c92e89190a59508e741dcdc62491c7269"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 31 14:47:48 2020 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Feb 03 14:20:40 2020 -0800"
      },
      "message": "Ignore symbols of imported libs\u0027 dependencies\n\nWhen a library is present in a namespace via the secondary_namespaces\nlist (i.e. the executable, LD_PRELOAD, DF_1_GLOBAL, or\nandroid_create_namespace inheritance), then we want to search that\nlibrary\u0027s symbols, but not the symbols of its dependencies. Otherwise,\nwe want to search the dependencies to handle cross-NS dependency.\n\nBug: http://b/148569846\nTest: bionic unit tests\nChange-Id: If798d69de28ed5c0f1a155e4ff85c7e08934e531\n"
    },
    {
      "commit": "95c6cd753f028b1afc0c6a800a3dd6bd85a5a6a0",
      "tree": "3d785e53e88c0b5864a8129c7b13e31f5d0e9caf",
      "parents": [
        "508d270886e90fac23ce51f81864d009307f13ae"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 13:26:14 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 13:26:14 2019 -0800"
      },
      "message": "Stop using the __ANDROID_API_x__ constants.\n\nHistorically we\u0027ve made a few mistakes where they haven\u0027t matched the\nright number. And most non-Googlers are much more familiar with the\nnumbers, so it seems to make sense to rely more on them. Especially in\nheader files, which we actually expect real people to have to read from\ntime to time.\n\nTest: treehugger\nChange-Id: I0d4a97454ee108de1d32f21df285315c5488d886\n"
    },
    {
      "commit": "ad865d7b3dbe0ad31418e1ca8f0ee79bccc1d529",
      "tree": "3ac308014a66736130e846c46bab62f03023335e",
      "parents": [
        "573ddbab3f7333ba7ce95976c3531f35bead1a2a"
      ],
      "author": {
        "name": "Evgeny Eltsin",
        "email": "eaeltsin@google.com",
        "time": "Tue Dec 17 18:54:17 2019 +0100"
      },
      "committer": {
        "name": "Evgeny Eltsin",
        "email": "eaeltsin@google.com",
        "time": "Tue Dec 17 18:54:17 2019 +0100"
      },
      "message": "Fix dlext.ns_anonymous test for native bridge\n\nThe executable flag might not be present for the executable segment\nif the code is being handled by native bridge implementation. Old\nheuristics for this case was to assume first segment is executable.\nThis doesn\u0027t stand any more. Instead, look for segment that contains\nthe function test is going to call.\n\nTest: bionic-unit-tests --gtest_filter\u003ddlext.ns_anonymous\nChange-Id: I960bebba86e225d739b73f6d093e145fff17b4a8\n"
    },
    {
      "commit": "16269576668b4f3059c6f8f7a77d6a5d7ddf0e26",
      "tree": "56b842944f93e7845d2024765346156f334ec3b6",
      "parents": [
        "590bdbe6e938e1bc53b09674b7eedde440863f11"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 29 13:41:00 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 05 13:45:54 2019 -0800"
      },
      "message": "linker: add more context to link failure error.\n\nThis change makes it easier to diagnose mistakes in linker\nconfiguration that result in a library being accidentally loaded in\nmultiple namespaces without its dependencies available everywhere.\n\nTest: manually tested the error message\nTest: bionic-unit-tests\nChange-Id: I03a20507f8fc902c2445a7fbbf59767ffffd5ebf\n"
    },
    {
      "commit": "89b658c2659911cfcb1020b5fda83f0e9accd025",
      "tree": "d0828bacecd80799dff6391b45686cbfd7569daf",
      "parents": [
        "87a10ac108aa8baf47c12559ea501813ea3fd575"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 10 13:27:54 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 10 15:10:40 2019 -0700"
      },
      "message": "Only get stats for relevant maps.\n\nScudo creates a large map on 64 bit which can cause a slow down trying\nto get the usage stats for all maps. Since the test only really cares\nabout a small subset of maps, only get the usage stats for those maps.\n\nTest: Ran unit tests on scudo and jemalloc based systems.\nChange-Id: Iba3cff1487ca304083aac323a3971b9f939f5c11\n"
    },
    {
      "commit": "191ecdc49ba18fc07d62d419fd51cc7dee4190f8",
      "tree": "bfd1dc23f8fed1ddeee6b62a81623b32159b6799",
      "parents": [
        "639ad55176c78bfd70c3786a92a05dd3d2299953"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Aug 07 19:06:00 2019 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Aug 15 09:21:34 2019 -0700"
      },
      "message": "Fix a few bionic test failures caused by hwasan global instrumentation.\n\nThe call to the load hook needs to be moved before the call to link_image()\nbecause the latter calls ifunc resolvers which might access global\nvariables. This fixes a bunch of ifunc tests.\n\nThe dlfcn.segment_gap test is currently failing. One problem is that the name\nof the .bss.end_of_gap section changes as a result of global instrumentation.\nAdd some wildcards in so that we match both names. The other problem seems\nto be the same as b/139089152.\n\nIt turns out that we need to untag pointers in a few more places. Since we have\nquite a few of these now it seems worth creating a function for it.\n\nTest: bionic-unit-tests\nChange-Id: I44e2b0904faacdda7cc0c5e844ffc09de01dea2d\n"
    },
    {
      "commit": "3d24d2b0883ea828443fd7c36d1b262410618aca",
      "tree": "90ddca40aa1d86f1c182462d5b3386a4375dcc3f",
      "parents": [
        "a5c9c7c56542b6471575148b8a3654078b180940"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 13:53:01 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 16:31:08 2019 -0700"
      },
      "message": "Add memfd_create(2) and mlock2(2).\n\nThese are old enough now that the latest devices will have kernels that\nsupport them.\n\nAlso add basic doc comments to \u003csys/mman.h\u003e.\n\nTest: treehugger\nChange-Id: I1b5ff5db0b6270f5c374287cac1d6a751a0259f5\n"
    },
    {
      "commit": "b51bb5047133bd24f4c3f0b5caab8f2f203da02d",
      "tree": "f30de07f94e02e586122da435981047afca96895",
      "parents": [
        "2c02e45f4b4ad997ea681993601c9f67bf96a2ca"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 03 22:45:41 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 03 22:45:41 2019 -0700"
      },
      "message": "Track libziparchive API change.\n\nBug: http://b/129068177\nTest: treehugger\nChange-Id: Ieccd528a34b66de59fad78586dead6b1df9cae98\n"
    },
    {
      "commit": "401e2efa39797c61e174b6e3f12e7b41d7511fc3",
      "tree": "95b4f2f1c548eb8f8239d577597336528e5a3178",
      "parents": [
        "b250766282a74bfc858c81e888b7cdc6ac127d1f",
        "5d10374947824c60d524e812172ae60f30a51fde"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 22 23:26:36 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 22 23:26:36 2019 +0000"
      },
      "message": "Merge \"Only write main library\u0027s RELRO by default.\""
    },
    {
      "commit": "5d10374947824c60d524e812172ae60f30a51fde",
      "tree": "d6ae67a2d04a626afdabbe546d01378bd0636eca",
      "parents": [
        "e6fd53b751c253ce9315875bed838a6d549132f3"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Apr 11 12:25:06 2019 -0400"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Apr 11 13:57:31 2019 -0400"
      },
      "message": "Only write main library\u0027s RELRO by default.\n\nANDROID_DLEXT_WRITE_RELRO was inadvertently writing out the RELRO\nsection of all libraries loaded during a given dlopen() call instead of\nonly the main library; since the other libraries are loaded at\nunpredictable addresses this additional data is rarely useful.\n\nFix this to only happen when the\nANDROID_DLEXT_RESERVED_ADDRESS_RECURSIVE flag is being used.\n\nBug: 128623590\nTest: DlExtRelroSharingTest.CheckRelroSizes\nChange-Id: I05e8651d06ce2de77b8c85fe2b6238f9c09691ad\n"
    },
    {
      "commit": "fa9f7f28d4d3df6b1439553ed183efd421981616",
      "tree": "7bc371b05622827a39f375a7c43201c601e72b6d",
      "parents": [
        "e6fd53b751c253ce9315875bed838a6d549132f3"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue Apr 02 17:04:42 2019 -0400"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue Apr 02 18:06:12 2019 -0400"
      },
      "message": "Fix DLEXT_WRITE_RELRO when loading multiple libs.\n\nANDROID_DLEXT_WRITE_RELRO was causing the GNU RELRO sections of\nlibraries to become corrupted if more than one library was being loaded\nat once (i.e. if the root library has DT_NEEDED entries for libraries\nthat weren\u0027t already loaded). The file offset was not being correctly\npropagated between calls, so after writing out the (correct) RELRO data\nto the file, it was mapping the data at file offset 0 for all libraries,\nwhich corrupted the data for all but one of the libraries.\n\nFix this by passing file_offset as a pointer the same way that\nphdr_table_map_gnu_relro does.\n\nBug: 128623590\nTest: tbd\nChange-Id: I196cd336bd5a67454e89fd85487356b1c7856871\n"
    },
    {
      "commit": "358603a40908415d5fe780f9321ba7d6b9941638",
      "tree": "4485083508172c6474755333b0edd99ad7c7da0f",
      "parents": [
        "3e742cb6133ad37ce28e8f0bffdf70f763ed45a3"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Mar 29 14:25:16 2019 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Mar 29 14:27:27 2019 -0700"
      },
      "message": "Modernise code to use override specifier\n\nGenerated by clang-tidy.\n\nTest: m checkbuild\nChange-Id: I8e23da6b8af31b291be2eefe9937ca222ea8a8c3\n"
    },
    {
      "commit": "e08288465ece24860d61788b975a8267a4594379",
      "tree": "95bdb088b066aa9d1ed495244c13b3e644acbdec",
      "parents": [
        "e990078f055314baab073380c58819181203dd63",
        "bcaa454d32e1b4ccf92467bb263d627695ac9a5b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 27 02:05:57 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 27 02:05:57 2019 +0000"
      },
      "message": "Merge \"bionic tests: use GTEST_SKIP.\""
    },
    {
      "commit": "1e7a1503392e6d923755ca4efc2a4a40c161d62c",
      "tree": "e25a8a4395dbc16c2b116297907ce7c9164e4c2f",
      "parents": [
        "10935e063d3db0ff2b61f710b8f34bd92fa861ba"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Mar 14 16:25:45 2019 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Mar 14 16:25:45 2019 -0700"
      },
      "message": "Reduce reserved size for DlExtTest.ReservedRecursiveTooSmall test\n\nWhen built with clang-r353983, the ReservedRecursiveTooSmall test fail\ndue to the reserved memory is now large enough for android_dlopen_ext.\nReduce the reserved memory size to agree with ReservedTooSmall test.\n\nTest: bionic-unit-tests\nBug: 126457671\nChange-Id: I3e311a3f35b0de5d028fa1b9b3681d5ec32faee8\n"
    },
    {
      "commit": "bcaa454d32e1b4ccf92467bb263d627695ac9a5b",
      "tree": "65d7d4c493242ecb51bfe1796f133b32538de514",
      "parents": [
        "ff16c0b89b7297bc70353f60afac9bb93d6b0087"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 08 15:20:23 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 10:26:39 2019 -0700"
      },
      "message": "bionic tests: use GTEST_SKIP.\n\nAlso be a bit more to the point in our messages, focusing on \"why\" not\n\"what\".\n\nTest: ran tests\nChange-Id: I297806c7a102bd52602dcd2fcf7a2cd34aba3a11\n"
    },
    {
      "commit": "7cdbd0d477176e0973beb7328e40c328aa73d1e5",
      "tree": "6de43a0fb91dd75eb0eb89f4a003b32e6e8e3c0d",
      "parents": [
        "b656d4a1da35eac817950f906ce1c26259c05e82",
        "efbe9a5eefce28db6d1dbba18c212eb45915cf78"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 21 16:06:17 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 21 16:06:17 2019 +0000"
      },
      "message": "Merge \"linker: allow using reserved space for multiple libraries.\""
    },
    {
      "commit": "efbe9a5eefce28db6d1dbba18c212eb45915cf78",
      "tree": "0e35795b7b52bc65af89143af0662b5b0f4ce3e1",
      "parents": [
        "73ee7a6320024c8f390d954a01b7a067c919bfc4"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Oct 17 15:59:38 2018 -0400"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Feb 20 17:29:36 2019 -0500"
      },
      "message": "linker: allow using reserved space for multiple libraries.\n\nIntroduce a new flag ANDROID_DLEXT_RESERVED_ADDRESS_RECURSIVE which\ninstructs the linker to use the reserved address space to load all of\nthe newly-loaded libraries required by a dlopen() call instead of only\nthe main library. They will be loaded consecutively into that region if\nthey fit. The RELRO sections of all the loaded libraries will also be\nconsidered for reading/writing shared RELRO data.\n\nThis will allow the WebView implementation to potentially consist of\nmore than one .so file while still benefiting from the RELRO sharing\noptimisation, which would otherwise only apply to the \"root\" .so file.\n\nTest: bionic-unit-tests (existing and newly added)\nBug: 110790153\nChange-Id: I61da775c29fd5017d9a1e2b6b3757c3d20a355b3\n"
    },
    {
      "commit": "6cb719f0ed2d59ed88d79e8b36147c49975753c9",
      "tree": "21ee650264fe65ec145f21049336b1aad925975b",
      "parents": [
        "73ee7a6320024c8f390d954a01b7a067c919bfc4"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Wed Feb 06 17:19:10 2019 +0000"
      },
      "committer": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Thu Feb 07 01:17:37 2019 +0000"
      },
      "message": "Revert \"Revert \"Allow dlopen(\"/system/lib/\u003csoname\u003e\") for pre-Q\"\"\n\nThis reverts commit 1906e77665758c61b0d97c35f3d64225f296504a\nand fixes dlopen(nullptr)\n\nIt\u0027s enabled for the following .so libraries\nlibicuuc.so\nlibicui18n.so\n\nThis CL does not move the .so files into a APEX.\nThus, no visible effect before moving .so files.\n\nBug: 121248172\nTest: dlfcn#dlopen_from_nullptr\nTest: Perform the following test after moving libicuuc to /apex\n      dlopen(\"/system/lib64/libicuuc.so\") for targetSdkVersion \u003c Q\nChange-Id: Ia310ea566485fe00ca28e2203f4bffbd92243638\n"
    },
    {
      "commit": "4e02cc185873c9ab0b6be6260f987cbdfe87f5d5",
      "tree": "5a6f0b6fa9dfd4db23475df20bb502c043944ffc",
      "parents": [
        "822326db922ac5d0e4dea8cff1d774e8f04db94a"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Mon Jan 21 14:22:05 2019 -0800"
      },
      "committer": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Fri Jan 25 13:07:02 2019 -0800"
      },
      "message": "bionic_unit_tests: Remove dependency on libpagemap\n\nUse libmeminfo instead.\nBug: 111694435\nTest: bionic-unit-tests --gtest_filter\u003dDlExtRelroSharingTest.*\n\nChange-Id: Ice217a91a16ee0216354608b2776c0f1e5f65c09\nMerged-In: Ice217a91a16ee0216354608b2776c0f1e5f65c09\nSigned-off-by: Sandeep Patil \u003csspatil@google.com\u003e\n"
    },
    {
      "commit": "68a3bcc249b04394b73991c5272aa0ae4bde7676",
      "tree": "1198b5a3d89086b82223d8ee7271d215643c03a3",
      "parents": [
        "c2d3e67a77fe284e8f8f1ae4dd4a67a669bfd644"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 13 07:35:21 2018 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 13 10:57:28 2018 -0800"
      },
      "message": "bionic tests: switch to using android-base/file.h for TemporaryFile\n\nA matching definition of TemporaryFile exists in libbase now.\n\nTest: compile\nBug: 119313545\nChange-Id: I6f84dbf3af9a9c4b270a2532a36c9cb4c0f6bb8f\n"
    },
    {
      "commit": "8178c417f68dac9c2d1a6b44dbca1e6b85e5b081",
      "tree": "ac31cd7fcd74e5b7beb05807bae4f288a6dbdf90",
      "parents": [
        "0c39bd468d3aa19b3e27937b36b101cc4aa65dab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 05 13:34:36 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 06 11:15:17 2018 -0800"
      },
      "message": "ART isn\u0027t using the ART-specific linker features any more.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ide3c295035687019608a2c4716a4a21cb889d121\n"
    },
    {
      "commit": "6d2c0bdf6e17cddb8568bbcac375d63f009f1575",
      "tree": "a7565b242dc519751ee6feebb9b2bf643fb07004",
      "parents": [
        "f3ff8dc6f42583ca179cf87919a0aa15597b942b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Aug 21 18:13:10 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Sep 27 22:22:17 2018 -0700"
      },
      "message": "Move isolated test runner out of bionic.\n\nUse a global gtest isolation runner rather than the custom one in\nbionic.\n\nTest: Ran all unit tests and verified same behavior before and after.\n\nChange-Id: I24a7cf17cf8e018d0f51969c64b53ce9059cc779\n"
    },
    {
      "commit": "a8971514264996e7ab3dc69acecbc332afbef6f5",
      "tree": "ab65c3ffe9eda58ed01990f9fe6437de110be125",
      "parents": [
        "92c6f7ee9014f434fbcce89ab894c745e36732d2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 27 14:39:06 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 27 14:39:06 2018 -0700"
      },
      "message": "linker: improve \"bad ELF magic\" error.\n\nInclude what we actually saw.\n\nBug: http://b/79463184\nTest: ran tests\nChange-Id: Id5f8aa3ab94b411ea839b0a1ada9beda9053a10f\n"
    },
    {
      "commit": "3b0a5b73479ec47e033e6d42d24fc5314c49c5be",
      "tree": "41b23aebd4f24df302495531b9d6f8e265a44237",
      "parents": [
        "55547db4345ee692b9cfe727c97dd860ed8263f8"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jun 06 11:11:25 2018 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jun 06 11:22:20 2018 +0200"
      },
      "message": "Relax check on number of segments in a .so file\n\nThis check was not necessary since it is perfectly fine for a dso to\nhave any number of PT_LOAD segments, given that the number is \u003e 0.\n\nBug: http://b/109747297\nTest: make\nChange-Id: I0e3b400fddf05ed7b9342bacbfffd3b578f26cf3\n"
    },
    {
      "commit": "321476a3ecc6b25579b2ddfb86b10a405f90eb8c",
      "tree": "c0b4a8781d1fc16eecb53950a497d12d993b7ec0",
      "parents": [
        "fb56e048971e9955f902f2036299af726c02beab"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Jan 29 15:32:37 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Jan 29 15:32:37 2018 +0100"
      },
      "message": "Test ld-android.so directly\n\nThis CL addresses review comments from\nhttps://android-review.googlesource.com/c/platform/bionic/+/595067\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: I2c0fdf2a89fe6ff134308e202fb99a74080ee0ed\n"
    },
    {
      "commit": "9ee4591cb4a23b3c1a899f5ae3e4d769d0ba5a15",
      "tree": "317be1850b14a18f65bc8c9247971318c7606307",
      "parents": [
        "73871ad09be8a8259171d606c4e3e3cf08d4733c"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Jan 18 12:05:09 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Jan 25 14:45:29 2018 +0800"
      },
      "message": "linker: Allow link namespaces without name filters\n\nThis commit allows users to create a link without soname filters between\ntwo linker namespaces.\n\nThe motivation is to establish one-way shared library isolation.  For\nexample, assume that there are two linker namespaces `default` and\n`vndk`.  We would like to limit the shared libraries that can be used by\nthe `default` namespace.  In the meanwhile, we would like to allow the\n`vndk` namespace to use shared libs from the `default` namespace if the\nsoname cannot be find in the search path or loaded sonames of the `vndk`\nnamespace.\n\n          shared_libs  \u003d %VNDK_CORE_LIBRARIES%\n          shared_libs +\u003d %VNDK_SAMEPROCESS_LIBRARIES%\n    vndk \u003c-------------------------------------------- default\n       \\_______________________________________________/^\n                allow_all_shared_libs \u003d true\n\nandroid_link_namespaces_all_libs() is added to libdl, but it is\nversioned as LIBC_PRIVATE.  android_link_namespaces_all_libs() is only\nfor unit tests.\n\nBug: 69824336\n\nTest: adb shell /data/nativetest/linker-unit-tests/linker-unit-tests32\nTest: adb shell /data/nativetest64/linker-unit-tests/linker-unit-tests64\n\nTest: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests\nTest: adb shell /data/nativetest64/bionic-unit-tests/bionic-unit-tests\n\nTest: Update /system/etc/ld.config*.txt and check whether the vndk\nlinker namespace of the vendor process can access the shared libs from\nthe default linker namespace.\n\nChange-Id: I2879f0c5f5af60c7e56f8f743ebd2872e552286b\n"
    },
    {
      "commit": "5cec377f49d6429b19895eb632225cd757ea611e",
      "tree": "bcd08fe1e6b656a5a4e235a225fbe88feb54a112",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:45:23 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:56:12 2018 -0800"
      },
      "message": "Address a bunch of clang-tidy complaints.\n\nThere were a bunch more unreasonable/incorrect ones, but these ones\nseemed legit. Nothing very interesting, though.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f\n"
    },
    {
      "commit": "965d06da1ed957c349dbdfcc7831b462b757bf85",
      "tree": "e07845fb90aa116761abf3699c114a156fb02650",
      "parents": [
        "d351581aa9ba1fbce227db35500471fe59c45f08"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Nov 28 16:03:07 2017 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Sun Dec 10 22:04:55 2017 +0100"
      },
      "message": "Fix logic in loading dependencies crossing namespace boundaries\n\nThis change addresses multiple problems introduced by\n02586a2a34e6acfccf359b94db840f422b6c0231\n\n1. In the case of unsuccessful dlopen the failure guard is triggered\nfor two namespaces which leads to double unload.\n\n2. In the case where load_tasks includes libraries from 3 and more\nnamespaces it results in incorrect linking of libraries shared between\nsecond and third/forth and so on namespaces.\n\nThe root cause of these problems was recursive call to find_libraries.\nIt does not do what it is expected to do. It does not form new load_tasks\nlist and immediately jumps to linking local_group. Not only this skips\nreference counting it also will include unlinked but accessible library\nfrom third (and fourth and fifth) namespaces in invalid local group. The\nbest case scenario here is that for 3 or more namesapces this will\nfail to link. The worse case scenario it will link the library\nincorrectly with will lead to very hard to catch bugs.\n\nThis change removes recursive call and replaces it with explicit list of\nlocal_groups which should be linked. It also revisits the way we do\nreference counting - with this change the reference counts are updated after\nafter libraries are successfully loaded.\n\nAlso update soinfo_free to abort in case when linker tries to free same\nsoinfo for the second time - this makes linker behavior less undefined.\n\nTest: bionic-unit-tests\nBug: http://b/69787209\nChange-Id: Iea25ced181a98c6503cce6e2b832c91d697342d5\n"
    },
    {
      "commit": "65ba81b4e86aa4f3b11f5bd653551f52636390f8",
      "tree": "033dfd2fcb4e061868351173a803ee19f180dc74",
      "parents": [
        "f1e645c67b3d0850c7359c3bc8ee231de11b0a17",
        "4eb332439a68e2b2f629e46f1e93d6246bfa53d9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 19:34:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 29 19:34:10 2017 +0000"
      },
      "message": "Merge \"Revert \"Fix bug with double unload on unsuccessful dlopen\"\"\nam: 4eb332439a\n\nChange-Id: I21ba611931b2e5794ef49cae9bcafc8748ebe804\n"
    },
    {
      "commit": "27f1806b90aefa8b1335d0fdc3f109a8ac258638",
      "tree": "8490a196e61d2d161daa349898ff9a2cbcffb3d7",
      "parents": [
        "58554ccb8ac27fd3b5693efde2e1f7ab2a895ea2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 18:47:42 2017 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 18:48:33 2017 +0000"
      },
      "message": "Revert \"Fix bug with double unload on unsuccessful dlopen\"\n\nThis reverts commit 58554ccb8ac27fd3b5693efde2e1f7ab2a895ea2.\n\ncauses /vendor/bin/qseecomd to hit the new abort:\n\n[    8.983301] c5    603 DEBUG: Abort message: \u0027soinfo\u003d0x7147894cd0 is not in soinfo_list (double unload?)\u0027\n\nBug: http://b/69909887\nBug: http://b/69787209\nChange-Id: Ied38f797e0a071a1acc5ed41adf1b45e855143c7\n"
    },
    {
      "commit": "f1e645c67b3d0850c7359c3bc8ee231de11b0a17",
      "tree": "f02b13c02d85d0bdd19d97d424f3b5a40501e0de",
      "parents": [
        "cdfc8c1ff49a9b1ca1e5656135f9469acb6b4962",
        "dc89324e935470af1c67562204f8a988d0692185"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 29 09:37:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 29 09:37:01 2017 +0000"
      },
      "message": "Merge \"Fix bug with double unload on unsuccessful dlopen\"\nam: dc89324e93\n\nChange-Id: Ibff72e8a13cdc737d950dc71f2612fc99740109f\n"
    },
    {
      "commit": "58554ccb8ac27fd3b5693efde2e1f7ab2a895ea2",
      "tree": "bc6ed3c66552ffa8fe1cfd27062471b26325a1d3",
      "parents": [
        "f5a6fd2001baad5ea92d50f9e38388a2eda21e23"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Nov 28 16:03:07 2017 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Nov 28 21:47:01 2017 +0100"
      },
      "message": "Fix bug with double unload on unsuccessful dlopen\n\nIn the case of unsuccessful dlopen the failure guard is triggered\nfor two namespaces which leads to double unload.\n\nAlso update soinfo_free to abort in case when linker tries to free same\nsoinfo for the second time - this makes linker behavior less undefined.\n\nTest: bionic-unit-tests\nBug: http://b/69787209\nChange-Id: I886787ee021b050667f967bce7aa2708390886ea\n"
    },
    {
      "commit": "74d57a37cb14360a2f2690fdb07aec4a60d5e673",
      "tree": "08d04e53cb1950ccf4dbc39a91daa50a984988c8",
      "parents": [
        "fe0a16fa38ae31044170169c00bd08493cf016b8",
        "e3d21c84af0b8e3244e4c67a873d2a16bfb85034"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Nov 14 13:14:23 2017 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Nov 14 13:14:23 2017 -0800"
      },
      "message": "Merge commit \u0027e3d21c84af0b8e3244e4c67a873d2a16bfb85034\u0027 into HEAD\n\nChange-Id: I09b21c2e27a0dfbef10633b20d8ee7adbedc1597\n"
    },
    {
      "commit": "8db36a51ff66c6849d355d8cb65142c0dcf7e1bc",
      "tree": "1f373f1ec1ded07544e5b6ca03d8c1201803bb31",
      "parents": [
        "8f348a0cce048fc929b4ce0b850147cd7c737497"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Oct 23 15:10:10 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Oct 23 15:14:01 2017 +0200"
      },
      "message": "linker: fix error message for inaccessible libs\n\nAdded a test to make sure linker produces correct error message\nwhen user attempts to load a library in a linked namespace and fails.\n\nBug: http://b/67866190\nBug: http://b/64950640\nBug: http://b/64888291\nTest: bionic-unit-test --gtest_filter\u003ddlext*\nChange-Id: I5b5c2070d1388eff123118350b2b5c8fc7571a29\n"
    },
    {
      "commit": "b48bb2dae315690ba92b234204c3fb38f6a56492",
      "tree": "375f61780c306f3c6dc497cb50820b5998a14bd0",
      "parents": [
        "b02df314d3e3cde8a58f20f520d62257f5590eed",
        "24837ada2738b58dd270fa230f59ed8140558a56"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Oct 12 17:42:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 12 17:42:32 2017 +0000"
      },
      "message": "Merge \"ns_anonymous test: Make it work for natively bridged environment\" am: b49ac81c8e am: 1ac327aed7\nam: 24837ada27\n\nChange-Id: I3525fdbfff4ae1b41ef9525a1a742a1304016221\n"
    },
    {
      "commit": "8eaf28dc42c8228f9418c31bc04df58186963545",
      "tree": "d19a15d67ed8041f1ccbdcd0569e8bc21c063c73",
      "parents": [
        "983c2da84cdcd0171b7f726b78990cabd0a58f49"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Oct 11 10:04:14 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Oct 12 15:02:16 2017 +0200"
      },
      "message": "ns_anonymous test: Make it work for natively bridged environment\n\nThe executable flag might not be present for the executable segment\nif the code is being handled by native bridge implementation. This\ncommit changes the test to restore executable flag for first segment\nif it was removed.\n\nTest: bionic-unit-tests\nChange-Id: Ie930539135edc4db3245574b5cbe476aa1ad49c7\n"
    },
    {
      "commit": "7f1e941ab674a0c55517943fb993c96b7e45a1f7",
      "tree": "6ee105715b6deec769c0db5a43de2c631cccd808",
      "parents": [
        "77d61920f6c6390beb9d81d63222ab6909abf04f",
        "917d34a84fe9895cb7acfd7246e366a039de103d"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Aug 31 18:13:05 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 31 18:13:05 2017 +0000"
      },
      "message": "Make dlext.ns_shared be independent of default namespace config\nam: 917d34a84f\n\nChange-Id: I1b459654147912c5a8169126773e585bc5364f2a\n"
    },
    {
      "commit": "917d34a84fe9895cb7acfd7246e366a039de103d",
      "tree": "3ba1cc4e48aa36c261a5f2e4488f44a40575dc01",
      "parents": [
        "4ce79ba1543466f05eda3358dace4c1aec380d5c"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Aug 31 14:07:13 2017 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Aug 31 14:11:49 2017 +0900"
      },
      "message": "Make dlext.ns_shared be independent of default namespace config\n\ndlext.ns_shared creates a child namespace, which is isolated \u0026 shared,\nfrom the default namespace. It then checks whether a lib that was loaded\nin the parent(\u003ddefault) namespace *after* the child namespace is created\nis not accessible to the child namespace. Because this test is using the\ndefault namespace as a parent namespace, the test result is dependent on\nthe specific configuration of the default namespace, which isn\u0027t\ndesirable.\n\nSpecifically, since ANDROID_NAMESPACE_TYPE_SHARED now copies search\npaths and permitted paths of the parent namespace to the child namespace,\na lib that is accessible to the former is also accessible to the latter\neven if the lib hasn\u0027t been shared when creating the latter. So, the\nresult of the test varies depending on whether the default namespace has\npermitted paths or not. (if it is configured as an isolated namespace\nand has permitted paths, then the test fails).\n\nIn order to make this test be independent from how the default namespace\nis configured, a parent namespace is explicitly created and the child\nnamespaces are created from the parent namespace, not from the default\nnamespace.\n\nBug: 65189955\nTest: bionic-unit-tests --gtest_filter\u003ddlext.ns_shared successful\nTest: the same test successful when the default namespace is configured\nas follows\nnamespace.default.isolated \u003d true\nnamespace.default.permitted_paths \u003d ...:/data\n\nChange-Id: Ifa33c6c42f8c327b2b1c380c7abba8e8f1afee82\n"
    },
    {
      "commit": "b115aefbb3a472c605e167e09d14b1a797337e77",
      "tree": "4167aea0a211331deb64f66e3dfd6d931d20f246",
      "parents": [
        "cc3639b3eeb30cc4e994714254e8f995e77b30bf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 04 09:34:19 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 04 10:20:18 2017 -0700"
      },
      "message": "With O_TMPFILE, open(2) takes a mode argument.\n\nStrictly, the mode isn\u0027t really meaningful unless you supply O_EXCL,\nbut the kernel will take it and fstat will return it even if you\nnever give the file a name.\n\nAlso warn for O_TMPFILE without a mode at compile time where possible.\n\nBug: N/A\nTest: ran tests\nChange-Id: I729b6d6e6190676fd017a1190b6200bf9abdbfd8\n"
    },
    {
      "commit": "d7c52625f2da8322b4f0adb4c67674f0d66e619a",
      "tree": "a885e0530cb1a26a5a1fd0dee7477ef02dcb4833",
      "parents": [
        "b1b7eda11e4f66b608ae66945ddf87cbe31ecb47"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 20 14:26:56 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 20 14:58:16 2017 -0700"
      },
      "message": "Shave another uninteresting stack frame off aborts.\n\nWith this, stack frame 0 is the abort, not tgkill.\n\narm:\n\n     #00 pc 0001a41c  /system/lib/libc.so (abort+63)\n\narm64:\n\n     #00 pc 000000000001d75c  /system/lib64/libc.so (abort+120)\n\nAlso \"include what you use\" for \u003csys/syscall.h\u003e.\n\nBug: N/A\nTest: ran `crasher abort` and `crasher64 abort`\nChange-Id: I6517ac67b39b4133e890d52efc115071c812958b\n"
    },
    {
      "commit": "37b91af0f3590e577dfcef47899bca2c8f9aebf4",
      "tree": "b15cccfb4b2cb20bbdb8d0c70d7f94426e56d6a9",
      "parents": [
        "41192813232c1dbf5cb8989cd872e1a01c115245"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri May 05 22:07:05 2017 +0900"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 09 17:59:00 2017 -0700"
      },
      "message": "greylist is no longer enabled by default.\n\ngreylist is needed only for application namepaces. Since we started using\nlinker-namesapces for vendors and other platform apps linker should not\nenable greylist workaround by default.\n\nBug: http://b/37731053\nBug: https://issuetracker.google.com/38146125\nTest: sailfish builds and boots\nTest: bionic-unit-tests and linker-unit-tests pass\nChange-Id: Iee83db6fb1ae754f5ade18491321d9bca3b5ead4\n(cherry picked from commit e8ffe56a9c2bacc6bd880238250ad61e2bbb257b)\n"
    },
    {
      "commit": "f1cb669a9cd31229cc3c486a1a405fad92fe5e1d",
      "tree": "8eeb45fdf477e714798efaec907e1d99548951b8",
      "parents": [
        "87a47e1bb202a26918993487db8dc82229833ef8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 01 17:45:38 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 02 16:42:28 2017 -0700"
      },
      "message": "Shared namespaces inherit parent ns properties\n\nMake shared namespace inherit namespace links and\nsearch/permitted paths from the parent namespace.\n\nBug: http://b/37854032\nTest: bionic_unit_tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I174661d4a1dd0cbe4a378179073719aa955f3592\n(cherry picked from commit ec43dd6c36d75014c4e4dc592dd67ab20033a76a)\n"
    },
    {
      "commit": "81aad0058cd0961dfd9f3006dd979c1fdd6ca659",
      "tree": "38822e0bbd63fcbc0e71804474aed4a73d788372",
      "parents": [
        "82f7208ac0b4e31003ddfbad4a4e64e3e0e5550d"
      ],
      "author": {
        "name": "Zhenhua WANG",
        "email": "zhenhua.wang@intel.com",
        "time": "Tue Apr 25 11:07:19 2017 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 26 17:06:32 2017 -0700"
      },
      "message": "Compare Pss of tested library in VerifyMemorySaving\n\nDlExtRelroSharingTest.VerifyMemorySaving verifies whether\nandroid_dlopen_ext(ANDROID_DLEXT_USE_RELRO) really saves memory.\n\nThis patch compares Pss of the tested library rather than total\nPss of the process, in case different behavior of dlopen() and\nandroid_dlopen_ext() introduces random Pss usage.\n\nTest: DlExtRelroSharingTest.VerifyMemorySaving\n\nChange-Id: I696eca736018fca5d9ec9385ac1c79ced280281d\n"
    },
    {
      "commit": "bf34ba364186fc1ffbeada28740640cb4498e7a0",
      "tree": "c26639a2a947bf1219eabe64af6d03a5bb316f86",
      "parents": [
        "e54e64bd605f74936e1b8b6f5bf525b77abba00d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 21 13:12:05 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 21 14:45:07 2017 -0700"
      },
      "message": "loader: enable loading libraries from tmpfs\n\nThis change adds two tests for dlopen from temporary files.\n1. One Uses memfd_create() can be used to load libraries directly\nfrom memory. This requires relaxing namespace accessibility check\nin order to make this work in isolated namespaces.\n2. Another checks that open with O_TMPFILE works.\n\nBug: http://b/37245203\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I3be1d7198ca17e7f1ba022a0d86c64d59a493506\n(cherry picked from commit bb8b22a087db32773f1a9cd3473061f3ad714afc)\n"
    },
    {
      "commit": "d3e7d088453e089b3d625b0864ccdf3c74893f18",
      "tree": "0dac036e245c741b296a7fd611dbb98c3979c3a1",
      "parents": [
        "aa0b5054c52e10a9e4b5d5dd9daa90d707164af0"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 27 14:11:02 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 29 15:36:40 2017 -0700"
      },
      "message": "Fix lookup logic for linked namespaces\n\nWhen looking for already loaded libraries include\nlinked namespaces to the search, but check if\nthe library is accessible from the main namespace.\n\nBug: http://b/36008422\nBug: http://b/35417197\nBug: http://b/34052337\nBug: http://b/36660652\nBug: https://issuetracker.google.com/36636090\nTest: run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: Ic7c1d48114da3ca5dc6512ef03f595dd17b6ed17\n"
    },
    {
      "commit": "35c8e3b1251af62897a9babd693e2b1be5676160",
      "tree": "3cc1d7cfe239740c04f29d35058048bea7b47c9f",
      "parents": [
        "5f41ce25c60df2012b58846940dfac58dce50e59"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 27 12:17:47 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 27 14:16:04 2017 -0800"
      },
      "message": "Fix greylist exception to account for linked namespaces\n\nDo not load second copy of libraries that are supposed to\nbe provided by linked namespaces. Also do not print\nerror in the log if caller tries to open shared library\nusing absolute path for apps targeting N+.\n\nBug: http://b/35454141\nBug: http://b/26833548\nBug: http://b/35338922\nTest: run bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: Icf3aeedff18d287d2ba0b3df3808b100f3ef5f7a\n"
    },
    {
      "commit": "1862314dd43ccbedbb405b8b0a5d40086cf7d9ca",
      "tree": "c1d3b998d7001fd209a2efa004d31387b783b18b",
      "parents": [
        "c84e8a507cd0384f9124d06ec6cc70807b4c293b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 21 13:41:08 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 23 00:03:42 2017 -0800"
      },
      "message": "Add test for a greylisted library\n\nTest: bionic-unit-tests --gtest_filter\u003ddlext.ns*\nBug: http://b/35338922\nChange-Id: I2f4895cb1ec458c2f565a7e4d06f7a1f6200e7aa\n"
    },
    {
      "commit": "7a34b9d57a762ca7cd6b8d6b9f9fb45c2b991da7",
      "tree": "8dad357eee8d7672069abd75a63717d65b5f8ae6",
      "parents": [
        "7d429d3c480166e1013bcdf68f4be479209aa509"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 03 14:07:34 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 09 23:26:44 2017 -0800"
      },
      "message": "Replace public library list with shared lib sonames (part 2/2)\n\nThis commit updates interface of libdl.c.\n\n1. android_init_namespaces is replaces with android_init_anonymous_namespace\n2. added 2 arguments to android_create_namespace to specify linked namespace\n   and the list of shared libraries sonames.\n3. symbol lookup does not get past boundary libraries (added check and test for it).\n\nBug: http://b/26833548\nBug: http://b/21879602\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I32921da487a02e5bd0d2fc528904d1228394bfb9\n"
    },
    {
      "commit": "7d429d3c480166e1013bcdf68f4be479209aa509",
      "tree": "8aa0ee9551134cd88bc89ebdbc40e0f398f50971",
      "parents": [
        "e86a8d605b3df0c396e23ee02933c76d7040a73b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 15:28:52 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 09 23:26:44 2017 -0800"
      },
      "message": "Replace public library list with shared lib sonames (part 1/2)\n\nReplace public library list with shared lib sonames\nwhich are property of a link between namespaces\n\nThis change does not touch any external interfaces\nso from outside it behaves almost as it was before\n\nOne significant difference is that there is no longer\nneed to preload public libraries.\n\nBug: http://b/26833548\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I57e44e18a9b4f07dcd6556436346be52f52b79d7\n"
    },
    {
      "commit": "d0b5c3ad65accd2c0298edbdfd527ede63e68ba1",
      "tree": "2c38f769ab809642c585c84a5142f4507e788488",
      "parents": [
        "0dafdd430661b96439b1d154d6ce146fd46f617e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Nov 25 12:23:11 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 28 13:09:19 2016 -0800"
      },
      "message": "Fix bionic-unit-tests-glibc\n\nAlso add another test for dlsym(RTLD_NEXT, ..)\n\nBug: http://b/33106624\nTest: run bionic-unit-tests-glibc and bionic-unit-tests\nChange-Id: I340165d66bf2360b0e3273d3561a08cb5e7bd025\n"
    },
    {
      "commit": "5bc78c8bcd0c1e634c04029309ede3ec05f2d424",
      "tree": "ba41f009cdf5fb27c766b4efe05c4cbb566d2a85",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 11:35:43 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 16:55:42 2016 -0800"
      },
      "message": "Add and use constants for the Android API levels.\n\nTest: bionic tests still pass\nChange-Id: If1b619cfc9db1d3f5d91f14f2ace71058dca0c4a\n"
    },
    {
      "commit": "927877c7d3173c1259732e51428f4ae38dc6bc4f",
      "tree": "fc558a23c5b705ffcfaff7e6e4b2278a27e3d0c2",
      "parents": [
        "708589f5e8244a17d690848eed5f0fbfcce48a26"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Sep 21 11:17:13 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Oct 10 13:56:20 2016 -0700"
      },
      "message": "bionic-unit-tests: remove dependency on ANDROID_DATA\n\nReplace references to ANDROID_DATA enviroment variable with references\nto g_testlib_root.\n\nBug: http://b/22182538\nTest: build and run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nTest: make cts \u0026\u0026 cts-tradefed run singleCommand cts --skip-preconditions -m CtsBionicTestCases\nChange-Id: I5667e991551cec55b9b664f2f0063039671ff34b\n"
    },
    {
      "commit": "708589f5e8244a17d690848eed5f0fbfcce48a26",
      "tree": "c89c96b86a7248a9e398a00128cd3c4459503a3c",
      "parents": [
        "1c45e6fa47a2ab9b0b9dc8ab05f75023a8ebbd2d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 19 10:50:28 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Oct 10 04:41:56 2016 -0700"
      },
      "message": "bionic-unit-tests: Create symlinks in runtime\n\nInstead of creating symlinks in build time and then relying\non usage of adb sync (adb push follows symlinks) - create\nthem in test run time.\n\nTest: mm \u0026\u0026 run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nBug: http://b/22182538\nChange-Id: I9d2a873e3ba303533c14ba5e3b779e4a67925462\n"
    },
    {
      "commit": "a36e59bb9973aaae2e3487e0bfadd1f79814097e",
      "tree": "340c2c5c1fceebc214e8c2c2f6f9cb2e875d8640",
      "parents": [
        "dd14725eeb1e5496e92ad777db165b21ad4651f0"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Sep 01 11:37:39 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 02 14:27:47 2016 -0700"
      },
      "message": "Move test libraries under /data/nativetests\n\nMove libraries used in bionic-unit-tests out of system partition to\n/data/nativetests../bionic-loader-test-libs\n\nBug: http://b/22182538\nTest: build bionic and run bionic-unit-tests\nChange-Id: I170177bef782839d0b4970ae4418bf54d0a77836\n"
    },
    {
      "commit": "3a6c6b3254b2033a9a0246013a2c8b486800624b",
      "tree": "6e66442d0d7976aeaba933237f78d42b7f36978b",
      "parents": [
        "c8d5d2a5246e97bc916795811bf6147caa71bc5d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jul 13 16:28:20 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jul 13 16:28:20 2016 -0700"
      },
      "message": "Fix dlext.ns_smoke test\n\nCheck for updated error_message\n\nChange-Id: I0f0dd59a6deba016d37d0ccc80113b62db86c1c2\nTest: adb shell bionic-unit-tests32/64 --gtest_filter\u003ddlext.ns*\n"
    },
    {
      "commit": "d61ca37d35e31cae52a543e65d3ae02044abe5d3",
      "tree": "21c930e08750994a35991697790d61dd16fc4b52",
      "parents": [
        "a24cc2639f85d0b0978b18493f4f3bceebbc8ed3"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jun 03 10:18:07 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jun 03 10:18:07 2016 -0700"
      },
      "message": "Fix misc-macro-parentheses warnings in bionic/tests.\n\nBug: 28705665\nChange-Id: I532205b94e30acbdc97f3f4db0660c9a16a7de89\n"
    },
    {
      "commit": "42abf3d241b8fd59c3911bd04f13cd4e40e46448",
      "tree": "8a04b901c06a0ab0125efdb5afb5a60935eff2b4",
      "parents": [
        "49fbce11e6373ad4a791d44a678f37ecb9498ba2",
        "fc2da53440383fe1026e0eb287d643b577c2707d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 17 22:43:00 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 17 22:43:01 2016 +0000"
      },
      "message": "Merge \"linker: Allow caller to specify parent namespace\""
    },
    {
      "commit": "2ba1cf39ae6087249a839ec7b3793d4d4fa75438",
      "tree": "adf1d98570a548157112a307ccd58c17b5ffb320",
      "parents": [
        "5df5884743306f7b2ee437c293f4197101528a98"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 17 13:29:37 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 17 13:55:46 2016 -0700"
      },
      "message": "Fix dlopen of main executable by absolute path\n\nThis CL adds initialization of inode for the main executable\nwhich enables linker to resolve the correct soinfo when\napplication calls dlopen with absolute path to the\nmain executable.\n\nBug: http://b/28420266\nChange-Id: I102e07bde454bd44c6e46075e3faeeb5092830d8\n"
    },
    {
      "commit": "fc2da53440383fe1026e0eb287d643b577c2707d",
      "tree": "c50829121dc2d18185841dfad818a456d6db4d9b",
      "parents": [
        "5df5884743306f7b2ee437c293f4197101528a98"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 12 15:20:21 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 17 13:37:03 2016 -0700"
      },
      "message": "linker: Allow caller to specify parent namespace\n\nThis change enables apps to share libraries opened\nwith RTLD_GLOBAL between different classloader namespaces.\n\nThe new parameter to create_namespace allows native_loader\nto instruct the linker to share libraries belonging to\nglobal group from a specified namespace instead of\nusing the caller_ns.\n\nBug: http://b/28560538\nBug: https://code.google.com/p/android/issues/detail?id\u003d208458\nChange-Id: I5d0c62730bbed19cdeb16c7559c74aa262a2475f\n"
    },
    {
      "commit": "41fd29532b52bb66e3e1f4620053713fd0299f6e",
      "tree": "2ce6fdaa53cdb51c20e1e966d9be612121f9226e",
      "parents": [
        "d2f3ce9c89715accb5b294f0c0a17b2a50656333"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 09 17:37:39 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 09 18:15:41 2016 -0700"
      },
      "message": "Remove linker-namespace functions from the header\n\nThey are intended for platform use only and we shouldn\u0027t have them\nin the public header file.\n\nBug: http://b/28174921\nChange-Id: Ib9b3d0fa9442cfa2e784a693ad567d1444d774e5\n"
    },
    {
      "commit": "54807617dde7c816af09517c928a6f1261148faf",
      "tree": "d8fc789208e8d3e2cf2c8b4b187592bd2786a59c",
      "parents": [
        "4d9a97bb916aaa7d7bf819ef999d4b1a58d4750d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 21 14:57:38 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 21 15:37:01 2016 -0700"
      },
      "message": "Improve error message for empty list of public libs\n\nChange-Id: I5a3cbc99d34e05559426b521a964d1407b67a6c4\n"
    },
    {
      "commit": "aca299ac4721809d6fc61e25c505bb59acd23fbc",
      "tree": "9ab0080d50c63440a2368d74d8256ced4726e9db",
      "parents": [
        "30bc91a083e45acfded89604474189628e5c1259"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 11 12:42:58 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 14 11:52:16 2016 -0700"
      },
      "message": "Remove dangling links in secondary namespaces\n\nlinker didn\u0027t remove link to the soinfo from shared\nnamespaces on soinfo_unload, because it didn\u0027t keep\nrecord of all namespaces the library is added to.\n\nThis change adds test for this and also fixes the\nproblem by introducing list of secondary namespaces\nto soinfo, which is used to remove soinfo in\nsoinfo::remove_all_links().\n\nBug: http://b/28115950\nChange-Id: Ifbf6e54f92fa6e88f86b6a8dd6dc22d4553afd22\n"
    },
    {
      "commit": "d88e1f350111b3dfd71c6492321f0503cb5540db",
      "tree": "5055b3696a4222c5d91df0c35154a60918933df2",
      "parents": [
        "7c59c70200a86387d3c97e9d7f34e2b8dbed88b3"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 24 15:30:30 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 28 13:15:40 2016 -0700"
      },
      "message": "linker: hide the pointer to soinfo\n\nHandle no longer is a pointer to soinfo of\na corresponding library. This is done to\nprevent access to linker internal fields.\n\nBug: http://b/25593965\nChange-Id: I62bff0d0e5b2dc842e6bf0babb30fcc4c000be24\n"
    },
    {
      "commit": "d17a377c49201bd5f0e4c71d84f1ce25a86642de",
      "tree": "fb819b9173b3c94398cea3d5287d2cd86563c010",
      "parents": [
        "c199690b5ffda0f4df50d1121f7ab577af1fe468"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 01 13:11:28 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 01 15:28:43 2016 -0800"
      },
      "message": "linker: print \"not accessible\" error message to the log\n\nPrint properties of the namespace on \"library is not accessible\"\nerror to better diagnose problems with native library accessiblity\n\nBug: http://b/27406143\nChange-Id: Icf3d6c604f09dfa015de863fdb1267d343930d2a\n(cherry picked from commit 350bdad61cc6551db649fcaeb8642f4a1d6b139a)\n"
    },
    {
      "commit": "33697a0c43c48e15c3bcf018138b9b837d0099cd",
      "tree": "5abb2ab07c7f1322defd9fd6313cd11e12978579",
      "parents": [
        "94bb0fab931102f1fcf393aa507a6b77b741844f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 13:04:57 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 13:13:52 2016 -0800"
      },
      "message": "Factor out the waiting for children in bionic tests.\n\nChange-Id: I4a1e51b6920b33dc892d447f5bd6d10f1cb2704a\n"
    },
    {
      "commit": "be4f7429ca66d0652f31fc78fd88de5ee958f890",
      "tree": "54eca0a7a3929b1daf5b15065fbcee73e0411cf7",
      "parents": [
        "3e3b992469ef7a415882ed11305c916d29870452",
        "c0ffceccf93e1752a555086a04d1484c1df1b165"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 21 18:31:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 21 18:31:12 2016 +0000"
      },
      "message": "Merge \"Remove dependency on zipalign.\""
    },
    {
      "commit": "f45b0e9edee72e97106c4b3d393b9bf1582303b3",
      "tree": "4058875667899bec12774f4843a0e123aa7c4b6c",
      "parents": [
        "df2f5fbe6f3d3937c3caf95138e43ee15f6d8497"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jan 15 11:13:35 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 20 20:57:47 2016 -0800"
      },
      "message": "Do not unmap reserved region on dlclose\n\ndlclose used to unmap the part of the reserved region\nfor ANDROID_DLEXT_RESERVED_ADDRESS that was neccessary\nto map PT_LOAD segments. With this change dlclose\nreplaces mapped PT_LOAD segments with a PROT_NONE,\nMAP_ANONYMOUS | MAP_NORESERVE.\n\nPreviously caller was unmapping the reserved region after\nthe failed dlclose which led to race condition when someone\nelse reused the region freed by dlclose but before the unmap\nby the chromium code.\n\nBug: http://code.google.com/p/chromium/issues/detail?id\u003d568880\nChange-Id: I0f5eaa2bf6641f83dde469b631c518482acc59a2\n"
    },
    {
      "commit": "c0ffceccf93e1752a555086a04d1484c1df1b165",
      "tree": "6504f619dcd09a0d76be53a277c7fb84ac20cd29",
      "parents": [
        "8b49f53a5e3b4073c9341a5be6c9deb9a1666e7e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 19 20:32:37 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 20 19:56:53 2016 -0800"
      },
      "message": "Remove dependency on zipalign.\n\nRoll our own version of zipalign so that we can break the dependency\non the build tools zipalign. This breaks the transitive dependency\non androidfw so that building bionic unit tests in brillo works again.\n\nAlso modify the DlExtTest.ExtInfoUseFdWithOffset test so it dynamically\ngets the offset of the shared library inside of the zip instead of\nhard-coding the value.\n\nBug: 25446938\nChange-Id: Idfb5d3089960a94eefa2c76e03da1ad2f4d7fb2f\n"
    },
    {
      "commit": "7331fe18d7ffd550996e07b534bc7a6cf625afa5",
      "tree": "ffad9be2c77f5c3c1ad164aa055a0e4b08f91cb1",
      "parents": [
        "4afd635be1b956c40f36758a482e6d83502fbb42"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 14:11:17 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Dec 19 23:38:27 2015 -0800"
      },
      "message": "linker: implement shared namespaces\n\nShared namespaces clone the list of loaded native\nlibraries from the caller namespace. This allows\nclassloaders for bundled apps to share already loaded\nlibraries with default namespace.\n\nBug: http://b/22548808\nBug: http://b/26165097\nChange-Id: I8949d45937fdb38e1f586ff0679003adac0d9dad\n(cherry picked from commit e78deef364d952dd1141a2f3067a12060aaf11e6)\n"
    },
    {
      "commit": "284ae3559ed909613b189b98bdc3efab94373a30",
      "tree": "7f525b5244599a2caa7692d3d179dde4bbb61fe3",
      "parents": [
        "df196131f3c16f1eddb1542c7e04c675e7f1fbda"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 08 10:47:13 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 09 13:54:01 2015 -0800"
      },
      "message": "Add permitted_when_isolated_path to linker namespaces\n\nThe permitted_when_isolated_path is a way to white-list\ndirectories not present in search-path. It is ignored for\nnot isolated namespaces.\n\nBug: http://b/25853516\nBug: http://b/22548808\nChange-Id: Ib1538037268eea69323ea49968a34a4a1d1938a5\n"
    },
    {
      "commit": "22840aab47763c88598b32d1edcac4d8b3ef21f0",
      "tree": "b2b4abd050aa78b1309b0ef6d76a4dc6c8abd8f0",
      "parents": [
        "2452cf3c332fdfdae6b6b27b57acaa6786a91c87"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Dec 04 18:28:49 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Dec 04 21:21:35 2015 -0800"
      },
      "message": "Allow dlopening public libs using absolute path\n\ndlopen on isolated namespaces should be able to open\npublic libraries using absolute path not only soname.\n\nBug: http://b/25853820\nChange-Id: If574a67853dc51226f0f376e9e2d108316002f84\n"
    },
    {
      "commit": "1ffec1cc4d0e283bb1ff6f49843769a3493b8d73",
      "tree": "083c8af007b9a2e2ed01fbde2eea50ded648e114",
      "parents": [
        "a7fc7f9909c221a0f64c5c5ecc5fadd5fba467c5"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 23 11:26:35 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 23 16:13:10 2015 -0800"
      },
      "message": "Introduce anonymous namespace\n\nThe anonymous namespace is introduced to\nhandle cases when linker can not find the\ncaller. This usually happens when caller\ncode was not loaded by dynamic linker;\nfor example mono-generated code.\n\nBug: http://b/25844435\nBug: http://b/22548808\nChange-Id: I9e5b1d23c1c75bc78548d68e79216a6a943a33cf\n"
    },
    {
      "commit": "3cc35e224c6fe6bb82685ff8b2758553563e2a05",
      "tree": "f09ce774b7eb4fabf10f41a998d91864249175d4",
      "parents": [
        "b804b9d67b9e3a8c63471ff9892f6abea2a58684"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 17 18:36:50 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 17 18:45:12 2015 -0800"
      },
      "message": "Ignore target sdk version for the public namespace\n\nThis fixes the bug with using the libraries loaded\nprior to android_set_target_sdk_version call.\n\nBug: http://b/22548808\nChange-Id: I3ca2d367b0fa930a437bbb65f780834803d2ef0a\n"
    },
    {
      "commit": "42d5fcb9f494eb45de3b6bf759f4a18076e84728",
      "tree": "8f653810d3ddecf30bb0b744d4564d406808fe3e",
      "parents": [
        "ffe5c24c8693f1f4fc8edb68075fb36df558b801"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 29 17:01:24 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sun Nov 15 12:09:16 2015 -0800"
      },
      "message": "Introducing linker namespaces\n\nBug: http://b/22548808\nChange-Id: Ia3af3c0a167f1d16447a3d83bb045d143319b1e1\n"
    },
    {
      "commit": "fd7a91e69263a991f65fa458ff33de0670b4fd81",
      "tree": "d560bd28df0b372b4c39f777724d2e26e404d4d3",
      "parents": [
        "004fead6bc55d1e65b4fb9ca1ac36646b99e5fdd"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Nov 06 10:44:37 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Nov 06 10:44:37 2015 -0800"
      },
      "message": "linker: cleanup solist after unsuccessful read\n\nBug: http://b/25560017\nChange-Id: I03c5a1d7aed34c480d341aacfb3b1afdfa037b99\n"
    },
    {
      "commit": "126af757c6d6a6447c19236df8d98ba07f21996f",
      "tree": "b303f921749f2bb077096218b22ab20bf789d4be",
      "parents": [
        "6a4ddeb56ef2144e98437ae82f84b09ea785e411"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 07 16:34:20 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 27 11:27:34 2015 -0700"
      },
      "message": "Implement load at fixed address feature\n\nBug: http://b/24683631\nChange-Id: I3a39ab526c8f9e213339b60e135e5459d0f41381\n"
    },
    {
      "commit": "a1feb117e4d5614548574f28dede3443e073512b",
      "tree": "6078618ff745b802f986119d0534433a8d7df2d1",
      "parents": [
        "748421beef0ed8625920a27b3753a79c2652b6ef"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 01 18:41:57 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 07 11:44:53 2015 -0700"
      },
      "message": "Make dt_runpath work for libraries opened from apk\n\nThis patch also fixes realpath for libraries opened directly\nfrom apks.\n\nBug: http://b/21960914\nBug: http://b/21961857\nChange-Id: I35ade661c87f1d448191f385811f6e9fd3cacf11\n"
    },
    {
      "commit": "b48275045de93cce292faaf5170af3ead89b3746",
      "tree": "e45847472a1283a21f94f72de4b9869295e6369c",
      "parents": [
        "8b279eadd3a635c31df9c570ab2144212bfd07cc"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 28 16:38:31 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Sep 30 10:47:11 2015 -0700"
      },
      "message": "Optimize dlopen from a zip file\n\nThis change makes dynamic linker reuse ZipArchiveHandles in\nld_library_path on dlopen to optimize the lookup of dt_needed\nlibraries.\n\nBug: http://b/21960534\nChange-Id: I65f897910d46dd2ffabdcb0b7842db2f127eee30\n"
    },
    {
      "commit": "edfc9f63a261994f2565492436607c04df980e21",
      "tree": "beba695e03f777d9479835d5f1c0d1389704a322",
      "parents": [
        "cc25196662cab824117e7cb79e435bd3aaf37dcc"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Sep 02 16:32:02 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Sep 02 16:32:02 2015 -0700"
      },
      "message": "linker: don\u0027t pass dlextinfo to dependent loads\n\nDon\u0027t pass the parent load\u0027s dlextinfo to dependent loads, since this\ncauses the linker to try to load the dependencies using the same\naddresses/relro/fds/etc as the main library, which is never going to\nwork. This was how it worked before ae69a95 which broke this.\n\nBug: http://b/23742664\nBug: http://b/20948231\nBug: http://b/20841817\nChange-Id: I340ebae1127666d5c6c6f9c6521b89fb93f15bdd\n"
    },
    {
      "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"
    }
  ],
  "next": "26ec9679ff01fb155ae21015f31cc95bed24f670"
}
