)]}'
{
  "log": [
    {
      "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": "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": "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": "63d0ceec75927155947c07bc45cb9fed5e527922",
      "tree": "ea40b42ebea8dfa43a40218cfb100e324a8fa221",
      "parents": [
        "214feeba196435d26b4b8ba6ca6959695ebb892c",
        "fa136e8ca71cb20956cd1792251869cac8bed257"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Wed Jun 20 19:00:55 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 19:00:55 2012 -0700"
      },
      "message": "am fa136e8c: am a5948157: Merge \"Define __stack_chk_fail_local.S\"\n\n* commit \u0027fa136e8ca71cb20956cd1792251869cac8bed257\u0027:\n  Define __stack_chk_fail_local.S\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": "166b7dbd4aa143fc22f61c64dae1219a910f1a6e",
      "tree": "37e0af894f67975779ac6e7a8d4cdf8ba6e77936",
      "parents": [
        "ece8f502ed6f2915bd27187cd016d85f4481f6e1"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 02:02:32 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 10:53:11 2012 +0200"
      },
      "message": "linker: reduce size by nearly 20KB\n\nThis patch adds a trivial implementation of snprintf() that calls\nour internal vsnprintf().\n\nInspection of the generated machine code showed that the linker\ncontained a full implementation of stdio\u0027s vfprintf. It was pulled\nin because the pthread implementation uses snprintf() somewhere.\n\nProTip: It\u0027s possible to see why specific objects files are included\nin a final binary by adding the following to your Android.mk, then\nlooking at the content of /tmp/MAP.TXT:\n\n  LOCAL_LDFLAGS +\u003d -Wl,-Map\u003d/tmp/MAP.TXT\n\nChange-Id: I325e71b0cad1d01116a2e00c09e30a80cb716aa3\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": "f41855949d5f19e0fc1f8873278ae21c52dd5676",
      "tree": "adec664ec6957a7263b04a6bbc94cc21cc24b14c",
      "parents": [
        "ec8addcc8af1dc2a1ae606af8a16362bf5471a63",
        "e4db460a54e4f024b83a7df9a3f9920d695da9f3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 08 15:33:31 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 15:33:31 2012 -0700"
      },
      "message": "am e4db460a: am b7630f01: Use new debuggerd protocol.\n\n* commit \u0027e4db460a54e4f024b83a7df9a3f9920d695da9f3\u0027:\n  Use new debuggerd protocol.\n"
    },
    {
      "commit": "b7630f018abc83261acf78e8cf9a88c1df72f7f5",
      "tree": "9abe9b2a8f018b9108d6a55862912d8513a67473",
      "parents": [
        "e1dd3c287ba836281de0197670018bd9bbfbd62b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 06 18:37:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 06 18:37:48 2012 -0700"
      },
      "message": "Use new debuggerd protocol.\n\nBug: 6615693\nChange-Id: Ibfddc0de3fa2a882f7d0238ab797e5b29296b54b\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": "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": "077891b199ad295017b32bc9cf1c542c1360b3b8",
      "tree": "83dcb9018f6cfa9c7bea6a088748ade7cba3b975",
      "parents": [
        "6cdefd06c0386776405e4379af036722db5d60c0"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 15 17:17:28 2011 +0100"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue May 15 09:58:33 2012 -0700"
      },
      "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": "6cdefd06c0386776405e4379af036722db5d60c0",
      "tree": "dfe595c687878807ae5e87794749560fe7dfd249",
      "parents": [
        "4f05d1c758ba141c617f25251a661ecb66627e9e"
      ],
      "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": "Tue May 15 09:56:32 2012 -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": "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": "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": "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": "ca9a0712b89eee017c2a40056c101d86c1f7d02f",
      "tree": "e9fde715b179915d7c8928f8b989c5079b7c7b45",
      "parents": [
        "654325de026a2ca5b76b8b40e576c959d8211fdc"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Mar 08 11:14:37 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Mar 08 11:14:37 2012 -0800"
      },
      "message": "Re-throw signals\n\nIf we catch a fatal signal that won\u0027t automatically re-throw when\nthe thread resumes, re-throw it manually.  (Common examples are\nSIGPIPE and the SIGFPE from integer division by zero.)\n\nChange-Id: I329e6d4db907047c555957b42cbd09c50fc808e7\n"
    },
    {
      "commit": "e5cf8166dcfeebe50e0981467f93b79ac4f69a4f",
      "tree": "fc661a73e7311d4b2cfceb47f3eb9228e16ab96b",
      "parents": [
        "d027ffdd7a2b2239db929a53d3a3c82be42dd1a0",
        "3df3e672f51580525452c2eeb4d35633d4dba873"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 07 13:09:36 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 07 13:09:36 2012 -0800"
      },
      "message": "Merge \"Log the thread id and name for fatal signals.\""
    },
    {
      "commit": "3df3e672f51580525452c2eeb4d35633d4dba873",
      "tree": "86d8417655599f1c44f416865488237826fe88c0",
      "parents": [
        "45976873353d05b44f23fa53cbcd793b22927820"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 07 09:04:18 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 07 12:32:15 2012 -0800"
      },
      "message": "Log the thread id and name for fatal signals.\n\nThis adds the thread id and name to the \"Fatal signal\" logging,\nmaking it easier to track down where in process it actually crashed.\n\nChange-Id: I17a365042b2f10b161debe98bc2e7070af055dfb\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": "76ab561b4dd30711d82060d66b599aece0a40878",
      "tree": "7eadddc6f0ef70a8a82325160ff8aa5781830a7a",
      "parents": [
        "f1a17e762b6fab449cff3006178e42b68e8e241e",
        "49a05c060acd4d3e17b2819f00a694271bf40977"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Feb 23 11:20:49 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 23 11:20:49 2012 -0800"
      },
      "message": "am 49a05c06: am 62daffe1: am f9c5afb1: Merge \"Redesign dlopen() locks to be recursive per thread.\"\n\n* commit \u002749a05c060acd4d3e17b2819f00a694271bf40977\u0027:\n  Redesign dlopen() locks to be recursive per thread.\n"
    },
    {
      "commit": "e19d702b8e330cef87e0983733c427b5f7842144",
      "tree": "f657d4a39b7e45d0603b30762f4496f947ec043e",
      "parents": [
        "a60ff6c5b2ca76181b387d8c10aee22a2cbcf840"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Mon Feb 20 10:49:13 2012 +0400"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Tue Feb 21 14:57:26 2012 -0800"
      },
      "message": "Redesign dlopen() locks to be recursive per thread.\n\nThat is to fix the bug:\ndlxxx functions can\u0027t be called recursively.\nFor example, if we use dlopen() to use open one library whose constructor\nalso calls dlopen() in order to open another library, then the thread is\ndead-blocked.\n\nBy changing the dl_lock from a non-recursive lock to a recursive lock, we can\nprevent the thread from dead-blocked by recursive dlxxx calls in the same\nthread context.\n\nChange-Id: I1018b41c82f4641cc009c0a2eda31f5a47a534f9\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "9db064a0d3985bc1e4bb9f88ec81c7c2715c410c",
      "tree": "2912705bce262b9de1e9bd9c2631e47ea6c3619a",
      "parents": [
        "0245c426eeafbc7ebc670a155983aeb433757f9b",
        "5d7181a71c0b066fe6c19b9c5906bd694a399a59"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Feb 01 11:24:29 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 01 11:24:29 2012 -0800"
      },
      "message": "am 5d7181a7: am 68fc85ff: am 177a7706: linker: fix x86 build\n\n* commit \u00275d7181a71c0b066fe6c19b9c5906bd694a399a59\u0027:\n  linker: fix x86 build\n"
    },
    {
      "commit": "177a77067b6d3326dbcf88fd93d0664e48e27f9f",
      "tree": "73fdf9987a1d8422fe1a2894b8891e0603d5c2d0",
      "parents": [
        "5b892aa7e581c0b247262a95d70db20991121afe"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Feb 01 19:38:58 2012 +0100"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Feb 01 10:47:04 2012 -0800"
      },
      "message": "linker: fix x86 build\n\nChange-Id: I47d76a0f50515013c37ccef89accba03cc69529d\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": "1fc51769ded79c74f15d59611c5ae4bd0547b32b",
      "tree": "52c978d3bea82636ec7f3f491af10ec030e2b86c",
      "parents": [
        "8584a922dca76fc60e7d18f3b03f0b1ec3a42097"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Jan 26 13:21:19 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Jan 26 13:40:38 2012 -0800"
      },
      "message": "Log debuggerd connection failures\n\nWrite a message to the log file if the signal handler is not able\nto connect to debuggerd.  This is especially handy if the failure\nwas caused by running out of file descriptors, since there\u0027s some\nchance that the lack of fds relates to the crash.\n\nSample:\n\n F libc    : Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code\u003d1)\n F libc    : Unable to open connection to debuggerd: Too many open files\n\nBug 5926330\n\nChange-Id: I0ff210d82ab1db39b08f328bae5e08f67a69e5d7\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": "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": "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": "38bccb271f121fc06eaa0d8fbd3c982bc44c36b7",
      "tree": "7e5a90cad5a6511a5261de19ffbba8f4d977a2e6",
      "parents": [
        "b0bbbff6060b382d2c4607f026e182adb67d0cc0"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Aug 29 13:49:22 2011 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Aug 29 13:52:18 2011 -0700"
      },
      "message": "linker.h: don\u0027t change the soinfo structure\n\nIn 48527c3f740a80b45acb5a6efc217f771ae50143, we modified the soinfo\nstructure to remove an unnecessary variable. However, third party\nprograms seem to be relying on the structure not changing.\nAdd a dummy variable back into place to preserve structure.\n\nBug: 5064106\n\nChange-Id: I3014dda1a46e624644b09e156c3e9381ba3729bd\n"
    },
    {
      "commit": "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": "ec92af8fe5d28c74f3505932135b1b8f3fbaad00",
      "tree": "0326a9673e052ad704caee0f5b085fa7d1499113",
      "parents": [
        "3a5d668e012eb27c33ecea7159d24209d45c5baa"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Jul 29 12:46:34 2011 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Aug 04 14:48:15 2011 -0700"
      },
      "message": "Log signal info at time of receipt\n\nWhen a fatal signal is received, we now write a message to the log\nthat looks like this:\n\n  F/libc    ( 1540): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code\u003d1)\n\nThis is useful for debugging fatal signals that turn out not to be\nfatal.  This also changes the signal reset from SIG_IGN to SIG_DFL,\nso that future non-fatal fatal signals are fatal.\n\nThe code that blocked SIGUSR1 to avoid being interrupted by the GC\nhas been removed.\n\nAlso, fix minor issues in format_buffer().\n\nBug 5035703\n\nChange-Id: I8940af47297b5dcf3cf33537e3483ca5334ed565\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": "204d1f65dbfc6d5a14a90627d9d1efcfce8261ee",
      "tree": "6a2095b5e572f934e970149f8ee5f3e7a3887244",
      "parents": [
        "a57270b6ab2978764920ade17448f94875249001",
        "b2c7e0c18b7ab04cfe306277c79165de0612a2d1"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Mon Jun 06 11:32:49 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 06 11:32:49 2011 -0700"
      },
      "message": "am b2c7e0c1: Merge \"x86: Enable -fstack-protector\"\n\n* commit \u0027b2c7e0c18b7ab04cfe306277c79165de0612a2d1\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": "c2af2c075f15fa22f7ac8f6bb9d2aab1c3bd3b31",
      "tree": "889832826a1f863e8f02f74433cfcbbd21c7bd80",
      "parents": [
        "e6553716a037ea1ba096e20344951b5da039decc",
        "1af88c97432c88ec5b39d155e8c296d2a6eb1225"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Mon May 02 13:30:03 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 02 13:30:03 2011 -0700"
      },
      "message": "am 1af88c97: am d004dc99: Merge \"Use MAP_FIXED when allocating prelinked shared library regions\"\n\n* commit \u00271af88c97432c88ec5b39d155e8c296d2a6eb1225\u0027:\n  Use MAP_FIXED when allocating prelinked shared library regions\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": "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": "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": "81d79f9fb38d9ae8a5711f5774aa5a1516f6cc26",
      "tree": "1f7155f97090e9f31235dca71d44ad7a651ea920",
      "parents": [
        "b6a562e3895c51741748e90d56d822b0a9d36710",
        "962dcb22218a1a6d4ebd05e4fc4a69875d037234"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Mar 10 01:55:35 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 10 01:55:35 2011 -0800"
      },
      "message": "am 962dcb22: am fed58049: Merge \"libc: Fix PTHREAD_RWLOCK_INITIALIZER\"\n\n* commit \u0027962dcb22218a1a6d4ebd05e4fc4a69875d037234\u0027:\n  libc: Fix PTHREAD_RWLOCK_INITIALIZER\n  Proxy getnameinfo through netd\n  Updated gcc 4.4.3 IA toolchain doesn\u0027t require the .ctors list\n  Convert cname lenght before use\n"
    },
    {
      "commit": "48e1feaa9d7d7f36b5eba25baccd99a56adf9b64",
      "tree": "cebfb3b8bbea895cf8f56246b8c60839cd8c50db",
      "parents": [
        "69d6c2ccd943f43e87445d00e96eb98deb690ea1"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Thu Jan 27 10:23:16 2011 -0800"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Wed Feb 16 17:50:23 2011 -0800"
      },
      "message": "Updated gcc 4.4.3 IA toolchain doesn\u0027t require the .ctors list\n\nChange-Id: Ia840a19a45257128eccdcf25d105f500f2d90741\nSigned-off-by: H.J. Lu \u003chjl.tools@gmail.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.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": "b67c1bacd0fc27c26cc3ec19bd2c9ded19cecd08",
      "tree": "446ced2759cce0516da0fab0b3494f5144af8e80",
      "parents": [
        "56faf66fd7a90ea11835f8f0c9a7d6d8b350a09d"
      ],
      "author": {
        "name": "tedbo",
        "email": "tedbo@google.com",
        "time": "Thu Jan 20 20:44:44 2011 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jan 21 21:15:08 2011 +0100"
      },
      "message": "Fix bug in linker environment variable lookup.\n\nThe linker_env_get() method that is used to match an environment\nvariable was failing due to an incorrect equality check.\n\nThis  was introduced in git change\nbe5755969d70668bbab0e0c0ed75ebd867189723.\n\nThe bug was causing the linker to ignore environment variables such\nas LD_LIBRARY_PATH. This issue also affects the linker_env_secure()\npath that removes unsafe environment variables, since it would\nnot match any in the unsecure variable list.\n\nChange-Id: I14228df9252010e9fb4c1862bed5735f23e97aec\n"
    },
    {
      "commit": "b3cdf7fef86eb17dba5640e9a1b158510326b9b7",
      "tree": "7ed182ecc915e07d317f0890fc890e4c41b28626",
      "parents": [
        "441d7608b76613c3fb99867eed97277c237eb381"
      ],
      "author": {
        "name": "tedbo",
        "email": "tedbo@google.com",
        "time": "Thu Jan 20 20:44:44 2011 -0800"
      },
      "committer": {
        "name": "tedbo",
        "email": "tedbo@google.com",
        "time": "Thu Jan 20 20:44:44 2011 -0800"
      },
      "message": "Fix bug in linker environment variable lookup.\n\nThe linker_env_get() method that is used to match an environment\nvariable was failing due to an incorrect equality check.\n\nThis  was introduced in git change\nbe5755969d70668bbab0e0c0ed75ebd867189723.\n\nThe bug was causing the linker to ignore environment variables such\nas LD_LIBRARY_PATH. This issue also affects the linker_env_secure()\npath that removes unsafe environment variables, since it would\nnot match any in the unsecure variable list.\n\nChange-Id: I169024de4a005321e768accd38246fc1d717271b\n"
    },
    {
      "commit": "1f353828c3535c03899d6cc08d26f85fc688622e",
      "tree": "d8af3c1a3e808fa44986b11e2b05aef2bad5b946",
      "parents": [
        "f4e10b721ee281f3e90736364ac15864d0a3adf7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 18 09:36:38 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 18 09:36:38 2011 -0800"
      },
      "message": "Fix typos\n\nChange-Id: Ia02baba53be7034903f325258205441e5c193f7b\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": "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": "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": "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": "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"
    }
  ],
  "next": "ebf3ea006e5367fff93d2491eec24c4b1a633805"
}
