/linux-master/arch/arm64/kernel/pi/ |
H A D | relocate.c | 19 for (const Elf64_Rela *rela = rela_start; rela < rela_end; rela++) { 20 if (ELF64_R_TYPE(rela->r_info) != R_AARCH64_RELATIVE) 22 *(u64 *)(rela->r_offset + offset) = rela->r_addend + offset;
|
H A D | relacheck.c | 80 Elf64_Rela *rela; local 105 rela = (void *)ehdr + swab_elfxword(shdr[i].sh_offset); 106 numrela = swab_elfxword(shdr[i].sh_size) / sizeof(*rela); 109 uint64_t info = swab_elfxword(rela[j].r_info); 117 rela[j].r_info = swab_elfxword(info);
|
/linux-master/arch/um/kernel/ |
H A D | dyn.lds.S | 36 .rela.init : { *(.rela.init) } 38 .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } 40 .rela.fini : { *(.rela.fini) } 42 .rela.rodata : { *(.rela [all...] |
H A D | uml.lds.S | 64 .rela.plt : { 65 *(.rela.plt) 67 *(.rela.iplt)
|
/linux-master/arch/microblaze/kernel/ |
H A D | module.c | 23 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; local 31 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { 34 rela[i].r_offset; 36 ELF32_R_SYM(rela[i].r_info); 37 value = sym->st_value + rela[i].r_addend; 39 switch (ELF32_R_TYPE(rela[i].r_info)) { 84 ELF32_R_TYPE(rela[i].r_info));
|
/linux-master/arch/nios2/kernel/ |
H A D | module.c | 48 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; local 53 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { 58 + rela[i].r_offset); 63 + ELF32_R_SYM(rela[i].r_info)); 64 uint32_t v = sym->st_value + rela[i].r_addend; 67 ELF32_R_TYPE(rela[i].r_info), 68 rela[i].r_offset, strtab + sym->st_name); 70 switch (ELF32_R_TYPE(rela[i].r_info)) { 124 mod->name, ELF32_R_TYPE(rela[i].r_info));
|
/linux-master/arch/hexagon/kernel/ |
H A D | module.c | 42 if (strcmp(secstrings + sechdrs[i].sh_name, ".rela.plt") == 0) 58 * apply_relocate_add - perform rela relocations. 65 * Perform rela relocations. 76 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; local 87 sym = sym_base + ELF32_R_SYM(rela[i].r_info); 90 location = loc_base + rela[i].r_offset; 93 value = sym->st_value + rela[i].r_addend; 96 i, value, location, ELF32_R_TYPE(rela[i].r_info), 100 switch (ELF32_R_TYPE(rela[i].r_info)) { 144 ELF32_R_TYPE(rela[ [all...] |
/linux-master/arch/arm64/kernel/ |
H A D | module-plts.c | 70 void *loc, const Elf64_Rela *rela, 78 u64 val = sym->st_value + rela->r_addend; 147 static bool duplicate_rel(const Elf64_Rela *rela, int num) argument 154 return num > 0 && cmp_rela(rela + num, rela + num - 1) == 0; 157 static unsigned int count_plts(Elf64_Sym *syms, Elf64_Rela *rela, int num, argument 167 switch (ELF64_R_TYPE(rela[i].r_info)) { 181 s = syms + ELF64_R_SYM(rela[i].r_info); 198 if (rela[i].r_addend != 0 || !duplicate_rel(rela, 69 module_emit_plt_entry(struct module *mod, Elf64_Shdr *sechdrs, void *loc, const Elf64_Rela *rela, Elf64_Sym *sym) argument 249 branch_rela_needs_plt(Elf64_Sym *syms, Elf64_Rela *rela, Elf64_Word dstidx) argument 263 partition_branch_plt_relas(Elf64_Sym *syms, Elf64_Rela *rela, int numrels, Elf64_Word dstidx) argument [all...] |
/linux-master/arch/alpha/kernel/ |
H A D | module.c | 29 process_reloc_for_got(Elf64_Rela *rela, argument 32 unsigned long r_sym = ELF64_R_SYM (rela->r_info); 33 unsigned long r_type = ELF64_R_TYPE (rela->r_info); 34 Elf64_Sxword r_addend = rela->r_addend; 60 rela->r_info |= g->got_offset << 8; 68 Elf64_Rela *rela; local 113 rela = (void *)hdr + s->sh_offset; 115 process_reloc_for_got(rela+i, chains, 137 Elf64_Rela *rela = (void *)sechdrs[relsec].sh_addr; local 138 unsigned long i, n = sechdrs[relsec].sh_size / sizeof(*rela); [all...] |
/linux-master/arch/mips/kernel/ |
H A D | module.c | 70 bool rela) 74 if (rela) { 109 u32 base, Elf_Addr v, bool rela) 115 if (rela) { 229 static int apply_r_mips_64(u32 *location, Elf_Addr v, bool rela) argument 231 if (WARN_ON(!rela)) 239 static int apply_r_mips_higher(u32 *location, Elf_Addr v, bool rela) argument 241 if (WARN_ON(!rela)) 250 static int apply_r_mips_highest(u32 *location, Elf_Addr v, bool rela) argument 252 if (WARN_ON(!rela)) 69 apply_r_mips_hi16(struct module *me, u32 *location, Elf_Addr v, bool rela) argument 108 apply_r_mips_lo16(struct module *me, u32 *location, u32 base, Elf_Addr v, bool rela) argument 278 reloc_handler(u32 type, struct module *me, u32 *location, u32 base, Elf_Addr v, bool rela) argument 313 __apply_relocate(Elf_Shdr *sechdrs, const char *strtab, unsigned int symindex, unsigned int relsec, struct module *me, bool rela) argument 319 Elf_Mips_Rela *rela; member in union:__anon12 [all...] |
/linux-master/arch/xtensa/kernel/ |
H A D | module.c | 54 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; local 62 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { 64 + rela[i].r_offset; 66 + ELF32_R_SYM(rela[i].r_info); 67 value = sym->st_value + rela[i].r_addend; 69 switch (ELF32_R_TYPE(rela[i].r_info)) { 158 ELF32_R_TYPE(rela[i].r_info)); 178 ELF32_R_TYPE(rela[i].r_info)); 184 ELF32_R_TYPE(rela[i].r_info));
|
/linux-master/arch/powerpc/kernel/ |
H A D | module_32.c | 25 static unsigned int count_relocs(const Elf32_Rela *rela, unsigned int num) argument 34 if (ELF32_R_TYPE(rela[i].r_info) == R_PPC_REL24 && 35 (r_info != ELF32_R_SYM(rela[i].r_info) || 36 r_addend != rela[i].r_addend)) { 38 r_info = ELF32_R_SYM(rela[i].r_info); 39 r_addend = rela[i].r_addend; 203 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; local 210 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { 213 + rela[i].r_offset; 217 + ELF32_R_SYM(rela[ [all...] |
H A D | module_64.c | 161 static unsigned int count_relocs(const Elf64_Rela *rela, unsigned int num, argument 172 if (ELF64_R_TYPE(rela[i].r_info) == r_type && 173 (r_info != ELF64_R_SYM(rela[i].r_info) || 174 r_addend != rela[i].r_addend)) { 176 r_info = ELF64_R_SYM(rela[i].r_info); 177 r_addend = rela[i].r_addend; 259 const Elf64_Rela *rela, unsigned int num, 273 + ELF64_R_SYM(rela[i].r_info); 276 (r_info != ELF64_R_SYM(rela[i].r_info) || 277 r_addend != rela[ 258 count_pcpu_relocs(const Elf64_Shdr *sechdrs, const Elf64_Rela *rela, unsigned int num, unsigned int symindex, unsigned int pcpu) argument 771 Elf64_Rela *rela = (void *)sechdrs[relsec].sh_addr; local [all...] |
/linux-master/arch/arm64/kernel/vdso/ |
H A D | vdso.lds.S | 58 .rela.dyn : ALIGN(8) { *(.rela .rela*) }
|
/linux-master/arch/x86/boot/compressed/ |
H A D | vmlinux.lds.S | 116 .rela.dyn : { 117 *(.rela.*) *(.rela_*) 119 ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
|
/linux-master/arch/s390/boot/ |
H A D | vmlinux.lds.S | 163 .rela.dyn : { 164 *(.rela.*) *(.rela_*) 166 ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
|
/linux-master/tools/objtool/ |
H A D | orc_dump.c | 24 GElf_Rela rela; local 96 } else if (!strcmp(name, ".rela.orc_unwind_ip")) { 112 if (!gelf_getrela(rela_orc_ip, i, &rela)) { 117 if (!gelf_getsym(symtab, GELF_R_SYM(rela.r_info), &sym)) { 147 printf("%s+%llx:", name, (unsigned long long)rela.r_addend);
|
/linux-master/arch/s390/kernel/ |
H A D | module.c | 93 static void check_rela(Elf_Rela *rela, struct module *me) argument 97 info = me->arch.syminfo + ELF_R_SYM (rela->r_info); 98 switch (ELF_R_TYPE (rela->r_info)) { 147 Elf_Rela *rela; local 191 rela = (void *) hdr + sechdrs[i].sh_offset; 193 check_rela(rela + j, me); 258 static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, argument 268 loc = base + rela->r_offset; 271 r_sym = ELF_R_SYM(rela->r_info); 272 r_type = ELF_R_TYPE(rela 470 Elf_Rela *rela; local [all...] |
H A D | vmlinux.lds.S | 201 .rela.dyn ALIGN(8) : { 203 *(.rela*) 286 .rela.dyn : { 287 *(.rela.*) *(.rela_*) 289 ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
|
/linux-master/arch/powerpc/boot/ |
H A D | zImage.lds.S | 47 .rela.dyn : 52 *(.rela*)
|
/linux-master/arch/loongarch/kernel/ |
H A D | relocate.c | 26 Elf64_Rela *rela, *rela_end; local 27 rela = (Elf64_Rela *)&__rela_dyn_begin; 30 for ( ; rela < rela_end; rela++) { 31 Elf64_Addr addr = rela->r_offset; 32 Elf64_Addr relocated_addr = rela->r_addend; 34 if (rela->r_info != R_LARCH_RELATIVE)
|
H A D | vmlinux.lds.S | 109 .rela.dyn : ALIGN(8) { 111 *(.rela.dyn) *(.rela*)
|
/linux-master/arch/powerpc/kernel/vdso/ |
H A D | vdso64.lds.S | 72 .rela.dyn ALIGN(8) : { *(.rela.dyn) } 89 *(.glink .iplt .plt .rela*)
|
/linux-master/arch/riscv/kernel/ |
H A D | vmlinux.lds.S | 106 .rela.dyn : ALIGN(8) { 108 *(.rela .rela*)
|
/linux-master/arch/arm64/kvm/hyp/nvhe/ |
H A D | gen-hyprel.c | 314 * The linker of vmlinux will populate the position given by `rela` with 320 * by `rela`. This way the kernel can iterate over all kernel VAs used 324 * the beginning of the relocated section + the offset from `rela`. 326 static void emit_rela_abs64(Elf64_Rela *rela, const char *sh_orig_name) argument 338 * is `rela->r_offset`. 342 elf64toh(rela->r_offset)); 364 Elf64_Rela *rela; local 372 for_each_rela(sh_rela, rela) { 373 uint32_t type = (uint32_t)elf64toh(rela->r_info); 375 /* Check that rela point [all...] |