)]}'
{
  "log": [
    {
      "commit": "59bce688c7edfa2479f63a76268cc30f98d1044c",
      "tree": "f4b7bdc40e8525bff6e1750f79c8016e14d9f36c",
      "parents": [
        "682a240c5d6a479ed3b8187ea99044627bf2394c",
        "0a93df369cf3f44d40ca1f0cb4a58aeab42fb39c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Apr 27 17:17:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 27 17:17:45 2015 +0000"
      },
      "message": "Merge \"Fix opcode to compile with both gcc and llvm.\""
    },
    {
      "commit": "42502d702e1625c9f3337f7a18ea5fc4cfc6090c",
      "tree": "0b2b068e214267f7c5760a91ecac92ac0bcc89be",
      "parents": [
        "2eaff07839393485fec522fd0bd17bbf1af72ca6",
        "4ae773633aac9ceba5ec62bb8e1aa22c3c56ebde"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Apr 25 21:29:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 25 21:29:57 2015 +0000"
      },
      "message": "Merge \"add fortified memchr/memrchr implementations\""
    },
    {
      "commit": "ea295f68f1fae7c701baaa717f67296659d567ac",
      "tree": "745388310ffe715acbfd96b3cedfe55ccb50a2ca",
      "parents": [
        "ebfb55e4cdf03473d66eaf5928fb3c3a8b0c2f85"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 20 20:47:02 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 17:57:37 2015 -0700"
      },
      "message": "Unregister pthread_atfork handlers on dlclose()\n\nBug: http://b/20339788\nChange-Id: I874c87faa377645fa9e0752f4fc166d81fd9ef7e\n"
    },
    {
      "commit": "6c63ee41ac5a246fb46c51753cd4d50ccae0dd8f",
      "tree": "3ed0595fe98662464ea1ad7d6d5e75af9ff851b5",
      "parents": [
        "41ebceaf3ad392b4a3f40d96d5750d95ef206546",
        "094f58fb2a57d1ed5736ae3588bf0355618f915b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:49:30 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 03:49:30 2015 +0000"
      },
      "message": "Merge \"Revert \"Unregister pthread_atfork handlers on dlclose()\"\""
    },
    {
      "commit": "094f58fb2a57d1ed5736ae3588bf0355618f915b",
      "tree": "8f41a50086a97f88be5bf98d2a2806a26d854d5a",
      "parents": [
        "6df122f8528f9b9fcf7dfea14ae98b0ef66274e1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:45:59 2015 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:46:57 2015 +0000"
      },
      "message": "Revert \"Unregister pthread_atfork handlers on dlclose()\"\n\n The visibility control in pthread_atfork.h is incorrect.\n It breaks 64bit libc.so by hiding pthread_atfork.\n\n This reverts commit 6df122f8528f9b9fcf7dfea14ae98b0ef66274e1.\n\nChange-Id: I21e4b344d500c6f6de0ccb7420b916c4e233dd34\n"
    },
    {
      "commit": "e3ecedd306ec16ecb31c6b7d6f9fdcb65c03b70f",
      "tree": "7857fbd884df8bb1edb0abf37b1dad04a9cce08c",
      "parents": [
        "3da9373fe0ada19d13c6c3f9831dee93ec0ba7a6",
        "7280e507b61851bce9b18259368d65b9e950c330"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 23 21:50:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 23 21:50:15 2015 +0000"
      },
      "message": "Merge \"Remove jemalloc.a from libc_nomalloc.a\""
    },
    {
      "commit": "0a93df369cf3f44d40ca1f0cb4a58aeab42fb39c",
      "tree": "76ac32a264a8a007634eb2067e7b9607c8aab93b",
      "parents": [
        "913fe559f69395aaf160653c1d3994df3272810b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Apr 23 14:27:10 2015 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Apr 23 21:40:31 2015 +0000"
      },
      "message": "Fix opcode to compile with both gcc and llvm.\n\nBUG: 17302991\n\nChange-Id: I31febd9ad24312388068803ce247b295bd73b607\n"
    },
    {
      "commit": "3da9373fe0ada19d13c6c3f9831dee93ec0ba7a6",
      "tree": "ef5f36fd86ed71b516a9b88959e2d0ae7ff88b57",
      "parents": [
        "dc405b5230c3d72107b57798a2c23b1a46069f4d",
        "3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 23 21:14:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 23 21:14:25 2015 +0000"
      },
      "message": "Merge \"Simplify close(2) EINTR handling.\""
    },
    {
      "commit": "7280e507b61851bce9b18259368d65b9e950c330",
      "tree": "570080db918c1f3cbaa1858940f0e4bb330fc441",
      "parents": [
        "dc405b5230c3d72107b57798a2c23b1a46069f4d"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 23 12:24:43 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 23 12:24:43 2015 -0700"
      },
      "message": "Remove jemalloc.a from libc_nomalloc.a\n\nChange-Id: I86edc1a6cf3a26c46e6daef2c859459c1b0f29af\n"
    },
    {
      "commit": "3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208",
      "tree": "310c54610766a838a0569f8e44b33e7805b2d42c",
      "parents": [
        "ff18108981aa1fa73696d6db1919cdc38788bd4e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 22 21:40:38 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 23 08:41:45 2015 -0700"
      },
      "message": "Simplify close(2) EINTR handling.\n\nThis doesn\u0027t affect code like Chrome that correctly ignores EINTR on\nclose, makes code that tries TEMP_FAILURE_RETRY work (where before it might\nhave closed a different fd and appeared to succeed, or had a bogus EBADF),\nand makes \"goto fail\" code work (instead of mistakenly assuming that EINTR\nmeans that the close failed).\n\nWho loses? Anyone actively trying to detect that they caught a signal while\nin close(2). I don\u0027t think those people exist, and I think they have better\nalternatives available.\n\nBug: https://code.google.com/p/chromium/issues/detail?id\u003d269623\nBug: http://b/20501816\nChange-Id: I11e2f66532fe5d1b0082b2433212e24bdda8219b\n"
    },
    {
      "commit": "6df122f8528f9b9fcf7dfea14ae98b0ef66274e1",
      "tree": "5a59eb4d1148b6218b8a06895baf6176f17b995b",
      "parents": [
        "ff18108981aa1fa73696d6db1919cdc38788bd4e"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 20 20:47:02 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 22 19:19:37 2015 -0700"
      },
      "message": "Unregister pthread_atfork handlers on dlclose()\n\nChange-Id: I326fdf6bb06bed12743f08980b5c69d849c015b8\n"
    },
    {
      "commit": "a00a9f0b7ed39589a768798de6a584a4baae030b",
      "tree": "80732a5c48eaf573106794d7962818f0824463b7",
      "parents": [
        "da3c4f2f0d86b7e249c9b9b6cdf3bc0225b7178e",
        "6fb8e96e5f6ff2dd3b3aa8eda0a6766d6b3a63f2"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Apr 21 23:44:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 23:44:59 2015 +0000"
      },
      "message": "Merge \"Allow building libc long double code with clang/llvm.\""
    },
    {
      "commit": "6fb8e96e5f6ff2dd3b3aa8eda0a6766d6b3a63f2",
      "tree": "f88e0d48c62c381c1ecee547ab2b940cce2a8948",
      "parents": [
        "9923c8cd13d1e8305a908ef23712c7d3e4d4131d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Mar 16 13:49:40 2015 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Apr 21 21:20:37 2015 +0000"
      },
      "message": "Allow building libc long double code with clang/llvm.\n\nThis requires fix of clang\u0027s Android x86 long double size and format.\nThat bug has been fixed in https://android-review.git.corp.google.com/#/c/146254/\n\nChange-Id: I182c6c493085212f88c694356659f72227c8b8c7\n"
    },
    {
      "commit": "4ae773633aac9ceba5ec62bb8e1aa22c3c56ebde",
      "tree": "08855d690e35a16d9c1cbe68148da64f54f5ebd1",
      "parents": [
        "3875744f89600027c69ea68650fff1eeb4b29723"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Fri Apr 17 18:16:57 2015 -0400"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Fri Apr 17 21:17:12 2015 -0400"
      },
      "message": "add fortified memchr/memrchr implementations\n\nChange-Id: I38c473cc0c608b08f971409a95eb8b853cb2ba1c\n"
    },
    {
      "commit": "42281880a8ac8614832ff918a14e4b950f35d05d",
      "tree": "0823c1e87386aea7417635e176494ab2b9fb89ab",
      "parents": [
        "3875744f89600027c69ea68650fff1eeb4b29723"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Fri Apr 17 11:26:36 2015 -0400"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Fri Apr 17 18:49:12 2015 -0400"
      },
      "message": "add fortified readlink/readlinkat implementations\n\nChange-Id: Ia4b1824d20cad3a072b9162047492dade8576779\n"
    },
    {
      "commit": "e7e1c875b0f8eefb1d771f200a58f54e64c39d55",
      "tree": "f6f7d5465c32d2dc7144c9e46b8b57da480f8528",
      "parents": [
        "a40cb0ca7fe8ddc146831e92ec543be9feb26a65"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Thu Apr 16 09:07:45 2015 -0400"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Thu Apr 16 10:33:35 2015 -0400"
      },
      "message": "add fortified implementations of pread/pread64\n\nChange-Id: Iec39c3917e0bc94371bd81541619392f5abe29b9\n"
    },
    {
      "commit": "a40cb0ca7fe8ddc146831e92ec543be9feb26a65",
      "tree": "4bf0c59669d2bb2bce605a400a49de7eaf62c723",
      "parents": [
        "12d89027457b4d5dce6c3a7fd01a2951f273d9a9",
        "163ab8ba86deb991c73152e6828f270cc71dc4c5"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 16 08:06:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 08:06:03 2015 +0000"
      },
      "message": "Merge \"Call __cxa_thread_finalize for the main thread.\""
    },
    {
      "commit": "163ab8ba86deb991c73152e6828f270cc71dc4c5",
      "tree": "fdaf88cdc6ae4788a95f2f527e35fa869398397f",
      "parents": [
        "8f3f04184a5772b421867b59acd3d0dfbc6fa4eb"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 15 15:31:51 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 15 16:24:21 2015 -0700"
      },
      "message": "Call __cxa_thread_finalize for the main thread.\n\nBug: http://b/20231984\nBug: http://b/16696563\nChange-Id: I71cfddd0d404d1d4a593ec8d3bca9741de8cb90f\n"
    },
    {
      "commit": "66aa0b61f736678e97a0cfaf975052881a23651b",
      "tree": "0377a161a2d6745f88c73bd6474916efb1dcaa99",
      "parents": [
        "cafc948069d447aa1e4dde599ee83bf6c0c5d5d8"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 15 14:07:28 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 15 14:23:00 2015 -0700"
      },
      "message": "Hide emutls* symbols in libc.so\n\n Also make thread_local in test static to avoid ld.bfd\n warning for arm64.\n\nChange-Id: I09a3f2aa9b73a4fafa3f3bbc64ddc2a128ad50ee\n"
    },
    {
      "commit": "76e1cbca75e9fdaf7a7943f2c58e65433b283f4a",
      "tree": "71f98b1cf8521c3c2111bf375707d8aebf653cf9",
      "parents": [
        "06b6e3c51d38d70c5ca99f3a3f795697031ac27f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 11:27:53 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 12:37:03 2015 -0700"
      },
      "message": "Fix volantis boot.\n\nNVIDIA binary blobs are assuming that __cache_clear, _Unwind_Backtrace,\nand _Unwind_GetIP are all in some library that they link, but now we\u0027ve\ncleaned up this leakage, they\u0027re no longer getting it. Deliberately leak\nthe symbols from libc.so until we get new blobs.\n\nBug: http://b/20065774\nChange-Id: I92ef07b2bce8d1ad719bf40dab41d745cd6904d4\n"
    },
    {
      "commit": "d6bf3d5e19f192dc1949b573d931d487c42730fa",
      "tree": "6cf22de9eb63e28b7447f58b13b326f69dce4ca4",
      "parents": [
        "b023799a6027924aad13b0f91c0b5b7f1b9cfe2d"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Apr 01 16:26:54 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Apr 01 16:31:57 2015 -0700"
      },
      "message": "Don\u0027t export new/delete from libc shared libraries.\n\nThis used to be handled by -fvisibility\u003dhidden on libc_cxa, but that\nwas broken by the resolution of https://llvm.org/PR22419 (introduced\nto Android in today\u0027s clang update).\n\nNow we just use a version script that prevents these from being\nre-exported from our shared libraries.\n\nChange-Id: Ib290e1d0d7426e09ad17a91178162fff6dbdcfa9\n"
    },
    {
      "commit": "402d19945092eee87cfb6c029c98ccb4fb40d2c6",
      "tree": "fed0256e34404fee5603fe4a862190a949f8c522",
      "parents": [
        "cd79a59b18f8e81b5f37258f376a726dc8acb81a"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 27 15:27:07 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 27 15:27:07 2015 -0700"
      },
      "message": "Fix libstdc++.so hash-style.\n\nBug: 19059885\nBug: 19958712\nChange-Id: I167457a54cc688d64912a50f5fb75e4e2f3e3937\n"
    },
    {
      "commit": "df79c330d895af31f39ee301dee62731fa586168",
      "tree": "7129c6e46b2c150027605af4c6f08c1e6de24815",
      "parents": [
        "0c3b632bd6570064bab1055d2b8a51cfb85e60bb"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 25 17:38:10 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 25 18:07:59 2015 -0700"
      },
      "message": "Initial implementation of __cxa_thread_atexit_impl\n\n  This is initial implementations; does not yet handle\n  dlclose - undefined behavior, needs linker support to\n  handle it right.\n\nBug: 19800080\nBug: 16696563\nChange-Id: I7a3e21ed7f7ec01e62ea1b7cb2ab253590ea0686\n"
    },
    {
      "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": "2e16d2cf1e477af1db92efde389a5ce0a8e6fbb3",
      "tree": "b94bcc714add9028cf875933cade2e284b951b85",
      "parents": [
        "be86f87711ee71ff971da2e2ae7a092081177951"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 13 12:43:30 2015 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 13 19:48:03 2015 +0000"
      },
      "message": "Switch libc and libm to sysv-only hash style\n\nBug: 19059885\nChange-Id: I60a23dc5f9c756994d566818332ca42b305b4a05\n"
    },
    {
      "commit": "1156508265422f407c7072788ce6c32c35411941",
      "tree": "8396de72d1b950b695df57fe39a679c9e37ff440",
      "parents": [
        "a94cf791c1c9b93d49f5573716de93348757ae15"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "goran.jakovljevic@imgtec.com",
        "time": "Tue Mar 10 17:11:39 2015 +0100"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 10 10:01:50 2015 -0700"
      },
      "message": "Generate gnu hash for arm only\n\nFixes build failure caused by:\nhttps://android-review.googlesource.com/#/c/139660\n\nAs previously discussed [1], MIPS does not support GNU-style ELF hashes.\n\n[1] https://android-review.googlesource.com/#/c/49282/2/tests/Android.mk\n\nChange-Id: I9a7966eebfd1ef0a587a20b71faefde38e84ab62\n"
    },
    {
      "commit": "4a55c46d308deae70d7d8669c50514d521813dc2",
      "tree": "58d3ded6c3fe7002348e118f45435c668cfac5d8",
      "parents": [
        "017f94d34eedfaca1c62cb35a65b8436f04b8f62"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 09 19:38:56 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 09 19:38:56 2015 -0700"
      },
      "message": "Generate sysv hash for libc, libstdc++ and libm\n\nBug: 19059885\nChange-Id: I35e2a9cd0bb3914d9d0c82d163bfaf0fff844667\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": "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": "2c678e6644a0ac7bfdfb8f199ac2cd0d4ea1153f",
      "tree": "65f48180347c969cf7b95eb73958656142bde268",
      "parents": [
        "5890ec3e229cbe115308e103111fec471f2319b7"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Feb 18 17:37:52 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Feb 18 17:37:52 2015 -0800"
      },
      "message": "Parameterize use of clang in libc_ndk.\n\nWe still have issues with clang coverage in static libraries, so we\nneed to make sure we follow suit with the rest of libc for now.\n\nBug: 17574078\nChange-Id: I2ab58a84b1caa0d8d08415d240c35adec5b1e150\n"
    },
    {
      "commit": "a6395e1fd0ccc818ed6424797690b12f8b690755",
      "tree": "5e86f2e854024b8fcd0496119fb0caf4b0df7f81",
      "parents": [
        "9a9ea3a28099602fe22e36638a44fa36df80fe8e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Feb 12 16:35:09 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 17 17:02:42 2015 -0800"
      },
      "message": "Update NDK compatlib for 4.1.2.\n\nThe replacement new failures present in newer versions are present\nhere as well, with the following new issues:\n\nXPASS std/localization/locale.categories/category.numeric/locale.nm.put/facet.num.put.members/put_long_double.pass.cpp\n\nThis is from the -NaN formatting fix in bionic. We previously had this\nwrong, and the upstream test is also wrong. There\u0027s currently an XFAIL\nfor Android in this test because I haven\u0027t fixed the upstream test\nyet. After that is done, I\u0027ll need to teach the test runner how to\nXFAIL older Android versions...\n\nFAIL std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.dtor/dtor.pass.cpp\n    dtor.pass.cpp:39: int main(): assertion \"globalMemCounter.checkDeleteArrayCalledEq(1)\" failed\n\nHaven\u0027t investigated this one yet. http://b/19412688\n\nNote that this also needs the libgcc link ordering to be fixed in the\nbuild system, as we\u0027ll otherwise depend on libgcc symbols from libc\nthat may or may not have been there.\n\nThe build fix can\u0027t be submitted because the proper link order causes\nthe libgcc unwinder to be used instead of the EHABI one:\nhttp://b/18471342\n\nBug: 18471532\nChange-Id: Icf560485a9b8f5ebbe01e4458703e62ec94df5e1\n"
    },
    {
      "commit": "9a9ea3a28099602fe22e36638a44fa36df80fe8e",
      "tree": "ff71dda7ec4193daf9055a5c7ce75c4c54d1747e",
      "parents": [
        "54b61b7ca7d7c9c7474e2beb35d20a9ab635529f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Feb 09 17:45:22 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 17 17:02:34 2015 -0800"
      },
      "message": "Update the NDK compatlib for 4.4.4 and ToT.\n\nNow passes all libc++ tests for these targets, with the exception of\nthe usual failing replacement new tests since libc uses new/delete for\nthings. I don\u0027t know if we can ever really fix these.\n\nBug: 18471532\nChange-Id: Ibc0a15f26b0e4613249b5e15ecf3cf80e523467c\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": "44e88db185cc65b49373dd76d8ed27264b7299ed",
      "tree": "03ec9aa6aa8e30da41b9f007532f2d2f53c3066e",
      "parents": [
        "bda85a12392b10555dc03ac377c8450b8f0790d6",
        "91b403cef62a5f1c727c3ed7395ea83852c4a2ab"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 06 22:45:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 06 22:45:59 2015 +0000"
      },
      "message": "Merge \"Use LOCAL_C_INCLUDES instead of LOCAL_CFLAGS for include dirs\""
    },
    {
      "commit": "91b403cef62a5f1c727c3ed7395ea83852c4a2ab",
      "tree": "d521eae49865dfdf00bbbb625ca1c52fef6862ef",
      "parents": [
        "5b869c0bbf8a2924ab69d86a98e9a25558d33494"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 06 14:16:17 2015 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 06 14:16:17 2015 -0800"
      },
      "message": "Use LOCAL_C_INCLUDES instead of LOCAL_CFLAGS for include dirs\n\nChange-Id: If61d6faae5d91c3bbe198e733e5922cd877ba353\n"
    },
    {
      "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": "da2c0a708ed6c0091f3f89fd8838292579dad800",
      "tree": "366ffdc2136629ea65b5086c3b3a1bbd3a582c14",
      "parents": [
        "17976019a13a94ae428849bfe297f8e531f95013",
        "5b869c0bbf8a2924ab69d86a98e9a25558d33494"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 05 01:57:27 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 05 01:57:28 2015 +0000"
      },
      "message": "Merge changes Ib87855e8,I4b46ae20,I66364a5c,Id3fcf680\n\n* changes:\n  Use LOCAL_LDFLAGS_64 instead of enumerating 64-bit architectures\n  Fix typo in cpu variant makefile depenendency for arm64\n  Remove libc_static_common_src_files\n  Share LP32 makefile settings between arches\n"
    },
    {
      "commit": "5b869c0bbf8a2924ab69d86a98e9a25558d33494",
      "tree": "dd21061e073d1d6ea6549a353d63c7499cb0281f",
      "parents": [
        "a6b6ed5fe9dd247684de5f35a0367be65876339e"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 04 17:40:29 2015 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 04 17:40:29 2015 -0800"
      },
      "message": "Use LOCAL_LDFLAGS_64 instead of enumerating 64-bit architectures\n\nLOCAL_LDFLAGS_\u003carch\u003e was being set for arm64, mips64, and x86_64.\nUse LOCAL_LDFLAGS_64 instead.\n\nChange-Id: Ib87855e8a7783f82461b707fffa7f1663e6be9c8\n"
    },
    {
      "commit": "7dc502d01292f3303a5252ce20f80f621f4f15f5",
      "tree": "9190e89158198acffd7c69aa18fbdb3df8c78ce9",
      "parents": [
        "1742a32aea4108a8a967e8da2131de30c8808658"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 04 17:37:23 2015 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 04 17:37:23 2015 -0800"
      },
      "message": "Remove libc_static_common_src_files\n\nlibc_static_common_src_files is never set after\nc3f114037dbf028896310609fd28cf2b3da99c4d, remove the remaining\nreferences to it.\n\nChange-Id: I66364a5c1b031ad69d608f6f44244049192944f6\n"
    },
    {
      "commit": "1742a32aea4108a8a967e8da2131de30c8808658",
      "tree": "2410fb404c8fad86685f79e1b867a37025744889",
      "parents": [
        "94335cc8e2f32638d9e38741ddabfd19a38e0840"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 04 17:35:49 2015 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 04 17:35:49 2015 -0800"
      },
      "message": "Share LP32 makefile settings between arches\n\nAdd \u003cvar\u003e_32 to patch-up-arch-specific-flags, and move the LP32\ncruft varaibles from the 32-bit arch specific makefiles into the\ntop level Android.mk.\n\nChange-Id: Id3fcf6805d4af048c2524c94b1295416ebe7d057\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": "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": "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": "247cfe03825f46e38371954d04fcb90a8b36c824",
      "tree": "cb138538b52c09d05ba131460ee18fb84a702efa",
      "parents": [
        "6eb5dc1d9c38ff8f717b70a2f66417c599aeb08c",
        "b8a8cf0d1a333401eae9c9e1d70b9c1b154ff9c9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 20:38:46 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 26 20:38:46 2015 +0000"
      },
      "message": "Merge \"Add \u003cerror.h\u003e.\""
    },
    {
      "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": "6e9e6ad3bf831ed0b25ce2e6ce586a790044f8da",
      "tree": "221bb53388ba9fd0ddd5036dce1f41fbc2db0361",
      "parents": [
        "31005ca4c8562f3e6dfbed079eeaff8361ff8cdc"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sun Jan 25 14:27:51 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sun Jan 25 14:27:51 2015 -0800"
      },
      "message": "Fix coverage build after adding clang coverage.\n\nStatic libraries are painful. Details are in the comment. I\u0027ll try to\nget prebuilts in to the tree so I can fix this on Monday. Until then,\nthis isn\u0027t actually a regression because we\u0027ve not had coverage\navailable for this library until now anyway.\n\nBug: 17574078\nChange-Id: I7505c8a94007203e15a6cf192caa06004849d7d9\n"
    },
    {
      "commit": "9c3fd59b00d6f477b1a7f8611cb4f829d64aa7ea",
      "tree": "45d811b69e56a9ddd197d8a752629de47ac71cb2",
      "parents": [
        "d1668a71df761eb1644496f3e2c77c16fd54bb06"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jan 21 17:50:29 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jan 21 18:12:15 2015 -0800"
      },
      "message": "Add a basic NDK compatibility library.\n\nWe know we can safely statically link `libm`, since it doesn\u0027t have\nany dependencies on the OS or the layout of a data type that has\nchanged between releases (like `pthread_t`).\n\nWe can safely statically link `libc_syscalls` because the user can\ncheck for and handle `ENOSYS`.\n\nUpdate `ndk_missing_symbols.py` to account for symbols that are in the\ncompatibility library.\n\nImprove `symbols.py` to be able to pull symbols from a static library.\n\nChange-Id: Ifb0ede1e8b4a8f0f33865d9fed72fb8b4d443fbc\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": "8885dcc779bceae5016d5ad96caa73465a7bab90",
      "tree": "9a5851adf9ffa5755ff2e99da04e6320fc581f99",
      "parents": [
        "927d8be76d956fcda630e1088e9b89eb31be5146"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 16:18:32 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 16:18:32 2015 -0800"
      },
      "message": "Add TEMP_FAILURE_RETRY to stdio\u0027s low-level read/write functions.\n\nThis is correctness rather than performance, but found while investigating\nperformance.\n\nBug: 18593728\nChange-Id: Idbdfed89d1931fcfae65db29d662108d4bbd9b65\n"
    },
    {
      "commit": "3f61f89b559551164b13441ff4ff02ed0718530a",
      "tree": "3130e20b674ca997f6e351b36d1ab90a9ee4a9d6",
      "parents": [
        "3f1c604c9df459f5baecfdc04cbe8ecda07b70eb"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Dec 10 11:10:00 2014 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Dec 10 11:10:00 2014 -0800"
      },
      "message": "Fix missing symbol for debug malloc.\n\nBug: 18686270\nChange-Id: I800a6f0940060218413df652d74aca91f6a339f8\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": "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": "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": "20841a137beac5caa824e3586c7bd91d879ff92e",
      "tree": "3ccc88081ddcdbe9a4448c462eb16e971007f86e",
      "parents": [
        "5cd127d3aa4a2f225be202af01581838fdd3c721"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:13:30 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 02 14:22:02 2014 -0800"
      },
      "message": "Avoid pathological behavior in OpenBSD\u0027s fread.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d81155\nBug: 18556607\nChange-Id: Idc60976b79610e2202cc42dc393dcb4ca6c42e05\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": "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"
    },
    {
      "commit": "bfbf7a4300ab5cd6334212f701e47ea449456048",
      "tree": "909f0faaaa23a394861672c95d271e8311df21d5",
      "parents": [
        "eef1eb64bb5be68bfb00f8e71d3118a2cfec99e7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 17 10:06:20 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 17 10:06:20 2014 -0800"
      },
      "message": "Remove remaining bionic support for TARGET_CPU_SMP being false.\n\nChange-Id: I02a0a1c0ae55ccb5c45d17fb99a09c374d71def4\n"
    },
    {
      "commit": "9d93986481b67a8135e57fc6400ca8c59f7375f6",
      "tree": "f73d192d6191ef495a63be7fc27130190ba9e79d",
      "parents": [
        "661423a453b2692d592df56307a876dfc35c50f2"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Nov 14 15:51:58 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Nov 14 16:22:48 2014 -0800"
      },
      "message": "Add functions in sysinfo.h.\n\nBug: 17703902\n\nChange-Id: I699d12d76a8fc483c919be730c2ac63641b71a1d\n"
    },
    {
      "commit": "2f954bab2d524f6afed8a443c2a7ee32876db0fa",
      "tree": "7437b6e2e570e89df2b893f30d111e6b7acb3a1d",
      "parents": [
        "d94e7f0f1d95e0da73fca8d591fdb56b69d82653"
      ],
      "author": {
        "name": "Yongqin Liu",
        "email": "yongqin.liu@linaro.org",
        "time": "Thu Oct 30 16:34:55 2014 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 12 12:07:33 2014 -0800"
      },
      "message": "gethostname.c: change to report ENAMETOOLONG error when buflen is less\n\nchange to behaviour the same as glibc for the check about buflen\n\nChange-Id: I98265a8fe441df6fed2527686f89b087364ca53d\nSigned-off-by: Yongqin Liu \u003cyongqin.liu@linaro.org\u003e\n"
    },
    {
      "commit": "b20c24456e43df430ec5626a68e5dc0dc6929344",
      "tree": "c9b85b4d913f8f2738bdc8772b9b9a21d6ab51dc",
      "parents": [
        "08a70184b42ef2963794a56233b0253e0b367253"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 06 15:04:08 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 06 15:52:22 2014 -0800"
      },
      "message": "Implement all the POSIX _l functions.\n\nStrictly speaking, this only implements the _l variants of the functions\nwe actually have. We\u0027re still missing nl_langinfo_l, for example, but we\ndon\u0027t have nl_langinfo either.\n\nChange-Id: Ie711c7b04e7b9100932a13f5a5d5b28847eb4c12\n"
    },
    {
      "commit": "274afe8f0eab4139c94d5f8b1ee3d267f449ef42",
      "tree": "9424b40a8247c264e489358ce007b3ff4176d868",
      "parents": [
        "39ba30354a3890dd653ab55819d38eed3855edaa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 06 12:40:08 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 06 14:14:37 2014 -0800"
      },
      "message": "Add POSIX lcong48.\n\nChange-Id: I821046816661d77275cb02c8c99d526bb41afb9c\n"
    },
    {
      "commit": "dc6599e20f6a2a82c35533fba36d16fd43c53273",
      "tree": "cee1bf160dc3d5d0b1712126a6187325e24efd35",
      "parents": [
        "695781b6f0419f82939176a6ec1a240300d9f036"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Nov 04 12:09:35 2014 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Nov 04 12:09:35 2014 -0800"
      },
      "message": "Fix warning of missing field initializer.\n\nBUG: 18241135\nChange-Id: I91304eb608bc3336ce5fcd5744fbe080d64f1cc2\n"
    },
    {
      "commit": "6a03abcfd23f31d1df06eb0059830e22621282bb",
      "tree": "7a6a1e6ee2ece560d31580c662060bda3d2d004b",
      "parents": [
        "38ff8822763a30d4c9033a38ec8b71fcd17aba87"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 03 12:32:17 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 03 12:32:17 2014 -0800"
      },
      "message": "Ensure we initialize stdin/stdout/stderr\u0027s recursive mutexes.\n\nBug: 18208568\nChange-Id: I9da16ce0f9375bc363d1d02be706d73fd3b1e150\n"
    },
    {
      "commit": "ad136624b2bed5b6971cd7ba372969b1b352c223",
      "tree": "c584b5d30181173ea9ecbcc440034afb5d86add6",
      "parents": [
        "8f41d3d3bc7cf2375e5dd9202da619fd67a5928f",
        "5ba672ebcb0bbb77f22bbc6c98ec03867ac1711d"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 21 18:28:18 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 21 18:28:19 2014 +0000"
      },
      "message": "Merge \"Never use ASAN.\""
    },
    {
      "commit": "5ba672ebcb0bbb77f22bbc6c98ec03867ac1711d",
      "tree": "3b7a40ebe95c90eb96c914d43dba854df2f978e8",
      "parents": [
        "dec4de456c046881fb1e8c7c7d0c27a11ef09eb7"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Oct 17 10:33:25 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 21 11:22:26 2014 -0700"
      },
      "message": "Never use ASAN.\n\nUnless we completely redo how we build bionic (so that the object\nfiles for libc.so get built separately from libc.a), we can\u0027t enable\nASAN here, as libc.a gets linked into static executables.\n\nChange-Id: I2ce4f51248bd51c4213a555ff481b6faabbf53f8\n"
    },
    {
      "commit": "a371750681a84c8f0445fa041e817582e12c125f",
      "tree": "14fd4426eace2605998c406e4198d9b42154e1af",
      "parents": [
        "dec4de456c046881fb1e8c7c7d0c27a11ef09eb7"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Oct 17 16:27:03 2014 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Oct 20 09:09:25 2014 -0700"
      },
      "message": "Add -no-integrated-as at local level.\n\nLater we will enable integrated-as as default at the global level.\n\nBUG: 17820427\nBUG: 17302991\nChange-Id: I233204ca04d7222b2cb1fbd0fa48a482f8b63f6f\n"
    },
    {
      "commit": "71cbcdcf947835076241b9dd72099f28997eb290",
      "tree": "317de945eec3c17acc227524704b6b5a2795d0bc",
      "parents": [
        "97df16ba5c2911e06d1211781a5724706abd227b",
        "a7c2e0bad678280b9d76eacdb50b1361ab0849ff"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 15 19:59:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 15 19:59:09 2014 +0000"
      },
      "message": "Merge \"We don\u0027t actually need all of libc++ here.\""
    },
    {
      "commit": "a7c2e0bad678280b9d76eacdb50b1361ab0849ff",
      "tree": "c114f08a4fe4110a1b3d28c6c191d25e15bae760",
      "parents": [
        "083769a3dffabfb968a03a700b9f2fd7838bcf75"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 14 14:19:34 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 14 14:19:34 2014 -0700"
      },
      "message": "We don\u0027t actually need all of libc++ here.\n\nAll we\u0027re actually interested in is the unwinder. Since that\u0027s now a\nseparate library, just use that.\n\nChange-Id: If86071a0d850da961336a58147b70369ace7bd12\n"
    },
    {
      "commit": "18160256840e9bb097f17422ea47d54fabbc9f3f",
      "tree": "9e214fedefed00a66099d8cc9abab4dd68cbec80",
      "parents": [
        "c229705051c8b6a06ad81c221ca74ef9aa743e13"
      ],
      "author": {
        "name": "Haruki Hasegawa",
        "email": "h6a.h4i.0@gmail.com",
        "time": "Mon Oct 13 00:50:47 2014 +0900"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 13 17:04:10 2014 -0700"
      },
      "message": "Add clock_settime and clock_nanosleep.\n\nAdd the missing prototypes, fix the existing prototypes to use clockid_t\nrather than int, fix clock_nanosleep\u0027s failure behavior, and add simple\ntests.\n\nBug: 17644443\nBug: https://code.google.com/p/android/issues/detail?id\u003d77372\nChange-Id: I03fba369939403918abcabae9551a7123953d780\nSigned-off-by: Haruki Hasegawa \u003ch6a.h4i.0@gmail.com\u003e\n"
    },
    {
      "commit": "90a29db0f4a0893bdbd12f656d8869bb79ec3900",
      "tree": "16980c42c09868288e97d383ccbd0bd7e1b3adf5",
      "parents": [
        "4c0862474e63b09c901d11de47a318ce73a0c686"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 13 11:20:29 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 13 11:20:29 2014 -0700"
      },
      "message": "Use LOCAL_CXX_STL to select libc++_static.\n\nDirectly adding the library to LOCAL_STATIC_LIBRARIES thwarts a few\nbuild system checks.\n\nChange-Id: Ib23c43badfa85de21c691f79ccdcc2cbe2a89b33\n"
    },
    {
      "commit": "188d093993b3330b3c22437af8f22352f72ce64b",
      "tree": "9232fecb6c3cdc222fb3629011eabe9fe2f974f0",
      "parents": [
        "7ca5c4b99b308550e34e185ed632b8a5ad5341ee"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sat Sep 27 09:22:07 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sat Sep 27 09:22:07 2014 -0700"
      },
      "message": "Static libc++ is being renamed libc++_static.\n\nChange-Id: I1596110e4ed7e8f9ab9e2605dfcd9fd0489ca0d1\n"
    },
    {
      "commit": "5a69da8d7af6a388a4ad5b3dd619017b0030031a",
      "tree": "0d5e4cbbb4c74d7714f49a7b5de28c563ee9561b",
      "parents": [
        "f05410edc634040f96643b8f378320faddfef423"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 24 11:14:36 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 24 11:14:36 2014 -0700"
      },
      "message": "Switch to OpenBSD fopen/fclose.\n\nThis means all our stdio implementation is now the OpenBSD implementation.\nThe only thing we lose is the STDIO_THREAD_LOCK calls but they were no-ops\nanyway.\n\nWe should probably talk to upstream about this. Either fix the locking or,\npreferably, encourage them to move away from this pooling (especially since\nthere\u0027s no eviction policy).\n\nBug: 17154680\nChange-Id: Ie2523e444a7d0965b8d141d57e3e11f6432d5b9a\n"
    },
    {
      "commit": "f05410edc634040f96643b8f378320faddfef423",
      "tree": "7956d2050b75aab1d5467566af4718ed7f81f3d5",
      "parents": [
        "21db6ff108a8df43582bf2ca0d7d6c925f26b5e5",
        "c08c25b4c9bdd95bfbda56a8c21f51b88c8a692e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 24 17:48:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 24 17:48:59 2014 +0000"
      },
      "message": "Merge \"Sync with upstream findfp.c.\""
    },
    {
      "commit": "c08c25b4c9bdd95bfbda56a8c21f51b88c8a692e",
      "tree": "815a82fa0236c4f5c068ceb97c058bca1c639c57",
      "parents": [
        "fc5a93f7a2ea2be740f2c909e8a6a192fa65adc8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 24 10:27:09 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 24 10:32:30 2014 -0700"
      },
      "message": "Sync with upstream findfp.c.\n\nChange-Id: Ib298f46de0c4d0fd4ce0a9b456c163e8b8b06342\n"
    },
    {
      "commit": "21db6ff108a8df43582bf2ca0d7d6c925f26b5e5",
      "tree": "d1b60af5ad4a179e84e5b13c600a47a944a98d45",
      "parents": [
        "4a6e71100e9c99b90b517be5a8e1c21616772d16",
        "c2d39088d8c6f621dbde0410a1fc24b9f9e7f824"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 24 17:28:04 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 24 17:28:04 2014 +0000"
      },
      "message": "Merge \"Coverage configs for bionic.\""
    },
    {
      "commit": "c2d39088d8c6f621dbde0410a1fc24b9f9e7f824",
      "tree": "d18e5fd7898093b9f511922114c3c1ebba205d7c",
      "parents": [
        "9a05e3818ada1304a33d66d53c270b532c9111b8"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Sep 23 10:44:01 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 24 10:26:41 2014 -0700"
      },
      "message": "Coverage configs for bionic.\n\nBug: 17553780\nChange-Id: Iee7d0c210e2379e71e0c1e4e7058bce23f61e8cd\n"
    },
    {
      "commit": "a71b4c3f144a516826e8ac5b262099b920c49ce0",
      "tree": "e08cf9b42a597024264767fb9588bc0d8d3c4d4c",
      "parents": [
        "c57e5c828914714a283dd41f0a4adb064f6b8763"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 20:02:42 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 20:02:42 2014 -0700"
      },
      "message": "Switch to OpenBSD flags.c.\n\nChange-Id: I0a35e5bd9f8edba27e0c73e5c8150636346d6a81\n"
    },
    {
      "commit": "49eed7db79bd2664a2a13552ad81d445c93ba462",
      "tree": "5aed7a53313e7832097542e538d829ae4c1fd34a",
      "parents": [
        "93951cfa96c3c7504a78f94e7ec408936e5db9bf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 14:06:56 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 14:06:56 2014 -0700"
      },
      "message": "Switch to OpenBSD insque/remque/killpg.\n\nChange-Id: Ie02290ad3187b1c1596dd776fd1c8a743a55f7ef\n"
    },
    {
      "commit": "a186b2e0ca19620a52b4a49c17835532d13eb30a",
      "tree": "41b878b00d0277df342c64648603372ba4f1b9dc",
      "parents": [
        "9f423c554a0ffcee2e34472bf0bc1aef3621a822"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 22 14:49:07 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 22 22:49:40 2014 +0000"
      },
      "message": "Clean up fpathconf(3)/pathconf(3).\n\nfpathconf(3) and pathconf(3) can share code. There\u0027s no such\nheader file as \u003cpathconf.h\u003e. glibc/POSIX and BSD disagree about where\nthe _POSIX_* definitions should go.\n\nChange-Id: I4a67f1595c9f5fbb26700a131178eedebd6bf712"
    },
    {
      "commit": "413de5b0d4ddcf039aaef8b40a5f02d41dbb06e6",
      "tree": "2c87eebd41e90bf014261a6550e19248678056a5",
      "parents": [
        "e716044918d85cd3c34425779a09a24348f7f67a",
        "04303f5a8ab9a992f3671d46b6ee2171582cbd61"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Sep 20 01:34:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Sep 20 01:34:11 2014 +0000"
      },
      "message": "Merge \"Add semaphore tests, fix sem_destroy.\""
    },
    {
      "commit": "04303f5a8ab9a992f3671d46b6ee2171582cbd61",
      "tree": "98d3997d33e93eeb91a2c2f331b57f35c180cbb2",
      "parents": [
        "adc01348ee51a4ad678b1c277f85cbbed5c2e728"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 18 16:11:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 19 17:37:06 2014 -0700"
      },
      "message": "Add semaphore tests, fix sem_destroy.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d76088\nChange-Id: I4a0561b23e90312384d40a1c804ca64ee98f4066\n"
    },
    {
      "commit": "6fe376d3925a788f60fd44280b00008af60b9334",
      "tree": "bafa878bb6eb896175fb11aa7ea851744c44e041",
      "parents": [
        "adc01348ee51a4ad678b1c277f85cbbed5c2e728"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 19 12:26:09 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 19 17:15:12 2014 -0700"
      },
      "message": "Remove references to MALLOC_LEAK_CHECK.\n\nThis define isn\u0027t really used any more.\n\nBug: 17378595\nChange-Id: I39722b83cd98955a3a2514577de34a239524617f\n"
    },
    {
      "commit": "3ec67de0513c1d7e5f41f7f17e8251122a0cc9d2",
      "tree": "638e7c37b25a173771a85133388ed083e15a52ff",
      "parents": [
        "36a5aa057cf1738577754a3fc16a14a5f817109f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Sep 16 10:10:25 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 17 14:22:36 2014 -0700"
      },
      "message": "Exclude libstdc++ from linked libraries.\n\nAlso explicitly add libstdc++ includes for necessary targets.\n\nChange-Id: If712ba0ae7908d8147a69e29da5c453a183d6540\n"
    },
    {
      "commit": "7c02d9428ca18ac600f7ba7d51bb24ca71e733f6",
      "tree": "a773c043170cab95b9a9a9220e33dd81dddcedf3",
      "parents": [
        "17cc8e539a578184662c1966a60f37c7d4fed65e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 16 19:06:31 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 16 19:06:31 2014 -0700"
      },
      "message": "Clean up the architecture-specific makefiles.\n\nGroup things appropriately and name each group.\n\nChange-Id: I0da45eb0ccde19c31d5e984d0e6eb3dad26630dc\n"
    },
    {
      "commit": "66bbf1595c0fc25d4bc47457d8020b11e135996d",
      "tree": "9464625e75da5be80863865837e5f04be8f618c1",
      "parents": [
        "8d8a789c49ffb6b71e4b8f34df937cfaaff86e40",
        "d9ff7226613014056c9edd79a68dc5af939107a0"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 12 16:50:04 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 12 16:50:05 2014 +0000"
      },
      "message": "Merge \"Refactoring: C++11 style DISABLE_ bionic marcos\""
    },
    {
      "commit": "a4831cb4a3f44b93788488db8ff9ea76613f0355",
      "tree": "eaa225c537d468307739bc48bbc86e241ada58e0",
      "parents": [
        "ea66004c4a051e40c49314d808e7359634f6c641"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 11 16:11:43 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 11 16:22:50 2014 -0700"
      },
      "message": "Add pthread_gettid_np and re-expose __get_thread for LP32.\n\nA lot of third-party code calls the private __get_thread symbol,\noften as part of a backport of bionic\u0027s pthread_rwlock implementation.\nHopefully this will go away for LP64 (since you\u0027re guaranteed the\nreal implementation there), but there are still APIs that take a tid\nand no way to convert between a pthread_t and a tid. pthread_gettid_np\nis a public API for that. To aid the transition, make __get_thread\navailable again for LP32.\n\n(cherry-pick of 27efc48814b8153c55cbcd0af5d9add824816e69.)\n\nBug: 14079438\nChange-Id: I43fabc7f1918250d31d4665ffa4ca352d0dbeac1\n"
    },
    {
      "commit": "b587f339db269abf08a2c311a7263dd218cb23d3",
      "tree": "18fd8a53623d63cae5e98d5aeb59a8aefaa853c2",
      "parents": [
        "c71483c0b38a6b4f2675f0bffa221dcf175c34ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 10 17:39:00 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 11 08:45:46 2014 -0700"
      },
      "message": "Add posix_fadvise(3).\n\n(cherry-pick of 00008263782e484020420c606f7d145fe7d0a4d8.)\n\nBug: 12449798\nChange-Id: I07cbf3f670a0d1304b68148325a774f266b5c433\n"
    },
    {
      "commit": "d9ff7226613014056c9edd79a68dc5af939107a0",
      "tree": "9866b50193d3886937a4ea13a5c3f88de7600f20",
      "parents": [
        "3c3624f3df14590e7213d35c3b39a0a11c7d2d34"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 08 16:22:22 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Sep 08 17:51:31 2014 -0700"
      },
      "message": "Refactoring: C++11 style DISABLE_ bionic marcos\n\n  Enable the -std\u003dgnu++11 flag for libstdc++ static and\n  dynamic libs.\n\n  ScopeGuard uses DISABLE_ macros instead of \u0027\u003d delete\u0027;\n\nChange-Id: I07e21b306f95fffd49345f7fa136cfdac61e0225\n"
    },
    {
      "commit": "b58db8b083ce41798a5310616e4f20885cec611f",
      "tree": "a212c19cb9f002c2c3db54a67c1691f208cee6c6",
      "parents": [
        "05f0bfd6c56746aa4f737804ebb62b555dc0d921"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 04 15:19:52 2014 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Sep 05 11:18:35 2014 -0700"
      },
      "message": "Enable clang compilation with libc but not linker.\n\nClang is still disabled for x86 and x86_64 long double code,\nfor x86_64 special assembly instruction, and the linker module.\n\nBUG: 17163651\nBUG: 17302991\nBUG: 17403674\nChange-Id: I43c5f5f0ddc0c2a31918f00b57150dadd8f3f26b\n"
    },
    {
      "commit": "b78e60e7b7de02fed474f170c5c7a8f78f5a0e5c",
      "tree": "fa011d1a2df98f7f785e35d177a05b2e285c46b1",
      "parents": [
        "cb322a116804a690fdde6096d7efef4819151ad9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Aug 26 15:47:42 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 27 13:13:21 2014 -0700"
      },
      "message": "Use the default unwind code.\n\nThis speeds up the debug malloc code by using the original unwinding code.\nThe only catch is that it has to link in the libc++ arm unwind code or\nthere will be crashes when attempting to unwind through libc++ compiled\ncode.\n\nBug: 16874447\n\n(cherry picked from commit 3f7635f4906c53fa744731efc35235456b7d93bf)\n\nChange-Id: If8a3821cdd95ed481bb496bf2daab449d13790f8\n"
    },
    {
      "commit": "cc7e5f489f02ceee46e315af4f78559d3ad6c962",
      "tree": "12570a31f29ae6c565b1f993d54a95e5a00105b0",
      "parents": [
        "6bfcefe02f8fbeec1f6790bd5ebb1fdd5dba1e33"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 17:00:37 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 17:00:37 2014 -0700"
      },
      "message": "Switch to OpenBSD \u003cerr.h\u003e implementation.\n\nChange-Id: Ia950d88871a30f68e74f9ac7dbd87788e128e02f\n"
    },
    {
      "commit": "e5055179fd92ae243741d778426e1da03539165f",
      "tree": "94559041a074a70fa311673de48be96884fa60d4",
      "parents": [
        "7b87d441b0f2aa3ad5021ab6bd879a995a1bc2ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 16:25:19 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 16:25:19 2014 -0700"
      },
      "message": "Switch to OpenBSD daemon(3).\n\nChange-Id: I1fd0be09fdb24aa6f1d945410eba5987f8a949b4\n"
    },
    {
      "commit": "7b87d441b0f2aa3ad5021ab6bd879a995a1bc2ce",
      "tree": "0f965d4d7703ab74f2460ad2cba5dc018612d57a",
      "parents": [
        "59de803af98a284378303489f614be3e53800b3f",
        "0f7d882bb7661f9601f3843b0e393b6155cd9571"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 23:18:04 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 26 23:18:04 2014 +0000"
      },
      "message": "Merge \"Switch to OpenBSD res_random.\""
    },
    {
      "commit": "4caa1f09770ea3e5ca22afbe8aa0900810a0dbfe",
      "tree": "2bda183c2c930871e73486ea3e9c54e80e500f95",
      "parents": [
        "d5fbc37119ef6cd757ceb449cb071ee03c66590e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Aug 20 09:16:57 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Aug 22 10:23:12 2014 -0700"
      },
      "message": "Implement malloc_info(3).\n\nExpose jemalloc stats through the malloc_info(3) interface.\n\nBug: 16874689\nChange-Id: I4358ac283002e60ff161107028d1a3fb1e9afb0a\n"
    },
    {
      "commit": "6b841db2baa24ffcf2a4e5f975d1d07f1699b918",
      "tree": "af58fa1f4b5fa777f47e9ef797c50cff964b7046",
      "parents": [
        "b6ed54076abdd337150d7a92a661247b69d26cb4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 16:10:49 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 17:03:46 2014 -0700"
      },
      "message": "Add POSIX-2008 fmemopen, open_memstream, and open_wmemstream.\n\nBug: 17164505\nChange-Id: I59e28a08ff8b6ab632230b11a5807cfd5278aeb5\n"
    },
    {
      "commit": "2b021e10664c3938249eb18b48eeac253cbb3e20",
      "tree": "31772908fbc1209095bbe668887809eff2fd60fd",
      "parents": [
        "b61c50647b85b3c33af8ca155e88ec098d9e8cb0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 19 17:00:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 10:23:52 2014 -0700"
      },
      "message": "Add \u003cstdio_ext.h\u003e for elfutils.\n\nBug: 17139679\nChange-Id: I1605ac382dbb6f23b2d874dbb9769f3cde4a6a99\n"
    },
    {
      "commit": "09c39d6df0e952620f8c1751377b559a04e023aa",
      "tree": "1ca25e04d3ed7ebea1dde6f4d3baaeee9526c0e5",
      "parents": [
        "c5d6df6f2fe57fd5aadbd9ebb131023234c30a0c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 19 14:30:30 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 19 14:30:30 2014 -0700"
      },
      "message": "Implement the GNU basename(3) in addition to the POSIX one.\n\nCode like perf(1) needs this.\n\nBug: 11860789\nChange-Id: I907eb448052a7b165e4012d74303330d32328cb2\n"
    },
    {
      "commit": "fd5ee9aebc0a43c7f36a0778c7f416b39ddb870e",
      "tree": "bfbf039f3d95eeb4be2da89a325317e422fcc383",
      "parents": [
        "2b6cdb5e459661727c99e81660c7c3df5cdbe024"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Aug 15 14:20:04 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Aug 18 12:01:01 2014 -0700"
      },
      "message": "Hide C++ stuff in libc. Put it back in libstdc++.\n\nBug: 17062445\nChange-Id: I027b186719654c2865b08c3fa83f90fa00c1e838\n"
    },
    {
      "commit": "891ec7a6e46e60d7dfa1cf229e14a8e8634e272b",
      "tree": "3496b926a7bb7243f3e2e3e2f6c37fb24276f4d0",
      "parents": [
        "0d4ccee35101c6bcd6cc28c23fe79d7b48a98dd0"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 14 15:43:25 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 14 22:50:45 2014 +0000"
      },
      "message": "Move mtctxres.c to libc_dns.a.\n\nHas the effect of making ___mtctxres hidden.\n\nBug: 17007799\nChange-Id: I5aa5f49344ad5ecb33f48737430561b329bcbb0d"
    }
  ],
  "next": "9eae8405e8f70e489f2fe350a0212ab8114cbd17"
}
