)]}'
{
  "commit": "57ce06ac23a8b01d1bd9de2cbc1f79f75b96f0ca",
  "tree": "09b72d23582cf08c139f65c73745f44bfdf81b26",
  "parents": [
    "8862ee58868fc018b6fe179c3b6d61c30867d541"
  ],
  "author": {
    "name": "Pawel Kupczak",
    "email": "pawel.kupczak@intel.com",
    "time": "Thu Aug 28 11:50:15 2025 +0000"
  },
  "committer": {
    "name": "Christina Schimpe",
    "email": "christina.schimpe@intel.com",
    "time": "Thu Sep 04 20:44:48 2025 +0000"
  },
  "message": "gdb, amd64: extend the amd64 prologue analyzer to skip stack alloc\n\nFollowing the previous patch (gdb, amd64: extend the amd64 prologue\nanalyzer to skip register pushes), this patch extends the analyzer\nfurther to be able to skip stack space allocation as the next prologue\npart, for functions with a frame pointer.  Implementation was based\non the i386 counterpart, which already had that functionality.\n\nAs of now, the stack allocation is not skipped.  Examples below use C\nsource listed below, compiled with gcc 11.4.0.\n```\n\tint foo (int n)\n\t{\n\t    int ns[] \u003d { 1, 4, 9, 16, 25 };\n\t    return ns[n];\n\t}\n\n\tint\n\tmain (int argc, char **argv)\n\t{\n\t    return foo (argc);\n\t}\n```\n\nCompiling with \"gcc -O0 -fno-omit-frame-pointer\" we get:\n```\n\t(gdb) b foo\n\tBreakpoint 1 at 0x1151\n\t(gdb) r\n\t...\n\tBreakpoint 1, 0x0000555555555151 in foo ()\n\t(gdb) disassemble\n\tDump of assembler code for function foo:\n\t   0x0000555555555149 \u003c+0\u003e:     endbr64\n\t   0x000055555555514d \u003c+4\u003e:     push   %rbp\n\t   0x000055555555514e \u003c+5\u003e:     mov    %rsp,%rbp\n\t\u003d\u003e 0x0000555555555151 \u003c+8\u003e:     sub    $0x30,%rsp\n\t   0x0000555555555155 \u003c+12\u003e:    mov    %edi,-0x24(%rbp)\n\t...\n```\n\nWith this patch, it gets skipped the same way register pushes are:\n```\n\t(gdb) b foo\n\tBreakpoint 1 at 0x1155\n\t(gdb) r\n\t...\n\tBreakpoint 1, 0x0000555555555155 in foo ()\n\t(gdb) disassemble\n\tDump of assembler code for function foo:\n\t   0x0000555555555149 \u003c+0\u003e:     endbr64\n\t   0x000055555555514d \u003c+4\u003e:     push   %rbp\n\t   0x000055555555514e \u003c+5\u003e:     mov    %rsp,%rbp\n\t   0x0000555555555151 \u003c+8\u003e:     sub    $0x30,%rsp\n\t\u003d\u003e 0x0000555555555155 \u003c+12\u003e:    mov    %edi,-0x24(%rbp)\n\t...\n```\n\nReviewed-By: Guinevere Larsen \u003cguinevere@redhat.com\u003e\nApproved-By: Andrew Burgess \u003caburgess@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b69256509d91b813351544de5372d30c2a85eae5",
      "old_mode": 33261,
      "old_path": "gdb/amd64-tdep.c",
      "new_id": "1afdaa8869a8a0ed1dab32a28c740f86f3522a5d",
      "new_mode": 33261,
      "new_path": "gdb/amd64-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "bcebfe873467930ab39dc54fbca81a9eb117b9f4",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis-no-cfi.S",
      "new_id": "39cf3e6dd6938b01352217243a01f7328f03fbf9",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis-no-cfi.S"
    },
    {
      "type": "modify",
      "old_id": "783ec3350c9fe1e5fd4e4db0348ffb28000181cf",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis-offset.S",
      "new_id": "ea001b36d2bfb201aee96d7d5b07ac94e7fa96ee",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis-offset.S"
    },
    {
      "type": "modify",
      "old_id": "c5ef4f652126598f4231f1740608dc2009accfb3",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis.S",
      "new_id": "691eee03ea5c8dadca7c9434d5801f1d414ac72d",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis.S"
    },
    {
      "type": "modify",
      "old_id": "1ce30b1761f07628d36a4bb1c9b61343bafa75f9",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis.c",
      "new_id": "707b4fb5fa4e723d863b3911847692fefe3cb330",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis.c"
    },
    {
      "type": "modify",
      "old_id": "7ad0c60aa8153b8f94da3147a5884b73c19358b7",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis.exp",
      "new_id": "b2fcbe66034e047f8294a6056a3d362919a5169b",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/amd64-extended-prologue-analysis.exp"
    }
  ]
}
