)]}'
{
  "log": [
    {
      "commit": "00a66a6fe84b13751b86d3e18dc7617e4d1dd0b4",
      "tree": "66df44b3f0e149f6e236a11b53e25166ad50c89e",
      "parents": [
        "c98e2365cdd0c2330711118b689171df143f6399"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Tue Jul 10 11:46:55 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 24 17:42:06 2012 -0700"
      },
      "message": "[MIPS] Use an aligned address to provoke SIGSEGV in abort()\n\nChange-Id: I269c9ccc07058773fb0f9d70673673157ab38f6a\n"
    },
    {
      "commit": "c98e2365cdd0c2330711118b689171df143f6399",
      "tree": "1c73bc42b0aafd48ea3b8317427939f3d4b970b7",
      "parents": [
        "344aca8ced2522074f799439e201226377d02dba",
        "958dad705a8c2c191e4352547fc9950c4feaa9fb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 24 17:21:46 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 24 17:21:47 2012 -0700"
      },
      "message": "Merge \"Fix implementation of generic atomic operations\""
    },
    {
      "commit": "958dad705a8c2c191e4352547fc9950c4feaa9fb",
      "tree": "1c73bc42b0aafd48ea3b8317427939f3d4b970b7",
      "parents": [
        "344aca8ced2522074f799439e201226377d02dba"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Mon Jul 23 17:30:04 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 24 13:56:38 2012 -0700"
      },
      "message": "Fix implementation of generic atomic operations\n\nChange-Id: Ie1ea5aacc561e2d6d40125d2952ed0e9116b7b0d\n"
    },
    {
      "commit": "344aca8ced2522074f799439e201226377d02dba",
      "tree": "5b5605e5203bd658fdeef3f1bbef1676c93413c6",
      "parents": [
        "b109e437fcbc1cbe09fce8ce2abb6f951d5a0274",
        "f7fb9e1ef1e159be2fded066d126d8e1f111b772"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 24 13:41:05 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 24 13:41:06 2012 -0700"
      },
      "message": "Merge \"[MIPS] Add atomic routines\""
    },
    {
      "commit": "f7fb9e1ef1e159be2fded066d126d8e1f111b772",
      "tree": "5b5605e5203bd658fdeef3f1bbef1676c93413c6",
      "parents": [
        "b109e437fcbc1cbe09fce8ce2abb6f951d5a0274"
      ],
      "author": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Fri Jun 29 15:52:55 2012 -0700"
      },
      "committer": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Tue Jul 24 10:30:22 2012 -0700"
      },
      "message": "[MIPS] Add atomic routines\n\nChange-Id: I2cb20ce44dd230d222b7fc1ede2e1e3dce6e692b\n"
    },
    {
      "commit": "b109e437fcbc1cbe09fce8ce2abb6f951d5a0274",
      "tree": "061d923f8529cb277119e7b73a2183dd788f87eb",
      "parents": [
        "654b1501f7a936034d07f579c3d4a15d1319dac2",
        "5d967e43d03e9c916548b9c290b0c4138df2f1f8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jul 21 14:09:23 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jul 21 14:09:24 2012 -0700"
      },
      "message": "Merge \"Upgrade to tzdata2012d.\""
    },
    {
      "commit": "5d967e43d03e9c916548b9c290b0c4138df2f1f8",
      "tree": "061d923f8529cb277119e7b73a2183dd788f87eb",
      "parents": [
        "654b1501f7a936034d07f579c3d4a15d1319dac2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 20 16:52:39 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 20 16:53:32 2012 -0700"
      },
      "message": "Upgrade to tzdata2012d.\n\nThis upgrade involved rewriting the script; the data has moved to ftp.iana.org,\nwhere it\u0027s slightly less convenient to access, so it\u0027s time to use something\nthat can talk FTP...\n\nAs for tzdata2012d, it\u0027s just updating Morocco for this weekend\u0027s changes, now\nthey\u0027ve been decided at the last minute (as usual).\n\nChange-Id: I772df57a6e09b3bf3d9541bfc08930d6f18633b4\n"
    },
    {
      "commit": "654b1501f7a936034d07f579c3d4a15d1319dac2",
      "tree": "5ea391c49b5ceb7cb2e44e58be238f038bd32781",
      "parents": [
        "f6ee33cee717f9878d3a43bf76c35547649676d7",
        "0351955a686fe4e0bf9f30780f78ff0e2402a6b0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 19 17:18:36 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 19 17:18:37 2012 -0700"
      },
      "message": "Merge \"Update time.h for CLOCK_BOOTTIME.\""
    },
    {
      "commit": "0351955a686fe4e0bf9f30780f78ff0e2402a6b0",
      "tree": "5ea391c49b5ceb7cb2e44e58be238f038bd32781",
      "parents": [
        "f6ee33cee717f9878d3a43bf76c35547649676d7"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Jul 19 13:50:55 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 19 17:10:14 2012 -0700"
      },
      "message": "Update time.h for CLOCK_BOOTTIME.\n\n(cherry-pick of 8958a383296ea0e1cc106ae245c37671809ffd49)\n\nChange-Id: Ie8de6b32fa81566db53ad7e9fd4b197f4cede628\n"
    },
    {
      "commit": "f6ee33cee717f9878d3a43bf76c35547649676d7",
      "tree": "93d200becc2ae2e17794901b03ff69a5d32b5382",
      "parents": [
        "3fd5e91e58ba40a7321a3f2c4c64970584e9bb56",
        "326e85eca6916eb904649f7bff65244a40088ba7"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 18 14:02:21 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 18 14:02:22 2012 -0700"
      },
      "message": "Merge \"linker: Fix LD_PRELOADS for calling constructors\""
    },
    {
      "commit": "3fd5e91e58ba40a7321a3f2c4c64970584e9bb56",
      "tree": "9327cd649b5f512a9927ee8aaf256513f5beb94c",
      "parents": [
        "05f03b8875ed4aab95e5587d066d62a781af97bc",
        "bb5c30a3ee40324effd4daa346505e16faf91728"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 11:38:23 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 11:38:23 2012 -0700"
      },
      "message": "Merge \"bionic: Report linker relocation address to gdb\""
    },
    {
      "commit": "05f03b8875ed4aab95e5587d066d62a781af97bc",
      "tree": "6be741ab104858dba834bc84ecb75fabec4ddfab",
      "parents": [
        "decb531ce29e0472d5d3117c4bfda674f374a771",
        "8211bc6325ef61f2fe2021fac9e0f4219abaccf2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 10:08:16 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 10:08:17 2012 -0700"
      },
      "message": "Merge \"linker: cleanup of undefined state handling, which is really dead code\""
    },
    {
      "commit": "8211bc6325ef61f2fe2021fac9e0f4219abaccf2",
      "tree": "6be741ab104858dba834bc84ecb75fabec4ddfab",
      "parents": [
        "decb531ce29e0472d5d3117c4bfda674f374a771"
      ],
      "author": {
        "name": "Robin Burchell",
        "email": "robin.burchell@collabora.co.uk",
        "time": "Thu Jul 05 09:23:19 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 10:03:35 2012 -0700"
      },
      "message": "linker: cleanup of undefined state handling, which is really dead code\n\nGiven that _elf_lookup (and thus, _do_lookup) cannot possibly return an\nundefined symbol (due to the check for SHN_UNDEF in _elf_lookup), there\u0027s\nno need for spurious checks for SHN_UNDEF on its return value.\n\nConflicts:\n\n\tlinker/linker.c\n\nChange-Id: Ic73cf439924b45f72d4d9ba3f64a888c96cbbd9b\n"
    },
    {
      "commit": "decb531ce29e0472d5d3117c4bfda674f374a771",
      "tree": "f9e9312620e9d142605257434e495c716f1ef559",
      "parents": [
        "8d7355ac2f19f72e03989aab6b47990a34fd6123",
        "439fa8ea8c33a7945258dfe84a71ab2665efaa9a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 10:00:38 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 10:00:38 2012 -0700"
      },
      "message": "Merge \"linker: Use SHN_UNDEF instead of describing what it is trying to do.\""
    },
    {
      "commit": "439fa8ea8c33a7945258dfe84a71ab2665efaa9a",
      "tree": "f9e9312620e9d142605257434e495c716f1ef559",
      "parents": [
        "8d7355ac2f19f72e03989aab6b47990a34fd6123"
      ],
      "author": {
        "name": "Robin Burchell",
        "email": "robin.burchell@collabora.co.uk",
        "time": "Thu Jul 05 09:21:07 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 09:51:17 2012 -0700"
      },
      "message": "linker: Use SHN_UNDEF instead of describing what it is trying to do.\n"
    },
    {
      "commit": "8d7355ac2f19f72e03989aab6b47990a34fd6123",
      "tree": "9b346559570609f1ac2bdf63dbeaf6ab30f78c46",
      "parents": [
        "fabddfe833097ecca92b3547a725879234780468",
        "856512ea9c933c5fe0fff14ee123496730df6b19"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 09:45:27 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 09:45:27 2012 -0700"
      },
      "message": "Merge \"Use std\u003dgnu99 for the dynamic linker as well as libc.\""
    },
    {
      "commit": "856512ea9c933c5fe0fff14ee123496730df6b19",
      "tree": "9b346559570609f1ac2bdf63dbeaf6ab30f78c46",
      "parents": [
        "fabddfe833097ecca92b3547a725879234780468"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 09:43:14 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 09:43:14 2012 -0700"
      },
      "message": "Use std\u003dgnu99 for the dynamic linker as well as libc.\n\nChange-Id: I76dd78576c5af6eb6282555f069647b6260edc31\n"
    },
    {
      "commit": "fabddfe833097ecca92b3547a725879234780468",
      "tree": "5e268ebc6b635e7b4b167b08b235ee67b6789184",
      "parents": [
        "b0f0d4276d459a7a9c71c69d6fe6f0ae2f6bbd22",
        "6331db3fd251ddc350913cc1e8a7941740c25f63"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 16 09:39:24 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 09:39:24 2012 -0700"
      },
      "message": "Merge \"limits.h: Include page.h when relying on PAGE_SIZE\""
    },
    {
      "commit": "b0f0d4276d459a7a9c71c69d6fe6f0ae2f6bbd22",
      "tree": "8fd21828b1fc97423bbe5e3652513772260604f3",
      "parents": [
        "e1d909f71e183ac3d1e21af5bb1af35d30e9de5b",
        "c37fc1ab6a3ac3956a8c9ba3ac089d41969815ed"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 16 08:24:32 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 16 08:24:32 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: revert memcpy changes.\""
    },
    {
      "commit": "bb5c30a3ee40324effd4daa346505e16faf91728",
      "tree": "2d985059f3306f6237749893fb1793f21ba46b4f",
      "parents": [
        "6334c662cae4cd9b61f5f3185048b0cd3633dad7"
      ],
      "author": {
        "name": "Ryan V. Bissell",
        "email": "ryan@bissell.org",
        "time": "Mon Jul 16 02:16:18 2012 -0500"
      },
      "committer": {
        "name": "Ryan V. Bissell",
        "email": "ryan@bissell.org",
        "time": "Mon Jul 16 02:16:18 2012 -0500"
      },
      "message": "bionic: Report linker relocation address to gdb\n\nGDB needs the runtime linker\u0027s base address in order to\nlocate the latter\u0027s \".text\" and \".plt\" sections, for the\npurpose of detecting solib trampolines.  It also can\npotentially use this to calculate the relocated address\nof rtld_db_dlactivity.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d34856\nChange-Id: I63d3e7ae4e20a684ceb25967f2241e7d58dd685d\nSigned-off-by: Ryan V. Bissell \u003cryan@bissell.org\u003e\n"
    },
    {
      "commit": "326e85eca6916eb904649f7bff65244a40088ba7",
      "tree": "ba1a91f237d5a013bb89af9a3d2f4c41800125e9",
      "parents": [
        "e1d909f71e183ac3d1e21af5bb1af35d30e9de5b"
      ],
      "author": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Sun Jul 15 00:49:27 2012 +0800"
      },
      "committer": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Sun Jul 15 00:49:34 2012 +0800"
      },
      "message": "linker: Fix LD_PRELOADS for calling constructors\n\nChange-Id: I1eae77a4c59e8a5acc009127d271455bb6fc01b6\n"
    },
    {
      "commit": "c37fc1ab6a3ac3956a8c9ba3ac089d41969815ed",
      "tree": "8fd21828b1fc97423bbe5e3652513772260604f3",
      "parents": [
        "e1d909f71e183ac3d1e21af5bb1af35d30e9de5b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 17:49:10 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 17:58:37 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: revert memcpy changes.\n\nPerformance regressions.  Hopefully this is a temporary\nrollback.\n\nBug: 6821003\nChange-Id: I84abbb89e1739d506b583f2f1668f31534127764\n"
    },
    {
      "commit": "e1d909f71e183ac3d1e21af5bb1af35d30e9de5b",
      "tree": "8fcd143b253225860fbd817cdad02afac00f1be8",
      "parents": [
        "147b0690a95d2213eb146533604cedf7ca5023b8",
        "9b6cc223a36835c4367a036d4cfeff14d25bc742"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 15:06:56 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 13 15:06:56 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: introduce __BIONIC_FORTIFY_UNKNOWN_SIZE macro\""
    },
    {
      "commit": "147b0690a95d2213eb146533604cedf7ca5023b8",
      "tree": "b8ff686500d30625cb9d5908ecba4895f20a1467",
      "parents": [
        "ad7f9662812af02e7bf5a4d99d946fdb086eaa54",
        "260bf8cfe00f83bc579dfe81c78b75bd9973f051"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 15:06:40 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 13 15:06:41 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: strlen check.\""
    },
    {
      "commit": "ad7f9662812af02e7bf5a4d99d946fdb086eaa54",
      "tree": "00b0d9fa0f2bb7d106aff303feeb3ddbead6baeb",
      "parents": [
        "88bfc28ac4d5f4e1f3d0b7a8b0c67efb54458641",
        "b2060b027c9eb2748895b53a0d69d40b52371a4e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 14:52:26 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 13 14:52:26 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: restore __memcpy_chk()\""
    },
    {
      "commit": "9b6cc223a36835c4367a036d4cfeff14d25bc742",
      "tree": "8fcd143b253225860fbd817cdad02afac00f1be8",
      "parents": [
        "260bf8cfe00f83bc579dfe81c78b75bd9973f051"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 14:46:36 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 14:49:33 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: introduce __BIONIC_FORTIFY_UNKNOWN_SIZE macro\n\nReplace all occurances of \"(size_t) -1\" with a\n__BIONIC_FORTIFY_UNKNOWN_SIZE macro.\n\nChange-Id: I0b188f6cf31417d2dbef0e1bd759de3f9782873a\n"
    },
    {
      "commit": "260bf8cfe00f83bc579dfe81c78b75bd9973f051",
      "tree": "b8ff686500d30625cb9d5908ecba4895f20a1467",
      "parents": [
        "b2060b027c9eb2748895b53a0d69d40b52371a4e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 11:27:06 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 13:49:59 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: strlen check.\n\nThis test is designed to detect code such as:\n\nint main() {\n  char buf[10];\n  memcpy(buf, \"1234567890\", sizeof(buf));\n  size_t len \u003d strlen(buf); // segfault here with _FORTIFY_SOURCE\n  printf(\"%d\\n\", len);\n  return 0;\n}\n\nor anytime strlen reads beyond an object boundary. This should\nhelp address memory leakage vulnerabilities and make other\nunrelated vulnerabilities harder to exploit.\n\nChange-Id: I354b425be7bef4713c85f6bab0e9738445e00182\n"
    },
    {
      "commit": "b2060b027c9eb2748895b53a0d69d40b52371a4e",
      "tree": "00b0d9fa0f2bb7d106aff303feeb3ddbead6baeb",
      "parents": [
        "88bfc28ac4d5f4e1f3d0b7a8b0c67efb54458641"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 12:45:14 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 13:49:45 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: restore __memcpy_chk()\n\nIn our previous FORTIFY_SOURCE change, we started using a custom\ninline for memcpy(), rather than using GCC\u0027s __builtin_memcpy_chk().\nThis allowed us to delete our copy of __memcpy_chk(), and replace it\nby __memcpy_chk2().\n\nApparently GCC uses __memcpy_chk() outside of __builtin_memcpy_chk().\nSpecifically, __memcpy_chk() is used by __builtin__memMOVE_chk() under\ncertain optimization levels.\n\nKeep the old __memcpy_chk() function around, and have it call into\n__memcpy_chk2().\n\nChange-Id: I2453930b24b8a492a3b6ed860e18d92a6b762b80\n"
    },
    {
      "commit": "88bfc28ac4d5f4e1f3d0b7a8b0c67efb54458641",
      "tree": "fae959e2f8c146b61eb43af80d9ae4918640d2c0",
      "parents": [
        "86a4fca0b473c49bcbcf2deb6b5822aa9ab9631e",
        "f3913b5b68347ce9a4cb17977df2c33f1e8f6000"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 07:57:57 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 13 07:57:58 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: enhanced memcpy protections.\""
    },
    {
      "commit": "f3913b5b68347ce9a4cb17977df2c33f1e8f6000",
      "tree": "fae959e2f8c146b61eb43af80d9ae4918640d2c0",
      "parents": [
        "86a4fca0b473c49bcbcf2deb6b5822aa9ab9631e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jul 12 15:10:03 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jul 12 15:38:15 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: enhanced memcpy protections.\n\nTwo changes:\n\n1) Detect memory read overruns.\n\nFor example:\n\nint main() {\n  char buf[10];\n  memcpy(buf, \"abcde\", sizeof(buf));\n  sprintf(\"%s\\n\", buf);\n}\n\nbecause \"abcde\" is only 6 bytes, copying 10 bytes from it is a bug.\nThis particular bug will be detected at compile time.  Other similar\nbugs may be detected at runtime.\n\n2) Detect overlapping buffers on memcpy()\n\nIt is a bug to call memcpy() on buffers which overlap. For\nexample, the following code is buggy:\n\n  char buf3[0x800];\n  char *first_half  \u003d \u0026buf3[0x400];\n  char *second_half \u003d \u0026buf3[1];\n  memset(buf3, 0, sizeof(buf3));\n  memcpy(first_half, second_half, 0x400);\n  printf(\"1: %s\\n\", buf3);\n\nWe now detect this at compile and run time.\n\nChange-Id: I092bd89f11f18e08e8a9dda0ca903aaea8e06d91\n"
    },
    {
      "commit": "86a4fca0b473c49bcbcf2deb6b5822aa9ab9631e",
      "tree": "59b3fd8b76808b6e61bc2fa5853757293e2f8452",
      "parents": [
        "6334c662cae4cd9b61f5f3185048b0cd3633dad7",
        "e64259e860a84c9527ffbe6d9bd2f6eeab6fdac4"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jul 12 10:06:27 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 12 10:06:28 2012 -0700"
      },
      "message": "Merge \"memmove: Don\u0027t call memcpy if regions overlap\""
    },
    {
      "commit": "e64259e860a84c9527ffbe6d9bd2f6eeab6fdac4",
      "tree": "59b3fd8b76808b6e61bc2fa5853757293e2f8452",
      "parents": [
        "6334c662cae4cd9b61f5f3185048b0cd3633dad7"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 11 17:34:04 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 11 17:46:03 2012 -0700"
      },
      "message": "memmove: Don\u0027t call memcpy if regions overlap\n\nmemmove() unconditionally calls memcpy() if \"dst\" \u003c \"src\". For\nexample, in the code below, memmove() would end up calling memcpy(),\neven though the regions of memory overlap.\n\nint main() {\n  char buf3[0x800];\n  char *dst  \u003d \u0026buf3[1];\n  char *src \u003d \u0026buf3[0x400];\n  memset(buf3, 0, sizeof(buf3));\n  memmove(dst, src, 0x400);\n  printf(\"1: %s\\n\", buf3);\n  return 0;\n}\n\nCalling memcpy() on overlaping regions only works if you assume\nthat memcpy() copies from start to finish. On some architectures,\nit\u0027s more efficient to call memcpy() from finish to start.\n\nThis is also triggering a failure in some of my code.\n\nMore reading:\n* http://lwn.net/Articles/414467/\n* https://bugzilla.redhat.com/show_bug.cgi?id\u003d638477#c31 (comment 31)\n\nChange-Id: I65a51ae3a52dd4af335fe5c278056b8c2cbd8948\n"
    },
    {
      "commit": "6334c662cae4cd9b61f5f3185048b0cd3633dad7",
      "tree": "6214371613d1a579ac61f611af27402d906c7218",
      "parents": [
        "8f08e1c902c726ac5230776c238e5edb6f51f440"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jul 10 10:46:19 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jul 10 10:51:41 2012 -0700"
      },
      "message": "Don\u0027t use -fstack-protector on ssp.c\n\nlibc\u0027s stack protector initialization routine (__guard_setup)\nis in bionic/ssp.c. This code deliberately modifies the stack\ncanary.  This code should never be compiled with -fstack-protector-all\notherwise it will crash (mismatched canary value).\n\nForce bionic/ssp.c to be compiled with -fno-stack-protector\n\nChange-Id: Ib95a5736e4bafe1a460d6b4e522ca660b417d8d6\n"
    },
    {
      "commit": "6331db3fd251ddc350913cc1e8a7941740c25f63",
      "tree": "e9283ee8126ded7ce30d2d7a6f5fd4f66cc16ba2",
      "parents": [
        "5af97ca8514d9fb4175bff3a79abf26889b94530"
      ],
      "author": {
        "name": "Arun Raghavan",
        "email": "arun.raghavan@collabora.co.uk",
        "time": "Tue Jan 10 19:37:32 2012 +0530"
      },
      "committer": {
        "name": "Arun Raghavan",
        "email": "arun.raghavan@collabora.co.uk",
        "time": "Tue Jul 10 10:36:37 2012 +0530"
      },
      "message": "limits.h: Include page.h when relying on PAGE_SIZE\n\nlimits.h relies on PAGE_SIZE being defined without actually including\npage.h. Make sure this is included to avoid compilation failures.\n\nSigned-off-by: Arun Raghavan \u003carun.raghavan@collabora.co.uk\u003e\n"
    },
    {
      "commit": "8f08e1c902c726ac5230776c238e5edb6f51f440",
      "tree": "f9089c8166118cf92ec6882f8f269f9b7c255e2b",
      "parents": [
        "a099e8e7d35a0e740477f9362e9360b42b98d9cd",
        "a3e230d1fa9a5ed773a029e2acc6eb4f3e849ea3"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 09 12:55:32 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 09 12:55:32 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: Add openat, fix bug\""
    },
    {
      "commit": "a3e230d1fa9a5ed773a029e2acc6eb4f3e849ea3",
      "tree": "6f1dbd761142774dc7bed997d14ec4090c874880",
      "parents": [
        "2ddf77b37731dff3a271c1312fc0bef2e7d41473"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 02 12:24:42 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 09 12:30:40 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: Add openat, fix bug\n\nAdd fortify_source support for openat(). This change requires that\nan argument be supplied when using O_CREAT.\n\nFix unnecessary call to __open_2. If, at compile time, we know that\n\"flags\" is constant and DOESN\u0027T contain O_CREAT, the call to __open_2\nis useless.\n\nChange-Id: Ifcd29c4fb25e25656961d7552d672e161f0cfdbd\n"
    },
    {
      "commit": "a099e8e7d35a0e740477f9362e9360b42b98d9cd",
      "tree": "a6369ee8ff2c8218dd6e92eebf84637a863de661",
      "parents": [
        "793e6aedf2dfb6cc9bdf0cf9fd60dd87ec21f658",
        "965dbc6405aa2c3170270cfc53a8d4416444fddb"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 09 12:28:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 09 12:28:35 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: add fgets support.\""
    },
    {
      "commit": "793e6aedf2dfb6cc9bdf0cf9fd60dd87ec21f658",
      "tree": "49ed031c801cbbb423baf37927e4cb83b8833608",
      "parents": [
        "2ddf77b37731dff3a271c1312fc0bef2e7d41473",
        "67636eea20f7789e6689ee8cf6017e7d48735ca1"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 09 11:07:46 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 09 11:07:46 2012 -0700"
      },
      "message": "am 67636eea: am 40e7ed58: Unhide rtld_db_dlactivity()\n\n* commit \u002767636eea20f7789e6689ee8cf6017e7d48735ca1\u0027:\n  Unhide rtld_db_dlactivity()\n"
    },
    {
      "commit": "67636eea20f7789e6689ee8cf6017e7d48735ca1",
      "tree": "d3e4c139b5285fa5bc43c013e8ad7dd5f6d4edb9",
      "parents": [
        "5af97ca8514d9fb4175bff3a79abf26889b94530",
        "40e7ed58d73eae59d0cf2fed61284d16692e307b"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 09 11:05:16 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 09 11:05:16 2012 -0700"
      },
      "message": "am 40e7ed58: Unhide rtld_db_dlactivity()\n\n* commit \u002740e7ed58d73eae59d0cf2fed61284d16692e307b\u0027:\n  Unhide rtld_db_dlactivity()\n"
    },
    {
      "commit": "965dbc6405aa2c3170270cfc53a8d4416444fddb",
      "tree": "7764d865c47bc84041f521ac11748ebe986a8871",
      "parents": [
        "2ddf77b37731dff3a271c1312fc0bef2e7d41473"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jul 03 11:45:31 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 09 09:57:18 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add fgets support.\n\nChange-Id: I8c3410a90c71a3336c4ac8581618fa9330edf5e3\n"
    },
    {
      "commit": "40e7ed58d73eae59d0cf2fed61284d16692e307b",
      "tree": "07def7271e63e1367672dc37bcffe89627f4ad9b",
      "parents": [
        "4d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 02 11:17:04 2012 -0700"
      },
      "committer": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Mon Jul 02 11:17:04 2012 -0700"
      },
      "message": "Unhide rtld_db_dlactivity()\n\nSince linker is built with -fvisibility\u003dhidden rtld_db_dlactivity()\nif hidden from gdb.  Unhide it otherwise gdb may not know linker\nactivity and rescan solib\n\nChange-Id: Ia8cd8d9738c6ea5696ba2ef0ebf2cf783f9ca70a\n"
    },
    {
      "commit": "2ddf77b37731dff3a271c1312fc0bef2e7d41473",
      "tree": "a63e8e83e73929cefe9c97202e89f8aa164143ea",
      "parents": [
        "bd73eede4661298ddbdafa510c3af347683b5f60",
        "6d3f548294631ba15fdf5110a469cb1540461cb1"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Thu Jun 28 14:16:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 28 14:16:10 2012 -0700"
      },
      "message": "Merge \"Modify ion header\""
    },
    {
      "commit": "bd73eede4661298ddbdafa510c3af347683b5f60",
      "tree": "1f456b74c7ad4f9ca906c0f0d2b67c411a77ecf8",
      "parents": [
        "cb228fb4a91bdccfd974b8a4f45e2b6002e90728",
        "8118f62a7d3f1af1edb47e0bc2a49af1d523ae0f"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 27 12:56:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 27 12:56:52 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: add open() checks\""
    },
    {
      "commit": "cb228fb4a91bdccfd974b8a4f45e2b6002e90728",
      "tree": "bef755285588a49afc5344e0bedcab6de517b84e",
      "parents": [
        "b52e4385c403d18a68309e568ac729c787d900c4"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 16:05:19 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 16:05:19 2012 -0700"
      },
      "message": "libc: cleanups\n\nPrefix private functions with underscores, to prevent name\nconflicts.\n\nUse __error__ instead of error, since occasionally programs will\ncreate their own \"#define error ...\".\n\nChange-Id: I7bb171df58aec5627e61896032a140db547fd95d\n"
    },
    {
      "commit": "8118f62a7d3f1af1edb47e0bc2a49af1d523ae0f",
      "tree": "c385eb2c8e0d083fbc9b8715d2f15b3ac0fc6908",
      "parents": [
        "b52e4385c403d18a68309e568ac729c787d900c4"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 15:08:06 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 15:19:12 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add open() checks\n\nAdd a FORTIFY_SOURCE check which requires that you pass a\n\"mode\" argument when calling open(..., O_CREAT). If a mode isn\u0027t\npassed, then the file is created with \"undefined\" permissions.\n\nChange-Id: I4427be4f9ce170c69da01af5b00fb05b03613a28\n"
    },
    {
      "commit": "b52e4385c403d18a68309e568ac729c787d900c4",
      "tree": "ffeaf6389772780623222f84cd1ad8c241e9c38a",
      "parents": [
        "63f99f4a4e05353de2e8ba3d7bd4d882d716167a"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 01:24:17 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 10:39:55 2012 +0200"
      },
      "message": "linker: improve loadable segment protection.\n\nUse the functions in linker_phdr.c to load the PT_LOAD segments\nin memory, and toggle their mapping\u0027s writable protection bit\nas needed. In particular:\n\n  - when loading a library, load the segments then unprotected\n    them to allow relocations to work.\n\n  - when relocating the linker of the executable, unprotect\n    the segments loaded by the kernel to make relocations work\n    too.\n\n  - after all relocations are done, re-protect the segments,\n    and apply GNU RELRO protection if needed.\n\n  - just before calling the destructors, undo the GNU RELRO\n    protection.\n\nChange-Id: I50e709f03958204b8d6140c0f51ebe24fe089a1b\n"
    },
    {
      "commit": "63f99f4a4e05353de2e8ba3d7bd4d882d716167a",
      "tree": "a7a3af579dc0f14191c014543d889237e69916f8",
      "parents": [
        "8941cfa17a60133f3896b84f6517aa849bafb050"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 00:08:39 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 10:39:55 2012 +0200"
      },
      "message": "linker: simplify code for dynamic and ARM exidx sections.\n\nThis moves the code that determines where the .dynamic and .ARM.exidx\nsections are to a single place in soinfo_link_image().\n\nChange-Id: I98adcb440577bed86442349f03f3c629c945efec\n"
    },
    {
      "commit": "8941cfa17a60133f3896b84f6517aa849bafb050",
      "tree": "2d7243b0c0e40a789584b9a09239b55087770e8f",
      "parents": [
        "ff9ff758adf0cf7c4a2df7d75814e41e37301ce2",
        "bea23e59f7145537fd4e600ae67fa92a798872cf"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 01:34:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 26 01:34:41 2012 -0700"
      },
      "message": "Merge \"linker: rename load_offset to load_bias.\""
    },
    {
      "commit": "ff9ff758adf0cf7c4a2df7d75814e41e37301ce2",
      "tree": "db6e5bc6003d836ee1314485bf88452e18649a5d",
      "parents": [
        "48d6c8ed2366c65470af0ff1f32a4c0604bf872f",
        "23363ed7503c25ef4024ce0d517f7415c096645d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 01:34:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 26 01:34:31 2012 -0700"
      },
      "message": "Merge \"linker: avoid mapping the whole library before load.\""
    },
    {
      "commit": "48d6c8ed2366c65470af0ff1f32a4c0604bf872f",
      "tree": "bee86bc92eed9f9cd4ea8cfb599686930990c79f",
      "parents": [
        "c6025b604753ab090b8d6ef5f15b0613d8d19926",
        "a6545f46784e67edd5dbcd2bb714c60549f9192d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 01:34:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 26 01:34:18 2012 -0700"
      },
      "message": "Merge \"linker: Add PAGE_START/OFFSET/END convenience macros\""
    },
    {
      "commit": "c6025b604753ab090b8d6ef5f15b0613d8d19926",
      "tree": "2abf9b04c65bc0d9a65a4580ea9ff06c17e920ea",
      "parents": [
        "0ff08d22f02750a618821cfe25d19a5e0cb20743",
        "c1bd559d5b0fdcc25db2b6ae2705914103b24699"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 26 01:34:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 26 01:34:07 2012 -0700"
      },
      "message": "Merge \"linker: New sources to manage the ELF program header table.\""
    },
    {
      "commit": "0ff08d22f02750a618821cfe25d19a5e0cb20743",
      "tree": "ee319321aafb0b358447d2a5dfa625195d4077c7",
      "parents": [
        "20bc061dc7a03249c90f8765ae757395587ce4f1",
        "5af97ca8514d9fb4175bff3a79abf26889b94530"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 25 14:09:42 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 25 14:09:42 2012 -0700"
      },
      "message": "am 5af97ca8: am c7bab8cb: Merge \"Enable sqrtf() x86 assembly code\"\n\n* commit \u00275af97ca8514d9fb4175bff3a79abf26889b94530\u0027:\n  Enable sqrtf() x86 assembly code\n"
    },
    {
      "commit": "5af97ca8514d9fb4175bff3a79abf26889b94530",
      "tree": "77249db662fa4397d4593e693d1d003155286fb4",
      "parents": [
        "fa136e8ca71cb20956cd1792251869cac8bed257",
        "c7bab8cb8483e7869eabdbd4add7c9e5beeecc80"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 25 14:06:06 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 25 14:06:06 2012 -0700"
      },
      "message": "am c7bab8cb: Merge \"Enable sqrtf() x86 assembly code\"\n\n* commit \u0027c7bab8cb8483e7869eabdbd4add7c9e5beeecc80\u0027:\n  Enable sqrtf() x86 assembly code\n"
    },
    {
      "commit": "c7bab8cb8483e7869eabdbd4add7c9e5beeecc80",
      "tree": "5cd316fe35b52f637fb7a433e43c27901ab75998",
      "parents": [
        "a5948157fd34acb2b1d1bfaf129901af865ab5fc",
        "29aa0099248b3a7ac4e178e15bdcb2edbce2500a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 25 10:46:41 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 25 10:46:41 2012 -0700"
      },
      "message": "Merge \"Enable sqrtf() x86 assembly code\""
    },
    {
      "commit": "bea23e59f7145537fd4e600ae67fa92a798872cf",
      "tree": "b3e7eb1fccbb6a8e0966eed9ec8e62d245f55980",
      "parents": [
        "23363ed7503c25ef4024ce0d517f7415c096645d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 18 23:38:46 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: rename load_offset to load_bias.\n\nThis patch changes the definition of the \u0027load_offset\u0027 field\nin struct soinfo. The field is renamed because it is not the\nbasic load bias to add to every p_vaddr value read from the ELF\nfile to get the corresponding memory address.\n\nThis also slightly simplifies the relocation code.\n\n+ Fix for proper load_bias computation for relocatable executables.\n\nChange-Id: I72502c75a70751cba324deee7d313ae61f96609e\n"
    },
    {
      "commit": "23363ed7503c25ef4024ce0d517f7415c096645d",
      "tree": "2892f3246f211cf3c5a4d17ecec3194d00294bda",
      "parents": [
        "a6545f46784e67edd5dbcd2bb714c60549f9192d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 18 18:13:49 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: avoid mapping the whole library before load.\n\nThis patch changes the load_library() function in the\ndynamic linker to avoid reserving a huge read-only\naddress-space range just to read the ELF header and\nprogram header (which are typically very small and easily\nfit in the first page).\n\nInstead, we use the functions in linker_phdr.c to only\nload the data that we need in a temporary mmap-allocated\npage of memory, which we release when the function exits.\n\nThis avoids issues when loading very large libraries, or\nsimply debug versions that only need to load a tiny percentage\nof their overall file content in RAM.\n\nChange-Id: Id3a189fad2119a870a1b3d43dd81380c54ea6044\n"
    },
    {
      "commit": "a6545f46784e67edd5dbcd2bb714c60549f9192d",
      "tree": "c085649fb2772c21fa01b0dd750038cb41251073",
      "parents": [
        "c1bd559d5b0fdcc25db2b6ae2705914103b24699"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 18 11:15:54 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: Add PAGE_START/OFFSET/END convenience macros\n\nThis patch adds a few macros related to memory pages to help\nclarify some of the code in linker.c\n\nChange-Id: I36c727132d257b1497398dd0a9e8a5a4505467ca\n"
    },
    {
      "commit": "c1bd559d5b0fdcc25db2b6ae2705914103b24699",
      "tree": "14593885df4f31db54a2c615febf4031cc8ea8d4",
      "parents": [
        "20bc061dc7a03249c90f8765ae757395587ce4f1"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 11:21:29 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 25 11:52:40 2012 +0200"
      },
      "message": "linker: New sources to manage the ELF program header table.\n\nThis patch introduces two new source files containing a set of functions\nto manage the program header table in an ELF binary, including the ability\nto load PT_LOAD segments, and apply PT_GNU_RELRO protection.\n\nNote: the files are not used currently, this will appear in a series\n      of future patches that will gradually modify linker.c to use\n      the phdr_table_xxx functions properly.\n\nChange-Id: Ia3d4c1ff5fc3e265d8258b64b492f4e643f51bdc\n"
    },
    {
      "commit": "29aa0099248b3a7ac4e178e15bdcb2edbce2500a",
      "tree": "ca86c9e1e06abc04e5390e91ebd871d0513c14ec",
      "parents": [
        "028ccf5d40dd9a945ea92aa79822c08c6f6aa1d2"
      ],
      "author": {
        "name": "xqian6",
        "email": "xi.qian@intel.com",
        "time": "Mon Jun 25 16:12:06 2012 +0800"
      },
      "committer": {
        "name": "xqian6",
        "email": "xi.qian@intel.com",
        "time": "Mon Jun 25 16:20:09 2012 +0800"
      },
      "message": "Enable sqrtf() x86 assembly code\n\nThis patch can improve the sqrtf() performance.\n\nChange-Id: Ic9d11d6a9ecd9b263f54d4878e13595e136b95ce\n"
    },
    {
      "commit": "20bc061dc7a03249c90f8765ae757395587ce4f1",
      "tree": "41bf1f05ba88f835bd7a47843c4757ed356e4b0c",
      "parents": [
        "63d0ceec75927155947c07bc45cb9fed5e527922"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jun 22 14:52:52 2012 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jun 22 14:56:01 2012 +0400"
      },
      "message": "Add module base to main executable\u0027s ARM_exidx.\n\nBUG:6697872\n\nChange-Id: I448f4b86397307086231776da38a7af334a75fe5\n"
    },
    {
      "commit": "63d0ceec75927155947c07bc45cb9fed5e527922",
      "tree": "ea40b42ebea8dfa43a40218cfb100e324a8fa221",
      "parents": [
        "214feeba196435d26b4b8ba6ca6959695ebb892c",
        "fa136e8ca71cb20956cd1792251869cac8bed257"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Wed Jun 20 19:00:55 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 19:00:55 2012 -0700"
      },
      "message": "am fa136e8c: am a5948157: Merge \"Define __stack_chk_fail_local.S\"\n\n* commit \u0027fa136e8ca71cb20956cd1792251869cac8bed257\u0027:\n  Define __stack_chk_fail_local.S\n"
    },
    {
      "commit": "fa136e8ca71cb20956cd1792251869cac8bed257",
      "tree": "01be8f0d6d1adb19b19e17c401f2df33f2ab57b7",
      "parents": [
        "effc607e87add0aec14fefb4ac1c00d36559149a",
        "a5948157fd34acb2b1d1bfaf129901af865ab5fc"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Wed Jun 20 18:58:18 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 18:58:18 2012 -0700"
      },
      "message": "am a5948157: Merge \"Define __stack_chk_fail_local.S\"\n\n* commit \u0027a5948157fd34acb2b1d1bfaf129901af865ab5fc\u0027:\n  Define __stack_chk_fail_local.S\n"
    },
    {
      "commit": "a5948157fd34acb2b1d1bfaf129901af865ab5fc",
      "tree": "27812988f268a0b66e8e0c7fcfab112bcfb82743",
      "parents": [
        "028ccf5d40dd9a945ea92aa79822c08c6f6aa1d2",
        "6973e3da873c5694d0011734c7c6841a46150cb1"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Wed Jun 20 18:37:47 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 20 18:37:48 2012 -0700"
      },
      "message": "Merge \"Define __stack_chk_fail_local.S\""
    },
    {
      "commit": "6973e3da873c5694d0011734c7c6841a46150cb1",
      "tree": "27812988f268a0b66e8e0c7fcfab112bcfb82743",
      "parents": [
        "028ccf5d40dd9a945ea92aa79822c08c6f6aa1d2"
      ],
      "author": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Wed Jun 20 14:35:51 2012 +0800"
      },
      "committer": {
        "name": "Andrew Hsieh",
        "email": "andrewhsieh@google.com",
        "time": "Thu Jun 21 09:26:33 2012 +0800"
      },
      "message": "Define __stack_chk_fail_local.S\n\nWith -fstack-protector, x86 -m32 needs __stack_chk_fail_local\ndefined in crtbegin_*.o.\n\nInclude __stack_chk_fail_local.S in begin.S otherwise linker\n(which is built w/o crt*) may not link.\n\nChange-Id: Id242fcf3eff157264afe3b04f27288ab7991220a\n"
    },
    {
      "commit": "214feeba196435d26b4b8ba6ca6959695ebb892c",
      "tree": "9ad59307acedf567e16b3aaaccc2e74223ef2682",
      "parents": [
        "823aeb9294870afb1b7c6ce4f196374f0bc9e568",
        "effc607e87add0aec14fefb4ac1c00d36559149a"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 20 08:28:23 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 08:28:23 2012 -0700"
      },
      "message": "am effc607e: Reconcile with jb-release\n\n* commit \u0027effc607e87add0aec14fefb4ac1c00d36559149a\u0027:\n"
    },
    {
      "commit": "effc607e87add0aec14fefb4ac1c00d36559149a",
      "tree": "09b387a5f3721cd23603e9ce269bbac1df9b81c5",
      "parents": [
        "63c4179f5951edc2d68700fe75659fbd34febe63",
        "77093f2a8bfad87572d053f3154cb201a4f59dcd"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 20 08:25:32 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 20 08:25:32 2012 -0700"
      },
      "message": "Reconcile with jb-release\n\nChange-Id: Ia5de9692e507a605d3b6937ec65da26169a3ea8e\n"
    },
    {
      "commit": "77093f2a8bfad87572d053f3154cb201a4f59dcd",
      "tree": "08a43e1df327ce554c6a36e62cc3c6848ec7895c",
      "parents": [
        "4d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3",
        "ff7eae7b08ec84af95325067f8b01fd0697767bc"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Wed Jun 20 06:59:21 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Wed Jun 20 06:59:21 2012 -0700"
      },
      "message": "merge in jb-release history after reset to jb-dev\n"
    },
    {
      "commit": "823aeb9294870afb1b7c6ce4f196374f0bc9e568",
      "tree": "9ad59307acedf567e16b3aaaccc2e74223ef2682",
      "parents": [
        "f2ba5c9afa750cc5b7cd4737071b73ce1f01f252",
        "166b7dbd4aa143fc22f61c64dae1219a910f1a6e"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 14:51:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 19 14:51:28 2012 -0700"
      },
      "message": "Merge \"linker: reduce size by nearly 20KB\""
    },
    {
      "commit": "f2ba5c9afa750cc5b7cd4737071b73ce1f01f252",
      "tree": "fc6981e1b86f32f402c30a5286388e2302a98f3b",
      "parents": [
        "ece8f502ed6f2915bd27187cd016d85f4481f6e1",
        "63c4179f5951edc2d68700fe75659fbd34febe63"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jun 19 11:33:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 11:33:19 2012 -0700"
      },
      "message": "am 63c4179f: am 4d0128f1: Merge \"Minor tweak to get memory around corrupted heap chunks dumped.\" into jb-dev\n\n* commit \u002763c4179f5951edc2d68700fe75659fbd34febe63\u0027:\n  Minor tweak to get memory around corrupted heap chunks dumped.\n"
    },
    {
      "commit": "63c4179f5951edc2d68700fe75659fbd34febe63",
      "tree": "09b387a5f3721cd23603e9ce269bbac1df9b81c5",
      "parents": [
        "c5cab3452d5ced55474e56497594579108670b51",
        "4d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jun 19 11:31:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 11:31:14 2012 -0700"
      },
      "message": "am 4d0128f1: Merge \"Minor tweak to get memory around corrupted heap chunks dumped.\" into jb-dev\n\n* commit \u00274d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3\u0027:\n  Minor tweak to get memory around corrupted heap chunks dumped.\n"
    },
    {
      "commit": "4d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3",
      "tree": "08a43e1df327ce554c6a36e62cc3c6848ec7895c",
      "parents": [
        "b7630f018abc83261acf78e8cf9a88c1df72f7f5",
        "ec2ab73b87bb0c6da24cfc86dbc2d79b9c923da1"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jun 19 11:28:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 19 11:28:15 2012 -0700"
      },
      "message": "Merge \"Minor tweak to get memory around corrupted heap chunks dumped.\" into jb-dev"
    },
    {
      "commit": "ec2ab73b87bb0c6da24cfc86dbc2d79b9c923da1",
      "tree": "ec2466c16de41ca9399ec66187624e8518cdd25f",
      "parents": [
        "e1dd3c287ba836281de0197670018bd9bbfbd62b"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue Jun 19 07:11:38 2012 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue Jun 19 07:11:38 2012 -0700"
      },
      "message": "Minor tweak to get memory around corrupted heap chunks dumped.\n\nChange-Id: I8f72c5c7e23960b13fc53e2354cd74aca8aac3c0\n"
    },
    {
      "commit": "166b7dbd4aa143fc22f61c64dae1219a910f1a6e",
      "tree": "37e0af894f67975779ac6e7a8d4cdf8ba6e77936",
      "parents": [
        "ece8f502ed6f2915bd27187cd016d85f4481f6e1"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 02:02:32 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 19 10:53:11 2012 +0200"
      },
      "message": "linker: reduce size by nearly 20KB\n\nThis patch adds a trivial implementation of snprintf() that calls\nour internal vsnprintf().\n\nInspection of the generated machine code showed that the linker\ncontained a full implementation of stdio\u0027s vfprintf. It was pulled\nin because the pthread implementation uses snprintf() somewhere.\n\nProTip: It\u0027s possible to see why specific objects files are included\nin a final binary by adding the following to your Android.mk, then\nlooking at the content of /tmp/MAP.TXT:\n\n  LOCAL_LDFLAGS +\u003d -Wl,-Map\u003d/tmp/MAP.TXT\n\nChange-Id: I325e71b0cad1d01116a2e00c09e30a80cb716aa3\n"
    },
    {
      "commit": "ece8f502ed6f2915bd27187cd016d85f4481f6e1",
      "tree": "c95b1704f306c3d50d15fdabd1c0bcc55d1cfcf4",
      "parents": [
        "70f6901c3dbe6f09c7fc3ebdb18f715915635d70",
        "420f4939b32dd58677e54181650c60c4d55e3019"
      ],
      "author": {
        "name": "Arve Hjønnevåg",
        "email": "arve@android.com",
        "time": "Thu Jun 14 16:13:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 14 16:13:16 2012 -0700"
      },
      "message": "Merge \"Add watchdog.h\""
    },
    {
      "commit": "70f6901c3dbe6f09c7fc3ebdb18f715915635d70",
      "tree": "eb9e00e1e5e9c7a0c36d04cd17478945dce60d97",
      "parents": [
        "8df49ad2467ec2d48f94a925162185c34bf6e68b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jun 14 13:48:18 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jun 14 13:57:43 2012 -0700"
      },
      "message": "libc: make atoi, atol, and atoll pure functions\n\nChange-Id: Ib831c079c865929b6c91d42f35e117f2e974808f\n"
    },
    {
      "commit": "8df49ad2467ec2d48f94a925162185c34bf6e68b",
      "tree": "00161cd65c6292eebd000699534b554b2c52be0a",
      "parents": [
        "4442d512c66aa32a26fe2e652e55ad05249ea3da"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 13 16:57:27 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jun 14 12:52:42 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add strlcpy / strlcat support\n\nAdd strlcpy / strlcat support to FORTIFY_SOURCE. This allows\nus to do consistency checks on to ensure we don\u0027t overflow buffers\nwhen the compiler is able to tell us the size of the buffer we\u0027re\ndealing with.\n\nUnlike previous changes, this change DOES NOT use the compiler\u0027s\nbuiltin support. Instead, we do everything the compiler would\nnormally do.\n\nChange-Id: I47c099a911382452eafd711f8e9bfe7c2d0a0d22\n"
    },
    {
      "commit": "420f4939b32dd58677e54181650c60c4d55e3019",
      "tree": "3b4d72955ed4c171de0b44862e071b15e6eb8e72",
      "parents": [
        "4442d512c66aa32a26fe2e652e55ad05249ea3da"
      ],
      "author": {
        "name": "Arve Hjønnevåg",
        "email": "arve@android.com",
        "time": "Wed Jun 13 19:22:18 2012 -0700"
      },
      "committer": {
        "name": "Arve Hjønnevåg",
        "email": "arve@android.com",
        "time": "Wed Jun 13 21:58:08 2012 -0700"
      },
      "message": "Add watchdog.h\n\nChange-Id: Ib12d437151ccfbd634e9f01acd8556c79977ca04\n"
    },
    {
      "commit": "4442d512c66aa32a26fe2e652e55ad05249ea3da",
      "tree": "fee2a4723dad2c6b92f28b4772066b75f98e9704",
      "parents": [
        "a5eaa02f623b14a50f965a7279c2a6ae9f78337f",
        "16084168111cd7d2ac8a6b92e6fa6df5696928a5"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 13 21:45:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 13 21:45:52 2012 -0700"
      },
      "message": "Merge \"linker: small code-cleanup\""
    },
    {
      "commit": "a5eaa02f623b14a50f965a7279c2a6ae9f78337f",
      "tree": "118594368871339c5e3756b999fc1dd6da82b71c",
      "parents": [
        "8c54c56723c9b6761e637c81e34b1bd8ee38cf59",
        "b27631b9aee760034ea4aecc5c052e880292c417"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 13 16:13:32 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 13 16:13:32 2012 -0700"
      },
      "message": "Merge \"Don\u0027t mark realloc with __attribute__((malloc))\""
    },
    {
      "commit": "b27631b9aee760034ea4aecc5c052e880292c417",
      "tree": "de164c8c7dda506f635464d2838d99b0a9df78e4",
      "parents": [
        "c2f1d215b1786520fa8c371caa97f062e0bfb513"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 13 15:43:14 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 13 15:43:14 2012 -0700"
      },
      "message": "Don\u0027t mark realloc with __attribute__((malloc))\n\nAccording to\nhttp://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html\n\nrealloc should NOT be marked with __attribute__((malloc)). Quoting:\n\n   realloc-like functions do not have this property as the memory\n   pointed to does not have undefined content.\n\nFor reference, __mallocfunc is defined in sys/cdefs.h as:\n\n    #define __mallocfunc  __attribute__((malloc))\n\nChange-Id: I56083542ba92e4608dd7c55fb5596a138eb50cc9\n"
    },
    {
      "commit": "16084168111cd7d2ac8a6b92e6fa6df5696928a5",
      "tree": "2fdb97283d519d1a54a79962509b54af73048130",
      "parents": [
        "ca622f57480f996f1d7b8d8660fba9e6d717db2d"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 12 16:25:37 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 13 22:47:20 2012 +0200"
      },
      "message": "linker: small code-cleanup\n\nThis patch adds to make the linker a little bit easier to understand\nby making all functions that acts on a sofino object with a soinfo_\nprefix.\n\nThis is to more easily distinguish functions that operate on global\nstate, and those that operate on individual libraries.\n\nThis should be purely stylistic, i.e. no feature/behaviour change.\n\nChange-Id: Ie510d13d743aa4317644caefa9910b8af7e84f44\n"
    },
    {
      "commit": "8c54c56723c9b6761e637c81e34b1bd8ee38cf59",
      "tree": "1f78c35e957f4d410218e66d9a848bcaa20566b4",
      "parents": [
        "ca622f57480f996f1d7b8d8660fba9e6d717db2d",
        "9b549c39c938f54680f282c21e6885f53254bfb0"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 13 11:03:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 13 11:03:42 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: add sprintf / vsprintf support\""
    },
    {
      "commit": "9b549c39c938f54680f282c21e6885f53254bfb0",
      "tree": "8bb4a40d6d9c7f265a58954572097eefa1c2da5e",
      "parents": [
        "c2f1d215b1786520fa8c371caa97f062e0bfb513"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 12 15:59:04 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 13 09:14:30 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add sprintf / vsprintf support\n\nsprintf FORTIFY_SOURCE protections are not available\non clang.\n\nAlso add various __attribute__s to stdio functions.\n\nChange-Id: I936d1f9e55fe53a68885c4524b7b59e68fed218d\n"
    },
    {
      "commit": "ca622f57480f996f1d7b8d8660fba9e6d717db2d",
      "tree": "3d31f47dfb861bb8fb5aa1f9f6d2231b5185b6ac",
      "parents": [
        "8f88aa7d3823ac079fc783651a64dbe986a8205e",
        "d1a6918508c6b9994c6ddffdfe806175d686c83d"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 12 16:34:46 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 12 16:34:46 2012 -0700"
      },
      "message": "Merge \"update filter.h / prctl.h / seccomp.h\""
    },
    {
      "commit": "8f88aa7d3823ac079fc783651a64dbe986a8205e",
      "tree": "b035e97c14afeaa3f4264c7d4a5caa9ec14a7156",
      "parents": [
        "c2f1d215b1786520fa8c371caa97f062e0bfb513",
        "c5cab3452d5ced55474e56497594579108670b51"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Jun 12 15:56:29 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 15:56:29 2012 -0700"
      },
      "message": "am c5cab345: am 028ccf5d: Merge \"Avoid multiple dns lookups for the same query\"\n\n* commit \u0027c5cab3452d5ced55474e56497594579108670b51\u0027:\n  Avoid multiple dns lookups for the same query\n"
    },
    {
      "commit": "c5cab3452d5ced55474e56497594579108670b51",
      "tree": "aa86ebb93eb3a84c1101a2d28edb58c4addc2e1d",
      "parents": [
        "20afd4e70c2f346d7cd03a7a3049f8de2d176d5c",
        "028ccf5d40dd9a945ea92aa79822c08c6f6aa1d2"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Jun 12 15:52:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 15:52:56 2012 -0700"
      },
      "message": "am 028ccf5d: Merge \"Avoid multiple dns lookups for the same query\"\n\n* commit \u0027028ccf5d40dd9a945ea92aa79822c08c6f6aa1d2\u0027:\n  Avoid multiple dns lookups for the same query\n"
    },
    {
      "commit": "d1a6918508c6b9994c6ddffdfe806175d686c83d",
      "tree": "a8ead2cbef6f441af57ca8e239651ae61c1873bc",
      "parents": [
        "c2f1d215b1786520fa8c371caa97f062e0bfb513"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 12 15:42:39 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 12 15:46:31 2012 -0700"
      },
      "message": "update filter.h / prctl.h / seccomp.h\n\nPull in an updated version of filter.h / prctl.h / seccomp.h\nfrom the linux kernel.  Pulled from upstream kernel at\n94fa83c424321189ca24fb6cb4c0d224cdedc72d\n\nThis file was generated using the following command:\n\ncd bionic/libc/kernel/\n./tools/clean_header.py -u ../../../external/kernel-headers/original/linux/seccomp.h\n./tools/clean_header.py -u ../../../external/kernel-headers/original/linux/filter.h\n./tools/clean_header.py -u ../../../external/kernel-headers/original/linux/prctl.h\n\nChange-Id: I1ca996541d05b0d5927ab828a6ce49c09877ea01\n"
    },
    {
      "commit": "028ccf5d40dd9a945ea92aa79822c08c6f6aa1d2",
      "tree": "d7d3270fa4d39d6cb336145791aec0e7d9a4530c",
      "parents": [
        "e0961445124b5ff39412da32578e14e0d1f6afd6",
        "a59cfcfd0821f51ee77f13105099f700ccbf9252"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Jun 12 15:06:23 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 12 15:06:24 2012 -0700"
      },
      "message": "Merge \"Avoid multiple dns lookups for the same query\""
    },
    {
      "commit": "c2f1d215b1786520fa8c371caa97f062e0bfb513",
      "tree": "5fb4e8d1f40d5febb9b605d230654d60af8ed731",
      "parents": [
        "f525fb525b19e76ac9438b7fddeaa3312517a092",
        "cffdf6693ffb50d2a1258d955a162bca83038f25"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 12 08:50:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 12 08:50:57 2012 -0700"
      },
      "message": "Merge \"FORTIFY_SOURCE: add snprintf, vsnprintf\""
    },
    {
      "commit": "f525fb525b19e76ac9438b7fddeaa3312517a092",
      "tree": "ae6a60e43c9bf254795ed44af3719fe1c9896ab5",
      "parents": [
        "c9142d4d8e6b3c55b63b5d707d8d1f6f3ea8734c",
        "20afd4e70c2f346d7cd03a7a3049f8de2d176d5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 17:42:44 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 11 17:42:44 2012 -0700"
      },
      "message": "am 20afd4e7: am e0961445: Merge \"Remove the meaningless on Linux if_dl.h header.\"\n\n* commit \u002720afd4e70c2f346d7cd03a7a3049f8de2d176d5c\u0027:\n  Remove the meaningless on Linux if_dl.h header.\n"
    },
    {
      "commit": "c9142d4d8e6b3c55b63b5d707d8d1f6f3ea8734c",
      "tree": "ae6a60e43c9bf254795ed44af3719fe1c9896ab5",
      "parents": [
        "0f5b48ce284850cd500fbb48a9f7a3c68a84e659",
        "571da80c58e13eac4d4fb29d38342879e5dede13"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 17:42:43 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 11 17:42:43 2012 -0700"
      },
      "message": "am 571da80c: am c75491e2: Merge \"Remove an obsolete jamfile.\"\n\n* commit \u0027571da80c58e13eac4d4fb29d38342879e5dede13\u0027:\n  Remove an obsolete jamfile.\n"
    },
    {
      "commit": "20afd4e70c2f346d7cd03a7a3049f8de2d176d5c",
      "tree": "8aeff6389049ff13c1612e1ff1397d6232735926",
      "parents": [
        "571da80c58e13eac4d4fb29d38342879e5dede13",
        "e0961445124b5ff39412da32578e14e0d1f6afd6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 17:41:10 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 11 17:41:10 2012 -0700"
      },
      "message": "am e0961445: Merge \"Remove the meaningless on Linux if_dl.h header.\"\n\n* commit \u0027e0961445124b5ff39412da32578e14e0d1f6afd6\u0027:\n  Remove the meaningless on Linux if_dl.h header.\n"
    },
    {
      "commit": "571da80c58e13eac4d4fb29d38342879e5dede13",
      "tree": "8b5ca67a2704906583f7b61122e4b899ef2fcd4b",
      "parents": [
        "5ff025a50ccd7d30ea39c989d9ed8b1084ded47f",
        "c75491e291586540c213ae088fc75b71fc4d3752"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 17:41:04 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 11 17:41:04 2012 -0700"
      },
      "message": "am c75491e2: Merge \"Remove an obsolete jamfile.\"\n\n* commit \u0027c75491e291586540c213ae088fc75b71fc4d3752\u0027:\n  Remove an obsolete jamfile.\n"
    },
    {
      "commit": "e0961445124b5ff39412da32578e14e0d1f6afd6",
      "tree": "e1e3e62f226e7bb7192825221cb7192d8fe9ddb2",
      "parents": [
        "c75491e291586540c213ae088fc75b71fc4d3752",
        "c3d45b822cd7d7c359aceba9447a1619b5a2150b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 16:49:57 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 11 16:49:57 2012 -0700"
      },
      "message": "Merge \"Remove the meaningless on Linux if_dl.h header.\""
    },
    {
      "commit": "cffdf6693ffb50d2a1258d955a162bca83038f25",
      "tree": "205f5c66002cd0a5f064081142bf1b54507e9a4e",
      "parents": [
        "85b06f9365ae6776deb9fcf09f450f777ace9e34"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 11 15:50:57 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 11 16:46:16 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add snprintf, vsnprintf\n\nAdd _FORTIFY_SOURCE support for snprintf, vsnprintf\n\nAt this time, we opt out of these protections for clang, as clang\ndoes not implement __builtin_va_arg_pack().\n\nhttp://clang.llvm.org/docs/UsersManual.html#c_unimpl_gcc\n\nChange-Id: I73ebe5ec8dad1dca8898a76d6afb693a25f75375\n"
    },
    {
      "commit": "c75491e291586540c213ae088fc75b71fc4d3752",
      "tree": "9f8c8e41dd9e1d70a9e5526c22168ecffaa0e583",
      "parents": [
        "2b89f1e37df838e466d382fc602728930bad4c68",
        "4c19e4f64f12efc38a878e65509a122921d72e44"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 16:29:46 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 11 16:29:46 2012 -0700"
      },
      "message": "Merge \"Remove an obsolete jamfile.\""
    },
    {
      "commit": "4c19e4f64f12efc38a878e65509a122921d72e44",
      "tree": "9f8c8e41dd9e1d70a9e5526c22168ecffaa0e583",
      "parents": [
        "2b89f1e37df838e466d382fc602728930bad4c68"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 16:17:45 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 16:17:45 2012 -0700"
      },
      "message": "Remove an obsolete jamfile.\n\nWas bionic ever built with jam? Weird!\n\nChange-Id: Iea9a7af8bf46ee8319963e642da48e3bb49f6c60\n"
    },
    {
      "commit": "0f5b48ce284850cd500fbb48a9f7a3c68a84e659",
      "tree": "cd2aed2eef698c5ea3367afa4d2f82628aadf7a0",
      "parents": [
        "7c5c68f5c7b87dfb309f006673fb809c7333dcf7",
        "85b06f9365ae6776deb9fcf09f450f777ace9e34"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 11 16:11:20 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 11 16:11:20 2012 -0700"
      },
      "message": "Merge \"inet_ntop: pass the size of tmp to snprintf()\""
    },
    {
      "commit": "85b06f9365ae6776deb9fcf09f450f777ace9e34",
      "tree": "29a0bf8560a5733ff8979af6d8dfcfa24def7a1a",
      "parents": [
        "76656afc6dd069fcfda5768e6e54bb85e4e99942"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 11 14:29:30 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 11 16:00:52 2012 -0700"
      },
      "message": "inet_ntop: pass the size of tmp to snprintf()\n\nFix runtime error when snprintf() FORTIFY_SOURCE protections are\napplied. The size passed to snprintf() is larger than the tmp\nbuffer size, which results in a runtime assertion failure.\n\nEven though the size passed to snprintf is larger than the buffer,\nthere\u0027s no danger of overwriting the buffer because of the format\nstring passed to snprintf.\n\nChange-Id: I35f0217d25f3b9c6d04c5a76c3238759c235545a\n"
    },
    {
      "commit": "6d3f548294631ba15fdf5110a469cb1540461cb1",
      "tree": "012fe980882b77cc353e5a64f571a927c114aa18",
      "parents": [
        "15ed08d065e865c7a1a2937e429a1fe80a870461"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Mon Jun 11 14:12:57 2012 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Mon Jun 11 15:52:02 2012 -0700"
      },
      "message": "Modify ion header\n\nChange-Id: Ib963e8b064f7883bf098e006c70df20732496100\nSigned-off-by: Rebecca Schultz Zavin \u003crebecca@android.com\u003e\n"
    }
  ],
  "next": "c3d45b822cd7d7c359aceba9447a1619b5a2150b"
}
