88efc23 Make "thread apply" use the gdb::option framework

Authored and Committed by palves 4 years ago
    Make "thread apply" use the gdb::option framework
    
    Similarly to the "frame apply" patch, this makes the "thread apply"
    family of commands -- "thread apply TID", "thread apply all" and
    "taas" use the gdb::option framework for '-'-style options.
    
    No new options are added, but there are some user-visible changes:
    
    - Can now abbreviate and complete "-ascending"
    
    - We now have a completer for "thread apply" commands
    
      Can now complete options ("thread apply all -[TAB]"), and also,
      'thread apply all COMMAND[TAB]' now does what you'd expect, by
      making use of the new complete_command routine.
    
    - "help" output tweaked with auto-generated option descriptions:
    
       ~~~
       Usage: thread apply all [OPTION]... COMMAND
       Prints per-inferior thread number and target system's thread id
       followed by COMMAND output.
    
       By default, an error raised during the execution of COMMAND
       aborts "thread apply".
    
       Options:
         -ascending
           Call COMMAND for all threads in ascending order.
           The default is descending order.
    
         -q
           Disables printing the thread information.
    
         -c
           Print any error raised by COMMAND and continue.
    
         -s
           Silently ignore any errors or empty output produced by COMMAND.
       ~~~
    
      The "By default ..." sentence is new as well.
    
    gdb/ChangeLog:
    yyyy-mm-dd  Pedro Alves  <palves@redhat.com>
    
    	* thread.c: Include "cli/cli-option.h".
    	(tp_array_compar_ascending): Global.
    	(tp_array_compar): Delete function.
    	(tp_array_compar_ascending, tp_array_compar_descending): New
    	functions.
    	(ascending_option_def, qcs_flag_option_def)
    	(thr_qcs_flags_option_defs)
    	(make_thread_apply_all_options_def_group)
    	(make_thread_apply_options_def_group): New.
    	(thread_apply_all_command): Use gdb::option::process_options.
    	(thread_apply_command_completer)
    	(thread_apply_all_command_completer): New.
    	(thread_apply_command): Use gdb::option::process_options.
    	(_initialize_thread): Delete THREAD_APPLY_FLAGS_HELP, replace it
    	with a new THREAD_APPLY_OPTION_HELP.  Use gdb::option::build_help
    	to generate help text of "thread apply".  Adjust "taas"'s help.
    	* tid-parse.c (tid_range_parser::in_thread_range): New method.
    	* tid-parse.h (tid_range_parser::in_thread_range): New method.
    
    gdb/testsuite/ChangeLog:
    yyyy-mm-dd  Pedro Alves  <palves@redhat.com>
    
    	* gdb.base/options.exp (test-thread-apply): New.
    	(top level): Call it.
    
        
file modified
+200 -58
file modified
+6 -0
file modified
+3 -0