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

Kamble, Nitin A nitin.a.kamble at intel.com
Fri Jan 6 18:27:47 UTC 2012



> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org
> [mailto:openembedded-core-bounces at lists.openembedded.org] On Behalf Of
> Khem Raj
> Sent: Thursday, January 05, 2012 12:49 PM
> To: Patches and discussions about the oe-core layer
> Subject: Re: [OE-core] [PATCH 3/4] libxxf86dga: fix compilation with
> x32 toolchain
> 
> 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&co
> ntent-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
> 
Khem,
base is char * as seen in the changed file src/XF86DGA2.c:
static Bool
DGAMapPhysical(
   int screen,
   char *name,                  /* optional device name */
   unsigned char* base,         /* physical memory */
   CARD32 size,                 /* size */
   CARD32 offset,               /* optional offset */
   CARD32 extra,                /* optional extra data */
   DGAMapPtr pMap
) {

Nitin

> > +
> > +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
> 
> _______________________________________________
> 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