)]}'
{
  "commit": "133aa00fca6fdd1b168c8ef5e236784ec155c98c",
  "tree": "866c924dbfdbc4bd5025e59bcd5f61b62c4dd919",
  "parents": [
    "46510801b1abf1f3e3451e79534cc6b62514f215"
  ],
  "author": {
    "name": "Martin Storsjo",
    "email": "martin@martin.st",
    "time": "Fri Oct 18 10:43:15 2019 +0000"
  },
  "committer": {
    "name": "Martin Storsjo",
    "email": "martin@martin.st",
    "time": "Fri Oct 18 10:43:15 2019 +0000"
  },
  "message": "[LLD] [COFF] Try to report source locations for duplicate symbols\n\nThis fixes the second part of PR42407.\n\nFor files with dwarf debug info, it manually loads and iterates\n.debug_info to find the declared location of variables, to allow\nreporting them. (This matches the corresponding code in the ELF\nlinker.)\n\nFor functions, it uses the existing getFileLineDwarf which uses\nLLVMSymbolizer for translating addresses to file lines.\n\nIn object files with codeview debug info, only the source location\nof duplicate functions is printed. (And even there, only for the\nfirst input file. The getFileLineCodeView function requires the\nobject file to be fully loaded and initialized to properly resolve\nsource locations, but duplicate symbols are reported at a stage when\nthe second object file isn\u0027t fully loaded yet.)\n\nDifferential Revision: https://reviews.llvm.org/D68975\n\ngit-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375218 91177308-0d34-0410-b5e6-96231b3b80d8\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d1ef20140164255747155c992f881259c9918971",
      "old_mode": 33188,
      "old_path": "COFF/InputFiles.cpp",
      "new_id": "8770a870ddb8f1a11c88dddc077a23cb1921e0c3",
      "new_mode": 33188,
      "new_path": "COFF/InputFiles.cpp"
    },
    {
      "type": "modify",
      "old_id": "108a4caacd695071380915a1013e0f3e886fcfc4",
      "old_mode": 33188,
      "old_path": "COFF/InputFiles.h",
      "new_id": "d3f4cd7bb2f5691e3d3fbae81e2c40a9b77717b4",
      "new_mode": 33188,
      "new_path": "COFF/InputFiles.h"
    },
    {
      "type": "modify",
      "old_id": "2d971a023af377f79eec3067492edc19c0553614",
      "old_mode": 33188,
      "old_path": "COFF/SymbolTable.cpp",
      "new_id": "183761f1c19836420d5d0a2369c65075ca999f3d",
      "new_mode": 33188,
      "new_path": "COFF/SymbolTable.cpp"
    },
    {
      "type": "modify",
      "old_id": "4ae818ef292ebb9065cf1c2656bc79235ff8f357",
      "old_mode": 33188,
      "old_path": "COFF/SymbolTable.h",
      "new_id": "cd8a53dcecdcdbf6433f15a0f9d16bbd192e158c",
      "new_mode": 33188,
      "new_path": "COFF/SymbolTable.h"
    },
    {
      "type": "modify",
      "old_id": "eaaede537b2d4878142e847904c2f774798cf256",
      "old_mode": 33188,
      "old_path": "test/COFF/conflict-mangled.test",
      "new_id": "381c03568331b03f3de53271a4d83e2be1da5d28",
      "new_mode": 33188,
      "new_path": "test/COFF/conflict-mangled.test"
    },
    {
      "type": "modify",
      "old_id": "ae8e6c8ad327804e9a1afd4bf56e85f6f29d197a",
      "old_mode": 33188,
      "old_path": "test/COFF/conflict.test",
      "new_id": "b46895638a8301d8283a995afcc39dfb03f8ac97",
      "new_mode": 33188,
      "new_path": "test/COFF/conflict.test"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2075cc3646621613e8556d1da3c222dcf47f03f2",
      "new_mode": 33188,
      "new_path": "test/COFF/duplicate-cv.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b81c13c4300ae2d2e8506cdaac17239e73bff465",
      "new_mode": 33188,
      "new_path": "test/COFF/duplicate-dwarf.s"
    },
    {
      "type": "modify",
      "old_id": "0c0f3513a30ccbde9e681c8bf53eb854f9be2eaf",
      "old_mode": 33188,
      "old_path": "test/COFF/duplicate.test",
      "new_id": "76c88b070ff3751129b9c910df03abc3a007212d",
      "new_mode": 33188,
      "new_path": "test/COFF/duplicate.test"
    }
  ]
}
