[1/2,gdb/tdep] Use SYSCALL_MAP_RENAME for aarch64 and loongarch

Message ID 20250312140644.4079-2-tdevries@suse.de
State Committed
Headers
Series Refactor syscall canonicalization functions |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_gdb_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_gdb_check--master-arm success Test passed
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 success Test passed

Commit Message

Tom de Vries March 12, 2025, 2:06 p.m. UTC
  There are currently two functions using macros SYSCALL_MAP and
UNSUPPORTED_SYSCALL_MAP: aarch64_canonicalize_syscall, and
loongarch_canonicalize_syscall.

Here [1] I propose to do the same in i386_canonicalize_syscall, using one
additional macro: SYSCALL_MAP_RENAME.

Add the same macro in aarch64_canonicalize_syscall and
loongarch_canonicalize_syscall, and use it to map aarch64_sys_mmap and
loongarch_sys_mmap to gdb_sys_mmap2.

While we're at it:
- reformat the macro definitions to be more readable,
- add missing macro undefs in aarch64_canonicalize_syscall, and
- fix indentation in aarch64_canonicalize_syscall.

No functional changes.

Tested by rebuilding on x86_64-linux.

[1] https://sourceware.org/pipermail/gdb-patches/2025-March/216230.html
---
 gdb/aarch64-linux-tdep.c   | 28 +++++++++++++++++++---------
 gdb/loongarch-linux-tdep.c | 19 +++++++++++++------
 2 files changed, 32 insertions(+), 15 deletions(-)
  

Comments

Alexandra Hájková March 17, 2025, 9:31 a.m. UTC | #1
On Wed, Mar 12, 2025 at 3:07 PM Tom de Vries <tdevries@suse.de> wrote:

> There are currently two functions using macros SYSCALL_MAP and
> UNSUPPORTED_SYSCALL_MAP: aarch64_canonicalize_syscall, and
> loongarch_canonicalize_syscall.
>
> Here [1] I propose to do the same in i386_canonicalize_syscall, using one
> additional macro: SYSCALL_MAP_RENAME.
>
> Add the same macro in aarch64_canonicalize_syscall and
> loongarch_canonicalize_syscall, and use it to map aarch64_sys_mmap and
> loongarch_sys_mmap to gdb_sys_mmap2.
>
> While we're at it:
> - reformat the macro definitions to be more readable,
> - add missing macro undefs in aarch64_canonicalize_syscall, and
> - fix indentation in aarch64_canonicalize_syscall.
>
> No functional changes.
>
> Tested by rebuilding on x86_64-linux.
>
> [1] https://sourceware.org/pipermail/gdb-patches/2025-March/216230.html
> ---
>   Hi Tom,


I think it's a reasonable change and I also tested it on aarch64, Fedora
Rawhide and it causes no regressions.

Reviewed-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com>
  
Tom de Vries March 18, 2025, 7:46 a.m. UTC | #2
On 3/17/25 10:31, Alexandra Petlanova Hajkova wrote:
> 
> 
> On Wed, Mar 12, 2025 at 3:07 PM Tom de Vries <tdevries@suse.de 
> <mailto:tdevries@suse.de>> wrote:
> 
>     There are currently two functions using macros SYSCALL_MAP and
>     UNSUPPORTED_SYSCALL_MAP: aarch64_canonicalize_syscall, and
>     loongarch_canonicalize_syscall.
> 
>     Here [1] I propose to do the same in i386_canonicalize_syscall,
>     using one
>     additional macro: SYSCALL_MAP_RENAME.
> 
>     Add the same macro in aarch64_canonicalize_syscall and
>     loongarch_canonicalize_syscall, and use it to map aarch64_sys_mmap and
>     loongarch_sys_mmap to gdb_sys_mmap2.
> 
>     While we're at it:
>     - reformat the macro definitions to be more readable,
>     - add missing macro undefs in aarch64_canonicalize_syscall, and
>     - fix indentation in aarch64_canonicalize_syscall.
> 
>     No functional changes.
> 
>     Tested by rebuilding on x86_64-linux.
> 
>     [1] https://sourceware.org/pipermail/gdb-patches/2025-
>     March/216230.html <https://sourceware.org/pipermail/gdb-
>     patches/2025-March/216230.html>
>     ---
>        Hi Tom,
> 
> 
> I think it's a reasonable change and I also tested it on aarch64, Fedora 
> Rawhide and it causes no regressions.
> 

Hi Alexandra,

thanks for the review and testing, I've pushed this patch.

- Tom

> Reviewed-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com 
> <mailto:ahajkova@redhat.com>>
  

Patch

diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c
index 5e59941ee48..eeb541c66db 100644
--- a/gdb/aarch64-linux-tdep.c
+++ b/gdb/aarch64-linux-tdep.c
@@ -2038,11 +2038,17 @@  enum aarch64_syscall {
 static enum gdb_syscall
 aarch64_canonicalize_syscall (enum aarch64_syscall syscall_number)
 {
-#define SYSCALL_MAP(SYSCALL) case aarch64_sys_##SYSCALL: \
-  return gdb_sys_##SYSCALL
+#define SYSCALL_MAP(SYSCALL)			\
+  case aarch64_sys_ ## SYSCALL:			\
+    return gdb_sys_ ## SYSCALL
 
-#define UNSUPPORTED_SYSCALL_MAP(SYSCALL) case aarch64_sys_##SYSCALL: \
-  return gdb_sys_no_syscall
+#define SYSCALL_MAP_RENAME(SYSCALL, GDB_SYSCALL)	\
+  case aarch64_sys_ ## SYSCALL:				\
+    return GDB_SYSCALL;
+
+#define UNSUPPORTED_SYSCALL_MAP(SYSCALL)	\
+  case aarch64_sys_ ## SYSCALL:			\
+    return gdb_sys_no_syscall
 
   switch (syscall_number)
     {
@@ -2269,8 +2275,7 @@  aarch64_canonicalize_syscall (enum aarch64_syscall syscall_number)
       SYSCALL_MAP (clone);
       SYSCALL_MAP (execve);
 
-    case aarch64_sys_mmap:
-      return gdb_sys_mmap2;
+      SYSCALL_MAP_RENAME (mmap, gdb_sys_mmap2);
 
       SYSCALL_MAP (fadvise64);
       SYSCALL_MAP (swapon);
@@ -2312,9 +2317,14 @@  aarch64_canonicalize_syscall (enum aarch64_syscall syscall_number)
       UNSUPPORTED_SYSCALL_MAP (sched_setattr);
       UNSUPPORTED_SYSCALL_MAP (sched_getattr);
       SYSCALL_MAP (getrandom);
-  default:
-    return gdb_sys_no_syscall;
-  }
+
+    default:
+      return gdb_sys_no_syscall;
+    }
+
+#undef SYSCALL_MAP
+#undef SYSCALL_MAP_RENAME
+#undef UNSUPPORTED_SYSCALL_MAP
 }
 
 /* Retrieve the syscall number at a ptrace syscall-stop, either on syscall entry
diff --git a/gdb/loongarch-linux-tdep.c b/gdb/loongarch-linux-tdep.c
index b18cacca087..633e152b182 100644
--- a/gdb/loongarch-linux-tdep.c
+++ b/gdb/loongarch-linux-tdep.c
@@ -581,11 +581,17 @@  static linux_record_tdep loongarch_linux_record_tdep;
 static enum gdb_syscall
 loongarch_canonicalize_syscall (enum loongarch_syscall syscall_number)
 {
-#define SYSCALL_MAP(SYSCALL) case loongarch_sys_##SYSCALL:              \
-  return gdb_sys_##SYSCALL
+#define SYSCALL_MAP(SYSCALL)			\
+  case loongarch_sys_ ## SYSCALL:		\
+    return gdb_sys_ ## SYSCALL
 
-#define UNSUPPORTED_SYSCALL_MAP(SYSCALL) case loongarch_sys_##SYSCALL:  \
-  return gdb_sys_no_syscall
+#define SYSCALL_MAP_RENAME(SYSCALL, GDB_SYSCALL)	\
+  case loongarch_sys_ ## SYSCALL:			\
+    return GDB_SYSCALL;
+
+#define UNSUPPORTED_SYSCALL_MAP(SYSCALL)	\
+  case loongarch_sys_ ## SYSCALL:		\
+    return gdb_sys_no_syscall
 
   switch(syscall_number)
     {
@@ -806,8 +812,7 @@  loongarch_canonicalize_syscall (enum loongarch_syscall syscall_number)
       SYSCALL_MAP (clone);
       SYSCALL_MAP (execve);
 
-    case loongarch_sys_mmap:
-      return gdb_sys_mmap2;
+      SYSCALL_MAP_RENAME (mmap, gdb_sys_mmap2);
 
       SYSCALL_MAP (fadvise64);
       SYSCALL_MAP (swapon);
@@ -907,7 +912,9 @@  loongarch_canonicalize_syscall (enum loongarch_syscall syscall_number)
     default:
       return gdb_sys_no_syscall;
     }
+
 #undef SYSCALL_MAP
+#undef SYSCALL_MAP_RENAME
 #undef UNSUPPORTED_SYSCALL_MAP
 }