)]}'
{
  "log": [
    {
      "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": "1272dbd1d76c979358fff3beae9de0c1462345af",
      "tree": "e7fce5f420577ae6b471d75bb8a1f8c5864c51f8",
      "parents": [
        "6114ffb3e16c114c728c31b472263660e2d2210c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 09 15:45:07 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 09 15:45:07 2014 -0800"
      },
      "message": "Add NT_PRSTATUS to \u003celf.h\u003e.\n\nNeeded by aarch64.\n\nBug: 12476126\nChange-Id: I7764664459a06cf4f2a60e707bd968d321a78430\n"
    },
    {
      "commit": "74ce45972d88604aa759040cfd2570674cfb439d",
      "tree": "375a1f8838e1f1aada4bfda687c453a4a0213658",
      "parents": [
        "486d99f050a609c16641614edc72d71746ce859a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 14:59:41 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 14:59:41 2013 -0700"
      },
      "message": "Update \u003csys/exec_elf.h\u003e to get the DF_* flags.\n\nChange-Id: Ia9e785f6b95122f94ee3b01a312db1d5bb91a72e\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": "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": "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": "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": "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": "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": "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": "a6a3ac59243d8c95c94c3069e9332051f785c05f",
      "tree": "1a8567d1852f147f346240ac6f8187f9e9b526c3",
      "parents": [
        "3db2fc5acb4894a2cb22533b165a0de1bbafc3f6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 29 15:02:50 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 29 15:02:50 2013 -0800"
      },
      "message": "Use the NetBSD \u003csys/exec_elf.h\u003e.\n\nReplace a kernel header file dependency with files from NetBSD.\nThey\u0027re more complete, and ELF is ELF, whether you\u0027re on Linux or a BSD.\n\nBug: 7973611\nChange-Id: I83ee719e7efdf432ec2ddbe8be271d05b2f558d7\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": "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": "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": "b7beb6907599b36809effe1b4db76039ac649518",
      "tree": "6629ebe3ee4167d4383022edf4fa7882144a5445",
      "parents": [
        "6c98cdb1924afd3e71d39904557933fa10adaebf"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Fri Aug 17 12:53:29 2012 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 17 12:44:23 2012 -0700"
      },
      "message": "Add link.h for all platforms with dl_phdr_info\n\nThis header is used on bionic build and should be propagated into\nsysroot on toolchain rebuild. Discussion re. this header is here:\nhttp://gcc.gnu.org/ml/gcc-patches/2012-08/msg00936.html\n\nIt is available already in mips NDK platforms:\ndevelopment/ndk/platforms/android-9/arch-mips/include/link.h\n\nChange-Id: I39ff467cdac9f448e31c11ee3e14a6200e82ab57\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\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": "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": "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": "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": "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": "c1bd559d5b0fdcc25db2b6ae2705914103b24699",
      "tree": "14593885df4f31db54a2c615febf4031cc8ea8d4",
      "parents": [
        "20bc061dc7a03249c90f8765ae757395587ce4f1"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 11:21:29 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: New sources to manage the ELF program header table.\n\nThis patch introduces two new source files containing a set of functions\nto manage the program header table in an ELF binary, including the ability\nto load PT_LOAD segments, and apply PT_GNU_RELRO protection.\n\nNote: the files are not used currently, this will appear in a series\n      of future patches that will gradually modify linker.c to use\n      the phdr_table_xxx functions properly.\n\nChange-Id: Ia3d4c1ff5fc3e265d8258b64b492f4e643f51bdc\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": "9ec0f03a0d0b17bbb94ac0b9fef6add28a133c3a",
      "tree": "dde5e86b6ae51f92087a9034750c282e11884164",
      "parents": [
        "1fe109ecf3b1acd10d55091f3e0eed7efeca98f1"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 28 10:40:00 2012 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Mar 05 16:44:42 2012 -0800"
      },
      "message": "Add relro support\n\nAdd support for PT_GNU_RELRO. This allows the static linker to\nindicate that certain regions of memory should be marked as\n\"read-only\" after dynamic linking is complete.\n\nSee:\n  * http://www.akkadia.org/drepper/nonselsec.pdf (section 6)\n  * http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html\n\nNote that this change has no effect on Android right now, because\nwe don\u0027t compile our code with relro enabled.\n\nChange-Id: I6541f8775367e8558b4388f7d105b1ae6e8f046b\n"
    },
    {
      "commit": "25b7a16a6ee73248192909862f03f95d2363ad14",
      "tree": "97d420779e6b79917ba5ac65b9bc182a8ceaa68d",
      "parents": [
        "b118b9c5cd6a99fd3368a01ee9de8849d869afc7",
        "c4cb87f367fc33b36c9988b4f42fc07876abccd1"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Feb 01 09:46:08 2012 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Feb 01 09:46:08 2012 -0800"
      },
      "message": "Merge c4cb87f3\n\nChange-Id: I4cc14eba43fde75a7702fdc7ad07d3d949e9c092\n"
    },
    {
      "commit": "70b1668a76d3b719ae690903ea790fda964a5458",
      "tree": "674232e6152fa67c0db8b07b0083bb3ac6c9bd8c",
      "parents": [
        "e80044455961005ac95e405c8d553f2418d8e50c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jan 30 17:17:58 2012 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Tue Jan 31 20:28:23 2012 +0100"
      },
      "message": "remove obsolete SuperH support\n\nWe don\u0027t have a toolchain anymore, we don\u0027t have working original\nkernel headers, and nobody is maintaining this so there is really\nno point in keeping this here. Details of the patch:\n\n- removed code paths from Android.mk files related to the SuperH\n  architecture (\"sh\")\n\n- removed libc/arch-sh, linker/arch-sh, libc/kernel/arch-sh\n\n- simplified libc/SYSCALLS.TXT\n\n- simplified the scripts in libc/tools/ and libc/kernel/tools\n\nChange-Id: I26b0e1422bdc347489e4573e2fbec0e402f75560\n\nSigned-off-by: David \u0027Digit\u0027 Turner \u003cdigit@android.com\u003e\n"
    },
    {
      "commit": "e83c56dfbb6a9a61f0f18031620322af97e80162",
      "tree": "4d173357ad7cffa5e8e01066653afde7ed2473d5",
      "parents": [
        "334379dadaf481785909367cfc26600514b6119c"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Dec 21 13:03:54 2011 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 10 13:30:41 2012 +0400"
      },
      "message": "Execute .preinit_array before any shared object initialization functions.\n\nThis change makes linker handling of .preinit_array compliant with the\nSystem V ABI:\n\n\"These [pre-initialization] functions are executed after the dynamic linker has\nbuilt the process image and performed relocations but before any shared object\ninitialization functions.\"\nhttp://www.sco.com/developers/gabi/latest/ch5.dynamic.html#init_fini\n\nChange-Id: Iebfee22bb1ebe1d7c7e69cb4686e4ebae0dfc4bb\n"
    },
    {
      "commit": "468319ce4f3f7383d788b76c09cda2a405311f36",
      "tree": "75be29e8c9b3f67fcfe51c8ec84fe1520282f8a9",
      "parents": [
        "0aa8289c6fddda6502fa97c8789341f1462c4224"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Nov 11 15:53:17 2011 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Nov 11 18:01:53 2011 -0800"
      },
      "message": "Make the linker relocatable.\n\nPreviously, the linker always loaded itself into the same\nlocation in memory, which inhibited the effectiveness of Android\u0027s\nASLR implementation. Modify the linker code so it can be relocatable\nand link itself at runtime.\n\nChange-Id: Ia80273d7a00ff648b4da545f4b69debee6343968\n"
    },
    {
      "commit": "8e8a7b1f0fb9daf8d4434e18a9fff5c28f849cb8",
      "tree": "94d387ed8c58504162550b1b2ae8c93f3dfffa30",
      "parents": [
        "994e9a5ed1c4e9f23a8bed79caea684eaa270027"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Nov 03 09:25:06 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Nov 03 09:25:06 2011 -0700"
      },
      "message": "Revert \"Make the linker relocatable.\"\n\nThis reverts commit 994e9a5ed1c4e9f23a8bed79caea684eaa270027.\n\nBroke x86 build.\n"
    },
    {
      "commit": "994e9a5ed1c4e9f23a8bed79caea684eaa270027",
      "tree": "0c860675ec867f02616a74cac6d2adfc58b07d10",
      "parents": [
        "29992cf9787496216440ed9c6c60dc40377aebe1"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Nov 01 10:51:22 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Nov 02 16:20:06 2011 -0700"
      },
      "message": "Make the linker relocatable.\n\nPreviously, the linker always loaded itself into the same\nlocation in memory, which inhibited the effectiveness of Android\u0027s\nASLR implementation. Modify the linker code so it can be relocatable\nand link itself at runtime.\n\nChange-Id: I90d064743abdd29450ac0482ed28752b2196286c\n"
    },
    {
      "commit": "bda5da074eab4bdf374e1f4a19d480c62c72f5ff",
      "tree": "87a4c2fd35e6b071476d4a5fd02aca7c61c6e3f9",
      "parents": [
        "00964912745f0bb7e081f84ddcc74940f973149f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 27 22:30:19 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 28 12:17:34 2011 -0700"
      },
      "message": "fix prototype of dladdr\n\nthis breaks C++ source code in particular.\n\nChange-Id: Ie06b5d31d23b5455e6950c470adc64dd5e7784df\n"
    },
    {
      "commit": "38bccb271f121fc06eaa0d8fbd3c982bc44c36b7",
      "tree": "7e5a90cad5a6511a5261de19ffbba8f4d977a2e6",
      "parents": [
        "b0bbbff6060b382d2c4607f026e182adb67d0cc0"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Aug 29 13:49:22 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Aug 29 13:52:18 2011 -0700"
      },
      "message": "linker.h: don\u0027t change the soinfo structure\n\nIn 48527c3f740a80b45acb5a6efc217f771ae50143, we modified the soinfo\nstructure to remove an unnecessary variable. However, third party\nprograms seem to be relying on the structure not changing.\nAdd a dummy variable back into place to preserve structure.\n\nBug: 5064106\n\nChange-Id: I3014dda1a46e624644b09e156c3e9381ba3729bd\n"
    },
    {
      "commit": "48527c3f740a80b45acb5a6efc217f771ae50143",
      "tree": "1c7afd06061ae1d488dd15c0c343e2c562b66ab5",
      "parents": [
        "de75876c3faa6e94ff80f3b9566d8e51b39700ed"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Jul 17 12:32:43 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Jul 17 12:32:43 2011 -0700"
      },
      "message": "Revert \"Revert \"linker: get rid of the buddy allocator\"\"\n\nThis reverts commit f9a9cda23a6afc1c2dfdfd624cde23b61941eb5e.\nThis revert is promised once b/5039224, b/5036755, b/5036610 are resolved.\n"
    },
    {
      "commit": "f9a9cda23a6afc1c2dfdfd624cde23b61941eb5e",
      "tree": "b0a12123fbfa78be81e8b9c9965e964f593606c0",
      "parents": [
        "7059b1f02ea9197728c851edd9ae0dd7688fa700"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 15 16:12:45 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 15 16:12:45 2011 -0700"
      },
      "message": "Revert \"linker: get rid of the buddy allocator\"\n\nThis reverts commit 7059b1f02ea9197728c851edd9ae0dd7688fa700.\nBug: 5036610\n"
    },
    {
      "commit": "7059b1f02ea9197728c851edd9ae0dd7688fa700",
      "tree": "ed51d4be5ce65e0cdb9d7d81dc3a68975bdd6e04",
      "parents": [
        "30e30acf106166bf65ad781bb4a63eead1d2c3a6"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jul 14 12:45:40 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jul 14 13:48:13 2011 -0700"
      },
      "message": "linker: get rid of the buddy allocator\n\nCurrently, the Android linker is placing shared libraries into\na well-known spot in memory.  This is interfering with the kernel\u0027s\nASLR support.\n\nThis change stops forcing non-prelinked libraries into a particular\naddress space.\n\nAlso, get rid of FLAG_PRELINKED.  As best I can tell, this flag\nis never used.\n\nChange-Id: I527af12fb54f821c2b5ca7693dbf63d022f8f4ae\n"
    },
    {
      "commit": "1698d9ebfc7e27271852a1fdf305a2ac37b3ebe4",
      "tree": "0affbb40a92f4391db962805610d78e71ac5f043",
      "parents": [
        "350bb359fa5e31e3dfae8be6b1ce7ee3495f0da7"
      ],
      "author": {
        "name": "Matt Fischer",
        "email": "matt.fischer@garmin.com",
        "time": "Thu Dec 31 12:17:56 2009 -0600"
      },
      "committer": {
        "name": "Garmin Android technology group",
        "email": "android@garmin.com",
        "time": "Thu Apr 08 10:14:47 2010 -0500"
      },
      "message": "Fixed support for RTLD_NEXT in dlsym()\n\nThe previous implementation of this flag was broken--it behaved identically\nto RTLD_DEFAULT.  This adds a proper implementation, which examines the address\nof the calling function, and uses it to determine which library to use to begin\nthe symbol search process.\n\nChange-Id: I2ad2b46363f68932af63a3828a22f9c7987eea67\n"
    },
    {
      "commit": "e2a8b1fd19fb3a8ead2ba28ddba27be19fa978b5",
      "tree": "e5448ec45187a37dbade76fcf10115f91135a8bd",
      "parents": [
        "ede2e75f4942293342dfb8dfd4751369600ed8f1"
      ],
      "author": {
        "name": "Matt Fischer",
        "email": "matt.fischer@garmin.com",
        "time": "Thu Dec 31 12:17:40 2009 -0600"
      },
      "committer": {
        "name": "Garmin Android technology group",
        "email": "android@garmin.com",
        "time": "Wed Mar 17 16:11:37 2010 -0500"
      },
      "message": "Added support for dladdr()\n\ndladdr() is a GNU extension function, which allows the caller to retrieve\nsymbol information for a specified memory address.  It is useful for things\nlike generating backtrace information at runtime.\n\nChange-Id: I3a1def1a6c9c666d93e1e97b7d260dfa5b9b79a9\n"
    },
    {
      "commit": "a3de55c83185ba3d1355f20b48ef9ec3fc4c281d",
      "tree": "646efa88e98233342cc102298b8dcb64606c569d",
      "parents": [
        "157cdf42d7e2cded9a4461fd105b98b2db1a13ac",
        "fe62de1ad036a1417df44b7b1a7c65cc79dc7091"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 02 11:17:29 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 02 11:17:29 2009 -0800"
      },
      "message": "am fe62de1a: Add support for R_ARM_REL32 to the dynamic linker.\n\nMerge commit \u0027fe62de1ad036a1417df44b7b1a7c65cc79dc7091\u0027 into eclair-plus-aosp\n\n* commit \u0027fe62de1ad036a1417df44b7b1a7c65cc79dc7091\u0027:\n  Add support for R_ARM_REL32 to the dynamic linker.\n"
    },
    {
      "commit": "fe62de1ad036a1417df44b7b1a7c65cc79dc7091",
      "tree": "0c55fda658ee39f7f64ead6ec98a690379a8fe42",
      "parents": [
        "cd5df2d92c3adeac41e27aab5ba0f999c753c4c4"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 02 10:54:53 2009 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 02 10:54:53 2009 -0800"
      },
      "message": "Add support for R_ARM_REL32 to the dynamic linker.\n\nMerged from eclair-mr2\n"
    },
    {
      "commit": "10be95cffc7f2b02d8baac55a9cf1b16d8afbadb",
      "tree": "372359d357eb01bd7c3160cb20339c20c317804f",
      "parents": [
        "47c5e30b61bad28731e4acff2d690a4207801f27",
        "ad13c57298e57d33c130fb03a2c6494da573408c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 08 16:09:17 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 08 16:09:17 2009 -0800"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "ad13c57298e57d33c130fb03a2c6494da573408c",
      "tree": "9c3977ff3a5ffdd64e333ebd198717e0aee99bba",
      "parents": [
        "92b10af793da235659198cf38ff2e0237c181058"
      ],
      "author": {
        "name": "Shin-ichiro KAWASAKI",
        "email": "shinichiro.kawasaki.mg@hitachi.com",
        "time": "Fri Nov 06 10:36:37 2009 +0900"
      },
      "committer": {
        "name": "Tony Sim",
        "email": "sim.chinyeow@renesas.com",
        "time": "Fri Nov 06 10:36:37 2009 +0900"
      },
      "message": "added and modified linker to support SuperH architecture\n"
    },
    {
      "commit": "9ea64da6c511e8f9f4edae4c10c20879957631ab",
      "tree": "11adf7525e859f87f980f7836936c30570213446",
      "parents": [
        "6ed80c8814db9eed1fb687be22322e38dc46a2fb"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Sep 28 18:21:30 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Sep 29 14:33:46 2009 -0700"
      },
      "message": "bionic/linker: change lookup() to return soinfo, not base\n"
    },
    {
      "commit": "2e85579c34047c305caf15fb0ebe02bf3d001d0e",
      "tree": "0fb54231b64d077f94b567acfbae3ecaaec672bc",
      "parents": [
        "49e55332784b82f7112ee7c1ea3c176c9dc32d7a"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed May 20 18:28:09 2009 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed May 27 20:16:19 2009 -0700"
      },
      "message": "linker: Make the errors reported by dlopen/dlsym be more useful.\n\nChanged it so that when the linker generates error messages, they are\nscribbled away into a buffer that dlfcn and friends can read from.\n\nSince the error messages are generetad with snprintf, and snprintf\nMAY call malloc during some code paths, we now link against a version\nof libc that does not contain malloc/free/realloc/calloc. We then define\nmalloc and friends in the dynamic loader, and make them abort() if they\nare ever called.\n\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "a799b53f10e5a6fd51fef4436cfb7ec99836a516",
      "tree": "9f06bfedddae069d0388739f5f2779472da5dc7f",
      "parents": [
        "fe5745033a4f397c62a4e00efd9257ac9f83755c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:03:51 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:03:51 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@132589\n"
    },
    {
      "commit": "fe5745033a4f397c62a4e00efd9257ac9f83755c",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "7d9dcdc82a871926e5e3a27143908fa3f4181b5f"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:14 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:14 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@137055\n"
    },
    {
      "commit": "9f65adf2ba3bb15feb8b7a7b3eef788df3fd270e",
      "tree": "c06064fc9022ef63a40f83a91292103784f49780",
      "parents": [
        "d37527501c85edcb3a6a7c8a0b6297d52d434897"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
