)]}'
{
  "commit": "b1ecccc4cd06b922c2ea916f2902868de87f8a09",
  "tree": "24cc4fe619bd848a37e43a0e80256cfdd0d693a4",
  "parents": [
    "f79a0082509f184f852a7976dc254ce5368279fc"
  ],
  "author": {
    "name": "Keith Seitz",
    "email": "keiths@redhat.com",
    "time": "Fri Feb 23 10:07:29 2018 -0800"
  },
  "committer": {
    "name": "Keith Seitz",
    "email": "keiths@redhat.com",
    "time": "Fri Feb 23 10:07:29 2018 -0800"
  },
  "message": "Support template lookups in strncmp_iw_with_mode\n\nThis patch adds support for wild template parameter list matches, similar\nto how ABI tags or function overloads are now handled.\n\nWith this patch, users will be able to \"gloss over\" the details of matching\ntemplate parameter lists.  This is accomplished by adding (yet more) logic\nto strncmp_iw_with_mode to skip parameter lists if none is explicitly given\nby the user.\n\nHere\u0027s a simple example using gdb.linespec/cpls-ops.exp:\n\nBefore\n------\n(gdb) ptype test_op_call\ntype \u003d struct test_op_call {\n  public:\n    void operator()(void);\n    void operator()(int);\n    void operator()(long);\n    void operator()\u003cint\u003e(int *);\n}\n(gdb) b test_op_call::operator()\nBreakpoint 1 at 0x400583: test_op_call::operator(). (3 locations)\n(gdb) i b\nNum     Type           Disp Enb Address            What\n1       breakpoint     keep y   \u003cMULTIPLE\u003e\n1.1                         y     0x400583 in test_op_call::operator()(int)\n                                                   at cpls-ops.cc:43\n1.2                         y     0x40058e in test_op_call::operator()()\n                                                   at cpls-ops.cc:47\n1.3                         y     0x40059e in test_op_call::operator()(long)\n                                                   at cpls-ops.cc:51\n\nThe breakpoint at test_op_call::operator()\u003cint\u003e was never set.\n\nAfter\n-----\n(gdb) b test_op_call::operator()\nBreakpoint 1 at 0x400583: test_op_call::operator(). (4 locations)\n(gdb) i b\nNum     Type           Disp Enb Address            What\n1       breakpoint     keep y   \u003cMULTIPLE\u003e\n1.1                         y     0x400583 in test_op_call::operator()(int)\n                                                   at cpls-ops.cc:43\n1.2                         y     0x40058e in test_op_call::operator()()\n                                                   at cpls-ops.cc:47\n1.3                         y     0x40059e in test_op_call::operator()(long)\n                                                   at cpls-ops.cc:51\n1.4                         y     0x4008d0 in test_op_call::operator()\u003cint\u003e(int*)\n                                                   at cpls-ops.cc:57\n\nSimilar to how scope lookups work, passing \"-qualified\" to the break command\nwill cause a literal lookup of the symbol.  In the example immediately above,\nthis will cause GDB to only find the three non-template functions.\n\ngdb/ChangeLog:\n\n\t* NEWS: Mention new template parameter support for\n\tlocations/completion.\n\t* cp-support.c (cp_search_name_hash): Break on template parameter\n\tlists.\n\t(cp_symbol_name_matches_1): Tell strncmp_iw_with_mode to ignore\n\ttemplate parameter lists.\n\t* utils.c (skip_template_parameter_list): New function.\n\t(strncmp_iw_with_mode): Support \"ignoring\" of template parameter lists.\n\t* utils.h (strncmp_iw_with_mode): Add new parameter\n\t`ignore_template_params\u0027.\n\ngdb/doc/ChangeLog:\n\n\t* gdb.texinfo (Debugging C Plus Plus): Document setting breakpoints\n\tin templates.\n\ngdb/testsuite/ChangeLog:\n\n\t* gdb.cp/templates.cc (Foozle, operator\u003c, operator\u003c\u003c): New.\n\t(main): Add uses of new functions/types.\n\t* gdb.cp/templates.exp: Add template parameter list tests.\n\t* gdb.linespec/cpcompletion.exp: Load data-structures.exp.\n\t(consume, maket, makearg, makefoo, test_makefoo_1, test_makefoo)\n\t(maketype, makem, test_makem_1, test_makem, template-class-with-method)\n\t(template-function-foo): New procedures.\n\t(template-ret-type): Split range completion to account for template\n\tnames completing without template parameter list.\n\tChange \"setting breakpoint without template parameter test\" to pass.\n\t(test_driver): Call template-function-foo test procedure.\n\t* gdb.linespec/cpls-ops.exp (test_operator_ambiguous): Remove\n\ttemplate restriction.\n\tAdd new whitespace tests for template functions.\n\t* gdb.linespec/cpls.cc (foo, a, b, c, d, A, B, NA, NB): New\n\ttemplate definitions.\n\t(template_function_foo): New function.\n\t(main): Call template_function_foo.\n\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1767cef920ad2304341b218dd384c7e510d08009",
      "old_mode": 33188,
      "old_path": "gdb/NEWS",
      "new_id": "167cef0f7d56ac980805f7fbfe7decf937251748",
      "new_mode": 33188,
      "new_path": "gdb/NEWS"
    },
    {
      "type": "modify",
      "old_id": "dde417be80ee433405f739d5df51500f87089e89",
      "old_mode": 33188,
      "old_path": "gdb/cp-support.c",
      "new_id": "e8b21c3cc7b288a37ded257eb988f1e6037f2c64",
      "new_mode": 33188,
      "new_path": "gdb/cp-support.c"
    },
    {
      "type": "modify",
      "old_id": "ee7adc8df223984c1c3fbff76a430f1b637673e5",
      "old_mode": 33188,
      "old_path": "gdb/doc/gdb.texinfo",
      "new_id": "ba34019107255d45f0c4b3c37d5d147982d42392",
      "new_mode": 33188,
      "new_path": "gdb/doc/gdb.texinfo"
    },
    {
      "type": "modify",
      "old_id": "db2dfe8a58a5b73708c6e3db997c18b0462e67c8",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.cp/templates.cc",
      "new_id": "1a0500dba9b4a6883a0f63b2f51e1ac26195c697",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.cp/templates.cc"
    },
    {
      "type": "modify",
      "old_id": "af722689c79a404a21b79adec544bd953c01a1ad",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.cp/templates.exp",
      "new_id": "8b4c7d751d17ece18eabafc21180817306c76127",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.cp/templates.exp"
    },
    {
      "type": "modify",
      "old_id": "d8aa5b2a4967fb49d5234ac096e70b7d4349cc62",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.linespec/cpcompletion.exp",
      "new_id": "984694343f8ca31eb390f8a49dd443505cb86161",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.linespec/cpcompletion.exp"
    },
    {
      "type": "modify",
      "old_id": "355735eb417b5dbfe57cd269df1aa6bfd554485d",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.linespec/cpls-ops.exp",
      "new_id": "dbcda29e4783396a784b0b16966bba7eed9b9807",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.linespec/cpls-ops.exp"
    },
    {
      "type": "modify",
      "old_id": "332a8b5254cf7e9f5afe39cfad4fae4f6e7ddb80",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.linespec/cpls.cc",
      "new_id": "fd396515ed76e198aa1aaff97015b373d4e827ae",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.linespec/cpls.cc"
    },
    {
      "type": "modify",
      "old_id": "0a072fee6b78e36ec6a61ee9013538f3e47c9817",
      "old_mode": 33188,
      "old_path": "gdb/utils.c",
      "new_id": "6222f26775b7450f632fc16ae7add9487be314a0",
      "new_mode": 33188,
      "new_path": "gdb/utils.c"
    },
    {
      "type": "modify",
      "old_id": "c1195f65b500584550bf2f3ca5ca8386ae8e18df",
      "old_mode": 33188,
      "old_path": "gdb/utils.h",
      "new_id": "453ac59ce9fc7cae5c0ab699e292f26950f568f1",
      "new_mode": 33188,
      "new_path": "gdb/utils.h"
    }
  ]
}
