)]}'
{
  "commit": "ff62d39aa4999f44ac79360dee6357fc69d4e322",
  "tree": "70213c3c357a5e93fa6ce54837100045306aa70e",
  "parents": [
    "02ecff0c714254cd5a67b55a6d11d62cfd904dbc"
  ],
  "author": {
    "name": "Thiago Jung Bauermann",
    "email": "thiago.bauermann@linaro.org",
    "time": "Thu May 01 18:12:19 2025 -0300"
  },
  "committer": {
    "name": "Thiago Jung Bauermann",
    "email": "thiago.bauermann@linaro.org",
    "time": "Fri Aug 29 18:35:58 2025 -0300"
  },
  "message": "GDB, gdbserver: aarch64-linux: Initial Guarded Control Stack support\n\nAdd the org.gnu.gdb.aarch64.gcs feature with the GCSPR register, and the\norg.gnu.gdb.aarch64.gcs.linux feature with \"registers\" to represent the\nLinux kernel ptrace and prctl knobs that enable and lock specific GCS\nfunctionality.\n\nThis code supports GCS only in Linux userspace applications, so the\nGCSPR that is exposed is the one at EL0.\n\nAlso, support for calling inferior functions is enabled by adding an\nimplementation for the shadow_stack_push gdbarch method.\n\nIf for some reason a target description contains the\norg.gnu.gdb.aarch64.gcs feature but not the\norg.gnu.gdb.aarch64.gcs.linux feature then GCS support is disabled and\nGDB continues the debugging session.  Features that need GCS\nsupport (for example, calling inferior functions) will not work and the\ninferior will get a segmentation fault signal instead.  There\u0027s a\ntestcase for this scenario but it only checks the native debugging case,\neven though in practice this problem would only occur in remote\ndebugging with a broken stub or gdbserver.  I tested manually with a\ngdbserver hacked to send a broken target description and it worked as\ndescribed.\n\nTestcases gdb.arch/aarch64-gcs.exp, gdb.arch/aarch64-gcs-core.exp and\ngdb.arch/aarch64-gcs-wrong-tdesc.exp are included to cover the added\nfunctionality.\n\nReviewed-By: Christina Schimpe \u003cchristina.schimpe@intel.com\u003e\nApproved-By: Luis Machado \u003cluis.machado@arm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "725c6325ec6980bfaec048295a0a4c0d81ad0783",
      "old_mode": 33188,
      "old_path": "gdb/aarch64-linux-nat.c",
      "new_id": "89ecedda57d480e84b5f6247488c56cdf82d5dc2",
      "new_mode": 33188,
      "new_path": "gdb/aarch64-linux-nat.c"
    },
    {
      "type": "modify",
      "old_id": "dd35eaff9143a6d0fecf9dc44d3c27dd591ca0d1",
      "old_mode": 33188,
      "old_path": "gdb/aarch64-linux-tdep.c",
      "new_id": "7d360ebceacfaab97f9995b6d55a09c20e889165",
      "new_mode": 33188,
      "new_path": "gdb/aarch64-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "248aa3ab4daddcca399a9c2045e29f9458a300ce",
      "old_mode": 33188,
      "old_path": "gdb/aarch64-tdep.c",
      "new_id": "04f3946b5ea31cf5d9bac7fe764ae9ca01cbd756",
      "new_mode": 33188,
      "new_path": "gdb/aarch64-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "3b8dcc26545b5365f8abdd8d58db7059c247b482",
      "old_mode": 33188,
      "old_path": "gdb/aarch64-tdep.h",
      "new_id": "54ca641a35a36eeee74f842cb851391f667feea3",
      "new_mode": 33188,
      "new_path": "gdb/aarch64-tdep.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9366caa7289a130ce2b94640ff256bdc85c59048",
      "new_mode": 33188,
      "new_path": "gdb/arch/aarch64-gcs-linux.h"
    },
    {
      "type": "modify",
      "old_id": "3e1ca0547340d536971cd9ec23bc27b74f22acc0",
      "old_mode": 33188,
      "old_path": "gdb/arch/aarch64.c",
      "new_id": "dff2bc16003adab6d127c026d61178fbcd92cbbc",
      "new_mode": 33188,
      "new_path": "gdb/arch/aarch64.c"
    },
    {
      "type": "modify",
      "old_id": "ee18b74b80f58161fba1eeb9a6d799ab49a315fa",
      "old_mode": 33188,
      "old_path": "gdb/arch/aarch64.h",
      "new_id": "679d845df74ee5a9f8256b58508e306cea036f91",
      "new_mode": 33188,
      "new_path": "gdb/arch/aarch64.h"
    },
    {
      "type": "modify",
      "old_id": "b206ddd53031478f319ff7b8020c669ccec20cf8",
      "old_mode": 33188,
      "old_path": "gdb/features/Makefile",
      "new_id": "d17c349b6cfa105aa60156c409958d08ba9fe38d",
      "new_mode": 33188,
      "new_path": "gdb/features/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6b0d25b4518c7c898904b4f7efa647a646a6d7a1",
      "new_mode": 33188,
      "new_path": "gdb/features/aarch64-gcs-linux.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8d9d2ceb926093961e9ada5a90a750e43c23fb42",
      "new_mode": 33188,
      "new_path": "gdb/features/aarch64-gcs-linux.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2b2caf29cc8c8887724462ed2032eb8eff9f43ae",
      "new_mode": 33188,
      "new_path": "gdb/features/aarch64-gcs.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bbee5e001722f75648c91c4ddc4d1abc2880819f",
      "new_mode": 33188,
      "new_path": "gdb/features/aarch64-gcs.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "77672047556f7a7ebfab5e0e0a7aff06f9d211bb",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/aarch64-gcs-core.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e75e63991dd5bd115311cd8a6db981c870c0ab93",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/aarch64-gcs-core.exp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "056ab58b82a77f479c41a835b33aad0c28dbc060",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/aarch64-gcs-tdesc-without-linux.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "10cf749f3e66d812ce12b0c626359151a348e481",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/aarch64-gcs-wrong-tdesc.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f0508cdc247aabf232e69783d88eae53e7634457",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/aarch64-gcs-wrong-tdesc.exp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39519e46705e322aeb6b47ea68a6d8c595db7410",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/aarch64-gcs.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3309059bfd8b8882684895614f798b807681c34b",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/aarch64-gcs.exp"
    },
    {
      "type": "modify",
      "old_id": "203955d9eaab96bbf799ad30c9a3ddf994bb91bf",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/lib/gdb.exp",
      "new_id": "9970af675d0316804c8ba4dbff40b1535d4360a1",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/lib/gdb.exp"
    },
    {
      "type": "modify",
      "old_id": "2eb3af659ad19671a7997437c57a50963c05ddca",
      "old_mode": 33188,
      "old_path": "gdbserver/linux-aarch64-low.cc",
      "new_id": "9d3ac803e7b144227c1c69b7b8474dd06885661c",
      "new_mode": 33188,
      "new_path": "gdbserver/linux-aarch64-low.cc"
    }
  ]
}
