Home | History | Annotate | Download | only in bfd

Lines Matching refs:ebb

6191   bfd_boolean ends_section;	/* Is this the last ebb in a section?  */
6237 ebb_t ebb;
6277 init_ebb (ebb_t *ebb,
6286 memset (ebb, 0, sizeof (ebb_t));
6287 ebb->sec = sec;
6288 ebb->contents = contents;
6289 ebb->content_length = content_length;
6290 ebb->ptbl = prop_table;
6291 ebb->pte_count = ptblsize;
6292 ebb->relocs = internal_relocs;
6293 ebb->reloc_count = reloc_count;
6294 ebb->start_offset = 0;
6295 ebb->end_offset = ebb->content_length - 1;
6296 ebb->start_ptbl_idx = 0;
6297 ebb->end_ptbl_idx = ptblsize;
6298 ebb->start_reloc_idx = 0;
6299 ebb->end_reloc_idx = reloc_count;
6303 /* Extend the ebb to all decodable contiguous sections. The algorithm
6315 extend_ebb_bounds (ebb_t *ebb)
6317 if (!extend_ebb_bounds_forward (ebb))
6319 if (!extend_ebb_bounds_backward (ebb))
6326 extend_ebb_bounds_forward (ebb_t *ebb)
6330 the_entry = &ebb->ptbl[ebb
6341 entry_end = the_entry->address - ebb->sec->vma + the_entry->size;
6343 insn_block_decodable_len (ebb->contents, ebb->content_length,
6344 ebb->end_offset,
6345 entry_end - ebb->end_offset);
6346 if (insn_block_len != (entry_end - ebb->end_offset))
6350 ebb->sec->owner, ebb->sec, ebb->end_offset + insn_block_len);
6353 ebb->end_offset += insn_block_len;
6355 if (ebb->end_offset == ebb->sec->size)
6356 ebb->ends_section = TRUE;
6359 while (ebb->end_reloc_idx + 1 < ebb->reloc_count
6360 && (ebb->relocs[ebb->end_reloc_idx + 1].r_offset
6361 < ebb->end_offset))
6363 ebb->end_reloc_idx++;
6366 if (ebb->end_ptbl_idx + 1 == ebb->pte_count)
6369 new_entry = &ebb->ptbl[ebb->end_ptbl_idx + 1];
6379 ebb->end_ptbl_idx++;
6383 if (ebb->end_ptbl_idx + 1 == ebb->pte_count)
6385 if (ebb->end_offset == ebb->content_length)
6386 ebb->ends_section = TRUE;
6390 new_entry = &ebb->ptbl[ebb->end_ptbl_idx + 1];
6393 ebb->ends_unreachable = new_entry;
6402 extend_ebb_bounds_backward (ebb_t *ebb)
6406 the_entry = &ebb->ptbl[ebb->start_ptbl_idx];
6417 block_begin = the_entry->address - ebb->sec->vma;
6419 insn_block_decodable_len (ebb->contents, ebb->content_length,
6421 ebb->start_offset - block_begin);
6422 if (insn_block_len != ebb->start_offset - block_begin)
6426 ebb->sec->owner, ebb->sec, ebb->end_offset + insn_block_len);
6429 ebb->start_offset -= insn_block_len;
6432 while (ebb->start_reloc_idx > 0
6433 && (ebb->relocs[ebb->start_reloc_idx - 1].r_offset
6434 >= ebb->start_offset))
6436 ebb->start_reloc_idx--;
6439 if (ebb->start_ptbl_idx == 0)
6442 new_entry = &ebb->ptbl[ebb->start_ptbl_idx - 1];
6451 ebb->start_ptbl_idx--;
6759 extended basic block (ebb) containing an optimized longcall, it
7305 ebb_t *ebb;
7352 ebb = &ebb_table.ebb;
7353 init_ebb (ebb, sec, contents, sec_size, prop_table, ptblsize,
7355 ebb->start_offset = r_offset + simplify_size;
7356 ebb->end_offset = r_offset + simplify_size;
7357 ebb->start_ptbl_idx = ptbl_idx;
7358 ebb->end_ptbl_idx = ptbl_idx;
7359 ebb->start_reloc_idx = i;
7360 ebb->end_reloc_idx = i;
7367 if (!extend_ebb_bounds (ebb)
7381 i = ebb_table.ebb.end_reloc_idx;
7390 ebb.end_reloc_idx;
7433 const ebb_t *ebb = &ebb_table->ebb;
7434 unsigned rel_idx = ebb->start_reloc_idx;
7448 start_entry = &ebb->ptbl[ebb->start_ptbl_idx];
7449 end_entry = &ebb->ptbl[ebb->end_ptbl_idx];
7456 start_offset = entry->address - ebb->sec->vma;
7457 end_offset = entry->address + entry->size - ebb->sec->vma;
7460 start_offset = ebb->start_offset;
7462 end_offset = ebb->end_offset;
7465 if (offset == entry->address - ebb->sec->vma
7473 insn_len = insn_decode_len (ebb->contents, ebb->content_length,
7490 while (rel_idx < ebb->end_reloc_idx
7491 && (ebb->relocs[rel_idx].r_offset < offset
7492 || (ebb->relocs[rel_idx].r_offset == offset
7493 && (ELF32_R_TYPE (ebb->relocs[rel_idx].r_info)
7498 irel = &ebb->relocs[rel_idx];
7504 simplify_size = get_asm_simplify_size (ebb->contents,
7505 ebb->content_length,
7517 if (offset + MIN_INSN_LENGTH > ebb->content_length)
7519 xtensa_insnbuf_from_chars (isa, insnbuf, &ebb->contents[offset],
7520 ebb->content_length - offset);
7549 && ! prev_instr_is_a_loop (ebb->contents,
7550 ebb->content_length, offset))
7567 if (ebb->ends_unreachable)
7570 ta_fill, ebb->end_offset, 0, TRUE);
7578 ebb->sec->owner, ebb->sec, offset);
7584 transformations possible in an EBB, compute the appropriate actions
7588 as possible so that the end of the EBB has the same alignment
7590 fill space at the end of the EBB, and finally widenings. If that
7598 of the EBB prevents it. */
7606 ebb_t *ebb = &ebb_table->ebb;
7628 int align = (1 << ebb_table->ebb.sec->alignment_power);
7651 if (seg_idx_end == ebb_table->action_count && !ebb->ends_unreachable)
7734 if (ebb_table->ebb.ends_section || ebb_table->ebb.ends_unreachable)
7753 (ebb_table->ebb.contents,
7754 ebb_table->ebb.content_length,
7763 if (!check_loop_aligned (ebb_table->ebb.contents,
7764 ebb_table->ebb.content_length,
7774 && ebb_table->ebb.sec->alignment_power == 2)
7784 && ebb_table->ebb.sec->alignment_power == 2)
7816 if ((removed_bytes % (1 << ebb_table->ebb.sec->alignment_power)) != 0
7817 && ebb->ends_unreachable)
7826 BFD_ASSERT (ebb->ends_unreachable->flags & XTENSA_PROP_UNREACHABLE);
7828 extra_space = compute_fill_extra_space (ebb->ends_unreachable);
7830 br = br & ((1 << ebb->sec->alignment_power ) - 1);
8748 ebb_t *ebb;
8786 ebb = &ebb_table.ebb;
8787 init_ebb (ebb, target_sec_cache->sec, target_sec_cache->contents,