)]}'
{
  "commit": "e5ebb42ea4e60713dba25894ffc0800531ff608c",
  "tree": "1fc2dcc56ad6b6d7f2102215e9172bb4f6f5a53d",
  "parents": [
    "fadfc0387aca30de08f1be27b9a87f607d2fdbb1"
  ],
  "author": {
    "name": "Simon Marchi",
    "email": "simon.marchi@polymtl.ca",
    "time": "Thu Feb 12 22:47:37 2026 -0500"
  },
  "committer": {
    "name": "Simon Marchi",
    "email": "simon.marchi@polymtl.ca",
    "time": "Fri Feb 13 14:03:21 2026 -0500"
  },
  "message": "gdb/elfread: add debug output for GNU ifunc resolution\n\nAdd some debug prints throughout the ifunc resolution code, to be able\nto better understand what GDB does.  Add the new \"set debug gnu-ifunc\"\nknob to control it.\n\nAdd the debug_prefixed_printf_cond_func macro to implement\ngnu_ifunc_debug_printf_func, that takes an explicit function name.  This\nis needed to avoid showing \"operator()\" as the function name in the\ndebug message.\n\nHere is a sample session with the new debug output enabled.\n\n    (gdb) b the_function\n    [gnu-ifunc] elf_gnu_ifunc_resolve_name: resolving name \"the_function\"\n    [gnu-ifunc] elf_gnu_ifunc_resolve_by_cache: resolving \"the_function\" by cache\n    [gnu-ifunc] elf_gnu_ifunc_resolve_by_cache: cache miss for \"the_function\"\n    [gnu-ifunc] elf_gnu_ifunc_resolve_by_got: resolving \"the_function\" by GOT\n    [gnu-ifunc] elf_gnu_ifunc_resolve_by_got: GOT entry \"the_function@got.plt\" points to 0x7ffff7fb7036\n    [gnu-ifunc] elf_gnu_ifunc_record_cache: recording cache entry for \"the_function\" at 0x7ffff7fb7036\n    [gnu-ifunc] elf_gnu_ifunc_record_cache: minimal symbol \"the_function@plt\" at 0x7ffff7fb7030 does not match addr 0x7ffff7fb7036, not caching\n    [gnu-ifunc] elf_gnu_ifunc_resolve_by_got: GOT entry \"the_function@got.plt\" points to 0x7ffff7fb2036\n    [gnu-ifunc] elf_gnu_ifunc_record_cache: recording cache entry for \"the_function\" at 0x7ffff7fb2036\n    [gnu-ifunc] elf_gnu_ifunc_record_cache: minimal symbol \"the_function@plt\" at 0x7ffff7fb2030 does not match addr 0x7ffff7fb2036, not caching\n    [gnu-ifunc] elf_gnu_ifunc_resolve_by_got: failed to resolve \"the_function\" by GOT\n    [gnu-ifunc] elf_gnu_ifunc_resolve_name: failed to resolve name \"the_function\"\n    Breakpoint 2 at gnu-indirect-function resolver at 0x7ffff7fa80e9\n    (gdb) c\n    Continuing.\n    [gnu-ifunc] elf_gnu_ifunc_resolver_stop: stop on resolver for \"the_function\"\n    [gnu-ifunc] elf_gnu_ifunc_resolver_stop: created resolver return breakpoint at 0x7ffff7fd7186\n    [gnu-ifunc] elf_gnu_ifunc_resolver_return_stop: stop on resolver return\n    [gnu-ifunc] elf_gnu_ifunc_resolver_return_stop: resolver for \"the_function\" returned resolved address\u003d0x7ffff7fad0e9, resolved pc\u003d0x7ffff7fad0e9\n    [gnu-ifunc] elf_gnu_ifunc_record_cache: recording cache entry for \"the_function\" at 0x7ffff7fad0e9\n    [gnu-ifunc] elf_gnu_ifunc_record_cache: cached \"the_function\" -\u003e 0x7ffff7fad0e9 in objfile /home/simark/build/binutils-gdb/gdb/testsuite/outputs/gdb.base/ifunc-resolver/libimpl.so\n\n    Breakpoint 2, the_function_impl_0 (caller_id\u003d1) at /home/simark/src/binutils-gdb/gdb/testsuite/gdb.base/ifunc-resolver-libimpl.c:25\n    25        the_function_last_caller_id \u003d caller_id; /* break-in-impl */\n\nChange-Id: I64f667e3457feaedfe9bb530de58faaf22545fa5\nReviewed-By: Eli Zaretskii \u003celiz@gnu.org\u003e\nApproved-by: Kevin Buettner \u003ckevinb@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fa6e7ca6121901f9f01a496c894191c4a2fe5a1e",
      "old_mode": 33188,
      "old_path": "gdb/NEWS",
      "new_id": "1957e63eae44b58c0c1a90ed8d47f2c6c9b19f0d",
      "new_mode": 33188,
      "new_path": "gdb/NEWS"
    },
    {
      "type": "modify",
      "old_id": "5169be1965c5fd92c85fdc269c05260a386f68e7",
      "old_mode": 33188,
      "old_path": "gdb/doc/gdb.texinfo",
      "new_id": "c614e93b812ef089553a209719fc1cab09227c94",
      "new_mode": 33188,
      "new_path": "gdb/doc/gdb.texinfo"
    },
    {
      "type": "modify",
      "old_id": "722f21bf77536ad26e8c05da32977fb1197195ff",
      "old_mode": 33188,
      "old_path": "gdb/elfread.c",
      "new_id": "7d327674b0598f05954bdeab4c8bf8df071c828b",
      "new_mode": 33188,
      "new_path": "gdb/elfread.c"
    },
    {
      "type": "modify",
      "old_id": "f0edd49faead7e238f9bbd2282b4fa50e3b6f4fb",
      "old_mode": 33188,
      "old_path": "gdbsupport/common-debug.h",
      "new_id": "206a7c96dc1ad645e07162d748f3ed63c760a58b",
      "new_mode": 33188,
      "new_path": "gdbsupport/common-debug.h"
    }
  ]
}
