qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] softfloat breaks cocoa.m
@ 2011-08-28 12:09 Andreas Färber
  2011-08-28 13:02 ` Alexander Graf
  0 siblings, 1 reply; 17+ messages in thread
From: Andreas Färber @ 2011-08-28 12:09 UTC (permalink / raw)
  To: Aurelien Jarno, Paolo Bonzini
  Cc: Peter Maydell, Anthony Liguori, QEMU Developers, Alexander Graf

Hello,

The unresolved softfloat uint* conversion business bites us again:  
This time, the previously working Cocoa frontend stopped compiling:

In file included from /Users/andreas/QEMU/qemu/bswap.h:14,
                  from /Users/andreas/QEMU/qemu/qemu-common.h:103,
                  from /Users/andreas/QEMU/qemu/ui/cocoa.m:28:
/Users/andreas/QEMU/qemu/fpu/softfloat.h:60: error: conflicting types  
for ‘uint16’
/System/Library/Frameworks/Security.framework/Headers/cssmconfig.h:68:  
error: previous declaration of ‘uint16’ was here
make: *** [ui/cocoa.o] Error 1

Since commit cbbab9226da9572346837466a8770c117e7e65a2 (move unaligned  
memory access functions to bswap.h) softfloat.h is being #included in  
bswap.h, which gets pulled into cocoa.m through qemu-common.h. I  
thought Alex had set up a Darwin buildbot to catch such breakages...

Any thoughts on how to proceed? My previous approach for Haiku, to  
replace non-standard uint16 with POSIX uint_fast16_t etc., was  
rejected to avoid system-dependent widths. I'd really like to get rid  
of the annoyingly conflicting naming though (int vs. long for 32, int  
vs. short for 16, ...).

A fragile and ugly workaround is to suppress all softfloat usage  
within bswap.h (below).

Andreas


diff --git a/bswap.h b/bswap.h
index f41bebe..ddef453 100644
--- a/bswap.h
+++ b/bswap.h
@@ -11,7 +11,9 @@
  #include <machine/bswap.h>
  #else

+#ifndef NO_SOFTFLOAT_H
  #include "softfloat.h"
+#endif

  #ifdef CONFIG_BYTESWAP_H
  #include <byteswap.h>
@@ -239,6 +241,7 @@ static inline uint32_t qemu_bswap_len(uint32_t  
value, int len)
      return bswap32(value) >> (32 - 8 * len);
  }

+#ifndef NO_SOFTFLOAT_H
  typedef union {
      float32 f;
      uint32_t l;
@@ -294,6 +297,7 @@ typedef union {
      } ll;
  #endif
  } CPU_QuadU;
+#endif

  /* unaligned/endian-independent pointer access */

@@ -423,6 +427,7 @@ static inline void stq_le_p(void *ptr, uint64_t v)
      stl_le_p(p + 4, v >> 32);
  }

+#ifndef NO_SOFTFLOAT_H
  /* float access */

  static inline float32 ldfl_le_p(const void *ptr)
@@ -461,6 +466,8 @@ static inline void stfq_le_p(void *ptr, float64 v)
      stl_le_p(ptr + 4, u.l.upper);
  }

+#endif
+
  #else

  static inline int lduw_le_p(const void *ptr)
@@ -498,6 +505,7 @@ static inline void stq_le_p(void *ptr, uint64_t v)
      *(uint64_t *)ptr = v;
  }

+#ifndef NO_SOFTFLOAT_H
  /* float access */

  static inline float32 ldfl_le_p(const void *ptr)
@@ -520,6 +528,7 @@ static inline void stfq_le_p(void *ptr, float64 v)
      *(float64 *)ptr = v;
  }
  #endif
+#endif

  #if !defined(HOST_WORDS_BIGENDIAN) || defined(WORDS_ALIGNED)

@@ -612,6 +621,7 @@ static inline void stq_be_p(void *ptr, uint64_t v)
      stl_be_p((uint8_t *)ptr + 4, v);
  }

+#ifndef NO_SOFTFLOAT_H
  /* float access */

  static inline float32 ldfl_be_p(const void *ptr)
@@ -650,6 +660,8 @@ static inline void stfq_be_p(void *ptr, float64 v)
      stl_be_p((uint8_t *)ptr + 4, u.l.lower);
  }

+#endif
+
  #else

  static inline int lduw_be_p(const void *ptr)
@@ -687,6 +699,7 @@ static inline void stq_be_p(void *ptr, uint64_t v)
      *(uint64_t *)ptr = v;
  }

+#ifndef NO_SOFTFLOAT_H
  /* float access */

  static inline float32 ldfl_be_p(const void *ptr)
@@ -711,4 +724,6 @@ static inline void stfq_be_p(void *ptr, float64 v)

  #endif

+#endif
+
  #endif /* BSWAP_H */
diff --git a/ui/cocoa.m b/ui/cocoa.m
index d9e4e3d..4bd0346 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -25,6 +25,7 @@
  #import <Cocoa/Cocoa.h>
  #include <crt_externs.h>

+#define NO_SOFTFLOAT_H
  #include "qemu-common.h"
  #include "console.h"
  #include "sysemu.h"

^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2011-09-21  5:40 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-28 12:09 [Qemu-devel] softfloat breaks cocoa.m Andreas Färber
2011-08-28 13:02 ` Alexander Graf
2011-08-28 13:32   ` Peter Maydell
2011-09-02 16:38     ` Peter Maydell
2011-09-02 18:18       ` Andreas Färber
2011-09-03 14:49         ` Peter Maydell
2011-08-28 13:34   ` Andreas Färber
2011-08-28 13:47     ` Alexander Graf
2011-08-28 14:08       ` Peter Maydell
2011-08-28 16:10         ` Alexander Graf
2011-08-28 18:24     ` [Qemu-devel] [PATCH 1/2] softfloat: Use uint16 consistently Andreas Färber
2011-08-28 18:24       ` [Qemu-devel] [PATCH 2/2] softfloat: Use uint32 consistently Andreas Färber
2011-09-03 14:48         ` Peter Maydell
2011-09-03 21:13         ` Blue Swirl
2011-09-03 14:48       ` [Qemu-devel] [PATCH 1/2] softfloat: Use uint16 consistently Peter Maydell
2011-09-03 21:13       ` Blue Swirl
2011-09-21  0:35         ` Gauresh Rane

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).