)]}'
{
  "log": [
    {
      "commit": "5ddbb3f936ee44555a46020239e49ab45109a806",
      "tree": "70395ecf0897580781856c68cbcd57019ff831e3",
      "parents": [
        "4bd8f9637daaada333ff35945b00cfe6cb822376"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 20:35:32 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Apr 14 13:32:09 2015 -0700"
      },
      "message": "Prevent using static-allocated pthread keys before creation.\n\nBug: 19993460\n\nChange-Id: I244dea7f5df3c8384f88aa48d635348fafc9cbaf\n"
    },
    {
      "commit": "5e2bd719d7dd19afe55f8d4f24366c0230e0e6c7",
      "tree": "14589a831046110c8cc6221cd1ee90226e899b4b",
      "parents": [
        "04bbef377b9941bf6d67d9c515b6640a314fb032"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Feb 20 16:15:33 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 03 15:46:53 2015 -0800"
      },
      "message": "Refactor pthread_key.cpp to be lock-free.\n\nChange-Id: I20dfb9d3cdc40eed10ea12ac34f03caaa94f7a49\n"
    },
    {
      "commit": "246bcb10b64d4b02a40f5d4c744640c1fb7183e5",
      "tree": "5d79944be3147a1ff7fa7d3ce8849a3f8593703a",
      "parents": [
        "8cf1b305670123aed7638d984ca39bfd22388440"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Dec 19 16:31:03 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Dec 19 16:31:03 2014 -0800"
      },
      "message": "Remove t-\u003etls\u003d\u003dNULL check in pthread_key_delete.\n\nChange-Id: I6c0c71d30fe9d5b888752a4204abd95d5149bb96\n"
    },
    {
      "commit": "75ef63d6cf83787233d1c45489c4ec03b0a67d16",
      "tree": "af1358c723e21ebfbd48a4dfd2abc3f262cb309d",
      "parents": [
        "f6640348876cd1d4d43cc95cf63306fedb83d8b9"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 21 00:18:07 2014 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 21 10:26:09 2014 -0800"
      },
      "message": "Move some pthread functions to signal.h.\n\nPOSIX specifies that pthread_kill(3) and pthread_sigmask(3) are\nsupposed to live in signal.h rather than pthread.h.\n\nSince signal.h now needs pthread_t and pthread_attr_t, I\u0027ve moved\nthose defintions into include/machine/pthread_types.h to keep the\nnamespace clean. I also sorted some includes. The combination of these\ntwo things seems to have exploded into a cascade of missing includes,\nso this patch also cleans up all those.\n\nChange-Id: Icfa92a39432fe83f542a797e5a113289d7e4ad0c\n"
    },
    {
      "commit": "1728b2396591853345507a063ed6075dfd251706",
      "tree": "7083cd234073afa5179b94b3d978550c890af90c",
      "parents": [
        "bac795586bbc5dcbe886d8d781710f60c4c19d9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "message": "Switch to g_ for globals.\n\nThat\u0027s what the Google style guide recommends, and we\u0027re starting\nto get a mix.\n\nChange-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc\n"
    },
    {
      "commit": "877ec6d90418ff1d6597147d355a2229fdffae7e",
      "tree": "e475221a7fbff1564ad37548e920333c49cc5873",
      "parents": [
        "f246c589d66e5dc0e3cddc3c37261fb0e3fc67e9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 17:40:18 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 18 19:48:11 2013 -0800"
      },
      "message": "Fix pthread_join.\n\nLet the kernel keep pthread_internal_t::tid updated, including\nacross forks and for the main thread. This then lets us fix\npthread_join to only return after the thread has really exited.\n\nAlso fix the thread attributes of the main thread so we don\u0027t\nunmap the main thread\u0027s stack (which is really owned by the\ndynamic linker and contains things like environment variables),\nwhich fixes crashes when joining with an exited main thread\nand also fixes problems reported publicly with accessing environment\nvariables after the main thread exits (for which I\u0027ve added a new\nunit test).\n\nIn passing I also fixed a bug where if the clone(2) inside\npthread_create(3) fails, we\u0027d unmap the child\u0027s stack and TLS (which\ncontains the mutex) and then try to unlock the mutex. Boom! It wasn\u0027t\nuntil after I\u0027d uploaded the fix for this that I came across a new\npublic bug reporting this exact failure.\n\nBug: 8206355\nBug: 11693195\nBug: https://code.google.com/p/android/issues/detail?id\u003d57421\nBug: https://code.google.com/p/android/issues/detail?id\u003d62392\nChange-Id: I2af9cf6e8ae510a67256ad93cad891794ed0580b\n"
    },
    {
      "commit": "e48b68570d872ef7ece1d873c0ea298ea76393f3",
      "tree": "8c6d8721af2bfddd2c649a0d887a4a905358da04",
      "parents": [
        "e39e3a77d6e8cf681718a572bc754fd64dfc87ff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 14:57:45 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 14:57:45 2013 -0800"
      },
      "message": "Clean up the pthread_create trampoline.\n\nBug: 8206355\nBug: 11693195\nChange-Id: I35cc024d5b6ebd19d1d2e45610db185addaf45df\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": "2a0b873065edb304fa2d1c54f8de663ea638b8ab",
      "tree": "4753b74b87e713379965bb051482036e6726afb1",
      "parents": [
        "777a4ee6771e6fe3362ef4f24244a44fcd0aabe4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 18:50:24 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 13:39:13 2013 -0700"
      },
      "message": "Fix __errno for LP64 and clean up __get_tls.\n\nIf __get_tls has the right type, a lot of confusing casting can disappear.\n\nIt was probably a mistake that __get_tls was exposed as a function for mips\nand x86 (but not arm), so let\u0027s (a) ensure that the __get_tls function\nalways matches the macro, (b) that we have the function for arm too, and\n(c) that we don\u0027t have the function for any 64-bit architecture.\n\nChange-Id: Ie9cb989b66e2006524ad7733eb6e1a65055463be\n"
    },
    {
      "commit": "405f8553cf19c583158d59ab44a5d668eade360d",
      "tree": "971ae2a0ed75041cfdd41a8a61352da7644820c2",
      "parents": [
        "b2acd5ded1e801fb1379ec51c6f43eab63af50f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 01 17:25:28 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 01 17:25:28 2013 -0700"
      },
      "message": "Remove more assumptions that pointers are 32-bit.\n\nChange-Id: I2157e2fc4db7692b746c697982c3d028a056462a\n"
    },
    {
      "commit": "0f020d18b138e24b1fe34074808e07ac412f35a4",
      "tree": "75e84d43c82a0e8013d7b1c34d4da1fec64e116c",
      "parents": [
        "6a44d2271f372d0c65b05a5d3377bd00ce92824e"
      ],
      "author": {
        "name": "msg555",
        "email": "msg555@gmail.com",
        "time": "Thu Jun 06 14:59:28 2013 -0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 17:30:58 2013 -0700"
      },
      "message": "Handles spurious wake-ups in pthread_join()\n\nRemoved \u0027join_count\u0027 from pthread_internal_t and switched to using the flag\nPTHREAD_ATTR_FLAG_JOINED to indicate if a thread is being joined. Combined with\na switch to a while loop in pthread_join, this fixes spurious wake-ups but\nprevents a thread from being joined multiple times. This is fine for\ntwo reasons:\n\n1) The pthread_join specification allows for undefined behavior when multiple\n   threads try to join a single thread.\n\n2) There is no thread safe way to allow multiple threads to join a single\n   thread with the pthread interface.  The second thread calling pthread_join\n   could be pre-empted until the thread is destroyed and its handle reused for\n   a different thread.  Therefore multi-join is always an error.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d52255\nChange-Id: I8b6784d47620ffdcdbfb14524e7402e21d46c5f7\n"
    },
    {
      "commit": "ce532721aaf61d4b6a171903c851ac82adf08aa8",
      "tree": "79938358ba4dc34a795aeab6026ec06a6a811591",
      "parents": [
        "c14166477e7fd22693eab194d37624c2f7506ce4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:31:09 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:31:09 2013 -0700"
      },
      "message": "Hide various symbols that shouldn\u0027t be exposed.\n\nA mangled symbol in libc.so is a symbol that shouldn\u0027t be exported\nby libc.so.\n\nChange-Id: Id92d1e1968b3d11d111a5d9ef692adb1ac7694a1\n"
    },
    {
      "commit": "3e898476c7230b60a0f76968e64ff25f475b48c0",
      "tree": "0f876aeb565b7e7ac627a6305a355c40173912f2",
      "parents": [
        "fcaf4e9f9b735e053469c7ecbf63584e10fd67a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 16:40:24 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 15:27:18 2013 -0800"
      },
      "message": "Revert \"Revert \"More pthreads cleanup.\"\"\n\nThis reverts commit 6f94de3ca49e4ea147b1c59e5818fa175846518f\n\n(Doesn\u0027t try to increase the number of TLS slots; that leads to\nan inability to boot. Adds more tests.)\n\nChange-Id: Ia7d25ba3995219ed6e686463dbba80c95cc831ca\n"
    },
    {
      "commit": "6f94de3ca49e4ea147b1c59e5818fa175846518f",
      "tree": "9a2c45004114f53c4cf1f9468a58fe54c58320fa",
      "parents": [
        "2a1bb4e64677b9abbc17173c79768ed494565047"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 06:06:22 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 12 06:06:22 2013 +0000"
      },
      "message": "Revert \"More pthreads cleanup.\"\n\nThis reverts commit 2a1bb4e64677b9abbc17173c79768ed494565047\n\nChange-Id: Ia443d0748015c8e9fc3121e40e68258616767b51\n"
    },
    {
      "commit": "2a1bb4e64677b9abbc17173c79768ed494565047",
      "tree": "3e843fd4277f2bdc502511bd5e4ee539887c14f1",
      "parents": [
        "2d3e72336e76180fb00822386da4f14203d117ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 12:34:03 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 14:56:39 2013 -0800"
      },
      "message": "More pthreads cleanup.\n\nPOSIX says pthread_create returns EAGAIN, not ENOMEM.\n\nAlso pull pthread_attr_t functions into their own file.\n\nAlso pull pthread_setname_np into its own file.\n\nAlso remove unnecessary #includes from pthread_key.cpp.\n\nAlso account for those pthread keys used internally by bionic,\nso they don\u0027t count against the number of keys available to user\ncode. (They do with glibc, but glibc\u0027s limit is the much more\ngenerous 1024.)\n\nAlso factor out the common errno-restoring idiom to reduce gotos.\n\nBug: 6702535\nChange-Id: I555e66efffcf2c1b5a2873569e91489156efca42\n"
    },
    {
      "commit": "44b53ad6818de344e0b499ad8fdbb21fcb0ff2b6",
      "tree": "9a2c45004114f53c4cf1f9468a58fe54c58320fa",
      "parents": [
        "8397cdba9424febeaed4068829a5b0174ee1138c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 20:18:47 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 12:20:33 2013 -0800"
      },
      "message": "Revert \"Revert \"Pull the pthread_key_t functions out of pthread.c.\"\"\n\nThis reverts commit 6260553d48f6fd87ca220270bea8bafdde5726ec\n\n(Removing the accidental libm/Android.mk change.)\n\nChange-Id: I6cddd9857c31facc05636e8221505b3d2344cb75\n"
    }
  ]
}
