)]}'
{
  "log": [
    {
      "commit": "f2cea021ab2c6d7d7feeb40cca098aa132605876",
      "tree": "119daf06820264a62bf3290bbbf8839dcb0196e3",
      "parents": [
        "6ece7fc33a389ef9bcbe78a83a6633e4cb4e4743"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 14:54:53 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 14:54:53 2014 -0700"
      },
      "message": "Clean up \u003cstdio.h\u003e macros.\n\nAlso neuter __isthreaded.\n\nWe should come back to try to hide struct FILE\u0027s internals for LP64.\n\nBug: 3453512\nBug: 3453550\nChange-Id: I7e115329fb4579246a72fea367b9fc8cb6055d18\n"
    },
    {
      "commit": "569fb9887d00104509df79fa77d92e3cf9afe7db",
      "tree": "cd7018947017406a878b22a25481969217985664",
      "parents": [
        "4a46a68942d180e28c3e87f08359351245b220b7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 04 15:01:29 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 04 15:07:07 2014 +0000"
      },
      "message": "Moved nameser.h and namser_compat.h to public include dir\n\nThis is part of the upstream sync (Net/Open/Free BSDs expose the\nnameser.h in their public headers).\n\nChange-Id: Ib063d4e50586748cc70201a8296cd90d2e48bbcf\n"
    },
    {
      "commit": "cecc036970fba8b319cca302768865677f2be094",
      "tree": "6359a4a308c5299571569eb47a9ee40cf3c90f3d",
      "parents": [
        "bd33537fde8e1c68fcadfd6adf77b295ada9b45f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 03 11:44:48 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 03 20:40:41 2014 +0000"
      },
      "message": "Moved private dns header to their own dir.\n\nBug: 13219633\nChange-Id: I3435ef7564b9ad3c7b54188a0809440993b36c9e\n"
    },
    {
      "commit": "0336e35368aa161f1fed04ccde39553db4740b97",
      "tree": "695110f21adb248648f6c2d850c8abb2d6800564",
      "parents": [
        "27c7dbeee6c5e0cee488ce5085cc0b8c5e0301bd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 08 06:58:01 2013 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Feb 26 15:33:13 2014 -0800"
      },
      "message": "libc: Make calls to new user-space logger\n\n* libc (fatal) logging now makes socket connection to the\n  user-space logging service.\n* Add a TARGET_USES_LOGD make flag for BoardConfig.mk to manage\n  whether logd is enabled for use or not.\n\nChange-Id: I96ab598c76d6eec86f9d0bc81094c1fb3fb0d9b4\n"
    },
    {
      "commit": "851e68a2402fa414544e66650e09dfdaac813e51",
      "tree": "baec353c8e9b6f24e885459b20a8748fc5c39468",
      "parents": [
        "22c6b7ffd36fe8b34b677eea94d00aef2624e4e8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 19 16:53:20 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 13:51:26 2014 -0800"
      },
      "message": "Unify our assembler macros.\n\nOur \u003cmachine/asm.h\u003e files were modified from upstream, to the extent\nthat no architecture was actually using the upstream ENTRY or END macros,\nassuming that architecture even had such a macro upstream. This patch moves\neveryone to the same macros, with just a few tweaks remaining in the\n\u003cmachine/asm.h\u003e files, which no one should now use directly.\n\nI\u0027ve removed most of the unused cruft from the \u003cmachine/asm.h\u003e files, though\nthere\u0027s still rather a lot in the mips/mips64 ones.\n\nBug: 12229603\nChange-Id: I2fff287dc571ac1087abe9070362fb9420d85d6d\n"
    },
    {
      "commit": "9abbbdc5346020e33a8fdbe7254dd0fdff9df616",
      "tree": "9a4c06c1cb4b09c8c957c72e061984db2321cc40",
      "parents": [
        "e6c451f5f2e17fccccedaa1c2a90d8d9ba0c1917"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 19 14:54:31 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 19 14:54:31 2014 -0800"
      },
      "message": "Make mips/mips64 syscall stubs more like the other architectures.\n\nChange-Id: I55f8c1a95f643a6e484f12fbcc25e2c77e55b6b8\n"
    },
    {
      "commit": "a38cb088619d3e2f2194247038c10897d1c5036e",
      "tree": "83cde27cb78ed069749b6beddb2ad5199d068214",
      "parents": [
        "d4bc9ef83b36916d5e63c4c3e4a092381473ea52"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 17 12:33:16 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 12:04:54 2014 -0800"
      },
      "message": "Clean up various warnings in bionic.\n\nChange-Id: Ic57541d0a567fd4ae79f0ad59b2ffde1130eb7d2\n"
    },
    {
      "commit": "0266ae5f884d72da58f33a072e865ba131234a5e",
      "tree": "48763b706806f544b1dec0ef98261bed6f21dee2",
      "parents": [
        "eeb9a9f59a58a2f042e8f6fd1a4911ae92ac5493"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 17:46:57 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 18:22:24 2014 -0800"
      },
      "message": "Switch \u003celf.h\u003e over to linux uapi under the covers.\n\nRemove the linker\u0027s reliance on BSD cruft and use the glibc-style\nElfW macro. (Other code too, but the linker contains the majority\nof the code that needs to work for Elf32 and Elf64.)\n\nAll platforms need dl_iterate_phdr_static, so it doesn\u0027t make sense\nto have that part of the per-architecture configuration.\n\nBug: 12476126\nChange-Id: I1d7f918f1303a392794a6cd8b3512ff56bd6e487\n"
    },
    {
      "commit": "d1973ca51325393f304e82a4d79874f33e54ac16",
      "tree": "75a657d895a41aa4855a06ef1e0e986c963e0eef",
      "parents": [
        "5b4884fac90753c68d401de73036c2de919958eb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 21 19:50:58 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jan 23 18:35:39 2014 -0800"
      },
      "message": "bionic: rename aarch64 target to arm64\n\nRename aarch64 build targets to arm64.  The gcc toolchain is still\naarch64.\n\nChange-Id: Ia92d8a50824e5329cf00fd6f4f92eae112b7f3a3\n"
    },
    {
      "commit": "b5e211031b69963a5f72ff369c66dc325a03e740",
      "tree": "4459ac3233abccfcdce9f2dc2591aeabadc16ede",
      "parents": [
        "ebc1c76d77dd604f16126e66b2171e8ee6fa1d22",
        "bf3ec9ad52a5ccaccdae843a94f964f3a7624ecd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 14 01:01:40 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 14 01:01:41 2014 +0000"
      },
      "message": "Merge \"AArch64: Use LDXR/STXR instead of LDAXR/STLXR for bionic_atomic_cmpxchg()\""
    },
    {
      "commit": "5b395ce071f2c96b8243926f26df3911ebb226e0",
      "tree": "11e17e25c69ba573eb8c2f23fb0e752828e7a484",
      "parents": [
        "434f97f66aa64cd082f3f62fdd6422cad3132706"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 18:46:14 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 18:46:14 2013 -0800"
      },
      "message": "Fix MIPS build.\n\nChange-Id: Idd3bcda1803fd16b728a352d325bb070aed8fd94\n"
    },
    {
      "commit": "5eccb9646dd94438911706d3ebf52775caa7f41e",
      "tree": "65e098b6c9b6e25947f40a8466d05f87c906af5d",
      "parents": [
        "026b6ab6d5f0d8fca5cdfab05727197626769dc2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 16:58:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 16:58:06 2013 -0800"
      },
      "message": "Fix aarch64 futex assembly routines.\n\nAlso make the other architectures more similar to one another,\nuse NULL instead of 0 in calling code, and remove an unused #define.\n\nChange-Id: I52b874afb6a351c802f201a0625e484df6d093bb\n"
    },
    {
      "commit": "845c778fa6ebb3ff3feaac0c268d93f4017c0cda",
      "tree": "1c38223ae764a3cb90650a916af849f64b8a00be",
      "parents": [
        "1afb375d30cadf5dfcb5dfe352527e2a1147c79f"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Thu Dec 19 11:57:10 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 19 11:39:01 2013 -0800"
      },
      "message": "ARM: Change dmb domain for bionic_atomic_barrier()\n\nThis patch changes the domain that the memory barrier operates on. Assumes\nthat the scope of bionic_atomic_barrier() does not include device memory,\nmemory shared with the GPU or any other memory external to the processor\ncluster.\n\nChange-Id: I291e741c98a64c86f3a3cf99811bbf1e714ac9aa\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "bf3ec9ad52a5ccaccdae843a94f964f3a7624ecd",
      "tree": "61952ac46346f7149c5b2694b5341978262bbe74",
      "parents": [
        "81ddd14381b09f171c006ebcbba15b3c1baf2a9f"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Thu Dec 19 11:46:17 2013 +0000"
      },
      "committer": {
        "name": "David Butcher",
        "email": "david.butcher@arm.com",
        "time": "Thu Dec 19 18:32:53 2013 +0000"
      },
      "message": "AArch64: Use LDXR/STXR instead of LDAXR/STLXR for bionic_atomic_cmpxchg()\n\nThe bionic_atomic_cmpxchg() API states that the cmpxchg() will be done without\nexplicit memory barriers. LDAXR/STLXR semantics involve half barriers for\nload/store.\n\nThis patch optimises cmpxchg() by using LDXR/STXR and avoiding unnecessary half\nbariers. It also fixes the clobber list for all the bionic_atomic_*() functions.\n\nChange-Id: Iae9468965785cfeeec791d52f1e8cbc524adb682\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "e210488e0d4082b9a0c55195c22191f29ed56bf8",
      "tree": "ab72fa614dce936ac53d5db4cb99ddae3d2b76b3",
      "parents": [
        "db7180233f4c81799660011c968ebd97aaa6d4d7"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Thu Sep 26 11:37:10 2013 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 16 17:00:22 2013 -0800"
      },
      "message": "AArch64: Add initial support for AArch64\n\nThis is the first patch out of a series of patches that add support for\nAArch64, the new 64bit execution state of the ARMv8 Architecture. The\npatches add support for LP64 programming model.\n\nThe patch adds:\n* \"arch-aarch64\" to the architecture directories.\n* \"arch-aarch64/include\" - headers used by libc\n* \"arch-aarch64/bionic\":\n    - crtbegin, crtend support;\n    - aarch64 specific syscall stubs;\n    - setjmp, clone, vfork assembly files.\n\nChange-Id: If72b859f81928d03ad05d4ccfcb54c2f5dbf99a5\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "1924a5c92e1791bdb6a5e9c09541a5a9a343983b",
      "tree": "0e069b3e78f42df4eda54abd28bdc2df5e6a8ced",
      "parents": [
        "3937d41561206430373c4b3e0690d6f81b536412"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Tue Oct 08 19:29:55 2013 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 16 13:09:33 2013 -0800"
      },
      "message": "AArch64: Add support for AArch64 atomic operations\n\nThis patch adds support for AArch64 atomic operations. Some\nof the stubs use the lightweight store/load exclusive.\n\nChange-Id: Iaf704d048b2dc15bf08cf8e4f0c3ea9f2052fe13\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "4c186ffb837a2bd852e7983f217a945d415cefbc",
      "tree": "4df1bc7cf2b7b87a42461e39d43e03f73aecdfbe",
      "parents": [
        "341b55a1e675396829aeb56a8771855d5ee6e18d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 16 13:02:49 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 16 13:02:49 2013 -0800"
      },
      "message": "Fix typo.\n\nChange-Id: I85157a6b2056b6c17cae193200960b8cae3cb3b3\n"
    },
    {
      "commit": "2b333b97a241eec63d531874e28f2a894bc06aa0",
      "tree": "9952f121aace89107d0105995133fd4490e6222a",
      "parents": [
        "003be7104b5cb075632b0ff98d8ab4d3d182ed8c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 13 16:54:16 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 16 10:18:11 2013 -0800"
      },
      "message": "Clean up the pthread-only atomic stuff a little.\n\nIt looks like we can probably just use the generic GCC stuff instead;\nthe generated code looks pretty similar. We should come back to that.\n\nThese routines are only used by the pthread implementation, and\n__bionic_atomic_inc isn\u0027t used, so we can remove it.\n\nChange-Id: I8b5b8cb30a1b159f0e85c3675aee06ddef39b429\n"
    },
    {
      "commit": "c54ca40aef48009e7b0e5b2b3069aad62ffd3453",
      "tree": "19284d085959218931f4fe5e3ea71e2f8e8d1ad3",
      "parents": [
        "8623bf7b4da802ee56618f575e92290499011df9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 13 12:17:13 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 13 14:02:30 2013 -0800"
      },
      "message": "Clean up some ARMv4/ARMv5 cruft.\n\nChange-Id: I29e836fea4b53901e29f96c6888869c35f6726be\n"
    },
    {
      "commit": "1887621de8a48eece8a05f2400ddd783b9833147",
      "tree": "73707f9768954e6d68f077febc4f442e2010609e",
      "parents": [
        "38fcbbb35a40c46e96b4df10d670d1c132910854"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 12 11:02:41 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 12 12:51:08 2013 -0800"
      },
      "message": "PTHREAD_KEYS_MAX cleanup.\n\nI fixed this bug a while back, but didn\u0027t remove it from the list,\ncould have added a better test, and could have written clearer code\nthat didn\u0027t require a comment.\n\nChange-Id: Iebdf0f9a54537a7d5cbca254a5967b1543061f3d\n"
    },
    {
      "commit": "f00c938c7f5887981d724bf2dd9989ee0af08332",
      "tree": "215f86cc9ce1b1ed167d925419122327d3ffaa3e",
      "parents": [
        "a626e4d8bc3d59cc328942fc30ffc04981b154ed",
        "811b0cdb2d6e4a697dbc63a678712759dd0db242"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Nov 22 11:08:12 2013 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Nov 22 13:38:33 2013 -0800"
      },
      "message": "Merge commit \u0027811b0cdb2d6e4a697dbc63a678712759dd0db242\u0027 into HEAD\n\nChange-Id: I786944f80fb1a2d502fed51dc2c391ed5db66761\n"
    },
    {
      "commit": "877ec6d90418ff1d6597147d355a2229fdffae7e",
      "tree": "e475221a7fbff1564ad37548e920333c49cc5873",
      "parents": [
        "f246c589d66e5dc0e3cddc3c37261fb0e3fc67e9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 17:40:18 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 18 19:48:11 2013 -0800"
      },
      "message": "Fix pthread_join.\n\nLet the kernel keep pthread_internal_t::tid updated, including\nacross forks and for the main thread. This then lets us fix\npthread_join to only return after the thread has really exited.\n\nAlso fix the thread attributes of the main thread so we don\u0027t\nunmap the main thread\u0027s stack (which is really owned by the\ndynamic linker and contains things like environment variables),\nwhich fixes crashes when joining with an exited main thread\nand also fixes problems reported publicly with accessing environment\nvariables after the main thread exits (for which I\u0027ve added a new\nunit test).\n\nIn passing I also fixed a bug where if the clone(2) inside\npthread_create(3) fails, we\u0027d unmap the child\u0027s stack and TLS (which\ncontains the mutex) and then try to unlock the mutex. Boom! It wasn\u0027t\nuntil after I\u0027d uploaded the fix for this that I came across a new\npublic bug reporting this exact failure.\n\nBug: 8206355\nBug: 11693195\nBug: https://code.google.com/p/android/issues/detail?id\u003d57421\nBug: https://code.google.com/p/android/issues/detail?id\u003d62392\nChange-Id: I2af9cf6e8ae510a67256ad93cad891794ed0580b\n"
    },
    {
      "commit": "70b24b1cc2a1a4436b1fea3f8b76616fdcb27224",
      "tree": "70c8e04ccd256eaeda3c7e516776f4c9bca25628",
      "parents": [
        "05ec00bf62ac168c9787a3d0640879ab3e502fe5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 11:51:07 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 14:41:19 2013 -0800"
      },
      "message": "Switch pthread_create over to __bionic_clone.\n\nBug: 8206355\nBug: 11693195\nChange-Id: I04aadbc36c87e1b7e33324b9a930a1e441fbfed6\n"
    },
    {
      "commit": "ed74484dcbc2e156a6e5fa861a62425b12e55128",
      "tree": "d41520a7d4f893cef86ab650b23e400e30351446",
      "parents": [
        "a034e1d3e06207f079e814101bb3bce1924264e0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 07 10:31:05 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 07 10:31:05 2013 -0800"
      },
      "message": "Stop using the non-uapi \u003clinux/err.h\u003e header file.\n\nWe only need it for MAX_ERRNO, and it\u0027s time we had somewhere to put\nthe little assembler utility macros we\u0027ve been putting off writing.\n\nChange-Id: I9354d2e0dc47c689296a34b5b229fc9ba75f1a83\n"
    },
    {
      "commit": "c3f114037dbf028896310609fd28cf2b3da99c4d",
      "tree": "e463aeb3604177cd93cea8a58936a8dce4b34ee5",
      "parents": [
        "d0d0b52da375bfa85947a4257198791f615f18a8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 30 14:40:09 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 31 12:31:16 2013 -0700"
      },
      "message": "\u003cpthread.h\u003e fixes and pthread cleanup.\n\n\u003cpthread.h\u003e was missing nonnull attributes, noreturn on pthread_exit,\nand had incorrect cv qualifiers for several standard functions.\n\nI\u0027ve also marked the non-standard stuff (where I count glibc rather\nthan POSIX as \"standard\") so we can revisit this cruft for LP64 and\ntry to ensure we\u0027re compatible with glibc.\n\nI\u0027ve also broken out the pthread_cond* functions into a new file.\n\nI\u0027ve made the remaining pthread files (plus ptrace) part of the bionic code\nand fixed all the warnings.\n\nI\u0027ve added a few more smoke tests for chunks of untested pthread functionality.\n\nWe no longer need the libc_static_common_src_files hack for any of the\npthread implementation because we long since stripped out the rest of\nthe armv5 support, and this hack was just to ensure that __get_tls in libc.a\nwent via the kernel if necessary.\n\nThis patch also finishes the job of breaking up the pthread.c monolith, and\nadds a handful of new tests.\n\nChange-Id: Idc0ae7f5d8aa65989598acd4c01a874fe21582c7\n"
    },
    {
      "commit": "11952073af22568bba0b661f7a9d4402c443a888",
      "tree": "c4ae77a40e8e309219cd4ab993a39d92f3d13e50",
      "parents": [
        "cdac5f73aca015287d1f40ff50d4fbf293a0c549"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 15:15:14 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 15:48:32 2013 -0700"
      },
      "message": "Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls.\n\n(aarch64 kernels don\u0027t have these system calls.)\n\nChange-Id: I6f64075aa412f71520f2df71c3d69b647f91c1ca\n"
    },
    {
      "commit": "1cdc9fe6d58b477385de0f60725a355de2151706",
      "tree": "b0986b5ce1ab9a9b217871128ada513aede4c89c",
      "parents": [
        "45e3076cdc03efe7d37178fbd4366d5632d50cba",
        "8826ba8ab6922927bdac2466d2903916d5806a06"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:35:46 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 09 16:35:46 2013 -0700"
      },
      "message": "am 8826ba8a: am bc545e8a: Merge \"Fix x86_64 build, clean up intermediate libraries.\"\n\n* commit \u00278826ba8ab6922927bdac2466d2903916d5806a06\u0027:\n  Fix x86_64 build, clean up intermediate libraries.\n"
    },
    {
      "commit": "eb847bc8666842a3cfc9c06e8458ad1abebebaf0",
      "tree": "15e070fb706ba7599d5f402a8f934a7399541a6a",
      "parents": [
        "0c17099a71cb5d1b36b7aab66fd7341b3fc9106d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 15:50:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:00:17 2013 -0700"
      },
      "message": "Fix x86_64 build, clean up intermediate libraries.\n\nThe x86_64 build was failing because clone.S had a call to __thread_entry which\nwas being added to a different intermediate .a on the way to making libc.so,\nand the linker couldn\u0027t guarantee statically that such a relocation would be\npossible.\n\n  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against \u0027__thread_entry\u0027 which may overflow at runtime; recompile with -fPIC\n\nThis patch addresses that by ensuring that the caller and callee end up in the\nsame intermediate .a. While I\u0027m here, I\u0027ve tried to clean up some of the mess\nthat led to this situation too. In particular, this removes libc/private/ from\nthe default include path (except for the DNS code), and splits out the DNS\ncode into its own library (since it\u0027s a weird special case of upstream NetBSD\ncode that\u0027s diverged so heavily it\u0027s unlikely ever to get back in sync).\n\nThere\u0027s more cleanup of the DNS situation possible, but this is definitely a\nstep in the right direction, and it\u0027s more than enough to get x86_64 building\ncleanly.\n\nChange-Id: I00425a7245b7a2573df16cc38798187d0729e7c4\n"
    },
    {
      "commit": "ac045c32d067d61cb48370eaa10118e827ebf586",
      "tree": "751c1f2d27f04446cf2840644ade9eaed77854f9",
      "parents": [
        "7c98d1304d4c48927027763b998e79d746dfb697",
        "f83148af74704c574ad1bf60082f2f56bcb29706"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 13:52:56 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 09 13:52:56 2013 -0700"
      },
      "message": "am f83148af: am 0c17099a: Merge \"Fix __errno for LP64 and clean up __get_tls.\"\n\n* commit \u0027f83148af74704c574ad1bf60082f2f56bcb29706\u0027:\n  Fix __errno for LP64 and clean up __get_tls.\n"
    },
    {
      "commit": "2a0b873065edb304fa2d1c54f8de663ea638b8ab",
      "tree": "4753b74b87e713379965bb051482036e6726afb1",
      "parents": [
        "777a4ee6771e6fe3362ef4f24244a44fcd0aabe4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 18:50:24 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 13:39:13 2013 -0700"
      },
      "message": "Fix __errno for LP64 and clean up __get_tls.\n\nIf __get_tls has the right type, a lot of confusing casting can disappear.\n\nIt was probably a mistake that __get_tls was exposed as a function for mips\nand x86 (but not arm), so let\u0027s (a) ensure that the __get_tls function\nalways matches the macro, (b) that we have the function for arm too, and\n(c) that we don\u0027t have the function for any 64-bit architecture.\n\nChange-Id: Ie9cb989b66e2006524ad7733eb6e1a65055463be\n"
    },
    {
      "commit": "22678c4db9cb6e72f1b8ae3e0896cb0a98bb26e9",
      "tree": "7d47982b1ab5ae68655b3d0043c4c5c28bd93545",
      "parents": [
        "ddd8a91729fc3d917134ba6b4ccf7d01303633d5",
        "dd384c3e7bae2e55981aeadee42f5ee0049219ec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 06 22:37:44 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 06 22:37:44 2013 -0700"
      },
      "message": "am dd384c3e: am a6e9ae80: Merge \"Fix MIPS build.\"\n\n* commit \u0027dd384c3e7bae2e55981aeadee42f5ee0049219ec\u0027:\n  Fix MIPS build.\n"
    },
    {
      "commit": "21e71643351c2c296220018a20b1499ba690b8e7",
      "tree": "7d102a67d031959ab1733e58d70024443d8e061c",
      "parents": [
        "4e965d95cfe19cc7d3aefd9b8d0ad607475793fe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 06 22:29:07 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 06 22:29:17 2013 -0700"
      },
      "message": "Fix MIPS build.\n\nAlthough \u0027register\u0027 is deprecated, we need to use v1, and there\u0027s\nno way to do that through register constraints on the assembler\nfragment itself.\n\nChange-Id: Ib5b12c4c3652513d10cc61d4a4b11314ece25663\n"
    },
    {
      "commit": "ddd8a91729fc3d917134ba6b4ccf7d01303633d5",
      "tree": "0781bb52d11da1de5e061cafcc126791324ad7f4",
      "parents": [
        "51bbfd6fb20f983fb342ef260b8855d2b9ab98f8",
        "06ac96d134fe5c5f3797ef2adc9df837c45d74f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 06 21:47:25 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 06 21:47:25 2013 -0700"
      },
      "message": "am 06ac96d1: am 4e965d95: Merge \"libc: Remove deprecated register\"\n\n* commit \u002706ac96d134fe5c5f3797ef2adc9df837c45d74f3\u0027:\n  libc: Remove deprecated register\n"
    },
    {
      "commit": "baa5874404351b606c29239606db00f8903e8ece",
      "tree": "9e9ad100f1556263f72626f53e04609526e7f949",
      "parents": [
        "5677742199456e96a5f5e006102a0bafa79747b2"
      ],
      "author": {
        "name": "synergydev",
        "email": "synergye@codefi.re",
        "time": "Sun Oct 06 12:57:51 2013 -0700"
      },
      "committer": {
        "name": "synergydev",
        "email": "synergye@codefi.re",
        "time": "Sun Oct 06 13:25:02 2013 -0700"
      },
      "message": "libc: Remove deprecated register\n\nIn c++11, register has been deprecated, and\nlibc is now built as gnu++11\n\nFrom the documentation:\nA register specifier is a hint to the implementation\nthat the variable so declared will be heavily used.\n[ Note: The hint can be ignored and in most implementations\nit will be ignored if the address of the variable is taken.\nThis use is deprecated (see D.2)\n\nChange-Id: I459dc3f5f9de63fc09eeda3bc6700f31bdf20f6f\n"
    },
    {
      "commit": "9d3b4b48d87cb1f8a2ab41d3f5c431ce50418f94",
      "tree": "74c624fc71e6b696e6d4b5c001a26d964924a81b",
      "parents": [
        "be7b6408b383f4d2ba5a696a3fc64275d11b1c14",
        "71e0b240ed980e77f736be2a27d255d64747b388"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 04 09:58:23 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 04 09:58:23 2013 -0700"
      },
      "message": "am 71e0b240: am 41ba05e2: Merge \"x86_64: Fix get_tls and statvfs\"\n\n* commit \u002771e0b240ed980e77f736be2a27d255d64747b388\u0027:\n  x86_64: Fix get_tls and statvfs\n"
    },
    {
      "commit": "1e52a54a47c00af689b7d8d503c4d69e53ae26fc",
      "tree": "46580702630f0cda815f53916360a0ef09928127",
      "parents": [
        "141029327cdc62629e248b3be1d7a58d4e9e5ba8"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Fri Sep 20 18:46:42 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 03 17:31:50 2013 -0700"
      },
      "message": "x86_64: Fix get_tls and statvfs\n\n* bionic_tls.h - Add x86_64 version of get_tls macro;\n* statvfs.h - 64-bit kernels don\u0027t have __statfs64/__fstatfs64, applying\nworkaround;\n\nChange-Id: I20d7ddad74c7b7243866373d0142da6627c08280\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "58413fe73561e8f230092a2b83db64e58fcb061d",
      "tree": "da6388f32853fe01404977a14d2f654637da13b8",
      "parents": [
        "6c8dc464068816986278d152a7c39d477924b360",
        "4b5a0e1ad76d76d6a8793f61e3c0902ea4628ce7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 01 10:04:29 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 01 10:04:29 2013 -0700"
      },
      "message": "am 4b5a0e1a: am 693bd73f: Merge \"Remove 32-bit assumptions from the ELF code.\"\n\n* commit \u00274b5a0e1ad76d76d6a8793f61e3c0902ea4628ce7\u0027:\n  Remove 32-bit assumptions from the ELF code.\n"
    },
    {
      "commit": "c620059479c47a78d57086d73726c9adc2f337ad",
      "tree": "ef410fffb4d853aaf7dbfee41743c197c4985856",
      "parents": [
        "6dee3b9aeec40bb518c1a29b4462300869a03d8e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 30 18:43:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 30 18:43:46 2013 -0700"
      },
      "message": "Remove 32-bit assumptions from the ELF code.\n\nChange-Id: I2c1f3d34c33685799aade8866eec44479ff9f963\n"
    },
    {
      "commit": "a3285dc9143a8175ff82bf1074720d04bed81faa",
      "tree": "24982112f145c21008f39017e580808db6e27e5f",
      "parents": [
        "823a4e0a7eab7859611189630d7748c254981ebf",
        "8ff879a528b8876db811f5abd4dbf0640e3a0408"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 19 11:46:46 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 19 11:46:46 2013 -0700"
      },
      "message": "am 8ff879a5: am a259472c: Merge \"Fix mismatch between declaration and forward declaration\"\n\n* commit \u00278ff879a528b8876db811f5abd4dbf0640e3a0408\u0027:\n  Fix mismatch between declaration and forward declaration\n"
    },
    {
      "commit": "edad1e1558bf5a561ffb33c5bf5ca0553711e1ee",
      "tree": "7eeacc66f902057bfb0a96da342aef09d13d032c",
      "parents": [
        "8512992f50e8444c1985bbeb17c3385a58fc0fed"
      ],
      "author": {
        "name": "Bernhard Rosenkraenzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Wed Sep 18 23:37:00 2013 +0200"
      },
      "committer": {
        "name": "Bernhard Rosenkraenzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Wed Sep 18 23:40:19 2013 +0200"
      },
      "message": "Fix mismatch between declaration and forward declaration\n\nKernelArgumentBlock is defined as a class in KernelArgumentBlock.h, but\nforward declarations refer to it as a struct.\n\nWhile this is essentially the same, the mismatch causes a compiler\nwarning in clang (and may cause warnings in future versions of gcc) in\ncode that is supposed to be compiled with -Werror.\n\nChange-Id: I4ba49d364c44d0a42c276aff3a8098300dbdcdf0\nSigned-off-by: Bernhard Rosenkraenzer \u003cBernhard.Rosenkranzer@linaro.org\u003e\n"
    },
    {
      "commit": "59a13c122ebc4191583b67c846a95d690dcda5cf",
      "tree": "70d47582d6e0c4c18847e3f74649b2bca0fef5c6",
      "parents": [
        "c85e0dbb0b8d602f930cf7ae99901730c1c6a26a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 01 13:13:33 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 14 18:14:43 2013 -0700"
      },
      "message": "Optimize __memset_chk, __memcpy_chk. DO NOT MERGE.\n\nThis change creates assembler versions of __memcpy_chk/__memset_chk\nthat is implemented in the memcpy/memset assembler code. This change\navoids an extra call to memcpy/memset, instead allowing a simple fall\nthrough to occur from the chk code into the body of the real\nimplementation.\n\nTesting:\n\n- Ran the libc_test on __memcpy_chk/__memset_chk on all nexus devices.\n- Wrote a small test executable that has three calls to __memcpy_chk and\n  three calls to __memset_chk. First call dest_len is length + 1. Second\n  call dest_len is length. Third call dest_len is length - 1.\n  Verified that the first two calls pass, and the third fails. Examined\n  the logcat output on all nexus devices to verify that the fortify\n  error message was sent properly.\n- I benchmarked the new __memcpy_chk and __memset_chk on all systems. For\n  __memcpy_chk and large copies, the savings is relatively small (about 1%).\n  For small copies, the savings is large on cortex-a15/krait devices\n  (between 5% to 30%).\n  For cortex-a9 and small copies, the speed up is present, but relatively\n  small (about 3% to 5%).\n  For __memset_chk and large copies, the savings is also small (about 1%).\n  However, all processors show larger speed-ups on small copies (about 30% to\n  100%).\n\nBug: 9293744\n\nMerge from internal master.\n\n(cherry-picked from 7c860db0747f6276a6e43984d43f8fa5181ea936)\n\nChange-Id: I916ad305e4001269460ca6ebd38aaa0be8ac7f52\n"
    },
    {
      "commit": "6771b9cef635f0da98932a1f0f877a07257ca088",
      "tree": "5023df46710d5572e818e6e53450c91280e4c4b3",
      "parents": [
        "7c860db0747f6276a6e43984d43f8fa5181ea936"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Aug 07 13:31:17 2013 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Aug 07 15:41:30 2013 -0700"
      },
      "message": "bionic: add function to name memory\n\nOnly works on some kernels, and only on page-aligned regions of\nanonymous memory.  It will show up in /proc/pid/maps as\n[anon:\u003cname\u003e] and in /proc/pid/smaps as Name: \u003cname\u003e\n\nChange-Id: If31667cf45ff41cc2a79a140ff68707526def80e\n"
    },
    {
      "commit": "7c860db0747f6276a6e43984d43f8fa5181ea936",
      "tree": "d2be98027aa48656adbeb8896abd9036c14fb3f2",
      "parents": [
        "1ce665416307628f4bcaced86faa64bdf9c489c3"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 01 13:13:33 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Aug 06 15:38:29 2013 -0700"
      },
      "message": "Optimize __memset_chk, __memcpy_chk.\n\nThis change creates assembler versions of __memcpy_chk/__memset_chk\nthat is implemented in the memcpy/memset assembler code. This change\navoids an extra call to memcpy/memset, instead allowing a simple fall\nthrough to occur from the chk code into the body of the real\nimplementation.\n\nTesting:\n\n- Ran the libc_test on __memcpy_chk/__memset_chk on all nexus devices.\n- Wrote a small test executable that has three calls to __memcpy_chk and\n  three calls to __memset_chk. First call dest_len is length + 1. Second\n  call dest_len is length. Third call dest_len is length - 1.\n  Verified that the first two calls pass, and the third fails. Examined\n  the logcat output on all nexus devices to verify that the fortify\n  error message was sent properly.\n- I benchmarked the new __memcpy_chk and __memset_chk on all systems. For\n  __memcpy_chk and large copies, the savings is relatively small (about 1%).\n  For small copies, the savings is large on cortex-a15/krait devices\n  (between 5% to 30%).\n  For cortex-a9 and small copies, the speed up is present, but relatively\n  small (about 3% to 5%).\n  For __memset_chk and large copies, the savings is also small (about 1%).\n  However, all processors show larger speed-ups on small copies (about 30% to\n  100%).\n\nBug: 9293744\n\nChange-Id: I8926d59fe2673e36e8a27629e02a7b7059ebbc98\n"
    },
    {
      "commit": "abf3638317b4568c7e0c4d6d8c4b70a8e4af6449",
      "tree": "e63014fca9d24e3ea5a202c7c5330230d2dc2cd0",
      "parents": [
        "326b52760d819e37c302a33d374ca80459dfec30",
        "101b5e1f6cc4e24635760928b3d2c1e51c1e5774"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 29 17:35:49 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 29 17:35:49 2013 -0700"
      },
      "message": "am 101b5e1f: Merge \"Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way.\"\n\n* commit \u0027101b5e1f6cc4e24635760928b3d2c1e51c1e5774\u0027:\n  Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way.\n"
    },
    {
      "commit": "c03e1e74390c1b8a30341399cd85cc869d0842b0",
      "tree": "f4f7c54da4d89aa1019822c5be7aa61d97efcd43",
      "parents": [
        "9a73d08f4c334c00fe06d583d37e038ebe063eba"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 29 16:51:45 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 29 17:09:36 2013 -0700"
      },
      "message": "Define PTHREAD_KEYS_MAX and _POSIX_THREAD_KEYS_MAX in a POSIX-compliant way.\n\nAlso make sysconf use PTHREAD_STACK_MIN rather than redefining its\nown, different, constant.\n\nBug: 9997352\nChange-Id: I9a8e7d2b18e691439abfb45533e82c36eee9e81d\n"
    },
    {
      "commit": "326b52760d819e37c302a33d374ca80459dfec30",
      "tree": "62856334b2117fc54a0dbdc4b0487f5439523041",
      "parents": [
        "478314a1099747a2ceaf4110251cb688324739c7",
        "9a73d08f4c334c00fe06d583d37e038ebe063eba"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 25 17:04:18 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 25 17:04:18 2013 -0700"
      },
      "message": "am 9a73d08f: Merge \"Bump the number of TLS slots to 128.\"\n\n* commit \u00279a73d08f4c334c00fe06d583d37e038ebe063eba\u0027:\n  Bump the number of TLS slots to 128.\n"
    },
    {
      "commit": "838f01fdc7cbb8fa2449d5c799e24d92f25d3881",
      "tree": "673c2cd506abdd3f6afab09060b182cbec9fbf6f",
      "parents": [
        "a9feb5e33a5261f45fb25fd5e90a56792c6a437e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 25 14:14:22 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 25 14:14:22 2013 -0700"
      },
      "message": "Bump the number of TLS slots to 128.\n\nBug: 9997352\nChange-Id: I7bde7228d803e9d4bb83309c5891d54a07e3b025\n"
    },
    {
      "commit": "f2f6b2bad36aeade6989d4cbd35e9472d50a7606",
      "tree": "57fd2febcb6f417c2e47cbe789842fd3077ebe3e",
      "parents": [
        "62d6b7526a5cdc24451d032578b86fbe68ce419a",
        "d2acf124ed7ad18f8adb5159544c92234cade90e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 15:36:12 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 16 15:36:12 2013 -0700"
      },
      "message": "am d2acf124: am 9562d38d: Merge \"Clean up __builtin_expect usage.\"\n\n* commit \u0027d2acf124ed7ad18f8adb5159544c92234cade90e\u0027:\n  Clean up __builtin_expect usage.\n"
    },
    {
      "commit": "d2acf124ed7ad18f8adb5159544c92234cade90e",
      "tree": "1d5c31c26614f885000872bffc9f7b95b6e66522",
      "parents": [
        "2a18ea1462cf65cc51bfcb1a1c46972ee5af1d01",
        "9562d38df1e4aba941b3433cfd0922fee5ea258b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 15:31:39 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 16 15:31:39 2013 -0700"
      },
      "message": "am 9562d38d: Merge \"Clean up __builtin_expect usage.\"\n\n* commit \u00279562d38df1e4aba941b3433cfd0922fee5ea258b\u0027:\n  Clean up __builtin_expect usage.\n"
    },
    {
      "commit": "d4e753fea9345c24dcce89531dff9019bef14eb3",
      "tree": "b1a26c875f451b79888f60cf73504aab799874e1",
      "parents": [
        "f152e386fcf477f3f5de9dc020c3660d4f9c4b81"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 12:45:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 12:45:46 2013 -0700"
      },
      "message": "Clean up __builtin_expect usage.\n\nAlso remove some dead code; our malloc debugging doesn\u0027t use this\nany more.\n\nChange-Id: Id69cf182371f5f37d40b5bbd08f2744ade286e66\n"
    },
    {
      "commit": "bb17967761f371fa20cc4a6be1a14356ea9bc335",
      "tree": "5891e8da6901a8fdb3a9de8a918cb17b6e963462",
      "parents": [
        "f9a1d1cf5f7d76b4ec0f25b029d45118279b36dc",
        "c39214e0ac49b9f7de6fd9989331145c6e1cd584"
      ],
      "author": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Thu Jul 11 22:10:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 11 22:10:31 2013 +0000"
      },
      "message": "Merge \"Add marking of DNS sockets for mark based routing\""
    },
    {
      "commit": "c39214e0ac49b9f7de6fd9989331145c6e1cd584",
      "tree": "5ef63d5680da7dba44b39afc8b77b5d7da4cb503",
      "parents": [
        "33ae76abf32b8f78799e9ebb1de2343dfa10c91a"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Thu Jun 20 10:36:56 2013 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Tue Jul 09 13:16:22 2013 -0700"
      },
      "message": "Add marking of DNS sockets for mark based routing\n\nAdds an extra mark parameter to android_getaddrinfoforiface,\nandroid_gethostbyaddrforiface and android_gethostbynameforiface that if set\nwill cause all packets sent by DNS requests to have that mark\n\nChange-Id: I6f72390e4ce5bfc3cc73183f9b2fb3705a11685f\n"
    },
    {
      "commit": "20cb10824bdc666487c38071ca3b604661466973",
      "tree": "c7108c26dede13fac1ee1fdac82a050d189b12cb",
      "parents": [
        "1f75ee860664b33eec6caf9a717c79087185b01d",
        "601f968cedf015c060de8dcf21e7e10bf596901f"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 03 14:33:22 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 03 14:33:22 2013 -0700"
      },
      "message": "am 601f968c: am 84983592: Merge \"bionic_atomic_arm.h: Remove \u003c ARMv6 support\"\n\n* commit \u0027601f968cedf015c060de8dcf21e7e10bf596901f\u0027:\n  bionic_atomic_arm.h: Remove \u003c ARMv6 support\n"
    },
    {
      "commit": "601f968cedf015c060de8dcf21e7e10bf596901f",
      "tree": "67d162eac602297d50c5eb9622f029f5275f61f7",
      "parents": [
        "a8b954c51edd9ec8c09a5d1dccacaadf5869d78a",
        "84983592ade3ec7d72d082262fb6646849979bfc"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 03 14:28:14 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 03 14:28:14 2013 -0700"
      },
      "message": "am 84983592: Merge \"bionic_atomic_arm.h: Remove \u003c ARMv6 support\"\n\n* commit \u002784983592ade3ec7d72d082262fb6646849979bfc\u0027:\n  bionic_atomic_arm.h: Remove \u003c ARMv6 support\n"
    },
    {
      "commit": "e91f71783bf86cb10ad52f5618ad07d4e7152b2f",
      "tree": "6918d8d890ce2e6ecfcd19bb38c9e704d2905258",
      "parents": [
        "de2781d906f27be4df3e03a8e5041dcc1aeb281d"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 03 14:14:06 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 03 14:14:06 2013 -0700"
      },
      "message": "bionic_atomic_arm.h: Remove \u003c ARMv6 support\n\nThis is dead code for most modern Android devices.\n\nBug: 9674955\nChange-Id: Ic63a66b0331a0f07b9183f14a1d5e678c25e4b12\n"
    },
    {
      "commit": "997368d60d1928f5e5e366719d6d91bdc7ae3d4d",
      "tree": "fd30f6717f8ff9099115d75a8d31d27227c12817",
      "parents": [
        "742aad35845b156a34db1d06a50a63f4b7f6d47d",
        "833dc584d4d02ab8e396b877b38a8a5ad8ba4882"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 02 16:05:34 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 02 16:05:34 2013 -0700"
      },
      "message": "am 833dc584: am 87b4286f: Merge \"Expose dn_comp and dn_expand to system C code.\"\n\n* commit \u0027833dc584d4d02ab8e396b877b38a8a5ad8ba4882\u0027:\n  Expose dn_comp and dn_expand to system C code.\n"
    },
    {
      "commit": "833dc584d4d02ab8e396b877b38a8a5ad8ba4882",
      "tree": "90022e1b93736e428cc34be113d7a944dd8ac049",
      "parents": [
        "7c808b29d5cea61e5bda90a1b0f2f0e669ee135e",
        "87b4286f092094a2e8069a06e20ef5036a258172"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 02 16:02:30 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 02 16:02:30 2013 -0700"
      },
      "message": "am 87b4286f: Merge \"Expose dn_comp and dn_expand to system C code.\"\n\n* commit \u002787b4286f092094a2e8069a06e20ef5036a258172\u0027:\n  Expose dn_comp and dn_expand to system C code.\n"
    },
    {
      "commit": "b8e435c1d5593422349534c1cb356d11273ba1db",
      "tree": "020b2f1b87d3b502dc54ac9d7f5f9f00508a356a",
      "parents": [
        "feec97a7c7fbd032174fb4870a02422c2acd891a"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jul 02 17:44:00 2013 +0900"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 02 15:57:57 2013 -0700"
      },
      "message": "Expose dn_comp and dn_expand to system C code.\n\nThis is needed to compile open-source code that wants to\nexpand/compress domain names itself, such as ping6.\n\nBug: 9469682\nChange-Id: I339c6538936d05c031bc6fb0a8793aaf1429dea4\n"
    },
    {
      "commit": "22570f51a5fb8ff7015eaf22dfaf4d224411bd24",
      "tree": "fad71d90a122e2fd3ef45054369acbdeb380a58e",
      "parents": [
        "fda0c066050c26cbb5bb130b5f2c25ccddde2945",
        "a289964bca39c591b54e0c336da1a6730e85cd61"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 28 13:37:08 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 28 13:37:08 2013 -0700"
      },
      "message": "am a289964b: am 227b47a4: Merge \"resolv_private.h: remove #define b64_ntop and b64_pton\"\n\n* commit \u0027a289964bca39c591b54e0c336da1a6730e85cd61\u0027:\n  resolv_private.h: remove #define b64_ntop and b64_pton\n"
    },
    {
      "commit": "a289964bca39c591b54e0c336da1a6730e85cd61",
      "tree": "72ba921c1374dc268c987f52913d8af9fd0febcb",
      "parents": [
        "2018cfa85d4c7f36316376f5b090be5f0d3d13dc",
        "227b47a461b27d746b373feb66001cdddc9ba1db"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 28 13:32:43 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 28 13:32:43 2013 -0700"
      },
      "message": "am 227b47a4: Merge \"resolv_private.h: remove #define b64_ntop and b64_pton\"\n\n* commit \u0027227b47a461b27d746b373feb66001cdddc9ba1db\u0027:\n  resolv_private.h: remove #define b64_ntop and b64_pton\n"
    },
    {
      "commit": "ca43d73d2329f9f0f42ac5789aa319317133ab46",
      "tree": "3cb35ea02fcd5a1477994f38a78d214e52045a77",
      "parents": [
        "394df35e641816a3b9f0e065840b673dec9c73e5"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 28 13:18:32 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 28 13:18:32 2013 -0700"
      },
      "message": "resolv_private.h: remove #define b64_ntop and b64_pton\n\nThis was gated off of \"#ifndef ADNROID_CHANGES\" (note mispelling)\nand is unconditionally defined in libc/include/resolv.h\n(which this file includes). No need for duplicate definitions.\n\nChange-Id: I00719bcf39eaa26eb96ab4274f171f3d2b5bae61\n"
    },
    {
      "commit": "fb11350c814cd4267cbdc4e6f445ebab4d14bfc5",
      "tree": "83cac783e02a08de970eb6f7785ee20be7e0f4d8",
      "parents": [
        "83476f0747b5efe6afc69e68d25f24fa73adaf4d",
        "13e23302c93fdd8b52c606277f32dec0627ddbbd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 18 14:00:59 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 18 14:00:59 2013 -0700"
      },
      "message": "am 13e23302: am c656d732: Merge \"Always use v1 for MIPS TLS access.\"\n\n* commit \u002713e23302c93fdd8b52c606277f32dec0627ddbbd\u0027:\n  Always use v1 for MIPS TLS access.\n"
    },
    {
      "commit": "13e23302c93fdd8b52c606277f32dec0627ddbbd",
      "tree": "938eb4927d3527e91f1045af19f2e6fbd86a86be",
      "parents": [
        "d98d35c5380ce398038d3062d40bc4fe082dce80",
        "c656d732c7712b0f73d9c560ccf3cb5ae47d219d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 18 13:57:57 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 18 13:57:57 2013 -0700"
      },
      "message": "am c656d732: Merge \"Always use v1 for MIPS TLS access.\"\n\n* commit \u0027c656d732c7712b0f73d9c560ccf3cb5ae47d219d\u0027:\n  Always use v1 for MIPS TLS access.\n"
    },
    {
      "commit": "a33dc57c7c2b181cf7e76d843f8b031dbb6d4fa8",
      "tree": "3b636334d84c588c26ef8f9aaa098639807c0c46",
      "parents": [
        "6807af773f862750efb6860e00402580a5f463f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 18 13:26:22 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 18 13:26:22 2013 -0700"
      },
      "message": "Always use v1 for MIPS TLS access.\n\nChange-Id: Ic2850b90185cfbc5b0eff804c8b74a1c553c0852\n"
    },
    {
      "commit": "9edf071a5d968f6ef59e564214c21531c36b6f98",
      "tree": "bf1267b4907d79a2a24046a1881d4383d2928b93",
      "parents": [
        "37d9f75dde881a0ba1c1b3253b1be19d4096963d",
        "d2dbf16358bee4777a3e4937cf316fa8bb905559"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 17 14:56:04 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 17 14:56:04 2013 -0700"
      },
      "message": "am d2dbf163: am 5995bf88: Merge \"don\\\u0027t hardcode register r0/v1 when reading the TLS\"\n\n* commit \u0027d2dbf16358bee4777a3e4937cf316fa8bb905559\u0027:\n  don\u0027t hardcode register r0/v1 when reading the TLS\n"
    },
    {
      "commit": "d2dbf16358bee4777a3e4937cf316fa8bb905559",
      "tree": "048a15855793416dab1c0b4c06b13ff5705de570",
      "parents": [
        "afd4e2999c3e726498c407fcaf9cccdcd4d24637",
        "5995bf880e2a7fac249382f0a929b7271c843122"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 17 14:53:12 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 17 14:53:12 2013 -0700"
      },
      "message": "am 5995bf88: Merge \"don\\\u0027t hardcode register r0/v1 when reading the TLS\"\n\n* commit \u00275995bf880e2a7fac249382f0a929b7271c843122\u0027:\n  don\u0027t hardcode register r0/v1 when reading the TLS\n"
    },
    {
      "commit": "b6e340080a86e14273b3b3a4bad694e4d9b3c8c2",
      "tree": "3f5dd2cd29138305b2b30d570fe8ec5a074d709f",
      "parents": [
        "657d0da7513e01b0eb104c8a8a522c28fdbc807d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 14 19:00:03 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 17 14:50:30 2013 -0700"
      },
      "message": "don\u0027t hardcode register r0/v1 when reading the TLS\n\nthis leads to much improved code when calling __get_tls()\n\nChange-Id: I21d870fb33c33a921ca55c4e100772e0f7a8d1e4\n"
    },
    {
      "commit": "7ac852fb05feead422fb5ee1032c2bf8c75fc99f",
      "tree": "77ce119c0cde7f942ca60124eb0fc7a8eb984cd7",
      "parents": [
        "1e88a7abcaafda50e710b779f81fc28e1e95e277",
        "3da47942d3fdeb6f39cf84b03c75cfeb69f91449"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 15:02:34 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 12 15:02:34 2013 -0700"
      },
      "message": "am 3da47942: am 944ea1a3: Merge \"Clean up abort.\"\n\n* commit \u00273da47942d3fdeb6f39cf84b03c75cfeb69f91449\u0027:\n  Clean up abort.\n"
    },
    {
      "commit": "3da47942d3fdeb6f39cf84b03c75cfeb69f91449",
      "tree": "72a0cdaeb473179f45ccebc4fce6ae3fbcf9f8cd",
      "parents": [
        "834f83de3f3363090385963eef1cd9a053a51a71",
        "944ea1a32018c44d6cb55c9454e670b0e152da6d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 14:58:32 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 12 14:58:32 2013 -0700"
      },
      "message": "am 944ea1a3: Merge \"Clean up abort.\"\n\n* commit \u0027944ea1a32018c44d6cb55c9454e670b0e152da6d\u0027:\n  Clean up abort.\n"
    },
    {
      "commit": "61e699a133a4807fe878a6cb0d7190d7c96e21f8",
      "tree": "12dd46e7f8e5f7172a3fe0fd9075fa929cbb1001",
      "parents": [
        "5cde15eb17f4ddc0949c0cbd38a46e6c0bad7019"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 14:05:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 14:14:53 2013 -0700"
      },
      "message": "Clean up abort.\n\n* A dlmalloc usage error shouldn\u0027t call abort(3) because we want to\n  cause a SIGSEGV by writing the address dlmalloc didn\u0027t like to an\n  address the kernel won\u0027t like, so that debuggerd will dump the\n  memory around the address that upset dlmalloc.\n\n* Switch to the simpler FreeBSD/NetBSD style of registering stdio\n  cleanup. Hopefully this will let us simplify more of the stdio\n  implementation.\n\n* Clear the stdio cleanup handler before we abort because of a dlmalloc\n  corruption error. This fixes the reported bug, where we\u0027d hang inside\n  dlmalloc because the stdio cleanup reentered dlmalloc.\n\nBug: 9301265\nChange-Id: Ief31b389455d6876e5a68f0f5429567d37277dbc\n"
    },
    {
      "commit": "87594a32b892d629127c312b78e6cb45d2f678aa",
      "tree": "d7ba47f45ebc99e73fe072a3423c41495754e16f",
      "parents": [
        "a24d14c05da83e7fc3ab4543bb447c4b3dbb8e0e"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Thu Jun 06 15:23:33 2013 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Fri Jun 07 13:03:23 2013 -0700"
      },
      "message": "Add clearing of resolv uid and pid interface maps\n\nCleanup uid interface map variable names\n\nChange-Id: I712dd83276bb23b149af4180515ef33a1bade5ea\n"
    },
    {
      "commit": "a24d14c05da83e7fc3ab4543bb447c4b3dbb8e0e",
      "tree": "80157cd98732f6e67ba26195a1c81b05576e3f2f",
      "parents": [
        "b166e699dcf34ef70a999e7fc0990e75383acef7",
        "0c9bb49a9d44e9f1ae98cd56c2dfc24fbb40b53e"
      ],
      "author": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Thu Jun 06 20:48:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 06 20:48:44 2013 +0000"
      },
      "message": "Merge \"Add per UID interface support to resolv cache\""
    },
    {
      "commit": "0c9bb49a9d44e9f1ae98cd56c2dfc24fbb40b53e",
      "tree": "2969acf31d812247c08c9f15d4e8e1d24274c96b",
      "parents": [
        "3010061a534805e8766e6eb207f7de99aae09b5f"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Thu May 30 13:37:02 2013 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Thu Jun 06 12:31:16 2013 -0700"
      },
      "message": "Add per UID interface support to resolv cache\n\nAdd methods to attach/detach UID ranges to a specific dns cache/interface.\n\nThis mirrors the already existing code for attaching specific processes to\nspecific interfaces but will be used to push all processes from a given\nuser to a specific cache/interface.\n\nChange-Id: Ic24391e92d3ca46fcb46cc4fc53e13984dec40b3\n"
    },
    {
      "commit": "e51cd6f9c9c4aaf857943f91c55458ce622592cf",
      "tree": "4831f518a1f80ee208f7185acdf181529182f215",
      "parents": [
        "0ecb96c3a270951a35c82c08d7c1a4bb21b522b3",
        "5a6a0a9445d80bf2bd847088921f6d1d99315552"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 05 18:11:05 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 05 18:11:05 2013 -0700"
      },
      "message": "am 5a6a0a94: am 18af4503: Merge \"Ensure header files using __BEGIN_DECLS include sys/cdefs.h.\"\n\n* commit \u00275a6a0a9445d80bf2bd847088921f6d1d99315552\u0027:\n  Ensure header files using __BEGIN_DECLS include sys/cdefs.h.\n"
    },
    {
      "commit": "5a6a0a9445d80bf2bd847088921f6d1d99315552",
      "tree": "287b9aa0cbccac60eb0674fff9187fad0386bfd9",
      "parents": [
        "b9e2dae427ef1e1cfdbb3faa1442d4a66a2d3bcd",
        "18af450393b005b4ead896d82cda750e6876fd33"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 05 18:06:04 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 05 18:06:04 2013 -0700"
      },
      "message": "am 18af4503: Merge \"Ensure header files using __BEGIN_DECLS include sys/cdefs.h.\"\n\n* commit \u002718af450393b005b4ead896d82cda750e6876fd33\u0027:\n  Ensure header files using __BEGIN_DECLS include sys/cdefs.h.\n"
    },
    {
      "commit": "36fa67bcdd90f18a3c68f8637ae836762407fa51",
      "tree": "67c47601c9dd09bf8fc97d15e872c264752477da",
      "parents": [
        "c5bfb62433751579e86d5fd24cddf3ae28a49b43"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 05 17:51:20 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 05 17:58:08 2013 -0700"
      },
      "message": "Ensure header files using __BEGIN_DECLS include sys/cdefs.h.\n\nWe keep fixing these one-by-one; let\u0027s fix them all at once.\n\nFound thus:\n\n  find . -name *.h | xargs grep -L sys/cdefs.h | xargs grep -l BEGIN_DECL | xargs grep -L sys/types\n\nChange-Id: I188842aa2484dc6176e96556d57c38a0f785b59b\n"
    },
    {
      "commit": "bedd8e3de1e95ee860df9ed81e2d4ff4fab5efee",
      "tree": "d0d90c41a8ec6421fb9c4e879131abc9fbd89794",
      "parents": [
        "8ed5aec9344825b3cbaa1c2e62ea0246f55b4c74",
        "ce208f3389769026df02f7aebd85c8f5d3e74c73"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 05 17:06:50 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 05 17:06:50 2013 -0700"
      },
      "message": "am ce208f33: am 8d36050a: Merge \"Clean up useless declaration in thread_private.h\"\n\n* commit \u0027ce208f3389769026df02f7aebd85c8f5d3e74c73\u0027:\n  Clean up useless declaration in thread_private.h\n"
    },
    {
      "commit": "ce208f3389769026df02f7aebd85c8f5d3e74c73",
      "tree": "54788da5af832a26fab1ed80b0e5e21df96f3963",
      "parents": [
        "4b47d9f978296e5bb2eaabb8069960eb6f207c80",
        "8d36050ac2bb1c4a6a04462e64c5440e3c23c9f0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 05 17:02:29 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 05 17:02:29 2013 -0700"
      },
      "message": "am 8d36050a: Merge \"Clean up useless declaration in thread_private.h\"\n\n* commit \u00278d36050ac2bb1c4a6a04462e64c5440e3c23c9f0\u0027:\n  Clean up useless declaration in thread_private.h\n"
    },
    {
      "commit": "94d0daa2dd4bc26b231be35fbbe1336dd6b72cd0",
      "tree": "bf13beb4555028c5dac393950b9cf0f870a419de",
      "parents": [
        "4c001859feeda27727917c5bd00338e90b801742"
      ],
      "author": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Fri May 03 10:31:17 2013 +0800"
      },
      "committer": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Wed Jun 05 11:26:24 2013 +0800"
      },
      "message": "Clean up useless declaration in thread_private.h\n\nChange-Id: Ie7bcdc7195a3fcbcd09a95f73b0c49e8897ad50b\n"
    },
    {
      "commit": "75c9e1768212470f953b900f90257dd2e507c69b",
      "tree": "4f4564e632c4b2090bbf630d1fd4b14baf4145c7",
      "parents": [
        "b5aa654be6cace6a16a1af2f9afdb4de22ed3939",
        "027a8fae7750855af2ec0f8dd655e4a48ebf9352"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri May 31 11:21:18 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 31 11:21:18 2013 -0700"
      },
      "message": "am 027a8fae: am 8539961f: Merge \"FORTIFY_SOURCE: strcat / strncat optimize\"\n\n* commit \u0027027a8fae7750855af2ec0f8dd655e4a48ebf9352\u0027:\n  FORTIFY_SOURCE: strcat / strncat optimize\n"
    },
    {
      "commit": "027a8fae7750855af2ec0f8dd655e4a48ebf9352",
      "tree": "09441468c5ef3fa252bdfa85abda5a00ed94b391",
      "parents": [
        "d9349abf29506529790abf83cd239b77fa771038",
        "8539961ff299b05d8feac9be8b119698be22da03"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri May 31 11:14:56 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 31 11:14:56 2013 -0700"
      },
      "message": "am 8539961f: Merge \"FORTIFY_SOURCE: strcat / strncat optimize\"\n\n* commit \u00278539961ff299b05d8feac9be8b119698be22da03\u0027:\n  FORTIFY_SOURCE: strcat / strncat optimize\n"
    },
    {
      "commit": "cf870199d576bdfc339b7fb016c9f6fe7f2c87ed",
      "tree": "e4bdb361862de3efd9b907379d0fe3f2ad3f4ae2",
      "parents": [
        "72f59c84fd73a0a701ce6448d103e9021c1cb060"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu May 30 16:48:53 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri May 31 09:07:46 2013 -0700"
      },
      "message": "FORTIFY_SOURCE: strcat / strncat optimize\n\n__strcat_chk and __strncat_chk are slightly inefficient,\nbecause they end up traversing over the same memory region\ntwo times.\n\nThis change optimizes __strcat_chk / __strncat_chk so they\nonly access the memory once. Although I haven\u0027t benchmarked these\nchanges, it should improve the performance of these functions.\n\n__strlen_chk - expose this function, even if -D_FORTIFY_SOURCE\nisn\u0027t defined. This is needed to compile libc itself without\n-D_FORTIFY_SOURCE.\n\nChange-Id: Id2c70dff55a276b47c59db27a03734d659f84b74\n"
    },
    {
      "commit": "543f3f0ec44a631ea82fb27e1ff423e0cce630ed",
      "tree": "d1b66b9872478b591c5c94d06e66b6770a0c750b",
      "parents": [
        "940e30cf348a76e01ceacfbdc3d4bf0e497d466d",
        "975d4464cef774768cf99a68f3537cfc0678e3f7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 14 16:59:34 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 14 16:59:34 2013 -0700"
      },
      "message": "am 975d4464: am 6f502bc7: Merge \"Add more __restricts, clean up __format__ attributes.\"\n\n* commit \u0027975d4464cef774768cf99a68f3537cfc0678e3f7\u0027:\n  Add more __restricts, clean up __format__ attributes.\n"
    },
    {
      "commit": "975d4464cef774768cf99a68f3537cfc0678e3f7",
      "tree": "19318abb5f320f70d47e84d38ba0ef1a5c1ef142",
      "parents": [
        "20516923f59b859f8ca1bfdb3927bc23819ecdb3",
        "6f502bc74374804766639e6b1515644875810bda"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 14 16:56:49 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 14 16:56:49 2013 -0700"
      },
      "message": "am 6f502bc7: Merge \"Add more __restricts, clean up __format__ attributes.\"\n\n* commit \u00276f502bc74374804766639e6b1515644875810bda\u0027:\n  Add more __restricts, clean up __format__ attributes.\n"
    },
    {
      "commit": "d04c18397946f87ac4495351537c31a3d67257da",
      "tree": "3917d8d909d7f5ed401bdad509a364256b0890a9",
      "parents": [
        "349ef893e82f37632a705f39efc47c0d440f63c7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 14 16:08:43 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 14 16:08:43 2013 -0700"
      },
      "message": "Add more __restricts, clean up __format__ attributes.\n\nChange-Id: I7e2d270cc722d339d221eaea92747eaff3b51403\n"
    },
    {
      "commit": "f89ce5b518975ee5ce74713448781b884c0ff98b",
      "tree": "a1e9dc6ab5ca001ac6709ce1f90290a395e32551",
      "parents": [
        "9207e5aed86f5442e97614980a2c6c6bf123f97d",
        "9c7b510a408740b5b53f8d14b8f43bf2f2d36ae6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 05 11:47:00 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 05 11:47:00 2013 -0700"
      },
      "message": "am 9c7b510a: am 240fb862: Merge \"Make abort messages available to debuggerd.\"\n\n* commit \u00279c7b510a408740b5b53f8d14b8f43bf2f2d36ae6\u0027:\n  Make abort messages available to debuggerd.\n"
    },
    {
      "commit": "9c7b510a408740b5b53f8d14b8f43bf2f2d36ae6",
      "tree": "c1f551846396b7cf6fbcfaabb03c8460f0420e29",
      "parents": [
        "cd6f4804d22a119c1aaf915d70a53924b1666777",
        "240fb8623b1fe027d0d33a9d4c41d99ceb385b58"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 05 11:43:37 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 05 11:43:37 2013 -0700"
      },
      "message": "am 240fb862: Merge \"Make abort messages available to debuggerd.\"\n\n* commit \u0027240fb8623b1fe027d0d33a9d4c41d99ceb385b58\u0027:\n  Make abort messages available to debuggerd.\n"
    },
    {
      "commit": "0d787c1fa18c6a1f29ef9840e28a68cf077be1de",
      "tree": "3f8efc05d80658c9be48513238104a5de01a9951",
      "parents": [
        "014c75c78bdcad8acde8d0abb2450aa1f78e1a1f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 04 13:46:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 05 11:24:19 2013 -0700"
      },
      "message": "Make abort messages available to debuggerd.\n\nThis adds __libc_fatal, cleans up the internal logging code a bit more,\nand switches suitable callers over to __libc_fatal. In addition to logging,\n__libc_fatal stashes the message somewhere that the debuggerd signal handler\ncan find it before calling abort.\n\nIn the debuggerd signal handler, we pass this address to debuggerd so that\nit can come back with ptrace to read the message and present it to the user.\n\nBug: 8531731\nChange-Id: I416ec1da38a8a1b0d0a582ccd7c8aaa681ed4a29\n"
    },
    {
      "commit": "62bb090f8e3240c6859ccbd14638c34e9706b8c1",
      "tree": "502864eb10f25cec1b969c11919e63ca5ed3d47f",
      "parents": [
        "113054c4ebba0e54ec7856ccd169933fe9eaa692",
        "5b661481a8bfc71c4095abc3a9f655acb84b637e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 29 17:36:52 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 29 17:36:52 2013 -0700"
      },
      "message": "resolved conflicts for merge of 5b661481 to master\n\nChange-Id: Ifc68a87a95187b61f7f42a0217af43e14db6d4f8\n"
    },
    {
      "commit": "c01274c4aa8494ccef355badd02474ca3cfddc59",
      "tree": "0f8f789171df0626e7cd0f4a15e101211254f739",
      "parents": [
        "887049e46bdd5c14cc00837f959a0195780118a9"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 29 13:56:05 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 29 13:56:05 2013 -0700"
      },
      "message": "resolv_cache: hide some libc private functions\n\nDon\u0027t export unnecessary symbols to third party apps.\n\nBug: 8401049\nChange-Id: Ide5abd6ed13e756a85bd1277d93da74d1419addb\n"
    },
    {
      "commit": "6380d21a05a0bea90e1d5f36d9ee3f4618cc8269",
      "tree": "442261483925ef7e28b3d6c76b412c7eb2d4c86c",
      "parents": [
        "90f7546c688a209a3c9b816ea3142894a1e523b3",
        "92a197f3051c5befd5e40ec7f23c0643999da259"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Mar 16 00:11:52 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Mar 16 00:11:52 2013 +0000"
      },
      "message": "am 92a197f3: am d7dc414a: am 987fc5a3: am adeec096: Merge \"Hide various symbols that shouldn\\\u0027t be exposed.\"\n\n* commit \u002792a197f3051c5befd5e40ec7f23c0643999da259\u0027:\n  Hide various symbols that shouldn\u0027t be exposed.\n"
    },
    {
      "commit": "d7dc414afd1847e76ae317880bcedc9678953f9e",
      "tree": "4285ff4a44232ed5f302a6695dfb49a34be7da3d",
      "parents": [
        "12ea8005665085ae82c1b233ae93d12855e04b8b",
        "987fc5a3c4046831dc9e6c252e99a9c694bbd9ee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 17:09:17 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 15 17:09:17 2013 -0700"
      },
      "message": "am 987fc5a3: am adeec096: Merge \"Hide various symbols that shouldn\\\u0027t be exposed.\"\n\n* commit \u0027987fc5a3c4046831dc9e6c252e99a9c694bbd9ee\u0027:\n  Hide various symbols that shouldn\u0027t be exposed.\n"
    },
    {
      "commit": "90f7546c688a209a3c9b816ea3142894a1e523b3",
      "tree": "a830f26ab5657ae597da4b57268b677df5bf4932",
      "parents": [
        "cc71361ed6c9b8189a87309156f2d4d6aef3914c",
        "cf23cbb1d4826ac579fae28e4fe796a6e4e1ddfd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 23:43:01 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 15 23:43:01 2013 +0000"
      },
      "message": "am cf23cbb1: am 12ea8005: am 5f829205: am c1416647: Merge \"Clean up internal libc logging.\"\n\n* commit \u0027cf23cbb1d4826ac579fae28e4fe796a6e4e1ddfd\u0027:\n  Clean up internal libc logging.\n"
    },
    {
      "commit": "12ea8005665085ae82c1b233ae93d12855e04b8b",
      "tree": "27264105563e73d0a8f58a13257f3512fbf255a9",
      "parents": [
        "e1b0db1392050900e1f38b16ec2c8e213308e267",
        "5f8292050fc07f4bf9e70f37a807ad028e3cfc87"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:36:37 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 15 16:36:37 2013 -0700"
      },
      "message": "am 5f829205: am c1416647: Merge \"Clean up internal libc logging.\"\n\n* commit \u00275f8292050fc07f4bf9e70f37a807ad028e3cfc87\u0027:\n  Clean up internal libc logging.\n"
    },
    {
      "commit": "ce532721aaf61d4b6a171903c851ac82adf08aa8",
      "tree": "79938358ba4dc34a795aeab6026ec06a6a811591",
      "parents": [
        "c14166477e7fd22693eab194d37624c2f7506ce4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:31:09 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:31:09 2013 -0700"
      },
      "message": "Hide various symbols that shouldn\u0027t be exposed.\n\nA mangled symbol in libc.so is a symbol that shouldn\u0027t be exported\nby libc.so.\n\nChange-Id: Id92d1e1968b3d11d111a5d9ef692adb1ac7694a1\n"
    },
    {
      "commit": "8f2a5a0b40fc82126c691d5c30131d908772aab7",
      "tree": "0b29a5dc82395c076387edb5af9ca271a91264c0",
      "parents": [
        "e23ed8c6441389a79c6504295184f7249e01a197"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 15:30:25 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:12:58 2013 -0700"
      },
      "message": "Clean up internal libc logging.\n\nWe only need one logging API, and I prefer the one that does no\nallocation and is thus safe to use in any context.\n\nAlso use O_CLOEXEC when opening the /dev/log files.\n\nMove everything logging-related into one header file.\n\nChange-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58\n"
    },
    {
      "commit": "fbae9f3c30c869ca2fe8609f2d680430f543f0e6",
      "tree": "cbd2d5046e7828ca80cd551cd814f17fae5a52ef",
      "parents": [
        "6e1a5cf31ba47508b08dba02a45b4ea6e1edd6d2"
      ],
      "author": {
        "name": "Sasha Levitskiy",
        "email": "sanek@google.com",
        "time": "Wed Feb 27 15:48:55 2013 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 28 18:46:54 2013 +0000"
      },
      "message": "Bionic: Libc: Resolv: Stricter function signatures, unitialized return bug fix.\n\n\tStricter input parameters help avoid ugly casting when passing\n\tpointers to immutable protobuf data.\n\tWhile at it: an int return was dropped from 2 functions whose users\n\tnever used the result; one of the return paths was returning an\n\tuninitialized value.\n\tSize_t for portablity and warning supression, misc warnings addressed.\n\nChange-Id: I2d5cbdaf0c9b6c4621a7d397772da13da5dc0943\n"
    },
    {
      "commit": "aa13eaa934a77d583c3d92d7e279fed93edbfaad",
      "tree": "04bbc972c5ccca06cbbf889ee91d5ed66f25d7cb",
      "parents": [
        "92ce5cc4bcd431f9b0d44e61e3be84ca3a1d299b",
        "d9cb69881a062c615a8009be0a70270c70eb35da"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 25 22:58:44 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 25 22:58:44 2013 +0000"
      },
      "message": "am d9cb6988: am 406968b2: am c0e9ddd0: Merge \"Reimplement scandir(3).\"\n\n* commit \u0027d9cb69881a062c615a8009be0a70270c70eb35da\u0027:\n  Reimplement scandir(3).\n"
    },
    {
      "commit": "701bec2af33feaa9dddf12ccf8e4c714441b7f2e",
      "tree": "72d4f9e8dcc65601e89b70d11ab4b02f7fce64b5",
      "parents": [
        "f6bb5bf498810d0622f66020059c87b96738c35b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 25 13:14:31 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 25 13:14:31 2013 -0800"
      },
      "message": "Reimplement scandir(3).\n\nThe old scandir implementation didn\u0027t take into account the varying\nsize of directory entries, and didn\u0027t correctly clean up on its\nerror exits.\n\nBug: 7339844\nChange-Id: Ib40e3564709752241a3119a496cbb2192e3f9abe\n"
    },
    {
      "commit": "6af19237b7795cbbcf780eddf3e0114ab7faa7a9",
      "tree": "6cf2e2a5fb3fc5fbefaf2c3c3fbc688410667089",
      "parents": [
        "15c401d4acb37d89110af798d463ffb061cbaf83",
        "39804dcde6c1c596285432b28cdb09382ce59663"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 15 14:48:05 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 15 14:48:05 2013 -0800"
      },
      "message": "am 39804dcd: Merge \"Fix the pthread_setname_np test.\"\n\n* commit \u002739804dcde6c1c596285432b28cdb09382ce59663\u0027:\n  Fix the pthread_setname_np test.\n"
    }
  ],
  "next": "40eabe24e4e3ae8ebe437f1f4e43cf39cbba2e9e"
}
