diff --git a/qemu/target/arm/unicorn_aarch64.c b/qemu/target/arm/unicorn_aarch64.c index c2463957..ae1572a1 100644 --- a/qemu/target/arm/unicorn_aarch64.c +++ b/qemu/target/arm/unicorn_aarch64.c @@ -266,6 +266,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -399,6 +400,7 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/target/arm/unicorn_arm.c b/qemu/target/arm/unicorn_arm.c index eda70af5..d8417e12 100644 --- a/qemu/target/arm/unicorn_arm.c +++ b/qemu/target/arm/unicorn_arm.c @@ -10,6 +10,8 @@ #include "uc_priv.h" #include "unicorn_common.h" #include "unicorn.h" +#include "stdio.h" +#include "inttypes.h" ARMCPU *cpu_arm_init(struct uc_struct *uc); @@ -353,6 +355,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -553,6 +556,7 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/target/i386/unicorn.c b/qemu/target/i386/unicorn.c index 1a073f86..2ed4ca33 100644 --- a/qemu/target/i386/unicorn.c +++ b/qemu/target/i386/unicorn.c @@ -1074,6 +1074,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, #endif } + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -1983,6 +1984,7 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, #endif } + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/target/m68k/unicorn.c b/qemu/target/m68k/unicorn.c index f1efd66e..56d4791e 100644 --- a/qemu/target/m68k/unicorn.c +++ b/qemu/target/m68k/unicorn.c @@ -77,6 +77,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -109,6 +110,7 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/target/mips/unicorn.c b/qemu/target/mips/unicorn.c index 77a7d48d..ab922e6f 100644 --- a/qemu/target/mips/unicorn.c +++ b/qemu/target/mips/unicorn.c @@ -100,6 +100,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -149,6 +150,7 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/target/ppc/unicorn.c b/qemu/target/ppc/unicorn.c index ce86cf93..75841a27 100644 --- a/qemu/target/ppc/unicorn.c +++ b/qemu/target/ppc/unicorn.c @@ -204,6 +204,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -265,6 +266,7 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/target/riscv/unicorn.c b/qemu/target/riscv/unicorn.c index 8b55282f..69e782d4 100644 --- a/qemu/target/riscv/unicorn.c +++ b/qemu/target/riscv/unicorn.c @@ -126,6 +126,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -176,6 +177,7 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/target/s390x/unicorn.c b/qemu/target/s390x/unicorn.c index 972bf9e3..fed0e987 100644 --- a/qemu/target/s390x/unicorn.c +++ b/qemu/target/s390x/unicorn.c @@ -80,7 +80,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, break; } } - + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -113,6 +113,7 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, break; } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/target/sparc/unicorn.c b/qemu/target/sparc/unicorn.c index acccd7be..33ed8def 100644 --- a/qemu/target/sparc/unicorn.c +++ b/qemu/target/sparc/unicorn.c @@ -91,6 +91,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -126,6 +127,7 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/target/tricore/unicorn.c b/qemu/target/tricore/unicorn.c index 9f47a7db..43a31f54 100644 --- a/qemu/target/tricore/unicorn.c +++ b/qemu/target/tricore/unicorn.c @@ -138,6 +138,7 @@ uc_err reg_read(void *_env, int mode, unsigned int regid, void *value, } } + CHECK_RET_DEPRECATE(ret, regid); return ret; } @@ -240,7 +241,8 @@ uc_err reg_write(void *_env, int mode, unsigned int regid, const void *value, break; } } - + + CHECK_RET_DEPRECATE(ret, regid); return ret; } diff --git a/qemu/unicorn_common.h b/qemu/unicorn_common.h index def70a9e..e70f50a8 100644 --- a/qemu/unicorn_common.h +++ b/qemu/unicorn_common.h @@ -154,4 +154,16 @@ static inline void uc_common_init(struct uc_struct* uc) ret = UC_ERR_OK; \ } while(0) +#define CHECK_RET_DEPRECATE(ret, regid) do { \ + if (ret == UC_ERR_ARG && !getenv("UC_IGNORE_REG_BREAK")) { \ + fprintf(stderr, \ + "WARNING: Your register accessing on id %"PRIu32" is deprecated" \ + " and will get UC_ERR_ARG in the future release (2.2.0) because" \ + " the accessing is either no-op or not defined." \ + " Set UC_IGNORE_REG_BREAK=1 to ignore this warning.\n", \ + regid); \ + ret = UC_ERR_OK; \ + } \ +} while (0) + #endif