)]}'
{
  "log": [
    {
      "commit": "3e424d0a241f8ae5194514dabc4ad899f5a5416d",
      "tree": "b206a209b235ba16e560b514766853c1ac908c22",
      "parents": [
        "467e49be70231f55bd7ba908407b4413294d3bfc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 23 16:02:26 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 24 14:55:29 2014 -0700"
      },
      "message": "Implement twalk(3), add unit tests.\n\nI\u0027ve also added insque(3) and remque(3) (from NetBSD because the OpenBSD\nones are currently broken for non-circular lists).\n\nI\u0027ve not added the three hash table functions that should be in this header\nbecause they operate on a single global hash table and thus aren\u0027t likely\nto be useful.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d73719\nChange-Id: I97397a7b921e2e860fd9c8032cafd9097380498a\n"
    },
    {
      "commit": "a167eef5482d4a89d4277ec74f57adbe38052813",
      "tree": "53cfbccf1f41116a46996951eb08b6f00fb1fd09",
      "parents": [
        "673bff01aed0c08991b98841ed0bfad78a589672"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 14:41:47 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 15:13:30 2014 -0700"
      },
      "message": "Fix visibility for a bunch more symbols.\n\nBug: 11156955\nBug: 15291317\nChange-Id: I664f25cce7c17085a101d6593d8e01525a1f6a90\n"
    },
    {
      "commit": "673bff01aed0c08991b98841ed0bfad78a589672",
      "tree": "9d97ebd099e97d25702dc44d5861a22e8c6bb263",
      "parents": [
        "4ae938698c89e9e3c79008d9a833db726779accd",
        "76c241b091b4d9d9a9237d40e814e52ce2917f47"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 19:19:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 14 17:20:33 2014 +0000"
      },
      "message": "Merge \"Implement rand/srand in terms of random/srandom.\""
    },
    {
      "commit": "76c241b091b4d9d9a9237d40e814e52ce2917f47",
      "tree": "fb7139355285a3b9efcabd6009b8f2d36024a9fe",
      "parents": [
        "83ce99d8b7e2b15b2169e6e6e18e871ad35abb6c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 11:57:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 12:02:22 2014 -0700"
      },
      "message": "Implement rand/srand in terms of random/srandom.\n\nCode developed for glibc or older versions of bionic might expect more\nrandomness than the BSD implementation provides.\n\nBug: 15829381\nChange-Id: Ia5a908a816e0a5f0639f514107a6384a51ec157e\n"
    },
    {
      "commit": "4f0b67a8dbf0e1d8b1dae42358553fb8d14456d4",
      "tree": "3c6403a39b402071fe1757014b57a7d898012450",
      "parents": [
        "83ce99d8b7e2b15b2169e6e6e18e871ad35abb6c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 11:22:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 11:22:59 2014 -0700"
      },
      "message": "Sync upstream-openbsd.\n\nChange-Id: I5b9961a57e2ff05f63bd218c130bf8347850b9be\n"
    },
    {
      "commit": "a210cae724313604f8cbd49cc6deab1be5239083",
      "tree": "61b27991a9a4fcc7a2631b39a94ef44f243c062f",
      "parents": [
        "e5c759ff3a602f884cdac011600dc64645bce93e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 30 12:03:43 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 30 12:03:43 2014 -0700"
      },
      "message": "Switch to upstream NetBSD nsap_addr.c.\n\nThese symbols should be public (and Firefox uses them), and we\u0027d also probably\nrather have the upstream thread-safe implementation.\n\nBug: https://bugzilla.mozilla.org/show_bug.cgi?id\u003d1030899\nChange-Id: I2a5888fbb3198546848398f576fd2195ff3fe00c\n"
    },
    {
      "commit": "c82c0b7e072491da4818e7de37411fbb2055fce1",
      "tree": "52915af97820de3316dab31073920c141ad861a3",
      "parents": [
        "a217a0cdb3ff78f6b59d64fd4356f87643ad9d1e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 16 16:52:27 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 16 16:52:27 2014 -0700"
      },
      "message": "Remove SHA1 from LP64 in favor of libcrypto.\n\nKeep the symbols around on LP32 for binary compatibility.\n\nBug: 11156955\nChange-Id: I379a7e0fa3092e9a70daeafcbcb2aacfc314031a\n"
    },
    {
      "commit": "a0beeeabbc8735bc830544cbbb1d920122b8d958",
      "tree": "472a5720b949ff3f5a1e3b37cd273f981d286f28",
      "parents": [
        "d242aff47dc4eaa5081dc7af821308d353cd1090"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 12 11:48:04 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 12 14:37:31 2014 -0700"
      },
      "message": "Get the full set of PRNG functions in \u003cstdlib.h\u003e\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d58888\nChange-Id: I435250bdae302e8bd7e29977d0fde7b9afbfca5e\n"
    },
    {
      "commit": "809093bc21d8a6f7d7f8c31a7821f3112d1134ce",
      "tree": "7d11b3a4b0d9f37dc4c7088f4ea5e31955b82f59",
      "parents": [
        "bdcab25ee6aebe2f5653fdc8f73e6bd94dadb763"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 09 18:10:20 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 09 18:10:20 2014 -0700"
      },
      "message": "Hide rand48 implementation details.\n\nBug: 11156955\nChange-Id: I130272286989487dc22e246fb4ffbee5230225c4\n"
    },
    {
      "commit": "47ba295b0679148970bbffc9b76a3651efea9502",
      "tree": "50c35c2ca079093c8f315c21cd53c7df8da0987a",
      "parents": [
        "6fa47ca484aa37b0a2a5734a9def32973d110cc6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 16:49:39 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 16:49:39 2014 -0700"
      },
      "message": "Rewrite and hide longjmperror.\n\nThis shouldn\u0027t be public API, isn\u0027t supported on x86/x86_64, and it\u0027s\nunlikely anyone would have actually seen the message before anyway.\nUsing __libc_fatal makes it much more likely to be seen.\n\nBug: 11156955\nChange-Id: Icf7f654b22a7dacd89668b60c11e5705c7215c08\n"
    },
    {
      "commit": "f51d3e87671110c508f0f71d9bcb1bf54c22ca3b",
      "tree": "2d2c034902bf0b3f1ec7fc5f59083a0b40e39cfc",
      "parents": [
        "308c30af72da7b13938934ba5037dd347b1ef139"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 19 15:55:29 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 19 15:55:29 2014 -0700"
      },
      "message": "Switch back to OpenBSD inet_ntop now they\u0027re FORTIFY clean.\n\nChange-Id: I04798a4966c352a8a12feebdff9646e3bad5933f\n"
    },
    {
      "commit": "623b0d05bd924e7fa3c155492695123c87c3a2b1",
      "tree": "8fa47b2bf2fb7abe4b168fb1009108cdd762f6e3",
      "parents": [
        "089c7c921786ff6255526feec96552fc16ada7f4"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 14 23:11:05 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 15 13:05:21 2014 -0700"
      },
      "message": "Register _cleanup function with atexit\n\n * Register cleanup function with atexit\n   instead of calling it explicitly on\n   exit()\n * abort() no longer calls _cleanup:\n   Flushing stdio buffers on abort is no\n   longer required by POSIX.\n * dlmalloc no longer need to reset cleanup\n   (see above)\n * Upstream findfp.c makebuf.c setvbuf.cexit.c\n   to openbsd versions.\n\nBug: 14415367\nChange-Id: I277058852485a9d3dbb13e5c232db5f9948d78ac\n"
    },
    {
      "commit": "5c8c88dd8d0a371d30096aa107297ebc23e96a45",
      "tree": "c9128ec2803a01da0091ca352385a9977f1aa13d",
      "parents": [
        "c6b5834ceb3df72608a8fe3526a2db337e504512"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 19:17:46 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 19:17:46 2014 -0700"
      },
      "message": "Use the NetBSD inet_ntop until the OpenBSD bug is fixed.\n\nStupidly I found this bug by accident when writing the existing\ntests, but I didn\u0027t think any real code would hit it. It turns\nout that libcore always uses an INET6_ADDRSTRLEN-sized buffer\neven when working with AF_INET addresses.\n\nChange-Id: Ieffc8e4bbe9b66b49b033e3e7101c896e097e6f8\n"
    },
    {
      "commit": "6a41b0fb0e589c4afc4ecbcf7c425f0aa40eaea4",
      "tree": "a333726f481bd9ca99db2a4ed5752d9b93c37b61",
      "parents": [
        "0ccef7ec5294b34902e07c26db55891d3eddb2be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 16:05:51 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 18:08:29 2014 -0700"
      },
      "message": "Flesh out \u003carpa/inet.h\u003e.\n\nUse the upstream OpenBSD implementations of these functions.\n\nAlso ensure we have symbols for htonl, htons, ntohl, and ntohs.\ngtest doesn\u0027t like us using the macro versions in ASSERT_EQ.\n\nBug: 14840760\nChange-Id: I68720e9aca14838df457d2bb27b999d5818ac2b5\n"
    },
    {
      "commit": "d39f3f2c2e7fc73ddb019695f0df3417deef5bf4",
      "tree": "ab5ee52f07ce296396e190040ec6d1e5a8bb2474",
      "parents": [
        "44a98d5c12530cbd6b1b0779690e9952207c34bf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 21 17:13:46 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 21 17:13:46 2014 -0700"
      },
      "message": "Clean up and document our hacks for building BSD source.\n\nChange-Id: Ic591e22fa5b363bb68376b9f25814c0e5bd83fbf\n"
    },
    {
      "commit": "7f3a272ae327c647db4caeaea2a3c7af50bd73b5",
      "tree": "11f13e4665d94583daf84d1d7477c51671e83b3b",
      "parents": [
        "796249a4ce48ed5eb946170f32541e3edf83b601"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 01 12:40:00 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 01 12:40:00 2014 -0700"
      },
      "message": "Add lsearch(3) for ltrace.\n\nBug: 13746936\nChange-Id: I833c6ba70a1752c04dab7de389f5bebb741662b3\n"
    },
    {
      "commit": "205c7887add8b8c85434c35158138f16265beb28",
      "tree": "7220cc9b0d62a236ae7e248acd053195cb1a7575",
      "parents": [
        "d16100c1fb8a39215497243ecb12176e9688ef77"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 16:17:43 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 16:17:43 2014 -0700"
      },
      "message": "Clean up reentrancy cruft.\n\nThe DNS copy of reentrant.h was unused, so remove it.\n\nThe strtod implementation can use the upstream-netbsd reentrant.h and\nget a little closer to what was then upstream. (It\u0027s since been replaced\nby gdtoa, and we\u0027ll have to follow at some point, but for now this doesn\u0027t\nmake anything any worse.)\n\nANDROID_CHANGES is (now) only used in the DNS code, so push the -D\ndown.\n\nThe \u003clocale.h\u003e change prevents an LP32 hack from leaking into LP64.\n\nChange-Id: Idf30b98a59d7ca8f7c6cd6d07020b512057911ef\n"
    },
    {
      "commit": "ad41e9a4eb957ea318bbc93dd49dbe76b89df1e9",
      "tree": "8d95daa4b9d104c3b77467ae7eac651430cbe4f2",
      "parents": [
        "55f9710ac4843b4a5d2c8b03ade3d2bddd1fdf46"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 15:05:50 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 15:05:50 2014 -0700"
      },
      "message": "More stdio cleanup.\n\nChange-Id: Idc909cd3dc7b072f1edd2ae4980932d6550e8568\n"
    },
    {
      "commit": "19f58efa22357bfaa6a63a0940928830e95c5123",
      "tree": "83e025603557f711c7c5966e31ba34399977dab2",
      "parents": [
        "ec674b4d064d923818d0deba9f8378d13ff6451a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 16:32:35 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 16:32:35 2014 -0700"
      },
      "message": "Switch to NetBSD utmp.c.\n\nChange-Id: Ibe94888aa48b5b28fea97fd5719a1ed7a23ddeb3\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": "0133944b09d1c0a35041f7a41eb6bfb660144f4f",
      "tree": "0cb37ddb83c7cf6363d917791d76420ad6f6e1c1",
      "parents": [
        "e65055af112780623f372aca6a1f78d2b2acb34f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 18:04:58 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 21 14:30:18 2014 -0800"
      },
      "message": "Clean up our OpenBSD usage.\n\nAlso undo some of the mess where we have OpenBSD \u003cstdio.h\u003e but a mix of\ndifferent BSD\u0027s implementations.\n\nIn this first pass, I\u0027ve only moved easy OpenBSD stuff.\n\nChange-Id: Iae67b02cde6dba9d8d06fedeb53efbfdac0a8cf6\n"
    },
    {
      "commit": "677b6e605be95f434602f19a627ea0dea2927ccd",
      "tree": "7219078b1fb87f88e1273c4ef0cb84175da08236",
      "parents": [
        "8d0fe1c49e83592372becc996accfe9d5948aa9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 14:15:09 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 14:16:58 2014 -0800"
      },
      "message": "Move the upstream-netbsd libc files into the correct directory.\n\nI screwed up when I originally imported these files; they\u0027re in lib/libc/\nin the upstream tree; there is no top-level libc/ (though there is a top-level\ncommon/, so those files stay where they are).\n\nChange-Id: I7c5e2224a4441ab0e33616a855a8c6aacfeac46f\n"
    },
    {
      "commit": "db1ea3474899ebbd783aba872d3005f95a816d0f",
      "tree": "b70fedd7d69098f5141dbbb09ef41851a61eec8d",
      "parents": [
        "3623d80675e5321b92c2d88a7b7ec6bd998d81d5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 17 18:42:49 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 15:39:24 2014 -0800"
      },
      "message": "Implement some of the missing LFS64 support.\n\nThis gives us:\n\n* \u003cdirent.h\u003e\n  struct dirent64\n  readdir64, readdir64_r, alphasort64, scandir64\n\n* \u003cfcntl.h\u003e\n  creat64, openat64, open64.\n\n* \u003csys/stat.h\u003e\n  struct stat64\n  fstat64, fstatat64, lstat64, stat64.\n\n* \u003csys/statvfs.h\u003e\n  struct statvfs64\n  statvfs64, fstatvfs64.\n\n* \u003csys/vfs.h\u003e\n  struct statfs64\n  statfs64, fstatfs64.\n\nThis also removes some of the incorrect #define hacks we\u0027ve had in the\npast (for stat64, for example, which we promised to clean up way back\nin bug 8472078).\n\nBug: 11865851\nBug: 8472078\nChange-Id: Ia46443521918519f2dfa64d4621027dfd13ac566\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": "652289942d0d2543af90c8af9c04d80a2edb481a",
      "tree": "3ea6d3332a690d66cb8fc7ea9efca89b1ce678a5",
      "parents": [
        "ae5c3dd73844e6a9e1a14dbf893eab5142902f18"
      ],
      "author": {
        "name": "Pawit Pornkitprasan",
        "email": "p.pawit@gmail.com",
        "time": "Thu Nov 14 23:50:45 2013 +0700"
      },
      "committer": {
        "name": "Pawit Pornkitprasan",
        "email": "p.pawit@gmail.com",
        "time": "Tue Nov 19 09:49:17 2013 +0700"
      },
      "message": "bionic: call stdio cleanup on exit\n\nAs of 61e699a133a4807fe878a6cb0d7190d7c96e21f8, stdio clean up\nfunctions are no longer registered in atexit and must be called\nmanually via __cleanup.\n\nThe issue this fixes is some static binaries linked against bionic\ncannot output properly when piped or redirected because the buffer\nis not flushed before closing.\n\nThis is done by pulling in exit.c (and other dependencies) from\nnetbsd.\n\nChange-Id: I193e54a6d08900f291550029fe75ce76394d9e22\n"
    },
    {
      "commit": "9be07fa527f61f4ca4be9f6380fa004ac588ccda",
      "tree": "7f00a1641d2c8bce3f7f6205f4112dc7c3a8d4fb",
      "parents": [
        "9e63e03d34fc0b4d87cff047a4bc55f8ebc5e12a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 17:04:56 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 17:04:56 2013 -0800"
      },
      "message": "Fix a TODO; we\u0027ve had SOCK_CLOEXEC for a while now.\n\nChange-Id: I4bc39b57f3c33441ead74127f576bf5a4e311566\n"
    },
    {
      "commit": "60fd3450bf5cd081e019ea50616032e1447aeeb3",
      "tree": "87579ea373e65026ad974c3f13fadfed26df194c",
      "parents": [
        "020bcdaef349b6bd82302a0656fdf9aaff30bdb3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 15:24:26 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 15:24:26 2013 -0700"
      },
      "message": "Fix the *rand48 functions on LP64.\n\nI reported the mrand48 bug upstream, and \u0027matt\u0027 fixed the whole family\nof functions!\n\nChange-Id: I07fbc034e86499ce89599c3026a741738fd0cfc0\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": "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": "6b3f49a5374305ce9690c3c5ca2aadc90f54c521",
      "tree": "7dcd0542e0e59e974bb6aae6a2c861e38f7d5dd1",
      "parents": [
        "db794197cc880e3805bcefbea780476a359066c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 06 16:20:55 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 06 16:20:55 2013 -0800"
      },
      "message": "Upgrade to current NetBSD popen/pclose.\n\nThis gets us back to using vfork now our ARM vfork assembler stub is\nfixed, and adds the missing thread safety for the \u0027pidlist\u0027.\n\nBug: 5335385\nChange-Id: Ib08bfa65b2cb9fa695717aae629ea14816bf988d\n"
    },
    {
      "commit": "2b473070126345e323d0694b87f88264cc9a77cc",
      "tree": "1f626a0ab6ef690d17c7c52004615147fd768dba",
      "parents": [
        "547eba0a63951d7db93c0542e1ecab891725b9a8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 22 15:10:19 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 22 15:10:19 2013 -0800"
      },
      "message": "Our strcoll(3) is no different from NetBSD\u0027s, so take exactly theirs.\n\nChange-Id: I45251047202a229f9175735ecc23c0ebcda71e8d\n"
    },
    {
      "commit": "c51cd764a2d0897234762abd4dbd21420cb9f17d",
      "tree": "77a3efe1662c08da97eb9eff8df6e69b4a53fe66",
      "parents": [
        "85597e2b59af91be0607ed073b6574b934ed369d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 22 14:41:23 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 22 14:41:23 2013 -0800"
      },
      "message": "Avoid overflow in memccpy.\n\nJust take the upstream NetBSD code.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d43078\nChange-Id: Ibbbde9d00e8bc6a09c9503aab2b04b4e3d1f98b0\n"
    },
    {
      "commit": "c30396f5f225e0b5a83a35432e2d82a7063cfdb9",
      "tree": "84df04116350a6895e76c26490bbcf499a3e3099",
      "parents": [
        "8f9a1eb108f22fc2ce7283ef184d909ec0ca1152"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Mon Oct 29 15:32:54 2012 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 07:44:27 2012 -0700"
      },
      "message": "libc: Fix alphasort() signature (and implementation).\n\nThe declaration for alphasort() in \u003cdirent.h\u003e used the deprecated:\n\n  int alphasort(const void*, const void*);\n\nwhile both Posix and GLibc use instead:\n\n  int alphasort(const struct dirent** a, const struct dirent** b);\n\nSee: http://pubs.opengroup.org/onlinepubs/9699919799/functions/alphasort.html\n\nThis patch does the following:\n\n- Update the declaration to match Posix/GLibc\n- Get rid of the upstream BSD code which isn\u0027t compatible with the new\n  signature.\n- Implement a new trivial alphasort() with the right signature, and\n  ensure that it uses strcoll() instead of strcmp().\n- Remove Bionic-specific #ifdef .. #else .. #endif block in\n  dirent_test.cpp which uses alphasort().\n\nEven through strcoll() currently uses strcmp(), this does the right\nthing in the case where we decide to update strcoll() to properly\nimplement locale-specific ordered comparison.\n\nChange-Id: I4fd45604d8a940aaf2eb0ecd7d73e2f11c9bca96\n"
    },
    {
      "commit": "063cfb2084ea4b12d3c85b2d2c44e888f0857eb4",
      "tree": "ec94389e76f6fd79d573c4a689b7c83c4711edd0",
      "parents": [
        "7193731ae6b8083bc7a5e5e468fb98b1dbcf3f3d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 20:55:23 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 26 16:42:06 2012 -0700"
      },
      "message": "Clean up the implementation of the \u003cdirent.h\u003e functions.\n\nChange-Id: I3c647cc9588525afc41fee90ee468d58cd13503a\n"
    },
    {
      "commit": "ab44f52202878cdf2bf22457aeae33ec24089556",
      "tree": "2ae72963003e3ada4cbb19acd73475b4164f515a",
      "parents": [
        "e3dbe1e3820d6ab0370566055e9cdc593c5cce48"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 16:05:09 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 16:05:09 2012 -0700"
      },
      "message": "More upstream NetBSD upgrades.\n\nChange-Id: Idb781d37de3b05585271d7d258ecffd5ba87d0b8\n"
    },
    {
      "commit": "e8bcca3a2ca4a70156c72239d62bb68eeb2929fd",
      "tree": "810eacbe3195f2064483973cc55b67384a7c4c32",
      "parents": [
        "fb93e6a5b322a87e61de19421a72d6dfcc82b614"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 12:26:26 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 12:29:53 2012 -0700"
      },
      "message": "Upgrade more functions to the current upstream NetBSD copy.\n\nChange-Id: Ie0b3f8b3fccef28609eb210434413ebd51d6ef45\n"
    },
    {
      "commit": "31a1060a5a75d4f2aa3c3a5a7b948eb512d53387",
      "tree": "7b7445b27b4503c07d53c1fff9173b7dacf167b8",
      "parents": [
        "cd195eba1f9235b9b9d4dda70142d927b1b9802d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 14:14:21 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 14:14:21 2012 -0700"
      },
      "message": "Upgrade seed48 too.\n\nMissed this in 774c7f54ff375d71106283d42779b0cc5f238f87.\n\nChange-Id: Ic24fd67f003d0e2d192cfb08f96f63024ca817eb\n"
    },
    {
      "commit": "774c7f54ff375d71106283d42779b0cc5f238f87",
      "tree": "3dc911f915d8d120089ca5afd60bb84b6d51e71e",
      "parents": [
        "5b6346f6d5dca4022fe0044dd2807c19ac596788"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 13:11:03 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 13:53:41 2012 -0700"
      },
      "message": "Upgrade to the current NetBSD rand implementation.\n\nAlso add basic unit tests.\n\nChange-Id: I7fc7ef61d47c1e8fdf8b8eff67a635220c3afd56\n"
    },
    {
      "commit": "eac9eb462ed6f7fcfb791e7a08b4011fcca47829",
      "tree": "3b436a25d9ff22616ca22919ff9026e4426a9243",
      "parents": [
        "e4030e0bfc427e755477bbea69afe60308a62d91"
      ],
      "author": {
        "name": "Irina Tirdea",
        "email": "irina.tirdea@intel.com",
        "time": "Sat Sep 08 09:28:30 2012 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 27 11:38:57 2012 -0700"
      },
      "message": "Add getdelim(3) and getline(3) to bionic\n\nSome userspace programs (e.g. perf) need getline.\n\nChanges:\n() add getdelim.c, getline.c from NetBSD (http://netbsd.org/) under the\nNetBSD Foundation\u0027s (TNF) license (\"2 clause\" Berkeley-style license).\n() add stub for reentrant.h header that is needed by getdelim.c\n() add tests for getdelim(3) and getline(3).\n() update NOTICE file.\n\nChange-Id: I22ed82dd5904b9d7a3695535c04f502be3c27c5d\nSigned-off-by: Irina Tirdea \u003cirina.tirdea@intel.com\u003e\n"
    },
    {
      "commit": "ac184b21425a0681c51ef152f0567168b575da49",
      "tree": "08d0842acb148aa0ec9c01a455cefb28240b8fe6",
      "parents": [
        "8e630dacf61307e4681f04fc6b5ee593f30d91d0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 14:20:22 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 14:20:22 2012 -0700"
      },
      "message": "Fix several compiler warnings.\n\nChange-Id: I55caa50a5937442734f4fcbdb4edf1c70f335bf8\n"
    },
    {
      "commit": "5e58ea07d47c175abf8285ff67e3e9bc0b3a9e8e",
      "tree": "c051dace0b3f96c377b92071e8d2923fb9449e89",
      "parents": [
        "e895e6deaab620f874b3e9f196eb6b67f58dc278"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Sep 12 13:21:25 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 13 16:54:57 2012 -0700"
      },
      "message": "libc: add ftw / nftw functions\n\nPlease see \"man 3 ftw\" for a description of the\nftw / nftw functions.\n\nThis code is taken directly from netbsd unmodified.\n\nChange-Id: Ia4879ac57212b424adf5281b5e92858e216d0f14\n"
    },
    {
      "commit": "b5f053b5a7deb084e7a052d527e0aa41339ae05c",
      "tree": "a75d6715f7c7c954d22440b8c21c59b01d87e83d",
      "parents": [
        "4a9b7c694a8312160d3cd953a8227c23a1624868"
      ],
      "author": {
        "name": "Irina Tirdea",
        "email": "irina.tirdea@intel.com",
        "time": "Sat Sep 08 09:17:54 2012 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 13 15:18:21 2012 -0700"
      },
      "message": "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).\n\nChange-Id: I426109db25e907980d6cb3a7a695796e45783b78\n"
    },
    {
      "commit": "cc213f871bf4c5329eb5eb7a80a0ce9d4a880af8",
      "tree": "614352f0342e88315e758fbf63e35172578f260d",
      "parents": [
        "53493a9b26e9fb665de590abf3502af94eaf3f44"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 14 15:32:42 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 15 15:39:11 2012 -0700"
      },
      "message": "Switch to the current NetBSD regex implementation.\n\nChange-Id: If32b28dd85d6a7ab8957ab81d19fa4c0de9499d5\n"
    },
    {
      "commit": "409302f0f9fce73ea4c82bbfd439041cd7923d34",
      "tree": "bc23c82d6b9a68cfe2b114496399e1561d5db749",
      "parents": [
        "54655eaf92ca91bfe2fa293896059a181e27b6eb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 17:02:11 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 17:41:49 2012 -0700"
      },
      "message": "Switch to upstream NetBSD tdelete/tfind/tsearch.\n\ntdestroy is a GNU extension, so that stays.\n\nChange-Id: Iedebaff25ea7e92b1ab1dd4440da12b67b99aa40\n"
    },
    {
      "commit": "3d2d448af1b16923f5a329b49bb8e658dbad8a06",
      "tree": "afbfdd1719af181d8bab2a52cabb938ae3a1f425",
      "parents": [
        "b66bc51423a1f3969d0e70e035126ac4c4898b50"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 16:38:29 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 16:38:29 2012 -0700"
      },
      "message": "Fix nice...\n\n...by switching to the NetBSD implementation.\n\nChange-Id: I562b27b237a24ded95804035cc322c7bff12ff59\n"
    },
    {
      "commit": "f8b3a920a895a53b207017249080087d562bd0d2",
      "tree": "ed13cbbfe8069cba7a30d206d503d4558ed28630",
      "parents": [
        "4ec9e343cf445c5032d9a782d2e92b1dba713e61"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 11:39:58 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 12:10:10 2012 -0700"
      },
      "message": "Revert \"Revert \"Switch to NetBSD\u0027s strxfrm(3).\"\"\n\nThis reverts commit 8793e7c7d21a0434d1b5e63364c88b2b125a3d29,\nand fixes the build by building upstream NetBSD source as a\nseparate library that\u0027s then swallowed whole into libc_common.\n\nChange-Id: I6c9317d8c48b5ccaf85a7b185bc07fb31176ff97\n"
    },
    {
      "commit": "8793e7c7d21a0434d1b5e63364c88b2b125a3d29",
      "tree": "a515a4be8d2881d734a6b1c2a2e4f1fdd0c43e1d",
      "parents": [
        "be1d78b0dc899a732c0e9d7515d3023e8004e368"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 11:36:17 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 10 11:36:17 2012 -0700"
      },
      "message": "Revert \"Switch to NetBSD\u0027s strxfrm(3).\"\n\nThis reverts commit be1d78b0dc899a732c0e9d7515d3023e8004e368\n\nChange-Id: I11a95db474796f3da004f27652b081d5ba4ec9b4\n"
    },
    {
      "commit": "be1d78b0dc899a732c0e9d7515d3023e8004e368",
      "tree": "46bb803853eec1e06ee940a04335aa38032b33a3",
      "parents": [
        "0836a7ffb13890558fe568119b023007cce66373"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 11:03:02 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 11:03:02 2012 -0700"
      },
      "message": "Switch to NetBSD\u0027s strxfrm(3).\n\nThere were two bugs in our implementation. Intel found one, but another\nremainined, and tracking upstream is the way forward for functions where\nwe add no value.\n\nChange-Id: Ida9bac0293fb2c4cbc942b1e0515ee0477c6538b\n"
    }
  ]
}
