Make make-target-delegates grok namespace scope op and template params
authorPedro Alves <palves@redhat.com>
Sun, 3 Dec 2017 17:50:43 +0000 (12:50 -0500)
committerSimon Marchi <simon.marchi@polymtl.ca>
Sun, 3 Dec 2017 17:50:43 +0000 (12:50 -0500)
commit10f64178412d9c6e4f2faade0da271ab8be273c9
treee75f837815c06fd77ded2af537afe44b86c7833d
parentf0fb2488c93c00fa1436a4813a375faa00a94de5
Make make-target-delegates grok namespace scope op and template params

The next patch will want to use gdb::array_view<int> as parameter type
of a target_ops method.  However, that runs into a
make-target-delegates limitation: target_debug_foo calls in
target-delegates.c for parameters/return types with namespace scope
operators ("::") or template parameters, end up looking like:

 @@ -1313,9 +1313,7 @@ debug_set_syscall_catchpoint (struct target_ops *self, int arg1, int arg2, int a
    fputs_unfiltered (", ", gdb_stdlog);
    target_debug_print_int (arg3);
    fputs_unfiltered (", ", gdb_stdlog);
 -  target_debug_print_int (arg4);
 -  fputs_unfiltered (", ", gdb_stdlog);
 -  target_debug_print_int_p (arg5);
 +  target_debug_print_gdb::array_view<const_int> (arg4);

which obviously isn't something that compiles.  The problem is that
make-target-delegates wasn't ever taught that '::', '<', and '>' can
appear in parameter/return types.  You could work around it by hidding
the unsupported characters behind a typedef in the target method
declaration, or by using an explicit TARGET_DEBUG_PRINTER, but it's
better to just remove the limitation.

While at it, also fix an "abuse" of reserved identifiers.

gdb/ChangeLog:

* make-target-delegates (munge_type): Also munge '<', '>', and
':'.  Avoid double underscores in identifiers, and trailing
underscores.
* target-debug.h
(target_debug_print_VEC_static_tracepoint_marker_p__p): Rename to
...
(target_debug_print_VEC_static_tracepoint_marker_p_p): ... this.
* target-delegates.c: Regenerate.
gdb/ChangeLog
gdb/make-target-delegates
gdb/target-debug.h
gdb/target-delegates.c