)]}'
{
  "log": [
    {
      "commit": "006f9ad8910c945cd50e54f6c34d8c27b11c1193",
      "tree": "233f6c8e419d899cf32a33e682969afbc8ad6ee6",
      "parents": [
        "3623d80675e5321b92c2d88a7b7ec6bd998d81d5"
      ],
      "author": {
        "name": "Benjamin Adolphi",
        "email": "b.adolphi@gmail.com",
        "time": "Wed Feb 19 00:50:32 2014 +0100"
      },
      "committer": {
        "name": "Benjamin Adolphi",
        "email": "b.adolphi@gmail.com",
        "time": "Wed Feb 19 00:50:32 2014 +0100"
      },
      "message": "Linker writes to wrong memory location when processing DT_MIPS_RLD_MAP\n\nWhen bionic\u0027s dynamic linker processes the .dynamic section of a MIPS ELF binary and encounters the DT_MIPS_RLD_MAP dynamic array tag, it calculates the address of where to write a pointer to the _r_debug structure. The current implementation simply reads the value given in the d_ptr field and writes the pointer address to that location. However, this value has to be adjusted to reflect the real load address of the binary. Otherwise the linker will write to a faulty location possibly resulting in a crash when linking a MIPS binary that includes DT_MIPS_RLD_MAP. This change corrects that problem.\n\nChange-Id: I1a91874f7ab47289001fe72d9016660c14c70362\nSigned-off-by: Benjamin Adolphi \u003cb.adolphi@gmail.com\u003e\n"
    },
    {
      "commit": "c62b8a4d3f73b070099d9aa594a261b5250d6cc9",
      "tree": "10875d7828fe4fa26c4e96b828f82d6601ba0683",
      "parents": [
        "7b3876e2516fd55d61a48cb23a7080ea88b9617b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 12 17:17:41 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 12 17:17:41 2014 -0800"
      },
      "message": "Remove unused variables not spotted by GCC.\n\nChange-Id: I49a16096bc0f41f3ad0007249161e8bdfcf3438c\n"
    },
    {
      "commit": "faf05bacd45719291b371f24b1b89543881b37f6",
      "tree": "5ea47b891e7b65d94af4bd558d2a1817247e74de",
      "parents": [
        "577fce0108feda58296beacfbc0ada4a6d6afbc2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 11 16:59:37 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 11 17:33:49 2014 -0800"
      },
      "message": "Clean up all the lint cpplint can find in the dynamic linker.\n\nChange-Id: Ic9ee7153817c22a252cc4b309283e355b623cab9\n"
    },
    {
      "commit": "9918665a45095ad135576f005c0e5307feb366a1",
      "tree": "fdef48d2a8c74a2bc8dfd17fd25527ed98b96b3a",
      "parents": [
        "c856baeeade96c167400f179a86d50c426e81788"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris.dearman@imgtec.com",
        "time": "Thu Feb 06 20:36:51 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 11 15:33:14 2014 -0800"
      },
      "message": "[MIPS64] Dynamic linker\n\nChange-Id: I937c7c776cae3d66e214798d5217a922cd106bfc\nSigned-off-by: Chris Dearman \u003cchris.dearman@imgtec.com\u003e\nSigned-off-by: Duane Sand \u003cduane.sand@imgtec.com\u003e\n"
    },
    {
      "commit": "0266ae5f884d72da58f33a072e865ba131234a5e",
      "tree": "48763b706806f544b1dec0ef98261bed6f21dee2",
      "parents": [
        "eeb9a9f59a58a2f042e8f6fd1a4911ae92ac5493"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 17:46:57 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 18:22:24 2014 -0800"
      },
      "message": "Switch \u003celf.h\u003e over to linux uapi under the covers.\n\nRemove the linker\u0027s reliance on BSD cruft and use the glibc-style\nElfW macro. (Other code too, but the linker contains the majority\nof the code that needs to work for Elf32 and Elf64.)\n\nAll platforms need dl_iterate_phdr_static, so it doesn\u0027t make sense\nto have that part of the per-architecture configuration.\n\nBug: 12476126\nChange-Id: I1d7f918f1303a392794a6cd8b3512ff56bd6e487\n"
    },
    {
      "commit": "3a9c5d66dc8d41272f51482b713717af7049697e",
      "tree": "7e2ee59d14ba82f70ed233195ccb04ae5f2afa34",
      "parents": [
        "e74fc3a64fe9296813e5bd867d0c66bd8213be6a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 13:31:13 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 13:31:13 2014 -0800"
      },
      "message": "Fix \u003clink.h\u003e.\n\nAlso move some of the stuff that should be in \u003clink.h\u003e out of the\nprivate \"linker.h\", to make it clearer that these are public API\nknown to gdb that we can\u0027t change.\n\nBug: 12554197\nChange-Id: I830e1260d3d8b833ed99bc1518f1c6b6102be8af\n"
    },
    {
      "commit": "5ceb889ac9a36e74e4e00c34c57cbb58d73e228c",
      "tree": "81ab70dc777702a065d8755615ada8d860e3a3ca",
      "parents": [
        "4449fe9675671264746af4876bd959af8e9fee82"
      ],
      "author": {
        "name": "Weiwu Chen",
        "email": "weiwu.chen@intel.com",
        "time": "Tue Dec 03 19:47:34 2013 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 28 11:54:01 2014 -0800"
      },
      "message": "bionic: Change the type of soinfo\u0027s size to size_t\n\nSome system functions like munmap expect soinfo\u0027s size to be size_t, but currently\nit is unsigned. Change it to size_t to fit 64bit\u0027s portability.\n\nChange-Id: I0bf6d522b38b0cd9bf1db05b004b5326217412a2\nSigned-off-by: Weiwu Chen \u003cweiwu.chen@intel.com\u003e\nSigned-off-by: Qiming Shi \u003cqiming.shi@intel.com\u003e\n"
    },
    {
      "commit": "a4aafd156068ee174012f28cd894dbecf0e4ab90",
      "tree": "d55b5e77d1fa752db1f374d0baec3afc9c15ecd5",
      "parents": [
        "ebc1c76d77dd604f16126e66b2171e8ee6fa1d22"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 13 16:37:47 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 13 16:37:47 2014 -0800"
      },
      "message": "Make it possible for code to query the dynamic linker\u0027s default search path.\n\nWe\u0027re not going to have init(1) set LD_LIBRARY_PATH globally on 64-bit.\nThis patch makes it possible for libnativehelper to set LD_LIBRARY_PATH\nin each Java VM (to support System.loadLibrary) without also hard-coding\nthe default search path there.\n\nChange-Id: If13961fae976e06dd80d5ef522f31e8b7eb01154\n"
    },
    {
      "commit": "b93702a0463fa0b87bf25d7ae9bdb09a35ea6a50",
      "tree": "a7c1748571da9d9831ca5f785a161186a1886b4f",
      "parents": [
        "6d929061c36e7929c61c8e6331315b86fe86976f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 21 16:07:45 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Dec 22 19:38:42 2013 +0000"
      },
      "message": "Improve dynamic linker diagnostics for internal errors.\n\nIf the linker can\u0027t resolve its own internal references to symbols,\nwe currently exit silently (albeit with EXIT_FAILURE). Not very helpful.\n\nChange-Id: I1614fc970dee4560b38832ede1987b65a8e53a1e"
    },
    {
      "commit": "e365f9d6543bc6607864ef61257505239dde15d1",
      "tree": "ecc2e3605bc26aeb9b16a1d3adbceb70da40ba19",
      "parents": [
        "2e3826c08171ead1647c800a0a6d9c333d335762"
      ],
      "author": {
        "name": "Marcus Oakland",
        "email": "marcus.oakland@arm.com",
        "time": "Thu Oct 10 15:19:31 2013 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 17 15:02:43 2013 -0800"
      },
      "message": "AArch64: Linker64 support for AArch64\n\nAddition of support for AArch64 in the linker64 target.\n\nChange-Id: I8dfd9711278f6706063e91f626b6007ea7a3dd6e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n"
    },
    {
      "commit": "5407eed84b98056a5af7d95007d8d511ebad60e4",
      "tree": "4d3d1319713ade70f6ae29026b06a97b915af7c0",
      "parents": [
        "38fcbbb35a40c46e96b4df10d670d1c132910854"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Mon Dec 09 18:08:48 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 12 11:18:46 2013 -0800"
      },
      "message": "Fix debugging issues in vdso handling\n\nUnder valgrind ehdr_vdso is null and causing segfault.\nAdding debug info for vdso producing plenty of issues on debugging\nthrough gdbserver, removing it. It doesn\u0027t seem it should be here.\n\nUnwinding through vdso test still works.\n\nChange-Id: I1a7e233c493f2268d725fa8d7279822d07decc49\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "ebd506c69e12b6dcaf5be94cc8ed1b53af299f9f",
      "tree": "79913ebffdfcc7a4b20d78a477b9d69340d477f9",
      "parents": [
        "cc9b7456b66b7c7c218a9d1f00d7aef1f5ecf409"
      ],
      "author": {
        "name": "Sergey Melnikov",
        "email": "sergey.melnikov@intel.com",
        "time": "Thu Oct 31 18:02:12 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 31 15:06:20 2013 -0700"
      },
      "message": "Fix linker crashes during unknown symbol lookup\n\nIntegration of kernel VDSO into internal bionic data structures using\ncommon functions.\nFix for dl_iterate_phdr function: the function provides incorrect\naddress of object in case of nonzero virtual and base addresses.\nLocation in address space of a particular program header should be\ncalculated using the formula:  addr \u003d base_addr + virtual_addr.\n\nSigned-off-by: Sergey Melnikov \u003csergey.melnikov@intel.com\u003e\nChange-Id: Ie2ab4257fd456242aab8afed0bd5bd6b29e81d6d\n"
    },
    {
      "commit": "e4d792adb8d6f9228b9ac9dc1ad7f43b271f085f",
      "tree": "2424b3c3c863e813eb56bdb2d21aac571cc7f30b",
      "parents": [
        "3ec5d8954b41f2e51d6ff7851533f1db1eba9a09"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 14:19:05 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 14:34:56 2013 -0700"
      },
      "message": "Don\u0027t allow text relocations on 64-bit.\n\nI\u0027ve also updated our \u003csys/exec_elf.h\u003e to match upstream.\n\nChange-Id: I52f9fce3167541811208d273ff23ceaa112f7135\n"
    },
    {
      "commit": "4eeb1f12a8b63afc0d0ad4d466b16fbffb21cd5a",
      "tree": "618c8b7133f3602880e0a4c8285c34e7552a0a45",
      "parents": [
        "93fcfeee2b4de4c65fc766bf10601397592341d7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 25 17:38:02 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 11:02:49 2013 -0700"
      },
      "message": "Clean up linker architecture macros.\n\nWe don\u0027t need our own architecture macros; the standard ones will do.\n\nThis patch also fixes some __x86_64__ tests to be USE_RELA tests instead,\nbecause they\u0027re not actually x86_64-specific.\n\nI\u0027ve cleaned up architecture-specific code slightly so where possible\nall the code corresponding to a particular architecture is together.\n\nThis patch also fixes a bug in LP64 DT_PLTGOT handling, which should be\nan error rather than falling through into DT_DEBUG! There was another #ifdef\nbug where we\u0027d only report unexpected DT_ entries on MIPS.\n\nChange-Id: Id1d04e372611f641c1aa278a18e379f28af9eaf5\n"
    },
    {
      "commit": "b8b0b6b412267e514c99a6d3636aefa3c7715673",
      "tree": "0701e99097620d4a8bed3af581cd3a910674ea9e",
      "parents": [
        "5be2c5998c996ff9d5efb94c127d9b832a295822"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 22:58:28 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 22:58:28 2013 +0000"
      },
      "message": "Revert \"Don\u0027t warn about x86 text relocations. They\u0027re too prevalent.\"\n\nThis reverts commit 5be2c5998c996ff9d5efb94c127d9b832a295822.\n\nChange-Id: I3fc8ca530cdbd74c834fb9cfabe812c9386419fc\n"
    },
    {
      "commit": "5be2c5998c996ff9d5efb94c127d9b832a295822",
      "tree": "1385d4302c95d6e051f72bfad843d69bd6ee07f1",
      "parents": [
        "cdac5f73aca015287d1f40ff50d4fbf293a0c549"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 23 13:45:01 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 23 13:45:01 2013 -0700"
      },
      "message": "Don\u0027t warn about x86 text relocations. They\u0027re too prevalent.\n\nWe should fix this (and disallow it for x86_64), but for now let\u0027s get CTS\nrunning again.\n\nlibdvm.so and libcutils.so are the main problems.\n\n$ scanelf -qT out/target/product/generic_x86/symbols/system/lib/libcutils.so\n  libcutils.so: (memory/data?) [0x4125] in (optimized out: previous android_memset16) [0x4100]\n  libcutils.so: (memory/data?) [0x424F] in (optimized out: previous android_memset16) [0x4100]\n  libcutils.so: (memory/data?) [0x42F8] in (optimized out: previous android_memset16) [0x4100]\n  libcutils.so: (memory/data?) [0x4349] in (optimized out: previous android_memset16) [0x4100]\n  libcutils.so: (memory/data?) [0x4406] in (optimized out: previous android_memset16) [0x4100]\n  libcutils.so: (memory/data?) [0x45AC] in (optimized out: previous android_memset32) [0x4590]\n  libcutils.so: (memory/data?) [0x4650] in (optimized out: previous android_memset32) [0x4590]\n  libcutils.so: (memory/data?) [0x46F9] in (optimized out: previous android_memset32) [0x4590]\n  libcutils.so: (memory/data?) [0x474A] in (optimized out: previous android_memset32) [0x4590]\n  libcutils.so: (memory/data?) [0x4807] in (optimized out: previous android_memset32) [0x4590]\n\nBug: 11353056\nChange-Id: Id4a76b310be7fe858a8a60d0d260b09913b66be9\n"
    },
    {
      "commit": "3d4470c14a57b0b9ae74060370be53469e95d6a1",
      "tree": "06e9fd35ced589c34d46b2aad1fd65ccaea0fefe",
      "parents": [
        "8c39e58b6a6744c5e7ae08424a6281d75af23072"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Oct 22 12:06:36 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Oct 22 12:06:36 2013 -0700"
      },
      "message": "change wording on text relocation message.\n\nThe current message is too alarmist.\n\nChange-Id: I53e8eadca239f867b4e6b9c193eba96e267950c3\n"
    },
    {
      "commit": "c075c18537d18ccb6760ba1f5727ce2c0890285a",
      "tree": "16b87064fe486ce5a1d9b59dd64798b5d72c0e48",
      "parents": [
        "abeafbd6d5e11044dd305e48134bc3d84319a3da"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Wed Oct 16 19:13:58 2013 +0400"
      },
      "committer": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Wed Oct 16 19:13:58 2013 +0400"
      },
      "message": "x86_64: Add R_X86_64_64 relocation handling\n\nChange-Id: I86ffc56fa6a9053bed44e92a579530c2beb8eb2c\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "1a57f9f75c5752d990a2749b000ec4ceace94b54",
      "tree": "c3c2056a4e3868618d473047b2519aa91c3233c2",
      "parents": [
        "777ebe86677f6fd88c87995652146b2ead19a95f"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Wed Feb 06 19:21:46 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:50:30 2013 -0700"
      },
      "message": "x86_64: Rename 64-bit linker to linker64\n\nThat\u0027s for having both on the same system.\n\nChange-Id: Ic2bc2c015e6486e8b6a7576f7b28d2d027534368\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "eb847bc8666842a3cfc9c06e8458ad1abebebaf0",
      "tree": "15e070fb706ba7599d5f402a8f934a7399541a6a",
      "parents": [
        "0c17099a71cb5d1b36b7aab66fd7341b3fc9106d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 15:50:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:00:17 2013 -0700"
      },
      "message": "Fix x86_64 build, clean up intermediate libraries.\n\nThe x86_64 build was failing because clone.S had a call to __thread_entry which\nwas being added to a different intermediate .a on the way to making libc.so,\nand the linker couldn\u0027t guarantee statically that such a relocation would be\npossible.\n\n  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against \u0027__thread_entry\u0027 which may overflow at runtime; recompile with -fPIC\n\nThis patch addresses that by ensuring that the caller and callee end up in the\nsame intermediate .a. While I\u0027m here, I\u0027ve tried to clean up some of the mess\nthat led to this situation too. In particular, this removes libc/private/ from\nthe default include path (except for the DNS code), and splits out the DNS\ncode into its own library (since it\u0027s a weird special case of upstream NetBSD\ncode that\u0027s diverged so heavily it\u0027s unlikely ever to get back in sync).\n\nThere\u0027s more cleanup of the DNS situation possible, but this is definitely a\nstep in the right direction, and it\u0027s more than enough to get x86_64 building\ncleanly.\n\nChange-Id: I00425a7245b7a2573df16cc38798187d0729e7c4\n"
    },
    {
      "commit": "011bc0ba45a8b7766a205cb21269dbafb32294b6",
      "tree": "754276a721fc117082ad7130b7bfb855d2ce418f",
      "parents": [
        "58522099e52be3b5eba702ee6e82c03050e0dcca"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 14:27:10 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 14:27:10 2013 -0700"
      },
      "message": "Use /system/lib64 and /vendor/lib64 for 64-bit libraries.\n\nChange-Id: I4886aeb3070bf97b4cfe8053388ecb1bda288017\n"
    },
    {
      "commit": "c00f2cb587630d5e954c7f548749f1e3170b3cb1",
      "tree": "c62c53a795026d249df132db9bc7894add15611d",
      "parents": [
        "5d06718cd357b509588465ec1fa261db23b5899a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 04 17:01:33 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 09:57:01 2013 -0700"
      },
      "message": "x86_64 linker.\n\nBased on I8dc3e2cb596f75dc58ae82e4dc58f8c177dd3323 by\nPavel Chupin \u003cpavel.v.chupin@intel.com\u003e.\n\nChange-Id: Icd582d277cbe273477b450f2848343d72c86ec9f\n"
    },
    {
      "commit": "c620059479c47a78d57086d73726c9adc2f337ad",
      "tree": "ef410fffb4d853aaf7dbfee41743c197c4985856",
      "parents": [
        "6dee3b9aeec40bb518c1a29b4462300869a03d8e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 30 18:43:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 30 18:43:46 2013 -0700"
      },
      "message": "Remove 32-bit assumptions from the ELF code.\n\nChange-Id: I2c1f3d34c33685799aade8866eec44479ff9f963\n"
    },
    {
      "commit": "24053a461e7a20f34002262c1bb122023134989d",
      "tree": "5da0ad5fe8822190483226140c7fba6a9f618395",
      "parents": [
        "df7436e709035fb6f5667980042848c8b4ca3e79"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Aug 19 17:45:09 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 06 09:53:54 2013 -0700"
      },
      "message": "Add the dl_iterate_phdr function to libdl for arm.\n\nBug: 8410085\n\nMerge from internal master.\n\n(cherry-picked from cb491bc66dc0abc145930b09086eb9189a30f6c2)\n\nChange-Id: I94ed51bc5d4c626df7552c0e85c31ccee2d6568f\n"
    },
    {
      "commit": "87c358524e479235aa6241736d2ce325f89daafc",
      "tree": "e6e093bd601223a0b9bbcf5af8ca4a2be8623f81",
      "parents": [
        "c8039337e3ee608e23f8ca6e5ea123d938b08029"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 20 21:05:44 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 21 10:20:13 2013 -0700"
      },
      "message": "Make mips_relocate_got tolerate a missing got\n\nBug: 10094803\n\n(cherry picked from commit 7ee26878065abb494600595349ce58b2b2db3709)\n\nChange-Id: Ib15bccecaee421dc463d46a3956b054051708759\n"
    },
    {
      "commit": "c45087bffa528c0809f0df2e0a3708eba7018b33",
      "tree": "396514632534992375e81be44ea31194ff56ed9a",
      "parents": [
        "bfacb603e417c1e2c25ce8482b5c6e31b4db8c9b"
      ],
      "author": {
        "name": "Sergey Melnikov",
        "email": "sergey.melnikov@intel.com",
        "time": "Fri Jan 25 16:40:13 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 25 13:12:39 2013 -0700"
      },
      "message": "Kernel dso support for \u0027dl_iterate_phdr\u0027 function\n\nKernel provides virtual DSO for stack unwinding/exception handlind info for\nsignal usage case. Stack unwinding routines use \u0027dl_iterate_phdr\u0027 function\nfor additional DWARF info gathering from DSOs. Patch enables virtual DSO\nenumeration via dl_iterate_phdr function.\n\nSigned-off-by: Sergey Melnikov \u003csergey.melnikov@intel.com\u003e\nChange-Id: Ic2882b28f40b456a088bc1e63c50cbfda7e4a102\n"
    },
    {
      "commit": "c9084427aa15259c8bfb9b13b979597a4abd1805",
      "tree": "3034d0cab47807e06a4d0ff17d3ad4b555753cb5",
      "parents": [
        "6819773103495a6fd81f024dc6711771320ae4ec"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 21 12:31:33 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 21 15:33:15 2013 -0700"
      },
      "message": "linker: Emit a warning on text relocations\n\nText relocations unnecessarily mark pages as dirty, preventing them\nfrom being swapped out, wasting memory. Also, text relocations\nprevent the code from running on certain hardened systems.\n\nPrint a message in logcat and stderr when we see a text relocation,\nto encourage developers to fix their code.\n\nChange-Id: I6051a7463911e090ae5727a355397d539669d5b9\n"
    },
    {
      "commit": "7e5a8cc5230dcc027686813e51a1b001cee4c602",
      "tree": "95c1e6165cff8d0d8dacd6741075d065474fc49d",
      "parents": [
        "977a33137d2be0093f474055f839cf665b82b588"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 18 13:15:00 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 18 13:15:00 2013 -0700"
      },
      "message": "Make LD_PRELOAD failures just warnings.\n\nThis matches glibc and makes life easier for developers who want to\nsometimes preload a library from init (which has no conditionals); they\ncan simply move/remove the library to disable.\n\nChange-Id: I579b8633f958235af6e46bb53b378b9e363afb1f\n"
    },
    {
      "commit": "6bec5b792a5f034089a942cb28cab26d36408235",
      "tree": "40758ce5b973feda4f6f2e34bce1d133d119a911",
      "parents": [
        "404d491eb655839bf4260cc168bb79864473e129"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jun 03 17:27:49 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 03 20:15:14 2013 -0700"
      },
      "message": "Small cleanup of soinfo_elf_lookup.\n\n- Remove unnecessary line.\n- Move declarations to first use.\n\nChange-Id: I1d8398d6c13f7cb86bffe0b68af849e35a4b234d\n"
    },
    {
      "commit": "8147d3c284932896ab6095232b355979b9eb33d3",
      "tree": "984cfb411636e857e4317e092b8132bcd42b2841",
      "parents": [
        "ff220f70036178aa0d7dcf1cbc4825085a84441e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 09 14:19:58 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 09 15:29:54 2013 -0700"
      },
      "message": "Don\u0027t fail to run DT_INIT and DT_INIT_ARRAY constructors if a shared library has DT_PREINIT_ARRAY constructors.\n\nThe GNU dynamic linker silently ignores a DT_PREINIT_ARRAY section\nin a shared library. We had ineffectual code that tried to report\nan error, which I tried to fix but got wrong --- my version still\nwouldn\u0027t report the error to the caller, but would prevent us from\ncontinuing to call constructors.\n\nBug: 8825226\nChange-Id: I4fd8450ecc44d8767a1cb808aeecfbfbfc77c070\n"
    },
    {
      "commit": "8d3e91d4f842911366155845afb3cfbdad0b4cad",
      "tree": "61d332169251cde7d11a6687668f8b4a724e372e",
      "parents": [
        "87efcd2e63c9f218f476ef88f21e660f9bce633f"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Apr 25 13:15:24 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Apr 25 13:15:24 2013 -0700"
      },
      "message": "linker: only re-open std* for setuid programs.\n\nget_AT_SECURE() was getting called before linker_env_init() had\nbeen called, and returning the default value (\"true\"). This was\ncausing us to reopen closed stdin, stdout, and stderr for ALL\nprocesses, not just privileged (setuid) processes.\n\nCalling path:\n  - __linker_init\n    - soinfo_link_image\n      - get_AT_SECURE\n    - __linker_init_post_relocation\n      - linker_env_init\n\nThis change restores the intended behavior of only re-opening\nstdin, stdout, and stderr for privileged processes.\n\nChange-Id: I8b085ea6597710ac4c1a3c93f1bf8b81eecb08c0\n"
    },
    {
      "commit": "0d787c1fa18c6a1f29ef9840e28a68cf077be1de",
      "tree": "3f8efc05d80658c9be48513238104a5de01a9951",
      "parents": [
        "014c75c78bdcad8acde8d0abb2450aa1f78e1a1f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 04 13:46:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 05 11:24:19 2013 -0700"
      },
      "message": "Make abort messages available to debuggerd.\n\nThis adds __libc_fatal, cleans up the internal logging code a bit more,\nand switches suitable callers over to __libc_fatal. In addition to logging,\n__libc_fatal stashes the message somewhere that the debuggerd signal handler\ncan find it before calling abort.\n\nIn the debuggerd signal handler, we pass this address to debuggerd so that\nit can come back with ptrace to read the message and present it to the user.\n\nBug: 8531731\nChange-Id: I416ec1da38a8a1b0d0a582ccd7c8aaa681ed4a29\n"
    },
    {
      "commit": "8f7120bbacb0bb7a8aca1102f76f64a462f40231",
      "tree": "ea3f120e146a043018529c4cd42b7632a5646ca0",
      "parents": [
        "800ad8249a398e94d039b6f6597e2a51558e41dd"
      ],
      "author": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Fri Mar 22 10:25:56 2013 +0800"
      },
      "committer": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Fri Mar 22 10:28:15 2013 +0800"
      },
      "message": "Drop unnecessary execution permission for .cpp/.c/.h\n\nChange-Id: I9ac2b9d8f6bdb4fab8962210c5ec8f9c3e8c0ebf\n"
    },
    {
      "commit": "8f2a5a0b40fc82126c691d5c30131d908772aab7",
      "tree": "0b29a5dc82395c076387edb5af9ca271a91264c0",
      "parents": [
        "e23ed8c6441389a79c6504295184f7249e01a197"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 15:30:25 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:12:58 2013 -0700"
      },
      "message": "Clean up internal libc logging.\n\nWe only need one logging API, and I prefer the one that does no\nallocation and is thus safe to use in any context.\n\nAlso use O_CLOEXEC when opening the /dev/log files.\n\nMove everything logging-related into one header file.\n\nChange-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58\n"
    },
    {
      "commit": "ca0c11bd823f37f03cc8067cb182876827d5275a",
      "tree": "b6d10789c2be00f069e643a70cb9e29223f0e07d",
      "parents": [
        "6b4c77f854c079138d552608b9df5fa3035f0fcc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 10:40:45 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 11:26:56 2013 -0700"
      },
      "message": "Use more types than just \u0027unsigned\u0027 in the linker.\n\nStill chipping away at the situation where every variable in the\nlinker was of type \u0027unsigned\u0027. This patch switches counts over to\nbeing size_t and adds an explicit type for init/fini function pointers\nand arrays of function pointers.\n\nAlso improve logging from CallArray.\n\nAlso remove trailing \"\\n\"s from log messages.\n\nChange-Id: Ie036d2622caac50f4d29f0570888bb527661d77e\n"
    },
    {
      "commit": "fa8c05dc00bb41ae8fe5cb5e4f82816e30f7f7b2",
      "tree": "ce04ae839a072d7987805daa96c5ac66bb2d7558",
      "parents": [
        "53630c0e5bb6f845ba633e8dedc08b827f7b5d0c"
      ],
      "author": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Tue Mar 12 14:58:06 2013 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 10:19:14 2013 -0700"
      },
      "message": "Use Elf32_Addr instead of unsigned in linker\n\nChange-Id: I52dcbb4b0ff0a4052e0ad7a9bbeb2df65c9d2f66\n"
    },
    {
      "commit": "2d4b9b7cff78b9a378d7fc0f28c702dc43002020",
      "tree": "194dcbc0fefd3d6ba27e2ad0719c597223df8fb0",
      "parents": [
        "0b4a85bf1e11e28f66d0f101f9e7d4c51a0bb31c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 06 15:32:16 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 06 15:50:30 2013 -0800"
      },
      "message": "Fix typo of DT_NEEDED for DT_NULL\n\n(cherry-pick of 138b205ea9efc117fe522c2d7191378023a6e2cd)\n\nChange-Id: Ia895cb3018df55554627f1f61dcdfdada4a961ce\n"
    },
    {
      "commit": "5e2492eb89b778ee71e37e7406fe290d986ece70",
      "tree": "cbbcab7d154e153e518bc63418ec73d1da262396",
      "parents": [
        "20958207d5f9d36cc6f6b3edc4ff899c73b72b02"
      ],
      "author": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Wed Mar 06 23:52:45 2013 +0800"
      },
      "committer": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Wed Mar 06 23:58:48 2013 +0800"
      },
      "message": "Fix TIMING/STATS/COUNT_PAGES dynamic linker build\n\nChange-Id: I6432ac378816da253b83d1c7fb1d3fb64647b89e\n"
    },
    {
      "commit": "43cc7f795b48e9c13a54e15af829369805f11652",
      "tree": "daea65f5ba68690bad9e040af7a02fb1221ee0bd",
      "parents": [
        "c41dcad040ede2975ea63e383a8a3d36e3642d56"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 06 01:03:25 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 06 01:05:08 2013 -0800"
      },
      "message": "Fix MIPS linker build\n\n(cherry-picked from 8c7d8c2057e303985f78eab96da747ddaa013c78)\n\nChange-Id: Idcf62ab95f8fccbc2d7c3e771a4cfbe768a1555e\n"
    },
    {
      "commit": "650be4e584eeab3591b9e273bfd6d169eea60853",
      "tree": "5be356ef45653f3a118ebac4a66858d24a4bdb6b",
      "parents": [
        "036f909720fd0d56dbd04b9a761fb1d0714980b0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 05 18:47:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 05 22:24:34 2013 -0800"
      },
      "message": "More linker cleanup.\n\nChange-Id: I9fb3c7c0d4b4ffef0eeaf092d4e30ffe63a08671\n"
    },
    {
      "commit": "d4ee82dfa3ba01baa10e3ca48fcb31a27b8a4e81",
      "tree": "b3e7ea16cf946c1d23131bb86f59e043449b7776",
      "parents": [
        "d392e044c7a03ff1c0903c3512d00955bc7de473"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 28 15:58:45 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 05 15:27:21 2013 -0800"
      },
      "message": "Minor linker cleanup, primarily to use Elf32_Dyn\n\nChange-Id: Ifa9408e9859c6f79444715bed4808b7c13fdced5\n"
    },
    {
      "commit": "d3920b3a996b358e48232f417aa0a1e44a60f155",
      "tree": "b0520d0d300dbca1e6e54a9a7c26e6d2cd81ed08",
      "parents": [
        "f6afd3b670e23f56bf341d12136416aee17ea249"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 18:39:34 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 08 11:16:13 2013 -0800"
      },
      "message": "Switch to using AT_RANDOM for the stack guards.\n\nBug: 7959813\nChange-Id: I8db4b8912ba649bfe668c6f22aa44690ddd401a2\n"
    },
    {
      "commit": "42b2c6a5eed5e4ef35315b8cd32d1355f12a69b6",
      "tree": "0fb55a369b620ef79cfa103f67a5184f067dadeb",
      "parents": [
        "d32fdbaf03f688497adbec885e85c0a69f7a4542"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 10:14:39 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 11:44:21 2013 -0800"
      },
      "message": "Clean up the argc/argv/envp/auxv handling.\n\nThere\u0027s now only one place where we deal with this stuff, it only needs to\nbe parsed once by the dynamic linker (rather than by each recipient), and it\u0027s\nnow easier for us to get hold of auxv data early on.\n\nChange-Id: I6314224257c736547aac2e2a650e66f2ea53bef5\n"
    },
    {
      "commit": "d2b1a7311f023a1c532b5b418fc4bc7bd835be34",
      "tree": "ddac423f79ac86d0076a0d8d251308d253d5cc0b",
      "parents": [
        "d7ff139fec5cec08793523aa97503ade2b13c38e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 06 11:02:28 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 06 11:02:28 2013 -0800"
      },
      "message": "Remove partial implementation of MIPS non-PIC support.\n\nChange-Id: I3c287e52aae10559508174e73113367aea40e5c2\n"
    },
    {
      "commit": "1e980b6bc8315d00a07312b25486531247abd98c",
      "tree": "539f2c0c63fca27d5eb6ba184d658bb0e11a32d9",
      "parents": [
        "e4ca88d9fa8757e4fb4056fcafa5bc15b406a2fd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 18:36:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 18 22:20:06 2013 -0800"
      },
      "message": "Fix the duplication in the debugging code.\n\nWe had two copies of the backtrace code, and two copies of the\nlibcorkscrew /proc/pid/maps code. This patch gets us down to one.\n\nWe also had hacks so we could log in the malloc debugging code.\nThis patch pulls the non-allocating \"printf\" code out of the\ndynamic linker so everyone can share.\n\nThis patch also makes the leak diagnostics easier to read, and\nmakes it possible to paste them directly into the \u0027stack\u0027 tool (by\nusing relative PCs).\n\nThis patch also fixes the stdio standard stream leak that was\ncausing a leak warning every time tf_daemon ran.\n\nBug: 7291287\nChange-Id: I66e4083ac2c5606c8d2737cb45c8ac8a32c7cfe8\n"
    },
    {
      "commit": "36bd371e26c716cbc18e11801b13eff0352d91b0",
      "tree": "b63e06f7a65f3ac2df09449bb65172644f230386",
      "parents": [
        "ba117e4172fe6f160bf5f4d58b37e12c08c34245"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jan 16 13:13:22 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jan 16 13:16:42 2013 -0800"
      },
      "message": "Revert \"stack protector: use AT_RANDOM\"\n\nThe AT_RANDOM changes broke setuid / setgid executables\nsuch as \"ping\". When the linker executes a setuid program,\nit cleans the environment, removing any invalid environment\nentries, and adding \"NULL\"s to the end of the environment\narray for each removed variable. Later on, we try to determine\nthe location of the aux environment variable, and get tripped\nup by these extra NULLs.\n\nReverting this patch will get setuid executables working again,\nbut getauxval() is still broken for setuid programs because of\nthis bug.\n\nThis reverts commit e3a49a8661125f24aec8a1453e54b3b78005e21e.\n\nChange-Id: I05c58a896b1fe32cfb5d95d43b096045cda0aa4a\n"
    },
    {
      "commit": "e3a49a8661125f24aec8a1453e54b3b78005e21e",
      "tree": "a6a1be7dbdf1901db051fcfa1bd19f823e7a7f2b",
      "parents": [
        "14e1975e13c197180ed0481f305f83a362b16a24"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jan 14 14:46:26 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jan 16 10:09:52 2013 -0800"
      },
      "message": "stack protector: use AT_RANDOM\n\nPopulate the stack canaries from the kernel supplied\nAT_RANDOM value, which doesn\u0027t involve any system calls.\nThis is slightly faster (6 fewer syscalls) and avoids\nunnecessarily reading /dev/urandom, which depletes entropy.\n\nBug: 7959813\n\nChange-Id: If2b43100a2a9929666df3de56b6139fed969e0f1\n"
    },
    {
      "commit": "99c32055cb50443f722c55914869c1f6bb941959",
      "tree": "9919075545798c33fd0a74700adbb43cce5d706a",
      "parents": [
        "48c632a381b10996ec72a53cc95b009b06785d09"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 14 09:56:21 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 14 09:56:21 2013 -0800"
      },
      "message": "Fix my git mistake.\n\nThis was the formatting change that was supposed to be in\ncf23905a4bcc7bfdd109be5b6d69ad06877aa217.\n\nChange-Id: Ib79fa031b68f6f541f532507eb589afeaedb831f\n"
    },
    {
      "commit": "cf23905a4bcc7bfdd109be5b6d69ad06877aa217",
      "tree": "76f72d3b20ea41a0ba60daa9dd1bd7a3d3acffc1",
      "parents": [
        "2c5153b043b44e9935a334ae9b2d5a4bc5258b40"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Fri Jan 11 15:32:20 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 14 09:30:25 2013 -0800"
      },
      "message": "[MIPS] Set DT_DEBUG dyntab entry if it is writable\n\nThis is primarily for MIPS exutables that do not have a\nDT_MIPS_RLD_MAP entry.\n\nChange-Id: I4c221d92debcfed961eeee2515123f3fb21ec8e6\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\n"
    },
    {
      "commit": "db492b3ca753c4ef688d0daf648294de0c89145e",
      "tree": "aed7c4b15968d65c06e2d9ac6184153e611bf2d4",
      "parents": [
        "b1b5317799a34ac9e93f568af82952e52a9e9a13"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 03 15:44:03 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 03 15:44:03 2013 -0800"
      },
      "message": "Fix debug malloc.\n\n...which has been broken since the linker data structures went read-only.\n\nBug: 7941716\nChange-Id: If28f6bac0fcb13e371e4d85b064544f561c8d692\n"
    },
    {
      "commit": "cade4c36e7c9c62db3f476a0f9cfc329bac9acb7",
      "tree": "ba27e7e4734b952421de2d7060a7a53e295a60d3",
      "parents": [
        "4b58214205d3d29dbdfed49964010235ef3f0403"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 20 14:42:14 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 20 14:42:14 2012 -0800"
      },
      "message": "Support System.loadLibrary for libraries with transitive dependencies.\n\nAlso fix the FLAG_ERROR annoyance --- it\u0027s not helpful to cache failures.\n\nBug: 7896159\nBug: http://code.google.com/p/android/issues/detail?id\u003d34416\nBug: http://code.google.com/p/android/issues/detail?id\u003d22143\nChange-Id: I60f235edb4ea4756e1f7ce56f7739f18e8a50789\n"
    },
    {
      "commit": "e66190d2a97a713ae4b4786e60ca3d67ab8aa192",
      "tree": "0bacac6bbb8916d803e2b6f2c991030790e0f718",
      "parents": [
        "4c4b08a32eace878e4780ee340a57c43be950159"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 18 15:57:55 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 18 15:57:55 2012 -0800"
      },
      "message": "Check for unknown flags passed to dlopen(3).\n\nChange-Id: I56f4aab0e5a1487bc32d2c4d231e8bd15c4ac8da\n"
    },
    {
      "commit": "20a24403bc333cd92996cd43cef2e6a79c72d055",
      "tree": "051f811859b2f7de25e89562e103120854bcc9a6",
      "parents": [
        "429b05a1dfa71c6085590d60e0bdfa09beb50844"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Wed Oct 31 05:39:27 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 26 15:43:17 2012 -0800"
      },
      "message": "Do not include \u0027\\0\u0027 when writing error messages to stderr\n\nChange-Id: I6adc806c3920e5a4ae61ca55c40613fcf338b18c\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\n"
    },
    {
      "commit": "c5db969aa4a24a76fc0964f2ff89533e832b47a6",
      "tree": "fa672d1431b4d7a58a305c61f1cacf198c9b4ad4",
      "parents": [
        "c079dfe4153941e6da881be9a143b41a1112c2ac"
      ],
      "author": {
        "name": "Chao-Ying Fu",
        "email": "fu@mips.com",
        "time": "Thu Nov 15 02:00:17 2012 -0800"
      },
      "committer": {
        "name": "Chao-Ying Fu",
        "email": "fu@mips.com",
        "time": "Mon Nov 19 10:30:15 2012 -0800"
      },
      "message": "We should use load_bias.  This patch fixes MIPS NDK device exception test failures.\n\nChange-Id: I4b718c36666e66062c1f13e4deea1ec7a7951c54\n"
    },
    {
      "commit": "9c94fc9fbefe55836c1e1b949850f7726e64c118",
      "tree": "033c7cca172faadc593b7f0c1e7f0b9371e8e57b",
      "parents": [
        "9df2e000b5d56b2e529656034d684e370aa6a8d1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 05 09:11:43 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 05 09:11:43 2012 -0800"
      },
      "message": "Tone down some of the overly-verbose linker logging.\n\nWe don\u0027t need to see every dlopen(3)/dlsym(3) failure unless LD_DEBUG is on.\n\nChange-Id: I1edfe8b72f32ff54dd30e1acf32e20d470d5e9f7\n"
    },
    {
      "commit": "61a9ccb41eba8c35cae6e21318aca7160a402c5b",
      "tree": "45635217570d9cb83b4da14cac70beefdaa73f53",
      "parents": [
        "ed537239a94ebd11a8c262a319d81fd1f0d3f73f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 02 12:37:13 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 02 13:46:23 2012 -0700"
      },
      "message": "Make dynamic linker debugging always available.\n\nIf you need to build your own linker to get debugging, the debugging\nis never available when you need it.\n\nChange-Id: I5ff7e55753459d49a2990f25d9aa155e0b8602e0\n"
    },
    {
      "commit": "ed537239a94ebd11a8c262a319d81fd1f0d3f73f",
      "tree": "d8ea63e3b8968216a4ab87f7f97872005b0fa707",
      "parents": [
        "dc77a22850e31eb369ec9776c13c967566bf61d0",
        "c77c434149959e135ba21d1dd8a78a408fef2489"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 02 11:25:48 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 02 11:25:49 2012 -0700"
      },
      "message": "Merge \"Adjust symbol lookup for DT_SYMBOLIC case\""
    },
    {
      "commit": "c77c434149959e135ba21d1dd8a78a408fef2489",
      "tree": "416bcd464428bc39d772e636e2898eb46da07533",
      "parents": [
        "084be591923d3d509cea0a0f4b11b073e362d730"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Wed Oct 31 13:55:51 2012 +0400"
      },
      "committer": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Fri Nov 02 18:34:22 2012 +0400"
      },
      "message": "Adjust symbol lookup for DT_SYMBOLIC case\n\nAccording ELF spec re. DT_SYMBOLIC:\nThis element\u0027s presence in a shared object library alters the dynamic\nlinker\u0027s symbol resolution algorithm for references within the library.\nInstead of starting a symbol search with the executable file, the\ndynamic linker starts from the shared object itself. If the shared\nobject fails to supply the referenced symbol, the dynamic linker then\nsearches the executable file and other shared objects as usual.\n\nThis change implements the last part.\n\nChange-Id: Iae95d53d455313a4306f11733941bcd3596ac85f\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "6971fe4ca52ebdaa85ba676a044412b01d2ef1bf",
      "tree": "0d2b4800e7b56894d7b46bb9cd9c57809f59804a",
      "parents": [
        "e3c7b5192e65eeb0bd90bf884d3435ed9adfad0e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 22:59:19 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 22:59:19 2012 -0700"
      },
      "message": "Allow dlopen(\"egl/blah.so\").\n\nNVIDIA binary blobs construct strings to pass to dlopen(3) that\ncontain \u0027/\u0027 but require that we fall back to LD_LIBRARY_PATH.\n\nChange-Id: Iad831899986baace6962f4b335eeb288250a1e22\n"
    },
    {
      "commit": "d23736e4f228e46304b7cbc674a1d0094d73e0f5",
      "tree": "a3604b996016d73b2ccaf2982d338dc5d5ae53a3",
      "parents": [
        "064f862d557ab741575dfae479499a07ca0ab742"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 15:16:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 16:48:14 2012 -0700"
      },
      "message": "Keep the dynamic linker\u0027s soinfo pools mostly read-only.\n\nWe\u0027ll need a lot more refactoring of this code before we can reduce\nthe granularity, but this is a step forward.\n\nChange-Id: I07061720e734b571a8399c1d5b4f2f35cd681307\n"
    },
    {
      "commit": "1a6961650c82168864afe040dbdc05977db701df",
      "tree": "37e1243251773431c52c106026b0cb405babb7c3",
      "parents": [
        "0be1819b22b33fbedcb150f96a196ed096abe2fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 13:49:32 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 13:53:26 2012 -0700"
      },
      "message": "Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too.\n\nAlso remove an unnecessary #include and a now-obsolete TODO.\n\nChange-Id: I36d923721e349a286934b9534090a67ce0786e7b\n"
    },
    {
      "commit": "ba98d9237b0eabc1d8caf2600fd787b988645249",
      "tree": "f9072e739578645fc5ec927b6c7ed511b15ba144",
      "parents": [
        "c0ac7eba934fb88f321c75a71312ea482e9a85e9"
      ],
      "author": {
        "name": "Magnus Malmborn",
        "email": "magnus.malmborn@sonymobile.com",
        "time": "Wed Sep 12 13:00:55 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 11:31:39 2012 -0700"
      },
      "message": "Dynamically allocate soinfo-structs in linker\n\nRequest memory from the system when needed instead of having a fixed\narray for soinfo structs. Note that malloc() et al can\u0027t be used in\nlinker, so use mmap() instead.\n\nChange-Id: I4b495995931d7752b0e8c944e64d1fe41b9f7144\n"
    },
    {
      "commit": "124fae9eabd7a25d80dfa8c3b56bed0f0fba16f1",
      "tree": "4e7b568b09fef856dbc1a7f0cab9770c96a15d39",
      "parents": [
        "b46530bd3e5984047bd780f5d3a6a5ebabd9f02d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 31 14:20:03 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 31 14:30:50 2012 -0700"
      },
      "message": "Reject .so files with no sysv hash table.\n\nAlso ensure that dlopen(3) errors always include the name of the library we\nfailed to open.\n\nAlso fix a bug where we\u0027d fall back to searching LD_LIBRARY_PATH and the\nbuilt-in paths for names that include slashes.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d38479\nChange-Id: Ib2c009ed083344a7a012749d58f8679db2f26c78\n"
    },
    {
      "commit": "5ae44f302b7d1d19f25c4c6f125e32dc369961d9",
      "tree": "1dde02285286f2f48e4becd2c89d8b2ffc1085db",
      "parents": [
        "155e8d1df5b8fdfeabda3e7b61d95beb5b8d1467"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Thu Aug 30 12:48:32 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 30 17:09:21 2012 -0700"
      },
      "message": "linker: handle R_ARM_COPY relocations in a proper way\n\nIf an executable contain copy relocations, other references\nto the symbol it points to should be preempted and made to\npoint to the copy instead.\n\nAlso, the linker should make sure the target area has\nsufficient space to contain the copy. It also checks\nwhether the library that supplies the symbol is built\nwith -Bsymbolic, and errors out if this is the case.\n\nChange-Id: If135c83590092741cfd8f82f54816f363a4a4a3b\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "18a206c81d9743481e364384affd43306911283d",
      "tree": "2f211404b359cb7278f6963bb82f507e6c9a2050",
      "parents": [
        "06b596104a9ed3ac089abd00186a5698d7e8544f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 17:37:13 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 30 16:35:38 2012 -0700"
      },
      "message": "More dynamic linker cleanup.\n\nI still want to break linker_format out into its own library so we can reuse\nit for malloc debugging and so forth. (There are many similar pieces of code\nin bionic, but the linker\u0027s one seems to be the most complete/functional.)\n\nChange-Id: If3721853d28937c8e821ca1d23cf200e228a409a\n"
    },
    {
      "commit": "5419b9474753d25dff947c7740532f86d130c0be",
      "tree": "4d746cfc20a1d3b5886f691ed1a49ddf34e2df78",
      "parents": [
        "a9944cfe9e152ca46afb0a77300ec5a2a1a24e64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 16 15:54:46 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 16 17:58:17 2012 -0700"
      },
      "message": "Make dlerror(3) thread-safe.\n\nI gave up trying to use the usual thread-local buffer idiom; calls to\ncalloc(3) and free(3) from any of the \"dl\" functions -- which live in\nthe dynamic linker -- end up resolving to the dynamic linker\u0027s stubs.\nI tried to work around that, but was just making things more complicated.\nThis alternative costs us a well-known TLS slot (instead of the\ndynamically-allocated TLS slot we\u0027d have used otherwise, so no difference\nthere), plus an extra buffer inside every pthread_internal_t.\n\nBug: 5404023\nChange-Id: Ie9614edd05b6d1eeaf7bf9172792d616c6361767\n"
    },
    {
      "commit": "3b297c40794b23d50cb5240f9b03f6ef25fd98db",
      "tree": "ebcb95b3cd9f249f08257e8654307f88c98e6dbb",
      "parents": [
        "417fd2334a694cf6a831b81cd672b4ca31ff2f54"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 11 16:08:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 11 16:08:51 2012 -0700"
      },
      "message": "Fix dlerror(3).\n\nAdd unit tests for dlerror(3) in various situations. I think We\u0027re at least\nas good as glibc now.\n\nAlso factor out the ScopedPthreadMutexLock and use it here too.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d38398\nChange-Id: I040938b4366ab836e3df46d1d8055b92f4ea6ed8\n"
    },
    {
      "commit": "9c3449ecd9d5e9cdb1e995e35e53334a4a288a5e",
      "tree": "8c7dd651a96cfae737adad1bfc6b0ec9cbc6d7a4",
      "parents": [
        "7593fa8eb7d8c3950a069e5edd244fb68872ec17"
      ],
      "author": {
        "name": "Xiaokang Qin",
        "email": "xiaokang.qin@intel.com",
        "time": "Thu Sep 13 18:07:24 2012 +0800"
      },
      "committer": {
        "name": "Xiaokang Qin",
        "email": "xiaokang.qin@intel.com",
        "time": "Thu Sep 13 18:09:20 2012 +0800"
      },
      "message": "bionic: linker: Need update the map-\u003el_addr for execution.\n\nCurrently, linker doesn\u0027t update the map-\u003el_addr for execution.\nWhich could break the Unwind_Backtrace with PT_GNU_EH_FRAME enabled\nin new toolchain.\n\nChange-Id: Ifbd853134da64a962f7e4c4105e56a3f20def1b2\nAuthor: Fengwei Yin \u003cfengwei.yin@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nAuthor-tracking-BZ: 57077\n"
    },
    {
      "commit": "e9b6fc6f82276188404a2839e31a2f4c19f6c336",
      "tree": "ed8f68b580c5192289369c1b79f26b3fa1aadd3e",
      "parents": [
        "0d7177c0d47517514c81713427fc28e04dc3cd37"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 29 13:10:54 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 29 13:10:54 2012 -0700"
      },
      "message": "Improve the dynamic linker diagnostics.\n\nLose the pid, only show the name of the function (not its whole signature),\nand include the name of the library we failed to load. (I hadn\u0027t noticed\nthat the library name was missing before because in Java we add that into\nthe UnsatisfiedLinkError detail message.)\n\nThe new output looks like this:\n\n  Cannot load library: soinfo_relocate(linker.cpp:968): cannot locate symbol \"__libc_malloc_default_dispatch\" referenced by \"libc_malloc_debug_leak.so\"...\n\nChange-Id: I3bb5c9780d9aaf3a9e4418ea55bc98122a81f80f\n"
    },
    {
      "commit": "d39c3abd5ad8600fb1d79a0b95a58197197087e0",
      "tree": "9ff42ae50601253e9401fc4e582b415cb6680a99",
      "parents": [
        "a37ce7faa6d6c7355e3c6f6e09e5268cbf29c291"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Aug 24 13:25:51 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Aug 28 11:48:32 2012 -0700"
      },
      "message": "linker: Fix ARM_R_COPY relocations\n\nPer http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044d/IHI0044D_aaelf.pdf\nSection 4.7.1.10, ARM_R_COPY relocations are only suppose to reference shared\nlibraries, not the executable itself.  When resolving an R_ARM_COPY symbol,\nensure we don\u0027t look in our own symbol.\n\nThis partially addresses\nhttp://code.google.com/p/android/issues/detail?id\u003d28598 .  After this\npatch, the printfs generated by the test program are:\n\nglobal \u003d 0x42 (0x401c7000)\nglobal \u003d 0x42 (0x11000)\n\nbefore, the output was:\n\nglobal \u003d 0x42 (0x40071000)\nglobal \u003d 0x0 (0x11000)\n\nI\u0027m still not very happy with this patch, but I think it\u0027s an improvement\nover where we were at before.\n\nThis change was modeled after https://android-review.googlesource.com/38871\n\nChange-Id: Id7ad921e58395e76a36875bcc742ec5eeba53f08\n"
    },
    {
      "commit": "bedfe38b8ba512dd6236c00e8b4a9b01c2bd1281",
      "tree": "7c395dc45e732e921d65fe0baaa0315b954fbc87",
      "parents": [
        "b7c6991c9af3882bd13cbf6bc42da85c884aa5f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 14 14:07:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 14 14:07:59 2012 -0700"
      },
      "message": "More cleanup.\n\nMake more stuff static, remove some dead code, and fix a few typos.\n\nChange-Id: I010b0eadeaf61e2899c37014ad1e7082c70bd510\n"
    },
    {
      "commit": "12c78bbded8ec03f821dfa09174464c04836e4ea",
      "tree": "bcf31e000dc214688694a6538568b3a49624352c",
      "parents": [
        "54655eaf92ca91bfe2fa293896059a181e27b6eb"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 14 12:30:09 2012 +0200"
      },
      "committer": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 14 19:38:28 2012 +0200"
      },
      "message": "linker: avoid clobbering the .dynamic section of shared libs\n\nThis patch removes the DT_NEEDED hack which stores pointers\nto soinfo structs in the .dynamic section of the library\nbeing loaded.\n\nInstead, it caches the soinfo struct pointers on the stack\nduring relocation time. After relocation time, i.e. when\ncalling constructors and destructors of the shared library\nand its dependencies, uncached access is used instead,\ndoing lookups using the string table entries pointed to by\nthe DT_NEEDED entries.\n\nBy removing this hack, it is no longer needed to undo the\nPT_GNURELRO protection, i.e., all non-writable mappings\ncan remain non-writable during their entire lifespan.\n\nEven though, strictly speaking, the algorithmic complexity\nhas increased somewhat, the real-world adverse effect\nis negligible on the systems I have tested.\n\nChange-Id: I2361502560b96b5878f7f94a8e8a215350d70d64\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "9181a5dcfe69199415c7aebf93524cc3dd6f8a6f",
      "tree": "381d31f88ca04d15d5f83845b02cf1a04abc7ce6",
      "parents": [
        "20b94c0ce99ea3d2315535091c8bcd02f831d252"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Aug 13 17:58:37 2012 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 11:05:47 2012 -0700"
      },
      "message": "Fix module constructor order.\n\n.preinit_array goes before the constructors of LD_PRELOAD-ed libraries.\n\nChange-Id: I1af32ce29eaf3ca4351ae8a0f7f5da5165853216\n"
    },
    {
      "commit": "5135b3ae6ebc460418f7917bd36b368340e48d5a",
      "tree": "9352c1ef42d3972e8e202eeabd0e7bfb73799b95",
      "parents": [
        "0bf5cf87c6b7d3de8962ba132ecfb6f0e4b84f06"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Aug 10 21:08:42 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Aug 13 08:50:11 2012 -0700"
      },
      "message": "linker: don\u0027t perform unnecessary mprotects\n\nThe linker only needs to mark the text segment as\nwritable iff the file has text relocations. Unnecessarily\ncalling mprotect when it isn\u0027t necessary is slow, and some\nsecurity enhanced kernels don\u0027t like it. Pages which are\nsimultaneously writable and executable are considered a no-no.\n\nThe vast majority of executables / shared libraries on Android\ndo NOT have text relocations.\n\nChange-Id: Ic38ce30a99b7e33ecf21efd9c108547a58eafa35\n"
    },
    {
      "commit": "06f0e74a2b957db93fed3fdd49fe939ab2fe1595",
      "tree": "264d6b411c8ab418a7fbcf4a88b075fe4d8d2286",
      "parents": [
        "709bb0f79ced522e5fb145182472ee4063b85368"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Aug 10 16:07:02 2012 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Aug 10 16:07:02 2012 -0700"
      },
      "message": "Set the dynamic field in the link map for the linker itself.\n\nOtherwise gdb will print a spurious warning each time gdb is used:\n\nwarning: .dynamic section for \"/system/bin/linker\" is not at the expected\naddress (wrong library or version mismatch?)\n\nBUG:6946614\nChange-Id: Ib21b8db0615751189c1601140deb43bc089289b6\n"
    },
    {
      "commit": "4688279db5dcc4004941e7f133c4a1c3617d842c",
      "tree": "db614aaf2e0a02cef4b5f643fa91e9cbcfd7d5ff",
      "parents": [
        "1c861728e5c8dda7589e6595f4850d77ec21a236"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 03 16:49:39 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 11:41:10 2012 -0700"
      },
      "message": "Clean up the linker a bit, remove prelinking support.\n\nAlso make the errors more readable, since none of us seemed to know\nwhat they actually meant. The new style is still as verbose as the\nold, but that\u0027s probably necessary in the absence of chained exceptions\nin C. Here\u0027s what you\u0027d see if you try to boot after removing\nlibsurfaceflinger.so:\n\n  32267 32267 E AndroidRuntime: java.lang.UnsatisfiedLinkError: Cannot load library: (linker.c:1629, pid 32259) soinfo_link_image: could not load library \"libsystem_server.so\" needed by \"libandroid_servers.so\"; caused by (linker.c:1629, pid 32259) soinfo_link_image: could not load library \"libsurfaceflinger.so\" needed by \"libsystem_server.so\"; caused by (linker.c:709, pid 32259) load_library: library \"libsurfaceflinger.so\" not found\n\nThis patch also fixes almost all of the compiler warnings.\n\nChange-Id: I64bb59aed6d4e039c15ea45be2367f319ef879f8\n"
    },
    {
      "commit": "d7daacb46372132ae3f0121647074936c304b572",
      "tree": "c6bbaccbf2d36b1c4494b5bce7e7b489bec6442b",
      "parents": [
        "0ca9d0748e3229c849e3ee17259e0e55d7214800"
      ],
      "author": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Tue Jul 31 12:07:22 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 02 14:39:50 2012 -0700"
      },
      "message": "MIPS support to the linker\n\nChange-Id: I37ec2d6c51d82bb9e9dbfef4b38c85366bead255\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\nSigned-off-by: Raghu Gandham \u003craghu@mips.com\u003e\nSigned-off-by: Bhanu Chetlapalli \u003cbhanu@mips.com\u003e\n"
    },
    {
      "commit": "8dfc073b1487ab25ab483ab346cee1d9e584adb1",
      "tree": "7423f6a87858e187e5b8ccbc5396ee7096f27285",
      "parents": [
        "9061c6e7ae1d9b0e4d2f8a62b3682a565282f9b9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 27 15:30:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 27 15:30:51 2012 -0700"
      },
      "message": "Fix a TEMP_FAILURE_RETRY usage error in the linker.\n\nSimilar to the fix in c20d0f3993ebb0d3dec958a306a68ebb48bfeadd.\n\ngrep(1) says this was the only other instance in bionic.\n\nChange-Id: I1729038762ee1c7c4743a6bd11d5558afd6f5749\n"
    },
    {
      "commit": "f6ee33cee717f9878d3a43bf76c35547649676d7",
      "tree": "93d200becc2ae2e17794901b03ff69a5d32b5382",
      "parents": [
        "3fd5e91e58ba40a7321a3f2c4c64970584e9bb56",
        "326e85eca6916eb904649f7bff65244a40088ba7"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 18 14:02:21 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 18 14:02:22 2012 -0700"
      },
      "message": "Merge \"linker: Fix LD_PRELOADS for calling constructors\""
    },
    {
      "commit": "3fd5e91e58ba40a7321a3f2c4c64970584e9bb56",
      "tree": "9327cd649b5f512a9927ee8aaf256513f5beb94c",
      "parents": [
        "05f03b8875ed4aab95e5587d066d62a781af97bc",
        "bb5c30a3ee40324effd4daa346505e16faf91728"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 11:38:23 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 11:38:23 2012 -0700"
      },
      "message": "Merge \"bionic: Report linker relocation address to gdb\""
    },
    {
      "commit": "8211bc6325ef61f2fe2021fac9e0f4219abaccf2",
      "tree": "6be741ab104858dba834bc84ecb75fabec4ddfab",
      "parents": [
        "decb531ce29e0472d5d3117c4bfda674f374a771"
      ],
      "author": {
        "name": "Robin Burchell",
        "email": "robin.burchell@collabora.co.uk",
        "time": "Thu Jul 05 09:23:19 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 10:03:35 2012 -0700"
      },
      "message": "linker: cleanup of undefined state handling, which is really dead code\n\nGiven that _elf_lookup (and thus, _do_lookup) cannot possibly return an\nundefined symbol (due to the check for SHN_UNDEF in _elf_lookup), there\u0027s\nno need for spurious checks for SHN_UNDEF on its return value.\n\nConflicts:\n\n\tlinker/linker.c\n\nChange-Id: Ic73cf439924b45f72d4d9ba3f64a888c96cbbd9b\n"
    },
    {
      "commit": "439fa8ea8c33a7945258dfe84a71ab2665efaa9a",
      "tree": "f9e9312620e9d142605257434e495c716f1ef559",
      "parents": [
        "8d7355ac2f19f72e03989aab6b47990a34fd6123"
      ],
      "author": {
        "name": "Robin Burchell",
        "email": "robin.burchell@collabora.co.uk",
        "time": "Thu Jul 05 09:21:07 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 09:51:17 2012 -0700"
      },
      "message": "linker: Use SHN_UNDEF instead of describing what it is trying to do.\n"
    },
    {
      "commit": "bb5c30a3ee40324effd4daa346505e16faf91728",
      "tree": "2d985059f3306f6237749893fb1793f21ba46b4f",
      "parents": [
        "6334c662cae4cd9b61f5f3185048b0cd3633dad7"
      ],
      "author": {
        "name": "Ryan V. Bissell",
        "email": "ryan@bissell.org",
        "time": "Mon Jul 16 02:16:18 2012 -0500"
      },
      "committer": {
        "name": "Ryan V. Bissell",
        "email": "ryan@bissell.org",
        "time": "Mon Jul 16 02:16:18 2012 -0500"
      },
      "message": "bionic: Report linker relocation address to gdb\n\nGDB needs the runtime linker\u0027s base address in order to\nlocate the latter\u0027s \".text\" and \".plt\" sections, for the\npurpose of detecting solib trampolines.  It also can\npotentially use this to calculate the relocated address\nof rtld_db_dlactivity.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d34856\nChange-Id: I63d3e7ae4e20a684ceb25967f2241e7d58dd685d\nSigned-off-by: Ryan V. Bissell \u003cryan@bissell.org\u003e\n"
    },
    {
      "commit": "326e85eca6916eb904649f7bff65244a40088ba7",
      "tree": "ba1a91f237d5a013bb89af9a3d2f4c41800125e9",
      "parents": [
        "e1d909f71e183ac3d1e21af5bb1af35d30e9de5b"
      ],
      "author": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Sun Jul 15 00:49:27 2012 +0800"
      },
      "committer": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Sun Jul 15 00:49:34 2012 +0800"
      },
      "message": "linker: Fix LD_PRELOADS for calling constructors\n\nChange-Id: I1eae77a4c59e8a5acc009127d271455bb6fc01b6\n"
    },
    {
      "commit": "793e6aedf2dfb6cc9bdf0cf9fd60dd87ec21f658",
      "tree": "49ed031c801cbbb423baf37927e4cb83b8833608",
      "parents": [
        "2ddf77b37731dff3a271c1312fc0bef2e7d41473",
        "67636eea20f7789e6689ee8cf6017e7d48735ca1"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 09 11:07:46 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 09 11:07:46 2012 -0700"
      },
      "message": "am 67636eea: am 40e7ed58: Unhide rtld_db_dlactivity()\n\n* commit \u002767636eea20f7789e6689ee8cf6017e7d48735ca1\u0027:\n  Unhide rtld_db_dlactivity()\n"
    },
    {
      "commit": "40e7ed58d73eae59d0cf2fed61284d16692e307b",
      "tree": "07def7271e63e1367672dc37bcffe89627f4ad9b",
      "parents": [
        "4d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 02 11:17:04 2012 -0700"
      },
      "committer": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 02 11:17:04 2012 -0700"
      },
      "message": "Unhide rtld_db_dlactivity()\n\nSince linker is built with -fvisibility\u003dhidden rtld_db_dlactivity()\nif hidden from gdb.  Unhide it otherwise gdb may not know linker\nactivity and rescan solib\n\nChange-Id: Ia8cd8d9738c6ea5696ba2ef0ebf2cf783f9ca70a\n"
    },
    {
      "commit": "b52e4385c403d18a68309e568ac729c787d900c4",
      "tree": "ffeaf6389772780623222f84cd1ad8c241e9c38a",
      "parents": [
        "63f99f4a4e05353de2e8ba3d7bd4d882d716167a"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 01:24:17 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 10:39:55 2012 +0200"
      },
      "message": "linker: improve loadable segment protection.\n\nUse the functions in linker_phdr.c to load the PT_LOAD segments\nin memory, and toggle their mapping\u0027s writable protection bit\nas needed. In particular:\n\n  - when loading a library, load the segments then unprotected\n    them to allow relocations to work.\n\n  - when relocating the linker of the executable, unprotect\n    the segments loaded by the kernel to make relocations work\n    too.\n\n  - after all relocations are done, re-protect the segments,\n    and apply GNU RELRO protection if needed.\n\n  - just before calling the destructors, undo the GNU RELRO\n    protection.\n\nChange-Id: I50e709f03958204b8d6140c0f51ebe24fe089a1b\n"
    },
    {
      "commit": "63f99f4a4e05353de2e8ba3d7bd4d882d716167a",
      "tree": "a7a3af579dc0f14191c014543d889237e69916f8",
      "parents": [
        "8941cfa17a60133f3896b84f6517aa849bafb050"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 00:08:39 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 10:39:55 2012 +0200"
      },
      "message": "linker: simplify code for dynamic and ARM exidx sections.\n\nThis moves the code that determines where the .dynamic and .ARM.exidx\nsections are to a single place in soinfo_link_image().\n\nChange-Id: I98adcb440577bed86442349f03f3c629c945efec\n"
    },
    {
      "commit": "bea23e59f7145537fd4e600ae67fa92a798872cf",
      "tree": "b3e7eb1fccbb6a8e0966eed9ec8e62d245f55980",
      "parents": [
        "23363ed7503c25ef4024ce0d517f7415c096645d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 18 23:38:46 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: rename load_offset to load_bias.\n\nThis patch changes the definition of the \u0027load_offset\u0027 field\nin struct soinfo. The field is renamed because it is not the\nbasic load bias to add to every p_vaddr value read from the ELF\nfile to get the corresponding memory address.\n\nThis also slightly simplifies the relocation code.\n\n+ Fix for proper load_bias computation for relocatable executables.\n\nChange-Id: I72502c75a70751cba324deee7d313ae61f96609e\n"
    },
    {
      "commit": "23363ed7503c25ef4024ce0d517f7415c096645d",
      "tree": "2892f3246f211cf3c5a4d17ecec3194d00294bda",
      "parents": [
        "a6545f46784e67edd5dbcd2bb714c60549f9192d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 18 18:13:49 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: avoid mapping the whole library before load.\n\nThis patch changes the load_library() function in the\ndynamic linker to avoid reserving a huge read-only\naddress-space range just to read the ELF header and\nprogram header (which are typically very small and easily\nfit in the first page).\n\nInstead, we use the functions in linker_phdr.c to only\nload the data that we need in a temporary mmap-allocated\npage of memory, which we release when the function exits.\n\nThis avoids issues when loading very large libraries, or\nsimply debug versions that only need to load a tiny percentage\nof their overall file content in RAM.\n\nChange-Id: Id3a189fad2119a870a1b3d43dd81380c54ea6044\n"
    },
    {
      "commit": "a6545f46784e67edd5dbcd2bb714c60549f9192d",
      "tree": "c085649fb2772c21fa01b0dd750038cb41251073",
      "parents": [
        "c1bd559d5b0fdcc25db2b6ae2705914103b24699"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 18 11:15:54 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: Add PAGE_START/OFFSET/END convenience macros\n\nThis patch adds a few macros related to memory pages to help\nclarify some of the code in linker.c\n\nChange-Id: I36c727132d257b1497398dd0a9e8a5a4505467ca\n"
    },
    {
      "commit": "20bc061dc7a03249c90f8765ae757395587ce4f1",
      "tree": "41bf1f05ba88f835bd7a47843c4757ed356e4b0c",
      "parents": [
        "63d0ceec75927155947c07bc45cb9fed5e527922"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jun 22 14:52:52 2012 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jun 22 14:56:01 2012 +0400"
      },
      "message": "Add module base to main executable\u0027s ARM_exidx.\n\nBUG:6697872\n\nChange-Id: I448f4b86397307086231776da38a7af334a75fe5\n"
    },
    {
      "commit": "16084168111cd7d2ac8a6b92e6fa6df5696928a5",
      "tree": "2fdb97283d519d1a54a79962509b54af73048130",
      "parents": [
        "ca622f57480f996f1d7b8d8660fba9e6d717db2d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 12 16:25:37 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 13 22:47:20 2012 +0200"
      },
      "message": "linker: small code-cleanup\n\nThis patch adds to make the linker a little bit easier to understand\nby making all functions that acts on a sofino object with a soinfo_\nprefix.\n\nThis is to more easily distinguish functions that operate on global\nstate, and those that operate on individual libraries.\n\nThis should be purely stylistic, i.e. no feature/behaviour change.\n\nChange-Id: Ie510d13d743aa4317644caefa9910b8af7e84f44\n"
    },
    {
      "commit": "f186a1819a4489c8d73485042670a3002742b683",
      "tree": "aaefa1f83fcb5357ab0d4535a2400a3f27fb1cdb",
      "parents": [
        "31431f454a9d3d3dde46de0e3c39cc409a39c436"
      ],
      "author": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Thu May 31 20:20:36 2012 +0900"
      },
      "committer": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Mon Jun 04 07:44:10 2012 -0700"
      },
      "message": "Support non-zero p_vaddr in first PT_LOAD segment\n\nBefore changing mmap() permission to PROT_NONE in alloc_mem_region(),\nsuch libraries once worked with a bug that uses mmap\u0027ed region outside of\nmemory region allocated by alloc_mem_region().  This possibly incurs\nSIGSEGV because it can overwrite memory region of previously loaded\nlibrary, but it sometimes worked, depending on loading order.\n\nAfter PROT_NONE, this caused SIGSEGV earlier during calculation of\nsi-\u003ephdr in load_library(), but this was fixed by:\n\n    75917c84d16c35b8fceff6977fa717a3de9ef65d  Use mmap to read an ...\n\nNow the behaviour is the same as before applying PROT_NONE in\nalloc_mem_region().\n\nThis CL fixed the original issue, supporting shared libraries that have\nnon-zero p_vaddr in first (\u003d with lowest p_vaddr) PT_LOAD segment.\n\nBug: 6561258\nChange-Id: Ib6176dd3e44c4d99a340eb1cbd16fb037586b0bc\n"
    },
    {
      "commit": "75917c84d16c35b8fceff6977fa717a3de9ef65d",
      "tree": "a599da04e2e062dc747d27eed333b774b3df9cbb",
      "parents": [
        "15ed08d065e865c7a1a2937e429a1fe80a870461"
      ],
      "author": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Fri May 25 22:36:00 2012 +0900"
      },
      "committer": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Sat May 26 06:15:50 2012 +0900"
      },
      "message": "Use mmap to read an initial ELF header of library\n\nAlso, fixes SIGSEV during calculation of si-\u003ephdr in load_library(),\nwhich is caused by accessing PHDR area, which is not guaranteed to be\nloaded.\n\nNote that this usually does not happen because program header area is\ncovered by immediately following PT_LOAD entry.  But it does not hold\nalways.\n\nBug: 6561258\nChange-Id: Ie376253c773b5420279ca89044e81b1aad5a5736\n"
    },
    {
      "commit": "94179a509ee3f6ba7b4ba45fb90477b01049dab8",
      "tree": "c26445b77fe8d4b289208db58f754deb4c2d16cf",
      "parents": [
        "baeacba04dc09ab269cd75806fdefab7f4a6505e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 23 16:50:00 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 23 16:50:34 2012 -0700"
      },
      "message": "linker: remove STB_LOCAL hack\n\nThe ARM static linker wasn\u0027t properly handling __exidx_start\nand __exidx_end symbols. Now that the static linker has been fixed,\nwe don\u0027t need the dynamic linker to work around this problem.\n\nChange-Id: I041b94903609fafab33663a7d441a5e70b7ffcdd\n"
    },
    {
      "commit": "1a78fbb5c8228e4aea2a516818828b76044310f2",
      "tree": "4de785711dbfa8923d721f9180473328b6228a5c",
      "parents": [
        "d5099016f70b5acbfeb969787687099df703a4f4"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Mar 22 18:01:53 2012 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Apr 13 00:08:11 2012 +0400"
      },
      "message": "Initialize TLS before any application code is run.\n\nSince e19d702b8e33, dlsym and friends use recursive mutexes that\nrequire the current thread id, which is not available before the libc\nconstructor. This prevents us from using dlsym() in .preinit_array.\n\nThis change moves TLS initialization from libc constructor to the earliest\npossible point - immediately after linker itself is relocated. As a result,\npthread_internal_t for the initial thread is available from the start.\n\nAs a bonus, values stored in TLS in .preinit_array are not lost when libc is\ninitialized.\n\nChange-Id: Iee5a710ee000173bff63e924adeb4a4c600c1e2d\n"
    },
    {
      "commit": "7f03d2356f1380637d5a38fca20d2cd9b3f6c900",
      "tree": "80fffbb1d4b4d8c3c85610fd312ccc32a9d15dc0",
      "parents": [
        "8777e2f54e3743b3f1361f30bed8932b17959644"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 10 13:42:06 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 10 13:49:35 2012 -0700"
      },
      "message": "Revert \"linker: remove STB_LOCAL hack\"\n\nThis reverts commit 61ff83475c6f3a3bb05a01ac89d668a331bfe9e9.\n\nThis code is harmless, and only applies to the linker, so\nthere\u0027s no harm in keeping it in the tree a little bit longer.\nLet\u0027s roll this back while we try to figure out the root cause\nof bug 6314858.\n\nBug: 6314858\nChange-Id: I9f5ed81d23a7abe273baf792aa8a0a2839ef094c\n"
    },
    {
      "commit": "61ff83475c6f3a3bb05a01ac89d668a331bfe9e9",
      "tree": "bcd5da23d32a73c9fe88b054e14cbd597db19690",
      "parents": [
        "048822d6afa12683e693a459e6efa558a1f39d33"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 09 12:50:17 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 09 12:50:17 2012 -0700"
      },
      "message": "linker: remove STB_LOCAL hack\n\nThe ARM static linker wasn\u0027t properly handling __exidx_start\nand __exidx_end symbols. Now that the static linker has been fixed,\nwe don\u0027t need the dynamic linker to work around this problem.\n\nChange-Id: Ic567122b6c7746cc016795e2befba2c6bd7c0478\n"
    },
    {
      "commit": "8c4f3ce8d084e3949d77ad8743593b5c83c3d41c",
      "tree": "4061fa7982521c070a1a9bc688ddfc279e722c08",
      "parents": [
        "3a7ea52f17b68f62fa088d57f96ff24a76f50ea2"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Apr 04 12:43:32 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Apr 04 12:43:32 2012 -0700"
      },
      "message": "linker: surround \"debug_verbosity\" by \"#if LINKER_DEBUG\"\n\nAvoid executing useless code when we\u0027re not compiled\nwith debugging support.\n\nChange-Id: Iea1821b241acacdf65d1a91d743356058dfef273\n"
    }
  ],
  "next": "aac0dc97a9ad91231fa89878e745548d693366c1"
}
