diff mbox series

[17/17] include: Move fprintf_function to disas/

Message ID 20190411152520.10061-18-armbru@redhat.com
State New
Headers show
Series Clean up and simplify around fprintf_function | expand

Commit Message

Markus Armbruster April 11, 2019, 3:25 p.m. UTC
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

Comments

Dr. David Alan Gilbert April 12, 2019, 6:39 p.m. UTC | #1
* 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
Markus Armbruster April 13, 2019, 4:59 a.m. UTC | #2
"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 mbox series

Patch

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