)]}'
{
  "log": [
    {
      "commit": "13e8dcbdc9f0b3d95cac1a234730061c9b1ae6f4",
      "tree": "0c17f125a779e03f9911ce092e16b0ada1aa2920",
      "parents": [
        "a02d631163860c795cac7a0428ad8abb9ed3b747"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Sep 19 16:29:12 2018 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Sep 20 12:20:12 2018 -0700"
      },
      "message": "[hwasan] Tweak process and thread initialization.\n\nMake sure that TLS_SLOT_TSAN is always available and correctly set up in\nHWASan-instrumented functions by setting up the tls register and running hwasan\ninitialization (__hwasan_init in the main thread and __hwasan_thread_enter in\nsecondary) early enough.\n\nThis is needed to accomodate a change in HWASan: https://reviews.llvm.org/D52249\n\nBug: 112438058\nTest: boot with SANITIZE_TARGET\u003dhwaddress, run bionic-tests\nChange-Id: Icd909a4ea0da6c6c1095522bcc28debef5f2c63d\n"
    },
    {
      "commit": "fa432524a66e5797874ef50e4ede95ded4cee199",
      "tree": "63ae5385f8966b7dd107ed3e73b1d1043b8cb708",
      "parents": [
        "ae7483db2a6a93c0cb0c0eebc26f64b23168c6d3"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Oct 25 13:07:45 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Oct 27 10:01:46 2017 +0200"
      },
      "message": "Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols\n\nTo make it easier for Native Bridge implementations\nto override these symbols.\n\nBug: http://b/67993967\nTest: make\nChange-Id: I4c53e53af494bca365dd2b3305ab0ccc2b23ba44\n"
    },
    {
      "commit": "93ea09f65c59585c082797bbfa4f4c7778d6e8b9",
      "tree": "635acc213edb1ed30cf595c4cb1f183bc0abc290",
      "parents": [
        "7c6784061dca3e36b6c80973573a0bea8896d585"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 05 15:18:47 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 05 15:18:47 2017 -0700"
      },
      "message": "Add directives to force stop unwinding.\n\nOn aarch64/x86/x86_64 add a macro that inserts a cfi directive that will\nstop unwinding.\n\nFor arm, clang doesn\u0027t allow emitting .cantunwind, so add a comment and\nleave it the same as it current is.\n\nAdd this macro to __libc_init and __start_thread.\n\nAlso, remove duplicate compilation of libc_init_static.cpp that already\nincludes the static library that includes that file.\n\nBug: 15469122\n\nTest: Did unwinds using new unwinder tool (unwind) and debuggerd -b\nTest: and verified new unwinder works on aarch64/x86/x86_64.\nTest: Verified that it works on old unwinder for aarch64/x86, but\nTest: x86_64 doesn\u0027t work properly, but as well as before.\nChange-Id: I77302e8f6c7ba1549d98a4a164106ee82c9ecadc\n"
    },
    {
      "commit": "d7c52625f2da8322b4f0adb4c67674f0d66e619a",
      "tree": "a885e0530cb1a26a5a1fd0dee7477ef02dcb4833",
      "parents": [
        "b1b7eda11e4f66b608ae66945ddf87cbe31ecb47"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 20 14:26:56 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 20 14:58:16 2017 -0700"
      },
      "message": "Shave another uninteresting stack frame off aborts.\n\nWith this, stack frame 0 is the abort, not tgkill.\n\narm:\n\n     #00 pc 0001a41c  /system/lib/libc.so (abort+63)\n\narm64:\n\n     #00 pc 000000000001d75c  /system/lib64/libc.so (abort+120)\n\nAlso \"include what you use\" for \u003csys/syscall.h\u003e.\n\nBug: N/A\nTest: ran `crasher abort` and `crasher64 abort`\nChange-Id: I6517ac67b39b4133e890d52efc115071c812958b\n"
    },
    {
      "commit": "e462117087b5fa34ec6c1ca22c84b2a34b9ab95c",
      "tree": "96e177dcdd36a2cc1874481819da3abee2829200",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Thu Nov 03 15:00:53 2016 -0400"
      },
      "committer": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Fri Nov 04 16:57:20 2016 -0400"
      },
      "message": "Set __get_thread()-\u003etid as part of clone().\n\nThis was previously done only in fork() and pthread_create(), but this left raw\nclone() with an invalid cached tid. Since the tid is used for pthread routines,\nthis led to unstable behavior after clone().\n\nTest: ltp clone01 (see bug for more)\nTest: mmma bionic/tests\nTest: bionic-unit-tests-static --gtest_filter\u003d*fork*:*clone*\n\nBug: 32612735\nBug: 32305649\nChange-Id: I30eae5a8024b4c5da65476fcadfe14c6db35bb79\n"
    },
    {
      "commit": "a4edf7a57cf818d19546c86b74146335468ea53f",
      "tree": "1199a22df4fe7e794399611016d0a6cf7561b497",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Tue Oct 25 10:29:02 2016 -0400"
      },
      "committer": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Fri Oct 28 12:14:23 2016 -0400"
      },
      "message": "Fix gettid() after clone().\n\nThe tid is cached in the pthread_internal_t and is properly re-set after fork()\nand pthread_create(). But after a plain clone() the value is stale from the\nparent.\n\nTest: mmma bionic/tests\nTest: bionic-unit-tests-static --gtest_filter\u003d*fork*:*clone*\nTest: m checkbuild tests\nTest: angler boots\n\nBug: 32305649\nChange-Id: I026d416d1537484cd3e05c8493a35e5ed2acc8ed\n"
    },
    {
      "commit": "e104a2edf3c459b2e79e86d4de388fb7a1efe198",
      "tree": "4f50d2627e6f47f6908561114d95b32a168691bc",
      "parents": [
        "5ac45a2add41fd7c1640815accf09a29bd14aac6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 06 15:55:36 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 06 16:37:00 2016 -0700"
      },
      "message": "Generalize the clone function slightly.\n\n* Allow clone where both the child function and stack are null. It\u0027s\nobviously wrong to ask to call a function without a stack, but it\u0027s not\nnecessarily wrong to supply no stack if you\u0027re also not supplying a\nfunction.\n\n* Reimplement fork in terms of the clone function, rather than using the\nclone system call directly.\n\nThis is intended as a step towards enabling use of pid namespaces.\n\nChange-Id: I03c89bd1dc540d8b4ed1c8fdf6644290744b9e91\n"
    },
    {
      "commit": "fb23fa30465e14b5dbf0e9de2a34c1cbe113e971",
      "tree": "9b0d9883c85ff042a3a685a20f217debcfeaf089",
      "parents": [
        "e725dc164015d873b64639f0fee9ba5c30175f4c"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Wed Mar 23 17:15:02 2016 -0700"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Mar 24 16:37:20 2016 -0700"
      },
      "message": "clone: check for NULL child stack\n\nThe clone syscall accepts NULL child stacks, interpreting this to mean\nthe child gets a copy of the parent\u0027s stack with copy-on-write\nsemantics.  However clone(2) is explicitly documented to treat this an\nan error.\n\n\"Fortunately\" every architecture\u0027s __bionic_clone implementation pushes\nsomething onto the child stack before making the clone syscall.  So we\nknow fixing this won\u0027t break legacy apps, because any app that tried\nusing a NULL child stack would have died with SIGSEGV.\n\nThis change fixes the LTP clone04 testcase.\n\nChange-Id: I663b34f34bc8dad2aa405c46e4eed4418cccca0d\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "5f5cc45cf0e027f6ca503dc229a4890fc7164b66",
      "tree": "36bebf629f486d24d8287e7a735662b0269044a6",
      "parents": [
        "205cc41556d44b104a21bc6839b7ea44f72df9ba"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 18 16:04:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 18 16:04:03 2014 -0700"
      },
      "message": "Fix \u003cfeatures.h\u003e (_BSD_SOURCE and _GNU_SOURCE).\n\n\u003cfeatures.h\u003e is supposed to take user-settable stuff like _GNU_SOURCE\nand _BSD_SOURCE and turn them into __USE_GNU and __USE_BSD for use in\nthe C library headers. Instead, bionic used to unconditionally define\n_BSD_SOURCE and _GNU_SOURCE, and then test _GNU_SOURCE in the header\nfiles (which makes no sense whatsoever).\n\nBug: 14659579\nChange-Id: Ice4cf21a364ea2e559071dc8329e995277d5b987\n"
    },
    {
      "commit": "fa9e16efaf0e885f6044e725eb759ef6de10f7ef",
      "tree": "b2788038c17cde5a1d53c13a51d6a16868bd229f",
      "parents": [
        "0d7415fb225573c37ff9e880957cd2044dd658ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 23 17:49:45 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 23 17:49:45 2014 -0700"
      },
      "message": "Fix getpid caching across a clone.\n\nIf you make clone, fork, or vfork system calls directly, you\u0027re still\non your own, but we now do the right thing for the clone wrapper.\nWith this implementation, children lose the getpid caching, but we\u0027ve\nno reason to think that that covers any significant use cases.\n\nBug: 15387103\nChange-Id: Icfab6b63c708fea830960742ec92aeba8ce7680d\n"
    },
    {
      "commit": "ebc8cd117a562f387c52ed4e1aeba0fb21f33194",
      "tree": "f271f020ad489e0c6dddb6c2f4135963f8bec9bd",
      "parents": [
        "b837767a63dfc65653448cf732090d7d0b270080"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 15:18:54 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 15:18:54 2014 -0700"
      },
      "message": "Rename __bionic_clone_entry to __start_thread.\n\nThis seems a bit less obscure.\n\nChange-Id: I7dc528c253b73c861694f67556ad8f919bf92136\n"
    },
    {
      "commit": "6203e7b853a587fbd70cea2e58b63ae38a71a13e",
      "tree": "e13aad8c180100b87e7a24c2ae5292c81599d223",
      "parents": [
        "3a3b27e04df395b789b92af3d0ed05d2a0f3bf04"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 30 14:49:00 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 30 15:56:25 2014 -0700"
      },
      "message": "Add some missing __noreturn attributes.\n\nThis is more honest, and lets us remove a hack.\n\nChange-Id: I309f064743ded5248573ccafc379f78d417db08d\n"
    },
    {
      "commit": "0d236aa3f1e6d31b0c729448ae9d3ed1cad23fb4",
      "tree": "1370d62648bdbe2be69259ed593274d23851c8c6",
      "parents": [
        "8fa5c2528c04df00f9f9a3dc4047ae88d3f13524"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 09 14:42:16 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 09 17:06:51 2014 -0700"
      },
      "message": "Align the child stack in clone(2).\n\nAlso let clone(2) set the TLS for x86.\n\nAlso ensure we initialize the TLS before we clone(2) for all architectures.\n\nChange-Id: Ie5fa4466e1c9ee116a281dfedef574c5ba60c0b5\n"
    },
    {
      "commit": "954cf0d4e2669f91194b45f484152e47efa4f6c7",
      "tree": "a367f6590dcf1723983c7396a63bb6174b94b8e9",
      "parents": [
        "170daa042cb0ef3e5d7839f79d052a683b3c670f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 08 19:00:23 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 08 19:00:23 2014 -0700"
      },
      "message": "Hide the __bionic_clone and __bionic_clone_entry implementation details.\n\nclone(2) is the public symbol.\n\nAlso switch a test from __bionic_clone to clone; testing public API\nmeans the test now works on glibc too.\n\nChange-Id: If59def26a00c3afadb8a6cf9442094c35a59ffde\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": "6b53c2349a5a3fc70a475de6a66131b615e88e48",
      "tree": "3e06ca4bee68b07b1ea57cb564fed82333e997be",
      "parents": [
        "bbefbf1a75052e4c887309299fb4532705aa843d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 22:36:58 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 22:41:50 2013 -0700"
      },
      "message": "Fix the exit syscall stub\u0027s name.\n\nI\u0027ve left the exit_group syscall as _exit because otherwise we\u0027d have to\nconvince the compiler that our _exit (which just calls __exit_group) is\nactually \"noreturn\", and it seems like that would be less clean than just\ncutting out the middleman.\n\nWe\u0027ll just have to trust ourselves not to add anything to SYSCALLS.TXT\nthat ought to be private but that only has a single leading underscore.\nHopefully we can manage that.\n\nChange-Id: Iac47faea9f516186e1774381846c54cafabc4354\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": "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": "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": "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"
    }
  ]
}
