)]}'
{
  "log": [
    {
      "commit": "bbd465a230401b41fa6c1375ea5ab139f7fede7e",
      "tree": "bea4d18928cacf3f18fd0a3ac9d5497f1e8f65eb",
      "parents": [
        "52d7749335c88acfe6e5e305fe45aeea422bcb64",
        "34d1f2ddf25fc90cb28df591c6baf66bed4359be"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Nov 08 04:58:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 08 04:58:14 2018 +0000"
      },
      "message": "Merge \"Revert \"Disable lld, failed to link bionic/linker.\"\""
    },
    {
      "commit": "34d1f2ddf25fc90cb28df591c6baf66bed4359be",
      "tree": "5b4352c5e0ddacfac7785f290f08a7535b0631ad",
      "parents": [
        "73de62e461c688dd956b1a1fc1042cb75bf10e08"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Nov 07 21:55:18 2018 +0000"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Nov 07 21:55:18 2018 +0000"
      },
      "message": "Revert \"Disable lld, failed to link bionic/linker.\"\n\nThis reverts commit 73de62e461c688dd956b1a1fc1042cb75bf10e08.\n\nReason for revert: bug was fixed upstream and included into AOSP lld\nBug: 78115263\nTest: make checkbuild\n\nChange-Id: Ib9e4af1efdcdb547c7bd65cce4ce48d7f09ed217\n"
    },
    {
      "commit": "8178c417f68dac9c2d1a6b44dbca1e6b85e5b081",
      "tree": "ac31cd7fcd74e5b7beb05807bae4f288a6dbdf90",
      "parents": [
        "0c39bd468d3aa19b3e27937b36b101cc4aa65dab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 05 13:34:36 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 06 11:15:17 2018 -0800"
      },
      "message": "ART isn\u0027t using the ART-specific linker features any more.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ide3c295035687019608a2c4716a4a21cb889d121\n"
    },
    {
      "commit": "358334145ee1961909217f1ebbdcbb843f469768",
      "tree": "051df79502d9267394eb3c71e246f7d1b16d6e92",
      "parents": [
        "f284a475441f612a0b48067a8bc7a59c72c4b47a"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Oct 26 14:45:21 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Oct 31 12:21:02 2018 +0900"
      },
      "message": "ld.config.txt for APEX\n\nWhen executing an executable in an APEX (i.e., /apex/\u003cname\u003e/bin),\nld.config.txt file is read from the same APEX, not from /system/etc.\n\nBug: 115787633\nTest: m apex.test; adb push ...apex.test.apex /data/apex; adb reboot\nTest: adb root; adb shell /apex/com.android.example.apex/bin/dex2oat\nis runnable.\n\nChange-Id: I6400251f99d24f2379dbaf655ecd84da02490617\n"
    },
    {
      "commit": "04164f6d055c1052325a665bc9aa4837a5d2c1ae",
      "tree": "f72da432890482cb4b9af811105317f44882f006",
      "parents": [
        "5c722edf2b6025538608e7190492452b058c6b1d",
        "5e62b34c0d6fa545b487b9b64fb4a04a0589bc13"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 26 00:09:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 26 00:09:15 2018 +0000"
      },
      "message": "Merge \"Clean up bionic_macros.h a bit.\""
    },
    {
      "commit": "5e62b34c0d6fa545b487b9b64fb4a04a0589bc13",
      "tree": "e08ee44067b3b636ace11b21ec8d63a08d4d2a19",
      "parents": [
        "c89a3971e94c30611c885e4c440eae2fd9937948"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 11:00:00 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 11:00:00 2018 -0700"
      },
      "message": "Clean up bionic_macros.h a bit.\n\nUse \u003candroid-base/macros.h\u003e instead where possible, and move the bionic\nmacros out of the way of the libbase ones. Yes, there are folks who manage\nto end up with both included at once (thanks OpenGL!), and cleaning that\nup doesn\u0027t seem nearly as practical as just making this change.\n\nBug: N/A\nTest: builds\nChange-Id: I23fc544f39d5addf81dc61471771a5438778895b\n"
    },
    {
      "commit": "48b69113972ff2d62238a4446a97037b6bd1630d",
      "tree": "f82a6e80ce3f9bb332048de2ee1a214f932240ad",
      "parents": [
        "6032c38fb3d23a4d38cbc6eb4e180d58d7ef5300"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Wed Oct 24 14:14:26 2018 -0700"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Wed Oct 24 14:14:26 2018 -0700"
      },
      "message": "linker: Fix fd leak\n\nClose the file descriptor before throwing it away.\n\nTest: mmma bionic\nChange-Id: I1690c1bb8b619f82070503151b1de73302882310\n"
    },
    {
      "commit": "d84f8b5eb24f0e55645fd6a35d39611d2ffa74ff",
      "tree": "ac4ccef50b4c6400e2449be475815b2757bc2b7a",
      "parents": [
        "24f2676a39bf3d9472cf3d1d96371ffea712fc9c",
        "d6bf019204e258d89da56330fbcf9a36c39d23f5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 23 03:43:28 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 23 03:43:28 2018 +0000"
      },
      "message": "Merge \"Rework the linker_wrapper to work with lld\""
    },
    {
      "commit": "5038ef6748d6ef70537e616201bb68b287a55a76",
      "tree": "8507e8070ad5c28aa259fd8b1faa1e0b98319c3c",
      "parents": [
        "a8a716e42a8e6b8f28abf2b2f8f93b1e8579423d"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sun Oct 21 17:45:04 2018 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 22 15:55:56 2018 -0700"
      },
      "message": "Workaround host bionic libs that are missing DT_RUNPATH\n\nWe don\u0027t have a host bionic version of\nlibclang_rt.asan-x86_64-android.so, so I\u0027m using the android version,\nwhich can\u0027t load liblog.so, since it\u0027s missing DT_RUNPATH that would\nnormally load liblog.so from a relative path to the .so.\n\nBug: 118058804\nTest: run ASAN host_bionic\nChange-Id: I58badcd5ed35bd1c7b786b4f1e2367a1011ff08d\n"
    },
    {
      "commit": "d6bf019204e258d89da56330fbcf9a36c39d23f5",
      "tree": "3302ba6e3d7023f565e911f876273824df6c70ee",
      "parents": [
        "a8a716e42a8e6b8f28abf2b2f8f93b1e8579423d"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 15 15:40:49 2018 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 22 22:52:25 2018 +0000"
      },
      "message": "Rework the linker_wrapper to work with lld\n\nThis is use by Host Bionic to bootstrap into an embedded copy of the\nlinker by tweaking the AT_* values before calling in to the linker entry.\n\nSimilarly to 9729f35922aee4d1662b97d62d82385f6b8124ef, get the base\naddress from AT_PHDR, so that we\u0027re not relying on the relative offset\nbefore relocation, which doesn\u0027t work with lld (at least with the\nstandard flags).\n\nTo find the offset to the linker code, we can still use an absolute\nsymbol created by extract_linker (which is currently hardcoded to 0x1000).\n\nInstead of relying on something similar for the linker entry point,\nwe\u0027re now just reading the entry point from the linker\u0027s ELF header.\n\nThen we get the address to the real _start function using\nhost_bionic_inject, which injects the value into a global variable after\nthe link step is finished. It also uses that opportunity to verify that\nthe linker is embedded as we expect it to be.\n\nBug: 31559095\nTest: build with host bionic\nChange-Id: I9d81ea77c51c079de06905da1ebe421fead1dc3b\n"
    },
    {
      "commit": "8f639a40966c630c64166d2657da3ee641303194",
      "tree": "96e03d65a4efa6613941b748ed2c11b64a8dec1b",
      "parents": [
        "cb8ed207d2bb6113a80fc7f27cd0beb8897f5192"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Oct 01 23:10:05 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Oct 10 14:31:06 2018 -0700"
      },
      "message": "Allow invoking the linker on an executable.\n\nThe executable can be inside a zip file using the same syntax used for\nshared objects: path.zip!/libentry.so.\n\nThe linker currently requires an absolute path. This restriction could be\nloosened, but it didn\u0027t seem important? If it allowed non-absolute paths,\nwe\u0027d need to decide how to handle:\n - foo/bar      (relative to CWD?)\n - foo          (search PATH / LD_LIBRARY_PATH, or also relative to CWD?)\n - foo.zip!/bar (normalize_path() requires an absolute path)\n\nThe linker adjusts the argc/argv passed to main() and to constructor\nfunctions to hide the initial linker argument, but doesn\u0027t adjust the auxv\nvector or files like /proc/self/{exe,cmdline,auxv,stat}. Those files will\nreport that the kernel loaded the linker as an executable.\n\nI think the linker_logger.cpp change guarding against (g_argv \u003d\u003d NULL)\nisn\u0027t actually necessary, but it seemed like a good idea given that I\u0027m\ndelaying initialization of g_argv until after C++ constructors have run.\n\nBug: http://b/112050209\nTest: bionic unit tests\nChange-Id: I846faf98b16fd34218946f6167e8b451897debe5\n"
    },
    {
      "commit": "269bb496c56dcf268831e02df035040162f30590",
      "tree": "822f2f0cd22cfc397273ccca827414679e842b77",
      "parents": [
        "0adf09b3705c54733e46ace3b6cf08b78533729e"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Oct 04 14:45:55 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Oct 08 13:27:16 2018 -0700"
      },
      "message": "Fix normalize_path\u0027s handling of \"/..\"\n\nCurrently it normalizes the path to a string with a single uninitialized\nbyte. It should instead normalize it to \"/\".\n\nBug: none\nTest: /data/nativetest/linker-unit-tests/linker-unit-tests32\nTest: /data/nativetest64/linker-unit-tests/linker-unit-tests64\nChange-Id: I06e0f7598d16acfa21875dad53efbc293cfeb44d\n"
    },
    {
      "commit": "0adf09b3705c54733e46ace3b6cf08b78533729e",
      "tree": "50df5c98cacf4f4619940196d1a3362fc6dd778e",
      "parents": [
        "773c697f815d43182adf1eb430f4899255088d6b"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Oct 01 18:35:46 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Oct 08 13:27:16 2018 -0700"
      },
      "message": "linker: fix invalid zip file handling\n\nThe argument to CloseArchive has type ZipArchiveHandle, but we\u0027re\npassing it a ZipArchiveHandle*. The compiler doesn\u0027t detect the type\nmismatch because ZipArchiveHandle is a typedef for void*.\n\nRemove a duplicate close() call:\n\nThe fourth argument to OpenArchiveFd is \"bool assume_ownership \u003d true\".\nEven if the function fails, ownership of the fd is still transferred to\na ZipArchive object that\u0027s deleted when this code calls CloseArchive.\n\nAFAIK, this code path is rarely or never hit.\n\nBug: none\nTest: manual (eventually, \u0027linker64 /system!/foo\u0027)\nChange-Id: I95d79809b6e118fb3c39c7b98b8055c8e324db1a\n"
    },
    {
      "commit": "c15baefc0a8df3bc6fea4f0aedcbcb2e6803a6df",
      "tree": "e2c57d75f9e4b904deee80bac11c72ee32a21803",
      "parents": [
        "9df26193c8adc43a7ac1ba807e70d0b0772712c0",
        "7786a344ce17e8f065952afddebb1141f34c43f5"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Oct 04 22:09:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 04 22:09:55 2018 +0000"
      },
      "message": "Merge \"Exclude libclang_rt.builtins symbols\""
    },
    {
      "commit": "7786a344ce17e8f065952afddebb1141f34c43f5",
      "tree": "11e9a7fc05da7f939b18e27d6570888682cd50b6",
      "parents": [
        "fc85c3c8476fe2490b027840994db4ff009631e0"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Aug 31 19:01:56 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 03 10:07:13 2018 +0000"
      },
      "message": "Exclude libclang_rt.builtins symbols\n\nSimilar to libgcc, libclang_rt.builtins symbols need to be excluded.\n\nBug: 29275768\nChange-Id: Iaf7381de3b4dbd92997abd03667dea0baaab98e1\n"
    },
    {
      "commit": "b177085ce7219562eecf77f2e8de49f8f2605005",
      "tree": "573947a27714273f7d78e9c6f85c9fd30e63dba9",
      "parents": [
        "e4e3de819d05481422f8bb9925486118924bf4a1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 18 12:52:42 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 14:24:18 2018 -0700"
      },
      "message": "Add reallocarray(3).\n\nOriginally a BSD extension, now in glibc too. We\u0027ve used it internally\nfor a while.\n\n(cherry-pick of e4b13f7e3ca68edfcc5faedc5e7d4e13c4e8edb9.)\n\nBug: http://b/112163459\nTest: ran tests\nChange-Id: I813c3a62b13ddb91ba41e32a5a853d09207ea6bc\nMerged-In: I813c3a62b13ddb91ba41e32a5a853d09207ea6bc\n"
    },
    {
      "commit": "e4e3de819d05481422f8bb9925486118924bf4a1",
      "tree": "f24632f210a89a2963a4bb92677c81a5b29c08a5",
      "parents": [
        "fe108db540dec0e3299d7a389461177deee81dc5",
        "b8b3a7660617962396e79ecb57768b6e97f0e420"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Sep 26 09:03:45 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 26 09:03:45 2018 +0000"
      },
      "message": "Merge \"linker: extract defaults and source files\""
    },
    {
      "commit": "9a64b56334e6da99c2dc52811b90279457b12bef",
      "tree": "3b78a9947b5bfffd50d5939cde24cfacf1577a5b",
      "parents": [
        "30b17e32f0b403a97cef7c4d1fcab471fa316340"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Sep 25 14:00:44 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Sep 25 14:00:44 2018 -0700"
      },
      "message": "Add noexcept to move constructors and assignment operators.\n\nBug: 116614593\nTest: build with WITH_TIDY\u003d1\nChange-Id: I9f8760cddb3c25255cd24604606af84d837d55e9\n"
    },
    {
      "commit": "b8b3a7660617962396e79ecb57768b6e97f0e420",
      "tree": "6151f1ef73921d15ea0401cd6280250af6ff7b8e",
      "parents": [
        "30b17e32f0b403a97cef7c4d1fcab471fa316340"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Sep 25 12:31:11 2018 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Sep 25 16:17:24 2018 +0200"
      },
      "message": "linker: extract defaults and source files\n\nMove source files to filegroup and extract c/ldflags and\nversion-script to linker_defaults.\n\nBug: http://b/71494052\nTest: make\nChange-Id: Ic82885e1c006f91a8446978fabd214f87cd20510\n"
    },
    {
      "commit": "d16cface55985257621a977d2f711de1a8202422",
      "tree": "23a1b84a57b7bc4b427bb48c730325f56afe8cef",
      "parents": [
        "8b527f2857f2c7e16caa5ff701b2696007b0ac16"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 17 15:50:09 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 17 15:50:09 2018 -0700"
      },
      "message": "State clearly that an ELF file has the wrong architecture.\n\nBefore:\n\n  \"libx.so\" has unexpected e_machine: 40 (EM_ARM)\n\nAfter:\n\n  \"libx.so\" is for EM_X86_64 (62) instead of EM_AARCH64 (183)\n\nBug: N/A\nTest: `LD_PRELOAD\u003d/system/lib64/libm-x86_64.so date` on arm64\nChange-Id: I5bb40c435bd22b4e11fe802615925e10db7fb631\n"
    },
    {
      "commit": "dbf54d227093510a5b10df7ab3dac0d2692f0128",
      "tree": "5c54edd2986453e2b22ddd1fc4c722f558d3811f",
      "parents": [
        "780cc6b189f9a8bf7fcdcc4b619ced2043cc543c",
        "0489645e000428eb08bfc201dcf6d0dfa919d4a8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 22 20:18:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 22 20:18:30 2018 +0000"
      },
      "message": "Merge \"Fix linker\u0027s _r_debug (gdb) info\""
    },
    {
      "commit": "99d54656bda40edb817e6bc6de9a85d88ef4e6b5",
      "tree": "1a176f12c89582f0d06a3376ef66c6281d8af01c",
      "parents": [
        "8f2298e73f4d930b58a8466fd7264e9a88c96d99"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 10:36:23 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 10:36:23 2018 -0700"
      },
      "message": "Add PR_SET_VMA and PR_SET_VMA_ANON_NAME to \u003csys/prctl.h\u003e.\n\nWe\u0027ve copied \u0026 pasted these to too many places. And if we\u0027re going to\nhave another go at upstreaming these, that\u0027s probably yet another reason\nto have the *values* in just one place. (Even if upstream wants different\nnames, we\u0027ll likely keep the legacy names around for a while for source\ncompatibility.)\n\nBug: http://b/111903542\nTest: ran tests\nChange-Id: I8ccc557453d69530e5b74f865cbe0b458c84e3ba\n"
    },
    {
      "commit": "0489645e000428eb08bfc201dcf6d0dfa919d4a8",
      "tree": "e79ac0cc0bfa27d99cb0fad6b8d3293dac47ab73",
      "parents": [
        "14dd9923b026c4500dc5b3f6f481b6bf1028778c"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Aug 20 17:44:42 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Aug 21 17:20:07 2018 -0700"
      },
      "message": "Fix linker\u0027s _r_debug (gdb) info\n\n * Initialize the exe\u0027s l_ld correctly, and initialize its l_addr field\n   earlier.\n\n * Copy the phdr/phnum fields from the linker\u0027s temporary soinfo to its\n   final soinfo. This change ensures that dl_iterate_phdr shows the phdr\n   table for the linker.\n\n * Change init_linker_info_for_gdb a little: use an soinfo\u0027s fields to\n   init the soinfo::link_map_head field, then reuse the new\n   init_link_map_head function to handle the linker and the executable.\n\nTest: manual\nTest: bionic-unit-tests\nBug: https://issuetracker.google.com/112627083\nBug: http://b/110967431\nChange-Id: I40fad2c4d48f409347aaa1ccb98d96db89da1dfe\n"
    },
    {
      "commit": "8f2298e73f4d930b58a8466fd7264e9a88c96d99",
      "tree": "1d43edbb3494f07162ed0b9d92bc09fc268063eb",
      "parents": [
        "750c01c4b13f50161cbfc4f40d20f9b2e382d3a9",
        "14dd9923b026c4500dc5b3f6f481b6bf1028778c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 22 00:13:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 22 00:13:00 2018 +0000"
      },
      "message": "Merge \"Move [vdso] after exe/linker in _r_debug\""
    },
    {
      "commit": "14dd9923b026c4500dc5b3f6f481b6bf1028778c",
      "tree": "eed9629618dd1ffc9d2071a121e2b701b6cb6cca",
      "parents": [
        "3fd45bba4857fdbf320b6e89d2ae0569d9463bf5"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Aug 20 17:43:44 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Aug 20 22:07:27 2018 -0700"
      },
      "message": "Move [vdso] after exe/linker in _r_debug\n\ngdbserver assumes that the first entry is the exe, so it must come\nfirst.\n\nFixes debugging of executables with gdb.\n\nBug: https://issuetracker.google.com/112627083\nBug: http://b/110967431\nTest: gdbclient.py -r toybox\nChange-Id: I7b30398d679c3f8b92d8d02572f9073ae0fce798\n"
    },
    {
      "commit": "be551f596f763e147bb29ffc26bc360d910f90fb",
      "tree": "f0a7a9aa02e1b73e840f62262125d8064a9d4aae",
      "parents": [
        "3fd45bba4857fdbf320b6e89d2ae0569d9463bf5"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Aug 13 16:46:15 2018 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Aug 21 00:15:47 2018 +0000"
      },
      "message": "HWASan support in bionic.\n\n* Allow sanitization of libc (excluding existing global sanitizers)\n  and disallow sanitization of linker. The latter has not been\n  necessary before because HWASan is the first sanitizer to support\n  static binaries (with the exception of CFI, which is not used\n  globally).\n* Static binary startup: initialize HWASan shadow very early so that\n  almost entire libc can be sanitized. The rest of initialization is\n  done in a global constructor; until that is done sanitized code can\n  run but can\u0027t report errors (will simply crash with SIGTRAP).\n* Switch malloc_common from je_*  to __sanitizer_*.\n* Call hwasan functions when entering and leaving threads. We can not\n  intercept pthread_create when libc depends on libclang_rt.hwasan.\n  An alternative to this would be a callback interface like requested\n  here:\n    https://sourceware.org/glibc/wiki/ThreadPropertiesAPI\n\nAll of the above is behind a compile-time check\n__has_feature(hwaddress_sanitizer). This means that HWASan actually\nrequires libc to be instrumented, and would not work otherwise. It\u0027s\nan implementation choice that greatly reduces complexity of the tool.\nInstrumented libc also guarantees that hwasan is present and\ninitialized in every process, which allows piecemeal sanitization\n(i.e. library w/o main executable, or even individual static\nlibraries), unlike ASan.\n\nChange-Id: If44c46b79b15049d1745ba46ec910ae4f355d19c\n"
    },
    {
      "commit": "006d137d0d958204f2adcc0a4d59f5cd3e05363b",
      "tree": "d2d894a55d86c0d45e6c28219b10ef8f2158a175",
      "parents": [
        "35bb46188ce8dbbb8bde0702e6cc6bf1d0795980"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Aug 03 13:38:09 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Aug 03 13:50:29 2018 -0700"
      },
      "message": "Remove old workaround for unloading unversioned soinfo\n\nThis code path is/was a workaround for poorly-behaved apps. AFAIK it isn\u0027t\nneeded anymore.\n\nThe (needed !\u003d nullptr) condition should have been (needed \u003d\u003d nullptr), so\nrather than unload a library, it tends to do nothing instead. If it can\u0027t\nfind the library, it would segfault.\n\nBug: http://b/112154263\nTest: /data/nativetest/bionic-unit-tests/bionic-unit-tests\nTest: /data/nativetest/linker-unit-tests/linker-unit-tests32\nTest: apply patch to pi-dev, verify that apps from b/72143978 still work\nChange-Id: Ic598cb3dcead9f88005764a9b8746ed6b35f5f38\n"
    },
    {
      "commit": "32bc0fcf69dfccb3726fe572833a38b01179580e",
      "tree": "abca656f500087493e0997d5cf38cbcc9ec98eb8",
      "parents": [
        "65f82092a17518080178ff7004cc6db362ebfbcd"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 17:31:13 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 18:09:44 2018 -0700"
      },
      "message": "Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: I5b4123bc6709641315120a191e36cc57541349b2\n"
    },
    {
      "commit": "78b4a82d7d62f548b707f92f5dc5f339bb1fadc4",
      "tree": "a51dea724fc50eef965981d207f2bd2e790501aa",
      "parents": [
        "b0c8a01de1dafc1e47f74895d00ca82429f851b3",
        "9729f35922aee4d1662b97d62d82385f6b8124ef"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 31 21:01:49 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 31 21:01:49 2018 +0000"
      },
      "message": "Merge \"linker: find AT_BASE using AT_PHDR/AT_PHNUM\""
    },
    {
      "commit": "c1c8a188b26be9a8b9c48e6b21af4035226f9d1f",
      "tree": "a15bef933c4ca1e363e48b6124f49b7be5baa3f3",
      "parents": [
        "3bf897e12d73f5c038aeef85f91ccce1c35fe326"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Apr 24 18:43:19 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jul 30 23:49:19 2018 -0700"
      },
      "message": "Fix arm32/64 dynamic TLS relocations\n\narm32: Add a relocation for TLS descriptors (e.g. gcc\u0027s\n-mtls-dialect\u003dgnu2).\n\narm64: Add all the dynamic TLS relocations.\n\nTwo of the relocations here are obsolete:\n\n - ARM documents R_ARM_SWI24 as an obsolete static relocation without\n   saying what it did. It\u0027s been replaced by R_ARM_TLS_DESC, a dynamic\n   relocation. We could probably remove it, but I left it because arm32\n   is old, and I see the macro in other libc\u0027s. It\u0027s probably analogous\n   to R_ARM_THM_SWI8, which is also an obsolete relocation reserved for\n   a future dynamic relocation.\n\n - I couldn\u0027t find any ARM documentation at all for\n   R_AARCH64_TLS_DTPREL32. It seems to have been part of three\n   relocations:\n\n    - R_AARCH64_TLS_DTPREL32 1031\n    - R_AARCH64_TLS_DTPMOD32 1032\n    - R_AARCH64_TLS_TPREL32 1033\n\nBug: b/78026329\nTest: run bionic unit tests\nChange-Id: I5e7432f6e3e906152dc489be5e812fd8defcbafd\n"
    },
    {
      "commit": "9729f35922aee4d1662b97d62d82385f6b8124ef",
      "tree": "644ed730855f795498485521d6216bb7e9e9d2d1",
      "parents": [
        "3bf897e12d73f5c038aeef85f91ccce1c35fe326"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jul 13 22:40:26 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jul 26 20:31:47 2018 -0700"
      },
      "message": "linker: find AT_BASE using AT_PHDR/AT_PHNUM\n\nWhen the linker is invoked directly, rather than as an interpreter for a\nreal program, the AT_BASE value is 0. To find the linker\u0027s base address,\nthe linker currently relies on the static linker populating the target of\na RELA relocation with an offset rather than leaving it zero. (With lld,\nit will require a special flag, --apply-dynamic-relocs.)\n\nInstead, do something more straightforward: the linker already finds the\nexecutable\u0027s base address using its PHDR table, so do the same thing when\nthe linker is run by itself.\n\nBug: http://b/72789859\nTest: boots, run linker/linker64 by itself\nChange-Id: I4da5c346ca164ea6f4fbc011f8c3db4e6a829456\n"
    },
    {
      "commit": "f6e5b582604715729b09db3e36a7aeb8c24b36a4",
      "tree": "1d68c449355f88a0652d3c1e2d6679b54fce1b20",
      "parents": [
        "ad596bf4fc406c0940d0f76f6b7c4ff22ecee7ac"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 01 15:30:54 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jul 19 14:28:54 2018 -0700"
      },
      "message": "Introduce api to track fd ownership in libc.\n\nAdd two functions to allow objects that own a file descriptor to\nenforce that only they can close their file descriptor.\n\nUse them in FILE* and DIR*.\n\nBug: http://b/110100358\nTest: bionic_unit_tests\nTest: aosp/master boots without errors\nTest: treehugger\nChange-Id: Iecd6e8b26c62217271e0822dc3d2d7888b091a45\n"
    },
    {
      "commit": "a8971514264996e7ab3dc69acecbc332afbef6f5",
      "tree": "ab65c3ffe9eda58ed01990f9fe6437de110be125",
      "parents": [
        "92c6f7ee9014f434fbcce89ab894c745e36732d2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 27 14:39:06 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 27 14:39:06 2018 -0700"
      },
      "message": "linker: improve \"bad ELF magic\" error.\n\nInclude what we actually saw.\n\nBug: http://b/79463184\nTest: ran tests\nChange-Id: Id5f8aa3ab94b411ea839b0a1ada9beda9053a10f\n"
    },
    {
      "commit": "d3c08f28a3e1611a527f835cd83c4b4600632083",
      "tree": "3bbf52351b8d7c8bc6593ae827111771a394bdbb",
      "parents": [
        "23f86f4f34cef54d4a0167623f97bc26f5f82373"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jun 22 00:26:56 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jun 22 00:59:23 2018 +0900"
      },
      "message": "Don\u0027t emit warning on missing directories\n\nSome directories (e.g., /product/bin, etc.) in ld.config.txt may\nnot exist in some devices. Since many of them are optional directories,\ndon\u0027t emit warning when realpath() gives ENOENT for the paths.\n\nTest: m -j\nChange-Id: Ic4fa7db05bde53d3aa5df47291e83b4cdc09aa1f\n"
    },
    {
      "commit": "216323bd84f8935c809c65952e85746151c9fabf",
      "tree": "6458c88f10729bea1d1e057c7f2d54745d3a37aa",
      "parents": [
        "520ad0cae8f68166ca323c07ab704e5fbdc4f655"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Mon Jun 18 15:30:18 2018 +0900"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Mon Jun 18 19:16:34 2018 +0900"
      },
      "message": "Resolve paths of dir.${section} if possible\n\nSome devices place some of their partitions under /system. If the linker\nresolves that paths, verboseness of ld.config.txt will be reduced as we\ndon\u0027t need to add both /system/{partition} and /{partition}.\n\nBug: http://b/80422611\nTest: m -j, boot on taimen, atest\nChange-Id: I6b712170bb89229b764026e2cc517c426e6e6063\n"
    },
    {
      "commit": "31cd08f9eb857963ce1ab331d0ecf0c6c6b79670",
      "tree": "38fb9f800a8976a03b047c54e8b138f272f60eec",
      "parents": [
        "8d7866c58f95695e65e8780712cc6c692fb4af72"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jun 01 19:18:56 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jun 08 14:50:14 2018 +0900"
      },
      "message": "dynamic linker is running for init\n\ninit is now built as a dynamic executable, so the dynamic linker has to\nbe able to run in the init process. However, since init is launched so\nearly, even /dev/* and /proc/* file systems are not mounted and thus\nsome APIs that rely on the paths do not work. The dynamic linker now\ngoes alternative path when it is running in the init process.\n\nFor example, /proc/self/exe is not read for the init since we always now\nthe path of the init (/init). Also, arc4random* APIs are not used since\nthe APIs rely on /dev/urandom. Linker now does not randomize library\nloading order and addresses when running in the init process.\n\nBug: 80454183\nTest: `adb reboot recovery; adb devices` shows the device ID\nChange-Id: I29b6d70e4df5f7f690876126d5fe81258c1d3115\n"
    },
    {
      "commit": "8d7866c58f95695e65e8780712cc6c692fb4af72",
      "tree": "1a54d7b5c8833416b045870b4ac1b459d87b257d",
      "parents": [
        "3bc5e74c54dea64773e5c1fcdc083769563f1a36"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue May 29 16:34:39 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jun 08 14:49:56 2018 +0900"
      },
      "message": "Build recovery variant of the dynamic linker\n\nIn order to support shared libraries in the recovery mode, the dynamic\nlinker is now built with recovery_available: true option.\n\nIn addition, a few more modules (such as libasync, etc.) are also marked\nas recovery_available: true as they are transitive dependencies of the\ndynamic linker.\n\nBug: 63673171\nTest: `adb reboot recovery; adb devices` shows the device ID\nTest: `adb root \u0026\u0026 adb shell` and then\n$ lsof -p `pidof adbd` shows that libm.so, libc.so, etc. are loaded from\nthe /lib directory.\n\nChange-Id: Idd981d8cf25568a85b24032cf78e50adfd5f4a7f\n"
    },
    {
      "commit": "742982d3a086473427e71089a6c9ba8df0c365e6",
      "tree": "a713d5bdf5bd92c6f7ab91179be346e941666626",
      "parents": [
        "fe55c272adf89ecf14c5aa068119bfadf2c28457"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed May 30 22:32:17 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu May 31 17:04:52 2018 -0700"
      },
      "message": "Avoid post-reloc GOT usage in __linker_init\n\nA GOT lookup happening prior to soinfo::link_image causes a segfault. With\n-O0, the compiler moves GOT lookups from after __linker_init\u0027s link_image\ncall to the start of __linker_init.\n\nRename the existing __linker_init_post_relocation to linker_main, then\nextract the existing post-link_image code to a new\n__linker_init_post_relocation function.\n\nBug: http://b/80503879\nTest: /data/nativetest64/bionic-unit-tests/bionic-unit-tests\nTest: manual\nChange-Id: If8a470f8360acbe35e2a308b0fbff570de6131cf\n"
    },
    {
      "commit": "27475b5105e30332dd2145e0bfba098b756673d9",
      "tree": "02f72da22fcc8e2d2e8bf6db1e84d10f3365592c",
      "parents": [
        "cb5f4100060cd9894273863a973d622d6ebd2719"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu May 17 17:14:18 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed May 30 16:44:23 2018 -0700"
      },
      "message": "Initialize __libc_sysinfo early on.\n\n__libc_sysinfo is hidden, so accessing it doesn\u0027t require a relocated GOT.\nIt is important not to have a relocatable initializer on __libc_sysinfo,\nbecause if it did have one, and if we initialized it before relocating the\nlinker, then on 32-bit x86 (which uses REL rather than RELA), the\nrelocation step would calculate the wrong addend and overwrite\n__libc_sysinfo with garbage.\n\nAsides:\n\n * It\u0027d be simpler to keep the __libc_sysinfo initializer for static\n   executables, but the loader pulls in libc_init_static (even though it\n   uses almost none of the code in that file, like __libc_init).\n\n * The loader has called __libc_init_sysinfo three times by the time it\n   has relocated itself. A static executable calls it twice, while libc.so\n   calls it only once.\n\nBug: none\nTest: lunch aosp_x86-userdebug ; emulator\nTest: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests\nTest: adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static\nChange-Id: I5944f57847db7191608f4f83dde22b49e279e6cb\n"
    },
    {
      "commit": "6631f9b03dd032519be4b1971c2399a6e5e59357",
      "tree": "5e08b395a93f4a1cf4ec0fc83b7a09b4e864e51d",
      "parents": [
        "aa922bbaf38d896ecb46ae08c675c2ef0df811db"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Apr 30 18:29:32 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed May 30 15:43:43 2018 -0700"
      },
      "message": "Clean up TLS_SLOT_BIONIC_PREINIT usage a bit\n\n - It is only needed for dynamic executables, so move the initialization\n   out of __libc_init_main_thread and just before the solib constructor\n   calls. For static executables, the slot was initialized, then never\n   used or cleared. Instead, leave it clear.\n\n - For static executables, __libc_init_main_thread already initialized the\n   stack guard, so remove the redundant __init_thread_stack_guard call.\n\n - Simplify the slot access/clearing a bit in __libc_preinit.\n\n - Remove the \"__libc_init_common() will change the TLS area so the old one\n   won\u0027t be accessible anyway.\" comment. AFAICT, it\u0027s incorrect -- the\n   main thread\u0027s TLS area in a dynamic executable is initialized to a\n   static pthread_internal_t object in the linker, then reused by libc.so.\n\nTest: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests\nTest: adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static\nChange-Id: Ie2da6f5be3ad563fa65b38eaadf8ba6ecc6a64b6\n"
    },
    {
      "commit": "aa922bbaf38d896ecb46ae08c675c2ef0df811db",
      "tree": "2f60eaa9345f752e896269a91fed215cab7d2e12",
      "parents": [
        "d980cc0c51137c435c1a6bd4f802eff9b6b688c3",
        "55547db4345ee692b9cfe727c97dd860ed8263f8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 30 15:32:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 30 15:32:40 2018 +0000"
      },
      "message": "Merge \"Add secondary counter in place of tls_nodelete flag\""
    },
    {
      "commit": "55547db4345ee692b9cfe727c97dd860ed8263f8",
      "tree": "75a49563252d78140d0b60ab84e3760871c32521",
      "parents": [
        "d566b93091cb7a553e1d195a425d2a30f2afee3a"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri May 25 14:17:37 2018 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed May 30 10:56:59 2018 +0200"
      },
      "message": "Add secondary counter in place of tls_nodelete flag\n\nThe tls_nodelete state should apply to load_group not\nisolated soinfo. This actually also means that multiple\nsoinfos may have tls_counter on their dso_handles.\n\nThis change replaces TLS_NODELETE flag with secondary counter.\nNote that access to the secondary counter (located inside soinfo)\nis pretty expensive because it requires soinfo lookup by dso_handle\nwhereas dso_handle counter is much faster. This is why it is updated\nonly when dso_handle counter starts or hits 0.\n\nBug: http://b/80278285\nTest: bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: I535583f6714e45fa2a7eaf7bb3126da20ee7cba9\n"
    },
    {
      "commit": "d980cc0c51137c435c1a6bd4f802eff9b6b688c3",
      "tree": "16444382ec0e669b27a95723c5ef5cc8f367e5db",
      "parents": [
        "d7cabc96ae446d43ec197d8a6c0f14bc5123597d",
        "6e6772dcb26be8545f31cbcae5b6070d57008cc6"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 30 08:28:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 30 08:28:15 2018 +0000"
      },
      "message": "Merge \"Remove libskia.so from the greylist\""
    },
    {
      "commit": "6e6772dcb26be8545f31cbcae5b6070d57008cc6",
      "tree": "951000ffc8f8c028d456f160886528a19d44852b",
      "parents": [
        "b886592923353a4cc1681f8835edb093dc0f4691"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri May 25 10:37:49 2018 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri May 25 10:37:49 2018 +0200"
      },
      "message": "Remove libskia.so from the greylist\n\nThe library is no longer available on the devices.\n\nBug: http://b/31971097\nTest: make\nChange-Id: Ie87bb8a8c200d086d272ca923242bfbab6397126\n"
    },
    {
      "commit": "7046f391d1162cdb841050407a58118e186a20b0",
      "tree": "1919f230f6fd33d378a732f2084e2b4d5fd33420",
      "parents": [
        "ebf58a6cefa7692702e3bd7abc88e09849391662"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu May 24 14:07:27 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu May 24 20:14:56 2018 -0700"
      },
      "message": "Reenable __work_around_b_24465209__ for x86 linker\n\nBug: b/80258696\nTest: build aosp_x86-userdebug ; run emulator\nChange-Id: If7de24c3fc91a143c0bd17c6364c56ec04dfb08e\n(cherry picked from commit dac8340c437c9dafcc7e621f9dafa6a2239c3ca9)\n"
    },
    {
      "commit": "b886592923353a4cc1681f8835edb093dc0f4691",
      "tree": "ee1151d23faac407d2e62dbbba0425f41937787a",
      "parents": [
        "054106bb763c79893996b6c37ea0b5eaf33d25dd",
        "5603c6e6b9722cb8fcd1bd7a361b64c8dae47a50"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 22 05:16:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 05:16:20 2018 +0000"
      },
      "message": "Merge \"Mark as recovery_available: true\""
    },
    {
      "commit": "bcfe3cf06e02c366823b535f4b8026918a1f9380",
      "tree": "2c3aac221c706cbead9641ccb65f8751ad1f3380",
      "parents": [
        "886b96ef9a1b81a1a95e8b1ec9daabacda05793f"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue May 08 20:17:26 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu May 17 14:27:00 2018 +0800"
      },
      "message": "Use ro.vndk.lite to determine the ld.config.txt\n\nThis commit adds an extra check on `ro.vndk.lite`.  If `ro.vndk.lite` is\ntrue, the linker will pick `/system/etc/ld.config.vndk_lite.txt`.\n\nThe purpose of this change is to distinguish:\n\n1. Master-GSI + Master-VENDOR (w/o BOARD_VNDK_VERSION for upgrading devices)\n2. Master-GSI + O-MR1-VENDOR (w/ BOARD_VNDK_VERSION)\n\nBug: 78605339\nTest: aosp_sailfish Master-SYSTEM + Master-VENDOR boots\nTest: aosp_sailfish Master-GSI    + Master-VENDOR boots\nTest: aosp_walleye  Master-SYSTEM + Master-VENDOR boots\nTest: aosp_walleye  Master-GSI    + Master-VENDOR boots\nTest: aosp_walleye  Master-GSI    + O-MR1-VENDOR boots\nChange-Id: I34f243f73c173ca2e882d3738ccb81e3fad3a9da\nMerged-In: I34f243f73c173ca2e882d3738ccb81e3fad3a9da\n(cherry picked from commit dd18472e56340e87a421546f2b3660d1d1ad09e2)\n"
    },
    {
      "commit": "886b96ef9a1b81a1a95e8b1ec9daabacda05793f",
      "tree": "2b1d46f666e0caea4649b62faf4093975ff8fae4",
      "parents": [
        "903e5702f411bbe291f297c5e63ca60e4ab8f028"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue May 08 17:52:18 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu May 17 14:26:54 2018 +0800"
      },
      "message": "Extract ld.config.txt lookup code\n\nThis commit extracts ld.config.txt lookup code into\n`get_ld_config_file_path()`.\n\nBug: 78605339\nTest: aosp_walleye-userdebug builds and boots\nChange-Id: I129f19cd032de02a56bda57231521c02a4b4e4c0\nMerged-In: I129f19cd032de02a56bda57231521c02a4b4e4c0\n(cherry picked from commit 21e496cf2916d8361f378ed96357bf806b0f198c)\n"
    },
    {
      "commit": "5603c6e6b9722cb8fcd1bd7a361b64c8dae47a50",
      "tree": "6d83ddddfdb31dd367bd882a256bef41de069771",
      "parents": [
        "af2eb6f40adc6c293a634cd7733536dc41302d8a"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Apr 27 21:53:11 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon May 14 18:08:01 2018 +0900"
      },
      "message": "Mark as recovery_available: true\n\nLibraries that are direct or indirect dependencies of modules installed\nto recovery partition (e.g. toybox) are marked as recovery_available:\ntrue. This allows a recovery variant of the lib is created when it is\ndepended by other recovery or recovery_available modules.\n\nBug: 67916654\nBug: 64960723\nBug: 63673171\nBug: 29921292\nTest: m -j\nChange-Id: I59bf859a10a218af6591025a0fe7d1853e328405\n"
    },
    {
      "commit": "8b142566e346beeabca774e01f81934280bcd6b6",
      "tree": "f55079f62d362e1f076a2152055c1133ae648674",
      "parents": [
        "e0906d8f558675f77636f79e9f232329a3b95e2e"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed May 09 15:22:38 2018 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Sat May 12 10:58:00 2018 +0200"
      },
      "message": "vdso should be available in all namespaces\n\nvdso should be available in all namespaces when present. This\nbug went undetected because the way libc currently uses vdso (it\ndoes all the lookups itself). This makes it available for the\nprograms that want to take advantage by dlopening it.\n\nBug: http://b/73105445\nBug: http://b/79561555\nTest: adb shell /data/nativetest/arm/bionic-unit-tests/bionic-unit-tests --gtest_filter\u003ddl.exec_with_ld_config_file\nTest: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: I8eae0c9848f256190d1c9ec85d10dc6ce383a8bc\n(cherry picked from commit 69c68c46ac18a440bf1c0447d8343a6dbad595f1)\n"
    },
    {
      "commit": "c01b849c9a363f3ed725f36eff0e622a46c72bb8",
      "tree": "ca7da283e50be2f55f1526a970090d088b6ede54",
      "parents": [
        "1d509bc8785ef00cc57426ee79076623008da105"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 09 09:54:30 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 09 09:54:30 2018 -0700"
      },
      "message": "Remove obsolete workaround.\n\nWe removed the cast in question in\nd390df1dbc038843889946555c3ea53548dcab5d.\n\nBug: N/A\nTest: builds\nChange-Id: I56a034432fd11aeca00c09cb11226bdae465366f\n"
    },
    {
      "commit": "7217a092a6cc122f7601e4f0007f844f15ffeb3a",
      "tree": "ce4e1c8b88ddca1006f1be3e5e71349ac30cc083",
      "parents": [
        "8602538a15f89f91d6994c3abfd64a274bf7ddb0"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Apr 27 12:19:07 2018 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Sun Apr 29 13:39:46 2018 +0200"
      },
      "message": "Libraries without dt_soname are inaccessible\n\nWhen linker tries to check if a library without dt_soname is accessible\nit crashes. This change fixes this problem to return false instead\n(making them inaccessible from other namespaces)\n\nThis went unnoticed because vendor libraries on current\ndevices all have dt_soname set. This was only discovered\non one of the newer devices which has a vendor prebuilt\nlibrary without a soname.\n\nBug: http://b/78661414\nBug: https://issuetracker.google.com/77287902\nTest: cts-tradefed run commandAndExit cts -m CtsJniTestCases\nChange-Id: Idb192b4ed7a810840ba2a9177bad2360ffbb75e2\n(cherry picked from commit 94f7a87510138ac7b061611b181fa6e995d41764)\n"
    },
    {
      "commit": "73de62e461c688dd956b1a1fc1042cb75bf10e08",
      "tree": "9e9435c2725d383f05b19a98ab8c20a2f5f34860",
      "parents": [
        "af0ad77af5fc2a4f39fa29b4e6720898d92fb2b4"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Apr 16 09:51:50 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Apr 16 09:51:50 2018 -0700"
      },
      "message": "Disable lld, failed to link bionic/linker.\n\n* Upstream bug: https://bugs.llvm.org/show_bug.cgi?id\u003d36295\n\nBug: 78115263\nTest: make checkbuild\nChange-Id: Id38d90f90ca2e3505a47e40c1a3fe0647e7f3a32\n"
    },
    {
      "commit": "470b66644b912ac3025ea30141f2f327bb879445",
      "tree": "919718ba86bbabe7bec99cd2087f479b5594488f",
      "parents": [
        "ef59154d4129b132884f74ea0f38146f67383d81"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Mar 27 22:10:55 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Mar 30 13:56:03 2018 -0700"
      },
      "message": "Break libdl.so and ld-android.so\u0027s dependency on libc.so.\n\n * Specify \"nocrt: true\" to avoid calling __cxa_finalize.\n\n * Define a dummy __aeabi_unwind_cpp_pr0 for arm32.\n\nBug: b/62815515\nBug: b/73873002\nTest: boot AOSP hikey960-userdebug\nTest: run ndk_cxa_example in special /system/bin/debug namespace\nTest: run Bionic unit tests\nChange-Id: I59bcb100a2753286b59c51a47d7a183507219a07\n"
    },
    {
      "commit": "9724e93c196d0dbaa0e60bf45c29971a22da50c9",
      "tree": "0d3e0847bff250b168a0fcb2af431ba7fed097ee",
      "parents": [
        "4d339287080022ed67bb98949d7eb6737f8c917b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 18:46:07 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 18:46:07 2018 -0700"
      },
      "message": "Reject .so files using ELF TLS.\n\nBug: http://b/74361956\nTest: ran tests\nChange-Id: I53e71252eb08c607c2c436dcba433374c8c53887\n"
    },
    {
      "commit": "9076b0c4e78e8680ce40ce48321e8ab81a87705b",
      "tree": "180da47f5ec09a0d6710feae9868aad5e33abc1e",
      "parents": [
        "bf6c0c8eaf755f5d1686b5022ee4c6d9eaf68686"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 28 11:29:45 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 28 12:37:28 2018 -0800"
      },
      "message": "Be clearer about linker warnings.\n\nExplicitly say \"warning\" for warnings, explicitly say what action\nwe\u0027re going to take (such as \"(ignoring)\"), always provide a link to\nour documentation when there is one, explicitly say what API level the\nbehavior changes at, and explicitly say why we\u0027re allowing the misbehavior\nfor now.\n\nBug: http://b/71852862\nTest: ran tests, looked at logcat\nChange-Id: I1795a5af45deb904332b866d7d666690dae4340b\n"
    },
    {
      "commit": "153168c855962082d23b3124286005f90ccb39f8",
      "tree": "892ac8546b3dc8e8fb179b2158f64e0452b464c0",
      "parents": [
        "0da25235703e8f382c7b9c5e606b84dd7a55711e"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Feb 20 16:51:41 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Feb 20 17:10:00 2018 +0100"
      },
      "message": "Fix RTLD_NEXT/DEFAULT lookup\n\nRTLD_NEXT/DEFAULT lookup should not skip handle lookup\nin the case when the load group is RTLD_GLOBAL.\n\nNote that there is a difference between load group is local group.\nThe local group includes externally referenced libraries where\nthe load group does not. The external reference in this context is a\nDT_NEEDED library that belongs to a previously loaded group.\n\nBug: http://b/72237367\nTest: bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: I8997cc961c13a5396f1756161798b45ed1cab16c\n"
    },
    {
      "commit": "4e6bf9e9fa745228fa46b93272eee18d3a22a0d9",
      "tree": "c6d6f165d8a2c15e0985984e0b650904c2e2e050",
      "parents": [
        "d5172fced0f88114e21086db5defaee64371de32"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 16 10:53:03 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 16 10:53:03 2018 -0800"
      },
      "message": "Remove obsolete debuggerd32/debuggerd64 hack.\n\nBug: N/A\nTest: builds\nChange-Id: I159eea4e1c0d88e5e51184479ed020e7597390ba\n"
    },
    {
      "commit": "cbc80ba9d839675a0c4891e2ab33f39ba51b04b2",
      "tree": "0b24e6123c94bd3e61d94fd6eca6a3b9cc9b074e",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 14:26:29 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 14:27:17 2018 -0800"
      },
      "message": "Switch the rest of our internal headers to #pragma once.\n\nWe\u0027ve been using #pragma once for new internal files, but let\u0027s be more bold.\n\nBug: N/A\nTest: builds\nChange-Id: I7e2ee2730043bd884f9571cdbd8b524043030c07\n"
    },
    {
      "commit": "f857d59635cda31db2fdc0c58193f51eecf2cc73",
      "tree": "2cac454ac04d26b4b52518274d2914af11e0bb26",
      "parents": [
        "919dd9dcb4ca547a67079b85494236cd5f680598"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Feb 12 19:59:46 2018 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Feb 12 21:43:12 2018 -0800"
      },
      "message": "Switch x86 begin.c to asm; align ESP correctly\n\nEvery other architecture already uses an assembly file here.\n\nThe previous code aligned ESP incorrectly, but it doesn\u0027t really matter\nbecause everything is built with Clang\u0027s -mstackrealign, which realigns\nESP in every function prologue.\n\nBug: http://b/73140672#comment4\nTest: lunch aosp_x86-eng; m; emulator; device boots\nTest: manual\nChange-Id: I921fd7848cdc611b4f8f13d1176d1983ffea952d\n"
    },
    {
      "commit": "6fa9bddbc7188aeb20d6faa4da2e62c12f5a5af2",
      "tree": "552563660ec8210ce32014970dd35c58d424fca1",
      "parents": [
        "5bf2c20f43b0f1883048a929f61ba8797b331203",
        "72282add20b19a0500140e0ffcab4b36a9548290"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 10 01:44:07 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 10 01:44:07 2018 +0000"
      },
      "message": "Merge \"linker_memory: return success in enable_fallback_allocator.\""
    },
    {
      "commit": "d50a1de565c00d415ad39ef8c14e392da4c99d43",
      "tree": "011e021bbb021d83634d00ffa3255ebd7d468cfe",
      "parents": [
        "a70089163ca09a983772dd2a8daa17e47f8ede53"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 05 17:30:57 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 05 17:30:57 2018 -0800"
      },
      "message": "Run bpfmt manually.\n\nBug: N/A\nTest: builds\nChange-Id: I0cf145c3b699ac8ef170a63366832f63a9cc1a91\n"
    },
    {
      "commit": "321476a3ecc6b25579b2ddfb86b10a405f90eb8c",
      "tree": "c0b4a8781d1fc16eecb53950a497d12d993b7ec0",
      "parents": [
        "fb56e048971e9955f902f2036299af726c02beab"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Jan 29 15:32:37 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Jan 29 15:32:37 2018 +0100"
      },
      "message": "Test ld-android.so directly\n\nThis CL addresses review comments from\nhttps://android-review.googlesource.com/c/platform/bionic/+/595067\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: I2c0fdf2a89fe6ff134308e202fb99a74080ee0ed\n"
    },
    {
      "commit": "2e2a8930e5f9eb2d9ea4fdb61f746c6f2e2048ac",
      "tree": "8adca0f4df67038588d4dbe7095204498e2f4dce",
      "parents": [
        "97d1c75ca5125f8e1dc6db32af1d22807fca1950",
        "f16b65932bb7adb1568a3a1e11ffa750d18e30ae"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 27 00:00:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 27 00:00:17 2018 +0000"
      },
      "message": "Merge \"linker: simpler encoding for SHT_RELR sections.\""
    },
    {
      "commit": "f16b65932bb7adb1568a3a1e11ffa750d18e30ae",
      "tree": "61eba52655668d025687547b8f9b3cf3c4c75c6b",
      "parents": [
        "25ac4476d86f93990d1404526618fd0529cc9d36"
      ],
      "author": {
        "name": "Rahul Chaudhry",
        "email": "rahulchaudhry@google.com",
        "time": "Thu Jan 25 15:34:15 2018 -0800"
      },
      "committer": {
        "name": "Rahul Chaudhry",
        "email": "rahulchaudhry@google.com",
        "time": "Fri Jan 26 11:46:47 2018 -0800"
      },
      "message": "linker: simpler encoding for SHT_RELR sections.\n\nThis change modifies the encoding used in SHT_RELR sections to a simpler\nversion that gives better results. This encoding was suggested by Andrew\nGrieve and is described in this post on generic-abi@googlegroups.com:\n    https://groups.google.com/d/msg/generic-abi/bX460iggiKg/Pi9aSwwABgAJ\n\nBug: None\nTest: Built image for marlin, flashed on device, ran arm and\n      aarch64 binaries containing \u0027.relr.dyn\u0027 sections using\n      the new encoding.\n\nChange-Id: I266affe0fbad91dc375995985a221cb02499447b\n"
    },
    {
      "commit": "9ee4591cb4a23b3c1a899f5ae3e4d769d0ba5a15",
      "tree": "317be1850b14a18f65bc8c9247971318c7606307",
      "parents": [
        "73871ad09be8a8259171d606c4e3e3cf08d4733c"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Jan 18 12:05:09 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Jan 25 14:45:29 2018 +0800"
      },
      "message": "linker: Allow link namespaces without name filters\n\nThis commit allows users to create a link without soname filters between\ntwo linker namespaces.\n\nThe motivation is to establish one-way shared library isolation.  For\nexample, assume that there are two linker namespaces `default` and\n`vndk`.  We would like to limit the shared libraries that can be used by\nthe `default` namespace.  In the meanwhile, we would like to allow the\n`vndk` namespace to use shared libs from the `default` namespace if the\nsoname cannot be find in the search path or loaded sonames of the `vndk`\nnamespace.\n\n          shared_libs  \u003d %VNDK_CORE_LIBRARIES%\n          shared_libs +\u003d %VNDK_SAMEPROCESS_LIBRARIES%\n    vndk \u003c-------------------------------------------- default\n       \\_______________________________________________/^\n                allow_all_shared_libs \u003d true\n\nandroid_link_namespaces_all_libs() is added to libdl, but it is\nversioned as LIBC_PRIVATE.  android_link_namespaces_all_libs() is only\nfor unit tests.\n\nBug: 69824336\n\nTest: adb shell /data/nativetest/linker-unit-tests/linker-unit-tests32\nTest: adb shell /data/nativetest64/linker-unit-tests/linker-unit-tests64\n\nTest: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests\nTest: adb shell /data/nativetest64/bionic-unit-tests/bionic-unit-tests\n\nTest: Update /system/etc/ld.config*.txt and check whether the vndk\nlinker namespace of the vendor process can access the shared libs from\nthe default linker namespace.\n\nChange-Id: I2879f0c5f5af60c7e56f8f743ebd2872e552286b\n"
    },
    {
      "commit": "72282add20b19a0500140e0ffcab4b36a9548290",
      "tree": "c46e312a0a391edf6f1496e8ff75097279a6be6c",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jan 24 14:45:58 2018 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jan 24 15:08:53 2018 -0800"
      },
      "message": "linker_memory: return success in enable_fallback_allocator.\n\nInstead of aborting when in use, return a bool instead.\n\nTest: debuggerd_test\nChange-Id: Ifd2e4439303c95054298b0a05e0cb648ded1306c\n"
    },
    {
      "commit": "d00d38b36be0fd25399256d0cebdd71625aea2b6",
      "tree": "b32e0212754398814e0f825783eec448cc712249",
      "parents": [
        "86a2fba164cb87375b81b6873f7399e92073ea32",
        "b7feec74547f84559a1467aca02708ff61346d2a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 23 00:24:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 23 00:24:26 2018 +0000"
      },
      "message": "Merge \"linker: add experimental support for SHT_RELR sections.\""
    },
    {
      "commit": "b7feec74547f84559a1467aca02708ff61346d2a",
      "tree": "7eb0f5d007b7593c1daf89bfd8b5f84645996b44",
      "parents": [
        "df4c92888e6283c8f6f1731391a6bccbc30d64db"
      ],
      "author": {
        "name": "Rahul Chaudhry",
        "email": "rahulchaudhry@google.com",
        "time": "Tue Dec 19 15:25:23 2017 -0800"
      },
      "committer": {
        "name": "Rahul Chaudhry",
        "email": "rahulchaudhry@google.com",
        "time": "Mon Jan 22 12:41:27 2018 -0800"
      },
      "message": "linker: add experimental support for SHT_RELR sections.\n\nThis change adds experimental support for SHT_RELR sections, proposed\nhere: https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg\n\nDefinitions for the new ELF section type and dynamic array tags, as well\nas the encoding used in the new section are all under discussion and are\nsubject to change. Use with caution!\n\nBug: None\nTest: Built image for marlin, flashed on device, ran arm and\n      aarch64 binaries containing \u0027.relr.dyn\u0027 sections.\n\nChange-Id: I2953ae932d3c42ae394e71f8fa058013758a1778\n"
    },
    {
      "commit": "5cec377f49d6429b19895eb632225cd757ea611e",
      "tree": "bcd08fe1e6b656a5a4e235a225fbe88feb54a112",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:45:23 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:56:12 2018 -0800"
      },
      "message": "Address a bunch of clang-tidy complaints.\n\nThere were a bunch more unreasonable/incorrect ones, but these ones\nseemed legit. Nothing very interesting, though.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f\n"
    },
    {
      "commit": "39ee5a4b47d1520e34cf91acf3bb37fb0eaab106",
      "tree": "cca1768ef3b826b6822c31d25eaac64f12e52e54",
      "parents": [
        "a238a9a32815f63b286d8383f7f73e2319472583",
        "4d1cc9df119e017abb4f71b9198e5024afd2d7ad"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 11 04:29:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 11 04:29:33 2018 +0000"
      },
      "message": "Merge \"Adapt to the new libc++/libc++abi update.\""
    },
    {
      "commit": "06016f226efe7aff2736643cb8e719c513948ecc",
      "tree": "9966630fba35664dc74ac357c43dc81257115410",
      "parents": [
        "581723ebc7acdbf8b095b44928dac3d0767382fa"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Jan 05 11:39:28 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jan 10 10:24:06 2018 +0100"
      },
      "message": "Fix dlclose for libraries with thread_local dtors\n\nIntroduce new flag to mark soinfo as TLS_NODELETE when\nthere are thread_local dtors associated with dso_handle\nbelonging to it.\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*\nTest: bionic-unit-tests-glibc --gtest_filter\u003ddl*\nBug: https://github.com/android-ndk/ndk/issues/360\nChange-Id: I724ef89fc899788f95c47e6372c38b3313f18fed\n"
    },
    {
      "commit": "581723ebc7acdbf8b095b44928dac3d0767382fa",
      "tree": "0be856cdc7e5b355f822765bf07682e1e1d4ca07",
      "parents": [
        "11da1dcd8c35f16a6e6bf869250ca06381e71dca"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Jan 05 14:31:44 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jan 09 11:27:23 2018 +0100"
      },
      "message": "Make ld-android.so export linker symbols\n\nld-android.so exports exact same set of symbols\nas linker. Since it is not supposed to be loaded\nevery symbol points to fail() method.\n\nTest: make\nTest: bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: I23bec365b302ce4ddf5f08832e665ae2b181cf8a\n"
    },
    {
      "commit": "11da1dcd8c35f16a6e6bf869250ca06381e71dca",
      "tree": "627146f228fee73aa8fadead8f62ee902626b390",
      "parents": [
        "8e8c2c001380ad98f2e239c0c840dad80ebec35c"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Jan 05 13:35:43 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jan 09 11:13:40 2018 +0100"
      },
      "message": "Move ld-android.so build under linker/\n\nThis will allow us to apply linker\u0027s version script to the \"fake\"\nversion of ld-android.so.\n\nTest: make\nChange-Id: I55645cc0fc90e6c65e2269ba2340a908aeed1eaa\n"
    },
    {
      "commit": "8e8c2c001380ad98f2e239c0c840dad80ebec35c",
      "tree": "d5f616a73a6ed5c29040682a2d5b4daa744092e1",
      "parents": [
        "f9fcb1efae7458109b13260d7a7f8db939a1aa2c"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Jan 04 12:08:32 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jan 09 11:11:46 2018 +0100"
      },
      "message": "Unhardcode linker soname\n\nSet and use DT_SONAME instead.\n\nTest: bionic-unit-tests\nChange-Id: I38a246c8a43664792424e8fef96ae2ff5f743ba6\n"
    },
    {
      "commit": "4d1cc9df119e017abb4f71b9198e5024afd2d7ad",
      "tree": "d985346e036a46931b0c370ed6ed1524279116ba",
      "parents": [
        "558a4f59237245916d93075eb60ed7d16cf55c42"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jan 08 14:44:42 2018 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jan 08 14:44:42 2018 -0800"
      },
      "message": "Adapt to the new libc++/libc++abi update.\n\nC++17 removed a handful of things that are used in the libclang\nheaders, which are used by the versioner. Enable the flag that\nre-exposes these until we have a C++17 compatible libclang.\n\nAdd a stub posix_memalign to the linker. libc++abi uses posix_memalign\nwhen allocating exceptions, which the linker does not use.\n\nTest: make checkbuild\nBug: None\nChange-Id: I32f9d0591ef99a610f27efed90a5c9fd150f0d3e\n"
    },
    {
      "commit": "965d06da1ed957c349dbdfcc7831b462b757bf85",
      "tree": "e07845fb90aa116761abf3699c114a156fb02650",
      "parents": [
        "d351581aa9ba1fbce227db35500471fe59c45f08"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Nov 28 16:03:07 2017 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Sun Dec 10 22:04:55 2017 +0100"
      },
      "message": "Fix logic in loading dependencies crossing namespace boundaries\n\nThis change addresses multiple problems introduced by\n02586a2a34e6acfccf359b94db840f422b6c0231\n\n1. In the case of unsuccessful dlopen the failure guard is triggered\nfor two namespaces which leads to double unload.\n\n2. In the case where load_tasks includes libraries from 3 and more\nnamespaces it results in incorrect linking of libraries shared between\nsecond and third/forth and so on namespaces.\n\nThe root cause of these problems was recursive call to find_libraries.\nIt does not do what it is expected to do. It does not form new load_tasks\nlist and immediately jumps to linking local_group. Not only this skips\nreference counting it also will include unlinked but accessible library\nfrom third (and fourth and fifth) namespaces in invalid local group. The\nbest case scenario here is that for 3 or more namesapces this will\nfail to link. The worse case scenario it will link the library\nincorrectly with will lead to very hard to catch bugs.\n\nThis change removes recursive call and replaces it with explicit list of\nlocal_groups which should be linked. It also revisits the way we do\nreference counting - with this change the reference counts are updated after\nafter libraries are successfully loaded.\n\nAlso update soinfo_free to abort in case when linker tries to free same\nsoinfo for the second time - this makes linker behavior less undefined.\n\nTest: bionic-unit-tests\nBug: http://b/69787209\nChange-Id: Iea25ced181a98c6503cce6e2b832c91d697342d5\n"
    },
    {
      "commit": "816b259880912443de7232e27fa313d53c9048a7",
      "tree": "b01eeb650a2e32321296139a3fad0f1b4b817f78",
      "parents": [
        "6c77566dbff569816715dcd6dffd0085d9961234",
        "7b5073767da551858c985f0adcbe81f3380c0c2f"
      ],
      "author": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sonymobile.com",
        "time": "Wed Dec 06 04:09:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 06 04:09:37 2017 +0000"
      },
      "message": "Merge \"linker: add support for odm partition\"\nam: 7b5073767d\n\nChange-Id: I0c1356f53cd33e0cd6a78f0798fed8b395893859\n"
    },
    {
      "commit": "7b5073767da551858c985f0adcbe81f3380c0c2f",
      "tree": "ff67a81d91de7f350195ffa1540316e163a21a33",
      "parents": [
        "c5f193cc459319e086d7f027a1db406cd1434f89",
        "074a9fd3da4d1d7a317ce08fa65835788d98da7b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 06 04:03:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 06 04:03:07 2017 +0000"
      },
      "message": "Merge \"linker: add support for odm partition\""
    },
    {
      "commit": "2573be637c9387ababed1ce5110a0044e425842d",
      "tree": "46a1f03edb5413e95b0c98b3f523d5ea1db33c5a",
      "parents": [
        "bf9cf750a4b893a61cd425dffd640986ed6f2857",
        "bfd06f63e538681beeb9ec67bccd994ad9cd5bdf"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Dec 04 01:52:14 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Dec 04 01:52:14 2017 +0000"
      },
      "message": "Merge \"Allow property +\u003d value in ld.config.txt\"\nam: bfd06f63e5\n\nChange-Id: Id536cea8a7161c5dc31f654d1989eb61ff966a2e\n"
    },
    {
      "commit": "bfd06f63e538681beeb9ec67bccd994ad9cd5bdf",
      "tree": "94eea86e930fcf95d81b492a29a8205beab79df9",
      "parents": [
        "86a380379965714594457a29077aaee05bad77ba",
        "8b0295113589434f183a8a7e69714ea47e188f45"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 04 01:43:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 04 01:43:27 2017 +0000"
      },
      "message": "Merge \"Allow property +\u003d value in ld.config.txt\""
    },
    {
      "commit": "bf9cf750a4b893a61cd425dffd640986ed6f2857",
      "tree": "a7288f7f502b56b549489afcf67a7cacf4a2fac8",
      "parents": [
        "f8fdd5dacd25d25af0c6327025e920558cde2d97",
        "86a380379965714594457a29077aaee05bad77ba"
      ],
      "author": {
        "name": "Justin Yun",
        "email": "justinyun@google.com",
        "time": "Sun Dec 03 14:32:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Dec 03 14:32:36 2017 +0000"
      },
      "message": "Merge \"Use ld.config.$VER.txt when current VNDK version is $VER\"\nam: 86a3803799\n\nChange-Id: I350a75a183717e3cd0a68d3a9ed524f19f077a2f\n"
    },
    {
      "commit": "53ce74288c4ba4e303b897a4ce0b4e9806c6e87c",
      "tree": "c9e909d791b30da5a3106d18bb6bc18645768ae1",
      "parents": [
        "96867b148f5cc85951bc0170c4d94f8f124f9f06"
      ],
      "author": {
        "name": "Justin Yun",
        "email": "justinyun@google.com",
        "time": "Mon Nov 27 16:28:07 2017 +0900"
      },
      "committer": {
        "name": "Justin Yun",
        "email": "justinyun@google.com",
        "time": "Sun Dec 03 23:26:53 2017 +0900"
      },
      "message": "Use ld.config.$VER.txt when current VNDK version is $VER\n\nWhen ro.vndk.version is set to a specific version, not \"current\",\nuse ld.config.$VER.txt as a linker namespace configuration file,\nwhere $VER is the VNDK version set by ro.vndk.version.\n\nBecause ro.vndk.version is set by the vendor partition, the\nconfiguration file will be automatically selected by the VNDK version\nof vendor patition.\n\nIf ro.vndk.version is current or not set, ld.config.txt will be used\nas before.\n\nBug: 69531793\nTest: Build for a Pixel2 device.\n  In the out/target/product/\u003cdevice\u003e directory,\n    rename system/etc/ld.config.txt to system/etc/ld.config.27.1.0.txt\n    rename system/lib[64]/vndk to system/lib[64]/vndk-27.1.0\n    copy system/lib[64]/vndk-sp to system/lib[64]/vndk-sp-27.1.0\n    set ro.vndk.version to 27.1.0 in vendor/default.prop\n  Build system and vendor images with \"make snod\" and \"make vnod\".\n  Disble vbmeta using avbtool.\n  Flash a device and check boot.\n\nChange-Id: Ic55bb0a741d434e5fa93e109be15df9d9de3f105\n"
    },
    {
      "commit": "8b0295113589434f183a8a7e69714ea47e188f45",
      "tree": "f88cdf31ae0f4db73f8726981b5d16b650ab1cbe",
      "parents": [
        "c6097b0f9f7545c1d8e51cea0fa763c7f050da50"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Nov 29 18:30:53 2017 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Dec 01 10:58:10 2017 +0900"
      },
      "message": "Allow property +\u003d value in ld.config.txt\n\nld.config.txt currently does not support split line. As the file gets\nlarger, this limitation makes the file very unreadable. Now, long lines\ncan be avoided by breaking one line into multiple lines using +\u003d\noperator.\n\nex)\n\nnamespace.default.search.paths \u003d /system/${LIB}\nnamespace.default.search.paths +\u003d /system/${LIB}\n\nDelimitor (\u0027:\u0027 for *.paths and *.shared_libs, and \u0027,\u0027 for *.links) is\nautomatically added.\n\nBug: 69888716\nTest: linker-unit-tests passes\n\nChange-Id: I4b94fd4e7f8a76d59db8d1096c86aa2118e46625\n"
    },
    {
      "commit": "074a9fd3da4d1d7a317ce08fa65835788d98da7b",
      "tree": "7d757dfd61fc20307a9b955cfd371c620f66ce8c",
      "parents": [
        "fdacec1d4237373354d10c5a400c9c7a3a975285"
      ],
      "author": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sonymobile.com",
        "time": "Mon Sep 25 17:47:49 2017 +0200"
      },
      "committer": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sony.com",
        "time": "Fri Dec 01 06:21:17 2017 +0900"
      },
      "message": "linker: add support for odm partition\n\nIf libraries are on the odm partition they will fail to load\nThis patch adds the odm path as a search path for linker.\n\nTest: libraries load from the odm partition\nChange-Id: Ia7786e047cc565d74d25c025dacf9266b3763650\nSigned-off-by: Alin Jerpelea \u003calin.jerpelea@son.com\u003e\n"
    },
    {
      "commit": "65ba81b4e86aa4f3b11f5bd653551f52636390f8",
      "tree": "033dfd2fcb4e061868351173a803ee19f180dc74",
      "parents": [
        "f1e645c67b3d0850c7359c3bc8ee231de11b0a17",
        "4eb332439a68e2b2f629e46f1e93d6246bfa53d9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 19:34:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 29 19:34:10 2017 +0000"
      },
      "message": "Merge \"Revert \"Fix bug with double unload on unsuccessful dlopen\"\"\nam: 4eb332439a\n\nChange-Id: I21ba611931b2e5794ef49cae9bcafc8748ebe804\n"
    },
    {
      "commit": "27f1806b90aefa8b1335d0fdc3f109a8ac258638",
      "tree": "8490a196e61d2d161daa349898ff9a2cbcffb3d7",
      "parents": [
        "58554ccb8ac27fd3b5693efde2e1f7ab2a895ea2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 18:47:42 2017 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 18:48:33 2017 +0000"
      },
      "message": "Revert \"Fix bug with double unload on unsuccessful dlopen\"\n\nThis reverts commit 58554ccb8ac27fd3b5693efde2e1f7ab2a895ea2.\n\ncauses /vendor/bin/qseecomd to hit the new abort:\n\n[    8.983301] c5    603 DEBUG: Abort message: \u0027soinfo\u003d0x7147894cd0 is not in soinfo_list (double unload?)\u0027\n\nBug: http://b/69909887\nBug: http://b/69787209\nChange-Id: Ied38f797e0a071a1acc5ed41adf1b45e855143c7\n"
    },
    {
      "commit": "f1e645c67b3d0850c7359c3bc8ee231de11b0a17",
      "tree": "f02b13c02d85d0bdd19d97d424f3b5a40501e0de",
      "parents": [
        "cdfc8c1ff49a9b1ca1e5656135f9469acb6b4962",
        "dc89324e935470af1c67562204f8a988d0692185"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Nov 29 09:37:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 29 09:37:01 2017 +0000"
      },
      "message": "Merge \"Fix bug with double unload on unsuccessful dlopen\"\nam: dc89324e93\n\nChange-Id: Ibff72e8a13cdc737d950dc71f2612fc99740109f\n"
    },
    {
      "commit": "58554ccb8ac27fd3b5693efde2e1f7ab2a895ea2",
      "tree": "bc6ed3c66552ffa8fe1cfd27062471b26325a1d3",
      "parents": [
        "f5a6fd2001baad5ea92d50f9e38388a2eda21e23"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Nov 28 16:03:07 2017 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Nov 28 21:47:01 2017 +0100"
      },
      "message": "Fix bug with double unload on unsuccessful dlopen\n\nIn the case of unsuccessful dlopen the failure guard is triggered\nfor two namespaces which leads to double unload.\n\nAlso update soinfo_free to abort in case when linker tries to free same\nsoinfo for the second time - this makes linker behavior less undefined.\n\nTest: bionic-unit-tests\nBug: http://b/69787209\nChange-Id: I886787ee021b050667f967bce7aa2708390886ea\n"
    },
    {
      "commit": "74d57a37cb14360a2f2690fdb07aec4a60d5e673",
      "tree": "08d04e53cb1950ccf4dbc39a91daa50a984988c8",
      "parents": [
        "fe0a16fa38ae31044170169c00bd08493cf016b8",
        "e3d21c84af0b8e3244e4c67a873d2a16bfb85034"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Nov 14 13:14:23 2017 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Nov 14 13:14:23 2017 -0800"
      },
      "message": "Merge commit \u0027e3d21c84af0b8e3244e4c67a873d2a16bfb85034\u0027 into HEAD\n\nChange-Id: I09b21c2e27a0dfbef10633b20d8ee7adbedc1597\n"
    },
    {
      "commit": "c92ce715c50ef9942c5d4cdeecf343c2df6e82b4",
      "tree": "7b6fb24b96117c48af77f173aa30bc50ed24ba16",
      "parents": [
        "ae7483db2a6a93c0cb0c0eebc26f64b23168c6d3"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Oct 27 14:12:53 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Oct 27 15:38:15 2017 +0200"
      },
      "message": "Log dlclose calls and library unloads\n\nBug: http://b/29458203\nBug: http://b/68262627\nTest: make \u0026\u0026 run bionic-unit-tests\nTest: set debug.ld.all to dlopen and check the logs\nChange-Id: I9a5495843a4145f267cc3a4714294d05b1e1fe90\n"
    },
    {
      "commit": "0b1c8be3be5983e5ae3dfe4aa864675298b5455b",
      "tree": "5911601885ce84c9366700b77ea9acec5feb7dc1",
      "parents": [
        "8ab16c5da682c0ef86144390bada5d394dbb73a4",
        "8db36a51ff66c6849d355d8cb65142c0dcf7e1bc"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Oct 24 06:44:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 24 06:44:19 2017 +0000"
      },
      "message": "Merge \"linker: fix error message for inaccessible libs\""
    },
    {
      "commit": "8ab16c5da682c0ef86144390bada5d394dbb73a4",
      "tree": "6cce86a3fd77a3182c83f0a654175d96b372b786",
      "parents": [
        "6f12bfece5dcc01325e0abba56a46b1bcf991c69",
        "8fc5032ed282a33a012ef50bc34dd46afa4ad40c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 24 01:17:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 24 01:17:00 2017 +0000"
      },
      "message": "Merge \"Set search path to ro.vndk.version property\""
    },
    {
      "commit": "8db36a51ff66c6849d355d8cb65142c0dcf7e1bc",
      "tree": "1f373f1ec1ded07544e5b6ca03d8c1201803bb31",
      "parents": [
        "8f348a0cce048fc929b4ce0b850147cd7c737497"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Oct 23 15:10:10 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Oct 23 15:14:01 2017 +0200"
      },
      "message": "linker: fix error message for inaccessible libs\n\nAdded a test to make sure linker produces correct error message\nwhen user attempts to load a library in a linked namespace and fails.\n\nBug: http://b/67866190\nBug: http://b/64950640\nBug: http://b/64888291\nTest: bionic-unit-test --gtest_filter\u003ddlext*\nChange-Id: I5b5c2070d1388eff123118350b2b5c8fc7571a29\n"
    },
    {
      "commit": "27242c642eac64d4d47a1899af341170c9456d79",
      "tree": "8c60543178f3b463555b2e42638a3d5cc9da0d87",
      "parents": [
        "8f348a0cce048fc929b4ce0b850147cd7c737497"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 20 17:45:13 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 20 17:47:29 2017 -0700"
      },
      "message": "Actually correctly call vector::erase after remove_if.\n\nvector::erase(iterator) erases the element that that iterator points\nto, vector::erase(iterator a, iterator b) erases the range [a, b), with\na \u003d\u003d b being a no-op.\n\nTest: LD_PRELOAD\u003dlibc.so sh\nChange-Id: I6a85c1cfaa8eb67756cb75d421f332d5c9a43a33\n"
    },
    {
      "commit": "8fc5032ed282a33a012ef50bc34dd46afa4ad40c",
      "tree": "0ee56581ad4c25788e74504fc9001629e9c8f573",
      "parents": [
        "8f57fd41790883ce210866a5a20d77cc910c87ad"
      ],
      "author": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Tue Oct 10 14:12:40 2017 +0900"
      },
      "committer": {
        "name": "Sundong Ahn",
        "email": "sundongahn@google.com",
        "time": "Fri Oct 20 13:41:14 2017 +0900"
      },
      "message": "Set search path to ro.vndk.version property\n\nThe permitted and search paths should be changed according to VNDK\nversion for VNDK snapshot. So, {VNDK_VER} value is added in ld.config.txt\nfile and this value is set through the linker.\nIf ro.vndk.version is not set, search paths are vndk and vndk-sp as\nbefore.\n\nBug: 66074376\nTest: build \u0026 run\nChange-Id: I266b66fe1bc95d8925053ef497db11ac0a57c082\n"
    },
    {
      "commit": "9f69fc714aa5dfbe0f711cb41dc7006b8ebbe43e",
      "tree": "5bb5af79de86f36c5b387cb46e6500aafe825976",
      "parents": [
        "eadacbc2e272737aa3acd9609776cc709a1b77c0",
        "44f6e189d97fa3e07e2a95605d4ecd76bc73b103"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 20 02:29:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 20 02:29:58 2017 +0000"
      },
      "message": "Merge \"Correctly call vector::erase after std::remove_if.\""
    },
    {
      "commit": "01162f24696aedd0f80fde006596bec7786ac684",
      "tree": "df56be16f8b8caffdb1b8ed76ea7634ef7934476",
      "parents": [
        "8f57fd41790883ce210866a5a20d77cc910c87ad"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Oct 16 15:31:09 2017 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Oct 19 15:13:54 2017 +0900"
      },
      "message": "Fix: linker segfault on dlopen of a DF_1_GLOBAL so\n\nAdded the missing null check routine.\n\nBug: 67755729\nTest: dlfcn.dlopen_df_1_global added and it passes\nChange-Id: Ibe8db18b0b5a481e2e9937041abef6d6b179dd87\n"
    },
    {
      "commit": "44f6e189d97fa3e07e2a95605d4ecd76bc73b103",
      "tree": "7d408fac0b7c362e025aca37b4cbd3bd9bd55490",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 18 17:25:24 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 18 17:29:39 2017 -0700"
      },
      "message": "Correctly call vector::erase after std::remove_if.\n\nstd::remove_if moves removed elements to the end, without actually\nresizing the collection. To do so, you have to call erase on its\nreturned iterator.\n\nTest: mma\nChange-Id: Iae7f2f194166408f2b101d0c1cfc95202d8bbe63\n"
    },
    {
      "commit": "68039e5b67af831153b8609e68c0768140883823",
      "tree": "b967815dc98c88aa390a725b2236d71b9cf57c15",
      "parents": [
        "f22fd343d7f289308ccdb36030d8fb8ab3bfb875",
        "c46317416a10a5f184dda6f201054f6669ad3174"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 17 18:06:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 17 18:06:58 2017 +0000"
      },
      "message": "Merge \"Force _start to be the top frame for the linker.\" am: 5f1a8440ad am: 30ed16f7c7\nam: c46317416a\n\nChange-Id: I48f4dc665c22f3391c80509b6712ff63cbf76925\n"
    }
  ],
  "next": "aa81761c5e7d33074e83230019e638c67a4e974d"
}
