|
|
|
@ -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 |
|
|
|
|