)]}'
{
  "commit": "48b5669c2e26debe49491ecf6e20e82ccf28c15b",
  "tree": "e81883e3483675c101c31e59e23be951cc089a61",
  "parents": [
    "6d3af8c9f6805e935677757d84dd6cfdb5cda261"
  ],
  "author": {
    "name": "Tom Tromey",
    "email": "tromey@adacore.com",
    "time": "Fri Oct 03 10:59:29 2025 -0600"
  },
  "committer": {
    "name": "Tom Tromey",
    "email": "tromey@adacore.com",
    "time": "Tue Oct 07 08:25:06 2025 -0600"
  },
  "message": "Ignore artificial fields in Ada\n\nA user found an unusual Ada situation that DWARF does not readily\nsupport.  Consider this type:\n\n   type Discrete_Typ is tagged null record;\n   type Int_Typ (Is_Static : Boolean) is new Discrete_Typ with null record;\n\n   type Signed_Int_Typ (Is_Static : Boolean) is\n      new Int_Typ (Is_Static \u003d\u003e Is_Static)\n                    with record\n      case Is_Static is\n         when True \u003d\u003e\n            Field : Integer;\n         when others \u003d\u003e\n            null;\n      end case;\n   end record;\n\nHere, Signed_Int_Typ has a variant part where the discriminant is\nstored in a superclass.\n\nAnyway, this code caused gnat-llvm to crash.  While fixing the crash,\nI decided to fix this by emitting an anonymous field in Signed_Int_Typ\nthat represents the discriminant.  This would allow member DIEs to\nrefer to it -- which I suppose is possibly why DWARF specified that\nthe discriminant should be a member of the variant (though I don\u0027t\nreally know; this decision always seemed very strange to me).\n\nMaking the field anonymous lead to the strange error:\n\n    Type ... is not a structure or union type.\n\n... which comes from lookup_struct_elt, which fails when an anonymous\nmember of a structure has a non-composite type.  This patch includes a\nfix for this issue.\n\nAfter fixing that, though I decided it would be better if the\nartificial discriminant were still given a name.  So, this patch\nincludes a change to ada_is_ignored_field to ignore artificial fields.\n\nApproved-By: Andrew Burgess \u003caburgess@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0dfcc104125a9244543f8654fd02966e57adacb2",
      "old_mode": 33188,
      "old_path": "gdb/ada-lang.c",
      "new_id": "cdf7c88d83fffd0e72c5eaeca6c34e5f7bd990b3",
      "new_mode": 33188,
      "new_path": "gdb/ada-lang.c"
    },
    {
      "type": "modify",
      "old_id": "24e6d0bf8f52c581ee3f70f14ea915c51762f480",
      "old_mode": 33188,
      "old_path": "gdb/gdbtypes.c",
      "new_id": "f1c545f173ed23db7cc0a673b453ff0ec999ecf1",
      "new_mode": 33188,
      "new_path": "gdb/gdbtypes.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "231044d1b5570c6b44cb545f46b7b9280b06d252",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.dwarf2/ada-artificial-field.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "88792b8efa2e278ee15f126c4f9f43853311de42",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.dwarf2/ada-artificial-field.exp"
    }
  ]
}
