[1/2,gdb/tdep] Use SYSCALL_MAP_RENAME for aarch64 and loongarch
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
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
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>
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>>
@@ -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
@@ -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
}