)]}'
{
  "log": [
    {
      "commit": "406a75d371361388fe179950a3de459ae7e16f33",
      "tree": "cf1dccdf8d680d0203d693340c61cebb7d8973c9",
      "parents": [
        "bc475bc8d1d202baa48f6c9829fe1cced9122332"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 10:45:57 2014 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 27 10:45:57 2014 -0700"
      },
      "message": "linker: use LOCAL_MULTILIB :\u003d both style to build linker64\n\nUse LOCAL_MODULE_STEM_32 and LOCAL_MODULE_STEM_64 to build\nlinker and linker64.  Set LOCAL_MULTILIB :\u003d both for consistency\nwith other rules of this type, although LOCAL_MULTILIB :\u003d both is\nonly consumed by executable.mk which is skipped by\nlinker_executable.mk.  Duplicate the necessary new parts of\nexecutable.mk.\n\nChange-Id: I888e87cf125cfbcfdee6a55b6377d8bc5ce402ea\n"
    },
    {
      "commit": "36ee4ab243427ce20549914fef85b5ca2ac75cda",
      "tree": "f4b3212da944cf29b3ae8f3d15969a8ffc19c0a2",
      "parents": [
        "fadc8a7777ca304c8a7de066a94effd3a5471ee6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 12 21:58:47 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 13 11:18:47 2014 -0800"
      },
      "message": "build linker and linker64 on 64-bit architectures\n\nChange-Id: I400bbaf5a779fc427de4c3d86c66548b0179b10d\n"
    },
    {
      "commit": "7ff07ad3213f3342678d2d03047b2e51d8b81748",
      "tree": "74819bfc221a6137a2ab09b62f61dbcfac49358e",
      "parents": [
        "ae189740de6b03f06a06214122183a3774f5cb62"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 13 13:33:01 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 13 13:33:01 2014 -0800"
      },
      "message": "Add -Bsymbolic to the ld flags when linking the dynamic linker.\n\nWe don\u0027t need this on architectures other than aarch64, and\nwe\u0027re still investigating why we need it on aarch64, but it\ndoesn\u0027t seem unreasonable to have this flag set when linking\nthe dynamic linker anyway; it\u0027s clearly the intended behavior.\n\nChange-Id: I4fa1b4ae543a818979934bf818eabac03bb9154f\n"
    },
    {
      "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": "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": "60d5b06eceeef9a21168f1c9f5264e4fc8ed0566",
      "tree": "f139d1c5942f572f46ca2674d4d2f980eead845a",
      "parents": [
        "bbefbf1a75052e4c887309299fb4532705aa843d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 23:18:13 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 23:18:13 2013 -0700"
      },
      "message": "Simplify defining the linker architecture macro.\n\nLike the new TODO says, though, do we need this at all? Wouldn\u0027t we be better\noff just using the regular architecture-specific macros? This is a dynamic\nlinker, so there\u0027s never a possibility of cross-linking.\n\nChange-Id: I7be6b8663f5e585c4024a49aae383430c86a3c1b\n"
    },
    {
      "commit": "2258347f3bb770641a7d8fe311911ace8f69cb20",
      "tree": "5cd10dc3869e2a69e5ea2afa9be7a64b587402e1",
      "parents": [
        "41b87c651280d1a9a98a309c5a5e77e240920d4e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 17 13:06:20 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 17 13:06:20 2013 -0700"
      },
      "message": "Build the linker with the same -std flags as the rest of bionic.\n\nChange-Id: I5bdb28ecfdf78a90f6b072077a1c5ffd63f5d2ae\n"
    },
    {
      "commit": "d7398f146dad064dece704db9e13912f65da0acc",
      "tree": "db6795a960b809bf97e13a8efa7c4234b6edaa1f",
      "parents": [
        "3df50f57e5c106dd70483d4a0a295aa031a5906b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 10:05:05 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 10:05:05 2013 -0700"
      },
      "message": "Use linker64 for the 64-bit linker.\n\nChange-Id: I13fc7f93274f99e4cf99b077afdf5293e7233f39\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": "2db16ea38ebed0bddca091072ffe48c464b85970",
      "tree": "7731864a28454d29255e456314b668328f552f3b",
      "parents": [
        "32a2340067b7d53e37c9c70086773aaf91c339b3",
        "3002d64bcd4644456803dd0547d20b39e14be02c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 08:11:24 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 13 08:11:24 2013 -0800"
      },
      "message": "am 3002d64b: Merge \"Everyone has a TLS register.\"\n\n# Via Elliott Hughes (1) and Gerrit Code Review (1)\n* commit \u00273002d64bcd4644456803dd0547d20b39e14be02c\u0027:\n  Everyone has a TLS register.\n"
    },
    {
      "commit": "91a9925998f2b878f0245ce03aab22cc412a4d8b",
      "tree": "899de414e14cb9627c4dc8c9882a05f2298a1196",
      "parents": [
        "baf2c09f3f47a35b195eb83cc7acffeaf4b6d4e9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 21:56:42 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 21:56:42 2013 -0800"
      },
      "message": "Everyone has a TLS register.\n\nChange-Id: Id7cdf67087aa7d5074c9c59b7e595bc391d9f146\n"
    },
    {
      "commit": "16f7b78fd1059efcd3458441d8c3357cc265d62c",
      "tree": "3449ded5e528a4af1706c4dedb108b2831bdc737",
      "parents": [
        "1136b7d821336fde6323de9f3a010e40147da55d",
        "4cd5703b9eef30a32271819503808576666e1601"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 22 10:05:19 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 22 10:05:19 2013 -0800"
      },
      "message": "am 4cd5703b: am 75b64a1b: am ca483765: Merge \"Fix the duplication in the debugging code.\"\n\n* commit \u00274cd5703b9eef30a32271819503808576666e1601\u0027:\n  Fix the duplication in the debugging code.\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": "dbcf3ed458d2eca5795a1e2530e450a856020ffc",
      "tree": "76c6ba582a9838053822a57c0290d16bd7fef7fb",
      "parents": [
        "89f9b30e4d2ad6e791b8998bd7c390d00a3360d3",
        "36c4eb188c6594db877bd7b9f46c55264180dc3f"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jan 17 11:34:20 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 17 11:34:20 2013 -0800"
      },
      "message": "am 36c4eb18: am 3a72fe58: am f3fe1945: Merge \"linker: add -Wl,--exclude-libs,ALL to LDFLAGS\"\n\n* commit \u002736c4eb188c6594db877bd7b9f46c55264180dc3f\u0027:\n  linker: add -Wl,--exclude-libs,ALL to LDFLAGS\n"
    },
    {
      "commit": "d89ce40d8e6b4a6a8074a6fddca9570abbfa4b9d",
      "tree": "b1c1dbd1e99229de5539d76a599a6fe33714faac",
      "parents": [
        "1271cdc1c91c6ae688917bc8f4ae59d2a97b3e99"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jan 16 16:43:15 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jan 16 16:43:58 2013 -0800"
      },
      "message": "linker: add -Wl,--exclude-libs,ALL to LDFLAGS\n\nThe linker is essentially a shared library, and incorporates\nit\u0027s own copy of libc. Even though it\u0027s unnecessary, currently\n/system/bin/linker is exporting various libc symbols (only to\napps which explicitly dlopen /system/bin/linker)\n\nAdd --exclude-libs,ALL, which tells the static linker to mark\nall of the imported libc symbols as hidden. This reduces the\nsize of /system/bin/linker from 92K to 67K with no obvious\nloss in functionality.\n\n  $ adb shell ls -l /system/bin/linker\n  -rwxrwxrwx root     root        92260 2013-01-16 16:52 linker\n\n  $ adb shell ls -l /system/bin/linker\n  -rwxrwxrwx root     root        67660 2013-01-16 16:49 linker\n\nDocumentation on exclude-libs can be found at\nhttp://sourceware.org/binutils/docs-2.21/ld/Options.html\n\nChange-Id: I4508287770e4b7a845def2e6b4af969f9c866c6a\n"
    },
    {
      "commit": "05ab167cf74731b5cad25562712b79df82a970d5",
      "tree": "706766556af92e5b9c8eb3ec9c6f51ad62d95aae",
      "parents": [
        "78b90c744df61aab4e4ca979548d2c9a50ef6e1a",
        "a0edecf3438d036ee2353076d171ee68939c2a5e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 18 19:44:10 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 18 19:44:10 2012 -0800"
      },
      "message": "am a0edecf3: am a4ebdcf5: Merge \"Check for unknown flags passed to dlopen(3).\"\n\n* commit \u0027a0edecf3438d036ee2353076d171ee68939c2a5e\u0027:\n  Check for unknown flags passed to dlopen(3).\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": "2e51dc444fe48775044dd33aec5d78a2e5b0adda",
      "tree": "2ffe3f93ba451ab6fd33be9a93acd4e9fd3dc50d",
      "parents": [
        "4ef6bc2e62bbeb23a2e059b09a900d734eedd72a",
        "4835e6ef519fc941651bbc13909cff971a6ec81b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 30 10:16:06 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 30 10:16:06 2012 -0800"
      },
      "message": "am 4835e6ef: am 97b70b2b: Merge \"Replace .S version of x86 crtfiles with .c version\"\n\n* commit \u00274835e6ef519fc941651bbc13909cff971a6ec81b\u0027:\n  Replace .S version of x86 crtfiles with .c version\n"
    },
    {
      "commit": "20c4a3a8eee5ca8c87ae377732f541baffce1fda",
      "tree": "73b9ac8f6749da7b637f90727f5f7051bf0e36aa",
      "parents": [
        "8784709a2cfe6d32b5fff2c6b826b8d9cbf73d7b"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Wed Nov 28 18:31:14 2012 +0400"
      },
      "committer": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Fri Nov 30 17:41:25 2012 +0400"
      },
      "message": "Replace .S version of x86 crtfiles with .c version\n\nThis patch replaces .S versions of x86 crtfiles with .c which are much\neasier to support. Some of the files are matching .c version of Arm\ncrtfiles. x86 files required some cleanup anyway and this cleanup actually\nled to matching Arm files.\n\nI didn\u0027t change anything to share the same crt*.c between x86 and Arm. I\nprefer to keep them separate for a while in case any change is required\nfor one of the arch, but it\u0027s good thing to do in the following patches.\n\nChange-Id: Ibcf033f8d15aa5b10c05c879fd4b79a64dfc70f3\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "d752fc02860956ea76bfff12e2f1a8a02cab29b1",
      "tree": "cdf7890700a6b29124e32c3c0fc50f798f2665e5",
      "parents": [
        "1d0129b1b28c99b328c1a1ef023c46364c829e29",
        "cfb47daf4eb4741ac462c7350c73ad1cf96cf83f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 02 13:58:47 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 02 13:58:47 2012 -0700"
      },
      "message": "am cfb47daf: am 01271b18: Merge \"Make dynamic linker debugging always available.\"\n\n* commit \u0027cfb47daf4eb4741ac462c7350c73ad1cf96cf83f\u0027:\n  Make dynamic linker debugging always available.\n"
    },
    {
      "commit": "cfb47daf4eb4741ac462c7350c73ad1cf96cf83f",
      "tree": "9e524c7ebdb759ea363fb4320f64bfebed1550dc",
      "parents": [
        "cdc5a17cef00c49086e1bfe4c3715d2ebd61addb",
        "01271b1812f2cec8aaf3c105b9f960f027b33a95"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 02 13:55:59 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 02 13:55:59 2012 -0700"
      },
      "message": "am 01271b18: Merge \"Make dynamic linker debugging always available.\"\n\n* commit \u002701271b1812f2cec8aaf3c105b9f960f027b33a95\u0027:\n  Make dynamic linker debugging always available.\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": "864d48917a2421cb2846138f6c49e499a83614d4",
      "tree": "5e47734d09ea0eb06b38485531b2eb169b23c260",
      "parents": [
        "08c4e30e236742287fd966b139cec5bc237c46f6",
        "914112ea21a62c7658dc4b094a369358009be6a9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 30 16:59:17 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 30 16:59:17 2012 -0700"
      },
      "message": "am 914112ea: am 155e8d1d: Merge \"More dynamic linker cleanup.\"\n\n* commit \u0027914112ea21a62c7658dc4b094a369358009be6a9\u0027:\n  More dynamic linker cleanup.\n"
    },
    {
      "commit": "914112ea21a62c7658dc4b094a369358009be6a9",
      "tree": "28e4c63b5744a9ffb308ee5f012de8262a5f0c6b",
      "parents": [
        "b0ac82e9baf969236be1174b49784500b33e6f48",
        "155e8d1df5b8fdfeabda3e7b61d95beb5b8d1467"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 30 16:56:29 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 30 16:56:29 2012 -0700"
      },
      "message": "am 155e8d1d: Merge \"More dynamic linker cleanup.\"\n\n* commit \u0027155e8d1df5b8fdfeabda3e7b61d95beb5b8d1467\u0027:\n  More dynamic linker cleanup.\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": "66d71c8f13d1b4c0b537cf8f47ccdfadcb4ef67e",
      "tree": "644b39a74c942f7d08d540615b706052ad0fb011",
      "parents": [
        "aff37491a130cc0ec0e74916a124156b5c8ecca4",
        "ab4e2ed182011998751ff5d6c321ff5bae20c6cd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 12 10:49:08 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 12 10:49:08 2012 -0700"
      },
      "message": "am ab4e2ed1: am db4fdf1a: Merge \"Fix dlerror(3).\"\n\n* commit \u0027ab4e2ed182011998751ff5d6c321ff5bae20c6cd\u0027:\n  Fix dlerror(3).\n"
    },
    {
      "commit": "ab4e2ed182011998751ff5d6c321ff5bae20c6cd",
      "tree": "ac2c6e121a9f8289cda63a4096a86f2423112419",
      "parents": [
        "cf3fa7f45742c870f1478b1bf7717d3042d599d7",
        "db4fdf1aafb63b09ee967066d9b8107a9812db2d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 12 10:47:59 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 12 10:47:59 2012 -0700"
      },
      "message": "am db4fdf1a: Merge \"Fix dlerror(3).\"\n\n* commit \u0027db4fdf1aafb63b09ee967066d9b8107a9812db2d\u0027:\n  Fix dlerror(3).\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": "b04598a63c3f0df597f6186beea3adafc665ef56",
      "tree": "e80a622f76ef810fa9488c0fb536380e0da9f215",
      "parents": [
        "6b1ba1184a5e0884686b63da837a85f8c861d1fc"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Sep 25 18:32:24 2012 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Mon Oct 08 14:12:56 2012 -0700"
      },
      "message": "Set up the private variables.\n\nNow we use private variables in transform-o-to-executable to support\nbuild executables against the NDK.\n\nBug: 7170098\nChange-Id: I6e505b33001b76f4b11fcbbb1d35392c4ddf4c70\n"
    },
    {
      "commit": "f680b0f4049b4864f7d5d0e1a59aec2ce8d9de74",
      "tree": "5ee93d621a6dc720a79f8ca73d18f5fc75a50159",
      "parents": [
        "a638642f44e1f475beb591a0aa9fbf4b11dde159"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Sep 25 18:32:24 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Sep 26 10:54:45 2012 -0700"
      },
      "message": "Set up the private variables.\n\nNow we use private variables in transform-o-to-executable to support\nbuild executables against the NDK.\n\nBug: 7170098\nChange-Id: I6e505b33001b76f4b11fcbbb1d35392c4ddf4c70\n"
    },
    {
      "commit": "66c033868ff4ce13f1668c97ab11d45aa125a40b",
      "tree": "17ff3f58700aa705f6cc5f06aef405d667229b54",
      "parents": [
        "4a5ab7a1917b5974a3c50142a22667fc6dadfc3c",
        "c64c1b49fd5c51b1b6e87d88b233d23fa172d372"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 16:10:31 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 16:10:31 2012 -0700"
      },
      "message": "am c64c1b49: am ad8ff472: am c1eb7619: am 440e417d: Merge \"Add dependencies on all the makefiles.\"\n\n* commit \u0027c64c1b49fd5c51b1b6e87d88b233d23fa172d372\u0027:\n  Add dependencies on all the makefiles.\n"
    },
    {
      "commit": "ae5c64413bf72bc18d7fc81e1f5761824bc01f49",
      "tree": "910859328e35be8af64308ad002b0d290bc738f1",
      "parents": [
        "66fba00991f03d07c72f809d033b88748f839bda"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 14:06:05 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 14:06:05 2012 -0700"
      },
      "message": "Add dependencies on all the makefiles.\n\nThis should help prevent broken builds next time I\u0027m messing with\nassembler/compiler/linker flags...\n\nChange-Id: I30f15a3ce3c3f3c60cad7bc59aaba9f42d792224\n"
    },
    {
      "commit": "c97c5fc7880267fd835d22946a920bf370461cf2",
      "tree": "121b1774a11abd86450c2d2b0e2d45954b046a50",
      "parents": [
        "6a80cc9e086ba5d35334b8cc7134b1fb43761c16"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Sat Aug 11 14:23:19 2012 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Sat Aug 11 14:23:19 2012 -0700"
      },
      "message": "Split out LOCAL_ASFLAGS.\n\nBug: 6967574\nChange-Id: I5be50d582c1cb8075039b06292cf0745a996c3c4\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": "856512ea9c933c5fe0fff14ee123496730df6b19",
      "tree": "9b346559570609f1ac2bdf63dbeaf6ab30f78c46",
      "parents": [
        "fabddfe833097ecca92b3547a725879234780468"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 09:43:14 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 09:43:14 2012 -0700"
      },
      "message": "Use std\u003dgnu99 for the dynamic linker as well as libc.\n\nChange-Id: I76dd78576c5af6eb6282555f069647b6260edc31\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": "fa136e8ca71cb20956cd1792251869cac8bed257",
      "tree": "01be8f0d6d1adb19b19e17c401f2df33f2ab57b7",
      "parents": [
        "effc607e87add0aec14fefb4ac1c00d36559149a",
        "a5948157fd34acb2b1d1bfaf129901af865ab5fc"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Wed Jun 20 18:58:18 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 18:58:18 2012 -0700"
      },
      "message": "am a5948157: Merge \"Define __stack_chk_fail_local.S\"\n\n* commit \u0027a5948157fd34acb2b1d1bfaf129901af865ab5fc\u0027:\n  Define __stack_chk_fail_local.S\n"
    },
    {
      "commit": "6973e3da873c5694d0011734c7c6841a46150cb1",
      "tree": "27812988f268a0b66e8e0c7fcfab112bcfb82743",
      "parents": [
        "028ccf5d40dd9a945ea92aa79822c08c6f6aa1d2"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Wed Jun 20 14:35:51 2012 +0800"
      },
      "committer": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Thu Jun 21 09:26:33 2012 +0800"
      },
      "message": "Define __stack_chk_fail_local.S\n\nWith -fstack-protector, x86 -m32 needs __stack_chk_fail_local\ndefined in crtbegin_*.o.\n\nInclude __stack_chk_fail_local.S in begin.S otherwise linker\n(which is built w/o crt*) may not link.\n\nChange-Id: Id242fcf3eff157264afe3b04f27288ab7991220a\n"
    },
    {
      "commit": "dcbc3787bfb9a272a010f13ac149d546b4b741d8",
      "tree": "5b92b1b76771a543093f38ead4d1c86eba630532",
      "parents": [
        "e742c1f5649d3298cd98d8cc8e62d0cd10be0e82"
      ],
      "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": "Tue May 15 10:41:14 2012 -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: Ia80273d7a00ff648b4da545f4b69debee6343968\n"
    },
    {
      "commit": "e742c1f5649d3298cd98d8cc8e62d0cd10be0e82",
      "tree": "a54f7186b43128c8ef4d37bb17ea9ffe0dd9cac8",
      "parents": [
        "077891b199ad295017b32bc9cf1c542c1360b3b8"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Nov 04 10:11:26 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue May 15 10:08:39 2012 -0700"
      },
      "message": "linker: set LOCAL_NO_CRT :\u003d true\n\nUse LOCAL_NO_CRT to prevent linking against crtbegin.o, rather than\nmessing with build rules. This also prevents linking against crtend.o,\nwhich isn\u0027t needed for the linker.\n\nChange-Id: I0c5b9999be7e8676560fe145c1c033ffce8db4d1\n"
    },
    {
      "commit": "3a7ea52f17b68f62fa088d57f96ff24a76f50ea2",
      "tree": "478757954be8e33d3bbb1f27f6ecf0decbf88aaf",
      "parents": [
        "8aeaa478df4e3a649c3b8560c23bc8d70483f4b1"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Apr 04 10:18:27 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Apr 04 11:13:51 2012 -0700"
      },
      "message": "linker: enable -fvisibility\u003dhidden\n\nCompile the linker with -fvisibility\u003dhidden. This reduces the number\nof symbols that show up in the .dynsym section of the linker.\nThese symbols are never exported to other applications.\n\nIn particular, this fixes a problem with setting -DLINKER_DEBUG\u003d1\nintroduced in 468319ce4f3f7383d788b76c09cda2a405311f36.\nBecause the symbols \"debug_verbosity\" and \"format_log\" have not been\nresolved before the linker links itself, any attempt to call\nPRINT / INFO / TRACE / WARN / ERROR will result in a segfault.\nThis change allows the static linker to produce a relative reference\nto these symbols rather than relying on relocation.\n\nThis also has a nice side effect of making the linker slightly smaller\nand slightly more optimized.\n\nThe following symbols no longer in the .dynsym section of the linker\nafter this change:\n\n-addr_to_name\n-call_constructors_recursi\n-calloc\n-debugger_init\n-debugger_signal_handler\n-debug_verbosity\n-dladdr\n-dlclose\n-dlerror\n-dl_lock\n-dlopen\n-dlsym\n-dl_unwind_find_exidx\n-find_containing_library\n-find_containing_symbol\n-find_library\n-format_buffer\n-free\n-libdl_info\n-linker_env_get\n-linker_env_init\n-linker_env_secure\n-linker_env_unset\n-linker_get_error\n-__linker_init\n-lookup\n-lookup_in_library\n-malloc\n-notify_gdb_of_libraries\n-notify_gdb_of_load\n-notify_gdb_of_unload\n-realloc\n-rtld_db_dlactivity\n-unload_library\n-vsnprintf\n\nBug: 5827809\nChange-Id: I5e8cd7dcf48c1d6831a970a67f63f24916c5e437\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": "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": "7939908c8310342c8e1b717c4599273a782b3c2b",
      "tree": "21934e597ce223a46480bd97db15e5302d3ffe1b",
      "parents": [
        "8e8a7b1f0fb9daf8d4434e18a9fff5c28f849cb8"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Nov 04 10:11:26 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Nov 04 10:22:55 2011 -0700"
      },
      "message": "linker: set LOCAL_NO_CRT :\u003d true\n\nUse LOCAL_NO_CRT to prevent linking against crtbegin.o, rather than\nmessing with build rules. This also prevents linking against crtend.o,\nwhich isn\u0027t needed for the linker.\n\nChange-Id: I0c5b9999be7e8676560fe145c1c033ffce8db4d1\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": "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": "a903811819c06e4d6e9e27fcc9db3ab5459009bc",
      "tree": "5daa0f5b6b954f3a585834b975f89029dfaffd36",
      "parents": [
        "65fb884d28c26dc84d27bea6861b3a95a327db66"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Tue Jun 07 17:19:12 2011 +0200"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Tue Jun 07 17:19:12 2011 +0200"
      },
      "message": "Revert \"x86: Enable -fstack-protector\"\n\nThis reverts commit e0b4844a20ffd022a568abb4203b3f7c759c7ff5,\ncauses netd to crash.\n"
    },
    {
      "commit": "65fb884d28c26dc84d27bea6861b3a95a327db66",
      "tree": "37d78b4b6c57c5e7b13fa1f453c3472e57b729b7",
      "parents": [
        "1dae997ca4b67b40d2fe60ae65909403661db0af",
        "204d1f65dbfc6d5a14a90627d9d1efcfce8261ee"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Mon Jun 06 12:57:08 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 06 12:57:08 2011 -0700"
      },
      "message": "am 204d1f65: am b2c7e0c1: Merge \"x86: Enable -fstack-protector\"\n\n* commit \u0027204d1f65dbfc6d5a14a90627d9d1efcfce8261ee\u0027:\n  x86: Enable -fstack-protector\n"
    },
    {
      "commit": "e0b4844a20ffd022a568abb4203b3f7c759c7ff5",
      "tree": "6105d32ac5682170ae58b7a4aa141fd496135400",
      "parents": [
        "dc3bc87b43d0d73d89cca59692b80de878e11a5d"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Tue May 03 21:04:40 2011 -0700"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Tue May 24 13:32:14 2011 -0700"
      },
      "message": "x86: Enable -fstack-protector\n\nChange-Id: Ib69514c3afcb4c1f5e5f3f8cd91acfd145a0866c\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "368070454b1349d1fcf29a5d1eb51c869fb538f6",
      "tree": "2a02f5fea4a81195142bc37993a30123f97a2339",
      "parents": [
        "aa54339415ef74183645d7556a5b0d59f1135689"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 14 14:02:05 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 14 14:25:58 2011 -0700"
      },
      "message": "bionic: remove LOCAL_PRELINK_MODULE\n\nChange-Id: Iad65ae18446b20d2aace7b8fe19b1a032b616e9c\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "be5755969d70668bbab0e0c0ed75ebd867189723",
      "tree": "ae81e0c297f23cf98a5492dc9de7073746cbce8a",
      "parents": [
        "d4a65d28d4dd7dab4ad66d2d65903296d183d47c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Dec 16 19:52:02 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 20 12:06:45 2010 +0100"
      },
      "message": "linker: Remove unsecure env. variable for setuid programs.\n\nThis removes several unsecure environment variables from the\nenvironment block when the program being loaded is setuid. The\nlist of env. variables is the same than what GLibc uses at this\npoint.\n\nChange-Id: I456d3ea0880fe0d4de0d3c5dd51871dd36e87fd6\n"
    },
    {
      "commit": "8bff9a31aa13ff83ccaedd54ebda96770e6cf910",
      "tree": "b198c6d9535c41554620f5464e24017b066d35fb",
      "parents": [
        "038fbae518e904c7aba64779714a22dbeeb90887"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jun 10 18:29:33 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jun 10 22:58:22 2010 -0700"
      },
      "message": "linker: remove libcutils dependency by re-implementing simpler socket_local_client.\n\nChange-Id: I87f29fd59454d713b9ddfb13e6cf114822f52efd\n"
    },
    {
      "commit": "5c734644eebf8d01be1e86cbe20a111a5c5a2738",
      "tree": "5e442dc0157ec487f51a65f85f87fe2bd66fd0cf",
      "parents": [
        "e100f52f4ad1b70762bbcc5ad9828bd258917ee5"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jan 20 12:36:51 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Feb 11 10:46:48 2010 -0800"
      },
      "message": "Fix debug output in the dynamic linker.\n\nThis provides a mini-printf implementation that reduces the\nsize of the dynamic linker by 25 KB, by preventing the drag of\nformatting-related routines from the C library.\n\nAlso allow traces to be sent to the log, instead of stdout.\n\nNOTE: You now need to modify Android.mk to enable/disable debug\n      output.\n"
    },
    {
      "commit": "90f82e5868de5a30d4842951b80be0c8a9cedc6d",
      "tree": "d49763a7763995fd772560acffd074ee1dc7710e",
      "parents": [
        "1a2917ca954f575cc9698c99e54bd93087793c8f"
      ],
      "author": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Mon Jan 25 11:09:31 2010 -0800"
      },
      "committer": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Mon Jan 25 11:09:31 2010 -0800"
      },
      "message": "Fix typo in a comment.\n"
    },
    {
      "commit": "1a2917ca954f575cc9698c99e54bd93087793c8f",
      "tree": "4c923a2e53ca9e6114a1ec0f71be905ceae4f019",
      "parents": [
        "d6bf8f92298aa46ee045f30ed5146eb05af16ced"
      ],
      "author": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Mon Jan 25 10:24:50 2010 -0800"
      },
      "committer": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Mon Jan 25 10:24:50 2010 -0800"
      },
      "message": "Align TEXT section to 4K boundary so that we can use both ld and gold.\n"
    },
    {
      "commit": "278d157f437c0357b7c6d1fb1cbffbc0a72bb788",
      "tree": "27434e29fe0dc3fca4ea006fe50c7951762aa7ea",
      "parents": [
        "0b5db51ea6d9c0b877d2ce26440d963760c38dfe"
      ],
      "author": {
        "name": "Gary King",
        "email": "gking@nvidia.com",
        "time": "Tue Sep 29 16:12:31 2009 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 12 17:37:44 2010 -0800"
      },
      "message": "Use correct TLS codepath for linker\n\nReplicate ARM libc build\u0027s HAVE_ARM_TLS_REGISTER preprocessor definition\nlogic, to ensure that the runtime linker uses the correct codepath for\naccessing the TLS address\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": "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": "e5cc1f386b167b9f7bfdebc7219e89aa9b71e4b2",
      "tree": "2cbd43daa6744ed80e833528f8cbfc0c485e5253",
      "parents": [
        "6d6c82c7a0a6b9a89f61b61c66f9b90d9c7177dc"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:07 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:07 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@126645\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"
    }
  ]
}
