)]}'
{
  "commit": "b49f56d0aa0bcd8d73e87e6e17ff4fb0efa4c090",
  "tree": "4ecf6348118b8ceab34622f8e50c6091502489ef",
  "parents": [
    "1239e7cf37336d69931a656290c25a5d5455b9cc"
  ],
  "author": {
    "name": "Guinevere Larsen",
    "email": "guinevere@redhat.com",
    "time": "Thu Mar 14 16:14:28 2024 +0100"
  },
  "committer": {
    "name": "Guinevere Larsen",
    "email": "guinevere@redhat.com",
    "time": "Fri Jan 17 11:49:16 2025 -0300"
  },
  "message": "gdb: introduce ability to disable frame unwinders\n\nSometimes, in the GDB testsuite, we want to test the ability of specific\nunwinders to handle some piece of code. Usually this is done by trying\nto outsmart GDB, or by coercing the compiler to remove information that\nGDB would rely on.  Both approaches have problems as GDB gets smarter\nwith time, and that compilers might differ in version and behavior, or\nsimply introduce new useful information. This was requested back in 2003\nin PR backtrace/8434.\n\nTo improve our ability to thoroughly test GDB, this patch introduces a\nnew maintenance command that allows a user to disable some unwinders,\nbased on either the name of the unwinder or on its class. With this\nchange, it will now be possible for GDB to not find any frame unwinders\nfor a given frame, which would previously cause GDB to assert. GDB will\nnow check if any frame unwinder has been disabled, and if some has, it\nwill just error out instead of asserting.\n\nUnwinders can be disabled or re-enabled in 3 different ways:\n* Disabling/enabling all at once (using \u0027-all\u0027).\n* By specifying an unwinder class to be disabled (option \u0027-class\u0027).\n* By specifying the name of an unwinder (option \u0027-name\u0027).\n\nIf you give no options to the command, GDB assumes the input is an\nunwinder class. \u0027-class\u0027 would make no difference if used, is just here\nfor completeness.\n\nThis command is meant to be used once the inferior is already at the\ndesired location for the test. An example session would be:\n\n(gdb) start\nTemporary breakpoint 1, main () at omp.c:17\n17          func();\n(gdb) maint frame-unwinder disable ARCH\n(gdb) bt\n\\#0  main () at omp.c:17\n(gdb) maint frame-unwinder enable ARCH\n(gdb) cont\nContinuing.\n\nThis commit is a more generic version of commit 3c3bb0580be0,\nand so, based on the final paragraph of the commit message:\n    gdb: Add switch to disable DWARF stack unwinders\n\u003c...\u003e\n    If in the future we find ourselves adding more switches to disable\n    different unwinders, then we should probably move to a more generic\n    solution, and remove this patch.\nthis patch also reverts 3c3bb0580be0\n\nBug: https://sourceware.org/bugzilla/show_bug.cgi?id\u003d8434\nCo-Authored-By: Andrew Burgess \u003caburgess@redhat.com\u003e\nReviewed-By: Eli Zaretskii \u003celiz@gnu.org\u003e\nReviewed-by: Thiago Jung Bauermann \u003cthiago.bauermann@linaro.org\u003e\nApproved-By: Andrew Burgess \u003caburgess@redhat.com\u003e\n\ntemp adding completion\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "abc6716feef8350e0fc2c3d856557093893bd2b7",
      "old_mode": 33188,
      "old_path": "gdb/NEWS",
      "new_id": "eec7cf4695df64cdd8ef299e7a309e0d888aa2fb",
      "new_mode": 33188,
      "new_path": "gdb/NEWS"
    },
    {
      "type": "modify",
      "old_id": "2a1c3d027f20859458d7d0508b028a60b8dd37f7",
      "old_mode": 33188,
      "old_path": "gdb/doc/gdb.texinfo",
      "new_id": "b65124d807f06e10606b9630bcdf38cca6c1997b",
      "new_mode": 33188,
      "new_path": "gdb/doc/gdb.texinfo"
    },
    {
      "type": "modify",
      "old_id": "54813d00b0361f1c9e0931d10a3155a398b3c25e",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/frame-tailcall.c",
      "new_id": "2d7ab740f621bf601d257ffa8db9350f5e5e0ec0",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/frame-tailcall.c"
    },
    {
      "type": "modify",
      "old_id": "85e1d59bc09e7a8d26ad64637d94e0a7476435cf",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/frame.c",
      "new_id": "e0e8eb5dbecb188b099d62e28f6dec9115a88f47",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/frame.c"
    },
    {
      "type": "modify",
      "old_id": "f53f4bdd864c7113bfe913e2e301cb5fb0168c11",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/frame.h",
      "new_id": "7ff31904da7eb213a2b02dd1d9d21e845cc160bb",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/frame.h"
    },
    {
      "type": "modify",
      "old_id": "4aa152ff7839d5da544950dbd1ac43f29cc11576",
      "old_mode": 33188,
      "old_path": "gdb/frame-unwind.c",
      "new_id": "fab9b3c981abc3f5ed6d8e91759cedebee93197d",
      "new_mode": 33188,
      "new_path": "gdb/frame-unwind.c"
    },
    {
      "type": "modify",
      "old_id": "3164aa024671db6bb14b5fed11bc3d6d44053a06",
      "old_mode": 33188,
      "old_path": "gdb/frame-unwind.h",
      "new_id": "baf09ed9ab169a5b8cd1d1f9731ae15c0c6fd1bf",
      "new_mode": 33188,
      "new_path": "gdb/frame-unwind.h"
    },
    {
      "type": "modify",
      "old_id": "fe0cfad95bcdb6bb8fb049a82d6ebf556d72a0b7",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.base/frame-info-consistent.exp",
      "new_id": "4f483111a9138a978ff6cfe30659c1e868236b5a",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.base/frame-info-consistent.exp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "70a1c8a60655becee80b805178703239e04d7649",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.base/frame-unwind-disable.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e6f06931c3005e15330110991a2f2795e8ff52e4",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.base/frame-unwind-disable.exp"
    },
    {
      "type": "modify",
      "old_id": "9745076a71423e36429bac29a5c4fb95240fcc63",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.base/maint.exp",
      "new_id": "c77612d845bdc689581498c7919f4d06fc3e695a",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.base/maint.exp"
    }
  ]
}
