2003-10-06 H.J. Lu <hongjiu.lu@intel.com>
* elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Pad the last CIE/FDE if needed.
This commit is contained in:
parent
4efdaa0dd7
commit
10cf14ea3d
2 changed files with 37 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2003-10-06 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Pad the
|
||||||
|
last CIE/FDE if needed.
|
||||||
|
|
||||||
2003-10-06 Matt Thomas <matt@3am-software.com>
|
2003-10-06 Matt Thomas <matt@3am-software.com>
|
||||||
|
|
||||||
config.bfd: Move the hppa*-*-netbsd* case to the hppa*-*-linux* case.
|
config.bfd: Move the hppa*-*-netbsd* case to the hppa*-*-linux* case.
|
||||||
|
|
|
@ -1026,6 +1026,38 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
|
||||||
and 3xDW_CFA_nop as pad */
|
and 3xDW_CFA_nop as pad */
|
||||||
p += 16;
|
p += 16;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
unsigned int alignment = 1 << sec->alignment_power;
|
||||||
|
unsigned int pad = sec->_cooked_size % alignment;
|
||||||
|
|
||||||
|
if (pad)
|
||||||
|
{
|
||||||
|
/* Find the last CIE/FDE. */
|
||||||
|
for (i = sec_info->count - 1; i > 0; i--)
|
||||||
|
if (! sec_info->entry[i].removed)
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* The size of the last CIE/FDE must be at least 4. */
|
||||||
|
if (sec_info->entry[i].removed
|
||||||
|
|| sec_info->entry[i].size < 4)
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
pad = alignment - pad;
|
||||||
|
|
||||||
|
buf = contents + sec_info->entry[i].new_offset;
|
||||||
|
|
||||||
|
/* Update length. */
|
||||||
|
sec_info->entry[i].size += pad;
|
||||||
|
bfd_put_32 (abfd, sec_info->entry[i].size - 4, buf);
|
||||||
|
|
||||||
|
/* Pad it with DW_CFA_nop */
|
||||||
|
memset (p, 0, pad);
|
||||||
|
p += pad;
|
||||||
|
|
||||||
|
sec->_cooked_size += pad;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BFD_ASSERT ((bfd_size_type) (p - contents) == sec->_cooked_size);
|
BFD_ASSERT ((bfd_size_type) (p - contents) == sec->_cooked_size);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue