)]}'
{
  "log": [
    {
      "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": "2cb4dfbb8c71ccc7890ecfd792790d7f6842b5a8",
      "tree": "720378e423a3c702358bb4341f93e8e9517d625f",
      "parents": [
        "c9fb1774c5696d4565042ee80df4cc721dd33153",
        "7a34b9d57a762ca7cd6b8d6b9f9fb45c2b991da7"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Feb 11 19:26:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 11 19:26:49 2017 +0000"
      },
      "message": "Merge \"Replace public library list with shared lib sonames (part 2/2)\""
    },
    {
      "commit": "ec90e24d33837e107b45e7c98b2f5fb4bc115a5e",
      "tree": "da59fda3b0eac92d43fe86dc457506a11382953c",
      "parents": [
        "132768084e24119c337e56fd110b97a23e5593c2"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 10 11:04:20 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 10 16:11:51 2017 -0800"
      },
      "message": "loader: fix d-tor call order\n\nIn the case when there are multiple dependencies on\nthe same library in the local_group the unload may\nin some situations (covered now by tests) result\ncalling d-tors for some libraries prematurely.\n\nIn order to have correct call order loader checks if this\nis last dependency in local group before adding it to BFS\nqueue.\n\nBug: http://b/35201832\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nTest: bionic-unit-tests-glibc --gtest_filter\u003ddl*\nChange-Id: I4c6955b9032acc7147a51d9f09b61d9e0818700c\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": "68e6c03081688635c4e0d75b7c4c5afd37ae04f2",
      "tree": "2d2683664e4935b93a6cdbd0d0d626eff6aca345",
      "parents": [
        "3c838bbb4aca12936aa3d8e96f3b04af3803d0f4"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 12:55:11 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 12:55:11 2017 -0800"
      },
      "message": "Check overflows in c-tor instead of doing it in d-tor\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: Id3b17a79732155b4e469c43c764afef1dfc59057\n"
    },
    {
      "commit": "3bd906146be88fb82ee4a93d06ff389a559155a7",
      "tree": "f4968eca30e92469d910a604815f1078e23ed4b0",
      "parents": [
        "b88112dcfc7954f001e722bb274b110e253dae6e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 08:54:43 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 09:43:09 2017 -0800"
      },
      "message": "Do not load second copy of a library into same namespace\n\nThis workaround was introduced in M in order to make sure\nthat linker loads libraries provided in apk in case a library\nwith the same name was loaded by the system.\n\nThis is no longer a problem starting with Android N because\napp is using different namespace and therefore does not see\nlibraries loaded by the system.\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I9995258c0f361e8df35420682b84e85a0cb924b4\n"
    },
    {
      "commit": "0a3637d3eb2424d8e825ad1825f843450a888406",
      "tree": "dc0d4c31cddc2ff06902fcbdf4233f7759258764",
      "parents": [
        "1b2975d54b9c17ced29883aef24490773a4a9fe6"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jul 06 13:20:59 2016 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 18 13:13:52 2017 -0800"
      },
      "message": "Runtime support for CFI\n\nControl Flow Integrity support in bionic.\n\nGeneral design:\nhttp://clang.llvm.org/docs/ControlFlowIntegrityDesign.html#shared-library-support\n\nThis CL implements subsections \"CFI Shadow\" and \"CFI_SlowPath\" in the above document.\n\nBug: 22033465\nTest: bionic device tests\nChange-Id: I14dfea630de468eb5620e7f55f92b1397ba06217\n"
    },
    {
      "commit": "4742abdcb52f16120016a5005c466230d4c46341",
      "tree": "c9d48c733f7a850a9849fe78ad305a71a4f7fb64",
      "parents": [
        "901de13c37912286db015b6f9113e39be46ce04d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 12 16:30:15 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 12 16:36:12 2016 -0800"
      },
      "message": "Add a way to track all dlsym calls\n\nAdd dlsym option to debug.ld.all and debug.ld.app.\u003cappname\u003e which\nenables logging of dlsym calls.\n\nBug: http://b/29458203\nTest: flash, set debug.ld.all to dlsym and check\n      if there are messages in logcat\n\nChange-Id: I9cb815a38b5b98aac9ebe3ac1540bcdedd2e8db0\n"
    },
    {
      "commit": "d9e427cf41893377dcdd0650ba20ff7cf7d72209",
      "tree": "6515aceab94a11861876b6e145adb6922183ebff",
      "parents": [
        "227894a754eb11cb1203c359192d59654b01b93e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 22 16:55:25 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Dec 09 14:53:59 2016 -0800"
      },
      "message": "Bionic loader is no longer hijacking libdl.so\n\nDo not hijack libdl.so methods but make libdl proxy calls to\nloader instead. This will be replaces by calls to libc.so\nonce loader functionality is migrated.\n\nAlso add a lock to dl_unwind_find_exidx function call.\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nBug: http://b/27106625\nChange-Id: Ic33a7109a86f4262798d63a35f4c61d15b0068bb\n"
    },
    {
      "commit": "6c14f863093c7277c312b6dc224588ff0ccd9473",
      "tree": "4f001ef16c482781e2cca79ac0abef5b0cf38416",
      "parents": [
        "f8b4ff4aa1c1a855627b8dc36f0675d69ab9109d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 05 13:35:47 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 05 13:46:24 2016 -0800"
      },
      "message": "loader: asan path translation now works for symlinks\n\nBionic Loader now resolves real path for a library before running\nasan path-translation. This fixes situations for bundled loading\nlibraries which are effectively symlinks to system library;\nfor example:\n\n $ adb shell ls -l /system/app/NfcNci/lib/arm64/libnfc_nci_jni.so\n /system/app/NfcNci/lib/arm64/libnfc_nci_jni.so -\u003e /system/lib64/libnfc_nci_jni.so\n\nBug: http://b/33278445\nTest: make and boot\nChange-Id: If14a12087c92f8ca628504556332ba0cb67c9118\n"
    },
    {
      "commit": "ae4a0c186fb12129d9c677e71258f3cfce8abc07",
      "tree": "a0a1792effaeb7531c5724896eb441c63494ce99",
      "parents": [
        "5fabe027571627bf72eec1e23bfbb3a69845480a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 21 10:44:35 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 21 12:32:08 2016 -0800"
      },
      "message": "Log call to elf-constructors\n\nLog call to constructors when dlopen logging is enabled.\n\nBug: http://b/29458203\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I0cd591bf147f8f910ae9def1ac4089ef44099aff\n"
    },
    {
      "commit": "585838ba327bebb94f5a5a37fd9eb371c782fcf5",
      "tree": "8bcbd9f90391ad4b3a8411dbac9f46c6dc8c04c4",
      "parents": [
        "60ba60dd25870fcc20bff19063dd68ba166f7592",
        "ffa45a8682cef0f29bb21284cd091b88f6f80ba1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 17 02:48:41 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 17 02:48:41 2016 +0000"
      },
      "message": "Merge \"Remove unused includes/externals\""
    },
    {
      "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": "ffa45a8682cef0f29bb21284cd091b88f6f80ba1",
      "tree": "3763c4a38293b1c113d3b33db2970a3483759c68",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 16 15:23:37 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 16 15:23:37 2016 -0800"
      },
      "message": "Remove unused includes/externals\n\nTest: mm\nChange-Id: I4b88602b7d0a18664cbeddfa9854e589c2886e1a\n"
    },
    {
      "commit": "816676e70da0e00761b0d23f512ea3571211b3ae",
      "tree": "8be0a547c1c6def6d16b81b212c8d3188241711f",
      "parents": [
        "d8244214751f9b48e60e69910c4e7175f8fab1ac"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 19 11:00:28 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 19 14:21:42 2016 -0700"
      },
      "message": "Add test for libraries with textrels\n\nMake sure android fails to load them.\n\nBug: http://b/30795430\nTest: bionic-unit-tests --gtest_filter\u003ddlfcn.dlopen_invalid*\nTest: cts-tradefed run singleCommand cts --skip-preconditions -m CtsBionicTestCases\nChange-Id: Id0ebdf336b2f297007479ceb1bbccf778a7ca3f2\n"
    },
    {
      "commit": "2589f9de6473a2030594e2c5e95541f00eb2dc7a",
      "tree": "a47afc3b1fea48a1eb789a05aa589ad13196cbb3",
      "parents": [
        "d11d1e4a97699af49f6f5b21a4ed0ed91575af52"
      ],
      "author": {
        "name": "neo.chae",
        "email": "neo.chae@lge.com",
        "time": "Tue Oct 04 11:00:27 2016 +0900"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 05 03:15:49 2016 -0700"
      },
      "message": "Fix for default library path \"/vendor/lib\"\n\nAndroid N restrict which libraries C/C++ code\ncan link against at runtime.\n\nIf device has a vendor partition\nthen /system/vendor symlink to /vendor.\nOtherwise /vendor symlink to /system/vendor.\n\nBut is_system_library() is only checking /vendor/lib.\nIt will return false for /system/vendor/lib path.\nIt is need to add a real path to default library path.\n\nSimilarily, default ld library path is already checking.\nparse_LD_LIBRARY_PATH()-\u003eparse_path()-\u003eresolve_paths()\n\nTest: build bionic and run bionic-unit-tests\nBug: http://b/31919547\nChange-Id: Ie6777e2b02729948ce77a94de32343d40358bf2c\nSigned-off-by: Hyangseok Chae \u003cneo.chae@lge.com\u003e\n"
    },
    {
      "commit": "3f6605754464c0856862c4d66ed03227a60a6f4d",
      "tree": "16a13eff76ffede482df87d0eaf8f069ad0dc43d",
      "parents": [
        "0f81dd35485563a2d111f01a1c14ac3678192c12"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 09 10:00:39 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Sep 13 13:38:58 2016 -0700"
      },
      "message": "linker: Refactoring step 3 of many\n\nExtract linker executable specific code to linker_main.cpp;\nthis part of code does not have a place in libdl.a/so.\n\nBug: http://b/14998480\nBug: http://b/30706810\nTest: mm \u0026\u0026 run bionic-unit-tests\nChange-Id: I90f7475e93a919b0f9525da22928089ad35b8f6c\n"
    },
    {
      "commit": "f4e3ebe1e3cde233b4ea12bb2cdceb9df3f5f567",
      "tree": "63282fa2b0f179f125d1fb4409ced271f351f031",
      "parents": [
        "0e99e4089222871bb4342a1314cd1b7490f36db6"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 25 14:53:35 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 25 19:41:23 2016 -0700"
      },
      "message": "linker: stat /proc/self/exe instead of executable_path\n\nThe absolute path to an executable may no longer be valid for\nexample when the file is unlinked immediately after exec.\nUsing /proc/self/exe instead of absolute path solves this problem.\n\nBug: http://b/31084669\nTest: Run the app from http://b/31084669 make sure executable starts\nTest: by checking ps and /proc/\u003cpid\u003e/exe\nChange-Id: I5c819f39ef0fc4fc71b05de71e8af9ede611f04c\n(cherry picked from commit 7da4bbbe87a7eca742c6c45a76aaf191aa70d948)\n"
    },
    {
      "commit": "4cf7024db7c89dab73c8668031263eb8fd991d8f",
      "tree": "b1e65649c1b7dfa203ffd87542946ac28add4da8",
      "parents": [
        "cea35d77a2a17717e7544a9eb39761ab242f1fa7"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 11 11:11:52 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 11 11:11:52 2016 -0700"
      },
      "message": "linker: use stat(2) to check file existence\n\nopen(2) can be used to open directories; use stat to\ncheck that the file exists and is a regular file.\n\nAddresses review comments for 5aa67675f853af9588ac9274ecf86d7858695ce2\n\nBug: http://b/30320104\nChange-Id: Ia944db2f2f779a87ea01dd41dcd171e59c9bef01\n"
    },
    {
      "commit": "45d25ca72872ed5df08da7a19a4c95c56d64088c",
      "tree": "eb32b3458912e9ecbb77ac73b77596f4ea8e65c9",
      "parents": [
        "4519a4d1829c9e9f80cf45f1003e5937f1dfb04e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Aug 09 19:38:43 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Aug 10 21:37:50 2016 -0700"
      },
      "message": "linker_asan: Translate absolute dlopen paths to use asan-libraries.\n\nThis patch enables absolute path translation to instrumented library\nwhen linker_asan is in use.\n\nTest: adb shell cat /proc/\u003crlid pid\u003e/maps | grep libril-qc-qmi-1.so\n      check that it is mapped from /data/vendor/lib64 and not /vendor/lib64\nBug: http://b/30320104\nChange-Id: I3bc24754b192afc0a72d6f3801f7b42141ce715b\n(cherry picked from commit 5aa67675f853af9588ac9274ecf86d7858695ce2)\n"
    },
    {
      "commit": "576a375bc2049d88998b43429a15df0a1011861f",
      "tree": "990f058beff9efa7cf6881e2d8247a241d09e9ac",
      "parents": [
        "dcc8feb6966779ef0c4739aa4fdb35bf4dc01713"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Aug 09 06:58:55 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Aug 09 06:58:55 2016 -0700"
      },
      "message": "linker: fix mips build\n\nChange-Id: I88c5ba7f33825ae9b36992b32d30579ec4a66915\nTest: lunch aosp_mips-eng \u0026\u0026 mm\n"
    },
    {
      "commit": "48ec288d40d272e6fe5e68c4c0a9778b55e24f8a",
      "tree": "4070843ac34ee5924221c2885b9ed6a26d03a5dd",
      "parents": [
        "b943f303a2d67d1e4c2fc8c4df3b4407888d777b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 04 11:50:36 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Aug 08 16:12:53 2016 -0700"
      },
      "message": "Extract soinfo and globals to separate files.\n\nMove soinfo and globals out of linker.cpp to\nseparate files.\n\nBreaking up huge linker.cpp into smaller peaces\nin order to make it easier to extract part of the\ncode that belongs to libdl.so and remove parts of\nthe code that do not belong to linker\n\n(refactoring part 2 of many)\n\nChange-Id: I868417f4b8d2b84d0e8265e354bc7977161497e2\n"
    },
    {
      "commit": "b943f303a2d67d1e4c2fc8c4df3b4407888d777b",
      "tree": "38566563bc3582980a8f8dbd4b53cc370cba4660",
      "parents": [
        "bbf593f0f0c116305a0eafcf8271381d92b1143c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Aug 03 16:00:10 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Aug 08 16:12:52 2016 -0700"
      },
      "message": "Move android_namespace_t to a separate file.\n\nBreaking up huge linker.cpp into smaller peaces\nin order to make it easier to extract part of the\ncode that belongs to libdl.so and remove parts of\nthe code that do not belong to linker\n\n(refactoring part 1 of many)\n\nChange-Id: I57ac36677a815800dc127c8c45c3ea806c37e247\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\n"
    },
    {
      "commit": "769b33fadf45a039741f932672ac2c4f901d7d4a",
      "tree": "bf29858de176dd3bf144c547174eb99e1727e85a",
      "parents": [
        "c5e79567e0b02eb3a02d6b2820b901d4ba392e87"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jul 21 11:33:40 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Aug 01 19:47:27 2016 +0000"
      },
      "message": "Sync linker with internal branch\n\nThis change includes dlwarning implementation and\nthe compatibility greylist for apps targeting pre-N.\n\nChange-Id: Ibf02a07cc58cbbb1a5aef4ac34558c5d43e4305f\nTest: Run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\n"
    },
    {
      "commit": "554374693408cd7c74d0cae596fca7349661edea",
      "tree": "3eb695917d4e37fc7f78a26202ec2119692fd964",
      "parents": [
        "a9fbaee593242b3257819c1603cdd157604247e7"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jul 20 15:33:07 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jul 20 16:10:19 2016 -0700"
      },
      "message": "Pass argc/argv/envp to dso constructors\n\nThe glibc implementation of the loader passes argc/argv/envp\nto all elf constructors. This change makes bionic linker\nbehave in the same way.\n\nBug: http://b/30145768\nChange-Id: I1c65c42aa5305a5b133c64b5748205bbde869e0e\nTest: run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\n"
    },
    {
      "commit": "b996d60493a2e501655f23523b31fe34a63edd5c",
      "tree": "3c2935b0802487560a110483a1b510a10c1713ba",
      "parents": [
        "4580ea4f16a94087fe02b8a67744c1fd452a2139"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jul 11 18:11:39 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 12 14:22:13 2016 -0700"
      },
      "message": "linker: Enable debug logging via properties\n\nThis patch lets developers tune logging of dlopen/dlerror with\nsetting system property.\n\nNote that for security purposes this option is disabled on user build\nfor non-debuggable apps.\n\nFor starters there are 3 debug options:\n dlerror - enables logging of all dlerrors\n dlopen - traces dlopen calls\n\nTo enable system-wide logging (works only for userdebug/eng builds)\nuse debug.ld.all property.\n\nTo enable logging for particular app use debug.ld.app.\u003cappname\u003e property.\n\nExample: Running \"adb shell setprop debug.ld.all dlerror,dlopen\" will log all\ndlerror message as well as trace all calls to dlopen.\n\nBug: http://b/29458203\nChange-Id: I2392c80a795509e16fe5689d0500d18b99772a64\n"
    },
    {
      "commit": "801dfc03cb0a439de7d901f230848cb585622479",
      "tree": "98509bd9ed51501c57575e854bde60f3938f36d8",
      "parents": [
        "835bd47cc4b59488a24aeb28989097ca701d466b",
        "3cc387eff4faaaf02a879518fc4139896b60b79a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 20 20:22:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 20 20:22:18 2016 +0000"
      },
      "message": "Merge \"Lose debuggerd client code to libdebuggerd_client.\""
    },
    {
      "commit": "523e2a98072314c575107ecb51dd2e4ef31ae242",
      "tree": "35f1ea01e3cd42dc08d32788257706758608f4be",
      "parents": [
        "112be469bb0671f19f4f61e021693595384142fa"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 17 13:46:36 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jun 20 11:36:54 2016 -0700"
      },
      "message": "Make missing public soname error message clear.\n\nIf a public library is missing, make it clear that there is no\nlibrary with that soname that is missing. This can help diagnose\nproblems if a library exists, but the library doesn\u0027t have the right\nsoname.\n\nBug: 29400363\n(cherry picked from commit 9a84d90c753dd934c3086322f6ba6b7a1f580c8c)\n\nChange-Id: Ie2306a2e28aff779d07441dc8af078256b184f8a\n"
    },
    {
      "commit": "3cc387eff4faaaf02a879518fc4139896b60b79a",
      "tree": "2aa1ee4c122b486fbe5309dc9b0b1bcacac300c0",
      "parents": [
        "112be469bb0671f19f4f61e021693595384142fa"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jun 15 18:33:26 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jun 15 18:33:26 2016 -0700"
      },
      "message": "Lose debuggerd client code to libdebuggerd_client.\n\nBug: http://b/24414818\nChange-Id: I524714e081a27df4d2046f0c8eb853a1b20592e6\n"
    },
    {
      "commit": "d799b2bb7e9335786ab4596757d871e4a7722ff0",
      "tree": "c287adb0a92322d167f9b26949e9564363996bb0",
      "parents": [
        "d1c96e21593fe5ff4c2989b9902036c65532b4fd"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 24 14:29:56 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 24 14:45:46 2016 -0700"
      },
      "message": "Correctly handle the case of empty LD_PRELOAD entries\n\nPrevious android versions ignored empty entries for LD_PRELOAD\n\nBug: http://b/28936779\nChange-Id: I757478fe0c604ee378186511cb13b757fd9a9864\n"
    },
    {
      "commit": "5240863ed559cb4c2b121ddfbf6b3d78ac15e38f",
      "tree": "6f511f9f4224a0d91794585297fd728139f5596b",
      "parents": [
        "51ee871e19601e1edbac948f961fc557b537870a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 23 10:31:11 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 23 10:31:11 2016 -0700"
      },
      "message": "Do not resolve caller_ns when it is not needed\n\ncreate_namespace resolves caller namespace only\nwhen caller did not explicitly specify parent namespace.\n\nThis saves about 25 microseconds for the case when\nparent_namepsace is not null (for example when creating\nsecond classloader for the app).\n\nBug: http://b/28801010\nChange-Id: I50ded272c931db701e5a1d8c88ed5ffb13416539\n"
    },
    {
      "commit": "d2205a641c5908fc3345965bec1bc398604ed4e9",
      "tree": "2210c40dc5d5f983915a5ee605ff7d6a8ccdd735",
      "parents": [
        "7d99bd38e479170d4d1d2e55c5df97b1cacaebfd"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 18 18:14:19 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 19 10:47:23 2016 -0700"
      },
      "message": "Do not check zip-entry validity on create_namespace\n\nThis operation is the most expensive one and since it is\nunlikely that the zip-entry name is invalid (given that it\nis constructed by the platform) - it can removed.\n\nThe worst case scenario is dlopen() of non-existing libraries\ntaking more time. And this use-case is not on the critical path.\n\nBug: http://b/28801010\nChange-Id: I10a6b0bf342404ab72f0f5102ebf19f6c06ee6bf\n(cherry picked from commit a5c1c8e820ec3057f798f675bf8af19a4a29b396)\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": "83fcb542088db7874a387f4f41caac2019821fd2",
      "tree": "4e0a4e3fce5363fd060fc2a65dd94e1723763b45",
      "parents": [
        "d3f51a482f196cd29e6da0db2f8513670e9a66cf"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 04 17:19:14 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri May 06 14:50:23 2016 -0700"
      },
      "message": "Fix linker crash on trying to unload main executable\n\nLinker crashed if linking of the main executable fails\ninstead of aborting with readable error message.\n\nThis patch modifies unload to soinfo_unload it all at once\nin this particular case. This helps avoid situations when\none of the libraries on the DT_NEEDED list of main executable\nhas gotten unloaded by previous library unload because it\nDT_NEEDED it too.\n\nExample (consider following dependency tree):\nmain_executable\n|-\u003e liba.so\n  |-\u003e libb.so\n|-\u003e libb.so\n\nThe list of the libraries need to be unloaded in this case\nis [liba.so, libb.so], but if linker does unload one by one\nby the time it gets to libb.so - the soinfo for the library\nis already unloaded (and the segments were unmapped).\n\nPassing everything as an array helps soinfo_unload to check\nif a library was already unloaded by looking into local_unload_list.\n\nBug: http://b/28565608\nChange-Id: I7199290e10a186057dcf3b7b68dbce954af7dba1\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": "1c3a5d87f2844b637f48f43ca22a6ac5e4cbf9c9",
      "tree": "26edd4bfb5c8d31420259915b361ceca881843e4",
      "parents": [
        "bd26f23c84c6c3a1179a9bf9cca4b5e2941bf042",
        "83b44a9e733a20695c7171c6272c0a0f4958e969"
      ],
      "author": {
        "name": "Than McIntosh",
        "email": "thanm@google.com",
        "time": "Wed Apr 20 14:23:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 20 14:23:10 2016 +0000"
      },
      "message": "Merge \"Rename DT_MIPS_RLD_MAP2 flag to DT_MIPS_RLD_MAP_REL\""
    },
    {
      "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": "3647314d89cecb3fcd2eb6e9569a22bfec1982fd",
      "tree": "f3a2b125f491d7b4d9c88249fff37ae64e1f74c4",
      "parents": [
        "3ae69aab0eabc635f0801fa157cce3a04b6ed08d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 13 14:47:36 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 13 15:08:01 2016 -0700"
      },
      "message": "linker: remove unnecessary reset of constructors_called flag\n\nlinker doesn\u0027t call d-tors for RTLD_NODELETE libraries. There is\nno need in reseting this flag in call_destructors (which is called\nfrom soinfo_unload).\n\nChange-Id: I3ed03fa7207b7acf598067276fbb8874e29b5e53\n"
    },
    {
      "commit": "dd906d7da0595902bbf1b381c84fd9a8a4816973",
      "tree": "fe969282de6f716637055f5d5cd9c162205dbd81",
      "parents": [
        "868b6fa4261a1d09e016cab6f43dada0273694b8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 13 11:46:59 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 13 12:41:41 2016 -0700"
      },
      "message": "linker: unload RTLD_NODELETE libraries when loading fails\n\nLinker was not unloading libraries marked with RTLD_NODELETE\neven when there was a error on load. For example when one of\ndt_needed libraries was not found.\n\nBug: http://b/27911891\nChange-Id: Ibc0bf110aa41fbfdc9f327ad8c364f2e3600af71\n(cherry picked from commit 79abce42146b27d523f309e0a1bc9f50175191cb)\n"
    },
    {
      "commit": "83b44a9e733a20695c7171c6272c0a0f4958e969",
      "tree": "972b1f9622652255bebf6da89c1a76adf5c59c54",
      "parents": [
        "733c92fa3632c5ac566cdf6f879e4b9e77c11ecb"
      ],
      "author": {
        "name": "Lazar Trsic",
        "email": "Lazar.Trsic@imgtec.com",
        "time": "Wed Apr 06 13:39:17 2016 +0200"
      },
      "committer": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Wed Apr 06 17:52:16 2016 +0000"
      },
      "message": "Rename DT_MIPS_RLD_MAP2 flag to DT_MIPS_RLD_MAP_REL\n\nChange-Id: I2c0972f5ce3586c3f4f130034f7063f97557ab4e\n"
    },
    {
      "commit": "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": "be910529322b461148debefd50b9e0d67ae84f8e",
      "tree": "67d5538b8f6af5fbc2ce29f1a18886321e6fe4a1",
      "parents": [
        "2846ae70fb967269e8fcd2d854d04c9aeb5d01d3"
      ],
      "author": {
        "name": "Mingwei Shi",
        "email": "mingwei.shi@intel.com",
        "time": "Thu Nov 12 07:02:14 2015 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 25 14:10:05 2016 -0700"
      },
      "message": "libc: implement kernel vdso syscalls for i386\n\nThis patch uses __kernel_vsyscall instead of \"int 0x80\"\nas the syscall entry point. AT_SYSINFO points to\nan adapter to mask the arch specific difference and gives a\nperformance boost on i386 architecture.\n\nChange-ID: Ib340c604d02c6c25714a95793737e3cfdc3fc5d7\nSigned-off-by: Mingwei Shi \u003cmingwei.shi@intel.com\u003e\n"
    },
    {
      "commit": "722072d65abb1b9fa709f5c7ae8afd98ef5ab7af",
      "tree": "c19eb6837ed584d36e63a9cf10cb15d44280c362",
      "parents": [
        "6212e5dfada2ce1cd8b4915389452cba09e75b69"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 21 17:10:12 2016 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 22 16:43:24 2016 -0700"
      },
      "message": "CloseArchive() to free memory when OpenArchive fails.\n\nBug: 26962895\nChange-Id: I42418eee320ddae857b42572690316c53f638e85\n"
    },
    {
      "commit": "e97d8ed70e44db619de9975a43ed2d1509653d74",
      "tree": "82a4aad1542afb9ca7a93882db6f9faaf2213558",
      "parents": [
        "a3be5bfdede8ae6c88bb06d6fa6bf8192ea3268e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 01 15:55:56 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 02 11:09:18 2016 -0800"
      },
      "message": "Do not add linker the _r_debug.r_map on link_image\n\nChange-Id: Idd0fb06a5d9f400c0608ae532cc4c575211810fa\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": "9f0a6954c602e63f85746237e1a333b4571d757d",
      "tree": "f6f76170bfdf8b9eb52c0fa4475f32e96886849f",
      "parents": [
        "aca201358b910e5a4b925c639902387fbdfd9016"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 18 14:37:44 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 18 18:28:08 2016 -0800"
      },
      "message": "Improvements to dynamic linker messages\n\nError messages now include executable name,\nalso linker doesn\u0027t abort if called on itself.\n\nChange-Id: Ia17dd540919544b28062ed71751a1d79ee865206\n"
    },
    {
      "commit": "6b788eeff2ea0019849517e796b762ae790ca142",
      "tree": "20323f5d665b7ed5254d4d2ce6460aa414f679fc",
      "parents": [
        "4327ae07b98d24128adbdfd93e9ed15cfce7e2ed"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 17 16:08:03 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 18 12:32:56 2016 -0800"
      },
      "message": "Move gdb support functions to a separate file\n\nMove gdb support functions and variables to\nlinker_gdb_support.h/cpp\n\nChange-Id: I96c6592a7055715b18f1137367470fe80987263f\n"
    },
    {
      "commit": "0fa5410b0f87217efd9c5ac6cc616a6019bbcac4",
      "tree": "db7ac4e4bb00dfdfe691897b13c91f8683557ab3",
      "parents": [
        "f8d051c81b7c22575ac940dea612fb3b880e6d7a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 09:31:24 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 09:31:24 2016 +0000"
      },
      "message": "Revert \"Move gdb support functions to a separate file\"\n\nWas reverted on internal master already.\n\nThis reverts commit f8d051c81b7c22575ac940dea612fb3b880e6d7a.\n\nChange-Id: Ia432f83bcce91366fb23f1bb87603a093b7f074d\n"
    },
    {
      "commit": "f8d051c81b7c22575ac940dea612fb3b880e6d7a",
      "tree": "b35a3f5f98c0dfdf45ca1d105148b4549e61f81d",
      "parents": [
        "f3064e4bc7f4dee351bc2eb9272db3e9792dc683"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 17 16:08:03 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 17 16:09:35 2016 -0800"
      },
      "message": "Move gdb support functions to a separate file\n\nMove gdb support functions and variables to\nlinker_gdb_support.h/cpp\n\nChange-Id: Id6e608617016383b68283760361c567e58e574bc\n"
    },
    {
      "commit": "f3064e4bc7f4dee351bc2eb9272db3e9792dc683",
      "tree": "db7ac4e4bb00dfdfe691897b13c91f8683557ab3",
      "parents": [
        "c347a107602f3011b393f2b2407425b5d668e14e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 17 15:25:25 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 17 15:25:25 2016 -0800"
      },
      "message": "Use insert_link_map_into_debug_map for executable\n\nUse insert_link_map_into_debug_map to insert the main\nexecutable\u0027s link_map to r_debug\n\nChange-Id: I0eacb3f030ea3eb16ed50ad2011d604beece2d03\n"
    },
    {
      "commit": "c347a107602f3011b393f2b2407425b5d668e14e",
      "tree": "95baaf76430069bcbb3f0603cd3ad266f4e95861",
      "parents": [
        "598cb89790ba93edbb392c567ecda32b39d64ff1",
        "6400129628ef24adb57fc4822d4fd54b8967701b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 17 22:20:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 17 22:20:22 2016 +0000"
      },
      "message": "Merge \"Update a comment for init_linker_info_for_gdb\""
    },
    {
      "commit": "6400129628ef24adb57fc4822d4fd54b8967701b",
      "tree": "2d1871a2bd5495ea88c7bac81a0f7e4485f46cfc",
      "parents": [
        "aa9cb26ead0cb875075fb0c5cf78020c14daaff7"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 17 14:13:06 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 17 14:13:06 2016 -0800"
      },
      "message": "Update a comment for init_linker_info_for_gdb\n\nChange-Id: I8e2895ecfcc6f77a180c3735342afc93be5923d3\n"
    },
    {
      "commit": "8d22dd53feddcc7a84e1cc481f171fd4dfe095a1",
      "tree": "242baef525f6e01c81ed7304822193b3851a570b",
      "parents": [
        "e687d067c6ecea18327fd60cb63a11208d9adc24"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 16 13:43:35 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 16 14:39:15 2016 -0800"
      },
      "message": "Initialize linker link_map for gdb directly\n\nRemove unnecessary construction of soinfo when\ninitializing linker link_map for gdb.\n\nChange-Id: Idf32cee56309aa9c9cf260efbd17a9deae9a756b\n"
    },
    {
      "commit": "e687d067c6ecea18327fd60cb63a11208d9adc24",
      "tree": "4debe3f53371db977761d040c0b690f08f6dd1c5",
      "parents": [
        "85665af917c74ff88668c1c1bffe5455e9f779cc"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 16 13:25:29 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 16 13:25:29 2016 -0800"
      },
      "message": "linker: remove soinfo::entry\n\nThis field is used only once and only for main executable;\nno need to carry it around in soinfo structure.\n\nChange-Id: I7f80c64e0939e28966b6fed858891f9ce2a9e26b\n"
    },
    {
      "commit": "88f5111123d9900fc4da05435aa8416a6f9f9bcd",
      "tree": "bc28393b90549bd66b15599584437a5646cde137",
      "parents": [
        "37591462fa76791c2372d789c3532c7cd0ca7a84"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 01 23:00:55 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 01 23:00:55 2016 -0800"
      },
      "message": "linker: Change the library search order\n\nLook into \"/system/lib\" before \"/vendor/lib\", this way\nwe can ensure that in case of name conflict /system libraries\ntake precedence.\n\nChange-Id: Ifacdc9dc7a4e175853f499ed09782b2257f09e5a\n"
    },
    {
      "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": "42d949ff9d2956e25f84e537f43a8f93ecb37baf",
      "tree": "66f1215029c3777d59393fbbbaa55ba5aed5872a",
      "parents": [
        "988e71b2b22117b0f7e994cbe764066630494125"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 06 19:51:43 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 06 20:06:08 2016 -0800"
      },
      "message": "Defend against -fstack-protector in libc startup.\n\nExactly which functions get a stack protector is up to the compiler, so\nlet\u0027s separate the code that sets up the environment stack protection\nrequires and explicitly build it with -fno-stack-protector.\n\nBug: http://b/26276517\nChange-Id: I8719e23ead1f1e81715c32c1335da868f68369b5\n"
    },
    {
      "commit": "116b5698d4fc9d037e3fda5b66e0ca5bb50b4ea7",
      "tree": "be39668aad4e9cd5eb20647d800432aeb59cc376",
      "parents": [
        "e13434f9da8fae2e0714960a9f28b7790097560c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 04 17:45:36 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 05 11:06:50 2016 -0800"
      },
      "message": "Clarify which linker we are.\n\nAlso, we\u0027re not a debugger.\n\nAlso include LD_LIBRARY_PATH and LD_PRELOAD because they would have helped\ndiagnose a recent issue.\n\nChange-Id: I7237a7236b7140ab49483c02efa705317d07bd3f\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": "9cf99cbad89c8495828788ce693a99ced434f66f",
      "tree": "fa089662db2475f6e4e1260f029fcab805eb0a96",
      "parents": [
        "d3e5301a75256171199b23f6ba2c6651d05ce5f1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Dec 11 14:22:24 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 16 15:24:13 2015 -0800"
      },
      "message": "linker: add dlvsym(3)\n\nThis changes implements dlvsym - dlsym for versioned symbols.\n\nBug: http://b/22865643\nChange-Id: Ic90a60d512104261a1416c43f9100f0d88e3b46f\n"
    },
    {
      "commit": "0bc397753775e4ccc5aaaa53fae11aa5165fea69",
      "tree": "6d1c717045f01fcbba2afac17f0566410033e66a",
      "parents": [
        "e46ded5ce1582202cb809c907128e423e58ce7ed",
        "4a2c5aa30ceea2aaf8dcaee2feb4879978af4fce"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Dec 11 01:26:17 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 11 01:26:17 2015 +0000"
      },
      "message": "Merge \"Move dlsym and dladdr implementation to linker.cpp\""
    },
    {
      "commit": "4a2c5aa30ceea2aaf8dcaee2feb4879978af4fce",
      "tree": "77265fd642a5bbfd2d0804f9922effca3f8de815",
      "parents": [
        "9d8632e1a76de6bd6abc853c0fbd6a2c9dc32cdc"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 10 16:08:14 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 10 16:24:57 2015 -0800"
      },
      "message": "Move dlsym and dladdr implementation to linker.cpp\n\nBug: http://b/25716705\nBug: http://b/22865643\nChange-Id: If22fc1eda219f676b5fcc06490f7901d21d1749c\n"
    },
    {
      "commit": "cb025e55f707216eb36b07f6fc36dcf604a45c07",
      "tree": "75f49029f558b2f745119ded1e0a655cabe8f3b3",
      "parents": [
        "9d8632e1a76de6bd6abc853c0fbd6a2c9dc32cdc",
        "40728bccbcba5ff1bf5979bd8d3b4446fb162ead"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 10 20:17:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 10 20:17:02 2015 +0000"
      },
      "message": "Merge \"Revert \"Add /odm/lib to shared lib search path\"\""
    },
    {
      "commit": "39801757c3bf688bee28f636959757953b2bb695",
      "tree": "c69444b742866a3c11855084d0dd80e5803fac54",
      "parents": [
        "6500f51c0e3ef37dbda889dbd1125c03c787ae50",
        "284ae3559ed909613b189b98bdc3efab94373a30"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 10 04:34:38 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 10 04:34:38 2015 +0000"
      },
      "message": "Merge \"Add permitted_when_isolated_path to linker namespaces\""
    },
    {
      "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": "5a3ab3422d8b8f500eda70edf7b0fff83656603a",
      "tree": "dd75bb5f334a1712cbc3ebb8ab7cb0b9ea70044a",
      "parents": [
        "df196131f3c16f1eddb1542c7e04c675e7f1fbda",
        "db43526581c6d2cfdd0fedfd451e1a2e72b4b7a3"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 09 21:50:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 09 21:50:54 2015 +0000"
      },
      "message": "Merge \"Revert \"Ensure that readlink has access to /proc/self/fd\"\""
    },
    {
      "commit": "db43526581c6d2cfdd0fedfd451e1a2e72b4b7a3",
      "tree": "465078034a19ad899b9a2d60110f3d66613e1ba6",
      "parents": [
        "4e50d0247b9ace095e371865fad08b1a59672e3a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 09 19:36:47 2015 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 09 19:36:47 2015 +0000"
      },
      "message": "Revert \"Ensure that readlink has access to /proc/self/fd\"\n\nThis reverts commit 4e50d0247b9ace095e371865fad08b1a59672e3a.\n\nBug: http://b/24912743\nChange-Id: I5d32c670f0e16aec9c74add143158e919a301673\n"
    },
    {
      "commit": "40728bccbcba5ff1bf5979bd8d3b4446fb162ead",
      "tree": "f09ce774b7eb4fabf10f41a998d91864249175d4",
      "parents": [
        "f74b041cce75091b922151d4fa57e63c8a6caf4b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 09 19:35:02 2015 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 09 19:35:02 2015 +0000"
      },
      "message": "Revert \"Add /odm/lib to shared lib search path\"\n\nThis reverts commit f74b041cce75091b922151d4fa57e63c8a6caf4b.\n\nBug: 25654402\nChange-Id: I77386ea3655868d7cd1a8130afbc95e70549389e\n"
    },
    {
      "commit": "e371ae68ac0d6d39cacf5edc893bda2f4a61e883",
      "tree": "ed4a145da1fa0d684b7cc88d49ea8e094f3a5a1a",
      "parents": [
        "0d89913e74981cd51532e66a2e2f138392be4de1",
        "22840aab47763c88598b32d1edcac4d8b3ef21f0"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Dec 05 05:25:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Dec 05 05:25:57 2015 +0000"
      },
      "message": "Merge \"Allow dlopening public libs using absolute path\""
    },
    {
      "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": "939a7e01197858fdb8463bb5a8284ba501a3e882",
      "tree": "aca21447754ac507be1d20a7afba02deb65ea4db",
      "parents": [
        "2558b112300e0a27590b9e31f627fe94594fa6a0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 15:27:46 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 15:27:46 2015 -0800"
      },
      "message": "Track rename from base/ to android-base/.\n\nChange-Id: I0a4592945400b1fa6892bf7c1fa8659fd711efa3\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": "0ebe2f07c35d4b764bc5d8b5226004e3db46da91",
      "tree": "91ca8bc80522a8a6b4dc4c6cce90f21eeba15292",
      "parents": [
        "313632db574d101275206ca025d21a5a3cd62150",
        "f74b041cce75091b922151d4fa57e63c8a6caf4b"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Nov 19 16:38:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 19 16:38:51 2015 +0000"
      },
      "message": "Merge \"Add /odm/lib to shared lib search path\""
    },
    {
      "commit": "313632db574d101275206ca025d21a5a3cd62150",
      "tree": "e505b927dd798a9eb353ed5b873dd9cc66a87edd",
      "parents": [
        "2c09e5de299ca87a9e68807e2b4af41ba61710f3",
        "ff35b1e659547644fb14f890eeec880cf4bafc4e"
      ],
      "author": {
        "name": "Junichi Uekawa",
        "email": "uekawa@google.com",
        "time": "Thu Nov 19 12:44:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 19 12:44:19 2015 +0000"
      },
      "message": "Merge \"Do not depend on host bits to get the right size to write.\""
    },
    {
      "commit": "ff35b1e659547644fb14f890eeec880cf4bafc4e",
      "tree": "32a8e5aee362b856a95ea5274670be350340d8be",
      "parents": [
        "b804b9d67b9e3a8c63471ff9892f6abea2a58684"
      ],
      "author": {
        "name": "Junichi Uekawa",
        "email": "uekawa@google.com",
        "time": "Wed Nov 18 10:18:59 2015 +0900"
      },
      "committer": {
        "name": "Junichi Uekawa",
        "email": "uekawa@google.com",
        "time": "Thu Nov 19 11:28:20 2015 +0900"
      },
      "message": "Do not depend on host bits to get the right size to write.\n\nx86_64 32-bit or 64-bit relocations do not depend on ELF bit size, they\nare 32-bit or 64-bit respectively.\n\nKnown compiler that emits such code is nacl-clang which emits\nR_X86_64_PC32 which should write 32 bits but ended up writing 64 bits.\n\nChange-Id: Ibb6b484c0fea6a7e291362148e8ac749d6674529\n"
    },
    {
      "commit": "f74b041cce75091b922151d4fa57e63c8a6caf4b",
      "tree": "41df671688b0a28e252f58659b14d6a23bb79913",
      "parents": [
        "63f0e0db768ea9be4db3dd6a2fb62ea942afb9d6"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Nov 12 11:48:19 2015 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Nov 18 23:45:25 2015 +0800"
      },
      "message": "Add /odm/lib to shared lib search path\n\nODM\u0027s shared libs should live in /odm/lib on the ODM partition.\n\nBUG: 25654402\nChange-Id: I3f5c26f208af87ff2817e490e51d0b4f5b8ec98e\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": "fbfba640682b94e61632a58a0544f14ed6a57908",
      "tree": "19c2840220568a8cedc4dc6f140674a76414cb50",
      "parents": [
        "d9b08a0bc082643b97fc9b11e0715e95be603c4c"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 16 14:23:37 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 16 14:23:37 2015 -0800"
      },
      "message": "Remove the warning about empty LD_LIBRARY_PATH\n\nChange-Id: I3eca11512d8055ab94dd0a6badcd83ce6440d675\n"
    },
    {
      "commit": "d9b08a0bc082643b97fc9b11e0715e95be603c4c",
      "tree": "3890964f0d966d6deabd722d5fe9ac89b5981aa1",
      "parents": [
        "1f0ccbb59cd32dfad0e6d9fd9619905e067076a6"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 16 13:17:27 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 16 13:17:27 2015 -0800"
      },
      "message": "Fix arm64 and x86 builds\n\nChange-Id: Ic3746b2f200f42218b6ac857c1631e873c767c17\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": "4f7a7ad3fed2ea90d454ec9f3cabfffb0deda8c4",
      "tree": "d2c2196b7f765aa3699b33dbd94b40112af98aa4",
      "parents": [
        "cf1cbbe43293b05e564b9d044147efbcfbcc993e"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 15 12:07:25 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 22 18:26:07 2015 -0700"
      },
      "message": "Implement Library Load Order Randomization\n\nBug: http://b/24047022\nChange-Id: I36e05b403bfbaae8542a95147f9114a8b9c8ac0e\n"
    },
    {
      "commit": "5fd94dfe3b36ee56e54d2002ad3a5e0fa8bff683",
      "tree": "9877ab044722890fb8c67493318ae1369924a436",
      "parents": [
        "9c2122e803a01c80bef550eac2b24b5a79635a2a",
        "5dce8948b65cf9c2d81165056d914b999bb3a4d8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 16 20:37:34 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 16 20:37:34 2015 +0000"
      },
      "message": "Merge \"Replace auto -\u003e const auto\u0026/auto\u0026\u0026\""
    },
    {
      "commit": "9c2122e803a01c80bef550eac2b24b5a79635a2a",
      "tree": "fd40fa10d70f2dea066c361b92e6aa8bb550bfb7",
      "parents": [
        "074efa02a7de67589c36f75222e3b45c3f15206a",
        "77f91c6d99c25fce4fbf9704aa6f7232fb624ff4"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 16 20:36:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 16 20:36:25 2015 +0000"
      },
      "message": "Merge \"Fix R_AARCH64_ABS/PREL relocations\""
    },
    {
      "commit": "77f91c6d99c25fce4fbf9704aa6f7232fb624ff4",
      "tree": "d10dc214af563d8081bcf72af4ef9e5bdbeb614a",
      "parents": [
        "198d13e8c25e69f7dbda3f5e1a3258b13fe8db5d"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 15 13:26:03 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 16 10:42:16 2015 -0700"
      },
      "message": "Fix R_AARCH64_ABS/PREL relocations\n\nAccording to specification arm64 relocations\nshould not use *reloc value.\n\nSee http://infocenter.arm.com/help/topic/com.arm.doc.ihi0056b/IHI0056B_aaelf64.pdf\nsection 4.6.5\n\nBug: http://b/24977219\nBug: http://b/24527155\nChange-Id: I3813255771f408ba957963c6ad56ed08e5110d83\n"
    },
    {
      "commit": "4e50d0247b9ace095e371865fad08b1a59672e3a",
      "tree": "d74a75b036e8a17fdfbcd94edf05041f24ed9d9b",
      "parents": [
        "198d13e8c25e69f7dbda3f5e1a3258b13fe8db5d"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 14 11:15:45 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 14 18:24:54 2015 -0700"
      },
      "message": "Ensure that readlink has access to /proc/self/fd\n\n/proc/self/fd is not available when PR_DUMPABLE is set to 0\nwhich is default for the user builds. It leads to permission\ndenials on readlink.\n\nThis change fixes the problem by setting PR_DUMPABLE flag to 1\nfor readlink and restoring it\u0027s previous value after the call.\n\nBug: http://b/24912743\nChange-Id: I3fd179c5c6b56af96d6a15ee597024ccb15e1a13\n(cherry picked from commit cf92738fa5dee24050028a1235f815f2a0fd33b5)\n"
    },
    {
      "commit": "fae39d2bf9fb6f08da4a095f5fe3ff093bcdbee8",
      "tree": "a6da7d5b607717a6e917cf6f8c2cdf1a8ec0af00",
      "parents": [
        "30cd7065b6cd37342e23904cb512c409b8bbd4f1"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 13 11:07:56 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 13 15:48:57 2015 -0700"
      },
      "message": "Log dlopen failures caused by text relocations\n\nSome apps will fail to load native libraries with\ntext relocations when switching target sdk version to M.\nIt could be hard to diagnose because some of them\nsuppress dlerror and/or UnsatisfiedLinkError.\n\nThis change unconditionally logs the error message making\nthe cause of the failure more visible to developers.\n\nBug: http://b/24876001\nChange-Id: I0477a0d1307d0879000f3a3a43b974b4cf34bdb2\n(cherry picked from commit f32b689d3dbe7a1317bce58d1d9bef9bba173c66)\n"
    },
    {
      "commit": "5dce8948b65cf9c2d81165056d914b999bb3a4d8",
      "tree": "04fb5f63005bb45d5fb19724f097002fa7737aad",
      "parents": [
        "fb7f45b6a3242c9a9a547705de08cf59e6b7f935"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 13 12:14:16 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 13 12:14:16 2015 -0700"
      },
      "message": "Replace auto -\u003e const auto\u0026/auto\u0026\u0026\n\nChange-Id: Ie484e5a296b5dd222a9545d8539d40d97a6c158c\n"
    },
    {
      "commit": "6f2d3104c82f81c1f0123a3cfb25ae670841d0ba",
      "tree": "0e69cd361e7de4ce1e0129195901602787160997",
      "parents": [
        "fb7f45b6a3242c9a9a547705de08cf59e6b7f935"
      ],
      "author": {
        "name": "Lazar Trsic",
        "email": "Lazar.Trsic@imgtec.com",
        "time": "Tue Oct 13 16:43:00 2015 +0200"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 13 10:57:41 2015 -0700"
      },
      "message": "Correctly resolve realpath for absolute paths\n\nIntroduced by: https://android-review.googlesource.com/174475\n\nChange-Id: I44e00040b28be167d5141454f919340afec6084e\n"
    },
    {
      "commit": "93c0f5ee00d1357247fda333c9d49c8673c9c83b",
      "tree": "9afe2dc72f063df4b498aa1328be122e389fd777",
      "parents": [
        "487a1823e8617011009eded8eae9a75c1f871887"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 06 11:08:13 2015 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 09 15:59:04 2015 -0700"
      },
      "message": "Move VDSO pointers to a shared globals struct.\n\nChange-Id: I01cbc9cf0917dc1fac52d9205bda2c68529d12ef\n"
    },
    {
      "commit": "8068786ae67835291521e52f39c695e40f3ad20d",
      "tree": "2084582ffb2fe35f30485df091f9dbbadd5c8dce",
      "parents": [
        "599af9346e3ea697dda1b0c38a99cce842154307"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 09 13:58:46 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 09 13:59:42 2015 -0700"
      },
      "message": "Remove textrels support for platform libs\n\nBug: http://b/20013628\nChange-Id: Ia9382c7113e09bb6aed65072543e4ebe33026cf8\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": "7e039937b84ef8bc86da1dcd91c1a074f05a05bc",
      "tree": "2bead4db6c0879ef69606e7b001cde4ebd70a7d0",
      "parents": [
        "4a65557d0ebd167e557958687f50510742cb238a"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 01 14:02:19 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 01 14:02:19 2015 -0700"
      },
      "message": "Fix the comment\n\nChange-Id: Ic8126cf92d12851cccaa3e2e781f075c9f6c283a\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": "280d54680d8842df5b0e37ec50acde48957d8e7a",
      "tree": "d714bd5c1de90e5a76d724162dd8df118c2e36cc",
      "parents": [
        "55f87a0c0bb587ee85b5662967563462d52db560"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 28 10:14:17 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 28 10:31:12 2015 -0700"
      },
      "message": "Fix bug number for linker related workarounds\n\nBug: 24425865\nChange-Id: I2021674a9df0e768f312ca024d906302db1c494f\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"
    }
  ],
  "next": "b447440a4b5e1e300c6cb1a931b3fa1e22900c4f"
}
