)]}'
{
  "log": [
    {
      "commit": "900d07d6a1f3e1eca8cdbb3b1db1ceeec0acc9e2",
      "tree": "3453e11061f4a1a3f0860deb9561e718503abd1f",
      "parents": [
        "6f9a97f864898bb9538898b212bf0a9547b2f943"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Oct 28 13:11:00 2019 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Oct 29 16:18:31 2019 -0700"
      },
      "message": "Add arm64 string.h function implementations for use with hardware supporting MTE.\n\nAs it turns out, our \"generic\" arm64 implementations of certain string.h\nfunctions are not actually generic, since they will eagerly read memory\npossibly outside of the bounds of an MTE granule, which may lead to a segfault\non MTE-enabled hardware. Therefore, move the implementations into a \"default\"\ndirectory and use ifuncs to select between them and a new set of \"mte\"\nimplementations, conditional on whether the hardware and kernel support MTE.\n\nThe MTE implementations are currently naive implementations written in C\nbut will later be replaced with a set of optimized assembly implementations.\n\nBug: 135772972\nChange-Id: Ife37c4e0e6fd60ff20a34594cc09c541af4d1dd7\n"
    },
    {
      "commit": "b8a95e21865efd16bf821333d34e005b8f0a8d3a",
      "tree": "d6a9a56d4499b2e01ebea72bf920f828a6c740c1",
      "parents": [
        "b29454794c48faed61987df172993855201343e6"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Oct 02 18:29:20 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 03 10:59:32 2019 -0700"
      },
      "message": "Update to kernel headers v5.3.2.\n\nTest: Builds and run unit tests on taimen/cuttlefish.\nChange-Id: I6ebd8f179d159ac974555e8edca588083e8081b3\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": "782c4858807869528577e26f98f68a2c2d0b5977",
      "tree": "fe65cc99aaabbba2a7963c9f23b8573c81bc0a9e",
      "parents": [
        "b9a7c651f178323e27752406f89d741cfb143e61"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 16 12:31:00 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 16 12:31:00 2019 -0700"
      },
      "message": "Generate assembler system call stubs via genrule.\n\nThere\u0027s no need to check in generated code.\n\nTest: builds \u0026 boots\nChange-Id: Ife368bca4349d4adeb0666db590356196b4fbd63\n"
    },
    {
      "commit": "d67b03734d697b97bbe4ec0ff563449a46377bee",
      "tree": "a039c0fb3549c880b9e63b8b549367ea62cd9d82",
      "parents": [
        "9586c0f4f421e63342074eeae9806cf11d622703"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 15 14:18:26 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 16 00:54:11 2019 +0000"
      },
      "message": "libc: generate syscall stubs in one big file...\n\n...all the better to switch to a genrule rather than checking in\ngenerated source.\n\nThis also removes all the code in the script to deal with git,\nrather than fix it. We won\u0027t need that where we\u0027re going.\n\nTest: boots\nChange-Id: I468ce019d4232a7ef27e5cb5cfd89f4c2fe4ecbd\n"
    },
    {
      "commit": "505168e53098c8c523449de1fdc419d29717bf1b",
      "tree": "b4ea4f7f2c612e829a3a0c5c9ed9b16c64fb144a",
      "parents": [
        "b62888b70940f173357d50395fee5b2ebee9ddff"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Feb 28 18:44:56 2019 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Mar 19 23:36:44 2019 +0000"
      },
      "message": "Annotate vfork for hwasan.\n\nCall a hwasan hook in the parent return path for vfork() to let hwasan\nupdate its shadow. See https://github.com/google/sanitizers/issues/925\nfor more details.\n\nBug: 112438058\nTest: bionic-unit-tests\nChange-Id: I9a06800962913e822bd66e072012d0a2c5be453d\n"
    },
    {
      "commit": "82aea781365f911e29386479a1da24c7664d78b7",
      "tree": "98d93d63c4233ea77fbadce21c7c54f2b3b7e5a6",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 03 00:06:17 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 01:11:26 2019 -0800"
      },
      "message": "Use TLS_SLOT_THREAD_ID macro in vfork.S\n\nNo functional change intended.\n\nBug: none\nTest: bionic unit tests\nChange-Id: I7ee0a2b3f0e3807abe88bfa34ef3cd56c150a8f6\n"
    },
    {
      "commit": "3927db1d5b54d18510c056fe66ed14ca742da909",
      "tree": "9a9d3100d6bfa22d66a05cc783504908079bcca7",
      "parents": [
        "9f1fddca26554ebfb136113ce0dd8ddc170a2af9"
      ],
      "author": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Fri Nov 30 14:26:23 2018 -0800"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Fri Nov 30 22:28:39 2018 +0000"
      },
      "message": "Remove denver64 from libc\n\nTest: compile\nChange-Id: Ifcbe15c1682b4e1e18835e38915b2421196882f7\n"
    },
    {
      "commit": "734beec3d48a7ea5cfe3bd0815676181ea698cc7",
      "tree": "4a288b288b56d549c23e25166de6be1b86729c79",
      "parents": [
        "83590680649dc04ce8a98cd85b6356e1d6066564"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Nov 14 12:41:41 2018 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Nov 16 14:37:08 2018 -0800"
      },
      "message": "Allocate a small guard region around the shadow call stack.\n\nThis lets us do two things:\n\n1) Make setjmp and longjmp compatible with shadow call stack.\n   To avoid leaking the shadow call stack address into memory, only the\n   lower log2(SCS_SIZE) bits of x18 are stored to jmp_buf. This requires\n   allocating an additional guard page so that we\u0027re guaranteed to be\n   able to allocate a sufficiently aligned SCS.\n\n2) SCS overflow detection. Overflows now result in a SIGSEGV instead\n   of corrupting the allocation that comes after it.\n\nChange-Id: I04d6634f96162bf625684672a87fba8b402b7fd1\nTest: bionic-unit-tests\n"
    },
    {
      "commit": "a2a114ba262cc8a34e6de757b034cf157fda9704",
      "tree": "2afd4a28ae3841f7a74c5c34b6fc79e55b43eb6a",
      "parents": [
        "1e4a4134fb9e0e03a8b76391261d5620a2f23eec",
        "b16e9ce7b8a604110768b783d6ffa70aaa921d71"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 06 21:35:09 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 06 21:35:09 2018 +0000"
      },
      "message": "Merge \"Annotate siglongjmp for HWASan.\""
    },
    {
      "commit": "b16e9ce7b8a604110768b783d6ffa70aaa921d71",
      "tree": "25cda93ac5b39b6ec889f811e9b0deba894aae93",
      "parents": [
        "23cfc34790f171bc05f149fc5f7bde3102f169af"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Aug 31 13:02:06 2018 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Sep 05 13:37:14 2018 -0700"
      },
      "message": "Annotate siglongjmp for HWASan.\n\nHWASan needs to re-tag the newly unallocated stack space to match SP.\n\nBug: 112438058\nTest: SANITIZE_TARGET\u003dhwaddress\n\nChange-Id: I4dddef542d802d63bdea59e32a03425a2c4f870b\n"
    },
    {
      "commit": "00d087c629185f8237488aaa992ebbf491841a68",
      "tree": "158a86c72599fbf10d1400053583249844d415d6",
      "parents": [
        "23cfc34790f171bc05f149fc5f7bde3102f169af"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Aug 31 14:27:32 2018 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Aug 31 15:02:12 2018 -0700"
      },
      "message": "(arm64) Extend branch range in __memcpy_chk.\n\nConditional branch has limited range (1MB) and can not be extended by\nthe linker. The current distance (in walleye build) is 500KB, about\nhalf of the maximum. HWASan pushes it over the limit.\n\nReplace conditional branch with regular branch, which has longer\nrange (26 vs 19 bits offset) and can be extended in the linker if\nneeded.\n\nBug: 112437884\nBug: 12231437\nTest: SANITIZE_TARGET\u003dhwaddress\n\nChange-Id: Idc083fb557ab3a859541beb009809992406a6703\n"
    },
    {
      "commit": "65a6211f4d5aa9cf19e6f1d6a43aadb60583eb45",
      "tree": "c9805f240955fa1784c5ffab7928717931e4bef8",
      "parents": [
        "2019f962471d5789b23d037ede06f4c76e46cde6"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Fri Jun 22 15:30:03 2018 -0300"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Tue Aug 21 19:50:09 2018 +0000"
      },
      "message": "[AArch64] Improve strncmp for mutually misaligned inputs\n\nThis patch was originally written by Siddhesh Poyarekar and pushed on\ncortex-strings [1]. The mutually misaligned inputs on aarch64 are\ncompared with a simple byte copy, which is not very efficient.\nThis patch enhances the comparison similar to strcmp by loading a\ndouble-word at a time.\n\nComparison on the default bionic and proposed optimized routines\nshows the following performance improvements on A54 (using the\nnew proposed memcmp input data from test_strncmp.xml):\n\n  - No noticeable change on aligned inputs or with same alignment.\n\n  - Large improvements on unaligned inputs from sizes larger than\n    16 bytes.\n\nBenchmark                               Time             CPU      Time Old      Time New       CPU Old       CPU New\n--------------------------------------------------------------------------------------------------------------------\nBM_string_strncmp/1/0/0              -0.0954         -0.0954            19            17            19            17\nBM_string_strncmp/2/0/0              -0.0344         -0.0344            19            18            19            18\nBM_string_strncmp/3/0/0              +0.1768         +0.1768            15            18            15            18\nBM_string_strncmp/4/0/0              -0.0344         -0.0344            19            18            19            18\nBM_string_strncmp/5/0/0              -0.0344         -0.0344            19            18            19            18\nBM_string_strncmp/6/0/0              +0.1589         +0.1589            15            18            15            18\nBM_string_strncmp/7/0/0              -0.0344         -0.0344            19            18            19            18\nBM_string_strncmp/8/0/0              -0.0998         -0.0998            19            17            19            17\nBM_string_strncmp/9/0/0              -0.0277         -0.0277            23            22            23            22\nBM_string_strncmp/10/0/0             -0.0270         -0.0270            23            22            23            22\nBM_string_strncmp/11/0/0             -0.0331         -0.0331            23            22            23            22\nBM_string_strncmp/12/0/0             -0.0270         -0.0270            23            22            23            22\nBM_string_strncmp/13/0/0             -0.0284         -0.0284            23            22            23            22\nBM_string_strncmp/14/0/0             +0.1042         +0.1042            20            22            20            22\nBM_string_strncmp/15/0/0             -0.0277         -0.0277            23            22            23            22\nBM_string_strncmp/16/0/0             +0.0214         +0.0215            22            22            22            22\nBM_string_strncmp/24/0/0             -0.1291         -0.1291            24            21            24            21\nBM_string_strncmp/32/0/0             -0.0470         -0.0470            27            26            27            26\nBM_string_strncmp/40/0/0             -0.0433         -0.0433            29            28            29            28\nBM_string_strncmp/48/0/0             -0.0301         -0.0301            31            30            31            30\nBM_string_strncmp/56/0/0             -0.0800         -0.0800            33            31            33            31\nBM_string_strncmp/64/0/0             +0.0188         +0.0188            34            34            34            34\nBM_string_strncmp/72/0/0             -0.0334         -0.0334            38            37            38            37\nBM_string_strncmp/80/0/0             -0.0000         -0.0000            40            40            40            40\nBM_string_strncmp/88/0/0             +0.0413         +0.0413            61            64            61            64\nBM_string_strncmp/96/0/0             -0.0215         -0.0216            69            67            69            67\nBM_string_strncmp/104/0/0            -0.0208         -0.0208            72            70            72            70\nBM_string_strncmp/112/0/0            -0.0173         -0.0173            75            74            75            74\nBM_string_strncmp/120/0/0            -0.0166         -0.0166            78            77            78            77\nBM_string_strncmp/128/0/0            -0.0158         -0.0158            81            80            81            80\nBM_string_strncmp/136/0/0            -0.0149         -0.0149            84            83            84            83\nBM_string_strncmp/144/0/0            -0.0201         -0.0201            88            86            88            86\nBM_string_strncmp/160/0/0            -0.0136         -0.0136            94            93            94            93\nBM_string_strncmp/176/0/0            +0.0224         +0.0224            96            98            96            98\nBM_string_strncmp/192/0/0            +0.0289         +0.0289           102           105           102           105\nBM_string_strncmp/208/0/0            +0.0101         +0.0101           111           112           111           112\nBM_string_strncmp/224/0/0            -0.0107         -0.0107           119           118           119           118\nBM_string_strncmp/240/0/0            -0.0088         -0.0088           126           125           126           125\nBM_string_strncmp/256/0/0            -0.0101         -0.0101           132           131           132           131\nBM_string_strncmp/512/0/0            -0.0056         -0.0056           235           233           235           233\nBM_string_strncmp/1024/0/0           -0.0030         -0.0030           439           437           439           437\nBM_string_strncmp/8192/0/0           -0.0431         -0.0431          3799          3635          3799          3635\nBM_string_strncmp/16384/0/0          -0.0069         -0.0069          6778          6732          6779          6732\nBM_string_strncmp/32768/0/0          -0.0001         -0.0002         13405         13403         13405         13403\nBM_string_strncmp/65536/0/0          +0.0005         +0.0005         26968         26981         26968         26981\nBM_string_strncmp/131072/0/0         -0.0057         -0.0057         53959         53650         53958         53650\nBM_string_strncmp/1/4/0              -0.1352         -0.1352            12            10            12            10\nBM_string_strncmp/2/4/0              +0.0020         +0.0020            15            15            15            15\nBM_string_strncmp/3/4/0              -0.1560         -0.1560            20            17            20            17\nBM_string_strncmp/4/4/0              +0.0296         +0.0296            22            22            22            22\nBM_string_strncmp/5/4/0              +0.0573         +0.0573            22            23            22            23\nBM_string_strncmp/6/4/0              -0.0340         -0.0340            25            24            25            24\nBM_string_strncmp/7/4/0              +0.0185         +0.0185            26            26            26            26\nBM_string_strncmp/8/4/0              -0.0050         -0.0050            27            27            27            27\nBM_string_strncmp/9/4/0              -0.1294         -0.1294            28            24            28            24\nBM_string_strncmp/10/4/0             +0.0109         +0.0109            29            29            29            29\nBM_string_strncmp/11/4/0             -0.0000         -0.0001            30            30            30            30\nBM_string_strncmp/12/4/0             +0.0055         +0.0055            50            50            50            50\nBM_string_strncmp/13/4/0             -0.0249         -0.0249            51            50            51            50\nBM_string_strncmp/14/4/0             -0.0289         -0.0289            53            52            53            52\nBM_string_strncmp/15/4/0             -0.0205         -0.0205            55            54            55            54\nBM_string_strncmp/16/4/0             -0.4616         -0.4616            57            31            57            31\nBM_string_strncmp/24/4/0             -0.4871         -0.4871            72            37            72            37\nBM_string_strncmp/32/4/0             -0.5549         -0.5549            87            39            87            39\nBM_string_strncmp/40/4/0             -0.5964         -0.5964           103            42           103            42\nBM_string_strncmp/48/4/0             -0.6647         -0.6647           118            40           118            40\nBM_string_strncmp/56/4/0             -0.6551         -0.6551           134            46           134            46\nBM_string_strncmp/64/4/0             -0.6609         -0.6609           145            49           145            49\nBM_string_strncmp/72/4/0             -0.5709         -0.5710           164            70           164            70\nBM_string_strncmp/80/4/0             -0.5929         -0.5929           180            73           180            73\nBM_string_strncmp/88/4/0             -0.6051         -0.6051           195            77           195            77\nBM_string_strncmp/96/4/0             -0.6160         -0.6160           210            81           210            81\nBM_string_strncmp/104/4/0            -0.6199         -0.6199           223            85           223            85\nBM_string_strncmp/112/4/0            -0.6293         -0.6293           240            89           240            89\nBM_string_strncmp/120/4/0            -0.6439         -0.6439           255            91           255            91\nBM_string_strncmp/128/4/0            -0.6493         -0.6493           271            95           271            95\nBM_string_strncmp/136/4/0            -0.6704         -0.6704           287            95           287            95\nBM_string_strncmp/144/4/0            -0.6744         -0.6744           302            98           302            98\nBM_string_strncmp/160/4/0            -0.6700         -0.6700           333           110           333           110\nBM_string_strncmp/176/4/0            -0.6821         -0.6821           364           116           364           116\nBM_string_strncmp/192/4/0            -0.6887         -0.6887           394           123           394           123\nBM_string_strncmp/208/4/0            -0.6949         -0.6949           425           130           425           130\nBM_string_strncmp/224/4/0            -0.7069         -0.7069           456           134           456           134\nBM_string_strncmp/240/4/0            -0.7042         -0.7042           486           144           486           144\nBM_string_strncmp/256/4/0            -0.7043         -0.7043           514           152           514           152\nBM_string_strncmp/1/0/4              +0.0227         +0.0227            14            14            14            14\nBM_string_strncmp/2/0/4              +0.0442         +0.0442            15            16            15            16\nBM_string_strncmp/3/0/4              +0.5829         +0.5829            17            27            17            27\nBM_string_strncmp/4/0/4              -0.1593         -0.1593            22            19            22            19\nBM_string_strncmp/5/0/4              -0.0516         -0.0516            23            22            23            22\nBM_string_strncmp/6/0/4              -0.1684         -0.1684            25            20            25            20\nBM_string_strncmp/7/0/4              +0.0170         +0.0170            26            26            26            26\nBM_string_strncmp/8/0/4              +0.0006         +0.0006            27            27            27            27\nBM_string_strncmp/9/0/4              +0.1272         +0.1272            25            28            25            28\nBM_string_strncmp/10/0/4             +0.0108         +0.0108            29            29            29            29\nBM_string_strncmp/11/0/4             -0.0001         -0.0001            30            30            30            30\nBM_string_strncmp/12/0/4             -0.3557         -0.3557            50            32            50            32\nBM_string_strncmp/13/0/4             -0.3370         -0.3370            51            34            51            34\nBM_string_strncmp/14/0/4             -0.3444         -0.3444            53            35            53            35\nBM_string_strncmp/15/0/4             +0.0946         +0.0946            51            56            51            56\nBM_string_strncmp/16/0/4             -0.5203         -0.5203            53            25            53            25\nBM_string_strncmp/24/0/4             -0.6109         -0.6109            72            28            72            28\nBM_string_strncmp/32/0/4             -0.6934         -0.6934            88            27            88            27\nBM_string_strncmp/40/0/4             -0.6833         -0.6833           103            33           103            33\nBM_string_strncmp/48/0/4             -0.6973         -0.6973           118            36           118            36\nBM_string_strncmp/56/0/4             -0.7116         -0.7116           134            39           134            39\nBM_string_strncmp/64/0/4             -0.6017         -0.6018           149            59           149            59\nBM_string_strncmp/72/0/4             -0.6268         -0.6268           164            61           164            61\nBM_string_strncmp/80/0/4             -0.6409         -0.6409           179            64           179            64\nBM_string_strncmp/88/0/4             -0.6465         -0.6465           195            69           195            69\nBM_string_strncmp/96/0/4             -0.6551         -0.6551           210            72           210            72\nBM_string_strncmp/104/0/4            -0.6662         -0.6662           227            76           227            76\nBM_string_strncmp/112/0/4            -0.6700         -0.6700           240            79           240            79\nBM_string_strncmp/120/0/4            -0.6740         -0.6740           256            83           256            83\nBM_string_strncmp/128/0/4            -0.6862         -0.6862           271            85           271            85\nBM_string_strncmp/136/0/4            -0.6883         -0.6883           287            89           287            89\nBM_string_strncmp/144/0/4            -0.7031         -0.7031           297            88           297            88\nBM_string_strncmp/160/0/4            -0.6985         -0.6985           333           100           333           100\nBM_string_strncmp/176/0/4            -0.7082         -0.7082           364           106           364           106\nBM_string_strncmp/192/0/4            -0.7223         -0.7223           396           110           396           110\nBM_string_strncmp/208/0/4            -0.7135         -0.7135           421           121           421           121\nBM_string_strncmp/224/0/4            -0.7194         -0.7194           455           128           455           128\nBM_string_strncmp/240/0/4            -0.7233         -0.7233           487           135           487           135\nBM_string_strncmp/256/0/4            -0.7239         -0.7239           516           143           516           143\nBM_string_strncmp/1/4/4              +0.0224         +0.0225            21            22            21            22\nBM_string_strncmp/2/4/4              -0.0001         -0.0001            22            22            22            22\nBM_string_strncmp/3/4/4              -0.0001         -0.0001            22            22            22            22\nBM_string_strncmp/4/4/4              -0.0435         -0.0435            22            21            22            21\nBM_string_strncmp/5/4/4              -0.0118         -0.0118            27            27            27            27\nBM_string_strncmp/6/4/4              -0.0118         -0.0118            27            27            27            27\nBM_string_strncmp/7/4/4              -0.0117         -0.0117            27            27            27            27\nBM_string_strncmp/8/4/4              -0.0118         -0.0118            27            27            27            27\nBM_string_strncmp/9/4/4              -0.0117         -0.0117            27            27            27            27\nBM_string_strncmp/10/4/4             +0.1447         +0.1447            23            27            23            27\nBM_string_strncmp/11/4/4             -0.0062         -0.0062            27            27            27            27\nBM_string_strncmp/12/4/4             -0.0454         -0.0454            28            27            28            27\nBM_string_strncmp/13/4/4             -0.1507         -0.1507            29            24            29            24\nBM_string_strncmp/14/4/4             -0.0003         -0.0003            29            29            29            29\nBM_string_strncmp/15/4/4             -0.0002         -0.0003            29            29            29            29\nBM_string_strncmp/16/4/4             +0.0047         +0.0047            29            29            29            29\nBM_string_strncmp/24/4/4             -0.0104         -0.0104            31            30            31            30\nBM_string_strncmp/32/4/4             -0.0290         -0.0290            33            32            33            32\nBM_string_strncmp/40/4/4             -0.0189         -0.0189            34            33            34            33\nBM_string_strncmp/48/4/4             -0.0059         -0.0059            36            36            36            36\nBM_string_strncmp/56/4/4             +0.0000         +0.0000            39            39            39            39\nBM_string_strncmp/64/4/4             +0.0000         +0.0000            42            42            42            42\nBM_string_strncmp/72/4/4             +0.0000         +0.0000            45            45            45            45\nBM_string_strncmp/80/4/4             +0.0391         +0.0392            65            68            65            68\nBM_string_strncmp/88/4/4             -0.0090         -0.0090            71            70            71            70\nBM_string_strncmp/96/4/4             -0.0034         -0.0034            74            74            74            74\nBM_string_strncmp/104/4/4            -0.0482         -0.0482            77            73            77            73\nBM_string_strncmp/112/4/4            +0.0387         +0.0387            77            80            77            80\nBM_string_strncmp/120/4/4            -0.0072         -0.0073            84            83            84            83\nBM_string_strncmp/128/4/4            -0.0071         -0.0071            87            86            87            86\nBM_string_strncmp/136/4/4            +0.0366         +0.0366            86            89            86            89\nBM_string_strncmp/144/4/4            -0.0068         -0.0068            93            93            93            93\nBM_string_strncmp/160/4/4            -0.0064         -0.0064           100            99           100            99\nBM_string_strncmp/176/4/4            -0.0063         -0.0063           106           105           106           105\nBM_string_strncmp/192/4/4            -0.0012         -0.0012           112           112           112           112\nBM_string_strncmp/208/4/4            -0.0098         -0.0098           119           118           119           118\nBM_string_strncmp/224/4/4            -0.0050         -0.0050           125           125           125           125\nBM_string_strncmp/240/4/4            -0.0060         -0.0060           132           131           132           131\nBM_string_strncmp/256/4/4            -0.0046         -0.0046           138           137           138           137\n\n[1] Commit id: 26cc4faec37a55529e5d0a39949f7b6ec81008f9\n\nTest: bionic tests and benchmarks on aarch64.\nChange-Id: Ied579d2044b4092fc95fad486af6541d1eb71dc3\n"
    },
    {
      "commit": "b42ff1b5c3fa0d2b46dae6b939c2b04ce044f1ef",
      "tree": "188c7d11e4f2c522e1707f715d64b13a40c24976",
      "parents": [
        "4ab56af82df228b63e723b21b92ede82e6f698dd"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Fri Jun 22 13:35:54 2018 -0300"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Tue Aug 21 17:48:52 2018 +0000"
      },
      "message": "[AArch64] Improve strcmp performance for misaligned strings\n\nThis patch was originally written by Siddhesh Poyarekar and pushed on\ncortex-strings [1]. Replace the simple byte-wise compare in the\nmisaligned case with a dword compare with page boundary checks in\nplace. For simplicity its uses a 4K page boundary so that it does not\nhave to query the actual page size on the system.\n\nComparison on the default bionic and proposed optimized routines\nshows the following performance improvements on A64 (using the\nnew proposed memcmp input data from test_strcmp.xml):\n\n  - Small improvement for aligned arguments with sizes up to 56 bytes\n    (from 10% to 20%).\n\n  - Large improvements for unaligned arguments for small sizes (from\n    3 to 256 bytes).\n\nBenchmark                              Time             CPU      Time Old      Time New       CPU Old       CPU New\n-------------------------------------------------------------------------------------------------------------------\nBM_string_strcmp/1/0/0              +0.0034         +0.0034            11            11            11            11\nBM_string_strcmp/2/0/0              +0.0000         +0.0000            11            11            11            11\nBM_string_strcmp/3/0/0              -0.1726         -0.1726            11             9            11             9\nBM_string_strcmp/4/0/0              -0.1726         -0.1726            11             9            11             9\nBM_string_strcmp/5/0/0              -0.1726         -0.1726            11             9            11             9\nBM_string_strcmp/6/0/0              -0.1719         -0.1719            11             9            11             9\nBM_string_strcmp/7/0/0              -0.1724         -0.1724            11             9            11             9\nBM_string_strcmp/8/0/0              -0.1718         -0.1718            11             9            11             9\nBM_string_strcmp/9/0/0              -0.2008         -0.2008            16            13            16            13\nBM_string_strcmp/10/0/0             -0.2008         -0.2008            16            13            16            13\nBM_string_strcmp/11/0/0             -0.2040         -0.2040            16            13            16            13\nBM_string_strcmp/12/0/0             -0.1991         -0.1991            16            13            16            13\nBM_string_strcmp/13/0/0             -0.1997         -0.1997            16            13            16            13\nBM_string_strcmp/14/0/0             -0.1988         -0.1989            16            13            16            13\nBM_string_strcmp/15/0/0             -0.2006         -0.2006            16            13            16            13\nBM_string_strcmp/16/0/0             -0.2043         -0.2043            16            13            16            13\nBM_string_strcmp/24/0/0             -0.1927         -0.1927            18            15            18            15\nBM_string_strcmp/32/0/0             -0.1743         -0.1743            20            17            20            17\nBM_string_strcmp/40/0/0             -0.1427         -0.1427            22            19            22            19\nBM_string_strcmp/48/0/0             -0.1053         -0.1053            24            22            24            22\nBM_string_strcmp/56/0/0             -0.0805         -0.0805            26            24            26            24\nBM_string_strcmp/64/0/0             -0.0454         -0.0454            28            27            28            27\nBM_string_strcmp/72/0/0             -0.0303         -0.0303            30            29            30            29\nBM_string_strcmp/80/0/0             -0.0111         -0.0111            32            32            32            32\nBM_string_strcmp/88/0/0             -0.0004         -0.0004            34            34            34            34\nBM_string_strcmp/96/0/0             -0.0058         -0.0058            37            37            37            37\nBM_string_strcmp/104/0/0            +0.0000         +0.0000            40            40            40            40\nBM_string_strcmp/112/0/0            -0.0457         -0.0457            61            58            61            58\nBM_string_strcmp/120/0/0            -0.0486         -0.0487            61            58            61            58\nBM_string_strcmp/128/0/0            -0.0499         -0.0499            64            61            64            61\nBM_string_strcmp/136/0/0            -0.0529         -0.0529            66            63            66            63\nBM_string_strcmp/144/0/0            -0.0492         -0.0492            69            66            69            66\nBM_string_strcmp/160/0/0            -0.0459         -0.0459            74            71            74            71\nBM_string_strcmp/176/0/0            -0.0400         -0.0401            79            76            79            76\nBM_string_strcmp/192/0/0            -0.0378         -0.0378            85            81            85            81\nBM_string_strcmp/208/0/0            -0.0009         -0.0009            89            89            89            89\nBM_string_strcmp/224/0/0            -0.0003         -0.0003            95            95            95            95\nBM_string_strcmp/240/0/0            -0.0320         -0.0320           100            96           100            96\nBM_string_strcmp/256/0/0            -0.0303         -0.0304           105           102           105           102\nBM_string_strcmp/512/0/0            -0.0171         -0.0171           187           183           187           183\nBM_string_strcmp/1024/0/0           -0.0091         -0.0091           350           347           350           347\nBM_string_strcmp/8192/0/0           -0.0030         -0.0031          2668          2660          2668          2660\nBM_string_strcmp/16384/0/0          +0.0007         +0.0007          5449          5452          5448          5452\nBM_string_strcmp/32768/0/0          +0.0635         +0.0635         10868         11558         10867         11557\nBM_string_strcmp/65536/0/0          -0.0017         -0.0017         21824         21786         21822         21784\nBM_string_strcmp/131072/0/0         +0.0012         +0.0012         43485         43536         43480         43532\nBM_string_strcmp/1/4/0              +0.7630         +0.7630             7            12             7            12\nBM_string_strcmp/2/4/0              +0.9265         +0.9265            12            23            12            23\nBM_string_strcmp/3/4/0              -0.0000         -0.0000            14            14            14            14\nBM_string_strcmp/4/4/0              +0.0372         +0.0372            19            19            19            19\nBM_string_strcmp/6/4/0              -0.0921         -0.0921            20            19            20            19\nBM_string_strcmp/7/4/0              -0.0291         -0.0291            19            19            19            19\nBM_string_strcmp/8/4/0              +0.0648         +0.0648            20            22            20            22\nBM_string_strcmp/9/4/0              +0.0001         -0.0055            22            22            22            22\nBM_string_strcmp/10/4/0             -0.1924         -0.1924            23            19            23            19\nBM_string_strcmp/11/4/0             -0.2347         -0.2347            24            19            24            19\nBM_string_strcmp/12/4/0             -0.2738         -0.2739            26            19            26            19\nBM_string_strcmp/13/4/0             -0.3804         -0.3804            42            26            42            26\nBM_string_strcmp/14/4/0             -0.3581         -0.3582            41            26            41            26\nBM_string_strcmp/15/4/0             -0.3905         -0.3905            43            26            43            26\nBM_string_strcmp/16/4/0             -0.4068         -0.4068            44            26            44            26\nBM_string_strcmp/24/4/0             -0.4917         -0.4917            57            29            57            29\nBM_string_strcmp/32/4/0             -0.5607         -0.5607            70            31            70            31\nBM_string_strcmp/40/4/0             -0.5940         -0.5940            82            33            82            33\nBM_string_strcmp/48/4/0             -0.5303         -0.5302            95            45            95            45\nBM_string_strcmp/56/4/0             -0.4975         -0.4975           108            54           108            54\nBM_string_strcmp/64/4/0             -0.5167         -0.5167           121            58           121            58\nBM_string_strcmp/72/4/0             -0.5325         -0.5325           133            62           133            62\nBM_string_strcmp/80/4/0             -0.5523         -0.5523           146            65           146            65\nBM_string_strcmp/88/4/0             -0.5686         -0.5686           159            69           159            69\nBM_string_strcmp/96/4/0             -0.5815         -0.5815           172            72           172            72\nBM_string_strcmp/104/4/0            -0.5931         -0.5931           185            75           185            75\nBM_string_strcmp/112/4/0            -0.6046         -0.6046           197            78           197            78\nBM_string_strcmp/120/4/0            -0.6113         -0.6113           210            82           210            82\nBM_string_strcmp/128/4/0            -0.6186         -0.6186           223            85           223            85\nBM_string_strcmp/136/4/0            -0.6278         -0.6278           237            88           237            88\nBM_string_strcmp/144/4/0            -0.6410         -0.6410           253            91           253            91\nBM_string_strcmp/160/4/0            -0.6506         -0.6506           280            98           280            98\nBM_string_strcmp/176/4/0            -0.6593         -0.6593           304           104           304           104\nBM_string_strcmp/192/4/0            -0.6647         -0.6647           330           111           330           111\nBM_string_strcmp/208/4/0            -0.6741         -0.6741           357           116           357           116\nBM_string_strcmp/224/4/0            -0.6761         -0.6761           381           123           381           123\nBM_string_strcmp/240/4/0            -0.6824         -0.6824           406           129           406           129\nBM_string_strcmp/256/4/0            -0.6846         -0.6846           432           136           432           136\nBM_string_strcmp/1/0/4              +1.0024         +1.0024             7            14             7            14\nBM_string_strcmp/2/0/4              +0.1591         +0.1591            12            14            12            14\nBM_string_strcmp/3/0/4              -0.0015         -0.0015            14            14            14            14\nBM_string_strcmp/4/0/4              -0.0809         -0.0809            15            14            15            14\nBM_string_strcmp/5/0/4              -0.1535         -0.1536            17            14            17            14\nBM_string_strcmp/6/0/4              -0.2111         -0.2111            18            14            18            14\nBM_string_strcmp/7/0/4              -0.2650         -0.2650            19            14            19            14\nBM_string_strcmp/8/0/4              -0.3118         -0.3118            20            14            20            14\nBM_string_strcmp/9/0/4              -0.1741         -0.1740            22            18            22            18\nBM_string_strcmp/10/0/4             -0.2201         -0.2201            23            18            23            18\nBM_string_strcmp/11/0/4             -0.2610         -0.2610            24            18            24            18\nBM_string_strcmp/12/0/4             -0.2987         -0.2987            26            18            26            18\nBM_string_strcmp/13/0/4             -0.5748         -0.5748            42            18            42            18\nBM_string_strcmp/14/0/4             -0.5796         -0.5796            43            18            43            18\nBM_string_strcmp/15/0/4             -0.6167         -0.6167            47            18            47            18\nBM_string_strcmp/16/0/4             -0.6303         -0.6303            49            18            49            18\nBM_string_strcmp/24/0/4             -0.6557         -0.6557            61            21            61            21\nBM_string_strcmp/32/0/4             -0.6612         -0.6612            70            24            70            24\nBM_string_strcmp/40/0/4             -0.6812         -0.6813            82            26            82            26\nBM_string_strcmp/48/0/4             -0.6974         -0.6974            95            29            95            29\nBM_string_strcmp/56/0/4             -0.7151         -0.7151           108            31           108            31\nBM_string_strcmp/64/0/4             -0.5717         -0.5717           121            52           121            52\nBM_string_strcmp/72/0/4             -0.5927         -0.5927           134            54           134            54\nBM_string_strcmp/80/0/4             -0.6004         -0.6004           146            58           146            58\nBM_string_strcmp/88/0/4             -0.6145         -0.6145           159            61           159            61\nBM_string_strcmp/96/0/4             -0.6287         -0.6287           172            64           172            64\nBM_string_strcmp/104/0/4            -0.6351         -0.6351           185            67           185            67\nBM_string_strcmp/112/0/4            -0.6423         -0.6423           197            71           197            71\nBM_string_strcmp/120/0/4            -0.6489         -0.6489           210            74           210            74\nBM_string_strcmp/128/0/4            -0.6578         -0.6578           223            76           223            76\nBM_string_strcmp/136/0/4            -0.6597         -0.6597           236            80           236            80\nBM_string_strcmp/144/0/4            -0.6674         -0.6674           250            83           250            83\nBM_string_strcmp/160/0/4            -0.6751         -0.6751           274            89           274            89\nBM_string_strcmp/176/0/4            -0.6798         -0.6798           300            96           300            96\nBM_string_strcmp/192/0/4            -0.6873         -0.6855           327           102           325           102\nBM_string_strcmp/208/0/4            -0.6903         -0.6903           351           109           351           109\nBM_string_strcmp/224/0/4            -0.6907         -0.6907           376           116           376           116\nBM_string_strcmp/240/0/4            -0.6897         -0.6897           402           125           402           125\nBM_string_strcmp/256/0/4            -0.6937         -0.6937           427           131           427           131\nBM_string_strcmp/1/4/4              +0.0009         +0.0009            14            14            14            14\nBM_string_strcmp/2/4/4              -0.2229         -0.2229            14            11            14            11\nBM_string_strcmp/3/4/4              -0.2256         -0.2256            14            11            14            11\nBM_string_strcmp/4/4/4              -0.2241         -0.2240            14            11            14            11\nBM_string_strcmp/5/4/4              -0.2220         -0.2220            20            15            20            15\nBM_string_strcmp/6/4/4              -0.2267         -0.2267            20            15            20            15\nBM_string_strcmp/7/4/4              -0.2228         -0.2227            20            15            20            15\nBM_string_strcmp/8/4/4              -0.2219         -0.2219            20            15            20            15\nBM_string_strcmp/9/4/4              -0.2220         -0.2220            20            15            20            15\nBM_string_strcmp/10/4/4             -0.2227         -0.2227            20            15            20            15\nBM_string_strcmp/11/4/4             -0.2210         -0.2210            20            15            20            15\nBM_string_strcmp/12/4/4             -0.2224         -0.2224            20            15            20            15\nBM_string_strcmp/13/4/4             -0.1778         -0.1778            21            17            21            17\nBM_string_strcmp/14/4/4             -0.1863         -0.1863            21            17            21            17\nBM_string_strcmp/15/4/4             -0.1780         -0.1780            21            17            21            17\nBM_string_strcmp/16/4/4             +0.0031         +0.0031            21            21            21            21\nBM_string_strcmp/24/4/4             +0.0041         +0.0041            24            24            24            24\nBM_string_strcmp/32/4/4             -0.0001         -0.0000            25            25            25            25\nBM_string_strcmp/40/4/4             +0.0016         +0.0016            26            26            26            26\nBM_string_strcmp/48/4/4             +0.0001         +0.0001            28            28            28            28\nBM_string_strcmp/56/4/4             -0.0001         -0.0001            30            30            30            30\nBM_string_strcmp/64/4/4             -0.0342         -0.0342            32            31            32            31\nBM_string_strcmp/72/4/4             -0.0186         -0.0186            34            34            34            34\nBM_string_strcmp/80/4/4             +0.0004         +0.0004            36            36            36            36\nBM_string_strcmp/88/4/4             -0.0000         -0.0000            39            39            39            39\nBM_string_strcmp/96/4/4             -0.0510         -0.0510            62            59            62            59\nBM_string_strcmp/104/4/4            -0.0502         -0.0502            63            60            63            60\nBM_string_strcmp/112/4/4            -0.0490         -0.0490            65            62            65            62\nBM_string_strcmp/120/4/4            -0.0387         -0.0387            67            65            67            65\nBM_string_strcmp/128/4/4            -0.0426         -0.0426            70            67            70            67\nBM_string_strcmp/136/4/4            -0.0408         -0.0408            73            70            73            70\nBM_string_strcmp/144/4/4            -0.0194         -0.0194            75            74            75            74\nBM_string_strcmp/160/4/4            -0.0035         -0.0035            81            81            81            81\nBM_string_strcmp/176/4/4            -0.0001         -0.0001            86            86            86            86\nBM_string_strcmp/192/4/4            -0.0002         -0.0002            91            91            91            91\nBM_string_strcmp/208/4/4            -0.0335         -0.0335            96            93            96            93\nBM_string_strcmp/224/4/4            -0.0314         -0.0314           101            98           101            98\nBM_string_strcmp/240/4/4            -0.0303         -0.0303           106           103           106           103\nBM_string_strcmp/256/4/4            -0.0288         -0.0288           111           108           111           108\n\n[1] Commit id: f98f2a6780d686ca3d44f8011c7823d42d9b083a\n\nTest: bionic tests and benchmarks on aarch64.\nChange-Id: I75f8948782b8bd459d21f15e75e1d420905f5e5a\n"
    },
    {
      "commit": "4ab56af82df228b63e723b21b92ede82e6f698dd",
      "tree": "b55eb94017754d9da21b908733a762bc34e6038f",
      "parents": [
        "3fd45bba4857fdbf320b6e89d2ae0569d9463bf5"
      ],
      "author": {
        "name": "Adhemerval Zanella",
        "email": "adhemerval.zanella@linaro.org",
        "time": "Fri Jun 22 13:31:34 2018 -0300"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Tue Aug 21 17:48:12 2018 +0000"
      },
      "message": "[AArch64] Optimize memcmp for medium to large sizes\n\nThis patch was originally written by Siddhesh Poyarekar and pushed on\ncortex-strings [1]. This improved memcmp provides a fast path for\ncompares up to 16 bytes and then compares 16 bytes at a time, thus\noptimizing loads from both sources.\n\nComparison on the default bionic and proposed optimized routines\nshows the following performance improvements on A72 (using the\nnew proposed memcmp input data from test_memcmp.xml):\n\nBenchmark                               Time             CPU      Time Old      Time New       CPU Old       CPU New\n--------------------------------------------------------------------------------------------------------------------\nBM_string_memcmp/1/0/0               -0.2074         -0.2074            15            12            15            12\nBM_string_memcmp/2/0/0               -0.5193         -0.5193            31            15            31            15\nBM_string_memcmp/3/0/0               -0.1291         -0.1291            19            17            19            17\nBM_string_memcmp/4/0/0               -0.2889         -0.2889            17            12            17            12\nBM_string_memcmp/5/0/0               -0.2606         -0.2606            15            11            15            11\nBM_string_memcmp/6/0/0               -0.1656         -0.1655            17            14            17            14\nBM_string_memcmp/7/0/0               -0.1721         -0.1721            19            15            19            15\nBM_string_memcmp/8/0/0               -0.3048         -0.3048            15            10            15            10\nBM_string_memcmp/9/0/0               -0.3041         -0.3041            15            10            15            10\nBM_string_memcmp/10/0/0              -0.3040         -0.3040            15            10            15            10\nBM_string_memcmp/11/0/0              -0.3048         -0.3048            15            10            15            10\nBM_string_memcmp/12/0/0              -0.3041         -0.3041            15            10            15            10\nBM_string_memcmp/13/0/0              -0.3040         -0.3040            15            10            15            10\nBM_string_memcmp/14/0/0              -0.3048         -0.3048            15            10            15            10\nBM_string_memcmp/15/0/0              -0.3040         -0.3040            15            10            15            10\nBM_string_memcmp/16/0/0              -0.3041         -0.3041            15            10            15            10\nBM_string_memcmp/24/0/0              -0.1209         -0.1209            15            13            15            13\nBM_string_memcmp/32/0/0              -0.3228         -0.3228            20            13            20            13\nBM_string_memcmp/40/0/0              -0.2937         -0.2937            22            15            22            15\nBM_string_memcmp/48/0/0              -0.3299         -0.3299            23            15            23            15\nBM_string_memcmp/56/0/0              -0.1845         -0.1845            24            20            24            20\nBM_string_memcmp/64/0/0              -0.2247         -0.2247            26            20            26            20\nBM_string_memcmp/72/0/0              -0.1947         -0.1947            27            22            27            22\nBM_string_memcmp/80/0/0              -0.2275         -0.2275            28            22            28            22\nBM_string_memcmp/88/0/0              -0.2360         -0.2360            29            22            29            22\nBM_string_memcmp/96/0/0              -0.2675         -0.2675            31            22            31            22\nBM_string_memcmp/104/0/0             -0.2559         -0.2559            32            24            32            24\nBM_string_memcmp/112/0/0             -0.2787         -0.2786            33            24            33            24\nBM_string_memcmp/120/0/0             -0.2599         -0.2599            34            25            34            25\nBM_string_memcmp/128/0/0             -0.2860         -0.2860            35            25            35            25\nBM_string_memcmp/136/0/0             -0.4708         -0.4708            53            28            53            28\nBM_string_memcmp/144/0/0             -0.4719         -0.4719            53            28            53            28\nBM_string_memcmp/160/0/0             -0.4680         -0.4680            56            30            56            30\nBM_string_memcmp/176/0/0             -0.4645         -0.4645            60            32            60            32\nBM_string_memcmp/192/0/0             -0.4641         -0.4641            63            34            63            34\nBM_string_memcmp/208/0/0             -0.4555         -0.4555            66            36            66            36\nBM_string_memcmp/224/0/0             -0.4558         -0.4557            69            38            69            38\nBM_string_memcmp/240/0/0             -0.4534         -0.4534            72            40            72            40\nBM_string_memcmp/256/0/0             -0.4463         -0.4463            75            42            75            42\nBM_string_memcmp/512/0/0             -0.3077         -0.3077           126            88           126            88\nBM_string_memcmp/1024/0/0            -0.3493         -0.3493           229           149           229           149\nBM_string_memcmp/8192/0/0            -0.4173         -0.4173          1729          1007          1729          1007\nBM_string_memcmp/16384/0/0           -0.3855         -0.3855          3377          2076          3377          2075\nBM_string_memcmp/32768/0/0           -0.2968         -0.2968          6847          4815          6847          4814\nBM_string_memcmp/65536/0/0           -0.2496         -0.2496         13715         10292         13714         10291\nBM_string_memcmp/131072/0/0          -0.2676         -0.2676         27354         20033         27351         20031\nBM_string_memcmp/262144/0/0          -0.2319         -0.2319         54604         41943         54598         41939\nBM_string_memcmp/524288/0/0          -0.2359         -0.2359        109225         83460        109212         83449\nBM_string_memcmp/1048576/0/0         -0.0439         -0.0439        423367        404791        423251        404686\nBM_string_memcmp/2097152/0/0         -0.0023         -0.0024        762470        760701        761956        760122\nBM_string_memcmp/512/4/4             -0.2853         -0.2853           125            89           125            89\nBM_string_memcmp/1024/4/4            -0.3377         -0.3377           228           151           227           151\nBM_string_memcmp/8192/4/4            -0.4083         -0.4083          1706          1009          1706          1009\nBM_string_memcmp/16384/4/4           -0.3853         -0.3853          3376          2075          3376          2075\nBM_string_memcmp/32768/4/4           -0.2974         -0.2974          6846          4810          6845          4810\nBM_string_memcmp/65536/4/4           -0.2485         -0.2485         13619         10235         13618         10234\nBM_string_memcmp/131072/4/4          -0.2387         -0.2387         27056         20597         27054         20595\nBM_string_memcmp/512/4/0             -0.2898         -0.2898           123            88           123            88\nBM_string_memcmp/1024/4/0            -0.3401         -0.3401           225           149           225           149\nBM_string_memcmp/8192/4/0            -0.4167         -0.4167          1727          1007          1727          1007\nBM_string_memcmp/16384/4/0           -0.3820         -0.3820          3384          2092          3384          2091\nBM_string_memcmp/32768/4/0           -0.2535         -0.2535          6886          5141          6886          5140\nBM_string_memcmp/65536/4/0           -0.1897         -0.1897         13850         11223         13849         11223\nBM_string_memcmp/131072/4/0          -0.1972         -0.1972         27536         22106         27533         22104\nBM_string_memcmp/512/0/4             -0.2854         -0.2854           125            89           125            89\nBM_string_memcmp/1024/0/4            -0.3332         -0.3333           226           151           226           151\nBM_string_memcmp/8192/0/4            -0.4199         -0.4199          1740          1009          1740          1009\nBM_string_memcmp/16384/0/4           -0.3811         -0.3811          3383          2094          3383          2094\nBM_string_memcmp/32768/0/4           -0.2409         -0.2409          6900          5238          6899          5237\nBM_string_memcmp/65536/0/4           -0.1920         -0.1920         13922         11250         13921         11248\nBM_string_memcmp/131072/0/4          -0.2029         -0.2029         27699         22079         27697         22077\n\nI see similar improvements on A54 as well:\n\nBenchmark                               Time             CPU      Time Old      Time New       CPU Old       CPU New\n--------------------------------------------------------------------------------------------------------------------\nBM_string_memcmp/1/0/0               -0.2074         -0.2074            15            12            15            12\nBM_string_memcmp/2/0/0               -0.5193         -0.5193            31            15            31            15\nBM_string_memcmp/3/0/0               -0.1291         -0.1291            19            17            19            17\nBM_string_memcmp/4/0/0               -0.2889         -0.2889            17            12            17            12\nBM_string_memcmp/5/0/0               -0.2606         -0.2606            15            11            15            11\nBM_string_memcmp/6/0/0               -0.1656         -0.1655            17            14            17            14\nBM_string_memcmp/7/0/0               -0.1721         -0.1721            19            15            19            15\nBM_string_memcmp/8/0/0               -0.3048         -0.3048            15            10            15            10\nBM_string_memcmp/9/0/0               -0.3041         -0.3041            15            10            15            10\nBM_string_memcmp/10/0/0              -0.3040         -0.3040            15            10            15            10\nBM_string_memcmp/11/0/0              -0.3048         -0.3048            15            10            15            10\nBM_string_memcmp/12/0/0              -0.3041         -0.3041            15            10            15            10\nBM_string_memcmp/13/0/0              -0.3040         -0.3040            15            10            15            10\nBM_string_memcmp/14/0/0              -0.3048         -0.3048            15            10            15            10\nBM_string_memcmp/15/0/0              -0.3040         -0.3040            15            10            15            10\nBM_string_memcmp/16/0/0              -0.3041         -0.3041            15            10            15            10\nBM_string_memcmp/24/0/0              -0.1209         -0.1209            15            13            15            13\nBM_string_memcmp/32/0/0              -0.3228         -0.3228            20            13            20            13\nBM_string_memcmp/40/0/0              -0.2937         -0.2937            22            15            22            15\nBM_string_memcmp/48/0/0              -0.3299         -0.3299            23            15            23            15\nBM_string_memcmp/56/0/0              -0.1845         -0.1845            24            20            24            20\nBM_string_memcmp/64/0/0              -0.2247         -0.2247            26            20            26            20\nBM_string_memcmp/72/0/0              -0.1947         -0.1947            27            22            27            22\nBM_string_memcmp/80/0/0              -0.2275         -0.2275            28            22            28            22\nBM_string_memcmp/88/0/0              -0.2360         -0.2360            29            22            29            22\nBM_string_memcmp/96/0/0              -0.2675         -0.2675            31            22            31            22\nBM_string_memcmp/104/0/0             -0.2559         -0.2559            32            24            32            24\nBM_string_memcmp/112/0/0             -0.2787         -0.2786            33            24            33            24\nBM_string_memcmp/120/0/0             -0.2599         -0.2599            34            25            34            25\nBM_string_memcmp/128/0/0             -0.2860         -0.2860            35            25            35            25\nBM_string_memcmp/136/0/0             -0.4708         -0.4708            53            28            53            28\nBM_string_memcmp/144/0/0             -0.4719         -0.4719            53            28            53            28\nBM_string_memcmp/160/0/0             -0.4680         -0.4680            56            30            56            30\nBM_string_memcmp/176/0/0             -0.4645         -0.4645            60            32            60            32\nBM_string_memcmp/192/0/0             -0.4641         -0.4641            63            34            63            34\nBM_string_memcmp/208/0/0             -0.4555         -0.4555            66            36            66            36\nBM_string_memcmp/224/0/0             -0.4558         -0.4557            69            38            69            38\nBM_string_memcmp/240/0/0             -0.4534         -0.4534            72            40            72            40\nBM_string_memcmp/256/0/0             -0.4463         -0.4463            75            42            75            42\nBM_string_memcmp/512/0/0             -0.3077         -0.3077           126            88           126            88\nBM_string_memcmp/1024/0/0            -0.3493         -0.3493           229           149           229           149\nBM_string_memcmp/8192/0/0            -0.4173         -0.4173          1729          1007          1729          1007\nBM_string_memcmp/16384/0/0           -0.3855         -0.3855          3377          2076          3377          2075\nBM_string_memcmp/32768/0/0           -0.2968         -0.2968          6847          4815          6847          4814\nBM_string_memcmp/65536/0/0           -0.2496         -0.2496         13715         10292         13714         10291\nBM_string_memcmp/131072/0/0          -0.2676         -0.2676         27354         20033         27351         20031\nBM_string_memcmp/262144/0/0          -0.2319         -0.2319         54604         41943         54598         41939\nBM_string_memcmp/524288/0/0          -0.2359         -0.2359        109225         83460        109212         83449\nBM_string_memcmp/1048576/0/0         -0.0439         -0.0439        423367        404791        423251        404686\nBM_string_memcmp/2097152/0/0         -0.0023         -0.0024        762470        760701        761956        760122\nBM_string_memcmp/512/4/4             -0.2853         -0.2853           125            89           125            89\nBM_string_memcmp/1024/4/4            -0.3377         -0.3377           228           151           227           151\nBM_string_memcmp/8192/4/4            -0.4083         -0.4083          1706          1009          1706          1009\nBM_string_memcmp/16384/4/4           -0.3853         -0.3853          3376          2075          3376          2075\nBM_string_memcmp/32768/4/4           -0.2974         -0.2974          6846          4810          6845          4810\nBM_string_memcmp/65536/4/4           -0.2485         -0.2485         13619         10235         13618         10234\nBM_string_memcmp/131072/4/4          -0.2387         -0.2387         27056         20597         27054         20595\nBM_string_memcmp/512/4/0             -0.2898         -0.2898           123            88           123            88\nBM_string_memcmp/1024/4/0            -0.3401         -0.3401           225           149           225           149\nBM_string_memcmp/8192/4/0            -0.4167         -0.4167          1727          1007          1727          1007\nBM_string_memcmp/16384/4/0           -0.3820         -0.3820          3384          2092          3384          2091\nBM_string_memcmp/32768/4/0           -0.2535         -0.2535          6886          5141          6886          5140\nBM_string_memcmp/65536/4/0           -0.1897         -0.1897         13850         11223         13849         11223\nBM_string_memcmp/131072/4/0          -0.1972         -0.1972         27536         22106         27533         22104\nBM_string_memcmp/512/0/4             -0.2854         -0.2854           125            89           125            89\nBM_string_memcmp/1024/0/4            -0.3332         -0.3333           226           151           226           151\nBM_string_memcmp/8192/0/4            -0.4199         -0.4199          1740          1009          1740          1009\nBM_string_memcmp/16384/0/4           -0.3811         -0.3811          3383          2094          3383          2094\nBM_string_memcmp/32768/0/4           -0.2409         -0.2409          6900          5238          6899          5237\nBM_string_memcmp/65536/0/4           -0.1920         -0.1920         13922         11250         13921         11248\nBM_string_memcmp/131072/0/4          -0.2029         -0.2029         27699         22079         27697         22077\n\n[1] Commit id: f77e4c932b4fd65177b57dd5e220bd17fb4037d6\n\nTest: bionic tests and benchmarks on aarch64.\nChange-Id: I2791e2b20d1c0ad429e8e5a41d3e47b1ac02c921\n"
    },
    {
      "commit": "8a0f0ed5e7c2bc5665583db646876808cc3c2bc7",
      "tree": "e37fb7e4c3706931a9bfde2d865b4d90589610f6",
      "parents": [
        "42596b7bf0652e44edff0370f75e1d5387c5cc7b"
      ],
      "author": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Thu May 24 20:39:18 2018 -0700"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Mon Jun 11 18:12:45 2018 +0000"
      },
      "message": "Make memcpy memmove\n\nBug: http://b/63992911\nTest: Change BoardConfig.mk and compile for each variant\nChange-Id: Ia0cc68d8e90e3316ddb2e9ff1555a009b6a0c5be\n"
    },
    {
      "commit": "ece43e14c959752ced0c7ebf3ba38b7917ba2ddc",
      "tree": "0418e94e8a394279d6fd9f0f6408ebccc035c297",
      "parents": [
        "8aa6d67f2d48aa01f099a85adc432097a13172f1"
      ],
      "author": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Sat May 26 13:07:43 2018 -0700"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Wed May 30 11:09:19 2018 -0700"
      },
      "message": "Use cortex-a53/bionic/memmove.S by default for arm64\n\ncortex-a53/bionic/memmove.S looks like a more optimized version. It\nshould be used in most cases. It delegates small (\u003c\u003d 96 bytes) moves\nto memcpy.\n\nThe only exception is denver64. It is using its own memcpy, which\ndoesn\u0027t allow overlap for \u003c 96 bytes copies. Only for this variant we\nneed generic/bionic/memmove.S.\n\nBenchmark result looks pretty close through (on marlin)\n\nBefore: using generic/bionic/memmove.S\n\n-------------------------------------------------------------------\nBenchmark                            Time           CPU Iterations\n-------------------------------------------------------------------\nBM_string_memcpy/8/0/0               6 ns          6 ns  108872005   1.15787GB/s\nBM_string_memcpy/64/0/0              7 ns          7 ns  107387438   9.14365GB/s\nBM_string_memcpy/512/0/0            21 ns         20 ns   34165353   23.2734GB/s\nBM_string_memcpy/1024/0/0           40 ns         39 ns   17766657   24.2346GB/s\nBM_string_memcpy/8192/0/0          311 ns        310 ns    2259904   24.6339GB/s\nBM_string_memcpy/16384/0/0         616 ns        613 ns    1143027   24.8852GB/s\nBM_string_memcpy/32768/0/0        1322 ns       1316 ns     530799   23.1835GB/s\nBM_string_memcpy/65536/0/0        2672 ns       2661 ns     229638    22.937GB/s\nBM_string_memcpy/131072/0/0       5379 ns       5357 ns     128316    22.788GB/s\n\nAfter: using cortex-a53/bionic/memmove.S\n\n-------------------------------------------------------------------\nBenchmark                            Time           CPU Iterations\n-------------------------------------------------------------------\nBM_string_memcpy/8/0/0               6 ns          6 ns  116610749   1.24646GB/s\nBM_string_memcpy/64/0/0              6 ns          6 ns  115634093   9.84708GB/s\nBM_string_memcpy/512/0/0            21 ns         21 ns   34167322   22.8938GB/s\nBM_string_memcpy/1024/0/0           39 ns         39 ns   17859445   24.3312GB/s\nBM_string_memcpy/8192/0/0          311 ns        310 ns    2260192   24.6325GB/s\nBM_string_memcpy/16384/0/0         610 ns        608 ns    1151889   25.0987GB/s\nBM_string_memcpy/32768/0/0        1488 ns       1482 ns     532508   20.5988GB/s\nBM_string_memcpy/65536/0/0        2421 ns       2411 ns     290502   25.3146GB/s\nBM_string_memcpy/131072/0/0       5278 ns       5256 ns     132710   23.2234GB/s\n\nTest: Build and benchmark on marlin\nBug: http://b/63992911\nChange-Id: Id85961aca18ba841bcbcfe0d8b162843eab30584\n"
    },
    {
      "commit": "79249b0897016cdcd1344f4c5e8876fbf433de3e",
      "tree": "6b7a479b3a82507a0070777d1be3e6fa73b78cc3",
      "parents": [
        "6f9c35ded294ca7b0b8f9042f705cbfca1ec8518"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 07 08:19:20 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 07 09:41:48 2017 -0800"
      },
      "message": "bionic: add vdso clock_getres\n\nclock_getres() should not be a hot call, nevertheless it is\n~6-7 times faster for supported clock ids if it uses\n__vdso_clock_getres if available.  There is a 3% performance\npenalty for unsupported clock ids via __vdso_clock_getres with\nrespect to a direct syscall.\n\n[TL;DR]\n\nw/vdso32 kernel patches, locked cores to MAX, little cores only.\n\nBEFORE:\n\nhikey960 vdso (aarch64):\n\n----------------------------------------------------------------------\nBenchmark                               Time           CPU Iterations\n----------------------------------------------------------------------\nBM_time_clock_getres                  126 ns        126 ns    5577874\nBM_time_clock_getres_syscall          127 ns        127 ns    5505016\nBM_time_clock_getres_REALTIME         126 ns        126 ns    5574682\nBM_time_clock_getres_BOOTTIME         126 ns        126 ns    5575237\nBM_time_clock_getres_TAI              126 ns        126 ns    5576810\nBM_time_clock_getres_unsupported      128 ns        128 ns    5480189\n\nhikey960 vdso32 (aarch32):\n\n----------------------------------------------------------------------\nBenchmark                               Time           CPU Iterations\n----------------------------------------------------------------------\nBM_time_clock_getres                  199 ns        199 ns    3508708\nBM_time_clock_getres_syscall          220 ns        220 ns    3184676\nBM_time_clock_getres_REALTIME         199 ns        199 ns    3509697\nBM_time_clock_getres_BOOTTIME         199 ns        199 ns    3513551\nBM_time_clock_getres_TAI              200 ns        199 ns    3512412\nBM_time_clock_getres_unsupported      196 ns        196 ns    3575609\n\nx86_64 (glibc):\n\n---------------------------------------------------------------------\nBenchmark                              Time           CPU Iterations\n---------------------------------------------------------------------\nBM_time_clock_getres                 252 ns        252 ns    2370263\nBM_time_clock_getres_syscall         215 ns        215 ns    3287497\nBM_time_clock_getres_REALTIME        214 ns        214 ns    3294228\nBM_time_clock_getres_BOOTTIME        213 ns        213 ns    3277519\nBM_time_clock_getres_TAI             213 ns        213 ns    3294991\nBM_time_clock_getres_unsupported     206 ns        206 ns    3450654\n\nimx7d_pico IOT nyc (w/arm,cpu-registers-not-fw-configured) (armv7a):\n(Virtual Timers)\n\nBenchmark                           Time(ns)    CPU(ns) Iterations\n------------------------------------------------------------------\nBM_time_clock_getres                      16        345    2000000\nBM_time_clock_getres_syscall              16        339    2121212\nBM_time_clock_getres_REALTIME             17        350    2058824\nBM_time_clock_getres_BOOTTIME             17        345    2000000\nBM_time_clock_getres_TAI                  16        350    2000000\nBM_time_clock_getres_unsupported          13        284    2500000\n\nAFTER:\n\nhikey960 vdso (aarch64):\n\n---------------------------------------------------------------------\nBenchmark                              Time           CPU Iterations\n---------------------------------------------------------------------\nBM_time_clock_getres                  18 ns         18 ns   37880389\nBM_time_clock_getres_syscall         127 ns        127 ns    5520029\nBM_time_clock_getres_REALTIME         18 ns         18 ns   37879962\nBM_time_clock_getres_BOOTTIME         19 ns         18 ns   37878361\nBM_time_clock_getres_TAI             131 ns        131 ns    5368484\nBM_time_clock_getres_unsupported      97 ns         97 ns    7182864\n\nhikey960 vdso32 (aarch32):\n\n---------------------------------------------------------------------\nBenchmark                              Time           CPU Iterations\n---------------------------------------------------------------------\nBM_time_clock_getres                  36 ns         36 ns   19205240\nBM_time_clock_getres_syscall         212 ns        212 ns    3297100\nBM_time_clock_getres_REALTIME         36 ns         36 ns   19219109\nBM_time_clock_getres_BOOTTIME         36 ns         36 ns   19222490\nBM_time_clock_getres_TAI             206 ns        206 ns    3402868\nBM_time_clock_getres_unsupported     159 ns        159 ns    4409492\n\nimx7d_pico IOT nyc (wo/arm,cpu-registers-not-fw-configured) (armv7a):\n(Physical Timers)\n\nBenchmark                           Time(ns)    CPU(ns) Iterations\n------------------------------------------------------------------\nBM_time_clock_getres                       2         48   14000000\nBM_time_clock_getres_syscall              14        335    2058824\nBM_time_clock_getres_REALTIME              2         49   14583333\nBM_time_clock_getres_BOOTTIME              2         48   14000000\nBM_time_clock_getres_TAI                  14        350    2058824\nBM_time_clock_getres_unsupported           8        203    3500000\n\nTest: taskset F \\\n        /data/benchmarktest{64}/bionic-benchmarks/bionic-benchmarks \\\n        --bionic_xml\u003dvdso.xml --benchmark_filter\u003dBM_time_clock_getres*\nBug: 63737556\nChange-Id: I80c0a5106625d76720287f715fcf145d2aad1705\n"
    },
    {
      "commit": "ed9bfc46162414baa7e2db037f4466ff010e2743",
      "tree": "ba2a6ab697e79c1cff84c748a5642eab3f001ea1",
      "parents": [
        "232541aa02e22ab8fafcdd503c74aae22fa09699"
      ],
      "author": {
        "name": "Sebastian Pop",
        "email": "s.pop@samsung.com",
        "time": "Mon Jun 19 12:39:02 2017 -0500"
      },
      "committer": {
        "name": "Jake Weinstein",
        "email": "jake@aospa.co",
        "time": "Fri Nov 03 13:21:07 2017 -0400"
      },
      "message": "[AArch64] Optimized memcmp\n\nPatch written by Wilco Dijkstra submitted for review to newlib:\nhttps://sourceware.org/ml/newlib/2017/msg00524.html\n\nThis is an optimized memcmp for AArch64.  This is a complete rewrite\nusing a different algorithm.  The previous version split into cases\nwhere both inputs were aligned, the inputs were mutually aligned and\nunaligned using a byte loop.  The new version combines all these cases,\nwhile small inputs of less than 8 bytes are handled separately.\n\nThis allows the main code to be sped up using unaligned loads since\nthere are now at least 8 bytes to be compared.  After the first 8 bytes,\nalign the first input.  This ensures each iteration does at most one\nunaligned access and mutually aligned inputs behave as aligned.\nAfter the main loop, process the last 8 bytes using unaligned accesses.\n\nThis improves performance of (mutually) aligned cases by 25% and\nunaligned by \u003e500% (yes \u003e6 times faster) on large inputs.\n\n2017-06-28  Wilco Dijkstra  \u003cwdijkstr@arm.com\u003e\n\n        * bionic/libc/arch-arm64/generic/bionic/memcmp.S (memcmp):\n                Rewrite of optimized memcmp.\n\nGLIBC benchtests/bench-memcmp.c performance comparison for Cortex-A53:\n\nLength    1, alignment  1/ 1:        153%\nLength    1, alignment  1/ 1:        119%\nLength    1, alignment  1/ 1:        154%\nLength    2, alignment  2/ 2:        121%\nLength    2, alignment  2/ 2:        140%\nLength    2, alignment  2/ 2:        121%\nLength    3, alignment  3/ 3:        105%\nLength    3, alignment  3/ 3:        105%\nLength    3, alignment  3/ 3:        105%\nLength    4, alignment  4/ 4:        155%\nLength    4, alignment  4/ 4:        154%\nLength    4, alignment  4/ 4:        161%\nLength    5, alignment  5/ 5:        173%\nLength    5, alignment  5/ 5:        173%\nLength    5, alignment  5/ 5:        173%\nLength    6, alignment  6/ 6:        145%\nLength    6, alignment  6/ 6:        145%\nLength    6, alignment  6/ 6:        145%\nLength    7, alignment  7/ 7:        125%\nLength    7, alignment  7/ 7:        125%\nLength    7, alignment  7/ 7:        125%\nLength    8, alignment  8/ 8:        111%\nLength    8, alignment  8/ 8:        130%\nLength    8, alignment  8/ 8:        124%\nLength    9, alignment  9/ 9:        160%\nLength    9, alignment  9/ 9:        160%\nLength    9, alignment  9/ 9:        150%\nLength   10, alignment 10/10:        170%\nLength   10, alignment 10/10:        137%\nLength   10, alignment 10/10:        150%\nLength   11, alignment 11/11:        160%\nLength   11, alignment 11/11:        160%\nLength   11, alignment 11/11:        160%\nLength   12, alignment 12/12:        146%\nLength   12, alignment 12/12:        168%\nLength   12, alignment 12/12:        156%\nLength   13, alignment 13/13:        167%\nLength   13, alignment 13/13:        167%\nLength   13, alignment 13/13:        173%\nLength   14, alignment 14/14:        167%\nLength   14, alignment 14/14:        168%\nLength   14, alignment 14/14:        168%\nLength   15, alignment 15/15:        168%\nLength   15, alignment 15/15:        173%\nLength   15, alignment 15/15:        173%\nLength    1, alignment  0/ 0:        134%\nLength    1, alignment  0/ 0:        127%\nLength    1, alignment  0/ 0:        119%\nLength    2, alignment  0/ 0:        94%\nLength    2, alignment  0/ 0:        94%\nLength    2, alignment  0/ 0:        106%\nLength    3, alignment  0/ 0:        82%\nLength    3, alignment  0/ 0:        87%\nLength    3, alignment  0/ 0:        82%\nLength    4, alignment  0/ 0:        115%\nLength    4, alignment  0/ 0:        115%\nLength    4, alignment  0/ 0:        122%\nLength    5, alignment  0/ 0:        127%\nLength    5, alignment  0/ 0:        119%\nLength    5, alignment  0/ 0:        127%\nLength    6, alignment  0/ 0:        103%\nLength    6, alignment  0/ 0:        100%\nLength    6, alignment  0/ 0:        100%\nLength    7, alignment  0/ 0:        82%\nLength    7, alignment  0/ 0:        91%\nLength    7, alignment  0/ 0:        87%\nLength    8, alignment  0/ 0:        111%\nLength    8, alignment  0/ 0:        124%\nLength    8, alignment  0/ 0:        124%\nLength    9, alignment  0/ 0:        136%\nLength    9, alignment  0/ 0:        136%\nLength    9, alignment  0/ 0:        136%\nLength   10, alignment  0/ 0:        136%\nLength   10, alignment  0/ 0:        135%\nLength   10, alignment  0/ 0:        136%\nLength   11, alignment  0/ 0:        136%\nLength   11, alignment  0/ 0:        136%\nLength   11, alignment  0/ 0:        135%\nLength   12, alignment  0/ 0:        136%\nLength   12, alignment  0/ 0:        136%\nLength   12, alignment  0/ 0:        136%\nLength   13, alignment  0/ 0:        135%\nLength   13, alignment  0/ 0:        136%\nLength   13, alignment  0/ 0:        136%\nLength   14, alignment  0/ 0:        136%\nLength   14, alignment  0/ 0:        136%\nLength   14, alignment  0/ 0:        136%\nLength   15, alignment  0/ 0:        136%\nLength   15, alignment  0/ 0:        136%\nLength   15, alignment  0/ 0:        136%\nLength    4, alignment  0/ 0:        115%\nLength    4, alignment  0/ 0:        115%\nLength    4, alignment  0/ 0:        115%\nLength   32, alignment  0/ 0:        127%\nLength   32, alignment  7/ 2:        395%\nLength   32, alignment  0/ 0:        127%\nLength   32, alignment  0/ 0:        127%\nLength    8, alignment  0/ 0:        111%\nLength    8, alignment  0/ 0:        124%\nLength    8, alignment  0/ 0:        124%\nLength   64, alignment  0/ 0:        128%\nLength   64, alignment  6/ 4:        475%\nLength   64, alignment  0/ 0:        131%\nLength   64, alignment  0/ 0:        134%\nLength   16, alignment  0/ 0:        128%\nLength   16, alignment  0/ 0:        119%\nLength   16, alignment  0/ 0:        128%\nLength  128, alignment  0/ 0:        129%\nLength  128, alignment  5/ 6:        475%\nLength  128, alignment  0/ 0:        130%\nLength  128, alignment  0/ 0:        129%\nLength   32, alignment  0/ 0:        126%\nLength   32, alignment  0/ 0:        126%\nLength   32, alignment  0/ 0:        126%\nLength  256, alignment  0/ 0:        127%\nLength  256, alignment  4/ 8:        545%\nLength  256, alignment  0/ 0:        126%\nLength  256, alignment  0/ 0:        128%\nLength   64, alignment  0/ 0:        171%\nLength   64, alignment  0/ 0:        171%\nLength   64, alignment  0/ 0:        174%\nLength  512, alignment  0/ 0:        126%\nLength  512, alignment  3/10:        585%\nLength  512, alignment  0/ 0:        126%\nLength  512, alignment  0/ 0:        127%\nLength  128, alignment  0/ 0:        129%\nLength  128, alignment  0/ 0:        128%\nLength  128, alignment  0/ 0:        129%\nLength 1024, alignment  0/ 0:        125%\nLength 1024, alignment  2/12:        611%\nLength 1024, alignment  0/ 0:        126%\nLength 1024, alignment  0/ 0:        126%\nLength  256, alignment  0/ 0:        128%\nLength  256, alignment  0/ 0:        127%\nLength  256, alignment  0/ 0:        128%\nLength 2048, alignment  0/ 0:        125%\nLength 2048, alignment  1/14:        625%\nLength 2048, alignment  0/ 0:        125%\nLength 2048, alignment  0/ 0:        125%\nLength  512, alignment  0/ 0:        126%\nLength  512, alignment  0/ 0:        127%\nLength  512, alignment  0/ 0:        127%\nLength 4096, alignment  0/ 0:        125%\nLength 4096, alignment  0/16:        125%\nLength 4096, alignment  0/ 0:        125%\nLength 4096, alignment  0/ 0:        125%\nLength 1024, alignment  0/ 0:        126%\nLength 1024, alignment  0/ 0:        126%\nLength 1024, alignment  0/ 0:        126%\nLength 8192, alignment  0/ 0:        125%\nLength 8192, alignment 63/18:        636%\nLength 8192, alignment  0/ 0:        125%\nLength 8192, alignment  0/ 0:        125%\nLength   16, alignment  1/ 2:        317%\nLength   16, alignment  1/ 2:        317%\nLength   16, alignment  1/ 2:        317%\nLength   32, alignment  2/ 4:        395%\nLength   32, alignment  2/ 4:        395%\nLength   32, alignment  2/ 4:        398%\nLength   64, alignment  3/ 6:        475%\nLength   64, alignment  3/ 6:        475%\nLength   64, alignment  3/ 6:        477%\nLength  128, alignment  4/ 8:        479%\nLength  128, alignment  4/ 8:        479%\nLength  128, alignment  4/ 8:        479%\nLength  256, alignment  5/10:        543%\nLength  256, alignment  5/10:        539%\nLength  256, alignment  5/10:        543%\nLength  512, alignment  6/12:        585%\nLength  512, alignment  6/12:        585%\nLength  512, alignment  6/12:        585%\nLength 1024, alignment  7/14:        611%\nLength 1024, alignment  7/14:        611%\nLength 1024, alignment  7/14:        611%\n\nThe performance measured on the bionic-benchmarks on a hikey\nboard with a new benchmark for unaligned memcmp submitted for\nreview at https://android-review.googlesource.com/414860\n\nThe base is with the libc from /system/lib64. The bionic libc\nwith this patch is in /data.\n\nhikey:/data # export LD_LIBRARY_PATH\u003d/system/lib64\nhikey:/data # ./bionic-benchmarks --benchmark_filter\u003dBM_string_memcmp\nRun on (8 X 2.4 MHz CPU s)\nBenchmark                                Time           CPU Iterations\n----------------------------------------------------------------------\nBM_string_memcmp/8                      30 ns         30 ns   22955680    251.07MB/s\nBM_string_memcmp/64                     57 ns         57 ns   12349184   1076.99MB/s\nBM_string_memcmp/512                   305 ns        305 ns    2297163   1.56496GB/s\nBM_string_memcmp/1024                  571 ns        571 ns    1225211   1.66912GB/s\nBM_string_memcmp/8k                   4307 ns       4306 ns     162562   1.77177GB/s\nBM_string_memcmp/16k                  8676 ns       8675 ns      80676   1.75887GB/s\nBM_string_memcmp/32k                 19233 ns      19230 ns      36394   1.58695GB/s\nBM_string_memcmp/64k                 36986 ns      36984 ns      18952   1.65029GB/s\nBM_string_memcmp_aligned/8             199 ns        199 ns    3519166   38.3336MB/s\nBM_string_memcmp_aligned/64            386 ns        386 ns    1810734   158.073MB/s\nBM_string_memcmp_aligned/512          1735 ns       1734 ns     403981   281.525MB/s\nBM_string_memcmp_aligned/1024         3200 ns       3200 ns     218838   305.151MB/s\nBM_string_memcmp_aligned/8k          25084 ns      25080 ns      28180   311.507MB/s\nBM_string_memcmp_aligned/16k         51730 ns      51729 ns      13521   302.057MB/s\nBM_string_memcmp_aligned/32k        103228 ns     103228 ns       6782   302.727MB/s\nBM_string_memcmp_aligned/64k        207117 ns     207087 ns       3450   301.806MB/s\nBM_string_memcmp_unaligned/8           339 ns        339 ns    2070998   22.5302MB/s\nBM_string_memcmp_unaligned/64         1392 ns       1392 ns     502796   43.8454MB/s\nBM_string_memcmp_unaligned/512        9194 ns       9194 ns      76133   53.1104MB/s\nBM_string_memcmp_unaligned/1024      18325 ns      18323 ns      38206   53.2963MB/s\nBM_string_memcmp_unaligned/8k       148579 ns     148574 ns       4713   52.5831MB/s\nBM_string_memcmp_unaligned/16k      298169 ns     298120 ns       2344   52.4118MB/s\nBM_string_memcmp_unaligned/32k      598813 ns     598797 ns       1085    52.188MB/s\nBM_string_memcmp_unaligned/64k     1196079 ns    1196083 ns        540   52.2539MB/s\n\nhikey:/data # export LD_LIBRARY_PATH\u003d/data\nhikey:/data # ./bionic-benchmarks --benchmark_filter\u003dBM_string_memcmp\n\nBenchmark                                Time           CPU Iterations\n----------------------------------------------------------------------\nBM_string_memcmp/8                      27 ns         27 ns   26198166   286.069MB/s\nBM_string_memcmp/64                     45 ns         45 ns   15553753   1.32443GB/s\nBM_string_memcmp/512                   242 ns        242 ns    2892423   1.97049GB/s\nBM_string_memcmp/1024                  455 ns        455 ns    1537290   2.09436GB/s\nBM_string_memcmp/8k                   3446 ns       3446 ns     203295   2.21392GB/s\nBM_string_memcmp/16k                  7567 ns       7567 ns      92582   2.01657GB/s\nBM_string_memcmp/32k                 16081 ns      16081 ns      43524    1.8977GB/s\nBM_string_memcmp/64k                 31029 ns      31028 ns      22565   1.96712GB/s\nBM_string_memcmp_aligned/8             184 ns        184 ns    3800912   41.3654MB/s\nBM_string_memcmp_aligned/64            287 ns        287 ns    2438835    212.65MB/s\nBM_string_memcmp_aligned/512          1370 ns       1370 ns     511014   356.498MB/s\nBM_string_memcmp_aligned/1024         2543 ns       2543 ns     275253   384.006MB/s\nBM_string_memcmp_aligned/8k          20413 ns      20411 ns      34306   382.764MB/s\nBM_string_memcmp_aligned/16k         42908 ns      42907 ns      16132   364.158MB/s\nBM_string_memcmp_aligned/32k         88902 ns      88886 ns       8087   351.574MB/s\nBM_string_memcmp_aligned/64k        173016 ns     173007 ns       4122   361.258MB/s\nBM_string_memcmp_unaligned/8           212 ns        212 ns    3304163   36.0243MB/s\nBM_string_memcmp_unaligned/64          361 ns        361 ns    1941597   169.279MB/s\nBM_string_memcmp_unaligned/512        1754 ns       1753 ns     399210   278.492MB/s\nBM_string_memcmp_unaligned/1024       3308 ns       3308 ns     211622   295.243MB/s\nBM_string_memcmp_unaligned/8k        27227 ns      27225 ns      25637   286.964MB/s\nBM_string_memcmp_unaligned/16k       55877 ns      55874 ns      12455   279.645MB/s\nBM_string_memcmp_unaligned/32k      112397 ns     112366 ns       6200    278.11MB/s\nBM_string_memcmp_unaligned/64k      223493 ns     223482 ns       3127   279.665MB/s\n\nTest: bionic-benchmarks --benchmark_filter\u003d\u0027BM_string_memcmp*\u0027\n\nChange-Id: Ia16a8cf69c68b8c0533f025f03b925c9883bb708\n"
    },
    {
      "commit": "fa432524a66e5797874ef50e4ede95ded4cee199",
      "tree": "63ae5385f8966b7dd107ed3e73b1d1043b8cb708",
      "parents": [
        "ae7483db2a6a93c0cb0c0eebc26f64b23168c6d3"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Oct 25 13:07:45 2017 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Fri Oct 27 10:01:46 2017 +0200"
      },
      "message": "Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols\n\nTo make it easier for Native Bridge implementations\nto override these symbols.\n\nBug: http://b/67993967\nTest: make\nChange-Id: I4c53e53af494bca365dd2b3305ab0ccc2b23ba44\n"
    },
    {
      "commit": "d4ca231ae2891e5c9eccb6e9a2e6af7fabcfc2a5",
      "tree": "4ffbf1b6c0d0acb3df88b1ce02d574eeaead3f0a",
      "parents": [
        "36f7b8b7891f0af56eb61e7d32cc8cedb5ded8de"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 11 22:27:45 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 12 13:19:51 2017 -0700"
      },
      "message": "Unified sysroot: kill arch-specific include dirs.\n\n\u003cmachine/asm.h\u003e was internal use only.\n\n\u003cmachine/fenv.h\u003e is quite large, but can live in \u003cbits/...\u003e.\n\n\u003cmachine/regdef.h\u003e is trivially replaced by saying $x instead of x in\nour assembler.\n\n\u003cmachine/setjmp.h\u003e is trivially inlined into \u003csetjmp.h\u003e.\n\n\u003csgidefs.h\u003e is unused.\n\nBug: N/A\nTest: builds\nChange-Id: Id05dbab43a2f9537486efb8f27a5ef167b055815\n"
    },
    {
      "commit": "8465e968a8a92c77d57360837a9e725972a745e6",
      "tree": "f8bd05e55680224a407ac55afaef58b668868b05",
      "parents": [
        "96510935697c2934427f0c14d0b153244e8cfb2b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 27 16:33:35 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 29 05:31:35 2017 +0000"
      },
      "message": "Add \u003csys/random.h\u003e.\n\niOS 10 has \u003csys/random.h\u003e with getentropy, glibc \u003e\u003d 2.25 has\n\u003csys/random.h\u003e with getentropy and getrandom. (glibc also pollutes\n\u003cunistd.h\u003e, but that seems like a bad idea.)\n\nAlso, all supported devices now have kernels with the getrandom system\ncall.\n\nWe\u0027ve had these available internally for a while, but it seems like the\ntime is ripe to expose them.\n\nBug: http://b/67014255\nTest: ran tests\nChange-Id: I76dde1e3a2d0bc82777eea437ac193f96964f138\n"
    },
    {
      "commit": "896362eb0e82bcde71c137c925eae9e0882acb91",
      "tree": "3c4b2fb6e1626a2b377c93bd925f4f0fb4e02a9c",
      "parents": [
        "96c577c48284c376ec065f2b3a2d2987a7eeff5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 24 16:31:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 24 16:31:49 2017 -0700"
      },
      "message": "Add syncfs(2).\n\nGMM calls this system call directly at the moment. That\u0027s silly.\n\nBug: http://b/36405699\nTest: ran tests\nChange-Id: I1e14c0e5ce0bc2aa888d884845ac30dc20f13cd5\n"
    },
    {
      "commit": "6cb06879323cb45440ca1c7b42a2cc754b3d50c6",
      "tree": "6c57a6539009e2af358daa368f538e82da1593f2",
      "parents": [
        "248b5cb672a9eadde695edb7d73e9d1ed5cb0b7f"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Jul 21 13:28:42 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jul 24 14:20:16 2017 -0700"
      },
      "message": "Split our FORTIFY implementation into libc_fortify\n\nAs requested in the bug. This also rips __memcpy_chk out of memcpy.S,\nwhich lets us cut down on copypasta (all of the implementations look\nidentical).\n\nBug: 12231437\nTest: mma on aosp_{arm,arm64,mips,x86,x86_64} internal master;\ncheckbuild on bullhead internal master; CtsBionicTestCases on bullhead.\nNo new failures.\nChange-Id: I88c39ca166bacde0b692aa3063e743bb046a5d2f\n"
    },
    {
      "commit": "94072fbb4e42a195cd6cec97f9af15ff45cb84ee",
      "tree": "fe577acf1afd7e7be2372bf419537177da508011",
      "parents": [
        "4767bc4a6cebc2ad4c61cccdf92290e17227a792"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 23 11:03:58 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 23 14:47:16 2017 -0700"
      },
      "message": "Switch to inline assembler in crtbegin.\n\nUsing __builtin_frame_address was clever, but didn\u0027t work for arm64 (for\nreasons which were never investigated) and the ChromeOS folks claim it\ncauses trouble for x86 with ARC++ (though without a reproduceable test case).\n\nNaked functions turn out to be quite unevenly supported: some architectures\ndo the right thing, others don\u0027t; some architectures warn, others don\u0027t (and\nthe warnings don\u0027t always match the platforms that _actually_ have problems).\n\nInline assembler also removes the guessing games: everyone knows what the\ncouple of instructions _ought_ to be, and now we don\u0027t have to reason about\nwhat the compiler will actually do (yet still keep the majority of the code\nin C).\n\nBug: N/A\nTest: builds, boots\nChange-Id: I14207ef50ca46b6eca273c3cb7509c311146a3ca\n"
    },
    {
      "commit": "f19eeb8446de27e6b43c77642b03729e10facb2c",
      "tree": "04842f48982193239fa0af243bfb6a91eb1cbf12",
      "parents": [
        "f0ddcc676c0bcf44625e8651c0959f9176cd8cc5"
      ],
      "author": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Tue May 16 11:29:49 2017 +0100"
      },
      "committer": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Tue May 16 11:29:49 2017 +0100"
      },
      "message": "libc: ARM64: fix memset for non-standard ZVA sizes\n\n372f19e9e27c (\"libc: ARM64: update memset/strlen/memcpy/memmove to\nnewlib/cortex-strings\") introduced a bug in memset, only occurring\non the [set_long + zero + non-standard ZVA size] path, more\nspecifically when DCZID_EL0 reports a size different to 64 or 128.\n\nOn platforms with such sizes reported by DCZID_EL0, various string*\nunit tests fail due to memset zeroing memory before and/or after the\narea it is supposed to set.\n\nTest: bionic-unit-tests --gtest_filter\u003dstring*\nChange-Id: Idb80c0269226e40e343645a58608e3f324378468\n"
    },
    {
      "commit": "28285f5338c85453ab824239f7f6f9b6a0a06b7d",
      "tree": "130b009aacccc04ca7e5aef261278815df265d3e",
      "parents": [
        "05fd20c797c0aab700183131023130e45a748a47"
      ],
      "author": {
        "name": "Jake Weinstein",
        "email": "xboxlover360@gmail.com",
        "time": "Thu May 04 12:08:39 2017 -0400"
      },
      "committer": {
        "name": "Jake Weinstein",
        "email": "xboxlover360@gmail.com",
        "time": "Thu May 04 12:59:53 2017 -0400"
      },
      "message": "libc: clean up ARM64 copyright notices\n\nTest: None needed\n\nChange-Id: I3626a92329e954f67bada6ed73f3033225bbfef5\n"
    },
    {
      "commit": "5109bb463d3cce67a68875dec3cba9cb0b861ecd",
      "tree": "d50a0033f667bd8ac49bf964c1c10a5f5152a1b9",
      "parents": [
        "0fc84517abe3082f201a340dafe20403613ddf94"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 19 13:25:27 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 19 13:28:32 2017 -0700"
      },
      "message": "Make all the ELF relocation constants available.\n\nBSD thinks you should only get the relocation constants for your target\narchitecture, but it\u0027s often useful to have them all available at once.\nRearrange the headers to enable that.\n\nAlso update the (modified) NetBSD files to CVS HEAD.\n\nAlso remove the unused BSDism R_TYPE.\n\nBug: N/A\nTest: builds\nChange-Id: Iad5ef29192a732696e2b36af35144a9ca116aa46\n"
    },
    {
      "commit": "901601b48e2111f7b76b7171211c49967f38590c",
      "tree": "402a8eac68ad6f309b6c318b590e27c90860e24a",
      "parents": [
        "e4e69a174a0b4980eaff49c55c39b476cbe9b73e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 17 16:25:09 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 17 16:25:09 2017 -0700"
      },
      "message": "Remove unused elf_machdep.h cruft.\n\nAlso add a few missing include guards.\n\nBug: N/A\nTest: builds\nChange-Id: I9557303c81a4b11d430112528def038ecb5562a9\n"
    },
    {
      "commit": "9d150dd9a09132561a10c98de6b79b0b318d4e7d",
      "tree": "cdc0d438a5b263172f2c22644f14b2091615e476",
      "parents": [
        "f201c704d64ea40432123a90489d5dc88d613213"
      ],
      "author": {
        "name": "Yuanyuan Zhong",
        "email": "zyy@motorola.com",
        "time": "Wed Sep 07 16:58:40 2016 -0500"
      },
      "committer": {
        "name": "Jake Weinstein",
        "email": "xboxlover360@gmail.com",
        "time": "Mon Mar 20 17:54:29 2017 +0000"
      },
      "message": "bionic: arm64: generic: strcmp: align to 64B cache line\n\nAlign strcmp to 64B. This will ensure the preformance critical\nloop is within one 64B cache line.\n\nChange-Id: I88eef2f12b2a6442cacec9cdbdffbf17293e7d32\nSigned-off-by: Yuanyuan Zhong \u003czyy@motorola.com\u003e\nReviewed-on: https://gerrit.mot.com/902536\nSME-Granted: SME Approvals Granted\nSLTApproved: Slta Waiver \u003csltawvr@motorola.com\u003e\nTested-by: Jira Key \u003cjirakey@motorola.com\u003e\nReviewed-by: Yi-Wei Zhao \u003cgbjc64@motorola.com\u003e\nReviewed-by: Igor Kovalenko \u003cigork@motorola.com\u003e\nSubmit-Approved: Jira Key \u003cjirakey@motorola.com\u003e\n"
    },
    {
      "commit": "372f19e9e27c1333c0fc1e83b53d365051e81612",
      "tree": "81030a0622b9bf7af53e669bd78bca9dfbad1171",
      "parents": [
        "a5c16983a65e2169174a0e77a54c0ce650f87b48"
      ],
      "author": {
        "name": "Jake Weinstein",
        "email": "xboxlover360@gmail.com",
        "time": "Thu Nov 17 16:01:25 2016 -0500"
      },
      "committer": {
        "name": "Jake Weinstein",
        "email": "xboxlover360@gmail.com",
        "time": "Mon Nov 28 19:35:12 2016 +0000"
      },
      "message": "libc: ARM64: update memset/strlen/memcpy/memmove to newlib/cortex-strings\n\n* Bionic benchmarks results at the bottom\n\n* This is a squash of the following commits:\n\nlibc: ARM64: optimize memset.\n\n This is an optimized memset for AArch64.  Memset is split into 4 main\n cases: small sets of up to 16 bytes, medium of 16..96 bytes which are\n fully unrolled.  Large memsets of more than 96 bytes align the\n destination and use an unrolled loop processing 64 bytes per\n iteration.  Memsets of zero of more than 256 use the dc zva\n instruction, and there are faster versions for the common ZVA sizes 64\n or 128.  STP of Q registers is used to reduce codesize without loss of\n performance.\n\nChange-Id: I0c5b5ec5ab8a1fd0f23eee8fbacada0be08e841f\n\nlibc: ARM64: improve performance in strlen\n\nChange-Id: Ic20f93a0052a49bd76cd6795f51e8606ccfbf11c\n\nlibc: ARM64: Optimize memcpy.\n\n This is an optimized memcpy for AArch64.  Copies are split into 3 main\n cases: small copies of up to 16 bytes, medium copies of 17..96 bytes\n which are fully unrolled.  Large copies of more than 96 bytes align\n the destination and use an unrolled loop processing 64 bytes per\n iteration.  In order to share code with memmove, small and medium\n copies read all data before writing, allowing any kind of overlap.  On\n a random copy test memcpy is 40.8% faster on A57 and 28.4% on A53.\n\nChange-Id: Ibb9483e45bbc0e8ca3d5ce98a31c55dfd8a5ac28\n\nlibc: AArch64: Tune memcpy\n\n* Further tuning for performance.\n\nChange-Id: Id08eaab885f9743fa7575077924a947c1b88e4ff\n\nlibc: ARM64: optimize memmove for Cortex-A53\n\n* Sadly does not work on Denver or Kryo, so can\u0027t go to generic\n\n This is an optimized memmove for AArch64.  All copies of up to 96\n bytes and all backward copies are done by the new memcpy.  The only\n remaining case is large forward copies which are done in the same way\n as the memcpy loop, but copying from the end rather than the start.\n\nTested on the Nextbit Robin with MSM8992 (Snapdragon 808):\n\nBefore\nBM_string_memcmp/8                          1000k         27    0.286 GiB/s\nBM_string_memcmp/64                           50M         20    3.053 GiB/s\nBM_string_memcmp/512                          20M        126    4.060 GiB/s\nBM_string_memcmp/1024                         10M        234    4.372 GiB/s\nBM_string_memcmp/8Ki                        1000k       1726    4.745 GiB/s\nBM_string_memcmp/16Ki                        500k       3711    4.415 GiB/s\nBM_string_memcmp/32Ki                        200k       8276    3.959 GiB/s\nBM_string_memcmp/64Ki                        100k      16351    4.008 GiB/s\nBM_string_memcpy/8                          1000k         13    0.612 GiB/s\nBM_string_memcpy/64                         1000k          8    7.187 GiB/s\nBM_string_memcpy/512                          50M         38   13.311 GiB/s\nBM_string_memcpy/1024                         20M         86   11.858 GiB/s\nBM_string_memcpy/8Ki                           5M        620   13.203 GiB/s\nBM_string_memcpy/16Ki                       1000k       1265   12.950 GiB/s\nBM_string_memcpy/32Ki                        500k       2977   11.004 GiB/s\nBM_string_memcpy/64Ki                        500k       8003    8.188 GiB/s\nBM_string_memmove/8                         1000k         11    0.684 GiB/s\nBM_string_memmove/64                        1000k         16    3.855 GiB/s\nBM_string_memmove/512                         50M         57    8.915 GiB/s\nBM_string_memmove/1024                        20M        117    8.720 GiB/s\nBM_string_memmove/8Ki                          2M        853    9.594 GiB/s\nBM_string_memmove/16Ki                      1000k       1731    9.462 GiB/s\nBM_string_memmove/32Ki                       500k       3566    9.189 GiB/s\nBM_string_memmove/64Ki                       500k       7708    8.501 GiB/s\nBM_string_memset/8                          1000k         16    0.487 GiB/s\nBM_string_memset/64                         1000k         16    3.995 GiB/s\nBM_string_memset/512                          50M         37   13.489 GiB/s\nBM_string_memset/1024                         50M         58   17.405 GiB/s\nBM_string_memset/8Ki                           5M        451   18.160 GiB/s\nBM_string_memset/16Ki                          2M        883   18.554 GiB/s\nBM_string_memset/32Ki                       1000k       2181   15.022 GiB/s\nBM_string_memset/64Ki                        500k       4563   14.362 GiB/s\nBM_string_strlen/8                          1000k          8    0.965 GiB/s\nBM_string_strlen/64                         1000k         16    3.855 GiB/s\nBM_string_strlen/512                          20M         92    5.540 GiB/s\nBM_string_strlen/1024                         10M        167    6.111 GiB/s\nBM_string_strlen/8Ki                        1000k       1237    6.620 GiB/s\nBM_string_strlen/16Ki                       1000k       2765    5.923 GiB/s\nBM_string_strlen/32Ki                        500k       6135    5.341 GiB/s\nBM_string_strlen/64Ki                        200k      13168    4.977 GiB/s\n\nAfter\nBM_string_memcmp/8                          1000k         21    0.369 GiB/s\nBM_string_memcmp/64                         1000k         28    2.272 GiB/s\nBM_string_memcmp/512                          20M        128    3.983 GiB/s\nBM_string_memcmp/1024                         10M        234    4.375 GiB/s\nBM_string_memcmp/8Ki                        1000k       1732    4.728 GiB/s\nBM_string_memcmp/16Ki                        500k       3485    4.701 GiB/s\nBM_string_memcmp/32Ki                        500k       7031    4.660 GiB/s\nBM_string_memcmp/64Ki                        200k      14296    4.584 GiB/s\nBM_string_memcpy/8                          1000k          5    1.458 GiB/s\nBM_string_memcpy/64                         1000k          7    8.952 GiB/s\nBM_string_memcpy/512                          50M         36   13.907 GiB/s\nBM_string_memcpy/1024                         20M         80   12.750 GiB/s\nBM_string_memcpy/8Ki                           5M        572   14.307 GiB/s\nBM_string_memcpy/16Ki                       1000k       1165   14.053 GiB/s\nBM_string_memcpy/32Ki                        500k       3141   10.430 GiB/s\nBM_string_memcpy/64Ki                        500k       7008    9.351 GiB/s\nBM_string_memmove/8                           50M          7    1.074 GiB/s\nBM_string_memmove/64                        1000k          9    6.593 GiB/s\nBM_string_memmove/512                         50M         37   13.502 GiB/s\nBM_string_memmove/1024                        20M         80   12.656 GiB/s\nBM_string_memmove/8Ki                          5M        573   14.281 GiB/s\nBM_string_memmove/16Ki                      1000k       1168   14.018 GiB/s\nBM_string_memmove/32Ki                      1000k       2825   11.599 GiB/s\nBM_string_memmove/64Ki                       500k       6548   10.008 GiB/s\nBM_string_memset/8                          1000k          7    1.038 GiB/s\nBM_string_memset/64                         1000k          8    7.151 GiB/s\nBM_string_memset/512                        1000k         29   17.272 GiB/s\nBM_string_memset/1024                         50M         53   18.969 GiB/s\nBM_string_memset/8Ki                           5M        424   19.300 GiB/s\nBM_string_memset/16Ki                          2M        846   19.350 GiB/s\nBM_string_memset/32Ki                       1000k       2028   16.156 GiB/s\nBM_string_memset/64Ki                        500k       4514   14.517 GiB/s\nBM_string_strlen/8                          1000k          7    1.120 GiB/s\nBM_string_strlen/64                         1000k         16    3.918 GiB/s\nBM_string_strlen/512                          50M         64    7.894 GiB/s\nBM_string_strlen/1024                         20M        104    9.815 GiB/s\nBM_string_strlen/8Ki                           5M        664   12.337 GiB/s\nBM_string_strlen/16Ki                       1000k       1291   12.682 GiB/s\nBM_string_strlen/32Ki                       1000k       2940   11.143 GiB/s\nBM_string_strlen/64Ki                        500k       6440   10.175 GiB/s\n\nChange-Id: I635bd2798a755256f748b2af19b1a56fb85a40c6\n"
    },
    {
      "commit": "beb879662470fb01f8062c173d9e6fc1b76988ee",
      "tree": "554ffa8777d6eb8029e9f74f2df9996c95bea7df",
      "parents": [
        "7409b9cfed78ca730e437a8690527dfc8cf31b64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 17:01:32 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 17:01:58 2016 -0700"
      },
      "message": "Use ENTRY_PRIVATE in __bionic_clone assembler.\n\nBug: N/A\nTest: bionic tests\nChange-Id: Ic651d628be009487a36d0b2e5bcf900b981b1ef9\n"
    },
    {
      "commit": "7510c33b6122961f2eb8800ca0543acfc8dd4636",
      "tree": "15e33600334276ebe0c5f3e2609916444a44f116",
      "parents": [
        "5fa57176746b78a3c42b909104d9cf4690ff14cb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 26 16:11:51 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 26 16:41:57 2016 -0700"
      },
      "message": "Remove deprecated Android.mk files\n\nThese directories all have Android.bp files that are always used now,\ndelete the Android.mk files.\n\nChange-Id: Ib0ba2d28bff88483b505426ba61606da314e03ab\n"
    },
    {
      "commit": "eafad49bd6a0e6ca63ae0a5577d3ef7a45713107",
      "tree": "495cbef3d47cb818b28a2768a3e9e43ac004dea2",
      "parents": [
        "66606ff84c079e95c03a61cc8bcfb08261a5a173"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 05 23:01:42 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 06 11:06:09 2016 -0700"
      },
      "message": "Add \u003csys/quota.h\u003e.\n\nIt turns out that at least the Nexus 9 kernel is built without CONFIG_QUOTA.\nIf we decide we\u0027re going to mandate quota functionality, I\u0027m happy for us to\nbe a part of CTS that ensures that happens, but I don\u0027t want to be first, so\nthere\u0027s not much to test here other than \"will it compile?\". The strace\noutput looks right though.\n\nBug: http://b/27948821\nBug: http://b/27952303\nChange-Id: If667195eee849ed17c8fa9110f6b02907fc8fc04\n"
    },
    {
      "commit": "7f72ad4d6c6f4c99726fff423bdbbdca1032fdc2",
      "tree": "157fe5d3c01930627c72ba75c39aa50497de0cf2",
      "parents": [
        "95ddb26256db734be7f7efc8cba3362bcececea9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 05 11:56:03 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 05 12:17:22 2016 -0700"
      },
      "message": "Add sync_file_range to \u003cfcntl.h\u003e.\n\nBug: http://b/27952303\nChange-Id: Idadfacd657ed415abc11684b9471e4e24c2fbf05\n"
    },
    {
      "commit": "afe835d540000d2378e744b764d71406b410761d",
      "tree": "e7e2f42e0aa8f049fe431360a4b79b3ec3f8ae9a",
      "parents": [
        "2152a8ca3550ff0c9c998bfd4d6ab741758063ec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 02 08:36:33 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 02 08:36:33 2016 -0700"
      },
      "message": "Move math headers in with the other headers.\n\nKeeping them separate is a pain for the NDK, and doesn\u0027t help the platform.\n\nChange-Id: I96b8beef307d4a956e9c0a899ad9315adc502582\n"
    },
    {
      "commit": "e2faf07d659b1c824002e50b9cdfa9caae62a31b",
      "tree": "72752c132d778ad698ef51cf7fca23224fcd6361",
      "parents": [
        "e725dc164015d873b64639f0fee9ba5c30175f4c"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Mar 03 08:37:53 2016 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Mar 25 14:16:58 2016 -0700"
      },
      "message": "Add {get,set}domainname(2)\n\n{get,set}domainname aren\u0027t in POSIX but are widely-implemented\nextensions.\n\nThe Linux kernel provides a setdomainname syscall but not a symmetric\ngetdomainname syscall, since it expects userspace to get the domain name\nfrom uname(2).\n\nChange-Id: I96726c242f4bb646c130b361688328b0b97269a0\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "0c3655a864f33080ebbec1248c27a7ead87d6a28",
      "tree": "7b703548177b8d03f6dca3e218aa01fbe9149446",
      "parents": [
        "a4c69137c693c45fce4010ba61d69d7147f5dd9a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 02 19:45:29 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 03 12:45:08 2016 -0800"
      },
      "message": "Add a checksum to jmp_buf on AArch64.\n\nBug: http://b/27417786\nChange-Id: I17c22dc28a46dd6b678b449b506b0da978f3793e\n"
    },
    {
      "commit": "784609317d49e854813f1797d7a53cf7d4379643",
      "tree": "316b6fd124f4c46b72f382b5d703a99514c4fc30",
      "parents": [
        "2332d524396aa69c55969cf6e48a5048f12d53ea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 02 11:58:41 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 02 11:58:41 2016 -0800"
      },
      "message": "Mandate optimized __memset_chk for arm and arm64.\n\nThis involves actually implementing assembler __memset_chk for arm64,\nbut that\u0027s easily done.\n\nObviously I\u0027d like this for all architectures (and all the string functions),\nbut this is low-hanging fruit...\n\nChange-Id: I70ec48c91aafd1f0feb974a2555c51611de9ef82\n"
    },
    {
      "commit": "3c6016f04aa3a8e2660a7c68f0a28cbf30ff2f08",
      "tree": "2a6e44952a672033546ca9aba5b92a410d935bc3",
      "parents": [
        "c199690b5ffda0f4df50d1121f7ab577af1fe468"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 01 14:45:58 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 01 14:45:58 2016 -0800"
      },
      "message": "Improve diagnostics from the assembler __memcpy_chk routines.\n\nChange-Id: Iec16c92ed80beee505cba2121ea33e3550197b02\n"
    },
    {
      "commit": "b83d6747facc5d819a0df0bcb8762477eecfd962",
      "tree": "4f5b7589c2cfe21756a85327818a88a9becbc781",
      "parents": [
        "e0959b4b164a26eb9931ed6925c71d7870c063fe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 25 20:33:47 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 26 22:06:17 2016 -0800"
      },
      "message": "Improve FORTIFY failure diagnostics.\n\nOur FORTIFY _chk functions\u0027 implementations were very repetitive and verbose\nbut not very helpful. We\u0027d also screwed up and put the SSIZE_MAX checks where\nthey would never fire unless you actually had a buffer as large as half your\naddress space, which probably doesn\u0027t happen very often.\n\nFactor out the duplication and take the opportunity to actually show details\nlike how big the overrun buffer was, or by how much it was overrun.\n\nAlso remove the obsolete FORTIFY event logging.\n\nAlso remove the unused __libc_fatal_no_abort.\n\nThis change doesn\u0027t improve the diagnostics from the optimized assembler\nimplementations.\n\nChange-Id: I176a90701395404d50975b547a00bd2c654e1252\n"
    },
    {
      "commit": "5f26c6bc91f653b61c01e2ff6e7eac4847e315a5",
      "tree": "ce87a77e7a33435dfdecf8d3b8517d6b261c1dac",
      "parents": [
        "36ff6995707112e66dd0dec78be7f8ee9b95d321"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 13:19:10 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 13:19:10 2016 -0800"
      },
      "message": "Really add adjtimex(2), and add clock_adjtime(2) too.\n\nChange-Id: I81fde2ec9fdf787bb19a784ad13df92d33a4f852\n"
    },
    {
      "commit": "3f3f6c526b2d8f47df7462df0c0071c391cc7b4d",
      "tree": "e233e70f635dd67ec2bc453844a78dcb6b11a710",
      "parents": [
        "0e915b294b2b1f0d20cd1b9a4e1721d59ccbfa7a"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Wed Jan 27 17:13:51 2016 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Jan 28 13:41:22 2016 -0800"
      },
      "message": "Add adjtimex\n\nChange-Id: Ia92d35b1851e73c9f157a749dba1e98f68309a8d\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "42d949ff9d2956e25f84e537f43a8f93ecb37baf",
      "tree": "66f1215029c3777d59393fbbbaa55ba5aed5872a",
      "parents": [
        "988e71b2b22117b0f7e994cbe764066630494125"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 06 19:51:43 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 06 20:06:08 2016 -0800"
      },
      "message": "Defend against -fstack-protector in libc startup.\n\nExactly which functions get a stack protector is up to the compiler, so\nlet\u0027s separate the code that sets up the environment stack protection\nrequires and explicitly build it with -fno-stack-protector.\n\nBug: http://b/26276517\nChange-Id: I8719e23ead1f1e81715c32c1335da868f68369b5\n"
    },
    {
      "commit": "4200e260d266fd0c176e71fbd720d0bab04b02db",
      "tree": "b2c934fc4e2f546504cc02fdccd5f83fd60c6d37",
      "parents": [
        "ef5e647891f1a0aefeab4a87e9225e47087c6301"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Tue Nov 03 05:14:08 2015 -0500"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 06 13:14:43 2015 -0800"
      },
      "message": "fix the mremap signature\n\nThe mremap definition was incorrect (unsigned long instead of int) and\nit was missing the optional new_address parameter.\n\nChange-Id: Ib9d0675aaa098c21617cedc9b2b8cf267be3aec4\n"
    },
    {
      "commit": "268a673bd1add941e331b2f53758242d939ca5b1",
      "tree": "4d867ed419e663419a2e5aa6e8d126beeb931e70",
      "parents": [
        "d29ba555130f1e61164cf6186cd6a29c7aa14719"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Oct 15 14:49:45 2015 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 20 11:58:28 2015 -0700"
      },
      "message": "Switch to LOCAL_SRC_FILES_EXCLUDE\n\nThis moves the generic arm/arm64/x86 settings into the main makefiles\nand makes the rest of them derivatives. This better aligns with how\nsoong handles arch/cpu variants.\n\nAlso updates the Android.bp to make it consistent with the make\nversions.\n\nChange-Id: I5a0275d992bc657459eb6fe1697ad2336731d122\n"
    },
    {
      "commit": "54db0df8d619b135af2413035a8d807b0c1489f7",
      "tree": "64e37e08a0cb285d58310c4a2cc748036b25a2b3",
      "parents": [
        "7fda8d2aa4d24ab400f6f0cb9f792488b634afae"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 11 15:23:32 2015 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 17 14:07:24 2015 -0700"
      },
      "message": "Implement setjmp cookies on AArch64.\n\nBug: http://b/23942752\nChange-Id: I81408ef0dd53010140b51e3083d357d3f2961112\n"
    },
    {
      "commit": "6f4594d5dc61bb67978c44cd6eeb0e7bfb621c9b",
      "tree": "9c925e99fe826914d93a6c1e00c5f62a8cd8c0a8",
      "parents": [
        "629ed517126b3be32f2b2e8b710e63358691c296"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 26 13:27:43 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 26 14:48:55 2015 -0700"
      },
      "message": "Add preadv/pwritev.\n\nBug: http://b/12612572\nChange-Id: I38ff2684d69bd0fe3f21b1d371b88fa60d5421cb\n"
    },
    {
      "commit": "2926f9a31ef18fbf22922135895cb4c6790d3ad0",
      "tree": "62021a02fdbbbd9f321cc742eaa6c1cde1af3367",
      "parents": [
        "6816d8cc69dc1d142d722686d006f25df94afcd3"
      ],
      "author": {
        "name": "Jake Weinstein",
        "email": "xboxlover360@gmail.com",
        "time": "Sun Aug 16 00:44:40 2015 +0000"
      },
      "committer": {
        "name": "Jake Weinstein",
        "email": "xboxlover360@gmail.com",
        "time": "Mon Aug 17 22:06:12 2015 +0000"
      },
      "message": "libc: remove bcopy from memmove on 64-bit architectures\n\n* bcopy is deprecated on LP64 by the following commit:\n\n  https://android.googlesource.com/platform/bionic/+/ce9ce28e5d760e32ab6c894dfaf7b8dad6de7ff6\n\nChange-Id: I6849916f0ec4a2d0db9a360999ad1dc8edda952b\n"
    },
    {
      "commit": "5891abdc66aa9578395bc8b8e5740f629a2694b7",
      "tree": "7ce00a1c6da021bf09535dd0d287e76c9efd31fa",
      "parents": [
        "e80369ab0c484a99925a49a81ab0675538fab38a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 07 18:27:47 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 07 19:44:12 2015 -0700"
      },
      "message": "Invalidate cached pid in vfork.\n\nBug: http://b/23008979\nChange-Id: I1dd900ac988cdbe10aad3abc53240c5d352891d5\n"
    },
    {
      "commit": "9876aa273da6795aa6d257de5b779a68a0c2eccf",
      "tree": "0ae16c933f005c9228acfaac6e6f18c80b0df63c",
      "parents": [
        "48fa28bacd7e84651d381e2428944916e45b5508",
        "a73b2c961f0f20e792f4616d7dd0b5f377d1130c"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Tue Jun 16 19:04:13 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 16 19:04:14 2015 +0000"
      },
      "message": "Merge \"Add support for cortex-a53 in bionic.\""
    },
    {
      "commit": "a73b2c961f0f20e792f4616d7dd0b5f377d1130c",
      "tree": "0bd9e45a399f2ef04e4a713cb944b2e441416a66",
      "parents": [
        "df11f340cac2e7aa5ef69c3180d0f4089f46c96b"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Thu Jun 11 15:33:06 2015 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Jun 15 21:43:30 2015 -0700"
      },
      "message": "Add support for cortex-a53 in bionic.\n\nallows -mcpu\u003dcortex-a53 to be passed as part of a command line.\n\nChange-Id: Id4203a9fd197f4c3b661bad21ac58c32819fd687\n"
    },
    {
      "commit": "b1304935b64ffcd59cd787cc9ac83a2d14dc587b",
      "tree": "e1f7e44b4fa870796ec762633a6a1a6ec322239b",
      "parents": [
        "df11f340cac2e7aa5ef69c3180d0f4089f46c96b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 15 19:39:04 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 15 19:39:04 2015 -0700"
      },
      "message": "Hide accidentally-exposed __clock_nanosleep.\n\nBug: http://b/21858067\nChange-Id: Iaa83a5e17cfff796aed4f641d0d14427614d9399\n"
    },
    {
      "commit": "be57a40d2973739c4fb0aa1cfb0014f34aeec2bd",
      "tree": "a4d8bba0773d0b024e1e53dbb4f35214cd3480d5",
      "parents": [
        "72af1235e49fa797987dd719e398f53995a50ec4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 10 17:24:20 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 10 17:24:20 2015 -0700"
      },
      "message": "Add process_vm_readv and process_vm_writev.\n\nBug: http://b/21761353\nChange-Id: Ic8ef3f241d62d2a4271fbc783c8af50257bac498\n"
    },
    {
      "commit": "e1d0810cd7e2aa045d5cc1e7d2b8697acd8467be",
      "tree": "335466a8a2f403dfa11394fa6c0d723873a4acf8",
      "parents": [
        "966f84b11dca7caf53c67664d811b99567cab7ee"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jun 06 11:23:26 2015 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jun 06 11:25:41 2015 -0700"
      },
      "message": "Add O_PATH support for flistxattr()\n\nA continuation of commit 2825f10b7f61558c264231a536cf3affc0d84204.\n\nAdd O_PATH compatibility support for flistxattr(). This allows\na process to list out all the extended attributes associated with\nO_PATH file descriptors.\n\nChange-Id: Ie2285ac7ad2e4eac427ddba6c2d182d41b130f75\n"
    },
    {
      "commit": "2825f10b7f61558c264231a536cf3affc0d84204",
      "tree": "a5b968e9591cd0aa3289c0d2195e0326ef2e353f",
      "parents": [
        "ef607cdae24363c5e6b6fc72607a4cff78623851"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sun May 31 13:43:13 2015 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 01 15:51:56 2015 -0700"
      },
      "message": "libc: Add O_PATH support for fgetxattr / fsetxattr\n\nSupport O_PATH file descriptors when handling fgetxattr and fsetxattr.\nThis avoids requiring file read access to pull extended attributes.\n\nThis is needed to support O_PATH file descriptors when calling\nSELinux\u0027s fgetfilecon() call. In particular, this allows the querying\nand setting of SELinux file context by using something like the following\ncode:\n\n  int dirfd \u003d open(\"/path/to/dir\", O_DIRECTORY);\n  int fd \u003d openat(dirfd, \"file\", O_PATH | O_NOFOLLOW);\n  char *context;\n  fgetfilecon(fd, \u0026context);\n\nThis change was motivated by a comment in\nhttps://android-review.googlesource.com/#/c/152680/1/toys/posix/ls.c\n\nChange-Id: Ic0cdf9f9dd0e35a63b44a4c4a08400020041eddf\n"
    },
    {
      "commit": "40a8f214a5264efe5feaaffd55cea67fb87d097b",
      "tree": "50e1b2ab531de2767251244e8545351384b818de",
      "parents": [
        "a42b5bcd896daa83b479e7964c0fa8cf1abf5a1d"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon May 18 11:19:11 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon May 18 11:29:20 2015 -0700"
      },
      "message": "Hide rt_sigqueueinfo.\n\nBug: 19358804\nChange-Id: I38a53ad64c81d0eefdd1d24599e769fd8a477a56\n"
    },
    {
      "commit": "33f33515b503b634d9fbc57dda7123ea9cf23fc6",
      "tree": "0f588a4d5834681be091f3aba213baa9b7c69efc",
      "parents": [
        "11fc3f47afa6c9566875df02f880dc317cb94437"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon May 11 11:21:19 2015 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon May 11 17:15:03 2015 -0700"
      },
      "message": "Use unified syntax to compile with both llvm and gcc.\n\nAll arch-arm and arch-arm64 .S files were compiled\nby gcc with and without this patch. The output object files\nwere identical. When compiled with llvm and this patch,\nthe output files were also identical to gcc\u0027s output.\n\nBUG: 18061004\nChange-Id: I458914d512ddf5496e4eb3d288bf032cd526d32b\n"
    },
    {
      "commit": "7c2c01d681d7f2faa256a263996a35ac3edc94b3",
      "tree": "512630d70277cea81482c7972d2db76ab152bb52",
      "parents": [
        "6f0d7005f9bc6d293e5cfcd60c13a6af0ffa99fc"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 07 15:12:24 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 07 15:12:24 2015 -0700"
      },
      "message": "Revert \"Fix volantis boot.\"\n\nBug: http://b/20065774\nThis reverts commit 76e1cbca75e9fdaf7a7943f2c58e65433b283f4a.\n"
    },
    {
      "commit": "6f0d7005f9bc6d293e5cfcd60c13a6af0ffa99fc",
      "tree": "4318285a2dca2275ae664a23bab663338891a5f0",
      "parents": [
        "f920f821e27c845d2de54c1c92c3ab74587ed31a"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 07 15:12:16 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 07 15:12:16 2015 -0700"
      },
      "message": "Revert \"Fix clang build.\"\n\nBug: http://b/20065774\nThis reverts commit 0975a5d9d29019e764dc0ab2ddc75759bebffb9b.\n"
    },
    {
      "commit": "f920f821e27c845d2de54c1c92c3ab74587ed31a",
      "tree": "4e5b79e05ebf7c4a0eac8195a9031a5beccc5b28",
      "parents": [
        "9c1894186cb33391732a6c33bd08e14d7b43cc89"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 07 15:11:41 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 07 15:11:48 2015 -0700"
      },
      "message": "Revert \"Try again to fix clang build.\"\n\nBug: http://b/20065774\nThis reverts commit dffd3c58389103d6ee712fac6544217c00c1f315.\n\nChange-Id: I5dd095ff4ab133baa2afcbd4c79fbee55d05c459\n"
    },
    {
      "commit": "ea295f68f1fae7c701baaa717f67296659d567ac",
      "tree": "745388310ffe715acbfd96b3cedfe55ccb50a2ca",
      "parents": [
        "ebfb55e4cdf03473d66eaf5928fb3c3a8b0c2f85"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 20 20:47:02 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 17:57:37 2015 -0700"
      },
      "message": "Unregister pthread_atfork handlers on dlclose()\n\nBug: http://b/20339788\nChange-Id: I874c87faa377645fa9e0752f4fc166d81fd9ef7e\n"
    },
    {
      "commit": "6c63ee41ac5a246fb46c51753cd4d50ccae0dd8f",
      "tree": "3ed0595fe98662464ea1ad7d6d5e75af9ff851b5",
      "parents": [
        "41ebceaf3ad392b4a3f40d96d5750d95ef206546",
        "094f58fb2a57d1ed5736ae3588bf0355618f915b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:49:30 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 03:49:30 2015 +0000"
      },
      "message": "Merge \"Revert \"Unregister pthread_atfork handlers on dlclose()\"\""
    },
    {
      "commit": "094f58fb2a57d1ed5736ae3588bf0355618f915b",
      "tree": "8f41a50086a97f88be5bf98d2a2806a26d854d5a",
      "parents": [
        "6df122f8528f9b9fcf7dfea14ae98b0ef66274e1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:45:59 2015 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:46:57 2015 +0000"
      },
      "message": "Revert \"Unregister pthread_atfork handlers on dlclose()\"\n\n The visibility control in pthread_atfork.h is incorrect.\n It breaks 64bit libc.so by hiding pthread_atfork.\n\n This reverts commit 6df122f8528f9b9fcf7dfea14ae98b0ef66274e1.\n\nChange-Id: I21e4b344d500c6f6de0ccb7420b916c4e233dd34\n"
    },
    {
      "commit": "3da9373fe0ada19d13c6c3f9831dee93ec0ba7a6",
      "tree": "ef5f36fd86ed71b516a9b88959e2d0ae7ff88b57",
      "parents": [
        "dc405b5230c3d72107b57798a2c23b1a46069f4d",
        "3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 23 21:14:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 23 21:14:25 2015 +0000"
      },
      "message": "Merge \"Simplify close(2) EINTR handling.\""
    },
    {
      "commit": "3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208",
      "tree": "310c54610766a838a0569f8e44b33e7805b2d42c",
      "parents": [
        "ff18108981aa1fa73696d6db1919cdc38788bd4e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 22 21:40:38 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 23 08:41:45 2015 -0700"
      },
      "message": "Simplify close(2) EINTR handling.\n\nThis doesn\u0027t affect code like Chrome that correctly ignores EINTR on\nclose, makes code that tries TEMP_FAILURE_RETRY work (where before it might\nhave closed a different fd and appeared to succeed, or had a bogus EBADF),\nand makes \"goto fail\" code work (instead of mistakenly assuming that EINTR\nmeans that the close failed).\n\nWho loses? Anyone actively trying to detect that they caught a signal while\nin close(2). I don\u0027t think those people exist, and I think they have better\nalternatives available.\n\nBug: https://code.google.com/p/chromium/issues/detail?id\u003d269623\nBug: http://b/20501816\nChange-Id: I11e2f66532fe5d1b0082b2433212e24bdda8219b\n"
    },
    {
      "commit": "6df122f8528f9b9fcf7dfea14ae98b0ef66274e1",
      "tree": "5a59eb4d1148b6218b8a06895baf6176f17b995b",
      "parents": [
        "ff18108981aa1fa73696d6db1919cdc38788bd4e"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 20 20:47:02 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 22 19:19:37 2015 -0700"
      },
      "message": "Unregister pthread_atfork handlers on dlclose()\n\nChange-Id: I326fdf6bb06bed12743f08980b5c69d849c015b8\n"
    },
    {
      "commit": "dffd3c58389103d6ee712fac6544217c00c1f315",
      "tree": "b2c977a1277b2bcc93224c5800cdd904ae2859db",
      "parents": [
        "ec8b3a7dde3c282c4f9ca5c8bf5a7e1b7469def0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 13:37:18 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 13:37:18 2015 -0700"
      },
      "message": "Try again to fix clang build.\n\nI got the condition the wrong way round in the previous change.\n\nBug: http://b/20065774\nChange-Id: I218b224b37f5fb2f7c7ec2f9af27472b340c4b15\n"
    },
    {
      "commit": "0975a5d9d29019e764dc0ab2ddc75759bebffb9b",
      "tree": "6a9846314994f6a4987a5670f04bea2a27b84c89",
      "parents": [
        "aea165cb03abceb85062e94f22f72e1c9d9800a4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 13:09:10 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 13:10:04 2015 -0700"
      },
      "message": "Fix clang build.\n\nApparently clang really doesn\u0027t want you to take the address of a builtin.\nSince this is only a temporary hack, let\u0027s just shrug and accept that\nclang-built volantis images won\u0027t work until we have new NVIDIA blobs.\n\nBug: http://b/20065774\nChange-Id: I4c8e893b15a1af8f9c54d3f89bfef112b63d09b4\n"
    },
    {
      "commit": "76e1cbca75e9fdaf7a7943f2c58e65433b283f4a",
      "tree": "71f98b1cf8521c3c2111bf375707d8aebf653cf9",
      "parents": [
        "06b6e3c51d38d70c5ca99f3a3f795697031ac27f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 11:27:53 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 12:37:03 2015 -0700"
      },
      "message": "Fix volantis boot.\n\nNVIDIA binary blobs are assuming that __cache_clear, _Unwind_Backtrace,\nand _Unwind_GetIP are all in some library that they link, but now we\u0027ve\ncleaned up this leakage, they\u0027re no longer getting it. Deliberately leak\nthe symbols from libc.so until we get new blobs.\n\nBug: http://b/20065774\nChange-Id: I92ef07b2bce8d1ad719bf40dab41d745cd6904d4\n"
    },
    {
      "commit": "24958514b92c9b9e111223e4e4c56ef1a52b6403",
      "tree": "c84eddf326df879eacaf47e15790822265b14514",
      "parents": [
        "f5e0ba94d911ef2622ecfd3f7fabc4432a4806d3"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 25 09:12:00 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 25 09:12:00 2015 -0700"
      },
      "message": "Use ALIAS_SYMBOL for assembler aliasing.\n\nChange-Id: I8d04d2da0a1ac440cc9044fc819c9a8eda5ff17d\n"
    },
    {
      "commit": "fa5faa0ce6deba5ad9c96fe5cf74e63e4a6edfb3",
      "tree": "546a5eff515f97537cae2cbec5d99c68ee85844b",
      "parents": [
        "ee4997ecc3daeb9af110d932ddb27f969cc7271a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 24 16:50:46 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 24 21:08:26 2015 -0700"
      },
      "message": "Make gensyscalls.py use the ALIAS_SYMBOL macro.\n\nChange-Id: Ib94c0abb6fc85126ecc5ed3f1962b2b8b90b9952\n"
    },
    {
      "commit": "fa495d51b02e1575088ed358614d3baa442f455f",
      "tree": "7d44227f43953a5b99d2fc582f917987a5980f56",
      "parents": [
        "ab12dc70f3ef551c490dcfede76033e57ceee64d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 18 15:46:48 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 18 15:46:48 2015 -0700"
      },
      "message": "Hide statfs/fstatfs\u0027 ST_VALID flag from userspace.\n\nSpotted while debugging the strace 4.10 upgrade.\n\nChange-Id: I1af1be9c9440151f55f74a835e1df71529b0e4fe\n"
    },
    {
      "commit": "35778253a5ed71e87a608ca590b63729d9f88567",
      "tree": "d9e6112654bf2faa754abd9f28bc20c2ccccff57",
      "parents": [
        "2aef607b25c463baed5ae70d14212e24ea7bcf2b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 24 13:40:43 2015 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 24 13:40:43 2015 -0800"
      },
      "message": "Fix \"faccessat ignores flags\"\n\nThe kernel system call faccessat() does not have any flags arguments,\nso passing flags to the kernel is currently ignored.\n\nFix the kernel system call so that no flags argument is passed in.\n\nEnsure that we don\u0027t support AT_SYMLINK_NOFOLLOW. This non-POSIX\n(http://pubs.opengroup.org/onlinepubs/9699919799/functions/access.html)\nflag is a glibc extension, and has non-intuitive, error prone behavior.\n\nFor example, consider the following code:\n\n  symlink(\"foo.is.dangling\", \"foo\");\n  if (faccessat(AT_FDCWD, \"foo\", R_OK, AT_SYMLINK_NOFOLLOW) \u003d\u003d 0) {\n    int fd \u003d openat(AT_FDCWD, \"foo\", O_RDONLY | O_NOFOLLOW);\n  }\n\nThe faccessat() call in glibc will return true, but an attempt to\nopen the dangling symlink will end up failing. GLIBC documents this\nas returning the access mode of the symlink itself, which will\nalways return true for any symlink on Linux.\n\nSome further discussions of this are at:\n\n  * http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003617.html\n  * http://permalink.gmane.org/gmane.linux.lib.musl.general/6952\n\nAT_SYMLINK_NOFOLLOW seems broken by design. I suspect this is why this\nfunction was never added to POSIX. (note that \"access\" is pretty much\nbroken by design too, since it introduces a race condition between\ncheck and action). We shouldn\u0027t support this until it\u0027s clearly\ndocumented by POSIX or we can have it produce intuitive results.\n\nDon\u0027t support AT_EACCESS for now. Implementing it is complicated, and\npretty much useless on Android, since we don\u0027t have setuid binaries.\nSee http://git.musl-libc.org/cgit/musl/commit/?id\u003d0a05eace163cee9b08571d2ff9d90f5e82d9c228\nfor how an implementation might look.\n\nBug: 18867827\nChange-Id: I25b86c5020f3152ffa3ac3047f6c4152908d0e04\n"
    },
    {
      "commit": "41ef902379ba24bd8a3ca6d7733b8376efb55ebd",
      "tree": "855ac7e3fa276bfb55594e4efb28c7c29cf28f3f",
      "parents": [
        "f9fb52ab309c97d5b2ef4f8e1daff3eed4cf4024"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 14 13:21:22 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 14 13:21:22 2015 -0800"
      },
      "message": "Fix memchr overflow.\n\nThe overflow\u0027s actually in the generic C implementation of memchr.\n\nWhile I\u0027m here, let\u0027s switch our generic memrchr to the OpenBSD version too.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d147048\nChange-Id: I296ae06a1ee196d2c77c95a22f11ee4d658962da\n"
    },
    {
      "commit": "da2c0a708ed6c0091f3f89fd8838292579dad800",
      "tree": "366ffdc2136629ea65b5086c3b3a1bbd3a582c14",
      "parents": [
        "17976019a13a94ae428849bfe297f8e531f95013",
        "5b869c0bbf8a2924ab69d86a98e9a25558d33494"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 05 01:57:27 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 05 01:57:28 2015 +0000"
      },
      "message": "Merge changes Ib87855e8,I4b46ae20,I66364a5c,Id3fcf680\n\n* changes:\n  Use LOCAL_LDFLAGS_64 instead of enumerating 64-bit architectures\n  Fix typo in cpu variant makefile depenendency for arm64\n  Remove libc_static_common_src_files\n  Share LP32 makefile settings between arches\n"
    },
    {
      "commit": "a6b6ed5fe9dd247684de5f35a0367be65876339e",
      "tree": "11f454fb3950406c1f4f36e5229e39ff08977ee5",
      "parents": [
        "7dc502d01292f3303a5252ce20f80f621f4f15f5"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 04 17:38:27 2015 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 04 17:38:27 2015 -0800"
      },
      "message": "Fix typo in cpu variant makefile depenendency for arm64\n\ncpu_variank_mk -\u003e cpu_variant_mk\n\nChange-Id: I4b46ae20de72ed2dc8820d62ac35ddc6b915a195\n"
    },
    {
      "commit": "00490ae3f351e07ed4cc2a94b11cba6a22f37311",
      "tree": "ad09d82701fd1d9cdf44231d8b8789007aa5d8d9",
      "parents": [
        "d57bf449fe6c2dcf35d90d6e4098038ac8a24ecb"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 03 11:27:25 2015 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 03 12:10:30 2015 -0800"
      },
      "message": "Ensure raw fchmod/fchmodat syscalls are hidden.\n\nIn https://android-review.googlesource.com/#/c/127908/5/libc/SYSCALLS.TXT@116\nElliott said:\n\n  for LP64 these will be hidden. for LP32 we were cowards and left\n  them all public for compatibility (though i don\u0027t think we ever\n  dremeled to see whether it was needed). we don\u0027t have an easy\n  way to recognize additions, though, so we can\u0027t prevent adding\n  new turds.\n\nAdd a mechanism to prevent the adding of new turds, and use that\nmechanism on the fchmod/fchmodat system calls.\n\nBug: 19233951\nChange-Id: I98f98345970b631a379f348df57858f9fc3d57c0\n"
    },
    {
      "commit": "3cbc6c627fe57c9a9783c52d148078f8d52f7b96",
      "tree": "ea5b0dc49aaa16f25e2262cd5560070ae65923b9",
      "parents": [
        "21cdd22f035efd50902b7780fc6ea53bd1684357"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jan 31 19:57:46 2015 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Feb 02 13:17:17 2015 -0800"
      },
      "message": "Add fchmodat(AT_SYMLINK_NOFOLLOW) and fchmod O_PATH support\n\nMany libc functions have an option to not follow symbolic\nlinks. This is useful to avoid security sensitive code\nfrom inadvertantly following attacker supplied symlinks\nand taking inappropriate action on files it shouldn\u0027t.\nFor example, open() has O_NOFOLLOW, chown() has\nlchown(), stat() has lstat(), etc.\n\nThere is no such equivalent function for chmod(), such as lchmod().\nTo address this, POSIX introduced fchmodat(AT_SYMLINK_NOFOLLOW),\nwhich is intended to provide a way to perform a chmod operation\nwhich doesn\u0027t follow symlinks.\n\nCurrently, the Linux kernel doesn\u0027t implement AT_SYMLINK_NOFOLLOW.\nIn GLIBC, attempting to use the AT_SYMLINK_NOFOLLOW flag causes\nfchmodat to return ENOTSUP. Details are in \"man fchmodat\".\n\nBionic currently differs from GLIBC in that AT_SYMLINK_NOFOLLOW\nis silently ignored and treated as if the flag wasn\u0027t present.\n\nThis patch provides a userspace implementation of\nAT_SYMLINK_NOFOLLOW for bionic. Using open(O_PATH | O_NOFOLLOW),\nwe can provide a way to atomically change the permissions on\nfiles without worrying about race conditions.\n\nAs part of this change, we add support for fchmod on O_PATH\nfile descriptors, because it\u0027s relatively straight forward\nand could be useful in the future.\n\nThe basic idea behind this implementation comes from\nhttps://sourceware.org/bugzilla/show_bug.cgi?id\u003d14578 , specifically\ncomment #10.\n\nChange-Id: I1eba0cdb2c509d9193ceecf28f13118188a3cfa7\n"
    },
    {
      "commit": "dbaab2602162cdd1c1f9a3a79ba4d8facacee540",
      "tree": "46afccf8cd6a430e85242c808c217db537dda5c6",
      "parents": [
        "2a8c929aaf8d34d2b6e89ed9c8b6da163316143e"
      ],
      "author": {
        "name": "Duane Sand",
        "email": "duane.sand@imgtec.com",
        "time": "Mon Jan 26 16:20:05 2015 -0800"
      },
      "committer": {
        "name": "Duane Sand",
        "email": "duane.sand@imgtec.com",
        "time": "Mon Jan 26 16:20:05 2015 -0800"
      },
      "message": "[Arm64] Fix overlapping fp fields in jmp_buf\n\nChange-Id: I9be9f118108f3f6e2bb02a5b01e0420fbfd15d85\n"
    },
    {
      "commit": "51f5d83237ce104655f1bc05576ed8ebf64e97cc",
      "tree": "a773abbc92ce4a1649dcea6bf07edecb5886958a",
      "parents": [
        "0952a5540e8bb6ceb74389601b9088398d585771"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 10 11:08:47 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 10 11:08:47 2014 -0800"
      },
      "message": "Fix arm64 clone stack handling.\n\nMake sure we adjust the stack pointer so a signal can\u0027t overwrite data.\n\nBug: 15195265\nChange-Id: I5ab9469a82cb214c32f40a713268a1ab74a4c6fa\n"
    },
    {
      "commit": "94926f8cfa0adf37c4e19256ade7261a97f72e51",
      "tree": "8c990320ebf445406d3d50be443db10cd58eee42",
      "parents": [
        "b033761cbf0e79ade9a8c956c2e63b42ee838183",
        "634816055f51c536d24dea30dfe930b7fe2fa603"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Dec 09 20:10:19 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 09 20:10:19 2014 +0000"
      },
      "message": "Merge \"support _POSIX_REALTIME_SIGNALS\""
    },
    {
      "commit": "634816055f51c536d24dea30dfe930b7fe2fa603",
      "tree": "5d3739b116df16774776010538254c10007c0a76",
      "parents": [
        "f64c43ba6c9244c50e904961dc432f04b1dfcfd9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Dec 01 17:41:04 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Dec 08 21:52:43 2014 -0800"
      },
      "message": "support _POSIX_REALTIME_SIGNALS\n\nBug: 18489947\nChange-Id: I2e834d68bc10ca5fc7ebde047b517a3074179475\n"
    },
    {
      "commit": "56e017306eb55c5deea795f89d2fb657757b4164",
      "tree": "1e5fb8ca5c536803b35d3de3bca638282ecb60f3",
      "parents": [
        "aa0002de89ee4753bce6e4d714e5d4cc4d9709eb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 08 20:32:11 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 08 20:35:08 2014 -0800"
      },
      "message": "Simplify our endian.h implementation.\n\nWe can rely on the compiler\u0027s builtins. Tested on arm, arm64, mips, x86,\nand x86-64.\n\nChange-Id: I0f774ed7e85b3c791a3178d8ef17c6500e6a9ace\n"
    },
    {
      "commit": "9fa2cfbbdbd8c1558a8f604b9b632fbe23b25fb8",
      "tree": "4ea12d122df925f6e16a08f27ceeb5002ec5e75a",
      "parents": [
        "86d06dcc74f1804a1d00b4c1bc420105bba49df7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 08 16:23:10 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 08 16:23:10 2014 -0800"
      },
      "message": "Use 64-bit units in the aarch64 setjmp implementation.\n\nThe use of 32-bit units for 64-bit stores and loads was driving me crazy.\n\nBug: 16918359\nChange-Id: Ifb73aad8f8985a2adfcf5913b783ad9424f23e06\n"
    },
    {
      "commit": "75096226c80646f8bfcdee7c018abbb9f9f617f0",
      "tree": "a37957c36c8f04eb922be03bcbf4c0d561a244bf",
      "parents": [
        "515a2ea1d575d96e774ba08f59a14ceefdd125c3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 08 16:01:20 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 08 16:15:59 2014 -0800"
      },
      "message": "Switch arm and arm64 over to the x86 style of jmpbuf.\n\nSpecifically, use the argument to sigsetjmp as a flag in the buffer\nto indicate whether or not the signal mask is valid.\n\nBug: 16918359\nChange-Id: I5bb1f1220f14c105c6bc57e0c28c1dc366d1438f\n"
    },
    {
      "commit": "7b78e8187ef29b40a0df47e045dff33778d1fa4f",
      "tree": "32b84054a538dd95ddcbf961fc1df90f319fecde",
      "parents": [
        "7d3a99b1bb06c3a261252680b4c3295cbcd77894"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 05 22:57:55 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 06 11:18:00 2014 -0800"
      },
      "message": "Fix signal mask save/restore for arm64.\n\nBug: 16918359\nChange-Id: Ieb15f7f1658f5accee05665b72ba17831a80ea9d\n"
    },
    {
      "commit": "9fb536de97c8bb927fb358988442ec2740a8ca7b",
      "tree": "84b7ad3ee351e5061803e2e15715d842d82c192d",
      "parents": [
        "2421406711e0b2e214234add79c842bbb2c07ca1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 05 12:17:25 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 05 15:05:45 2014 -0800"
      },
      "message": "Clean up the arm64 setjmp.\n\nNote that this doesn\u0027t address the fact that we don\u0027t save/restore the\nreal-time signals. But it does let us pass the tests we currently fail.\n\nBug: 16918359\nChange-Id: I063a6926164289a71026a412da7f5dd2ca9a74b3\n"
    },
    {
      "commit": "1de2548c8ea5e24b7fdb51ba19c40d9477e054d5",
      "tree": "051475a597b0748849c892dfe4cfb5c727844aa0",
      "parents": [
        "8408d7efacd83c1813501954d3e199b63f350778"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 02 19:55:38 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 02 19:55:38 2014 -0800"
      },
      "message": "Switch aarch64 to __builtin_bswap16.\n\nIt generates the same code.\n\nBug: 18597513\nChange-Id: I164296da8c676668983dd93697c6dfa05f10ec56\n"
    },
    {
      "commit": "b514026eb22d408da0d7090bf57b342d4ceb4097",
      "tree": "4867be5bd8f963d17ab26d1fad16b9d23e026d4b",
      "parents": [
        "6995c1dcb5a9ad77a54d950fc24f5aba00909b69"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 02 16:16:29 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 02 16:16:29 2014 -0800"
      },
      "message": "Kill \u003cmachine/exec.h\u003e.\n\nBug: 18546535\nChange-Id: I479e003deab21e31eb5caa5393067ed1dc558387\n"
    },
    {
      "commit": "ee369fb319cfb8f46ec6f2c7fbc102b60147da1b",
      "tree": "a7238bc60ae5304e7a940fd1b8168a6e4d8874f4",
      "parents": [
        "80838f190ad9454d1a9ebc2204cbfbbb22086f56"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 21 18:34:36 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 21 18:34:36 2014 -0800"
      },
      "message": "Bring our \u003cmachine/endian.h\u003e files back in sync.\n\nThey\u0027d drifted slightly which led to a compilation error in toybox,\nwhich was assuming pid_t was defined. arm and arm64 were picking it\nup via \u003cendian.h\u003e but x86 wasn\u0027t.\n\nChange-Id: I58401e6c0066959dfc3b305b020876aaf7074bbf\n"
    },
    {
      "commit": "b86a4c7f651ab347611847e4f5a1a50d6ee1827b",
      "tree": "24d8b5623c4ee06e0b6787b68e3217042a99cb69",
      "parents": [
        "2ed9ee1e938a94b563ab700dc5017a968d2591ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 07 16:07:13 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 07 16:48:27 2014 -0800"
      },
      "message": "Add sethostname(2).\n\nNot very useful, but helps building stuff like toybox out of the box.\n\nChange-Id: I110e39030452bd093a84278e019c5752d293718d\n"
    },
    {
      "commit": "18160256840e9bb097f17422ea47d54fabbc9f3f",
      "tree": "9e214fedefed00a66099d8cc9abab4dd68cbec80",
      "parents": [
        "c229705051c8b6a06ad81c221ca74ef9aa743e13"
      ],
      "author": {
        "name": "Haruki Hasegawa",
        "email": "h6a.h4i.0@gmail.com",
        "time": "Mon Oct 13 00:50:47 2014 +0900"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 13 17:04:10 2014 -0700"
      },
      "message": "Add clock_settime and clock_nanosleep.\n\nAdd the missing prototypes, fix the existing prototypes to use clockid_t\nrather than int, fix clock_nanosleep\u0027s failure behavior, and add simple\ntests.\n\nBug: 17644443\nBug: https://code.google.com/p/android/issues/detail?id\u003d77372\nChange-Id: I03fba369939403918abcabae9551a7123953d780\nSigned-off-by: Haruki Hasegawa \u003ch6a.h4i.0@gmail.com\u003e\n"
    },
    {
      "commit": "8cf61dab5f11ed5654a5760ab47cec0239caafe0",
      "tree": "b384655961f108b4116366b1c5faefd20a146f76",
      "parents": [
        "852d4fbbe9ddee0261c6b3dcadcd75185157ed46"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Sep 24 17:05:20 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 26 12:47:04 2014 -0700"
      },
      "message": "Add __memcpy_chk assembly for 64 bit.\n\nBug: 17623887\nChange-Id: I443723bc941b40f84884b330d222baabee01f868\n"
    },
    {
      "commit": "2169e17482da91865e412e55b52b88d7c8db47f6",
      "tree": "11f03b7bc1eeecf9b5bbf64c4a5fe68cde1756d0",
      "parents": [
        "87b6906f6e0c17b2541535be8e054324cc2fef4a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Sep 23 18:31:45 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Sep 23 18:31:45 2014 -0700"
      },
      "message": "Remove the unnecessary generic-neon code.\n\nChange-Id: Ib75c33caafd76750ec1aca3a74dec5e4b881e965\n"
    },
    {
      "commit": "36a5aa057cf1738577754a3fc16a14a5f817109f",
      "tree": "960e36d952a36eb2f834ff99d8dd634be94f197a",
      "parents": [
        "56433ee2a2ccc097ac3ad753168722b0fc76f3b1",
        "1cff9a89645a8f362a9ce19c7f9544e98c1fd9e7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 17 17:04:40 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 17 17:04:40 2014 +0000"
      },
      "message": "Merge \"Use the kernel\u0027s sa_restorer for aarch64.\""
    },
    {
      "commit": "7c02d9428ca18ac600f7ba7d51bb24ca71e733f6",
      "tree": "a773c043170cab95b9a9a9220e33dd81dddcedf3",
      "parents": [
        "17cc8e539a578184662c1966a60f37c7d4fed65e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 16 19:06:31 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 16 19:06:31 2014 -0700"
      },
      "message": "Clean up the architecture-specific makefiles.\n\nGroup things appropriately and name each group.\n\nChange-Id: I0da45eb0ccde19c31d5e984d0e6eb3dad26630dc\n"
    },
    {
      "commit": "1cff9a89645a8f362a9ce19c7f9544e98c1fd9e7",
      "tree": "60dbdc9a2cb73b71f4368a6a9049421e174e6bb3",
      "parents": [
        "380a3be757b04378edecad6ecb96017d2ec6a8b9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 16 15:49:50 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 16 15:49:50 2014 -0700"
      },
      "message": "Use the kernel\u0027s sa_restorer for aarch64.\n\ngdb was happy with what we had, but libgcc and libunwind weren\u0027t.\nlibgcc is happy with the kernel\u0027s restorer (because of the extra nop),\nthough libunwind looks like it\u0027s going to need code changes regardless.\n\nWe could make our restorer more like the kernel\u0027s one, but why bother\nwhen we can just let the kernel supply the canonical one?\n\nBug: 17436734\nChange-Id: I330fa5e68f23b1cf8133aa552896657b0b873ed3\n"
    },
    {
      "commit": "36f451a6d93b6807944d99fa23396e039c47e845",
      "tree": "116d52e5cb108eed51b2ff692844facb53f7b804",
      "parents": [
        "95b0c6a9407d7a4084d956e273ad1697550452d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 10 15:20:40 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 15 15:04:14 2014 -0700"
      },
      "message": "Fix signal trampolines.\n\n* LP32 should use sa_restorer too. gdb expects this, and future (\u003e\u003d 3.15) x86\n  kernels will apparently stop supporting the case where SA_RESTORER isn\u0027t\n  set.\n\n* gdb and libunwind care about the exact instruction sequences, so we need to\n  modify the code slightly in a few cases to match what they\u0027re looking for.\n\n* gdb also cares about the exact function names (for some architectures),\n  so we need to use __restore and __restore_rt rather than __sigreturn and\n  __rt_sigreturn.\n\n* It\u0027s possible that we don\u0027t have a VDSO; dl_iterate_phdr shouldn\u0027t assume\n  that getauxval(AT_SYSINFO_EHDR) will return a non-null pointer.\n\nThis fixes unwinding through a signal handler in gdb for all architectures.\nIt doesn\u0027t fix libunwind for arm and arm64. I\u0027ll keep investigating that...\n\nBug: 17436734\nChange-Id: Ic1ea1184db6655c5d96180dc07bcc09628e647cb\n"
    },
    {
      "commit": "6487f0d8341b00b476995e0174dc92e5ae8efbbe",
      "tree": "ddc5fe0c6d7efbdd84c5c90d558786f88ab5d7cc",
      "parents": [
        "5920a9ad5fd9f8d515c683e164f946bcfef1f1c3",
        "9aea164457c269c475592da36b4655d45f55c7bc"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 12 00:40:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 12 00:40:12 2014 +0000"
      },
      "message": "Merge \"Add IFUNC support for arm64 and IRELATIVE reloc\""
    }
  ],
  "next": "9aea164457c269c475592da36b4655d45f55c7bc"
}
