[RFC] Wording of "catch syscall <number>" warning
Sérgio Durigan Júnior
sergiodj@linux.vnet.ibm.com
Fri Sep 25 01:57:00 GMT 2009
Hi Doug,
On Thursday 24 September 2009, Doug Evans wrote:
> The current wording of this warning feels clumsy if syscall names
> are unavailable. It implies there are known syscalls, when there is not.
>
> I'll leave this for a few days and then check it in if there
> are no objections.
Thank you for this. I have one minor comment, though.
> + if (get_syscall_names () != NULL)
> + warning (_("The number '%d' does not represent a known syscall."),
> + syscall_number);
I agree with you, there should be warnings covering both cases. However, this
patch of yours made me think about performance, specially because you are
calling get_syscall_names every time you make this check, and I came up with
another patch. What do you think about it?
Regards,
--
Sérgio Durigan Júnior
Linux on Power Toolchain - Software Engineer
Linux Technology Center - LTC
IBM Brazil
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 811cdfb..1d35336 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -7486,9 +7486,16 @@ catch_syscall_split_args (char *arg)
/* We can issue just a warning, but still create the catchpoint.
This is because, even not knowing the syscall name that
this number represents, we can still try to catch the syscall
- number. */
- warning (_("The number '%d' does not represent a known syscall."),
- syscall_number);
+ number. If system call names are unavailable, use a different
+ wording though. */
+ {
+ if (syscall_names_available_p ())
+ warning (_("The number '%d' does not represent a known syscall."),
+ syscall_number);
+ else
+ warning (_("Syscall names are unavailable, assuming '%d' is valid."),
+ syscall_number);
+ }
}
else
{
diff --git a/gdb/xml-syscall.c b/gdb/xml-syscall.c
index 15bfe6f..86336b5 100644
--- a/gdb/xml-syscall.c
+++ b/gdb/xml-syscall.c
@@ -80,6 +80,11 @@ get_syscall_names (void)
return NULL;
}
+int
+syscall_names_available_p (void)
+{
+ return 0;
+}
#else /* ! HAVE_LIBEXPAT */
@@ -429,4 +434,10 @@ get_syscall_names (void)
return xml_list_of_syscalls (_sysinfo);
}
+int
+syscall_names_available_p (void)
+{
+ return _sysinfo == NULL ? 0 : 1;
+}
+
#endif /* ! HAVE_LIBEXPAT */
diff --git a/gdb/xml-syscall.h b/gdb/xml-syscall.h
index 00d3a54..326a856 100644
--- a/gdb/xml-syscall.h
+++ b/gdb/xml-syscall.h
@@ -47,4 +47,8 @@ void get_syscall_by_name (const char *syscall_name, struct
syscall *s);
const char **get_syscall_names (void);
+/* Function used to tell if syscalls names are available. Returns 1 if
+ they are, 0 otherwise. */
+int syscall_names_available_p (void);
+
#endif /* XML_SYSCALL_H */
More information about the Gdb-patches
mailing list