)]}'
{
  "log": [
    {
      "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": "6f2d3104c82f81c1f0123a3cfb25ae670841d0ba",
      "tree": "0e69cd361e7de4ce1e0129195901602787160997",
      "parents": [
        "fb7f45b6a3242c9a9a547705de08cf59e6b7f935"
      ],
      "author": {
        "name": "Lazar Trsic",
        "email": "Lazar.Trsic@imgtec.com",
        "time": "Tue Oct 13 16:43:00 2015 +0200"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 13 10:57:41 2015 -0700"
      },
      "message": "Correctly resolve realpath for absolute paths\n\nIntroduced by: https://android-review.googlesource.com/174475\n\nChange-Id: I44e00040b28be167d5141454f919340afec6084e\n"
    },
    {
      "commit": "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": "aff18fd60804e177c319d04dd4c12f3ee1c0cba8",
      "tree": "4cbdec04aa3b8abfbf95ce90566151e3e0a7c668",
      "parents": [
        "a8993c994e45ec2dc00dcef15910560e22d67be9"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 23 13:58:22 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jun 23 13:58:22 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nChange-Id: If66d0c5ae1ea1ed371b44e067d4ae59ac54a8842\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": "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": "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": "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": "ef25592f14d23ce6294ea103e9edf894779d141d",
      "tree": "5c6bd7e34adb984bb2d63f9f115ce6d85b0803f5",
      "parents": [
        "598493e725e0298ae11ddbdee62c3a7007eb503c"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 08 11:53:08 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 09 14:56:26 2015 -0700"
      },
      "message": "Fix dl* tests to run-on-host\n\nBug: http://b/20121152\nChange-Id: I1e1f41d885c75dbb26f91565a53a15d62ef72ce6\n"
    },
    {
      "commit": "aae859cc3ca127d890e853cbf12b731e05624a22",
      "tree": "159e996dd6756b99fe70371e99a69ec6040e851b",
      "parents": [
        "e686df8d839216460f02cf7db6c4e26a13e49afd"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 31 11:14:03 2015 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 06 21:15:43 2015 +0000"
      },
      "message": "Add realpath for soinfo\n\n  This change adds realpath to soinfo and\n  extends limit on filenames from 128 to PATH_MAX.\n\n  It also removes soinfo::name field, linker uses\n  dt_soname instead.\n\nBug: http://b/19818481\nBug: https://code.google.com/p/android/issues/detail?id\u003d80336\nChange-Id: I9cff4cb5bda3ee2bc74e1bbded9594ea7fbe2a08\n"
    },
    {
      "commit": "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": "52393a56335435efc605aff66aca3145873e1e56",
      "tree": "db601ac602f90c06269d41fb653c15797b2d7188",
      "parents": [
        "6943f2968cb6054f8874e30b309985b41a37e2e0"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 18 22:50:01 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 18 22:50:01 2015 -0700"
      },
      "message": "Move open from zip tests to dlext\n\n To avoid building them for glibc.\n\n Also replace snprintf with std::string\n\nChange-Id: I12e1d2e4ab46ff5af6c05453da67842e0d838fc5\n"
    },
    {
      "commit": "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": "cb0443c0fa07e4c049f426e3041894df522732df",
      "tree": "381413df3bfbe60beb5b974fa0b81a69c13c6bbb",
      "parents": [
        "169a84f980d7a55c5f829cdd53a3eaba8f968442"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 14:15:46 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 14:20:57 2015 -0700"
      },
      "message": "Remove obsolete test_isolated wrapper function\n\n We already run all of our tests in isolated mode.\n\nChange-Id: I8236baa302b1026a9b4a1c33a4aa65e223771bc7\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": "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": "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": "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": "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": "d74aa580354037b9972524e9d654c0a336974838",
      "tree": "189b7fade3764e5105c37bc53b5366e15037fd53",
      "parents": [
        "aad92067bf4eecda81a4c331ee4dec70483c5104",
        "a6ac54a215d6b64f5cc5a59b66c1dbfbb41ea9f5"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 12 16:55:42 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 12 16:55:42 2014 +0000"
      },
      "message": "Merge \"Fix unload of recursively linked library\""
    },
    {
      "commit": "66bbf1595c0fc25d4bc47457d8020b11e135996d",
      "tree": "9464625e75da5be80863865837e5f04be8f618c1",
      "parents": [
        "8d8a789c49ffb6b71e4b8f34df937cfaaff86e40",
        "d9ff7226613014056c9edd79a68dc5af939107a0"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 12 16:50:04 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 12 16:50:05 2014 +0000"
      },
      "message": "Merge \"Refactoring: C++11 style DISABLE_ bionic marcos\""
    },
    {
      "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": "d9ff7226613014056c9edd79a68dc5af939107a0",
      "tree": "9866b50193d3886937a4ea13a5c3f88de7600f20",
      "parents": [
        "3c3624f3df14590e7213d35c3b39a0a11c7d2d34"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 08 16:22:22 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 08 17:51:31 2014 -0700"
      },
      "message": "Refactoring: C++11 style DISABLE_ bionic marcos\n\n  Enable the -std\u003dgnu++11 flag for libstdc++ static and\n  dynamic libs.\n\n  ScopeGuard uses DISABLE_ macros instead of \u0027\u003d delete\u0027;\n\nChange-Id: I07e21b306f95fffd49345f7fa136cfdac61e0225\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": "1737b159374468a21859d97d8be70a726af0ec9e",
      "tree": "652d1b919ca6e2918d21e02f1749b83cbf1e92f5",
      "parents": [
        "8f3b8f523ed594b48d28ca0b9a2651d209f29e26",
        "a3ad450a2e3fb6b3fe359683b247eba20896f646"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Sep 04 00:59:22 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 04 00:59:23 2014 +0000"
      },
      "message": "Merge \"Load libraries in breadth-first order\""
    },
    {
      "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": "319356e39cc91b4eb94b1974756f1cfc0a137351",
      "tree": "46f795b8b441d965cc9495d415869dfb8864d4e6",
      "parents": [
        "ec95a9cf11f7c4d2211c61da7ce05262a54409d1"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Sep 02 17:31:44 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Sep 02 17:31:44 2014 -0700"
      },
      "message": "Add some missing dlclose(.)\n\nBug: 17358010\nChange-Id: I9e427b7681f1a8fe890b0b47812d9e65ab95c792\n"
    },
    {
      "commit": "57b7a6110e7e8b446fc23cce4765ff625ee0a105",
      "tree": "e2578675ae1435988a645a32182ced476f802ec5",
      "parents": [
        "a4a8c4feb8cf3cebf8aceace70e699e128095b5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 25 17:26:50 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 10:36:38 2014 -0700"
      },
      "message": "Fix pthread_getattr_np for the main thread.\n\nOn most architectures the kernel subtracts a random offset to the stack\npointer in create_elf_tables by calling arch_align_stack before writing\nthe auxval table and so on. On all but x86 this doesn\u0027t cause a problem\nbecause the random offset is less than a page, but on x86 it\u0027s up to two\npages. This means that our old technique of rounding the stack pointer\ndoesn\u0027t work. (Our old implementation of that technique was wrong too.)\n\nIt\u0027s also incorrect to assume that the main thread\u0027s stack base and size\nare constant. Likewise to assume that the main thread has a guard page.\nThe main thread is not like other threads.\n\nThis patch switches to reading /proc/self/maps (and checking RLIMIT_STACK)\nwhenever we\u0027re asked.\n\nBug: 17111575\nSigned-off-by: Fengwei Yin \u003cfengwei.yin@intel.com\u003e\nChange-Id: I1d4dbffe7bc7bda1d353c3a295dbf68d29f63158\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": "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": "f8846a45878faa9eb51fab3a2b347e9a36ecd250",
      "tree": "f9c3dcb48c8d435fa5c50ddbfeba28c84251c369",
      "parents": [
        "006e0770ffaa57d88f407fad8d9b78ea0efa9c6a"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 08 21:21:34 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 08 21:21:34 2014 -0700"
      },
      "message": "Add test for constructor function.\n\nChange-Id: I0ad26d617f00cdd6c2241d613be39a1d16918612\n"
    },
    {
      "commit": "ce0ba3c70634d5fe64b9a298d8a305d85bd1e6ac",
      "tree": "9b18b339106f894734697168f82901ad0ada90b7",
      "parents": [
        "4d299a2cf7880789e658f427196d1ca9fe02a9bc"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 01 19:09:49 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 01 19:13:01 2014 -0700"
      },
      "message": "Disable local/protected symbol test for lp64\n\n  * Static linker optimizes protected local symbol\n    out of existence, which leads to test failure.\n    Disabling it for now.\n\nChange-Id: I8de327e5073f98b64639f7a0bba3a273aa419884\n"
    },
    {
      "commit": "d06ee1d6db6165126161044fb662301bf9f04b3a",
      "tree": "bc8cd27a4b4b817033abbe32aa8ca59aa7bf49e9",
      "parents": [
        "105ef36c67baeebd2fd9c24b6140953afba4f160"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 01 17:17:46 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 01 17:17:46 2014 -0700"
      },
      "message": "Build all bionic test files -Werror and fix our one warning.\n\nChange-Id: I62bb0528fd1bcb9aa4c61e44c78158a592690fc7\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": "44adf93b8eddb3a7965a3e9abc189408a1f5a7ea",
      "tree": "93b2439f1276a00d2133cb7bfd56ec6c4bdf61c3",
      "parents": [
        "eea59ea21e04806fff48fdf4ad5ba117dcb0babb"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 22 09:49:24 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 22 10:06:32 2014 -0700"
      },
      "message": "Fix dlsym_failure NULL handle test\n\n * RTLD_DEFAULT !\u003d (void*)0 only for bionic32\n\nChange-Id: I3b3758835cf4085b0f899e2b62861591411aec13\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": "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": "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": "063525c61d24776094d76971f33920e2a2079530",
      "tree": "de279e25b05c43dbb06bc3ceb49f23bed3874377",
      "parents": [
        "a26dd781fe675cf94c62183da27622eb83ff6fa7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 11:19:57 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 11:19:57 2014 -0700"
      },
      "message": "Consistently use #if defined(__BIONIC__) in tests.\n\nI\u0027ve also switched some tests to be positive rather than negative,\nbecause !defined is slightly harder to reason about and there are\nonly two cases: bionic and glibc.\n\nChange-Id: I8d3ac40420ca5aead3e88c69cf293f267273c8ef\n"
    },
    {
      "commit": "7db180919c335287b201e859faa8ee0dbe281cde",
      "tree": "c01880b72bdcd67dfeae29644b782a525d4aa423",
      "parents": [
        "b69645248887ddb88517b07c1617d390fdce9c9f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 08 12:27:25 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 08 14:28:34 2014 -0700"
      },
      "message": "Test dlopen with symlinked .so files\n\nBug: 9741592\nChange-Id: I68c59d6f4e690136395c3dc3de13f99ce38de528\n"
    },
    {
      "commit": "2ed710976cb0ace31aab565c95a42d4e75623894",
      "tree": "d9d2356abcd86cf2249fd318f8bd48fb5fbf002f",
      "parents": [
        "6768c1ee510a8e93175b54e93cb583f009766eed"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 11 15:48:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 11 15:48:06 2013 -0800"
      },
      "message": "Add extra regression tests for an already-fixed dynamic linker bug.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d61799\nChange-Id: I84af68f8430a06e999297c2e57e06ecb45adf81e\n"
    },
    {
      "commit": "ebd506c69e12b6dcaf5be94cc8ed1b53af299f9f",
      "tree": "79913ebffdfcc7a4b20d78a477b9d69340d477f9",
      "parents": [
        "cc9b7456b66b7c7c218a9d1f00d7aef1f5ecf409"
      ],
      "author": {
        "name": "Sergey Melnikov",
        "email": "sergey.melnikov@intel.com",
        "time": "Thu Oct 31 18:02:12 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 31 15:06:20 2013 -0700"
      },
      "message": "Fix linker crashes during unknown symbol lookup\n\nIntegration of kernel VDSO into internal bionic data structures using\ncommon functions.\nFix for dl_iterate_phdr function: the function provides incorrect\naddress of object in case of nonzero virtual and base addresses.\nLocation in address space of a particular program header should be\ncalculated using the formula:  addr \u003d base_addr + virtual_addr.\n\nSigned-off-by: Sergey Melnikov \u003csergey.melnikov@intel.com\u003e\nChange-Id: Ie2ab4257fd456242aab8afed0bd5bd6b29e81d6d\n"
    },
    {
      "commit": "a43e906221a3e9c70a66118a8692cd46f77e144e",
      "tree": "1fd6b3a2cdd50c15291c991644dd295371712c35",
      "parents": [
        "7e22db037e6d9ab117bf5d50c7aca85fe74941a0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 14:18:22 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 14:44:36 2013 -0800"
      },
      "message": "Don\u0027t test GNU-style ELF hashes on MIPS.\n\nThe MIPS toolchain can\u0027t generate them because they\u0027re incompatible\nwith the MIPS ABI (which requires .dynsym match the GOT, while GNU-style\nrequires .dynsym to be sorted by hash code), so there\u0027s nothing to test.\n\nChange-Id: I2220f452fe6fe595ec1312544cc741dd390a36a5\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": "4c4b08a32eace878e4780ee340a57c43be950159",
      "tree": "aa349c2c944131991af7fcbcd91b1ab54c9c6b4e",
      "parents": [],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 11 17:18:58 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 11 17:18:58 2012 -0800"
      },
      "message": "Merge \"Fix \u003cendian.h\u003e and \u003csys/endian.h\u003e.\""
    }
  ]
}
