)]}'
{
  "log": [
    {
      "commit": "cf346532fccbe35666b827fbbfd2cb951dd00dc2",
      "tree": "c1ab59c29e63dea1700f24edb6bfad28c9d0687f",
      "parents": [
        "b1d27cab96c7aa31470ed2a1a8b284f9422cef25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 31 10:35:03 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 31 10:35:03 2020 -0700"
      },
      "message": "More cleanup for #inclusivefixit.\n\nFound manually with grep, since the script seems to miss stuff.\n\nTest: treehugger\nChange-Id: I5933cbade9792801d4a0bec1ccb077efa6ad8fbc\n"
    },
    {
      "commit": "4956c372cf320328952665629b2626e7cbc84c54",
      "tree": "7a02304c6c2eadc93b1b7a357fb31a143b661a89",
      "parents": [
        "e592dacfa254f59bb097c98d118d0c860b181da1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Dec 19 16:35:51 2019 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 02 14:09:50 2020 -0800"
      },
      "message": "Move bionic_macros.h from private to platform.\n\nTest: treehugger\nChange-Id: Ie473914f4c8924c7240b3ac22093a9daf42fc948\n"
    },
    {
      "commit": "c5d3a4348a49637d11c73143d71cf9bcc2bb1871",
      "tree": "51db1f05f6503e7bf8dde11d42e189ff47eb574a",
      "parents": [
        "57a64a717296e9f029bfcc3bba1d0b4c23d10cff"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Sep 25 17:50:36 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 27 12:14:24 2019 -0700"
      },
      "message": "Make tls related header files platform accessible.\n\nThere are places in frameworks and art code that directly included\nprivate bionic header files. Move these files to the new platform\ninclude files.\n\nThis change also moves the __get_tls.h header file to tls.h and includes\nthe tls defines header so that there is a single header that platform\ncode can use to get __get_tls and the defines.\n\nAlso, simplify the visibility rules for platform includes.\n\nBug: 141560639\n\nTest: Builds and bionic unit tests pass.\nChange-Id: I9e5e9c33fe8a85260f69823468bc9d340ab7a1f9\nMerged-In: I9e5e9c33fe8a85260f69823468bc9d340ab7a1f9\n(cherry picked from commit 44631c919aee96043f119aff6d39eb1584710d3c)\n"
    },
    {
      "commit": "b33952c777dc3068dbcdafcc14a58ed91064bd2d",
      "tree": "7e4752b7a80e548e1d7b161f6477ba5fb622e53b",
      "parents": [
        "235aad1981cf06525b35c9a3bbcbc9fbca6a8e60"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Aug 27 20:50:24 2019 -0700"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Fri Aug 30 10:17:36 2019 -0700"
      },
      "message": "versioner: Fix bzero/bcopy fortify\n\nThis commit replaces `bzero` with `__bionic_bzero` and `bcopy` with\n`__bionic_bcopy` because `bzero` and `bcopy` are partially defined in\n`libc.map.txt`.  Bionic versioner raises errors because versioner treats\nstatic inline functions as exported function definitions then it\ncompares the availability with the information specified in\n`libc.map.txt`.\n\nThis commit fixes the problem by replacing static inline functions into\n`__bionic_{bzero,bcopy}` and defining aliases for source-level\ncompatibility.\n\nTest: PATH\u003d$(pwd)/prebuilts/clang-tools/linux-x86/bin:$PATH \\\n      bionic/tools/versioner/run_tests.py\nBug: 140110040\n\nChange-Id: I97f2f0dc0abccd0a9fcfe5bb02f4e918362d35cc\n"
    },
    {
      "commit": "261b7f4867f623f3f31609e7574411df43c409e2",
      "tree": "8eeaa7fbbcf467c6bf7f5ce4e595faeb54946beb",
      "parents": [
        "849c0b9f51b65da9f3ac7a3222da9ae00893acfd"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jun 10 16:32:07 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 20 13:05:23 2019 -0700"
      },
      "message": "fortify: replace bzero/bcmp defines\n\n__builtin_*_chk will emit warnings when things are trivially broken.\nEmitting errors instead is probably better (and we can be a bit smarter\nabout how we emit code for trivially safe cases.)\n\nBug: 131861088\nTest: checkbuild + bionic-unit-tests on blueline\nChange-Id: I33957ad419922d0760304758ecb9bc8ad33e0b64\n"
    },
    {
      "commit": "16455b5100ea46b930c1fa84d6bc905b7977643d",
      "tree": "2cbeacaeecab2980c47fbf21ce860d44d86ea8c6",
      "parents": [
        "3b463cf7f4f7fa54567ff42f6772091b22add2b8"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 18 01:00:59 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 17:53:01 2019 -0800"
      },
      "message": "Implement dynamic TLS accesses and allocation\n\nInitialize a thread\u0027s DTV to an empty zeroed DTV. Allocate the DTV and\nany ELF module\u0027s TLS segment on-demand in __tls_get_addr. Use a generation\ncounter, incremented in the linker, to signal when threads should\nupdate/reallocate their DTV objects.\n\nA generation count of 0 always indicates the constant zero DTV.\n\nOnce a DTV is allocated, it isn\u0027t freed until the thread exits, because\na signal handler could interrupt the fast path of __tls_get_addr between\naccessing the DTV slot and reading a field of the DTV. Bionic keeps a\nlinked list of DTV objects so it can free them at thread-exit.\n\nDynamic TLS memory is allocated using a BionicAllocator instance in\nlibc_shared_globals. For async-signal safety, access to the\nlinker/libc-shared state is protected by first blocking signals, then by\nacquiring the reader-writer lock, TlsModules::rwlock. A write lock is\nneeded to allocate or free memory.\n\nIn pthread_exit, unconditionally block signals before freeing dynamic\nTLS memory or freeing the shadow call stack.\n\nndk_cruft.cpp: Avoid including pthread_internal.h inside an extern \"C\".\n(The header now includes a C++ template that doesn\u0027t compile inside\nextern \"C\".)\n\nBug: http://b/78026329\nBug: http://b/123094171\nTest: bionic unit tests\nChange-Id: I3c9b12921c9e68b33dcc1d1dd276bff364eff5d7\n"
    },
    {
      "commit": "dfcb82d92d00c7f1516477b19da97c1d2b07f0b4",
      "tree": "84acbc670a0b351ef7059e8ed2455f08e05b4fff",
      "parents": [
        "0e986b8d5ddd1d41db18d8e6af1eb5c58fb3dbe8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 11 15:29:03 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 11 15:29:03 2017 -0700"
      },
      "message": "Clean up __isthreaded.\n\n__isthreaded is annoying for ARC++ and useless for everyone. Just hard-code\nthe value in ndk_cruft for LP32 and be done with it.\n\nBug: N/A\nTest: builds\nChange-Id: I08f11a404bbec55ed57cb1e18b5116163c7d7d13\n"
    },
    {
      "commit": "7a3681e5b6c39bc2b3b62031ca5941dbf7bc4e63",
      "tree": "78c25e2a38b7efed8db770a623a5cbfb7eaab11d",
      "parents": [
        "ca5e0f49ca5df873a20c996755175b5c9c1e2ed9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 24 17:48:32 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 08:50:43 2017 -0700"
      },
      "message": "Move libc_log code into libasync_safe.\n\nThis library is used by a number of different libraries in the system.\nMake it easy for platform libraries to use this library and create\nan actual exported include file.\n\nChange the names of the functions to reflect the new name of the library.\n\nRun clang_format on the async_safe_log.cpp file since the formatting is\nall over the place.\n\nBug: 31919199\n\nTest: Compiled for angler/bullhead, and booted.\nTest: Ran bionic unit tests.\nTest: Ran the malloc debug tests.\nChange-Id: I8071bf690c17b0ea3bc8dc5749cdd5b6ad58478a\n"
    },
    {
      "commit": "bd3d2088d99f45babb8a73192b53b6fd91930af3",
      "tree": "0533adb1ea5e0af98272e39ff9dc8e7fd3bdbf83",
      "parents": [
        "07807a10a2dfa85a952ee8c06188d0bc9597c184"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Apr 04 17:34:02 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Apr 05 13:17:07 2017 -0700"
      },
      "message": "libc: add const-correct string.h overloads\n\nlibcxx provides const-correct overloads for a few string.h functions.\nThese overloads use clang\u0027s enable_if attribute, so they\u0027re preferred\nover our FORTIFY\u0027ed equivalents.\n\nThis weakens _FORTIFY_SOURCE\u003d2 when used with some of these functions,\nsince clang needs to see __pass_object_size in order to pass an accurate\nresult for __builtin_object_size(s, 1) at a callsite. Since those\nfunctions don\u0027t have __pass_object_size on their params, clang can\u0027t do\nthat. This makes LLVM lower the __builtin_object_size calls, which means\nwe get the same result as __builtin_object_size(s, 0).\n\nWe have to provide all of the overloads in Bionic, since enable_if is\nonly used to disambiguate overloads with (otherwise) the same type. In\nother words:\n\n// overload 1\nchar *strchr(const char *, int s) __attribute__((enable_if(1, \"\")));\n// overload 2\nchar *strchr(char *, int s);\n\nvoid foo() {\n  char cs[1] \u003d {};\n  strchr(static_cast\u003cconst char *\u003e(cs), \u0027\\0\u0027); // calls overload #1.\n  strchr(cs, \u0027\\0\u0027); // calls overload #2.\n}\n\nBug: 34747525\nTest: m checkbuild on bullhead internal master + AOSP. vts -m\nBionicUnitTests passes on both. Surprisingly, the only code that this\nseems to break is contained in Bionic.\n\nChange-Id: Ie406f42fb3d1c5bf940dc857889876fc39b57c90\n"
    },
    {
      "commit": "5ffed9b8560636e1a00b4383ec1d18489e44821c",
      "tree": "c2960041e43cb0596051ec44dd0027ee892d108c",
      "parents": [
        "f5042cab109f7136191fd316be1471532d2ddf71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 14:06:14 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 14:08:31 2016 -0700"
      },
      "message": "Move brillo closer to Android.\n\nHiding our legacy cruft seemed like a good idea, but in practice it will only\nmean worse interoperability.\n\nPlus we got it wrong, as the recent `putw` example showed.\n\nChange-Id: I167c7168eff133889028089c22a7a0dfb8d6d0cf\n"
    },
    {
      "commit": "53cf348c829cb36328755bbdbe46668ecbc55348",
      "tree": "261d3370757fb0ae1f8f63b344802e62ed9aefe8",
      "parents": [
        "6ba5f07e3f6dbc487eb2cd341a9a4e804afafd51"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 09 13:06:41 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 09 16:27:23 2016 -0700"
      },
      "message": "Remove more stdio copy/paste.\n\nChange-Id: Ia92629b75d2c153ecf1cec711e2f9575eef604ab\n"
    },
    {
      "commit": "d13e9a603fa7e490853e6065240cdbfe532ada7a",
      "tree": "638cb927828a152ff13531c5795f74c0edb356ab",
      "parents": [
        "d941f72e75c744a2493bbdbf759e96c32f764e68"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jul 15 16:31:42 2016 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jul 19 18:18:22 2016 -0700"
      },
      "message": "Align-up and randomize shared libraries.\n\nThis change implements the following property:\n  Any 2**N aligned memory region on size 2**N contains no more than one DSO.\n\nThe value N can be configured, with 16 or 18 looking like a good choice.\nAdditionally, DSOs are loaded at random page-aligned address inside these large\nregions.\n\nThis change has dual purpose:\n1. Larger values of N allow a lot more compact CFI shadow implementation.\n   See change I14dfea630de468eb5620e7f55f92b1397ba06217.\n   For example, CFI shadow for the system_server process has the following size (RSS, KB):\n   152 for N \u003d 12, 32 for N \u003d 16, 16 for N \u003d 18.\n2. Extra randomization is good for security.\n\nThis change does not result in extra RAM usage, because everything is still page-aligned.\nIt does result in a bit more VM fragmentation because of the gaps between shared libraries.\nAs it turns out, this fragmentation is barely noticeable because the kernel creates new mapping\nat the highest possible address, and we do enough small mappings to almost completely fill the\ngaps (ex. in the Zygote the gaps are filled with .ttf file mappings and thread stacks).\n\nI\u0027ve measured VM fragmentation as the sum of all VM gaps (unmapped regions) that are larger\nthan 1MB according to /proc/$PID/maps. On aosp_angler-userdebug, the numbers are (in GB):\n\n                |   N \u003d 12  |  N \u003d 18\nsystem_server   |   521.9   |  521.1\nzygote64        |   522.1   |  521.3\nzygote32        |   2.55    |  2.55\nmediaserver     |   4.00    |  4.00\n\nChange-Id: Ia6df840dd409c82837efd1f263be420d9723c84a\n"
    },
    {
      "commit": "722ab05b255070e6c8add450c94eeb790618c98e",
      "tree": "23156dbf2afd440a10973ecf3b93aa9635132b92",
      "parents": [
        "130bec7103561fc3657e8a431ca55026430b843e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Apr 06 10:35:48 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 22 10:44:19 2016 -0700"
      },
      "message": "bionic: Implement getpwent and getgrent\n\nNot efficient to iterate through given the large number of Android\nids (AID). Compile warning will result if you use these functions,\ntelling you as much. Not for general consumption, however for\nexample, some filesystem tests would like to see these to perform\nall corners.\n\nAbout 1/4 second for getpwent, and 1/8 second for getgrent to iterate\nthrough all reserved Android aids.\n\nBug: 27999086\nChange-Id: I7784273b7875c38e4954ae21d314f35e4bf8c2fc\n"
    },
    {
      "commit": "bed110af26f947057fd7940ba383b6f562d2df97",
      "tree": "9bbd7b566df7613598c1fa5377f7f135b1252853",
      "parents": [
        "6809af03759e27c87598ea56e4f6a8c9b6267add"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 03 10:41:42 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 03 10:41:42 2016 -0800"
      },
      "message": "Clean up bcopy cruft.\n\nAlso remove some generic x86 assembler that\u0027s never built.\n\nChange-Id: Ic126de2eee646b5ba2b6ee549679ba90d67a48bb\n"
    },
    {
      "commit": "01d5b946acac8519d510781967bf538acdae1853",
      "tree": "8a5558513fc4642648887d3428f02eb2906c5021",
      "parents": [
        "5e57039c24d8aa777480e33255d627ca28af7dfe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 02 17:18:18 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 02 17:21:07 2016 -0800"
      },
      "message": "Remove optimized code for bzero, which was removed from POSIX in 2008.\n\nI\u0027ll come back for the last bcopy remnant...\n\nBug: http://b/26407170\nChange-Id: Iabfeb95fc8a4b4b3992e3cc209ec5221040e7c26\n"
    },
    {
      "commit": "0ac0cee0d1ab60a92103a5021e76ec31da2e3234",
      "tree": "86e5e5d15c525b7fd3883ea3dcf06f57f5853906",
      "parents": [
        "a42483baad9a37297e6bbbe02d433ecbde890386"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jan 06 17:57:44 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Jan 25 10:14:35 2016 -0800"
      },
      "message": "Remove dlmalloc.\n\nBug: http://b/17207577\nChange-Id: Ie009badca6deb1f91b27a4340b70cdd6bedff893\n"
    },
    {
      "commit": "bba395492a0bb6ee72d0ad8e4d468e852392220e",
      "tree": "bf0baaf8f36e64b3b64045ab8b2401625ca83ac0",
      "parents": [
        "05c2f6b3d39ee92eae248e902a5a54fdcc6c696f"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 21 22:25:32 2016 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jan 22 01:43:04 2016 +0000"
      },
      "message": "Revert \"Temporary apply LIBC version to __pthread_gettid\"\n\nThis reverts commit 0ef1d121b5e4845f4ef3b59ae9a1f99ceb531186.\n\nBug: http://b/26392296\nBug: http://b/26391427\nChange-Id: I7bbb555de3a43813e7623ff6ad4e17874d283eca\n"
    },
    {
      "commit": "0ef1d121b5e4845f4ef3b59ae9a1f99ceb531186",
      "tree": "fca911e05370dd70453096dae35a1727dff66bee",
      "parents": [
        "c1113a3fc7f32fb86937f7ab73afe0a481688788"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 04 22:36:18 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 05 00:19:13 2016 -0800"
      },
      "message": "Temporary apply LIBC version to __pthread_gettid\n\nThis is workaround for http://b/26391427\n\nBug: http://b/26391427\nChange-Id: Ibf5c611cf4c04dfa595644225e6d9503089a18da\n"
    },
    {
      "commit": "c8bb96a163ac4e4f47f305df9e4dc1252f6a938d",
      "tree": "77502aeddb6adfdeafe75fb03bb2fcf88e0ce576",
      "parents": [
        "eb90e91cb5872f6aac7008b0c83e103d396be196"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 05 08:03:56 2016 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 05 08:03:56 2016 +0000"
      },
      "message": "Revert \"Temporary apply LIBC version to __pthread_gettid\"\n\nThis reverts commit eb90e91cb5872f6aac7008b0c83e103d396be196.\n\nChange-Id: I63450087b6d3c23218b77d5eee37965f254a82d6\n"
    },
    {
      "commit": "eb90e91cb5872f6aac7008b0c83e103d396be196",
      "tree": "526677ca699b31c5e16bb26a3f96370c1bc9659e",
      "parents": [
        "04673ee997996e970d58c2ab83041ca7f01ebe5c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 04 22:36:18 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 04 22:36:18 2016 -0800"
      },
      "message": "Temporary apply LIBC version to __pthread_gettid\n\nThis is workaround for http://b/26391427\n\nBug: http://b/26391427\nChange-Id: I4ccc56e8b1bd2597f267df9706a33bb635abcfcb\n"
    },
    {
      "commit": "bc2e88a85d5fd3e59c041a667283378c1503a16c",
      "tree": "4c2f4295e7c36a46c22a0984366ce8e12c5be93f",
      "parents": [
        "23af25b747b5e7b0ca513a87b32f1f6a3cb99698"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 16 19:02:04 2015 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Dec 16 19:02:04 2015 +0000"
      },
      "message": "Revert \"Revert \"Remove remaining ndk_cruft from LP64 platforms\"\"\n\nThis reverts commit 23af25b747b5e7b0ca513a87b32f1f6a3cb99698.\n\nBug: http://b/26164862\nChange-Id: I201bf49530f33f8ba6a1a35b79723afb9e84c7a5\n"
    },
    {
      "commit": "23af25b747b5e7b0ca513a87b32f1f6a3cb99698",
      "tree": "5d1a2a01cc4566ea0a6ea7941147924276b186bd",
      "parents": [
        "b1d0a2ae7790f882d8f1ab24d7ef15e2b90c8ca2"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 15 01:34:14 2015 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Dec 15 01:34:14 2015 +0000"
      },
      "message": "Revert \"Remove remaining ndk_cruft from LP64 platforms\"\n\nThis reverts commit b1d0a2ae7790f882d8f1ab24d7ef15e2b90c8ca2.\n\nChange-Id: I1da06be0b78a4f2a4cad7e4a19a3ee755f55a813\n"
    },
    {
      "commit": "b1d0a2ae7790f882d8f1ab24d7ef15e2b90c8ca2",
      "tree": "4c2f4295e7c36a46c22a0984366ce8e12c5be93f",
      "parents": [
        "881673cb45449f9fbc9fa496cf1d777868ee9da8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 15:49:28 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Dec 14 15:49:28 2015 -0800"
      },
      "message": "Remove remaining ndk_cruft from LP64 platforms\n\nThis change removes endpwent, dlmalloc_inspect_all, dlmalloc_trim\nfrom lp64 libc.so. It also removed necessety of having brillo\nversion scripts for lp64 platforms.\n\nBug: http://b/26164862\nChange-Id: I4e9b38907bb1dc410f0eb6d2f5d5944fe713da51\n"
    },
    {
      "commit": "d51a0b0f9da767d5d67c9f3565c34afcaab1a908",
      "tree": "7043aa37cd6a476cbc94617e95878f681e48b4d2",
      "parents": [
        "9dec0a775b07f58d133ae5c35713e7cf60ddcc7c"
      ],
      "author": {
        "name": "Rohit Agrawal",
        "email": "rohitagr@google.com",
        "time": "Sat Dec 05 12:39:54 2015 -0800"
      },
      "committer": {
        "name": "Rohit Agrawal",
        "email": "rohitagr@google.com",
        "time": "Mon Dec 07 13:06:14 2015 -0800"
      },
      "message": "Base bcopy on memmove rather than memcpy.\n\nPOSIX defined bcopy to handle overlapping memory akin to memmove and\nbionic appears to have always done so.\n\nChange-Id: I2599113411e3532913270ba1c1b49e35cbc5f106\n"
    },
    {
      "commit": "cfd5a46b092536905ffe45a19cfe1b9e35aa8d10",
      "tree": "391ff85101b7308b1f45c22104f338e1cb2aeb72",
      "parents": [
        "7bd33cdf15c26c5855628eb2ac0e7d0f52189010"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 15:57:51 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 07 11:13:23 2015 -0800"
      },
      "message": "Make all of ndk_cruft.cpp one big extern \"C\".\n\nChange-Id: Iddd9b5f36e661e443fa13d12326e72df8c0d209c\n"
    },
    {
      "commit": "bb46afd6c44a847efe96e30d72708fd2d0906e8c",
      "tree": "9223b0b3f481341e36fc054e7209de3ec088a579",
      "parents": [
        "0d89913e74981cd51532e66a2e2f138392be4de1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 18:03:12 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 05 07:30:59 2015 -0800"
      },
      "message": "Revert \"Revert \"Remove __sinit and __sdidinit.\"\"\n\nThis reverts commit c8bae05f3ff9f1c736f7be70fa17d02795d748bb.\n\nWe were breaking init (ueventd) because we initialize system properties\nbefore we initialize stdio. The new system property implementation uses\nstdio to read from /property_contexts, so we end up touching stdio data\nstructures before they\u0027ve been initialized.\n\nThis second attempt takes things further by removing the stdio initialization\nfunction altogether. The data structures for stdin/stdout/stderr can be\nstatically initialized as data, and -- since we already had to give the\natexit implementation a backdoor for stdio -- we can just admit that we\nneed to clean up stdio, and that we always do so last.\n\nThis patch also removes the 17 statically pre-allocated file structures,\nso the first fopen will now allocate a block of 10 (the usual overflow\nbehavior). I did this just to make my life simpler, but it\u0027s not actually\nnecessary to remove it if we want it back.\n\nChange-Id: I936b2eb5e88e4ebaf5516121872b71fc88e5609c\n"
    },
    {
      "commit": "c8bae05f3ff9f1c736f7be70fa17d02795d748bb",
      "tree": "66de08608fd3b91963a647f70c7e0cfa65eaea07",
      "parents": [
        "4ade5195f188b84ce3599c71ef058d040b141da4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 17:47:20 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 17:47:20 2015 -0800"
      },
      "message": "Revert \"Remove __sinit and __sdidinit.\"\n\nThis reverts commit 4371961e00ad83fca033992c8a19c7d262fe6f84.\n\nThis broke booting; ueventd crashes with a null pointer dereference\nsomewhere in __sfp (but the kernel doesn\u0027t unwind, so I don\u0027t know\nwhat was calling __sfp).\n\nChange-Id: I65375fdfdf1d339a06558b4057b580cacd6324e2\n"
    },
    {
      "commit": "8766edc098304436a8b2b1b01ef01b9401918d54",
      "tree": "b1b3d6c1803633dc0dadaff8b6d9bacfec158d4b",
      "parents": [
        "0b40c13a5a2da127cb1203d33a3d170671b39247"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 15:53:25 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 15:53:25 2015 -0800"
      },
      "message": "Fix GCC build.\n\n  error: \u0027__sdidinit\u0027 initialized and declared \u0027extern\u0027 [-Werror]\n\nChange-Id: I97d9c174da6a99ca61b72572dfb4694813372a60\n"
    },
    {
      "commit": "4371961e00ad83fca033992c8a19c7d262fe6f84",
      "tree": "414fdfe263a993592ff18cdfb8fe4d9d2d3a16ce",
      "parents": [
        "22dca83e1c37d3b465b9fa432bbf7cb4bd0df868"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 03 13:23:03 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 03 13:23:03 2015 -0800"
      },
      "message": "Remove __sinit and __sdidinit.\n\nWe\u0027re eagerly initializing stdio now, so this can all be simplified.\n\nChange-Id: Icb288f8dd0ee08f02bea0d23670f75e78bed6b99\n"
    },
    {
      "commit": "9978a9a82e3b883b32a7a0bcd5cac18f31e7a68d",
      "tree": "fa4eb5a723f697521a7cc9b411dce1aba855738d",
      "parents": [
        "50e92795890c0d8b4bf54c535f66f3b2edf7bd59"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 29 18:11:32 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 29 18:11:32 2015 -0700"
      },
      "message": "Move __set_errno to ndk_cruft.cpp.\n\nChange-Id: I5caa1cc161961d2e4629429c0d406875b93cdbd0\n"
    },
    {
      "commit": "d7c7daada276276e77446c099a67dd3ea15ea72e",
      "tree": "30fd7a1b17591746208305df6533788cf8227433",
      "parents": [
        "1721be2229d07b5eea830f02a76e7be56d172aa9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 28 14:20:16 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 28 14:20:16 2015 -0700"
      },
      "message": "Remove the legacy endusershell/getusershell/setusershell stubs.\n\nThese don\u0027t work, aren\u0027t thread-safe, aren\u0027t in POSIX (or our header\nfiles), and are only used by one app (whose developers I\u0027ve contacted).\nBut the presence of these symbols causes configure to be confused, which\nis a pain for Brillo.\n\nBug: http://b/24812426\nChange-Id: I7fa6ef82864d5563929d9b8a7f8fcacb30b26d45\n"
    },
    {
      "commit": "fb8fd5076ea7ccc77960346e52b81134ccbb9ea3",
      "tree": "0e6084d53c21060288800203d03f64c51c4f1346",
      "parents": [
        "25cba7df5120a32b144769843781442031fc597b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 12 17:53:48 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 12 17:53:48 2015 -0700"
      },
      "message": "Opt Brillo out of the ndk cruft.\n\nBug: http://b/24812426\nChange-Id: I6a858d8ceebce9e2285e5b12de9fd89d2b42b352\n"
    },
    {
      "commit": "f9554a17765fd91d97d1f74913a626f01e880cee",
      "tree": "a164c6cbe760a4ce98065b427c79cdb0655f7c89",
      "parents": [
        "966f84b11dca7caf53c67664d811b99567cab7ee"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 05 17:12:17 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 05 17:12:17 2015 -0700"
      },
      "message": "Export two dlmalloc functions everywhere.\n\nThe functions dlmalloc_inspect_all and dlmalloc_trim get\nexported on devices that use dlmalloc, so be consistent and\nexport them everywhere.\n\nBug: 21640784\nChange-Id: I5b8796cd03c8f401d37d9c22823144f766f9c4c7\n"
    },
    {
      "commit": "2f836d4989845c0c82a1e4f99206fb0ff0d137a2",
      "tree": "7190db5cf1a8d85e40aa664b7ac50aa120ace278",
      "parents": [
        "c0eaa732844a8397d40a7ec82641f709e4b47a61"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 18 14:14:02 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 18 19:35:34 2015 -0700"
      },
      "message": "Make __get_thread inlined.\n\nBug: 19825434\n\nChange-Id: Ifb672a45a5776b83625a25654ed0d6f7fc368ae3\n"
    },
    {
      "commit": "52d7f1a94fd6ccb87dabd21c682f68d31810aca9",
      "tree": "b921836e4dfdcfbedaa10a12ac906a900d56294d",
      "parents": [
        "448a85968da1e4622e829bb48fd888a38f9f6c49"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 25 14:58:08 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 25 14:58:08 2015 -0800"
      },
      "message": "Move endpwent to ndk_cruft.cpp.\n\nBug: 19109159\nChange-Id: I3683a247643006ea6d6bcf3845f57d1908d457d7\n"
    },
    {
      "commit": "8c41eae6fcdb6cad1f6c46ae01708ead6b734060",
      "tree": "3fb9067c8790b6471ceadbdb80517731182aa7b8",
      "parents": [
        "af3ba5c87319e19c10be6755b37af92521f702c2",
        "7fb680bfda059746c9bb8939ffaed600eecc3a29"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 25 00:00:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 25 00:00:51 2015 +0000"
      },
      "message": "Merge \"Move getusershell/endusershell/setusershell to ndk_cruft.cpp.\""
    },
    {
      "commit": "7fb680bfda059746c9bb8939ffaed600eecc3a29",
      "tree": "4d2528047166136a5c8baa69af69edafafcc42c2",
      "parents": [
        "4add77b93c0c61381faa9d4d8dc62f81cafcc69a"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 24 13:18:25 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 24 14:46:59 2015 -0800"
      },
      "message": "Move getusershell/endusershell/setusershell to ndk_cruft.cpp.\n\nBug: 19108648\nChange-Id: I65134040345398dde612c4325d902db58f3bd2be\n"
    },
    {
      "commit": "4c5891d93dc151e2f07fc87ae967f23e6c3d6e0c",
      "tree": "0a18a145999730a8bcb118c2b42b4e6a8ffa15d9",
      "parents": [
        "97484d3a9d0d822aeaaa1547aeb76d7669076082"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 19 22:49:44 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 19 22:49:44 2015 -0800"
      },
      "message": "valgrind can\u0027t find syscall because we didn\u0027t put it in \u003cunistd.h\u003e.\n\nChange-Id: I1e47291d4476bd2816138a8cf58f29d4986d39e3\n"
    },
    {
      "commit": "1edfd9e36acff1824c5e8dcfbdc0580dcc74e1bb",
      "tree": "7a5db76270bc56cb27127c384807b68bb0b57c63",
      "parents": [
        "5c7964c5f159bc3e1bbc577c7ace52177f399b21"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 21:45:56 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 21:45:56 2015 -0800"
      },
      "message": "x86 has an assembler bcopy implementation.\n\nChange-Id: I4ed7af3c5b104f86550120401f773150c460f37b\n"
    },
    {
      "commit": "76f8916b904db14facf811ae44e1265261349702",
      "tree": "cf49d5313eb0e5a05463dbe519de48d4fddf84a9",
      "parents": [
        "419ed122aa21cf04334f21baab135ac4f9f49840"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 13:34:58 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 26 14:28:41 2015 -0800"
      },
      "message": "Clean up \u003cstdlib.h\u003e slightly.\n\nInterestingly, this mostly involves cleaning up our implementation of\nvarious \u003cstring.h\u003e functions.\n\nChange-Id: Ifaef49b5cb997134f7bc0cc31bdac844bdb9e089\n"
    },
    {
      "commit": "f183f95946c699924d8ce6c0ee723bf7f4fdfe85",
      "tree": "a19b67ae4bfb1ff566f09ba14e414399a4eaee3e",
      "parents": [
        "8a7f8387b3b95de2ee0c42e34a226a1fcc066896"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Oct 08 22:48:20 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 09 11:47:01 2014 -0700"
      },
      "message": "Re-add dlmalloc for 32 bit.\n\nIt turns out that appportable has a version that calls dlmalloc directly.\nRe-add the dlmalloc symbol for 32 bit only as a compatibility shim that\ncalls malloc.\n\nBug: 17881362\n\n(cherry pick commit from c9734d24d92f4737f5ab3808c77d816a1b084582)\n\nChange-Id: Iee9a777f66a1edb407d7563a60792b767ac4f83a\n"
    },
    {
      "commit": "0f001b67fea27f8d60afc4677e8970d32a4e3792",
      "tree": "208844ca4857eea0aaad56bbd0018e47201add50",
      "parents": [
        "d74aa580354037b9972524e9d654c0a336974838"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 12 11:35:05 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 12 11:35:05 2014 -0700"
      },
      "message": "Remove \"private/bionic_pthread.h\".\n\nBug: 17476168\nChange-Id: Id642987e641de81e914a28daea4ffe9d11e090ed\n"
    },
    {
      "commit": "fc829736e1f399a2b82058b24bb94f6bdab22469",
      "tree": "bad78653b2ef472b7f705696fb801f45854515aa",
      "parents": [
        "b4673c41025f3a16804aff8438c2810c739a11ef"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 08 10:25:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 08 10:52:28 2014 -0700"
      },
      "message": "Add arc4random_addrandom binary compatibility.\n\nThis was in \u003cstdlib.h\u003e in older releases. It\u0027s no longer used, but we can\npreserve backwards compatibility by making it a no-op.\n\n(cherry-pick of 51c8355d5cf4b83ccd2ad250ca4c61a616356c2b.)\n\nBug: 16205834\nChange-Id: Idde7b46df4f253e39675600bcf82352879a716e7\n"
    },
    {
      "commit": "f90355844663b85dd57c3adcd9e92c2ee6850412",
      "tree": "ff853a0853b1bc53190df1e9cad3b47bc2c27f4d",
      "parents": [
        "e07b4da53ddcb34939c1b5a88db36dec34352add"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 05 16:39:22 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Sat Sep 06 13:06:57 2014 -0700"
      },
      "message": "Add dlmalloc_usable_size for 32 bit arches.\n\nBug: 17337831\n\n(cherry picked from commit 1c365cb494d8cab1b639ecef21514425647e606b)\n\nChange-Id: Ice100e42eeac4b9c3b77737a546ec33174adcb2f\n"
    },
    {
      "commit": "5dea47221a116aa87b0c286230c944ed6b629636",
      "tree": "9bd6b42efb96dec7fc3db723ac45330f03bd0bee",
      "parents": [
        "450aaa018df19464cb4e01ea3059a2a075ebde52"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 03 15:53:11 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 03 16:30:22 2014 -0700"
      },
      "message": "Add back a dummy arc4random_stir for compatibility.\n\nThe current arc4random implementation stirs itself as needed, but we\nneed to keep an arc4random_stir symbol around for binary compatibility.\n\n(cherry-pick of 1e010d60397db706cd3d1c4d5701a2bced441aa8.)\n\nBug: 17291075\nChange-Id: Iaf6171c3ec65c39c1868364d5b35ea280e29a363\n"
    },
    {
      "commit": "1628eb1d43008c52b00ec98d10c4fd9e8b6fc7c5",
      "tree": "dbc976246dd99c44e949e410290283fd6dd882e1",
      "parents": [
        "4ad5066e1de326e5db46df18eeade9a88bc11bec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 06 10:47:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 06 10:47:33 2014 -0700"
      },
      "message": "Explain how wcswcs ended up in ndk_cruft.cpp.\n\nChange-Id: Ie45148095b2d5c3896c0df623d5d06a700c33c70\n"
    },
    {
      "commit": "891dedb935b50f1abb39eedfe33049a1e49283cb",
      "tree": "8066a42ec9e07537607254deb91195fb9d102a88",
      "parents": [
        "4fb0d4fb312ed696081200e65ce9bf643928e5e6"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 13 12:28:11 2014 +0200"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 16 13:10:20 2014 -0700"
      },
      "message": "libc: Fix \u0027index\u0027 symbol export.\n\nThe C library didn\u0027t export the \u0027index\u0027 symbol, but its C++ name-mangling\ninstead, which broke the ABI and prevented some applications from loading\nproperly.\n\nThe main reason was that the implementation under bionic/index.cpp relied\non the declaration to specify that the function has C linkage.\n\nHowever, the declaration for index() was removed from both \u003cstring.h\u003e\nand \u003cstrings.h\u003e in a recent patch, which made the compiler think it was\nok to compile the function with C++ linkage instead!\n\nThis patch does the following:\n\n- Move index() definition to bionic/ndk_cruft.cpp and ensure it uses\n  C linkage.\n\n  Note that this removes index() from the 64-bit library entirely, this\n  is intentional and will break source compatibility. Simply replacing\n  an index() call with the equivalent strchr() should be enough to fix\n  this in third-party code.\n\n- Remove bionic/index.cpp from the tree and build files.\n\n- Remove x86 assembly implementation from arch-x86/ to avoid conflict\n  with the one in ndk_cruft.cpp\n\nBUG\u003d15606653\n\nChange-Id: I816b589f69c8f8a6511f6be6195d20cf1c4e8123\n"
    },
    {
      "commit": "ac6467587e864d199377f14281da4641f979a68a",
      "tree": "138acbcc6c8d89da231342e9698de1a0b08580cd",
      "parents": [
        "9a3ad98fd69a276f7c5fca0489d5657be75fcf69"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 05 02:10:49 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 16 12:32:38 2014 -0700"
      },
      "message": "Revert \"Revert \"Remove ftime from bionic LP64\"\"\n\nThis reverts commit 0921204660b9597de795065d0350a787035ad589.\n\nChange-Id: I749af8d7d429cda9f9d09a75bd30df54e6b1dd65\n"
    },
    {
      "commit": "462abab12b074c62c0999859e65d5a32ebb41951",
      "tree": "c0979cfcae24863834ccc28821bd7d1483bac732",
      "parents": [
        "72dc1c22dc6a92dea925398c9e3880364ab29c1c"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jun 13 16:51:24 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 16 10:12:37 2014 -0700"
      },
      "message": "Removes getdtablesize(3) from LP64.\n\ngetdtablesize(3) was removed fro POSIX 2004. Keep the symbol around in LP32 for\nbinary compatibility, but remove the declaration from unistd.h.\n\nBug: 13935372\nChange-Id: I1f96cd290bf9176f922dad58bd5a7ab2cae7ef0f\n"
    },
    {
      "commit": "8229ae46f4fb165a18da4dca1be74c4c099c3ee7",
      "tree": "43204bf27e85e7e18a6fa87d7db7398af583b280",
      "parents": [
        "0f690d9eda1893e66223138d2b930eb3e0164820"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jun 13 16:04:41 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jun 13 16:04:41 2014 -0700"
      },
      "message": "Removes wait3(2) from LP64.\n\nwait3(2) was removed from POSIX 2004. Keep the symbol around in LP32 for binary\ncompatibility, but remove the declaration in sys/wait.h.\n\nBug: 13935372\nChange-Id: Ic715fce6781aae43b4ac6d745dc6d1e6b9914e71\n"
    },
    {
      "commit": "bffbfeed7a595dcbe5843a77d84c409a0225b4e1",
      "tree": "2df025b90853eeeef5f8dc7b623617f96ecc8914",
      "parents": [
        "19718f0cd605f55df26823c67b62ceab6fe99a00"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 20:41:42 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 20:41:42 2014 -0700"
      },
      "message": "Add the missing issetugid binary compatibility stub.\n\nBug: 14569474\nChange-Id: I3bedc1a0acf356af76424ceaf62ae7e85239f617\n"
    },
    {
      "commit": "d1ead2af8bf2f6bb801da272e3778f89efefe613",
      "tree": "0b9ad65d08c8d28d4ce1d71aff1c46853a0322cb",
      "parents": [
        "087b3cfa5b56c2e4a29cca225fdb1956033868ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 15:24:20 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 15:24:20 2014 -0700"
      },
      "message": "Fix ndk_cruft.cpp __getdents64 build failure.\n\nChange-Id: Ia463113da0575b36b5a9935d8d45e7bd2c801357\n"
    },
    {
      "commit": "3d5cb30d23cfc6a72f01c00246e69a2c614c8228",
      "tree": "25e525111f2e2181c6544e96eebc4ce6ec11777e",
      "parents": [
        "c3bdc792be78d788663ff9b5e019b4af852dc6f7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 11:44:55 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 15:05:58 2014 -0700"
      },
      "message": "Remove getdents from bionic.\n\nBug: 11156955\nChange-Id: I6c306989801be552d85fba8a50dcdc79282fb9d2\n"
    },
    {
      "commit": "205dd7d9b3ba314ef8601e4613823c2d62a0605b",
      "tree": "06109b7334bace518e53cd8c0b6bbf3c590839c0",
      "parents": [
        "8aabecf35c71a8255db259cba01005eea10485cf"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 10:14:19 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 05 08:21:17 2014 -0700"
      },
      "message": "Remove bsd_signal and sysv_signal from bionic LP64.\n\nbsd_signal was removed in POSIX 2008, sysv_signal was never POSIX.\n\nBug: 13935372\nChange-Id: I7688e5cc317247ff075dcf99b598f515fb4f15c4\n"
    },
    {
      "commit": "0921204660b9597de795065d0350a787035ad589",
      "tree": "4f53609088f6d2c5a53a73b03737fdb82c8a0f38",
      "parents": [
        "26d6799bbe170b0955f564974b584c1471efdca1"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 05 00:50:43 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 05 00:50:43 2014 +0000"
      },
      "message": "Revert \"Remove ftime from bionic LP64\"\n\nBreaking some build... will look in to it later.\n\nThis reverts commit 26d6799bbe170b0955f564974b584c1471efdca1.\n\nChange-Id: I35fa770221be3a181bd37c6c3dce1bf37a69a4a1\n"
    },
    {
      "commit": "26d6799bbe170b0955f564974b584c1471efdca1",
      "tree": "5291e782c3d8b431f666ba38119721f45a4862bd",
      "parents": [
        "623dce3bd43975ca5b8698955a9fd8f18e9d5963"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 15:20:17 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 16:25:24 2014 -0700"
      },
      "message": "Remove ftime from bionic LP64\n\nBug: 13935372\nChange-Id: I5dd31147143b23a090a3b75b846dc5354e599121\n"
    },
    {
      "commit": "001f8f041bf21c53d4a0b919ef2c859b047bac0a",
      "tree": "4f53609088f6d2c5a53a73b03737fdb82c8a0f38",
      "parents": [
        "e120cba31df5249b720579312e799bd1c65f8e3d"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 09:53:06 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 12:01:56 2014 -0700"
      },
      "message": "Removes wcswcs from bionic for LP64.\n\nBug: 13935372\nChange-Id: I0deb15e769da4fa81bb65a87f3c86db5163a5796\n"
    },
    {
      "commit": "b30aff405a220495941f1673b0a5e66c4fa8b84c",
      "tree": "3bf667c009cf468c040ccaae6e81d468b4fd0254",
      "parents": [
        "52f74322b1d72d57146107f32ee2c76c421bf4b1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 28 19:35:33 2014 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 28 18:31:15 2014 -0700"
      },
      "message": "Revert \"Revert \"Lose the hand-written futex assembler.\"\"\n\nThe problem with the original patch was that using syscall(3) means that\nerrno can be set, but pthread_create(3) was abusing the TLS errno slot as\na pthread_mutex_t for the thread startup handshake.\n\nThere was also a mistake in the check for syscall failures --- it should\nhave checked against -1 instead of 0 (not just because that\u0027s the default\nidiom, but also here because futex(2) can legitimately return values \u003e 0).\n\nThis patch stops abusing the TLS errno slot and adds a pthread_mutex_t to\npthread_internal_t instead. (Note that for LP64 sizeof(pthread_mutex_t) \u003e\nsizeof(uintptr_t), so we could potentially clobber other TLS slots too.)\n\nI\u0027ve also rewritten the LP32 compatibility stubs to directly reuse the\ncode from the .h file.\n\nThis reverts commit 75c55ff84ebfa686c7ae2cc8ee431c6a33bd46b4.\n\nBug: 15195455\nChange-Id: I6ffb13e5cf6a35d8f59f692d94192aae9ab4593d\n"
    },
    {
      "commit": "001707363ddee680d466c88dd330900683dadf63",
      "tree": "f08b347664f3c458b804e89397134f4fb6144506",
      "parents": [
        "d4f37110ce4b8439dd30540565f7c73e00cfe2fb"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Sat May 24 16:47:14 2014 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat May 24 20:13:13 2014 -0700"
      },
      "message": "Restore tkill for LP32.\n\nlibmono from Unity still requires tkill(2).\n\nChange-Id: I37a1994b08086c7fedb5c78ea0dadf2d72bc1463\nSigned-off-by: Anthony King \u003canthonydking@slimroms.net\u003e\n"
    },
    {
      "commit": "bd3a98c6b9850a8e55fb0e0ed9f045212c494881",
      "tree": "db21005b5d19e5025952afafc6530efc120e5f02",
      "parents": [
        "1c4d83012fea4e6d011215bef1665cf68d2ac47c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat May 24 17:19:36 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat May 24 17:19:36 2014 -0700"
      },
      "message": "Restore __futex_wake and __futex_wait for LP32.\n\nShould fix Skype:\n\n  java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol \"__futex_wake\" referenced by \"libsliq.so\"...\n\nBug: 15196718\nChange-Id: I8a18e18d830f0436e820cbde577121bd92710803\n"
    },
    {
      "commit": "fcac8ff97f6b6cced6546e0096cadc1039b68b5e",
      "tree": "06ea666f735a14951c3facd2cb986d8835798399",
      "parents": [
        "b2b0f7e1ae0a0459b41a7732b84f58d62373e512"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 01:24:30 2014 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 22 11:27:06 2014 +0100"
      },
      "message": "Switch to POSIX dprintf/vdprintf.\n\nBug: 11156955\nChange-Id: I734bd02db514367ab119a48304aae9767958e367\n"
    },
    {
      "commit": "eae5902e73dc4381811e08fd2334bf4a9300a928",
      "tree": "2ba628d1e74d046bd87ec060a68d0cc6d7b52100",
      "parents": [
        "635edbdf93a127da7db77d9cd174615734b4fb85"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 22 17:56:42 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 22 17:56:42 2014 -0700"
      },
      "message": "Remove strntoimax and strntoumax from the future.\n\nWhere do these turds come from?\n\nChange-Id: Id9ad2cc85c6128aa63b5d56ff2aa455bde39a5eb\n"
    },
    {
      "commit": "efbdb53f84f4e1faf38f3c1a4cb60a83b9885ef4",
      "tree": "ce1cefce8be4e92dec242f1a06672b1dfbf566d7",
      "parents": [
        "5f149f1bdef31d198c0e84fd8c904204d263e825"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 07 15:17:19 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 07 15:17:19 2014 -0700"
      },
      "message": "Remove a non-standard turd: strtotimeval.\n\nChange-Id: I1b1e40746cb573e3fb73a5276969b40c5da36d15\n"
    },
    {
      "commit": "a4eafa6dbc98378f3fa759fec8590871e2b5ae29",
      "tree": "4b8a1a0a8c8070ae4845d9dfcaa88daab380ae68",
      "parents": [
        "10f6beb3eb46cb2488427f58dccdd7bbfab5a250"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 10 18:10:04 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 11 10:44:36 2014 +0000"
      },
      "message": "Removed pthread_attr_getstackaddr/pthread_attr_setstackaddr\n\nMoved existing definitions to ndk_cruft to preserve NDK compatibility.\n\nBug: 13281069\nChange-Id: I6f260de69afa55a6274f0d13145c19ac6517b9d5\n"
    },
    {
      "commit": "152b9de19ade833ada124390ef153e53d3d3e2ed",
      "tree": "96e0f98537c7420007bbb3452dcbe5d57bbf5fe3",
      "parents": [
        "638e7892c63c9d6968c0cf2e98ace89b9c5b2f26"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 15:54:40 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 15:54:40 2014 -0700"
      },
      "message": "Remove non-standard memswap.\n\nChange-Id: I06548dda339987b755ef7139c590ca3e1f9fe0a9\n"
    },
    {
      "commit": "0e44bc3baeb1677e5fbdda87a737b9c508c95132",
      "tree": "1470737507c2d3924297e61e463edc18a191cc8e",
      "parents": [
        "b26e4944e2a5bf4b7e33fa38fb17a3b76c7fe0f7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 15:55:31 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 15:55:31 2014 -0800"
      },
      "message": "Remove \u003casm/page.h\u003e.\n\nIf we have PAGE_SIZE/PAGESIZE, POSIX says they should be in \u003climits.h\u003e.\n\nChange-Id: I3c2d574ea2aea81f524874a156361411a4ffa18e\n"
    },
    {
      "commit": "062092543fdbd6fa2676e4f5b37a15f7bba94332",
      "tree": "1363126a8783cca6b0ae3faf7cab2657d1934323",
      "parents": [
        "7115c80231aa88272294076c8775c09727ece85a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 16:20:54 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 16:33:39 2013 -0800"
      },
      "message": "Clean up the 32-bit kernel support, fix LP64 fcntl declaration.\n\nIn practice, thanks to all the registers the stubs don\u0027t actually change,\nbut it\u0027s confusing to have an incorrect declaration.\n\nI suspect that fcntl remains broken for aarch64; it happens to work for\nx86_64 because the first vararg argument gets placed in the right register\nanyway, but I have no reason to believe that\u0027s true for aarch64.\n\nThis patch adds a unit test, though, so we\u0027ll be able to tell when we get\nas far as running the unit tests.\n\nChange-Id: I58dd0054fe99d7d51d04c22781d8965dff1afbf3\n"
    },
    {
      "commit": "567a8de3ca5b4c4f033bfbcdd339a3fd59a76227",
      "tree": "1a7f98471fcdec66ad6a8a9e8805aaf2f4e7556f",
      "parents": [
        "972885499255a9368e96332f9da0d28b2436d042"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 17:14:55 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 17:14:55 2013 -0700"
      },
      "message": "Start moving 32-bit cruft somewhere it won\u0027t pollute 64-bit.\n\nChange-Id: I03a6a50a5243f29e50fb58a3cf8b5e7198640baa\n"
    }
  ]
}
