)]}'
{
  "commit": "4dcc290eb08e9893878647340098e1997d8a269c",
  "tree": "7bae861b2ea0920d87671be4520076f46357e0b8",
  "parents": [
    "b056ed304d37b4f3103f7f77939b92629fbda729"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Mon May 15 17:15:51 2017 -0400"
  },
  "committer": {
    "name": "CQ bot account: commit-bot@chromium.org",
    "email": "commit-bot@chromium.org",
    "time": "Mon May 15 23:33:15 2017 +0000"
  },
  "message": "Fix GOTPCREL accesses to symbols defined outside the module.\n\n5c38c05b2657739daea2ca01a93900e30ee3764f caused foo@GOTPCREL for\nexternal foo to resolve to bcm_redirector_foo. This is morally\nequivalent to using foo@PLT when a pointer to foo is needed. But this\ndoes not work if foo is data. Notably, this ended up mangling\nOPENSSL_ia32cap_P because it failed to recognize it as an symbol in the\nlibrary (but external to the module). It also mangles some things that\nASan emits.\n\n(It also breaks non-NULL function pointer comparisons, but those are\nsilly.)\n\nInstead, apply a variation of the OPENSSL_ia32cap_addr_delta trick that\nworks for the GOT. \"addr_delta\" is really weird, so I\u0027m calling this an\n\"external relocation\". This causes fprintf(stderr) to work and also\nseems to keep ASan compiling. I was unable to reproduce the case that\n5c38c05b2657739daea2ca01a93900e30ee3764f added the bcm_redirector_foo\ntransform for.\n\nAlso tighten up the pattern. No need to reference a bit of memory twice\nsince we just loaded it into a register.\n\nChange-Id: If5520fc0887e83e23a08828e40fbbed9e47d912e\nReviewed-on: https://boringssl-review.googlesource.com/16345\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nCommit-Queue: Adam Langley \u003cagl@google.com\u003e\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\nCQ-Verified: CQ bot account: commit-bot@chromium.org \u003ccommit-bot@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2bfe20df35fba942babee319fd62d0d47fdede17",
      "old_mode": 33188,
      "old_path": "util/fipstools/delocate.go",
      "new_id": "291e9c76d8e4c24cd4f707cf6886beab9818f2e3",
      "new_mode": 33188,
      "new_path": "util/fipstools/delocate.go"
    }
  ]
}
