+2015-09-23 Nick Clifton <nickc@redhat.com>
+
+ * bout.c (b_out_slurp_reloc_table): Cast constant to unsigned in
+ order to avoid problems with left shifting negative values.
+ (abs32code): Likewise.
+ * mach-o.c (FILE_ALIGN): Likewise.
+ * coff-rs6000.c (xcoff_debug_sections): Delete unused static
+ array.
+ * elf32-visium.c (visium_reloc_map): Likewise.
+ * elf32-arm.c (elf32_arm_final_link_relocate): Remove useless
+ calls to abs function.
+ * elf32-frv.c (_frvfdpic_relax_tls_entries): Likewise.
+ * elf32-score.c (score_elf_final_link_relocate): Likewise.
+ * elf32-score7.c (score_elf_final_link_relocate): Likewise.
+ * elf32-i860.c (i860_howto_pc26_reloc): Use multiplication instead
+ of shifting to create a negative mask.
+ * elf32-msp430.c (elf_backend_special_sections): Define.
+ * elfxx-mips.c (got_ofst_reloc_p): Delete unused function.
+ (got_hi16_reloc_p): Delete unused function.
+ * ppcboot.c (ppcboot_bfd_print_private_bfd_data): Fix test of
+ partition name.
+
2015-09-23 Nick Clifton <nickc@redhat.com>
PR binutils/15835
/* Sign-extend symnum from 24 bits to whatever host uses. */
s = symnum;
if (s & (1 << 23))
- s |= (~0) << 24;
+ s |= (~0U) << 24;
cache_ptr->sym_ptr_ptr = (asymbol **)NULL;
switch (s)
jump we were going to. */
gap = value - (dot - shrink);
- if (-1 << 23 < (long)gap && (long)gap < 1 << 23)
+ if ((long)(-1UL << 23) < (long)gap && (long)gap < 1L << 23)
{
/* Change the reloc type from 32bitcode possible 24, to 24bit
possible 32. */
{
return FALSE;
}
-
-static const struct dwarf_debug_section xcoff_debug_sections[] =
-{
- { ".dwabrev", NULL },
- { ".dwarnge", NULL },
- { NULL, NULL }, /* .debug_frame */
- { ".dwinfo", NULL },
- { ".dwline", NULL },
- { NULL, NULL }, /* .debug_loc */
- { NULL, NULL }, /* .debug_macinfo */
- { NULL, NULL }, /* .debug_macro */
- { ".dwpbnms", NULL },
- { ".dwpbtyp", NULL },
- { ".dwrnges", NULL },
- { NULL, NULL }, /* .debug_static_func */
- { NULL, NULL }, /* .debug_static_vars */
- { ".dwstr", NULL },
- { NULL, NULL }, /* .debug_types */
- /* GNU DWARF 1 extensions */
- { NULL, NULL }, /* .debug_sfnames */
- { NULL, NULL }, /* .debug_srcinfo */
- /* SGI/MIPS DWARF 2 extensions */
- { NULL, NULL }, /* .debug_funcnames */
- { NULL, NULL }, /* .debug_typenames */
- { NULL, NULL }, /* .debug_varnames */
- { NULL, NULL }, /* .debug_weaknames */
- { NULL, NULL },
-};
\f
void
_bfd_xcoff_swap_sym_in (bfd *abfd, void * ext1, void * in1)
+ input_section->output_offset
+ rel->r_offset);
- value = abs (relocation);
+ value = relocation;
if (value >= 0x1000)
return bfd_reloc_overflow;
+ input_section->output_offset
+ rel->r_offset);
- value = abs (relocation);
+ value = relocation;
/* We do not check for overflow of this reloc. Although strictly
speaking this is incorrect, it appears to be necessary in order
+ input_section->output_offset
+ rel->r_offset);
- value = abs (relocation);
+ value = relocation;
if (value >= 0x1000)
return bfd_reloc_overflow;
/* Calculate the value of the relevant G_n, in encoded
constant-with-rotation format. */
- g_n = calculate_group_reloc_mask (abs (signed_value), group,
- &residual);
+ g_n = calculate_group_reloc_mask (signed_value < 0 ? - signed_value : signed_value,
+ group, &residual);
/* Check for overflow if required. */
if ((r_type == R_ARM_ALU_PC_G0
(*_bfd_error_handler)
(_("%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s"),
input_bfd, input_section,
- (long) rel->r_offset, abs (signed_value), howto->name);
+ (long) rel->r_offset, signed_value < 0 ? - signed_value : signed_value,
+ howto->name);
return bfd_reloc_overflow;
}
/* Calculate the value of the relevant G_{n-1} to obtain
the residual at that stage. */
- calculate_group_reloc_mask (abs (signed_value), group - 1, &residual);
+ calculate_group_reloc_mask (signed_value < 0 ? - signed_value : signed_value,
+ group - 1, &residual);
/* Check for overflow. */
if (residual >= 0x1000)
{
(*_bfd_error_handler)
(_("%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s"),
- input_bfd, input_section,
- (long) rel->r_offset, abs (signed_value), howto->name);
+ input_bfd, input_section,
+ (long) rel->r_offset, labs (signed_value), howto->name);
return bfd_reloc_overflow;
}
/* Calculate the value of the relevant G_{n-1} to obtain
the residual at that stage. */
- calculate_group_reloc_mask (abs (signed_value), group - 1, &residual);
+ calculate_group_reloc_mask (signed_value < 0 ? - signed_value : signed_value,
+ group - 1, &residual);
/* Check for overflow. */
if (residual >= 0x100)
{
(*_bfd_error_handler)
(_("%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s"),
- input_bfd, input_section,
- (long) rel->r_offset, abs (signed_value), howto->name);
+ input_bfd, input_section,
+ (long) rel->r_offset, labs (signed_value), howto->name);
return bfd_reloc_overflow;
}
/* Calculate the value of the relevant G_{n-1} to obtain
the residual at that stage. */
- calculate_group_reloc_mask (abs (signed_value), group - 1, &residual);
+ calculate_group_reloc_mask (signed_value < 0 ? - signed_value : signed_value,
+ group - 1, &residual);
/* Check for overflow. (The absolute value to go in the place must be
divisible by four and, after having been divided by four, must
(*_bfd_error_handler)
(_("%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s"),
input_bfd, input_section,
- (long) rel->r_offset, abs (signed_value), howto->name);
+ (long) rel->r_offset, labs (signed_value), howto->name);
return bfd_reloc_overflow;
}
+ 32768) < (bfd_vma)65536))
|| (entry->symndx != -1
&& (elf_hash_table (dinfo->info)->tls_sec->size
- + abs (entry->addend) < 32768 + FRVFDPIC_TLS_BIAS))))
+ + entry->addend < 32768 + FRVFDPIC_TLS_BIAS))))
{
if (! changed)
{
/* Check for target out of range. */
if ((bfd_signed_vma)relocation > (0x3ffffff << 2)
- || (bfd_signed_vma)relocation < (-0x4000000 << 2))
+ || (bfd_signed_vma)relocation < (-0x4000000 * 4))
return bfd_reloc_outofrange;
addr = (bfd_byte *) data + reloc_entry->address;
/* Check for target out of range. */
if ((bfd_signed_vma)relocation > (0x7fff << 2)
- || (bfd_signed_vma)relocation < (-0x8000 << 2))
+ || (bfd_signed_vma)relocation < (-0x8000 * 4))
return bfd_reloc_outofrange;
addr = (bfd_byte *) data + reloc_entry->address;
{ NULL, 0, 0, 0, 0 }
};
+#undef elf_backend_special_sections
+#define elf_backend_special_sections msp430_ti_elf_special_sections
+
#include "elf32-target.h"
if ((offset & 0x1000000) != 0)
offset |= 0xfe000000;
value += offset;
- abs_value = abs (value - rel_addr);
+ abs_value = value - rel_addr;
if ((abs_value & 0xfe000000) != 0)
return bfd_reloc_overflow;
addend = (addend & ~howto->src_mask)
if ((offset & 0x800) != 0) /* Offset is negative. */
offset |= 0xfffff000;
value += offset;
- abs_value = abs (value - rel_addr);
+ abs_value = value - rel_addr;
if ((abs_value & 0xfffff000) != 0)
return bfd_reloc_overflow;
addend = (addend & ~howto->src_mask) | (value & howto->src_mask);
if ((offset & 0x1000000) != 0)
offset |= 0xfe000000;
value += offset;
- abs_value = abs (value - rel_addr);
+ abs_value = value - rel_addr;
if ((abs_value & 0xfe000000) != 0)
return bfd_reloc_overflow;
addend = (addend & ~howto->src_mask)
if ((offset & 0x800) != 0) /* Offset is negative. */
offset |= 0xfffff000;
value += offset;
- abs_value = abs (value - rel_addr);
+ abs_value = value - rel_addr;
if ((abs_value & 0xfffff000) != 0)
return bfd_reloc_overflow;
addend = (addend & ~howto->src_mask) | (value & howto->src_mask);
0, /* dst_mask */
FALSE); /* pcrel_offset */
-/* Map BFD reloc types to VISIUM ELF reloc types. */
-struct visium_reloc_map
-{
- bfd_reloc_code_real_type bfd_reloc_val;
- unsigned int visium_reloc_val;
-};
-
-static const struct visium_reloc_map visium_reloc_map[] = {
- {BFD_RELOC_NONE, R_VISIUM_NONE},
- {BFD_RELOC_8, R_VISIUM_8},
- {BFD_RELOC_16, R_VISIUM_16},
- {BFD_RELOC_32, R_VISIUM_32},
- {BFD_RELOC_8_PCREL, R_VISIUM_8_PCREL},
- {BFD_RELOC_16_PCREL, R_VISIUM_16_PCREL},
- {BFD_RELOC_32_PCREL, R_VISIUM_32_PCREL},
- {BFD_RELOC_VISIUM_REL16, R_VISIUM_PC16},
- {BFD_RELOC_VISIUM_HI16, R_VISIUM_HI16},
- {BFD_RELOC_VISIUM_LO16, R_VISIUM_LO16},
- {BFD_RELOC_VISIUM_IM16, R_VISIUM_IM16},
- {BFD_RELOC_VISIUM_HI16_PCREL, R_VISIUM_HI16_PCREL},
- {BFD_RELOC_VISIUM_LO16_PCREL, R_VISIUM_LO16_PCREL},
- {BFD_RELOC_VISIUM_IM16_PCREL, R_VISIUM_IM16_PCREL},
- {BFD_RELOC_VTABLE_INHERIT, R_VISIUM_GNU_VTINHERIT},
- {BFD_RELOC_VTABLE_ENTRY, R_VISIUM_GNU_VTENTRY},
-};
-
/* Return the parity bit for INSN shifted to its final position. */
static bfd_vma
return r_type == R_MIPS_GOT_PAGE || r_type == R_MICROMIPS_GOT_PAGE;
}
-static inline bfd_boolean
-got_ofst_reloc_p (unsigned int r_type)
-{
- return r_type == R_MIPS_GOT_OFST || r_type == R_MICROMIPS_GOT_OFST;
-}
-
-static inline bfd_boolean
-got_hi16_reloc_p (unsigned int r_type)
-{
- return r_type == R_MIPS_GOT_HI16 || r_type == R_MICROMIPS_GOT_HI16;
-}
-
static inline bfd_boolean
got_lo16_reloc_p (unsigned int r_type)
{
#define bfd_mach_o_mkobject bfd_mach_o_gen_mkobject
#define FILE_ALIGN(off, algn) \
- (((off) + ((file_ptr) 1 << (algn)) - 1) & ((file_ptr) -1 << (algn)))
+ (((off) + ((file_ptr) 1 << (algn)) - 1) & ((file_ptr) -1U << (algn)))
static bfd_boolean
bfd_mach_o_read_dyld_content (bfd *abfd, bfd_mach_o_dyld_info_command *cmd);
if (tdata->header.os_id)
fprintf (f, "OS_ID = 0x%.2x\n", tdata->header.os_id);
- if (tdata->header.partition_name)
+ if (tdata->header.partition_name[0])
fprintf (f, _("Partition name = \"%s\"\n"), tdata->header.partition_name);
for (i = 0; i < 4; i++)
+2015-09-23 Nick Clifton <nickc@redhat.com>
+
+ * config/tc-ppc.c (insn_validate): Cast PPC_OPSHIFT_INV to an int.
+
2015-09-22 Nick Clifton <nickc@redhat.com>
* config/tc-rx.c (nop_7): Recode using MAX.
else
{
const struct powerpc_operand *operand = &powerpc_operands[*o];
- if (operand->shift != PPC_OPSHIFT_INV)
+ if (operand->shift != (int) PPC_OPSHIFT_INV)
{
unsigned long mask;
+2015-09-23 Nick Clifton <nickc@redhat.com>
+
+ * ppc.h (PPC_OPSHIFT_INV): Use an unsigned constant when left
+ shifting.
+
2015-09-22 Nick Clifton <nickc@redhat.com>
* rx.h (enum RX_Size): Add RX_Bad_Size entry.
/* Use with the shift field of a struct powerpc_operand to indicate
that BITM and SHIFT cannot be used to determine where the operand
goes in the insn. */
-#define PPC_OPSHIFT_INV (-1 << 31)
+#define PPC_OPSHIFT_INV (-1U << 31)
/* Values defined for the flags field of a struct powerpc_operand. */
+2015-09-23 Nick Clifton <nickc@redhat.com>
+
+ * emultempl/elf32.em (ehdr_start_empty): New static variable.
+ (before_allocation): Use it to initialise ehdr_start_save.
+ * emultempl/pe.em (write_build_id): Remove useless double
+ parenthesis.
+ * emultempl/pep.em (write_build_id): Likewise.
+
2015-09-22 H.J. Lu <hongjiu.lu@intel.com>
* emultempl/alphaelf.em (alpha_after_parse): Call
}
}
+#if defined(__GNUC__) && GCC_VERSION < 4006
+ /* Work around a GCC uninitialized warning bug fixed in GCC 4.6. */
+static struct bfd_link_hash_entry ehdr_start_empty;
+#endif
+
/* This is called after the sections have been attached to output
sections, but before any sizes or addresses have been set. */
struct elf_link_hash_entry *ehdr_start = NULL;
#if defined(__GNUC__) && GCC_VERSION < 4006
/* Work around a GCC uninitialized warning bug fixed in GCC 4.6. */
- struct bfd_link_hash_entry ehdr_start_save = ehdr_start_save;
+ struct bfd_link_hash_entry ehdr_start_save = ehdr_start_empty;
#else
struct bfd_link_hash_entry ehdr_start_save;
#endif
struct bfd_link_order *l = NULL;
for (l = asec->map_head.link_order; l != NULL; l = l->next)
{
- if ((l->type == bfd_indirect_link_order))
+ if (l->type == bfd_indirect_link_order)
{
if (l->u.indirect.section == t->build_id.sec)
{
if (bfd_seek (abfd, asec->filepos + link_order->offset, SEEK_SET) != 0)
return 0;
- if ((bfd_bwrite (contents, size, abfd) != size))
+ if (bfd_bwrite (contents, size, abfd) != size)
return 0;
/* Construct the CodeView record. */
struct bfd_link_order *l = NULL;
for (l = asec->map_head.link_order; l != NULL; l = l->next)
{
- if ((l->type == bfd_indirect_link_order))
+ if (l->type == bfd_indirect_link_order)
{
if (l->u.indirect.section == t->build_id.sec)
{
if (bfd_seek (abfd, asec->filepos + link_order->offset, SEEK_SET) != 0)
return 0;
- if ((bfd_bwrite (contents, size, abfd) != size))
+ if (bfd_bwrite (contents, size, abfd) != size)
return 0;
/* Construct the CodeView record. */
+2015-09-23 Nick Clifton <nickc@redhat.com>
+
+ * bfin-dis.c (fmtconst): Remove unnecessary call to the abs
+ function.
+ * tic30-dis.c (print_branch): Likewise.
+ * cgen-asm.c (cgen_parse_signed_integer): Cast integer to signed
+ value before left shifting.
+ * fr30-ibld.c (fr30_cgen_extract_operand): Likewise.
+ * hppa-dis.c (print_insn_hppa): Likewise.
+ * mips-dis.c (mips_cp0sel_names_mipsr5900): Delete unused static
+ array.
+ * msp430-dis.c (msp430_singleoperand): Likewise.
+ (msp430_doubleoperand): Likewise.
+ (print_insn_msp430): Likewise.
+ * nds32-asm.c (parse_operand): Likewise.
+ * sh-opc.h (MASK): Likewise.
+ * v850-dis.c (get_operand_value): Likewise.
+
2015-09-22 Nick Clifton <nickc@redhat.com>
* rx-decode.opc (bwl): Use RX_Bad_Size.
else
{
if (constant_formats[cf].issigned && x < 0)
- sprintf (buf, "-0x%x", abs (x));
+ sprintf (buf, "-0x%lx", (unsigned long)(- x));
else
sprintf (buf, "0x%lx", (unsigned long) x);
}
&& value > 0
&& (value & 0x80000000)
&& ((value >> 31) == 1))
- value |= -1 << 31;
+ value |= ((bfd_vma) -1) << 31;
*valuep = value;
}
{
long value;
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 4, 16, total_length, pc, & value);
- value = ((value) | (((-1) << (4))));
+ value = ((value) | (((-1UL) << (4))));
fields->f_m4 = value;
}
break;
int disp;
if (sign)
- disp = (-1 << 10) | imm10;
+ disp = (-1U << 10) | imm10;
else
disp = imm10;
int disp;
if (sign)
- disp = (-1 << 11) | imm11;
+ disp = (-1U << 11) | imm11;
else
disp = imm11;
"c0_taglo", "c0_taghi", "c0_errorepc", "$31"
};
-static const struct mips_cp0sel_name mips_cp0sel_names_mipsr5900[] =
-{
- { 24, 2, "c0_iab" },
- { 24, 3, "c0_iabm" },
- { 24, 4, "c0_dab" },
- { 24, 5, "c0_dabm" },
- { 24, 6, "c0_dvb" },
- { 24, 7, "c0_dvbm" },
- { 25, 1, "c0_perfcnt,1" },
- { 25, 2, "c0_perfcnt,2" }
-};
-
static const char * const mips_cp0_names_mips3264[32] =
{
"c0_index", "c0_random", "c0_entrylo0", "c0_entrylo1",
{
dst |= extended_dst << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
}
else if (dst & 0x8000)
- dst |= -1 << 16;
+ dst |= -1U << 16;
sprintf (op, "%d(r%d)", dst, regd);
}
}
{
dst |= extended_dst << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
sprintf (op, "#%d", dst);
if (dst > 9 || dst < 0)
sprintf (comm, "#0x%05x", dst);
{
dst |= extended_dst << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
}
else if (dst & 0x8000)
- dst |= -1 << 16;
+ dst |= -1U << 16;
sprintf (op, "%d(r%d)", dst, regd);
if (dst > 9 || dst < 0)
sprintf (comm, "%05x", dst);
{
dst |= extended_dst << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
sprintf (op1, "0x%05x", dst & 0xfffff);
sprintf (comm1, "PC rel. 0x%05lx",
(long)((addr + 2 + dst) & 0xfffff));
{
dst |= extended_dst << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
}
else if (dst & 0x8000)
- dst |= -1 << 16;
+ dst |= -1U << 16;
cmd_len += 4;
*cycles = 6;
sprintf (op1, "%d(r%d)", dst, regd);
{
dst |= extended_src << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
sprintf (op1, "#%d", dst);
if (dst > 9 || dst < 0)
sprintf (comm1, "0x%05x", dst & 0xfffff);
{
dst |= extended_src << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
sprintf (op1, "0x%05x", dst & 0xfffff);
sprintf (comm1, "PC rel. 0x%05lx",
(long) ((addr + 2 + dst) & 0xfffff));
{
dst |= extended_src << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
}
else if (dst & 0x8000)
- dst |= -1 << 16;
+ dst |= -1U << 16;
sprintf (op1, "%d(r%d)", dst, regs);
if (dst > 9 || dst < -9)
sprintf (comm1, "0x%05x", dst);
{
dst |= extended_dst << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
sprintf (op2, "0x%05x", dst & 0xfffff);
sprintf (comm2, "PC rel. 0x%05lx",
(long)((addr + cmd_len + dst) & 0xfffff));
dst = msp430dis_opcode (addr + cmd_len, info);
cmd_len += 2;
if (dst & 0x8000)
- dst |= -1 << 16;
+ dst |= -1U << 16;
if (dst > 9 || dst < 0)
sprintf (comm2, "0x%04x", PS (dst));
if (extension_word)
{
dst |= extended_dst << 16;
if (dst & 0x80000)
- dst |= -1 << 20;
+ dst |= -1U << 20;
if (dst > 9 || dst < 0)
sprintf (comm2, "0x%05x", dst & 0xfffff);
}
dst = msp430dis_opcode (addr + 2, info);
cmd_len += 2;
if (dst & 0x8000)
- dst |= -1 << 16;
+ dst |= -1U << 16;
sprintf (op1, "%d(r%d)", dst, regs);
}
}
reg = n;
n = msp430dis_opcode (addr + 2, info);
if (n & 0x8000)
- n |= -1 << 16;
+ n |= -1U << 16;
sprintf (op1, "%d(r%d)", n, reg);
if (n > 9 || n < 0)
{
sprintf (op1, "r%d", n);
n = msp430dis_opcode (addr + 2, info);
if (n & 0x8000)
- n |= -1 << 16;
+ n |= -1U << 16;
sprintf (op2, "%d(r%d)", n, reg);
if (n > 9 || n < 0)
{
n <<= 16;
n |= msp430dis_opcode (addr + 2, info);
if (n & 0x80000)
- n |= -1 << 20;
+ n |= -1U << 20;
sprintf (op1, "#%d", n);
if (n > 9 || n < 0)
sprintf (comm1, "0x%05x", n);
{
/* Sign-ext the value. */
if (((value >> 32) == 0) && (value & 0x80000000))
- value |= (int64_t) -1 << 31;
+ value |= (int64_t) -1U << 31;
/* Shift the value to positive domain. */
sh_dsp_reg_nums;
/* Return a mask with bits LO to HI (inclusive) set. */
-#define MASK(LO,HI) ( LO < 1 ? ((1 << (HI + 1)) - 1) \
- : HI > 30 ? (-1 << LO) \
- : LO == HI ? (1 << LO) \
- : (((1 << (HI + 1)) - 1) & (-1 << LO)))
+#define MASK(LO,HI) ( LO < 1 ? ((1U << (HI + 1)) - 1) \
+ : HI > 30 ? (-1U << LO) \
+ : LO == HI ? (1U << LO) \
+ : (((1U << (HI + 1)) - 1) & (-1U << LO)))
#define arch_sh1_base (1 << 0)
#define arch_sh2_base (1 << 1)
if (address == 0)
info->fprintf_func (info->stream, " <%s>", sym->name);
else
- info->fprintf_func (info->stream, " <%s %c %d>", sym->name,
+ info->fprintf_func (info->stream, " <%s %c %lu>", sym->name,
((short) address < 0) ? '-' : '+',
- abs (address));
+ address);
}
return 1;
}
if (operand->flags & V850E_IMMEDIATE16HI)
value <<= 16;
else if (value & 0x8000)
- value |= (-1L << 16);
+ value |= (-1UL << 16);
return value;
}