[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with
From: |
Kenneth Salerno |
Subject: |
Re: [Qemu-devel] 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on Windows XP host |
Date: |
Fri, 5 Aug 2011 16:17:40 -0700 (PDT) |
--- On Fri, 8/5/11, Jan Kiszka <address@hidden> wrote:
> From: Jan Kiszka <address@hidden>
> Subject: Re: 0.15.0-rc2 (any version past 0.14.1) having issues with SLIRP on
> Windows XP host
> To: "Blue Swirl" <address@hidden>, "Kenneth Salerno" <address@hidden>
> Cc: address@hidden
> Date: Friday, August 5, 2011, 5:43 PM
> On 2011-08-05 22:46, Blue Swirl
> wrote:
> > On Fri, Aug 5, 2011 at 8:09 PM, Kenneth Salerno
> > <address@hidden>
> wrote:
> >> Hi,
> >>
> >> I'm not sure if any defaults (build or runtime)
> have changed since 0.14.1, but I can no longer get the
> following to work anymore for QEMU versions 0.15.0-rc2 or
> recent development builds:
> >>
> >> -device e1000,netdev=mynet0 -netdev
> type=user,id=mynet0 ...
> >>
> >> Works great in 0.14.1 however.
> >>
> >> From the QEMU console, "info networking" shows the
> NIC e1000 and the VLAN correctly setup, the guest (RHEL 6.1
> x86_64) has its NIC recognized and networking setup, just
> can't seem to communicate with the gateway (10.0.2.2). The
> only difference I see in the console is cosmetic
> (restricted=off rather than restricted=n).
> >>
> >> Host OS: Windows XP
> >> Build env: i686-pc-mingw32-gcc 4.5.2, binutils
> 2.21.53.20110731 i386pe
> >> Runtime env: Cygwin 1.7.9 2011-03-29, SDL 1.2.14,
> mingw32-glib 2.28.1-1,
> >>
> mingw32-gettext 0.18.1-2
> >> Guest OS: RHEL 6.1
> >>
> >> Is it just me?
> >
> > No, this is fallout from glib use:
> > http://lists.nongnu.org/archive/html/qemu-devel/2011-08/msg00134.html
> >
> > The fix is to rewrite structures without using GCC bit
> fields.
>
> Does this help?
>
> diff --git a/slirp/ip.h b/slirp/ip.h
> index 48ea38e..72dbe9a 100644
> --- a/slirp/ip.h
> +++ b/slirp/ip.h
> @@ -74,10 +74,10 @@ typedef uint32_t n_long;
> /* long
> as received from the net */
> */
> struct ip {
> #ifdef HOST_WORDS_BIGENDIAN
> - u_int ip_v:4,
> /* version */
> + uint8_t ip_v:4,
> /* version */
>
> ip_hl:4; /* header
> length */
> #else
> - u_int ip_hl:4,
> /* header length */
> + uint8_t ip_hl:4,
> /* header length */
>
> ip_v:4;
> /* version */
> #endif
> uint8_t
> ip_tos;
> /* type of service */
> @@ -140,10 +140,10 @@ struct ip_timestamp
> {
> uint8_t
> ipt_len; /* size of
> structure (variable) */
> uint8_t
> ipt_ptr; /* index of
> current entry */
> #ifdef HOST_WORDS_BIGENDIAN
> - u_int
> ipt_oflw:4, /* overflow
> counter */
> + uint8_t
> ipt_oflw:4, /* overflow
> counter */
>
> ipt_flg:4; /* flags,
> see below */
> #else
> - u_int
> ipt_flg:4, /* flags,
> see below */
> + uint8_t
> ipt_flg:4, /* flags,
> see below */
>
> ipt_oflw:4; /* overflow
> counter */
> #endif
> union ipt_timestamp {
> diff --git a/slirp/tcp.h b/slirp/tcp.h
> index 9d06836..b3817cb 100644
> --- a/slirp/tcp.h
> +++ b/slirp/tcp.h
> @@ -51,10 +51,10 @@ struct tcphdr {
> tcp_seq
> th_seq;
> /* sequence number */
> tcp_seq
> th_ack;
> /* acknowledgement number */
> #ifdef HOST_WORDS_BIGENDIAN
> - u_int
> th_off:4, /* data
> offset */
> + uint8_t
> th_off:4, /* data
> offset */
>
> th_x2:4; /* (unused)
> */
> #else
> - u_int
> th_x2:4, /* (unused)
> */
> + uint8_t
> th_x2:4, /* (unused)
> */
>
> th_off:4; /* data
> offset */
> #endif
> uint8_t th_flags;
>
> Jan
>
>
With this patch it gets caught up in tcg/tcg.c line 1646:
if (ts->val_type == TEMP_VAL_REG)
...
else if (ts->val_type == TEMP_VAL_MEM)
...
else if (ts->val_type == TEMP_VAL_CONST)
....
} else { <------- we get here by changing unsigned int to unsigned
character
tcg_abort();
}
Output from QEMU:
/home/kens/cross-compile/qemu/testing/qemu/tcg/tcg.c:1646: tcg fatal error
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Thanks,
Ken