)]}'
{
  "log": [
    {
      "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": "20c4a3a8eee5ca8c87ae377732f541baffce1fda",
      "tree": "73b9ac8f6749da7b637f90727f5f7051bf0e36aa",
      "parents": [
        "8784709a2cfe6d32b5fff2c6b826b8d9cbf73d7b"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Wed Nov 28 18:31:14 2012 +0400"
      },
      "committer": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Fri Nov 30 17:41:25 2012 +0400"
      },
      "message": "Replace .S version of x86 crtfiles with .c version\n\nThis patch replaces .S versions of x86 crtfiles with .c which are much\neasier to support. Some of the files are matching .c version of Arm\ncrtfiles. x86 files required some cleanup anyway and this cleanup actually\nled to matching Arm files.\n\nI didn\u0027t change anything to share the same crt*.c between x86 and Arm. I\nprefer to keep them separate for a while in case any change is required\nfor one of the arch, but it\u0027s good thing to do in the following patches.\n\nChange-Id: Ibcf033f8d15aa5b10c05c879fd4b79a64dfc70f3\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "22d366cc09383956dc264ed4641572e609392eee",
      "tree": "8364d1dc738a464cc40bf1ccdaa13ab885f71934",
      "parents": [
        "e1cd69a708d30fbc3b9e0e8d4db67f67fc123b65"
      ],
      "author": {
        "name": "Jin Wei",
        "email": "wei.a.jin@intel.com",
        "time": "Wed Aug 08 15:15:16 2012 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 15 17:04:50 2012 -0700"
      },
      "message": "enable clone system call for x86\n\nAdd __bionic_clone function for x86, which will be\nused for clone system call.\n\nChange-Id: I889dc9bf4b7ebb4358476e17e6f3233e26491f4d\nSigned-off-by: Jin Wei \u003cwei.a.jin@intel.com\u003e\nSigned-off-by: Xiaokang Qin \u003cxiaokang.qin@intel.com\u003e\nSigned-off-by: Beare, Bruce J \u003cbruce.j.beare@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nAuthor-tracking-BZ: 51414\n"
    },
    {
      "commit": "c164f2a9694fa8c373ec72d237ee16b412aa5c53",
      "tree": "dcacd8495782709e5441e349b84168322d069587",
      "parents": [
        "1510795fec5aa8b8700a08200f37f6e57dea8d04"
      ],
      "author": {
        "name": "Jin Wei",
        "email": "wei.a.jin@intel.com",
        "time": "Thu Apr 12 16:50:42 2012 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 03 13:54:29 2012 -0700"
      },
      "message": "bionic: modify syscall to use 6 registers to pass parameter.\n\nKernel allows to use 6 registers(exclude eax) to pass parameter.\nBut in syscall\u0027s implementation, it only uses five registers.\nIt will lead to error when 6 parameters passed.\n\nChange-Id: I92d663194e6334c3847f0c0c257ca3b9dee0edef\nAuthor: Jin Wei \u003cwei.a.jin@intel.com\u003e\nSigned-off-by: Xiaokang Qin \u003cxiaokang.qin@intel.com\u003e\nSigned-off-by: Beare, Bruce J \u003cbruce.j.beare@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nAuthor-tracking-BZ: 30838\n"
    },
    {
      "commit": "405b8029a6888f386adf3512113a33546141d1c8",
      "tree": "1e8e2122e5a6c662235c6729fed6b3d32e4abbb4",
      "parents": [
        "a1c0f08d3ccbe5c40be53903615e59113ade4922"
      ],
      "author": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Wed Jul 25 18:16:42 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 02 16:07:26 2012 -0700"
      },
      "message": "MIPS support for libc.\n\nChange-Id: I2864dea04b3faf2d919165dcaa600af5b16c41c8\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\nSigned-off-by: Raghu Gandham \u003craghu@mips.com\u003e\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": "4e362f230b36596650feaa305bdf5f6af7b634f8",
      "tree": "587dd8a5da3eb158e498b970d22e13118f004e33",
      "parents": [
        "ddb2f135490e4b500e5f06d58997a1102fd6f0b1",
        "cd834618c4752b61d54ff4005a8baa8219b822e4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 22:16:02 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 30 22:16:02 2012 -0700"
      },
      "message": "am cd834618: am 63b14755: Merge \"libc/x86: ensure the stack 16-byte aligned when tasks created\"\n\n* commit \u0027cd834618c4752b61d54ff4005a8baa8219b822e4\u0027:\n  libc/x86: ensure the stack 16-byte aligned when tasks created\n"
    },
    {
      "commit": "cb08204053a285951b1907ef14a832f16a1a4679",
      "tree": "772348f2f3c36865486c8c8a6f380db21c7b647e",
      "parents": [
        "73b5cad989da317cc8089b57ee25f502b1cac71f"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Wed Mar 21 17:48:13 2012 +0800"
      },
      "committer": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Fri Mar 23 20:04:04 2012 +0800"
      },
      "message": "libc/x86: ensure the stack 16-byte aligned when tasks created\n\nCurrently Renderscript sample code RsBalls crashed on x86 when SSE2\nenabled. The root cause is that the stack was not 16-byte aligned\nfrom the beginning when the processes/threads were created, so the\nRsBalls crashed when SSE2 instructions tried to access the variables\non the stack.\n\n- For the thread created by fork():\nIts stack alignment is determined by crtbegin_{dynamic, static}.S\n\n- For the thread created by pthread_create():\nIts stack alignment is determined by clone.S. __thread_entry( ) is\na standard C function. In order to have its stack be aligned with\n16 byte properly, __thread_entry() needs the stack with following\nlayout when it is called:\nlayout #1 (correct)\n--------------\n|            |\n-------------- \u003c--ESP (ECX - 20)\n| ret EIP    |\n-------------- \u003c--ECX - 16\n| arg0       |\n-------------- \u003c--ECX - 12\n| arg1       |\n-------------- \u003c--ECX - 8\n| arg2       |\n-------------- \u003c--ECX - 4\n| unused     |\n-------------- \u003c--ECX (16-byte boundary)\n\nBut it has following layout for now:\nlayout #2: (incorrect)\n--------------\n|            |\n-------------- \u003c--ESP (ECX - 16)\n| unused     |\n-------------- \u003c--ECX - 12\n| arg0       |\n-------------- \u003c--ECX - 8\n| arg1       |\n-------------- \u003c--ECX - 4\n| arg2       |\n-------------- \u003c--ECX (16-byte boundary)\n\nFixed in this patch.\n\nChange-Id: Ibe01f64db14be14033c505d854c73033556ddaa8\nSigned-off-by: Michael Liao \u003cmichael.liao@intel.com\u003e\nSigned-off-by: H.J. Lu \u003chongjiu.lu@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": "7dbbfac0fc7bbca072885185bf9bbee9e2e40e63",
      "tree": "370f409cef0ea8eb6050a16584dff1bb403c5aa3",
      "parents": [
        "76ab561b4dd30711d82060d66b599aece0a40878",
        "5d8fd2a0bc059cd07405a372c98617829f8ac378"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Feb 23 12:34:02 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 23 12:34:02 2012 -0800"
      },
      "message": "am 5d8fd2a0: am a71aefc6: am d041bf20: Merge \"bionic/x86: fix one potential deadlock in __set_tls()\"\n\n* commit \u00275d8fd2a0bc059cd07405a372c98617829f8ac378\u0027:\n  bionic/x86: fix one potential deadlock in __set_tls()\n"
    },
    {
      "commit": "c5393b23f6b7837d3b775e447573180fac4923fc",
      "tree": "ef1204c0a0cf0ae2044f94beeb26e1a6d1465e9e",
      "parents": [
        "f9c5afb1f9d8e615ab98774a10bbf117962db66d"
      ],
      "author": {
        "name": "Jin Wei",
        "email": "wei.a.jin@intel.com",
        "time": "Thu Dec 15 15:49:25 2011 +0800"
      },
      "committer": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Thu Feb 23 17:37:58 2012 +0800"
      },
      "message": "bionic/x86: fix one potential deadlock in __set_tls()\n\nFix bug:\nCurrently the mutex lock _tls_desc_lock is not released\nwhen __set_thread_area() fails. That will leads to the deadlock\nwhen __set_tls( ) is called later on.\n\nChange-Id: Iea3267cb0659971cba7766cbc3346f6924274f86\nSigned-off-by: Jin Wei \u003cwei.a.jin@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": "bec5dec947b1ad097c200888365a3ec61f9e7a28",
      "tree": "ee6d8a4aa949c13c9f2e95da9936972b53ebe242",
      "parents": [
        "338a06f4bcb12c4418e66a6c3210a236259c1bf8",
        "0c3d21e63c6e75ae73aaf2b8d64af0bd8caa6beb"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Wed Nov 30 10:50:59 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 30 10:50:59 2011 -0800"
      },
      "message": "am 0c3d21e6: am e480fc83: bionic: fix pthread_{create, exit}/signal race condition\n\n* commit \u00270c3d21e63c6e75ae73aaf2b8d64af0bd8caa6beb\u0027:\n  bionic: fix pthread_{create, exit}/signal race condition\n"
    },
    {
      "commit": "338a06f4bcb12c4418e66a6c3210a236259c1bf8",
      "tree": "d1fed7584b5cde3b1234f2f84bfe4803775ca70a",
      "parents": [
        "0e0bd586319b25e6e8e797b426a0adcce7612577",
        "621df52644cc19001688c0964ad425c5ed6c8990"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Wed Nov 30 10:50:58 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 30 10:50:58 2011 -0800"
      },
      "message": "am 621df526: am 31e72bc3: bionic: fix __get_tls( ) crash issue\n\n* commit \u0027621df52644cc19001688c0964ad425c5ed6c8990\u0027:\n  bionic: fix __get_tls( ) crash issue\n"
    },
    {
      "commit": "e480fc83b2887388d469eb3bf58c86c610f5b082",
      "tree": "c595c2a61a1a4aa4d5049762a0130af7c0442437",
      "parents": [
        "31e72bc3289acdd85b0b745fbf64c5949ca33432"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Wed Sep 21 12:44:11 2011 +0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Nov 29 17:09:51 2011 -0800"
      },
      "message": "bionic: fix pthread_{create, exit}/signal race condition\n\n(1) in pthread_create:\n    If the one signal is received before esp is subtracted by 16 and\n    __thread_entry( ) is called, the stack will be cleared by kernel\n    when it tries to contruct the signal stack frame. That will cause\n    that __thread_entry will get a wrong tls pointer from the stack\n    which leads to the segment fault when trying to access tls content.\n\n(2) in pthread_exit\n    After pthread_exit called system call unmap(), its stack will be\n    freed.  If one signal is received at that time, there is no stack\n    available for it.\n\nFixed by subtracting the child\u0027s esp by 16 before the clone system\ncall and by blocking signal handling before pthread_exit is started.\n\nAuthor: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "31e72bc3289acdd85b0b745fbf64c5949ca33432",
      "tree": "e67e3743e9ceeeb8afdfe25121fbe62dc1608bce",
      "parents": [
        "897815a1feff230be3ea42655a77dcbb9a8dcca9"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Mon Aug 01 18:44:55 2011 +0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Nov 29 17:09:15 2011 -0800"
      },
      "message": "bionic: fix __get_tls( ) crash issue\n\nWhen running the stress test of pthread create/destroy, a crash may\noocur in __get_tls(). That is caused by the race condition with __set_tls( ):\n\nAuthor: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\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": "f5aa1382ec7592c58827ed0822c77cb5bf8df165",
      "tree": "1c5fb68a7ab535feaa5e52e0a3e918250452ebd2",
      "parents": [
        "023c49882e247bd0345946c908cff231ebf7097e",
        "5288fee835a6e52d7870b3ee3320a5a3ddb96f34"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Fri Aug 05 08:08:57 2011 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Fri Aug 05 08:08:57 2011 -0700"
      },
      "message": "Merge \"x86 libc: Fix the range to check the error\""
    },
    {
      "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": "5288fee835a6e52d7870b3ee3320a5a3ddb96f34",
      "tree": "fc4873177ed29e26e020f5bed1a4d662dd9ba5cb",
      "parents": [
        "4d9b75a9b08c19cef81b22f889edba61257fb356"
      ],
      "author": {
        "name": "Jun Nakajima",
        "email": "jun.nakajima@intel.com",
        "time": "Fri Jun 17 14:37:50 2011 -0700"
      },
      "committer": {
        "name": "Jun Nakajima",
        "email": "jun.nakajima@intel.com",
        "time": "Fri Jun 17 14:37:50 2011 -0700"
      },
      "message": "x86 libc: Fix the range to check the error\n\nThe spec says \"A value in the range between -4095 to -1 indicates an error\" (not -129).\nThis was pointed out in the comment in 22039.\n\nChange-Id: I11b7c45015a9e4ccf09aed5364a889437eab6ab8\nSigned-off-by: Jun Nakajima \u003cjun.nakajima@intel.com\u003e\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": "dc3bc87b43d0d73d89cca59692b80de878e11a5d",
      "tree": "8f67ff271139055a7dd842b11028f00b86abc4bc",
      "parents": [
        "9062a2369107eadb2b45973adc3246cba35640e6"
      ],
      "author": {
        "name": "Mark D Horn",
        "email": "mark.d.horn@intel.com",
        "time": "Tue Apr 26 14:05:30 2011 -0700"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Tue May 24 13:31:50 2011 -0700"
      },
      "message": "Update X86 Bionic CRT files for unwind/exceptions\n\nSeveral updates to Bionic crt*.o files to implement Linux/x86\nstack unwind/exception handling.\nMark __dso_handle as hidden.\nNote: Requires complete rebuild due to CRT changes. Google will\nneed to regenerate and check-in all the prebuilt x86 CRT object\nfiles and libraries which link to them.\n\nChange-Id: I191ce1afb0dee7bbc28dcd9694e5919226dbd070\nSigned-off-by: Bruce J Beare \u003cbruce.j.beare@intel.com\u003e\nSigned-off-by: Mark D Horn \u003cmark.d.horn@intel.com\u003e\nAuthor: Lu, Hongjiu \u003chongjiu.lu@intel.com\u003e\n"
    },
    {
      "commit": "8488efaa0913f8484cbfdb61180e47bc19fff5d8",
      "tree": "bd9db56eb6b7dc84e2fdb50178f23c6ac6a9b7b2",
      "parents": [
        "0e47a919f413ff14a540a0dbad873ee8f834b210"
      ],
      "author": {
        "name": "Kan-Ru Chen",
        "email": "kanru@0xlab.org",
        "time": "Tue Mar 29 12:00:38 2011 +0800"
      },
      "committer": {
        "name": "Chih-Wei Huang",
        "email": "cwhuang@linux.org.tw",
        "time": "Tue Mar 29 13:16:42 2011 +0800"
      },
      "message": "x86 libc: fix the wrong return value of syscall\n\nAccording to Intel ABI spec, there is no need to save %eax, %ecx, %edx\non the stack. Worse, popping %eax will wipe out the return value.\n\nChange-Id: Ida536c3b98174b8deef88f8f3b9352eaaeb7c0c0\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": "f4680b57eda711058e7d68b3075c78b9be8dcaf0",
      "tree": "19fbdfab43d8244420b1a12aeaed3865cbfaa6f3",
      "parents": [
        "0f2001b1478ae1e10be4418e96aa20874eda3af2"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Thu Jan 27 10:25:33 2011 -0800"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Thu Feb 03 12:21:04 2011 -0800"
      },
      "message": "Remove an extra register move.\n\nChange-Id: I63c217b73203b44b1a2e74950b58f2ec12989cab\nAuthor: H.J. Lu \u003chjl.tools@gmail.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "0f2001b1478ae1e10be4418e96aa20874eda3af2",
      "tree": "5b959673041e2b88165ce66d24c5ed480b20eb02",
      "parents": [
        "f6ccc15457f05d0c0ced683ffe01cd014c491fe6"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Thu Jan 27 10:24:52 2011 -0800"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Thu Feb 03 12:21:03 2011 -0800"
      },
      "message": "Replace __atomic_XXX with GCC __sync_XXX intrinsics.\n\nChange-Id: I14f275392fcd70cc15e307470e0a099777c7c09e\nAuthor: H.J. Lu \u003chjl.tools@gmail.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "18635d9c173120f6f97dd9b035b6f9a1ebfcd1a3",
      "tree": "3aed78b3675330e0ebf4dc2863a8bb8e020ad3b9",
      "parents": [
        "a4f6d2281f979c013080e28b1f658c2ba9a8e9f3"
      ],
      "author": {
        "name": "Chih-Wei Huang",
        "email": "cwhuang@linux.org.tw",
        "time": "Tue Dec 14 17:55:23 2010 +0800"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Sun Dec 26 09:22:13 2010 -0800"
      },
      "message": "android-x86: add sigsetjmp.S\n\nIt adds two functions sigsetjmp and siglongjmp\nthat fix compiling errors in bluetooth and mksh.\n\nCopy directly from sigsetjmp.S of OpenBSD.\n\nChange-Id: I4696f82ee6f85d1c93cbdd3c9e40f4917d50f3a6\n"
    },
    {
      "commit": "16984423bc67cd334d74b585bac2c01e44583624",
      "tree": "8fd5c4ec23fbbe60c0b13322fa48825d61eb4b28",
      "parents": [
        "6fce15cea1145c0359b7103305e215e3e2d1b548"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "brucex.j.beare@intel.com",
        "time": "Fri Jun 25 09:02:10 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 08 11:12:36 2010 -0700"
      },
      "message": "Fix missing NL\n\nChange-Id: Ic210fe9f740b9a8235a66d479ad4eddc869998bb\nSigned-off-by: Bruce Beare \u003cbrucex.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "3b43f87d2949a340e2c19cb735af7727157d8274",
      "tree": "ee57622555c0a91461f86ba7201863665380f0c3",
      "parents": [
        "e8f79c1f5de7ecaf1249ee36813abd2558cacf08"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Jul 01 23:09:28 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Jul 01 23:09:28 2010 -0700"
      },
      "message": "Allow dlclose() to properly call static C++ destructors.\n\nWith this patch _and_ an upcoming build/ patch, the destruction\nof static C++ objects contained in shared libraries will happen\nproperly when dlclose() is called.\n\nNote that this change introduces crtbegin_so.S and crtend_so.S which\nare currently ignored by the build system.\n\n+ move definition of __dso_handle to the right place\n(before that, all shared libraries used the __dso_handle\nglobal variable from the C library).\n\nNote that we keep a \u0027weak\u0027 __dso_handle in aeabi.c to avoid\nbreaking the build until the next patch to build/core/combo/\nappears. We will be able to remove that later.\n\n+ move bionic/aeabi.c to arch-arm/bionic/ (its proper location)\n\nNOTE: The NDK will need to be modified to enable this feature in\n         the shared libraries that are generated through it.\n\nChange-Id: I99cd801375bbaef0581175893d1aa0943211b9bc\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": "88f06cd84a70f8a5212cb03272ec2c7cf0017afa",
      "tree": "4ff0a88177cd5fb2ca9c0e6df9a331cea7ecad1c",
      "parents": [
        "ee7b077abf1d99503b986489ad93374a057cb354"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 17:13:41 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 17:13:41 2010 -0700"
      },
      "message": "Use private futexes for pthread_mutex_t.\n\nThis does not change the implementation of conditional variables\nsince we\u0027re waiting for other system components to properly use\npthread_condattr_init/setpshared before that.\n\nAlso remove an obsolete x86 source file.\n\nChange-Id: Ia3e3fbac35b87a534fb04d4381c3c66b975bc8f7\n"
    },
    {
      "commit": "8641833b62e3b319796dc80ea16eb1592c05edf6",
      "tree": "f0b9b778513da0e049ce1b4c706ae5000848d7c1",
      "parents": [
        "ba9c6f0989ae94778ba2b9f597adc827c9dc81e8"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Mar 11 14:47:47 2010 -0800"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Mar 11 14:47:47 2010 -0800"
      },
      "message": "Revert \"bionic: pthread: use private futexes by default for mutexes and condvars\"\n\nThis reverts commit ba9c6f0989ae94778ba2b9f597adc827c9dc81e8.\n"
    },
    {
      "commit": "ba9c6f0989ae94778ba2b9f597adc827c9dc81e8",
      "tree": "2376f2a87f6ac304bd93beca7c8139b890a6227f",
      "parents": [
        "1cfbda826ce66e9bd1507a31b7e6df62e0dbcc6e"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Mar 10 16:44:08 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 11 11:48:38 2010 -0800"
      },
      "message": "bionic: pthread: use private futexes by default for mutexes and condvars\n\nPrivate futexes are a recent kernel addition: faster futexes that cannot be\nshared between processes. This patch uses them by default, unless the PROCESS_SHARED\nattribute flag is used when creating a mutex and/or conditional variable.\n\nAlso introduces pthread_condattr_init/destroy/setpshared/getpshared.\n\nChange-Id: I3a0e2116f467072b046524cb5babc00e41057a53\n"
    },
    {
      "commit": "3c543e1da9a2780a70b25299f39734bf0a18c4a0",
      "tree": "07780890d546321d9426758f629f5a951b5a2eeb",
      "parents": [
        "58060c50bc4228a7d0253338cae0437211759959"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "brucex.j.beare@intel.com",
        "time": "Thu Mar 04 10:29:38 2010 -0800"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "brucex.j.beare@intel.com",
        "time": "Thu Mar 04 10:29:38 2010 -0800"
      },
      "message": "x86 syscall system call implementation\n"
    },
    {
      "commit": "97cf7f3394780d524038fc083e2c134031b54728",
      "tree": "40b61956bbe4d28babe839c3be40e9f114810e5f",
      "parents": [
        "1a2917ca954f575cc9698c99e54bd93087793c8f"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jan 22 18:59:05 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jan 25 11:18:30 2010 -0800"
      },
      "message": "Implement clone() C library function properly.\n\nOnly provide an implementation for ARM at the moment, since\nit requires specific assembly fragments (the standard syscall\nstubs cannot be used because the child returns in a different\nstack).\n"
    },
    {
      "commit": "3a654b1e04d4275ae315cfe1b196998acf10052c",
      "tree": "79ce08ac573c6c5bd7d7a65f7fdc24237c00452a",
      "parents": [
        "03eabfe65e1e2c36f4d26c78a730fa19a3bdada3"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 03 19:32:37 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 03 19:32:37 2009 +0200"
      },
      "message": "Revert \"Fix the C library initialization to avoid calling static C++ constructors twice.\"\n\nThis reverts commit 03eabfe65e1e2c36f4d26c78a730fa19a3bdada3.\n"
    },
    {
      "commit": "03eabfe65e1e2c36f4d26c78a730fa19a3bdada3",
      "tree": "b965ea27e54b0833639227c619f6e35647c92510",
      "parents": [
        "0353195f344666256dba474a15c9ba22cf0cccc9"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu May 28 15:54:03 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 02 23:27:44 2009 +0200"
      },
      "message": "Fix the C library initialization to avoid calling static C++ constructors twice.\n\nThe problem was due to the fact that, in the case of dynamic executables,\nthe dynamic linker calls the DT_PREINIT_ARRAY, DT_INIT and DT_INIT_ARRAY\nconstructors when loading shared libraries and dynamic executables,\n*before* calling the executable\u0027s entry point (i.e. arch-$ARCH/bionic/crtbegin_dynamic.c)\nwhich in turns call __libc_init() in libc.so, as defined by bionic/libc_init_dynamic.c\n\nThe latter did call these constructors array again, mistakenly.\n\nThe patch also updates the documentation of many related functions.\n\nAlso adds a new section to linker/README.TXT explaining restrictions on\nC library usage.\n\nThe patch has been tested on a Dream for stability issues with\nproprietary blobs:\n\n- H264 decoding works\n- Camera + Video recording works\n- GPS works\n- Sensors work\n\nThe tests in system/extra/tests/bionic/libc/common/test_static_cpp_mutex.cpp has been\nrun and shows the static C++ constructor being called only once.\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "4e468ed2eb86a2406e14f1eca82072ee501d05fd",
      "tree": "4e05b3c66eef86531e464521a3bf96a1864d4bf5",
      "parents": [
        "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
