Compare commits
19 Commits
v0.15.0-rc
...
v0.15.1
Author | SHA1 | Date | |
---|---|---|---|
|
82b2b32a32 | ||
|
4a81ab81e4 | ||
|
68e3508eaf | ||
|
fb524042db | ||
|
336398391a | ||
|
672aefeb5e | ||
|
6a10ccca80 | ||
|
7095e71576 | ||
|
91b31d6158 | ||
|
b89f4a7d2a | ||
|
fbdd7c8bd5 | ||
|
e19a4e89ae | ||
|
ff5acedd8f | ||
|
2af86a2ff7 | ||
|
e62ad8314a | ||
|
76e4e1d237 | ||
|
4fbe5233fd | ||
|
4bea41dbaa | ||
|
a80f53aee3 |
12
arm.ld
12
arm.ld
@@ -71,23 +71,23 @@ SECTIONS
|
|||||||
.data1 : { *(.data1) }
|
.data1 : { *(.data1) }
|
||||||
.preinit_array :
|
.preinit_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
PROVIDE (__preinit_array_start = .);
|
||||||
KEEP (*(.preinit_array))
|
KEEP (*(.preinit_array))
|
||||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
PROVIDE (__preinit_array_end = .);
|
||||||
}
|
}
|
||||||
.init_array :
|
.init_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__init_array_start = .);
|
PROVIDE (__init_array_start = .);
|
||||||
KEEP (*(SORT(.init_array.*)))
|
KEEP (*(SORT(.init_array.*)))
|
||||||
KEEP (*(.init_array))
|
KEEP (*(.init_array))
|
||||||
PROVIDE_HIDDEN (__init_array_end = .);
|
PROVIDE (__init_array_end = .);
|
||||||
}
|
}
|
||||||
.fini_array :
|
.fini_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
PROVIDE (__fini_array_start = .);
|
||||||
KEEP (*(.fini_array))
|
KEEP (*(.fini_array))
|
||||||
KEEP (*(SORT(.fini_array.*)))
|
KEEP (*(SORT(.fini_array.*)))
|
||||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
PROVIDE (__fini_array_end = .);
|
||||||
}
|
}
|
||||||
.ctors :
|
.ctors :
|
||||||
{
|
{
|
||||||
|
@@ -317,7 +317,8 @@ int qcow2_snapshot_goto(BlockDriverState *bs, const char *snapshot_id)
|
|||||||
{
|
{
|
||||||
BDRVQcowState *s = bs->opaque;
|
BDRVQcowState *s = bs->opaque;
|
||||||
QCowSnapshot *sn;
|
QCowSnapshot *sn;
|
||||||
int i, snapshot_index, l1_size2;
|
int i, snapshot_index;
|
||||||
|
int cur_l1_bytes, sn_l1_bytes;
|
||||||
|
|
||||||
snapshot_index = find_snapshot_by_id_or_name(bs, snapshot_id);
|
snapshot_index = find_snapshot_by_id_or_name(bs, snapshot_id);
|
||||||
if (snapshot_index < 0)
|
if (snapshot_index < 0)
|
||||||
@@ -330,14 +331,19 @@ int qcow2_snapshot_goto(BlockDriverState *bs, const char *snapshot_id)
|
|||||||
if (qcow2_grow_l1_table(bs, sn->l1_size, true) < 0)
|
if (qcow2_grow_l1_table(bs, sn->l1_size, true) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
s->l1_size = sn->l1_size;
|
cur_l1_bytes = s->l1_size * sizeof(uint64_t);
|
||||||
l1_size2 = s->l1_size * sizeof(uint64_t);
|
sn_l1_bytes = sn->l1_size * sizeof(uint64_t);
|
||||||
|
|
||||||
|
if (cur_l1_bytes > sn_l1_bytes) {
|
||||||
|
memset(s->l1_table + sn->l1_size, 0, cur_l1_bytes - sn_l1_bytes);
|
||||||
|
}
|
||||||
|
|
||||||
/* copy the snapshot l1 table to the current l1 table */
|
/* copy the snapshot l1 table to the current l1 table */
|
||||||
if (bdrv_pread(bs->file, sn->l1_table_offset,
|
if (bdrv_pread(bs->file, sn->l1_table_offset,
|
||||||
s->l1_table, l1_size2) != l1_size2)
|
s->l1_table, sn_l1_bytes) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
if (bdrv_pwrite_sync(bs->file, s->l1_table_offset,
|
if (bdrv_pwrite_sync(bs->file, s->l1_table_offset,
|
||||||
s->l1_table, l1_size2) < 0)
|
s->l1_table, cur_l1_bytes) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
for(i = 0;i < s->l1_size; i++) {
|
for(i = 0;i < s->l1_size; i++) {
|
||||||
be64_to_cpus(&s->l1_table[i]);
|
be64_to_cpus(&s->l1_table[i]);
|
||||||
|
@@ -230,21 +230,21 @@ static void qed_read_l2_table_cb(void *opaque, int ret)
|
|||||||
QEDRequest *request = read_l2_table_cb->request;
|
QEDRequest *request = read_l2_table_cb->request;
|
||||||
BDRVQEDState *s = read_l2_table_cb->s;
|
BDRVQEDState *s = read_l2_table_cb->s;
|
||||||
CachedL2Table *l2_table = request->l2_table;
|
CachedL2Table *l2_table = request->l2_table;
|
||||||
|
uint64_t l2_offset = read_l2_table_cb->l2_offset;
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
/* can't trust loaded L2 table anymore */
|
/* can't trust loaded L2 table anymore */
|
||||||
qed_unref_l2_cache_entry(l2_table);
|
qed_unref_l2_cache_entry(l2_table);
|
||||||
request->l2_table = NULL;
|
request->l2_table = NULL;
|
||||||
} else {
|
} else {
|
||||||
l2_table->offset = read_l2_table_cb->l2_offset;
|
l2_table->offset = l2_offset;
|
||||||
|
|
||||||
qed_commit_l2_cache_entry(&s->l2_cache, l2_table);
|
qed_commit_l2_cache_entry(&s->l2_cache, l2_table);
|
||||||
|
|
||||||
/* This is guaranteed to succeed because we just committed the entry
|
/* This is guaranteed to succeed because we just committed the entry
|
||||||
* to the cache.
|
* to the cache.
|
||||||
*/
|
*/
|
||||||
request->l2_table = qed_find_l2_cache_entry(&s->l2_cache,
|
request->l2_table = qed_find_l2_cache_entry(&s->l2_cache, l2_offset);
|
||||||
l2_table->offset);
|
|
||||||
assert(request->l2_table != NULL);
|
assert(request->l2_table != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -915,14 +915,14 @@ static void qed_commit_l2_update(void *opaque, int ret)
|
|||||||
QEDAIOCB *acb = opaque;
|
QEDAIOCB *acb = opaque;
|
||||||
BDRVQEDState *s = acb_to_s(acb);
|
BDRVQEDState *s = acb_to_s(acb);
|
||||||
CachedL2Table *l2_table = acb->request.l2_table;
|
CachedL2Table *l2_table = acb->request.l2_table;
|
||||||
|
uint64_t l2_offset = l2_table->offset;
|
||||||
|
|
||||||
qed_commit_l2_cache_entry(&s->l2_cache, l2_table);
|
qed_commit_l2_cache_entry(&s->l2_cache, l2_table);
|
||||||
|
|
||||||
/* This is guaranteed to succeed because we just committed the entry to the
|
/* This is guaranteed to succeed because we just committed the entry to the
|
||||||
* cache.
|
* cache.
|
||||||
*/
|
*/
|
||||||
acb->request.l2_table = qed_find_l2_cache_entry(&s->l2_cache,
|
acb->request.l2_table = qed_find_l2_cache_entry(&s->l2_cache, l2_offset);
|
||||||
l2_table->offset);
|
|
||||||
assert(acb->request.l2_table != NULL);
|
assert(acb->request.l2_table != NULL);
|
||||||
|
|
||||||
qed_aio_next_io(opaque, ret);
|
qed_aio_next_io(opaque, ret);
|
||||||
|
@@ -33,7 +33,8 @@ START_TEST(escaped_string)
|
|||||||
{ "\"\\n\"", "\n" },
|
{ "\"\\n\"", "\n" },
|
||||||
{ "\"\\r\"", "\r" },
|
{ "\"\\r\"", "\r" },
|
||||||
{ "\"\\t\"", "\t" },
|
{ "\"\\t\"", "\t" },
|
||||||
{ "\"\\/\"", "\\/" },
|
{ "\"/\"", "/" },
|
||||||
|
{ "\"\\/\"", "/", .skip = 1 },
|
||||||
{ "\"\\\\\"", "\\" },
|
{ "\"\\\\\"", "\\" },
|
||||||
{ "\"\\\"\"", "\"" },
|
{ "\"\\\"\"", "\"" },
|
||||||
{ "\"hello world \\\"embedded string\\\"\"",
|
{ "\"hello world \\\"embedded string\\\"\"",
|
||||||
|
25
configure
vendored
25
configure
vendored
@@ -409,6 +409,7 @@ SunOS)
|
|||||||
make="${MAKE-gmake}"
|
make="${MAKE-gmake}"
|
||||||
install="${INSTALL-ginstall}"
|
install="${INSTALL-ginstall}"
|
||||||
ld="gld"
|
ld="gld"
|
||||||
|
smbd="${SMBD-/usr/sfw/sbin/smbd}"
|
||||||
needs_libsunmath="no"
|
needs_libsunmath="no"
|
||||||
solarisrev=`uname -r | cut -f2 -d.`
|
solarisrev=`uname -r | cut -f2 -d.`
|
||||||
# have to select again, because `uname -m` returns i86pc
|
# have to select again, because `uname -m` returns i86pc
|
||||||
@@ -477,6 +478,7 @@ fi
|
|||||||
: ${make=${MAKE-make}}
|
: ${make=${MAKE-make}}
|
||||||
: ${install=${INSTALL-install}}
|
: ${install=${INSTALL-install}}
|
||||||
: ${python=${PYTHON-python}}
|
: ${python=${PYTHON-python}}
|
||||||
|
: ${smbd=${SMBD-/usr/sbin/smbd}}
|
||||||
|
|
||||||
if test "$mingw32" = "yes" ; then
|
if test "$mingw32" = "yes" ; then
|
||||||
EXESUF=".exe"
|
EXESUF=".exe"
|
||||||
@@ -520,6 +522,8 @@ for opt do
|
|||||||
;;
|
;;
|
||||||
--python=*) python="$optarg"
|
--python=*) python="$optarg"
|
||||||
;;
|
;;
|
||||||
|
--smbd=*) smbd="$optarg"
|
||||||
|
;;
|
||||||
--extra-cflags=*)
|
--extra-cflags=*)
|
||||||
;;
|
;;
|
||||||
--extra-ldflags=*)
|
--extra-ldflags=*)
|
||||||
@@ -932,6 +936,7 @@ echo " --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS"
|
|||||||
echo " --make=MAKE use specified make [$make]"
|
echo " --make=MAKE use specified make [$make]"
|
||||||
echo " --install=INSTALL use specified install [$install]"
|
echo " --install=INSTALL use specified install [$install]"
|
||||||
echo " --python=PYTHON use specified python [$python]"
|
echo " --python=PYTHON use specified python [$python]"
|
||||||
|
echo " --smbd=SMBD use specified smbd [$smbd]"
|
||||||
echo " --static enable static build [$static]"
|
echo " --static enable static build [$static]"
|
||||||
echo " --mandir=PATH install man pages in PATH"
|
echo " --mandir=PATH install man pages in PATH"
|
||||||
echo " --datadir=PATH install firmware in PATH"
|
echo " --datadir=PATH install firmware in PATH"
|
||||||
@@ -1513,11 +1518,17 @@ int main(void) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
if $pkg_config libpng --modversion >/dev/null 2>&1; then
|
||||||
|
vnc_png_cflags=`$pkg_config libpng --cflags 2> /dev/null`
|
||||||
|
vnc_png_libs=`$pkg_config libpng --libs 2> /dev/null`
|
||||||
|
else
|
||||||
vnc_png_cflags=""
|
vnc_png_cflags=""
|
||||||
vnc_png_libs="-lpng"
|
vnc_png_libs="-lpng"
|
||||||
|
fi
|
||||||
if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
|
if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
|
||||||
vnc_png=yes
|
vnc_png=yes
|
||||||
libs_softmmu="$vnc_png_libs $libs_softmmu"
|
libs_softmmu="$vnc_png_libs $libs_softmmu"
|
||||||
|
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
|
||||||
else
|
else
|
||||||
if test "$vnc_png" = "yes" ; then
|
if test "$vnc_png" = "yes" ; then
|
||||||
feature_not_found "vnc-png"
|
feature_not_found "vnc-png"
|
||||||
@@ -1844,7 +1855,7 @@ fi
|
|||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# pthread probe
|
# pthread probe
|
||||||
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
|
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
|
||||||
|
|
||||||
pthread=no
|
pthread=no
|
||||||
cat > $TMPC << EOF
|
cat > $TMPC << EOF
|
||||||
@@ -2638,6 +2649,9 @@ echo "LDFLAGS $LDFLAGS"
|
|||||||
echo "make $make"
|
echo "make $make"
|
||||||
echo "install $install"
|
echo "install $install"
|
||||||
echo "python $python"
|
echo "python $python"
|
||||||
|
if test "$slirp" = "yes" ; then
|
||||||
|
echo "smbd $smbd"
|
||||||
|
fi
|
||||||
echo "host CPU $cpu"
|
echo "host CPU $cpu"
|
||||||
echo "host big endian $bigendian"
|
echo "host big endian $bigendian"
|
||||||
echo "target list $target_list"
|
echo "target list $target_list"
|
||||||
@@ -2796,6 +2810,7 @@ if test $profiler = "yes" ; then
|
|||||||
fi
|
fi
|
||||||
if test "$slirp" = "yes" ; then
|
if test "$slirp" = "yes" ; then
|
||||||
echo "CONFIG_SLIRP=y" >> $config_host_mak
|
echo "CONFIG_SLIRP=y" >> $config_host_mak
|
||||||
|
echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
|
||||||
QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
|
QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
|
||||||
fi
|
fi
|
||||||
if test "$vde" = "yes" ; then
|
if test "$vde" = "yes" ; then
|
||||||
@@ -3048,9 +3063,9 @@ echo "TOOLS=$tools" >> $config_host_mak
|
|||||||
echo "ROMS=$roms" >> $config_host_mak
|
echo "ROMS=$roms" >> $config_host_mak
|
||||||
echo "MAKE=$make" >> $config_host_mak
|
echo "MAKE=$make" >> $config_host_mak
|
||||||
echo "INSTALL=$install" >> $config_host_mak
|
echo "INSTALL=$install" >> $config_host_mak
|
||||||
echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
|
echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
|
||||||
echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
|
echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
|
||||||
echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
|
echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
|
||||||
echo "PYTHON=$python" >> $config_host_mak
|
echo "PYTHON=$python" >> $config_host_mak
|
||||||
echo "CC=$cc" >> $config_host_mak
|
echo "CC=$cc" >> $config_host_mak
|
||||||
echo "CC_I386=$cc_i386" >> $config_host_mak
|
echo "CC_I386=$cc_i386" >> $config_host_mak
|
||||||
@@ -3566,7 +3581,7 @@ DIRS="$DIRS roms/seabios roms/vgabios"
|
|||||||
DIRS="$DIRS fsdev ui"
|
DIRS="$DIRS fsdev ui"
|
||||||
DIRS="$DIRS qapi"
|
DIRS="$DIRS qapi"
|
||||||
DIRS="$DIRS qga"
|
DIRS="$DIRS qga"
|
||||||
FILES="Makefile tests/Makefile"
|
FILES="Makefile tests/Makefile qdict-test-data.txt"
|
||||||
FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
|
FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
|
||||||
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
|
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
|
||||||
FILES="$FILES pc-bios/spapr-rtas/Makefile"
|
FILES="$FILES pc-bios/spapr-rtas/Makefile"
|
||||||
|
18
hppa.ld
18
hppa.ld
@@ -75,36 +75,34 @@ SECTIONS
|
|||||||
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
||||||
.PARISC.unwind : { *(.PARISC.unwind) }
|
.PARISC.unwind : { *(.PARISC.unwind) }
|
||||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
||||||
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
|
|
||||||
.gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
|
|
||||||
/* Adjust the address for the data segment. We want to adjust up to
|
/* Adjust the address for the data segment. We want to adjust up to
|
||||||
the same address within the page on the next page up. */
|
the same address within the page on the next page up. */
|
||||||
. = ALIGN(0x10000) + (. & (0x10000 - 1));
|
. = ALIGN(0x10000) + (. & (0x10000 - 1));
|
||||||
/* Exception handling */
|
/* Exception handling */
|
||||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
|
.eh_frame : { KEEP (*(.eh_frame)) }
|
||||||
.gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
|
.gcc_except_table : { *(.gcc_except_table .gcc_except_table.*) }
|
||||||
/* Thread Local Storage sections */
|
/* Thread Local Storage sections */
|
||||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||||
.preinit_array :
|
.preinit_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
PROVIDE (__preinit_array_start = .);
|
||||||
KEEP (*(.preinit_array))
|
KEEP (*(.preinit_array))
|
||||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
PROVIDE (__preinit_array_end = .);
|
||||||
}
|
}
|
||||||
.init_array :
|
.init_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__init_array_start = .);
|
PROVIDE (__init_array_start = .);
|
||||||
KEEP (*(SORT(.init_array.*)))
|
KEEP (*(SORT(.init_array.*)))
|
||||||
KEEP (*(.init_array))
|
KEEP (*(.init_array))
|
||||||
PROVIDE_HIDDEN (__init_array_end = .);
|
PROVIDE (__init_array_end = .);
|
||||||
}
|
}
|
||||||
.fini_array :
|
.fini_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
PROVIDE (__fini_array_start = .);
|
||||||
KEEP (*(.fini_array))
|
KEEP (*(.fini_array))
|
||||||
KEEP (*(SORT(.fini_array.*)))
|
KEEP (*(SORT(.fini_array.*)))
|
||||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
PROVIDE (__fini_array_end = .);
|
||||||
}
|
}
|
||||||
.ctors :
|
.ctors :
|
||||||
{
|
{
|
||||||
|
8
i386.ld
8
i386.ld
@@ -42,16 +42,16 @@ SECTIONS
|
|||||||
.rel.plt :
|
.rel.plt :
|
||||||
{
|
{
|
||||||
*(.rel.plt)
|
*(.rel.plt)
|
||||||
PROVIDE_HIDDEN (__rel_iplt_start = .);
|
PROVIDE (__rel_iplt_start = .);
|
||||||
*(.rel.iplt)
|
*(.rel.iplt)
|
||||||
PROVIDE_HIDDEN (__rel_iplt_end = .);
|
PROVIDE (__rel_iplt_end = .);
|
||||||
}
|
}
|
||||||
.rela.plt :
|
.rela.plt :
|
||||||
{
|
{
|
||||||
*(.rela.plt)
|
*(.rela.plt)
|
||||||
PROVIDE_HIDDEN (__rela_iplt_start = .);
|
PROVIDE (__rela_iplt_start = .);
|
||||||
*(.rela.iplt)
|
*(.rela.iplt)
|
||||||
PROVIDE_HIDDEN (__rela_iplt_end = .);
|
PROVIDE (__rela_iplt_end = .);
|
||||||
}
|
}
|
||||||
.init : { *(.init) } =0x47ff041f
|
.init : { *(.init) } =0x47ff041f
|
||||||
.text :
|
.text :
|
||||||
|
18
mips.ld
18
mips.ld
@@ -79,36 +79,34 @@ SECTIONS
|
|||||||
}
|
}
|
||||||
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
||||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
||||||
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
|
|
||||||
.gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
|
|
||||||
/* Adjust the address for the data segment. We want to adjust up to
|
/* Adjust the address for the data segment. We want to adjust up to
|
||||||
the same address within the page on the next page up. */
|
the same address within the page on the next page up. */
|
||||||
. = ALIGN (0x40000) - ((0x40000 - .) & (0x40000 - 1)); . = DATA_SEGMENT_ALIGN (0x40000, 0x1000);
|
. = ALIGN (0x40000) - ((0x40000 - .) & (0x40000 - 1)); . = DATA_SEGMENT_ALIGN (0x40000, 0x1000);
|
||||||
/* Exception handling */
|
/* Exception handling */
|
||||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
|
.eh_frame : { KEEP (*(.eh_frame)) }
|
||||||
.gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
|
.gcc_except_table : { *(.gcc_except_table .gcc_except_table.*) }
|
||||||
/* Thread Local Storage sections */
|
/* Thread Local Storage sections */
|
||||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||||
.preinit_array :
|
.preinit_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
PROVIDE (__preinit_array_start = .);
|
||||||
KEEP (*(.preinit_array))
|
KEEP (*(.preinit_array))
|
||||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
PROVIDE (__preinit_array_end = .);
|
||||||
}
|
}
|
||||||
.init_array :
|
.init_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__init_array_start = .);
|
PROVIDE (__init_array_start = .);
|
||||||
KEEP (*(SORT(.init_array.*)))
|
KEEP (*(SORT(.init_array.*)))
|
||||||
KEEP (*(.init_array))
|
KEEP (*(.init_array))
|
||||||
PROVIDE_HIDDEN (__init_array_end = .);
|
PROVIDE (__init_array_end = .);
|
||||||
}
|
}
|
||||||
.fini_array :
|
.fini_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
PROVIDE (__fini_array_start = .);
|
||||||
KEEP (*(.fini_array))
|
KEEP (*(.fini_array))
|
||||||
KEEP (*(SORT(.fini_array.*)))
|
KEEP (*(SORT(.fini_array.*)))
|
||||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
PROVIDE (__fini_array_end = .);
|
||||||
}
|
}
|
||||||
.ctors :
|
.ctors :
|
||||||
{
|
{
|
||||||
|
@@ -1189,7 +1189,6 @@ static int add_graphics_client(Monitor *mon, const QDict *qdict, QObject **ret_d
|
|||||||
{
|
{
|
||||||
const char *protocol = qdict_get_str(qdict, "protocol");
|
const char *protocol = qdict_get_str(qdict, "protocol");
|
||||||
const char *fdname = qdict_get_str(qdict, "fdname");
|
const char *fdname = qdict_get_str(qdict, "fdname");
|
||||||
int skipauth = qdict_get_try_bool(qdict, "skipauth", 0);
|
|
||||||
CharDriverState *s;
|
CharDriverState *s;
|
||||||
|
|
||||||
if (strcmp(protocol, "spice") == 0) {
|
if (strcmp(protocol, "spice") == 0) {
|
||||||
@@ -1200,10 +1199,13 @@ static int add_graphics_client(Monitor *mon, const QDict *qdict, QObject **ret_d
|
|||||||
}
|
}
|
||||||
qerror_report(QERR_ADD_CLIENT_FAILED);
|
qerror_report(QERR_ADD_CLIENT_FAILED);
|
||||||
return -1;
|
return -1;
|
||||||
|
#ifdef CONFIG_VNC
|
||||||
} else if (strcmp(protocol, "vnc") == 0) {
|
} else if (strcmp(protocol, "vnc") == 0) {
|
||||||
int fd = monitor_get_fd(mon, fdname);
|
int fd = monitor_get_fd(mon, fdname);
|
||||||
|
int skipauth = qdict_get_try_bool(qdict, "skipauth", 0);
|
||||||
vnc_display_add_client(NULL, fd, skipauth);
|
vnc_display_add_client(NULL, fd, skipauth);
|
||||||
return 0;
|
return 0;
|
||||||
|
#endif
|
||||||
} else if ((s = qemu_chr_find(protocol)) != NULL) {
|
} else if ((s = qemu_chr_find(protocol)) != NULL) {
|
||||||
int fd = monitor_get_fd(mon, fdname);
|
int fd = monitor_get_fd(mon, fdname);
|
||||||
if (qemu_chr_add_client(s, fd) < 0) {
|
if (qemu_chr_add_client(s, fd) < 0) {
|
||||||
|
5
net.h
5
net.h
@@ -174,11 +174,6 @@ int do_netdev_del(Monitor *mon, const QDict *qdict, QObject **ret_data);
|
|||||||
|
|
||||||
#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
|
#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
|
||||||
#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
|
#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
|
||||||
#ifdef __sun__
|
|
||||||
#define SMBD_COMMAND "/usr/sfw/sbin/smbd"
|
|
||||||
#else
|
|
||||||
#define SMBD_COMMAND "/usr/sbin/smbd"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void qdev_set_nic_properties(DeviceState *dev, NICInfo *nd);
|
void qdev_set_nic_properties(DeviceState *dev, NICInfo *nd);
|
||||||
|
|
||||||
|
@@ -529,7 +529,7 @@ static int slirp_smb(SlirpState* s, const char *exported_dir,
|
|||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
snprintf(smb_cmdline, sizeof(smb_cmdline), "%s -s %s",
|
snprintf(smb_cmdline, sizeof(smb_cmdline), "%s -s %s",
|
||||||
SMBD_COMMAND, smb_conf);
|
CONFIG_SMBD_COMMAND, smb_conf);
|
||||||
|
|
||||||
if (slirp_add_exec(s->slirp, 0, smb_cmdline, &vserver_addr, 139) < 0) {
|
if (slirp_add_exec(s->slirp, 0, smb_cmdline, &vserver_addr, 139) < 0) {
|
||||||
slirp_smb_cleanup(s);
|
slirp_smb_cleanup(s);
|
||||||
|
10
net/socket.c
10
net/socket.c
@@ -154,6 +154,12 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr, struct in_addr
|
|||||||
struct ip_mreq imr;
|
struct ip_mreq imr;
|
||||||
int fd;
|
int fd;
|
||||||
int val, ret;
|
int val, ret;
|
||||||
|
#ifdef __OpenBSD__
|
||||||
|
unsigned char loop;
|
||||||
|
#else
|
||||||
|
int loop;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!IN_MULTICAST(ntohl(mcastaddr->sin_addr.s_addr))) {
|
if (!IN_MULTICAST(ntohl(mcastaddr->sin_addr.s_addr))) {
|
||||||
fprintf(stderr, "qemu: error: specified mcastaddr \"%s\" (0x%08x) does not contain a multicast address\n",
|
fprintf(stderr, "qemu: error: specified mcastaddr \"%s\" (0x%08x) does not contain a multicast address\n",
|
||||||
inet_ntoa(mcastaddr->sin_addr),
|
inet_ntoa(mcastaddr->sin_addr),
|
||||||
@@ -197,9 +203,9 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr, struct in_addr
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Force mcast msgs to loopback (eg. several QEMUs in same host */
|
/* Force mcast msgs to loopback (eg. several QEMUs in same host */
|
||||||
val = 1;
|
loop = 1;
|
||||||
ret=setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP,
|
ret=setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP,
|
||||||
(const char *)&val, sizeof(val));
|
(const char *)&loop, sizeof(loop));
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
perror("setsockopt(SOL_IP, IP_MULTICAST_LOOP)");
|
perror("setsockopt(SOL_IP, IP_MULTICAST_LOOP)");
|
||||||
goto fail;
|
goto fail;
|
||||||
|
18
ppc.ld
18
ppc.ld
@@ -79,36 +79,34 @@ SECTIONS
|
|||||||
}
|
}
|
||||||
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
||||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
||||||
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
|
|
||||||
.gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
|
|
||||||
/* Adjust the address for the data segment. We want to adjust up to
|
/* Adjust the address for the data segment. We want to adjust up to
|
||||||
the same address within the page on the next page up. */
|
the same address within the page on the next page up. */
|
||||||
. = ALIGN (0x10000) - ((0x10000 - .) & (0x10000 - 1)); . = DATA_SEGMENT_ALIGN (0x10000, 0x1000);
|
. = ALIGN (0x10000) - ((0x10000 - .) & (0x10000 - 1)); . = DATA_SEGMENT_ALIGN (0x10000, 0x1000);
|
||||||
/* Exception handling */
|
/* Exception handling */
|
||||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
|
.eh_frame : { KEEP (*(.eh_frame)) }
|
||||||
.gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
|
.gcc_except_table : { *(.gcc_except_table .gcc_except_table.*) }
|
||||||
/* Thread Local Storage sections */
|
/* Thread Local Storage sections */
|
||||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||||
.preinit_array :
|
.preinit_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
PROVIDE (__preinit_array_start = .);
|
||||||
KEEP (*(.preinit_array))
|
KEEP (*(.preinit_array))
|
||||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
PROVIDE (__preinit_array_end = .);
|
||||||
}
|
}
|
||||||
.init_array :
|
.init_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__init_array_start = .);
|
PROVIDE (__init_array_start = .);
|
||||||
KEEP (*(SORT(.init_array.*)))
|
KEEP (*(SORT(.init_array.*)))
|
||||||
KEEP (*(.init_array))
|
KEEP (*(.init_array))
|
||||||
PROVIDE_HIDDEN (__init_array_end = .);
|
PROVIDE (__init_array_end = .);
|
||||||
}
|
}
|
||||||
.fini_array :
|
.fini_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
PROVIDE (__fini_array_start = .);
|
||||||
KEEP (*(.fini_array))
|
KEEP (*(.fini_array))
|
||||||
KEEP (*(SORT(.fini_array.*)))
|
KEEP (*(SORT(.fini_array.*)))
|
||||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
PROVIDE (__fini_array_end = .);
|
||||||
}
|
}
|
||||||
.ctors :
|
.ctors :
|
||||||
{
|
{
|
||||||
|
6
ppc64.ld
6
ppc64.ld
@@ -81,14 +81,12 @@ SECTIONS
|
|||||||
.sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
|
.sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
|
||||||
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
||||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
||||||
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
|
|
||||||
.gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table))
|
|
||||||
*(.gcc_except_table.*) } /* Adjust the address for the data segment. We want to
|
*(.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. */
|
adjust up to + the same address within the page on the next page up. */
|
||||||
. = ALIGN (0x10000) - ((0x10000 - .) & (0x10000 - 1)); . = DATA_SEGMENT_ALIGN
|
. = ALIGN (0x10000) - ((0x10000 - .) & (0x10000 - 1)); . = DATA_SEGMENT_ALIGN
|
||||||
(0x10000, 0x1000); /* Exception handling */
|
(0x10000, 0x1000); /* Exception handling */
|
||||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
|
.eh_frame : { KEEP (*(.eh_frame)) }
|
||||||
.gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table))
|
.gcc_except_table : { KEEP (*(.gcc_except_table))
|
||||||
*(.gcc_except_table.*) } /* Thread Local Storage sections */
|
*(.gcc_except_table.*) } /* Thread Local Storage sections */
|
||||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||||
|
@@ -1256,9 +1256,9 @@ or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
|
|||||||
|
|
||||||
Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
|
Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
|
||||||
|
|
||||||
Note that a SAMBA server must be installed on the host OS in
|
Note that a SAMBA server must be installed on the host OS.
|
||||||
@file{/usr/sbin/smbd}. QEMU was tested successfully with smbd versions from
|
QEMU was tested successfully with smbd versions from Red Hat 9,
|
||||||
Red Hat 9, Fedora Core 3 and OpenSUSE 11.x.
|
Fedora Core 3 and OpenSUSE 11.x.
|
||||||
|
|
||||||
@item hostfwd=[tcp|udp]:[@var{hostaddr}]:@var{hostport}-[@var{guestaddr}]:@var{guestport}
|
@item hostfwd=[tcp|udp]:[@var{hostaddr}]:@var{hostport}-[@var{guestaddr}]:@var{guestport}
|
||||||
Redirect incoming TCP or UDP connections to the host port @var{hostport} to
|
Redirect incoming TCP or UDP connections to the host port @var{hostport} to
|
||||||
|
12
sparc.ld
12
sparc.ld
@@ -67,23 +67,23 @@ SECTIONS
|
|||||||
.tbss : { *(.tbss) }
|
.tbss : { *(.tbss) }
|
||||||
.preinit_array :
|
.preinit_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
PROVIDE (__preinit_array_start = .);
|
||||||
KEEP (*(.preinit_array))
|
KEEP (*(.preinit_array))
|
||||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
PROVIDE (__preinit_array_end = .);
|
||||||
}
|
}
|
||||||
.init_array :
|
.init_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__init_array_start = .);
|
PROVIDE (__init_array_start = .);
|
||||||
KEEP (*(SORT(.init_array.*)))
|
KEEP (*(SORT(.init_array.*)))
|
||||||
KEEP (*(.init_array))
|
KEEP (*(.init_array))
|
||||||
PROVIDE_HIDDEN (__init_array_end = .);
|
PROVIDE (__init_array_end = .);
|
||||||
}
|
}
|
||||||
.fini_array :
|
.fini_array :
|
||||||
{
|
{
|
||||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
PROVIDE (__fini_array_start = .);
|
||||||
KEEP (*(.fini_array))
|
KEEP (*(.fini_array))
|
||||||
KEEP (*(SORT(.fini_array.*)))
|
KEEP (*(SORT(.fini_array.*)))
|
||||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
PROVIDE (__fini_array_end = .);
|
||||||
}
|
}
|
||||||
.ctors :
|
.ctors :
|
||||||
{
|
{
|
||||||
|
4
ui/sdl.c
4
ui/sdl.c
@@ -672,8 +672,10 @@ static void sdl_refresh(DisplayState *ds)
|
|||||||
sdl_process_key(&ev->key);
|
sdl_process_key(&ev->key);
|
||||||
break;
|
break;
|
||||||
case SDL_QUIT:
|
case SDL_QUIT:
|
||||||
if (!no_quit)
|
if (!no_quit) {
|
||||||
|
no_shutdown = 0;
|
||||||
qemu_system_shutdown_request();
|
qemu_system_shutdown_request();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEMOTION:
|
case SDL_MOUSEMOTION:
|
||||||
if (gui_grab || kbd_mouse_is_absolute() ||
|
if (gui_grab || kbd_mouse_is_absolute() ||
|
||||||
|
1
vl.c
1
vl.c
@@ -1282,6 +1282,7 @@ void qemu_system_killed(int signal, pid_t pid)
|
|||||||
{
|
{
|
||||||
shutdown_signal = signal;
|
shutdown_signal = signal;
|
||||||
shutdown_pid = pid;
|
shutdown_pid = pid;
|
||||||
|
no_shutdown = 0;
|
||||||
qemu_system_shutdown_request();
|
qemu_system_shutdown_request();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
x86_64.ld
14
x86_64.ld
@@ -38,16 +38,16 @@ SECTIONS
|
|||||||
.rel.plt :
|
.rel.plt :
|
||||||
{
|
{
|
||||||
*(.rel.plt)
|
*(.rel.plt)
|
||||||
PROVIDE_HIDDEN (__rel_iplt_start = .);
|
PROVIDE (__rel_iplt_start = .);
|
||||||
*(.rel.iplt)
|
*(.rel.iplt)
|
||||||
PROVIDE_HIDDEN (__rel_iplt_end = .);
|
PROVIDE (__rel_iplt_end = .);
|
||||||
}
|
}
|
||||||
.rela.plt :
|
.rela.plt :
|
||||||
{
|
{
|
||||||
*(.rela.plt)
|
*(.rela.plt)
|
||||||
PROVIDE_HIDDEN (__rela_iplt_start = .);
|
PROVIDE (__rela_iplt_start = .);
|
||||||
*(.rela.iplt)
|
*(.rela.iplt)
|
||||||
PROVIDE_HIDDEN (__rela_iplt_end = .);
|
PROVIDE (__rela_iplt_end = .);
|
||||||
}
|
}
|
||||||
.init :
|
.init :
|
||||||
{
|
{
|
||||||
@@ -70,8 +70,6 @@ SECTIONS
|
|||||||
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
||||||
.rodata1 : { *(.rodata1) }
|
.rodata1 : { *(.rodata1) }
|
||||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
.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
|
/* Adjust the address for the data segment. We want to adjust up to
|
||||||
the same address within the page on the next page up. */
|
the same address within the page on the next page up. */
|
||||||
. = ALIGN (0x100000) - ((0x100000 - .) & (0x100000 - 1)); . = DATA_SEGMENT_ALIGN (0x100000, 0x1000);
|
. = ALIGN (0x100000) - ((0x100000 - .) & (0x100000 - 1)); . = DATA_SEGMENT_ALIGN (0x100000, 0x1000);
|
||||||
@@ -97,8 +95,8 @@ SECTIONS
|
|||||||
.data1 : { *(.data1) }
|
.data1 : { *(.data1) }
|
||||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
|
.eh_frame : { KEEP (*(.eh_frame)) }
|
||||||
.gcc_except_table : ONLY_IF_RW { *(.gcc_except_table) }
|
.gcc_except_table : { *(.gcc_except_table) }
|
||||||
.dynamic : { *(.dynamic) }
|
.dynamic : { *(.dynamic) }
|
||||||
.ctors :
|
.ctors :
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user