Lines Matching refs:arsp
536 tls_fixups(Ofl_desc *ofl, Rel_desc *arsp) in tls_fixups() argument
538 Sym_desc *sdp = arsp->rel_sym; in tls_fixups()
539 Word rtype = arsp->rel_rtype; in tls_fixups()
542 offset = (uchar_t *)((uintptr_t)arsp->rel_roffset + in tls_fixups()
543 (uintptr_t)_elf_getxoff(arsp->rel_isdesc->is_indata) + in tls_fixups()
544 (uintptr_t)RELAUX_GET_OSDESC(arsp)->os_outdata->d_buf); in tls_fixups()
572 R_AMD64_GOTTPOFF, arsp, ld_reloc_sym_name)); in tls_fixups()
573 arsp->rel_rtype = R_AMD64_GOTTPOFF; in tls_fixups()
574 arsp->rel_roffset += 8; in tls_fixups()
575 arsp->rel_raddend = (Sxword)-4; in tls_fixups()
591 R_AMD64_NONE, arsp, ld_reloc_sym_name)); in tls_fixups()
617 R_AMD64_TPOFF32, arsp, ld_reloc_sym_name)); in tls_fixups()
618 arsp->rel_rtype = R_AMD64_TPOFF32; in tls_fixups()
619 arsp->rel_roffset += 8; in tls_fixups()
620 arsp->rel_raddend = 0; in tls_fixups()
662 R_AMD64_TPOFF32, arsp, ld_reloc_sym_name)); in tls_fixups()
663 arsp->rel_rtype = R_AMD64_TPOFF32; in tls_fixups()
664 arsp->rel_raddend = 0; in tls_fixups()
704 conv_reloc_amd64_type(arsp->rel_rtype, 0, &inv_buf), in tls_fixups()
705 arsp->rel_isdesc->is_file->ifl_name, in tls_fixups()
706 ld_reloc_sym_name(arsp), in tls_fixups()
707 arsp->rel_isdesc->is_name, in tls_fixups()
708 EC_OFF(arsp->rel_roffset)); in tls_fixups()
726 R_AMD64_NONE, arsp, ld_reloc_sym_name)); in tls_fixups()
741 R_AMD64_TPOFF32, arsp, ld_reloc_sym_name)); in tls_fixups()
742 arsp->rel_rtype = R_AMD64_TPOFF32; in tls_fixups()
743 arsp->rel_raddend = 0; in tls_fixups()
753 Rel_desc *arsp; in ld_do_activerelocs() local
765 REL_CACHE_TRAVERSE(&ofl->ofl_actrels, idx, rcbp, arsp) { in ld_do_activerelocs()
779 if ((arsp->rel_isdesc->is_flags & FLG_IS_DISCARD) && in ld_do_activerelocs()
780 ((arsp->rel_flags & (FLG_REL_GOT | FLG_REL_BSS | in ld_do_activerelocs()
782 DBG_CALL(Dbg_reloc_discard(ofl->ofl_lml, M_MACH, arsp)); in ld_do_activerelocs()
794 if (arsp->rel_flags & FLG_REL_DTLS) in ld_do_activerelocs()
796 else if (arsp->rel_flags & FLG_REL_MTLS) in ld_do_activerelocs()
798 else if (arsp->rel_flags & FLG_REL_STLS) in ld_do_activerelocs()
806 if (arsp->rel_flags & FLG_REL_TLSFIX) { in ld_do_activerelocs()
809 if ((ret = tls_fixups(ofl, arsp)) == FIX_ERROR) in ld_do_activerelocs()
819 if (RELAUX_GET_MOVE(arsp)) in ld_do_activerelocs()
820 ld_adj_movereloc(ofl, arsp); in ld_do_activerelocs()
822 sdp = arsp->rel_sym; in ld_do_activerelocs()
823 refaddr = arsp->rel_roffset + in ld_do_activerelocs()
824 (Off)_elf_getxoff(arsp->rel_isdesc->is_indata); in ld_do_activerelocs()
826 if ((arsp->rel_flags & FLG_REL_CLVAL) || in ld_do_activerelocs()
827 (arsp->rel_flags & FLG_REL_GOTCL)) in ld_do_activerelocs()
838 (sym = ld_am_I_partial(arsp, arsp->rel_raddend))) { in ld_do_activerelocs()
856 arsp->rel_raddend -= sym->sd_osym->st_value; in ld_do_activerelocs()
866 } else if (IS_SIZE(arsp->rel_rtype)) { in ld_do_activerelocs()
887 if ((arsp->rel_flags & FLG_REL_GOT) && in ld_do_activerelocs()
888 !ld_reloc_set_aux_osdesc(ofl, arsp, ofl->ofl_osgot)) in ld_do_activerelocs()
890 osp = RELAUX_GET_OSDESC(arsp); in ld_do_activerelocs()
896 if ((arsp->rel_flags & FLG_REL_LOAD) && in ld_do_activerelocs()
898 refaddr += arsp->rel_isdesc->is_osdesc-> in ld_do_activerelocs()
905 if (IS_PLT(arsp->rel_rtype)) { in ld_do_activerelocs()
918 if ((arsp->rel_flags & FLG_REL_GOT) == 0) in ld_do_activerelocs()
919 value += arsp->rel_raddend; in ld_do_activerelocs()
929 if ((arsp->rel_flags & FLG_REL_GOT) && in ld_do_activerelocs()
944 gnp = ld_find_got_ndx(sdp->sd_GOTndxs, gref, ofl, arsp); in ld_do_activerelocs()
947 if (arsp->rel_rtype == R_AMD64_DTPOFF64) in ld_do_activerelocs()
960 M_MACH, SHT_RELA, arsp, R1addr, value, in ld_do_activerelocs()
972 } else if (IS_GOT_BASED(arsp->rel_rtype) && in ld_do_activerelocs()
976 } else if (IS_GOTPCREL(arsp->rel_rtype) && in ld_do_activerelocs()
984 gnp = ld_find_got_ndx(sdp->sd_GOTndxs, gref, ofl, arsp); in ld_do_activerelocs()
988 arsp->rel_raddend - refaddr; in ld_do_activerelocs()
990 } else if (IS_GOT_PC(arsp->rel_rtype) && in ld_do_activerelocs()
993 sh_addr) - refaddr + arsp->rel_raddend; in ld_do_activerelocs()
995 } else if ((IS_PC_RELATIVE(arsp->rel_rtype)) && in ld_do_activerelocs()
1000 } else if (IS_TLS_INS(arsp->rel_rtype) && in ld_do_activerelocs()
1001 IS_GOT_RELATIVE(arsp->rel_rtype) && in ld_do_activerelocs()
1005 gnp = ld_find_got_ndx(sdp->sd_GOTndxs, gref, ofl, arsp); in ld_do_activerelocs()
1009 } else if (IS_GOT_RELATIVE(arsp->rel_rtype) && in ld_do_activerelocs()
1013 gnp = ld_find_got_ndx(sdp->sd_GOTndxs, gref, ofl, arsp); in ld_do_activerelocs()
1017 } else if ((arsp->rel_flags & FLG_REL_STLS) && in ld_do_activerelocs()
1033 if (arsp->rel_rtype == R_AMD64_TPOFF32) in ld_do_activerelocs()
1037 if (arsp->rel_isdesc->is_file) in ld_do_activerelocs()
1038 ifl_name = arsp->rel_isdesc->is_file->ifl_name; in ld_do_activerelocs()
1049 if (arsp->rel_isdesc->is_indata->d_buf == 0) { in ld_do_activerelocs()
1053 conv_reloc_amd64_type(arsp->rel_rtype, 0, &inv_buf), in ld_do_activerelocs()
1054 ifl_name, ld_reloc_sym_name(arsp), in ld_do_activerelocs()
1055 EC_WORD(arsp->rel_isdesc->is_scnndx), in ld_do_activerelocs()
1056 arsp->rel_isdesc->is_name); in ld_do_activerelocs()
1063 addr = (uchar_t *)((uintptr_t)arsp->rel_roffset + in ld_do_activerelocs()
1064 (uintptr_t)_elf_getxoff(arsp->rel_isdesc->is_indata)); in ld_do_activerelocs()
1067 M_MACH, SHT_RELA, arsp, EC_NATPTR(addr), value, in ld_do_activerelocs()
1072 ofl->ofl_size) || (arsp->rel_roffset > in ld_do_activerelocs()
1084 conv_reloc_amd64_type(arsp->rel_rtype, 0, &inv_buf), in ld_do_activerelocs()
1085 ifl_name, EC_WORD(arsp->rel_isdesc->is_scnndx), in ld_do_activerelocs()
1086 arsp->rel_isdesc->is_name, ld_reloc_sym_name(arsp), in ld_do_activerelocs()
1112 if (do_reloc_ld(arsp, addr, &value, ld_reloc_sym_name, in ld_do_activerelocs()
1113 ifl_name, OFL_SWAP_RELOC_DATA(ofl, arsp), in ld_do_activerelocs()