qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] diffs for OpenBSD, and a problem ..


From: Todd T. Fries
Subject: [Qemu-devel] diffs for OpenBSD, and a problem ..
Date: Sun, 27 Feb 2005 16:27:58 -0600
User-agent: Mutt/1.5.6i

Current cvs no longer builds on OpenBSD.  I'm trying to track this down.  Here
is what ends up happening for me:

for d in i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu; do \
gmake -C $d all || exit 1 ; \
        done
gmake[1]: Entering directory `/usr/obj/ports/qemu-20050227/qemu-20050227/i386-so
ftmmu'
gcc -O2 -pipe -fomit-frame-pointer -I. -I/usr/obj/ports/qemu-20050227/qemu-20050
227/target-i386 -I/usr/obj/ports/qemu-20050227/qemu-20050227 -D_GNU_SOURCE -D_FI
LE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/usr/obj/ports/qemu-20050227/qemu-200502
27/slirp -c -o translate-all.o /usr/obj/ports/qemu-20050227/qemu-20050227/transl
ate-all.c
In file included from /usr/obj/ports/qemu-20050227/qemu-20050227/translate-all.c
:41:
op.h: In function `dyngen_code':
op.h:6997: error: syntax error before ')' token
op.h:7074: error: syntax error before ')' token
op.h:7105: error: syntax error before ')' token
op.h:7124: error: syntax error before ')' token
op.h:7155: error: syntax error before ')' token
op.h:7174: error: syntax error before ')' token
op.h:7808: error: syntax error before ')' token
op.h:7830: error: syntax error before ')' token
op.h:7851: error: syntax error before ')' token
op.h:7872: error: syntax error before ')' token
op.h:7896: error: syntax error before ')' token
op.h:8611: error: syntax error before ')' token
op.h:8629: error: syntax error before ')' token
op.h:8646: error: syntax error before ')' token
op.h:8664: error: syntax error before ')' token
op.h:9257: error: syntax error before ')' token
op.h:9276: error: syntax error before ')' token
op.h:9295: error: syntax error before ')' token
op.h:9314: error: syntax error before ')' token
op.h:9333: error: syntax error before ')' token
op.h:9352: error: syntax error before ')' token
op.h:9372: error: syntax error before ')' token
op.h:9391: error: syntax error before ')' token
op.h:9410: error: syntax error before ')' token
op.h:9429: error: syntax error before ')' token
op.h:9449: error: syntax error before ')' token
gmake[1]: *** [translate-all.o] Error 1
gmake[1]: Leaving directory `/usr/obj/ports/qemu-20050227/qemu-20050227/i386-sof
tmmu'
gmake: *** [all] Error 1
*** Error code 2

Stop in /tmp_mnt/10.0.0.66/ccd0/OpenBSD/wip/testing-ports/mystuff/emulators/qemu
-snap (line 1716 of /usr/ports/infrastructure/mk/bsd.port.mk).
*** Error code 1

Stop in /tmp_mnt/10.0.0.66/ccd0/OpenBSD/wip/testing-ports/mystuff/emulators/qemu
-snap (line 1517 of /usr/ports/infrastructure/mk/bsd.port.mk).
address@hidden/p0 21$ 

Here are the diffs that are presently necessary, adapted from 0.6.1, I expect
to be necessary to build qemu on OpenBSD/i386 and OpenBSD/macppc, that I
have in my tree as well, incase you think any of them might be a culprit.


Index: Makefile
===================================================================
RCS file: /cvsroot/qemu/qemu/Makefile,v
retrieving revision 1.82
diff -u -r1.82 Makefile
--- Makefile    10 Feb 2005 21:48:51 -0000      1.82
+++ Makefile    27 Feb 2005 22:26:38 -0000
@@ -1,10 +1,10 @@
 -include config-host.mak
 
-CFLAGS=-Wall -O2 -g -fno-strict-aliasing 
+#CFLAGS=-Wall -O2 -g -fno-strict-aliasing 
 ifdef CONFIG_DARWIN
 CFLAGS+= -mdynamic-no-pic
 endif
-LDFLAGS=-g
+#LDFLAGS=-g
 LIBS=
 DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
 TOOLS=qemu-img$(EXESUF)
@@ -50,21 +50,19 @@
 common  de-ch  es     fo  fr-ca  hu     ja  mk  nl-be      pt  sl     tr
 
 install: all 
-       mkdir -p "$(bindir)"
-       install -m 755 -s $(TOOLS) "$(bindir)"
-       mkdir -p "$(datadir)"
+       mkdir -p $(PREFIX)/share/qemu
+       install -m 755 -s $(TOOLS) $(PREFIX)/bin
        install -m 644 pc-bios/bios.bin pc-bios/vgabios.bin \
                        pc-bios/vgabios-cirrus.bin \
                        pc-bios/ppc_rom.bin \
                        pc-bios/proll.elf \
-                       pc-bios/linux_boot.bin "$(datadir)"
-       mkdir -p "$(docdir)"
-       install -m 644 qemu-doc.html  qemu-tech.html "$(docdir)"
+                       pc-bios/linux_boot.bin $(PREFIX)/share/qemu
+       mkdir -p $(PREFIX)/share/doc/qemu
+       install -m 644 qemu-doc.html  qemu-tech.html $(PREFIX)/share/doc/qemu
 ifndef CONFIG_WIN32
-       mkdir -p "$(mandir)/man1"
-       install qemu.1 qemu-img.1 "$(mandir)/man1"
-       mkdir -p "$(datadir)/keymaps"
-       install -m 644 $(addprefix keymaps/,$(KEYMAPS)) "$(datadir)/keymaps"
+       install qemu.1 qemu-img.1 $(PREFIX)/man/man1
+       mkdir -p $(PREFIX)/share/qemu/keymaps
+       install -m 644 $(addprefix keymaps/,$(KEYMAPS)) 
$(PREFIX)/share/qemu/keymaps
 endif
        for d in $(TARGET_DIRS); do \
        $(MAKE) -C $$d $@ || exit 1 ; \
Index: Makefile.target
===================================================================
RCS file: /cvsroot/qemu/qemu/Makefile.target,v
retrieving revision 1.58
diff -u -r1.58 Makefile.target
--- Makefile.target     22 Feb 2005 19:27:14 -0000      1.58
+++ Makefile.target     27 Feb 2005 22:26:38 -0000
@@ -14,7 +14,7 @@
 VPATH+=:$(SRC_PATH)/linux-user
 DEFINES+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ARCH)
 endif
-CFLAGS=-Wall -O2 -g -fno-strict-aliasing
+#CFLAGS=-Wall -O2 -g -fno-strict-aliasing
 #CFLAGS+=-Werror
 LDFLAGS=-g
 LIBS=
@@ -312,6 +312,9 @@
 endif
 ifdef CONFIG_OSS
 AUDIODRV += ossaudio.o
+ifdef CONFIG_OSS_LIBRARY
+LIBS += -lossaudio
+endif
 endif
 
 pc.o: DEFINES := -DUSE_SB16 $(DEFINES)
@@ -439,7 +442,7 @@
 
 install: all 
 ifneq ($(PROGS),)
-       install -m 755 -s $(PROGS) "$(bindir)"
+       install -m 755 -s $(PROGS) $(PREFIX)/bin/
 endif
 
 ifneq ($(wildcard .depend),)
Index: configure
===================================================================
RCS file: /cvsroot/qemu/qemu/configure,v
retrieving revision 1.56
diff -u -r1.56 configure
--- configure   19 Feb 2005 17:24:28 -0000      1.56
+++ configure   27 Feb 2005 22:26:39 -0000
@@ -41,7 +41,7 @@
   alpha)
     cpu="alpha"
   ;;
-  "Power Macintosh"|ppc|ppc64)
+  "Power Macintosh"|macppc|ppc|ppc64)
     cpu="powerpc"
   ;;
   mips)
@@ -100,6 +100,7 @@
 ;;
 OpenBSD)
 bsd="yes"
+openbsd="yes"
 oss="yes"
 ;;
 Darwin)
@@ -341,7 +342,7 @@
 if test -z "$prefix" ; then
     prefix="/usr/local"
 fi
-mandir="$prefix/share/man"
+mandir="$prefix/man"
 datadir="$prefix/share/qemu"
 docdir="$prefix/share/doc/qemu"
 bindir="$prefix/bin"
@@ -533,6 +534,9 @@
 if test "$oss" = "yes" ; then
   echo "CONFIG_OSS=yes" >> $config_mak
   echo "#define CONFIG_OSS 1" >> $config_h
+  if test "$openbsd"="yes" ; then
+    echo "CONFIG_OSS_LIBRARY=yes" >> $config_mak
+  fi
 fi
 if test "$fmod" = "yes" ; then
   echo "CONFIG_FMOD=yes" >> $config_mak
@@ -564,6 +568,15 @@
   echo "#define _BSD 1" >> $config_h
 fi
 
+if [ "$openbsd" = "yes" ] ; then
+  echo "#define ENOTSUP 4096" >> $config_h
+  echo "#define PRIx64 \"llX\"" >> $config_h
+  echo "#define qemu_siginfo siginfo_t" >> $config_h
+else
+  echo "#define qemu_siginfo struct siginfo" >> $config_h
+fi     
+
+
 for target in $target_list; do 
 
 target_dir="$target"
Index: dis-asm.h
===================================================================
RCS file: /cvsroot/qemu/qemu/dis-asm.h,v
retrieving revision 1.7
diff -u -r1.7 dis-asm.h
--- dis-asm.h   3 Jan 2005 23:35:10 -0000       1.7
+++ dis-asm.h   27 Feb 2005 22:26:40 -0000
@@ -13,6 +13,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <inttypes.h>
+#include "config.h"
 
 #define PARAMS(x) x
 typedef void *PTR;
Index: dyngen-exec.h
===================================================================
RCS file: /cvsroot/qemu/qemu/dyngen-exec.h,v
retrieving revision 1.20
diff -u -r1.20 dyngen-exec.h
--- dyngen-exec.h       26 Jan 2005 21:30:57 -0000      1.20
+++ dyngen-exec.h       27 Feb 2005 22:26:40 -0000
@@ -20,11 +20,15 @@
 #if !defined(__DYNGEN_EXEC_H__)
 #define __DYNGEN_EXEC_H__
 
+#include "config.h"
+
 /* NOTE: standard headers should be used with special care at this
    point because host CPU registers are used as global variables. Some
    host headers do not allow that. */
 #include <stddef.h>
-
+#ifdef __OpenBSD__
+#include <sys/types.h>
+#else
 typedef unsigned char uint8_t;
 typedef unsigned short uint16_t;
 typedef unsigned int uint32_t;
@@ -43,6 +47,7 @@
 #else
 typedef signed long long int64_t;
 #endif
+#endif
 
 #define INT8_MIN               (-128)
 #define INT16_MIN              (-32767-1)
@@ -57,11 +62,15 @@
 #define UINT32_MAX             (4294967295U)
 #define UINT64_MAX             ((uint64_t)(18446744073709551615))
 
+#ifdef __OpenBSD__
+typedef struct __sFILE FILE;
+#else
 typedef struct FILE FILE;
 extern int fprintf(FILE *, const char *, ...);
 extern int printf(const char *, ...);
 #undef NULL
 #define NULL 0
+#endif
 #if defined(_BSD) && !defined(__APPLE__)
 #include <ieeefp.h>
 
@@ -70,6 +79,7 @@
 #define FE_UPWARD      FP_RP
 #define FE_TOWARDZERO  FP_RZ
 #define fesetround(x)  fpsetround(x)
+#define fegetround()   fpgetround()
 #else
 #include <fenv.h>
 #endif
Index: osdep.h
===================================================================
RCS file: /cvsroot/qemu/qemu/osdep.h,v
retrieving revision 1.5
diff -u -r1.5 osdep.h
--- osdep.h     10 Feb 2005 21:59:25 -0000      1.5
+++ osdep.h     27 Feb 2005 22:26:40 -0000
@@ -2,6 +2,10 @@
 #define QEMU_OSDEP_H
 
 #include <stdarg.h>
+#ifdef __OpenBSD__
+#include <sys/types.h>
+#include <sys/signal.h>
+#endif
 
 int qemu_vsnprintf(char *buf, int buflen, const char *fmt, va_list args);
 void qemu_vprintf(const char *fmt, va_list ap);
@@ -31,7 +35,7 @@
 struct qemu_sigaction {
     union {
         void (*_sa_handler)(int);
-        void (*_sa_sigaction)(int, struct siginfo *, void *);
+        void (*_sa_sigaction)(int, qemu_siginfo *, void *);
     } _u;
     unsigned long sa_flags;
     void (*sa_restorer)(void);
Index: vl.c
===================================================================
RCS file: /cvsroot/qemu/qemu/vl.c,v
retrieving revision 1.120
diff -u -r1.120 vl.c
--- vl.c        10 Feb 2005 22:00:06 -0000      1.120
+++ vl.c        27 Feb 2005 22:26:44 -0000
@@ -42,7 +42,7 @@
 #include <dirent.h>
 #ifdef _BSD
 #include <sys/stat.h>
-#ifndef __APPLE__
+#if !defined(__APPLE__) && !defined(__OpenBSD__)
 #include <libutil.h>
 #endif
 #else
@@ -1574,11 +1574,32 @@
     char *dev;
     struct stat s;
 
+#ifdef __OpenBSD__
+    int i = 0, enoentcount = 0, err = 0;
+    char dname[100];
+
+    for (; i < 10; i++) {
+       snprintf(dname, sizeof dname, "%s%d", "/dev/tun", i);
+       fd = open(dname, O_RDWR);
+       if (fd >= 0)
+           break;
+       else if (errno != ENOENT || ++enoentcount > 3) {
+           err = errno;
+           break;
+       } else
+           err = errno;
+    }
+    if (fd < 0) {
+        fprintf(stderr, "warning: could not open %s (%s): no virtual network 
emulation\n", dname, strerror(err));
+        return -1;
+    }
+#else
     fd = open("/dev/tap", O_RDWR);
     if (fd < 0) {
         fprintf(stderr, "warning: could not open /dev/tap: no virtual network 
emulation\n");
         return -1;
     }
+#endif
 
     fstat(fd, &s);
     dev = devname(s.st_rdev, S_IFCHR);
Index: audio/audio.c
===================================================================
RCS file: /cvsroot/qemu/qemu/audio/audio.c,v
retrieving revision 1.5
diff -u -r1.5 audio.c
--- audio/audio.c       6 Dec 2004 23:14:48 -0000       1.5
+++ audio/audio.c       27 Feb 2005 22:26:46 -0000
@@ -35,6 +35,10 @@
 #define ldebug(...)
 #endif
 
+#ifdef __OpenBSD__
+#define INT16_MAX              (32767)
+#endif
+
 #define QC_AUDIO_DRV    "QEMU_AUDIO_DRV"
 #define QC_VOICES       "QEMU_VOICES"
 #define QC_FIXED_FORMAT "QEMU_FIXED_FORMAT"
Index: audio/ossaudio.c
===================================================================
RCS file: /cvsroot/qemu/qemu/audio/ossaudio.c,v
retrieving revision 1.4
diff -u -r1.4 ossaudio.c
--- audio/ossaudio.c    14 Nov 2004 16:02:51 -0000      1.4
+++ audio/ossaudio.c    27 Feb 2005 22:26:46 -0000
@@ -21,10 +21,15 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+#ifdef __OpenBSD__
+#include <stdlib.h>
+#include <soundcard.h>
+#else
+#include <sys/soundcard.h>
+#endif
 #include <sys/mman.h>
 #include <sys/types.h>
 #include <sys/ioctl.h>
-#include <sys/soundcard.h>
 #include <assert.h>
 #include "vl.h"
 
Index: slirp/slirp_config.h
===================================================================
RCS file: /cvsroot/qemu/qemu/slirp/slirp_config.h,v
retrieving revision 1.3
diff -u -r1.3 slirp_config.h
--- slirp/slirp_config.h        12 Jul 2004 22:33:05 -0000      1.3
+++ slirp/slirp_config.h        27 Feb 2005 22:26:46 -0000
@@ -92,7 +92,7 @@
 #undef BAD_SPRINTF
 
 /* Define if you have readv */
-#undef HAVE_READV
+#define HAVE_READV
 
 /* Define if iovec needs to be declared */
 #undef DECLARE_IOVEC
@@ -104,7 +104,7 @@
 #undef DECLARE_SPRINTF
 
 /* Define if you have a POSIX.1 sys/wait.h */
-#undef HAVE_SYS_WAIT_H
+#define HAVE_SYS_WAIT_H
 
 /* Define if you have sys/select.h */
 #undef HAVE_SYS_SELECT_H
@@ -122,7 +122,7 @@
 #endif
 
 /* Define if you have sys/signal.h */
-#undef HAVE_SYS_SIGNAL_H
+#define HAVE_SYS_SIGNAL_H
 
 /* Define if you have sys/stropts.h */
 #undef HAVE_SYS_STROPTS_H
@@ -198,7 +198,7 @@
 #undef HAVE_GRANTPT
 
 /* Define if you have fchmod */
-#undef HAVE_FCHMOD
+#define HAVE_FCHMOD
 
 /* Define if you have <sys/type32.h> */
 #undef HAVE_SYS_TYPES32_H
Index: target-arm/cpu.h
===================================================================
RCS file: /cvsroot/qemu/qemu/target-arm/cpu.h,v
retrieving revision 1.7
diff -u -r1.7 cpu.h
--- target-arm/cpu.h    22 Feb 2005 19:27:29 -0000      1.7
+++ target-arm/cpu.h    27 Feb 2005 22:26:46 -0000
@@ -97,7 +97,7 @@
    signal handlers to inform the virtual CPU of exceptions. non zero
    is returned if the signal was handled by the virtual CPU.  */
 struct siginfo;
-int cpu_arm_signal_handler(int host_signum, struct siginfo *info, 
+int cpu_arm_signal_handler(int host_signum, qemu_siginfo *info, 
                            void *puc);
 
 #define TARGET_PAGE_BITS 12
Index: target-i386/cpu.h
===================================================================
RCS file: /cvsroot/qemu/qemu/target-i386/cpu.h,v
retrieving revision 1.27
diff -u -r1.27 cpu.h
--- target-i386/cpu.h   12 Feb 2005 18:58:00 -0000      1.27
+++ target-i386/cpu.h   27 Feb 2005 22:26:48 -0000
@@ -609,8 +609,7 @@
 /* you can call this signal handler from your SIGBUS and SIGSEGV
    signal handlers to inform the virtual CPU of exceptions. non zero
    is returned if the signal was handled by the virtual CPU.  */
-struct siginfo;
-int cpu_x86_signal_handler(int host_signum, struct siginfo *info, 
+int cpu_x86_signal_handler(int host_signum, qemu_siginfo *info, 
                            void *puc);
 void cpu_x86_set_a20(CPUX86State *env, int a20_state);
 
Index: target-ppc/cpu.h
===================================================================
RCS file: /cvsroot/qemu/qemu/target-ppc/cpu.h,v
retrieving revision 1.15
diff -u -r1.15 cpu.h
--- target-ppc/cpu.h    15 Feb 2005 23:06:19 -0000      1.15
+++ target-ppc/cpu.h    27 Feb 2005 22:26:48 -0000
@@ -163,8 +163,7 @@
 /* you can call this signal handler from your SIGBUS and SIGSEGV
    signal handlers to inform the virtual CPU of exceptions. non zero
    is returned if the signal was handled by the virtual CPU.  */
-struct siginfo;
-int cpu_ppc_signal_handler(int host_signum, struct siginfo *info, 
+int cpu_ppc_signal_handler(int host_signum, qemu_siginfo *info, 
                            void *puc);
 
 void do_interrupt (CPUPPCState *env);
Index: target-ppc/op_helper.c
===================================================================
RCS file: /cvsroot/qemu/qemu/target-ppc/op_helper.c,v
retrieving revision 1.11
diff -u -r1.11 op_helper.c
--- target-ppc/op_helper.c      15 Feb 2005 23:06:19 -0000      1.11
+++ target-ppc/op_helper.c      27 Feb 2005 22:26:48 -0000
@@ -226,6 +226,18 @@
     /* Set rounding mode */
     switch (env->fpscr[0] & 0x3) {
     case 0:
+#ifdef _BSD
+       fpsetround(FP_RN);
+       break;
+    case 1:
+       fpsetround(FP_RZ);
+       break;
+    case 2:
+       fpsetround(FP_RP);
+       break;
+    case 3:
+       fpsetround(FP_RM);
+#else
         /* Best approximation (round to nearest) */
         fesetround(FE_TONEAREST);
         break;
@@ -240,6 +252,7 @@
     case 3:
         /* Round toward -infinite */
         fesetround(FE_DOWNWARD);
+#endif
         break;
     }
 }
@@ -267,9 +280,14 @@
         double d;
         uint64_t i;
     } *p = (void *)&FT1;
+#ifdef _BSD
+    int cround = fpgetround();
+    fpsetround(FP_RZ);
+#else
     int cround = fegetround();
 
     fesetround(FE_TOWARDZERO);
+#endif
     if (FT0 > (double)0x7FFFFFFF)
         p->i = 0x7FFFFFFFULL << 32;
     else if (FT0 < -(double)0x80000000)
@@ -278,7 +296,11 @@
         p->i = 0;
     p->i |= (uint32_t)FT0;
     FT0 = p->d;
+#ifdef _BSD
+    fpsetround(cround);
+#else
     fesetround(cround);
+#endif
 }
 
 void do_fnmadd (void)
Index: target-sparc/cpu.h
===================================================================
RCS file: /cvsroot/qemu/qemu/target-sparc/cpu.h,v
retrieving revision 1.15
diff -u -r1.15 cpu.h
--- target-sparc/cpu.h  22 Feb 2005 19:08:57 -0000      1.15
+++ target-sparc/cpu.h  27 Feb 2005 22:26:49 -0000
@@ -189,8 +189,7 @@
        cpu_set_cwp(env, _tmp & PSR_CWP & (NWINDOWS - 1));              \
     } while (0)
 
-struct siginfo;
-int cpu_sparc_signal_handler(int hostsignum, struct siginfo *info, void *puc);
+int cpu_sparc_signal_handler(int hostsignum, qemu_siginfo *info, void *puc);
 
 #define TARGET_PAGE_BITS 12 /* 4k */
 #include "cpu-all.h"
Index: target-sparc/op_helper.c
===================================================================
RCS file: /cvsroot/qemu/qemu/target-sparc/op_helper.c,v
retrieving revision 1.9
diff -u -r1.9 op_helper.c
--- target-sparc/op_helper.c    22 Feb 2005 19:14:33 -0000      1.9
+++ target-sparc/op_helper.c    27 Feb 2005 22:26:49 -0000
@@ -1,5 +1,7 @@
 #include <math.h>
+#ifndef _BSD
 #include <fenv.h>
+#endif
 #include "exec.h"
 
 //#define DEBUG_MMU
-- 
Todd Fries .. address@hidden

 _____________________________________________
|                                             \  1.636.410.0632 (voice)
| Free Daemon Consulting, LLC                 \  1.405.227.9094 (voice)
| http://FreeDaemonConsulting.com             \  1.866.792.3418 (FAX)
| "..in support of free software solutions."  \  1.700.227.9094 (IAXTEL)
|                                             \          250797 (FWD)
 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
                                                 
              37E7 D3EB 74D0 8D66 A68D  B866 0326 204E 3F42 004A
                        http://todd.fries.net/pgp.txt





reply via email to

[Prev in Thread] Current Thread [Next in Thread]