Thanks for inspiring! Sorry for being unable to response instantly &#39;cause we&#39;re of diff.  semisphere.<br>   The android-bluetooth module DOES have glib included, it uses only libglib, and now I&#39;ve compiled it under android souce into libglib.so,but it&#39;s not usable to spice-gtk for it&#39;s glib-2.0-20 which cannot afford some methods such as &quot;g_byte_array_unref&quot;.etc,and there&#39;s none libgio/libgthread/libgmodule which are also needed by spicec-glib or snappy.<br>
   As I&#39;ve mentioned, in running of snappy,the segfault/sigbus comes from libgobj and my patching work is mainly in libgio.<br>   And I have found no clue of successful use of libgio..etc. in Android.<br>   So now, I suppose the problems are basically from two points:(suppose the spice-gtk has no wrong-use of glib)<br>
1. The compiling fault such as the incorrect alignment setting which is the sin of the sigbus<br>2. The danger in the patching of the definitions from arpa/nameser*.h which may cause segfault.<br>   Anybody can give me some instructions of testing libg*?<br>
   Appreciating.<br><div class="gmail_quote">  <br>On Mon, Mar 21, 2011 at 6:30 PM, Alon Levy <span dir="ltr">&lt;<a href="mailto:alevy@redhat.com">alevy@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Mon, Mar 21, 2011 at 06:13:12PM +0800, Shuxiang Lim wrote:<br>
