)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "747d30ebf368be8c4ec0455324bdac53204eb179",
      "tree": "d23c3707a1104240c4954021267156809f18ea01",
      "parents": [
        "f5ea085844c66e7a65709edd7485a49396e556ce"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Oct 20 14:06:25 2015 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Oct 20 14:06:25 2015 -0400"
      },
      "message": "dlfcn: update ifdef around old_name_\n\nCommit 9185e04f72c16d2a66d92ac89b38ee926d7f706b changed the ifdef around\nold_name_ from __arm__ to __work_around_b_###__, but missed one place in\ndlfcn.cpp.  So if you do a build w/out that workaround for arm, you end\nup with a build failure:\nbionic/linker/dlfcn.cpp:275:27: error: no member named \u0027old_name_\u0027 in \u0027soinfo\u0027\n    strlcpy(__libdl_info-\u003eold_name_, __libdl_info-\u003esoname_, sizeof(__libdl_info-\u003eold_name_));\n            ~~~~~~~~~~~~  ^\nbionic/linker/dlfcn.cpp:275:82: error: no member named \u0027old_name_\u0027 in \u0027soinfo\u0027\n    strlcpy(__libdl_info-\u003eold_name_, __libdl_info-\u003esoname_, sizeof(__libdl_info-\u003eold_name_));\n                                                                   ~~~~~~~~~~~~  ^\n\nBug: 24425865\nChange-Id: Idbe1cc1c28083afeee6d90203c221f30f661c69c\n"
    },
    {
      "commit": "e5cfafe3446a33b0c77416061d598bf76d580ee0",
      "tree": "4af42cb8d8a817a60e046db9e52be73b4f419764",
      "parents": [
        "60bc90909a49121789bf86f5d14f63967e8000e0"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jul 17 10:36:10 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jul 17 10:36:10 2015 -0700"
      },
      "message": "Fix potential race condition on dlopen\n\n  Call to find_containing_library should be guarded.\n\nChange-Id: I985a903da48b83bcd35e957a979158eb9b80e70b\n"
    },
    {
      "commit": "0cdef7e7f3c6837b56a969120d9098463d1df8d8",
      "tree": "f44b3e6464e03267081879a3155daf6ad096d905",
      "parents": [
        "83474cd38712c0f955174609a880deabebb27518"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Jul 06 17:56:31 2015 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jul 07 10:56:06 2015 -0700"
      },
      "message": "Respect caller DT_RUNPATH in dlopen().\n\nWhen dlopen-ing a library, add the caller\u0027s DT_RUNPATH to the directory search\nlist. This fixes dlfcn.dt_runpath in bionic-unit-tests-glibc(32|64).\n\nBug: 21899363\nChange-Id: Ife6a7e192939292cf4dc291b7e6b95945761cde3\n"
    },
    {
      "commit": "7271caf93db6897cdbcfca169441045bb52de61b",
      "tree": "36114c9985025d3646c686957545bb9bb7a7d114",
      "parents": [
        "46d24d12e167a0b5afa4ded218aa4db0a477141a"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jun 29 14:48:25 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jun 29 15:14:28 2015 -0700"
      },
      "message": "Lock on dl_interate_phdr\n\nThere is possibility of someone dlclosing a library\nwhile dl_iterate_phdr in progress which can lead to\ndl_iterate_phdr calling callback with invalid address\nif it was unmapped by dlclose.\n\nBug: http://b/22047255\nChange-Id: I3fc0d9fd2c51fb36fd34cb035f37271fa893a7be\n(cherry picked from commit f7d5bf334dc4bc5b7399d4c8268e1b0bf676548f)\n"
    },
    {
      "commit": "1913352c6b3501893dfb45189754970f9dc6e7bb",
      "tree": "40cfe61bd454bfacb8f8aca029eee6a65beb7311",
      "parents": [
        "11b15b23aa6044b1fa2ce89744643a0cc072b348"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 02 17:36:54 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 02 18:09:23 2015 -0700"
      },
      "message": "Backward compatibility for dlsym(RTLD_DEFAULT, ...)\n\n Do not skip RTLD_LOCAL libraries in dlsym(RTLD_DEFAULT, ...)\n if the library is opened by application with target api level \u003c\u003d 22\n\nBug: http://b/21565766\nBug: http://b/17512583\nChange-Id: Ic45ed1e4f53e84cba9d74cab6b0049c0c7aa8423\n(cherry picked from commit 04f7e3e955ba7de5f449c995e667659319dc1cce)\n"
    },
    {
      "commit": "d974e8804689058714dc4fe9adcb57ee9a6996a8",
      "tree": "f95bfd6c671f0119167054eee232ceb3634facb6",
      "parents": [
        "d717b1a3e55db9b7625a46bec950e856cc107951"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 27 18:29:41 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 28 14:56:42 2015 -0700"
      },
      "message": "Work around incorrect dt_needed entries\n\n  This applies for apps targeting sdk\u003c\u003d22 and\n  only for lp32 platforms.\n\nBug: http://b/21364029\nChange-Id: I903e81c9ccda2a8beaba1d132d68c77d30a4cdb2\n"
    },
    {
      "commit": "79fd668bb4ddb22432eeda2ebd8d10359013d9a8",
      "tree": "c0f8b611a678275b2f6cab8e4d3b711a6a1aa3f2",
      "parents": [
        "aaafbe128f51dff92da3cf4f5fc9b47f04f05261"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 21 17:43:49 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 27 14:31:36 2015 -0700"
      },
      "message": "Add functions to provide target sdk version\n\nBug: http://b/21364029\nChange-Id: I8648d1bff6c8fd6e7cd12da7f128e048b9f2829a\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": "aae859cc3ca127d890e853cbf12b731e05624a22",
      "tree": "159e996dd6756b99fe70371e99a69ec6040e851b",
      "parents": [
        "e686df8d839216460f02cf7db6c4e26a13e49afd"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 31 11:14:03 2015 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 06 21:15:43 2015 +0000"
      },
      "message": "Add realpath for soinfo\n\n  This change adds realpath to soinfo and\n  extends limit on filenames from 128 to PATH_MAX.\n\n  It also removes soinfo::name field, linker uses\n  dt_soname instead.\n\nBug: http://b/19818481\nBug: https://code.google.com/p/android/issues/detail?id\u003d80336\nChange-Id: I9cff4cb5bda3ee2bc74e1bbded9594ea7fbe2a08\n"
    },
    {
      "commit": "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": "05fc1d7050d5451aea08dc5f504d2670287b2d43",
      "tree": "fa1d81b61b303ee8ed94c511cc08b8f40ed6624b",
      "parents": [
        "43606bc1ce974e4ba42d7d2c3682ad5182e6fc96"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 28 18:02:33 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 28 19:23:11 2015 -0800"
      },
      "message": "Add missing includes.\n\nChange-Id: Ibf549266a19a67eb9158d341a69dddfb654be669\n"
    },
    {
      "commit": "291dbf65cadeccbb33e60b33fbe9f5f48c8763ff",
      "tree": "83f26cab3788a76ec3ed086328e3d8f57e452d3f",
      "parents": [
        "46d0b81a9465bf74fe44a881365c332dc6173f2f",
        "ab972b9adf8789a9e1b03129cd7f0c22e6bba117"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 02 19:10:03 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 02 19:10:04 2014 +0000"
      },
      "message": "Merge \"Count references for groups instead of instances\""
    },
    {
      "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": "212e0e38248860b151b28877225629a988d95b58",
      "tree": "f43f3b8bc2472d2584750052171a0d6da5277e25",
      "parents": [
        "076f69d828cfa5d30360e1dd2f24acd751d4a461"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:43:51 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:43:51 2014 -0800"
      },
      "message": "Build our benchmarks against glibc too.\n\nBug: 18556607\nChange-Id: I455ac8b93c0835836180e549486bc52d393ee6a6\n"
    },
    {
      "commit": "047b5934b5f1c62502fc9262ce634529c6cc1420",
      "tree": "4966b12cba3f211fa8cf6265f3a79d2b32f5e61c",
      "parents": [
        "0a135b4259077bbb48ec911c0fa92ab0654ffffa"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 13 09:39:20 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 13 19:48:32 2014 -0800"
      },
      "message": "Rename soinfo methods and fields\n\nChange-Id: If68fbe287d3ad954238b1688f71013371f3f7fae\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": "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": "6cdeb5234d7f4523fe9d83974f265d80f10512a6",
      "tree": "a676112a9293947e7e8c1ecb3c51d8b63036795e",
      "parents": [
        "9997daa0ff8f630bee5d3b8eb0ab15a0ba1e5cf6"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 29 19:14:45 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Sep 30 14:41:29 2014 -0700"
      },
      "message": "Fix unused DT entry warnings.\n\n DT_STRSZ Implement strtab boundary checks\n DT_FLAGS_1 Warn if flags other than DF_1_NOW|DF_1_GLOBAL are set\n\nBug: 17552334\nChange-Id: Iaad29cd52f5b2d7d2f785fb351697906dc1617d9\n"
    },
    {
      "commit": "8f61d991831f0ea515fa50a5c38dbbcfbab0dd28",
      "tree": "15a839ab19e618385984e1f8946079a2207a6de2",
      "parents": [
        "370704d69db15ec0b4d24e6412b5d30ded0ffc03"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Sep 16 14:31:06 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Sep 16 15:26:47 2014 -0700"
      },
      "message": "Remove has_DT_SYMBOLIC flag\n\n  From the elf-spec: \"Symbolically bound shared objects are\n  identified by the .dynamic entry DT_SYMBOLIC. This tag is\n  informational only; the runtime linker processes symbol\n  lookups from these objects in the same manner as any\n  other object.\"\n\nChange-Id: I4aae0e502ed9fac096fbf076f4d6b2e055d784f6\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": "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": "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": "851135bf9941b3813adb9b4f43d76e040c4ba157",
      "tree": "647ab7ce4fe160dbd7db1fab01de91795de65a88",
      "parents": [
        "f4e721dd519db89c504c8944763811a3df956b32"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 29 12:02:36 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 29 14:13:48 2014 -0700"
      },
      "message": "Replace NULL with nullptr\n\nChange-Id: Iad50be617d318ca98883b843229c960ad5b9afa9\n"
    },
    {
      "commit": "0d15094287fe0f288d9c258953143fc1998b6b5a",
      "tree": "25fe168fd8620ec77fc9a7b713dfc8916fcf064b",
      "parents": [
        "2e6c5fc4e903b6ef58bd94e13e51b3f0aa4689b3"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 22 12:25:04 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 22 13:29:18 2014 -0700"
      },
      "message": "Bump soinfo version\n\n This includes:\n 1. Placing has_ifunc after fields with version \u003d 0\n 2. Switch to has_min_version(v) function.\n 3. Minor soinfo initialization refactoring (placement new + ctor)\n\nChange-Id: I1bf5fde4d930914012ce5f3ad5acb48217da9b2d\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": "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": "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": "ddc449748bc3ff0ba574be00f4bbac9fba242e33",
      "tree": "8bd18512a82b6648a4b4f36ae19a020fcdc95b13",
      "parents": [
        "2e249c2e7a1bc2290d34c77d48206e97b8b883b6",
        "acfc63760eef50cd451b80df8860d17bbab1ca33"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Jun 28 00:39:33 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 26 23:45:01 2014 +0000"
      },
      "message": "Merge \"Revert \"HACK: linker: check for handle\u003d\u003d0xffffffff on LP64\"\""
    },
    {
      "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": "acfc63760eef50cd451b80df8860d17bbab1ca33",
      "tree": "6f97e166b074a0cc753c4253e37db62c47cec9de",
      "parents": [
        "e120cba31df5249b720579312e799bd1c65f8e3d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jun 16 15:44:20 2014 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jun 16 15:44:20 2014 -0700"
      },
      "message": "Revert \"HACK: linker: check for handle\u003d\u003d0xffffffff on LP64\"\n\nThis reverts commit 346fea0805b8c2a20171c9b4ab1aac5f66ede5de.\n\nChange-Id: Id3fd79451e4218e68e39ce22f21408cbf93255ee\n"
    },
    {
      "commit": "1a586293400d0e1d73e6eb82f7dfe9d2d9ed3c4b",
      "tree": "ed43eab1330d4f637c5fc543eb7cbe566c9a044a",
      "parents": [
        "be15d16b7246e32a1e622d4442cf919646bc71a9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 03 16:23:08 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 03 16:23:08 2014 -0700"
      },
      "message": "Remove an unused parameter from the dlopen implementation.\n\nChange-Id: I9297913a743bb570b48ebbe594ff711a481e89e0\n"
    },
    {
      "commit": "ca1c80220e9b16fde7a761ca1c2c63dbe8071e0f",
      "tree": "b0b2db09c7224718ce62921c058fb8b204b04a2c",
      "parents": [
        "3d4a7b02cc7948c94932c4d71c68f864457d59d6"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 21 22:42:24 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 21 22:42:24 2014 -0700"
      },
      "message": "Removed dlsym handle !\u003d NULL check for lp64\n\n * Removed unnecessary NULL check in dlsym\n * Fixed dlsym_failure test to account for\n   correct RTLD_DEFAULT value\n * Added temporary check for legacy RTLD_DEFAULT\n   value for non-yet-recompiled binaries\n\nBug: 15146875\nChange-Id: I089fa673762629f5724b6e4fbca019d9cfc39905\n"
    },
    {
      "commit": "346fea0805b8c2a20171c9b4ab1aac5f66ede5de",
      "tree": "126e8280445807a73bd9793bdb8babd948573bad",
      "parents": [
        "afb89c2a01089bb247456634a15a58f111bb55a6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue May 20 15:06:37 2014 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue May 20 15:19:02 2014 -0700"
      },
      "message": "HACK: linker: check for handle\u003d\u003d0xffffffff on LP64\n\nbionic RTLD_NEXT was changed from 0xffffffff to -1L, which breaks\nexisting binaries compiled.  Temporarily look either until we can\nget recompiled binaries.\n\nBug: 15113039\nChange-Id: I1568fa0e4a832c5e6df21da74a33b22bde7f16f6\n"
    },
    {
      "commit": "b648a8a57ee42533a5bf127225a252f73ca2cbbc",
      "tree": "09fdf06c6e8d5e6985107f4e8fdb2055c5bb6a6f",
      "parents": [
        "0b9a72ce1124f17d514b93c0d26dea76ce8069f0"
      ],
      "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": "Tue May 20 12:02:24 2014 -0700"
      },
      "message": "Add RTLD_NOLOAD support and some related changes.\n\n * Aligned RTLD_ values with glibc for lp64\n * dlopen supports RTLD_NOLOAD flag\n * soinfo_unload calls find_library(.., RTLD_NOLOAD)\n   instead of naive find_loaded_library_by_name()\n * dlopen changed to add child to caller soinfo instead\n   of somain.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d64069\nChange-Id: I1a65f2c34f3e0edc6d2c41a2e408b58195feb640\n"
    },
    {
      "commit": "d59e50063ad708509f3ad83350be33f5612c4f54",
      "tree": "4179117769c38d28aff06e56427f54e72e5eed6b",
      "parents": [
        "6897b7b8b95beae120fd53e6fd15921d6420bea7"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri May 09 09:10:14 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 14 15:16:35 2014 -0700"
      },
      "message": "Improve detection of already loaded libraries\n\nLinker is now able to resolve symlinked libraries correctly.\n\nsoinfo is extended to save the graph of dependencies during\nload/unload. Dependencies are used only in CallConstructor.\n\nBug: 9741592\nChange-Id: Id9c48a74c46aa89bcdf3d54ec2f8ba3d398130b1\n"
    },
    {
      "commit": "1728b2396591853345507a063ed6075dfd251706",
      "tree": "7083cd234073afa5179b94b3d978550c890af90c",
      "parents": [
        "bac795586bbc5dcbe886d8d781710f60c4c19d9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "message": "Switch to g_ for globals.\n\nThat\u0027s what the Google style guide recommends, and we\u0027re starting\nto get a mix.\n\nChange-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc\n"
    },
    {
      "commit": "012cb4583a5f8564059142bb1900ea3a31e7cfa9",
      "tree": "60d2a27a83766f6ad6d20b124feb0bc48a332593",
      "parents": [
        "26c2bb84dd5cbd9ab43a5f0ebc2635bc3b64be3d"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Feb 06 14:34:21 2014 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Apr 17 13:50:55 2014 +0100"
      },
      "message": "Add android_dlopen_ext() interface to linker.\n\nAdd a function \"android_dlopen_ext()\", defined in \u003candroid/dlext.h\u003e.\nThis is an extended version of dlopen() which takes a struct for passing\nadditional parameters for Android-specific functionality. This will be\nused to support RELRO section sharing between separate processes.\n\nBug: 13005501\nChange-Id: I9c99b2f2a02ee329dedaeba09ef3a1113b17b2d6\n"
    },
    {
      "commit": "faf05bacd45719291b371f24b1b89543881b37f6",
      "tree": "5ea47b891e7b65d94af4bd558d2a1817247e74de",
      "parents": [
        "577fce0108feda58296beacfbc0ada4a6d6afbc2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 11 16:59:37 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 11 17:33:49 2014 -0800"
      },
      "message": "Clean up all the lint cpplint can find in the dynamic linker.\n\nChange-Id: Ic9ee7153817c22a252cc4b309283e355b623cab9\n"
    },
    {
      "commit": "9918665a45095ad135576f005c0e5307feb366a1",
      "tree": "fdef48d2a8c74a2bc8dfd17fd25527ed98b96b3a",
      "parents": [
        "c856baeeade96c167400f179a86d50c426e81788"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris.dearman@imgtec.com",
        "time": "Thu Feb 06 20:36:51 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 11 15:33:14 2014 -0800"
      },
      "message": "[MIPS64] Dynamic linker\n\nChange-Id: I937c7c776cae3d66e214798d5217a922cd106bfc\nSigned-off-by: Chris Dearman \u003cchris.dearman@imgtec.com\u003e\nSigned-off-by: Duane Sand \u003cduane.sand@imgtec.com\u003e\n"
    },
    {
      "commit": "0266ae5f884d72da58f33a072e865ba131234a5e",
      "tree": "48763b706806f544b1dec0ef98261bed6f21dee2",
      "parents": [
        "eeb9a9f59a58a2f042e8f6fd1a4911ae92ac5493"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 17:46:57 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 18:22:24 2014 -0800"
      },
      "message": "Switch \u003celf.h\u003e over to linux uapi under the covers.\n\nRemove the linker\u0027s reliance on BSD cruft and use the glibc-style\nElfW macro. (Other code too, but the linker contains the majority\nof the code that needs to work for Elf32 and Elf64.)\n\nAll platforms need dl_iterate_phdr_static, so it doesn\u0027t make sense\nto have that part of the per-architecture configuration.\n\nBug: 12476126\nChange-Id: I1d7f918f1303a392794a6cd8b3512ff56bd6e487\n"
    },
    {
      "commit": "d1973ca51325393f304e82a4d79874f33e54ac16",
      "tree": "75a657d895a41aa4855a06ef1e0e986c963e0eef",
      "parents": [
        "5b4884fac90753c68d401de73036c2de919958eb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 21 19:50:58 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jan 23 18:35:39 2014 -0800"
      },
      "message": "bionic: rename aarch64 target to arm64\n\nRename aarch64 build targets to arm64.  The gcc toolchain is still\naarch64.\n\nChange-Id: Ia92d8a50824e5329cf00fd6f4f92eae112b7f3a3\n"
    },
    {
      "commit": "a4aafd156068ee174012f28cd894dbecf0e4ab90",
      "tree": "d55b5e77d1fa752db1f374d0baec3afc9c15ecd5",
      "parents": [
        "ebc1c76d77dd604f16126e66b2171e8ee6fa1d22"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 13 16:37:47 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 13 16:37:47 2014 -0800"
      },
      "message": "Make it possible for code to query the dynamic linker\u0027s default search path.\n\nWe\u0027re not going to have init(1) set LD_LIBRARY_PATH globally on 64-bit.\nThis patch makes it possible for libnativehelper to set LD_LIBRARY_PATH\nin each Java VM (to support System.loadLibrary) without also hard-coding\nthe default search path there.\n\nChange-Id: If13961fae976e06dd80d5ef522f31e8b7eb01154\n"
    },
    {
      "commit": "e365f9d6543bc6607864ef61257505239dde15d1",
      "tree": "ecc2e3605bc26aeb9b16a1d3adbceb70da40ba19",
      "parents": [
        "2e3826c08171ead1647c800a0a6d9c333d335762"
      ],
      "author": {
        "name": "Marcus Oakland",
        "email": "marcus.oakland@arm.com",
        "time": "Thu Oct 10 15:19:31 2013 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 17 15:02:43 2013 -0800"
      },
      "message": "AArch64: Linker64 support for AArch64\n\nAddition of support for AArch64 in the linker64 target.\n\nChange-Id: I8dfd9711278f6706063e91f626b6007ea7a3dd6e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n"
    },
    {
      "commit": "e4d792adb8d6f9228b9ac9dc1ad7f43b271f085f",
      "tree": "2424b3c3c863e813eb56bdb2d21aac571cc7f30b",
      "parents": [
        "3ec5d8954b41f2e51d6ff7851533f1db1eba9a09"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 14:19:05 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 14:34:56 2013 -0700"
      },
      "message": "Don\u0027t allow text relocations on 64-bit.\n\nI\u0027ve also updated our \u003csys/exec_elf.h\u003e to match upstream.\n\nChange-Id: I52f9fce3167541811208d273ff23ceaa112f7135\n"
    },
    {
      "commit": "4eeb1f12a8b63afc0d0ad4d466b16fbffb21cd5a",
      "tree": "618c8b7133f3602880e0a4c8285c34e7552a0a45",
      "parents": [
        "93fcfeee2b4de4c65fc766bf10601397592341d7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 25 17:38:02 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 11:02:49 2013 -0700"
      },
      "message": "Clean up linker architecture macros.\n\nWe don\u0027t need our own architecture macros; the standard ones will do.\n\nThis patch also fixes some __x86_64__ tests to be USE_RELA tests instead,\nbecause they\u0027re not actually x86_64-specific.\n\nI\u0027ve cleaned up architecture-specific code slightly so where possible\nall the code corresponding to a particular architecture is together.\n\nThis patch also fixes a bug in LP64 DT_PLTGOT handling, which should be\nan error rather than falling through into DT_DEBUG! There was another #ifdef\nbug where we\u0027d only report unexpected DT_ entries on MIPS.\n\nChange-Id: Id1d04e372611f641c1aa278a18e379f28af9eaf5\n"
    },
    {
      "commit": "eb847bc8666842a3cfc9c06e8458ad1abebebaf0",
      "tree": "15e070fb706ba7599d5f402a8f934a7399541a6a",
      "parents": [
        "0c17099a71cb5d1b36b7aab66fd7341b3fc9106d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 15:50:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:00:17 2013 -0700"
      },
      "message": "Fix x86_64 build, clean up intermediate libraries.\n\nThe x86_64 build was failing because clone.S had a call to __thread_entry which\nwas being added to a different intermediate .a on the way to making libc.so,\nand the linker couldn\u0027t guarantee statically that such a relocation would be\npossible.\n\n  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against \u0027__thread_entry\u0027 which may overflow at runtime; recompile with -fPIC\n\nThis patch addresses that by ensuring that the caller and callee end up in the\nsame intermediate .a. While I\u0027m here, I\u0027ve tried to clean up some of the mess\nthat led to this situation too. In particular, this removes libc/private/ from\nthe default include path (except for the DNS code), and splits out the DNS\ncode into its own library (since it\u0027s a weird special case of upstream NetBSD\ncode that\u0027s diverged so heavily it\u0027s unlikely ever to get back in sync).\n\nThere\u0027s more cleanup of the DNS situation possible, but this is definitely a\nstep in the right direction, and it\u0027s more than enough to get x86_64 building\ncleanly.\n\nChange-Id: I00425a7245b7a2573df16cc38798187d0729e7c4\n"
    },
    {
      "commit": "2a0b873065edb304fa2d1c54f8de663ea638b8ab",
      "tree": "4753b74b87e713379965bb051482036e6726afb1",
      "parents": [
        "777a4ee6771e6fe3362ef4f24244a44fcd0aabe4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 18:50:24 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 13:39:13 2013 -0700"
      },
      "message": "Fix __errno for LP64 and clean up __get_tls.\n\nIf __get_tls has the right type, a lot of confusing casting can disappear.\n\nIt was probably a mistake that __get_tls was exposed as a function for mips\nand x86 (but not arm), so let\u0027s (a) ensure that the __get_tls function\nalways matches the macro, (b) that we have the function for arm too, and\n(c) that we don\u0027t have the function for any 64-bit architecture.\n\nChange-Id: Ie9cb989b66e2006524ad7733eb6e1a65055463be\n"
    },
    {
      "commit": "afac15d686460267ff20ce4786b9a7c5796a1ea8",
      "tree": "0f09746e8f7cb15ca0e467e4d5a8d5e89c978b2d",
      "parents": [
        "26933f4046d7362bfd276fc208e959a733a121c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 09:39:52 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 10:01:09 2013 -0700"
      },
      "message": "Use C99 structure initializer designator style.\n\nclang warns about using the GCC style of designator.\n\nChange-Id: I86ec79f06c8774618082859f48d7d1f576520e32\n"
    },
    {
      "commit": "c00f2cb587630d5e954c7f548749f1e3170b3cb1",
      "tree": "c62c53a795026d249df132db9bc7894add15611d",
      "parents": [
        "5d06718cd357b509588465ec1fa261db23b5899a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 04 17:01:33 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 09:57:01 2013 -0700"
      },
      "message": "x86_64 linker.\n\nBased on I8dc3e2cb596f75dc58ae82e4dc58f8c177dd3323 by\nPavel Chupin \u003cpavel.v.chupin@intel.com\u003e.\n\nChange-Id: Icd582d277cbe273477b450f2848343d72c86ec9f\n"
    },
    {
      "commit": "c620059479c47a78d57086d73726c9adc2f337ad",
      "tree": "ef410fffb4d853aaf7dbfee41743c197c4985856",
      "parents": [
        "6dee3b9aeec40bb518c1a29b4462300869a03d8e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 30 18:43:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 30 18:43:46 2013 -0700"
      },
      "message": "Remove 32-bit assumptions from the ELF code.\n\nChange-Id: I2c1f3d34c33685799aade8866eec44479ff9f963\n"
    },
    {
      "commit": "24053a461e7a20f34002262c1bb122023134989d",
      "tree": "5da0ad5fe8822190483226140c7fba6a9f618395",
      "parents": [
        "df7436e709035fb6f5667980042848c8b4ca3e79"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Aug 19 17:45:09 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 06 09:53:54 2013 -0700"
      },
      "message": "Add the dl_iterate_phdr function to libdl for arm.\n\nBug: 8410085\n\nMerge from internal master.\n\n(cherry-picked from cb491bc66dc0abc145930b09086eb9189a30f6c2)\n\nChange-Id: I94ed51bc5d4c626df7552c0e85c31ccee2d6568f\n"
    },
    {
      "commit": "ca0c11bd823f37f03cc8067cb182876827d5275a",
      "tree": "b6d10789c2be00f069e643a70cb9e29223f0e07d",
      "parents": [
        "6b4c77f854c079138d552608b9df5fa3035f0fcc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 10:40:45 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 11:26:56 2013 -0700"
      },
      "message": "Use more types than just \u0027unsigned\u0027 in the linker.\n\nStill chipping away at the situation where every variable in the\nlinker was of type \u0027unsigned\u0027. This patch switches counts over to\nbeing size_t and adds an explicit type for init/fini function pointers\nand arrays of function pointers.\n\nAlso improve logging from CallArray.\n\nAlso remove trailing \"\\n\"s from log messages.\n\nChange-Id: Ie036d2622caac50f4d29f0570888bb527661d77e\n"
    },
    {
      "commit": "650be4e584eeab3591b9e273bfd6d169eea60853",
      "tree": "5be356ef45653f3a118ebac4a66858d24a4bdb6b",
      "parents": [
        "036f909720fd0d56dbd04b9a761fb1d0714980b0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 05 18:47:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 05 22:24:34 2013 -0800"
      },
      "message": "More linker cleanup.\n\nChange-Id: I9fb3c7c0d4b4ffef0eeaf092d4e30ffe63a08671\n"
    },
    {
      "commit": "d4ee82dfa3ba01baa10e3ca48fcb31a27b8a4e81",
      "tree": "b3e7ea16cf946c1d23131bb86f59e043449b7776",
      "parents": [
        "d392e044c7a03ff1c0903c3512d00955bc7de473"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 28 15:58:45 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 05 15:27:21 2013 -0800"
      },
      "message": "Minor linker cleanup, primarily to use Elf32_Dyn\n\nChange-Id: Ifa9408e9859c6f79444715bed4808b7c13fdced5\n"
    },
    {
      "commit": "cade4c36e7c9c62db3f476a0f9cfc329bac9acb7",
      "tree": "ba27e7e4734b952421de2d7060a7a53e295a60d3",
      "parents": [
        "4b58214205d3d29dbdfed49964010235ef3f0403"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 20 14:42:14 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 20 14:42:14 2012 -0800"
      },
      "message": "Support System.loadLibrary for libraries with transitive dependencies.\n\nAlso fix the FLAG_ERROR annoyance --- it\u0027s not helpful to cache failures.\n\nBug: 7896159\nBug: http://code.google.com/p/android/issues/detail?id\u003d34416\nBug: http://code.google.com/p/android/issues/detail?id\u003d22143\nChange-Id: I60f235edb4ea4756e1f7ce56f7739f18e8a50789\n"
    },
    {
      "commit": "e66190d2a97a713ae4b4786e60ca3d67ab8aa192",
      "tree": "0bacac6bbb8916d803e2b6f2c991030790e0f718",
      "parents": [
        "4c4b08a32eace878e4780ee340a57c43be950159"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 18 15:57:55 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 18 15:57:55 2012 -0800"
      },
      "message": "Check for unknown flags passed to dlopen(3).\n\nChange-Id: I56f4aab0e5a1487bc32d2c4d231e8bd15c4ac8da\n"
    },
    {
      "commit": "d23736e4f228e46304b7cbc674a1d0094d73e0f5",
      "tree": "a3604b996016d73b2ccaf2982d338dc5d5ae53a3",
      "parents": [
        "064f862d557ab741575dfae479499a07ca0ab742"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 15:16:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 16:48:14 2012 -0700"
      },
      "message": "Keep the dynamic linker\u0027s soinfo pools mostly read-only.\n\nWe\u0027ll need a lot more refactoring of this code before we can reduce\nthe granularity, but this is a step forward.\n\nChange-Id: I07061720e734b571a8399c1d5b4f2f35cd681307\n"
    },
    {
      "commit": "5ae44f302b7d1d19f25c4c6f125e32dc369961d9",
      "tree": "1dde02285286f2f48e4becd2c89d8b2ffc1085db",
      "parents": [
        "155e8d1df5b8fdfeabda3e7b61d95beb5b8d1467"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Thu Aug 30 12:48:32 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 30 17:09:21 2012 -0700"
      },
      "message": "linker: handle R_ARM_COPY relocations in a proper way\n\nIf an executable contain copy relocations, other references\nto the symbol it points to should be preempted and made to\npoint to the copy instead.\n\nAlso, the linker should make sure the target area has\nsufficient space to contain the copy. It also checks\nwhether the library that supplies the symbol is built\nwith -Bsymbolic, and errors out if this is the case.\n\nChange-Id: If135c83590092741cfd8f82f54816f363a4a4a3b\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "20aa6c0f4cbe6fdaba8938536a7b80270cfe7203",
      "tree": "0212cfae4f91012942afd11e742969bd891b80be",
      "parents": [
        "d0f2b7e7e65f19f978c59abcbb522c08e76b1508"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Thu Oct 25 12:17:05 2012 +0400"
      },
      "committer": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Thu Oct 25 17:58:45 2012 +0400"
      },
      "message": "Workaround g++ 4.7 compfail\n\nerror: C99 designator \u0027name\u0027 outside aggregate initializer\n\nG++ 4.7+ can\u0027t handle some of C99 designated initializers.\nMost likely it\u0027s just not implemented yet. Other possible workarounds is\nto compile this as C not C++ or define name as char* instead of char[SIZE].\n\nAppeared after this change https://android-review.googlesource.com/#/c/44470\n\nChange-Id: Ib28157848ce759b8bb5dbb2ac0d9a768fa4e5107\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "5419b9474753d25dff947c7740532f86d130c0be",
      "tree": "4d746cfc20a1d3b5886f691ed1a49ddf34e2df78",
      "parents": [
        "a9944cfe9e152ca46afb0a77300ec5a2a1a24e64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 16 15:54:46 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 16 17:58:17 2012 -0700"
      },
      "message": "Make dlerror(3) thread-safe.\n\nI gave up trying to use the usual thread-local buffer idiom; calls to\ncalloc(3) and free(3) from any of the \"dl\" functions -- which live in\nthe dynamic linker -- end up resolving to the dynamic linker\u0027s stubs.\nI tried to work around that, but was just making things more complicated.\nThis alternative costs us a well-known TLS slot (instead of the\ndynamically-allocated TLS slot we\u0027d have used otherwise, so no difference\nthere), plus an extra buffer inside every pthread_internal_t.\n\nBug: 5404023\nChange-Id: Ie9614edd05b6d1eeaf7bf9172792d616c6361767\n"
    },
    {
      "commit": "22d629211d72adaf46f3fc48f59540f8e5798b1e",
      "tree": "98ff73ae376f40abae72a869702276b0d35d2adc",
      "parents": [
        "db4fdf1aafb63b09ee967066d9b8107a9812db2d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 12 10:50:21 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 12 10:50:21 2012 -0700"
      },
      "message": "Make the dlfcn mutex static.\n\nMore style fixes too, and removal of yet another lingering SH reference!\n\nChange-Id: Iebc34a46475dd11845ad172b9108bb6ddd7585bb\n"
    },
    {
      "commit": "3b297c40794b23d50cb5240f9b03f6ef25fd98db",
      "tree": "ebcb95b3cd9f249f08257e8654307f88c98e6dbb",
      "parents": [
        "417fd2334a694cf6a831b81cd672b4ca31ff2f54"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 11 16:08:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 11 16:08:51 2012 -0700"
      },
      "message": "Fix dlerror(3).\n\nAdd unit tests for dlerror(3) in various situations. I think We\u0027re at least\nas good as glibc now.\n\nAlso factor out the ScopedPthreadMutexLock and use it here too.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d38398\nChange-Id: I040938b4366ab836e3df46d1d8055b92f4ea6ed8\n"
    }
  ]
}
