Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Mar 2005 17:36:28 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        freebsd-amd64@FreeBSD.org
Cc:        Stasys Smailys <ssmailys@komvista.lt>
Subject:   Re: Problem Report amd64/78848 "sis driver on FreeBSD 5.x does not work on amd64"
Message-ID:  <200503281736.28191.jhb@FreeBSD.org>
In-Reply-To: <42488129.80608@komvista.lt>
References:  <4247CAA3.90804@komvista.lt> <200503281351.13440.jhb@FreeBSD.org> <42488129.80608@komvista.lt>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 28 March 2005 05:11 pm, Stasys Smailys wrote:
> John Baldwin wrote:
> > On Monday 28 March 2005 04:13 am, Stasys Smailys wrote:
>
> [skipped]
>
> >>/usr/src/lib/libc/i386/sys/_amd64_get_fsbase.c:
> >>[...]
> >>ret = sysarch(_AMD64_GET_FSBASE, (void *)(&addr64));
> >>[...]
> >>
> >>/usr/src/lib/libc/i386/sys/_amd64_get_gsbase.c:
> >>[...]
> >>ret = sysarch(_AMD64_GET_GSBASE, (void *)(&addr64));
> >>[...]
> >
> > addr64 is supposed to be a pointer though, so it really is a pointer to a
> > pointer that's being passed (void **).
>
> Strange. If this is an expected behavior why then I couldn't "make
> buildworld" till I changed (void **) to (void *)?
>
> cc -m32 -march=athlon-xp -msse2 -mfancy-math-387 -DCOMPAT_32BIT
> -I/usr/obj/usr/src/lib32/usr/include  -L/usr/obj/usr/src/lib32/usr/lib32
>   -B/usr/obj/usr/src/lib32/usr/lib32 -O2 -frename-registers -pipe
> -I/usr/src/lib/libc/include -I/usr/src/lib/libc/../../include
> -I/usr/src/lib/libc/i386 -D__DBINTERFACE_PRIVATE
> -I/usr/src/lib/libc/../../contrib/gdtoa -DINET6
> -I/usr/obj/lib32/usr/src/lib/libc -DPOSIX_MISTAKE
> -I/usr/src/lib/libc/locale -DBROKEN_DES -DPORTMAP -DDES_BUILTIN
> -I/usr/src/lib/libc/rpc -DYP -DHESIOD -Wsystem-headers -Werror -Wall
> -Wno-format-y2k -Wno-uninitialized -c
> /usr/src/lib/libc/i386/sys/_amd64_get_fsbase.c
> /usr/src/lib/libc/i386/sys/_amd64_get_fsbase.c: In function
> `_amd64_get_fsbase':
> /usr/src/lib/libc/i386/sys/_amd64_get_fsbase.c:40: warning:
> dereferencing type-punned pointer will break strict-aliasing rules
> *** Error code 1
>
> Stop in /usr/src/lib/libc.
> *** Error code 1
>
> Stop in /usr/src/lib.
> *** Error code 1
>
> Stop in /usr/src.
> *** Error code 1
>
> Stop in /usr/src.
> *** Error code 1
>
> Stop in /usr/src.
> *** Error code 1
>
> Stop in /usr/src.
>
> Ah, I see now. Because of -Werror, right?

Yes.  It needs some set of gymnastics to get around that I suppose.  It 
probably has to do with the fact that this is -m32 code in which void * is a 
uint32_t, not a uint64_t.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503281736.28191.jhb>