Lines Matching defs:libsym

152 mark_as_resolved(struct library_symbol *libsym, GElf_Addr value)
154 libsym->arch.type = PPC_PLT_RESOLVED;
155 libsym->arch.resolved_value = value;
159 ppc32_delayed_symbol(struct library_symbol *libsym)
184 uint32_t insn1 = libsym->arch.resolved_value >> 32;
185 uint32_t insn2 = (uint32_t) libsym->arch.resolved_value;
189 && (ppc_branch_dest(libsym->enter_addr + 4, insn2)
190 == (arch_addr_t) (long) libsym->lib->arch.pltgot_addr)))
192 mark_as_resolved(libsym, libsym->arch.resolved_value);
200 struct library_symbol *libsym = NULL;
201 while ((libsym = proc_each_symbol(proc, libsym,
203 if (proc_read_64(proc, libsym->enter_addr,
204 &libsym->arch.resolved_value) < 0) {
207 libsym->name, libsym->enter_addr,
213 ppc32_delayed_symbol(libsym);
215 if (proc_activate_delayed_symbol(proc, libsym) < 0)
220 libsym->arch.plt_slot_addr
221 = (GElf_Addr) (uintptr_t) libsym->enter_addr;
568 struct library_symbol *libsym = malloc(sizeof(*libsym));
569 if (sym_name == NULL || libsym == NULL) {
572 free(libsym);
580 if (library_symbol_init(libsym, addr, sym_name, 1,
583 libsym->arch.type = PPC64_PLT_STUB;
584 libsym->next = lte->arch.stubs;
585 lte->arch.stubs = libsym;
649 struct library_symbol *libsym = malloc(sizeof *libsym);
655 if (tmp_name == NULL || libsym == NULL
656 || library_symbol_init(libsym, resolver_addr,
661 free(libsym);
667 library_symbol_destroy(libsym);
671 libsym->proto = linux_IFUNC_prototype();
672 libsym->next = *ret;
673 *ret = libsym;
768 struct library_symbol *libsym = malloc(sizeof(*libsym));
769 if (libsym == NULL) {
773 free(libsym);
779 if (library_symbol_init(libsym,
783 libsym->arch.plt_slot_addr = plt_slot_addr;
787 libsym->arch.type = PPC_PLT_UNRESOLVED;
788 libsym->arch.resolved_value = plt_entry_addr;
796 libsym->arch.type = PPC_PLT_NEED_UNRESOLVE;
797 libsym->arch.data = malloc(sizeof *libsym->arch.data);
798 if (libsym->arch.data == NULL)
801 libsym->arch.data->self = libsym->arch.data;
802 libsym->arch.data->plt_entry_addr = plt_entry_addr;
803 libsym->arch.data->plt_slot_addr = plt_slot_addr;
804 libsym->arch.data->plt_slot_value = plt_slot_value;
805 libsym->arch.data->is_irelative = is_irelative;
808 *ret = libsym;
832 struct library_symbol *libsym = self->breakpoint_being_enabled->libsym;
834 if (read_plt_slot_value(proc, libsym->arch.plt_slot_addr, &value) < 0)
839 unresolve_plt_slot(proc, libsym->arch.plt_slot_addr,
840 libsym->arch.resolved_value);
842 mark_as_resolved(libsym, value);
866 struct library_symbol *libsym = self->breakpoint_being_enabled->libsym;
869 if (read_plt_slot_value(proc, libsym->arch.plt_slot_addr, &value) < 0)
874 if (value == libsym->arch.resolved_value)
883 && unresolve_plt_slot(proc, libsym->arch.plt_slot_addr,
884 libsym->arch.resolved_value) < 0)
934 mark_as_resolved(libsym, value);
945 (uintptr_t)bp->libsym->arch.resolved_value;
955 if (bp->libsym == NULL) {
957 bp->libsym = bp->arch.irel_libsym;
961 switch (bp->libsym->arch.type) {
969 assert(bp->libsym != NULL);
970 assert(bp->libsym->lib->arch.bss_plt_prelinked == 0);
1010 assert(bp->libsym->arch.type != bp->libsym->arch.type);
1049 && bp->libsym != NULL
1050 && bp->libsym->arch.type == PPC_PLT_RESOLVED) {
1052 unresolve_plt_slot(proc, bp->libsym->arch.plt_slot_addr,
1053 bp->libsym->arch.resolved_value);
1061 struct library_symbol *libsym = bp->libsym;
1062 if (libsym == NULL)
1063 libsym = bp->arch.irel_libsym;
1064 assert(libsym != NULL);
1066 if (libsym->arch.type == PPC_PLT_NEED_UNRESOLVE) {
1076 struct ppc_unresolve_data *data = libsym->arch.data;
1077 libsym->arch.data = NULL;
1087 mark_as_resolved(libsym, plt_slot_value);
1089 libsym->arch.type = PPC_PLT_IRELATIVE;
1090 libsym->arch.resolved_value = plt_entry_addr;
1121 arch_library_symbol_init(struct library_symbol *libsym)
1126 libsym->arch.type = PPC_DEFAULT;
1131 arch_library_symbol_destroy(struct library_symbol *libsym)
1133 if (libsym->arch.type == PPC_PLT_NEED_UNRESOLVE) {
1134 assert(libsym->arch.data->self == libsym->arch.data);
1135 free(libsym->arch.data);
1136 libsym->arch.data = NULL;
1142 struct library_symbol *libsym)
1144 retp->arch = libsym->arch;
1157 if (bp->libsym == NULL || bp->libsym->plt_type != LS_TOPLT_EXEC)
1162 && bp->libsym->lib->arch.bss_plt_prelinked != 0)
1167 && bp->libsym->arch.type == PPC64_PLT_STUB)
1179 if (bp->libsym->arch.type == PPC_PLT_IRELATIVE) {
1180 bp->arch.irel_libsym = bp->libsym;
1181 bp->libsym = NULL;