From: Andreas Schwab Date: Sun, 24 Aug 2008 21:43:00 +0000 (+0000) Subject: (_bfd_elf_write_section_eh_frame): Do proper X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9c47c4c17805edcd042a74bbd162cccc42c2dab1;p=binutils-gdb.git (_bfd_elf_write_section_eh_frame): Do proper extension when calculating difference of offsets. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index bf9d5802284..5c34381195a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2008-08-24 Andreas Schwab + + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Do proper + extension when calculating difference of offsets. + 2008-08-24 Alan Modra * configure.in: Update a number of obsolete autoconf macros. diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c index 9b88499e486..7151a397635 100644 --- a/bfd/elf-eh-frame.c +++ b/bfd/elf-eh-frame.c @@ -1445,7 +1445,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, val = read_value (abfd, buf, per_width, get_DW_EH_PE_signed (per_encoding)); - val += ent->offset - ent->new_offset; + val += (bfd_vma) ent->offset - ent->new_offset; val -= extra_string + extra_data; write_value (abfd, buf, val, per_width); action &= ~4; @@ -1504,7 +1504,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, } break; case DW_EH_PE_pcrel: - value += ent->offset - ent->new_offset; + value += (bfd_vma) ent->offset - ent->new_offset; address += (sec->output_section->vma + sec->output_offset + ent->offset + 8); @@ -1538,7 +1538,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, if (value) { if ((ent->lsda_encoding & 0xf0) == DW_EH_PE_pcrel) - value += ent->offset - ent->new_offset; + value += (bfd_vma) ent->offset - ent->new_offset; else if (cie->u.cie.make_lsda_relative) value -= (sec->output_section->vma + sec->output_offset @@ -1577,7 +1577,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, continue; if ((ent->fde_encoding & 0xf0) == DW_EH_PE_pcrel) - value += ent->offset + 8 - new_offset; + value += (bfd_vma) ent->offset + 8 - new_offset; if (ent->make_relative) value -= (sec->output_section->vma + sec->output_offset