svn commit: r211130 - head/libexec/rtld-elf/mips
Stefan Farfeleder
stefanf at FreeBSD.org
Tue Aug 10 06:28:37 UTC 2010
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:
> Fix compilation error for 64-bit little endian build:
> libexec/rtld-elf/mips/reloc.c:196: warning: right shift count >= width of type
>
> When the expression '(r_info) >> 32' was passed to bswap32() it was promptly
> changed to '(uint32_t)(r_info) >> 32' which is not what we intended.
Wouldn't it be better to fix the bswap32 macro instead?
> Modified:
> head/libexec/rtld-elf/mips/reloc.c
>
> Modified: head/libexec/rtld-elf/mips/reloc.c
> ==============================================================================
> --- head/libexec/rtld-elf/mips/reloc.c Mon Aug 9 23:32:37 2010 (r211129)
> +++ head/libexec/rtld-elf/mips/reloc.c Tue Aug 10 05:15:35 2010 (r211130)
> @@ -75,7 +75,7 @@ void _rtld_relocate_nonplt_self(Elf_Dyn
> * ELF64 MIPS encodes the relocs uniquely. The first 32-bits of info contain
> * the symbol index. The top 32-bits contain three relocation types encoded
> * in big-endian integer with first relocation in LSB. This means for little
> - * endian we have to byte swap that interger (r_type).
> + * endian we have to byte swap that integer (r_type).
> */
> #define Elf_Sxword Elf64_Sxword
> #define ELF_R_NXTTYPE_64_P(r_type) ((((r_type) >> 8) & 0xff) == R_TYPE(64))
> @@ -83,7 +83,7 @@ void _rtld_relocate_nonplt_self(Elf_Dyn
> #undef ELF_R_SYM
> #undef ELF_R_TYPE
> #define ELF_R_SYM(r_info) ((r_info) & 0xffffffff)
> -#define ELF_R_TYPE(r_info) bswap32((r_info) >> 32)
> +#define ELF_R_TYPE(r_info) bswap32(((r_info) >> 32))
> #endif
> #else
> #define ELF_R_NXTTYPE_64_P(r_type) (0)
>
More information about the svn-src-head
mailing list