Message ID | 20190411152520.10061-18-armbru@redhat.com |
---|---|
State | New |
Headers | show |
Series | Clean up and simplify around fprintf_function | expand |
* Markus Armbruster (armbru@redhat.com) wrote: > The previous commits have eliminated fprintf_function outside > disassemblers, simplifying code and cleaning up the ugly type-punning > fprintf_function seems to attract. Move fprintf_function to > include/disas/dis-asm.h to reduce the temptation to abuse it. > > I considered renaming it to fprintf_ftype (reverting that part of > commit 6e2d864edf5, v0.14.0) to get us closer to binutils, but I > figure the fork is too distant to make this worthwhile. > > Signed-off-by: Markus Armbruster <armbru@redhat.com> I'm OKish with this - although it's the only place we currently use it, it's a fairly common concept, so I'm not sure it's worth banishing. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > --- > include/disas/dis-asm.h | 5 +++-- > include/qemu/fprintf-fn.h | 14 -------------- > 2 files changed, 3 insertions(+), 16 deletions(-) > delete mode 100644 include/qemu/fprintf-fn.h > > diff --git a/include/disas/dis-asm.h b/include/disas/dis-asm.h > index 41b61c85f9..9240ec32c2 100644 > --- a/include/disas/dis-asm.h > +++ b/include/disas/dis-asm.h > @@ -9,8 +9,6 @@ > #ifndef DISAS_BFD_H > #define DISAS_BFD_H > > -#include "qemu/fprintf-fn.h" > - > typedef void *PTR; > typedef uint64_t bfd_vma; > typedef int64_t bfd_signed_vma; > @@ -243,6 +241,9 @@ typedef struct symbol_cache_entry > } udata; > } asymbol; > > +typedef int (*fprintf_function)(FILE *f, const char *fmt, ...) > + GCC_FMT_ATTR(2, 3); > + > enum dis_insn_type { > dis_noninsn, /* Not a valid instruction */ > dis_nonbranch, /* Not a branch instruction */ > diff --git a/include/qemu/fprintf-fn.h b/include/qemu/fprintf-fn.h > deleted file mode 100644 > index 9068a960b3..0000000000 > --- a/include/qemu/fprintf-fn.h > +++ /dev/null > @@ -1,14 +0,0 @@ > -/* > - * Typedef for fprintf-alike function pointers. > - * > - * This work is licensed under the terms of the GNU GPL, version 2 or later. > - * See the COPYING file in the top-level directory. > - */ > - > -#ifndef QEMU_FPRINTF_FN_H > -#define QEMU_FPRINTF_FN_H > - > -typedef int (*fprintf_function)(FILE *f, const char *fmt, ...) > - GCC_FMT_ATTR(2, 3); > - > -#endif > -- > 2.17.2 > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
"Dr. David Alan Gilbert" <dgilbert@redhat.com> writes: > * Markus Armbruster (armbru@redhat.com) wrote: >> The previous commits have eliminated fprintf_function outside >> disassemblers, simplifying code and cleaning up the ugly type-punning >> fprintf_function seems to attract. Move fprintf_function to >> include/disas/dis-asm.h to reduce the temptation to abuse it. >> >> I considered renaming it to fprintf_ftype (reverting that part of >> commit 6e2d864edf5, v0.14.0) to get us closer to binutils, but I >> figure the fork is too distant to make this worthwhile. >> >> Signed-off-by: Markus Armbruster <armbru@redhat.com> > > I'm OKish with this - although it's the only place we currently > use it, it's a fairly common concept, so I'm not sure it's worth > banishing. I found 15 uses, ranging from questionable to outright bad. I eliminated 14, and cleaned up one. I guess that has made me skeptical on the chances of this type getting used sanely. Banishing the type to where it came from reduces the temptation. Perhaps that's not actually necessary now we've gotten rid of the bad examples. Should a sane use come up, we can simply revert this patch. > Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Thanks!
diff --git a/include/disas/dis-asm.h b/include/disas/dis-asm.h index 41b61c85f9..9240ec32c2 100644 --- a/include/disas/dis-asm.h +++ b/include/disas/dis-asm.h @@ -9,8 +9,6 @@ #ifndef DISAS_BFD_H #define DISAS_BFD_H -#include "qemu/fprintf-fn.h" - typedef void *PTR; typedef uint64_t bfd_vma; typedef int64_t bfd_signed_vma; @@ -243,6 +241,9 @@ typedef struct symbol_cache_entry } udata; } asymbol; +typedef int (*fprintf_function)(FILE *f, const char *fmt, ...) + GCC_FMT_ATTR(2, 3); + enum dis_insn_type { dis_noninsn, /* Not a valid instruction */ dis_nonbranch, /* Not a branch instruction */ diff --git a/include/qemu/fprintf-fn.h b/include/qemu/fprintf-fn.h deleted file mode 100644 index 9068a960b3..0000000000 --- a/include/qemu/fprintf-fn.h +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Typedef for fprintf-alike function pointers. - * - * This work is licensed under the terms of the GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ - -#ifndef QEMU_FPRINTF_FN_H -#define QEMU_FPRINTF_FN_H - -typedef int (*fprintf_function)(FILE *f, const char *fmt, ...) - GCC_FMT_ATTR(2, 3); - -#endif
The previous commits have eliminated fprintf_function outside disassemblers, simplifying code and cleaning up the ugly type-punning fprintf_function seems to attract. Move fprintf_function to include/disas/dis-asm.h to reduce the temptation to abuse it. I considered renaming it to fprintf_ftype (reverting that part of commit 6e2d864edf5, v0.14.0) to get us closer to binutils, but I figure the fork is too distant to make this worthwhile. Signed-off-by: Markus Armbruster <armbru@redhat.com> --- include/disas/dis-asm.h | 5 +++-- include/qemu/fprintf-fn.h | 14 -------------- 2 files changed, 3 insertions(+), 16 deletions(-) delete mode 100644 include/qemu/fprintf-fn.h