public inbox for archer-commits@sourceware.org help / color / mirror / Atom feed
From: sergio@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] archer-sergio-catch-syscall: Modifications regarding comments received on the ml. Date: Fri, 14 Nov 2008 19:02:00 -0000 [thread overview] Message-ID: <20081114190257.8057.qmail@sourceware.org> (raw) The branch, archer-sergio-catch-syscall has been updated via ccaa0ba4b4077936dfa4a4597ae3f989e55110e7 (commit) from 589b9ef4c57807e3a2f5038f841b55b600bd9036 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit ccaa0ba4b4077936dfa4a4597ae3f989e55110e7 Author: Sergio Durigan Junior <sergiodj@linux.vnet.ibm.com> Date: Fri Nov 14 11:02:36 2008 -0800 Modifications regarding comments received on the ml. ----------------------------------------------------------------------- Summary of changes: gdb/breakpoint.c | 36 +++++++++++++++++++++-------- gdb/completer.c | 9 ------- gdb/completer.h | 2 - gdb/ppc-linux-tdep.c | 5 +++- gdb/testsuite/gdb.base/catch-syscall.exp | 2 +- gdb/xml-syscall.c | 2 +- 6 files changed, 32 insertions(+), 24 deletions(-) First 500 lines of diff: diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index c185559..69d06b1 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -3187,7 +3187,8 @@ bpstat_what (bpstat bs) /* We caught a shared library event. */ catch_shlib_event, - /* We are in a entry breakpoint. */ + /* We are in a entry breakpoint. It means we have stopped + at the inferior's entrypoint (AT_ENTRY). */ entry_breakpoint, /* This is just used to count how many enums there are. */ @@ -5070,7 +5071,7 @@ print_one_catch_syscall (struct breakpoint *b, CORE_ADDR *last_addr) ui_out_field_int (uiout, "what", b->syscall_number); } else - ui_out_field_string (uiout, "what", "<unknown syscall>"); + ui_out_field_string (uiout, "what", "<any syscall>"); ui_out_text (uiout, "\" "); } @@ -5085,7 +5086,7 @@ print_mention_catch_syscall (struct breakpoint *b) struct syscall_filter *iter; printf_filtered (_("Catchpoint %d (syscalls"), b->number); for (iter = b->syscalls_to_be_caught; iter; iter = iter->next) - printf_filtered (" %s", + printf_filtered (" '%s'", gdbarch_syscall_name_from_number (current_gdbarch, iter->syscall)); printf_filtered (")"); @@ -7288,8 +7289,8 @@ catch_syscall_split_args (char *arg) if (gdbarch_syscall_name_from_number (current_gdbarch, syscall_number) == NULL) - error (_("The number '%d' does not represent a valid syscall."), - syscall_number); + warning (_("The number '%d' does not represent a known syscall."), + syscall_number); } else { @@ -7299,7 +7300,7 @@ catch_syscall_split_args (char *arg) gdbarch_syscall_number_from_name (current_gdbarch, cur_name); if (syscall_number == UNKNOWN_SYSCALL) - error (_("Invalid syscall name '%s'."), cur_name); + warning (_("Unknown syscall name '%s'."), cur_name); } /* Ok, it's valid. */ @@ -7330,6 +7331,12 @@ this architeture yet.")); ep_skip_leading_whitespace (&arg); + /* We need to do this first "dummy" translation in order + to get the syscall XML file loaded or, most important, + to display a warning to the user if there's no XML file + for his/her architecture. */ + gdbarch_syscall_name_from_number (current_gdbarch, 0); + /* The allowed syntax is: catch syscall catch syscall <name | number> [<name | number> ... <name | number>] @@ -7866,7 +7873,7 @@ delete_command (char *arg, int from_tty) b->type != bp_shlib_event && b->type != bp_thread_event && b->type != bp_overlay_event && - b->type != bp_entry_breakpoint && + b->type != bp_entry_breakpoint && b->number >= 0) { breaks_to_delete = 1; @@ -7884,7 +7891,7 @@ delete_command (char *arg, int from_tty) b->type != bp_shlib_event && b->type != bp_thread_event && b->type != bp_overlay_event && - b->type != bp_entry_breakpoint && + b->type != bp_entry_breakpoint && b->number >= 0) delete_breakpoint (b); } @@ -8800,6 +8807,15 @@ catching_syscall_number (int syscall_number) return 0; } +/* Complete syscall names. Used by "catch syscall". */ +static char ** +catch_syscall_completer (char *text, char *word) +{ + const char **list = + gdbarch_get_syscall_names (current_gdbarch); + return (list == NULL) ? NULL : complete_on_enum (list, text, word); +} + \f /* This help string is used for the break, hbreak, tbreak and thbreak commands. It is defined as a macro to prevent duplication. @@ -9149,8 +9165,8 @@ With an argument, catch only exceptions with the given name."), CATCH_PERMANENT, CATCH_TEMPORARY); add_catch_command ("syscall", _("\ -Catch calls to syscalls.\n\ -With an argument, catch only calls of that syscall."), +Catch system calls.\n\ +With an argument, catch only that syscall."), catch_syscall_command_1, catch_syscall_completer, CATCH_PERMANENT, diff --git a/gdb/completer.c b/gdb/completer.c index e88c33d..122974a 100644 --- a/gdb/completer.c +++ b/gdb/completer.c @@ -713,15 +713,6 @@ command_completer (char *text, char *word) return complete_line_internal (word, text, strlen (text), 1); } -/* Complete syscall names. Used by "catch syscall". */ -char ** -catch_syscall_completer (char *text, char *word) -{ - const char **list = - gdbarch_get_syscall_names (current_gdbarch); - return (list == NULL) ? NULL : complete_on_enum (list, text, word); -} - /* Generate completions one by one for the completer. Each time we are called return another potential completion to the caller. line_completion just completes on commands or passes the buck to the diff --git a/gdb/completer.h b/gdb/completer.h index 2e10136..318594e 100644 --- a/gdb/completer.h +++ b/gdb/completer.h @@ -31,8 +31,6 @@ extern char **location_completer (char *, char *); extern char **command_completer (char *, char *); -extern char **catch_syscall_completer (char *text, char *word); - extern char *get_gdb_completer_quote_characters (void); /* Exported to linespec.c */ diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index 5ac4767..928d2a9 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -1012,6 +1012,7 @@ ppc_linux_get_syscall_number (struct gdbarch *gdbarch, { struct regcache *regcache = get_thread_regcache (ptid); struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + struct cleanup *cleanbuf; /* The content of a register */ gdb_byte *buf; /* The result */ @@ -1022,13 +1023,15 @@ ppc_linux_get_syscall_number (struct gdbarch *gdbarch, buf = (gdb_byte *) xmalloc (tdep->wordsize * sizeof (gdb_byte)); + cleanbuf = make_cleanup (xfree, buf); + /* Getting the system call number from the register. When dealing with PowerPC architecture, this information is stored at 0th register. */ regcache_cooked_read (regcache, tdep->ppc_gp0_regnum, buf); ret = extract_signed_integer (buf, tdep->wordsize); - xfree (buf); + do_cleanups (cleanbuf); return ret; } diff --git a/gdb/testsuite/gdb.base/catch-syscall.exp b/gdb/testsuite/gdb.base/catch-syscall.exp index 3e44c1c..1296cba 100644 --- a/gdb/testsuite/gdb.base/catch-syscall.exp +++ b/gdb/testsuite/gdb.base/catch-syscall.exp @@ -108,7 +108,7 @@ proc insert_catch_syscall_with_arg { syscall_name } { # Trying to set the syscall set thistest "catch syscall with arguments ($syscall_name)" - gdb_test "catch syscall $syscall_name" "Catchpoint .*(syscall .$syscall_name.).*" $thistest + gdb_test "catch syscall $syscall_name" "Catchpoint .*(syscalls .$syscall_name.).*" $thistest } diff --git a/gdb/xml-syscall.c b/gdb/xml-syscall.c index 4ddb751..498f58a 100644 --- a/gdb/xml-syscall.c +++ b/gdb/xml-syscall.c @@ -413,7 +413,7 @@ xml_list_of_syscalls (const struct syscalls_info *sysinfo) for (i = 0; VEC_iterate (syscall_desc_p, sysinfo->syscalls, i, sysdesc); i++) - names[i] = xstrdup (sysdesc->name); + names[i] = sysdesc->name; names[i] = NULL; hooks/post-receive -- Repository for Project Archer.
reply other threads:[~2008-11-14 19:02 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20081114190257.8057.qmail@sourceware.org \ --to=sergio@sourceware.org \ --cc=archer-commits@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).