)]}'
{
  "log": [
    {
      "commit": "f9abbf69838bd8649d51fe3b8b6550fc14462757",
      "tree": "7187cf993ac1fd8e9ef586aa3089aebc055af72d",
      "parents": [
        "f45bc14d5497c30bd43e22d025e3b88812b2baa4"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Jul 06 12:17:14 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Jul 06 12:24:33 2017 +0200"
      },
      "message": "The ifdef check for AT_SYSINFO_EHDR is no longer needed\n\nAT_SYSINFO_EHDR is present in all architectures\n\nTest: make\nChange-Id: I0f4c115bb48e47ea156e7fca936960f5f10c618e\n"
    },
    {
      "commit": "705910094d07ddfc5a3b7a4baab58b0a94bcc691",
      "tree": "f503093f7f1675566233ac00bda745b8a9bcf714",
      "parents": [
        "82d746fb39465e78088aeb11a5dc178cf264d0c0"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Jun 27 16:23:45 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Jun 28 15:03:15 2017 -0700"
      },
      "message": "bionic: fix assorted static analyzer warnings\n\nWarnings:\n\nbionic/libc/bionic/fts.c:722:5: warning: Null passed to a callee that\nrequires a non-null 1st parameter\n\nbionic/libc/bionic/sched_cpualloc.c:34:25: warning: Result of \u0027malloc\u0027\nis converted to a pointer of type \u0027cpu_set_t\u0027, which is incompatible\nwith sizeof operand type \u0027unsigned long\u0027\n\nbionic/linker/linker_main.cpp:315:7: warning: Access to field \u0027e_type\u0027\nresults in a dereference of a null pointer (loaded from variable\n\u0027elf_hdr\u0027)\n\nbionic/linker/linker_main.cpp:493:66: warning: Access to field \u0027e_phoff\u0027\nresults in a dereference of a null pointer (loaded from variable\n\u0027elf_hdr\u0027)\n\nbionic/linker/linker_main.cpp:90:14: warning: Access to field \u0027next\u0027\nresults in a dereference of a null pointer (loaded from variable \u0027prev\u0027)\n\nBug: None\nTest: mma; analyzer warnings are gone. CtsBionicTestCases pass.\nChange-Id: I699a60c2c6f64c50b9ea06848a680c98a8abb44a\n"
    },
    {
      "commit": "9d97008a68826b46c3b012fbaca02c4ba69f71ae",
      "tree": "74ba8d03b0483a6e48da6d25b6d0b08941a202bc",
      "parents": [
        "b33accf799fc9b3c1e247c9c03d3d341839b55a2"
      ],
      "author": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Fri Jun 16 14:43:16 2017 +0900"
      },
      "committer": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Mon Jun 19 00:12:45 2017 +0000"
      },
      "message": "linker_config_test: allow search paths of systems without a vendor partition\n\nlinker_config#smoke and linker_config.asan_smoke are trying to find\npaths under the /vendor directory. If there is no vendor partition,\nthe real path of them is started with /system/vendor.\n\nThis CL allows those paths in the tests by getting the resolved paths\nfor systems without a vendor partition.\n\nBug: http://b/62562515\nTest: linker_config_test passes without a vendor partition.\nChange-Id: Id6d16ef623efd81ab9083c3e819da2ad22a28bf8\n"
    },
    {
      "commit": "cd510cbed9dc1e1b65b9d34676fdf6d85101f22c",
      "tree": "8546acbe8ef79aa92ea066249794a7229c21280e",
      "parents": [
        "6be65c135b1720353f0c2e472a5e01261a737cd1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 31 15:07:41 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 31 23:45:15 2017 +0000"
      },
      "message": "Make dl_iterate_phdr return correct name for first entry\n\nTest: bionic-unit-tests --gtest_filter\u003dlink*\nChange-Id: Ib3f1e0fbc76fed9a5f27ffdd9bbf847a3e8d3665\n"
    },
    {
      "commit": "4af220cfefa9fe8c5c166882bfbc6ca0dfc065c4",
      "tree": "5369208114e6e12ac67a0c1b21b98e53ccfbb122",
      "parents": [
        "81a5b6f5585c056a5fe6f05fab1e39824c23256b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 23 16:43:30 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 23 16:43:30 2017 -0700"
      },
      "message": "Remove obsolete __stack_chk_fail_local.\n\nClang doesn\u0027t use this.\n\nBug: N/A\nTest: x86 emulator builds and boots\nChange-Id: I2865c0d568a644f61f34bdea539daff5224896bc\n"
    },
    {
      "commit": "37b91af0f3590e577dfcef47899bca2c8f9aebf4",
      "tree": "b15cccfb4b2cb20bbdb8d0c70d7f94426e56d6a9",
      "parents": [
        "41192813232c1dbf5cb8989cd872e1a01c115245"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri May 05 22:07:05 2017 +0900"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 09 17:59:00 2017 -0700"
      },
      "message": "greylist is no longer enabled by default.\n\ngreylist is needed only for application namepaces. Since we started using\nlinker-namesapces for vendors and other platform apps linker should not\nenable greylist workaround by default.\n\nBug: http://b/37731053\nBug: https://issuetracker.google.com/38146125\nTest: sailfish builds and boots\nTest: bionic-unit-tests and linker-unit-tests pass\nChange-Id: Iee83db6fb1ae754f5ade18491321d9bca3b5ead4\n(cherry picked from commit e8ffe56a9c2bacc6bd880238250ad61e2bbb257b)\n"
    },
    {
      "commit": "5725481f1e4cb2e2042b5469b5863023556cf2dd",
      "tree": "30e2a7d6ecee026e0993af8da6954b40bc5c17e9",
      "parents": [
        "846924ae9583991a99a5924b2542c992d4bc094e",
        "7a3681e5b6c39bc2b3b62031ca5941dbf7bc4e63"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 17:43:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 17:43:35 2017 +0000"
      },
      "message": "Merge \"Move libc_log code into libasync_safe.\""
    },
    {
      "commit": "7a3681e5b6c39bc2b3b62031ca5941dbf7bc4e63",
      "tree": "78c25e2a38b7efed8db770a623a5cbfb7eaab11d",
      "parents": [
        "ca5e0f49ca5df873a20c996755175b5c9c1e2ed9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 24 17:48:32 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 08:50:43 2017 -0700"
      },
      "message": "Move libc_log code into libasync_safe.\n\nThis library is used by a number of different libraries in the system.\nMake it easy for platform libraries to use this library and create\nan actual exported include file.\n\nChange the names of the functions to reflect the new name of the library.\n\nRun clang_format on the async_safe_log.cpp file since the formatting is\nall over the place.\n\nBug: 31919199\n\nTest: Compiled for angler/bullhead, and booted.\nTest: Ran bionic unit tests.\nTest: Ran the malloc debug tests.\nChange-Id: I8071bf690c17b0ea3bc8dc5749cdd5b6ad58478a\n"
    },
    {
      "commit": "f1cb669a9cd31229cc3c486a1a405fad92fe5e1d",
      "tree": "8eeb45fdf477e714798efaec907e1d99548951b8",
      "parents": [
        "87a47e1bb202a26918993487db8dc82229833ef8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 01 17:45:38 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 02 16:42:28 2017 -0700"
      },
      "message": "Shared namespaces inherit parent ns properties\n\nMake shared namespace inherit namespace links and\nsearch/permitted paths from the parent namespace.\n\nBug: http://b/37854032\nTest: bionic_unit_tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I174661d4a1dd0cbe4a378179073719aa955f3592\n(cherry picked from commit ec43dd6c36d75014c4e4dc592dd67ab20033a76a)\n"
    },
    {
      "commit": "87a47e1bb202a26918993487db8dc82229833ef8",
      "tree": "8f06d30e39972f84ac8d255ced62559dc98acf45",
      "parents": [
        "fd478a8cba97680974494bc72727fba6d8136805",
        "01de74e76d1131b5c5b0120d07e8f468ac5f8fac"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 02 01:37:02 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 02 01:37:04 2017 +0000"
      },
      "message": "Merge \"linker: add android_get_exported_namespace\""
    },
    {
      "commit": "01de74e76d1131b5c5b0120d07e8f468ac5f8fac",
      "tree": "1cd468876895e1ed149efcde3382edeaddcdab31",
      "parents": [
        "627ed9162538d847ea4e530fd443570d37f57d65"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Apr 03 23:10:37 2017 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Apr 28 10:14:28 2017 +0900"
      },
      "message": "linker: add android_get_exported_namespace\n\nDepending on how ld.config.txt is configured, there can be multiple\nbuilt-in namespaces created by the linker from the beginning of a\nprocess. android_get_exported_namespace is a platform only API for\ngetting a handle (android_namespace_t*) to one of the built-in namespaces\nwith given name. The returned namespace can then be given to\nandroid_dlopen_ext in order to explicitly specify the target namespace\nwhere the library is searched and loaded from.\n\nNote that this function only returns \u0027exported\u0027 namespaces created via\nld.config.txt file. In order to export a namespace, the visible property\nshould be set to true:\n\nnamespace.\u003cname\u003e.visible \u003d true\n\nNamespaces are hidden by default. Hidden namespaces and namespaces\nthat are created programmatically, notably \u0027classloader-namespace\u0027,\naren\u0027t returned by this function.\n\nBug: 36851137\nTest: confirmed that namespaces created with ld.config.txt is retrieved.\nTest: linker-unit-tests passes\nMerged-in: I714b510fa24f77e42c3dfc4c827b3befa8bb2951\nChange-Id: I0d05fa7e0e116009edf8ea362ab46774bc617cbf\n(cherry picked from commit d7c4832e6a640be972017e85ab21e72950dfeddd)\n"
    },
    {
      "commit": "bf34ba364186fc1ffbeada28740640cb4498e7a0",
      "tree": "c26639a2a947bf1219eabe64af6d03a5bb316f86",
      "parents": [
        "e54e64bd605f74936e1b8b6f5bf525b77abba00d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 21 13:12:05 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 21 14:45:07 2017 -0700"
      },
      "message": "loader: enable loading libraries from tmpfs\n\nThis change adds two tests for dlopen from temporary files.\n1. One Uses memfd_create() can be used to load libraries directly\nfrom memory. This requires relaxing namespace accessibility check\nin order to make this work in isolated namespaces.\n2. Another checks that open with O_TMPFILE works.\n\nBug: http://b/37245203\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I3be1d7198ca17e7f1ba022a0d86c64d59a493506\n(cherry picked from commit bb8b22a087db32773f1a9cd3473061f3ad714afc)\n"
    },
    {
      "commit": "f2c6ad6338b7ea96fe7b64bffa28d5ed81a2f994",
      "tree": "768871a1c1811fce1fe351c033c6a2174be71bf8",
      "parents": [
        "ee1c45f88f5fcd1b1d43c325e0de366cc3d0ce36"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 21 10:25:56 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 21 19:52:21 2017 +0000"
      },
      "message": "Make the _Unwind_Ptr declaration match clang\u0027s.\n\nBug: https://issuetracker.google.com/37126620\nTest: builds, boots angler\nChange-Id: I7d4a9b998f2e5c4c7b0beed87807d7b76a564c5c\n"
    },
    {
      "commit": "72007ee68f507c0ab952a0b98888fc19473ba6f0",
      "tree": "4bdcac59ad9a945fa4eccf4c604fa04bb90bfe9a",
      "parents": [
        "0fc84517abe3082f201a340dafe20403613ddf94"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 19 17:44:57 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 19 17:49:43 2017 -0700"
      },
      "message": "Decode the common EM_ values.\n\nWe know what \"3\" and \"40\" are, but most folks not on our team don\u0027t.\n\nI don\u0027t think we need to support all the weird values, because only the\nsupported architectures actually occur in practice.\n\nBug: N/A\nTest: manually overwrote aarch64 libcrypto.so with an x86-64 .so and ran \"date\"\nTest: CANNOT LINK EXECUTABLE \"date\": \"/system/lib64/libcrypto.so\" has unexpected e_machine: 62 (EM_X86_64)\nChange-Id: Ic4c6325fe7968f0c96fc0bfe15a50ed922a5ba55\n"
    },
    {
      "commit": "295082b3af2042e52ce44aa75c90755ac97bc4aa",
      "tree": "eb4b692b942c5ea219fce9001b8234aad8486d3b",
      "parents": [
        "e8a328058d8562b544d65859ba539aa96404dc31"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 15 09:11:15 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 15 09:11:15 2017 -0700"
      },
      "message": "Avoid \"D linker  : (null)\" with debug.ld.all for dlerror.\n\nWe only want to know when dlerror is actually set. The previous change\nto this logic moved it so that we only show actual updates to dlerror,\nnot every string that might end up in dlerror\u0027s output. This change\nignores cases where we\u0027re _clearing_ dlerror (which happens on every\ncall to dlerror).\n\nBug: http://b/37287938\nTest: ran tests\nChange-Id: I0c30ee199dc76d9aea165c1d90f694ead488518b\n"
    },
    {
      "commit": "d3a07e84a7fdf08a4f68f4549cd2a815418ae746",
      "tree": "9edaeaab59e68463ca70425ba7c959517e40cab0",
      "parents": [
        "faf7f3542a1b7c850450df158072f021537f40c1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 11 15:22:49 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 12 10:37:31 2017 -0700"
      },
      "message": "The workaround for apps using older version of soinfos\n\nSkip the check for accessibility in the case soinfo\ndoes not have primary/secondary namespaces associated\nwith them.\n\nBug: http://b/37191433\nTest: start an app from http://b/37191433 make sure it does not crash on lunch\nChange-Id: Id4c0bdab4dfc6bc8a33fc275d71e325518e0759f\n(cherry picked from commit 97b4c5f2649db06661e45147f21a2ab26340ad89)\n"
    },
    {
      "commit": "f17048bfb8fdf9a0340dc44f55cba8fddd776577",
      "tree": "4d4d13f287bddcf6b262d2e257616d43bd6194f8",
      "parents": [
        "bdbab30e32fbae214ce880ef438cf72a623c6388",
        "763f6e108a95fc8eb43e65a626351690cd98227b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 11 06:07:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 11 06:07:07 2017 +0000"
      },
      "message": "Merge \"Send developers straight to the text relocation docs.\""
    },
    {
      "commit": "763f6e108a95fc8eb43e65a626351690cd98227b",
      "tree": "0be2dfd8b46af2637479230a7c31487085988dca",
      "parents": [
        "2d389ffee98b6f480f4340ec408d37457e02fbd7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 10 09:52:33 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 10 16:41:52 2017 -0700"
      },
      "message": "Send developers straight to the text relocation docs.\n\nIt\u0027s been years since we allowed text relocations, but I had a developer\nask me how to fix them at last week\u0027s O Developer Day. They\u0027d never seen\nour docs, so let\u0027s try to fix that for anyone else who\u0027s still confused...\n\nBug: N/A\nTest: builds\nChange-Id: I9202a7b0a3f024041b646c43c87585f4fab22d09\n"
    },
    {
      "commit": "c40af334c7f2e76c3a34824a17ea3803caedbd7d",
      "tree": "36caea25e52b7eb589adadee447207dc2e6dc56d",
      "parents": [
        "afb59c3e4267bf4bea73a30ea3b5bc09c5e4fb74",
        "b8ab61804cec48e4ca585f4508fb1b7c6c5a04c5"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Apr 06 22:41:02 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 06 22:41:02 2017 +0000"
      },
      "message": "Merge \"Move scopeguard into android::base\""
    },
    {
      "commit": "9e27e58faa6ff08efbe85fc62943d483ecfed61a",
      "tree": "0042c5148071c78240b2915f3f053ac82406402c",
      "parents": [
        "e06c69d07324f3da67aa063202e698dedd831365"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 23 17:42:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 06 10:59:24 2017 -0700"
      },
      "message": "Add support for disabling the greylist.\n\nUseful for testing whether apps have actually stopped using greylisted\nlibraries even if they still have references to them in their apk to support\nold Android releases but also haven\u0027t bumped their targetSdkVersion yet.\n\nSince we already have two expensive __system_property_get calls and this\nwould add a third, optimize two (but leave the third since it\u0027s not\nobviously amenable to optimization). None of this matters for user builds,\nbut I don\u0027t want userdebug/eng to have distractingly different performance.\n\n(cherrypick of 7933bec2872aa1c3430149c7649726333c0ac9d8.)\n\nBug: http://b/36106661\nTest: ran \"can you escape 5\" with and without this property\nChange-Id: Id9a804695c1dca9b4be2ebd0e72f01817bb13cba\n"
    },
    {
      "commit": "b8ab61804cec48e4ca585f4508fb1b7c6c5a04c5",
      "tree": "4a1045e4b9e30c52e6c3886de8474c0aeb2c8996",
      "parents": [
        "12021ce9cf1ec1bc47cded3402ac9a3aa7b9b396"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Apr 05 16:20:29 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Apr 05 16:37:07 2017 -0700"
      },
      "message": "Move scopeguard into android::base\n\nTest: boot bullhead, bionic unit tests\nChange-Id: I223249684867655ecb53713b10da41d3014f96ae\n"
    },
    {
      "commit": "6367f5ee5571c41581aefee42fcf4d4899813945",
      "tree": "358b2dfcbbdcd040a76e187e3b5dcea006a4d0e3",
      "parents": [
        "4df5ca1e0254790d41f945352a93f5c783ea8de0",
        "c17e5a465026e8f71b39ebd010ebe87b3be974d6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 20:33:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 03 20:33:18 2017 +0000"
      },
      "message": "Merge changes I826756d9,I00e2edb2\n\n* changes:\n  libc_logging: mention that they\u0027re async signal safe.\n  linker: update dependencies.\n"
    },
    {
      "commit": "6a2c7f5a68bf8a15287f9de1772bb48a359047a8",
      "tree": "87862ec8894932e9ae3213e40cac42289790851c",
      "parents": [
        "5d8b8310aaa43d7b8cb8809fdf805ba7f41df15e",
        "d3e7d088453e089b3d625b0864ccdf3c74893f18"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Apr 02 02:14:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Apr 02 02:14:47 2017 +0000"
      },
      "message": "Merge \"Fix lookup logic for linked namespaces\""
    },
    {
      "commit": "4113def4fa1526f1823549f6cc9cfe4c05964aa3",
      "tree": "9b5f0c6529739793c4c2b902953e6df1f7166257",
      "parents": [
        "ccec0f4c110a9f09bec995208e7cb252130835fe"
      ],
      "author": {
        "name": "Vishwath Mohan",
        "email": "vishwath@google.com",
        "time": "Wed Mar 29 15:31:34 2017 -0700"
      },
      "committer": {
        "name": "Vishwath Mohan",
        "email": "vishwath@google.com",
        "time": "Thu Mar 30 20:07:50 2017 -0700"
      },
      "message": "Refactor sanitized library on-disk layout - bionic.\n\nThis CL changes the linker to point to the newly refactored location\nof ASAN-ified libraries on disk.\n\nThis supports changes made by the following CLs -\nhttps://android-review.googlesource.com/#/c/359087/\nhttps://android-review.googlesource.com/#/c/359389/\n\nWhich refactor the on-disk location as follows:\n/data/lib* --\u003e /data/asan/system/lib*\n/data/vendor/* --\u003e /data/asan/vendor/*\n\nThere are a couple of advantages to this, including better isolation\nfrom other components, and more transparent linker renaming and\nSELinux policies.\n\nBug: 36574794\nBug: 36674745\nTest: m -j40 \u0026\u0026 SANITIZE_TARGET\u003d\"address\" m -j40 and the device\nboots. All sanitized libraries are correctly located in /data/asan/*.\n\nChange-Id: Iad8b298a66c38eb0f6327f6b51027f0728aa7a40\n"
    },
    {
      "commit": "d3e7d088453e089b3d625b0864ccdf3c74893f18",
      "tree": "0dac036e245c741b296a7fd611dbb98c3979c3a1",
      "parents": [
        "aa0b5054c52e10a9e4b5d5dd9daa90d707164af0"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 27 14:11:02 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 29 15:36:40 2017 -0700"
      },
      "message": "Fix lookup logic for linked namespaces\n\nWhen looking for already loaded libraries include\nlinked namespaces to the search, but check if\nthe library is accessible from the main namespace.\n\nBug: http://b/36008422\nBug: http://b/35417197\nBug: http://b/34052337\nBug: http://b/36660652\nBug: https://issuetracker.google.com/36636090\nTest: run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: Ic7c1d48114da3ca5dc6512ef03f595dd17b6ed17\n"
    },
    {
      "commit": "11968b80af5be601b820f261e2e102e5b8ed48c4",
      "tree": "43fccf544ab500f853576fc46c232d207b703d39",
      "parents": [
        "4b43140142c9569148f91d0dfc5b13994d55b698"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 28 11:08:58 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 28 11:15:47 2017 -0700"
      },
      "message": "linker: log only real dlerrors\n\nCurrently linker reports all potential dlerrors\nfor example if library was not found in \u0027this\u0027\nnamespace - it initializes linker error buffer\nwith not found message but when consequent\nsearch in linked namespace succeeds this message\nis droped because dlopen was successful.\n\nThis commit avoids logging false positive error\nmessages when debug.ld.* set to dlerror.\n\nTest: manual\nChange-Id: I480694a1b1bbacd6bd1d8505cd2ee491710964cc\n"
    },
    {
      "commit": "6b0f17e58822dcc19ed61cada3c6fc43b6b9b19e",
      "tree": "ab0df0d2c9ef0edb25f1b90ee8a778a30055fe16",
      "parents": [
        "840ae69408c9b6ca269bce4657b9696cc6720918",
        "c9dced28b6895edf6b80831d3a9bd5d5d13ee50c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 28 00:59:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 28 00:59:09 2017 +0000"
      },
      "message": "Merge \"Make anonymous namespace isoalted.\""
    },
    {
      "commit": "c9dced28b6895edf6b80831d3a9bd5d5d13ee50c",
      "tree": "f1a077fa5619592ab100d37d7c366741946175d9",
      "parents": [
        "e98d1e68ce37bb9238e3c50ea6b01d1057adb2eb"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 27 15:42:17 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 27 15:42:17 2017 -0700"
      },
      "message": "Make anonymous namespace isoalted.\n\nThis addresses outstanding todo for anonymous namespace\nand fixes an app compatibility bug.\n\nBug: http://b/36008422\nTest: start app from http://b/36008422 and make sure it runs\nChange-Id: Ie148418b944379ee1000e7274f2f6c1eca511d6c\n"
    },
    {
      "commit": "840ae69408c9b6ca269bce4657b9696cc6720918",
      "tree": "42e9b045fb69006a2a9ee1bf37e618878e3a3342",
      "parents": [
        "deca8effd089b7b3c97eec8a1fb5dcedb9c35ade",
        "a1446975005a3aeed6e90defa96eab938602b7c5"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Mar 25 07:46:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Mar 25 07:46:22 2017 +0000"
      },
      "message": "Merge \"Revert \"linker: add more directories to default lib paths\"\""
    },
    {
      "commit": "deca8effd089b7b3c97eec8a1fb5dcedb9c35ade",
      "tree": "e3f3c35c83a6e476d1d20c7d83274353b7bf07d3",
      "parents": [
        "fe96db819ba0254123f4960bc150ce2c104d3bc0",
        "4cabfaad340c957ff691cfbc420b29da805c5dd8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 25 05:17:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Mar 25 05:17:32 2017 +0000"
      },
      "message": "Merge \"Load namespace configuration from ld.config.txt\""
    },
    {
      "commit": "4cabfaad340c957ff691cfbc420b29da805c5dd8",
      "tree": "91df98d18f36ed19f857db91688c8b62f6f242de",
      "parents": [
        "e98d1e68ce37bb9238e3c50ea6b01d1057adb2eb"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 07 11:19:05 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 24 15:50:45 2017 -0700"
      },
      "message": "Load namespace configuration from ld.config.txt\n\nThis change allows customization of default namespace\nconfiguration for different executables. It also enables\ntarget_sdk_version setup for binaries (note that this\noption should explicitly be enabled in ld.config.txt).\n\nBug: http://b/30706810\nBug: http://b/30435785\nTest: run linker-unit-tests/bionic-unit-tests, boot angler\nChange-Id: Ibbe87209acf1538fc9cec04944f3d22a190c38f1\n"
    },
    {
      "commit": "ad8dcd6023294b646e5a8288c0ed431b0845da49",
      "tree": "32c063d018514fb9d22e6091a3a24afea6d08bac",
      "parents": [
        "58df5b2b8601fd8aebf3cda9cc81c30c3db40383",
        "9b1cc4bb9cd84c2a52b8183a418e9dbb41f59959"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 24 02:03:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 24 02:03:58 2017 +0000"
      },
      "message": "Merge \"loader: stop relying on AT_BASE\""
    },
    {
      "commit": "9b1cc4bb9cd84c2a52b8183a418e9dbb41f59959",
      "tree": "30c02abec3509a67589add48341d475c78e71f4e",
      "parents": [
        "e98d1e68ce37bb9238e3c50ea6b01d1057adb2eb"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 23 16:17:15 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 23 17:12:59 2017 -0700"
      },
      "message": "loader: stop relying on AT_BASE\n\nandroid loader should not rely on the fact\nthat AT_BASE is set because kernel currently\ndoes not set it when linker is run standalone\n(The linker does not have PT_INTERP set)\n\nThis commit replaces AT_BASE with calculated value.\n\nBug: http://b/30739481\nBug: http://b/35890756\nTest: run bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: Ic2eb73e4452624b1f2e05f46e99e4c17df0bbc3f\n"
    },
    {
      "commit": "6705e8caf55834112ec46ac95d5b08ce499abe20",
      "tree": "66be931fa44401e638e5edb4dbc444379579e400",
      "parents": [
        "e98d1e68ce37bb9238e3c50ea6b01d1057adb2eb"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 21 10:29:06 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 21 10:38:23 2017 -0700"
      },
      "message": "Add systrace output for dlclose/dlsym calls\n\nBug: http://b/27195126\nTest: manual: adb shell atrace -t 5 bionic\n      and run bionic-unit-tests --gtest_filter\u003ddl*\n\nChange-Id: I9e93a069dd440bb643890d9952913938442ac375\n"
    },
    {
      "commit": "5c4a58072fad88a2ab89cfe063dd217041491357",
      "tree": "814a5452c3dfd0a60ef1f02102461305a9958761",
      "parents": [
        "2a4a5e72f161699be75b247e6fcb3a9ac6d8a852"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 17 16:41:34 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 20 13:34:52 2017 -0700"
      },
      "message": "Add systrace output for dlopen calls\n\nBug: http://b/27195126\nTest: manual: adb shell atrace -t 5 bionic\n      and run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\n\nChange-Id: Ib2bad794e571b89bd1f52c9e0de642c2092e5c21\n"
    },
    {
      "commit": "a1446975005a3aeed6e90defa96eab938602b7c5",
      "tree": "4d6e702a032dfeb2bbe071f12ca614426323e432",
      "parents": [
        "1daa18e73714150e26c4380840c793e406c11095"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 17 00:08:23 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 17 00:08:23 2017 +0000"
      },
      "message": "Revert \"linker: add more directories to default lib paths\"\n\nThis reverts commit 1daa18e73714150e26c4380840c793e406c11095.\n\nTo be replaced with customized linker-namespaces for different kind of binaries.\n\nBug: http://b/34407260\nChange-Id: Ib4e480669bbdf44ee4f59bf05f07d3e082c348c9\nTest: m\n"
    },
    {
      "commit": "616b2d87eabee34559b12a3ddd3e057a1ad49879",
      "tree": "4adecc6f9a084544b1f362633bda40254cdc3fca",
      "parents": [
        "e5422d7d1f2cb1818126fe46af31c19e1c76b198",
        "2a6d9b25437c42fd3e0284a6e7a607c842f59fe0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 14 00:58:14 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 14 00:58:16 2017 +0000"
      },
      "message": "Merge \"Extract format_string function.\""
    },
    {
      "commit": "e5422d7d1f2cb1818126fe46af31c19e1c76b198",
      "tree": "a24f107a89d17c759154368beeaee94319061bc6",
      "parents": [
        "b1fe870a36d95f3064e45ff6bfedd061a860a179",
        "1daa18e73714150e26c4380840c793e406c11095"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 14 00:15:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 14 00:15:50 2017 +0000"
      },
      "message": "Merge \"linker: add more directories to default lib paths\""
    },
    {
      "commit": "2a6d9b25437c42fd3e0284a6e7a607c842f59fe0",
      "tree": "b1154afd67ab484cd468e2c3dcb9d7960878d383",
      "parents": [
        "b3473f20db82fdc16b1c2dc8b51249277de399ca"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Mar 11 14:35:38 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 13 16:25:51 2017 -0700"
      },
      "message": "Extract format_string function.\n\nExtract format_string function and add a test.\n\nTest: run linker-unit-tests\nChange-Id: I794a29aaf62e184438ce1a9224b88aa0586c17b5\n"
    },
    {
      "commit": "5b715003011e6b108faa5d651ed370e6a2157efa",
      "tree": "0958bee2bf2b45ccc00fc2017b6e84fdf3c4473b",
      "parents": [
        "cf96f35dd16fdefbcb91598cdee1f6e097bb4a56"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Oct 03 15:09:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 13 10:04:36 2017 -0700"
      },
      "message": "Apply ASan linker path translation to subdirectories.\n\nSpecifically, this change would translate /system/lib/hw/foo.so to /data/lib/hw/foo.so.\n\nBug: 30320104\nTest: in SANITIZE_TARGET\u003daddress build, /proc/$PID/maps for\n  system_server show libraries from /data/lib64/hw and not from\n  /system/lib64/hw.\nChange-Id: Ia1fa22fa1ca088fe76e41308762efe037541fc74\n"
    },
    {
      "commit": "1daa18e73714150e26c4380840c793e406c11095",
      "tree": "3f754c399c90be73ac6489a2275489a1a8875726",
      "parents": [
        "6e528631d1eb4779dc93098c696c3a18e6bcecfb"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Jan 31 17:32:46 2017 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Mar 13 08:55:23 2017 +0900"
      },
      "message": "linker: add more directories to default lib paths\n\nDue to b/33681361, libraries are now installed to different paths than\nbefore. In order for linker to load libraries from the new paths, the\ndefault lib paths are updated.\n\nHowever, this patch is temporary; different paths must be used depending\non whether the process is executing vendor executable or framework\nexecutable. For example, vendor executable should not be able to access\n/system/lib/, which is for framework-internal libs. Similarly,\nframework executables should not be able to access /vendor/lib.\n\nWe have several solutions (linker namespace and DT_RUNPATH) to support\nthe scenario, but haven\u0027t concluded which is better. Furthermore, if we\nrestrict the search path right now, it will break many parts of Android\nthat are not yet prepared for the restriction. So, until then, we\ntemporarily use the single search path for both framework/vendor\nexecutables.\n\nTest: build \u0026 run\nChange-Id: I806e9b4379bce96653b1dd3354b9f4801abb0411\n"
    },
    {
      "commit": "222272ece93d35dbb4eb76076f29bbe719bf5c93",
      "tree": "86afe768d56e72bf0f7b7cd2c6700e8e5221082c",
      "parents": [
        "415daa8cca875d348c003a95cf7c44c9231eae75"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Mar 06 17:46:47 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 08 16:43:59 2017 -0800"
      },
      "message": "linker_memory: allow fallback allocator to be turned on and off.\n\nLet the fallback allocator be used on multiple threads (as long as only\none thread is using it at once).\n\nBug: http://b/35858739\nChange-Id: Id3e2fc6b7c093c6e56870524ffda28946de09e29\n"
    },
    {
      "commit": "69a5939eaef7b1a39a95f993a04ce6944b33c513",
      "tree": "497e566bcfaa9893b3349c0df5918fa6a1a9fd6b",
      "parents": [
        "222272ece93d35dbb4eb76076f29bbe719bf5c93"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 07 13:33:51 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 08 16:43:59 2017 -0800"
      },
      "message": "linker: update dependencies.\n\nRemove dependencies that are now linked directly into\nlibdebuggerd_handler_fallback via whole_static_libraries.\n\nTest: m\nChange-Id: I00e2edb2778c2986c533f97708252aa0996d0498\n"
    },
    {
      "commit": "3e0821d7c227060b83917c9071dc846851b3c7c8",
      "tree": "c6071953584df47e957d150c14526cfb5a979541",
      "parents": [
        "77ad64267c65fe876f27265ee91063810f5fe71a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 07 11:02:10 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 07 11:02:10 2017 -0800"
      },
      "message": "loader: anonymous ns initialization is not required\n\nAnonymous namesapce is zygote-specific workaround and\nis not really required for other binaries.\n\nThis change allows creating namespaces without initializing\nanonymous namespace.\n\nTest: bionic-unit-tests\nChange-Id: I62adc39ad69ce56b3760d36f45e3c0487c438598\n"
    },
    {
      "commit": "77ad64267c65fe876f27265ee91063810f5fe71a",
      "tree": "110f5fb24301524b9b4a49c6425429106602186c",
      "parents": [
        "cdf19c84e8c10f5afa079790e5a2b0a55a3599e9"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 06 13:02:29 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 06 13:02:29 2017 -0800"
      },
      "message": "Remove g_default_ld_paths global variable\n\nTest: boot, run bionic-unit-tests\nChange-Id: Id05d53475cbea6d62bd5fa1ab5e457ac82bab523\n"
    },
    {
      "commit": "35c8e3b1251af62897a9babd693e2b1be5676160",
      "tree": "3cc1d7cfe239740c04f29d35058048bea7b47c9f",
      "parents": [
        "5f41ce25c60df2012b58846940dfac58dce50e59"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 27 12:17:47 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 27 14:16:04 2017 -0800"
      },
      "message": "Fix greylist exception to account for linked namespaces\n\nDo not load second copy of libraries that are supposed to\nbe provided by linked namespaces. Also do not print\nerror in the log if caller tries to open shared library\nusing absolute path for apps targeting N+.\n\nBug: http://b/35454141\nBug: http://b/26833548\nBug: http://b/35338922\nTest: run bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: Icf3aeedff18d287d2ba0b3df3808b100f3ef5f7a\n"
    },
    {
      "commit": "0b87362f5387f72a40357c1c94b7bb7eed48f249",
      "tree": "a01de299412b73873f92ee40e8efd8a17c896985",
      "parents": [
        "3246b9d8aece17ff0fd75320e60d1bdbfe56af2c",
        "2a6955e040f24b31a2dfe829f47e35ac91733489"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 25 02:24:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 25 02:24:28 2017 +0000"
      },
      "message": "Merge \"loader: set PT_INTERP to itself\""
    },
    {
      "commit": "2a6955e040f24b31a2dfe829f47e35ac91733489",
      "tree": "e91c30cf688ab2fd0d55546042d3496f489db7de",
      "parents": [
        "5927b04ce7d9d4727a4a644f8af4040b8dab5d0a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 23 11:53:43 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 24 16:56:38 2017 -0800"
      },
      "message": "loader: set PT_INTERP to itself\n\nSome versions of kernel set AT_BASE to 0\nif dynamic loader does not have PT_INTERP\nset.\n\nBug: http://b/30739481\nTest: run /system/bin/linker64 and /system/bin/linker\nChange-Id: I1b67777166fe917d3ee1a97277045ca6f5db0084\n"
    },
    {
      "commit": "6391e1a44d4a183cb1fc092fc62c4e30f59429c5",
      "tree": "95d7fc5c55a2310babc87890d15f6f32c5edbcfd",
      "parents": [
        "5927b04ce7d9d4727a4a644f8af4040b8dab5d0a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 23 17:57:14 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 24 14:00:04 2017 -0800"
      },
      "message": "libc: __system_property_set uses writev to write atomically\n\n__system_property_set sometimes produces broken_pipe error\nwhen trying to write a property.\n\nThis change improves error messages and uses writev() instead\nof sequence of send() calls.\n\nBug: http://b/35381074\nTest: bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I7a5b169c015db4e6b720370e58662de8206d1086\n"
    },
    {
      "commit": "c84e8a507cd0384f9124d06ec6cc70807b4c293b",
      "tree": "06886443d9cd3f22d94a2b5593dcc6044568a4d2",
      "parents": [
        "7009f40e52dfb79db2a93ba2cc369b189238cd32",
        "30a36273ab761fb07892f7816b4873b6c48a0cea"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 23 03:29:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 23 03:29:43 2017 +0000"
      },
      "message": "Merge \"Cope with argv[0] being null in the dynamic linker.\""
    },
    {
      "commit": "30a36273ab761fb07892f7816b4873b6c48a0cea",
      "tree": "98b9470ffdf08c56244bb66f2e595d8fda498ede",
      "parents": [
        "c9a840ac76c7cdbe6028ac91cdb8eb6698f0a854"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 22 17:31:41 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 22 17:37:52 2017 -0800"
      },
      "message": "Cope with argv[0] being null in the dynamic linker.\n\nSomewhat unsurprisingly, very few commands are happy to be run like this,\nin particular multiplexed commands like toybox. But that\u0027s no reason for\nthe linker to get in the way too.\n\nBug: http://b/33276926\nTest: new test\nChange-Id: I6dd71ea0183f4da83571039c2198ebb6ed38520e\n"
    },
    {
      "commit": "5e2285d3ccdbb64a49ad2e5e521f50c897a3954d",
      "tree": "cd56c251f1710652fad3b84121248a12071b42e0",
      "parents": [
        "c9a840ac76c7cdbe6028ac91cdb8eb6698f0a854"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 22 12:19:05 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 22 16:05:03 2017 -0800"
      },
      "message": "Allocate thread local buffers in __init_tls.\n\nThread local buffers were using pthread_setspecific for storage with\nlazy initialization. pthread_setspecific shares TLS slots between the\nlinker and libc.so, so thread local buffers being initialized in a\ndifferent order between libc.so and the linker meant that bad things\nwould happen (manifesting as snprintf not working because the\nlocale was mangled)\n\nBug: http://b/20464031\nTest: /data/nativetest64/bionic-unit-tests/bionic-unit-tests\n      everything passes\nTest: /data/nativetest/bionic-unit-tests/bionic-unit-tests\n      thread_local tests are failing both before and after (KUSER_HELPERS?)\nTest: /data/nativetest64/bionic-unit-tests-static/bionic-unit-tests-static\n      no additional failures\nChange-Id: I9f445a77c6e86979f3fa49c4a5feecf6ec2b0c3f\n"
    },
    {
      "commit": "bc645ef068018626ac9132cd355da08c1bb18b49",
      "tree": "7473af771ed5908a5eb51708c73015b56fcf859c",
      "parents": [
        "ff3197bcc24b0e3429e9a8cb032d5a9773afe3e1",
        "fbe54c4fe8c35294d60efbe0d1d6466211d4dc40"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 18 00:50:47 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 18 00:50:47 2017 +0000"
      },
      "message": "Merge \"Fix debug.ld for apps with long names and services\""
    },
    {
      "commit": "fbe54c4fe8c35294d60efbe0d1d6466211d4dc40",
      "tree": "8907096bc43e2620b552ffefac25185607181d09",
      "parents": [
        "fec0e015ce0369b3ad710547f3d6af343b2cd5e1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 17 14:41:30 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 17 14:57:34 2017 -0800"
      },
      "message": "Fix debug.ld for apps with long names and services\n\n1. There is no longer limit on property names - remove\n   the trimming the name of the property.\n2. Make debug.ld work for processes with names ending with \":something\"\n   This is naming convention for services:\n   https://developer.android.com/guide/components/services.html\n\nBug: http://b/35338922\nBug: http://b/33926793\nTest: manual - set ld.debug.app property for the app\nTest: from http://b/35338922 and see that it works\nTest: for the service as well.\nChange-Id: Ic7c6d4edce4a5a22f144496d5c0a3e458217c6e4\n"
    },
    {
      "commit": "4509e0ec94b6310d13b9f06a122ec66acb224a10",
      "tree": "230961212a119ac9a07e30e9d668d4deaf883208",
      "parents": [
        "fec0e015ce0369b3ad710547f3d6af343b2cd5e1",
        "ec0dbc3782c009329a6cbe9013d34c4423fc0f3b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Feb 16 23:11:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 16 23:11:52 2017 +0000"
      },
      "message": "Merge changes from topic \u0027debuggerd_inproc\u0027\n\n* changes:\n  linker: use fallback crash handler dumping.\n  linker: add android_use_fallback_allocator.\n"
    },
    {
      "commit": "ec0dbc3782c009329a6cbe9013d34c4423fc0f3b",
      "tree": "9fd613eb2c44ff8f9dfab0cbeba0d87f653e60de",
      "parents": [
        "9ccccc1a952c7abc99f5d912878b751d114c99bd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 08 17:27:20 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 15 17:00:31 2017 -0800"
      },
      "message": "linker: use fallback crash handler dumping.\n\nBug: http://b/34684590\nTest: mma\nChange-Id: I0801a83768f172308339ab2118e492b5df96acd0\n"
    },
    {
      "commit": "9ccccc1a952c7abc99f5d912878b751d114c99bd",
      "tree": "9d5016c3cd885a036cf34b868a035d920f8e549a",
      "parents": [
        "273991ceadac558ba3bca5238d81833a7b34cb2d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Feb 09 10:54:44 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 15 17:00:16 2017 -0800"
      },
      "message": "linker: add android_use_fallback_allocator.\n\nAdd a function to enable a fallback allocator to use for crash handling\nin a signal handler.\n\nBug: http://b/34684590\nTest: crasher PR_SET_NO_NEW_PRIVS\nChange-Id: Ifa5de636164f34b8cb2fdec4471c20f8516b6dbe\n"
    },
    {
      "commit": "bcc4da9b752f0def46d63ed7b31f3f49cc2435ad",
      "tree": "b4e59da798a4f613507a79072eabbaaa995fa447",
      "parents": [
        "606ba2762e6d1062a2cbf4599b7bdb60ce5cc404"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 15 15:31:13 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 15 15:35:33 2017 -0800"
      },
      "message": "Unify linker files under one license (BSD)\n\nHistorically we had part of the linker licensed under BSD and\nanother part under Apache 2 license. This commit makes all the\nlinker code licensed under BSD license.\n\nTest: m\nChange-Id: I11b8163ae75966b5768d3fe992679de376106515\n"
    },
    {
      "commit": "3b236ae2947e9782403cf35046f1eb04be456ac9",
      "tree": "2a2b3be0873917c35955c6b6fa85787cf83f11c3",
      "parents": [
        "2cb4dfbb8c71ccc7890ecfd792790d7f6842b5a8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 13 10:49:40 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 13 11:25:49 2017 -0800"
      },
      "message": "Do not use std::vector in android_namespace_t::is_accessible\n\nAvoid constructing vector and walking all the parents of a soinfo\nto check if it is accessible. The most likely scenario that the\nvery first check returns true.\n\nBug: http://b/35313368\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I06c65cf61ed1c30e5e454a169de4c41038863587\n"
    },
    {
      "commit": "2cb4dfbb8c71ccc7890ecfd792790d7f6842b5a8",
      "tree": "720378e423a3c702358bb4341f93e8e9517d625f",
      "parents": [
        "c9fb1774c5696d4565042ee80df4cc721dd33153",
        "7a34b9d57a762ca7cd6b8d6b9f9fb45c2b991da7"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Feb 11 19:26:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 11 19:26:49 2017 +0000"
      },
      "message": "Merge \"Replace public library list with shared lib sonames (part 2/2)\""
    },
    {
      "commit": "ec90e24d33837e107b45e7c98b2f5fb4bc115a5e",
      "tree": "da59fda3b0eac92d43fe86dc457506a11382953c",
      "parents": [
        "132768084e24119c337e56fd110b97a23e5593c2"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 10 11:04:20 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 10 16:11:51 2017 -0800"
      },
      "message": "loader: fix d-tor call order\n\nIn the case when there are multiple dependencies on\nthe same library in the local_group the unload may\nin some situations (covered now by tests) result\ncalling d-tors for some libraries prematurely.\n\nIn order to have correct call order loader checks if this\nis last dependency in local group before adding it to BFS\nqueue.\n\nBug: http://b/35201832\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nTest: bionic-unit-tests-glibc --gtest_filter\u003ddl*\nChange-Id: I4c6955b9032acc7147a51d9f09b61d9e0818700c\n"
    },
    {
      "commit": "7a34b9d57a762ca7cd6b8d6b9f9fb45c2b991da7",
      "tree": "8dad357eee8d7672069abd75a63717d65b5f8ae6",
      "parents": [
        "7d429d3c480166e1013bcdf68f4be479209aa509"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 03 14:07:34 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 09 23:26:44 2017 -0800"
      },
      "message": "Replace public library list with shared lib sonames (part 2/2)\n\nThis commit updates interface of libdl.c.\n\n1. android_init_namespaces is replaces with android_init_anonymous_namespace\n2. added 2 arguments to android_create_namespace to specify linked namespace\n   and the list of shared libraries sonames.\n3. symbol lookup does not get past boundary libraries (added check and test for it).\n\nBug: http://b/26833548\nBug: http://b/21879602\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I32921da487a02e5bd0d2fc528904d1228394bfb9\n"
    },
    {
      "commit": "7d429d3c480166e1013bcdf68f4be479209aa509",
      "tree": "8aa0ee9551134cd88bc89ebdbc40e0f398f50971",
      "parents": [
        "e86a8d605b3df0c396e23ee02933c76d7040a73b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 15:28:52 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 09 23:26:44 2017 -0800"
      },
      "message": "Replace public library list with shared lib sonames (part 1/2)\n\nReplace public library list with shared lib sonames\nwhich are property of a link between namespaces\n\nThis change does not touch any external interfaces\nso from outside it behaves almost as it was before\n\nOne significant difference is that there is no longer\nneed to preload public libraries.\n\nBug: http://b/26833548\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I57e44e18a9b4f07dcd6556436346be52f52b79d7\n"
    },
    {
      "commit": "8cbe97de7fcd4a1e7ac5957da49cefcf188fdd47",
      "tree": "b2719800cc25e8fdb2c1c75964eb525915366467",
      "parents": [
        "2bfb8c9180603bac97dca2d8e359f71bb11f7126"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 09 15:53:54 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 09 15:53:54 2017 -0800"
      },
      "message": "Remove unnecessary memsets in linker allocators\n\nTest: linker-unit-tests\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I96f983dba77c9cb5698a9eb2e51b33bc128c6dd7\n"
    },
    {
      "commit": "9886ea3e2d8cfd824f271d38e93dd46fe1d23840",
      "tree": "64bb80a40bb21281565ff5f9284488f15c40e981",
      "parents": [
        "33ae5a97f234fab6a6d00ca463b82d30f7b82898",
        "68ecec1965dcec08c7df3f0224d69604c683cd6c"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Feb 03 01:47:14 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 03 01:47:15 2017 +0000"
      },
      "message": "Merge \"Fix CFI initialization crash on x86.\""
    },
    {
      "commit": "68ecec1965dcec08c7df3f0224d69604c683cd6c",
      "tree": "13d1842c2a6d22a8818f9d24d4f49273cfda5e3c",
      "parents": [
        "3c838bbb4aca12936aa3d8e96f3b04af3803d0f4"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 13:19:30 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Feb 02 14:44:46 2017 -0800"
      },
      "message": "Fix CFI initialization crash on x86.\n\nThird try.\n\nBug: 34752378\nTest: bionic tests\nChange-Id: I247c127489a8ee38404e104f28d916a704e35f36\n"
    },
    {
      "commit": "1fedfedda8a2b75ed56669e28265f943312ec22f",
      "tree": "4cc5a97d4d772a9dfe5c94a08414d9493d525bba",
      "parents": [
        "118b198af693c097a172d9387cc05075f2f0c632",
        "95e2e6f6204ea02de9e0dad9bd274e3c5d51a88c"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Feb 01 23:38:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 01 23:38:34 2017 +0000"
      },
      "message": "Merge \"Exit failure if trying to load non-PIE.\""
    },
    {
      "commit": "68e6c03081688635c4e0d75b7c4c5afd37ae04f2",
      "tree": "2d2683664e4935b93a6cdbd0d0d626eff6aca345",
      "parents": [
        "3c838bbb4aca12936aa3d8e96f3b04af3803d0f4"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 12:55:11 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 12:55:11 2017 -0800"
      },
      "message": "Check overflows in c-tor instead of doing it in d-tor\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: Id3b17a79732155b4e469c43c764afef1dfc59057\n"
    },
    {
      "commit": "3bd906146be88fb82ee4a93d06ff389a559155a7",
      "tree": "f4968eca30e92469d910a604815f1078e23ed4b0",
      "parents": [
        "b88112dcfc7954f001e722bb274b110e253dae6e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 08:54:43 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 01 09:43:09 2017 -0800"
      },
      "message": "Do not load second copy of a library into same namespace\n\nThis workaround was introduced in M in order to make sure\nthat linker loads libraries provided in apk in case a library\nwith the same name was loaded by the system.\n\nThis is no longer a problem starting with Android N because\napp is using different namespace and therefore does not see\nlibraries loaded by the system.\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I9995258c0f361e8df35420682b84e85a0cb924b4\n"
    },
    {
      "commit": "beb3eb1790dffc6e2f57a670aec89364944f66c4",
      "tree": "833fc173575d6617e7051fbd126e98fde1c80700",
      "parents": [
        "dd76f744e7a8431eb105f1e94fd1e407690a0b89"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 17:10:03 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 17:10:03 2017 -0800"
      },
      "message": "Revert \"Fix CFI initialization crash on x86.\"\n\nBreaks aosp-master/sdk.\n\nThis reverts commit 4ccd4317f9301ec9b32aa0d3317a0439b994d7bf.\n"
    },
    {
      "commit": "95e2e6f6204ea02de9e0dad9bd274e3c5d51a88c",
      "tree": "e24508d0f082aff47ffe3c51e5d63b84379d1e36",
      "parents": [
        "eb35144e588dc3799b851b8504b0a7db6c9a0b91"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jan 31 16:02:43 2017 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jan 31 16:02:43 2017 -0800"
      },
      "message": "Exit failure if trying to load non-PIE.\n\nAmazingly this was actually breaking the NDK\u0027s ability to build\nlibstdc++ for x86.\n\nTest: mma\nBug: None\nChange-Id: Iafa55c31fdeb35caca7d7d7a39a3e7afa0713557\n"
    },
    {
      "commit": "4ccd4317f9301ec9b32aa0d3317a0439b994d7bf",
      "tree": "10061ae5eae47aa226dbfc15658c1d44b9456884",
      "parents": [
        "eb35144e588dc3799b851b8504b0a7db6c9a0b91"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 13:19:30 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 31 13:44:55 2017 -0800"
      },
      "message": "Fix CFI initialization crash on x86.\n\nSecond try.\n\nBug: 34752378\nTest: bionic tests\nChange-Id: I0a7453154671918b2e6e72f0bb9074c29ceb0f34\n"
    },
    {
      "commit": "6fcd7a7d28aa6be42bbc99070c93d4d16b56ab57",
      "tree": "0daa51584f72beb67cbe072f34ca67898212f381",
      "parents": [
        "a5066640cc7274e317bf3bae2d960986d58dbbbd"
      ],
      "author": {
        "name": "Alex Cheung",
        "email": "alexcheung@google.com",
        "time": "Tue Jan 31 04:05:00 2017 +0000"
      },
      "committer": {
        "name": "Alex Cheung",
        "email": "alexcheung@google.com",
        "time": "Tue Jan 31 04:19:50 2017 +0000"
      },
      "message": "Revert \"Fix CFI initialization crash on x86.\"\n\nThis reverts commit be46d3871c91902504e5ec4c7f575c86f647aafc.\n\nReverting due to broken build:\n\nhttps://android-build.googleplex.com/builds/branch-dashboard/aosp-master?build_id\u003d3687823\n\nChange-Id: I30968398edd9a094fce878839ba0a002ed487a77\n"
    },
    {
      "commit": "be46d3871c91902504e5ec4c7f575c86f647aafc",
      "tree": "d202c0a4817459b1f6d5b971284b9afa2a9f795d",
      "parents": [
        "6a9e0c8f15dee1b1b7c5cd7f8e058c2b18683bbc"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jan 27 13:42:03 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Jan 30 14:29:48 2017 -0800"
      },
      "message": "Fix CFI initialization crash on x86.\n\nBug: 34752378\nTest: bionic tests\nChange-Id: If8e33f76a1a2d83356d818fed506ea624f579860\n"
    },
    {
      "commit": "451909da3159acc34a136262efdc80ae44bacb62",
      "tree": "1ff67d3af090a75592f7192d50d53388b8e9e287",
      "parents": [
        "577a944200e445f806964b7fb5dbd38633f4ae07"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 26 16:52:59 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 26 17:08:01 2017 -0800"
      },
      "message": "Remove dependency on libc.a from the linker\n\nProvide stub for unused but needed symbol __find_icu_symbol\nwhich is not included to libc_nomalloc.a.\n\nTest: mm and boot\nChange-Id: I57ca09c990556d1d401e2f4a75bc49b61b4cd85d\n"
    },
    {
      "commit": "636a2ecfbc00e1403fba0d8baf1c6c10425fde6e",
      "tree": "8fce4924987083acecc714af5260fead5b0a47c4",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jan 20 13:47:04 2017 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jan 20 14:23:20 2017 -0800"
      },
      "message": "[cfi] Handle large libraries correctly.\n\nFallback to unchecked if the shadow offset overflows int16_t.\nThis may happen when a library\u0027s data segment is larger than 256MB.\n\nAlso updated some comments.\n\nBug: 22033465\nTest: bionic device tests\n\nChange-Id: I8eef42f75099f24aed566499ff1731a0bbf01ff3\n"
    },
    {
      "commit": "082bec5b419806d694f9a7d0283b2f831d52eea4",
      "tree": "4902863a691f86e4e5236344d11ef172d2f8a2c5",
      "parents": [
        "2d261e8e9e1340151698086e8434f312a73f77f0",
        "0a3637d3eb2424d8e825ad1825f843450a888406"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 18 23:39:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 23:39:08 2017 +0000"
      },
      "message": "Merge \"Runtime support for CFI\""
    },
    {
      "commit": "0a3637d3eb2424d8e825ad1825f843450a888406",
      "tree": "dc0d4c31cddc2ff06902fcbdf4233f7759258764",
      "parents": [
        "1b2975d54b9c17ced29883aef24490773a4a9fe6"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jul 06 13:20:59 2016 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 18 13:13:52 2017 -0800"
      },
      "message": "Runtime support for CFI\n\nControl Flow Integrity support in bionic.\n\nGeneral design:\nhttp://clang.llvm.org/docs/ControlFlowIntegrityDesign.html#shared-library-support\n\nThis CL implements subsections \"CFI Shadow\" and \"CFI_SlowPath\" in the above document.\n\nBug: 22033465\nTest: bionic device tests\nChange-Id: I14dfea630de468eb5620e7f55f92b1397ba06217\n"
    },
    {
      "commit": "2a3b4fa6ec9ab3d4604860b0bdd3766c9f5c44f4",
      "tree": "0e94f5fec708d835d1be78e6a28c10ab39882e3b",
      "parents": [
        "f8a6d4745daafb6aced5cdeb76325c719ca1374b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 26 17:55:49 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 17 15:11:46 2017 -0800"
      },
      "message": "Rename libdebuggerd_client to libdebuggerd_handler.\n\nBug: http://b/30705528\nTest: debuggerd_test\nChange-Id: I625a9a2e7304d172873ba9344b74efa57ad7bdad\n"
    },
    {
      "commit": "ab2c5752c38130732d4d199ffd528b931445c5ea",
      "tree": "e96474267a790c5c82b0b375279fa036630eef5e",
      "parents": [
        "37f1d11482a6ac26ea201264c77d905336a02d18"
      ],
      "author": {
        "name": "Park Ju Hyung",
        "email": "qkrwngud825@gmail.com",
        "time": "Fri Jan 13 05:52:06 2017 +0900"
      },
      "committer": {
        "name": "Alex Naidis",
        "email": "alex.naidis@linux.com",
        "time": "Sat Jan 14 14:40:07 2017 +0000"
      },
      "message": "linker: convert \u0027mov pc\u0027 instruction to \u0027bx\u0027\n\nFrom Linux 3.17 6ebbf2ce437b33022d30badd49dc94d33ecfa498:\n\n    ARMv6 and greater introduced a new instruction (\"bx\") which can be used\n    to return from function calls.  Recent CPUs perform better when the\n    \"bx lr\" instruction is used rather than the \"mov pc, lr\" instruction,\n    and this sequence is strongly recommended to be used by the ARM\n    architecture manual (section A.4.1.1).\n\nSigned-off-by: Park Ju Hyung \u003cqkrwngud825@gmail.com\u003e\n\nTest: No regressions detected\nTest: Passes full CTS run\n\nChange-Id: Ie268f9893e3df0f68fbfe82a13f3c7cc5c5909d8\nSigned-off-by: Alex Naidis \u003calex.naidis@linux.com\u003e\n"
    },
    {
      "commit": "607d307b1f4562219393dea3cbc6ea47b46f1650",
      "tree": "bc912ad3e55a74dbc1938c18e4bd701d8990fce7",
      "parents": [
        "71952ef625b953d78547da28d7271ea71cb91c92"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 09 14:39:44 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 09 14:44:28 2017 -0800"
      },
      "message": "Dynamic linker errors should go to stderr.\n\nAlso add the missing \\n to the end of the error.\n\nAddresses review comment.\n\nBug: N/A\nTest: manual\nChange-Id: I7c997a71e6e02381d21ac762595ba90370db9d05\n"
    },
    {
      "commit": "3bdb31b51b353d12e482d28d6ffe115944f8819e",
      "tree": "de5bab575b8b24dcb183784862a5fdc6fc4c1791",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 07 10:38:20 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 07 10:38:20 2017 -0800"
      },
      "message": "Exit rather than abort if asked to run a non-PIE executable.\n\nEach release we\u0027re asked to investigate tombstones from code that hasn\u0027t\nbeen allowed to run on Android since L. This is just wasting our time,\nand clearly the \"obviousness\" of aborting rather than exiting hasn\u0027t ensured\nthat all app developers rebuild their old binaries. In some cases it seems\nlike they run them \"just in case\" and don\u0027t care if they fail.\n\nBug: http://b/34112178\nTest: ran libsupervisor.so from com.ss.android.article.news\nChange-Id: I8a3f196c4755601a3888281566fbb7b817f01dca\n"
    },
    {
      "commit": "e30c17fb6e1acb06df01ee3cc716d144140866cc",
      "tree": "fe089ec40970a76f11107534632b1fc5789660ed",
      "parents": [
        "c816e9fa03c67b3a5a112836a8e52b988c42f7ee"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 28 16:21:49 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 28 16:21:49 2016 -0800"
      },
      "message": "Downgrade dynamic section checks to warning\n\nFor apps targeting pre-O releases print warn about\ninvalid dynamic section.\n\nBug: http://b/33842263\nTest: Start an app in question and check logs for warning.\nTest: Run bionic-unit-test --gtest_filter\u003ddl*:Dl*\nChange-Id: I80bd51f2133b956fc04e20a6538cccd50118c1b8\n"
    },
    {
      "commit": "cf00d86935b8cc3d64909aa153270bb9f2d97beb",
      "tree": "45e1c590bd58b26fb3674bffb0bc008f0338a08c",
      "parents": [
        "cb0134d96ee67fc78082732835bcd7e5a4f5d63d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 14 14:30:37 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 14 14:30:37 2016 -0800"
      },
      "message": "Add a way to track all dlsym calls (contd.)\n\nThe followup for 4742abdcb52f16120016a5005c466230d4c46341\n\nChanges in this file got lost in the process of cherry-picking\nthe change across repositories.\n\nBug: http://b/29458203\nTest: flash, set debug.ld.all to dlsym and check\n      if there are messages in logcat\n\nChange-Id: I4613908e46e75c5d9ec66396767f10fc6d3e9777\n"
    },
    {
      "commit": "4742abdcb52f16120016a5005c466230d4c46341",
      "tree": "c9d48c733f7a850a9849fe78ad305a71a4f7fb64",
      "parents": [
        "901de13c37912286db015b6f9113e39be46ce04d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 12 16:30:15 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 12 16:36:12 2016 -0800"
      },
      "message": "Add a way to track all dlsym calls\n\nAdd dlsym option to debug.ld.all and debug.ld.app.\u003cappname\u003e which\nenables logging of dlsym calls.\n\nBug: http://b/29458203\nTest: flash, set debug.ld.all to dlsym and check\n      if there are messages in logcat\n\nChange-Id: I9cb815a38b5b98aac9ebe3ac1540bcdedd2e8db0\n"
    },
    {
      "commit": "a6588e5d6f4b7e566bc5946a676e2edeb4816d6b",
      "tree": "4b278d9d71eb50111c859b4751948d5a45dcdee7",
      "parents": [
        "858ec7abec87f573f624434c3d969169640979c8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 12 13:11:50 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 12 13:12:59 2016 -0800"
      },
      "message": "Fix android_dlwarning lookup\n\nBug: http://b/33530622\nTest: mm\nChange-Id: I3eefca58e91b7bbc41f6add9b8c756f1474a7f93\n"
    },
    {
      "commit": "d9e427cf41893377dcdd0650ba20ff7cf7d72209",
      "tree": "6515aceab94a11861876b6e145adb6922183ebff",
      "parents": [
        "227894a754eb11cb1203c359192d59654b01b93e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 22 16:55:25 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Dec 09 14:53:59 2016 -0800"
      },
      "message": "Bionic loader is no longer hijacking libdl.so\n\nDo not hijack libdl.so methods but make libdl proxy calls to\nloader instead. This will be replaces by calls to libc.so\nonce loader functionality is migrated.\n\nAlso add a lock to dl_unwind_find_exidx function call.\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nBug: http://b/27106625\nChange-Id: Ic33a7109a86f4262798d63a35f4c61d15b0068bb\n"
    },
    {
      "commit": "10fffb4939ac7d9dc6239930304ad05c3714094d",
      "tree": "9e02c68de1a32212bcfd9a4adadf4fbd8c71206b",
      "parents": [
        "51366e9b16c3bc3ea6d200be66f561cc516fc995"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 08 09:57:35 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 08 09:57:35 2016 -0800"
      },
      "message": "Fix linker_asan64 symlink\n\nSoong now appends the suffix to the symlink, so the multilib-specific\nsymlink is no longer necessary.\n\nTest: m -j out/target/product/angler/system/bin/linker_asan64\nTest: Examine LOCAL_MODULE_SYMLINKS in out/soong/Android-aosp_angler.mk\nChange-Id: I913a318bb31de3e630eebd2d68041a55ce3eccaf\n"
    },
    {
      "commit": "fc0d48078a162f50d36965b8c018fed1d766516c",
      "tree": "3841a2762b9fc2851945fed86124f318610f7e39",
      "parents": [
        "53cad4bedac6a8d74b7f3650977a893a8c394e81"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 06 11:10:09 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 06 11:15:24 2016 -0800"
      },
      "message": "loader: stop linking libdl/c/m into the loader\n\nThis is to prevent situations when libgcc.a calls into incorrect\nimplementation of dl_iterate_phdr.\n\nBug: http://b/27106625\nTest: build \u0026\u0026 run bionic-unit-tests --getst_filter\u003ddl*:Dl*\nChange-Id: I4cba8c4a156f91f17ba3d95c39cb80f9b70c9d8f\n"
    },
    {
      "commit": "6c14f863093c7277c312b6dc224588ff0ccd9473",
      "tree": "4f001ef16c482781e2cca79ac0abef5b0cf38416",
      "parents": [
        "f8b4ff4aa1c1a855627b8dc36f0675d69ab9109d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 05 13:35:47 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 05 13:46:24 2016 -0800"
      },
      "message": "loader: asan path translation now works for symlinks\n\nBionic Loader now resolves real path for a library before running\nasan path-translation. This fixes situations for bundled loading\nlibraries which are effectively symlinks to system library;\nfor example:\n\n $ adb shell ls -l /system/app/NfcNci/lib/arm64/libnfc_nci_jni.so\n /system/app/NfcNci/lib/arm64/libnfc_nci_jni.so -\u003e /system/lib64/libnfc_nci_jni.so\n\nBug: http://b/33278445\nTest: make and boot\nChange-Id: If14a12087c92f8ca628504556332ba0cb67c9118\n"
    },
    {
      "commit": "7ec52b12efc1c4ed9cd83ba8c95fab5bbf39aaf4",
      "tree": "091ac4e81ecc619f8116a3f229ad10f8c47e017d",
      "parents": [
        "11b362d284b49e070813cd459584ea3dabb20b1e"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Nov 28 17:02:25 2016 -0800"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Nov 29 21:09:05 2016 +0000"
      },
      "message": "Enable libc/libdl/libm/linker for host bionic\n\nDisables debuggerd integration unless building for android.\n\nBug: 31559095\nTest: Diff out/soong/build.ninja before/after, only change is moving\n      linker\u0027s libdebuggerd_client static lib to the beginning of the\n      list.\nTest: lunch aosp_arm64-eng; mmma -j bionic\nChange-Id: I62e725f7a9b98b7fe31637d0a835fd5846b0aff0\n"
    },
    {
      "commit": "ae4a0c186fb12129d9c677e71258f3cfce8abc07",
      "tree": "a0a1792effaeb7531c5724896eb441c63494ce99",
      "parents": [
        "5fabe027571627bf72eec1e23bfbb3a69845480a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 21 10:44:35 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Nov 21 12:32:08 2016 -0800"
      },
      "message": "Log call to elf-constructors\n\nLog call to constructors when dlopen logging is enabled.\n\nBug: http://b/29458203\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I0cd591bf147f8f910ae9def1ac4089ef44099aff\n"
    },
    {
      "commit": "3613c20c59f931caa7d5411e4350306a4d6ad1e0",
      "tree": "30086ee5bc34fa5febc723893acc700a19c7a70a",
      "parents": [
        "585838ba327bebb94f5a5a37fd9eb371c782fcf5",
        "12b918743d63351b62ca93924e27a4fea0e115df"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 17 05:21:41 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 17 05:21:42 2016 +0000"
      },
      "message": "Merge \"Relax ELF header checks - warn for apps targeting pre-O\""
    },
    {
      "commit": "585838ba327bebb94f5a5a37fd9eb371c782fcf5",
      "tree": "8bcbd9f90391ad4b3a8411dbac9f46c6dc8c04c4",
      "parents": [
        "60ba60dd25870fcc20bff19063dd68ba166f7592",
        "ffa45a8682cef0f29bb21284cd091b88f6f80ba1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 17 02:48:41 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 17 02:48:41 2016 +0000"
      },
      "message": "Merge \"Remove unused includes/externals\""
    },
    {
      "commit": "12b918743d63351b62ca93924e27a4fea0e115df",
      "tree": "314209b87db9cc963769cfce41c42ef7ee58d696",
      "parents": [
        "60ba60dd25870fcc20bff19063dd68ba166f7592"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 16 12:29:37 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 16 18:43:06 2016 -0800"
      },
      "message": "Relax ELF header checks - warn for apps targeting pre-O\n\nBug: http://b/32581440\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: I2fe356c67eb9665c671758117679a29b207219e4\n"
    },
    {
      "commit": "5bc78c8bcd0c1e634c04029309ede3ec05f2d424",
      "tree": "ba41f009cdf5fb27c766b4efe05c4cbb566d2a85",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 11:35:43 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 16:55:42 2016 -0800"
      },
      "message": "Add and use constants for the Android API levels.\n\nTest: bionic tests still pass\nChange-Id: If1b619cfc9db1d3f5d91f14f2ace71058dca0c4a\n"
    },
    {
      "commit": "ffa45a8682cef0f29bb21284cd091b88f6f80ba1",
      "tree": "3763c4a38293b1c113d3b33db2970a3483759c68",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 16 15:23:37 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 16 15:23:37 2016 -0800"
      },
      "message": "Remove unused includes/externals\n\nTest: mm\nChange-Id: I4b88602b7d0a18664cbeddfa9854e589c2886e1a\n"
    },
    {
      "commit": "4cc5a60f9113d7cb5bae01334df06e6ccd0018e5",
      "tree": "d26c93b81f74b378518331e3e93bec607cf69788",
      "parents": [
        "d5aa03600e796b894bec7662852f5715bed9e19e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 15 16:54:16 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 15 16:59:33 2016 -0800"
      },
      "message": "Downgrade W+E load segments to a warning unless targeting O.\n\nI don\u0027t think we\u0027re getting any value from more dupes of the same dodgy\nmiddleware, and I worry that we\u0027re hiding other, more subtle, compatibility\nissues behind this one.\n\nTest: bionic tests\nChange-Id: I556cf36eac96c90976bae32621d1c133bbb8fcc7\n"
    },
    {
      "commit": "e6ee960aeff9d543839cd84b38ce599942bca26e",
      "tree": "e96cfb59cb203354956fb03116f3c41d92b76ebd",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 27 02:32:47 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 27 05:11:56 2016 -0700"
      },
      "message": "Replace .align with .balign for clarity\n\nTest: run bionic-unit-tests\nChange-Id: Icb43cc47e41d58fe3cb71986e05b3134022f895c\n"
    },
    {
      "commit": "bd839d100d1c4802cf53f3d27bb73e6032719762",
      "tree": "6456ca7f920ec38e6238aa34e056976afbfb7f2d",
      "parents": [
        "93a988debb1b54993e03e2ac2b31ee8039a73c04",
        "9259265fc2331c819d3b460ee18010b49315349a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 20 22:12:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 20 22:12:40 2016 +0000"
      },
      "message": "Merge changes from topic \u0027ndk-headers-licenses\u0027\n\n* changes:\n  Add license to ndk_headers modules.\n  One NOTICE file to rule them all.\n"
    }
  ],
  "next": "c30862fdbc99eaf4c3859e915846e2ef316b1a47"
}
