plt_entry
struct plt_entry *ftrace_trampolines;
struct plt_entry *init_ftrace_trampolines;
struct plt_entry get_plt_entry(u64 dst, void *pc);
static struct plt_entry *get_ftrace_plt(struct module *mod, unsigned long addr)
struct plt_entry *plt = NULL;
struct plt_entry *plt;
struct plt_entry *plt = (struct plt_entry *)sechdrs[pltsec->plt_shndx].sh_addr;
static struct plt_entry __get_adrp_add_pair(u64 dst, u64 pc,
return (struct plt_entry){ cpu_to_le32(adrp), cpu_to_le32(add) };
ret += DIV_ROUND_UP(ret, (SZ_4K / sizeof(struct plt_entry)));
struct plt_entry get_plt_entry(u64 dst, void *pc)
struct plt_entry plt;
pltsec->sh_size = (core_plts + 1) * sizeof(struct plt_entry);
pltsec->sh_size = (init_plts + 1) * sizeof(struct plt_entry);
tramp->sh_addralign = __alignof__(struct plt_entry);
tramp->sh_size = NR_FTRACE_PLTS * sizeof(struct plt_entry);
init_tramp->sh_addralign = __alignof__(struct plt_entry);
init_tramp->sh_size = NR_FTRACE_PLTS * sizeof(struct plt_entry);
static bool plt_entries_equal(const struct plt_entry *a,
const struct plt_entry *b)
struct plt_entry *plt = (struct plt_entry *)sechdrs[pltsec->plt_shndx].sh_addr;
static inline void __init_plt(struct plt_entry *plt, unsigned long addr)
struct plt_entry *plts;
struct plt_entry *plt = (struct plt_entry *)sechdrs[sec_plt->shndx].sh_addr;
struct plt_entry *ftrace_trampolines;
static inline struct plt_entry emit_plt_entry(unsigned long val)
return (struct plt_entry) { lu12iw, jirl };
return (struct plt_entry) { lu12iw, lu32id, lu52id, jirl };
static inline struct plt_entry *get_plt_entry(unsigned long val,
static struct plt_entry *get_ftrace_plt(struct module *mod, unsigned long addr)
struct plt_entry *plt = mod->arch.ftrace_trampolines;
struct plt_entry *plt;
plt_sec->sh_size = (num_plts + 1) * sizeof(struct plt_entry);
tramp->sh_addralign = __alignof__(struct plt_entry);
tramp->sh_size = NR_FTRACE_PLTS * sizeof(struct plt_entry);
struct plt_entry *plt = get_plt_entry(val, sechdrs, plt_sec, plt_idx_sec);
plt = (struct plt_entry *)sechdrs[plt_sec->shndx].sh_addr;
struct plt_entry *ftrace_plts;
static inline struct plt_entry *get_plt_entry(unsigned long val,
struct plt_entry *plt = (struct plt_entry *)sec_plt->shdr->sh_addr;
static inline struct plt_entry emit_plt_entry(unsigned long val,
return (struct plt_entry) {
mod->arch.plt.shdr->sh_size = (num_plts + 1) * sizeof(struct plt_entry);
struct plt_entry *plt = get_plt_entry(val, plt_sec, got_plt_sec);
plt = (struct plt_entry *)plt_sec->shdr->sh_addr;