)]}'
{
  "commit": "a2e3cce344a8acceda3d21ff561eab32a7942846",
  "tree": "33b82d37be51803289ab226bcad06576bc69b741",
  "parents": [
    "3cb6bc13e32814eab97237793ba6ba357bc72a3d"
  ],
  "author": {
    "name": "Simon Marchi",
    "email": "simon.marchi@polymtl.ca",
    "time": "Thu Jun 26 13:36:58 2025 -0400"
  },
  "committer": {
    "name": "Simon Marchi",
    "email": "simon.marchi@polymtl.ca",
    "time": "Thu Jun 26 14:08:31 2025 -0400"
  },
  "message": "gdb/solib: C++ify solib_ops\n\nConvert solib_ops into an abstract base class (with abstract methods,\nsome of them with default implementations) and convert all the existing\nsolib_ops instances to solib_ops derived classes / implementations.\n\nPrior to this patch, solib_ops is a structure holding function pointers,\nof which there are only a handful of global instances (in the\n`solib-*.c` files).  When passing an `solib_ops *` around, it\u0027s a\npointer to one of these instances.  After this patch, there are no more\nglobal solib_ops instances.  Instances are created as needed and stored\nin struct program_space.  These instances could eventually be made to\ncontain the program space-specific data, which is currently kept in\nper-program space registries (I have some pending patches for that).\n\nPrior to this patch, `gdbarch_so_ops` is a gdbarch method that returns a\npointer to the appropriate solib_ops implementation for the gdbarch.\nThis is replaced with the `gdbarch_make_solib_ops` method, which returns\na new instance of the appropriate solib_ops implementation for this\ngdbarch.  This requires introducing some factory functions for the\nvarious solib_ops implementation, to be used as `gdbarch_make_solib_ops`\ncallbacks.  For instance:\n\n    solib_ops_up\n    make_linux_ilp32_svr4_solib_ops ()\n    {\n      return std::make_unique\u003clinux_ilp32_svr4_solib_ops\u003e ();\n    }\n\nThe previous code is full of cases of tdep files copying some base\nsolib_ops implementation, and overriding one or more function pointer\n(see ppc_linux_init_abi, for instance).  I tried to convert all of this\nis a class hierarchy.  I like that it\u0027s now possible to get a good\nstatic view of all the existing solib_ops variants.  The hierarchy looks\nlike this:\n\n    solib_ops\n    ├── aix_solib_ops\n    ├── darwin_solib_ops\n    ├── dsbt_solib_ops\n    ├── frv_solib_ops\n    ├── rocm_solib_ops\n    ├── svr4_solib_ops\n    │   ├── ilp32_svr4_solib_ops\n    │   ├── lp64_svr4_solib_ops\n    │   ├── linux_ilp32_svr4_solib_ops\n    │   │   ├── mips_linux_ilp32_svr4_solib_ops\n    │   │   └── ppc_linux_ilp32_svr4_solib_ops\n    │   ├── linux_lp64_svr4_solib_ops\n    │   │   └── mips_linux_lp64_svr4_solib_ops\n    │   ├── mips_nbsd_ilp32_svr4_solib_ops\n    │   ├── mips_nbsd_lp64_svr4_solib_ops\n    │   ├── mips_fbsd_ilp32_svr4_solib_ops\n    │   └── mips_fbsd_lp64_svr4_solib_ops\n    └── target_solib_ops\n        └── windows_solib_ops\n\nThe solib-svr4 code has per-arch specialization to provide a\nlink_map_offsets, containing the offsets of the interesting fields in\n`struct link_map` on that particular architecture.  Prior to this patch,\narches would set a callback returning the appropriate link_map_offsets\nby calling `set_solib_svr4_fetch_link_map_offsets`, which also happened\nto set the gdbarch\u0027s so_ops to `\u0026svr_so_ops`.  I converted this to an\nabstract virtual method of `struct svr4_solib_ops`, meaning that all\nclasses deriving from svr4_solib_ops must provide a method returning the\nappropriate link_map_offsets for the architecture.  I renamed\n`set_solib_svr4_fetch_link_map_offsets` to `set_solib_svr4_ops`.  This\nfunction is still necessary because it also calls\nset_gdbarch_iterate_over_objfiles_in_search_order, but if it was not for\nthat, we could get rid of it.\n\nThere is an instance of CRTP in mips-linux-tdep.c, because both\nmips_linux_ilp32_svr4_solib_ops and mips_linux_lp64_svr4_solib_ops need\nto derive from different SVR4 base classes (linux_ilp32_svr4_solib_ops\nand linux_lp64_svr4_solib_ops), but they both want to override the\nin_dynsym_resolve_code method with the same implementation.\n\nThe solib_ops::supports_namespaces method is new: the support for\nnamespaces was previously predicated by the presence or absence of a\nfind_solib_ns method.  It now needs to be explicit.\n\nThere is a new progspace::release_solib_ops method, which is only needed\nfor rocm_solib_ops.  For the moment, rocm_solib_ops replaces and wraps\nthe existing svr4_solib_ops instance, in order to combine the results of\nthe two.  The plan is to have a subsequent patch to allow program spaces to have\nmultiple solib_ops, removing the need for release_solib_ops.\n\nSpeaking of rocm_solib_ops: it previously overrode only a few methods by\ncopying svr4_solib_ops and overwriting some function pointers.  Now, it\nneeds to implement all the methods that svr4_solib_ops implements, in\norder to forward the call.  Otherwise, the default solib_ops method\nwould be called, hiding the svr4_solib_ops implementation.  Again, this\ncan be removed once we have support for multiple solib_ops in a\nprogram_space.\n\nThere is also a small change in how rocm_solib_ops is activated.  Prior\nto this patch, it\u0027s done at the end of rocm_update_solib_list.  Since it\noverrides the function pointer in the static svr4_solib_ops, and then\noverwrites the host gdbarch, so_ops field, it\u0027s something that happens\nonly once.  After the patch though, we need to set rocm_solib_ops in all\nthe program spaces that appear.  We do this in\nrocm_solib_target_inferior_created and in the new\nrocm_solib_target_inferior_execd.  After this, I will explore doing a\nchange where rocm_solib_ops is only set when we detect the ROCm runtime\nis loaded.\n\nChange-Id: I5896b5bcbf8bdb024d67980380feba1ffefaa4c9\nApproved-By: Pedro Alves \u003cpedro@palves.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "998203ce1e2068465460989d70c807c257abca93",
      "old_mode": 33188,
      "old_path": "gdb/Makefile.in",
      "new_id": "fc0c56564c232523b5974a128da6bf58c6bb3160",
      "new_mode": 33188,
      "new_path": "gdb/Makefile.in"
    },
    {
      "type": "modify",
      "old_id": "3049fb0f901c00310246df35535aa5f9bb36bc38",
      "old_mode": 33188,
      "old_path": "gdb/aarch64-fbsd-tdep.c",
      "new_id": "db9b82fa694fbf983603391c33883988044686fb",
      "new_mode": 33188,
      "new_path": "gdb/aarch64-fbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "ff4bf59d4e3e06bd630a960e4fd38c2ee3ca487b",
      "old_mode": 33188,
      "old_path": "gdb/aarch64-linux-tdep.c",
      "new_id": "dd35eaff9143a6d0fecf9dc44d3c27dd591ca0d1",
      "new_mode": 33188,
      "new_path": "gdb/aarch64-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "cd1f76990fa045c618b81c3caa67f8c4a8343e92",
      "old_mode": 33188,
      "old_path": "gdb/alpha-linux-tdep.c",
      "new_id": "8b4b4f1fd496150250c662227b90ad0dce419245",
      "new_mode": 33188,
      "new_path": "gdb/alpha-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "2921340dfe54e4f405652a72e91e3c10be8c3f47",
      "old_mode": 33188,
      "old_path": "gdb/alpha-netbsd-tdep.c",
      "new_id": "0f5e3051cc20991dfd828bcc9c095232a4e4109f",
      "new_mode": 33188,
      "new_path": "gdb/alpha-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "2fc55fdb4604ca04a9701bfa3bf84a91905efa2a",
      "old_mode": 33188,
      "old_path": "gdb/alpha-obsd-tdep.c",
      "new_id": "63f90506af18c618a443127ac9d44561aa11adf2",
      "new_mode": 33188,
      "new_path": "gdb/alpha-obsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "0ccf53a9c58f0bde21a4b260e849beaf3566646c",
      "old_mode": 33188,
      "old_path": "gdb/amd-dbgapi-target.c",
      "new_id": "a0210f4878fa2fa5396125555253ec6b5b1c7a70",
      "new_mode": 33188,
      "new_path": "gdb/amd-dbgapi-target.c"
    },
    {
      "type": "modify",
      "old_id": "dd37ba3b82d22f580b439bc4cef8e42c92bbbf06",
      "old_mode": 33188,
      "old_path": "gdb/amd-dbgapi-target.h",
      "new_id": "fe3a50ba33b022022d278e3a9a3469a19773d54a",
      "new_mode": 33188,
      "new_path": "gdb/amd-dbgapi-target.h"
    },
    {
      "type": "modify",
      "old_id": "35da938d062a64d2edcc4cb663b8d6fec1edbe6f",
      "old_mode": 33188,
      "old_path": "gdb/amd64-darwin-tdep.c",
      "new_id": "c687b1f097a975ffc41c27fe4bc216f670a8bfe3",
      "new_mode": 33188,
      "new_path": "gdb/amd64-darwin-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "2991575b9b6f53506d4db2988c6c6e13a4ade05b",
      "old_mode": 33188,
      "old_path": "gdb/amd64-fbsd-tdep.c",
      "new_id": "12f1e2293962e57402e5f7c24e2a42a7ccccf0f2",
      "new_mode": 33188,
      "new_path": "gdb/amd64-fbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "7cb94d22060c1b70746a259fe3d5c204dad81461",
      "old_mode": 33188,
      "old_path": "gdb/amd64-gnu-tdep.c",
      "new_id": "2b7337ba280602a826ac09d18287564a12f91307",
      "new_mode": 33188,
      "new_path": "gdb/amd64-gnu-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "69fb668bfdc4f659d0725c46604b49654bf9648e",
      "old_mode": 33188,
      "old_path": "gdb/amd64-linux-tdep.c",
      "new_id": "13e9c0e86eab1ac4f85f8304084ef74edd61b131",
      "new_mode": 33188,
      "new_path": "gdb/amd64-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "a2938392d630b29befef3f55c11725e48689ce61",
      "old_mode": 33188,
      "old_path": "gdb/amd64-netbsd-tdep.c",
      "new_id": "3dbbdd984ca7164b79ebbb4619c3ea5c3c5db4ca",
      "new_mode": 33188,
      "new_path": "gdb/amd64-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "b55afde451bb93bb2a042e994cc01ea850bea0d9",
      "old_mode": 33188,
      "old_path": "gdb/amd64-obsd-tdep.c",
      "new_id": "6b60e0aff6d54099c5768e21b9e0ed583984e5d4",
      "new_mode": 33188,
      "new_path": "gdb/amd64-obsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "01409205752ca986929ee090b4c404c7cc0fcb0f",
      "old_mode": 33188,
      "old_path": "gdb/amd64-sol2-tdep.c",
      "new_id": "da551a1d21d67c4b606d749691aaf3fec69ee62f",
      "new_mode": 33188,
      "new_path": "gdb/amd64-sol2-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "ace40847f2ddeb80facf9c318f53a60ce2e3be5b",
      "old_mode": 33188,
      "old_path": "gdb/arc-linux-tdep.c",
      "new_id": "edbb3f87a5e9200759c79f1b2a5253e76d0fa8da",
      "new_mode": 33188,
      "new_path": "gdb/arc-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "b5d3b78096ba14d8a77818634f9745c4fe6be567",
      "old_mode": 33188,
      "old_path": "gdb/arm-fbsd-tdep.c",
      "new_id": "a37d8b76e1d82f8d7e8d3185808c0fd616866c9f",
      "new_mode": 33188,
      "new_path": "gdb/arm-fbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "ce9a24b86b29264a998caafcced71aeb8e3f3e21",
      "old_mode": 33188,
      "old_path": "gdb/arm-linux-tdep.c",
      "new_id": "08526d8e39ddb624e5291689279cdb26496d9209",
      "new_mode": 33188,
      "new_path": "gdb/arm-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "570e26e5a7fbe2d4ea1d928d7265484e5372172f",
      "old_mode": 33188,
      "old_path": "gdb/arm-netbsd-tdep.c",
      "new_id": "82ba0c607a799a57a9b0eb0f993c838092e5a281",
      "new_mode": 33188,
      "new_path": "gdb/arm-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "b97b31610333168b37da6630e1493c646f83ae7e",
      "old_mode": 33188,
      "old_path": "gdb/arm-obsd-tdep.c",
      "new_id": "00e4bfd0b5957637b6679af118629f9764b2ece7",
      "new_mode": 33188,
      "new_path": "gdb/arm-obsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "e9b306809dc153dbe1f83a15769b9d467e7c88ef",
      "old_mode": 33188,
      "old_path": "gdb/configure.tgt",
      "new_id": "255c77e9f8c0d642fa1773b54ae7dfaaf25e6ef5",
      "new_mode": 33188,
      "new_path": "gdb/configure.tgt"
    },
    {
      "type": "modify",
      "old_id": "5f4135a582d149235f111f6ecc50406af0fb5be8",
      "old_mode": 33188,
      "old_path": "gdb/cris-linux-tdep.c",
      "new_id": "a39441eab015d6e5bd76487551c05411a509d648",
      "new_mode": 33188,
      "new_path": "gdb/cris-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "374ed257964bbd1872de0df782cf4e46e6326d36",
      "old_mode": 33188,
      "old_path": "gdb/csky-linux-tdep.c",
      "new_id": "0651645d39c3ec3d09b57e07774e648b629f5f09",
      "new_mode": 33188,
      "new_path": "gdb/csky-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "4dfac76654e87dff7645c2a8f2400b1fa334b4fe",
      "old_mode": 33188,
      "old_path": "gdb/dicos-tdep.c",
      "new_id": "d6bc9a567d973992d37519a5491e2afd920a16da",
      "new_mode": 33188,
      "new_path": "gdb/dicos-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "56456172b97813d930cdc6f94934107fd26592ff",
      "old_mode": 33188,
      "old_path": "gdb/frv-tdep.c",
      "new_id": "b2d6e1a1eabf6ad4869c4c083113510fc35b3d5b",
      "new_mode": 33188,
      "new_path": "gdb/frv-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "07982b40db0f67546658ed8b3ec590e3883cfb8f",
      "old_mode": 33188,
      "old_path": "gdb/frv-tdep.h",
      "new_id": "7b51b428e9c4cbf2f35e0f3df97db6a31ef1f7e3",
      "new_mode": 33188,
      "new_path": "gdb/frv-tdep.h"
    },
    {
      "type": "modify",
      "old_id": "32d16598940b8a6cc7674d007fe5f00adb6ffc68",
      "old_mode": 33188,
      "old_path": "gdb/gdbarch-gen.c",
      "new_id": "fc570d37a8dc1913ba9990881a059db05edbd9b2",
      "new_mode": 33188,
      "new_path": "gdb/gdbarch-gen.c"
    },
    {
      "type": "modify",
      "old_id": "313a8f198fdbcf5cc94d534d647bf4a3f5f6b07f",
      "old_mode": 33188,
      "old_path": "gdb/gdbarch-gen.h",
      "new_id": "281b97b7aa8ce00a350e18fc83d1b92e8da8c5b4",
      "new_mode": 33188,
      "new_path": "gdb/gdbarch-gen.h"
    },
    {
      "type": "modify",
      "old_id": "9feb2cc24e5bd6a125c2e267eab7a265f79903a5",
      "old_mode": 33188,
      "old_path": "gdb/gdbarch.h",
      "new_id": "6accbd2fd5eeeebf6000009c2ec6c47d3b56328e",
      "new_mode": 33188,
      "new_path": "gdb/gdbarch.h"
    },
    {
      "type": "modify",
      "old_id": "ec09d95508891855dd923a116e049b285a86797d",
      "old_mode": 33188,
      "old_path": "gdb/gdbarch_components.py",
      "new_id": "91c867e69bfb0e1b5023771840b24965e2720355",
      "new_mode": 33188,
      "new_path": "gdb/gdbarch_components.py"
    },
    {
      "type": "modify",
      "old_id": "db6c92f8aab5a99a7241dd4a0c62309c9129486a",
      "old_mode": 33188,
      "old_path": "gdb/hppa-bsd-tdep.c",
      "new_id": "715e79457a860c3870026e42ea793328218ef5c2",
      "new_mode": 33188,
      "new_path": "gdb/hppa-bsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "01e2caf193e5807e37e0b3a4cbab10565f4623d4",
      "old_mode": 33188,
      "old_path": "gdb/hppa-linux-tdep.c",
      "new_id": "2eb8d46565049c74fb8c995fe60cbb20d39238cc",
      "new_mode": 33188,
      "new_path": "gdb/hppa-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "184a6cf5a1356bac5d8e2917980cfb7185662f73",
      "old_mode": 33188,
      "old_path": "gdb/i386-darwin-tdep.c",
      "new_id": "a91afa25d0148bda799ab038668e1273c7ac779b",
      "new_mode": 33188,
      "new_path": "gdb/i386-darwin-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "b992d79f63d349f42c4b1ed5688439d0548949a0",
      "old_mode": 33188,
      "old_path": "gdb/i386-fbsd-tdep.c",
      "new_id": "827d53ce5d0cea24f0340401012cb7a9e5f4990d",
      "new_mode": 33188,
      "new_path": "gdb/i386-fbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "58a71775ed9c3f223df5ed08d280a315ecf5cf1f",
      "old_mode": 33188,
      "old_path": "gdb/i386-gnu-tdep.c",
      "new_id": "f944fa5339b78d504d71146ee4c46e2c3ee86cce",
      "new_mode": 33188,
      "new_path": "gdb/i386-gnu-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "606672acb2aa91854ed667cb03ebfb575b74c0a4",
      "old_mode": 33188,
      "old_path": "gdb/i386-linux-tdep.c",
      "new_id": "efbde6a3ccfec496602541f992191729a62be1b7",
      "new_mode": 33188,
      "new_path": "gdb/i386-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "6344d2b704f9a8fe4fe54737ae47e540e9819e71",
      "old_mode": 33188,
      "old_path": "gdb/i386-netbsd-tdep.c",
      "new_id": "a1124d03e4f3e97aee2365743d2f2f0f6a289440",
      "new_mode": 33188,
      "new_path": "gdb/i386-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "4820160517939df36a5e21999aa744bd63da9885",
      "old_mode": 33188,
      "old_path": "gdb/i386-obsd-tdep.c",
      "new_id": "1126597aa6bf5b473c1aa14bc7ee7eb46cf02456",
      "new_mode": 33188,
      "new_path": "gdb/i386-obsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "b552d8433dabc43e86d2385e7be1066bf49bc9b5",
      "old_mode": 33188,
      "old_path": "gdb/i386-sol2-tdep.c",
      "new_id": "4ff08d25dc0050e1f57ff585d54bcd5b59041b9b",
      "new_mode": 33188,
      "new_path": "gdb/i386-sol2-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "d2fe10b9b1498c59a16e34aad3bdfa42abbc70da",
      "old_mode": 33188,
      "old_path": "gdb/ia64-linux-tdep.c",
      "new_id": "6afffeea4e3bda9c39fd713e2bc9a890ead48d8a",
      "new_mode": 33188,
      "new_path": "gdb/ia64-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "36a2c809088efe250bca877401eb359ee3f9d9c5",
      "old_mode": 33188,
      "old_path": "gdb/infcmd.c",
      "new_id": "8978c8a63038d1db39168cc47c49e738863e7f36",
      "new_mode": 33188,
      "new_path": "gdb/infcmd.c"
    },
    {
      "type": "modify",
      "old_id": "ea1a64153d94c544f58e9adcfccc9efc1ff44283",
      "old_mode": 33188,
      "old_path": "gdb/infrun.c",
      "new_id": "05bf6ab77bf1144d143d9bc50329894be35ecb2c",
      "new_mode": 33188,
      "new_path": "gdb/infrun.c"
    },
    {
      "type": "modify",
      "old_id": "1ffbf218c370258da90a5136de64d07a5bb59415",
      "old_mode": 33188,
      "old_path": "gdb/linux-tdep.c",
      "new_id": "5c4bbf665637748ef279870f55f9057b5f0ac5f7",
      "new_mode": 33188,
      "new_path": "gdb/linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "7485fc132a6390102b4709bd743b61ab1ae74dd2",
      "old_mode": 33188,
      "old_path": "gdb/linux-tdep.h",
      "new_id": "3d82ea5bbdf3011aad492ca716f37153aaa0741f",
      "new_mode": 33188,
      "new_path": "gdb/linux-tdep.h"
    },
    {
      "type": "modify",
      "old_id": "4a1ac12e142e756de1ae37a088ae336eb99b764e",
      "old_mode": 33188,
      "old_path": "gdb/loongarch-linux-tdep.c",
      "new_id": "37663382c06550f8d5ed24790e9e4f3c0875765f",
      "new_mode": 33188,
      "new_path": "gdb/loongarch-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "3c583ce7cef10920f22e13a8e2f7b63cb9b92fc8",
      "old_mode": 33188,
      "old_path": "gdb/m32r-linux-tdep.c",
      "new_id": "03000cc99da00a974eba84d8d11d2af9474fad88",
      "new_mode": 33188,
      "new_path": "gdb/m32r-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "05d77a4cf304797a3c2980ad3ecbbf48ec698656",
      "old_mode": 33188,
      "old_path": "gdb/m68k-bsd-tdep.c",
      "new_id": "37c1464b6cc510697dbef49e129a6f3a4c0124a6",
      "new_mode": 33188,
      "new_path": "gdb/m68k-bsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "47f1f5f387fed536d4b554a4efa9e1f03c67f5bc",
      "old_mode": 33188,
      "old_path": "gdb/m68k-linux-tdep.c",
      "new_id": "bd2a14a80da8cd84315d9ac714d3d44f7cf8c0f9",
      "new_mode": 33188,
      "new_path": "gdb/m68k-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "76cf939b542724ea06151126eb0afe049f74cd69",
      "old_mode": 33188,
      "old_path": "gdb/microblaze-linux-tdep.c",
      "new_id": "0fdda189ee9d6b5707d0ed7067e3f52727faf46b",
      "new_mode": 33188,
      "new_path": "gdb/microblaze-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "129f2d1279e10727a9aa9381f587788f29588570",
      "old_mode": 33188,
      "old_path": "gdb/mips-fbsd-tdep.c",
      "new_id": "c1b5f9c20bc5af95ab84136d200e9b21d5bcc49b",
      "new_mode": 33188,
      "new_path": "gdb/mips-fbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "755586cddd4f30694c6bc353f658fbdc7263224e",
      "old_mode": 33188,
      "old_path": "gdb/mips-linux-tdep.c",
      "new_id": "e4fa2438a9fc1909623751977c443553356b28c2",
      "new_mode": 33188,
      "new_path": "gdb/mips-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "4814cd15d0370e2f3907c546b4f70242921270ef",
      "old_mode": 33188,
      "old_path": "gdb/mips-netbsd-tdep.c",
      "new_id": "42eb515bc212b85bd9dd1f115c9caf17d3088e7d",
      "new_mode": 33188,
      "new_path": "gdb/mips-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "aa1070f80a6f432cfa4ab1c29c7f8b970d0acd25",
      "old_mode": 33188,
      "old_path": "gdb/mips64-obsd-tdep.c",
      "new_id": "b9a6fe5812c265c90137b39e8d8ce57da7904f2c",
      "new_mode": 33188,
      "new_path": "gdb/mips64-obsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "7bac6920499ebf41930f700e391137505a52d651",
      "old_mode": 33188,
      "old_path": "gdb/mn10300-linux-tdep.c",
      "new_id": "6c312411d0149125c0715332fd8176c51166bdc9",
      "new_mode": 33188,
      "new_path": "gdb/mn10300-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "acab3025e2af661ec9ba380b76e819fe0b66ccf1",
      "old_mode": 33188,
      "old_path": "gdb/or1k-linux-tdep.c",
      "new_id": "afefefe9c0e99fa6a1f44118352f36c22479d5d3",
      "new_mode": 33188,
      "new_path": "gdb/or1k-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "ccc6db6ef8f67f9d96dd4549ded2a4c1295207ba",
      "old_mode": 33188,
      "old_path": "gdb/ppc-fbsd-tdep.c",
      "new_id": "a6665097333fd24b348dcb7d9236a12f94602352",
      "new_mode": 33188,
      "new_path": "gdb/ppc-fbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "2c280bda7fbb80d776df0cb9f3664cd680b4b664",
      "old_mode": 33188,
      "old_path": "gdb/ppc-linux-tdep.c",
      "new_id": "5067b89cbe0ffb446681493c93eb333315b8a000",
      "new_mode": 33188,
      "new_path": "gdb/ppc-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "d586887e79da03245a83c22e1336ad5487b883f9",
      "old_mode": 33188,
      "old_path": "gdb/ppc-netbsd-tdep.c",
      "new_id": "99135923417c9ce41c3f1ec85ac8985674aebee1",
      "new_mode": 33188,
      "new_path": "gdb/ppc-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "f14505e359f043e92b52f85da0c1e41dcd0765dc",
      "old_mode": 33188,
      "old_path": "gdb/ppc-obsd-tdep.c",
      "new_id": "18f4d79b69d2b05409d137bc7d2220f2bad32a18",
      "new_mode": 33188,
      "new_path": "gdb/ppc-obsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "3d0d677cbe01f02b1cfd93b8907c239a03e04495",
      "old_mode": 33188,
      "old_path": "gdb/progspace.h",
      "new_id": "a761e62b8cc4ad50102f3b0cab0cae6f8968ad33",
      "new_mode": 33188,
      "new_path": "gdb/progspace.h"
    },
    {
      "type": "modify",
      "old_id": "dadfeb989880f85aa5dca0d41663ed8e29d742a6",
      "old_mode": 33188,
      "old_path": "gdb/riscv-fbsd-tdep.c",
      "new_id": "7bdc6e75ccb237038a296ed87991d23e3d4157ba",
      "new_mode": 33188,
      "new_path": "gdb/riscv-fbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "ccac665ecac59f0061070e7a8e3c83cc7ce4f208",
      "old_mode": 33188,
      "old_path": "gdb/riscv-linux-tdep.c",
      "new_id": "e5d77e7f208069b9e9562cbcce14f88b7954f2d2",
      "new_mode": 33188,
      "new_path": "gdb/riscv-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "3e0062f0d0afa78f64532b1cbc30613671ce9e1a",
      "old_mode": 33188,
      "old_path": "gdb/rs6000-aix-tdep.c",
      "new_id": "853a66e65054a4ac004ca879dabc3b33ed25c31b",
      "new_mode": 33188,
      "new_path": "gdb/rs6000-aix-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "22b70914c4899cfa721c584f88aa794a6d82219b",
      "old_mode": 33188,
      "old_path": "gdb/s390-linux-tdep.c",
      "new_id": "66e571d47dd3be5148c8da7c432132e65009ccf5",
      "new_mode": 33188,
      "new_path": "gdb/s390-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "9113963501b6f1315bd50ceb12d50dc404e3156d",
      "old_mode": 33188,
      "old_path": "gdb/sh-linux-tdep.c",
      "new_id": "25781922e5fd4c2c937ee3b7ab16c6482abdc135",
      "new_mode": 33188,
      "new_path": "gdb/sh-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "3c1ae09ee7098ce16e926ce3994abe1f8600bda3",
      "old_mode": 33188,
      "old_path": "gdb/sh-netbsd-tdep.c",
      "new_id": "4b0181bcdecd07bb03cb8cfbf0928079bb571a9c",
      "new_mode": 33188,
      "new_path": "gdb/sh-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "b10e41164bdfa9338122a405a45888f6d0a44c0c",
      "old_mode": 33188,
      "old_path": "gdb/solib-aix.c",
      "new_id": "b246df82561e17d5d028aa81730b9bf8aed85a52",
      "new_mode": 33188,
      "new_path": "gdb/solib-aix.c"
    },
    {
      "type": "modify",
      "old_id": "7a1bc7b4b567b70981fd62421281d61f8dca31dc",
      "old_mode": 33188,
      "old_path": "gdb/solib-aix.h",
      "new_id": "628b7c8df474959c2418ef94905425e13d2f98f8",
      "new_mode": 33188,
      "new_path": "gdb/solib-aix.h"
    },
    {
      "type": "modify",
      "old_id": "88a2962f5dd5f3ac2667a02cb442313ff5c58a20",
      "old_mode": 33188,
      "old_path": "gdb/solib-darwin.c",
      "new_id": "aac8ab2942edd703fe35169ad56a654bcf684f05",
      "new_mode": 33188,
      "new_path": "gdb/solib-darwin.c"
    },
    {
      "type": "modify",
      "old_id": "b96e744669fb7efd742f1561493dcd78593c4bbc",
      "old_mode": 33188,
      "old_path": "gdb/solib-darwin.h",
      "new_id": "f5bcdd124551d75a1faf538f041d6427e74c4003",
      "new_mode": 33188,
      "new_path": "gdb/solib-darwin.h"
    },
    {
      "type": "modify",
      "old_id": "6cc0264b45c2fd757427b5054db7f43550a0b73c",
      "old_mode": 33188,
      "old_path": "gdb/solib-dsbt.c",
      "new_id": "f18d9a2e75e294fc82ada9fc71e0ec1ad16b73f3",
      "new_mode": 33188,
      "new_path": "gdb/solib-dsbt.c"
    },
    {
      "type": "modify",
      "old_id": "d5c52c69e432f3219881bb9789ea5dfd8ab32c0b",
      "old_mode": 33188,
      "old_path": "gdb/solib-dsbt.h",
      "new_id": "d44613c7b248208f4d7c2b18932e3d1d46d2baa5",
      "new_mode": 33188,
      "new_path": "gdb/solib-dsbt.h"
    },
    {
      "type": "modify",
      "old_id": "12d3140b513cd845e4f10ac0e1de67dc53ed90d2",
      "old_mode": 33188,
      "old_path": "gdb/solib-frv.c",
      "new_id": "6165d0bfab7b9547c86fcebf631b97fef4a54f94",
      "new_mode": 33188,
      "new_path": "gdb/solib-frv.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "710a4240870cb83d07d033df0d77eb222d9f7ab7",
      "new_mode": 33188,
      "new_path": "gdb/solib-frv.h"
    },
    {
      "type": "modify",
      "old_id": "bda19ac4b82980349d383cbd8b9289e148e6d97e",
      "old_mode": 33188,
      "old_path": "gdb/solib-rocm.c",
      "new_id": "2d26c3c1c6edabc4ca1f3002d6b2b9b3c8edff0d",
      "new_mode": 33188,
      "new_path": "gdb/solib-rocm.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fd86cf008b2963663619f238ffa5600831f2c60d",
      "new_mode": 33188,
      "new_path": "gdb/solib-svr4-linux.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "623013c3dc2a3259850c1bbf89ffb0e6ad8640fd",
      "new_mode": 33188,
      "new_path": "gdb/solib-svr4-linux.h"
    },
    {
      "type": "modify",
      "old_id": "b5945f5ac82ca54da34b862c185a6af524f19df2",
      "old_mode": 33188,
      "old_path": "gdb/solib-svr4.c",
      "new_id": "9b4cabfd5f4b99a6e444bbfcb768819549d74488",
      "new_mode": 33188,
      "new_path": "gdb/solib-svr4.c"
    },
    {
      "type": "modify",
      "old_id": "1ff9be78a43d993584c18cce7aa9733bf32be2ae",
      "old_mode": 33188,
      "old_path": "gdb/solib-svr4.h",
      "new_id": "b331fa7a32b629673b883f9d25582926ca31f2c6",
      "new_mode": 33188,
      "new_path": "gdb/solib-svr4.h"
    },
    {
      "type": "modify",
      "old_id": "61b841928ff8a6070512a2e5de67bd83b67c8aa5",
      "old_mode": 33188,
      "old_path": "gdb/solib-target.c",
      "new_id": "4f0c0ec3b68d5abdc40366537e93cfd8dd88950c",
      "new_mode": 33188,
      "new_path": "gdb/solib-target.c"
    },
    {
      "type": "modify",
      "old_id": "f8a22fd6f6ad570afaad7c03148fca7aa99a18db",
      "old_mode": 33188,
      "old_path": "gdb/solib-target.h",
      "new_id": "89ae2bc9b9e155b9cc31b7410a814e2340ab867a",
      "new_mode": 33188,
      "new_path": "gdb/solib-target.h"
    },
    {
      "type": "modify",
      "old_id": "fab3ae39c2d0b3eb6316fa0a3269ffed4fd95abe",
      "old_mode": 33188,
      "old_path": "gdb/solib.c",
      "new_id": "e43b1a326f3fd41f72ecd5f0d7e3bebd89d1b419",
      "new_mode": 33188,
      "new_path": "gdb/solib.c"
    },
    {
      "type": "modify",
      "old_id": "09d56c08b9533045860961e9b2d04597875541d5",
      "old_mode": 33188,
      "old_path": "gdb/solib.h",
      "new_id": "b9465e103bdd89c83ba575d7551ce84e5e1c7a36",
      "new_mode": 33188,
      "new_path": "gdb/solib.h"
    },
    {
      "type": "modify",
      "old_id": "26b13e7b62f76da8da2cf8a5c730e96c021b763a",
      "old_mode": 33188,
      "old_path": "gdb/sparc-linux-tdep.c",
      "new_id": "6e23fdd7f9ee0190ad7d8a68cb853f3835915c9e",
      "new_mode": 33188,
      "new_path": "gdb/sparc-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "4938eb561611ab5a63bdb604f546d1eedf4d3932",
      "old_mode": 33188,
      "old_path": "gdb/sparc-netbsd-tdep.c",
      "new_id": "8e8a1ba8d3738d80d59b22ef5a7e714e1d8413d5",
      "new_mode": 33188,
      "new_path": "gdb/sparc-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "fbc351ce0d40b6c045ebad36902b6fcee577c544",
      "old_mode": 33188,
      "old_path": "gdb/sparc-sol2-tdep.c",
      "new_id": "337b9293dd952f047010235be553884a72a547a5",
      "new_mode": 33188,
      "new_path": "gdb/sparc-sol2-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "548f4780c514dc7007c61b2b2f9d98eff144fb66",
      "old_mode": 33188,
      "old_path": "gdb/sparc64-fbsd-tdep.c",
      "new_id": "ba04a711808967e46319b9644b2846879520ea2c",
      "new_mode": 33188,
      "new_path": "gdb/sparc64-fbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "5d7386b11f4b7e12f40eaf39bc11a7a1fe057d54",
      "old_mode": 33188,
      "old_path": "gdb/sparc64-linux-tdep.c",
      "new_id": "373dfb69a262ccef41fdb7e981f2d9054cb25696",
      "new_mode": 33188,
      "new_path": "gdb/sparc64-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "8c9a5c9d720c6488c0f7df30bc8d3fe3033b5905",
      "old_mode": 33188,
      "old_path": "gdb/sparc64-netbsd-tdep.c",
      "new_id": "0227ec4c492dc0f39eb38df8bee54dcb43e669d3",
      "new_mode": 33188,
      "new_path": "gdb/sparc64-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "e09156bd0b692268e2c52190761db4a441bc617c",
      "old_mode": 33188,
      "old_path": "gdb/sparc64-obsd-tdep.c",
      "new_id": "83cc9c081ad56a044d502a2d0181277820c40746",
      "new_mode": 33188,
      "new_path": "gdb/sparc64-obsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "85f4f33aa68f4767bb005120ae384fab86119512",
      "old_mode": 33188,
      "old_path": "gdb/sparc64-sol2-tdep.c",
      "new_id": "6d091f58d32408032c93afeb29d704671ffc359f",
      "new_mode": 33188,
      "new_path": "gdb/sparc64-sol2-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "a063b90ea4c27994e617e6b1999358c85e4aa590",
      "old_mode": 33188,
      "old_path": "gdb/tic6x-linux-tdep.c",
      "new_id": "5b3d402051d2147f4f61ef288b2401b9b75605d1",
      "new_mode": 33188,
      "new_path": "gdb/tic6x-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "54dc6a2ebcf2d6aa1d83b79578d7cda84e9f416f",
      "old_mode": 33188,
      "old_path": "gdb/tilegx-linux-tdep.c",
      "new_id": "f54e2807f5d88d23b2c9cb92c3fd3fb5ea8531c9",
      "new_mode": 33188,
      "new_path": "gdb/tilegx-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "6a3fd88d66d4866d7b5ad12dbed236b965014671",
      "old_mode": 33188,
      "old_path": "gdb/vax-netbsd-tdep.c",
      "new_id": "7781264544758c4a97bbd9efa06bb7584bbaaacb",
      "new_mode": 33188,
      "new_path": "gdb/vax-netbsd-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "1d25c2be1ec1a8fe875822b2fb7ae669767b894e",
      "old_mode": 33188,
      "old_path": "gdb/windows-tdep.c",
      "new_id": "05335d2958794175340bcd116163ef46822580cb",
      "new_mode": 33188,
      "new_path": "gdb/windows-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "8a3534359e2c1c1565c3b0da766df7b11c67de0b",
      "old_mode": 33188,
      "old_path": "gdb/xtensa-linux-tdep.c",
      "new_id": "7792408ee2391f0e340d67d997f9cbfcb3138953",
      "new_mode": 33188,
      "new_path": "gdb/xtensa-linux-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "c0ae87d306bbceff0f211dea33c156d5e499eb21",
      "old_mode": 33188,
      "old_path": "gdb/xtensa-tdep.c",
      "new_id": "8a2f129c7580dd198a6ea9fd8341329d47e559c3",
      "new_mode": 33188,
      "new_path": "gdb/xtensa-tdep.c"
    }
  ]
}
