mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-23 09:10:43 +00:00
b987bd37c9
- fix I2C slave addressing (Juha Riihimaki) - Revert "vga: do not resize the screen on hw_invalidate" (Aurelien Jarno) - slirp: fix use-after-free (Mark McLoughlin) - Fix sparc.ld (Blue Swirl) - ELF codedump build failures (Laurent Desnogues) - kvm: Move KVM mp_state accessors to i386-specific code (Hollis Blanchard) - fix configure script with armv4l cpu (Laurent Desnogues) - net: disable draining tap queue in one go (Mark McLoughlin) - pcnet: Restart poll timer on pcnet_start (Jan Kiszka) - Sparc32: Fix lance (Blue Swirl) - mac99: fix segmentation fault on startup (Aurelien Jarno) - usb-linux.c: fix buffer overflow (Jim Paris) - ARM host: fix generated blocks linking (Laurent Desnogues) - qemu serial: lost tx irqs (affecting FreeBSD's new uart(4) driver) (Juergen Lock) - exec-all.h: increase MAX_OP_PER_INSTR to 96 from 64 (Aurelien Jarno) - Added a cherry picked commit from stable branch that fixes qcow2.
174 lines
5.8 KiB
Plaintext
174 lines
5.8 KiB
Plaintext
Index: qemu/Makefile
|
|
@@ -45,7 +45,10 @@
|
|
LIBS+=-lwinmm -lws2_32 -liphlpapi
|
|
endif
|
|
|
|
-build-all: $(TOOLS) $(DOCS) recurse-all
|
|
+build-all: bsd/libmath.a $(TOOLS) $(DOCS) recurse-all
|
|
+
|
|
+bsd/libmath.a:
|
|
+ ( cd bsd ; unset MAKEFLAGS ; $(BSD_MAKE) CC=$(CC) )
|
|
|
|
config-host.mak: configure
|
|
ifneq ($(wildcard config-host.mak),)
|
|
@@ -242,6 +245,7 @@
|
|
|
|
clean:
|
|
# avoid old build problems by removing potentially incorrect old files
|
|
+ ( cd bsd ; $(BSD_MAKE) clean )
|
|
rm -f config.mak config.h op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
|
|
rm -f *.o *.d *.a $(TOOLS) TAGS cscope.* *.pod *~ */*~
|
|
rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d block/*.o block/*.d
|
|
Index: qemu/Makefile.target
|
|
@@ -339,7 +339,7 @@
|
|
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
|
|
# that the kernel ELF loader considers as an executable. I think this
|
|
# is the simplest way to make it self virtualizable!
|
|
-LDFLAGS+=-Wl,-shared
|
|
+#LDFLAGS+=-Wl,-shared
|
|
endif
|
|
endif
|
|
|
|
@@ -408,7 +408,7 @@
|
|
# cpu_signal_handler() in cpu-exec.c.
|
|
signal.o: CFLAGS += $(HELPER_CFLAGS)
|
|
|
|
-ARLIBS=libqemu.a ../libqemu_user.a
|
|
+ARLIBS=libqemu.a ../libqemu_user.a ../bsd/libmath.a
|
|
|
|
endif #CONFIG_BSD_USER
|
|
|
|
@@ -658,7 +658,7 @@
|
|
monitor.o: qemu-monitor.h
|
|
|
|
LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) $(CURL_LIBS)
|
|
-ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
|
|
+ARLIBS=../libqemu_common.a libqemu.a $(HWLIB) ../bsd/libmath.a
|
|
|
|
endif # !CONFIG_USER_ONLY
|
|
|
|
Index: qemu/fpu/softfloat-native.c
|
|
@@ -6,10 +6,15 @@
|
|
#include <fenv.h>
|
|
#endif
|
|
|
|
+#if defined(__FreeBSD__) && __FreeBSD_version < 500000
|
|
+#include <ieeefp.h>
|
|
+#endif
|
|
+
|
|
void set_float_rounding_mode(int val STATUS_PARAM)
|
|
{
|
|
STATUS(float_rounding_mode) = val;
|
|
-#if defined(HOST_BSD) && !defined(__APPLE__) || \
|
|
+#if defined(HOST_BSD) && !defined(__APPLE__) && !defined(__FreeBSD__) || \
|
|
+ (defined(__FreeBSD__) && __FreeBSD_version < 500000) || \
|
|
(defined(HOST_SOLARIS) && HOST_SOLARIS < 10)
|
|
fpsetround(val);
|
|
#elif defined(__arm__)
|
|
@@ -26,7 +31,7 @@
|
|
}
|
|
#endif
|
|
|
|
-#if defined(HOST_BSD) || (defined(HOST_SOLARIS) && HOST_SOLARIS < 10)
|
|
+#if (defined(HOST_BSD) && !defined(__FreeBSD__)) || (defined(HOST_SOLARIS) && HOST_SOLARIS < 10)
|
|
#define lrint(d) ((int32_t)rint(d))
|
|
#define llrint(d) ((int64_t)rint(d))
|
|
#define lrintf(f) ((int32_t)rint(f))
|
|
Index: qemu/fpu/softfloat-native.h
|
|
@@ -1,8 +1,28 @@
|
|
/* Native implementation of soft float functions */
|
|
#include <math.h>
|
|
|
|
-#if (defined(HOST_BSD) && !defined(__APPLE__)) || defined(HOST_SOLARIS)
|
|
+#ifdef __FreeBSD__
|
|
+#include <osreldate.h>
|
|
+long double fabsl(long double x);
|
|
+long double remainderl(long double x, long double y);
|
|
+long double sqrtl(long double x);
|
|
+long double rintl(long double x);
|
|
+long lrintl(long double x);
|
|
+long long llrintl(long double x);
|
|
+#endif
|
|
+
|
|
+#if (defined(HOST_BSD) && !defined(__APPLE__) && \
|
|
+ (!defined(__FreeBSD__) || __FreeBSD_version < 500000)) || \
|
|
+ defined(HOST_SOLARIS)
|
|
#include <ieeefp.h>
|
|
+#if defined(__FreeBSD__)
|
|
+#define isgreater(x, y) __builtin_isgreater((x), (y))
|
|
+#define isgreaterequal(x, y) __builtin_isgreaterequal((x), (y))
|
|
+#define isless(x, y) __builtin_isless((x), (y))
|
|
+#define islessequal(x, y) __builtin_islessequal((x), (y))
|
|
+#define islessgreater(x, y) __builtin_islessgreater((x), (y))
|
|
+#define isunordered(x, y) __builtin_isunordered((x), (y))
|
|
+#endif
|
|
#define fabsf(f) ((float)fabs(f))
|
|
#else
|
|
#include <fenv.h>
|
|
@@ -109,6 +109,8 @@
|
|
| Software IEC/IEEE floating-point rounding mode.
|
|
*----------------------------------------------------------------------------*/
|
|
-#if (defined(HOST_BSD) && !defined(__APPLE__)) || defined(HOST_SOLARIS)
|
|
+#if (defined(HOST_BSD) && !defined(__APPLE__) && \
|
|
+ (!defined(__FreeBSD__) || __FreeBSD_version < 500000)) || \
|
|
+ defined(HOST_SOLARIS)
|
|
#if defined(__OpenBSD__)
|
|
#define FE_RM FP_RM
|
|
#define FE_RP FP_RP
|
|
Index: qemu/fpu/softfloat.h
|
|
@@ -84,7 +84,8 @@
|
|
#define FLOAT128
|
|
#else
|
|
/* native float support */
|
|
-#if (defined(__i386__) || defined(__x86_64__)) && !defined(HOST_BSD)
|
|
+#if (defined(__i386__) || defined(__x86_64__)) && \
|
|
+ (!defined(HOST_BSD) || defined(__FreeBSD__))
|
|
#define FLOATX80
|
|
#endif
|
|
#endif /* !CONFIG_SOFTFLOAT */
|
|
Index: qemu/target-ppc/op_helper.c
|
|
@@ -293,6 +293,13 @@
|
|
uint32_t exp = (u.ll >> 52) & 0x7FF;
|
|
return ((0 < exp) && (exp < 0x7FF));
|
|
}
|
|
+#else
|
|
+#ifndef isnormal
|
|
+#define isnormal(x) \
|
|
+ ((sizeof (x) == sizeof (float)) ? __isnormalf(x) \
|
|
+ : (sizeof (x) == sizeof (double)) ? __isnormal(x) \
|
|
+ : __isnormall(x))
|
|
+#endif
|
|
#endif
|
|
|
|
uint32_t helper_compute_fprf (uint64_t arg, uint32_t set_fprf)
|
|
Index: qemu/x86_64.ld
|
|
@@ -2,7 +2,7 @@
|
|
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
|
|
OUTPUT_ARCH(i386:x86-64)
|
|
ENTRY(_start)
|
|
-SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib64");
|
|
+SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/local/lib");
|
|
SECTIONS
|
|
{
|
|
/* Read-only sections, merged into text segment: */
|
|
@@ -59,8 +59,6 @@
|
|
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
|
.rodata1 : { *(.rodata1) }
|
|
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
|
- .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
|
|
- .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table) }
|
|
/* Adjust the address for the data segment. We want to adjust up to
|
|
the same address within the page on the next page up. */
|
|
. = ALIGN (0x100000) - ((0x100000 - .) & (0x100000 - 1)); . = DATA_SEGMENT_ALIGN (0x100000, 0x1000);
|
|
@@ -86,8 +84,8 @@
|
|
.data1 : { *(.data1) }
|
|
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
|
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
|
- .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
|
|
- .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table) }
|
|
+ .eh_frame : { KEEP (*(.eh_frame)) }
|
|
+ .gcc_except_table : { *(.gcc_except_table) }
|
|
.dynamic : { *(.dynamic) }
|
|
.ctors :
|
|
{
|