)]}'
{
  "log": [
    {
      "commit": "c65b55cded2369064458a772db2ed2dcf0e6d871",
      "tree": "a8f0bd042830d5aa587a47fbad3ac42284019df4",
      "parents": [
        "fb28c278b726a2281cef89cf25b5e9a2a5503b31",
        "3e928edc77751943f157ad7aba01b2453633e2c7"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Feb 14 14:42:49 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 14 14:42:49 2020 +0000"
      },
      "message": "Merge \"Remove XOM properties.\""
    },
    {
      "commit": "14798930ec71ef0c95afa32c9c92d0c353be3af3",
      "tree": "f5d02449f1fbcb41594f239c060328bdf8628aef",
      "parents": [
        "7482e240cf60fff52ec08cf9340edb231aae7079"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 13 15:40:07 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 13 15:58:48 2020 -0800"
      },
      "message": "Remove unused mips/mips64 code from the linker.\n\nTest: treehugger\nChange-Id: I42f1e4c492ac644cf78e7c1196ba9b3518f9c8f8\n"
    },
    {
      "commit": "3e928edc77751943f157ad7aba01b2453633e2c7",
      "tree": "a3f4e8fc47e08f173edf8803447e84b29735b8fb",
      "parents": [
        "38d115c7f091021c06364c1692ab95f9e97accd2"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Feb 11 13:58:13 2020 -0500"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Feb 13 14:20:44 2020 -0500"
      },
      "message": "Remove XOM properties.\n\nXOM is no longer supported by the build system, so remove these\nproperties.\n\nBug: 123034666\nBug: 147300048\nTest: Build succeeds.\nChange-Id: I77efc98241f45b1a78b1cca5560f64eef5ef22f4\n"
    },
    {
      "commit": "5a39cee1ce7638133eaaa65dc09d1734732b309b",
      "tree": "58a1b9f81bac698e2f5c107ce5e1645633b4e750",
      "parents": [
        "73e9f242ed07631798433df4e35f5f73443cb9f9"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Jan 21 16:43:56 2020 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Jan 22 12:09:33 2020 -0800"
      },
      "message": "Make ramdisk_available.\n\nTest: pass\nBug: 147347110\nChange-Id: I142311a7558a19d209bcd63207a88e12cf6f130e\n"
    },
    {
      "commit": "39d9156bdc435999f01d8a06983924b77a75580a",
      "tree": "d923c1a1cb43909d50b2e49b0e9bbd9bae8c36bf",
      "parents": [
        "b04be9b4ee45613000c669224044c2d2fbb86d4d",
        "f2b1e03606968acc7557c3e35e7e36a7da3ec524"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Jan 21 21:28:44 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 21 21:28:44 2020 +0000"
      },
      "message": "Merge \"Export the unwinder implementation from libc.\""
    },
    {
      "commit": "129f7a1d8e63ec1e33ef8b870364cb561da4fe1e",
      "tree": "ce8f558b316ea990e4c1dcdd6a02e1f60e1678f4",
      "parents": [
        "339ecef22d17748ae7c289d974a59b97484f6896"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Dec 23 16:45:47 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jan 13 13:29:25 2020 -0800"
      },
      "message": "Neon-optimized version of the GNU symbol calculation\n\nOn 64-bit walleye, improves the linker relocation benchmark from 71.9ms to\n70.7ms (1.7% of the run-time).\n\nOn a 32-bit device, it improves the linker relocation benchmark from\n205.5ms to 201.2ms (2.1% of the run-time).\n\n$ adb shell taskset 10 /data/benchmarktest64/linker-benchmarks/linker-benchmarks --benchmark_repetitions\u003d100 --benchmark_display_aggregates_only\n--------------------------------------------------------------------\nBenchmark                          Time             CPU   Iterations\n--------------------------------------------------------------------\nBM_gnu_hash_simple_mean        15232 ns        15212 ns          100\nBM_gnu_hash_simple_median      15176 ns        15159 ns          100\nBM_gnu_hash_simple_stddev        111 ns          110 ns          100\nBM_gnu_hash_neon_mean          10265 ns        10252 ns          100\nBM_gnu_hash_neon_median        10261 ns        10249 ns          100\nBM_gnu_hash_neon_stddev         28.1 ns         23.9 ns          100\n\nBug: none\nTest: linker-unit-tests\nTest: linker-benchmarks\nChange-Id: I3983bca1dddc9241bb70290ad3651d895f046660\n"
    },
    {
      "commit": "339ecef22d17748ae7c289d974a59b97484f6896",
      "tree": "504ddd62b1551ca5fe9296e631d08977a24fcede",
      "parents": [
        "a04764bd286cf86f28d65487e1b6d6d36c9671e8"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 02 16:36:06 2020 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jan 13 13:29:25 2020 -0800"
      },
      "message": "Optimize GNU hash linking for large inputs\n\nSymbol lookup is O(L) where L is the number of libraries to search (e.g.\nin the global and local lookup groups). Factor out the per-DSO work into\nsoinfo_do_lookup_impl, and optimize for the situation where all the DSOs\nare using DT_GNU_HASH (rather than SysV hashes).\n\nTo load a set of libraries, the loader first constructs an auxiliary list\nof libraries (SymbolLookupList, containing SymbolLookupLib objects). The\nSymbolLookupList is reused for each DSO in a load group. (-Bsymbolic is\naccommodated by modifying the SymbolLookupLib at the front of the list.)\nTo search for a symbol, soinfo_do_lookup_impl has a small loop that first\nscans a vector of GNU bloom filters looking for a possible match.\n\nThere was a slight improvement from templatizing soinfo_do_lookup_impl\nand skipping the does-this-DSO-lack-GNU-hash check.\n\nRewrite the relocation processing loop to be faster. There are specialized\nfunctions that handle the expected relocation types in normal relocation\nsections and in PLT relocation sections.\n\nThis CL can reduce the initial link time of large programs by around\n40-50% (e.g. audioserver, cameraserver, etc). On the linker relocation\nbenchmark (64-bit walleye), it reduces the time from 131.6ms to 71.9ms.\n\nBug: http://b/143577578 (incidentally fixed by this CL)\nTest: bionic-unit-tests\nChange-Id: If40a42fb6ff566570f7280b71d58f7fa290b9343\n"
    },
    {
      "commit": "f2b1e03606968acc7557c3e35e7e36a7da3ec524",
      "tree": "97fc6c6a20f8a2eeb63d17dbeab9092feb8f584f",
      "parents": [
        "27a8c60f045f939ab1cb7157313778966ed29404"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Dec 10 17:41:16 2019 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Jan 10 19:07:59 2020 -0800"
      },
      "message": "Export the unwinder implementation from libc.\n\nThis supports the soong commit which causes most platform binaries to stop\nstatically linking against the unwinder implementation. The soong commit\nmessage has more motivation for this change.\n\nARM32 uses LLVM libunwind, while all other platforms use libgcc as the\nunwinder implementation. This matches the current choices of unwinders on\nthe various architectures, but means that apps which were directly linking\nagainst the libc.so unwinder symbols on ARM32 are now using LLVM libunwind\ninstead of libgcc.\n\nSet libc_headers sdk_version to 1 so that libunwind_llvm can depend on it,\nand stop statically linking libunwind into libc_malloc_debug.\n\nBug: 144430859\nChange-Id: I52c7f7893d93f500383aeb0b76086c3b6f1935a5\n"
    },
    {
      "commit": "551565e87c595aeced1cd1edf50c916378a3623e",
      "tree": "43f10d60e3b39bfeef503a61e1b080747f3b74dc",
      "parents": [
        "0e12ccedd4710b13297c496f42e2ec53dd456957"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Dec 23 16:03:14 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jan 06 16:06:37 2020 -0800"
      },
      "message": "Create linker_log[_va_list] functions\n\nA later linker CL defines a function that needs to forward a printf format\nand argument list to TRACE(), but there is no version of the TRACE macro\nthat works with a va_list. The CL also needs to check the verbosity level,\nusing a slow path if tracing is enabled, so define LINKER_VERBOSITY_xxx\nmacros.\n\nBug: none\nTest: bionic unit tests\nChange-Id: I578d36a12dc40f9a651956b4b09adc1a7c644e24\n"
    },
    {
      "commit": "4d4087dc95d876ee2c396478b92d80469cb7bbff",
      "tree": "50e5c206f98701e8f9f1a4c79c1bcc636a469a92",
      "parents": [
        "9416e0275789b9a14e816e6fefb3d9cfeb4942f5"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Dec 02 16:55:48 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Dec 04 13:31:56 2019 -0800"
      },
      "message": "Replace LIB_PATH macro with kLibPath\n\nThe string is still \"lib\" or \"lib64\" with native bridge. It doesn\u0027t need\nto be configured in the Android.bp file anymore, so move it to a header\nfile. This change will ensure that ${LIB} expands to the same thing in\nboth ld.config.txt and DT_RUN_PATH.\n\nBug: http://b/145197367\nTest: manual\nChange-Id: Iab87f3156f2984dd3a20e4ccda423892c8b58763\nMerged-In: Iab87f3156f2984dd3a20e4ccda423892c8b58763\n"
    },
    {
      "commit": "249757bae2b45c845feddee2ba9f794a54d8ea14",
      "tree": "5e727eef8f9a29cbf52516b119c407cbfb7cb3a8",
      "parents": [
        "80e40f01c83850d8d5f9753ed165bab310f9c865"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Nov 01 17:18:28 2019 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Nov 05 13:37:51 2019 -0800"
      },
      "message": "Use ifuncs in the linker\n\nUsing ifuncs allows the linker to select faster versions of libc functions\nlike strcmp, making linking faster.\n\nThe linker continues to first initialize TLS, then call the ifunc\nresolvers. There are small amounts of code in Bionic that need to avoid\ncalling functions selected using ifuncs (generally string.h APIs). I\u0027ve\ntried to compile those pieces with -ffreestanding. Maybe it\u0027s unnecessary,\nbut maybe it could help avoid compiler-inserted memset calls, and maybe\nit will be useful later on.\n\nThe ifuncs are called in a special early pass using special\n__rel[a]_iplt_start / __rel[a]_iplt_end symbols. The linker will encounter\nthe ifuncs again as R_*_IRELATIVE dynamic relocations, so they\u0027re skipped\non the second pass.\n\nBreak linker_main.cpp into its own liblinker_main library so it can be\ncompiled with -ffreestanding.\n\nOn walleye, this change fixes a recent 2.3% linker64 start-up time\nregression (156.6ms -\u003e 160.2ms), but it also helps the 32-bit time by\nabout 1.9% on the same benchmark. I\u0027m measuring the run-time using a\nsynthetic benchmark based on loading libandroid_servers.so.\n\nTest: bionic unit tests, manual benchmarking\nBug: none\nMerged-In: Ieb9446c2df13a66fc0d377596756becad0af6995\nChange-Id: Ieb9446c2df13a66fc0d377596756becad0af6995\n(cherry picked from commit 772bcbb0c2f7a87b18021849528240ef0c617d94)\n"
    },
    {
      "commit": "80e40f01c83850d8d5f9753ed165bab310f9c865",
      "tree": "489b8087ad82fc1439c71c026d90c4fb3cac6ff5",
      "parents": [
        "5d9ba9ea702a4d20b99639996b8bd27f121d5bd7"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Oct 31 19:54:46 2019 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Nov 05 13:37:29 2019 -0800"
      },
      "message": "Refactor linker/Android.bp for native-bridge\n\nDefine a \"linker_bin_template\" cc_defaults module that a native bridge\nimplementation can inherit to define a guest linker.\n\nBreak the debuggerd_init call off into separate\nlinker_debuggerd_{android,stub}.cpp files to allow opting in/out of the\ndebuggerd integration without needing to change how linker_main.cpp is\ncompiled. (This is necessary for a later commit that moves\nlinker_main.cpp into a new static library.)\n\nTest: bionic unit tests\nBug: none\nMerged-In: I7c5d79281bce1e69817b266dd91d43ea40f78522\nChange-Id: I7c5d79281bce1e69817b266dd91d43ea40f78522\n(cherry picked from commit 5adf402ee9d65c803b71d93b9e3de77b36ccb027)\n"
    },
    {
      "commit": "d9a41152731b7d9f5f22e4855ab720aa37713d4e",
      "tree": "79b2ad4a6d4c58a063989fccfb564f8834d0a3c3",
      "parents": [
        "22a6a058c7c785eff58d6c366bb85082da154080"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Oct 14 16:58:53 2019 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Oct 16 04:20:23 2019 +0000"
      },
      "message": "Cleanup linker unwinder integration\n\nThe linker shouldn\u0027t throw exceptions, but because it links with\nlibc++_static.a, there are code paths that could throw an exception. On\nthose code paths, the unwinder needs to lookup EH information for the\nlinker binary, and the linker had two inconsistent ways of doing this:\n\n * dl_iterate_phdr (for libgcc): dlfcn.cpp defined a linker-internal\n   version of this API that forwarded to __loader_dl_iterate_phdr\n\n * __gnu_Unwind_Find_exidx (for arm32 libgcc): linker_exidx_static.c was\n   an old, broken copy of exidx_static.c that used\n   __exidx_start/__exidx_end symbols. (The file should have used the\n   addresses of the symbols rather than their contents.)\n\nThe linker\u0027s data structures might be in an inconsistent state at a point\nwhere exceptions are thrown, so it seems better to limit its unwinder to\njust the linker binary\u0027s EH info. Rather than forward the dl* EH APIs,\nlink in the static-binary versions from libc_unwind_static.a. That library\nis already part of libc_nomalloc.a, but include it directly with\nwhole_static_libs so that __gnu_Unwind_Find_exidx is defined when we\u0027re\nusing libgcc on arm32.\n\nTry to link in libunwind_llvm.a into the arm32 linker binary so we\u0027re\nusing the same unwinder as normal arm32 binaries. I\u0027m not sure the library\nwill appear in the right order, but maybe it doesn\u0027t matter given LLD\u0027s\nunconventional archive linking semantics.\n\nTest: bionic unit tests\nTest: \"readelf --dyn-syms linker\" reports no UNDEF symbols\nTest: \"readelf -r linker\" reports only relative relocations\nBug: none\nChange-Id: I5982ec830ba0f15d066536de24f6cd7e9503498b\nMerged-In: I5982ec830ba0f15d066536de24f6cd7e9503498b\n"
    },
    {
      "commit": "e87e0dcbaec82aad9e2e3b441384a4b39a419105",
      "tree": "da1d4ede0f523aca496a5b39c892f19d1a8f1106",
      "parents": [
        "67ff8b5f9cb1af1a633e96a771e386d3305c6799"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Oct 02 17:09:33 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Oct 07 13:52:32 2019 +0900"
      },
      "message": "Restrict the availability of the bionic libs\n\nThe bionic libs are now restricted to be in the runtime APEX and the\nplatform (for bootstrapping). It can still be referenced from other\nAPEXes but can\u0027t be included there.\n\nBug: 139870423\nTest: m\nChange-Id: I7f99eef27ccf75844ca5c9a7ea866496841b738f\n"
    },
    {
      "commit": "74e56438bb63e75b71d927ba797632bd778862ac",
      "tree": "455673d2ec2f70bebc1fa35d3ced26018c9a71fa",
      "parents": [
        "28cf07f93daeea92faddaa3e71fd5ff2095fd407",
        "4ea19214a4d43c90fddb9c427311e8cd9ebfa9e7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 21 23:54:48 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 21 23:54:48 2019 +0000"
      },
      "message": "Merge \"Link libc++demangle.\""
    },
    {
      "commit": "cd70aa47d24258afa5a6855c2d5d0570fd859d52",
      "tree": "3d85d7bafed2792665199ea641b845badcf4aa35",
      "parents": [
        "a5c9c7c56542b6471575148b8a3654078b180940"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Aug 05 14:36:46 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Aug 05 14:36:46 2019 -0700"
      },
      "message": "linker: Remove setting _USING_LIBCXX\n\nAs of aosp/1086558, stdatomic.h directly checks for the presence of\n\u003catomic\u003e instead of checking _USING_LIBCXX, so these lines are\nobsolete.\n\nTest: build\nChange-Id: Icfdb47b3ad109421b3413041f3d3027e2c0b518e\n"
    },
    {
      "commit": "4ea19214a4d43c90fddb9c427311e8cd9ebfa9e7",
      "tree": "bdff939c77b02aa545e7d8cc840b424a682ee4a3",
      "parents": [
        "6b2532e19a76e9b809d2e52e677b1f2004159443"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jul 23 13:31:14 2019 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 24 12:16:41 2019 -0700"
      },
      "message": "Link libc++demangle.\n\nThe demangler is moving out of libc++abi to save on bloat.\n\nTest: make checkbuild\nBug: http://b/138245375\nChange-Id: I7402894bb326f524388c9efdf86509dad50f2018\n"
    },
    {
      "commit": "90f96b9f483b8effefd6a6fe8a8f0562f616837e",
      "tree": "79681d6b86ab2c8c211bf5e39f91a1bf73d6bc95",
      "parents": [
        "81063190064ce84aee135a52b16f53cce50b950a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 09 15:56:39 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 09 22:12:17 2019 -0700"
      },
      "message": "linker: support ldd(1)-like behavior via --list.\n\nGiven that we have both linker and linker64, I didn\u0027t really want to have\nto have ldd and ldd64, so this change just adds the --list option to the\nlinkers and a shell script wrapper \"ldd\" that calls the appropriate\nlinker behind the scenes.\n\nTest: adb shell linker --list `which app_process32`\nTest: adb shell linker64 --list `which date`\nTest: adb shell ldd `which app_process32`\nTest: adb shell ldd `which date`\nChange-Id: I33494bda1cc3cafee54e091f97c0f2ae52d1f74b\n"
    },
    {
      "commit": "78e42d81ec89d3cd73ed4e8613947c8bdf8341fc",
      "tree": "af755077cc7bf2860c96135dc9a3b72ae4494e8a",
      "parents": [
        "0633e569bc44271b68e6980cff51d1c89a7c23ae",
        "7f048808203bb4e1c01f50793b424364cd669f06"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 07 11:30:58 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 07 11:30:58 2019 +0000"
      },
      "message": "Merge \"Enable native_bridge_support\""
    },
    {
      "commit": "7ac2afbde37258b8fc489f24bd1fcbf2cac18e39",
      "tree": "ebc3b3051c9bc7219c8a90b1faf00a3adbd35bdd",
      "parents": [
        "2c02e45f4b4ad997ea681993601c9f67bf96a2ca"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon May 06 16:23:10 2019 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Mon May 06 17:02:53 2019 -0700"
      },
      "message": "Exclude libgcc_stripped wherever libgcc is excluded\n\nTest: manual testing\nBug: 130267141\nBug: 29275768\nChange-Id: If50420c05d36e6f680a36673e7c26ca7deb93b28\n"
    },
    {
      "commit": "7f048808203bb4e1c01f50793b424364cd669f06",
      "tree": "a6165b26a6c255448370e195b95d360bfcb0ffae",
      "parents": [
        "2c02e45f4b4ad997ea681993601c9f67bf96a2ca"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri May 03 15:57:34 2019 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon May 06 17:13:51 2019 +0200"
      },
      "message": "Enable native_bridge_support\n\nEnable native bridge support for bionic libraries.\nMakes it possible to use them in binaries for translated\narchitectures.\n\nBug: http://b/77159578\nTest: make\nChange-Id: Iccd4ad7aecfa5260cc15f09ca975d2e18987278a\n"
    },
    {
      "commit": "afe30a528177fd75591864384f4a7934d78afb4e",
      "tree": "dcafdef8fd78a7d139e3c66ddf2c5c1d58f54aa3",
      "parents": [
        "0cd818a377157326ce326e8a48ea00882d1d1d06"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Apr 30 13:01:42 2019 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Apr 30 13:01:42 2019 +0200"
      },
      "message": "Remove dependency on unused libutils\n\nTest: make\nChange-Id: I64f9390c680eeedec7acb8465bfde254b3c96904\n"
    },
    {
      "commit": "036e09c36e8c859ee23db7a84adcd9b8563f54c9",
      "tree": "4487746e251b08685070460505af39ae875ce90c",
      "parents": [
        "10935e063d3db0ff2b61f710b8f34bd92fa861ba"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Feb 25 10:54:29 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Mar 14 07:35:52 2019 +0900"
      },
      "message": "Don\u0027t install *.mountpoint targets\n\nThe *.mountpoint targets that installs /bionic/lib/lib*.so and\n/bionic/bin/linker* are no longer needed.\n\nNow, /system/lib/lib*.so and /system/bin/linker* are simply symlinks to\nthe corresponding files in the runtime apex. For example,\n\n/system/lib/libc.so -\u003e /apex/com.android.runtime/lib/bionic/libc.so\n\nThis is made possible because we now activate APEXes even before the\ndata partition is mounted. Before the data partition mounting, the\nAPEXes from the system partition are ativated. After the data partition\nis mounted, updated APEXes in the partition (if any) are activated. As a\nresult, the symlink always points to the valid path regardless of\nwhether /data is mounted or not.\n\nBug: 125549215\nTest: device boots\nChange-Id: Ie7d83686abe00b3c436f9f9db75d4244200a0fc9\n"
    },
    {
      "commit": "d102cf62d1f0e2f4eb166a5fface656641f461a5",
      "tree": "43dc7587964515bc4e8fdc7fee78918917e7423c",
      "parents": [
        "f84d0a95bd237e56c6aa7cbdce786ef611c53254",
        "15a2b7b17ba94a267a2285da0b72cd0064ca81c3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 16 01:11:56 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 16 01:11:56 2019 +0000"
      },
      "message": "Merge \"Switch linker tests to Android.bp.\""
    },
    {
      "commit": "15a2b7b17ba94a267a2285da0b72cd0064ca81c3",
      "tree": "cec5caa753d7624408bb2ad6e629737f4092bff1",
      "parents": [
        "1b82812635e35667df9d28e7416d4b02c2083dfe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 15 13:48:38 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 15 14:40:08 2019 -0800"
      },
      "message": "Switch linker tests to Android.bp.\n\nLife is easier if we just keep test code in the same directory as the\nstuff it\u0027s testing...\n\nTest: tests still build and pass\nChange-Id: I9b35d689098bdc28a71d69645b0ca9fdd6ea0108\n"
    },
    {
      "commit": "fcd35380dd2a8f1dc01eae3d358f7aa6db2eeab2",
      "tree": "da0aa8a9e34aabe8536a0f4fb6e9445c9429fce9",
      "parents": [
        "1b82812635e35667df9d28e7416d4b02c2083dfe"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Feb 14 13:48:01 2019 -0800"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Feb 14 13:50:55 2019 -0800"
      },
      "message": "Disable native_coverage for ld-android and linker\n\nBug: http://b/116873221\n\nThe coverage library, which depends on libc, cannot link with libraries\nsince they opt of libc.\n\nTest: m NATIVE_COVERAGE\u003dtrue COVERAGE_PATHS\u003dbionic\nChange-Id: Iaaca8bc30c8ba59e5d4f7092b1a0fce8e8c14c72\n"
    },
    {
      "commit": "fbc4c8edd6aa528336ceb64938c2f1c8e7dfe2e0",
      "tree": "9210ed92ac083540fb3f30bd733118964e8e0d0a",
      "parents": [
        "a5f914aef163e27bf49ce2c29f2cef12a131132f"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Jan 23 15:51:25 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 31 13:44:20 2019 +0900"
      },
      "message": "Move the dynamic linker to ./bootstrap subdir\n\nThe dynamic linker installed to /system partition is only for\nbootstraping, i.e. to be used only by early processes. The existing path\n/system/bin/linker[64] will be a symlink to the mount pointpoint\n/bionic/bin/linker[64] which will be bind-mounted with either the\nbootstrap linker or the default linker in the runtime APEX. Since the\npath is taken by the symlink, bootstrap linker is moved to ./boostrap\nsubdirectory.\n\nBug: 120266448\nTest: m linker; the linker is found under /system/bin/bootstrap/\nChange-Id: I163e0c8a1738b94565a6b60f48e65841ba058a91\n"
    },
    {
      "commit": "a5f914aef163e27bf49ce2c29f2cef12a131132f",
      "tree": "9e2976d251f482c7a23ed8a293d3e104cde2c3e9",
      "parents": [
        "fcb35dc4aa07239878c8ba987aff739388b0f15f"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Sun Jan 20 21:02:00 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 31 13:44:20 2019 +0900"
      },
      "message": "Add bionic mount points under /bionic\n\nThis change adds following files and symlinks:\n\nFiles:\n/bionic/lib[64]/lib{c|dl|m}.so\n/bionic/bin/linker[64]\n\nSymlinks:\n/system/lib[64]/lib{c|dl|m}.so -\u003e /bionic/lib[64]/lib{c|dl|m}.so\n/system/bin/linker[64] -\u003e /bionic/bin/linker[64]\n/system/bin/linker_asan[64] -\u003e /bionic/bin/linker[64]\n\nThe files serve as mount points for either the bootstrap Bionic or the\ndefault Bionic from the runtime APEX. init does the bind-mounting during\nbooting.\n\nThe symlinks are there to not change the ordinary paths to the bionic\nfiles; there are many places that the paths are implied or hard-coded,\ne.g., dlopen(\"/system/lib/libc.so\") or DT_INTERP pointing to\n/system/bin/linker in the vendor prebuilts.\n\nBug: 120266448\nTest: m blueline, cf_x86, aosp_arm\nThe aforementioned files and symlinks are found\n\nChange-Id: I97e38c29409ac0610dde285db8df6e94a7930094\n"
    },
    {
      "commit": "ffaae70936a12e310cb1b468566d39f0f7dbcdf0",
      "tree": "9ccc9887061fa0ebe40c44d1c383ee3a7273c081",
      "parents": [
        "16455b5100ea46b930c1fa84d6bc905b7977643d"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 23 17:47:10 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 29 08:33:09 2019 +0000"
      },
      "message": "Implement arm64 TLSDESC\n\nEach TLSDESC relocation relocates a 2-word descriptor in the GOT that\ncontains:\n - the address of a TLS resolver function\n - an argument to pass (indirectly) to the resolver function\n\n(Specifically, the address of the 2-word descriptor is passed to the\nresolver.)\n\nThe loader resolves R_GENERIC_TLSDESC relocations using one of three\nresolver functions that it defines:\n - tlsdesc_resolver_static\n - tlsdesc_resolver_dynamic\n - tlsdesc_resolver_unresolved_weak\n\nThe resolver functions are written in assembly because they have a\nrestrictive calling convention. They\u0027re only allowed to modify x0 and\n(apparently) the condition codes.\n\nFor a relocation to memory in static TLS (i.e. the executable or an solib\nloaded initially), the loader uses a simple resolver function,\ntlsdesc_resolver_static, that returns the static offset it receives from\nthe loader.\n\nFor relocations to dynamic TLS memory (i.e. memory in a dlopen\u0027ed solib),\nthe loader uses tlsdesc_resolver_dynamic, which allocates TLS memory on\ndemand. It inlines the fast path of __tls_get_addr, then falls back to\n__tls_get_addr when it needs to allocate memory. The loader handles these\ndynamic TLS relocations in two passes:\n - In the first pass, it allocates a table of TlsDynamicResolverArg\n   objects, one per dynamic TLSDESC relocation.\n - In the second pass, once the table is finalized, it writes the\n   addresses of the TlsDynamicResolverArg objects into the TLSDESC\n   relocations.\n\ntlsdesc_resolver_unresolved_weak returns a negated thread pointer so that\ntaking the address of an unresolved weak TLS symbols produces NULL.\n\nThe loader handles R_GENERIC_TLSDESC in a target-independent way, but\nonly for arm64, because Bionic has only implemented the resolver functions\nfor arm64.\n\nBug: http://b/78026329\nTest: bionic unit tests\nTest: check that backtrace works inside a resolver function and inside\n  __tls_get_addr called from a resolver\n  (gdbclient.py, b __tls_get_addr, bt)\nMerged-In: I752e59ff986292449892c449dad2546e6f0ff7b6\nChange-Id: I752e59ff986292449892c449dad2546e6f0ff7b6\n"
    },
    {
      "commit": "083d850b30c5eb29c16500bca934d7f6682e4aaa",
      "tree": "5138d02782bff5e30af0c97cf114000674ca8771",
      "parents": [
        "52165b34b9c36eae4e15c47c25ab3c51b2029592"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 24 13:47:13 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 15:31:35 2019 -0800"
      },
      "message": "Move the linker allocator into libc\n\nRename LinkerMemoryAllocator -\u003e BionicAllocator\nRename LinkerSmallObjectAllocator -\u003e BionicSmallObjectAllocator\n\nlibc and the linker need to share an instance of the allocator for\nallocating and freeing dynamic ELF TLS memory (DTVs and segments). The\nlinker also continues to use this allocator.\n\nBug: http://b/78026329\nTest: /data/nativetest/bionic-unit-tests-static\nTest: /data/nativetest64/bionic-unit-tests-static\nTest: /data/nativetest/linker-unit-tests/linker-unit-tests32\nTest: /data/nativetest64/linker-unit-tests/linker-unit-tests64\nChange-Id: I2da037006ddf8041a75f3eba2071a8fcdcc223ce\n"
    },
    {
      "commit": "57b9d1e6c077bb348066115707763d8ae7d924d1",
      "tree": "c47a510f119df45fef6c7ff0abeeea61c216a592",
      "parents": [
        "301f6f3e3731cf4b146adfbea3b05e41be0da0b4"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 17 03:14:45 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 24 17:00:37 2019 +0900"
      },
      "message": "support LIB in runpath\n\nIn addition to ORIGIN, LIB is now expanded to either lib or lib64\ndepending on the ABI in the DT_RUNPATH.\n\nTest: To be added (can\u0027t be added to AOSP directly since there are\ninternal tests that have to be updated as well)\n\nChange-Id: I34a8316f1765a27c731bc270ee25c0ce287d7eed\n"
    },
    {
      "commit": "9ee8069046d587a4da2a67feb24ede9e9ea73edf",
      "tree": "6cd909f2caabfa80c8656542d8ac63c3eac5c2bf",
      "parents": [
        "073fffde090f3d68ce997b6f4c376a58d2a9fc40"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 15 16:10:36 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 01:11:26 2019 -0800"
      },
      "message": "Build the linker with -D_USING_LIBCXX\n\nThis macro is necessary for using stdatomic.h and \u003catomic\u003e in the same\nlibc++-based program. \u003catomic\u003e is used implicitly by other STL headers,\nand stdatomic.h is used (or will be used) in headers shared with libc.\nlibc only has access to stdatomic.h because it can\u0027t use an STL.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: I89b128df08b478287ef4e2867319e74dbcc30d4e\n"
    },
    {
      "commit": "45d1349c638426d99a5319e7be3dbb7c36ece7eb",
      "tree": "fe566eac57d2354c8b6bf27fc9db698fe57ea6be",
      "parents": [
        "27d59338b98bba7f33eb223c4f2e1df4c3b96774"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 03 02:51:30 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 11 15:34:22 2019 -0800"
      },
      "message": "Reorganize static TLS memory for ELF TLS\n\nFor ELF TLS \"local-exec\" accesses, the static linker assumes that an\nexecutable\u0027s TLS segment is located at a statically-known offset from the\nthread pointer (i.e. \"variant 1\" for ARM and \"variant 2\" for x86).\nBecause these layouts are incompatible, Bionic generally needs to allocate\nits TLS slots differently between different architectures.\n\nTo allow per-architecture TLS slots:\n - Replace the TLS_SLOT_xxx enumerators with macros. New ARM slots are\n   generally negative, while new x86 slots are generally positive.\n - Define a bionic_tcb struct that provides two things:\n    - a void* raw_slots_storage[BIONIC_TLS_SLOTS] field\n    - an inline accessor function: void*\u0026 tls_slot(size_t tpindex);\n\nFor ELF TLS, it\u0027s necessary to allocate a temporary TCB (i.e. TLS slots),\nbecause the runtime linker doesn\u0027t know how large the static TLS area is\nuntil after it has loaded all of the initial solibs.\n\nTo accommodate Golang, it\u0027s necessary to allocate the pthread keys at a\nfixed, small, positive offset from the thread pointer.\n\nThis CL moves the pthread keys into bionic_tls, then allocates a single\nmapping per thread that looks like so:\n - stack guard\n - stack [omitted for main thread and with pthread_attr_setstack]\n - static TLS:\n    - bionic_tcb [exec TLS will either precede or succeed the TCB]\n    - bionic_tls [prefixed by the pthread keys]\n    - [solib TLS segments will be placed here]\n - guard page\n\nAs before, if the new mapping includes a stack, the pthread_internal_t\nis allocated on it.\n\nAt startup, Bionic allocates a temporary bionic_tcb object on the stack,\nthen allocates a temporary bionic_tls object using mmap. This mmap is\ndelayed because the linker can\u0027t currently call async_safe_fatal() before\nrelocating itself.\n\nLater, Bionic allocates a stack-less thread mapping for the main thread,\nand copies slots from the temporary TCB to the new TCB.\n(See *::copy_from_bootstrap methods.)\n\nBug: http://b/78026329\nTest: bionic unit tests\nTest: verify that a Golang app still works\nTest: verify that a Golang app crashes if bionic_{tls,tcb} are swapped\nMerged-In: I6543063752f4ec8ef6dc9c7f2a06ce2a18fc5af3\nChange-Id: I6543063752f4ec8ef6dc9c7f2a06ce2a18fc5af3\n(cherry picked from commit 1e660b70da625fcbf1e43dfae09b7b4817fa1660)\n"
    },
    {
      "commit": "6b3be172d6cf5fd29d7e1f825a1b0e589fdc72b2",
      "tree": "bf0dd5982e0a1c1fbce9d7a34135e9c927d011e8",
      "parents": [
        "9b849d6391a278e06e3c4b39cbee9d30916f51b2"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Dec 03 13:57:20 2018 -0800"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Dec 03 15:41:56 2018 -0800"
      },
      "message": "Prevent dependency cycle due to system_shared_libs expansion\n\nIt was discovered that we were building some objects inconsistently due\nto an optimization in cc_library to only build objects once and use them\nfor both the static and shared libraries. But static libraries didn\u0027t\nget system_shared_libs set automatically, and we didn\u0027t notice that we\nwould have built the objects differently.\n\nSo static libraries now get the default system_shared_libs, we allow\nadjusting that for static vs shared in a cc_library, and we disable the\noptimization if the linked libraries are configured differently between\nstatic and shared in a single cc_library.\n\nThis triggers dependency cycles for static libraries that libc/libdl\nuse, so fix those cycles here.\n\nTest: treehugger\nChange-Id: I3cf7fda161a05ec32e0c1e871999720d12a4d38e\n"
    },
    {
      "commit": "f17fd1d68aca0a63f7888cd4035858bbdfc6fa94",
      "tree": "554093f4206046bc26daa484604c7f1fad4689a5",
      "parents": [
        "7f92fbe06484f036274952efa00fb5cdf410eb12"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Nov 27 07:56:17 2018 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Nov 27 07:56:17 2018 -0800"
      },
      "message": "Disable XOM in linker, libc, and libm.\n\nThese modules have issues running with execute-only memory. Disable it\nin them until we can resolve the issues.\n\nBug: 77958880\nTest: No more XOM-related crashes in these binaries\n\nChange-Id: Ie6c957731155566c2bbe7dbb7a91b9583d9aff93\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "c6021960a4cfe13d5dccdf54daf5a8db343e93d1",
      "tree": "efac36df5e32822a5b8c33c4f66c6a3d72e9be3a",
      "parents": [
        "9385d778fdbc15516124d8f480e86bcda7bd1c23",
        "3a3982d779d3123d29e5cd141f83508fc279cabd"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 03 02:30:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 03 02:30:05 2017 +0000"
      },
      "message": "Merge \"Rename target.linux[_x86[_64]] to target.linux_glibc[_x86[_64]]\""
    },
    {
      "commit": "84f0dcd59ee41b385e819b2563cbd1a7f8700cba",
      "tree": "cd9b9ab3ccdb207959abdde679a0d23dd53f2fea",
      "parents": [
        "b3639adf9ce41f520f7a64a5016e6ffc41ccd009"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 02 11:47:31 2017 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 02 13:21:22 2017 -0700"
      },
      "message": "Use -Werror in bionic\n\nBug: 66996870\nTest: build with WITH_TIDY\u003d1\nChange-Id: Ic68141a5c50880c485646e38349f94b866267bd9\n"
    },
    {
      "commit": "3a3982d779d3123d29e5cd141f83508fc279cabd",
      "tree": "20a588c4f20d273361d45f6735502643e5a7e98d",
      "parents": [
        "95f90784eaa0b377d3c6d9101c84e8817cbea494"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 02 10:41:07 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 02 10:41:07 2017 -0700"
      },
      "message": "Rename target.linux[_x86[_64]] to target.linux_glibc[_x86[_64]]\n\nIn the future, target.linux will apply to all targets running a linux kernel\n(android, linux_glibc, linux_bionic). So move all current users to the specific\nlinux_glibc.\n\nThere will be another cleanup pass later that will move some instances back to\ntarget.linux if the properties should be shared with target.android and\ntarget.linux_bionic, but target.linux needs to be removed first.\n\nTest: out/soong/build.ninja identical before/after\nChange-Id: I56c84d206fb1e98cd7ea0d8fb875de0ebd87ea5e\nExempt-From-Owner-Approval: build system cleanup\n"
    },
    {
      "commit": "7ccc50d2e48b9d8027a1f382b0408e9c36e56731",
      "tree": "5c0f8742d17baa66596860f88bfe387020b2d864",
      "parents": [
        "4326d84d217b40b819729da153f97217ea4ec932"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Sep 18 21:28:14 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Sep 20 13:59:13 2017 -0700"
      },
      "message": "Use an embedded linker for host bionic\n\nThe linux kernel requires that the ELF interpreter (runtime linker)\nthat\u0027s referenced by PT_INTERP be either an absolute path, or a relative\npath from the current working directory. We\u0027d prefer a relative path\nfrom the binary, similarly to how we handle looking up shared libraries,\nbut that\u0027s not supported.\n\nInstead, extract the LOAD segments from the runtime linker ELF binary\nand embed them into each host bionic binary, omitting the PT_INTERP\ndeclaration. The kernel will treat it as a static binary, and we\u0027ll use\na special entry point (linker_wrapper) to fix up the arguments passed by\nthe kernel before jumping to the embedded linker. From the linker\u0027s\npoint of view, it looks like the kernel loaded the linker like normal.\n\nBug: 31559095\nTest: Enable host bionic, build and run libdemangle_test\nChange-Id: I1753401ef91eecbf0ae3376faca31eec1c53842b\n"
    },
    {
      "commit": "4326d84d217b40b819729da153f97217ea4ec932",
      "tree": "3df9e5e520f66ffdb5c33080ff99d12ccba7cacd",
      "parents": [
        "e27d29cfaf7923a68bd2f987590b229c53f6b50c"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Sun May 07 13:07:41 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Sep 20 13:16:13 2017 -0700"
      },
      "message": "linker: Only link to debuggerd on Android\n\nDon\u0027t link to it when building with bionic for the host.\n\nAlso add libasync_safe, which is used by linker_globals.h even when\ndebuggerd isn\u0027t used.\n\nBug: 31559095\nTest: mma\nTest: Attempt to build host bionic\nChange-Id: I374e2c2c288133875da82de780b27917ca524240\n"
    },
    {
      "commit": "7abea57ba599b9b114031ae33699b5d7fba8cc97",
      "tree": "773b5e56bf6c0cd110f86797a6be7cd8923fceda",
      "parents": [
        "25bf29bbadaeb593bdb9211dc75063903ce369e4"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Aug 29 18:14:49 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Aug 29 18:18:28 2017 +0200"
      },
      "message": "Replace artificial symbol table with proper one\n\nThis change also replaces elf-hash with gnu-hash.\n\nTest: make\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nChange-Id: Ibc4026f7abc7e8002f69c33eebaf6a193f1d22eb\n"
    },
    {
      "commit": "25bf29bbadaeb593bdb9211dc75063903ce369e4",
      "tree": "942cfd42e5f74284e3385c51c86f7d26b12af10d",
      "parents": [
        "0e23c87de5bd223a79d397b45d97283509035f27"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Aug 29 13:38:04 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Aug 29 18:18:27 2017 +0200"
      },
      "message": "Implement __gnu_Unwind_Find_exidx/__cxa_type_match\n\nLeaving these unimplemented causes linker to have 2 weak undefined\nsymbols which in turn results in 3 unwanted relocations for arm arch.\nImplementing them removes unwanted relocations from resulted dynamic\nobject\n\nTest: make \u0026\u0026 readelf --dyn-sym linker\nTest: linker-unit-tests \u0026\u0026 bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nTest: flash and boot angler\nChange-Id: I10120271936c770659239898aaf852d31c5483c2\n"
    },
    {
      "commit": "02586a2a34e6acfccf359b94db840f422b6c0231",
      "tree": "9dde1a2bcf8a004b23fe41b9f3e497895d44e44d",
      "parents": [
        "5ac5a7c0839a123c2982b37b383a7691fd216e7e"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Sat May 20 01:01:24 2017 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Aug 03 01:02:07 2017 +0900"
      },
      "message": "linker: the global group is added to all built-in namespaces\n\nWith ld.config.txt, we now have multiple built-in namespaces other than\nthe default namespace. Libs (and their dependents) listed in LD_PRELOAD\nmust be visible to those additional namespaces as well.\n\nThis also adds a debugging only feature: path to the linker config file\ncan be customized via LD_CONFIG_FILE environment variable. This works\nonly for debuggable builds.\n\nBug: 38114603\nBug: 62815515\nTest: 1. ./external/compiler-rt/lib/asan/scripts/asan_device_setup --lib\nprebuilts/clang/host/linux-x86/clang-stable/lib64/clang/5.0/lib/linux\n2. enable talkback shortcut\n3. in the home screen, hold vol-up/down together\n4. device does not reboots and talkback shortcut is toggled\nTest: bionic-unit-tests and linker-unit-tests successful\n\nChange-Id: I9a03591053f4a9caea82f0dcb23e7a3d324bb9bd\n"
    },
    {
      "commit": "7a3681e5b6c39bc2b3b62031ca5941dbf7bc4e63",
      "tree": "78c25e2a38b7efed8db770a623a5cbfb7eaab11d",
      "parents": [
        "ca5e0f49ca5df873a20c996755175b5c9c1e2ed9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 24 17:48:32 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 08:50:43 2017 -0700"
      },
      "message": "Move libc_log code into libasync_safe.\n\nThis library is used by a number of different libraries in the system.\nMake it easy for platform libraries to use this library and create\nan actual exported include file.\n\nChange the names of the functions to reflect the new name of the library.\n\nRun clang_format on the async_safe_log.cpp file since the formatting is\nall over the place.\n\nBug: 31919199\n\nTest: Compiled for angler/bullhead, and booted.\nTest: Ran bionic unit tests.\nTest: Ran the malloc debug tests.\nChange-Id: I8071bf690c17b0ea3bc8dc5749cdd5b6ad58478a\n"
    },
    {
      "commit": "6367f5ee5571c41581aefee42fcf4d4899813945",
      "tree": "358b2dfcbbdcd040a76e187e3b5dcea006a4d0e3",
      "parents": [
        "4df5ca1e0254790d41f945352a93f5c783ea8de0",
        "c17e5a465026e8f71b39ebd010ebe87b3be974d6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 03 20:33:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 03 20:33:18 2017 +0000"
      },
      "message": "Merge changes I826756d9,I00e2edb2\n\n* changes:\n  libc_logging: mention that they\u0027re async signal safe.\n  linker: update dependencies.\n"
    },
    {
      "commit": "deca8effd089b7b3c97eec8a1fb5dcedb9c35ade",
      "tree": "e3f3c35c83a6e476d1d20c7d83274353b7bf07d3",
      "parents": [
        "fe96db819ba0254123f4960bc150ce2c104d3bc0",
        "4cabfaad340c957ff691cfbc420b29da805c5dd8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 25 05:17:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Mar 25 05:17:32 2017 +0000"
      },
      "message": "Merge \"Load namespace configuration from ld.config.txt\""
    },
    {
      "commit": "4cabfaad340c957ff691cfbc420b29da805c5dd8",
      "tree": "91df98d18f36ed19f857db91688c8b62f6f242de",
      "parents": [
        "e98d1e68ce37bb9238e3c50ea6b01d1057adb2eb"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 07 11:19:05 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 24 15:50:45 2017 -0700"
      },
      "message": "Load namespace configuration from ld.config.txt\n\nThis change allows customization of default namespace\nconfiguration for different executables. It also enables\ntarget_sdk_version setup for binaries (note that this\noption should explicitly be enabled in ld.config.txt).\n\nBug: http://b/30706810\nBug: http://b/30435785\nTest: run linker-unit-tests/bionic-unit-tests, boot angler\nChange-Id: Ibbe87209acf1538fc9cec04944f3d22a190c38f1\n"
    },
    {
      "commit": "9b1cc4bb9cd84c2a52b8183a418e9dbb41f59959",
      "tree": "30c02abec3509a67589add48341d475c78e71f4e",
      "parents": [
        "e98d1e68ce37bb9238e3c50ea6b01d1057adb2eb"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 23 16:17:15 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 23 17:12:59 2017 -0700"
      },
      "message": "loader: stop relying on AT_BASE\n\nandroid loader should not rely on the fact\nthat AT_BASE is set because kernel currently\ndoes not set it when linker is run standalone\n(The linker does not have PT_INTERP set)\n\nThis commit replaces AT_BASE with calculated value.\n\nBug: http://b/30739481\nBug: http://b/35890756\nTest: run bionic-unit-tests --gtest_filter\u003ddl*\nChange-Id: Ic2eb73e4452624b1f2e05f46e99e4c17df0bbc3f\n"
    },
    {
      "commit": "69a5939eaef7b1a39a95f993a04ce6944b33c513",
      "tree": "497e566bcfaa9893b3349c0df5918fa6a1a9fd6b",
      "parents": [
        "222272ece93d35dbb4eb76076f29bbe719bf5c93"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 07 13:33:51 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 08 16:43:59 2017 -0800"
      },
      "message": "linker: update dependencies.\n\nRemove dependencies that are now linked directly into\nlibdebuggerd_handler_fallback via whole_static_libraries.\n\nTest: m\nChange-Id: I00e2edb2778c2986c533f97708252aa0996d0498\n"
    },
    {
      "commit": "2a6955e040f24b31a2dfe829f47e35ac91733489",
      "tree": "e91c30cf688ab2fd0d55546042d3496f489db7de",
      "parents": [
        "5927b04ce7d9d4727a4a644f8af4040b8dab5d0a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 23 11:53:43 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 24 16:56:38 2017 -0800"
      },
      "message": "loader: set PT_INTERP to itself\n\nSome versions of kernel set AT_BASE to 0\nif dynamic loader does not have PT_INTERP\nset.\n\nBug: http://b/30739481\nTest: run /system/bin/linker64 and /system/bin/linker\nChange-Id: I1b67777166fe917d3ee1a97277045ca6f5db0084\n"
    },
    {
      "commit": "ec0dbc3782c009329a6cbe9013d34c4423fc0f3b",
      "tree": "9fd613eb2c44ff8f9dfab0cbeba0d87f653e60de",
      "parents": [
        "9ccccc1a952c7abc99f5d912878b751d114c99bd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 08 17:27:20 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 15 17:00:31 2017 -0800"
      },
      "message": "linker: use fallback crash handler dumping.\n\nBug: http://b/34684590\nTest: mma\nChange-Id: I0801a83768f172308339ab2118e492b5df96acd0\n"
    },
    {
      "commit": "451909da3159acc34a136262efdc80ae44bacb62",
      "tree": "1ff67d3af090a75592f7192d50d53388b8e9e287",
      "parents": [
        "577a944200e445f806964b7fb5dbd38633f4ae07"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 26 16:52:59 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 26 17:08:01 2017 -0800"
      },
      "message": "Remove dependency on libc.a from the linker\n\nProvide stub for unused but needed symbol __find_icu_symbol\nwhich is not included to libc_nomalloc.a.\n\nTest: mm and boot\nChange-Id: I57ca09c990556d1d401e2f4a75bc49b61b4cd85d\n"
    },
    {
      "commit": "082bec5b419806d694f9a7d0283b2f831d52eea4",
      "tree": "4902863a691f86e4e5236344d11ef172d2f8a2c5",
      "parents": [
        "2d261e8e9e1340151698086e8434f312a73f77f0",
        "0a3637d3eb2424d8e825ad1825f843450a888406"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 18 23:39:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 23:39:08 2017 +0000"
      },
      "message": "Merge \"Runtime support for CFI\""
    },
    {
      "commit": "0a3637d3eb2424d8e825ad1825f843450a888406",
      "tree": "dc0d4c31cddc2ff06902fcbdf4233f7759258764",
      "parents": [
        "1b2975d54b9c17ced29883aef24490773a4a9fe6"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jul 06 13:20:59 2016 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 18 13:13:52 2017 -0800"
      },
      "message": "Runtime support for CFI\n\nControl Flow Integrity support in bionic.\n\nGeneral design:\nhttp://clang.llvm.org/docs/ControlFlowIntegrityDesign.html#shared-library-support\n\nThis CL implements subsections \"CFI Shadow\" and \"CFI_SlowPath\" in the above document.\n\nBug: 22033465\nTest: bionic device tests\nChange-Id: I14dfea630de468eb5620e7f55f92b1397ba06217\n"
    },
    {
      "commit": "2a3b4fa6ec9ab3d4604860b0bdd3766c9f5c44f4",
      "tree": "0e94f5fec708d835d1be78e6a28c10ab39882e3b",
      "parents": [
        "f8a6d4745daafb6aced5cdeb76325c719ca1374b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 26 17:55:49 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 17 15:11:46 2017 -0800"
      },
      "message": "Rename libdebuggerd_client to libdebuggerd_handler.\n\nBug: http://b/30705528\nTest: debuggerd_test\nChange-Id: I625a9a2e7304d172873ba9344b74efa57ad7bdad\n"
    },
    {
      "commit": "d9e427cf41893377dcdd0650ba20ff7cf7d72209",
      "tree": "6515aceab94a11861876b6e145adb6922183ebff",
      "parents": [
        "227894a754eb11cb1203c359192d59654b01b93e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 22 16:55:25 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Dec 09 14:53:59 2016 -0800"
      },
      "message": "Bionic loader is no longer hijacking libdl.so\n\nDo not hijack libdl.so methods but make libdl proxy calls to\nloader instead. This will be replaces by calls to libc.so\nonce loader functionality is migrated.\n\nAlso add a lock to dl_unwind_find_exidx function call.\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nBug: http://b/27106625\nChange-Id: Ic33a7109a86f4262798d63a35f4c61d15b0068bb\n"
    },
    {
      "commit": "10fffb4939ac7d9dc6239930304ad05c3714094d",
      "tree": "9e02c68de1a32212bcfd9a4adadf4fbd8c71206b",
      "parents": [
        "51366e9b16c3bc3ea6d200be66f561cc516fc995"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 08 09:57:35 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 08 09:57:35 2016 -0800"
      },
      "message": "Fix linker_asan64 symlink\n\nSoong now appends the suffix to the symlink, so the multilib-specific\nsymlink is no longer necessary.\n\nTest: m -j out/target/product/angler/system/bin/linker_asan64\nTest: Examine LOCAL_MODULE_SYMLINKS in out/soong/Android-aosp_angler.mk\nChange-Id: I913a318bb31de3e630eebd2d68041a55ce3eccaf\n"
    },
    {
      "commit": "fc0d48078a162f50d36965b8c018fed1d766516c",
      "tree": "3841a2762b9fc2851945fed86124f318610f7e39",
      "parents": [
        "53cad4bedac6a8d74b7f3650977a893a8c394e81"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 06 11:10:09 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 06 11:15:24 2016 -0800"
      },
      "message": "loader: stop linking libdl/c/m into the loader\n\nThis is to prevent situations when libgcc.a calls into incorrect\nimplementation of dl_iterate_phdr.\n\nBug: http://b/27106625\nTest: build \u0026\u0026 run bionic-unit-tests --getst_filter\u003ddl*:Dl*\nChange-Id: I4cba8c4a156f91f17ba3d95c39cb80f9b70c9d8f\n"
    },
    {
      "commit": "dcb846cb4978130d5db6b795e22e08b65e73f3cd",
      "tree": "08d415c92e8008104cd11fd76574816be320c70e",
      "parents": [
        "c12acef96bd80c419654e159e1dc24a69513a86d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 06 02:10:13 2016 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 06 02:10:13 2016 +0000"
      },
      "message": "Revert \"Bionic loader is no longer hijacking libdl.so\"\n\nThis reverts commit c12acef96bd80c419654e159e1dc24a69513a86d.\n\nBreaks the Mips build.\n\nBug: 27106625\nChange-Id: I27edb7114065c36e1b618e387530d58189cdb184\n"
    },
    {
      "commit": "c12acef96bd80c419654e159e1dc24a69513a86d",
      "tree": "2c9ee33aa3467a7fa0765a7a2de6c686056b755c",
      "parents": [
        "f8b4ff4aa1c1a855627b8dc36f0675d69ab9109d"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 22 16:55:25 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 05 11:19:19 2016 -0800"
      },
      "message": "Bionic loader is no longer hijacking libdl.so\n\nDo not hijack libdl.so methods but make libdl proxy calls to\nloader instead. This will be replaces by calls to libc.so\nonce loader functionality is migrated.\n\nAlso add a lock to dl_unwind_find_exidx function call.\n\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\nBug: http://b/27106625\nChange-Id: I9e666e771e4bbca52151cfa7fc4c8677e1480818\n"
    },
    {
      "commit": "7ec52b12efc1c4ed9cd83ba8c95fab5bbf39aaf4",
      "tree": "091ac4e81ecc619f8116a3f229ad10f8c47e017d",
      "parents": [
        "11b362d284b49e070813cd459584ea3dabb20b1e"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Nov 28 17:02:25 2016 -0800"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Nov 29 21:09:05 2016 +0000"
      },
      "message": "Enable libc/libdl/libm/linker for host bionic\n\nDisables debuggerd integration unless building for android.\n\nBug: 31559095\nTest: Diff out/soong/build.ninja before/after, only change is moving\n      linker\u0027s libdebuggerd_client static lib to the beginning of the\n      list.\nTest: lunch aosp_arm64-eng; mmma -j bionic\nChange-Id: I62e725f7a9b98b7fe31637d0a835fd5846b0aff0\n"
    },
    {
      "commit": "3f6605754464c0856862c4d66ed03227a60a6f4d",
      "tree": "16a13eff76ffede482df87d0eaf8f069ad0dc43d",
      "parents": [
        "0f81dd35485563a2d111f01a1c14ac3678192c12"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 09 10:00:39 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Sep 13 13:38:58 2016 -0700"
      },
      "message": "linker: Refactoring step 3 of many\n\nExtract linker executable specific code to linker_main.cpp;\nthis part of code does not have a place in libdl.a/so.\n\nBug: http://b/14998480\nBug: http://b/30706810\nTest: mm \u0026\u0026 run bionic-unit-tests\nChange-Id: I90f7475e93a919b0f9525da22928089ad35b8f6c\n"
    },
    {
      "commit": "48ec288d40d272e6fe5e68c4c0a9778b55e24f8a",
      "tree": "4070843ac34ee5924221c2885b9ed6a26d03a5dd",
      "parents": [
        "b943f303a2d67d1e4c2fc8c4df3b4407888d777b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 04 11:50:36 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Aug 08 16:12:53 2016 -0700"
      },
      "message": "Extract soinfo and globals to separate files.\n\nMove soinfo and globals out of linker.cpp to\nseparate files.\n\nBreaking up huge linker.cpp into smaller peaces\nin order to make it easier to extract part of the\ncode that belongs to libdl.so and remove parts of\nthe code that do not belong to linker\n\n(refactoring part 2 of many)\n\nChange-Id: I868417f4b8d2b84d0e8265e354bc7977161497e2\n"
    },
    {
      "commit": "b943f303a2d67d1e4c2fc8c4df3b4407888d777b",
      "tree": "38566563bc3582980a8f8dbd4b53cc370cba4660",
      "parents": [
        "bbf593f0f0c116305a0eafcf8271381d92b1143c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Aug 03 16:00:10 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Aug 08 16:12:52 2016 -0700"
      },
      "message": "Move android_namespace_t to a separate file.\n\nBreaking up huge linker.cpp into smaller peaces\nin order to make it easier to extract part of the\ncode that belongs to libdl.so and remove parts of\nthe code that do not belong to linker\n\n(refactoring part 1 of many)\n\nChange-Id: I57ac36677a815800dc127c8c45c3ea806c37e247\nTest: bionic-unit-tests --gtest_filter\u003ddl*:Dl*\n"
    },
    {
      "commit": "769b33fadf45a039741f932672ac2c4f901d7d4a",
      "tree": "bf29858de176dd3bf144c547174eb99e1727e85a",
      "parents": [
        "c5e79567e0b02eb3a02d6b2820b901d4ba392e87"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jul 21 11:33:40 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Aug 01 19:47:27 2016 +0000"
      },
      "message": "Sync linker with internal branch\n\nThis change includes dlwarning implementation and\nthe compatibility greylist for apps targeting pre-N.\n\nChange-Id: Ibf02a07cc58cbbb1a5aef4ac34558c5d43e4305f\nTest: Run bionic-unit-tests --gtest_filter\u003ddl*:Dl*\n"
    },
    {
      "commit": "97f0aefe59095f660817b60b4b523eb5c8b35d22",
      "tree": "7ae2a7c17a26cd02b5a8d019dca3a9824183ca1e",
      "parents": [
        "a24a2476d036989fabe229802448e42196c881ed"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jul 14 16:05:46 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jul 15 13:39:29 2016 -0700"
      },
      "message": "Convert linker from Android.mk to Android.bp\n\nChange-Id: Ibf7da301defb2fd7e24fb3f4cd2e967a8f376497\n"
    }
  ]
}
