)]}'
{
  "log": [
    {
      "commit": "93d44ff2a6e0febe18d42d5690e85023545318b4",
      "tree": "0145c42a21091f0a160129bd2978e9a7baefe543",
      "parents": [
        "32b039e46eee4d40b9979eab873a957e86fbf969",
        "673b15e4ee2c6d99b150aedddc0f389e29f98e1b"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 24 02:39:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 24 02:39:51 2015 +0000"
      },
      "message": "Merge \"Let g_thread_list_lock only protect g_thread_list.\""
    },
    {
      "commit": "673b15e4ee2c6d99b150aedddc0f389e29f98e1b",
      "tree": "edc101b54c689960bdf1262e6378b21082d3e277",
      "parents": [
        "4149dc944bbe3c5f1c14fc998106975e68bdd6bf"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 19 14:19:19 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 23 19:03:49 2015 -0700"
      },
      "message": "Let g_thread_list_lock only protect g_thread_list.\n\nAs glibc/netbsd don\u0027t protect access to thread struct members by a global\nlock, we don\u0027t want to do it either. This change reduces the\nresponsibility of g_thread_list_lock to only protect g_thread_list.\n\nBug: 19636317\nChange-Id: I897890710653dac165d8fa4452c7ecf74abdbf2b\n"
    },
    {
      "commit": "32b039e46eee4d40b9979eab873a957e86fbf969",
      "tree": "b002a3de35b1451f77e2f1f605a85e032c56acee",
      "parents": [
        "f8246ac65f1985e23023df12112a6ce47057a4dd",
        "84c10c2e7928cf2128f2495b9d5ed916088b2f2b"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 24 00:48:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 24 00:48:58 2015 +0000"
      },
      "message": "Merge \"RTLD_LAZY is not supported, use RTLD_NOW instead.\""
    },
    {
      "commit": "f8246ac65f1985e23023df12112a6ce47057a4dd",
      "tree": "7228c1c264947bd6915fc8bf7916f28b7bbd6cc0",
      "parents": [
        "27b38599dc4b0b4941906d8da30022f516abf143",
        "b58457221364eaad039c2c49a42626b725e980d5"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 23 23:18:27 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 23 23:18:27 2015 +0000"
      },
      "message": "Merge \"Add test for pthread types alignment check.\""
    },
    {
      "commit": "84c10c2e7928cf2128f2495b9d5ed916088b2f2b",
      "tree": "398e5dd3c5fd5ab801975b3899f51c7c896ef808",
      "parents": [
        "27b38599dc4b0b4941906d8da30022f516abf143"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 23 14:58:45 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 23 14:58:45 2015 -0700"
      },
      "message": "RTLD_LAZY is not supported, use RTLD_NOW instead.\n\nChange-Id: Ia08ed6416aef686435224b50b3e58955d09f04e2\n"
    },
    {
      "commit": "b58457221364eaad039c2c49a42626b725e980d5",
      "tree": "a7a8d9b3de7c34bda99153ebae330b6d180b112e",
      "parents": [
        "4149dc944bbe3c5f1c14fc998106975e68bdd6bf"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 16 22:46:42 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 20 17:42:09 2015 -0700"
      },
      "message": "Add test for pthread types alignment check.\n\nBug: 19249079\nChange-Id: I83c4f0d11ec5d82a346ae0057d02a92bb1d519e8\n"
    },
    {
      "commit": "a2db50d5d7fa67b297eddd1c0549f08ea4b6a950",
      "tree": "e3b0bb4b01b2b7caf8f5f0ad5be05517592915fb",
      "parents": [
        "4149dc944bbe3c5f1c14fc998106975e68bdd6bf"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 20 10:58:04 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 20 14:41:52 2015 -0700"
      },
      "message": "Fix alignment error for pthread_internal_t/pthread stack.\n\naligned attribute can only control compiler\u0027s behavior, but we\nare manually allocating pthread_internal_t. So we need to make\nsure of alignment manually.\n\nChange-Id: Iea4c46eadf10dfd15dc955c5f41cf6063cfd8536\n"
    },
    {
      "commit": "bbb0432a33787f1a627abb396fe343a7943ac7bc",
      "tree": "356c2b33690b7c1e43c4d5a4ba46d0553b1e06f6",
      "parents": [
        "7875b506edfb1fe593034eaf4bc9aa156179fbd2"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 19 15:19:25 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 19 16:48:19 2015 -0700"
      },
      "message": "Return EINVAL when calling pthread_detach for joined thread.\n\nChange-Id: I717015132187e087e0ad485284a13c8801e25e77\n"
    },
    {
      "commit": "aec2bb5ec67637ec4b5374287e9bc0d572632054",
      "tree": "81a349d5c4f2a4962201fa9aea395014bdc89867",
      "parents": [
        "2e49508187254903943b83df7bb241d5fb6a8593"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 19 16:28:19 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 19 23:35:23 2015 +0000"
      },
      "message": "Fix two errors in pthread_detach.cpp.\n\nThe errors are introduced in \"Make pthread join_state not protected by g_thread_list_lock\".\n\nBug: 19636317\nChange-Id: I58ae9711da94bfbac809abfd81311eeb70301a4b\n"
    },
    {
      "commit": "6943f2968cb6054f8874e30b309985b41a37e2e0",
      "tree": "4f25c966dd69e3ed68c923cb4bd2310c9054882c",
      "parents": [
        "6420fb467f52f7c27c921b1bf53dc95ad5851077",
        "2f836d4989845c0c82a1e4f99206fb0ff0d137a2"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 19 02:50:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 19 02:50:20 2015 +0000"
      },
      "message": "Merge \"Make __get_thread inlined.\""
    },
    {
      "commit": "2f836d4989845c0c82a1e4f99206fb0ff0d137a2",
      "tree": "7190db5cf1a8d85e40aa664b7ac50aa120ace278",
      "parents": [
        "c0eaa732844a8397d40a7ec82641f709e4b47a61"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 18 14:14:02 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 18 19:35:34 2015 -0700"
      },
      "message": "Make __get_thread inlined.\n\nBug: 19825434\n\nChange-Id: Ifb672a45a5776b83625a25654ed0d6f7fc368ae3\n"
    },
    {
      "commit": "fa495d51b02e1575088ed358614d3baa442f455f",
      "tree": "7d44227f43953a5b99d2fc582f917987a5980f56",
      "parents": [
        "ab12dc70f3ef551c490dcfede76033e57ceee64d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 18 15:46:48 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 18 15:46:48 2015 -0700"
      },
      "message": "Hide statfs/fstatfs\u0027 ST_VALID flag from userspace.\n\nSpotted while debugging the strace 4.10 upgrade.\n\nChange-Id: I1af1be9c9440151f55f74a835e1df71529b0e4fe\n"
    },
    {
      "commit": "ee7649c5ac5f1e56cc8193cd4cee73004c04893d",
      "tree": "a7267fa3a7635c394f47fd409ad11058a6f4df3b",
      "parents": [
        "d917b20b613fd51e5f1056c8648fe8769ae8161e"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Sun Mar 15 21:39:25 2015 -0400"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Tue Mar 17 19:50:55 2015 -0400"
      },
      "message": "set errno to ENOENT in getauxval per glibc 2.19\n\nBionic\u0027s getauxval(...) implementation returns zero when entries are\nmissing. Zero can be a valid value, so there is no unambiguous way of\ndetecting an error. Since glibc 2.19, errno is set to ENOENT when an\nentry is missing to make it possible to detect this. Bionic should match\nthis behavior as code in the Linux ecosystem will start relying on it to\ncheck for the presence of newly added entries.\n\nChange-Id: Ic1efe29bc45fc87489274c96c4d2193f3a7b8854\nSigned-off-by: Daniel Micay \u003cdanielmicay@gmail.com\u003e\n"
    },
    {
      "commit": "ecbfb25c504b7360d250c849ab47890ad54b6125",
      "tree": "916d3348f1b9ef4192f754f71ce422994370d44a",
      "parents": [
        "94babaee1b6598b15bd807461055d4dcaaa52f10"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 17 11:34:57 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 17 11:37:51 2015 -0700"
      },
      "message": "Fix build: pthread_mutex/pthread_detach.\n\nChange-Id: I9c7b6297d3bf3ab8004d05d44cc4c95159315c9e\n"
    },
    {
      "commit": "94babaee1b6598b15bd807461055d4dcaaa52f10",
      "tree": "0efa7df548f74df352be643bc640202606ce0347",
      "parents": [
        "5490bebd7cdd4406780358f590391b75ab8a7d84",
        "58cf31b50699ed9f523de38c8e943f3bbd1ced9e"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 17 18:12:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 17 18:12:59 2015 +0000"
      },
      "message": "Merge \"Make pthread join_state not protected by g_thread_list_lock.\""
    },
    {
      "commit": "5490bebd7cdd4406780358f590391b75ab8a7d84",
      "tree": "845211310385c3998a280b73553ef7b852a725b6",
      "parents": [
        "5f8ddf69e59b13653d016e236599b95daf6501a8",
        "5b8e7cd957f9380e93c3aee84962d157fe0bc526"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 17 18:12:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 17 18:12:32 2015 +0000"
      },
      "message": "Merge \"Remove duplication in pthread_mutex.cpp.\""
    },
    {
      "commit": "9e6c7bc61838476d749d9bc4801777d35fd46a63",
      "tree": "7966332d21664afbab95e8051d960f1ad95a5579",
      "parents": [
        "169a84f980d7a55c5f829cdd53a3eaba8f968442"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 16 14:26:53 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 16 14:26:53 2015 -0700"
      },
      "message": "Fix atomic_load on const variable in pthread_cond_t.\n\nChange-Id: I60f55a53294a09332a3fbec669ed793359d1bdf5\n"
    },
    {
      "commit": "32651b8e8e453391c7aaca47cd885e94d54d0bf4",
      "tree": "16c36165ce78fbc359bba222ee0744556c3ed4c4",
      "parents": [
        "d2cf59d4633d9e731d0342d4f94b6e925589ab1e"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 13 20:30:00 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 16 11:09:52 2015 -0700"
      },
      "message": "Hide content of pthread_cond_t in pthread_cond_internal_t.\n\nBug: 19249079\nChange-Id: I6f55af30bcd6211ce71630c6cacbef0e1663dcee\n"
    },
    {
      "commit": "2fabea47ac9475bcc52aff0715819d18aa5bdf1d",
      "tree": "c0cad55497897c934661e49d2fc4c330b4d97cba",
      "parents": [
        "81c31bdd43e50538fa45f5e7783782a5ae5666e9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 13 14:22:05 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 13 19:35:05 2015 -0700"
      },
      "message": "Hide content of pthread_rwlock_t in pthread_rwlock_internal_t.\n\nBug: 19249079\nChange-Id: Ifbe634c716b6793bef897ec5134b55eb44c6b8d5\n"
    },
    {
      "commit": "5b8e7cd957f9380e93c3aee84962d157fe0bc526",
      "tree": "c454f02e61518005d531a825e2f0469fac261bbf",
      "parents": [
        "c3307dc43b2526c4031837738b139d22831c5d09"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 17:36:59 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 12 21:54:41 2015 -0700"
      },
      "message": "Remove duplication in pthread_mutex.cpp.\n\nAlso add unit tests about thread woken up by pthread_mutex_unlock.\n\nBug: 19216648\n\nChange-Id: I8bde8105b00186c52a2f41d92458ae4a5eb90426\n"
    },
    {
      "commit": "58cf31b50699ed9f523de38c8e943f3bbd1ced9e",
      "tree": "258ba808074bd047a94df452a4e465db66136797",
      "parents": [
        "e86a86f9f24df7028d2596c69ff008cf88e039e4"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 06 17:23:53 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 12 21:39:49 2015 -0700"
      },
      "message": "Make pthread join_state not protected by g_thread_list_lock.\n\n1. Move the representation of thread join_state from pthread.attr.flag\n   to pthread.join_state. This clarifies thread state change.\n2. Use atomic operations for pthread.join_state. So we don\u0027t need to\n   protect it by g_thread_list_lock. g_thread_list_lock will be reduced\n   to only protect g_thread_list or even removed in further changes.\n\nBug: 19636317\nChange-Id: I31fb143a7c69508c7287307dd3b0776993ec0f43\n"
    },
    {
      "commit": "9d0c79304d2413028aa5c213f7a567f00feccde5",
      "tree": "b9c119c7f8e935abb9466e9253b905a7f485d968",
      "parents": [
        "45ee73a7fbe98cba2ccb007b60c027d27dfca1cb"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 06 13:48:58 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 06 15:16:44 2015 -0800"
      },
      "message": "Remove PTHREAD_ATTR_FLAG_MAIN_THREAD.\n\nMake this change because I think it is more reasonable to check stack info\nin pthread_getattr_np. I believe pthread_attr_t is not tied with any thread,\nand can\u0027t have a flag saying who using it is the main thread.\nThis change also helps refactor of g_thread_list_lock.\n\nBug: 19636317\nChange-Id: Iedbb85a391ac3e1849dd036d01445dac4bc63db9\n"
    },
    {
      "commit": "f7e3b3e48ab3ffbf7bbce5102ce1739c200093cb",
      "tree": "19fe08cbb0324d67ce277d8f6594f8c126d3b3c6",
      "parents": [
        "c3307dc43b2526c4031837738b139d22831c5d09"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 20:08:21 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 20:39:10 2015 -0800"
      },
      "message": "Use pthread_once for g_uselocale_key creation.\n\nBug: 19625804\nChange-Id: I57ec4c965067dc0c157c795c1f7217a3ca403286\n"
    },
    {
      "commit": "c3307dc43b2526c4031837738b139d22831c5d09",
      "tree": "483094a914357a55a76dcea7f94bf167aa155f1b",
      "parents": [
        "5d400204589ceb781fa11864c2e8f3001e5dc96f",
        "4a2891d8c8f09a64ea9e1479518b0cc969bd5969"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 18:26:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 05 18:26:44 2015 +0000"
      },
      "message": "Merge \"Better control of pthread keys used in bionic.\""
    },
    {
      "commit": "e1c0213be3f0c2c4e310cbc262da88835a2e5d86",
      "tree": "052396403af1b7e83ca747a87ce2bc0ff730ba51",
      "parents": [
        "dec9501af2ee4d7cec3a163310d42e8ea1b8c58f",
        "08ee8d2030fbc73c4c144e819dd68806b0351cbe"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 04:42:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 05 04:42:35 2015 +0000"
      },
      "message": "Merge \"Switch pthread_rwlock_t to stdatomic.\""
    },
    {
      "commit": "08ee8d2030fbc73c4c144e819dd68806b0351cbe",
      "tree": "61c0f1027bd8967ff7eb8e95a128ee10e260ca32",
      "parents": [
        "ee17e8800418a74e21dba11658234363cf6f6032"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 11 17:04:36 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 18:16:20 2015 -0800"
      },
      "message": "Switch pthread_rwlock_t to stdatomic.\n\nBug: 19099838\nChange-Id: Ie82967a60b5cec61a8bdd1e0e4a03738d01944f8\n"
    },
    {
      "commit": "4a2891d8c8f09a64ea9e1479518b0cc969bd5969",
      "tree": "435435ccd995c37c0e5b27948da8addc464b558d",
      "parents": [
        "dec9501af2ee4d7cec3a163310d42e8ea1b8c58f"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 16:53:23 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 16:53:23 2015 -0800"
      },
      "message": "Better control of pthread keys used in bionic.\n\nChange-Id: I1e1bc77c0e7879baead6c3417282ce549a1153b5\n"
    },
    {
      "commit": "e1edd301d2a722e0a0687a7a3a87081c8cb956d3",
      "tree": "5b40237fe1dfe0f19e6bf2b55733a6dd145c8bd3",
      "parents": [
        "d5c2745ca8664b987d737e4a32922b6c9fe7c628",
        "5e2bd719d7dd19afe55f8d4f24366c0230e0e6c7"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 01:49:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 04 01:49:20 2015 +0000"
      },
      "message": "Merge \"Refactor pthread_key.cpp to be lock-free.\""
    },
    {
      "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": "52d7f1a94fd6ccb87dabd21c682f68d31810aca9",
      "tree": "b921836e4dfdcfbedaa10a12ac906a900d56294d",
      "parents": [
        "448a85968da1e4622e829bb48fd888a38f9f6c49"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 25 14:58:08 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 25 14:58:08 2015 -0800"
      },
      "message": "Move endpwent to ndk_cruft.cpp.\n\nBug: 19109159\nChange-Id: I3683a247643006ea6d6bcf3845f57d1908d457d7\n"
    },
    {
      "commit": "448a85968da1e4622e829bb48fd888a38f9f6c49",
      "tree": "e300bf6ea44f7316ce42161fdcb5e6c2ac07dd18",
      "parents": [
        "8c41eae6fcdb6cad1f6c46ae01708ead6b734060",
        "b8ce47421727f7621f3e00043d535e35cd904852"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 25 21:04:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 25 21:04:56 2015 +0000"
      },
      "message": "Merge \"Switch system_properties.cpp from bionic atomic operations to stdatomic.\""
    },
    {
      "commit": "8c41eae6fcdb6cad1f6c46ae01708ead6b734060",
      "tree": "3fb9067c8790b6471ceadbdb80517731182aa7b8",
      "parents": [
        "af3ba5c87319e19c10be6755b37af92521f702c2",
        "7fb680bfda059746c9bb8939ffaed600eecc3a29"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 25 00:00:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 25 00:00:51 2015 +0000"
      },
      "message": "Merge \"Move getusershell/endusershell/setusershell to ndk_cruft.cpp.\""
    },
    {
      "commit": "7fb680bfda059746c9bb8939ffaed600eecc3a29",
      "tree": "4d2528047166136a5c8baa69af69edafafcc42c2",
      "parents": [
        "4add77b93c0c61381faa9d4d8dc62f81cafcc69a"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 24 13:18:25 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 24 14:46:59 2015 -0800"
      },
      "message": "Move getusershell/endusershell/setusershell to ndk_cruft.cpp.\n\nBug: 19108648\nChange-Id: I65134040345398dde612c4325d902db58f3bd2be\n"
    },
    {
      "commit": "35778253a5ed71e87a608ca590b63729d9f88567",
      "tree": "d9e6112654bf2faa754abd9f28bc20c2ccccff57",
      "parents": [
        "2aef607b25c463baed5ae70d14212e24ea7bcf2b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 24 13:40:43 2015 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 24 13:40:43 2015 -0800"
      },
      "message": "Fix \"faccessat ignores flags\"\n\nThe kernel system call faccessat() does not have any flags arguments,\nso passing flags to the kernel is currently ignored.\n\nFix the kernel system call so that no flags argument is passed in.\n\nEnsure that we don\u0027t support AT_SYMLINK_NOFOLLOW. This non-POSIX\n(http://pubs.opengroup.org/onlinepubs/9699919799/functions/access.html)\nflag is a glibc extension, and has non-intuitive, error prone behavior.\n\nFor example, consider the following code:\n\n  symlink(\"foo.is.dangling\", \"foo\");\n  if (faccessat(AT_FDCWD, \"foo\", R_OK, AT_SYMLINK_NOFOLLOW) \u003d\u003d 0) {\n    int fd \u003d openat(AT_FDCWD, \"foo\", O_RDONLY | O_NOFOLLOW);\n  }\n\nThe faccessat() call in glibc will return true, but an attempt to\nopen the dangling symlink will end up failing. GLIBC documents this\nas returning the access mode of the symlink itself, which will\nalways return true for any symlink on Linux.\n\nSome further discussions of this are at:\n\n  * http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003617.html\n  * http://permalink.gmane.org/gmane.linux.lib.musl.general/6952\n\nAT_SYMLINK_NOFOLLOW seems broken by design. I suspect this is why this\nfunction was never added to POSIX. (note that \"access\" is pretty much\nbroken by design too, since it introduces a race condition between\ncheck and action). We shouldn\u0027t support this until it\u0027s clearly\ndocumented by POSIX or we can have it produce intuitive results.\n\nDon\u0027t support AT_EACCESS for now. Implementing it is complicated, and\npretty much useless on Android, since we don\u0027t have setuid binaries.\nSee http://git.musl-libc.org/cgit/musl/commit/?id\u003d0a05eace163cee9b08571d2ff9d90f5e82d9c228\nfor how an implementation might look.\n\nBug: 18867827\nChange-Id: I25b86c5020f3152ffa3ac3047f6c4152908d0e04\n"
    },
    {
      "commit": "b8ce47421727f7621f3e00043d535e35cd904852",
      "tree": "a2d35e197034b900f4b70cadddccf11958926dad",
      "parents": [
        "ee17e8800418a74e21dba11658234363cf6f6032"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 10 21:35:56 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 24 10:41:53 2015 -0800"
      },
      "message": "Switch system_properties.cpp from bionic atomic operations to stdatomic.\n\nBug: 17177189\nChange-Id: I42e05ad1c490cc7a8040138151afc0ee72a9b63f\n"
    },
    {
      "commit": "be52e658171edf6651895c40d1563289bafa52f7",
      "tree": "0f58f6022d63e08166da1a03775d50df4d2f13b5",
      "parents": [
        "393bdb156d5024a03f03425a977d0518c84dbb98"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 23 18:02:29 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 23 21:52:56 2015 -0800"
      },
      "message": "Fix dup2 in the case where the two fds are equal.\n\ndup3\u0027s behavior differs from dup2 in this case, so we need to paper\nover that in the C library.\n\nChange-Id: I313cd6f226db5e237f61866f324c5ecdd12bf762\n"
    },
    {
      "commit": "4c5891d93dc151e2f07fc87ae967f23e6c3d6e0c",
      "tree": "0a18a145999730a8bcb118c2b42b4e6a8ffa15d9",
      "parents": [
        "97484d3a9d0d822aeaaa1547aeb76d7669076082"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 19 22:49:44 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 19 22:49:44 2015 -0800"
      },
      "message": "valgrind can\u0027t find syscall because we didn\u0027t put it in \u003cunistd.h\u003e.\n\nChange-Id: I1e47291d4476bd2816138a8cf58f29d4986d39e3\n"
    },
    {
      "commit": "3cfb52aab2548df635e9672218cc433e14922fd3",
      "tree": "eebbf162a1e5e1ed8726a9129ea17a410ebaa3ed",
      "parents": [
        "3e1b5f46c07aef5983ecf2feb1c3369b2cd200c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 18 21:29:13 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 18 22:02:56 2015 -0800"
      },
      "message": "Add GNU extensions mempcpy and wmemcpy.\n\nUsed by elfutils. On the bright side, they stopped using __mempcpy.\n\nBug: 18374026\nChange-Id: Id29bbe6ef1c5ed5a171bb6c32182f129d8332abb\n"
    },
    {
      "commit": "be6a44566a7085470b96bc41d371e37b5b12ff87",
      "tree": "066ba2b362e6289e3b5d7bb8ca912a58ab9c5be7",
      "parents": [
        "fb48c68221afb1f9e7c63a15a20cca0857d1b9f9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 17 09:55:58 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 17 09:55:58 2015 -0800"
      },
      "message": "Fix sysconf for _SC_CHILD_MAX and _SC_OPEN_MAX.\n\nChange-Id: I656f613166bd604f35b31e5ec042a5230c6b82b8\n"
    },
    {
      "commit": "fb48c68221afb1f9e7c63a15a20cca0857d1b9f9",
      "tree": "b845b7e6adc69d65e8b96e31fd25c1cf98d56493",
      "parents": [
        "40d06b25ac86260e9c1701540420c9634bab8bad",
        "41ef902379ba24bd8a3ca6d7733b8376efb55ebd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 17 17:54:39 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 17 17:54:40 2015 +0000"
      },
      "message": "Merge \"Fix memchr overflow.\""
    },
    {
      "commit": "41ef902379ba24bd8a3ca6d7733b8376efb55ebd",
      "tree": "855ac7e3fa276bfb55594e4efb28c7c29cf28f3f",
      "parents": [
        "f9fb52ab309c97d5b2ef4f8e1daff3eed4cf4024"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 14 13:21:22 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 14 13:21:22 2015 -0800"
      },
      "message": "Fix memchr overflow.\n\nThe overflow\u0027s actually in the generic C implementation of memchr.\n\nWhile I\u0027m here, let\u0027s switch our generic memrchr to the OpenBSD version too.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d147048\nChange-Id: I296ae06a1ee196d2c77c95a22f11ee4d658962da\n"
    },
    {
      "commit": "e09ab2cc2ff41ce7519c143d448371ddd62afc59",
      "tree": "27aeb6b9af0e2cee7200e1683a9650f013b49396",
      "parents": [
        "f9fb52ab309c97d5b2ef4f8e1daff3eed4cf4024"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 12 17:03:22 2015 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 12 21:37:20 2015 -0800"
      },
      "message": "Make .note.android.ident section type SH_NOTE\n\nThe .note.android.ident section is only used by GDB, which doesn\u0027t\ncare what section type the section is, but it would be convenient\nfor readelf -n to be able to find the section too.\n\nThe old way of getting the .note.android.ident section to be of type\nSH_NOTE involved compiling from .c to .s using gcc, running sed to\nchange progbits to note, and then compiling from .s to .o using gcc.\nSince crtbrand.c only contains a section containing data, a\ncrtbrand.S can be checked in that will compile on all platforms,\navoiding the need for sed.\n\nAlso add crtbrand.o to crtbegin_so.o so that libraries also get\nthe note, and to the crt workaround in arm libc.so.\n\nChange-Id: Ica71942a6af4553b56978ceaa288b3f4c15ebfa2\n"
    },
    {
      "commit": "24958ae4efd70d5ef36d93d2d2bcca38ad340395",
      "tree": "1f4045f37791b309a2da42336abd02a61153ee91",
      "parents": [
        "0046c39f9ed6d7335f06e4d866df5ae0e7b4d485"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 11 17:40:45 2015 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 11 17:40:45 2015 -0800"
      },
      "message": "Remove no-op sed step when compiling crtbrand.o\n\ncrtbrand.c was compiled to a .s file, run through a sed script\nto translate a %progbits to %note, and the compiled to .o.\nHowever, when the sed command was copied from the original source\nit was not updated to use the new name of the section (.note.ABI-tag\nto .note.android.ident), so it didn\u0027t modify the file.  Since the\nsection has been generated with type %progbits instead of %note for\ntwo years, just delete the whole sed step.\n\nChange-Id: Id78582e9b43b628afec4eed22a088283132f0742\n"
    },
    {
      "commit": "e375ecaa39213ec01464dac9d0ffebaac70b4e9d",
      "tree": "1d0e274a6739befc3a27df4d135ea4b4740c20f5",
      "parents": [
        "a4fc89badf4ef4d42df0927340c6f0d02167a3d6",
        "e5f816c01780220880ee59a29f727c48b51365d3"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 10 00:10:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 10 00:10:45 2015 +0000"
      },
      "message": "Merge \"Switch pthread_cond_t to \u003cstdatomic.h\u003e.\""
    },
    {
      "commit": "e5f816c01780220880ee59a29f727c48b51365d3",
      "tree": "37454e7d27774bde02d5d28aee3d1aad3cbb6d73",
      "parents": [
        "7f17aea2fc21aaf657824a023a4b7582fb74a2d9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 29 12:13:33 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Feb 09 15:54:22 2015 -0800"
      },
      "message": "Switch pthread_cond_t to \u003cstdatomic.h\u003e.\n\nBug: 17574458\nChange-Id: Ic7f79861df4fe751cfa6c6b20b71123cc31e7114\n"
    },
    {
      "commit": "421608550dff76d12886021250919cbebf419bd8",
      "tree": "1375249c0a061b08f801e1ff4242d85913be4b30",
      "parents": [
        "d687905f11102a7f6bad461b6f501dc870c59999"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 09 17:59:22 2015 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 09 18:01:45 2015 +0000"
      },
      "message": "Remove stray log line.\n\nChange-Id: Id948ae37a91dadd9d40e91de97f18774bdccfc78\n"
    },
    {
      "commit": "9dfb00c1d48545a2627c2aded62d3a79749351fb",
      "tree": "0611ed61180c6983dd9818cc8bf01bbc3dec3ef4",
      "parents": [
        "9a9b635745dc776dcfeec51d68b85ca7e8cdbe7d",
        "6e54c3e519892ca13f15bdcea0d431befbadac25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 05 20:21:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 05 20:21:35 2015 +0000"
      },
      "message": "Merge \"Use the libcxxabi __cxa_demangle.\""
    },
    {
      "commit": "6e54c3e519892ca13f15bdcea0d431befbadac25",
      "tree": "914bdd8c31ba4d8cd205fefb8f0b95669a425189",
      "parents": [
        "8e5f9bc8a46872e3f0ac4799558fdfd5999f9c20"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 05 12:05:34 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 05 12:05:34 2015 -0800"
      },
      "message": "Use the libcxxabi __cxa_demangle.\n\nBug: 18930951\nChange-Id: If2ea3633ac6dfd4ec975c0f16bdf3dd58e05c614\n"
    },
    {
      "commit": "aba6f712d46577c45a89fd0626dc251885d7989d",
      "tree": "6ad501467d7673592127f5ea3dded7bdd8432159",
      "parents": [
        "8e5f9bc8a46872e3f0ac4799558fdfd5999f9c20"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 05 12:02:04 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 05 12:02:04 2015 -0800"
      },
      "message": "Apparently, logd does need the NULs.\n\nChange-Id: I04b834e65c26c5821b952f78a0de7f92527cbdba\n"
    },
    {
      "commit": "7e1b3d3e68f7430322a88be06f6b53c358fd14bf",
      "tree": "23217666a93d70b2a3b24876ace448b2b3207e68",
      "parents": [
        "11829be3e1a9e9e2271ba64a78c327bde6e044eb",
        "a3d97da4c5c96f2c224485928154bad111cd635f"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 04 02:42:15 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 04 02:42:16 2015 +0000"
      },
      "message": "Merge \"Switch sem_t from bionic atomics to stdatomic.h.\""
    },
    {
      "commit": "a3d97da4c5c96f2c224485928154bad111cd635f",
      "tree": "4aeb0ed6daa210dc79e9a48e210de9aeafa9601f",
      "parents": [
        "7f17aea2fc21aaf657824a023a4b7582fb74a2d9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jan 30 12:30:08 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 03 16:35:57 2015 -0800"
      },
      "message": "Switch sem_t from bionic atomics to stdatomic.h.\n\nBug: 17572887\nChange-Id: If66851ba9b831cdd698b9f1303289bb14448bd03\n"
    },
    {
      "commit": "11829be3e1a9e9e2271ba64a78c327bde6e044eb",
      "tree": "08724ca11c005312e09599a78077483c613c8525",
      "parents": [
        "f00f484cb59c1d599242daecbf833397aa3ba5d8",
        "140f3678f0f21eeda5916e9b8de87b93fd660a61"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 03 22:28:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 03 22:28:56 2015 +0000"
      },
      "message": "Merge \"Add test about pthread_mutex_t owner tid limit.\""
    },
    {
      "commit": "140f3678f0f21eeda5916e9b8de87b93fd660a61",
      "tree": "4115c771e910e8969cb093fa124df987259bad3c",
      "parents": [
        "86fc96f73311f43980df770f4ff8022f1e9b296a"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 03 10:32:00 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 03 12:20:46 2015 -0800"
      },
      "message": "Add test about pthread_mutex_t owner tid limit.\n\nBug: 19216648\nChange-Id: I7b12955bdcad31c13bf8ec2740ff88ba15223ec0\n"
    },
    {
      "commit": "00490ae3f351e07ed4cc2a94b11cba6a22f37311",
      "tree": "ad09d82701fd1d9cdf44231d8b8789007aa5d8d9",
      "parents": [
        "d57bf449fe6c2dcf35d90d6e4098038ac8a24ecb"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 03 11:27:25 2015 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 03 12:10:30 2015 -0800"
      },
      "message": "Ensure raw fchmod/fchmodat syscalls are hidden.\n\nIn https://android-review.googlesource.com/#/c/127908/5/libc/SYSCALLS.TXT@116\nElliott said:\n\n  for LP64 these will be hidden. for LP32 we were cowards and left\n  them all public for compatibility (though i don\u0027t think we ever\n  dremeled to see whether it was needed). we don\u0027t have an easy\n  way to recognize additions, though, so we can\u0027t prevent adding\n  new turds.\n\nAdd a mechanism to prevent the adding of new turds, and use that\nmechanism on the fchmod/fchmodat system calls.\n\nBug: 19233951\nChange-Id: I98f98345970b631a379f348df57858f9fc3d57c0\n"
    },
    {
      "commit": "d57bf449fe6c2dcf35d90d6e4098038ac8a24ecb",
      "tree": "9e4fc6f141d8aecad2a9bceae60bb1e45cb0556a",
      "parents": [
        "c5999c1e0382c40286cc631c6a53e7781bc03154",
        "86fc96f73311f43980df770f4ff8022f1e9b296a"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Feb 03 02:42:53 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 03 02:42:53 2015 +0000"
      },
      "message": "Merge \"Switch pthread_mutex_t from bionic atomics to \u003cstdatomic.h\u003e.\""
    },
    {
      "commit": "86fc96f73311f43980df770f4ff8022f1e9b296a",
      "tree": "0eb94839231c5c19cd7b4bf0954083ba670d62bd",
      "parents": [
        "6a3ff01cd4f063556cf25706ddc9dff82c351aba"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 29 21:50:48 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Feb 02 15:00:01 2015 -0800"
      },
      "message": "Switch pthread_mutex_t from bionic atomics to \u003cstdatomic.h\u003e.\n\nBug: 17574456\nChange-Id: I5ce3d3dc07e804e9ce55c42920f47531b56e04de\n"
    },
    {
      "commit": "d80ec66121b5af96c6b3d07ba34353b3d517f5b3",
      "tree": "ac55af52647bb32468e477945a1da988778e9436",
      "parents": [
        "c57b5c5094f915ff975a256e086d58e2e7cfedf1",
        "3cbc6c627fe57c9a9783c52d148078f8d52f7b96"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Feb 02 22:03:41 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 02 22:03:41 2015 +0000"
      },
      "message": "Merge \"Add fchmodat(AT_SYMLINK_NOFOLLOW) and fchmod O_PATH support\""
    },
    {
      "commit": "3cbc6c627fe57c9a9783c52d148078f8d52f7b96",
      "tree": "ea5b0dc49aaa16f25e2262cd5560070ae65923b9",
      "parents": [
        "21cdd22f035efd50902b7780fc6ea53bd1684357"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jan 31 19:57:46 2015 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Feb 02 13:17:17 2015 -0800"
      },
      "message": "Add fchmodat(AT_SYMLINK_NOFOLLOW) and fchmod O_PATH support\n\nMany libc functions have an option to not follow symbolic\nlinks. This is useful to avoid security sensitive code\nfrom inadvertantly following attacker supplied symlinks\nand taking inappropriate action on files it shouldn\u0027t.\nFor example, open() has O_NOFOLLOW, chown() has\nlchown(), stat() has lstat(), etc.\n\nThere is no such equivalent function for chmod(), such as lchmod().\nTo address this, POSIX introduced fchmodat(AT_SYMLINK_NOFOLLOW),\nwhich is intended to provide a way to perform a chmod operation\nwhich doesn\u0027t follow symlinks.\n\nCurrently, the Linux kernel doesn\u0027t implement AT_SYMLINK_NOFOLLOW.\nIn GLIBC, attempting to use the AT_SYMLINK_NOFOLLOW flag causes\nfchmodat to return ENOTSUP. Details are in \"man fchmodat\".\n\nBionic currently differs from GLIBC in that AT_SYMLINK_NOFOLLOW\nis silently ignored and treated as if the flag wasn\u0027t present.\n\nThis patch provides a userspace implementation of\nAT_SYMLINK_NOFOLLOW for bionic. Using open(O_PATH | O_NOFOLLOW),\nwe can provide a way to atomically change the permissions on\nfiles without worrying about race conditions.\n\nAs part of this change, we add support for fchmod on O_PATH\nfile descriptors, because it\u0027s relatively straight forward\nand could be useful in the future.\n\nThe basic idea behind this implementation comes from\nhttps://sourceware.org/bugzilla/show_bug.cgi?id\u003d14578 , specifically\ncomment #10.\n\nChange-Id: I1eba0cdb2c509d9193ceecf28f13118188a3cfa7\n"
    },
    {
      "commit": "42084a265329538a9e696e41971fb5d6abe3c14f",
      "tree": "17cf4429a372a25be930c13bafb58fce4b21cc94",
      "parents": [
        "530aaeccd875f708918f59cd5ff8b076c156adab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 12:24:46 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 12:24:46 2015 -0800"
      },
      "message": "Small logging cleanup.\n\nDon\u0027t send the trailing NUL bytes to the logger, call strlen if we already\nknow the length, or cast more specifically than we need to.\n\nChange-Id: I68c9388a22bddea49120a1022dda8db8991360c1\n"
    },
    {
      "commit": "30fbf5f44c3d2f2f2d11f92e106294c41497af5f",
      "tree": "d2b928d1dc06ec9ae567168c3c07e112196e944d",
      "parents": [
        "5940f98a35d64f9ca249536bb8cdcdbfe43e9bc3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 10:21:39 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 10:21:39 2015 -0800"
      },
      "message": "Fix clang build.\n\nChange-Id: I863137b5d35602267b4ef3a74399cf394c9994d6\n"
    },
    {
      "commit": "4674e3899afcc6b3ac8a48cdb716695d5489d26b",
      "tree": "b4dadb078646cbb46dd62a14c623b7e0d06619e3",
      "parents": [
        "ffbda83b302e3c3970135013d2bb92402e040fe5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 09:15:19 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 09:15:19 2015 -0800"
      },
      "message": "Fortify poll and ppoll.\n\nAnd remove the test for FD_ZERO fortification, which never made much\nsense anyway.\n\nChange-Id: Id1009c5298d461fa4722189e8ecaf22f0c529536\n"
    },
    {
      "commit": "cb0e70389ee1c4a957a842deb601666f1930d4ee",
      "tree": "e876b8453d44420a576256e8813e71f5c2c94919",
      "parents": [
        "09c3382433ae94ada45780312a2a9fd082ad1478"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 30 20:33:31 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 30 20:33:31 2015 -0800"
      },
      "message": "Include \u003cmalloc.h\u003e for struct mallinfo.\n\nGCC doesn\u0027t seem to care, but clang does.\n\nChange-Id: I9884820339a9e6f142862928c357f1a538184ae0\n"
    },
    {
      "commit": "6a3ff01cd4f063556cf25706ddc9dff82c351aba",
      "tree": "688a98c07ddfecd05d706e8f6b6d3033d8ca037e",
      "parents": [
        "7f17aea2fc21aaf657824a023a4b7582fb74a2d9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 29 10:47:45 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 29 11:19:15 2015 -0800"
      },
      "message": "Rewrite __cxa_guard.cpp with \u003cstdatomic.h\u003e.\n\nBug: 19180923\nChange-Id: If4912d01db43c72ef12f4b04270ddb5d76d09462\n"
    },
    {
      "commit": "05fc1d7050d5451aea08dc5f504d2670287b2d43",
      "tree": "fa1d81b61b303ee8ed94c511cc08b8f40ed6624b",
      "parents": [
        "43606bc1ce974e4ba42d7d2c3682ad5182e6fc96"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 28 18:02:33 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 28 19:23:11 2015 -0800"
      },
      "message": "Add missing includes.\n\nChange-Id: Ibf549266a19a67eb9158d341a69dddfb654be669\n"
    },
    {
      "commit": "80e6d6d825df4616808b22b5639114566c27af0e",
      "tree": "7cdb81c44f8eb5f5ffbd35f5e73f2c1198b3a8a0",
      "parents": [
        "385c07a74ca5438a6f7fe0ada2b461f880563073"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jan 23 18:21:46 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 27 19:49:12 2015 -0800"
      },
      "message": "Switch pthread_once_t to stdatomic.h.\n\nBug: 17574610\n\nChange-Id: I653f2aa4b5b38dbdaffe4a6c3deccfe6ad3b0e74\n"
    },
    {
      "commit": "e6099098a5fcf92c4205718ff505e784aeeaae70",
      "tree": "8ce16b63f13b300753bbcb9cc27a869b466e38ff",
      "parents": [
        "192e169a404fee48483335ed988788924266ff5d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 27 11:09:27 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 27 11:09:27 2015 -0800"
      },
      "message": "Fix mips build.\n\nMove various mips-only things into the arch-mips directory. As soon as mips\nwrites assembler replacements, we can remove these.\n\nChange-Id: Ia7308559bc361f5c8df3e1d456b381865e060b93\n"
    },
    {
      "commit": "1edfd9e36acff1824c5e8dcfbdc0580dcc74e1bb",
      "tree": "7a5db76270bc56cb27127c384807b68bb0b57c63",
      "parents": [
        "5c7964c5f159bc3e1bbc577c7ace52177f399b21"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 21:45:56 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 21:45:56 2015 -0800"
      },
      "message": "x86 has an assembler bcopy implementation.\n\nChange-Id: I4ed7af3c5b104f86550120401f773150c460f37b\n"
    },
    {
      "commit": "76f8916b904db14facf811ae44e1265261349702",
      "tree": "cf49d5313eb0e5a05463dbe519de48d4fddf84a9",
      "parents": [
        "419ed122aa21cf04334f21baab135ac4f9f49840"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 13:34:58 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 14:28:41 2015 -0800"
      },
      "message": "Clean up \u003cstdlib.h\u003e slightly.\n\nInterestingly, this mostly involves cleaning up our implementation of\nvarious \u003cstring.h\u003e functions.\n\nChange-Id: Ifaef49b5cb997134f7bc0cc31bdac844bdb9e089\n"
    },
    {
      "commit": "b8a8cf0d1a333401eae9c9e1d70b9c1b154ff9c9",
      "tree": "1b6e04d81d4ab74f9928a79deeef386e689ae4a8",
      "parents": [
        "66eeec8e160feddc2b35c4ff9d20de92f37331dd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 24 18:36:29 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 11:57:11 2015 -0800"
      },
      "message": "Add \u003cerror.h\u003e.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d79170\nChange-Id: Id91765fac45124545e2674a5b2c814707c1a448b\n"
    },
    {
      "commit": "6466292a7e47f3adfeb6721cf16e6b78b1c76625",
      "tree": "6b6def69d3527330496182d551d8e7910de38a39",
      "parents": [
        "6e15edcca5f5b35221b33e9994c236f148cb3c38"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 24 14:18:16 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 24 14:18:16 2015 -0800"
      },
      "message": "Reduce \u003csignal.h\u003e namespace pollution.\n\n\u003csignal.h\u003e shouldn\u0027t drag in all of \u003cstring.h\u003e.\n\nChange-Id: I57aea36dad5e89ea2f9541c35594ca6225e532be\n"
    },
    {
      "commit": "c56af08c21fd93c50303370015071527e110e05d",
      "tree": "c5e949707d796bec4d7e116509bdddf79bcebb31",
      "parents": [
        "d1668a71df761eb1644496f3e2c77c16fd54bb06"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 22 11:02:59 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 22 11:02:59 2015 -0800"
      },
      "message": "Use a more specific return type for app_id_from_name.\n\nI suspect we can simplify this code, but I don\u0027t know enough about it\nto get involved now.\n\nChange-Id: I1c39761ae31beb70d41ffa6f0e396a4f17529d46\n"
    },
    {
      "commit": "8b5df3920f2843c9cdf04160517c1e8b77c992f5",
      "tree": "a0a678ee8f107e5c25f937f444a970a0539d2af7",
      "parents": [
        "2a8c929aaf8d34d2b6e89ed9c8b6da163316143e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 21 16:19:07 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 21 17:09:58 2015 -0800"
      },
      "message": "Turn on -Wold-style-cast and fix the errors.\n\nA couple of dodgy cases where we cast away const, but otherwise pretty boring.\n\nChange-Id: Ibc39ebd525377792b5911464be842121c20f03b9\n"
    },
    {
      "commit": "19e246dda6772ffc532b1762cd7870d6c3b01c12",
      "tree": "93ab36fe44bc75b7366ad6d362ba25bc4ba4d994",
      "parents": [
        "deab11acd7000573ad9c034e5bf9475aadbc5cbe"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Dec 18 14:22:09 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 15 10:45:25 2015 -0800"
      },
      "message": "Fix possible leak in pthread_detach.\n\nIf pthread_detach() is called while the thread is in pthread_exit(),\nit takes the risk that no one can free the pthread_internal_t.\nSo I add PTHREAD_ATTR_FLAG_ZOMBIE to detect this, maybe very rare, but\nboth glibc and netbsd libpthread have similar function.\n\nChange-Id: Iaa15f651903b8ca07aaa7bd4de46ff14a2f93835\n"
    },
    {
      "commit": "917d390510e442b9b030d54992ebf41cc1e7f853",
      "tree": "fd11b414b2b5f550c20944d916b07533d125b061",
      "parents": [
        "b5e508cfee2355bad0502587e4fce8f4173584d6"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 08 12:32:42 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 08 14:27:24 2015 -0800"
      },
      "message": "Make pthread stack size match real range.\n\nBug: 18908062\nChange-Id: I7037ac8273ebe54dd19b1561c7a376819049124c\n"
    },
    {
      "commit": "ac8f2810297cd6c104aad38686627fcc13591347",
      "tree": "533068d127ce999bb2b90715c59ee6e27d262b73",
      "parents": [
        "8004f735f1bad7255268392e2c7ac648f0702e5e",
        "30e59c4c691d493fda7da35307db69ced61e7cf4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 07 02:59:26 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 07 02:59:26 2015 +0000"
      },
      "message": "Merge \"_Unwind_Context is a struct.\""
    },
    {
      "commit": "30e59c4c691d493fda7da35307db69ced61e7cf4",
      "tree": "037fed2bb268f386bb8d3d25da3064ce8fe4235f",
      "parents": [
        "d3de1ddef1427708581af4df02943486783f980d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 06 18:48:24 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 06 18:48:24 2015 -0800"
      },
      "message": "_Unwind_Context is a struct.\n\nChange-Id: Iff2c52dc630eb83b931a78fdebc4494d69462db7\n"
    },
    {
      "commit": "ba8dfc2669d658dc340eb8f9c9b40ca074f05047",
      "tree": "d8e34d3dd322641c80c2605457378afd60d0bdfb",
      "parents": [
        "597800f1d71590fc9ad51ce5227280586b2ceda5"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 06 09:31:00 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 06 17:11:23 2015 -0800"
      },
      "message": "Remove PTHREAD_ATTR_FLAG_USER_ALLOCATED_STACK.\n\nPatch for https://android-review.googlesource.com/#/c/120844/.\n\nChange-Id: Idca5ccd7b28e8f07f1d2d1b6e3bba6781b62f0e0\n"
    },
    {
      "commit": "541b0b187dd91684efdcebf72c8830e976ca04a6",
      "tree": "b8024208fd26e7b23cae5ef6e8d15f8db61c9cb8",
      "parents": [
        "9b6164ca8d7b2c5e7fced1cbbda6c353e6e21e54",
        "6a7aaf46759db32c6ed0eb953a4a230dc96af0d9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jan 02 22:37:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 02 22:37:56 2015 +0000"
      },
      "message": "Merge \"Reserve enough user request stack space in pthread_create.\""
    },
    {
      "commit": "6a7aaf46759db32c6ed0eb953a4a230dc96af0d9",
      "tree": "89b9cbd40571d38d60c19730224c90efd0fb4ebf",
      "parents": [
        "a2177c6ccb65104659543c895b753458abfadcab"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Dec 22 19:17:33 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jan 02 14:33:48 2015 -0800"
      },
      "message": "Reserve enough user request stack space in pthread_create.\n\nBug: 18830897\nChange-Id: I1ba4aaeaf66a7ff99c5d82ad45469011171b0a3b\n"
    },
    {
      "commit": "40360b379cee07574493f5a450cf1c6e531bdde0",
      "tree": "2b16a06dc25f1c3f51e94dc099513464f615e622",
      "parents": [
        "0a552407ada6fc718be016df0902f6c23aa88eea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 29 13:29:50 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 29 13:29:50 2014 -0800"
      },
      "message": "Remove bogus transitive includes.\n\n\u003csignal.h\u003e shouldn\u0027t get you the contents of \u003cerrno.h\u003e, and \u003cfcntl.h\u003e\nshouldn\u0027t get you the contents of \u003cunistd.h\u003e.\n\nChange-Id: I347499cd8671bfee98e6b8e875a97cab3a3655d3\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": "8cf1b305670123aed7638d984ca39bfd22388440",
      "tree": "f8fc12a882822ca1ba41b68d84414e252faade9c",
      "parents": [
        "c631bb215e29981222f19c092ded49c7c1f15845"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Dec 03 21:36:24 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Dec 19 16:05:29 2014 -0800"
      },
      "message": "Use mmap to create the pthread_internal_t\n\nAdd name to mmaped regions.\nAdd pthread benchmark code.\nAllocate pthread_internal_t on regular stack.\n\nBug: 16847284\nChange-Id: Id60835163bb0d68092241f1a118015b5a8f85069\n"
    },
    {
      "commit": "7874f1d7182d80eb72c699eaa9ab8cc4cfec95ab",
      "tree": "4348cc097c742280038ff78b454d6cd513cd619e",
      "parents": [
        "9dd5ab46194a3ef7992b0c08d18f2e30551f9331"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 18 13:36:25 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 18 15:01:10 2014 -0800"
      },
      "message": "Split the shared group data from the shared passwd data.\n\nFound by the toybox id(1) which calls both getpwuid(3) and getgrgid(3) before\nlooking at either result. The use of a shared buffer in this code meant that\neven on a single thread, the data for any of the passwd functions would be\nclobbered by the data for any of the group functions (or vice versa).\n\nThis might seem like an insufficient fix, but POSIX explicitly says (for\ngetpwnam) that the result \"might be overwritten by a subsequent call to\ngetpwent(), getpwnam(), or getpwuid()\" and likewise for other members of\nthat group, plus equivalent text for the group-related functions.\n\nChange-Id: I2272f47e91f72e043fdaf7c169fa9f6978ff4370\n"
    },
    {
      "commit": "6c238f2926e69a950f0671ae5519584c20d84196",
      "tree": "a3593ca9ef0940c7518e47632c67047ad89cad40",
      "parents": [
        "6d634f9baaf804a91c97e019c832c1e9611a903a"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Dec 11 20:50:41 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Dec 12 17:00:08 2014 -0800"
      },
      "message": "Fix pthread key num calculation.\n\nBug: 18723085\nChange-Id: Iba2c834b350e4cdba0b2d771b221560a3e5df952\n"
    },
    {
      "commit": "a381fe8ebcd196614a00f4dca3539e0860ef9e84",
      "tree": "3554d98520ded579dcc9ad2e5e4f36e23f3f7b5f",
      "parents": [
        "3592743f7191c69ae1fd2d7e01222bd380d93d3e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 09 20:30:23 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 09 20:30:23 2014 -0800"
      },
      "message": "Fix ptsname(3) and ttyname(3) to use TLS.\n\nBe safe by default.\n\nChange-Id: I6c4a3f1fd4eee3a651b3162ce95b7e873de57521\n"
    },
    {
      "commit": "94926f8cfa0adf37c4e19256ade7261a97f72e51",
      "tree": "8c990320ebf445406d3d50be443db10cd58eee42",
      "parents": [
        "b033761cbf0e79ade9a8c956c2e63b42ee838183",
        "634816055f51c536d24dea30dfe930b7fe2fa603"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Dec 09 20:10:19 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 09 20:10:19 2014 +0000"
      },
      "message": "Merge \"support _POSIX_REALTIME_SIGNALS\""
    },
    {
      "commit": "725756045e03ea6f7ef00d02e883ef2914d06dde",
      "tree": "f659fe46a294ec77a2b617e82d725642e0c70bf7",
      "parents": [
        "734f0d645e461a1061c879e5bd964592d3f326ee"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Dec 08 11:54:12 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Dec 09 09:16:11 2014 -0800"
      },
      "message": "Change _POSIX_CPUTIME macro to make it compitable with glibc.\n\nChange-Id: I7a8dbb74bd622693c9fef60bd779687207517b7d\n"
    },
    {
      "commit": "634816055f51c536d24dea30dfe930b7fe2fa603",
      "tree": "5d3739b116df16774776010538254c10007c0a76",
      "parents": [
        "f64c43ba6c9244c50e904961dc432f04b1dfcfd9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Dec 01 17:41:04 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Dec 08 21:52:43 2014 -0800"
      },
      "message": "support _POSIX_REALTIME_SIGNALS\n\nBug: 18489947\nChange-Id: I2e834d68bc10ca5fc7ebde047b517a3074179475\n"
    },
    {
      "commit": "2421406711e0b2e214234add79c842bbb2c07ca1",
      "tree": "6526f4bb3eee3255e41ce12f9e3b0849a3732768",
      "parents": [
        "9e08a7bbb85179da9ef56ee4bdc87078bfe5c30d",
        "1f40be97b16ff895a50f48ae8dd1745f57688b6b"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Fri Dec 05 18:11:53 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 05 18:11:53 2014 +0000"
      },
      "message": "Merge \"Add cache related sysconf queries\""
    },
    {
      "commit": "1f40be97b16ff895a50f48ae8dd1745f57688b6b",
      "tree": "90bf09026ded666938ba1c2682370fcbaa14d02c",
      "parents": [
        "6bec3484ee1e90662c8c5e52c71fcdc430a7b619"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Thu Dec 04 15:24:28 2014 -0800"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Thu Dec 04 15:24:28 2014 -0800"
      },
      "message": "Add cache related sysconf queries\n\nSeveral cache related queries are added, such as\n_SC_LEVEL1_DCACHE_LINESIZE, _SC_LEVEL1_DCACHE_SIZE and etc. For the\nmoment, we always return 0 for these queries.\n\nChange-Id: I36f67af8128672d8c1eef49d6f2431cca5a94719\n"
    },
    {
      "commit": "5afae64a1bac56638c6348f0c8f5e9d61b654029",
      "tree": "596b834f553f804c84a13615f30ff6ad67201303",
      "parents": [
        "230005c4bd3910ef974694f88d04e6f6a5a540b4"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Nov 25 20:17:27 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Dec 04 11:01:28 2014 -0800"
      },
      "message": "implement posix_madvise\n\nBug: 18472477\nChange-Id: I8183de6c281acf69ed5f7f88351b056b9827b162\n"
    },
    {
      "commit": "65f0df78730fb0d6994f9d4d0a16dc0241081d94",
      "tree": "d05ddfa7188f1943afb3132a9e5da9c575db751c",
      "parents": [
        "91a61f77e203bf519c28f9331b9c8db731869499"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 03 14:39:20 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 03 15:55:34 2014 -0800"
      },
      "message": "Implement \u003cpty.h\u003e.\n\nBased on the package/apps/Terminal implementation. I\u0027ll switch them over\nshortly. This also lets us build the toybox version of netcat.\n\nChange-Id: Ia922a100141a67409264b43b937eeca07b21f344\n"
    },
    {
      "commit": "8574a0670bf698b8d2f817098f9d825c4be03a68",
      "tree": "f01c1cd0cab5ff4bad74f9be90cd1dc0cc822513",
      "parents": [
        "46d0b81a9465bf74fe44a881365c332dc6173f2f"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Dec 01 22:37:56 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Dec 02 10:39:25 2014 -0800"
      },
      "message": "Use mmap to create the pthread_internal_t.\n\nBug: 16847284\nChange-Id: I488fa236f57aa3acb29b4ffbbab2fab51b0653be\n"
    },
    {
      "commit": "212e0e38248860b151b28877225629a988d95b58",
      "tree": "f43f3b8bc2472d2584750052171a0d6da5277e25",
      "parents": [
        "076f69d828cfa5d30360e1dd2f24acd751d4a461"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:43:51 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:43:51 2014 -0800"
      },
      "message": "Build our benchmarks against glibc too.\n\nBug: 18556607\nChange-Id: I455ac8b93c0835836180e549486bc52d393ee6a6\n"
    },
    {
      "commit": "d5c652756bb1a52959cd5c62447b62462f90f983",
      "tree": "8804bb959d8d66a5a8557683416c254f2fc98530",
      "parents": [
        "f64c43ba6c9244c50e904961dc432f04b1dfcfd9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Nov 26 14:04:26 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Nov 26 17:14:50 2014 -0800"
      },
      "message": "support _POSIX_CPUTIME\n\nBug: 18490039\nChange-Id: I01fa83b48e1b908de1f227b6e4f98e280bcd50ee\n"
    },
    {
      "commit": "5b8ceff5f87889e781c13305767e140afd28eb76",
      "tree": "ad95ccbfbc12b6a75ef56e6646cea4aee94b675c",
      "parents": [
        "cc5f6543e3f91385b9a912438965b7e8265df54a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 26 11:53:44 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 26 11:56:54 2014 +0000"
      },
      "message": "Revert \"Use mmap to create the pthread_internal_t.\"\n\nUnfortunately, this change provokes random crashes for ART, and\nI have seen libc crashes on the device that might be related to it.\n\nReverting it fixes the ART crashes. there is unfortunately no\nstack trace for the crashes, but just a \"Segmentation fault\" message.\n\n\nThis reverts commit cc5f6543e3f91385b9a912438965b7e8265df54a.\n\nChange-Id: I68dca8e1e9b9edcce7eb84596e8db619e40e8052"
    },
    {
      "commit": "cc5f6543e3f91385b9a912438965b7e8265df54a",
      "tree": "5176225b4d6b6f62ab590563022901042de44d8e",
      "parents": [
        "eb3a5e026e65ea80b17580a71f4451f5cf5d6612"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Nov 25 14:18:12 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Nov 25 15:25:06 2014 -0800"
      },
      "message": "Use mmap to create the pthread_internal_t.\n\nBug: 16847284\nChange-Id: Ic8c85f95afac1d8422ecb69674c688d1fecb6a44\n"
    },
    {
      "commit": "eb3a5e026e65ea80b17580a71f4451f5cf5d6612",
      "tree": "ad95ccbfbc12b6a75ef56e6646cea4aee94b675c",
      "parents": [
        "95a02366f2697ed65c4a2849a9cbde3d403142e3",
        "1c19194c9d2518dbe86973cd313a277ecb70d75c"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Nov 24 01:59:22 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 24 01:59:23 2014 +0000"
      },
      "message": "Merge \"flesh out sysconf(3) and the _POSIX_* constants\""
    },
    {
      "commit": "95a02366f2697ed65c4a2849a9cbde3d403142e3",
      "tree": "4be53f2bac256bc5dc9dfd6eb0e9399969a06b42",
      "parents": [
        "806dd9f90c8daadfafd19d69e3f36bb00729cb8e",
        "2818279ace22fb854b00e668c224492c4dd072a4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Nov 23 18:06:28 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Nov 23 18:06:29 2014 +0000"
      },
      "message": "Merge \"Sync with upstream OpenBSD fts.c.\""
    },
    {
      "commit": "2818279ace22fb854b00e668c224492c4dd072a4",
      "tree": "140347ce51972bf59c53cd9798ce97567d776dab",
      "parents": [
        "770198d3f707d5eccd6796f311015903aec31b26"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 21 19:25:27 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 21 19:27:28 2014 -0800"
      },
      "message": "Sync with upstream OpenBSD fts.c.\n\nChange-Id: Ia7e26b603f6461095b5a8d7e8a6cdf4f8279fa84\n"
    }
  ],
  "next": "1c19194c9d2518dbe86973cd313a277ecb70d75c"
}