&gt; Hi, I open this new thread to clearly describe my condition:<br>
&gt;<br>
<br>
</div>did you notice the post mentioning glib is actually part of android<br>
since it&#39;s used for bluetooth? maybe you can find out which version / where<br>
the headers / libs are and just link with it?<br>
<br>
I am trying to setup an environment according to your instructions but I<br>
don&#39;t have any hw to test with. It will take me some time though.<br>
<br>
Alon<br>
<div><div></div><div class="h5"><br>
&gt; 1.I use the android NDK provided by Mozzila which has nearly full C++<br>
&gt; support:<br>
&gt; <a href="http://ftp.mozilla.org/pub/mozilla.org/mobile/source/android-ndk-r4c-0moz3.tar.bz2" target="_blank">http://ftp.mozilla.org/pub/mozilla.org/mobile/source/android-ndk-r4c-0moz3.tar.bz2</a><br>
&gt; and I have modified Andrew Ross&#39;s agcc to partner with this NDK:<br>
&gt; <a href="http://blog.csdn.net/rozenix/archive/2011/02/28/6212994.aspx" target="_blank">http://blog.csdn.net/rozenix/archive/2011/02/28/6212994.aspx</a><br>
&gt;<br>
&gt; 2. Then I cross compile glib2.28.1 onto Android in this order:<br>
&gt; 1)libiconv-1.13.1.tar.gz:<br>
&gt; configured by:<br>
&gt; *CC=agcc CXX=agcc LD=arm-eabi-ld RANLIB=arm-eabi-ranlib \<br>
&gt; PKG_CONFIG_LIBDIR=/data/local/lib/pkgconfig:/data/local/share/pkgconfig/ \<br>
&gt;     ./configure \<br>
&gt;     --prefix=/data/local \<br>
&gt;     --host=arm-eabi-linux \**<br>
&gt;     --enable-malloc0returnsnull \*<br>
&gt; *    --enable-shared \*<br>
&gt;  2)gettext-0.18.1.1.tar.gz<br>
&gt; configured by:<br>
&gt; *CC=agcc CPPFLAGS=&quot;-I/data/local/include&quot; LDFLAGS=&quot;-L/data/local/lib&quot;<br>
&gt; CXX=agcc LD=arm-eabi-ld RANLIB=arm-eabi-ranlib \<br>
&gt; PKG_CONFIG_LIBDIR=/data/local/lib/pkgconfig:/data/local/share/pkgconfig/ \<br>
&gt;     ./configure \<br>
&gt;     --prefix=/data/local \<br>
&gt;     --host=arm-eabi-linux \<br>
&gt;     --enable-malloc0returnsnull \<br>
&gt;     --enable-shared \<br>
&gt;     --cache-file=arm.cache \<br>
&gt;     --without-included-regex \<br>
&gt;     --disable-java --disable-openmp --without-libiconv-prefix<br>
&gt; --without-libintl-prefix --without-libglib-2.0-prefix<br>
&gt; --without-libcroco-0.6-prefix --with-included-libxml<br>
&gt; --without-libncurses-prefix --without-libtermcap-prefix<br>
&gt; --without-libcurses-prefix --without-libexpat-prefix --without-emacs<br>
&gt;   * But the build of gettext will not fully succeed,never mind, I need only<br>
&gt; libintl.so so just make install.<br>
&gt;<br>
&gt; 3)  glib-2.28.1.tar.gz<br>
&gt; 1st, do patching with my attached file(these are all that I found that have<br>
&gt; to be modified)<br>
&gt; 2nd, write this into the cache file arm.cache:<br>
&gt; *glib_cv_stack_grows=no**<br>
&gt; glib_cv_uscore=no<br>
&gt; ac_cv_func_posix_getpwuid_r=no<br>
&gt; ac_cv_func_posix_getgrgid_r=no*<br>
&gt; 3rd, configured  the same as libiconv.<br>
&gt; 4th, remove the -lpthread in gthread/Makefile.<br>
&gt; 5td, make;make install<br>
&gt;<br>
&gt; 3. Also I have to port pixman and openssl onto android.<br>
&gt; 1)pixman-0.20.0: config. make;make install same as libiconv<br>
&gt; 2)openssl-1.0.0: config by:<br>
&gt; ./config no-asm shared --prefix=/data/local/<br>
&gt; then modify the Makefile:gcc--&gt;agcc remove the -m64..etc.<br>
&gt; make...<br>
&gt;<br>
&gt; 3. So I disable the audio channels and build snappy onto android with this<br>
&gt; script under spice-gtk/gtk:<br>
&gt; #!/bin/bash<br>
&gt; COMMON_DIR=../common<br>
&gt; SPICE_GLIB_SRC=&quot;coroutine_gthread.c spice-util.c spice-session.c<br>
&gt; spice-channel.c spice-glib-enums.c spice-marshal.c generated_demarshallers.c<br>
&gt; generated_demarshallers1.c generated_marshallers.c generated_marshallers1.c<br>
&gt; gio-coroutine.c channel-base.c channel-main.c channel-display.c<br>
&gt; channel-display-mjpeg.c channel-cursor.c channel-inputs.c decode-glz.c<br>
&gt; decode-jpeg.c decode-zlib.c $COMMON_DIR/mem.c $COMMON_DIR/marshaller.c<br>
&gt; $COMMON_DIR/canvas_utils.c $COMMON_DIR/sw_canvas.c<br>
&gt; $COMMON_DIR/pixman_utils.c $COMMON_DIR/lines.c $COMMON_DIR/rop3.c<br>
&gt; $COMMON_DIR/quic.c $COMMON_DIR/lz.c $COMMON_DIR/region.c<br>
&gt; $COMMON_DIR/ssl_verify.c&quot;<br>
&gt; CPP_FLAGS=&quot;-DHAVE_CONFIG_H -DSW_CANVAS_CACHE  -D_REENTRANT -I. -I..<br>
&gt; -I../common -I/data/local/include/spice-1 -I/data/local/include/pixman-1<br>
&gt; -I/data/local/include -I/data/local/include/glib-2.0<br>
&gt; -I/data/local/lib/glib-2.0/include&quot;<br>
&gt; C_FLAGS=&quot;-std=gnu99 -Wall -Wno-sign-compare -Wno-deprecated-declarations<br>
&gt; -Wl,--no-undefined -fPIC -DPIC &quot;<br>
&gt; LD_FLAGS=&quot;-L/data/local/lib/ -lpixman-1 -lm  -lssl -lcrypto -ljpeg -lz<br>
&gt; -lglib-2.0  -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 &quot;<br>
&gt; echo &quot;agcc -shared -o libspicec_glib.so $SPICE_GLIB_SRC $CPP_FLAGS $C_FLAGS<br>
&gt; $LD_FLAGS&quot;<br>
&gt; agcc -shared -o libspicec.so  $SPICE_GLIB_SRC $CPP_FLAGS $C_FLAGS $LD_FLAGS<br>
&gt; agcc -o snappy spice-cmdline.c snappy.c -DG_LOG_DOMAIN=\&quot;GSpice\&quot;<br>
&gt; -DSW_CANVAS_CACHE -DSPICE_GTK_LOCALEDIR=\&quot;/usr/local/share/locale\&quot;<br>
&gt; $CPP_FLAGS $C_FLAGS $LD_FLAGS -lspicec -lintl -liconv -L./<br>
&gt;<br>
&gt; then I put all the snappy,libspicec.so,lib*so onto android dev. and<br>
&gt; reproduce the faults.<br>
&gt; Thanks.<br>
<br>
</div></div>&gt; --- glib-2.28.1/glib/gstrfuncs.c      2011-02-16 10:55:33.000000000 +0800<br>
&gt; +++ aglib-2.28.1/glib/gstrfuncs.c     2011-03-21 16:33:18.000000000 +0800<br>
&gt; @@ -442,8 +442,12 @@ g_ascii_strtod (const gchar *nptr,<br>
&gt;<br>
&gt;    fail_pos = NULL;<br>
&gt;<br>
&gt; +#ifdef ANDROID<br>
&gt; +  decimal_point = &quot;.&quot;;<br>
&gt; +#else<br>
&gt;    locale_data = localeconv ();<br>
&gt;    decimal_point = locale_data-&gt;decimal_point;<br>
&gt; +#endif<br>
&gt;    decimal_point_len = strlen (decimal_point);<br>
&gt;<br>
&gt;    g_assert (decimal_point_len != 0);<br>
&gt; @@ -656,8 +660,12 @@ g_ascii_formatd (gchar       *buffer,<br>
&gt;<br>
&gt;    _g_snprintf (buffer, buf_len, format, d);<br>
&gt;<br>
&gt; +#ifdef ANDROID<br>
&gt; +  decimal_point = &quot;.&quot;;<br>
&gt; +#else<br>
&gt;    locale_data = localeconv ();<br>
&gt;    decimal_point = locale_data-&gt;decimal_point;<br>
&gt; +#endif<br>
&gt;    decimal_point_len = strlen (decimal_point);<br>
&gt;<br>
&gt;    g_assert (decimal_point_len != 0);<br>
&gt; --- glib-2.28.1/glib/gutils.c 2011-02-11 23:23:13.000000000 +0800<br>
&gt; +++ aglib-2.28.1/glib/gutils.c        2011-03-21 17:08:09.000000000 +0800<br>
&gt; @@ -29,6 +29,9 @@<br>
&gt;   */<br>
&gt;<br>
&gt;  #include &quot;config.h&quot;<br>
&gt; +#ifdef ANDROID<br>
&gt; +#undef HAVE_PWD_H<br>
&gt; +#endif<br>
&gt;<br>
&gt;  #ifdef HAVE_UNISTD_H<br>
&gt;  #include &lt;unistd.h&gt;<br>
&gt; --- glib-2.28.1/gio/libasyncns/asyncns.c      2010-04-13 21:33:16.000000000 +0800<br>
&gt; +++ aglib-2.28.1/gio/libasyncns/asyncns.c     2011-03-21 17:11:43.000000000 +0800<br>
&gt; @@ -18,6 +18,30 @@<br>
&gt;    &lt;<a href="http://www.gnu.org/licenses/" target="_blank">http://www.gnu.org/licenses/</a>&gt;.<br>
&gt;  ***/<br>
&gt;<br>
&gt; +#ifdef ANDROID<br>
&gt; +typedef struct {<br>
&gt; +     unsigned        id :16;         /*%&lt; query identification number */<br>
&gt; +                     /* fields in third byte */<br>
&gt; +     unsigned        rd :1;          /*%&lt; recursion desired */<br>
&gt; +     unsigned        tc :1;          /*%&lt; truncated message */<br>
&gt; +     unsigned        aa :1;          /*%&lt; authoritive answer */<br>
&gt; +     unsigned        opcode :4;      /*%&lt; purpose of message */<br>
&gt; +     unsigned        qr :1;          /*%&lt; response flag */<br>
&gt; +                     /* fields in fourth byte */<br>
&gt; +     unsigned        rcode :4;       /*%&lt; response code */<br>
&gt; +     unsigned        cd: 1;          /*%&lt; checking disabled by resolver */<br>
&gt; +     unsigned        ad: 1;          /*%&lt; authentic data from named */<br>
&gt; +     unsigned        unused :1;      /*%&lt; unused bits (MBZ as of 4.9.3a3) */<br>
&gt; +     unsigned        ra :1;          /*%&lt; recursion available */<br>
&gt; +                     /* remaining bytes */<br>
&gt; +     unsigned        qdcount :16;    /*%&lt; number of question entries */<br>
&gt; +     unsigned        ancount :16;    /*%&lt; number of answer entries */<br>
&gt; +     unsigned        nscount :16;    /*%&lt; number of authority entries */<br>
&gt; +     unsigned        arcount :16;    /*%&lt; number of resource entries */<br>
&gt; +} HEADER;<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +<br>
&gt;  #ifdef HAVE_CONFIG_H<br>
&gt;  #include &quot;g-asyncns.h&quot;<br>
&gt;  #endif<br>
&gt; @@ -57,6 +81,10 @@<br>
&gt;  #include &lt;inttypes.h&gt;<br>
&gt;  #endif<br>
&gt;<br>
&gt; +#ifdef ANDROID<br>
&gt; +#undef HAVE_SYS_PRCTL_H<br>
&gt; +#endif<br>
&gt; +<br>
&gt;  #ifdef HAVE_SYS_PRCTL_H<br>
&gt;  #include &lt;sys/prctl.h&gt;<br>
&gt;  #endif<br>
&gt; --- glib-2.28.1/gio/gresolver.c       2011-02-11 23:23:11.000000000 +0800<br>
&gt; +++ aglib-2.28.1/gio/gresolver.c      2011-03-21 16:42:18.000000000 +0800<br>
&gt; @@ -20,6 +20,61 @@<br>
&gt;   * Boston, MA 02111-1307, USA.<br>
&gt;   */<br>
&gt;<br>
&gt; +#ifdef ANDROID<br>
&gt; +/*%<br>
&gt; + * Inline versions of get/put short/long.  Pointer is advanced.<br>
&gt; + */<br>
&gt; +#define NS_INT32SZ   4       /*%&lt; #/bytes of data in a u_int32_t */<br>
&gt; +#define NS_INT16SZ   2       /*%&lt; #/bytes of data in a u_int16_t */<br>
&gt; +#define NS_GET16(s, cp) do { \<br>
&gt; +     register const u_char *t_cp = (const u_char *)(cp); \<br>
&gt; +     (s) = ((u_int16_t)t_cp[0] &lt;&lt; 8) \<br>
&gt; +         | ((u_int16_t)t_cp[1]) \<br>
&gt; +         ; \<br>
&gt; +     (cp) += NS_INT16SZ; \<br>
&gt; +} while (0)<br>
&gt; +#define NS_GET32(l, cp) do { \<br>
&gt; +     register const u_char *t_cp = (const u_char *)(cp); \<br>
&gt; +     (l) = ((u_int32_t)t_cp[0] &lt;&lt; 24) \<br>
&gt; +         | ((u_int32_t)t_cp[1] &lt;&lt; 16) \<br>
&gt; +         | ((u_int32_t)t_cp[2] &lt;&lt; 8) \<br>
&gt; +         | ((u_int32_t)t_cp[3]) \<br>
&gt; +         ; \<br>
&gt; +     (cp) += NS_INT32SZ; \<br>
&gt; +} while (0)<br>
&gt; +<br>
&gt; +<br>
&gt; +#define      GETSHORT                NS_GET16<br>
&gt; +#define      GETLONG                 NS_GET32<br>
&gt; +<br>
&gt; +#define ns_c_in      1       /*%&lt; Internet. */<br>
&gt; +#define ns_t_srv     33      /*%&lt; Internet. */<br>
&gt; +#define C_IN         ns_c_in<br>
&gt; +#define      T_SRV           ns_t_srv<br>
&gt; +<br>
&gt; +typedef struct {<br>
&gt; +     unsigned        id :16;         /*%&lt; query identification number */<br>
&gt; +                     /* fields in third byte */<br>
&gt; +     unsigned        rd :1;          /*%&lt; recursion desired */<br>
&gt; +     unsigned        tc :1;          /*%&lt; truncated message */<br>
&gt; +     unsigned        aa :1;          /*%&lt; authoritive answer */<br>
&gt; +     unsigned        opcode :4;      /*%&lt; purpose of message */<br>
&gt; +     unsigned        qr :1;          /*%&lt; response flag */<br>
&gt; +                     /* fields in fourth byte */<br>
&gt; +     unsigned        rcode :4;       /*%&lt; response code */<br>
&gt; +     unsigned        cd: 1;          /*%&lt; checking disabled by resolver */<br>
&gt; +     unsigned        ad: 1;          /*%&lt; authentic data from named */<br>
&gt; +     unsigned        unused :1;      /*%&lt; unused bits (MBZ as of 4.9.3a3) */<br>
&gt; +     unsigned        ra :1;          /*%&lt; recursion available */<br>
&gt; +                     /* remaining bytes */<br>
&gt; +     unsigned        qdcount :16;    /*%&lt; number of question entries */<br>
&gt; +     unsigned        ancount :16;    /*%&lt; number of answer entries */<br>
&gt; +     unsigned        nscount :16;    /*%&lt; number of authority entries */<br>
&gt; +     unsigned        arcount :16;    /*%&lt; number of resource entries */<br>
&gt; +} HEADER;<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +<br>
&gt;  #include &quot;config.h&quot;<br>
&gt;  #include &lt;glib.h&gt;<br>
&gt;  #include &quot;glibintl.h&quot;<br>
&gt; --- glib-2.28.1/gio/gthreadedresolver.c       2011-02-11 23:23:12.000000000 +0800<br>
&gt; +++ aglib-2.28.1/gio/gthreadedresolver.c      2011-03-21 16:44:29.000000000 +0800<br>
&gt; @@ -20,6 +20,60 @@<br>
&gt;   * Boston, MA 02111-1307, USA.<br>
&gt;   */<br>
&gt;<br>
&gt; +#ifdef ANDROID<br>
&gt; +/*%<br>
&gt; + * Inline versions of get/put short/long.  Pointer is advanced.<br>
&gt; + */<br>
&gt; +#define NS_INT32SZ   4       /*%&lt; #/bytes of data in a u_int32_t */<br>
&gt; +#define NS_INT16SZ   2       /*%&lt; #/bytes of data in a u_int16_t */<br>
&gt; +#define NS_GET16(s, cp) do { \<br>
&gt; +     register const u_char *t_cp = (const u_char *)(cp); \<br>
&gt; +     (s) = ((u_int16_t)t_cp[0] &lt;&lt; 8) \<br>
&gt; +         | ((u_int16_t)t_cp[1]) \<br>
&gt; +         ; \<br>
&gt; +     (cp) += NS_INT16SZ; \<br>
&gt; +} while (0)<br>
&gt; +#define NS_GET32(l, cp) do { \<br>
&gt; +     register const u_char *t_cp = (const u_char *)(cp); \<br>
&gt; +     (l) = ((u_int32_t)t_cp[0] &lt;&lt; 24) \<br>
&gt; +         | ((u_int32_t)t_cp[1] &lt;&lt; 16) \<br>
&gt; +         | ((u_int32_t)t_cp[2] &lt;&lt; 8) \<br>
&gt; +         | ((u_int32_t)t_cp[3]) \<br>
&gt; +         ; \<br>
&gt; +     (cp) += NS_INT32SZ; \<br>
&gt; +} while (0)<br>
&gt; +<br>
&gt; +<br>
&gt; +#define      GETSHORT                NS_GET16<br>
&gt; +#define      GETLONG                 NS_GET32<br>
&gt; +<br>
&gt; +#define ns_c_in      1       /*%&lt; Internet. */<br>
&gt; +#define ns_t_srv     33      /*%&lt; Internet. */<br>
&gt; +#define C_IN         ns_c_in<br>
&gt; +#define      T_SRV           ns_t_srv<br>
&gt; +<br>
&gt; +     typedef struct {<br>
&gt; +         unsigned    id :16;         /*%&lt; query identification number */<br>
&gt; +         /* fields in third byte */<br>
&gt; +         unsigned    rd :1;          /*%&lt; recursion desired */<br>
&gt; +         unsigned    tc :1;          /*%&lt; truncated message */<br>
&gt; +         unsigned    aa :1;          /*%&lt; authoritive answer */<br>
&gt; +         unsigned    opcode :4;      /*%&lt; purpose of message */<br>
&gt; +         unsigned    qr :1;          /*%&lt; response flag */<br>
&gt; +         /* fields in fourth byte */<br>
&gt; +         unsigned    rcode :4;       /*%&lt; response code */<br>
&gt; +         unsigned    cd: 1;          /*%&lt; checking disabled by resolver */<br>
&gt; +         unsigned    ad: 1;          /*%&lt; authentic data from named */<br>
&gt; +         unsigned    unused :1;      /*%&lt; unused bits (MBZ as of 4.9.3a3) */<br>
&gt; +         unsigned    ra :1;          /*%&lt; recursion available */<br>
&gt; +         /* remaining bytes */<br>
&gt; +         unsigned    qdcount :16;    /*%&lt; number of question entries */<br>
&gt; +         unsigned    ancount :16;    /*%&lt; number of answer entries */<br>
&gt; +         unsigned    nscount :16;    /*%&lt; number of authority entries */<br>
&gt; +         unsigned    arcount :16;    /*%&lt; number of resource entries */<br>
&gt; +     } HEADER;<br>
&gt; +#endif<br>
&gt; +<br>
&gt;  #include &quot;config.h&quot;<br>
&gt;  #include &lt;glib.h&gt;<br>
&gt;  #include &quot;glibintl.h&quot;<br>
&gt; --- glib-2.28.1/gio/gunixresolver.c   2011-02-11 23:23:12.000000000 +0800<br>
&gt; +++ aglib-2.28.1/gio/gunixresolver.c  2011-03-21 16:45:01.000000000 +0800<br>
&gt; @@ -20,6 +20,62 @@<br>
&gt;   * Boston, MA 02111-1307, USA.<br>
&gt;   */<br>
&gt;<br>
&gt; +#ifdef ANDROID<br>
&gt; +/*%<br>
&gt; + * Inline versions of get/put short/long.  Pointer is advanced.<br>
&gt; + */<br>
&gt; +#define NS_INT32SZ   4       /*%&lt; #/bytes of data in a u_int32_t */<br>
&gt; +#define NS_INT16SZ   2       /*%&lt; #/bytes of data in a u_int16_t */<br>
&gt; +#define NS_GET16(s, cp) do { \<br>
&gt; +     register const u_char *t_cp = (const u_char *)(cp); \<br>
&gt; +     (s) = ((u_int16_t)t_cp[0] &lt;&lt; 8) \<br>
&gt; +         | ((u_int16_t)t_cp[1]) \<br>
&gt; +         ; \<br>
&gt; +     (cp) += NS_INT16SZ; \<br>
&gt; +} while (0)<br>
&gt; +#define NS_GET32(l, cp) do { \<br>
&gt; +     register const u_char *t_cp = (const u_char *)(cp); \<br>
&gt; +     (l) = ((u_int32_t)t_cp[0] &lt;&lt; 24) \<br>
&gt; +         | ((u_int32_t)t_cp[1] &lt;&lt; 16) \<br>
&gt; +         | ((u_int32_t)t_cp[2] &lt;&lt; 8) \<br>
&gt; +         | ((u_int32_t)t_cp[3]) \<br>
&gt; +         ; \<br>
&gt; +     (cp) += NS_INT32SZ; \<br>
&gt; +} while (0)<br>
&gt; +<br>
&gt; +<br>
&gt; +#define      GETSHORT                NS_GET16<br>
&gt; +#define      GETLONG                 NS_GET32<br>
&gt; +<br>
&gt; +#define ns_c_in      1       /*%&lt; Internet. */<br>
&gt; +#define ns_t_srv     33      /*%&lt; Internet. */<br>
&gt; +#define C_IN         ns_c_in<br>
&gt; +#define      T_SRV           ns_t_srv<br>
&gt; +<br>
&gt; +     typedef struct {<br>
&gt; +         unsigned    id :16;         /*%&lt; query identification number */<br>
&gt; +         /* fields in third byte */<br>
&gt; +         unsigned    rd :1;          /*%&lt; recursion desired */<br>
&gt; +         unsigned    tc :1;          /*%&lt; truncated message */<br>
&gt; +         unsigned    aa :1;          /*%&lt; authoritive answer */<br>
&gt; +         unsigned    opcode :4;      /*%&lt; purpose of message */<br>
&gt; +         unsigned    qr :1;          /*%&lt; response flag */<br>
&gt; +         /* fields in fourth byte */<br>
&gt; +         unsigned    rcode :4;       /*%&lt; response code */<br>
&gt; +         unsigned    cd: 1;          /*%&lt; checking disabled by resolver */<br>
&gt; +         unsigned    ad: 1;          /*%&lt; authentic data from named */<br>
&gt; +         unsigned    unused :1;      /*%&lt; unused bits (MBZ as of 4.9.3a3) */<br>
&gt; +         unsigned    ra :1;          /*%&lt; recursion available */<br>
&gt; +         /* remaining bytes */<br>
&gt; +         unsigned    qdcount :16;    /*%&lt; number of question entries */<br>
&gt; +         unsigned    ancount :16;    /*%&lt; number of answer entries */<br>
&gt; +         unsigned    nscount :16;    /*%&lt; number of authority entries */<br>
&gt; +         unsigned    arcount :16;    /*%&lt; number of resource entries */<br>
&gt; +     } HEADER;<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +<br>
&gt; +<br>
&gt;  #include &quot;config.h&quot;<br>
&gt;  #include &lt;glib.h&gt;<br>
&gt;  #include &quot;glibintl.h&quot;<br>
&gt; --- glib-2.28.1/gio/glocalfileinfo.c  2011-02-11 23:23:11.000000000 +0800<br>
&gt; +++ aglib-2.28.1/gio/glocalfileinfo.c 2011-03-21 16:55:10.000000000 +0800<br>
&gt; @@ -1096,7 +1096,11 @@ lookup_uid_data (uid_t uid)<br>
&gt;        if (pwbufp-&gt;pw_name != NULL &amp;&amp; pwbufp-&gt;pw_name[0] != 0)<br>
&gt;       data-&gt;user_name = convert_pwd_string_to_utf8 (pwbufp-&gt;pw_name);<br>
&gt;<br>
&gt; +#ifdef ANDROID<br>
&gt; +      gecos = NULL;<br>
&gt; +#else<br>
&gt;        gecos = pwbufp-&gt;pw_gecos;<br>
&gt; +#endif<br>
&gt;<br>
&gt;        if (gecos)<br>
&gt;       {<br>
&gt; --- glib-2.28.1/gio/ginetaddress.c    2011-02-11 23:23:11.000000000 +0800<br>
&gt; +++ aglib-2.28.1/gio/ginetaddress.c   2011-03-21 16:55:45.000000000 +0800<br>
&gt; @@ -20,6 +20,27 @@<br>
&gt;   * Authors: Christian Kellner &lt;<a href="mailto:gicmo@gnome.org">gicmo@gnome.org</a>&gt;<br>
&gt;   *          Samuel Cormier-Iijima &lt;<a href="mailto:sciyoshi@gmail.com">sciyoshi@gmail.com</a>&gt;<br>
&gt;   */<br>
&gt; +#ifdef ANDROID<br>
&gt; +#define IN6_IS_ADDR_MC_NODELOCAL(a) \<br>
&gt; +     (IN6_IS_ADDR_MULTICAST(a)                                             \<br>
&gt; +      &amp;&amp; ((((__const uint8_t *) (a))[1] &amp; 0xf) == 0x1))<br>
&gt; +<br>
&gt; +#define IN6_IS_ADDR_MC_LINKLOCAL(a) \<br>
&gt; +     (IN6_IS_ADDR_MULTICAST(a)                                             \<br>
&gt; +      &amp;&amp; ((((__const uint8_t *) (a))[1] &amp; 0xf) == 0x2))<br>
&gt; +<br>
&gt; +#define IN6_IS_ADDR_MC_SITELOCAL(a) \<br>
&gt; +     (IN6_IS_ADDR_MULTICAST(a)                                             \<br>
&gt; +      &amp;&amp; ((((__const uint8_t *) (a))[1] &amp; 0xf) == 0x5))<br>
&gt; +<br>
&gt; +#define IN6_IS_ADDR_MC_ORGLOCAL(a) \<br>
&gt; +     (IN6_IS_ADDR_MULTICAST(a)                                             \<br>
&gt; +      &amp;&amp; ((((__const uint8_t *) (a))[1] &amp; 0xf) == 0x8))<br>
&gt; +<br>
&gt; +#define IN6_IS_ADDR_MC_GLOBAL(a) \<br>
&gt; +     (IN6_IS_ADDR_MULTICAST(a)                                             \<br>
&gt; +      &amp;&amp; ((((__const uint8_t *) (a))[1] &amp; 0xf) == 0xe))<br>
&gt; +#endif<br>
&gt;<br>
&gt;  #include &lt;config.h&gt;<br>
&gt;<br>
<br>
&gt; _______________________________________________<br>
&gt; Spice-devel mailing list<br>
&gt; <a href="mailto:Spice-devel@lists.freedesktop.org">Spice-devel@lists.freedesktop.org</a><br>
&gt; <a href="http://lists.freedesktop.org/mailman/listinfo/spice-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/spice-devel</a><br>
<br>
</blockquote></div><br>