)]}'
{
  "commit": "1e5987635cc8bf99e8a20d240da80bd6f0f793f7",
  "tree": "71b3c644dab4a84570827c63ecd01185129631ce",
  "parents": [
    "be1d7388b349e86bc2fc1b8769902875e732918f"
  ],
  "author": {
    "name": "fanzha02",
    "email": "fannie.zhang@arm.com",
    "time": "Thu Apr 29 17:02:53 2021 +0800"
  },
  "committer": {
    "name": "Ian Lance Taylor",
    "email": "iant@google.com",
    "time": "Fri Apr 22 04:42:23 2022 +0000"
  },
  "message": "cmd/compile: enable Asan check for global variables\n\nWith this patch, -asan option can detect the error memory\naccess to global variables.\n\nSo this patch makes a few changes:\n\n1. Add the asanregisterglobals runtime support function,\nwhich calls asan runtime function _asan_register_globals\nto register global variables.\n\n2. Create a new initialization function for the package\nbeing compiled. This function initializes an array of\ninstrumented global variables and pass it to function\nruntime.asanregisterglobals. An instrumented global\nvariable has trailing redzone.\n\n3. Writes the new size of instrumented global variables\nthat have trailing redzones into object file.\n\n4. Notice that the current implementation is only compatible with\nthe ASan library from version v7 to v9. Therefore, using the\n-asan option requires that the gcc version is not less than 7\nand the clang version is less than 4, otherwise a segmentation\nfault will occur. So this patch adds a check on whether the compiler\nbeing used is a supported version in cmd/go.\n\nChange-Id: I664e74dcabf5dc7ed46802859174606454e8f1d3\nReviewed-on: https://go-review.googlesource.com/c/go/+/321715\nReviewed-by: Keith Randall \u003ckhr@google.com\u003e\nReviewed-by: Keith Randall \u003ckhr@golang.org\u003e\nRun-TryBot: Fannie Zhang \u003cFannie.Zhang@arm.com\u003e\nReviewed-by: Ian Lance Taylor \u003ciant@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ff578ac63e1cdd26d95a52e87e5a747e078475a4",
      "old_mode": 33188,
      "old_path": "misc/cgo/testsanitizers/asan_test.go",
      "new_id": "23392c00f6d1dafbfe647e40ba03d055658b913e",
      "new_mode": 33188,
      "new_path": "misc/cgo/testsanitizers/asan_test.go"
    },
    {
      "type": "modify",
      "old_id": "05b77932b4cbab8cd7fc36fc34a27e60a3af26da",
      "old_mode": 33188,
      "old_path": "misc/cgo/testsanitizers/cc_test.go",
      "new_id": "ee3c3bf28ccb706f5cf95d53c08e067d1eb14938",
      "new_mode": 33188,
      "new_path": "misc/cgo/testsanitizers/cc_test.go"
    },
    {
      "type": "modify",
      "old_id": "39ce8e66f7313ebb94b7975075b5593eadbc6750",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/base/base.go",
      "new_id": "5e1493e275a34fda7252a1a75b063037b9483e28",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/base/base.go"
    },
    {
      "type": "modify",
      "old_id": "fe8b6e9d4589478dc15c229a337bfe3bc5b738f9",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/gc/obj.go",
      "new_id": "fea2df85e5fc5decf7d83e60432e4dfcf4dfce26",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/gc/obj.go"
    },
    {
      "type": "modify",
      "old_id": "9a42b5afd1734dfccaef061777964c3bdc836b59",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/noder.go",
      "new_id": "c4c2db5f78a2d03fdba081786c4d1c4f0c84e790",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/noder.go"
    },
    {
      "type": "modify",
      "old_id": "e8dbaac1613e90c4ceebac3ce113668de06fec43",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/object.go",
      "new_id": "ee9e0e26800d4807eaf4d2d521e27ba94a0e78a4",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/object.go"
    },
    {
      "type": "modify",
      "old_id": "1350c22467f98ac9314e07816d0b86ab9ffda8f6",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/reader.go",
      "new_id": "10861717f3d3f3e7742f2a89041e832452e91b4e",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/reader.go"
    },
    {
      "type": "modify",
      "old_id": "32e95bedc23e5f4476b2cc091a7e8ae8baf99d4a",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/pkginit/init.go",
      "new_id": "d94482a962d2c4199ba9e5824a630dde390dc19f",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/pkginit/init.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7276791d6e961285a8ea0f5ee0a31e491e06d2e9",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/pkginit/initAsanGlobals.go"
    },
    {
      "type": "modify",
      "old_id": "6fdb4f93a330c2bbedbd8fb9261bb140f19dfb07",
      "old_mode": 33188,
      "old_path": "src/cmd/go/alldocs.go",
      "new_id": "7193ab6c7edfad2c4c53ae9b93a2241ba30670ee",
      "new_mode": 33188,
      "new_path": "src/cmd/go/alldocs.go"
    },
    {
      "type": "modify",
      "old_id": "e9a8ee6cb3a5cc0b7299c22f36fe5abb65ae6aee",
      "old_mode": 33188,
      "old_path": "src/cmd/go/internal/work/build.go",
      "new_id": "d69eb7a9bf7e816882b240a5f45d006ec644bd8a",
      "new_mode": 33188,
      "new_path": "src/cmd/go/internal/work/build.go"
    },
    {
      "type": "modify",
      "old_id": "26192ecaed11cad5ebcbbd6c21ba7b9d0462777c",
      "old_mode": 33188,
      "old_path": "src/cmd/go/internal/work/init.go",
      "new_id": "22e29e87f40efe39721553201c540d733ffe9114",
      "new_mode": 33188,
      "new_path": "src/cmd/go/internal/work/init.go"
    },
    {
      "type": "modify",
      "old_id": "8c41e418f7ce83be0e3dd843929596743a5f439b",
      "old_mode": 33188,
      "old_path": "src/runtime/asan.go",
      "new_id": "25b83277e6d7a1ef638e136ec06a52cd094c2cf7",
      "new_mode": 33188,
      "new_path": "src/runtime/asan.go"
    },
    {
      "type": "modify",
      "old_id": "bab2362c51e3125865e88ce9c8b2f21c928e4060",
      "old_mode": 33188,
      "old_path": "src/runtime/asan/asan.go",
      "new_id": "3e41d60d93c7a3344936c317dc304fc6623404ff",
      "new_mode": 33188,
      "new_path": "src/runtime/asan/asan.go"
    },
    {
      "type": "modify",
      "old_id": "d5478d6bee87b48efebbdcba565b98f52243b9d0",
      "old_mode": 33188,
      "old_path": "src/runtime/asan0.go",
      "new_id": "0948786200abdd3cc1e002389e9509a6b7a59a44",
      "new_mode": 33188,
      "new_path": "src/runtime/asan0.go"
    },
    {
      "type": "modify",
      "old_id": "3857350020241c7b5506462610595257362b81ee",
      "old_mode": 33188,
      "old_path": "src/runtime/asan_amd64.s",
      "new_id": "0489aa86dd44dc82fec45b6be6632397cc083e4a",
      "new_mode": 33188,
      "new_path": "src/runtime/asan_amd64.s"
    },
    {
      "type": "modify",
      "old_id": "5ed03c932bd8803697e0af5e7679bbc36b527c3c",
      "old_mode": 33188,
      "old_path": "src/runtime/asan_arm64.s",
      "new_id": "697c98206ea569d3a6059853544bf1e33eb0a33c",
      "new_mode": 33188,
      "new_path": "src/runtime/asan_arm64.s"
    }
  ]
}
