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