)]}'
{
  "log": [
    {
      "commit": "6718e0309e78be4b92850e0f22af5d8b8e3d662a",
      "tree": "d91bdf7cc4f59228bf63f45a32506d1cdbe02d0c",
      "parents": [
        "6e7f14d9f707c295765e119800acfa0621a347cb"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon May 22 17:36:16 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon May 22 17:36:16 2017 -0700"
      },
      "message": "Move libdlext_... to NATIVE_TESTS instead of ETC\n\nETC did end up causing problems, since it\u0027s not per-arch. But\nSHARED_LIBRARIES isn\u0027t correct either, since the build system tries to\nread shared libraries as ELF files (to create the toc files).\n\nNATIVE_TESTS is slightly better -- they are not libraries, so we don\u0027t\nattempt to generate toc files, but they are considered per-arch.\n\nBug: 38463793\nTest: Run CtsBionicTestCases\nChange-Id: I01b4b093359e0c39eb2f8639d5c5dde9e304ed20\n"
    },
    {
      "commit": "3d68fca0da3e47ca9df16e174cdbc119b3ff6048",
      "tree": "f1cb900d0d1e188b31c0d399aee0c026c08adfba",
      "parents": [
        "6fba793bc3ef89649ce41e70736f0c8a49093360"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue May 16 12:51:21 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue May 16 15:25:35 2017 -0700"
      },
      "message": "Stop using $(TARGET_OUT_INTERMEDIATE_LIBRARIES)\n\nIt\u0027s going away, so use the built versions in the per-library\nintermediate directories instead.\n\nTest: `m -j bionic-unit-tests` produces the same output before/after\nChange-Id: Ia5cd874d13129b2be89cdc26e4ec598be4003c87\n"
    },
    {
      "commit": "846924ae9583991a99a5924b2542c992d4bc094e",
      "tree": "2514a8fe2183d79dbb52d422fa4db73b25f27f6e",
      "parents": [
        "6323cfad7472990bde6efe3075faf03f251040ff",
        "21975b2861d859fb580ddfba50d323740486b7bc"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 03 16:11:25 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 16:11:27 2017 +0000"
      },
      "message": "Merge \"Add ifunc for variable test-case\""
    },
    {
      "commit": "21975b2861d859fb580ddfba50d323740486b7bc",
      "tree": "5e8ed0d7e814959c24cd7bc404ff04e7e4e5419f",
      "parents": [
        "87a47e1bb202a26918993487db8dc82229833ef8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 02 16:31:56 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 02 16:35:20 2017 -0700"
      },
      "message": "Add ifunc for variable test-case\n\nAlso move ifunc tests to clang and c++.\n\nTest: bionic-unit-tests --gtest_filter\u003ddlfcn.ifunc*\nChange-Id: I008c4fc01470c8e4d314003c03a2b63ff9bf7fd8\n"
    },
    {
      "commit": "2d3122c90b58655cc44c9e7b9461b9de3daccb2e",
      "tree": "2ec2c29d0fff6cb4cb54da35ff4f1abe92b67292",
      "parents": [
        "dfe0fa4151eeae806e9eb52c337c449cd028c160"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sun Apr 30 15:08:05 2017 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Tue May 02 21:14:42 2017 +0000"
      },
      "message": "Fix test compile errors after LLVM rebase\n\nAfter the new rebase of Clang, we now support the alloc_size attribute,\nso we can remove the warning about switching to alloc_size once Clang\nhas support.\n\nAlso fix an issue where \u0027false\u0027 is returned in a main method.\n\nTest: make cts\nBug: 37752547\nChange-Id: I32ee814aaa0338567cb8174a68d7ee1bfece2f75\n"
    },
    {
      "commit": "eb04ed506fbb0561b677d9518c9bae33f0262b03",
      "tree": "11c004e500d83117298b0520973aab9188911af4",
      "parents": [
        "9cb82a2c6b9001f7c50cbb3465f4aabc5d7cd055"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 29 13:48:02 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 29 13:48:02 2017 -0700"
      },
      "message": "Fix x86 system calls made from ELF preinit.\n\nUsed by CFI, so broke cfi_test#early_init@x86, but I\u0027ve added a specific\ntest for this (and a similar test for getauxval from preinit, which this\npatch does not fix).\n\nBug: http://b/35885875\nTest: ran tests\nChange-Id: I43885bedfb88c0a26b4474bd3c27a87dec7bbc97\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": "ea8f396c59f824993044d9474c2dc04423003c59",
      "tree": "eb39d5e37d3a442b7c2d4f4c3705922b380cd47e",
      "parents": [
        "2bfb8c9180603bac97dca2d8e359f71bb11f7126"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 09 13:31:57 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 09 14:07:05 2017 -0800"
      },
      "message": "Add test checking init/fini call order\n\nThis test is checking that loader complies with the order described in\nhttp://www.sco.com/developers/gabi/latest/ch5.dynamic.html#init_fini\n\nBug: http://b/35201832\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nTest: bionic-unit-tests-glibc --gtest_filter\u003ddl*\nChange-Id: I4cdf878c043112442c191e82aa9f5d5077e4d8c4\n"
    },
    {
      "commit": "68ecec1965dcec08c7df3f0224d69604c683cd6c",
      "tree": "13d1842c2a6d22a8818f9d24d4f49273cfda5e3c",
      "parents": [
        "3c838bbb4aca12936aa3d8e96f3b04af3803d0f4"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 13:19:30 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Feb 02 14:44:46 2017 -0800"
      },
      "message": "Fix CFI initialization crash on x86.\n\nThird try.\n\nBug: 34752378\nTest: bionic tests\nChange-Id: I247c127489a8ee38404e104f28d916a704e35f36\n"
    },
    {
      "commit": "beb3eb1790dffc6e2f57a670aec89364944f66c4",
      "tree": "833fc173575d6617e7051fbd126e98fde1c80700",
      "parents": [
        "dd76f744e7a8431eb105f1e94fd1e407690a0b89"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 17:10:03 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 17:10:03 2017 -0800"
      },
      "message": "Revert \"Fix CFI initialization crash on x86.\"\n\nBreaks aosp-master/sdk.\n\nThis reverts commit 4ccd4317f9301ec9b32aa0d3317a0439b994d7bf.\n"
    },
    {
      "commit": "4ccd4317f9301ec9b32aa0d3317a0439b994d7bf",
      "tree": "10061ae5eae47aa226dbfc15658c1d44b9456884",
      "parents": [
        "eb35144e588dc3799b851b8504b0a7db6c9a0b91"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 13:19:30 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 13:44:55 2017 -0800"
      },
      "message": "Fix CFI initialization crash on x86.\n\nSecond try.\n\nBug: 34752378\nTest: bionic tests\nChange-Id: I0a7453154671918b2e6e72f0bb9074c29ceb0f34\n"
    },
    {
      "commit": "6fcd7a7d28aa6be42bbc99070c93d4d16b56ab57",
      "tree": "0daa51584f72beb67cbe072f34ca67898212f381",
      "parents": [
        "a5066640cc7274e317bf3bae2d960986d58dbbbd"
      ],
      "author": {
        "name": "Alex Cheung",
        "email": "alexcheung@google.com",
        "time": "Tue Jan 31 04:05:00 2017 +0000"
      },
      "committer": {
        "name": "Alex Cheung",
        "email": "alexcheung@google.com",
        "time": "Tue Jan 31 04:19:50 2017 +0000"
      },
      "message": "Revert \"Fix CFI initialization crash on x86.\"\n\nThis reverts commit be46d3871c91902504e5ec4c7f575c86f647aafc.\n\nReverting due to broken build:\n\nhttps://android-build.googleplex.com/builds/branch-dashboard/aosp-master?build_id\u003d3687823\n\nChange-Id: I30968398edd9a094fce878839ba0a002ed487a77\n"
    },
    {
      "commit": "be46d3871c91902504e5ec4c7f575c86f647aafc",
      "tree": "d202c0a4817459b1f6d5b971284b9afa2a9f795d",
      "parents": [
        "6a9e0c8f15dee1b1b7c5cd7f8e058c2b18683bbc"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jan 27 13:42:03 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Jan 30 14:29:48 2017 -0800"
      },
      "message": "Fix CFI initialization crash on x86.\n\nBug: 34752378\nTest: bionic tests\nChange-Id: If8e33f76a1a2d83356d818fed506ea624f579860\n"
    },
    {
      "commit": "082bec5b419806d694f9a7d0283b2f831d52eea4",
      "tree": "4902863a691f86e4e5236344d11ef172d2f8a2c5",
      "parents": [
        "2d261e8e9e1340151698086e8434f312a73f77f0",
        "0a3637d3eb2424d8e825ad1825f843450a888406"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 18 23:39:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 23:39:08 2017 +0000"
      },
      "message": "Merge \"Runtime support for CFI\""
    },
    {
      "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": "1f553ea5da3a7d501f028ecc3a19c615b94c2766",
      "tree": "869dba2faa7fe51c8228b16366a1afd39d0c45c6",
      "parents": [
        "a970ac50d1cfeed0a01f4b1b6e300dd7fbefa4c4"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jan 13 12:31:59 2017 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jan 13 12:34:36 2017 -0800"
      },
      "message": "Switch bionic-unit-tests to libc++_static.\n\nBug: http://b/27549327\nTest: run bionic-unit-tests, bionic-unit-tests-glibc.\nChange-Id: I719899624dec83728a3d5b8169079e5c91c63c04\n"
    },
    {
      "commit": "ee2952e84ff991ff7adcf55fb604fa100a379ef7",
      "tree": "0f06a604a5182c54d079965aa9e86f4f48dd21e4",
      "parents": [
        "227894a754eb11cb1203c359192d59654b01b93e"
      ],
      "author": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Fri Dec 09 09:54:42 2016 +0000"
      },
      "committer": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Fri Dec 09 17:26:11 2016 +0000"
      },
      "message": "bionic-unit-tests: Build host testlibs in bionic-loader-test-libs\n\nThe target test libs are now all built in\nnativetest/bionic-loader-test-libs. However, libs built using\nlibs/Android.build.testlib.mk are still put in lib/ on the host.\n\nThis commit refactors libs/Android.build.testlib*.mk so that all test\nlibs go into nativetest/bionic-loader-test-libs on the host; nothing\nchanges on the target. Android.build.mk now understands\n*_install_to_native_tests_dir both for host and target builds.\n\nChange-Id: I1022e9bab38bf53036c95fd39b3b240bcb31f23a\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": "d0ba52ebdcd7c714133b06a5a87aba81984efec3",
      "tree": "51855e1f7a7ebdd87de3cdbb1db8ec5061b0d3ea",
      "parents": [
        "d8244214751f9b48e60e69910c4e7175f8fab1ac"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Oct 20 10:39:50 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Oct 20 10:39:50 2016 -0700"
      },
      "message": "Add missing host ldlibs\n\nHost builds were compiling without -Wl,--no-undefined.  Add missing\nhost ldlibs so that -Wl,--no-undefined can be added again.\n\nTest: m -j host\nBug: 32305815\nChange-Id: I456098775ead2bddae3e61c7055b2bde3f6b38ff\n"
    },
    {
      "commit": "426960ac87074b622030e8af1fb10073204b2738",
      "tree": "00b27be2852916315b545695fc1366814f371d6b",
      "parents": [
        "2eaba9343f1726d3c4a23717ba3a5cc66c8374d2"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 12 14:06:18 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 12 14:22:58 2016 -0700"
      },
      "message": "Remove unused build targets\n\nTest: mm\nChange-Id: I4eadc40411a31a0e5fa910b0054c19f0dea6c1e2\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": "d11d1e4a97699af49f6f5b21a4ed0ed91575af52",
      "tree": "be15ef8243869f7a57977b1c680a8abaee72b174",
      "parents": [
        "1ba0e27462ff1b2e80457d6cb100b448afe6d10e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 05 02:51:17 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 05 02:58:25 2016 -0700"
      },
      "message": "Fix bionic-unit-tests\n\nFix rpath value for libraries after build system update\n\nBug: http://b/31221587\nTest: run bionic-unit-tests --gtest_filter\u003ddl*:Dl*:*atexit*\nChange-Id: Iaed834bef830fd0b252b5de82e27634bafc92d8b\n"
    },
    {
      "commit": "f0cccdbe1927a1b20192af413eef06db594967a6",
      "tree": "f72f41d894e9610853f20af02e9a44f374b3b77a",
      "parents": [
        "76fcad2a6f6b6633c49f4f0b703ef490d2d127fd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 14 17:14:42 2016 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 14 17:24:37 2016 -0700"
      },
      "message": "Fix memory leak in test util\n\nThis shows up when you\u0027re doing make HOST_SANITIZE\u003daddress\n\nTest: mmma bionic \u0026\u0026 out/host/linux-x86/bin/bionic_tests_zipalign (compare before and after)\nChange-Id: Ia94790496327f3818d5fdb7b5ad07e14e60bcae1\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": "b16e44323979be7ecd254992f66657c9c74df091",
      "tree": "513c77bfd788ddd2d8038b9f1db30fd77f1f4df2",
      "parents": [
        "b04c7715818253b7870dfd680c13ae0be69a35af"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Aug 29 13:15:38 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Aug 30 11:38:43 2016 -0700"
      },
      "message": "Remove $(module)_install_to_out_data flag from test makefile\n\nUse non-empty $(module)_install_to_out_data_dir as indication\nof custom target dir for a library.\n\nBug: http://b/22182538\nTest: build and run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: Ibfc87f45084a6fe2f487ca1b17a7625a8d8ec707\n"
    },
    {
      "commit": "2722ebb30b76c9328541c057fa1f5e56a8cedf17",
      "tree": "80d716168a658c6a005efff9b99a3d06fdef4b6b",
      "parents": [
        "48cedda02a9874d59b2b3652d0427abce7fedaab"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jul 11 16:20:06 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jul 14 12:30:12 2016 -0700"
      },
      "message": "Convert bionic benchmarks and tests to Android.bp\n\nThe compile-time tests and a few custom libraries for dynamic linker\ntesting are still compiled in make.\n\nAlso converts the make rules to run tests on the host to shell scripts\nin tests/run-on-host.sh and benchmarks/run-on-host.sh\n\nChange-Id: I6f174b3a69d58c4ed74d29f4e79332d483681534\n"
    },
    {
      "commit": "0a2ab0203cc12c9b4b7647b18caf0343af8ca1a4",
      "tree": "97bd399c67534672f8e4f99a37ff3015a25ea34c",
      "parents": [
        "66606ff84c079e95c03a61cc8bcfb08261a5a173"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 05 17:12:01 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 05 17:37:45 2016 -0700"
      },
      "message": "Do not test ifunc on mips\n\nThis commit fixes mips build\n\nBug: http://b/28009632\nChange-Id: I5c657b31947791aea4cc02a2fc4ede6d0ecde851\n"
    },
    {
      "commit": "c967d892456ae8d578dfc75f241d9af04f31811f",
      "tree": "4e99908cc061ba4d35a783b4fe2f0bac029b0f02",
      "parents": [
        "d15837a3b20ac2151481323d6d06e8c0355d3757"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 30 16:44:48 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 04 11:28:41 2016 -0700"
      },
      "message": "Enable ifunc test for arm\n\nBug: http://b/27930475\nChange-Id: I1f9e7c5b9ffabfd77ae6ebd534938aef39ec7987\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": "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": "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": "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": "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": "298d176813af58731063b4c403143cedf3803eb4",
      "tree": "5e635cf3e43f2fd2fd30503c3f92612e6a7e9df8",
      "parents": [
        "4032d344d43d6495119bae41b5eaea3023d8d17b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 28 15:56:18 2015 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 28 15:56:18 2015 -0700"
      },
      "message": "Pass -q is zip for test\n\nPass -q to zip for dlext_testzip to avoid printing:\n  adding: empty_file.txt (stored 0%)\non every compile.\n\nBug: 24409581\nChange-Id: I2320f31182a9a332b3ef8b32a22561092ab5aceb\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": "5341691955e2fc2b271b722c37496d72a0e8c683",
      "tree": "8b6a350a4898241663c6ccc58685a3362738e8ec",
      "parents": [
        "ff4afc136ef5d00d33a611e7bc1950249db9fbcf"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 10 16:40:06 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 10 16:40:06 2015 -0700"
      },
      "message": "Move up to C++14.\n\nThe default standard version is now ahead of us. Stop specifying C++11\nso we get that too.\n\nChange-Id: Ic96942cd7fd134118e29b744601b0119e49b6ac4\n"
    },
    {
      "commit": "3fef96f827bb4aebed08e48a1a760e0280029efd",
      "tree": "81a06523bcc58e5e8eb4e0d9c359c173f070a499",
      "parents": [
        "e5544ae1f8a23ae77908e822e83a73ebd4b656ec"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jul 20 10:47:49 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jul 20 10:47:49 2015 -0700"
      },
      "message": "Fix dt_runpath test.\n\nBfd linker produces DT_RPATH instead of DT_RUNPATH\nunless --enable-new-dtags option is specified.\n\nBug: http://b/22560945\nChange-Id: I71bdc5137b899ab736e55c5a9574cfbba8e1983b\n"
    },
    {
      "commit": "7d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9a",
      "tree": "fc83ebb5281d1543fa598fae282fa8c03c421608",
      "parents": [
        "a8993c994e45ec2dc00dcef15910560e22d67be9"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 23 13:44:18 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 23 13:47:23 2015 -0700"
      },
      "message": "Work around compiler optimization\n\nThis makes bionic-unit-test-glibc64 behave consistently\nwhen testing dlopen from a library with dt_runpath.\n\nBug: http://b/21899363\nChange-Id: I9d446eb6852876975874d6b7761f6f81cc4e9916\n"
    },
    {
      "commit": "6865082ca6d887766c6651ed2d079dca56a99d32",
      "tree": "6884766e12440a9d2b5bfd99de77ee0972edaab8",
      "parents": [
        "f3463db7eb37cb7d9dd5e32dfb5b2bd24f808fb3"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jun 10 13:38:39 2015 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jun 10 16:44:22 2015 -0700"
      },
      "message": "Support DT_RUNPATH in the linker.\n\nOnly $ORIGIN substitution is supported, but not linux-specific $LIB\nor $PLATFORM.\n\nChange-Id: I5814a016c7c91afba080230a547a863686e7c2b9\n"
    },
    {
      "commit": "f439b5a3186ca0fef1092f45770abc716da9d87a",
      "tree": "d85508ffcefb14495e90d6e0669440558f753367",
      "parents": [
        "d70891687d742414d457e41a998726e5eb0a09bd"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat May 30 13:04:39 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jun 01 14:33:43 2015 -0700"
      },
      "message": "Fix dlsym(handle_of_main_executable, ...)\n\n  According to man dlopen(3) and posix docs in the case when si is handle\n  of the main executable we need to search not only in the executable and its\n  dependencies but also in all libraries loaded with RTLD_GLOBAL.\n\n  see also: http://pubs.opengroup.org/onlinepubs/9699919799/functions/dlopen.html\n\nBug: http://b/21528224\nBug: http://b/17512583\nBug: https://code.google.com/p/android/issues/detail?id\u003d173822\nChange-Id: Ib2801367ba48b6f3704da89a6d9f5e6911430013\n"
    },
    {
      "commit": "933332462d37dfa121fa691095cdce218a0139bf",
      "tree": "6fae182a5e147d3c64103c4b9285dbb75e011e2b",
      "parents": [
        "0378d8f65126b2d94c731f2719a68773e370f615"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 14 21:28:21 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 14 21:28:21 2015 -0700"
      },
      "message": "Remove -z global workaround for target x86\n\nChange-Id: I08e75a1c7437c97e4af59316d2c14c7fa3f65e03\n"
    },
    {
      "commit": "697bd9fd38ab078a117ad9a5777cf286c467b9b9",
      "tree": "f34ace69fa45951dbcd215dea1c040b549bf3c6f",
      "parents": [
        "75f2dfca653dd57b6f65bf898ec4f45d87d18926"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 12 11:12:27 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 12 13:46:40 2015 -0700"
      },
      "message": "Improved dlsym tests and fixes to linker\n\n Answers the question: what if dependent library\n was preloaded with RTLD_LOCAL flag.\n\n Also add test for RTLD_NEXT within local_group.\n\nBug: http://b/17512583\nChange-Id: I79e081e68b3a8c0ed8980d4275a06515fea94ec9\n"
    },
    {
      "commit": "2c256a0f0927abd94f2210b37c18ead210d30477",
      "tree": "2de93d1a6e2c09be6467d79cacc57def83733910",
      "parents": [
        "440242f03805872a0c62528d763e5e98dad9b580",
        "ea295f68f1fae7c701baaa717f67296659d567ac"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Apr 25 05:36:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 25 05:36:07 2015 +0000"
      },
      "message": "Merge \"Unregister pthread_atfork handlers on dlclose()\""
    },
    {
      "commit": "e91e66f223950fdc963cd89697541a32a253a0a6",
      "tree": "be470cebc8b8809e6b69499e14f11e3e6d689a3b",
      "parents": [
        "ebfb55e4cdf03473d66eaf5928fb3c3a8b0c2f85"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 21:05:49 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 21:05:49 2015 -0700"
      },
      "message": "Use bfd linker for x86/x86_64 targets\n\n ld.gold in current toolchain for x86_64\n does not support -z global.\n\nChange-Id: Iea2b192f0f0aa998a02adb356fd4eec4e10a1739\n"
    },
    {
      "commit": "ea295f68f1fae7c701baaa717f67296659d567ac",
      "tree": "745388310ffe715acbfd96b3cedfe55ccb50a2ca",
      "parents": [
        "ebfb55e4cdf03473d66eaf5928fb3c3a8b0c2f85"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 20 20:47:02 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 17:57:37 2015 -0700"
      },
      "message": "Unregister pthread_atfork handlers on dlclose()\n\nBug: http://b/20339788\nChange-Id: I874c87faa377645fa9e0752f4fc166d81fd9ef7e\n"
    },
    {
      "commit": "6612d7a34768484eb002c07a1c7df1bd85c0997a",
      "tree": "fcc60bf45254bf181ed12930c162b270a5cd6908",
      "parents": [
        "2bb93482a7793640205ade2f7316db5b3f5cac19"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 16:26:03 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 16:26:03 2015 -0700"
      },
      "message": "Enable dlsym_df_1_global test for arm/arm64\n\nChange-Id: I1fdebced93175cb14053e2239e79f97239fc2dc2\n"
    },
    {
      "commit": "094f58fb2a57d1ed5736ae3588bf0355618f915b",
      "tree": "8f41a50086a97f88be5bf98d2a2806a26d854d5a",
      "parents": [
        "6df122f8528f9b9fcf7dfea14ae98b0ef66274e1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:45:59 2015 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:46:57 2015 +0000"
      },
      "message": "Revert \"Unregister pthread_atfork handlers on dlclose()\"\n\n The visibility control in pthread_atfork.h is incorrect.\n It breaks 64bit libc.so by hiding pthread_atfork.\n\n This reverts commit 6df122f8528f9b9fcf7dfea14ae98b0ef66274e1.\n\nChange-Id: I21e4b344d500c6f6de0ccb7420b916c4e233dd34\n"
    },
    {
      "commit": "6df122f8528f9b9fcf7dfea14ae98b0ef66274e1",
      "tree": "5a59eb4d1148b6218b8a06895baf6176f17b995b",
      "parents": [
        "ff18108981aa1fa73696d6db1919cdc38788bd4e"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 20 20:47:02 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 22 19:19:37 2015 -0700"
      },
      "message": "Unregister pthread_atfork handlers on dlclose()\n\nChange-Id: I326fdf6bb06bed12743f08980b5c69d849c015b8\n"
    },
    {
      "commit": "2a815361448d01b0f4e575f507ce31913214c536",
      "tree": "82b941e908b54d6d48ef04495ff2808aa2823ae1",
      "parents": [
        "c6ccdfaf1ff4665ec96962863054263510d73e7b"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 09 13:42:33 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 16 17:57:30 2015 -0700"
      },
      "message": "Support symbol versioning\n\nBug: http://b/20139821\nChange-Id: I64122a0fb0960c20b2ce614161b7ab048456b681\n"
    },
    {
      "commit": "45c57131d25c82d6026ed36a791e9f5be40d5d7e",
      "tree": "44c2dd482fed18c90747b660485190c6cc40a288",
      "parents": [
        "cec2ab20a0d2b24c15aa289cbac5d4291c856092"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 03 15:17:52 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 03 15:17:52 2015 -0700"
      },
      "message": "Add libdl dependency for target libraries\n\n Fixed x86_64 target build with gcc 4.9\n\nChange-Id: Id3b1e9286c2bcbb8e3ac117bcef957304db7cfd3\n"
    },
    {
      "commit": "76ac1acdacc045cf1e56504e011dca68137dcd61",
      "tree": "9eb3bee0f92ae74f1eba59efad4c037d50aa3dcd",
      "parents": [
        "ab7c79e22e5495a2aa171047a044ce1037e461a9"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 01 14:45:10 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 02 14:12:45 2015 -0700"
      },
      "message": "Look into local group on dlsym with RTLD_DEFAULT\n\n  Fix dlsym to look into local group when called with\n  RTLD_DEFAULT and RTLD_NEXT.\n\nBug: 17512583\nChange-Id: I541354e89539c712af2ea4ec751e546913027084\n"
    },
    {
      "commit": "618f1a36f8635fa0f2d60c621fbf79ead2c3f3de",
      "tree": "22f103645d9fcd4568dae35f9c76262541bc85bb",
      "parents": [
        "c6fbbb42e69bef4f058d0cbfaaaf3cbf51f95694"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 17 20:06:36 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 18 18:14:30 2015 -0700"
      },
      "message": "Implement lookup by DT_SONAME\n\n  This CL also fixes SEARCH_NAME hack and resolves\n  https://code.google.com/p/android/issues/detail?id\u003d6670\n  once and for all.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d6670\nChange-Id: I9b8d6a672cd722f30fbfbb40cdee8d9b39cfe56e\n"
    },
    {
      "commit": "aef719510a57274e73ca02ab5ecdc5bf17d3985c",
      "tree": "a3161800a6a0082e59df412a6d4d712041383fc2",
      "parents": [
        "5f8ddf69e59b13653d016e236599b95daf6501a8"
      ],
      "author": {
        "name": "Simon Baldwin",
        "email": "simonb@google.com",
        "time": "Fri Jan 16 13:22:54 2015 +0000"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 17:50:50 2015 -0700"
      },
      "message": "Support loading shared libraries from zip files\n\nAdd code to support loading shared libraries directly from within\nAPK files.\n\nExtends the linker\u0027s handling of LD_LIBRARY_PATH, DT_RUNPATH, etc\nto allow elements to be either directories as normal, or ZIP\nformat files.  For ZIP, the ZIP subdirectory string is separated\nfrom the path to file by \u0027!\u0027.\n\nFor example, if DT_NEEDED is libchrome.so and Chrome.apk is the\nAndroid ARM APK then the path element\n\n  /system/app/Chrome.apk!lib/armeabi-v7a\n\nwould cause the linker to load lib/armeabi-v7a/libchrome.so\ndirectly from inside Chrome.apk.  For loading to succeed,\nlibchrome.so must be \u0027stored\u0027 and not compressed in Chrome.apk,\nand must be page aligned within the file.\n\nMotivation:\n  Chromium tracking issue:\n  https://code.google.com/p/chromium/issues/detail?id\u003d390618\n\nBug: 8076853\nChange-Id: Ic49046600b1417eae3ee8f37ee98c8ac1ecc19e7\n"
    },
    {
      "commit": "279a22f96e639e76c801bdb39aee5576f2280fe0",
      "tree": "23032a2fff43e6e8e3100d34c21fa1fac8172a65",
      "parents": [
        "7f3d65de8cf2920981d73adee278c0d7bee79170"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jan 23 12:03:53 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jan 23 16:30:34 2015 -0800"
      },
      "message": "Minimize calls to mprotect\n\n  Implement refcounter based data protection guard\n  to avoid unnecessary calls to mprotect when dlopen/dlclose\n  is called from a constructor.\n\nBug: 19124318\nBig: 7941716\nChange-Id: Id221b84ce75443094f99756dc9950b0a1dc87222\n"
    },
    {
      "commit": "bfa88bca5ca387d6b3560074050856527cfc7514",
      "tree": "d4738b581edd115f85c9b225a1156f2254ca4eb7",
      "parents": [
        "6d634f9baaf804a91c97e019c832c1e9611a903a"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 16 11:40:46 2014 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 16 19:46:45 2014 +0000"
      },
      "message": "Add another test for weak-reference\n\n  This one covers undefined weak reference in .so\n  referenced via JUMP_SLOT relocation.\n\nBug: 17526061\nChange-Id: Ib8764bd30c1f686c4818ebbc6683cf42dee908b2"
    },
    {
      "commit": "ab972b9adf8789a9e1b03129cd7f0c22e6bba117",
      "tree": "33b816d65afbcd622e38730b7516ba59ddb48fac",
      "parents": [
        "f64c43ba6c9244c50e904961dc432f04b1dfcfd9"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Nov 29 13:57:41 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 02 10:54:26 2014 -0800"
      },
      "message": "Count references for groups instead of instances\n\n  Count references on the group level to avoid\n  partially unloading function that might be\n  referenced by other libraries in the local_group\n\n  Bonus: with this change we can correctly unload recursively\n  linked libraries. is_recursive check is removed.\n\n  Also dynamic executables (not .so) with 0 DT_NEEDED libraries\n  are now correctly linked.\n\nChange-Id: Idfa83baef402840599b93a875f2881d9f020dbcd\n"
    },
    {
      "commit": "7699d13a74769fe8063fcca95588c87c571226c0",
      "tree": "731b4a69cb9b890e74c37e0a04df00c4fa7a6f93",
      "parents": [
        "27aa9c5b50cc3e979fc67c1bf5296dfd725c8540"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 18 17:26:31 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 19 10:39:05 2014 -0800"
      },
      "message": "Yet another relocation test\n\n This time we check if a -\u003e b -\u003e c function in \u0027a\u0027 relocates against\n implementation in \u0027c\u0027.\n\nChange-Id: I528180c3efd346bd447ea0237e5a8a0ac3cc031f\n"
    },
    {
      "commit": "a2547055f25db614601ee8651f2e42ece01f7842",
      "tree": "d6cab7ae30f844f01c8c34dffd6a009a4f6fa4b1",
      "parents": [
        "8eda0a6d69fda865b576bc18311a3d79c84b42a1"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 18 12:03:09 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 18 13:16:27 2014 -0800"
      },
      "message": "Fix jump to unmapped memory on atexit\n\n Split d-tor calls and soinfo_free to 2 separate steps\n\nBug: 18338888\nChange-Id: Idbcb7242ade16fa18cba7fe30505ebd8d6023622\n"
    },
    {
      "commit": "9df4b13baff9f958ad39a8cff59924c157978dac",
      "tree": "b851df7c3992b85f43fca41f542d1b570c538f55",
      "parents": [
        "898aab282cff2a2949bc1726f8a4b81c1c30148e"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Nov 14 12:17:06 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Nov 14 12:17:06 2014 -0800"
      },
      "message": "Fix host build for arm/arm64\n\nChange-Id: Id92543e4080aede205b3e63099fa2baa36ba21f0\n"
    },
    {
      "commit": "b3356773c6b5fbbbb26d22b3d6c6e0e598840e44",
      "tree": "df02a83689195961585f09e5b041f39892371fd1",
      "parents": [
        "c490b5029fdc96f1dbf00d02d0ad63a03d8cd4f3"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Nov 14 11:19:22 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Nov 14 11:19:22 2014 -0800"
      },
      "message": "Add test for --hash-style\u003dsysv\n\n With build system switched to gnu-hash we need\n a test for sysv-hashed library.\n\nChange-Id: I34adc216fa79199aa46066cf13fcc1c1f2581f0e\n"
    },
    {
      "commit": "ec18ce06f2d007be40ad6f043058f5a4c7236573",
      "tree": "0e22f0d9ad23e06303584d05483ff5a881afe20b",
      "parents": [
        "e5cabca516252addb5e305c8e1e0f35cafbcafbe"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sun Nov 09 19:27:20 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 12 16:38:12 2014 -0800"
      },
      "message": "Add support for hash-style\u003dgnu\n\nChange-Id: I171434a587420895feac8a9b1ad2342087197568\n"
    },
    {
      "commit": "4e446b19d8710cd2004785db4a00f18f249fe73f",
      "tree": "1c7618642ff6c6ec18ed49fbe1e64546e522f3b3",
      "parents": [
        "f33ad400230fa1f16ba4501efb60a1b6035e06ca"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 31 17:27:02 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 31 17:27:02 2014 -0700"
      },
      "message": "Fix arm64 and arm builds.\n\nChange-Id: I2c8c41626768e792f27a2616f2cd5ae66606319d\n"
    },
    {
      "commit": "d225a5e65223b375a63548c4b780f04d8f3d7b60",
      "tree": "a98d29bee4e948053033be67fa8e88b102beefce",
      "parents": [
        "d50495a56760fdc116b7484bcdf1183c76db9b37"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 28 14:12:12 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 31 11:39:51 2014 -0700"
      },
      "message": "Fix symbol lookup order during relocation\n\n  Relocate symbol against DF_1_GLOBAL shared libraries\n  loaded before this shared library. This includes\n  main executable, ld_preloads and other libraries\n  that have DF_1_GLOBAL flag set.\n\nBug: 2643900\nBug: 15432753\nChange-Id: Ia788748be59b739d1c7e62b978e7e255f9e65c7b\n"
    },
    {
      "commit": "b08629862968772c35418698c7d6d99a5110f3f7",
      "tree": "778d2aac6cf3f00732ff4a9f9d06a04afee01b76",
      "parents": [
        "cad8d226c3589a65775fda972d4cd3ebd3877dab"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Oct 24 11:04:51 2014 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Oct 24 11:04:51 2014 -0700"
      },
      "message": "Disable clang compilation due to lack of ifunc.\n\nBUG: 18055309\nChange-Id: I0f36011cf7872a20ddd36a6c3c607eb96f0a8ec2\n"
    },
    {
      "commit": "cfa97f172dc1b10d650fefbb6ccffd88ce72a5fb",
      "tree": "f811c34ec0dde4eed15c64d33b4a89c8e5a00030",
      "parents": [
        "cf8ea37fc91e23d37b3c5873b5e152ccae293f03"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 21 09:23:18 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 23 12:13:54 2014 -0700"
      },
      "message": "Fix relocation to look for symbols in local group\n\n  The local group is a sequence of libraries in default (breadth-first)\n  order. It allows RTLD_LOCALLY loaded library to correctly relocate\n  symbols within its group (see test-cases).\n\n  Local group lookup is performed after main executable and ld_preloads.\n\nBug: 2643900\nBug: 15432753\nChange-Id: I9bb013b46d17dbb5cbdfb8fef26f552748385541\n"
    },
    {
      "commit": "4a9e1937c56511aef579312bf39ab345f9179230",
      "tree": "a6fa53e467ba15b7bb69e7ae3f1ee060ea2d4e97",
      "parents": [
        "5281e1fb15632c8dc714d10abc6cd1a22a061782"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 17 11:47:18 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Oct 17 11:47:18 2014 -0700"
      },
      "message": "Correct way to specify additional dependencies\n\n Previous one was not covering all the targets\n\nBug: 17548097\nChange-Id: I425e0f8d6e5a43feabd29dcb327049b82754d249\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": "51166d3aa2e9c002c123f2a08832deca23100975",
      "tree": "04a05acbdde5807ecfdf68df0708cfaebdea6227",
      "parents": [
        "6d2dd6a74035a7ace838dd44e7910d54e15c11c2"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 08 14:55:39 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 08 15:36:56 2014 -0700"
      },
      "message": "Fix mma build: \u0027cd bionic \u0026\u0026 mma\u0027 case\n\nBug: 17887283\nChange-Id: If2015f2361348eac8c53aed3f8715077b79ce2f5\n"
    },
    {
      "commit": "75d66dd9a7d6add031f4c2206751c45c937fc139",
      "tree": "0b5f970a4e21cf90153fd9bb52307f9f310f9028",
      "parents": [
        "81fca35672df90e2f770e67bbf7e7735c6ff8bd8"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 07 09:46:46 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 07 09:46:46 2014 -0700"
      },
      "message": "Fix 2nd arch prefix application\n\nBug: 17887283\nChange-Id: I7b3b2332212fe416d6b5f5c2e5c1e07605ba09aa\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": "1b20dafdbe65e43b9f4c95057e8482380833ea91",
      "tree": "deb1f41801011c4376ba2d2dfc1edf127329c3d4",
      "parents": [
        "1f7d5ac53854a09bbcace08b3a1d1b9cf3f2eed3"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 19 15:06:58 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 01 11:09:37 2014 -0700"
      },
      "message": "Add RTLD_NODELETE flag support\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d64069\nChange-Id: Ie5f90482feae86391172be4b32d6cb7d76f446fb\n"
    },
    {
      "commit": "bf50e2645d84bec481cb42da5f2ff4096061cbf8",
      "tree": "00a5874b77e19bacde9f05ee92a7caaea7759a28",
      "parents": [
        "36a5aa057cf1738577754a3fc16a14a5f817109f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Sep 17 15:55:01 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Sep 17 15:55:01 2014 -0700"
      },
      "message": "Add Android*.mk files to additional dependencies\n\nBug: 17548097\nChange-Id: Ie0d9c8f33459320008f561217c54eba42d283b47\n"
    },
    {
      "commit": "e8ba50fe0d51fbefee1a8f5bb62bf51d841512c8",
      "tree": "9e7af562f02dea98c8d0f28b88b5e7b2bf9c0975",
      "parents": [
        "0b8f6d592ac20ec81dbc96766123c67655f34842"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 15 17:00:10 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 15 17:39:48 2014 -0700"
      },
      "message": "Fix dlsym() to take into account RTLD_GLOBAL/LOCAL\n\n  Symbols from libraries opened with RTLD_LOCAL (default)\n  should not be visible via dlsym(RLTD_DEFAULT/RTLD_NEXT, .)\n\nBug: 17512583\nChange-Id: I1758943081a67cf3d49ba5808e061b8251a91964\n"
    },
    {
      "commit": "eb27bbae8f0edc6b62ca2db73256c7fb53b9e9bf",
      "tree": "19a937c05bf7cfc1530232cba522ab8413c349c8",
      "parents": [
        "95b0c6a9407d7a4084d956e273ad1697550452d3"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 15 14:13:24 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 15 15:03:15 2014 -0700"
      },
      "message": "Add dlfcn_test to glibc test suite.\n\nChange-Id: I955e4f7dfcc23ea5c767f967b3532dc31663b876\n"
    },
    {
      "commit": "a6ac54a215d6b64f5cc5a59b66c1dbfbb41ea9f5",
      "tree": "9c449ba5033138dc2fb5b80268bbb01a83e5aa4a",
      "parents": [
        "8d8a789c49ffb6b71e4b8f34df937cfaaff86e40"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Sep 09 10:21:42 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Sep 11 22:40:48 2014 -0700"
      },
      "message": "Fix unload of recursively linked library\n\n  Expanded test for recursive libs. Fixed bug with unnecessary\n  soinfo_free of already loaded library.\n\nChange-Id: I2cc19f2650c8b12a35feeac127ef608ebba44d88\n"
    },
    {
      "commit": "9aea164457c269c475592da36b4655d45f55c7bc",
      "tree": "35f6a459b79e751d6833b2ed765b9d6c17f6672c",
      "parents": [
        "c71483c0b38a6b4f2675f0bffa221dcf175c34ac"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Sep 11 15:16:03 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Sep 11 16:30:45 2014 -0700"
      },
      "message": "Add IFUNC support for arm64 and IRELATIVE reloc\n\n There are number of changes in the way IFUNC related relocations are done:\n 1. IRELATIVE relocations are now supported for x86/x86_64 and arm64.\n 2. IFUNC relocations are now relying on static linker to generate\n    them in correct order - this removes necessety of additional\n    relocation pass for ifuncs.\n 3. Related to 2: rela?.dyn relocations are preformed before .plt ones.\n 4. Ifunc are resolved on symbol lookup this approach allowed to avoid\n    mprotect(PROT_WRITE) call on r-x program segments.\n\nBug: 17399706\nBug: 17177284\nChange-Id: I414dd3e82bd47cc03442c5dfc7c279949aec51ed\n"
    },
    {
      "commit": "14669a939d113214a4a20b9318fca0992d5453f0",
      "tree": "160b15f09cb7edc2da5b02e47cf3d5ce1461df97",
      "parents": [
        "320a01d51693408dad859094ca52e5f315ff1d15"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 05 16:42:53 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 08 13:02:50 2014 -0700"
      },
      "message": "Load libraries in breadth-first order\n\n  This patch fixes the problem with symbol search order\n  for dlsym(RTLD_DEFAULT/RTLD_NEXT, .) by loading libraries\n  and ld_preloads in correct order.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d74255\nChange-Id: If1ba5c807322409faa914e27ecb675e2c4541f0d\nAttempt: 2\n"
    },
    {
      "commit": "498eb18b82a425f9f30132e4832f327b2ee0e545",
      "tree": "08ae8d60c8f659139aba906ccfe6df4bc85afdb5",
      "parents": [
        "b3ebfecdae05e29062bf4d0234239a54a2733ce0"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 05 14:57:59 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 05 16:27:54 2014 -0700"
      },
      "message": "Revert \"Load libraries in breadth-first order\"\n\nThis reverts commit a3ad450a2e3fb6b3fe359683b247eba20896f646.\n\nChange-Id: Ia2b838ad2159c643b80c514849582f4b4f4f40e5\n"
    },
    {
      "commit": "b2a30ee8d209154efc367db11b4167a5d6db605f",
      "tree": "3c36591245f31a062f73ad4b18028505be956229",
      "parents": [
        "8adace5f2c185bd616f79159eaf90d2982157069"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Sep 04 18:23:00 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 05 16:01:47 2014 -0700"
      },
      "message": "Fix order of soinfo links (repairs libcxx tests).\n\nChange-Id: Iee9de09657351cd6a7512784ca797e4b84cdd98b\n"
    },
    {
      "commit": "a3ad450a2e3fb6b3fe359683b247eba20896f646",
      "tree": "46d55ca77bbe24d4834444ed21aa146bf6750e37",
      "parents": [
        "ec95a9cf11f7c4d2211c61da7ce05262a54409d1"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 29 14:21:45 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Sep 03 15:06:14 2014 -0700"
      },
      "message": "Load libraries in breadth-first order\n\n  This patch fixes the problem with symbol search order\n  for dlsym(RTLD_DEFAULT/RTLD_NEXT, .) by loading libraries\n  and ld_preloads in correct order.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d74255\nChange-Id: I4cf84c70dbaabe99310230dfda12385ae5401859\n"
    },
    {
      "commit": "9598b8c415e2fa9f240508185fe8c964b83f538d",
      "tree": "f44be8df337dcb693baaf6aaa52de1ccd952bdcf",
      "parents": [
        "3157211849f808f89a7f1465fd60d6b41917ee4f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 21 13:54:03 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 21 14:24:13 2014 -0700"
      },
      "message": "Run constructors before resolving ifunc functions\n\nBug: 17177284\nChange-Id: I5714b9bc2d1ca8f8711806bfb68da3d524213e99\n"
    },
    {
      "commit": "02aa70589d22fa9b65da43de705d6de2715870c6",
      "tree": "ddad8b09f163b21907f1d660fc52149f9a730aba",
      "parents": [
        "0baf2ca34c7d9ec067b1f33bad69782c2dedc231"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Aug 18 15:08:51 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Aug 19 05:19:53 2014 -0700"
      },
      "message": "Revert \"Add support for protected local symbol lookup.\"\n\nThis reverts commit d97e9f546ea195686a78e539315b273393609b9e.\n\nBug: 17107521\n(cherry picked from commit 9419420919ea846bbad5510850c7aaec95021648)\n\nChange-Id: I1a6df946ac8075699e77d68ffa6ac4a21b88e4bf\n"
    },
    {
      "commit": "4571f31bd49e4951c9f1e0ff642c74fd79fe740a",
      "tree": "33ba9cc312e62586924c95eaadddb349a09df58f",
      "parents": [
        "7d05f741e7885ad42f853b5fe2b1d31cdc756b5c"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 15 14:22:07 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 15 14:22:07 2014 -0700"
      },
      "message": "Add atexit test for attributed c-tor/d-tor\n\n 1. Add test for __attribute__((constructor/destructor))\n    and static constructor\n\n 2. Compile C++ testlibs with -std\u003dgnu++11\n\nChange-Id: I67f9308144a0c638a51f111fcba8e1933fe0ba41\n"
    },
    {
      "commit": "c5a13efa9bc4264be0a9a9e37c00633af01584ed",
      "tree": "4a1678bd154220d7e8d13e6739037fb48635006a",
      "parents": [
        "f2d8c357eec1bbc4e7441942dfc338ad1d9a207a"
      ],
      "author": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Wed Jul 23 11:22:25 2014 -0700"
      },
      "committer": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Fri Aug 08 11:29:35 2014 -0700"
      },
      "message": "Added test for ifunc support in dynamic linker.\n\nifuncs now work in i386 and x86_64 when called in the same library as\nwell as in a different library.\n\nBug:6657325\nChange-Id: Ic0c48b1b0a76cb90f36c20c79f68294cc3fd44a1\n"
    },
    {
      "commit": "aa0f2bdbc22d4b7aec5d3f8f5f01eaeaa13414c2",
      "tree": "3f70916c79cb9bff5f859d846e9e06c26a8cc2e6",
      "parents": [
        "a7dc7600fe1be1f3fd61856b407bb7065307e711"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jul 28 17:32:20 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 29 14:35:13 2014 -0700"
      },
      "message": "Fix dlsym(3) to do breadth first search.\n\n  dlsym(3) with handle !\u003d RTLD_DEFAULT|RTLD_NEXT performs\n  breadth first search through the dependency tree.\n\nBug: 16653281\nChange-Id: I017a6975d1a62abb0218a7eb59ae4deba458e324\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": "d97e9f546ea195686a78e539315b273393609b9e",
      "tree": "07ee416c8dc3795436726a3f820b44c939191c5d",
      "parents": [
        "4ec3bc83c632132bda915d00b5bc716dc6ab8dd8"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sun Jun 29 12:28:37 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 01 10:25:54 2014 -0700"
      },
      "message": "Add support for protected local symbol lookup.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d66048\nChange-Id: Ib334223df27adad9477fb241ab099c5e26df4a7d\n"
    },
    {
      "commit": "ce44166c737b6737c3a0820bef10b074a5e36cf8",
      "tree": "a4d48a5f20e3eddd69205504086e980ed6c675c5",
      "parents": [
        "1d2b4c022c419e1e85336fa44e644772eefb8b64"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 17 15:56:38 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 17 16:18:18 2014 -0700"
      },
      "message": "Fix weak function lookups\n\n * Linker now correctly resolves function defined\n   with __attribute__((weak)).\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d70206\nChange-Id: I82efb905676c25fefb1b11a13f5fecb0f1384657\n"
    },
    {
      "commit": "1f5e1a3cbc564c593fe1090894ecdb070f36e20c",
      "tree": "e45c14c9ff5dcc7b5fb82cc3b38823edec84573d",
      "parents": [
        "b656410a73c4dfa2a3f8deba0a673080320f8605"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jun 02 16:29:00 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 17 15:08:53 2014 -0700"
      },
      "message": "Move libraries for unit-tests to separate folder\n\nChange-Id: I1653f3f2fd63ba25525369bc725c8f7438ecf021\n"
    }
  ]
}
