)]}'
{
  "commit": "af1c8a8d9a60869572921f4d2ef3fdcad4843756",
  "tree": "e17e25d0a7c261b2194212a005e33170a0377555",
  "parents": [
    "0f5116cb492cca755c55ad30ea06be4e7c72a27f"
  ],
  "author": {
    "name": "Aaron Merey",
    "email": "amerey@redhat.com",
    "time": "Tue Mar 19 16:41:48 2024 -0400"
  },
  "committer": {
    "name": "Aaron Merey",
    "email": "amerey@redhat.com",
    "time": "Tue Mar 19 20:43:12 2024 -0400"
  },
  "message": "gdb/debuginfod: Support on-demand debuginfo downloading\n\nAt the beginning of a session, gdb may attempt to download debuginfo\nfor all shared libraries associated with the process or core file\nbeing debugged.  This can be a waste of time and storage space when much\nof the debuginfo ends up not being used during the session.\n\nTo reduce the gdb\u0027s startup latency and to download only the debuginfo\nthat is really needed, this patch adds on-demand downloading of debuginfo.\n\n\u0027set debuginfo enabled on\u0027 now causes gdb to attempt to download a .gdb_index\nfor each shared library instead of its full debuginfo.  Each corresponding\nseparate debuginfo will be deferred until gdb needs to expand symtabs\nassociated with the debuginfo\u0027s index.\n\nBecause these indices are significantly smaller than their corresponding\ndebuginfo, this generally reduces the total amount of data gdb downloads.\nReductions of 80%-95% have been observed when debugging large GUI programs.\n\n    (gdb) set debuginfod enabled on\n    (gdb) start\n    Downloading section .gdb_index for /lib64/libcurl.so.4\n    [...]\n    1826        client-\u003eserver_mhandle \u003d curl_multi_init ();\n    (gdb) step\n    Downloading separate debug info for /lib64/libcurl.so.4\n    Downloading separate debug info for [libcurl dwz]\n    Downloading source file /usr/src/debug/curl-7.85.0-6.fc37.x86_64/build-full/lib/../../lib/multi.c\n    curl_multi_init () at ../../lib/multi.c:457\n    457     {\n    (gdb)\n\nSome of the key functions below include dwarf2_has_separate_index which\ndownloads the separate .gdb_index.  If successful, the shared library\nobjfile owns the index until the separate debug objfile is downloaded\nor confirmed to not be available.\n\nread_full_dwarf_from_debuginfod downloads the full debuginfo and\ninitializes the separate debug objfile.  It is called by functions\nsuch as dwarf2_gdb_index::expand_symtabs_matching and\ndwarf2_base_index_functions::find_pc_sect_compunit_symtab when symtab\nexpansion is required.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "530513c2684e217fb0a1362f2d06a5cd2116a103",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/frame.c",
      "new_id": "d83c591f1c4c07680ff6da3a4976dbd1d118b7c2",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/frame.c"
    },
    {
      "type": "modify",
      "old_id": "2167310fbdf09b4339f70dcc159f5fee41b7d2e6",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/frame.h",
      "new_id": "423a9355b8a4cfa80eebfa56b8e880cc38d4720a",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/frame.h"
    },
    {
      "type": "modify",
      "old_id": "d9047ef46bb2cc5751a7634807bf4e8545de18d3",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/index-cache.c",
      "new_id": "e336d33df080e20624abd760752e1e0138482bdf",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/index-cache.c"
    },
    {
      "type": "modify",
      "old_id": "95f217ed961c758cdc7dd542d97dbc5526f06df5",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/index-cache.h",
      "new_id": "d48b10e15b8d669379892ef2d23e33fe3e6d9d6c",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/index-cache.h"
    },
    {
      "type": "modify",
      "old_id": "bc419ff208f6ad7a40fcda408f86e99e45b6e107",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/public.h",
      "new_id": "d9f91289f3f33f0c9e1e2d301ef2018328da2859",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/public.h"
    },
    {
      "type": "modify",
      "old_id": "bf4f828b007b7023aac65d3b7ac6e7b79d4092b2",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/read-gdb-index.c",
      "new_id": "dc4521900d07355283e259b2c128010fdd4d9ba9",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/read-gdb-index.c"
    },
    {
      "type": "modify",
      "old_id": "65b16719922441aa46cb76bba54f9a3c485c2f0a",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/read.c",
      "new_id": "4012243e242f434df5e8a7de15850a7166a6acc3",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/read.c"
    },
    {
      "type": "modify",
      "old_id": "5ee7e09a74363d46f6546e8dd126df44a5ede561",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/read.h",
      "new_id": "10cb1ee7847fa6a8608137686a68101fe372cade",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/read.h"
    },
    {
      "type": "modify",
      "old_id": "e813fc0fd8eedbed60313f646773f64b06a5f94b",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/section.c",
      "new_id": "0ea9d5baf04768d639c0b7a1e5edf73489c711fa",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/section.c"
    },
    {
      "type": "modify",
      "old_id": "e8a0c4d7a2cfce34db1d7daa39615ccaf95f2949",
      "old_mode": 33188,
      "old_path": "gdb/elfread.c",
      "new_id": "e7f59c1f650c442b46a21a6140ae6461eef36534",
      "new_mode": 33188,
      "new_path": "gdb/elfread.c"
    },
    {
      "type": "modify",
      "old_id": "f1f97040ff0c3716cdd87d8f19d5d90f97a2f28c",
      "old_mode": 33188,
      "old_path": "gdb/frame.c",
      "new_id": "062270fa96b0d743ffc2be4f40567f74b1023d8d",
      "new_mode": 33188,
      "new_path": "gdb/frame.c"
    },
    {
      "type": "modify",
      "old_id": "43d888e2a5a3fbf0f673f07f6904910610ad6e0c",
      "old_mode": 33188,
      "old_path": "gdb/objfile-flags.h",
      "new_id": "08e4a75a9f275e7ca88dadaf1947bdb72dc6f25a",
      "new_mode": 33188,
      "new_path": "gdb/objfile-flags.h"
    },
    {
      "type": "modify",
      "old_id": "1c8f79a2826aec66fe96cc942821b40d8601aa65",
      "old_mode": 33188,
      "old_path": "gdb/objfiles.h",
      "new_id": "8c8f27f87f19184c5f57baa757f14e4599148633",
      "new_mode": 33188,
      "new_path": "gdb/objfiles.h"
    },
    {
      "type": "modify",
      "old_id": "676c3ede3733242081bee651669f96c46bbd30fd",
      "old_mode": 33188,
      "old_path": "gdb/quick-symbol.h",
      "new_id": "8b91b7765d5ae071fa2dc6c9cfda84b4565180da",
      "new_mode": 33188,
      "new_path": "gdb/quick-symbol.h"
    },
    {
      "type": "modify",
      "old_id": "152d8573c9a2b91c593ac8b012126a9beafca487",
      "old_mode": 33188,
      "old_path": "gdb/symfile-debug.c",
      "new_id": "9efa5ff15effd30f19855d1f72576c5f3746cdfb",
      "new_mode": 33188,
      "new_path": "gdb/symfile-debug.c"
    },
    {
      "type": "modify",
      "old_id": "db6d76e78bf58773d599725ec8fff7df914fa778",
      "old_mode": 33188,
      "old_path": "gdb/symfile.c",
      "new_id": "19ca552312fb4dec052783780f7edc9fb765d883",
      "new_mode": 33188,
      "new_path": "gdb/symfile.c"
    },
    {
      "type": "modify",
      "old_id": "33b664f9478996ed37ef0f6350bd094d1c158c27",
      "old_mode": 33188,
      "old_path": "gdb/symtab.c",
      "new_id": "a5337588f715bf45b572a2c39d6b76911a492966",
      "new_mode": 33188,
      "new_path": "gdb/symtab.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e4f05db0a798bf97df62de36b68daaf44d0fca75",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.debuginfod/libsection1.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3c82808e5fe94a4889cb455fc995407177002a11",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.debuginfod/libsection2.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fa9ac536a6e6bed68407575df8140669ddc345ed",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.debuginfod/section.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "35086d1570525a6751bb74a02ca3332e3f0739a7",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.debuginfod/section.exp"
    },
    {
      "type": "modify",
      "old_id": "bd70a1dfcab2538b4b9566bfa7a614702d6251b7",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/lib/debuginfod-support.exp",
      "new_id": "57d761f64a250078db636403b23008a7ce34a267",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/lib/debuginfod-support.exp"
    },
    {
      "type": "modify",
      "old_id": "4d27b60ef4975ec5154bc2282b9d02602db15f89",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/lib/gdb.exp",
      "new_id": "a6539eddda3734edf5c6455998617636af464c10",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/lib/gdb.exp"
    }
  ]
}
