[ARC] 24 bit reloc and overflow detection fix.
bfd/ 2016-04-05 Cupertino Miranda <cmiranda@synopsys.com> * elf32-arc.c (name_for_global_symbol): Changed assert. (get_replace_function): Created.: (struct arc_relocation_data): Changed to signed types. (defines S, L, P, PDATA): Casted to signed type. (defines SECTSTART, _SDA_BASE_, TLS_REL): Likewise. (PRINT_DEBUG_RELOC_INFO_BEFORE): Changed. (arc_do_relocation): Changed. include/ 2016-04-05 Cupertino Miranda <cmiranda@synopsys.com> * opcode/arc-func.h (replace_bits24): Changed. (replace_bits24_be): Created.
This commit is contained in:
parent
589a7d8830
commit
094fb06395
4 changed files with 80 additions and 30 deletions
|
@ -65,6 +65,21 @@ replace_bits16 (unsigned insn, int value ATTRIBUTE_UNUSED)
|
|||
#define REPLACE_bits24
|
||||
ATTRIBUTE_UNUSED static unsigned
|
||||
replace_bits24 (unsigned insn, int value ATTRIBUTE_UNUSED)
|
||||
{
|
||||
insn = insn & ~0xffffff;
|
||||
insn |= ((value >> 0) & 0xffffff) << 0;
|
||||
|
||||
return insn;
|
||||
}
|
||||
|
||||
#endif /* REPLACE_bits24 */
|
||||
|
||||
/* Special 24 bit replace for big endian. */
|
||||
/* mask = 111111111111111111111111. */
|
||||
#ifndef REPLACE_bits24_be
|
||||
#define REPLACE_bits24_be
|
||||
ATTRIBUTE_UNUSED static unsigned
|
||||
replace_bits24_be (unsigned insn, int value ATTRIBUTE_UNUSED)
|
||||
{
|
||||
insn = insn & ~0xffffff00;
|
||||
insn |= ((value >> 0) & 0xffffff) << 8;
|
||||
|
@ -72,7 +87,7 @@ replace_bits24 (unsigned insn, int value ATTRIBUTE_UNUSED)
|
|||
return insn;
|
||||
}
|
||||
|
||||
#endif /* REPLACE_bits24 */
|
||||
#endif /* REPLACE_bits24_be */
|
||||
|
||||
/* mask = 11111111111111111111111111111111. */
|
||||
#ifndef REPLACE_word32
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue