From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joel Brobecker To: gdb-patches@sources.redhat.com Subject: [RFA/RFC] New command: ``start'' Date: Tue, 18 May 2004 02:47:00 -0000 Message-id: <20040518024700.GV10684@gnat.com> X-SW-Source: 2004-05/msg00521.html Hello, As briefly discussed on gdb@ and gdb-patches@, here is a first proposal for the addition of a new command: ``start''. I handled the language-dependent issue by adding a new method to the language vector. I returns a newly allocated string that tells GDB where to insert the breakpoint. I named it "main_program_name" because I would expect it to always return the name of a procedure. However, it can actually return any location expression. So a language could use a different approach and return something like "*0xdeadbeef" or "source.c:10" for instance. The other decision I made was to allow this new method to be undefined (NULL). In that case, we use "main" as the location where to insert the temporary breakpoint. I am not too sure about this approach, but I selected it because it avoids a xstrdup ("main")/xfree sequence. On the other hand, forcing the method to always be set would make the implemention clearer, I think, just at the expense of an unnecessary xstrdup/xfree sequence. I can add a procedure default_main_program_name that would return a xstrdup of "main". The other option I thought about was to still allow a NULL method, and then provide a procedure in language.[hc] get_main_program_name (void) (or should maybe take a language as argument) that would return the name of the main procedure name based on the value of the new method (NULL => "main", otherwise return string from method call). I am also adding the documentation for this new command. 2004-05-17 Joel Brobecker * language.h (language_defn): New field, la_xmain_procedure_name. * language.c (unknown_language_defn): Set new field to NULL. (auto_language_defn): Likewise. (local_language_defn): Likewise. * ada-lang.c (ada_language_defn): Likewise. * c-lang.c (c_language_defn): Likewise. (cplus_language_defn): Likewise. (asm_language_defn): Likewise. (minimal_language): Likewise. * f-lang.c (f_language_defn): Likewise. * jv-lang.c (java_language_defn): Likewise. * m2-lang.c (m2_language_defn): Likewise. * objc_language (objc_language_defn): Likewise. * p-lang.c (pascal_language_defn): Likewise. * scm-lang.c (scm_language_defn): Likewise. * infcmd.c (kill_if_already_running): New function, extracted from run_command(). (run_command): Replace extracted code by call to kill_if_already_running(). (start_command): New function. (_initialize_infcmd): Add "start" command. 2004-05-17 Joel Brobecker * gdb.texinfo (Starting): Document new start command. Tested on x86-linux. Comments? OK? -- Joel Attachment: start_cmd.diff Description: Text document Attachment: start_doc.diff Description: Text document