)]}'
{
  "log": [
    {
      "commit": "42d5fcb9f494eb45de3b6bf759f4a18076e84728",
      "tree": "8f653810d3ddecf30bb0b744d4564d406808fe3e",
      "parents": [
        "ffe5c24c8693f1f4fc8edb68075fb36df558b801"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 29 17:01:24 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sun Nov 15 12:09:16 2015 -0800"
      },
      "message": "Introducing linker namespaces\n\nBug: http://b/22548808\nChange-Id: Ia3af3c0a167f1d16447a3d83bb045d143319b1e1\n"
    },
    {
      "commit": "cf1cbbe43293b05e564b9d044147efbcfbcc993e",
      "tree": "4c838cec973542e1bfcfabe2e7478311eecfaa2c",
      "parents": [
        "5edf077c5b92f0db212e45ed5402339a6e4c7334"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Oct 19 16:57:46 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 22 18:01:56 2015 -0700"
      },
      "message": "refactoring: introduce MappedFileFragment\n\nChange-Id: I97b0c1131711ed0ac13ab33e3357e99e0b6b1a4e\n"
    },
    {
      "commit": "b28ffc77445c7aed5d4d817152421f6f1f2c4f6d",
      "tree": "1a18dbc9a9478f6123b45e55b9cfb7b64e26240b",
      "parents": [
        "e78392637d5086384a5631ddfdfa8d7ec8326ee3"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Oct 12 16:27:32 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Oct 12 18:20:26 2015 -0700"
      },
      "message": "linker: Switch to clang\n\nx86_64 gcc exports malloc/free and co functions because they\nare defined with visibility \"default\" somewhere in gcc builtins;\nand vector d-tors for some reason. Switching to clang fixes\nthis problem.\n\nBug: http://b/24785482\nChange-Id: I741503b4b446523e7ff3fb16de13ed99991fd0c0\n"
    },
    {
      "commit": "a1feb117e4d5614548574f28dede3443e073512b",
      "tree": "6078618ff745b802f986119d0534433a8d7df2d1",
      "parents": [
        "748421beef0ed8625920a27b3753a79c2652b6ef"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Oct 01 18:41:57 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Oct 07 11:44:53 2015 -0700"
      },
      "message": "Make dt_runpath work for libraries opened from apk\n\nThis patch also fixes realpath for libraries opened directly\nfrom apks.\n\nBug: http://b/21960914\nBug: http://b/21961857\nChange-Id: I35ade661c87f1d448191f385811f6e9fd3cacf11\n"
    },
    {
      "commit": "280d54680d8842df5b0e37ec50acde48957d8e7a",
      "tree": "d714bd5c1de90e5a76d724162dd8df118c2e36cc",
      "parents": [
        "55f87a0c0bb587ee85b5662967563462d52db560"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 28 10:14:17 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 28 10:31:12 2015 -0700"
      },
      "message": "Fix bug number for linker related workarounds\n\nBug: 24425865\nChange-Id: I2021674a9df0e768f312ca024d906302db1c494f\n"
    },
    {
      "commit": "d1afa661af3686e487646fe36641c1b4080687d3",
      "tree": "4435f5fa1e3abc861ad1efb6e50843515dd54996",
      "parents": [
        "6816d8cc69dc1d142d722686d006f25df94afcd3"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Aug 17 16:17:03 2015 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Mon Aug 17 16:17:03 2015 -0700"
      },
      "message": "Don\u0027t attach linker_asan to linker in module definition.\n\nWith this change, we only define the rules to create the symlinks in\nthis Android.mk but without attaching the symlinks to the module linker.\nInstead the core build system will set up the dependency whenever a\nmodule needs these symlinks.\n\nBug: 22850550\nChange-Id: I36c58fd411f1c27f3f638b229699d7dc1d66abb2\n"
    },
    {
      "commit": "5341691955e2fc2b271b722c37496d72a0e8c683",
      "tree": "8b6a350a4898241663c6ccc58685a3362738e8ec",
      "parents": [
        "ff4afc136ef5d00d33a611e7bc1950249db9fbcf"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 10 16:40:06 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 10 16:40:06 2015 -0700"
      },
      "message": "Move up to C++14.\n\nThe default standard version is now ahead of us. Stop specifying C++11\nso we get that too.\n\nChange-Id: Ic96942cd7fd134118e29b744601b0119e49b6ac4\n"
    },
    {
      "commit": "b447440a4b5e1e300c6cb1a931b3fa1e22900c4f",
      "tree": "e346f6bf3cfff843d06cee42a0061d6af8a7c1d3",
      "parents": [
        "34c5f5eacdedcea6b987854a4bca07c703495d62"
      ],
      "author": {
        "name": "tony.ys_liu",
        "email": "tony.ys_liu@htc.com",
        "time": "Wed Jul 29 18:00:22 2015 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 29 17:21:30 2015 -0700"
      },
      "message": "Prevent buffer over-read in linker.cpp\u0027s parse_path.\n\nAlso, the old behavior of skipping empty entries doesn\u0027t match glibc.\n\nChange-Id: I497774377113ab6c5d962e0f20066e2192748f06\n"
    },
    {
      "commit": "d11c3e5c3a7c28a7606e5ca9e52876be9772cc70",
      "tree": "4379498266c484db404114fe4dad4f556bf87059",
      "parents": [
        "e9774a5227749035dc55357ae3a34edaf545c3b3"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jul 15 16:19:59 2015 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jul 15 16:19:59 2015 -0700"
      },
      "message": "Replace spaces with tabs in a Makefile.\n\nSorry, I undertested my previous change and these guys somehow sneaked in.\nThis only affects SANITIZE_TARGET builds.\n\nChange-Id: Id6986d89fa3d4965339f7b6fe973e9db73b380da\n"
    },
    {
      "commit": "d640b225ecdd6d2fb74076e9b80ce8afb42e31a0",
      "tree": "3c84d89a588a465e7ba3b6f0fcb7ac5be8700861",
      "parents": [
        "60a11dcb44992f610e696fc246c70731012080dd"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jul 10 17:54:01 2015 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jul 14 16:12:27 2015 -0700"
      },
      "message": "A special linker for ASan executables.\n\nSetup a /system/bin/linker_asan as a symlink to \"linker\".\nRead the linker name from PT_INTERP, and if it is linker_asan,\nswitch default library lookup paths to the ASan set, which\nstarts with the path to the instrumented libraries\n(/data/lib), followed by /system/lib as a fallback.\n\nThis ensures that ASan binaries prefer ASan libraries, when\navailable. This approach is way better then RPATH/RUNPATH and even\nbetter than LD_LIBRARY_PATH:\n- RUNPATH is per-DSO, while default paths are global.\n- LD_LIBRARY_PATH is overwritten by android_update_LD_LIBRARY_PATH.\n- neither RUNPATH nor LD_LIBRARY_PATH appear in\n  android_get_LD_LIBRARY_PATH which is used to build java.lang.path.\n  Having ASan libraries in java.lang.path is a good thing.\n\nBug: 22355945\nChange-Id: I1d2791fbf5740618f18f71a3ae3d873714669d3f\n"
    },
    {
      "commit": "dee130f5983c5b76059787bd95e87a1be2530c87",
      "tree": "d7f03538c127ebf5d4c6b27b9ed76f75c366e35e",
      "parents": [
        "81b2382df6985d5e2495797bb4e03fa597340a37"
      ],
      "author": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Wed Jun 17 17:17:54 2015 +0200"
      },
      "committer": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Wed Jun 17 17:17:54 2015 +0200"
      },
      "message": "Revert \"[MIPS] Do not use compact branches until GDB supports them\"\n\nThis reverts commit 3cec6eca929de5d627a8cc1fbe72c564ba5175cc.\n"
    },
    {
      "commit": "1801db3d3fe17df543e721b9fb355e5c882dc6cc",
      "tree": "0da1044f0e048558d86d74ea9414cb867e43af51",
      "parents": [
        "1cfbd94a2f40743757cdecd51cfa3e3ab545a5c5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 08 18:04:00 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 09 20:10:25 2015 -0700"
      },
      "message": "Statically linked executables should honor AT_SECURE.\n\nBug: http://b/19647373\nChange-Id: I10e7682d9cec26a523f1a3597ca5326c3ca42ebe\n"
    },
    {
      "commit": "d70891687d742414d457e41a998726e5eb0a09bd",
      "tree": "751f2fb12cd1c689ee850d28cc72fc3b0410850e",
      "parents": [
        "5511551009c5b8b7495af8278ffe914d4a8147b1",
        "3cec6eca929de5d627a8cc1fbe72c564ba5175cc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 29 04:39:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 29 04:39:24 2015 +0000"
      },
      "message": "Merge \"[MIPS] Do not use compact branches until GDB supports them\""
    },
    {
      "commit": "79fd668bb4ddb22432eeda2ebd8d10359013d9a8",
      "tree": "c0f8b611a678275b2f6cab8e4d3b711a6a1aa3f2",
      "parents": [
        "aaafbe128f51dff92da3cf4f5fc9b47f04f05261"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 21 17:43:49 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 27 14:31:36 2015 -0700"
      },
      "message": "Add functions to provide target sdk version\n\nBug: http://b/21364029\nChange-Id: I8648d1bff6c8fd6e7cd12da7f128e048b9f2829a\n"
    },
    {
      "commit": "3cec6eca929de5d627a8cc1fbe72c564ba5175cc",
      "tree": "1d6458d15ce2b9901df8b88ba605c93ff1f54bef",
      "parents": [
        "ffe01a3de62d17cbe1cdf3b40a91d1ac9a9d36b5"
      ],
      "author": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Thu May 21 18:23:55 2015 +0200"
      },
      "committer": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Mon May 25 16:28:14 2015 +0200"
      },
      "message": "[MIPS] Do not use compact branches until GDB supports them\n\nGDB does not yet have support for compact branches, and is not able\nto set a breakpoint on rtld_db_dlactivity(), which is compiled into\none JIC instruction. Unfortunately, We cannot turn off generation of\nJIC compact branch. Instead, add unoptimized FP handling code, so GDB\nwill have something to land on.\n\nChange-Id: Iddcf40ec018972398179018d049b8323fcd258b7\n"
    },
    {
      "commit": "9185e04f72c16d2a66d92ac89b38ee926d7f706b",
      "tree": "e6cf2006eb78c9fbd28a64573a40370508f91624",
      "parents": [
        "0378d8f65126b2d94c731f2719a68773e370f615"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri May 15 17:53:39 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri May 15 18:42:14 2015 -0700"
      },
      "message": "Apply work around b/19059885 to x86\n\nBug: http://b/19059885\nBug: http://b/21203348\nChange-Id: Ic375e9f877d68de8f866d17362879a7dde638465\n(cherry picked from commit 69a5fb951d69689dedd83cb033ae3dcd0ef05b65)\n"
    },
    {
      "commit": "797bffb76095c5bf83b486579dab9db7bb4fe09e",
      "tree": "efda087ca764badef51c25bd4b9df2cf859318f8",
      "parents": [
        "8f3eb5a4e5dbbac1fb431e40e25eec07ecc24ee8"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 26 16:47:18 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 26 16:47:18 2015 -0700"
      },
      "message": "Explain why we need objcopy for the linker\n\nChange-Id: I646673abc6095b56f72add493b60925375b75b78\n"
    },
    {
      "commit": "aef719510a57274e73ca02ab5ecdc5bf17d3985c",
      "tree": "a3161800a6a0082e59df412a6d4d712041383fc2",
      "parents": [
        "5f8ddf69e59b13653d016e236599b95daf6501a8"
      ],
      "author": {
        "name": "Simon Baldwin",
        "email": "simonb@google.com",
        "time": "Fri Jan 16 13:22:54 2015 +0000"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 17:50:50 2015 -0700"
      },
      "message": "Support loading shared libraries from zip files\n\nAdd code to support loading shared libraries directly from within\nAPK files.\n\nExtends the linker\u0027s handling of LD_LIBRARY_PATH, DT_RUNPATH, etc\nto allow elements to be either directories as normal, or ZIP\nformat files.  For ZIP, the ZIP subdirectory string is separated\nfrom the path to file by \u0027!\u0027.\n\nFor example, if DT_NEEDED is libchrome.so and Chrome.apk is the\nAndroid ARM APK then the path element\n\n  /system/app/Chrome.apk!lib/armeabi-v7a\n\nwould cause the linker to load lib/armeabi-v7a/libchrome.so\ndirectly from inside Chrome.apk.  For loading to succeed,\nlibchrome.so must be \u0027stored\u0027 and not compressed in Chrome.apk,\nand must be page aligned within the file.\n\nMotivation:\n  Chromium tracking issue:\n  https://code.google.com/p/chromium/issues/detail?id\u003d390618\n\nBug: 8076853\nChange-Id: Ic49046600b1417eae3ee8f37ee98c8ac1ecc19e7\n"
    },
    {
      "commit": "19656ce5376c95ce0deebc4d0c6af1bb8d740934",
      "tree": "3e78273c034d5890e12af1a00f9e9746ce3fec23",
      "parents": [
        "11a06c73f6e7d31442429a58a346d881b0a8a441"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 10 17:48:27 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 11:19:53 2015 -0700"
      },
      "message": "General purpose memory allocator for linker.\n\n Add basic general purpose memory allocator to\n linker in order to enable usage of other libraries\n like libziparchive.\n\nChange-Id: I4a680ebb36ed5ba67c61249f81dba9f567808434\n"
    },
    {
      "commit": "c9ce70d7838b6aae074fc3615cdf04e5c9ac612a",
      "tree": "dac3026e1798737fd5edc364a82822bdfb078ae0",
      "parents": [
        "e842dc0de5ce5f9950e323ae8805909f60867bf6"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 10 15:30:26 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 10 15:30:26 2015 -0700"
      },
      "message": "Refactoring: rename linker_allocator files\n\nChange-Id: Ifc08e64b3a85205f072b7abab1149c7ab71e2f75\n"
    },
    {
      "commit": "f5ae7e91ea2c3364d6423ef4d54f5f295197335f",
      "tree": "892e6c00146901b0c658df5e269704d081ae5e6d",
      "parents": [
        "7f3d65de8cf2920981d73adee278c0d7bee79170",
        "306ea7ebe5c25608acdcb64f0d52aa4f37a45c37"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jan 23 23:33:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 23 23:33:54 2015 +0000"
      },
      "message": "Merge \"Add comments about the -shared flag.\""
    },
    {
      "commit": "306ea7ebe5c25608acdcb64f0d52aa4f37a45c37",
      "tree": "a4577488c99a1f61fe4a9f93889c0d4d433dd039",
      "parents": [
        "d280675405e605d47c74c037b0d2b4f06826ed4d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Jan 22 14:05:15 2015 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Jan 22 19:09:20 2015 -0800"
      },
      "message": "Add comments about the -shared flag.\n\nMust build this linker as a shared object.\nA statically linked module does not load during init.\n\nBUG: 18008984\n\nChange-Id: I5f0411129024edcb9381c473ea4e741a075e9184\n"
    },
    {
      "commit": "1649e7ee5b9bb4122be67903d55c4c8cc0549bba",
      "tree": "9213c9213ccfad39b4c944ede78315f50684305a",
      "parents": [
        "ae095a730d6b3af69dc5eff662c5609cde6f5d70"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 22 16:04:25 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 22 16:33:30 2015 -0800"
      },
      "message": "Enable -Wold-style-cast warnings for linker\n\n  And fix old style casts.\n\nChange-Id: I37e7a3e3fd852528ea76f02d967c7bd8cd5b06c9\n"
    },
    {
      "commit": "151da681000c07da3c24cd30a3279b1ca017f452",
      "tree": "5b869b41571ea55cbd80324f65ff0235c880f9b0",
      "parents": [
        "ffad8df672363bad43528898cc47aa2ed3d08c66"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 19 11:16:52 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 20 17:22:25 2015 -0800"
      },
      "message": "Contact proper debuggerd when crashing.\n\nMake the request structure match the new structure found in debuggerd\ncode.\n\nOn 64 bit systems, make sure that the 32 bit compiled linker is contacted.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d97024\nChange-Id: I675b8ff222fcf836b05de4e9b5976ff91ca929bf\n"
    },
    {
      "commit": "114ff69f1753c7fe4d749f8fb0c082b80e0d43f4",
      "tree": "63fb91599444f45664f9e656294699609481d4fb",
      "parents": [
        "ffa2c9edb5b1cf295bceffc7876a68747b6fa259"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 14 11:36:38 2015 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 14 18:03:19 2015 -0800"
      },
      "message": "Refactoring: move mips reloc to separate method\n\nChange-Id: I712614853e3f0e515f5c2bdd8f0aaa5feeae8e55\n"
    },
    {
      "commit": "6f40a8ac7445e1abc1748e1b5ed42b2c5e264ea4",
      "tree": "4e7d5ba5ac70cb9fa26c6e904a03d8cfa98bc764",
      "parents": [
        "8623dc75479f88e7ccdec708b5c7ca0abeb285d1"
      ],
      "author": {
        "name": "Duane Sand",
        "email": "duane.sand@imgtec.com",
        "time": "Thu Jan 08 10:36:56 2015 -0800"
      },
      "committer": {
        "name": "Duane Sand",
        "email": "duane.sand@imgtec.com",
        "time": "Fri Jan 09 10:24:11 2015 -0800"
      },
      "message": "Revert \"Must use Clang assembler for mips target.\"\n\nThis reverts commit 6f96d58c0de191ac479d0fa83c3b9a514f4d3c48.\n"
    },
    {
      "commit": "6f96d58c0de191ac479d0fa83c3b9a514f4d3c48",
      "tree": "4b22968be9ac4c17b5297462ce252b5bd4e19118",
      "parents": [
        "c631bb215e29981222f19c092ded49c7c1f15845"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 18 17:10:56 2014 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 18 17:10:56 2014 -0800"
      },
      "message": "Must use Clang assembler for mips target.\n\nGNU assembler has internal error with clang\u0027s output.\n\nBUG: 18807290\nChange-Id: Iabbe991720fc562884f19d79bded903505fc891d\n"
    },
    {
      "commit": "f9e147b0bf5ec092ddbbc67f5e02d7e616e19bc2",
      "tree": "3dd03c6724a53a392f7d57fbc68b3837e562bb0d",
      "parents": [
        "8adace5f2c185bd616f79159eaf90d2982157069"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri Sep 05 15:42:12 2014 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri Sep 05 16:16:35 2014 -0700"
      },
      "message": "Use LOCAL_POST_LINK_CMD to insert the objcopy command for linker.\n\nPreviously we duplicated code in build/core/executable.mk and it\u0027s hard\nto maintain. LOCAL_POST_LINK_CMD is a clean solution for this.\n\nBug: 17403674\nChange-Id: I8c054bf782af68cf1f88b8d787a78ca74a7968b5\n"
    },
    {
      "commit": "14241402de0faa4b244b1bd6b1f0799ce169b880",
      "tree": "0308dd630e83a0640ad43bf0496c0733e7708366",
      "parents": [
        "c764fb24ccb47e05d8e140cde5b4111225790ef1"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Aug 26 14:16:52 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Aug 26 15:44:18 2014 -0700"
      },
      "message": "Enable __cxa_atexit \u0026\u0026 __cxa_finalize for linker\n\n This allows adding destructors to classes used\n for global variables.\n\nChange-Id: I5e1cd63fe3bf8f66de88cc4f7437cafb350f49b5\n"
    },
    {
      "commit": "ad5e8b50737144833233d47fe04deb3fa0284df2",
      "tree": "41c10ed48c0617ca30766ffd9b689c08b10eecb5",
      "parents": [
        "0d4ccee35101c6bcd6cc28c23fe79d7b48a98dd0"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 14 15:46:36 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Aug 14 15:46:36 2014 -0700"
      },
      "message": "Keep symbols for linker\n\nBug: 17011146\nChange-Id: I314e72a1ac9325bf5ea84d52e3d5bc51d8ea00cf\n"
    },
    {
      "commit": "9d98ee17feb63d8bba2c115a0e3228c2558166d4",
      "tree": "655050c236e217910948830fef69a6cf5f924acf",
      "parents": [
        "1aaed87f7f75aafe3cd99857c33e1cf4fa73c95d"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris.dearman@imgtec.com",
        "time": "Thu Jun 12 17:49:04 2014 -0700"
      },
      "committer": {
        "name": "Chris Dearman",
        "email": "chris.dearman@imgtec.com",
        "time": "Thu Jun 12 19:18:12 2014 -0700"
      },
      "message": "[MIPS64] linker64 requires startup code\n\nChange-Id: Iff2cd7d4dc40a67978bd9fc585b86e5a87afdbdd\n"
    },
    {
      "commit": "d286796fce1e6fff407b719a53eb2afbeb96c327",
      "tree": "c1edc80194a19b7b443611acd0ffdea2ddfe130a",
      "parents": [
        "2f9400b679ffe08f7190781e64edda5edf0f7297"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 03 15:22:34 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 03 15:22:34 2014 -0700"
      },
      "message": "Turn on -Wunused and fix the mistakes it uncovers.\n\nChange-Id: I023d2d8b547fbc21d4124bb7510d42b06a0dc501\n"
    },
    {
      "commit": "d597d263bc32422402d4810ce4ec070f0227c2f7",
      "tree": "82c874dc2a5e8e1821a23af6c9d9fce7091be185",
      "parents": [
        "4b57305afe2b54a6afb733361f6fd93cb92ccfa8"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 05 16:49:04 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 12 21:40:09 2014 -0700"
      },
      "message": "Refactor linker allocator\n\nMakes it reusable for different fixed sized and not very\nbig structures (\u003cPAGE_SIZE).\n\nChange-Id: Id5ec13fc6541b1935ef7fe3671c22b98685abbae\n"
    },
    {
      "commit": "88b44feb7dd792348f2755c30cc7356509929917",
      "tree": "e85951ef0b7be046877854edf3bb12276f7dea86",
      "parents": [
        "b732b71dc10158a4c1d8ee2235d357f8694030ba"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 01 11:41:36 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 01 11:41:36 2014 -0700"
      },
      "message": "Remove duplicate line in linker/Android.mk.\n\nChange-Id: I7b4d5fcdfacc840bbda4ffd965e5315c4651cfe5\n"
    },
    {
      "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"
    }
  ],
  "next": "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
}
