Lines Matching refs:rel
4358 const Elf_Internal_Rela *rel)
4363 /* rel->r_addend is actually 64 bit, but who uses more than +/- 2^31
4366 BFD_ASSERT (((int) rel->r_addend & 0xffffffff) == rel->r_addend);
4378 (int) rel->r_addend & 0xffffffff);
4390 (int) ELF64_R_SYM (rel->r_info) & 0xffffffff,
4391 (int) rel->r_addend & 0xffffffff);
4405 const Elf_Internal_Rela *rel,
4428 stub_name = ppc_stub_name (id_sec, sym_sec, h, rel);
5209 const Elf_Internal_Rela *rel;
5246 for (rel = relocs; rel < rel_end; rel++)
5255 r_symndx = ELF64_R_SYM (rel->r_info);
5291 rel->r_addend, PLT_IFUNC);
5296 r_type = ELF64_R_TYPE (rel->r_info);
5301 if (rel != relocs
5302 && (ELF64_R_TYPE (rel[-1].r_info) == R_PPC64_TLSGD
5303 || ELF64_R_TYPE (rel[-1].r_info) == R_PPC64_TLSLD))
5314 && !update_plt_info (abfd, ifunc, rel->r_addend))
5388 if (ent->addend == rel->r_addend
5399 ent->addend = rel->r_addend;
5412 rel->r_addend, tls_type))
5419 if (!update_plt_info (abfd, &h->plt.plist, rel->r_addend))
5443 if (!update_plt_info (abfd, &h->plt.plist, rel->r_addend))
5490 abfd, sec, rel->r_offset,
5511 if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
5520 && !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
5561 if (!update_plt_info (abfd, &h->plt.plist, rel->r_addend))
5579 if (rel + 1 < rel_end
5580 && rel[1].r_info == ELF64_R_INFO (r_symndx, R_PPC64_DTPREL64)
5581 && rel[1].r_offset == rel->r_offset + 8)
5589 if (rel != relocs
5590 && rel[-1].r_info == ELF64_R_INFO (r_symndx, R_PPC64_DTPMOD64)
5591 && rel[-1].r_offset == rel->r_offset - 8)
5606 rel->r_addend, tls_type))
5626 BFD_ASSERT (rel->r_offset % 8 == 0);
5627 ppc64_sec->u.toc.symndx[rel->r_offset / 8] = r_symndx;
5628 ppc64_sec->u.toc.add[rel->r_offset / 8] = rel->r_addend;
5633 ppc64_sec->u.toc.symndx[rel->r_offset / 8 + 1] = -1;
5635 ppc64_sec->u.toc.symndx[rel->r_offset / 8 + 1] = -2;
5659 && rel + 1 < rel_end
5660 && ELF64_R_TYPE ((rel + 1)->r_info) == R_PPC64_TOC)
5683 opd_sym_map[rel->r_offset / 8] = s;
5701 && rel->r_addend == 0)
5705 if (!update_plt_info (abfd, &h->plt.plist, rel->r_addend))
6278 Elf_Internal_Rela *rel,
6295 r_type = ELF64_R_TYPE (rel->r_info);
6336 return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
6350 rsec = opd->func_sec[(sym->st_value + rel->r_addend) / 8];
6368 const Elf_Internal_Rela *rel, *relend;
6387 for (rel = relocs; rel < relend; rel++)
6394 r_symndx = ELF64_R_SYM (rel->r_info);
6395 r_type = ELF64_R_TYPE (rel->r_info);
6437 if (ent->addend == rel->r_addend)
6493 if (ent->addend == rel->r_addend
6518 if (ent->addend == rel->r_addend)
7284 /* Returns TLS_MASKP for the given REL symbol. Function return is 0 on
7293 const Elf_Internal_Rela *rel,
7303 r_symndx = ELF64_R_SYM (rel->r_info);
7321 off += rel->r_addend;
7615 Elf_Internal_Rela *relstart, *rel, *relend;
7655 for (rel = relstart; rel < relend; )
7666 if (rel->r_offset != offset
7667 || rel + 1 >= relend
7668 || (rel + 1)->r_offset != offset + 8)
7682 if ((r_type = ELF64_R_TYPE (rel->r_info)) != R_PPC64_ADDR64
7683 || (r_type = ELF64_R_TYPE ((rel + 1)->r_info)) != R_PPC64_TOC)
7692 r_symndx = ELF64_R_SYM (rel->r_info);
7724 rel += 2;
7725 if (rel == relend
7726 || (rel + 1 == relend && rel->r_offset == offset + 16))
7733 if (rel == relend && sec->size == offset + 16)
7741 if (rel->r_offset == offset + 24)
7743 else if (rel->r_offset != offset + 16)
7745 else if (rel + 1 < relend
7746 && ELF64_R_TYPE (rel[0].r_info) == R_PPC64_ADDR64
7747 && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOC)
7752 else if (rel + 2 < relend
7753 && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_ADDR64
7754 && ELF64_R_TYPE (rel[2].r_info) == R_PPC64_TOC)
7757 rel += 1;
7823 for (rel = relstart; rel < relend; rel++)
7830 r_symndx = ELF64_R_SYM (rel->r_info);
7835 if (rel->r_offset == offset)
7843 if ((rel + 2 == relend && sec->size == offset + 16)
7844 || (rel + 3 < relend
7845 && rel[2].r_offset == offset + 16
7846 && rel[3].r_offset == offset + 24
7847 && ELF64_R_TYPE (rel[2].r_info) == R_PPC64_ADDR64
7848 && ELF64_R_TYPE (rel[3].r_info) == R_PPC64_TOC))
7872 opd->adjust[rel->r_offset / 8] = -1;
7897 opd->adjust[rel->r_offset / 8]
7917 && !dec_dynrel_count (rel->r_info, sec, info,
7926 rel->r_offset += opd->adjust[(offset - opd_ent_size) / 8];
7927 if (write_rel != rel)
7928 memcpy (write_rel, rel, sizeof (*rel));
8101 /* Return TRUE iff REL is a branch reloc with a global symbol matching
8106 const Elf_Internal_Rela *rel,
8111 enum elf_ppc64_reloc_type r_type = ELF64_R_TYPE (rel->r_info);
8112 unsigned int r_symndx = ELF64_R_SYM (rel->r_info);
8167 Elf_Internal_Rela *relstart, *rel, *relend;
8180 for (rel = relstart; rel < relend; rel++)
8195 r_symndx = ELF64_R_SYM (rel->r_info);
8248 r_type = ELF64_R_TYPE (rel->r_info);
8265 ibfd, sec, rel->r_offset);
8349 value += rel->r_addend;
8375 || !toc_ref[(rel->r_offset + toc->output_offset) / 8])
8390 || !toc_ref[(rel->r_offset + toc->output_offset) / 8])
8392 if (rel + 1 < relend
8393 && (rel[1].r_info
8395 && rel[1].r_offset == rel->r_offset + 8)
8426 if (rel + 1 < relend
8427 && branch_reloc_hash_match (ibfd, rel + 1,
8439 rel, ibfd);
8462 ibfd, sec, rel->r_offset);
8512 if (ent->addend == rel->r_addend
8530 if (!dec_dynrel_count (rel->r_info, sec, info,
8536 if (!dec_dynrel_count ((rel + 1)->r_info, sec, info,
8664 Elf_Internal_Rela *relstart, *rel, *toc_relocs;
8701 for (rel = relstart; rel < relstart + sec->reloc_count; ++rel)
8710 r_type = ELF64_R_TYPE (rel->r_info);
8725 r_symndx = ELF64_R_SYM (rel->r_info);
8737 val += rel->r_addend;
8780 for (rel = toc_relocs; rel < toc_relocs + toc->reloc_count; ++rel)
8789 r_type = ELF64_R_TYPE (rel->r_info);
8793 r_symndx = ELF64_R_SYM (rel->r_info);
8817 val += rel->r_addend;
8839 skip[rel->r_offset >> 3]
8840 |= can_optimize | ((rel - toc_relocs) << 2);
8897 for (rel = relstart; rel < relstart + sec->reloc_count; ++rel)
8907 r_type = ELF64_R_TYPE (rel->r_info);
8937 bfd_vma off = rel->r_offset & ~3;
8959 ibfd, sec, rel->r_offset & ~3, str);
8979 r_symndx = ELF64_R_SYM (rel->r_info);
8994 val += rel->r_addend;
9010 off = rel->r_offset;
9033 else if ((used[rel->r_offset >> 3]
9034 || !(skip[rel->r_offset >> 3] & ref_from_discarded))
9118 for (rel = relstart; rel < relstart + sec->reloc_count; ++rel)
9126 r_type = ELF64_R_TYPE (rel->r_info);
9142 r_symndx = ELF64_R_SYM (rel->r_info);
9159 val += rel->r_addend;
9174 rel->r_info = ELF64_R_INFO (tsym, R_PPC64_TOC16_HA);
9178 rel->r_info = ELF64_R_INFO (tsym, R_PPC64_LO_DS_OPT);
9187 ibfd, sec, rel->r_offset,
9192 rel->r_addend = tocrel->r_addend;
9200 rel->r_addend -= skip[val >> 3];
9264 for (rel = toc_relocs; rel < toc_relocs + toc->reloc_count; ++rel)
9265 if ((skip[rel->r_offset >> 3]
9268 wrel->r_offset = rel->r_offset - skip[rel->r_offset >> 3];
9269 wrel->r_info = rel->r_info;
9270 wrel->r_addend = rel->r_addend;
9273 else if (!dec_dynrel_count (rel->r_info, toc, info,
9536 or certain REL relocs (see must_be_dyn_reloc) that can be
10067 const Elf_Internal_Rela *rel,
10091 if (ent->addend == rel->r_addend
10111 unsigned long r_symndx = ELF64_R_SYM (rel->r_info);
10118 if (ent->addend == rel->r_addend
10130 + rel->r_offset);
10133 r_type = ELF64_R_TYPE (rel->r_info);
11511 Elf_Internal_Rela *relstart, *rel;
11526 for (rel = relstart; rel < relstart + isec->reloc_count; ++rel)
11538 r_type = ELF64_R_TYPE (rel->r_info);
11545 r_symndx = ELF64_R_SYM (rel->r_info);
11586 sym_value += rel->r_addend;
11629 + rel->r_offset) + (1 << 25)
12952 actually uses Rel structures, the r_addend field will always be
12990 Elf_Internal_Rela *rel;
13022 rel = relocs;
13024 for (; rel < relend; rel++)
13048 const Elf_Internal_Rela orig_rel = *rel;
13052 r_type = ELF64_R_TYPE (rel->r_info);
13053 r_symndx = ELF64_R_SYM (rel->r_info);
13058 if (rel->r_info == ELF64_R_INFO (0, R_PPC64_TOC)
13059 && rel != relocs
13060 && ELF64_R_TYPE (rel[-1].r_info) == R_PPC64_ADDR64
13062 r_symndx = ELF64_R_SYM (rel[-1].r_info);
13080 relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
13084 long adjust = opd->adjust[(sym->st_value + rel->r_addend) / 8];
13095 rel->r_addend += adjust;
13105 RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
13143 rel, 1, relend,
13184 &local_syms, rel, input_bfd))
13214 input_bfd, input_section, rel->r_offset,
13238 insn = bfd_get_32 (output_bfd, contents + rel->r_offset - d_offset);
13242 bfd_put_32 (output_bfd, insn, contents + rel->r_offset - d_offset);
13244 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13257 &local_syms, rel, input_bfd);
13296 rel->r_offset -= d_offset;
13297 bfd_put_32 (output_bfd, NOP, contents + rel->r_offset);
13299 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13309 insn = bfd_get_32 (output_bfd, contents + rel->r_offset - d_offset);
13312 bfd_put_32 (output_bfd, insn, contents + rel->r_offset - d_offset);
13316 rel->r_info = ELF64_R_INFO (toc_symndx, r_type);
13317 rel->r_addend = toc_addend;
13320 rel--;
13324 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13332 insn = bfd_get_32 (output_bfd, contents + rel->r_offset);
13336 bfd_put_32 (output_bfd, insn, contents + rel->r_offset);
13339 rel->r_offset += d_offset;
13343 rel->r_info = ELF64_R_INFO (toc_symndx, r_type);
13344 rel->r_addend = toc_addend;
13347 rel--;
13351 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13372 rel->r_offset -= d_offset;
13373 bfd_put_32 (output_bfd, NOP, contents + rel->r_offset);
13376 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13402 && rel + 1 < relend
13403 && branch_reloc_hash_match (input_bfd, rel + 1,
13406 offset = rel[1].r_offset;
13411 contents + rel->r_offset - d_offset);
13416 rel[1].r_info = ELF64_R_INFO (STN_UNDEF, R_PPC64_NONE);
13422 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13441 rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
13443 rel->r_addend -= (local_syms[r_symndx].st_value
13450 rel->r_addend = toc_addend;
13453 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13456 rel[1].r_info = ELF64_R_INFO (r_symndx,
13458 rel[1].r_offset = offset + d_offset;
13459 rel[1].r_addend = rel->r_addend;
13463 contents + rel->r_offset - d_offset);
13471 rel[1].r_offset += 4;
13482 rel--;
13492 bfd_vma offset = rel->r_offset;
13506 rel->r_addend = toc_addend;
13509 rel->r_offset = offset + d_offset;
13512 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13514 BFD_ASSERT (offset == rel[1].r_offset);
13515 rel[1].r_info = ELF64_R_INFO (STN_UNDEF, R_PPC64_NONE);
13521 rel->r_offset += 4;
13528 rel--;
13538 bfd_vma offset = rel->r_offset;
13549 rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
13551 rel->r_addend -= (local_syms[r_symndx].st_value
13556 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13557 rel->r_offset = offset + d_offset;
13559 BFD_ASSERT (offset == rel[1].r_offset);
13560 rel[1].r_info = ELF64_R_INFO (STN_UNDEF, R_PPC64_NONE);
13567 rel->r_offset += 4;
13572 rel--;
13578 if (rel + 1 < relend
13579 && rel[1].r_info == ELF64_R_INFO (r_symndx, R_PPC64_DTPREL64)
13580 && rel[1].r_offset == rel->r_offset + 8)
13584 rel[1].r_info = ELF64_R_INFO (r_symndx, R_PPC64_NONE);
13589 bfd_put_64 (output_bfd, 1, contents + rel->r_offset);
13592 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13599 bfd_put_64 (output_bfd, 1, contents + rel->r_offset);
13601 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13610 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13625 && rel + 1 < relend
13626 && rel[1].r_info == ELF64_R_INFO (r_symndx, R_PPC64_REL16_LO)
13627 && rel[1].r_offset == rel->r_offset + 4
13628 && rel[1].r_addend == rel->r_addend + 4
13632 bfd_vma offset = rel->r_offset - d_offset;
13639 rel->r_info = ELF64_R_INFO (r_symndx, r_type);
13640 rel->r_addend -= d_offset;
13641 rel[1].r_info = ELF64_R_INFO (r_symndx, R_PPC64_ADDR16_LO);
13642 rel[1].r_addend -= d_offset + 4;
13652 addend = rel->r_addend;
13660 if (relocation + addend == (rel->r_offset
13664 &local_syms, rel, input_bfd))
13666 insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
13671 contents + rel->r_offset);
13685 contents + rel->r_offset) & ~(0x01 << 21);
13717 if (rel->r_offset + 8 <= input_section->size)
13722 contents + rel->r_offset);
13728 contents + rel->r_offset + 4);
13742 contents + rel->r_offset + 4);
13796 input_bfd, input_section, rel->r_offset, sym_name);
13801 input_bfd, input_section, rel->r_offset, sym_name);
13833 from = (rel->r_offset
13865 && rel + 1 < relend
13866 && rel[1].r_offset == rel->r_offset + 4
13867 && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
13892 bfd_put_32 (output_bfd, insn, contents + rel->r_offset);
13905 bfd_put_32 (output_bfd, NOP, contents + rel->r_offset);
14250 bfd_byte *p = contents + rel->r_offset - d_offset;
14362 input_section, rel->r_offset);
14370 outrel.r_addend = rel->r_addend;
14442 input_bfd, input_section, rel->r_offset,
14522 + rel->r_offset);
14588 bfd_byte *p = contents + (rel->r_offset & ~3);
14604 bfd_byte *p = contents + (rel->r_offset & ~3);
14683 insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
14697 input_bfd, input_section, rel->r_offset,
14714 rel->r_offset) != (bfd_vma) -1)
14718 input_bfd, input_section, rel->r_offset,
14733 insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
14753 rel->r_offset, relocation, addend);
14792 input_bfd, input_section, rel->r_offset)))
14799 input_bfd, input_section, rel->r_offset,
14817 rel = bfd_alloc (input_bfd, amt);
14819 ppc64_elf_tdata (input_bfd)->opd.relocs = rel;
14820 if (rel == NULL)
14822 memcpy (rel, relocs, amt);