/kernel/linux/linux-5.10/arch/arm/kernel/ |
H A D | module-plts.c | 36 static void prealloc_fixed(struct mod_plt_sec *pltsec, struct plt_entries *plt) in prealloc_fixed() argument 44 for (i = 0; i < ARRAY_SIZE(plt->ldr); ++i) in prealloc_fixed() 45 plt->ldr[i] = PLT_ENT_LDR; in prealloc_fixed() 47 BUILD_BUG_ON(sizeof(fixed_plts) > sizeof(plt->lit)); in prealloc_fixed() 48 memcpy(plt->lit, fixed_plts, sizeof(fixed_plts)); in prealloc_fixed() 55 struct plt_entries *plt; in get_module_plt() local 60 pltsec->plt_ent = (struct plt_entries *)pltsec->plt->sh_addr; in get_module_plt() 61 plt = pltsec->plt_ent; in get_module_plt() 63 prealloc_fixed(pltsec, plt); in get_module_plt() 66 if (plt in get_module_plt() [all...] |
/kernel/linux/linux-6.6/arch/arm/kernel/ |
H A D | module-plts.c | 31 static void prealloc_fixed(struct mod_plt_sec *pltsec, struct plt_entries *plt) in prealloc_fixed() argument 39 for (i = 0; i < ARRAY_SIZE(plt->ldr); ++i) in prealloc_fixed() 40 plt->ldr[i] = PLT_ENT_LDR; in prealloc_fixed() 42 BUILD_BUG_ON(sizeof(fixed_plts) > sizeof(plt->lit)); in prealloc_fixed() 43 memcpy(plt->lit, fixed_plts, sizeof(fixed_plts)); in prealloc_fixed() 50 struct plt_entries *plt; in get_module_plt() local 55 pltsec->plt_ent = (struct plt_entries *)pltsec->plt->sh_addr; in get_module_plt() 56 plt = pltsec->plt_ent; in get_module_plt() 58 prealloc_fixed(pltsec, plt); in get_module_plt() 61 if (plt in get_module_plt() [all...] |
/kernel/linux/linux-5.10/drivers/net/phy/ |
H A D | phy_led_triggers.c | 31 struct phy_led_trigger *plt; in phy_led_trigger_change_speed() local 39 plt = phy_speed_to_led_trigger(phy, phy->speed); in phy_led_trigger_change_speed() 40 if (!plt) { in phy_led_trigger_change_speed() 47 if (plt != phy->last_triggered) { in phy_led_trigger_change_speed() 54 led_trigger_event(&plt->trigger, LED_FULL); in phy_led_trigger_change_speed() 55 phy->last_triggered = plt; in phy_led_trigger_change_speed() 68 struct phy_led_trigger *plt, in phy_led_trigger_register() 71 plt->speed = speed; in phy_led_trigger_register() 72 phy_led_trigger_format_name(phy, plt->name, sizeof(plt in phy_led_trigger_register() 67 phy_led_trigger_register(struct phy_device *phy, struct phy_led_trigger *plt, unsigned int speed) phy_led_trigger_register() argument 79 phy_led_trigger_unregister(struct phy_led_trigger *plt) phy_led_trigger_unregister() argument [all...] |
/kernel/linux/linux-6.6/drivers/net/phy/ |
H A D | phy_led_triggers.c | 31 struct phy_led_trigger *plt; in phy_led_trigger_change_speed() local 39 plt = phy_speed_to_led_trigger(phy, phy->speed); in phy_led_trigger_change_speed() 40 if (!plt) { in phy_led_trigger_change_speed() 47 if (plt != phy->last_triggered) { in phy_led_trigger_change_speed() 54 led_trigger_event(&plt->trigger, LED_FULL); in phy_led_trigger_change_speed() 55 phy->last_triggered = plt; in phy_led_trigger_change_speed() 68 struct phy_led_trigger *plt, in phy_led_trigger_register() 72 plt->speed = speed; in phy_led_trigger_register() 73 phy_led_trigger_format_name(phy, plt->name, sizeof(plt in phy_led_trigger_register() 67 phy_led_trigger_register(struct phy_device *phy, struct phy_led_trigger *plt, unsigned int speed, const char *suffix) phy_led_trigger_register() argument 79 phy_led_trigger_unregister(struct phy_led_trigger *plt) phy_led_trigger_unregister() argument [all...] |
/kernel/linux/linux-5.10/arch/riscv/kernel/ |
H A D | module-sections.c | 36 struct mod_section *plt_sec = &mod->arch.plt; in module_emit_plt_entry() 37 struct plt_entry *plt = get_plt_entry(val, plt_sec, got_plt_sec); in module_emit_plt_entry() local 40 if (plt) in module_emit_plt_entry() 41 return (unsigned long)plt; in module_emit_plt_entry() 46 plt = (struct plt_entry *)plt_sec->shdr->sh_addr; in module_emit_plt_entry() 47 plt[i] = emit_plt_entry(val, in module_emit_plt_entry() 48 (unsigned long)&plt[i], in module_emit_plt_entry() 55 return (unsigned long)&plt[i]; in module_emit_plt_entry() 98 * Find the empty .got and .plt sections. in module_frob_arch_sections() 101 if (!strcmp(secstrings + sechdrs[i].sh_name, ".plt")) in module_frob_arch_sections() [all...] |
/kernel/linux/linux-6.6/arch/riscv/kernel/ |
H A D | module-sections.c | 36 struct mod_section *plt_sec = &mod->arch.plt; in module_emit_plt_entry() 37 struct plt_entry *plt = get_plt_entry(val, plt_sec, got_plt_sec); in module_emit_plt_entry() local 40 if (plt) in module_emit_plt_entry() 41 return (unsigned long)plt; in module_emit_plt_entry() 46 plt = (struct plt_entry *)plt_sec->shdr->sh_addr; in module_emit_plt_entry() 47 plt[i] = emit_plt_entry(val, in module_emit_plt_entry() 48 (unsigned long)&plt[i], in module_emit_plt_entry() 55 return (unsigned long)&plt[i]; in module_emit_plt_entry() 98 * Find the empty .got and .plt sections. in module_frob_arch_sections() 101 if (!strcmp(secstrings + sechdrs[i].sh_name, ".plt")) in module_frob_arch_sections() [all...] |
/kernel/linux/linux-5.10/arch/x86/boot/compressed/ |
H A D | vmlinux.lds.S | 83 .got.plt (INFO) : { 84 *(.got.plt) 86 ASSERT(SIZEOF(.got.plt) == 0 || 88 SIZEOF(.got.plt) == 0x18, 90 SIZEOF(.got.plt) == 0xc, 103 .plt : { 104 *(.plt) *(.plt.*) 106 ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
|
/kernel/linux/linux-6.6/arch/x86/boot/compressed/ |
H A D | vmlinux.lds.S | 86 .got.plt (INFO) : { 87 *(.got.plt) 89 ASSERT(SIZEOF(.got.plt) == 0 || 91 SIZEOF(.got.plt) == 0x18, 93 SIZEOF(.got.plt) == 0xc, 106 .plt : { 107 *(.plt) *(.plt.*) 109 ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
|
/kernel/linux/linux-5.10/arch/loongarch/kernel/ |
H A D | module-sections.c | 41 struct mod_section *plt_sec = &mod->arch.plt; in module_emit_plt_entry() 43 struct plt_entry *plt = get_plt_entry(val, sechdrs, plt_sec, plt_idx_sec); in module_emit_plt_entry() local 46 if (plt) in module_emit_plt_entry() 47 return (Elf_Addr)plt; in module_emit_plt_entry() 52 plt = (struct plt_entry *)sechdrs[plt_sec->shndx].sh_addr; in module_emit_plt_entry() 53 plt[nr] = emit_plt_entry(val); in module_emit_plt_entry() 61 return (Elf_Addr)&plt[nr]; in module_emit_plt_entry() 111 * Find the empty .plt sections. in module_frob_arch_sections() 116 else if (!strcmp(secstrings + sechdrs[i].sh_name, ".plt")) in module_frob_arch_sections() 117 mod->arch.plt in module_frob_arch_sections() [all...] |
H A D | ftrace_dyn.c | 92 struct plt_entry *plt = mod->arch.ftrace_trampolines; in get_ftrace_plt() local 95 return &plt[FTRACE_PLT_IDX]; in get_ftrace_plt() 98 return &plt[FTRACE_REGS_PLT_IDX]; in get_ftrace_plt() 105 struct plt_entry *plt; in get_plt_addr() local 107 plt = get_ftrace_plt(mod, addr); in get_plt_addr() 108 if (!plt) { in get_plt_addr() 113 return (unsigned long)plt; in get_plt_addr()
|
/kernel/linux/linux-6.6/arch/loongarch/kernel/ |
H A D | module-sections.c | 41 struct mod_section *plt_sec = &mod->arch.plt; in module_emit_plt_entry() 43 struct plt_entry *plt = get_plt_entry(val, sechdrs, plt_sec, plt_idx_sec); in module_emit_plt_entry() local 46 if (plt) in module_emit_plt_entry() 47 return (Elf_Addr)plt; in module_emit_plt_entry() 52 plt = (struct plt_entry *)sechdrs[plt_sec->shndx].sh_addr; in module_emit_plt_entry() 53 plt[nr] = emit_plt_entry(val); in module_emit_plt_entry() 61 return (Elf_Addr)&plt[nr]; in module_emit_plt_entry() 111 * Find the empty .plt sections. in module_frob_arch_sections() 116 else if (!strcmp(secstrings + sechdrs[i].sh_name, ".plt")) in module_frob_arch_sections() 117 mod->arch.plt in module_frob_arch_sections() [all...] |
H A D | ftrace_dyn.c | 43 struct plt_entry *plt = mod->arch.ftrace_trampolines; in get_ftrace_plt() local 46 return &plt[FTRACE_PLT_IDX]; in get_ftrace_plt() 49 return &plt[FTRACE_REGS_PLT_IDX]; in get_ftrace_plt() 66 struct plt_entry *plt; in ftrace_find_callable_addr() local 101 plt = get_ftrace_plt(mod, *addr); in ftrace_find_callable_addr() 102 if (!plt) { in ftrace_find_callable_addr() 107 *addr = (unsigned long)plt; in ftrace_find_callable_addr()
|
/kernel/linux/linux-5.10/arch/arm64/kernel/ |
H A D | vmlinux.lds.S | 145 * Make sure that the .got.plt is either completely empty or it 148 .got.plt : { *(.got.plt) } 149 ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, 278 .plt : { 279 *(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt) 281 ASSERT(SIZEOF(.plt) [all...] |
H A D | module-plts.c | 28 struct plt_entry plt; in get_plt_entry() local 35 plt = __get_adrp_add_pair(dst, (u64)pc, AARCH64_INSN_REG_16); in get_plt_entry() 36 plt.br = cpu_to_le32(br); in get_plt_entry() 38 return plt; in get_plt_entry() 79 struct plt_entry *plt = (struct plt_entry *)sechdrs[pltsec->plt_shndx].sh_addr; in module_emit_plt_entry() local 84 if (is_forbidden_offset_for_adrp(&plt[i].adrp)) in module_emit_plt_entry() 87 plt[i] = get_plt_entry(val, &plt[i]); in module_emit_plt_entry() 94 if (j >= 0 && plt_entries_equal(plt + i, plt in module_emit_plt_entry() 110 struct plt_entry *plt = (struct plt_entry *)sechdrs[pltsec->plt_shndx].sh_addr; module_emit_veneer_for_adrp() local [all...] |
H A D | ftrace.c | 68 struct plt_entry *plt = mod->arch.ftrace_trampolines; in get_ftrace_plt() local 71 return &plt[FTRACE_PLT_IDX]; in get_ftrace_plt() 74 return &plt[FTRACE_REGS_PLT_IDX]; in get_ftrace_plt() 94 struct plt_entry *plt; in ftrace_find_callable_addr() local 129 plt = get_ftrace_plt(mod, *addr); in ftrace_find_callable_addr() 130 if (!plt) { in ftrace_find_callable_addr() 135 *addr = (unsigned long)plt; in ftrace_find_callable_addr()
|
/kernel/linux/linux-6.6/arch/arm64/kernel/ |
H A D | module-plts.c | 28 struct plt_entry plt; in get_plt_entry() local 35 plt = __get_adrp_add_pair(dst, (u64)pc, AARCH64_INSN_REG_16); in get_plt_entry() 36 plt.br = cpu_to_le32(br); in get_plt_entry() 38 return plt; in get_plt_entry() 75 struct plt_entry *plt = (struct plt_entry *)sechdrs[pltsec->plt_shndx].sh_addr; in module_emit_plt_entry() local 80 if (is_forbidden_offset_for_adrp(&plt[i].adrp)) in module_emit_plt_entry() 83 plt[i] = get_plt_entry(val, &plt[i]); in module_emit_plt_entry() 90 if (j >= 0 && plt_entries_equal(plt + i, plt in module_emit_plt_entry() 106 struct plt_entry *plt = (struct plt_entry *)sechdrs[pltsec->plt_shndx].sh_addr; module_emit_veneer_for_adrp() local [all...] |
H A D | vmlinux.lds.S | 196 * Make sure that the .got.plt is either completely empty or it 199 .got.plt : { *(.got.plt) } 200 ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, 335 .plt : { 336 *(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt) 338 ASSERT(SIZEOF(.plt) [all...] |
/kernel/linux/linux-5.10/arch/ia64/kernel/ |
H A D | module.c | 235 patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp) in patch_plt() argument 237 if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_gp) in patch_plt() 238 && apply_imm60(mod, (struct insn *) (plt->bundle[1] + 2), in patch_plt() 239 (target_ip - (int64_t) plt->bundle[1]) / 16)) in patch_plt() 245 plt_target (struct plt_entry *plt) in plt_target() argument 247 uint64_t b0, b1, *b = (uint64_t *) plt->bundle[1]; in plt_target() 254 return (long) plt->bundle[1] + 16*off; in plt_target() 285 patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp) in patch_plt() argument 287 if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_ip) in patch_plt() 288 && apply_imm64(mod, (struct insn *) (plt in patch_plt() 294 plt_target(struct plt_entry *plt) plt_target() argument 541 struct plt_entry *plt, *plt_end; get_plt() local [all...] |
/kernel/linux/linux-6.6/arch/ia64/kernel/ |
H A D | module.c | 235 patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp) in patch_plt() argument 237 if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_gp) in patch_plt() 238 && apply_imm60(mod, (struct insn *) (plt->bundle[1] + 2), in patch_plt() 239 (target_ip - (int64_t) plt->bundle[1]) / 16)) in patch_plt() 245 plt_target (struct plt_entry *plt) in plt_target() argument 247 uint64_t b0, b1, *b = (uint64_t *) plt->bundle[1]; in plt_target() 254 return (long) plt->bundle[1] + 16*off; in plt_target() 285 patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp) in patch_plt() argument 287 if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_ip) in patch_plt() 288 && apply_imm64(mod, (struct insn *) (plt in patch_plt() 294 plt_target(struct plt_entry *plt) plt_target() argument 541 struct plt_entry *plt, *plt_end; get_plt() local [all...] |
/kernel/linux/linux-5.10/arch/um/kernel/ |
H A D | uml.lds.S | 59 .rel.plt : { 60 *(.rel.plt) 65 .rela.plt : { 66 *(.rela.plt) 97 .got : { *(.got.plt) *(.got) }
|
H A D | dyn.lds.S | 57 .rel.plt : { 58 *(.rel.plt) 63 .rela.plt : { 64 *(.rela.plt) 72 .plt : { *(.plt) } 154 .got : { *(.got.plt) *(.got) }
|
/kernel/linux/linux-5.10/arch/riscv/include/asm/ |
H A D | module.h | 22 struct mod_section plt; member 50 * should be the original (pc+4) before entring plt entry. 64 unsigned long plt, in emit_plt_entry() 79 unsigned long offset = got_plt - plt; in emit_plt_entry() 104 struct plt_entry *plt = (struct plt_entry *)sec_plt->shdr->sh_addr; in get_plt_entry() local 107 return plt + got_plt_idx; in get_plt_entry() 63 emit_plt_entry(unsigned long val, unsigned long plt, unsigned long got_plt) emit_plt_entry() argument
|
/kernel/linux/linux-6.6/arch/um/kernel/ |
H A D | uml.lds.S | 58 .rel.plt : { 59 *(.rel.plt) 64 .rela.plt : { 65 *(.rela.plt) 96 .got : { *(.got.plt) *(.got) }
|
/kernel/linux/linux-5.10/arch/x86/kernel/ |
H A D | vmlinux.lds.S | 456 * Make sure that the .got.plt is either completely empty or it 459 .got.plt (INFO) : { *(.got.plt) } 460 ASSERT(SIZEOF(.got.plt) == 0 || 462 SIZEOF(.got.plt) == 0x18, 464 SIZEOF(.got.plt) == 0xc, 477 .plt : { 478 *(.plt) *(.plt.*) *(.iplt) 480 ASSERT(SIZEOF(.plt) [all...] |
/kernel/linux/linux-6.6/arch/x86/kernel/ |
H A D | vmlinux.lds.S | 465 * Make sure that the .got.plt is either completely empty or it 468 .got.plt (INFO) : { *(.got.plt) } 469 ASSERT(SIZEOF(.got.plt) == 0 || 471 SIZEOF(.got.plt) == 0x18, 473 SIZEOF(.got.plt) == 0xc, 486 .plt : { 487 *(.plt) *(.plt.*) *(.iplt) 489 ASSERT(SIZEOF(.plt) [all...] |