[OE-core] [PATCH 3/4] libxxf86dga: fix compilation with x32 toolchain

Khem Raj raj.khem at gmail.com
Thu Jan 5 20:48:40 UTC 2012


On Wed, Jan 4, 2012 at 5:02 PM,  <nitin.a.kamble at intel.com> wrote:
> From: Nitin A Kamble <nitin.a.kamble at intel.com>
>
> Fix type conversion for x32. For x32 the off_t is 64bit and pointers are
> 32bit.
> so the conversion of pointer to off_t was resulting into this error:
>
> | XF86DGA2.c:931:24: error: cast from pointer to integer of different
> size [-Werror=pointer-to-int-cast]
> | cc1: some warnings being treated as errors
> |
> | make[2]: *** [XF86DGA2.lo] Error 1
>
> Fixed it by typecasting pointer into unsigned long 1st and then again
> typecasting unsigned long to off_t.
>
> Signed-off-by: Nitin A Kamble <nitin.a.kamble at intel.com>
> ---
>  .../libxxf86dga-1.1.2_fix_for_x32.patch            |   30 ++++++++++++++++++++
>  .../recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb |    5 ++-
>  2 files changed, 34 insertions(+), 1 deletions(-)
>  create mode 100644 meta/recipes-graphics/xorg-lib/libxxf86dga/libxxf86dga-1.1.2_fix_for_x32.patch
>
> diff --git a/meta/recipes-graphics/xorg-lib/libxxf86dga/libxxf86dga-1.1.2_fix_for_x32.patch b/meta/recipes-graphics/xorg-lib/libxxf86dga/libxxf86dga-1.1.2_fix_for_x32.patch
> new file mode 100644
> index 0000000..30692ad
> --- /dev/null
> +++ b/meta/recipes-graphics/xorg-lib/libxxf86dga/libxxf86dga-1.1.2_fix_for_x32.patch
> @@ -0,0 +1,30 @@
> +Upstream-Status: pending
> +
> +Fix type conversion for x32. For x32 the off_t is 64bit and pointers are 32bit.
> +so the conversion of pointer to off_t was resulting into this error:
> +
> +| XF86DGA2.c:931:24: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> +| cc1: some warnings being treated as errors
> +|
> +| make[2]: *** [XF86DGA2.lo] Error 1
> +
> +Fixed it by typecasting pointer into unsigned long 1st and then again typecasting
> +unsigned long to off_t.

where is pointer here ?
http://cvsweb.xfree86.org/cvsweb/xc/lib/Xxf86dga/XF86DGA2.c?rev=1.30&content-type=text/vnd.viewcvs-markup
shows that base is of type mmapOffset which is

#if !defined(_LP64) && defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
typedef unsigned long long mmapOffset;
#else
typedef unsigned long      mmapOffset;
#endif

and off_t is typedef'ed to long int

> +
> +Signed-Off-by: Nitin A Kamble <nitin.a.kamble at intel.com>
> +2012/01/04
> +
> +
> +Index: libXxf86dga-1.1.2/src/XF86DGA2.c
> +===================================================================
> +--- libXxf86dga-1.1.2.orig/src/XF86DGA2.c      2010-10-06 21:17:11.000000000 -0700
> ++++ libXxf86dga-1.1.2/src/XF86DGA2.c   2012-01-04 14:21:36.275971172 -0800
> +@@ -928,7 +928,7 @@ DGAMapPhysical(
> +     if ((pMap->fd = open(name, O_RDWR)) < 0)
> +       return False;
> +     pMap->virtual = mmap(NULL, size, PROT_READ | PROT_WRITE,
> +-                      MAP_FILE | MAP_SHARED, pMap->fd, (off_t)base);
> ++                      MAP_FILE | MAP_SHARED, pMap->fd, (off_t)(unsigned long)base);
> +     if (pMap->virtual == (void *)-1)
> +       return False;
> +     mprotect(pMap->virtual, size, PROT_READ | PROT_WRITE);
> diff --git a/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb b/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb
> index 8e777c3..9a1c96f 100644
> --- a/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb
> +++ b/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.2.bb
> @@ -8,7 +8,10 @@ allows relative mouse reporting, et al.  It is mainly used by games and \
>  emulators for games."
>
>  DEPENDS += "libxext xf86dgaproto"
> -PR = "r1"
> +PR = "r2"
> +
> +SRC_URI += "file://libxxf86dga-1.1.2_fix_for_x32.patch"
> +
>  PE = "1"
>
>  XORG_PN = "libXxf86dga"
> --
> 1.7.6.4
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core




More information about the Openembedded-core mailing list