Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Aug 2010 12:55:38 +0530
From:      "Jayachandran C." <c.jayachandran@gmail.com>
To:        Neel Natu <neelnatu@gmail.com>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, Stefan Farfeleder <stefanf@freebsd.org>, src-committers@freebsd.org
Subject:   Re: svn commit: r211130 - head/libexec/rtld-elf/mips
Message-ID:  <AANLkTinkTQ25Dv6giE2HnWFrq7fuPReYFmwVb5oEy92s@mail.gmail.com>
In-Reply-To: <AANLkTimwoLfMXrNb7NmG%2BHWonug1-asmNdAE9AcSNHkK@mail.gmail.com>
References:  <201008100515.o7A5FZZF017552@svn.freebsd.org> <20100810062829.GA1737@mole.fafoe.narf.at> <AANLkTimwoLfMXrNb7NmG%2BHWonug1-asmNdAE9AcSNHkK@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Aug 10, 2010 at 12:12 PM, Neel Natu <neelnatu@gmail.com> wrote:
> Hi Stefan,
>
> On Mon, Aug 9, 2010 at 11:28 PM, Stefan Farfeleder <stefanf@freebsd.org> =
wrote:
>> On Tue, Aug 10, 2010 at 05:15:35AM +0000, Neel Natu wrote:
>>> Author: neel
>>> Date: Tue Aug 10 05:15:35 2010
>>> New Revision: 211130
>>> URL: http://svn.freebsd.org/changeset/base/211130
>>>
>>> Log:
>>> =A0 Fix compilation error for 64-bit little endian build:
>>> =A0 libexec/rtld-elf/mips/reloc.c:196: warning: right shift count >=3D =
width of type
>>>
>>> =A0 When the expression '(r_info) >> 32' was passed to bswap32() it was=
 promptly
>>> =A0 changed to '(uint32_t)(r_info) >> 32' which is not what we intended=
.
>>
>> Wouldn't it be better to fix the bswap32 macro instead?
>>
>
> I think you are right. Can you take a look at the following patch instead=
?
>
> If I hear no objections, I will commit it tomorrow.
>
> Index: libexec/rtld-elf/mips/reloc.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- libexec/rtld-elf/mips/reloc.c =A0 =A0 =A0 (revision 211131)
> +++ libexec/rtld-elf/mips/reloc.c =A0 =A0 =A0 (working copy)
> @@ -83,7 +83,7 @@
> =A0#undef ELF_R_SYM
> =A0#undef ELF_R_TYPE
> =A0#define ELF_R_SYM(r_info) =A0 =A0 =A0 =A0 =A0 =A0 =A0((r_info) & 0xfff=
fffff)
> -#define ELF_R_TYPE(r_info) =A0 =A0 =A0 =A0 =A0 =A0 bswap32(((r_info) >> =
32))
> +#define ELF_R_TYPE(r_info) =A0 =A0 =A0 =A0 =A0 =A0 bswap32((r_info) >> 3=
2)
> =A0#endif
> =A0#else
> =A0#define =A0 =A0 =A0 =A0ELF_R_NXTTYPE_64_P(r_type) =A0 =A0 =A0(0)
> Index: sys/sys/endian.h
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- sys/sys/endian.h =A0 =A0(revision 211131)
> +++ sys/sys/endian.h =A0 =A0(working copy)
> @@ -56,9 +56,9 @@
> =A0/*
> =A0* General byte order swapping functions.
> =A0*/
> -#define =A0 =A0 =A0 =A0bswap16(x) =A0 =A0 =A0__bswap16(x)
> -#define =A0 =A0 =A0 =A0bswap32(x) =A0 =A0 =A0__bswap32(x)
> -#define =A0 =A0 =A0 =A0bswap64(x) =A0 =A0 =A0__bswap64(x)
> +#define =A0 =A0 =A0 =A0bswap16(x) =A0 =A0 =A0__bswap16((x))
> +#define =A0 =A0 =A0 =A0bswap32(x) =A0 =A0 =A0__bswap32((x))
> +#define =A0 =A0 =A0 =A0bswap64(x) =A0 =A0 =A0__bswap64((x))
>

I think there is a problem in  sys/mips/include/_endian.h
--
#define __bswap16(x)    (__uint16_t)(__is_constant(x) ?         \
        __bswap16_const((__uint16_t)x) :  __bswap16_var((__uint16_t)x))
#define __bswap32(x)    (__uint32_t)(__is_constant(x) ?         \
        __bswap32_const((__uint32_t)x) :  __bswap32_var((__uint32_t)x))
#define __bswap64(x)    (__uint64_t)(__is_constant(x) ?         \
        __bswap64_const((__uint64_t)x) :  __bswap64_var((__uint64_t)x))
--

I'm not sure why the cast is needed, but we should have a braces
around x, unless I'm completely mistaken.

JC.



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