Rather than checking TARGET_LONG_BITS at build time,
check target_long_bits() at runtime.

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
 include/gdbstub/helpers.h | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/include/gdbstub/helpers.h b/include/gdbstub/helpers.h
index 402514716d7..b2f41d6d280 100644
--- a/include/gdbstub/helpers.h
+++ b/include/gdbstub/helpers.h
@@ -88,6 +88,20 @@ static inline int gdb_get_zeroes(GByteArray *array, size_t 
len)
     return len;
 }
 
+/**
+ * gdb_get_regl: append @val in @buf using 32 or 64-bit, depending on target
+ *
+ * This function is legacy and deprecated, thus should not be used in new code.
+ */
+static inline int gdb_get_regl(GByteArray *buf, uint64_t val)
+{
+    if (target_long_bits() == 64) {
+        return gdb_get_reg64(buf, val);
+    } else {
+        return gdb_get_reg32(buf, val);
+    }
+}
+
 /**
  * gdb_get_reg_ptr: get pointer to start of last element
  * @len: length of element
@@ -101,12 +115,4 @@ static inline uint8_t *gdb_get_reg_ptr(GByteArray *buf, 
int len)
     return buf->data + buf->len - len;
 }
 
-#ifdef COMPILING_PER_TARGET
-#if TARGET_LONG_BITS == 64
-#define gdb_get_regl(buf, val) gdb_get_reg64(buf, val)
-#else
-#define gdb_get_regl(buf, val) gdb_get_reg32(buf, val)
-#endif
-#endif /* COMPILING_PER_TARGET */
-
 #endif /* _GDBSTUB_HELPERS_H_ */
-- 
2.52.0


Reply via email to