)]}'
{
  "commit": "997992d728a6ae5f5b9ee9a4a117d554041e6f45",
  "tree": "0c5e4538967a1f533e443266859e0567ad89c9f0",
  "parents": [
    "1ade2c47f075d981e5c9d23276530778abb3d8ab"
  ],
  "author": {
    "name": "Yun Peng",
    "email": "pcloudy@google.com",
    "time": "Tue Apr 18 13:33:28 2017 +0200"
  },
  "committer": {
    "name": "Klaus Aehlig",
    "email": "aehlig@google.com",
    "time": "Tue Apr 18 15:26:12 2017 +0200"
  },
  "message": "Generating PDB files on Windows\n\n1. Add /Z7 as compiler flag in CROSSTOOL, this causes full debugging\n   infomation built into object files, no PDB file is generated.\n\n2. Add /DEBUG as linker flag so that a PDB file will be generated for\n   executable or dll.\n     * /DEBUG:FULL for dbg mode. the full PDB can be used to debug the\n       executable when no other build products are available, such as\n       when the executable is deployed.\n     * /DEBUG:FASTLINK for fastbuild mode. object files are still needed\n       when debugging the executable, but linking speed can be two to four\n       times faster that full PDB generation.\n     * No option is added for opt mode.\n     More detailed info: https://msdn.microsoft.com/en-us/library/xe4t6fc1.aspx\n\n3. Add an empty feature in MSVC CROSSTOOL to tell Bazel we need PDB file\n\n4. Add PDB file artifact in an output named pdb_file of cc_binary,\n   then you can build the pdb file by bazel build //foo/bar:bin --output_groups\u003dpdb_file\n\n5. Add test for PDB file generation\n\nChange-Id: Ia5096470187ebca72f2c804f32d5b723f40c0b85\nPiperOrigin-RevId: 153449059\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9b9ae3118faae8fc5620cee2574eda3631844375",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java",
      "new_id": "ca98d7bf616c8a28167873b39d3bdc00ac8b7ed0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java"
    },
    {
      "type": "modify",
      "old_id": "698353a1052d8711bfbb9ea21d1ec7f658dcf3b4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java",
      "new_id": "6cad3deceec11b5ab7d7c2359a9379e1bade4e25",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java"
    },
    {
      "type": "modify",
      "old_id": "5f164990af32266ff9289924841c85c514007cad",
      "old_mode": 33261,
      "old_path": "src/test/shell/bazel/bazel_windows_example_test.sh",
      "new_id": "e62dc95b1cf6533e7e4aa02cc9e91a6fac4ddc8a",
      "new_mode": 33261,
      "new_path": "src/test/shell/bazel/bazel_windows_example_test.sh"
    },
    {
      "type": "modify",
      "old_id": "60fb955e95e4460311b9247e7b8be836ceeec3cd",
      "old_mode": 33188,
      "old_path": "tools/cpp/CROSSTOOL.tpl",
      "new_id": "8bf57e58083c6697318869ff1979e7b7581de430",
      "new_mode": 33188,
      "new_path": "tools/cpp/CROSSTOOL.tpl"
    },
    {
      "type": "modify",
      "old_id": "0695593d5fca8eb682f2c904b534522a1cfe75fa",
      "old_mode": 33188,
      "old_path": "tools/cpp/wrapper/bin/pydir/msvc_tools.py.tpl",
      "new_id": "127aa87c06a429c35e0c6cea3788e44a37239e66",
      "new_mode": 33188,
      "new_path": "tools/cpp/wrapper/bin/pydir/msvc_tools.py.tpl"
    }
  ]
}
