@@ -411,16 +411,18 @@ _bfd_elf_merge_section_sframe (bfd *abfd,
for (i = 0; i < num_fidx; i++)
{
unsigned int num_fres = 0;
- int32_t func_start_address;
+ int32_t func_start_addr;
bfd_vma address;
uint32_t func_size = 0;
unsigned char func_info = 0;
unsigned int r_offset = 0;
bool pltn_reloc_by_hand = false;
unsigned int pltn_r_offset = 0;
+ uint8_t rep_block_size = 0;
- if (!sframe_decoder_get_funcdesc (sfd_ctx, i, &num_fres, &func_size,
- &func_start_address, &func_info))
+ if (!sframe_decoder_get_funcdesc_v2 (sfd_ctx, i, &num_fres, &func_size,
+ &func_start_addr, &func_info,
+ &rep_block_size))
{
/* If function belongs to a deleted section, skip editing the
function descriptor entry. */
@@ -471,13 +473,13 @@ _bfd_elf_merge_section_sframe (bfd *abfd,
/* FIXME For testing only. Cleanup later. */
// address += (sec->output_section->vma);
- func_start_address = address;
+ func_start_addr = address;
}
/* Update the encoder context with updated content. */
- int err = sframe_encoder_add_funcdesc (sfe_ctx, func_start_address,
- func_size, func_info,
- num_fres);
+ int err = sframe_encoder_add_funcdesc_v2 (sfe_ctx, func_start_addr,
+ func_size, func_info,
+ rep_block_size, num_fres);
cur_fidx++;
BFD_ASSERT (!err);
}
@@ -1900,11 +1900,12 @@ _bfd_x86_elf_create_sframe_plt (bfd *output_bfd,
{
/* Add SFrame FDE for plt0, the function start address is updated later
at _bfd_elf_merge_section_sframe time. */
- sframe_encoder_add_funcdesc (*ectx,
- 0, /* func start addr. */
- plt0_entry_size,
- func_info,
- 0 /* Num FREs. */);
+ sframe_encoder_add_funcdesc_v2 (*ectx,
+ 0, /* func start addr. */
+ plt0_entry_size,
+ func_info,
+ 16,
+ 0 /* Num FREs. */);
sframe_frame_row_entry plt0_fre;
unsigned int num_plt0_fres = htab->sframe_plt->plt0_num_fres;
for (unsigned int j = 0; j < num_plt0_fres; j++)
@@ -1928,11 +1929,12 @@ _bfd_x86_elf_create_sframe_plt (bfd *output_bfd,
function start address = plt0_entry_size. As usual, this will be
updated later at _bfd_elf_merge_section_sframe, by when the
sections are relocated. */
- sframe_encoder_add_funcdesc (*ectx,
- plt0_entry_size, /* func start addr. */
- dpltsec->size - plt0_entry_size,
- func_info,
- 0 /* Num FREs. */);
+ sframe_encoder_add_funcdesc_v2 (*ectx,
+ plt0_entry_size, /* func start addr. */
+ dpltsec->size - plt0_entry_size,
+ func_info,
+ 16,
+ 0 /* Num FREs. */);
sframe_frame_row_entry pltn_fre;
/* Now add the FREs for pltn. Simply adding the two FREs suffices due