OSDN Git Service

gdbstub: Remove gdb_do_syscallv
authorRichard Henderson <richard.henderson@linaro.org>
Fri, 3 Mar 2023 02:58:02 +0000 (18:58 -0800)
committerAlex Bennée <alex.bennee@linaro.org>
Tue, 7 Mar 2023 20:44:09 +0000 (20:44 +0000)
This function is unused, except to implement gdb_do_syscall.
Fold the implementations together.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230303025805.625589-27-richard.henderson@linaro.org>

gdbstub/syscalls.c
include/gdbstub/syscalls.h

index 6189940..fdc68e4 100644 (file)
@@ -93,24 +93,26 @@ bool gdb_handled_syscall(void)
  *   %lx - 64-bit argument printed in hex.
  *   %s  - string pointer (target_ulong) and length (int) pair.
  */
-void gdb_do_syscallv(gdb_syscall_complete_cb cb, const char *fmt, va_list va)
+void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...)
 {
-    char *p;
-    char *p_end;
-    target_ulong addr;
-    uint64_t i64;
+    char *p, *p_end;
+    va_list va;
 
     if (!gdb_attached()) {
         return;
     }
 
     gdbserver_syscall_state.current_syscall_cb = cb;
+    va_start(va, fmt);
 
-    p = &gdbserver_syscall_state.syscall_buf[0];
-    p_end = &gdbserver_syscall_state.syscall_buf[sizeof(gdbserver_syscall_state.syscall_buf)];
+    p = gdbserver_syscall_state.syscall_buf;
+    p_end = p + sizeof(gdbserver_syscall_state.syscall_buf);
     *(p++) = 'F';
     while (*fmt) {
         if (*fmt == '%') {
+            target_ulong addr;
+            uint64_t i64;
+
             fmt++;
             switch (*fmt++) {
             case 'x':
@@ -141,16 +143,8 @@ void gdb_do_syscallv(gdb_syscall_complete_cb cb, const char *fmt, va_list va)
     }
     *p = 0;
 
-    gdb_syscall_handling(gdbserver_syscall_state.syscall_buf);
-}
-
-void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...)
-{
-    va_list va;
-
-    va_start(va, fmt);
-    gdb_do_syscallv(cb, fmt, va);
     va_end(va);
+    gdb_syscall_handling(gdbserver_syscall_state.syscall_buf);
 }
 
 /*
index 5851a2c..243eaf8 100644 (file)
@@ -92,17 +92,6 @@ typedef void (*gdb_syscall_complete_cb)(CPUState *cpu, uint64_t ret, int err);
 void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...);
 
 /**
- * gdb_do_syscallv:
- * @cb: function to call when the system call has completed
- * @fmt: gdb syscall format string
- * @va: arguments to interpolate into @fmt
- *
- * As gdb_do_syscall, but taking a va_list rather than a variable
- * argument list.
- */
-void gdb_do_syscallv(gdb_syscall_complete_cb cb, const char *fmt, va_list va);
-
-/**
  * use_gdb_syscalls() - report if GDB should be used for syscalls
  *
  * This is mostly driven by the semihosting mode the user configures