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.
This commit is contained in:
parent
af7326d405
commit
8508c6bd40
@ -75,7 +75,7 @@ void _rtld_relocate_nonplt_self(Elf_Dyn *, Elf_Addr);
|
||||
* 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 *, Elf_Addr);
|
||||
#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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user