)]}'
{
  "log": [
    {
      "commit": "851e68a2402fa414544e66650e09dfdaac813e51",
      "tree": "baec353c8e9b6f24e885459b20a8748fc5c39468",
      "parents": [
        "22c6b7ffd36fe8b34b677eea94d00aef2624e4e8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 19 16:53:20 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 13:51:26 2014 -0800"
      },
      "message": "Unify our assembler macros.\n\nOur \u003cmachine/asm.h\u003e files were modified from upstream, to the extent\nthat no architecture was actually using the upstream ENTRY or END macros,\nassuming that architecture even had such a macro upstream. This patch moves\neveryone to the same macros, with just a few tweaks remaining in the\n\u003cmachine/asm.h\u003e files, which no one should now use directly.\n\nI\u0027ve removed most of the unused cruft from the \u003cmachine/asm.h\u003e files, though\nthere\u0027s still rather a lot in the mips/mips64 ones.\n\nBug: 12229603\nChange-Id: I2fff287dc571ac1087abe9070362fb9420d85d6d\n"
    },
    {
      "commit": "09289d92f920f307fc50dd64e9970c36c30b58e4",
      "tree": "c6df28c072f0e60f1ff689288011de2d2ff12dad",
      "parents": [
        "bfa2b6fc6a09df9815773890db94d6a126565289"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 11:51:11 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 11:51:11 2014 -0800"
      },
      "message": "Remove useless _C_LABEL from our assembler source.\n\nChange-Id: I41a9181537c70ecc69ef8035132c9a83811a40d0\n"
    },
    {
      "commit": "adab51aefdd00b65d631f64e6e313713d7dd9564",
      "tree": "8c2c67817acae0476ecc5953d11dfbbd618ccacb",
      "parents": [
        "44ef37c1b445e864068cdcd885ab3d7b17079ad3"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 19 17:23:24 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 20 11:34:08 2014 -0800"
      },
      "message": "Added script generating additions to libgcc_compat.c from linker errors\n\nbug: 12234455\nChange-Id: Icac35237f06e75745da5a91d9c4c941d7df4f84d\n"
    },
    {
      "commit": "62ffe14a7e6b30c2740ed695f64aee73c57f9962",
      "tree": "19e1af25237e46e7aaa015efc9b3e3475f00985c",
      "parents": [
        "513f83bb7f6961d60eb10d2ab14fb31fed190bce"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Jan 24 15:20:11 2014 -0800"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Jan 24 15:20:11 2014 -0800"
      },
      "message": "Add all implicitly loaded symbols from libgcc.a into libgcc_compat.c.\n\nChange-Id: I0e66a73e849a01817d016a688d7291c2fb604e48\n"
    },
    {
      "commit": "f38fb19d9d2b1aa5b4f22f772c81efacb990c94b",
      "tree": "d3c7bfa700018d6feb361bf71729f92a749d3b81",
      "parents": [
        "5b4884fac90753c68d401de73036c2de919958eb"
      ],
      "author": {
        "name": "Bernhard Rosenkränzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Fri Jan 24 12:55:00 2014 +0100"
      },
      "committer": {
        "name": "Bernhard Rosenkränzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Fri Jan 24 12:57:13 2014 +0100"
      },
      "message": "Re-export libgcc\u0027s __aeabi_uidivmod and __popcount_tab\n\nThis is required to make the Nexus 10 graphics driver work on a system\ncompiled with gcc 4.9.\n\nChange-Id: If3f3d488652a736d9ea3e583548d74fae3ffa902\nSigned-off-by: Bernhard Rosenkränzer \u003cBernhard.Rosenkranzer@linaro.org\u003e\n"
    },
    {
      "commit": "54a7494f17f80d6c548a58434bcb5579a26cc125",
      "tree": "90ae0521ac8dd5efe335fb0fca18a3ea87c47ef9",
      "parents": [
        "10cd709ff92015a4c2306cdbd6e65260909bffb2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 03 16:40:37 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 07 13:46:11 2014 -0800"
      },
      "message": "Regenerate the NOTICE files.\n\nAlso standardize the orthography in a few places to reduce near-duplicates\nin the NOTICE files.\n\nChange-Id: I347c75e817be61ec1b9c5b4b96226feedc8d09ab\n"
    },
    {
      "commit": "2aace21a19b6be8f6a427fc664d4175f0bf832c9",
      "tree": "2f5405d71e85ba2eee7b6d33d327a8866f8951cc",
      "parents": [
        "6d929061c36e7929c61c8e6331315b86fe86976f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 21 15:30:49 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 21 15:30:49 2013 -0800"
      },
      "message": "Remove the bogus exit status from _exit_with_stack_teardown.\n\nIt should always be 0, and there\u0027s no reason to pass a constant in as\nan argument.\n\nChange-Id: I92ac59b718a18e298bd7c52821af447f9181ca2a\n"
    },
    {
      "commit": "5eccb9646dd94438911706d3ebf52775caa7f41e",
      "tree": "65e098b6c9b6e25947f40a8466d05f87c906af5d",
      "parents": [
        "026b6ab6d5f0d8fca5cdfab05727197626769dc2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 16:58:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 16:58:06 2013 -0800"
      },
      "message": "Fix aarch64 futex assembly routines.\n\nAlso make the other architectures more similar to one another,\nuse NULL instead of 0 in calling code, and remove an unused #define.\n\nChange-Id: I52b874afb6a351c802f201a0625e484df6d093bb\n"
    },
    {
      "commit": "e3fb66dd0161902099af0fd381d14cda03368800",
      "tree": "88793ebf71a3c0d4019dfe5f069a859b95ccb99d",
      "parents": [
        "ed96db2a4f2fe5683407c3571d037bb7325544da"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Thu Dec 19 16:26:40 2013 -0800"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Thu Dec 19 16:26:40 2013 -0800"
      },
      "message": "Add __popcountsi2 to the function compat list.\n\nThis is needed if we use Clang to compile Bionic, which won\u0027t include\n__popcountsi2 anymore as Clang generates inline instructions. However\nprebuilt binary blobs still depend on libc.so to resolve __popcountsi2.\n\nChange-Id: I9001a3884c4be250c0ceebcd79922783fae1a0b7\n"
    },
    {
      "commit": "c54ca40aef48009e7b0e5b2b3069aad62ffd3453",
      "tree": "19284d085959218931f4fe5e3ea71e2f8e8d1ad3",
      "parents": [
        "8623bf7b4da802ee56618f575e92290499011df9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 13 12:17:13 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 13 14:02:30 2013 -0800"
      },
      "message": "Clean up some ARMv4/ARMv5 cruft.\n\nChange-Id: I29e836fea4b53901e29f96c6888869c35f6726be\n"
    },
    {
      "commit": "ed45970ac5a182e512669cfa5c15b9f4fa783ad7",
      "tree": "c8038ea495e3822f652d45eb06efe739b246268b",
      "parents": [
        "ab0b0cdf1b07eb25ad89e0de08d4b3fd453602fe"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Dec 02 17:44:53 2013 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Dec 02 19:13:12 2013 -0800"
      },
      "message": "Add cfi directives to all arm assembly.\n\nSince the ENTRY/END macros now have .cfi_startproc/.cfi_endproc, most of the\ncustom arm assembly has no unwind information. Adding the proper cfi directives\nfor these and removing the arm directives.\n\nUpdate the gensyscalls.py script to add these cfi directives for the generated\nassembly. Also fix the references to non-uapi headers to the proper uapi\nheader.\n\nIn addition, remove the kill.S, tkill.S, tgkill.S for arm since they are not\nneeded at all. The unwinder (libunwind) is able to properly unwind using the\nnormal abort.\n\nAfter this change, I can unwind through the system calls again.\n\nBug: 11559337\nBug: 11825869\nBug: 11321283\n\nChange-Id: I18b48089ef2d000a67913ce6febc6544bbe934a3\n"
    },
    {
      "commit": "36d6188f8cd8b948fb797f11d9620d63d0c2215a",
      "tree": "86b3162cac031151b2ae44b4d554fce4f9456147",
      "parents": [
        "318e86ed887e04e593f3db9b84b402d5501ced9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 19 13:31:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 19 14:08:54 2013 -0800"
      },
      "message": "Clean up forking and cloning.\n\nThe kernel now maintains the pthread_internal_t::tid field for us,\nand __clone was only used in one place so let\u0027s inline it so we don\u0027t\nhave to leave such a dangerous function lying around. Also rename\nfiles to match their content and remove some useless #includes.\n\nChange-Id: I24299fb4a940e394de75f864ee36fdabbd9438f9\n"
    },
    {
      "commit": "70b24b1cc2a1a4436b1fea3f8b76616fdcb27224",
      "tree": "70c8e04ccd256eaeda3c7e516776f4c9bca25628",
      "parents": [
        "05ec00bf62ac168c9787a3d0640879ab3e502fe5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 11:51:07 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 14:41:19 2013 -0800"
      },
      "message": "Switch pthread_create over to __bionic_clone.\n\nBug: 8206355\nBug: 11693195\nChange-Id: I04aadbc36c87e1b7e33324b9a930a1e441fbfed6\n"
    },
    {
      "commit": "ed74484dcbc2e156a6e5fa861a62425b12e55128",
      "tree": "d41520a7d4f893cef86ab650b23e400e30351446",
      "parents": [
        "a034e1d3e06207f079e814101bb3bce1924264e0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 07 10:31:05 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 07 10:31:05 2013 -0800"
      },
      "message": "Stop using the non-uapi \u003clinux/err.h\u003e header file.\n\nWe only need it for MAX_ERRNO, and it\u0027s time we had somewhere to put\nthe little assembler utility macros we\u0027ve been putting off writing.\n\nChange-Id: I9354d2e0dc47c689296a34b5b229fc9ba75f1a83\n"
    },
    {
      "commit": "bf425680e484486803bf21e4c4cd1e3f36614a3c",
      "tree": "e98aae6ddd8758482b81ff2734ee21ad3db3885c",
      "parents": [
        "f8dfb6f249da6fc9c91cc8b94fa28c19e598faa6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 16:29:40 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 16:29:40 2013 -0700"
      },
      "message": "Let the compiler worry about implementing ffs(3).\n\nIt does at least as good a job as our old hand-written assembly anyway.\n\nChange-Id: If7c4a1ac508bace0b71ee7b67808caa6eabf11d2\n"
    },
    {
      "commit": "7f70c9b64eec4a4a86a3948966187ff8ee9fa720",
      "tree": "c609e0f102ddbab362263cc0f9e1dd51e53b76b8",
      "parents": [
        "393484ab358040243793375e1525da083008e78e"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Sun Oct 13 22:07:26 2013 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 22 12:01:29 2013 -0700"
      },
      "message": "AArch64: Fix uses of stack size for 32/64bit libc builds\n\nThis patch fixes stack size uses to size_t.\n\nChange-Id: I0671c85ddb1c1aceaf9440a7c73c21fe528653fa\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "eb847bc8666842a3cfc9c06e8458ad1abebebaf0",
      "tree": "15e070fb706ba7599d5f402a8f934a7399541a6a",
      "parents": [
        "0c17099a71cb5d1b36b7aab66fd7341b3fc9106d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 15:50:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:00:17 2013 -0700"
      },
      "message": "Fix x86_64 build, clean up intermediate libraries.\n\nThe x86_64 build was failing because clone.S had a call to __thread_entry which\nwas being added to a different intermediate .a on the way to making libc.so,\nand the linker couldn\u0027t guarantee statically that such a relocation would be\npossible.\n\n  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against \u0027__thread_entry\u0027 which may overflow at runtime; recompile with -fPIC\n\nThis patch addresses that by ensuring that the caller and callee end up in the\nsame intermediate .a. While I\u0027m here, I\u0027ve tried to clean up some of the mess\nthat led to this situation too. In particular, this removes libc/private/ from\nthe default include path (except for the DNS code), and splits out the DNS\ncode into its own library (since it\u0027s a weird special case of upstream NetBSD\ncode that\u0027s diverged so heavily it\u0027s unlikely ever to get back in sync).\n\nThere\u0027s more cleanup of the DNS situation possible, but this is definitely a\nstep in the right direction, and it\u0027s more than enough to get x86_64 building\ncleanly.\n\nChange-Id: I00425a7245b7a2573df16cc38798187d0729e7c4\n"
    },
    {
      "commit": "c4c6e192ac045c06f4aad3afc8e437baf67227b7",
      "tree": "3d5177d557937711cbcf05516946cc1ce6935139",
      "parents": [
        "5d06718cd357b509588465ec1fa261db23b5899a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 14:48:05 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 14:48:05 2013 -0700"
      },
      "message": "pthread_exit should call __NR_exit with status 0.\n\nWe shouldn\u0027t have been passing the bottom 32 bits of the address used\nfor pthread_join to the kernel.\n\nChange-Id: I487e5002d60c27adba51173719213abbee0f183f\n"
    },
    {
      "commit": "141029327cdc62629e248b3be1d7a58d4e9e5ba8",
      "tree": "0a104f94d14d814215defc4660804e2dd02a1082",
      "parents": [
        "e8dc673ca56556389ad06ce1bb55e6624b4db721",
        "b49c17c2bf1232e29bc390e58d6fa43688929aa5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 03 23:17:58 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 03 23:17:58 2013 +0000"
      },
      "message": "Merge \"Move common arch-* code to arch-common directory\""
    },
    {
      "commit": "fc4d70fe54b8199560ce1426fff697a7234bf2d9",
      "tree": "b3e4ff2c258a4c3d2439610b4acb6cb263b0ee80",
      "parents": [
        "3901b1bdd939973a72e01272177757b2524995d3"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 03 11:15:09 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 03 12:35:56 2013 -0700"
      },
      "message": "Remove dead files.\n\nmemcpy.a15.S/strcmp.a15.S files were submitted by ARM for use as the basis\nfor the memcpy/strcmp implementations in cortex-a15.\n\nmemset.S was moved in to the generic directory.\n\nNOTE: memcpy.a9.S was submitted by Linaro to be the basis for the memcpy\nfor cortex-a9/cortex-a15 but has not been incorporated yet.\n\nBug: 10971279\n\nMerge from internal master.\n\n(cherry-picked from 48fc3e8b9fe7241ecf8ad61248247986742f05b6)\n\nChange-Id: I8f9297578990d517f004e4e8840e2b2cbd5a47d8\n"
    },
    {
      "commit": "b49c17c2bf1232e29bc390e58d6fa43688929aa5",
      "tree": "269ad5c6bd759a7e84339e6ba89e833de385d610",
      "parents": [
        "3901b1bdd939973a72e01272177757b2524995d3"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Wed Oct 02 16:38:05 2013 +0400"
      },
      "committer": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Thu Oct 03 11:14:33 2013 +0400"
      },
      "message": "Move common arch-* code to arch-common directory\n\nWill be helpful on adding x86_64\n\nChange-Id: I96cf6fc7912c02f289c75f07ae0079c32d69173f\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "bdbdbb8319b85044ba528f673de253a97910cf77",
      "tree": "e835d32f520f7f4ad240f209c716aa542f59b0d1",
      "parents": [
        "33dd7c116d652223b5bf3dabe49641c310d1216b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Aug 27 16:35:01 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Aug 27 17:05:19 2013 -0700"
      },
      "message": "Delete CAVEATS / fix spelling.\n\nChange-Id: I0ed504271b7c2e4434d0d5f53bc10335c8cf7b5b\n"
    },
    {
      "commit": "4e24dcc8d869db7303650d8444c8796445fbbc07",
      "tree": "0be95e3a9d17dafa7368394f03f304e051e0d38e",
      "parents": [
        "cd927519a94939f2ebc307544f827baade529bc9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jul 15 12:49:26 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 08 11:13:46 2013 -0700"
      },
      "message": "Optimize strcat/strcpy, small tweaks to strlen. DO NOT MERGE\n\nCreate one version of strcat/strcpy/strlen for cortex-a15/krait and another\nversion for cortex-a9.\n\nTested with the libc_test strcat/strcpy/strlen tests.\nIncluding new tests that verify that the src for strcat/strcpy do not\noverread across page boundaries.\n\nNOTE: The handling of unaligned strcpy (same code in strcat) could probably\nbe optimized further such that the src is read 64 bits at a time instead of\nthe partial reads occurring now.\n\nstrlen improves slightly since it was recently optimized.\n\nPerformance improvements for strcpy and strcat (using an empty dest string):\n\ncortex-a9\n- Small copies vary from about 5% to 20% as the size gets above 10 bytes.\n- Copies \u003e\u003d 1024, about a 60% improvement.\n- Unaligned copies, from about 40% improvement.\n\ncortex-a15\n- Most small copies exhibit a 100% improvement, a few copies only\n  improve by 20%.\n- Copies \u003e\u003d 1024, about 150% improvement.\n- Unaligned copies, about 100% improvement.\n\nkrait\n- Most small copies vary widely, but on average 20% improvement, then\n  the performance gets better, hitting about a 100% improvement when\n  copies 64 bytes of data.\n- Copies \u003e\u003d 1024, about 100% improvement.\n- When coping MBs of data, about 50% improvement.\n- Unaligned copies, about 90% improvement.\n\nAs strcat destination strings get larger in size:\n\ncortex-a9\n- about 40% improvement for small dst strings (\u003e\u003d 32).\n- about 250% improvement for dst strings \u003e\u003d 1024.\n\ncortex-a15\n- about 200% improvement for small dst strings (\u003e\u003d32).\n- about 250% improvement for dst strings \u003e\u003d 1024.\n\nkrait\n- about 25% improvement for small dst strings (\u003e\u003d32).\n- about 100% improvement for dst strings \u003e\u003d1024.\n\nMerge from internal master.\n\n(cherry-picked from d119b7b6f48fe507088cfb98bcafa99b320fd884)\n\nChange-Id: I296463b251ef9fab004ee4dded2793feca5b547a\n"
    },
    {
      "commit": "772b797b7b758328eaf6d4e9c93a6d2f78cbe3d0",
      "tree": "c00a4fa1c9e133c765404f9493dd19f259fe08c5",
      "parents": [
        "a6ed05c1c4c787241b56df132e77512c64cbc595"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Aug 02 15:33:27 2013 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Aug 02 15:53:18 2013 -0700"
      },
      "message": "Update the comments to reflect the current status.\n\nChange-Id: I3a6348b568230fe8b21d121e5b8d30561a9703c2\n"
    },
    {
      "commit": "efddf44c8e75f2807437bf26e8117f86f2645454",
      "tree": "e4ec9dc6c2a2e20892b797e2c0a60b0c3e33f660",
      "parents": [
        "101b5e1f6cc4e24635760928b3d2c1e51c1e5774"
      ],
      "author": {
        "name": "synergydev",
        "email": "synergye@codefi.re",
        "time": "Sun Jul 28 21:43:00 2013 +0000"
      },
      "committer": {
        "name": "synergydev",
        "email": "synergye@codefi.re",
        "time": "Mon Jul 29 16:55:08 2013 -0700"
      },
      "message": "libgcc_compat: Introduce __aeabi_lasr for cortex-a9 and higher\n\nThis is needed when passing -mcpu\u003dcortex-a9 or higher on a modern\ntoolchain for prebuilt library compatibility\n\nChange-Id: I73eb2393377914ae26216a8c2828ad973d1c1225\n"
    },
    {
      "commit": "0aa9b52efa75b4c8bbdc12845434e25e457ea57b",
      "tree": "648b4097011efca4b3a945d64ffc4787729907a1",
      "parents": [
        "f35e0c149f1a6801a5af7c339f84d81ae05c3adf"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 10 14:31:03 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jul 16 16:47:37 2013 -0700"
      },
      "message": "Add new optimized strlen for arm.\n\nThis optimized version is primarily targeted at cortex-a15.\n\nTested on all nexus devices using the system/extras/libc_test strlen test.\nTested alignments from 1 to 32 that are powers of 2.\nTested that strlen does not cross page boundaries at all alignments.\n\nSpeed improvements listed below:\n\ncortex-a15\n- Sizes \u003e\u003d 32 bytes, ~75% improvement.\n- Sizes \u003e\u003d 1024 bytes, ~250% improvement.\n\ncortex-a9\n- Sizes \u003e\u003d 32 bytes, ~75% improvement.\n- Sizes \u003e\u003d 1024 bytes, ~85% improvement.\n\nkrait\n- Sizes \u003e\u003d 32 bytes, ~95% improvement.\n- Sizes \u003e\u003d 1024 bytes, ~160% improvement.\n\nMerge from internal master.\n\n(cherry-picked from 2fc071797743b88a9a47427d46baed7c7b24f4d2)\n\nChange-Id: I1ceceb4e745fd68e9d946f96d1d42e0cdaff6ccf\n"
    },
    {
      "commit": "da4a3e65153f2979b5e339d0efe6b81ebf74af8f",
      "tree": "d410f4a944e3ddf6c61d57cf43f7a63562ea21e1",
      "parents": [
        "67750c8515573cba294b2f3840249dd7f7d817d5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 11:52:24 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 11:52:24 2013 -0700"
      },
      "message": "EABI syscall cleanup.\n\nWe cleaned up the auto-generated ones a while back to not touch\nthe stack unnecessarily if they have \u003c\u003d 4 arguments. This patch\ncleans up some hand-crafted ones.\n\nAlso improve comments in clone.S.\n\nChange-Id: I8850bf98f2b26829385315304472a760e6880ed8\n"
    },
    {
      "commit": "2753e12af50a83882a3f854343aa686289da97b5",
      "tree": "c95728bb49467e12f7147e6dc5303c93c6544834",
      "parents": [
        "87b4286f092094a2e8069a06e20ef5036a258172"
      ],
      "author": {
        "name": "Will Newton",
        "email": "will.newton@linaro.org",
        "time": "Wed Jul 03 09:44:30 2013 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 03 10:20:43 2013 -0700"
      },
      "message": "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.\n\nThis memcpy code uses NEON/VFP to achieve very good performance\non ARMv7-A processors. It is specifically tuned for A15 but should\nprovide good performance on A9 also. It is equivalent to the code\nin cortex-strings rev 116.\n\nThis patch is a follow up the existing gerrit change:\n\nI7f6f77995f3ca903ad9c66d14261441667a2a935\n\nThis version includes a tweak for performance on misaligned\nbuffers and splits the header comment into license and\ndocumentation sections.\n\nChange-Id: Ibd2e23c8d8e01357ba0247be1d05192de3ceba69\nSigned-off-by: Will Newton \u003cwill.newton@linaro.org\u003e\n"
    },
    {
      "commit": "b61103dff4531322b02dd0f2217149e9b258fa10",
      "tree": "1ca2e9cabb5a916d11038dcd8ef9c5daf319a44a",
      "parents": [
        "227b47a461b27d746b373feb66001cdddc9ba1db"
      ],
      "author": {
        "name": "Will Newton",
        "email": "will.newton@linaro.org",
        "time": "Mon Jul 01 11:15:27 2013 +0100"
      },
      "committer": {
        "name": "Will Newton",
        "email": "will.newton@linaro.org",
        "time": "Mon Jul 01 11:15:27 2013 +0100"
      },
      "message": "libc/arch-arm/bionic/memcpy.a9.S: memcpy from cortex-strings.\n\nThis memcpy code uses NEON/VFP to achieve very good performance\non ARMv7-A processors. It is specifically tuned for A15 but should\nprovide good performance on A9 also. It is equivalent to the code\nin cortex-strings rev 116.\n\nThis patch is a follow up the existing gerrit change:\n\nI7f6f77995f3ca903ad9c66d14261441667a2a935\n\nBut this version includes a tweak for performance on misaligned\nbuffers.\n\nChange-Id: I285abac0068f8ae29a1cbf7862ea8590aadaf0a7\nSigned-off-by: Will Newton \u003cwill.newton@linaro.org\u003e\n"
    },
    {
      "commit": "7e6ce1a3c52d8533fed92c143419fedb0c93988a",
      "tree": "0ed2dd0e1c7a57ee6a2f6eff3e4bb609d191102b",
      "parents": [
        "8252b8e4b730b13623f31dc66396e000586d1c58"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Mon Jun 10 17:01:41 2013 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Mon Jun 10 17:17:46 2013 -0700"
      },
      "message": "Fix abort(3) to raise SIGABRT rather than causing SIGSEGV.\n\ntgkill() needs the .save stack unwinding directive to get the complete\nstack trace.\n\nBUG: https://code.google.com/p/android/issues/detail?id\u003d16672\n\nChange-Id: Ifb447dca2147a592c48baf32769dfc175d8aea72\n"
    },
    {
      "commit": "a123b5d3199ea2eaf8cfc513278f1906dcde1ab8",
      "tree": "39b2ecd2bb3e00ad74f38fe6ae117a212873a55c",
      "parents": [
        "8539961ff299b05d8feac9be8b119698be22da03"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri May 31 14:25:48 2013 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri May 31 14:39:23 2013 -0700"
      },
      "message": "Use bl instead of blx to support interworking properly.\n\n(cherry picked from commit 9e1905794b4ecd8f7b87d8e4e2f954c8cfc6beda in\nmaster)\n\nChange-Id: I9b8c35ea9e201e00f84315f9f105013c23c94d85\n"
    },
    {
      "commit": "e8f46e8eddc8ebfbe7bea0a238f61f1e9adf4a0a",
      "tree": "3b79d94fca27ce5e213b86e30ac241525d7944f3",
      "parents": [
        "87efcd2e63c9f218f476ef88f21e660f9bce633f"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Thu Apr 25 15:05:03 2013 +0800"
      },
      "committer": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Thu Apr 25 15:05:03 2013 +0800"
      },
      "message": "Remove redundant space within square brackets\n\nThe new \"as\" in binutils-2.23 (with gcc4.8) is more picky:\nit expects register right after [\n\nChange-Id: I876124841582070ab2083ffafe38bc333b5812d0\n"
    },
    {
      "commit": "8794ece296dd62cbeb3d00fe57c831c90a1bef77",
      "tree": "d8ade6d821c0d1c3090a5aebcbd538fb36b98a67",
      "parents": [
        "3323628d635d3973965ee458c1fee7d8ab45136f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 21 22:43:25 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 21 23:07:11 2013 -0700"
      },
      "message": "Replace unnecessary ARM uses of \u003csys/linux-syscalls.h\u003e with \u003casm/unistd.h\u003e.\n\nFor some reason, socketcalls.c was only being compiled for ARM, where\nit makes no sense. For x86 we generate stubs for the socket functions\nthat use __NR_socketcall directly.\n\nChange-Id: I84181e6183fae2314ae3ed862276eba82ad21e8e\n"
    },
    {
      "commit": "5c2772f59d3b6f564897187324d8606f54423207",
      "tree": "2e6558ee71209b8520dbdd757b1d2cae37937040",
      "parents": [
        "babb72dc292a567674f6d7d2ccf7f63edaf77b80"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 21 22:15:06 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 21 22:26:20 2013 -0700"
      },
      "message": "The SYS_ constants should cover all __NR_ values.\n\n\u003csys/linux-syscalls.h\u003e only contains constants for the syscalls\nwe\u0027re generating stubs for. We want all the syscalls available\non the architecture in question.\n\nKeep using \u003csys/linux-syscalls.h\u003e on ARM for now because the\n__NR_ARM_set_tls and __NR_ARM_cacheflush values aren\u0027t in \u003casm/unistd.h\u003e.\n\nChange-Id: I66683950d87d9b18d6107d0acc0ed238a4496f44\n"
    },
    {
      "commit": "8f2a5a0b40fc82126c691d5c30131d908772aab7",
      "tree": "0b29a5dc82395c076387edb5af9ca271a91264c0",
      "parents": [
        "e23ed8c6441389a79c6504295184f7249e01a197"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 15:30:25 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:12:58 2013 -0700"
      },
      "message": "Clean up internal libc logging.\n\nWe only need one logging API, and I prefer the one that does no\nallocation and is thus safe to use in any context.\n\nAlso use O_CLOEXEC when opening the /dev/log files.\n\nMove everything logging-related into one header file.\n\nChange-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58\n"
    },
    {
      "commit": "9aceab50155b17741faded1fb22e2daa51a07fb1",
      "tree": "d1a976cb41c6aa807c6b07f0e858f92ea5763b4f",
      "parents": [
        "94a34010c1f989032c0a4dc7a7a68d069ca23b1e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 14:57:30 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 17:43:58 2013 -0700"
      },
      "message": "Use the kernel\u0027s MAX_ERRNO in the syscall stubs.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d53104\nChange-Id: Iaabf7025b153e96dc5eca231a33a32d4cb7d8116\n"
    },
    {
      "commit": "14283004f5a8fe4c74961a9c89009a781e1becbe",
      "tree": "5a0c444eac02166c7da383d34bf1d127b88fb5bc",
      "parents": [
        "66273ac2b6b8c2042350204575bd290d96dea681"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Mar 01 12:38:09 2013 -0800"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Fri Mar 01 14:56:04 2013 -0800"
      },
      "message": "Add stack unwinding directives to memcpy.\n\nAlso include some Android specific header files.\n\nChange-Id: Idbcbd43458ba945ca8c61bfbc04ea15fc0ae4e00\n"
    },
    {
      "commit": "eb149e954ed7c455d3fb3b19bc064ad358c8bb1e",
      "tree": "2c83e62fa897004cc5ca4ff7a27b7cd729e260cc",
      "parents": [
        "5b349fc22e7ba35ecb76b365d8be71939d204cde"
      ],
      "author": {
        "name": "Greta Yorsh",
        "email": "greta.yorsh@arm.com",
        "time": "Fri Nov 30 09:31:38 2012 +0000"
      },
      "committer": {
        "name": "David Butcher",
        "email": "david.butcher@arm.com",
        "time": "Fri Mar 01 10:41:01 2013 +0000"
      },
      "message": "Adding strcmp tuned for Cortex-A15.\n\nThe attached patch provides a new implementation of strcmp for ARM,\nusing LDRD instead of LDR whenever possible.\n\nFor older architectures that do not support LDRD, this implementation\nuses the same algorithm as before.\n\nTesting and benchmarking:\n* Validation: successfully passes a test that compares different strings\nof length 1-128 and offsets 0-8 from a word boundary. Checked on\nqemu/A15/A9, ARM/Thumb mode, Big/Little Endian.\n* Integration with gcc: no regression on qemu for arm-none-eabi --with-cpu\na15/a9 --with-mode arm/thumb.\n\nChange-Id: I9e230e1b99dbdc9119b69ee858a89038c516a4ea\nSigned-off-by: Vassilis Laganakos \u003cvasileios.laganakos@arm.com\u003e\n"
    },
    {
      "commit": "5b349fc22e7ba35ecb76b365d8be71939d204cde",
      "tree": "e47414c63add667725f134e35e9df2c6f1b31ae0",
      "parents": [
        "7c0dd555c09c880b71c7c4039993d1d029add109"
      ],
      "author": {
        "name": "Greta Yorsh",
        "email": "greta.yorsh@arm.com",
        "time": "Tue Oct 04 16:02:25 2011 +0000"
      },
      "committer": {
        "name": "David Butcher",
        "email": "david.butcher@arm.com",
        "time": "Fri Mar 01 10:40:50 2013 +0000"
      },
      "message": "Adding memcpy tuned for Cortex-A15.\n\nThe strategy for large block sizes is LDRD and STRD with offset addressing,\nwhere the main loop copies 64 bytes in every iteration, (i.e., 8 calls to\nLDRD and STRD pairs), interleaving load and stores (i.e., the pairs of LDRD\nand STRD of the same data are consecutive instructions), and the writeback\nof an updated address is a separate instruction, which allows us to write\nback the accumulated update once per iteration.\n\nThis strategy is implemented in memcpy.S. In some configurations, a plain\nversion of memcpy (included from memcpy-stub.c) is used instead of the\noptimized one.\n\nValidation:\n* Correctness: checked memcpy using a test harness for block sizes\nranging between 1 to 128, and source and destination buffers alignment\nranging in { 0,1,2,3,4,8,12 } bytes each.\n* Performance: benchmarking on Cortex-A15 FPGA indicates that this strategy\nis better for A15 than the strategy used by glibc and even slightly better\nthan using NEON. Benchmarking on Cortex-A9 bare metal and Linux shows\nthat the proposed strategy is reasonable: not as fast as the version of\nmemcpy from glibc (which is the best open source strategy for A9), but\ncomparable with csl and bionic.\n* Integration with GCC: no regression for arm-none-eabi --with-cpu\ncortex-a15 and cortex-a9.\n\nChange-Id: Ied56354d8992c62ae3e02d582a2bd55585d814b9\nSigned-off-by: Vassilis Laganakos \u003cvasileios.laganakos@arm.com\u003e\n"
    },
    {
      "commit": "40eabe24e4e3ae8ebe437f1f4e43cf39cbba2e9e",
      "tree": "19eef7fcbba616a52bd37f4c83ece3e918b25445",
      "parents": [
        "3e3b239d2be0c5a92e91385f4f10b8f7da8d2837"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 14 18:59:37 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 15 12:08:59 2013 -0800"
      },
      "message": "Fix the pthread_setname_np test.\n\nFix the pthread_setname_np test to take into account that emulator kernels are\nso old that they don\u0027t support setting the name of other threads.\n\nThe CLONE_DETACHED thread is obsolete since 2.5 kernels.\n\nRename kernel_id to tid.\n\nFix the signature of __pthread_clone.\n\nClean up the clone and pthread_setname_np implementations slightly.\n\nChange-Id: I16c2ff8845b67530544bbda9aa6618058603066d\n"
    },
    {
      "commit": "6719500dbd9330d7539d2db3dcf3e8ad1858c7aa",
      "tree": "c5ee88ca9fa2aadf63a88f2a0255ecdcee07e881",
      "parents": [
        "2fee0340a93637507de6a860914dc3e14d44ee94"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 15:12:32 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 15:12:32 2013 -0800"
      },
      "message": "Add a bunch more missing ENDs to assembler routines.\n\nThis isn\u0027t everything; I\u0027ve missed out those x86 files that are\n\nChange-Id: Idb7bb1a68796d6c0b70ea2b5c3300e49da6c62d2\n"
    },
    {
      "commit": "73964c592c8d23901e9479893dfbd3d0f25bab04",
      "tree": "dd7c786e0c3011cfcb26a4a8ea45519a6283b404",
      "parents": [
        "627274292edf1d051dd939a0b14b69d3fcb84742"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 14:35:14 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 14:40:48 2013 -0800"
      },
      "message": "Everyone has CLZ.\n\nEven armv5 had CLZ.\n\nChange-Id: I51bc8d1166d09940fd0d3f4c7717edf26977082c\n"
    },
    {
      "commit": "9f878c2fcab4e497d8b59f69dab74f092ad04deb",
      "tree": "627dca7534debb436f648cab80b9678db61bf8b9",
      "parents": [
        "558a8b1d3b31300941af78232f2f7f4cb4e933b9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 16:07:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 16:07:06 2013 -0800"
      },
      "message": "Really set errno if __pthread_clone fails.\n\nIf r0 \u003d\u003d 0, we\u0027re the child. If r0 \u003e 0, we\u0027re the parent.\nOtherwise set errno.\n\nThe __bionic_clone code I copy \u0026 pasted was wrong. This patch\nfixes both.\n\nBug: 3461078\nChange-Id: Ibb7d6cc7e54e666841f2f0dc59a141a0b31982e4\n"
    },
    {
      "commit": "d7a3a403c1a0bbb30786f052adc7332fdda3e1f9",
      "tree": "18af1e77e480d487961c2bb4e20c490c7233e1e7",
      "parents": [
        "cae7b2cfb509e7d5d10a8085b1ec319daaef768f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 16:58:34 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 16:58:34 2013 -0800"
      },
      "message": "Use ENTRY/END in ARM __get_sp.\n\nChange-Id: If2f159b266f5fa4ad9d188a17d4cd318b605e446\n"
    },
    {
      "commit": "5e3fc43ddeada547a155c6f561a12ff0b16e02d3",
      "tree": "9becf3a8442387f408f7f9ee73ab06ab7f8865d1",
      "parents": [
        "1fea0f258a45d918fe5ae8e9769f45c0348bd095"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 16:36:48 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 16:39:10 2013 -0800"
      },
      "message": "Fix __pthread_clone on ARM to set errno on failure.\n\nMIPS and x86 appear to have been correct already.\n\n(Also fix unit tests that ASSERT_EQ with errno so that the\narguments are in the retarded junit order.)\n\nBug: 3461078\nChange-Id: I2418ea98927b56e15b4ba9cfec97f5e7094c6291\n"
    },
    {
      "commit": "f94fd3ccc66e05f53965bc14237778c0d8437bb6",
      "tree": "7128c3e47bdc0575553f8fab83ef05a752dc3985",
      "parents": [
        "2d3e72336e76180fb00822386da4f14203d117ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 15:36:59 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 15:36:59 2013 -0800"
      },
      "message": "Clean up ARM assembler files to use ENTRY/END.\n\nWe also don\u0027t need legacy syscall support (non-\"swi 0\").\n\nChange-Id: Id1012e8ca18bf13f3f4e42200f39ba0e2e632cbf\n"
    },
    {
      "commit": "646e058136d59671d5d32d93bedbb71004a9ce73",
      "tree": "354d30a60436bb8a093faf72b56ad2b96abb55b6",
      "parents": [
        "2f41531ff9f48dbdaf2ba711e14c669031728e99"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 12:16:10 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 12:16:10 2013 -0800"
      },
      "message": "Fix x86 build, remove void* arithmetic.\n\nChange-Id: Idc7f14af2e094ac33de315e808176237af063bb8\n"
    },
    {
      "commit": "42b2c6a5eed5e4ef35315b8cd32d1355f12a69b6",
      "tree": "0fb55a369b620ef79cfa103f67a5184f067dadeb",
      "parents": [
        "d32fdbaf03f688497adbec885e85c0a69f7a4542"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 10:14:39 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 11:44:21 2013 -0800"
      },
      "message": "Clean up the argc/argv/envp/auxv handling.\n\nThere\u0027s now only one place where we deal with this stuff, it only needs to\nbe parsed once by the dynamic linker (rather than by each recipient), and it\u0027s\nnow easier for us to get hold of auxv data early on.\n\nChange-Id: I6314224257c736547aac2e2a650e66f2ea53bef5\n"
    },
    {
      "commit": "1e980b6bc8315d00a07312b25486531247abd98c",
      "tree": "539f2c0c63fca27d5eb6ba184d658bb0e11a32d9",
      "parents": [
        "e4ca88d9fa8757e4fb4056fcafa5bc15b406a2fd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 18:36:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 18 22:20:06 2013 -0800"
      },
      "message": "Fix the duplication in the debugging code.\n\nWe had two copies of the backtrace code, and two copies of the\nlibcorkscrew /proc/pid/maps code. This patch gets us down to one.\n\nWe also had hacks so we could log in the malloc debugging code.\nThis patch pulls the non-allocating \"printf\" code out of the\ndynamic linker so everyone can share.\n\nThis patch also makes the leak diagnostics easier to read, and\nmakes it possible to paste them directly into the \u0027stack\u0027 tool (by\nusing relative PCs).\n\nThis patch also fixes the stdio standard stream leak that was\ncausing a leak warning every time tf_daemon ran.\n\nBug: 7291287\nChange-Id: I66e4083ac2c5606c8d2737cb45c8ac8a32c7cfe8\n"
    },
    {
      "commit": "35f5385aa5206c8958dc38a197cd6847e01b8c7b",
      "tree": "c4b5011273a95f7a5764c4e1b04d4c0d5b3823f8",
      "parents": [
        "29fe857ec80e59347e28458a5396eb68d1cba0e4"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Mon Jan 14 11:26:51 2013 -0800"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Mon Jan 14 15:33:40 2013 -0800"
      },
      "message": "Add __aeabi_idiv to the dummy reference list.\n\nIf the platform code is compiled with -mcpu\u003dcortex-a15, then without this\nchange prebuilt libraries built against -march\u003darmv7 cannot resolve the\ndependency on __aeabi_idiv (provided by libgcc.a).\n\nBug: 7961327\n\ncherry-picked from internal master.\n\nChange-Id: I8fe59a98eb53d641518b882523c1d6a724fb7e55\n"
    },
    {
      "commit": "884e4f839b18552237c1453312aa4ccba46f94e9",
      "tree": "e79be3598394b985f99560cd1e5179f479ee6466",
      "parents": [
        "49677deca2c2984ae6c0a3df8fbada7132e82940"
      ],
      "author": {
        "name": "Henrik Smiding",
        "email": "henrik.smiding@stericsson.com",
        "time": "Fri Nov 05 15:07:53 2010 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 09 15:05:32 2012 -0800"
      },
      "message": "Add optimized version of memset for Cortex A9\n\nAdds new code to function memset, optimized for Cortex A9.\n\nCopyright (C) ST-Ericsson SA 2010\n\nAdded neon implementation\n\nAuthor: Henrik Smiding henrik.smiding@stericsson.com for ST-Ericsson.\n\nChange-Id: Id3c87767953439269040e15bd30a27aba709aef6\nSigned-off-by: Christian Bejram \u003cchristian.bejram@stericsson.com\u003e\n"
    },
    {
      "commit": "6d0bcdc8329dde4d3c83e95475bc670002f41309",
      "tree": "9401ac897fc79e10679aa030d7bd2d7f86ed23af",
      "parents": [
        "c2132915158014f578c3f003c9399961fe8d6da2"
      ],
      "author": {
        "name": "Henrik Smiding",
        "email": "henrik.smiding@stericsson.com",
        "time": "Mon Jan 17 16:05:41 2011 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 08 18:02:14 2012 -0800"
      },
      "message": "Add optimized version of memcpy for Cortex A9\n\nAdds new code to memcpy function, optimized for Cortex A9.\nAdds new ARM-only loop, for operations where source and\ndestination are aligned.\n\nCopyright (C) ST-Ericsson SA 2010\n\nModified neon implementation to fit Cortex A9 cache line size,\nfor those running 32 bytes L2 cache line size.\nAlso split the implementation in aligned and unaligned access,\nfor those that allows unaligned memory access with Neon.\nFor totally aligned operations, arm-only code is used.\n\nChange-Id: I95ebf6164cd6486b12a7e3e98e369db21e7e18d2\nAuthor: Henrik Smiding henrik.smiding@stericsson.com for ST-Ericsson.\nSigned-off-by: Christian Bejram \u003cchristian.bejram@stericsson.com\u003e\n"
    },
    {
      "commit": "c2132915158014f578c3f003c9399961fe8d6da2",
      "tree": "1e60468e8bad0f34d56d61652b834cdf50dafd04",
      "parents": [
        "7aca3103069d7603cff47db7141b64f6a9d94f86",
        "3ebd31c0a1d343c3fd7845d7b1149e841ad83c6a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 08 17:48:18 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 08 17:48:19 2012 -0800"
      },
      "message": "Merge \"Add optimized version of memcmp for Cortex A9\""
    },
    {
      "commit": "048569be54188fadde19d5e48363e5fe3943023a",
      "tree": "fa84c2e71f765d5fb14998210b4511062559bf15",
      "parents": [
        "e8f815473ba463b875cea757bc0a52fc32f10748"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Wed Sep 05 19:00:43 2012 +0800"
      },
      "committer": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Fri Sep 07 12:49:41 2012 +0800"
      },
      "message": "Rename __dso_handle_so.c to __dso_handle_so.h\n\nAlso chang libc/arch-arm/bionic/crtbegin_so.c to include it\nas a header.\n\nChange-Id: Ib91b0b8caf5c8b936425aa8a4fc1a229b2b27929\n"
    },
    {
      "commit": "b2c5bd543dcbbc1b2cbf7afd8b124256ce2c128e",
      "tree": "bc8800e46aecc0a879a8ac707ab9759d1412b132",
      "parents": [
        "26f2e4a1639a959513c4ff5981b4eb52757e8012",
        "144c2918668ac0d506a86478d5b9966ad816cec4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 10:18:43 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 05 10:18:43 2012 -0700"
      },
      "message": "Merge \"ARM: warn about atexit() calls from legacy shared libraries\""
    },
    {
      "commit": "26f2e4a1639a959513c4ff5981b4eb52757e8012",
      "tree": "f67c125011c1729fd3614304dd7428e6b1bfee22",
      "parents": [
        "82978cae4eec238a9d631d2b61b8985daa02516e",
        "f3cfcd869ded41d25c1f4f4e48e7c374a64f9583"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 09:43:35 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 05 09:43:35 2012 -0700"
      },
      "message": "Merge \"ARM: make CRT_LEGACY_WORKAROUND work as intended\""
    },
    {
      "commit": "069c64cdf2d3da7b7ff6ea5d1041f982fb10ab22",
      "tree": "4aab3b7983679d9dd14605b2547bed4cacb03983",
      "parents": [
        "e026b1d89a0dcada499da186d4d94cc3ce5d3ef3",
        "5ed48a4d7fece002afbbd2bd981563aea6e52e24"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Aug 28 13:04:22 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 28 13:04:22 2012 -0700"
      },
      "message": "Merge \"ARM: make sure __on_dlclose() actually gets called\""
    },
    {
      "commit": "e026b1d89a0dcada499da186d4d94cc3ce5d3ef3",
      "tree": "d7c48961a139387b230a2c86e0a35412a2572e3f",
      "parents": [
        "ad18073897378d3a13aaa6a7e7005f254ab8c1c8",
        "c23092887fce8bf97ff33f72adf2d454946e7271"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Aug 28 12:49:46 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 28 12:49:46 2012 -0700"
      },
      "message": "Merge \"ARM: remove dummy entries from .so init_array/fini_array\""
    },
    {
      "commit": "144c2918668ac0d506a86478d5b9966ad816cec4",
      "tree": "5ce7a0dd37fd5722f4c99739cbd2ad11fba87635",
      "parents": [
        "f3cfcd869ded41d25c1f4f4e48e7c374a64f9583"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 28 11:23:06 2012 +0200"
      },
      "committer": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 28 11:23:06 2012 +0200"
      },
      "message": "ARM: warn about atexit() calls from legacy shared libraries\n\nLegacy ARM shared libraries use this generic version of atexit(),\nwhich queues exit functions for invocation at program exit, at\nwhich time the library may have been dlclose()\u0027d, causing the\nprogram to crash.\n\nChange-Id: I41ae153c23268daa65ede7fb8966fc3e9caec369\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "f3cfcd869ded41d25c1f4f4e48e7c374a64f9583",
      "tree": "8024ef0103694c92f553fae4221fc220e1a12b00",
      "parents": [
        "9dfaa63a1c0d1b8e75dd9d7077a8103a19821fa9"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 21 14:13:50 2012 +0200"
      },
      "committer": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 28 10:27:02 2012 +0200"
      },
      "message": "ARM: make CRT_LEGACY_WORKAROUND work as intended\n\nTo properly support legacy ARM shared libraries, libc.so needs\nto export the symbols __dso_handle and atexit, even though\nthese are now supplied by the crt startup code.\n\nThis patch reshuffles the existing CRT_LEGACY_WORKAROUND\nconditionally compiled code slightly so it works as the\noriginal author likely intended.\n\nChange-Id: Id6c0e94dc65b7928324a5f0bad7eba6eb2f464b9\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "c23092887fce8bf97ff33f72adf2d454946e7271",
      "tree": "5ab06b362578d2f936e2e322cb96086d965328c8",
      "parents": [
        "404e28ff8c3352a4fa290ae7769922db0172008e"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 28 09:06:07 2012 +0200"
      },
      "committer": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 28 09:55:51 2012 +0200"
      },
      "message": "ARM: remove dummy entries from .so init_array/fini_array\n\nThe runtime linker parses the ELF section headers to\ndiscover the size of the init_array and fini_array, so\nthere is no point in putting NULL terminators at the end.\n\nChange-Id: I3246cd585efce9314155600277dd829e9f37d04f\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "0a150ead18019c0e4e59417ae3c5e8e0d7d2e4f4",
      "tree": "0eb50d447d6cc6f5d8084e4f0dc452c8bc2d74d8",
      "parents": [
        "404e28ff8c3352a4fa290ae7769922db0172008e"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 21 14:47:58 2012 +0200"
      },
      "committer": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Wed Aug 22 20:45:26 2012 +0200"
      },
      "message": "libc: remove ctors/dtors sections\n\nNone of the supported ARCHs actually populate these sections,\nso there is no point in keeping them in the binaries.\n\nChange-Id: I21a364f510118ac1114e1b49c53ec8c895c6bc6b\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "404e28ff8c3352a4fa290ae7769922db0172008e",
      "tree": "7629a8b01649a2cc760e12e3b46c59508ab70fa9",
      "parents": [
        "1bd035cf119a2e4a667f07907c7860e5ec223cee"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Wed Aug 22 10:37:08 2012 +0200"
      },
      "committer": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Wed Aug 22 20:38:54 2012 +0200"
      },
      "message": "hardening: remove pointless ARM __get_pc() function\n\nUseful if you\u0027re trying to defeat ASLR, otherwise not\nso much ...\n\nChange-Id: I17ebb50bb490a3967db9c3038f049adafe2b8ea7\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "5ed48a4d7fece002afbbd2bd981563aea6e52e24",
      "tree": "1e8bfc4f98621e45f7e9cbd4cd0964dde3043b2e",
      "parents": [
        "1bd035cf119a2e4a667f07907c7860e5ec223cee"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 21 11:34:46 2012 +0200"
      },
      "committer": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 21 12:56:05 2012 +0200"
      },
      "message": "ARM: make sure __on_dlclose() actually gets called\n\nChange-Id: I280e5428b0543cccf17ca36baee4865395928cdb\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "b7beb6907599b36809effe1b4db76039ac649518",
      "tree": "6629ebe3ee4167d4383022edf4fa7882144a5445",
      "parents": [
        "6c98cdb1924afd3e71d39904557933fa10adaebf"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Fri Aug 17 12:53:29 2012 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 17 12:44:23 2012 -0700"
      },
      "message": "Add link.h for all platforms with dl_phdr_info\n\nThis header is used on bionic build and should be propagated into\nsysroot on toolchain rebuild. Discussion re. this header is here:\nhttp://gcc.gnu.org/ml/gcc-patches/2012-08/msg00936.html\n\nIt is available already in mips NDK platforms:\ndevelopment/ndk/platforms/android-9/arch-mips/include/link.h\n\nChange-Id: I39ff467cdac9f448e31c11ee3e14a6200e82ab57\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "6eee1fc68f366651379e776e4e3408069772562f",
      "tree": "433070baed2a5fdad07a47ff6144a0a204662412",
      "parents": [
        "a1822dced3ed8625438b3cbf1c53f907f78a3a48"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Aug 10 14:00:17 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Aug 10 14:12:00 2012 -0700"
      },
      "message": "crtend*: Add GNU_STACK note\n\nAdd a GNU_STACK marker to crtend* files. This tells the linker\nthat these files do not require an executable stack.\n\nWhen linking, a missing GNU_STACK marker in any .o file can prevent\nthe compiler from automatically marking the final executable as NX\nsafe (executable stack not required).  In Android, we normally work\naround this by adding -Wa,--noexecstack / -Wl,-z,noexecstack.\nFor files like crtend.S / crtend_so.S, which are included in every\nexecutable / shared library, it\u0027s better to add the GNU_STACK note\ndirectly to the assembly file.  This allows the compiler to\nautomatically mark the final executable as NX safe without any\nspecial command line options.\n\nReferences: http://www.gentoo.org/proj/en/hardened/gnu-stack.xml\n\nChange-Id: I07bd058f9f60ddd8b146e0fb36ba26ff84c0357d\n"
    },
    {
      "commit": "3460db9490d7aee834dc05f99356e44d7549c538",
      "tree": "23031aed7eda4daf2d4280d0ff133207327b2f7b",
      "parents": [
        "f6ee33cee717f9878d3a43bf76c35547649676d7"
      ],
      "author": {
        "name": "Peter Enderborg",
        "email": "peter.enderborg@sonymobile.com",
        "time": "Mon Jul 09 16:17:17 2012 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Fri Jul 27 15:11:01 2012 +0200"
      },
      "message": "bionic: Stack pointer/signal race condition.\n\nMove the stackpointer so a captured signal does not corrupt\nstack variables needed for __thread_entry.\n\nChange-Id: I3e1e7b94a6d7cd3a07081f849043262743aa8064\n"
    },
    {
      "commit": "9d40326830c2bd407427889c554adeb915ee6b4a",
      "tree": "17c901c0eb9768711be1c299178cbd891624281b",
      "parents": [
        "857fc9eab912fbb3f27913c3582ed2268420bce9"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu May 31 11:40:10 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 01 14:41:27 2012 -0700"
      },
      "message": "arm: rewrite crtbegin* as C files.\n\nRewrite\n crtbegin.S     -\u003e crtbegin.c\n crtbegin_so.S  -\u003e crtbegin_so.c\n\nThis change allows us to generate PIC code without relying\non text relocations.\n\nAs a consequence of this rewrite, also rewrite\n  __dso_handle.S    -\u003e __dso_handle.c\n  __dso_handle_so.S -\u003e __dso_handle_so.c\n  atexit.S          -\u003e atexit.c\n\nIn crtbegin.c _start, place the __PREINIT_ARRAY__, __INIT_ARRAY__,\n__FINI_ARRAY__, and __CTOR_LIST__ variables onto the stack, instead of\npassing a pointer to the text section of the binary.\n\nThis change appears sorta wonky, as I attempted to preserve,\nas much as possible, the structure of the original assembly.\nAs a result, you have C files including other C files, and other\nprogramming uglyness.\n\nResult: This change reduces the number of files with text-relocations\nfrom 315 to 19 on my Android build.\n\nBefore:\n  $ scanelf -aR $OUT/system | grep TEXTREL | wc -l\n  315\n\nAfter:\n  $ scanelf -aR $OUT/system | grep TEXTREL | wc -l\n  19\n\nChange-Id: Ib9f98107c0eeabcb606e1ddc7ed7fc4eba01c9c4\n"
    },
    {
      "commit": "83a73d1afe972014f6c8ff2520fe6d3357421f87",
      "tree": "f7aea2d4044d20ff5236f53e0988d296e3ea8bd8",
      "parents": [
        "1ebb243d1ad7b82887b6b09c972f57f4c820a9f1"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed May 30 11:45:12 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed May 30 11:45:12 2012 -0700"
      },
      "message": "crtbegin: eliminate duplicate code\n\ncrtbegin_dynamic and crtbegin_static are essentially identical,\nminus a few trivial differences (comments and whitespace).\n\nEliminate duplicates.\n\nChange-Id: Ic9fae6bc9695004974493b53bfc07cd3bb904480\n"
    },
    {
      "commit": "3ebd31c0a1d343c3fd7845d7b1149e841ad83c6a",
      "tree": "bd45cfd81d7d0adbbc46d5d5ee626e81743cd1e0",
      "parents": [
        "c7882ab2a99a74c8f772ab03fdfd9a3b53515e46"
      ],
      "author": {
        "name": "Henrik Smiding",
        "email": "henrik.smiding@stericsson.com",
        "time": "Fri Nov 05 15:09:37 2010 +0100"
      },
      "committer": {
        "name": "Christian Bejram",
        "email": "christian.bejram@stericsson.com",
        "time": "Sat May 19 14:04:59 2012 +0200"
      },
      "message": "Add optimized version of memcmp for Cortex A9\n\nAdds new code to function memcmp, optimized for Cortex A9.\n\nCopyright (C) ST-Ericsson SA 2010\n\nAdded neon optimization\n\nChange-Id: I8864d277042db40778b33232feddd90a02a27fb0\nAuthor: Henrik Smiding henrik.smiding@stericsson.com for ST-Ericsson.\nSigned-off-by: Christian Bejram \u003cchristian.bejram@stericsson.com\u003e\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": "8034415ddd8404f8788199ed993af89692235dc5",
      "tree": "18342dbe06d1d56229eb1fb49e466b340989d331",
      "parents": [
        "804147cb7d533f5635da6adc28fbca1467a3078b",
        "08e72d0161e39e99ff1003bf1ce894f37d7b7eb4"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu May 10 09:19:59 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu May 10 09:19:59 2012 -0700"
      },
      "message": "resolved conflicts for merge of 08e72d01 to jb-dev-plus-aosp\n\nChange-Id: If00e354a5953ed54b31963d4f8ea77e1603c321e\n"
    },
    {
      "commit": "08e72d0161e39e99ff1003bf1ce894f37d7b7eb4",
      "tree": "87b0528fa23fc00d475454b3585beb4f1f3e7f20",
      "parents": [
        "08b51e2c091d036c124259ae59eb7be6bbe346af"
      ],
      "author": {
        "name": "Prajakta Gudadhe",
        "email": "pgudadhe@nvidia.com",
        "time": "Mon May 07 14:17:44 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed May 09 13:34:31 2012 -0700"
      },
      "message": "bionic: add support for non-NEON memcpy() on NEON SoCs\n\nSome SoCs that support NEON nevertheless perform better with a non-NEON than a\nNEON memcpy().  This patch adds build variable ARCH_ARM_USE_NON_NEON_MEMCPY,\nwhich can be set in BoardConfig.mk.  When ARCH_ARM_USE_NON_NEON_MEMCPY is\ndefined, we compile in the non-NEON optimized memcpy() even if the SoC supports\nNEON.\n\nChange-Id: Ia0e5bee6bad5880ffc5ff8f34a1382d567546cf9\n"
    },
    {
      "commit": "da0d8534f1a6273a383f1dc631fbaf032674bb4d",
      "tree": "a932f1d4194424931c964b96a5f5002b18d3e769",
      "parents": [
        "a674a571dbf0eebf4825f80f3ab229b1d62d49da",
        "08b51e2c091d036c124259ae59eb7be6bbe346af"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Wed May 09 01:48:40 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 01:48:40 2012 -0700"
      },
      "message": "am 08b51e2c: Implement the \"abort\" stub in assembly for ARM.\n\n* commit \u002708b51e2c091d036c124259ae59eb7be6bbe346af\u0027:\n  Implement the \"abort\" stub in assembly for ARM.\n"
    },
    {
      "commit": "eda7be454d6ff8689392442223335c6558bea932",
      "tree": "0120de8417ec3318c3470726455d21790ac37397",
      "parents": [
        "20bea00090e530f2e6f4d97de4b7cf8031b86a86"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue May 08 13:36:37 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 08 14:47:20 2012 -0700"
      },
      "message": "Implement the \"abort\" stub in assembly for ARM.\n\nSo that we can always get the full stack trace regardless of gcc\u0027s handling\nof the \"noreturn\" attribute associated with abort().\n\n(Cherry pick of Id264a5167e7cabbf11515fbc48f5469c527e34d4.)\n\nBug: 6455193\n\nConflicts:\n\n\tlibc/Android.mk\n\nChange-Id: I568fc5303fd1d747075ca933355f914122f94dac\n"
    },
    {
      "commit": "08b51e2c091d036c124259ae59eb7be6bbe346af",
      "tree": "c2ecae1c03f94d025bc3937b8326966f76776a08",
      "parents": [
        "efcf8893a97df2eb2ecb7aab305998878771d2f2"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue May 08 13:36:37 2012 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue May 08 14:39:35 2012 -0700"
      },
      "message": "Implement the \"abort\" stub in assembly for ARM.\n\nSo that we can always get the full stack trace regardless of gcc\u0027s handling\nof the \"noreturn\" attribute associated with abort().\n\n[cherry-picked from master]\n\nBUG:6455193\nChange-Id: I0102355f5bf20e636d3feab9d1424495f38e39e2\n"
    },
    {
      "commit": "e636e1f2c17d7097b6638cb4ae2b4857765b502d",
      "tree": "ff8532ad9959f67f53ad28b4d0c68c5427920eef",
      "parents": [
        "2ddea18f8113549511ad56252913ab9ea250bbbf",
        "8657eafc3552f36c176667c1591beab255308da6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 07 13:59:58 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 07 13:59:58 2012 -0700"
      },
      "message": "am 8657eafc: Merge \"Adjust memcpy for ARM Cortex A9 cache line size\"\n\n* commit \u00278657eafc3552f36c176667c1591beab255308da6\u0027:\n  Adjust memcpy for ARM Cortex A9 cache line size\n"
    },
    {
      "commit": "fe6338da9168330d44b409b2ee36103e8bfe6697",
      "tree": "904bc5df5c840b96996259fb9658b492161117e3",
      "parents": [
        "f7db5ecc4d662da8368f31d57401ca1a39690e40"
      ],
      "author": {
        "name": "Henrik Smiding",
        "email": "henrik.smiding@stericsson.com",
        "time": "Wed Sep 15 16:08:03 2010 +0200"
      },
      "committer": {
        "name": "Christian Bejram",
        "email": "christian.bejram@stericsson.com",
        "time": "Mon May 07 14:18:02 2012 +0200"
      },
      "message": "Adjust memcpy for ARM Cortex A9 cache line size\n\nARM Cortex A8 use 64 bytes and ARM Cortex A9 use 32 bytes cache line\nsize.\n\nThe following patch:\n  Adds code to adjust memcpy cache line size to match A9 cache line\n  size.\n  Adds a flag to select between 32 bytes and 64 bytes cache line\n  size.\n\n  Copyright (C) ST-Ericsson SA 2010\n    Modified neon implementation to fit Cortex A9 cache line size\n    Author: Henrik Smiding henrik.smiding@stericsson.com for\n            ST-Ericsson.\n\nChange-Id: I8a55946bfb074e6ec0a14805ed65f73fcd0984a3\nSigned-off-by: Christian Bejram \u003cchristian.bejram@stericsson.com\u003e\n"
    },
    {
      "commit": "4a9d6e50bb800eeadf579eb36b63e8b2eedb0d43",
      "tree": "237902797b5e2163c27889e4ff1f8ede513d88bb",
      "parents": [
        "762a4fe2eed6a36b14d3b378c2974ad355d97d54"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Apr 18 12:57:40 2012 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Apr 18 12:59:38 2012 +0400"
      },
      "message": "Fix segv when unwinding stack past __libc_init.\n\nThis change mirrors cd15bac for statically-linked binaries.\n\nChange-Id: Id870832a50b37f0ef3e79e1ed03ed31390bfc9ef\n"
    },
    {
      "commit": "d5099016f70b5acbfeb969787687099df703a4f4",
      "tree": "ba32e3aaf26560aea0dff1f399e44f59c2800e70",
      "parents": [
        "470835b215c14aa5ff2368527feeff35bfb46a90",
        "cd15bacf334ab254a5f61c3bba100adde1b6b80a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 12 11:52:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 11:52:44 2012 -0700"
      },
      "message": "Merge \"Fix segv when unwinding stack past __libc_init.\""
    },
    {
      "commit": "470835b215c14aa5ff2368527feeff35bfb46a90",
      "tree": "0d35e1462a36051bf0ab5850b981c54a6ed68c97",
      "parents": [
        "03273f8fc0a7ac2b54fa2c983d4a647580e34458"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 11 14:16:04 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 11 14:24:28 2012 -0700"
      },
      "message": "Move end of __on_dlclose up\n\nThe END macro was put too far down which made the linker complain about\nit. Move up to the end of the code.\n\nChange-Id: Ica71a9c6083b437d2213c7cefe34b0083c78f16b\n"
    },
    {
      "commit": "03273f8fc0a7ac2b54fa2c983d4a647580e34458",
      "tree": "17f5d239e3a94929fdafe78b4358d174e7573c3c",
      "parents": [
        "7f03d2356f1380637d5a38fca20d2cd9b3f6c900"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 10 17:24:24 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 10 17:53:11 2012 -0700"
      },
      "message": "__on_dlclose should be aligned\n\nMarking segments read-only was pushing the alignment of __on_dlclose by\n2 bytes making it unaligned. This change makes sure the ARM code is\naligned to the 4 byte boundary.\n\nBug: 6313309\nChange-Id: Ic2bf475e120dd61225ec19e5d8a9a8b1d0b7f081\n"
    },
    {
      "commit": "cd15bacf334ab254a5f61c3bba100adde1b6b80a",
      "tree": "c01939f5d40d2827551840475b0453affe575f11",
      "parents": [
        "8c4f3ce8d084e3949d77ad8743593b5c83c3d41c"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Apr 10 14:10:11 2012 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Apr 10 16:45:54 2012 +0400"
      },
      "message": "Fix segv when unwinding stack past __libc_init.\n\nThis change fixes a segmentation fault in the libc unwinder when it goes\npast __libc_init.\n\nUnwind instructions for __libc_init direct it to grab the return address from\nthe stack frame. Without this change, the unwinder gets a wild address and\nlooks up further unwind instructions for the routine at that address. If it\u0027s\nunlucky enough to hit an existing function, it will try to unwind it. Bad\nthings happen then.\n\nWith this change, the return address always points to the _start function,\nwhich does not have unwind instructions associated with it. This stop the\nunwind process.\n\n__libc_init never returns, so this does not affect program execution, other\nthan adding 4 bytes on the main thread stack.\n\nChange-Id: Id58612172e8825c8729cccd081541a13bff96bd0\n"
    },
    {
      "commit": "be101bf39aaaaaee3a96d62fbc4c1136548480de",
      "tree": "af2003dd9e75b71015e03dbf4d5e64fe285c3740",
      "parents": [
        "93cb30813764b140f0adbaa620dcdbb1cae56dd8"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Mar 05 10:45:31 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 05 10:45:31 2012 -0800"
      },
      "message": "Revert \"Reference __dso_handle in PIC way\"\n\nThis reverts commit 93cb30813764b140f0adbaa620dcdbb1cae56dd8"
    },
    {
      "commit": "93cb30813764b140f0adbaa620dcdbb1cae56dd8",
      "tree": "3e96ed0c75c2b4e06edfd7fa1d637bc8142f1f4a",
      "parents": [
        "3690bcb217668a26675a7144637a4eed14bf7741"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 02 13:05:25 2012 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 02 13:09:36 2012 -0800"
      },
      "message": "Reference __dso_handle in PIC way\n\nUse the same pattern in atexit.S to reference __dso_handle in a way that\ndoesn\u0027t require a TEXTREL flag to be set.\n\nChange-Id: Id69d20863ee203d2b2f7ef0db230f9b548657741\n"
    },
    {
      "commit": "4fc127345968c0e75775a6377c6f784ae6600cff",
      "tree": "28f49f7aa5dd646e233c95cd967856b31eed7104",
      "parents": [
        "d638a500e96bdfec2bd3e34fc5545561b60cd9e6",
        "58b2c1616bed68fe5a6a1794c8764b24d29ad8cb"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Wed Feb 29 09:40:49 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 09:40:49 2012 -0800"
      },
      "message": "Merge \"Trivial fix in comment\""
    },
    {
      "commit": "f1a17e762b6fab449cff3006178e42b68e8e241e",
      "tree": "65e9434cc213a1710b2c0369d5a1290d16261546",
      "parents": [
        "d6b58b03b8e046e0bd46d6d7e57290dcabe48860"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Feb 22 15:18:54 2012 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Feb 22 15:18:56 2012 -0800"
      },
      "message": "libc: Add __aeabi_llsl and __aeabi_llsr to libgcc_compat\n\nSome platform libraries built for ICS do not work with master\nbecause of some refactoring in frameworks/base.\n\nMake sure that these libgcc symbols are always present in our libc\n\nChange-Id: Ib8d345878be0ba711f051082a778f5cc1f1b3a19\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "58b2c1616bed68fe5a6a1794c8764b24d29ad8cb",
      "tree": "c278335183202451fd6fc0c107300e1dd1fd072d",
      "parents": [
        "d6b58b03b8e046e0bd46d6d7e57290dcabe48860"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Tue Feb 21 15:09:32 2012 -0800"
      },
      "committer": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Tue Feb 21 15:09:32 2012 -0800"
      },
      "message": "Trivial fix in comment\n\nVery, very trivial fix for minor typo in comment about how it works\n\nChange-Id: Ia08d332366837dec8f7e91b9728732c5edea223e\n"
    },
    {
      "commit": "f1a39dce60be0b453416e1b82a6d445a7677eb4b",
      "tree": "8a439b3a8a38480b20cb6e9800d50d0f5e1909a6",
      "parents": [
        "de44d0b2bd32a2c2cc5e2ffb64f8356efd893bca"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Nov 23 14:38:36 2011 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Nov 23 14:38:36 2011 +0100"
      },
      "message": "libc: Fix typo that broke NDK compatibility.\n\nThe function must be named __atomic_cmpxchg, not __android_cmpxchg.\nThis typo broke existing prebuilt binaries (they couldn\u0027t be loaded\nat runtime anymore).\n\nChange-Id: I25ca7d18329817f0056e616a0409113269ad7b1f\n"
    },
    {
      "commit": "de44d0b2bd32a2c2cc5e2ffb64f8356efd893bca",
      "tree": "7b83cab0619d43bef90d24e2590032759d5e1a7d",
      "parents": [
        "95a17848d3a96000f90cdbfc7ff922182f0003b3",
        "0fec6b9d88ee5a9e359b2208038f9806c0804538"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 22 02:10:06 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 22 02:10:06 2011 -0800"
      },
      "message": "Merge \"libc: provide atomic operations will full barriers for NDK apps.\""
    },
    {
      "commit": "10c8ce59a40a1d8ae8f49145eca365b364aabe58",
      "tree": "5157c1d270cda4e2933a0e7fedf8b5ed6b920f96",
      "parents": [
        "4b469eae40368913b2841b390dada6c58296c602"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 18 15:17:07 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 18 16:40:48 2011 -0800"
      },
      "message": "Add tgkill syscall.\n\nUse tgkill instead of tkill to implement pthread_kill.\nThis is safer in the event that the thread has already terminated\nand its id has been reused by a different process.\n\nChange-Id: Ied715e11d7eadeceead79f33db5e2b5722954ac9\n"
    },
    {
      "commit": "0fec6b9d88ee5a9e359b2208038f9806c0804538",
      "tree": "09eeea71b53e27010352ac913e886459f2ed6c6c",
      "parents": [
        "b38522983712432ba143c046343ba4fa01baf7c8"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Nov 16 17:37:15 2011 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Nov 16 17:37:15 2011 +0100"
      },
      "message": "libc: provide atomic operations will full barriers for NDK apps.\n\n__atomic_cmpxchg and other related atomic operations did not\nprovide memory barriers, which can be a problem for non-platform\ncode that links against them when it runs on multi-core devices.\n\nThis patch does two things to fix this:\n\n- It modifies the existing implementation of the functions\n  that are exported by the C library to always provide\n  full memory barriers. We need to keep them exported by\n  the C library to prevent breaking existing application\n  machine code.\n\n- It also modifies \u003csys/atomics.h\u003e to only export\n  always-inlined versions of the functions, to ensure that\n  any application code compiled against the new header will\n  not rely on the platform version of the functions.\n\n  This ensure that said machine code will run properly on\n  all multi-core devices.\n\nThis is based on the GCC built-in sync primitives.\n\nThe end result should be only slightly slower than the\nprevious implementation.\n\nNote that the platform code does not use these functions\nat all. A previous patch completely removed their usage in\nthe pthread and libstdc++ code.\n\n+ rename arch-arm/bionic/atomics_arm.S to futex_arm.S\n+ rename arch-x86/bionic/atomics_x86.S to futex_x86.S\n+ remove arch-x86/include/sys/atomics.h which already\n  provided inlined functions to the x86 platform.\n\nChange-Id: I752a594475090cf37fa926bb38209c2175dda539\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": "487b613e572160e80d0700e1bcd0e405420d14ea",
      "tree": "1b412ce8aa13d2a7eb40005cbfdf24b9851d27a4",
      "parents": [
        "0a1b306fe1e86b4d218506d2d3d3e72df8f795ba"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Oct 04 14:22:15 2011 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Oct 11 12:12:05 2011 +0400"
      },
      "message": "Use ENTRY and EXIT macros for strcmp, memcpy, atexit.\n\nWithout this change strcmp size is zero (not set), and it gets\nignored by Valgrind. Changes to memcpy and atexit don\u0027t affect the\ngenerated binary in any way.\n\nChange-Id: I05818cb5951f75901dc8c0eef02807a2e83a9231\n"
    },
    {
      "commit": "58246b7067b4e1a0b3ce48ccd94331f6fd8fa7cc",
      "tree": "e5f86c8d5a99f7387f28f5b12c06392d381f9dc8",
      "parents": [
        "d50225ad20b4510892dc5f2306b64f04bab6e711"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Aug 22 19:50:51 2011 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Aug 22 19:53:10 2011 +0200"
      },
      "message": "libc: Add __aeabi_f2uiz to libgcc_compat.c\n\nThis patch ensure that __aeabi_f2uiz is embedded in our C library.\nThis is needed to avoid breaking certain applications when they are\nloaded in ICS. It is likely that the issue is due to mis-linked\nbinaries generated with the stand-alone toolchain (the problem\nshould not exist if you use ndk-build), but this fix is easier\nthan asking all app developers to fix their custom build system.\n\nIf you want more technical details, read the comments inside\nlibgcc_compat.c\n\nChange-Id: I59ac1fc781ecb70b90b5573c5a3c67560ca8f270\n"
    },
    {
      "commit": "b489666086265eb756f11fd224137c7e3a03a707",
      "tree": "f6eaf3b51b9edc6e81033ee4b5d089815a25ba20",
      "parents": [
        "d0909a874a0b4e2de1468021942c75712a4463fa",
        "1c0a0381dfb3648ffadef9537ec9383d63d62473"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Thu Jun 23 05:28:13 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 23 05:28:13 2011 -0700"
      },
      "message": "am 1c0a0381: Merge \"Enable functional DSO object destruction\"\n\n* commit \u00271c0a0381dfb3648ffadef9537ec9383d63d62473\u0027:\n  Enable functional DSO object destruction\n"
    },
    {
      "commit": "39640842823ba4cd42bd11514c0da39aa939519f",
      "tree": "c2cddf3319145716533bc9d12ad1d6bb5c047f59",
      "parents": [
        "4d9b75a9b08c19cef81b22f889edba61257fb356"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Mon Jun 20 10:29:50 2011 -0700"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Mon Jun 20 14:44:44 2011 -0700"
      },
      "message": "Enable functional DSO object destruction\n\nUnfortunately, legacy .so files for ARM don\u0027t have a correct crtbegin file.\nConsequently, we have to grandfather the old __dso_handle behaviour.\nAdd some ifdefs for ARM to allow it to use the old code until we can work\nout a transition.\n\nChange-Id: I6a28f368267d792c94e1d985d8344023bc632f6f\nAuthor: H.J. Lu \u003chongjiu.lu@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "a9e409a03530c79bc7ad8144d08e8921ebe0dd02",
      "tree": "1a84390a90eac1aa1ba46c04044134e3f50e81d8",
      "parents": [
        "3f7a3228cdf1a48e379fb297be9114ecd71bff11",
        "a7a9dddb5dfe783d65fec4d3b0dee9f734345a29"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Tue May 17 04:47:09 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 17 04:47:09 2011 -0700"
      },
      "message": "am a7a9dddb: Merge \"bionic: Add ARM optimized strcmp()\"\n\n* commit \u0027a7a9dddb5dfe783d65fec4d3b0dee9f734345a29\u0027:\n  bionic: Add ARM optimized strcmp()\n"
    },
    {
      "commit": "f50e9be5930a08fa825b0c23353c802e11369b14",
      "tree": "7d0c8e2dac5c6711b267850890e0f0ccea943bc6",
      "parents": [
        "3ef36b2115d0802e668e325b59af6ef14d999e71"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jim.huang@linaro.org",
        "time": "Wed Apr 20 15:35:04 2011 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Wed Apr 20 15:39:43 2011 +0800"
      },
      "message": "bionic: Add ARM optimized strcmp()\n\nReference results of the experiments on TI OMAP3430 at 600 MHz\n\n$ bench_strcmp -N \"strcmp_1k\" -s 1k -I 200\n\n[original C code]\n             prc thr   usecs/call      samples   errors cnt/samp     size\nstrcmp_1k      1   1     10.38000          102        0    15000     1024\n\n[ARM optimized code]\n             prc thr   usecs/call      samples   errors cnt/samp     size\nstrcmp_1k      1   1      3.08840           88        0    15000     1024\n\nThe work was derived from ARM Ltd, contributed to newlib, and reworked\nfor Android by Linaro.\n\nChange-Id: Ib0d5755e1eb9adb07d80ef0252f57a5c4c57a425\nSigned-off-by: Jim Huang \u003cjserv@0xlab.org\u003e\n"
    },
    {
      "commit": "3224c08bd77043338ad6e9ecacbd4c118205e873",
      "tree": "6f6df2236615246498645bdc1b40e33551222b07",
      "parents": [
        "0999f8dcf22cd2ca541314a348720aedcf02ae48",
        "fb723c87490b76d1d2fe521886f7cb6c96ed40b7"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 18 15:22:27 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 18 15:22:27 2011 -0800"
      },
      "message": "Merge changes I8c481c89,I791406f8,I5f09cef8\n\n* changes:\n  libc: ARM: update syscalls with new script\n  libc: ARM: add size info to gensyscalls\n  Add function marks and size indications\n"
    }
  ],
  "next": "420878c6908cf9c2862888477ec3f424a06cf172"
}
