* [Qemu-devel] [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions
@ 2010-10-22 21:03 Stefan Weil
2010-10-22 21:03 ` [Qemu-devel] [PATCH 2/4] tcg: Use fprintf_function (format checking) Stefan Weil
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Stefan Weil @ 2010-10-22 21:03 UTC (permalink / raw)
To: QEMU Developers; +Cc: Blue Swirl
This kind of function pointers is used very often in qemu.
The new data type uses format checking with GCC_FMT_ATTR
and will be used in later patches.
Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
qemu-common.h | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/qemu-common.h b/qemu-common.h
index d5ae420..7eeec8e 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -81,6 +81,9 @@ struct iovec {
#define GCC_FMT_ATTR(n, m)
#endif
+typedef int (*fprintf_function)(FILE *f, const char *fmt, ...)
+ GCC_FMT_ATTR(2, 3);
+
#ifdef _WIN32
#define fsync _commit
#define lseek _lseeki64
--
1.7.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH 2/4] tcg: Use fprintf_function (format checking)
2010-10-22 21:03 [Qemu-devel] [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions Stefan Weil
@ 2010-10-22 21:03 ` Stefan Weil
2010-10-22 21:03 ` [Qemu-devel] [PATCH 3/4] exec: Use fprintf_function for dump_exec_info " Stefan Weil
` (2 subsequent siblings)
3 siblings, 0 replies; 13+ messages in thread
From: Stefan Weil @ 2010-10-22 21:03 UTC (permalink / raw)
To: QEMU Developers; +Cc: Blue Swirl
fprintf_function uses format checking with GCC_FMT_ATTR.
Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
tcg/tcg.c | 6 ++----
tcg/tcg.h | 3 +--
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 0cdef0d..5dd6a2c 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -2124,8 +2124,7 @@ int tcg_gen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset)
}
#ifdef CONFIG_PROFILER
-void tcg_dump_info(FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf)
{
TCGContext *s = &tcg_ctx;
int64_t tot;
@@ -2169,8 +2168,7 @@ void tcg_dump_info(FILE *f,
dump_op_count();
}
#else
-void tcg_dump_info(FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf)
{
cpu_fprintf(f, "[TCG profiler not compiled]\n");
}
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 972df72..e1afde2 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -392,8 +392,7 @@ static inline TCGv_i64 tcg_temp_local_new_i64(void)
void tcg_temp_free_i64(TCGv_i64 arg);
char *tcg_get_arg_str_i64(TCGContext *s, char *buf, int buf_size, TCGv_i64 arg);
-void tcg_dump_info(FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
+void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf);
#define TCG_CT_ALIAS 0x80
#define TCG_CT_IALIAS 0x40
--
1.7.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH 3/4] exec: Use fprintf_function for dump_exec_info (format checking)
2010-10-22 21:03 [Qemu-devel] [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions Stefan Weil
2010-10-22 21:03 ` [Qemu-devel] [PATCH 2/4] tcg: Use fprintf_function (format checking) Stefan Weil
@ 2010-10-22 21:03 ` Stefan Weil
2010-10-22 21:03 ` [Qemu-devel] [PATCH 4/4] target-xxx: Use fprintf_function " Stefan Weil
2010-10-30 9:23 ` [Qemu-devel] Re: [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions Blue Swirl
3 siblings, 0 replies; 13+ messages in thread
From: Stefan Weil @ 2010-10-22 21:03 UTC (permalink / raw)
To: QEMU Developers; +Cc: Blue Swirl
fprintf_function uses format checking with GCC_FMT_ATTR.
It is declared in qemu-common.h and used in cpu-all.h
(which is included from cpu.h), so qemu-common.h must
be included earlier. Some redundant include statements
for standard include files were removed.
Fix also two format errors (ptrdiff_t needs %td).
Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
cpu-all.h | 3 +--
exec.c | 16 ++++------------
2 files changed, 5 insertions(+), 14 deletions(-)
diff --git a/cpu-all.h b/cpu-all.h
index 11edddc..ba9d766 100644
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -959,8 +959,7 @@ int cpu_physical_memory_get_dirty_tracking(void);
int cpu_physical_sync_dirty_bitmap(target_phys_addr_t start_addr,
target_phys_addr_t end_addr);
-void dump_exec_info(FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
+void dump_exec_info(FILE *f, fprintf_function cpu_fprintf);
#endif /* !CONFIG_USER_ONLY */
int cpu_memory_rw_debug(CPUState *env, target_ulong addr,
diff --git a/exec.c b/exec.c
index 631d8c5..db9ff55 100644
--- a/exec.c
+++ b/exec.c
@@ -23,17 +23,10 @@
#include <sys/types.h>
#include <sys/mman.h>
#endif
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <inttypes.h>
+#include "qemu-common.h"
#include "cpu.h"
#include "exec-all.h"
-#include "qemu-common.h"
#include "tcg.h"
#include "hw/hw.h"
#include "hw/qdev.h"
@@ -4096,8 +4089,7 @@ void cpu_io_recompile(CPUState *env, void *retaddr)
#if !defined(CONFIG_USER_ONLY)
-void dump_exec_info(FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void dump_exec_info(FILE *f, fprintf_function cpu_fprintf)
{
int i, target_code_size, max_target_code_size;
int direct_jmp_count, direct_jmp2_count, cross_page;
@@ -4124,14 +4116,14 @@ void dump_exec_info(FILE *f,
}
/* XXX: avoid using doubles ? */
cpu_fprintf(f, "Translation buffer state:\n");
- cpu_fprintf(f, "gen code size %ld/%ld\n",
+ cpu_fprintf(f, "gen code size %td/%ld\n",
code_gen_ptr - code_gen_buffer, code_gen_buffer_max_size);
cpu_fprintf(f, "TB count %d/%d\n",
nb_tbs, code_gen_max_blocks);
cpu_fprintf(f, "TB avg target size %d max=%d bytes\n",
nb_tbs ? target_code_size / nb_tbs : 0,
max_target_code_size);
- cpu_fprintf(f, "TB avg host size %d bytes (expansion ratio: %0.1f)\n",
+ cpu_fprintf(f, "TB avg host size %td bytes (expansion ratio: %0.1f)\n",
nb_tbs ? (code_gen_ptr - code_gen_buffer) / nb_tbs : 0,
target_code_size ? (double) (code_gen_ptr - code_gen_buffer) / target_code_size : 0);
cpu_fprintf(f, "cross page TB count %d (%d%%)\n",
--
1.7.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH 4/4] target-xxx: Use fprintf_function (format checking)
2010-10-22 21:03 [Qemu-devel] [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions Stefan Weil
2010-10-22 21:03 ` [Qemu-devel] [PATCH 2/4] tcg: Use fprintf_function (format checking) Stefan Weil
2010-10-22 21:03 ` [Qemu-devel] [PATCH 3/4] exec: Use fprintf_function for dump_exec_info " Stefan Weil
@ 2010-10-22 21:03 ` Stefan Weil
2010-11-01 2:24 ` TeLeMan
2010-10-30 9:23 ` [Qemu-devel] Re: [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions Blue Swirl
3 siblings, 1 reply; 13+ messages in thread
From: Stefan Weil @ 2010-10-22 21:03 UTC (permalink / raw)
To: QEMU Developers; +Cc: Blue Swirl
fprintf_function uses format checking with GCC_FMT_ATTR.
Format errors were fixed in
* target-i386/helper.c
* target-mips/translate.c
* target-ppc/translate.c
Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
cpu-all.h | 8 +++-----
cpus.c | 3 +--
cpus.h | 3 +--
target-alpha/helper.c | 3 +--
target-arm/cpu.h | 4 +++-
target-arm/helper.c | 2 +-
target-arm/translate.c | 3 +--
target-cris/cpu.h | 2 +-
target-cris/translate.c | 5 ++---
target-i386/cpu.h | 4 ++--
target-i386/cpuid.c | 3 +--
target-i386/helper.c | 14 +++++++-------
target-m68k/cpu.h | 3 ++-
target-m68k/helper.c | 2 +-
target-m68k/translate.c | 3 +--
target-microblaze/translate.c | 3 +--
target-mips/cpu.h | 3 ++-
target-mips/translate.c | 12 +++++-------
target-mips/translate_init.c | 2 +-
target-ppc/cpu.h | 4 ++--
target-ppc/translate.c | 14 ++++++--------
target-ppc/translate_init.c | 2 +-
target-s390x/translate.c | 3 +--
target-sh4/cpu.h | 3 ++-
target-sh4/translate.c | 2 +-
target-sparc/helper.c | 11 ++++-------
26 files changed, 54 insertions(+), 67 deletions(-)
diff --git a/cpu-all.h b/cpu-all.h
index ba9d766..30ae17d 100644
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -765,12 +765,10 @@ int page_check_range(target_ulong start, target_ulong len, int flags);
CPUState *cpu_copy(CPUState *env);
CPUState *qemu_get_cpu(int cpu);
-void cpu_dump_state(CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state(CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags);
-void cpu_dump_statistics (CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
- int flags);
+void cpu_dump_statistics(CPUState *env, FILE *f, fprintf_function cpu_fprintf,
+ int flags);
void QEMU_NORETURN cpu_abort(CPUState *env, const char *fmt, ...)
GCC_FMT_ATTR(2, 3);
diff --git a/cpus.c b/cpus.c
index 36a6d1f..91a0fb1 100644
--- a/cpus.c
+++ b/cpus.c
@@ -978,8 +978,7 @@ int64_t cpu_get_icount(void)
return qemu_icount_bias + (icount << icount_time_shift);
}
-void list_cpus(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
- const char *optarg)
+void list_cpus(FILE *f, fprintf_function cpu_fprintf, const char *optarg)
{
/* XXX: implement xxx_cpu_list for targets that still miss it */
#if defined(cpu_list_id)
diff --git a/cpus.h b/cpus.h
index af267ea..bf4d9bb 100644
--- a/cpus.h
+++ b/cpus.h
@@ -16,7 +16,6 @@ void vm_state_notify(int running, int reason);
bool cpu_exec_all(void);
void set_numa_modes(void);
void set_cpu_log(const char *optarg);
-void list_cpus(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
- const char *optarg);
+void list_cpus(FILE *f, fprintf_function cpu_fprintf, const char *optarg);
#endif
diff --git a/target-alpha/helper.c b/target-alpha/helper.c
index b6d2160..3ba4478 100644
--- a/target-alpha/helper.c
+++ b/target-alpha/helper.c
@@ -537,8 +537,7 @@ void do_interrupt (CPUState *env)
}
#endif
-void cpu_dump_state (CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state (CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
static const char *linux_reg_names[] = {
diff --git a/target-arm/cpu.h b/target-arm/cpu.h
index 39c4a0e..b87c605 100644
--- a/target-arm/cpu.h
+++ b/target-arm/cpu.h
@@ -25,6 +25,8 @@
#define CPUState struct CPUARMState
+#include "config.h"
+#include "qemu-common.h"
#include "cpu-defs.h"
#include "softfloat.h"
@@ -353,7 +355,7 @@ static inline int arm_feature(CPUARMState *env, int feature)
return (env->features & (1u << feature)) != 0;
}
-void arm_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
+void arm_cpu_list(FILE *f, fprintf_function cpu_fprintf);
/* Interface between CPU and Interrupt controller. */
void armv7m_nvic_set_pending(void *opaque, int irq);
diff --git a/target-arm/helper.c b/target-arm/helper.c
index 2dd64d9..996d40d 100644
--- a/target-arm/helper.c
+++ b/target-arm/helper.c
@@ -348,7 +348,7 @@ static const struct arm_cpu_t arm_cpu_names[] = {
{ 0, NULL}
};
-void arm_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void arm_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{
int i;
diff --git a/target-arm/translate.c b/target-arm/translate.c
index 6fcdd7e..99464ab 100644
--- a/target-arm/translate.c
+++ b/target-arm/translate.c
@@ -9262,8 +9262,7 @@ static const char *cpu_mode_names[16] = {
"???", "???", "???", "und", "???", "???", "???", "sys"
};
-void cpu_dump_state(CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state(CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
int i;
diff --git a/target-cris/cpu.h b/target-cris/cpu.h
index e1d48ed..d908775 100644
--- a/target-cris/cpu.h
+++ b/target-cris/cpu.h
@@ -263,6 +263,6 @@ static inline void cpu_get_tb_cpu_state(CPUState *env, target_ulong *pc,
}
#define cpu_list cris_cpu_list
-void cris_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
+void cris_cpu_list(FILE *f, fprintf_function cpu_fprintf);
#endif
diff --git a/target-cris/translate.c b/target-cris/translate.c
index 8361369..4e4606c 100644
--- a/target-cris/translate.c
+++ b/target-cris/translate.c
@@ -3426,8 +3426,7 @@ void gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb)
gen_intermediate_code_internal(env, tb, 1);
}
-void cpu_dump_state (CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state (CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
int i;
@@ -3480,7 +3479,7 @@ struct
{32, "crisv32"},
};
-void cris_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void cris_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{
unsigned int i;
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index 85ed30f..2440d65 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -20,6 +20,7 @@
#define CPU_I386_H
#include "config.h"
+#include "qemu-common.h"
#ifdef TARGET_X86_64
#define TARGET_LONG_BITS 64
@@ -756,8 +757,7 @@ typedef struct CPUX86State {
CPUX86State *cpu_x86_init(const char *cpu_model);
int cpu_x86_exec(CPUX86State *s);
void cpu_x86_close(CPUX86State *s);
-void x86_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
- const char *optarg);
+void x86_cpu_list (FILE *f, fprintf_function cpu_fprintf, const char *optarg);
void x86_cpudef_setup(void);
int cpu_get_pic_interrupt(CPUX86State *s);
diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c
index 0e0bf60..650a719 100644
--- a/target-i386/cpuid.c
+++ b/target-i386/cpuid.c
@@ -762,8 +762,7 @@ static void listflags(char *buf, int bufsize, uint32_t fbits,
* -?dump output all model (x86_def_t) data
* -?cpuid list all recognized cpuid flag names
*/
-void x86_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
- const char *optarg)
+void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf, const char *optarg)
{
unsigned char model = !strcmp("?model", optarg);
unsigned char dump = !strcmp("?dump", optarg);
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 4fff4a8..26ea1e5 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -169,8 +169,7 @@ static const char *cc_op_str[] = {
};
static void
-cpu_x86_dump_seg_cache(CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+cpu_x86_dump_seg_cache(CPUState *env, FILE *f, fprintf_function cpu_fprintf,
const char *name, struct SegmentCache *sc)
{
#ifdef TARGET_X86_64
@@ -224,8 +223,7 @@ done:
cpu_fprintf(f, "\n");
}
-void cpu_dump_state(CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state(CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
int eflags, i, nb;
@@ -335,9 +333,11 @@ void cpu_dump_state(CPUState *env, FILE *f,
(uint32_t)env->cr[2],
(uint32_t)env->cr[3],
(uint32_t)env->cr[4]);
- for(i = 0; i < 4; i++)
- cpu_fprintf(f, "DR%d=%08x ", i, env->dr[i]);
- cpu_fprintf(f, "\nDR6=%08x DR7=%08x\n", env->dr[6], env->dr[7]);
+ for(i = 0; i < 4; i++) {
+ cpu_fprintf(f, "DR%d=" TARGET_FMT_lx " ", i, env->dr[i]);
+ }
+ cpu_fprintf(f, "\nDR6=" TARGET_FMT_lx " DR7=" TARGET_FMT_lx "\n",
+ env->dr[6], env->dr[7]);
}
if (flags & X86_DUMP_CCOP) {
if ((unsigned)env->cc_op < CC_OP_NB)
diff --git a/target-m68k/cpu.h b/target-m68k/cpu.h
index 33c41b2..b025b66 100644
--- a/target-m68k/cpu.h
+++ b/target-m68k/cpu.h
@@ -24,6 +24,7 @@
#define CPUState struct CPUM68KState
+#include "qemu-common.h"
#include "cpu-defs.h"
#include "softfloat.h"
@@ -198,7 +199,7 @@ static inline int m68k_feature(CPUM68KState *env, int feature)
return (env->features & (1u << feature)) != 0;
}
-void m68k_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
+void m68k_cpu_list(FILE *f, fprintf_function cpu_fprintf);
void register_m68k_insns (CPUM68KState *env);
diff --git a/target-m68k/helper.c b/target-m68k/helper.c
index b4ebb14..56de897 100644
--- a/target-m68k/helper.c
+++ b/target-m68k/helper.c
@@ -53,7 +53,7 @@ static m68k_def_t m68k_cpu_defs[] = {
{NULL, 0},
};
-void m68k_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void m68k_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{
unsigned int i;
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index 5351880..6f72a2b 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -3092,8 +3092,7 @@ void gen_intermediate_code_pc(CPUState *env, TranslationBlock *tb)
gen_intermediate_code_internal(env, tb, 1);
}
-void cpu_dump_state(CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state(CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
int i;
diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c
index 38149bb..1ada15e 100644
--- a/target-microblaze/translate.c
+++ b/target-microblaze/translate.c
@@ -1534,8 +1534,7 @@ void gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb)
gen_intermediate_code_internal(env, tb, 1);
}
-void cpu_dump_state (CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state (CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
int i;
diff --git a/target-mips/cpu.h b/target-mips/cpu.h
index 19511d7..c1f211f 100644
--- a/target-mips/cpu.h
+++ b/target-mips/cpu.h
@@ -8,6 +8,7 @@
#define CPUState struct CPUMIPSState
#include "config.h"
+#include "qemu-common.h"
#include "mips-defs.h"
#include "cpu-defs.h"
#include "softfloat.h"
@@ -496,7 +497,7 @@ void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
int unused, int size);
#endif
-void mips_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
+void mips_cpu_list (FILE *f, fprintf_function cpu_fprintf);
#define cpu_init cpu_mips_init
#define cpu_exec cpu_mips_exec
diff --git a/target-mips/translate.c b/target-mips/translate.c
index d62c615..ba45eb0 100644
--- a/target-mips/translate.c
+++ b/target-mips/translate.c
@@ -12450,8 +12450,7 @@ void gen_intermediate_code_pc (CPUState *env, struct TranslationBlock *tb)
gen_intermediate_code_internal(env, tb, 1);
}
-static void fpu_dump_state(CPUState *env, FILE *f,
- int (*fpu_fprintf)(FILE *f, const char *fmt, ...),
+static void fpu_dump_state(CPUState *env, FILE *f, fprintf_function fpu_fprintf,
int flags)
{
int i;
@@ -12480,8 +12479,8 @@ static void fpu_dump_state(CPUState *env, FILE *f,
} while(0)
- fpu_fprintf(f, "CP1 FCR0 0x%08x FCR31 0x%08x SR.FR %d fp_status 0x%08x(0x%02x)\n",
- env->active_fpu.fcr0, env->active_fpu.fcr31, is_fpu64, env->active_fpu.fp_status,
+ fpu_fprintf(f, "CP1 FCR0 0x%08x FCR31 0x%08x SR.FR %d fp_status 0x%02x\n",
+ env->active_fpu.fcr0, env->active_fpu.fcr31, is_fpu64,
get_float_exception_flags(&env->active_fpu.fp_status));
for (i = 0; i < 32; (is_fpu64) ? i++ : (i += 2)) {
fpu_fprintf(f, "%3s: ", fregnames[i]);
@@ -12499,7 +12498,7 @@ static void fpu_dump_state(CPUState *env, FILE *f,
static void
cpu_mips_check_sign_extensions (CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+ fprintf_function cpu_fprintf,
int flags)
{
int i;
@@ -12525,8 +12524,7 @@ cpu_mips_check_sign_extensions (CPUState *env, FILE *f,
}
#endif
-void cpu_dump_state (CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state (CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
int i;
diff --git a/target-mips/translate_init.c b/target-mips/translate_init.c
index 8d1ece7..590e092 100644
--- a/target-mips/translate_init.c
+++ b/target-mips/translate_init.c
@@ -500,7 +500,7 @@ static const mips_def_t *cpu_mips_find_by_name (const char *name)
return NULL;
}
-void mips_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void mips_cpu_list (FILE *f, fprintf_function cpu_fprintf)
{
int i;
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 1334dd1..deb8d7c 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -20,7 +20,7 @@
#define __CPU_PPC_H__
#include "config.h"
-#include <inttypes.h>
+#include "qemu-common.h"
//#define PPC_EMULATE_32BITS_HYPV
@@ -761,7 +761,7 @@ void ppc_store_sr (CPUPPCState *env, int srnum, target_ulong value);
#endif /* !defined(CONFIG_USER_ONLY) */
void ppc_store_msr (CPUPPCState *env, target_ulong value);
-void ppc_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
+void ppc_cpu_list (FILE *f, fprintf_function cpu_fprintf);
const ppc_def_t *cpu_ppc_find_by_name (const char *name);
int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def);
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index fd06861..c82a483 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -8830,8 +8830,7 @@ GEN_SPEOP_LDST(evstwwo, 0x1E, 2),
/*****************************************************************************/
/* Misc PowerPC helpers */
-void cpu_dump_state (CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state (CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
#define RGPL 4
@@ -8840,15 +8839,15 @@ void cpu_dump_state (CPUState *env, FILE *f,
int i;
cpu_fprintf(f, "NIP " TARGET_FMT_lx " LR " TARGET_FMT_lx " CTR "
- TARGET_FMT_lx " XER %08x\n", env->nip, env->lr, env->ctr,
- env->xer);
+ TARGET_FMT_lx " XER " TARGET_FMT_lx "\n",
+ env->nip, env->lr, env->ctr, env->xer);
cpu_fprintf(f, "MSR " TARGET_FMT_lx " HID0 " TARGET_FMT_lx " HF "
TARGET_FMT_lx " idx %d\n", env->msr, env->spr[SPR_HID0],
env->hflags, env->mmu_idx);
#if !defined(NO_TIMER_DUMP)
- cpu_fprintf(f, "TB %08x %08x "
+ cpu_fprintf(f, "TB %08" PRIu32 " %08" PRIu64
#if !defined(CONFIG_USER_ONLY)
- "DECR %08x"
+ " DECR %08" PRIu32
#endif
"\n",
cpu_ppc_load_tbu(env), cpu_ppc_load_tbl(env)
@@ -8898,8 +8897,7 @@ void cpu_dump_state (CPUState *env, FILE *f,
#undef RFPL
}
-void cpu_dump_statistics (CPUState *env, FILE*f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_statistics (CPUState *env, FILE*f, fprintf_function cpu_fprintf,
int flags)
{
#if defined(DO_PPC_STATISTICS)
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 05ffe95..dfcd949 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -9756,7 +9756,7 @@ const ppc_def_t *cpu_ppc_find_by_name (const char *name)
return ret;
}
-void ppc_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void ppc_cpu_list (FILE *f, fprintf_function cpu_fprintf)
{
int i, max;
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 44dfa65..881d8c4 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -23,8 +23,7 @@
#include "tcg-op.h"
#include "qemu-log.h"
-void cpu_dump_state(CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state(CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
int i;
diff --git a/target-sh4/cpu.h b/target-sh4/cpu.h
index 64a609b..e197766 100644
--- a/target-sh4/cpu.h
+++ b/target-sh4/cpu.h
@@ -20,6 +20,7 @@
#define _CPU_SH4_H
#include "config.h"
+#include "qemu-common.h"
#define TARGET_LONG_BITS 32
#define TARGET_HAS_ICE 1
@@ -168,7 +169,7 @@ int cpu_sh4_handle_mmu_fault(CPUSH4State * env, target_ulong address, int rw,
#define cpu_handle_mmu_fault cpu_sh4_handle_mmu_fault
void do_interrupt(CPUSH4State * env);
-void sh4_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
+void sh4_cpu_list(FILE *f, fprintf_function cpu_fprintf);
#if !defined(CONFIG_USER_ONLY)
void cpu_sh4_invalidate_tlb(CPUSH4State *s);
void cpu_sh4_write_mmaped_utlb_addr(CPUSH4State *s, target_phys_addr_t addr,
diff --git a/target-sh4/translate.c b/target-sh4/translate.c
index deee939..f418139 100644
--- a/target-sh4/translate.c
+++ b/target-sh4/translate.c
@@ -257,7 +257,7 @@ static const sh4_def_t *cpu_sh4_find_by_name(const char *name)
return NULL;
}
-void sh4_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void sh4_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{
int i;
diff --git a/target-sparc/helper.c b/target-sparc/helper.c
index aa1fd63..e84c312 100644
--- a/target-sparc/helper.c
+++ b/target-sparc/helper.c
@@ -1323,8 +1323,7 @@ static const char * const feature_name[] = {
"gl",
};
-static void print_features(FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+static void print_features(FILE *f, fprintf_function cpu_fprintf,
uint32_t features, const char *prefix)
{
unsigned int i;
@@ -1452,7 +1451,7 @@ static int cpu_sparc_find_by_name(sparc_def_t *cpu_def, const char *cpu_model)
return -1;
}
-void sparc_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+void sparc_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{
unsigned int i;
@@ -1479,8 +1478,7 @@ void sparc_cpu_list(FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
"fpu_version mmu_version nwindows\n");
}
-static void cpu_print_cc(FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+static void cpu_print_cc(FILE *f, fprintf_function cpu_fprintf,
uint32_t cc)
{
cpu_fprintf(f, "%c%c%c%c", cc & PSR_NEG? 'N' : '-',
@@ -1494,8 +1492,7 @@ static void cpu_print_cc(FILE *f,
#define REGS_PER_LINE 8
#endif
-void cpu_dump_state(CPUState *env, FILE *f,
- int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+void cpu_dump_state(CPUState *env, FILE *f, fprintf_function cpu_fprintf,
int flags)
{
int i, x;
--
1.7.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Qemu-devel] Re: [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions
2010-10-22 21:03 [Qemu-devel] [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions Stefan Weil
` (2 preceding siblings ...)
2010-10-22 21:03 ` [Qemu-devel] [PATCH 4/4] target-xxx: Use fprintf_function " Stefan Weil
@ 2010-10-30 9:23 ` Blue Swirl
3 siblings, 0 replies; 13+ messages in thread
From: Blue Swirl @ 2010-10-30 9:23 UTC (permalink / raw)
To: Stefan Weil; +Cc: QEMU Developers
Thanks, applied all.
On Fri, Oct 22, 2010 at 9:03 PM, Stefan Weil <weil@mail.berlios.de> wrote:
> This kind of function pointers is used very often in qemu.
>
> The new data type uses format checking with GCC_FMT_ATTR
> and will be used in later patches.
>
> Cc: Blue Swirl <blauwirbel@gmail.com>
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> ---
> qemu-common.h | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/qemu-common.h b/qemu-common.h
> index d5ae420..7eeec8e 100644
> --- a/qemu-common.h
> +++ b/qemu-common.h
> @@ -81,6 +81,9 @@ struct iovec {
> #define GCC_FMT_ATTR(n, m)
> #endif
>
> +typedef int (*fprintf_function)(FILE *f, const char *fmt, ...)
> + GCC_FMT_ATTR(2, 3);
> +
> #ifdef _WIN32
> #define fsync _commit
> #define lseek _lseeki64
> --
> 1.7.1
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH 4/4] target-xxx: Use fprintf_function (format checking)
2010-10-22 21:03 ` [Qemu-devel] [PATCH 4/4] target-xxx: Use fprintf_function " Stefan Weil
@ 2010-11-01 2:24 ` TeLeMan
2010-11-01 7:05 ` Stefan Weil
0 siblings, 1 reply; 13+ messages in thread
From: TeLeMan @ 2010-11-01 2:24 UTC (permalink / raw)
To: Stefan Weil; +Cc: Blue Swirl, QEMU Developers
On Sat, Oct 23, 2010 at 05:03, Stefan Weil <weil@mail.berlios.de> wrote:
> int eflags, i, nb;
> @@ -335,9 +333,11 @@ void cpu_dump_state(CPUState *env, FILE *f,
> (uint32_t)env->cr[2],
> (uint32_t)env->cr[3],
> (uint32_t)env->cr[4]);
> - for(i = 0; i < 4; i++)
> - cpu_fprintf(f, "DR%d=%08x ", i, env->dr[i]);
> - cpu_fprintf(f, "\nDR6=%08x DR7=%08x\n", env->dr[6], env->dr[7]);
> + for(i = 0; i < 4; i++) {
> + cpu_fprintf(f, "DR%d=" TARGET_FMT_lx " ", i, env->dr[i]);
> + }
> + cpu_fprintf(f, "\nDR6=" TARGET_FMT_lx " DR7=" TARGET_FMT_lx "\n",
> + env->dr[6], env->dr[7]);
> }
I think this patch is not right. Outputting 64bits data is not
necessary on 32bits mode.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH 4/4] target-xxx: Use fprintf_function (format checking)
2010-11-01 2:24 ` TeLeMan
@ 2010-11-01 7:05 ` Stefan Weil
2010-11-01 9:50 ` TeLeMan
0 siblings, 1 reply; 13+ messages in thread
From: Stefan Weil @ 2010-11-01 7:05 UTC (permalink / raw)
To: TeLeMan; +Cc: Blue Swirl, QEMU Developers
Am 01.11.2010 03:24, schrieb TeLeMan:
> On Sat, Oct 23, 2010 at 05:03, Stefan Weil <weil@mail.berlios.de> wrote:
>> int eflags, i, nb;
>> @@ -335,9 +333,11 @@ void cpu_dump_state(CPUState *env, FILE *f,
>> (uint32_t)env->cr[2],
>> (uint32_t)env->cr[3],
>> (uint32_t)env->cr[4]);
>> - for(i = 0; i < 4; i++)
>> - cpu_fprintf(f, "DR%d=%08x ", i, env->dr[i]);
>> - cpu_fprintf(f, "\nDR6=%08x DR7=%08x\n", env->dr[6], env->dr[7]);
>> + for(i = 0; i < 4; i++) {
>> + cpu_fprintf(f, "DR%d=" TARGET_FMT_lx " ", i, env->dr[i]);
>> + }
>> + cpu_fprintf(f, "\nDR6=" TARGET_FMT_lx " DR7=" TARGET_FMT_lx
>> "\n",
>> + env->dr[6], env->dr[7]);
>> }
> I think this patch is not right. Outputting 64bits data is not
> necessary on 32bits mode.
Do you speak of 32 bit hosts or 32 bit targets?
dr is of type target_ulong, so its size depends on the target's
word size. TARGET_FMT_lx is the correct format specifier
for target_ulong.
What would you propose?
Cheers,
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH 4/4] target-xxx: Use fprintf_function (format checking)
2010-11-01 7:05 ` Stefan Weil
@ 2010-11-01 9:50 ` TeLeMan
2010-11-01 10:14 ` [Qemu-devel] " Paolo Bonzini
0 siblings, 1 reply; 13+ messages in thread
From: TeLeMan @ 2010-11-01 9:50 UTC (permalink / raw)
To: Stefan Weil; +Cc: Blue Swirl, QEMU Developers
--
SUN OF A BEACH
On Mon, Nov 1, 2010 at 15:05, Stefan Weil <weil@mail.berlios.de> wrote:
> Am 01.11.2010 03:24, schrieb TeLeMan:
>>
>> On Sat, Oct 23, 2010 at 05:03, Stefan Weil <weil@mail.berlios.de> wrote:
>>>
>>> int eflags, i, nb;
>>> @@ -335,9 +333,11 @@ void cpu_dump_state(CPUState *env, FILE *f,
>>> (uint32_t)env->cr[2],
>>> (uint32_t)env->cr[3],
>>> (uint32_t)env->cr[4]);
>>> - for(i = 0; i < 4; i++)
>>> - cpu_fprintf(f, "DR%d=%08x ", i, env->dr[i]);
>>> - cpu_fprintf(f, "\nDR6=%08x DR7=%08x\n", env->dr[6], env->dr[7]);
>>> + for(i = 0; i < 4; i++) {
>>> + cpu_fprintf(f, "DR%d=" TARGET_FMT_lx " ", i, env->dr[i]);
>>> + }
>>> + cpu_fprintf(f, "\nDR6=" TARGET_FMT_lx " DR7=" TARGET_FMT_lx
>>> "\n",
>>> + env->dr[6], env->dr[7]);
>>> }
>>
>> I think this patch is not right. Outputting 64bits data is not
>> necessary on 32bits mode.
>
> Do you speak of 32 bit hosts or 32 bit targets?
32bit mode of x64
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] Re: [PATCH 4/4] target-xxx: Use fprintf_function (format checking)
2010-11-01 9:50 ` TeLeMan
@ 2010-11-01 10:14 ` Paolo Bonzini
2010-11-01 10:20 ` Paolo Bonzini
[not found] ` <AANLkTino2N6qxYxwXu1cLn=oVanETcqOjthfX7qr4_Dh@mail.gmail.com>
0 siblings, 2 replies; 13+ messages in thread
From: Paolo Bonzini @ 2010-11-01 10:14 UTC (permalink / raw)
To: TeLeMan; +Cc: Blue Swirl, QEMU Developers
On 11/01/2010 10:50 AM, TeLeMan wrote:
>>> I think this patch is not right. Outputting 64bits data is not
>>> necessary on 32bits mode.
>>
>> Do you speak of 32 bit hosts or 32 bit targets?
>
> 32bit mode of x64
There is no such thing as a 32 bit host on x64, only 64-bit hosts that
haven't turned on long mode. So printing 64 bits is correct for those.
Paolo
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] Re: [PATCH 4/4] target-xxx: Use fprintf_function (format checking)
2010-11-01 10:14 ` [Qemu-devel] " Paolo Bonzini
@ 2010-11-01 10:20 ` Paolo Bonzini
[not found] ` <AANLkTino2N6qxYxwXu1cLn=oVanETcqOjthfX7qr4_Dh@mail.gmail.com>
1 sibling, 0 replies; 13+ messages in thread
From: Paolo Bonzini @ 2010-11-01 10:20 UTC (permalink / raw)
Cc: Blue Swirl, TeLeMan, QEMU Developers
On 11/01/2010 11:14 AM, Paolo Bonzini wrote:
> There is no such thing as a 32 bit host on x64, only 64-bit hosts that
^^^^ ^^^^^
guests
> haven't turned on long mode. So printing 64 bits is correct for those.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] Re: [PATCH 4/4] target-xxx: Use fprintf_function (format checking)
[not found] ` <AANLkTino2N6qxYxwXu1cLn=oVanETcqOjthfX7qr4_Dh@mail.gmail.com>
@ 2010-11-01 11:03 ` Paolo Bonzini
2010-11-01 15:18 ` Stefan Weil
0 siblings, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2010-11-01 11:03 UTC (permalink / raw)
To: TeLeMan, Blue Swirl, qemu-devel, Stefan Weil
On 11/01/2010 11:27 AM, TeLeMan wrote:
> On Mon, Nov 1, 2010 at 18:14, Paolo Bonzini<pbonzini@redhat.com> wrote:
>> On 11/01/2010 10:50 AM, TeLeMan wrote:
>>>>>
>>>>> I think this patch is not right. Outputting 64bits data is not
>>>>> necessary on 32bits mode.
>>>>
>>>> Do you speak of 32 bit hosts or 32 bit targets?
>>>
>>> 32bit mode of x64
>>
>> There is no such thing as a 32 bit host on x64, only 64-bit hosts that
>> haven't turned on long mode. So printing 64 bits is correct for those.
>
> If so, why the above crX is printed by 32 bits?
There are two issues. One is what type specifier to use (and it is a
correctness issue), the other is what width to use (and it is an
aesthetics issue). The patch fixes the correctness issue and makes the
aesthetic part worse.
I agree that a better fix would be to cast to uint32_t as it is done for
crX, but this patch is anyway better than nothing because right now DR7
is printed incorrectly _exactly on 64-bit guests running on 32-bit mode_.
An even better fix than uint32_t would be to introduce TARGET_FMT_8lx
(which maps to "%08"PRI_x64) so that, if for some reason the high 32-bit
are not zero, they will be shown.
Paolo
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] Re: [PATCH 4/4] target-xxx: Use fprintf_function (format checking)
2010-11-01 11:03 ` Paolo Bonzini
@ 2010-11-01 15:18 ` Stefan Weil
2010-11-01 15:42 ` Paolo Bonzini
0 siblings, 1 reply; 13+ messages in thread
From: Stefan Weil @ 2010-11-01 15:18 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: Blue Swirl, TeLeMan, qemu-devel
Am 01.11.2010 12:03, schrieb Paolo Bonzini:
> On 11/01/2010 11:27 AM, TeLeMan wrote:
>> On Mon, Nov 1, 2010 at 18:14, Paolo Bonzini<pbonzini@redhat.com> wrote:
>>> On 11/01/2010 10:50 AM, TeLeMan wrote:
>>>>>>
>>>>>> I think this patch is not right. Outputting 64bits data is not
>>>>>> necessary on 32bits mode.
>>>>>
>>>>> Do you speak of 32 bit hosts or 32 bit targets?
>>>>
>>>> 32bit mode of x64
>>>
>>> There is no such thing as a 32 bit host on x64, only 64-bit hosts that
>>> haven't turned on long mode. So printing 64 bits is correct for those.
>>
>> If so, why the above crX is printed by 32 bits?
>
> There are two issues. One is what type specifier to use (and it is a
> correctness issue), the other is what width to use (and it is an
> aesthetics issue). The patch fixes the correctness issue and makes
> the aesthetic part worse.
>
> I agree that a better fix would be to cast to uint32_t as it is done
> for crX, but this patch is anyway better than nothing because right
> now DR7 is printed incorrectly _exactly on 64-bit guests running on
> 32-bit mode_.
>
> An even better fix than uint32_t would be to introduce TARGET_FMT_8lx
> (which maps to "%08"PRI_x64) so that, if for some reason the high
> 32-bit are not zero, they will be shown.
>
> Paolo
Yes. We already had a similar discussion about TARGET_FMT_PLX, see
http://www.mail-archive.com/qemu-devel@nongnu.org/msg42977.html.
There I suggested to define PRIxTPA (format specifier for a target
physical address). We could also add a PRIxTUL (for target_ulong),
so it would be possible to output "%04" PRIxTUL or "%08" PRIxTUL.
Thus we could avoid the need for TARGET_FMT_8lx, TARGET_FMT_4lx
and maybe even TARGET_FMT_2lx.
Kind regards,
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] Re: [PATCH 4/4] target-xxx: Use fprintf_function (format checking)
2010-11-01 15:18 ` Stefan Weil
@ 2010-11-01 15:42 ` Paolo Bonzini
0 siblings, 0 replies; 13+ messages in thread
From: Paolo Bonzini @ 2010-11-01 15:42 UTC (permalink / raw)
To: Stefan Weil; +Cc: Blue Swirl, TeLeMan, qemu-devel
> > An even better fix than uint32_t would be to introduce TARGET_FMT_8lx
> > (which maps to "%08"PRI_x64) so that, if for some reason the high
> > 32-bit are not zero, they will be shown.
> >
> Yes. We already had a similar discussion about TARGET_FMT_PLX, see
> http://www.mail-archive.com/qemu-devel@nongnu.org/msg42977.html.
>
> There I suggested to define PRIxTPA (format specifier for a target
> physical address). We could also add a PRIxTUL (for target_ulong),
> so it would be possible to output "%04" PRIxTUL or "%08" PRIxTUL.
> Thus we could avoid the need for TARGET_FMT_8lx, TARGET_FMT_4lx
> and maybe even TARGET_FMT_2lx.
Yes, that would be nice to have too.
Paolo
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2010-11-01 15:43 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-22 21:03 [Qemu-devel] [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions Stefan Weil
2010-10-22 21:03 ` [Qemu-devel] [PATCH 2/4] tcg: Use fprintf_function (format checking) Stefan Weil
2010-10-22 21:03 ` [Qemu-devel] [PATCH 3/4] exec: Use fprintf_function for dump_exec_info " Stefan Weil
2010-10-22 21:03 ` [Qemu-devel] [PATCH 4/4] target-xxx: Use fprintf_function " Stefan Weil
2010-11-01 2:24 ` TeLeMan
2010-11-01 7:05 ` Stefan Weil
2010-11-01 9:50 ` TeLeMan
2010-11-01 10:14 ` [Qemu-devel] " Paolo Bonzini
2010-11-01 10:20 ` Paolo Bonzini
[not found] ` <AANLkTino2N6qxYxwXu1cLn=oVanETcqOjthfX7qr4_Dh@mail.gmail.com>
2010-11-01 11:03 ` Paolo Bonzini
2010-11-01 15:18 ` Stefan Weil
2010-11-01 15:42 ` Paolo Bonzini
2010-10-30 9:23 ` [Qemu-devel] Re: [PATCH 1/4] Add fprintf_function for function pointers to fprintf-like functions Blue Swirl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).