gdb: get gdbarch from syscall_catchpoint instead of location
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 8 May 2023 19:45:52 +0000 (15:45 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Thu, 25 May 2023 12:46:23 +0000 (08:46 -0400)
I noticed some methods of syscall_catchpoint doing this:

  struct gdbarch *gdbarch = loc->owner->gdbarch;

`loc` is the list of locations of this catchpoint.  Logically, the owner
the locations are this catchpoint.  So this just ends up getting
this->gdbarch.  Remove the unnecessary indirection through the loc.

syscall_catchpoint::print_recreate does something slightly different,
getting its arch from the loc:

  struct gdbarch *gdbarch = loc->gdbarch;

I suppose it's always going to be the same arch, so get it from the
catchpoint there too.

Change-Id: I6f6a6f8e0cd7cfb754cecfb6249e71ec12ba4855
Reviewed-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com>
Reviewed-By: Andrew Burgess <aburgess@redhat.com>
gdb/break-catch-syscall.c

index d73f6616c97af9a7debe658c3739a04df5e07a88..595b05c90c8ebf38e56ceaf15251b061ea992ebb 100644 (file)
@@ -197,7 +197,6 @@ syscall_catchpoint::print_it (const bpstat *bs) const
      must print "called syscall" or "returned from syscall".  */
   struct target_waitstatus last;
   struct syscall s;
-  struct gdbarch *gdbarch = b->gdbarch;
 
   get_last_target_status (nullptr, nullptr, &last);
 
@@ -242,7 +241,6 @@ syscall_catchpoint::print_one (bp_location **last_loc) const
 {
   struct value_print_options opts;
   struct ui_out *uiout = current_uiout;
-  struct gdbarch *gdbarch = loc->owner->gdbarch;
 
   get_user_print_options (&opts);
   /* Field 4, the address, is omitted (which makes the columns not
@@ -293,8 +291,6 @@ syscall_catchpoint::print_one (bp_location **last_loc) const
 void
 syscall_catchpoint::print_mention () const
 {
-  struct gdbarch *gdbarch = loc->owner->gdbarch;
-
   if (!syscalls_to_be_caught.empty ())
     {
       if (syscalls_to_be_caught.size () > 1)
@@ -323,8 +319,6 @@ syscall_catchpoint::print_mention () const
 void
 syscall_catchpoint::print_recreate (struct ui_file *fp) const
 {
-  struct gdbarch *gdbarch = loc->gdbarch;
-
   gdb_printf (fp, "catch syscall");
 
   for (int iter : syscalls_to_be_caught)