)]}'
{
  "log": [
    {
      "commit": "bedfe38b8ba512dd6236c00e8b4a9b01c2bd1281",
      "tree": "7c395dc45e732e921d65fe0baaa0315b954fbc87",
      "parents": [
        "b7c6991c9af3882bd13cbf6bc42da85c884aa5f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 14 14:07:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 14 14:07:59 2012 -0700"
      },
      "message": "More cleanup.\n\nMake more stuff static, remove some dead code, and fix a few typos.\n\nChange-Id: I010b0eadeaf61e2899c37014ad1e7082c70bd510\n"
    },
    {
      "commit": "12c78bbded8ec03f821dfa09174464c04836e4ea",
      "tree": "bcf31e000dc214688694a6538568b3a49624352c",
      "parents": [
        "54655eaf92ca91bfe2fa293896059a181e27b6eb"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 14 12:30:09 2012 +0200"
      },
      "committer": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 14 19:38:28 2012 +0200"
      },
      "message": "linker: avoid clobbering the .dynamic section of shared libs\n\nThis patch removes the DT_NEEDED hack which stores pointers\nto soinfo structs in the .dynamic section of the library\nbeing loaded.\n\nInstead, it caches the soinfo struct pointers on the stack\nduring relocation time. After relocation time, i.e. when\ncalling constructors and destructors of the shared library\nand its dependencies, uncached access is used instead,\ndoing lookups using the string table entries pointed to by\nthe DT_NEEDED entries.\n\nBy removing this hack, it is no longer needed to undo the\nPT_GNURELRO protection, i.e., all non-writable mappings\ncan remain non-writable during their entire lifespan.\n\nEven though, strictly speaking, the algorithmic complexity\nhas increased somewhat, the real-world adverse effect\nis negligible on the systems I have tested.\n\nChange-Id: I2361502560b96b5878f7f94a8e8a215350d70d64\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "9181a5dcfe69199415c7aebf93524cc3dd6f8a6f",
      "tree": "381d31f88ca04d15d5f83845b02cf1a04abc7ce6",
      "parents": [
        "20b94c0ce99ea3d2315535091c8bcd02f831d252"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Aug 13 17:58:37 2012 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 11:05:47 2012 -0700"
      },
      "message": "Fix module constructor order.\n\n.preinit_array goes before the constructors of LD_PRELOAD-ed libraries.\n\nChange-Id: I1af32ce29eaf3ca4351ae8a0f7f5da5165853216\n"
    },
    {
      "commit": "5135b3ae6ebc460418f7917bd36b368340e48d5a",
      "tree": "9352c1ef42d3972e8e202eeabd0e7bfb73799b95",
      "parents": [
        "0bf5cf87c6b7d3de8962ba132ecfb6f0e4b84f06"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Aug 10 21:08:42 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Aug 13 08:50:11 2012 -0700"
      },
      "message": "linker: don\u0027t perform unnecessary mprotects\n\nThe linker only needs to mark the text segment as\nwritable iff the file has text relocations. Unnecessarily\ncalling mprotect when it isn\u0027t necessary is slow, and some\nsecurity enhanced kernels don\u0027t like it. Pages which are\nsimultaneously writable and executable are considered a no-no.\n\nThe vast majority of executables / shared libraries on Android\ndo NOT have text relocations.\n\nChange-Id: Ic38ce30a99b7e33ecf21efd9c108547a58eafa35\n"
    },
    {
      "commit": "06f0e74a2b957db93fed3fdd49fe939ab2fe1595",
      "tree": "264d6b411c8ab418a7fbcf4a88b075fe4d8d2286",
      "parents": [
        "709bb0f79ced522e5fb145182472ee4063b85368"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Aug 10 16:07:02 2012 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Aug 10 16:07:02 2012 -0700"
      },
      "message": "Set the dynamic field in the link map for the linker itself.\n\nOtherwise gdb will print a spurious warning each time gdb is used:\n\nwarning: .dynamic section for \"/system/bin/linker\" is not at the expected\naddress (wrong library or version mismatch?)\n\nBUG:6946614\nChange-Id: Ib21b8db0615751189c1601140deb43bc089289b6\n"
    },
    {
      "commit": "4688279db5dcc4004941e7f133c4a1c3617d842c",
      "tree": "db614aaf2e0a02cef4b5f643fa91e9cbcfd7d5ff",
      "parents": [
        "1c861728e5c8dda7589e6595f4850d77ec21a236"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 03 16:49:39 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 07 11:41:10 2012 -0700"
      },
      "message": "Clean up the linker a bit, remove prelinking support.\n\nAlso make the errors more readable, since none of us seemed to know\nwhat they actually meant. The new style is still as verbose as the\nold, but that\u0027s probably necessary in the absence of chained exceptions\nin C. Here\u0027s what you\u0027d see if you try to boot after removing\nlibsurfaceflinger.so:\n\n  32267 32267 E AndroidRuntime: java.lang.UnsatisfiedLinkError: Cannot load library: (linker.c:1629, pid 32259) soinfo_link_image: could not load library \"libsystem_server.so\" needed by \"libandroid_servers.so\"; caused by (linker.c:1629, pid 32259) soinfo_link_image: could not load library \"libsurfaceflinger.so\" needed by \"libsystem_server.so\"; caused by (linker.c:709, pid 32259) load_library: library \"libsurfaceflinger.so\" not found\n\nThis patch also fixes almost all of the compiler warnings.\n\nChange-Id: I64bb59aed6d4e039c15ea45be2367f319ef879f8\n"
    },
    {
      "commit": "d7daacb46372132ae3f0121647074936c304b572",
      "tree": "c6bbaccbf2d36b1c4494b5bce7e7b489bec6442b",
      "parents": [
        "0ca9d0748e3229c849e3ee17259e0e55d7214800"
      ],
      "author": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Tue Jul 31 12:07:22 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 02 14:39:50 2012 -0700"
      },
      "message": "MIPS support to the linker\n\nChange-Id: I37ec2d6c51d82bb9e9dbfef4b38c85366bead255\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\nSigned-off-by: Raghu Gandham \u003craghu@mips.com\u003e\nSigned-off-by: Bhanu Chetlapalli \u003cbhanu@mips.com\u003e\n"
    },
    {
      "commit": "8dfc073b1487ab25ab483ab346cee1d9e584adb1",
      "tree": "7423f6a87858e187e5b8ccbc5396ee7096f27285",
      "parents": [
        "9061c6e7ae1d9b0e4d2f8a62b3682a565282f9b9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 27 15:30:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 27 15:30:51 2012 -0700"
      },
      "message": "Fix a TEMP_FAILURE_RETRY usage error in the linker.\n\nSimilar to the fix in c20d0f3993ebb0d3dec958a306a68ebb48bfeadd.\n\ngrep(1) says this was the only other instance in bionic.\n\nChange-Id: I1729038762ee1c7c4743a6bd11d5558afd6f5749\n"
    },
    {
      "commit": "f6ee33cee717f9878d3a43bf76c35547649676d7",
      "tree": "93d200becc2ae2e17794901b03ff69a5d32b5382",
      "parents": [
        "3fd5e91e58ba40a7321a3f2c4c64970584e9bb56",
        "326e85eca6916eb904649f7bff65244a40088ba7"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 18 14:02:21 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 18 14:02:22 2012 -0700"
      },
      "message": "Merge \"linker: Fix LD_PRELOADS for calling constructors\""
    },
    {
      "commit": "3fd5e91e58ba40a7321a3f2c4c64970584e9bb56",
      "tree": "9327cd649b5f512a9927ee8aaf256513f5beb94c",
      "parents": [
        "05f03b8875ed4aab95e5587d066d62a781af97bc",
        "bb5c30a3ee40324effd4daa346505e16faf91728"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 11:38:23 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 11:38:23 2012 -0700"
      },
      "message": "Merge \"bionic: Report linker relocation address to gdb\""
    },
    {
      "commit": "8211bc6325ef61f2fe2021fac9e0f4219abaccf2",
      "tree": "6be741ab104858dba834bc84ecb75fabec4ddfab",
      "parents": [
        "decb531ce29e0472d5d3117c4bfda674f374a771"
      ],
      "author": {
        "name": "Robin Burchell",
        "email": "robin.burchell@collabora.co.uk",
        "time": "Thu Jul 05 09:23:19 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 10:03:35 2012 -0700"
      },
      "message": "linker: cleanup of undefined state handling, which is really dead code\n\nGiven that _elf_lookup (and thus, _do_lookup) cannot possibly return an\nundefined symbol (due to the check for SHN_UNDEF in _elf_lookup), there\u0027s\nno need for spurious checks for SHN_UNDEF on its return value.\n\nConflicts:\n\n\tlinker/linker.c\n\nChange-Id: Ic73cf439924b45f72d4d9ba3f64a888c96cbbd9b\n"
    },
    {
      "commit": "439fa8ea8c33a7945258dfe84a71ab2665efaa9a",
      "tree": "f9e9312620e9d142605257434e495c716f1ef559",
      "parents": [
        "8d7355ac2f19f72e03989aab6b47990a34fd6123"
      ],
      "author": {
        "name": "Robin Burchell",
        "email": "robin.burchell@collabora.co.uk",
        "time": "Thu Jul 05 09:21:07 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 09:51:17 2012 -0700"
      },
      "message": "linker: Use SHN_UNDEF instead of describing what it is trying to do.\n"
    },
    {
      "commit": "bb5c30a3ee40324effd4daa346505e16faf91728",
      "tree": "2d985059f3306f6237749893fb1793f21ba46b4f",
      "parents": [
        "6334c662cae4cd9b61f5f3185048b0cd3633dad7"
      ],
      "author": {
        "name": "Ryan V. Bissell",
        "email": "ryan@bissell.org",
        "time": "Mon Jul 16 02:16:18 2012 -0500"
      },
      "committer": {
        "name": "Ryan V. Bissell",
        "email": "ryan@bissell.org",
        "time": "Mon Jul 16 02:16:18 2012 -0500"
      },
      "message": "bionic: Report linker relocation address to gdb\n\nGDB needs the runtime linker\u0027s base address in order to\nlocate the latter\u0027s \".text\" and \".plt\" sections, for the\npurpose of detecting solib trampolines.  It also can\npotentially use this to calculate the relocated address\nof rtld_db_dlactivity.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d34856\nChange-Id: I63d3e7ae4e20a684ceb25967f2241e7d58dd685d\nSigned-off-by: Ryan V. Bissell \u003cryan@bissell.org\u003e\n"
    },
    {
      "commit": "326e85eca6916eb904649f7bff65244a40088ba7",
      "tree": "ba1a91f237d5a013bb89af9a3d2f4c41800125e9",
      "parents": [
        "e1d909f71e183ac3d1e21af5bb1af35d30e9de5b"
      ],
      "author": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Sun Jul 15 00:49:27 2012 +0800"
      },
      "committer": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Sun Jul 15 00:49:34 2012 +0800"
      },
      "message": "linker: Fix LD_PRELOADS for calling constructors\n\nChange-Id: I1eae77a4c59e8a5acc009127d271455bb6fc01b6\n"
    },
    {
      "commit": "793e6aedf2dfb6cc9bdf0cf9fd60dd87ec21f658",
      "tree": "49ed031c801cbbb423baf37927e4cb83b8833608",
      "parents": [
        "2ddf77b37731dff3a271c1312fc0bef2e7d41473",
        "67636eea20f7789e6689ee8cf6017e7d48735ca1"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 09 11:07:46 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 09 11:07:46 2012 -0700"
      },
      "message": "am 67636eea: am 40e7ed58: Unhide rtld_db_dlactivity()\n\n* commit \u002767636eea20f7789e6689ee8cf6017e7d48735ca1\u0027:\n  Unhide rtld_db_dlactivity()\n"
    },
    {
      "commit": "40e7ed58d73eae59d0cf2fed61284d16692e307b",
      "tree": "07def7271e63e1367672dc37bcffe89627f4ad9b",
      "parents": [
        "4d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 02 11:17:04 2012 -0700"
      },
      "committer": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 02 11:17:04 2012 -0700"
      },
      "message": "Unhide rtld_db_dlactivity()\n\nSince linker is built with -fvisibility\u003dhidden rtld_db_dlactivity()\nif hidden from gdb.  Unhide it otherwise gdb may not know linker\nactivity and rescan solib\n\nChange-Id: Ia8cd8d9738c6ea5696ba2ef0ebf2cf783f9ca70a\n"
    },
    {
      "commit": "b52e4385c403d18a68309e568ac729c787d900c4",
      "tree": "ffeaf6389772780623222f84cd1ad8c241e9c38a",
      "parents": [
        "63f99f4a4e05353de2e8ba3d7bd4d882d716167a"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 01:24:17 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 10:39:55 2012 +0200"
      },
      "message": "linker: improve loadable segment protection.\n\nUse the functions in linker_phdr.c to load the PT_LOAD segments\nin memory, and toggle their mapping\u0027s writable protection bit\nas needed. In particular:\n\n  - when loading a library, load the segments then unprotected\n    them to allow relocations to work.\n\n  - when relocating the linker of the executable, unprotect\n    the segments loaded by the kernel to make relocations work\n    too.\n\n  - after all relocations are done, re-protect the segments,\n    and apply GNU RELRO protection if needed.\n\n  - just before calling the destructors, undo the GNU RELRO\n    protection.\n\nChange-Id: I50e709f03958204b8d6140c0f51ebe24fe089a1b\n"
    },
    {
      "commit": "63f99f4a4e05353de2e8ba3d7bd4d882d716167a",
      "tree": "a7a3af579dc0f14191c014543d889237e69916f8",
      "parents": [
        "8941cfa17a60133f3896b84f6517aa849bafb050"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 00:08:39 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 10:39:55 2012 +0200"
      },
      "message": "linker: simplify code for dynamic and ARM exidx sections.\n\nThis moves the code that determines where the .dynamic and .ARM.exidx\nsections are to a single place in soinfo_link_image().\n\nChange-Id: I98adcb440577bed86442349f03f3c629c945efec\n"
    },
    {
      "commit": "bea23e59f7145537fd4e600ae67fa92a798872cf",
      "tree": "b3e7eb1fccbb6a8e0966eed9ec8e62d245f55980",
      "parents": [
        "23363ed7503c25ef4024ce0d517f7415c096645d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 18 23:38:46 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: rename load_offset to load_bias.\n\nThis patch changes the definition of the \u0027load_offset\u0027 field\nin struct soinfo. The field is renamed because it is not the\nbasic load bias to add to every p_vaddr value read from the ELF\nfile to get the corresponding memory address.\n\nThis also slightly simplifies the relocation code.\n\n+ Fix for proper load_bias computation for relocatable executables.\n\nChange-Id: I72502c75a70751cba324deee7d313ae61f96609e\n"
    },
    {
      "commit": "23363ed7503c25ef4024ce0d517f7415c096645d",
      "tree": "2892f3246f211cf3c5a4d17ecec3194d00294bda",
      "parents": [
        "a6545f46784e67edd5dbcd2bb714c60549f9192d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 18 18:13:49 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: avoid mapping the whole library before load.\n\nThis patch changes the load_library() function in the\ndynamic linker to avoid reserving a huge read-only\naddress-space range just to read the ELF header and\nprogram header (which are typically very small and easily\nfit in the first page).\n\nInstead, we use the functions in linker_phdr.c to only\nload the data that we need in a temporary mmap-allocated\npage of memory, which we release when the function exits.\n\nThis avoids issues when loading very large libraries, or\nsimply debug versions that only need to load a tiny percentage\nof their overall file content in RAM.\n\nChange-Id: Id3a189fad2119a870a1b3d43dd81380c54ea6044\n"
    },
    {
      "commit": "a6545f46784e67edd5dbcd2bb714c60549f9192d",
      "tree": "c085649fb2772c21fa01b0dd750038cb41251073",
      "parents": [
        "c1bd559d5b0fdcc25db2b6ae2705914103b24699"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 18 11:15:54 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: Add PAGE_START/OFFSET/END convenience macros\n\nThis patch adds a few macros related to memory pages to help\nclarify some of the code in linker.c\n\nChange-Id: I36c727132d257b1497398dd0a9e8a5a4505467ca\n"
    },
    {
      "commit": "20bc061dc7a03249c90f8765ae757395587ce4f1",
      "tree": "41bf1f05ba88f835bd7a47843c4757ed356e4b0c",
      "parents": [
        "63d0ceec75927155947c07bc45cb9fed5e527922"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jun 22 14:52:52 2012 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jun 22 14:56:01 2012 +0400"
      },
      "message": "Add module base to main executable\u0027s ARM_exidx.\n\nBUG:6697872\n\nChange-Id: I448f4b86397307086231776da38a7af334a75fe5\n"
    },
    {
      "commit": "16084168111cd7d2ac8a6b92e6fa6df5696928a5",
      "tree": "2fdb97283d519d1a54a79962509b54af73048130",
      "parents": [
        "ca622f57480f996f1d7b8d8660fba9e6d717db2d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 12 16:25:37 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 13 22:47:20 2012 +0200"
      },
      "message": "linker: small code-cleanup\n\nThis patch adds to make the linker a little bit easier to understand\nby making all functions that acts on a sofino object with a soinfo_\nprefix.\n\nThis is to more easily distinguish functions that operate on global\nstate, and those that operate on individual libraries.\n\nThis should be purely stylistic, i.e. no feature/behaviour change.\n\nChange-Id: Ie510d13d743aa4317644caefa9910b8af7e84f44\n"
    },
    {
      "commit": "f186a1819a4489c8d73485042670a3002742b683",
      "tree": "aaefa1f83fcb5357ab0d4535a2400a3f27fb1cdb",
      "parents": [
        "31431f454a9d3d3dde46de0e3c39cc409a39c436"
      ],
      "author": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Thu May 31 20:20:36 2012 +0900"
      },
      "committer": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Mon Jun 04 07:44:10 2012 -0700"
      },
      "message": "Support non-zero p_vaddr in first PT_LOAD segment\n\nBefore changing mmap() permission to PROT_NONE in alloc_mem_region(),\nsuch libraries once worked with a bug that uses mmap\u0027ed region outside of\nmemory region allocated by alloc_mem_region().  This possibly incurs\nSIGSEGV because it can overwrite memory region of previously loaded\nlibrary, but it sometimes worked, depending on loading order.\n\nAfter PROT_NONE, this caused SIGSEGV earlier during calculation of\nsi-\u003ephdr in load_library(), but this was fixed by:\n\n    75917c84d16c35b8fceff6977fa717a3de9ef65d  Use mmap to read an ...\n\nNow the behaviour is the same as before applying PROT_NONE in\nalloc_mem_region().\n\nThis CL fixed the original issue, supporting shared libraries that have\nnon-zero p_vaddr in first (\u003d with lowest p_vaddr) PT_LOAD segment.\n\nBug: 6561258\nChange-Id: Ib6176dd3e44c4d99a340eb1cbd16fb037586b0bc\n"
    },
    {
      "commit": "75917c84d16c35b8fceff6977fa717a3de9ef65d",
      "tree": "a599da04e2e062dc747d27eed333b774b3df9cbb",
      "parents": [
        "15ed08d065e865c7a1a2937e429a1fe80a870461"
      ],
      "author": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Fri May 25 22:36:00 2012 +0900"
      },
      "committer": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Sat May 26 06:15:50 2012 +0900"
      },
      "message": "Use mmap to read an initial ELF header of library\n\nAlso, fixes SIGSEV during calculation of si-\u003ephdr in load_library(),\nwhich is caused by accessing PHDR area, which is not guaranteed to be\nloaded.\n\nNote that this usually does not happen because program header area is\ncovered by immediately following PT_LOAD entry.  But it does not hold\nalways.\n\nBug: 6561258\nChange-Id: Ie376253c773b5420279ca89044e81b1aad5a5736\n"
    },
    {
      "commit": "94179a509ee3f6ba7b4ba45fb90477b01049dab8",
      "tree": "c26445b77fe8d4b289208db58f754deb4c2d16cf",
      "parents": [
        "baeacba04dc09ab269cd75806fdefab7f4a6505e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 23 16:50:00 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 23 16:50:34 2012 -0700"
      },
      "message": "linker: remove STB_LOCAL hack\n\nThe ARM static linker wasn\u0027t properly handling __exidx_start\nand __exidx_end symbols. Now that the static linker has been fixed,\nwe don\u0027t need the dynamic linker to work around this problem.\n\nChange-Id: I041b94903609fafab33663a7d441a5e70b7ffcdd\n"
    },
    {
      "commit": "1a78fbb5c8228e4aea2a516818828b76044310f2",
      "tree": "4de785711dbfa8923d721f9180473328b6228a5c",
      "parents": [
        "d5099016f70b5acbfeb969787687099df703a4f4"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Mar 22 18:01:53 2012 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Apr 13 00:08:11 2012 +0400"
      },
      "message": "Initialize TLS before any application code is run.\n\nSince e19d702b8e33, dlsym and friends use recursive mutexes that\nrequire the current thread id, which is not available before the libc\nconstructor. This prevents us from using dlsym() in .preinit_array.\n\nThis change moves TLS initialization from libc constructor to the earliest\npossible point - immediately after linker itself is relocated. As a result,\npthread_internal_t for the initial thread is available from the start.\n\nAs a bonus, values stored in TLS in .preinit_array are not lost when libc is\ninitialized.\n\nChange-Id: Iee5a710ee000173bff63e924adeb4a4c600c1e2d\n"
    },
    {
      "commit": "7f03d2356f1380637d5a38fca20d2cd9b3f6c900",
      "tree": "80fffbb1d4b4d8c3c85610fd312ccc32a9d15dc0",
      "parents": [
        "8777e2f54e3743b3f1361f30bed8932b17959644"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 10 13:42:06 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 10 13:49:35 2012 -0700"
      },
      "message": "Revert \"linker: remove STB_LOCAL hack\"\n\nThis reverts commit 61ff83475c6f3a3bb05a01ac89d668a331bfe9e9.\n\nThis code is harmless, and only applies to the linker, so\nthere\u0027s no harm in keeping it in the tree a little bit longer.\nLet\u0027s roll this back while we try to figure out the root cause\nof bug 6314858.\n\nBug: 6314858\nChange-Id: I9f5ed81d23a7abe273baf792aa8a0a2839ef094c\n"
    },
    {
      "commit": "61ff83475c6f3a3bb05a01ac89d668a331bfe9e9",
      "tree": "bcd5da23d32a73c9fe88b054e14cbd597db19690",
      "parents": [
        "048822d6afa12683e693a459e6efa558a1f39d33"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 09 12:50:17 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 09 12:50:17 2012 -0700"
      },
      "message": "linker: remove STB_LOCAL hack\n\nThe ARM static linker wasn\u0027t properly handling __exidx_start\nand __exidx_end symbols. Now that the static linker has been fixed,\nwe don\u0027t need the dynamic linker to work around this problem.\n\nChange-Id: Ic567122b6c7746cc016795e2befba2c6bd7c0478\n"
    },
    {
      "commit": "8c4f3ce8d084e3949d77ad8743593b5c83c3d41c",
      "tree": "4061fa7982521c070a1a9bc688ddfc279e722c08",
      "parents": [
        "3a7ea52f17b68f62fa088d57f96ff24a76f50ea2"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Apr 04 12:43:32 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Apr 04 12:43:32 2012 -0700"
      },
      "message": "linker: surround \"debug_verbosity\" by \"#if LINKER_DEBUG\"\n\nAvoid executing useless code when we\u0027re not compiled\nwith debugging support.\n\nChange-Id: Iea1821b241acacdf65d1a91d743356058dfef273\n"
    },
    {
      "commit": "aac0dc97a9ad91231fa89878e745548d693366c1",
      "tree": "f6e117bc03dc1662455d4cfc8c62245e697acbb8",
      "parents": [
        "0814eea3ec6767e2957da9b32261ef52ec881fee",
        "d73b5cafa0ef381f7c63a75e968fb7eec8e9f555"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Mar 20 10:52:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 20 10:52:42 2012 -0700"
      },
      "message": "Merge \"linker: fix off-by-one error in GNU_RELRO handling\""
    },
    {
      "commit": "d73b5cafa0ef381f7c63a75e968fb7eec8e9f555",
      "tree": "d28334136a7a2580531c85ddc4ddaef7006675b3",
      "parents": [
        "adb6989786dcc7248d51a3a5a76221b93951f84a"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 16 11:38:58 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Mar 20 09:24:58 2012 -0700"
      },
      "message": "linker: fix off-by-one error in GNU_RELRO handling\n\nFix a bug where the GNU_RELRO end address could be exactly\nthe end of the loadable segment.\n\nChange-Id: If6c43acabc06e9aff9217c0f6016e158b28bb41f\n"
    },
    {
      "commit": "6625986f3a5c7989b45022413c851f611783f361",
      "tree": "de566f83421e8b4c31d7bab4fdbbc0e0ae51fe79",
      "parents": [
        "adb6989786dcc7248d51a3a5a76221b93951f84a"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 16 13:06:12 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 16 13:06:12 2012 -0700"
      },
      "message": "linker: initially reserved memory as PROT_NONE\n\nWhen the dynamic linker loads a shared library into memory, it\ninitially allocates a chunk of memory. The memory is then carved\ninto smaller chunks for each LOAD region, and appropriate memory\nprotections applied.\n\nModify the initial memory allocation so that the pages are mapped\nas PROT_NONE, rather than PROT_READ / PROT_EXEC. This ensures that\ngaps between LOAD regions are not inadvertantly readable / executable.\n\n(Long term, we should munmap() these gaps entirely)\n\nChange-Id: If128a203ccc6fe12dcbbd2bfe0cf13a2045675af\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": "f5d1693e3ca8cfd089e6259f320044833eae2991",
      "tree": "ff93255f90ae3cfdca7256ebb32e4f1da0d0eac2",
      "parents": [
        "632c07c09297324565fd7adeda7322f1fafb3a1a"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Jan 30 15:39:57 2012 -0800"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Jan 30 15:39:57 2012 -0800"
      },
      "message": "Fix recursive ELF constructor check\n\nThe flag to avoid calling ELF constructors recursively (in the case\nof recursive .so dependencies) was being set after the dangerous\nrecursive constructor call had already been made.\n\nThis fixes the libc\u0027s debug malloc implementation.\n\nChange-Id: I5e601f0ea19ab1df81b8b1ad4df25c3eab0ccda4\n"
    },
    {
      "commit": "f20d59e69137336a2555844ce9f74ece96ad60ea",
      "tree": "b2327c6280733482bb036a8a5c47256bba47eb8e",
      "parents": [
        "c3650d6a4be812989bcc6b4938af6da644168a09",
        "c83c1da54831ef1c9ff59cf9df8d5c0173893ee5"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 20 17:23:52 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 20 17:23:52 2012 -0800"
      },
      "message": "am c83c1da5: am cee8425f: Merge \"Move variable declaration on its own line\"\n\n* commit \u0027c83c1da54831ef1c9ff59cf9df8d5c0173893ee5\u0027:\n  Move variable declaration on its own line\n"
    },
    {
      "commit": "c3650d6a4be812989bcc6b4938af6da644168a09",
      "tree": "c1b83b447f0daf79de0c1d804658d939e2060bf4",
      "parents": [
        "73fa5fdaf9ec27741a17b0b793ff6890e6dcecd5",
        "5b44655f22dd05c7cd8afcd218102616a6f5f4da"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 20 17:23:51 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 20 17:23:51 2012 -0800"
      },
      "message": "am 5b44655f: am 7e6a5773: Merge \"Use the AT_SECURE auxv flag to determine whether to enable secure mode.\"\n\n* commit \u00275b44655f22dd05c7cd8afcd218102616a6f5f4da\u0027:\n  Use the AT_SECURE auxv flag to determine whether to enable secure mode.\n"
    },
    {
      "commit": "bb44055d0a3515410f45417d5b0e047cc60f0dc6",
      "tree": "7f90e07be004732ed16c1ea70c6d637d5f2a808c",
      "parents": [
        "7e6a5773133e4b65d678535418b1f5d594859da2"
      ],
      "author": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Fri Jan 20 10:59:15 2012 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 20 10:59:15 2012 -0800"
      },
      "message": "Move variable declaration on its own line\n\nChange-Id: Ied54ffabccdc867ea4e124a0f0324a217270d6e7\n"
    },
    {
      "commit": "861b42a2d83f72f11b4271b5b8431595a097c7c2",
      "tree": "cde9712f4d6e19dcc2a81f140845567bdba3b53d",
      "parents": [
        "eae1f1fba33cb105302227b044a14e5abcbe55e7"
      ],
      "author": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Fri Jan 13 07:48:11 2012 -0500"
      },
      "committer": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Fri Jan 20 13:35:57 2012 -0500"
      },
      "message": "Use the AT_SECURE auxv flag to determine whether to enable secure mode.\n\nThe Linux kernel provides an AT_SECURE auxv flag to inform userspace\nwhether or not a security transition has occurred.  This is more reliable\nthan directly checking the uid/gid against the euid/egid, because it covers\nnot only setuid/setgid but also file capabilities, SELinux, and AppArmor\nsecurity transitions.  It is also a more efficient test since it does\nnot require any additional system calls.\n\nChange-Id: I9752a4f6da452273258d2876d13b05e402fb0409\n"
    },
    {
      "commit": "e83c56dfbb6a9a61f0f18031620322af97e80162",
      "tree": "4d173357ad7cffa5e8e01066653afde7ed2473d5",
      "parents": [
        "334379dadaf481785909367cfc26600514b6119c"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Dec 21 13:03:54 2011 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jan 10 13:30:41 2012 +0400"
      },
      "message": "Execute .preinit_array before any shared object initialization functions.\n\nThis change makes linker handling of .preinit_array compliant with the\nSystem V ABI:\n\n\"These [pre-initialization] functions are executed after the dynamic linker has\nbuilt the process image and performed relocations but before any shared object\ninitialization functions.\"\nhttp://www.sco.com/developers/gabi/latest/ch5.dynamic.html#init_fini\n\nChange-Id: Iebfee22bb1ebe1d7c7e69cb4686e4ebae0dfc4bb\n"
    },
    {
      "commit": "253b7631606e47de720f38082394a5791fe4bf0d",
      "tree": "fd5a8b1aecf4768de9920d8285e7ef9e5d5f5e98",
      "parents": [
        "bec5dec947b1ad097c200888365a3ec61f9e7a28"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Dec 05 16:09:30 2011 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Dec 05 16:09:30 2011 -0800"
      },
      "message": "get rid of unused \"main\" function.\n\nconfuses gdb.\n\nChange-Id: I1c64357ce122fe5a2564ee96bb4caa32b733f6ea\n"
    },
    {
      "commit": "0e0bd586319b25e6e8e797b426a0adcce7612577",
      "tree": "19bb88e8516738784a57ee744c0041834f79c86b",
      "parents": [
        "e796d39d80d97ebe0e36476dff3189d155a99c98",
        "1ad08626a143dc684e92f56754c7176cc4914ce8"
      ],
      "author": {
        "name": "Zhenghua Wang",
        "email": "zhenghua.wang@intel.com",
        "time": "Wed Nov 30 10:50:57 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 30 10:50:57 2011 -0800"
      },
      "message": "am 1ad08626: am 897815a1: bionic: add machine type check\n\n* commit \u00271ad08626a143dc684e92f56754c7176cc4914ce8\u0027:\n  bionic: add machine type check\n"
    },
    {
      "commit": "897815a1feff230be3ea42655a77dcbb9a8dcca9",
      "tree": "e2cbe576afb2d97fbecaa59e1b4f8229d6aca00b",
      "parents": [
        "faa7c1d29f9ed0b3eb252bb0bd43e7596eed5d9c"
      ],
      "author": {
        "name": "Zhenghua Wang",
        "email": "zhenghua.wang@intel.com",
        "time": "Wed Oct 19 00:29:14 2011 +0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Nov 29 17:01:08 2011 -0800"
      },
      "message": "bionic: add machine type check\n\nandroid linker doesn\u0027t check machine type, it may load some\nlibraries which it doesn\u0027t support sometimes.\n\nAuthor: Zhenghua Wang \u003czhenghua.wang@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "7e2daefe6cec40e143f519c46aec877ee053b407",
      "tree": "5d7ddec5e8b274d86073673d5609fdc33b2e81fb",
      "parents": [
        "b38522983712432ba143c046343ba4fa01baf7c8",
        "468319ce4f3f7383d788b76c09cda2a405311f36"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Nov 16 10:43:56 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 16 10:43:56 2011 -0800"
      },
      "message": "Merge \"Make the linker relocatable.\""
    },
    {
      "commit": "8180b08fb2f27052f9df2ae4787bb5bf409f13e0",
      "tree": "edcb7742bc8dab8519c535849f21155799d78ef2",
      "parents": [
        "4b469eae40368913b2841b390dada6c58296c602"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 15 17:17:28 2011 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 15 17:17:28 2011 +0100"
      },
      "message": "linker: Fix the computation of si-\u003ebase\n\nThe computation of si-\u003ebase assumed that the first entry in the\nprogram header table is a PT_PHDR. This results in the dynamic\nlinker crashing with a SIGSEGV/MAPERR when trying to load some\nof the NDK unit test programs, which happen to have an EXIDX\nheader first, followed byu a PHDR one.\n\nThis patch fixes the computation by parsing the program header\ntable, looking explicitely for the PHDR entry. This fixes the\nload of the NDK unit test programs, and doesn\u0027t affect system\nlibraries.\n\nChange-Id: Id18ea6037dbe950b5abbbce816c2960321f0b81d\n"
    },
    {
      "commit": "468319ce4f3f7383d788b76c09cda2a405311f36",
      "tree": "75be29e8c9b3f67fcfe51c8ec84fe1520282f8a9",
      "parents": [
        "0aa8289c6fddda6502fa97c8789341f1462c4224"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Nov 11 15:53:17 2011 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Nov 11 18:01:53 2011 -0800"
      },
      "message": "Make the linker relocatable.\n\nPreviously, the linker always loaded itself into the same\nlocation in memory, which inhibited the effectiveness of Android\u0027s\nASLR implementation. Modify the linker code so it can be relocatable\nand link itself at runtime.\n\nChange-Id: Ia80273d7a00ff648b4da545f4b69debee6343968\n"
    },
    {
      "commit": "8e8a7b1f0fb9daf8d4434e18a9fff5c28f849cb8",
      "tree": "94d387ed8c58504162550b1b2ae8c93f3dfffa30",
      "parents": [
        "994e9a5ed1c4e9f23a8bed79caea684eaa270027"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Nov 03 09:25:06 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Nov 03 09:25:06 2011 -0700"
      },
      "message": "Revert \"Make the linker relocatable.\"\n\nThis reverts commit 994e9a5ed1c4e9f23a8bed79caea684eaa270027.\n\nBroke x86 build.\n"
    },
    {
      "commit": "994e9a5ed1c4e9f23a8bed79caea684eaa270027",
      "tree": "0c860675ec867f02616a74cac6d2adfc58b07d10",
      "parents": [
        "29992cf9787496216440ed9c6c60dc40377aebe1"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Nov 01 10:51:22 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Nov 02 16:20:06 2011 -0700"
      },
      "message": "Make the linker relocatable.\n\nPreviously, the linker always loaded itself into the same\nlocation in memory, which inhibited the effectiveness of Android\u0027s\nASLR implementation. Modify the linker code so it can be relocatable\nand link itself at runtime.\n\nChange-Id: I90d064743abdd29450ac0482ed28752b2196286c\n"
    },
    {
      "commit": "d9ad62343c2db6b66a5fa597c9b20a6faabd7a9a",
      "tree": "32c3b060bfdc7f792ddb0d0cf95007dc2e809137",
      "parents": [
        "b0641d4a446fa98c72fd6252e5a5ca7e44c41f1f"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Oct 20 14:57:56 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Oct 22 13:19:23 2011 -0700"
      },
      "message": "Add linker support for PIE\n\nModify the dynamic linker so that executables can be loaded\nat locations other than 0x00000000.\n\nModify crtbegin* so that non-PIC compilant \"thumb interwork\nveneers\" are not created by the linker.\n\nBug: 5323301\nChange-Id: Iece0272e2b708c79034f302c20160e1fe9029588\n"
    },
    {
      "commit": "bda5da074eab4bdf374e1f4a19d480c62c72f5ff",
      "tree": "87a4c2fd35e6b071476d4a5fd02aca7c61c6e3f9",
      "parents": [
        "00964912745f0bb7e081f84ddcc74940f973149f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 27 22:30:19 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 28 12:17:34 2011 -0700"
      },
      "message": "fix prototype of dladdr\n\nthis breaks C++ source code in particular.\n\nChange-Id: Ie06b5d31d23b5455e6950c470adc64dd5e7784df\n"
    },
    {
      "commit": "96e5faccdc5616bb6d4a55d50a0e6148f99d943b",
      "tree": "c7e923bc66241f56fb6b83899f8362bbcb3cf562",
      "parents": [
        "09b36dc7a939c68b519fc0f46d6dad25c5f7637c",
        "91966c30efbdc7feecd6c45a46ab488e715c0a35"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Tue Aug 30 09:50:54 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 30 09:50:54 2011 -0700"
      },
      "message": "am 91966c30: am 0acdbe08: am 89ea107d: Merge \"linker: allow debugging of constructors\"\n\n* commit \u002791966c30efbdc7feecd6c45a46ab488e715c0a35\u0027:\n  linker: allow debugging of constructors\n"
    },
    {
      "commit": "91966c30efbdc7feecd6c45a46ab488e715c0a35",
      "tree": "6cb4c9461f086e40650f43b6b9af670294e1457e",
      "parents": [
        "35aebd36c771f32656996b02595fad8953f29916",
        "0acdbe0892105d01a38de9baf4e34eef22b8259c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Mon Aug 29 18:01:05 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 29 18:01:05 2011 -0700"
      },
      "message": "am 0acdbe08: am 89ea107d: Merge \"linker: allow debugging of constructors\"\n\n* commit \u00270acdbe0892105d01a38de9baf4e34eef22b8259c\u0027:\n  linker: allow debugging of constructors\n"
    },
    {
      "commit": "e5ea45547e131ae842b7c79cd45b164470137367",
      "tree": "02b0023da33cca526fb7b628944eb8e0fdc242b5",
      "parents": [
        "c57fd963817afa8894af49d6c98a80d8f9100937"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Sat Aug 27 10:21:01 2011 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Sat Aug 27 10:21:01 2011 +0200"
      },
      "message": "linker: allow debugging of constructors\n\nThis patch allows the debugging of constructors in shared\nlibraries and executables. It does so by ensuring that the\ncorresponding binary is visible to gdb before running the\nconstructors.\n\nChange-Id: I0a3df726a04ad109944c834dcbba672b85d3991e\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": "1af88c97432c88ec5b39d155e8c296d2a6eb1225",
      "tree": "1d9be3b5daa03386ebc1b93af075600ec1ea1f28",
      "parents": [
        "4b3b89ec763899390b15461dd6617bb4ed6fe846",
        "d004dc9957cd8944d3db8ed92544c8ee65b117ca"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Mon May 02 12:34:57 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 02 12:34:57 2011 -0700"
      },
      "message": "am d004dc99: Merge \"Use MAP_FIXED when allocating prelinked shared library regions\"\n\n* commit \u0027d004dc9957cd8944d3db8ed92544c8ee65b117ca\u0027:\n  Use MAP_FIXED when allocating prelinked shared library regions\n"
    },
    {
      "commit": "db4bce05493d09a20f1ebc0ab68c82e906327afd",
      "tree": "9aae682c98e2c49e6480b9329b16d5153c030334",
      "parents": [
        "fed58049d50083e4c960d89f4bbd516a181c2d18"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Thu Mar 10 10:48:14 2011 -0800"
      },
      "committer": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Thu Mar 10 10:48:14 2011 -0800"
      },
      "message": "Use MAP_FIXED when allocating prelinked shared library regions\n\nPrelinked libraries must be mapped to a fixed address. MAP_FIXED is ignored\nfor non-prelinked libraries (si-\u003ebase\u003d\u003d0)\n\nSigned-off-by: Raghu Gandham \u003craghu@mips.com\u003e\n"
    },
    {
      "commit": "72f9a5c374bf559e9c69a62c1d95304f913ef6b2",
      "tree": "9f5e358d45bd2e60589960f031afdaf715a68556",
      "parents": [
        "9c2e97e9d3510f49c6f2697ef47b85f92df524dd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 10 17:02:21 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 10 17:02:23 2011 -0800"
      },
      "message": "Increase SO_MAX to accomodate valgrind\n\nsystem_server loads up 87 shared libraries upon start. Running under\nvalgrind pushes this just over the edge of 96. Increase SO_MAX to 128 to\ngive us some more headroom.\n\nChange-Id: Iadceb14ab6d9621bdccd292570d50867828057d9\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": "fedbcde6ef552e84bf7ce7598bca7dddf1722d6a",
      "tree": "5e8eb35552984b9eab610fc717ae4638966cf90e",
      "parents": [
        "cb99ab98c99291a6c90043009ab8d64ec8058f9d"
      ],
      "author": {
        "name": "Brian Swetland",
        "email": "swetland@google.com",
        "time": "Sun Sep 19 03:39:13 2010 -0700"
      },
      "committer": {
        "name": "Brian Swetland",
        "email": "swetland@google.com",
        "time": "Sun Sep 19 03:39:13 2010 -0700"
      },
      "message": "add /vendor support\n\n- add /vendor/lib to front of default library search path\n- remove long-obsolete /lib from default library search path\n\nChange-Id: I7d33bf899be018e7cc4c213d5790bbd991023a62\n"
    },
    {
      "commit": "a716190241da07f42cf874b04bf044261f36381c",
      "tree": "6fb82682708512110ac0118603056ba94cc1c351",
      "parents": [
        "52e7d3d91ab6a5bab77c5dfb1ed47381fd52f9ba"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Aug 17 15:56:40 2010 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Aug 17 15:57:55 2010 -0700"
      },
      "message": "linker: fix overwriting the real linker error string\n\nChange-Id: Ia9165fd9aa1951b2bb81d0ac8f5bb3057aded8bd\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "6774809b6249d9d4efd982b6e3ca377c84482d9a",
      "tree": "2604b1ff619cc69aea02ac37c39c61d9b0c8c7c2",
      "parents": [
        "9d1f5afc34efb8c10672f765704941036fd40da8"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 21 16:18:21 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 23 12:16:15 2010 -0700"
      },
      "message": "linker: Support dlopen(NULL, ...) properly.\n\nChange-Id: Icba37823cb350c34848cc466d144c3a0af87c94c\n"
    },
    {
      "commit": "f4394458301909a83b7ee7f3b436c038b7235ea8",
      "tree": "e2647ebf9aa7491c5cb3a96fb00af61ab89f1eae",
      "parents": [
        "bb7928ccdae0cc5766f290e18ab14b07d80c6912"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed May 12 10:05:59 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed May 12 10:05:59 2010 -0700"
      },
      "message": "fix build\n\nChange-Id: I243c98e20a250e0d40d481f16af481ff070219fd\n"
    },
    {
      "commit": "bb7928ccdae0cc5766f290e18ab14b07d80c6912",
      "tree": "76468dcde3da9d42bdc3a2146463583e65593205",
      "parents": [
        "f450fa5f991af3c0814f96265cb3b2aafdce2309",
        "c3581dc78a51180d3550d0d04596657cb2db852c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 12 09:22:50 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 12 09:22:50 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: Iecfd2bd3069f70bbe508042cc249fcf7ff24800d\n"
    },
    {
      "commit": "4fd42c1dc002fa19349fa0d4ef97757eb1815032",
      "tree": "76b67f6f6f087f8aced1da660754f7f3086c184f",
      "parents": [
        "d791da79432064bc954fedf8d4e4394aaafefe75"
      ],
      "author": {
        "name": "Matt Fischer",
        "email": "matt.fischer@garmin.com",
        "time": "Thu Dec 31 12:09:10 2009 -0600"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon May 10 15:09:19 2010 -0700"
      },
      "message": "Added support for LD_PRELOAD\n\nThe LD_PRELOAD environment variable allows the user to specify a list of\nlibraries which should be unconditionally loaded before any others.  This\nmakes possible some useful tricks, such as library interposers.\n\nChange-Id: I433d775ab08ef63a5fbe7b21f87a5642954fc32f\n"
    },
    {
      "commit": "5ef5272be985dfdeafa86077c306f6b64d334240",
      "tree": "bad11901e83b227c7bac5e773ad6e06cf4eda089",
      "parents": [
        "95faecefdea0f55edafdba09052a904df7cd2405",
        "1698d9ebfc7e27271852a1fdf305a2ac37b3ebe4"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Apr 21 09:10:08 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Apr 21 09:10:08 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I518bb4ae9d7269957365561d4d609f22cde519db\n"
    },
    {
      "commit": "1698d9ebfc7e27271852a1fdf305a2ac37b3ebe4",
      "tree": "0affbb40a92f4391db962805610d78e71ac5f043",
      "parents": [
        "350bb359fa5e31e3dfae8be6b1ce7ee3495f0da7"
      ],
      "author": {
        "name": "Matt Fischer",
        "email": "matt.fischer@garmin.com",
        "time": "Thu Dec 31 12:17:56 2009 -0600"
      },
      "committer": {
        "name": "Garmin Android technology group",
        "email": "android@garmin.com",
        "time": "Thu Apr 08 10:14:47 2010 -0500"
      },
      "message": "Fixed support for RTLD_NEXT in dlsym()\n\nThe previous implementation of this flag was broken--it behaved identically\nto RTLD_DEFAULT.  This adds a proper implementation, which examines the address\nof the calling function, and uses it to determine which library to use to begin\nthe symbol search process.\n\nChange-Id: I2ad2b46363f68932af63a3828a22f9c7987eea67\n"
    },
    {
      "commit": "d04672513351af4eb302692e0f39fd5bd17191cb",
      "tree": "0ea1cef08bcfedafa705e3374863d51ec69080e1",
      "parents": [
        "5ffedb22c856ae5731324b43832ab3f5309683f2",
        "4ad72f89b12fe0157074a253190f6aa2cbfe15ac"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 31 14:19:51 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 31 14:19:51 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I483fedf77d978b1c6e52d73eebc14f011bb9f809\n"
    },
    {
      "commit": "3cab22c8cf0dcf30718a1452ce9cbb637876cea3",
      "tree": "119a7ffa38d392147813a75a6af3247dd688917a",
      "parents": [
        "58f0326362ca0f5fc17cbc19fd9217cabf0d93dd"
      ],
      "author": {
        "name": "Min-su, Kim",
        "email": "min-su.kim@windriver.com",
        "time": "Tue Jan 19 10:05:33 2010 +0900"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "brucex.j.beare@intel.com",
        "time": "Mon Mar 29 15:43:09 2010 -0700"
      },
      "message": "linker: fix the undefined weak symbols issue\n"
    },
    {
      "commit": "377d4c979dee3dcb5929e8f7a68a53c2407259ab",
      "tree": "1783fe0272f1437faabfe8365e615696eb8d374c",
      "parents": [
        "709a898de82128c065381e258e8e71f0a55df976",
        "1825fb5d5f214849e39d95660795a0d3633f8eeb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 22 15:55:09 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 22 15:55:09 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I70266ee8c520b216773f267e46c8273d2334c31d\n"
    },
    {
      "commit": "e2a8b1fd19fb3a8ead2ba28ddba27be19fa978b5",
      "tree": "e5448ec45187a37dbade76fcf10115f91135a8bd",
      "parents": [
        "ede2e75f4942293342dfb8dfd4751369600ed8f1"
      ],
      "author": {
        "name": "Matt Fischer",
        "email": "matt.fischer@garmin.com",
        "time": "Thu Dec 31 12:17:40 2009 -0600"
      },
      "committer": {
        "name": "Garmin Android technology group",
        "email": "android@garmin.com",
        "time": "Wed Mar 17 16:11:37 2010 -0500"
      },
      "message": "Added support for dladdr()\n\ndladdr() is a GNU extension function, which allows the caller to retrieve\nsymbol information for a specified memory address.  It is useful for things\nlike generating backtrace information at runtime.\n\nChange-Id: I3a1def1a6c9c666d93e1e97b7d260dfa5b9b79a9\n"
    },
    {
      "commit": "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": "e100f52f4ad1b70762bbcc5ad9828bd258917ee5",
      "tree": "084f45cde2c5f3650370130e37a063af2ed1b968",
      "parents": [
        "16f7d16f9f0273bed58f5e8c74eb0ee11eaa8037"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Feb 10 15:19:37 2010 -0800"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Feb 10 19:14:35 2010 -0800"
      },
      "message": "bionic/linker: rename ba_prelink to ba_nonprelink\n\n-- fixes b/2432550\n-- ba_prelink is used to manage non-prelinked libraries, hence ba_nonprelink is\n   a more appropriate name for it\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "a3de55c83185ba3d1355f20b48ef9ec3fc4c281d",
      "tree": "646efa88e98233342cc102298b8dcb64606c569d",
      "parents": [
        "157cdf42d7e2cded9a4461fd105b98b2db1a13ac",
        "fe62de1ad036a1417df44b7b1a7c65cc79dc7091"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 02 11:17:29 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 02 11:17:29 2009 -0800"
      },
      "message": "am fe62de1a: Add support for R_ARM_REL32 to the dynamic linker.\n\nMerge commit \u0027fe62de1ad036a1417df44b7b1a7c65cc79dc7091\u0027 into eclair-plus-aosp\n\n* commit \u0027fe62de1ad036a1417df44b7b1a7c65cc79dc7091\u0027:\n  Add support for R_ARM_REL32 to the dynamic linker.\n"
    },
    {
      "commit": "fe62de1ad036a1417df44b7b1a7c65cc79dc7091",
      "tree": "0c55fda658ee39f7f64ead6ec98a690379a8fe42",
      "parents": [
        "cd5df2d92c3adeac41e27aab5ba0f999c753c4c4"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 02 10:54:53 2009 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 02 10:54:53 2009 -0800"
      },
      "message": "Add support for R_ARM_REL32 to the dynamic linker.\n\nMerged from eclair-mr2\n"
    },
    {
      "commit": "83d3d7491a2d3870efd8d5be9281ee942f5fad07",
      "tree": "9a82b536c53a2d45e6f23aa827b3bd1822cc502b",
      "parents": [
        "0493b61c1a23cbcf0edb4667ff84ab0152327cb2",
        "ebf3ea006e5367fff93d2491eec24c4b1a633805"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 17 16:16:52 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 17 16:16:52 2009 -0800"
      },
      "message": "am ebf3ea00: am 34ea5117: Add support for R_ARM_REL32 to the dynamic linker.\n\nMerge commit \u0027ebf3ea006e5367fff93d2491eec24c4b1a633805\u0027\n\n* commit \u0027ebf3ea006e5367fff93d2491eec24c4b1a633805\u0027:\n  Add support for R_ARM_REL32 to the dynamic linker.\n"
    },
    {
      "commit": "ebf3ea006e5367fff93d2491eec24c4b1a633805",
      "tree": "e7e84eed54db64bd5a48b153f0c5174583782230",
      "parents": [
        "a7f8f312e0791509b2382f90861fe9f373bd4f0b",
        "34ea5117dbeba41ae5dfdfb2c2ec8cae23388b66"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 17 16:06:26 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 17 16:06:26 2009 -0800"
      },
      "message": "am 34ea5117: Add support for R_ARM_REL32 to the dynamic linker.\n\nMerge commit \u002734ea5117dbeba41ae5dfdfb2c2ec8cae23388b66\u0027 into eclair-mr2-plus-aosp\n\n* commit \u002734ea5117dbeba41ae5dfdfb2c2ec8cae23388b66\u0027:\n  Add support for R_ARM_REL32 to the dynamic linker.\n"
    },
    {
      "commit": "34ea5117dbeba41ae5dfdfb2c2ec8cae23388b66",
      "tree": "aea1d56c13025d3961830eb6fb698d1419f3e06f",
      "parents": [
        "e8870ffc965d553a885f63b26e724da279728b72"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 17 14:56:26 2009 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 17 14:56:26 2009 -0800"
      },
      "message": "Add support for R_ARM_REL32 to the dynamic linker.\n"
    },
    {
      "commit": "b152dde4cafffb3b37ca60c589f71110ca988c79",
      "tree": "7b871a83d4a01c87c58bb62bccb67ea5d2b10af3",
      "parents": [
        "2d04a7847747a3f9b7ad36988486ef775cae1965",
        "83362689f5b1f6393d376d242fe29541b63ead2d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Nov 09 12:07:54 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 09 12:07:54 2009 -0800"
      },
      "message": "am 83362689: merge from open-source master\n\nMerge commit \u002783362689f5b1f6393d376d242fe29541b63ead2d\u0027\n\n* commit \u002783362689f5b1f6393d376d242fe29541b63ead2d\u0027:\n  added and modified linker to support SuperH architecture\n  Add the BSD sys_signame array.\n  added and modified bionic code to support SuperH architecture\n"
    },
    {
      "commit": "83362689f5b1f6393d376d242fe29541b63ead2d",
      "tree": "729a4fc7fd44630738510d1477e968cb7ec0fa3f",
      "parents": [
        "ecac54db21256952b4b4a9c6f17604ec31743183",
        "ad13c57298e57d33c130fb03a2c6494da573408c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Nov 09 08:04:48 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Nov 09 08:04:48 2009 -0800"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "10be95cffc7f2b02d8baac55a9cf1b16d8afbadb",
      "tree": "372359d357eb01bd7c3160cb20339c20c317804f",
      "parents": [
        "47c5e30b61bad28731e4acff2d690a4207801f27",
        "ad13c57298e57d33c130fb03a2c6494da573408c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 08 16:09:17 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 08 16:09:17 2009 -0800"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "ad13c57298e57d33c130fb03a2c6494da573408c",
      "tree": "9c3977ff3a5ffdd64e333ebd198717e0aee99bba",
      "parents": [
        "92b10af793da235659198cf38ff2e0237c181058"
      ],
      "author": {
        "name": "Shin-ichiro KAWASAKI",
        "email": "shinichiro.kawasaki.mg@hitachi.com",
        "time": "Fri Nov 06 10:36:37 2009 +0900"
      },
      "committer": {
        "name": "Tony Sim",
        "email": "sim.chinyeow@renesas.com",
        "time": "Fri Nov 06 10:36:37 2009 +0900"
      },
      "message": "added and modified linker to support SuperH architecture\n"
    },
    {
      "commit": "e823807dc2fb5f2d44cd00d75c10ddd9f5e93bea",
      "tree": "006f003f90243f149adc3ea65788e6a585352083",
      "parents": [
        "f1729553e310b55eef8ee784c95cd9dd8ffd24fd"
      ],
      "author": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Mon Oct 26 12:05:23 2009 -0700"
      },
      "committer": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Mon Oct 26 12:05:23 2009 -0700"
      },
      "message": "Add weak symbol support.  Also fix a bug caused by a typo.\n"
    },
    {
      "commit": "f1729553e310b55eef8ee784c95cd9dd8ffd24fd",
      "tree": "28887d23e21d7933e8af752973cb68bc8a11ee6f",
      "parents": [
        "943043583a8f3a8de34970b550a3e8e8a6fb0fb8",
        "9e78de3e3c90ec3c2970431d8eae7378fdc0dac6"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 23 18:58:19 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 23 18:58:19 2009 -0700"
      },
      "message": "am 9e78de3e: am 70bba516: am 763ac283: Merge changes Ibcba4b4f,I9af341e1 into eclair\n\nMerge commit \u00279e78de3e3c90ec3c2970431d8eae7378fdc0dac6\u0027\n\n* commit \u00279e78de3e3c90ec3c2970431d8eae7378fdc0dac6\u0027:\n  bionic/linker: make the buddy allocator compute max_order on its own\n  bionic/linker: change the buddy allocator to take a handle to the managed area\n"
    },
    {
      "commit": "9e78de3e3c90ec3c2970431d8eae7378fdc0dac6",
      "tree": "b1f655666740f367cac99df6748d543e6f09dc35",
      "parents": [
        "05324b36c1372cba6348ad5c75a96b3adfc4d9fe",
        "70bba5160f83ecd6251c4539f747ae39e9ed469c"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 23 18:49:14 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 23 18:49:14 2009 -0700"
      },
      "message": "am 70bba516: am 763ac283: Merge changes Ibcba4b4f,I9af341e1 into eclair\n\nMerge commit \u002770bba5160f83ecd6251c4539f747ae39e9ed469c\u0027 into eclair-mr2-plus-aosp\n\n* commit \u002770bba5160f83ecd6251c4539f747ae39e9ed469c\u0027:\n  bionic/linker: make the buddy allocator compute max_order on its own\n  bionic/linker: change the buddy allocator to take a handle to the managed area\n"
    },
    {
      "commit": "53b32f8b7ef0ae319cc048ce1f0a81a4be8bce64",
      "tree": "fb106097c697cd46ebac8f1e892b61a243487546",
      "parents": [
        "0703efeae25523e8f870cbf70f57b9ecc1186ac7",
        "763ac28357f604e0e4196e0a7ad5b0f5cdcf274a"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 23 18:39:30 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 23 18:39:30 2009 -0700"
      },
      "message": "am 763ac283: Merge changes Ibcba4b4f,I9af341e1 into eclair\n\nMerge commit \u0027763ac28357f604e0e4196e0a7ad5b0f5cdcf274a\u0027 into eclair-plus-aosp\n\n* commit \u0027763ac28357f604e0e4196e0a7ad5b0f5cdcf274a\u0027:\n  bionic/linker: make the buddy allocator compute max_order on its own\n  bionic/linker: change the buddy allocator to take a handle to the managed area\n"
    },
    {
      "commit": "943043583a8f3a8de34970b550a3e8e8a6fb0fb8",
      "tree": "a7dba5c8a0d6d531005dc0d75e07048327a513f1",
      "parents": [
        "a6210dc5105d5e4c4924a36efebd2d1a524cf3e0"
      ],
      "author": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Fri Oct 23 18:11:40 2009 -0700"
      },
      "committer": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Fri Oct 23 18:11:40 2009 -0700"
      },
      "message": "Clean up some linker code.\n"
    },
    {
      "commit": "bb9eedeff4ddc4550991eb4511003bda8672d6c4",
      "tree": "8d3769c0545e031410ba3fa16394a3057016efb8",
      "parents": [
        "af7315acf6a3a5ac329b04cb543b5d8a95dc26f1"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Oct 19 14:25:17 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Oct 19 18:10:35 2009 -0700"
      },
      "message": "bionic/linker: make the buddy allocator compute max_order on its own\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "af7315acf6a3a5ac329b04cb543b5d8a95dc26f1",
      "tree": "4a948c38f280ca63a66e06af4f5ea3731775b603",
      "parents": [
        "7e7d6c48a064af82f0ec39f47b9eb803a6e1df4c"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 16 17:50:42 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Oct 19 18:10:35 2009 -0700"
      },
      "message": "bionic/linker: change the buddy allocator to take a handle to the managed area\n\n-- rename struct ba_info to struct ba\n-- move the static ba descriptor from ba.c to linker.c and rename it ba_prelink\n-- ba_init, ba_allocate, ba_free, ba_start_addr, and ba_len all take a pointer\n   to struct ba\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "5d436ddcae640e2b2af30a5654bec33273b7a9c3",
      "tree": "790abda1151b91710b6ae7d85396055854cae337",
      "parents": [
        "b63e4e88b0d13afa431864190b3515a549c16d85",
        "8213d5c3c072b23f5cc1922d232efe7338091d9b"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Oct 16 12:46:51 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 16 12:46:51 2009 -0700"
      },
      "message": "am 8213d5c3: am ff7b46b8: Merge change I3c998761 into eclair\n\nMerge commit \u00278213d5c3c072b23f5cc1922d232efe7338091d9b\u0027 into eclair-mr2-plus-aosp\n\n* commit \u00278213d5c3c072b23f5cc1922d232efe7338091d9b\u0027:\n  Allow the dynamic linker to relocate references to thumb symbols in NDK libraries.\n"
    },
    {
      "commit": "cd230988286eb6aa395e051345052773f1943294",
      "tree": "85d4905b542cc668d66f689d2390bd296f888153",
      "parents": [
        "73981476a389847e8537cca37503c43e107fadc9",
        "ff7b46b87c4d85881d88c2105a94be6c6accb628"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Oct 16 12:36:27 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 16 12:36:27 2009 -0700"
      },
      "message": "am ff7b46b8: Merge change I3c998761 into eclair\n\nMerge commit \u0027ff7b46b87c4d85881d88c2105a94be6c6accb628\u0027 into eclair-plus-aosp\n\n* commit \u0027ff7b46b87c4d85881d88c2105a94be6c6accb628\u0027:\n  Allow the dynamic linker to relocate references to thumb symbols in NDK libraries.\n"
    },
    {
      "commit": "73981476a389847e8537cca37503c43e107fadc9",
      "tree": "a60ed9cc386c36ef6937974e0a729c5d429c57b5",
      "parents": [
        "60c221ccfaf67bdd9cadfd151d0bad9d3f8482ce",
        "4e30c09e57a0351daff70f6657794569445be21c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 14 08:18:23 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 14 08:18:23 2009 -0700"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "3c99876116356cae09231189f09e5a679fd0d2fd",
      "tree": "d02eb77976ec9143a153546f78b0dcac93f036ae",
      "parents": [
        "9a96aaa8efcde245ac4ba23228b8a8d61e008d91"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Oct 13 16:55:18 2009 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Oct 13 16:55:18 2009 -0700"
      },
      "message": "Allow the dynamic linker to relocate references to thumb symbols in NDK libraries.\n\nThe lowest bit of the symbol\u0027s value should be ignored when looking at UNDEF symbols\nfor correctness. It is used as an ARM/Thumb flag by the linker.\n"
    },
    {
      "commit": "4a9afcb10151b083cd2d75253385615f459172ed",
      "tree": "8879a1126fce0aa369e13b8db7b8dae0290145ae",
      "parents": [
        "9ea64da6c511e8f9f4edae4c10c20879957631ab"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Sep 29 11:43:20 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Sep 29 14:33:46 2009 -0700"
      },
      "message": "bionic/linker: allow resolving of symbols from library back to executable\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "9ea64da6c511e8f9f4edae4c10c20879957631ab",
      "tree": "11adf7525e859f87f980f7836936c30570213446",
      "parents": [
        "6ed80c8814db9eed1fb687be22322e38dc46a2fb"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Sep 28 18:21:30 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Sep 29 14:33:46 2009 -0700"
      },
      "message": "bionic/linker: change lookup() to return soinfo, not base\n"
    },
    {
      "commit": "6ed80c8814db9eed1fb687be22322e38dc46a2fb",
      "tree": "372d444d6f7cba193fdc41ed2fbdf95a0682adc8",
      "parents": [
        "ee223d02d96815c989b62043ff1237b1cd4e14b0"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Sep 28 19:38:04 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Sep 29 14:33:46 2009 -0700"
      },
      "message": "Revert \"Revert \"bionic/linker: fix symbol lookup during relocations\"\"\n\nThis reverts commit 33acbf0719c4f3db059bc9e1f52cf554a5d0295f.\n"
    },
    {
      "commit": "33acbf0719c4f3db059bc9e1f52cf554a5d0295f",
      "tree": "914ca013c2b4979b97c639c301a70c41a4785a4a",
      "parents": [
        "4e5a965d6a4c4a0c7977cc9b90755027130c1e46"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 22:04:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 22:04:15 2009 -0700"
      },
      "message": "Revert \"bionic/linker: fix symbol lookup during relocations\"\n\nThis reverts commit 8d0c0334f1106d36f2fd5c1cf6d5dc75a4b88850.\n"
    }
  ],
  "next": "8d0c0334f1106d36f2fd5c1cf6d5dc75a4b88850"
}
