diff mbox

tci: Fix compile failure by including qemu-common.h

Message ID 1436460577-11245-1-git-send-email-peter.maydell@linaro.org
State Accepted
Commit 16c1321bd78ad79a7252b714184ee2a0b5944c56
Headers show

Commit Message

Peter Maydell July 9, 2015, 4:49 p.m. UTC
Compilation of TCI was accidentally broken by the recent disassembler
changes:

  CC    x86_64-softmmu/arch_init.o
In file included from target-i386/cpu-qom.h:23:0,
                 from target-i386/cpu.h:986,
                 from include/qemu-common.h:122,
                 from include/disas/bfd.h:12,
                 from disas/tci.c:20:
include/qom/cpu.h:178:43: error: unknown type name ‘disassemble_info’
     void (*disas_set_info)(CPUState *cpu, disassemble_info *info);
                                           ^
include/qom/cpu.h:179:1: error:
no semicolon at end of struct or union [-Werror]
 } CPUClass;
 ^
cc1: all warnings being treated as errors

The underlying cause of this is an include loop:
 bfd.h -> qemu-common.h -> target-arm/cpu.h ->  target-arm/cpu-qom.h
  -> qom/cpu.h -> bfd.h

which means that if bfd.h is included first then qom/cpu.h doesn't
get the definition of the disassemble_info type that it wanted.
The easiest fix for this is to include qemu-common.h from tci.c
before including disas/bfd.h.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
The cleaner fix is to not include qemu-common.h from bfd.h, but
at this point in the release cycle I want a small and safe change.
---
 disas/tci.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Peter Maydell July 9, 2015, 4:58 p.m. UTC | #1
On 9 July 2015 at 17:49, Peter Maydell <peter.maydell@linaro.org> wrote:
> Compilation of TCI was accidentally broken by the recent disassembler
> changes:
>
>   CC    x86_64-softmmu/arch_init.o
> In file included from target-i386/cpu-qom.h:23:0,
>                  from target-i386/cpu.h:986,
>                  from include/qemu-common.h:122,
>                  from include/disas/bfd.h:12,
>                  from disas/tci.c:20:
> include/qom/cpu.h:178:43: error: unknown type name ‘disassemble_info’
>      void (*disas_set_info)(CPUState *cpu, disassemble_info *info);
>                                            ^
> include/qom/cpu.h:179:1: error:
> no semicolon at end of struct or union [-Werror]
>  } CPUClass;
>  ^
> cc1: all warnings being treated as errors
>
> The underlying cause of this is an include loop:
>  bfd.h -> qemu-common.h -> target-arm/cpu.h ->  target-arm/cpu-qom.h
>   -> qom/cpu.h -> bfd.h
>
> which means that if bfd.h is included first then qom/cpu.h doesn't
> get the definition of the disassemble_info type that it wanted.
> The easiest fix for this is to include qemu-common.h from tci.c
> before including disas/bfd.h.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Applied to master.

Note that "make check" on a TCI seems to assert; I'll let
somebody who cares about TCI look into that.

-- PMM
diff mbox

Patch

diff --git a/disas/tci.c b/disas/tci.c
index a606b63..d7b954e 100644
--- a/disas/tci.c
+++ b/disas/tci.c
@@ -17,6 +17,7 @@ 
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "qemu-common.h"
 #include "disas/bfd.h"
 #include "tcg/tcg.h"