| /linux/arch/um/kernel/ |
| 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.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } 44 .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } 46 .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } 48 .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } 50 .rela.ctors : { *(.rela.ctors) } 52 .rela.dtors : { *(.rela.dtors) } 54 .rela.got : { *(.rela.got) } [all …]
|
| A D | uml.lds.S | 65 .rela.plt : { 66 *(.rela.plt) 68 *(.rela.iplt)
|
| /linux/arch/mips/kernel/ |
| A D | module.c | 70 bool rela) in apply_r_mips_hi16() argument 74 if (rela) { in apply_r_mips_hi16() 115 if (rela) { in apply_r_mips_lo16() 231 if (WARN_ON(!rela)) in apply_r_mips_64() 241 if (WARN_ON(!rela)) in apply_r_mips_higher() 252 if (WARN_ON(!rela)) in apply_r_mips_highest() 279 Elf_Addr v, bool rela) in reloc_handler() argument 319 Elf_Mips_Rela *rela; in __apply_relocate() member 332 reloc_sz = rela ? sizeof(*r.rela) : sizeof(*r.rel); in __apply_relocate() 353 if (rela) { in __apply_relocate() [all …]
|
| /linux/arch/arm64/kernel/ |
| A D | module-plts.c | 73 void *loc, const Elf64_Rela *rela, in module_emit_plt_entry() argument 81 u64 val = sym->st_value + rela->r_addend; in module_emit_plt_entry() 157 return num > 0 && cmp_rela(rela + num, rela + num - 1) == 0; in duplicate_rel() 170 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_plts() 187 s = syms + ELF64_R_SYM(rela[i].r_info); in count_plts() 204 if (rela[i].r_addend != 0 || !duplicate_rel(rela, i)) in count_plts() 227 min_align = 2ULL << ffz(rela[i].r_offset | 0x7); in count_plts() 260 Elf64_Sym *s = syms + ELF64_R_SYM(rela->r_info); in branch_rela_needs_plt() 266 ELF64_R_TYPE(rela->r_info) == R_AARCH64_CALL26; in branch_rela_needs_plt() 279 if (branch_rela_needs_plt(syms, &rela[i], dstidx)) in partition_branch_plt_relas() [all …]
|
| A D | vmlinux.lds.S | 252 .rela.dyn : ALIGN(8) { 253 *(.rela .rela*) 256 __rela_offset = ABSOLUTE(ADDR(.rela.dyn) - KIMAGE_VADDR); 257 __rela_size = SIZEOF(.rela.dyn);
|
| /linux/arch/h8300/kernel/ |
| A D | module.c | 16 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 20 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { in apply_relocate_add() 24 + rela[i].r_offset); in apply_relocate_add() 28 + ELF32_R_SYM(rela[i].r_info); in apply_relocate_add() 29 uint32_t v = sym->st_value + rela[i].r_addend; in apply_relocate_add() 31 switch (ELF32_R_TYPE(rela[i].r_info)) { in apply_relocate_add() 37 if (ELF32_R_SYM(rela[i].r_info)) in apply_relocate_add() 62 me->name, ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add() 69 me->name, rela[i].r_offset); in apply_relocate_add()
|
| /linux/arch/alpha/kernel/ |
| A D | module.c | 29 process_reloc_for_got(Elf64_Rela *rela, in process_reloc_for_got() argument 32 unsigned long r_sym = ELF64_R_SYM (rela->r_info); in process_reloc_for_got() 33 unsigned long r_type = ELF64_R_TYPE (rela->r_info); in process_reloc_for_got() 34 Elf64_Sxword r_addend = rela->r_addend; in process_reloc_for_got() 60 rela->r_info |= g->got_offset << 8; in process_reloc_for_got() 68 Elf64_Rela *rela; in module_frob_arch_sections() local 113 rela = (void *)hdr + s->sh_offset; in module_frob_arch_sections() 115 process_reloc_for_got(rela+i, chains, in module_frob_arch_sections() 162 location = base + rela[i].r_offset; in apply_relocate_add() 167 value = sym->st_value + rela[i].r_addend; in apply_relocate_add() [all …]
|
| /linux/arch/nios2/kernel/ |
| A D | module.c | 48 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 53 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { in apply_relocate_add() 58 + rela[i].r_offset); in apply_relocate_add() 63 + ELF32_R_SYM(rela[i].r_info)); in apply_relocate_add() 64 uint32_t v = sym->st_value + rela[i].r_addend; in apply_relocate_add() 67 ELF32_R_TYPE(rela[i].r_info), in apply_relocate_add() 68 rela[i].r_offset, strtab + sym->st_name); in apply_relocate_add() 70 switch (ELF32_R_TYPE(rela[i].r_info)) { in apply_relocate_add() 124 mod->name, ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add()
|
| /linux/arch/xtensa/kernel/ |
| A D | module.c | 54 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 62 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { in apply_relocate_add() 64 + rela[i].r_offset; in apply_relocate_add() 66 + ELF32_R_SYM(rela[i].r_info); in apply_relocate_add() 67 value = sym->st_value + rela[i].r_addend; in apply_relocate_add() 69 switch (ELF32_R_TYPE(rela[i].r_info)) { in apply_relocate_add() 158 ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add() 178 ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add() 184 ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add()
|
| /linux/arch/powerpc/kernel/ |
| A D | module_32.c | 33 if (ELF32_R_TYPE(rela[i].r_info) == R_PPC_REL24 && in count_relocs() 34 (r_info != ELF32_R_SYM(rela[i].r_info) || in count_relocs() 35 r_addend != rela[i].r_addend)) { in count_relocs() 37 r_info = ELF32_R_SYM(rela[i].r_info); in count_relocs() 38 r_addend = rela[i].r_addend; in count_relocs() 193 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 203 + rela[i].r_offset; in apply_relocate_add() 207 + ELF32_R_SYM(rela[i].r_info); in apply_relocate_add() 209 value = sym->st_value + rela[i].r_addend; in apply_relocate_add() 211 switch (ELF32_R_TYPE(rela[i].r_info)) { in apply_relocate_add() [all …]
|
| A D | module_64.c | 152 if (ELF64_R_TYPE(rela[i].r_info) == R_PPC_REL24 && in count_relocs() 153 (r_info != ELF64_R_SYM(rela[i].r_info) || in count_relocs() 154 r_addend != rela[i].r_addend)) { in count_relocs() 156 r_info = ELF64_R_SYM(rela[i].r_info); in count_relocs() 157 r_addend = rela[i].r_addend; in count_relocs() 533 Elf64_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 554 + rela[i].r_offset; in apply_relocate_add() 557 + ELF64_R_SYM(rela[i].r_info); in apply_relocate_add() 562 (long)rela[i].r_addend); in apply_relocate_add() 565 value = sym->st_value + rela[i].r_addend; in apply_relocate_add() [all …]
|
| A D | vmlinux.lds.S | 298 .rela.dyn : AT(ADDR(.rela.dyn) - LOAD_OFFSET) 301 *(.rela*) 404 *(.glink .iplt .plt .rela* .comment)
|
| /linux/arch/microblaze/kernel/ |
| A D | module.c | 23 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 31 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { in apply_relocate_add() 34 rela[i].r_offset; in apply_relocate_add() 36 ELF32_R_SYM(rela[i].r_info); in apply_relocate_add() 37 value = sym->st_value + rela[i].r_addend; in apply_relocate_add() 39 switch (ELF32_R_TYPE(rela[i].r_info)) { in apply_relocate_add() 84 ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add()
|
| /linux/arch/s390/kernel/ |
| A D | module.c | 76 switch (ELF_R_TYPE (rela->r_info)) { in check_rela() 125 Elf_Rela *rela; in module_frob_arch_sections() local 170 check_rela(rela + j, me); in module_frob_arch_sections() 244 loc = base + rela->r_offset; in apply_rela() 247 r_sym = ELF_R_SYM(rela->r_info); in apply_rela() 262 val += rela->r_addend; in apply_rela() 281 val += rela->r_addend - loc; in apply_rela() 381 val += rela->r_addend - loc; in apply_rela() 399 val = val + rela->r_addend - in apply_rela() 411 rela->r_addend - loc; in apply_rela() [all …]
|
| /linux/arch/hexagon/kernel/ |
| A D | module.c | 76 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 87 sym = sym_base + ELF32_R_SYM(rela[i].r_info); in apply_relocate_add() 90 location = loc_base + rela[i].r_offset; in apply_relocate_add() 93 value = sym->st_value + rela[i].r_addend; in apply_relocate_add() 96 i, value, location, ELF32_R_TYPE(rela[i].r_info), in apply_relocate_add() 100 switch (ELF32_R_TYPE(rela[i].r_info)) { in apply_relocate_add() 144 ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add()
|
| /linux/arch/s390/boot/ |
| A D | startup.c | 81 Elf64_Rela *rela_start, *rela_end, *rela; in handle_relocs() local 89 for (rela = rela_start; rela < rela_end; rela++) { in handle_relocs() 90 loc = rela->r_offset + offset; in handle_relocs() 91 val = rela->r_addend; in handle_relocs() 92 r_sym = ELF64_R_SYM(rela->r_info); in handle_relocs() 103 r_type = ELF64_R_TYPE(rela->r_info); in handle_relocs()
|
| /linux/arch/ia64/kernel/ |
| A D | module.c | 326 if (rela[i].r_info == rela[num].r_info && rela[i].r_addend == rela[num].r_addend) in duplicate_reloc() 334 count_gots (const Elf64_Rela *rela, unsigned int num) in count_gots() argument 341 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_gots() 351 if (!duplicate_reloc(rela, i)) in count_gots() 368 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_plts() 376 if (!duplicate_reloc(rela, i)) in count_plts() 393 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_fdescs() 414 if (!duplicate_reloc(rela, i)) in count_fdescs() 829 ret = do_reloc(mod, ELF64_R_TYPE(rela[i].r_info), in apply_relocate_add() 831 + ELF64_R_SYM(rela[i].r_info)), in apply_relocate_add() [all …]
|
| /linux/arch/arm64/kvm/hyp/nvhe/ |
| A D | gen-hyprel.c | 326 static void emit_rela_abs64(Elf64_Rela *rela, const char *sh_orig_name) in emit_rela_abs64() argument 342 elf64toh(rela->r_offset)); in emit_rela_abs64() 364 Elf64_Rela *rela; in emit_rela_section() local 372 for_each_rela(sh_rela, rela) { in emit_rela_section() 373 uint32_t type = (uint32_t)elf64toh(rela->r_info); in emit_rela_section() 376 assert_lt(elf64toh(rela->r_offset), elf64toh(sh_orig->sh_size), "0x%lx"); in emit_rela_section() 384 emit_rela_abs64(rela, sh_orig_name); in emit_rela_section()
|
| /linux/arch/parisc/kernel/ |
| A D | module.c | 207 static inline unsigned long count_gots(const Elf_Rela *rela, unsigned long n) in count_gots() argument 217 static inline unsigned long count_stubs(const Elf_Rela *rela, unsigned long n) in count_stubs() argument 221 for (; n > 0; n--, rela++) in count_stubs() 223 switch (ELF32_R_TYPE(rela->r_info)) { in count_stubs() 233 static inline unsigned long count_gots(const Elf_Rela *rela, unsigned long n) in count_gots() argument 237 for (; n > 0; n--, rela++) in count_gots() 239 switch (ELF64_R_TYPE(rela->r_info)) { in count_gots() 254 for (; n > 0; n--, rela++) in count_fdescs() 256 switch (ELF64_R_TYPE(rela->r_info)) { in count_fdescs() 269 for (; n > 0; n--, rela++) in count_stubs() [all …]
|
| /linux/Documentation/livepatch/ |
| A D | module-elf-format.rst | 45 embedding special "dynrela" (dynamic rela) sections in the resulting patch 103 Every symbol referenced by a rela in a livepatch relocation section is a 120 .klp.rela.objname.section_name 126 The relocation section name is prefixed with the string ".klp.rela." 142 .klp.rela.ext4.text.ext4_attr_store 143 .klp.rela.vmlinux.text.cmdline_proc_show 153 …[29] .klp.rela.9p.text.caches.show RELA 0000000000000000 002d58 0000c0 18 AIo 6… 174 …Relocation section '.klp.rela.btrfs.text.btrfs_feature_attr_show' at offset 0x2ba0 contains 4 entr… 220 For example, take this particular rela from a livepatch module::: 222 …Relocation section '.klp.rela.btrfs.text.btrfs_feature_attr_show' at offset 0x2ba0 contains 4 entr… [all …]
|
| /linux/arch/x86/boot/compressed/ |
| A D | vmlinux.lds.S | 113 .rela.dyn : { 114 *(.rela.*) *(.rela_*) 116 ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
|
| /linux/tools/objtool/ |
| A D | orc_dump.c | 76 GElf_Rela rela; in orc_dump() local 157 if (!gelf_getrela(rela_orc_ip, i, &rela)) { in orc_dump() 162 if (!gelf_getsym(symtab, GELF_R_SYM(rela.r_info), &sym)) { in orc_dump() 192 printf("%s+%llx:", name, (unsigned long long)rela.r_addend); in orc_dump()
|
| A D | elf.c | 569 if (!gelf_getrela(sec->data, i, &reloc->rela)) { in read_rela_reloc() 573 reloc->type = GELF_R_TYPE(reloc->rela.r_info); in read_rela_reloc() 574 reloc->addend = reloc->rela.r_addend; in read_rela_reloc() 575 reloc->offset = reloc->rela.r_offset; in read_rela_reloc() 576 *symndx = GELF_R_SYM(reloc->rela.r_info); in read_rela_reloc() 948 reloc->rela.r_offset = reloc->offset; in elf_rebuild_rela_reloc_section() 949 reloc->rela.r_addend = reloc->addend; in elf_rebuild_rela_reloc_section() 951 if (!gelf_update_rela(sec->data, idx, &reloc->rela)) { in elf_rebuild_rela_reloc_section() 1003 reloc->rela.r_addend = reloc->addend; in elf_write_reloc() 1004 reloc->rela.r_offset = reloc->offset; in elf_write_reloc() [all …]
|
| /linux/arch/powerpc/boot/ |
| A D | zImage.lds.S | 50 .rela.dyn : 55 *(.rela*)
|
| /linux/arch/riscv/kernel/ |
| A D | module-sections.c | 63 static bool duplicate_rela(const Elf_Rela *rela, int idx) in duplicate_rela() argument 67 if (is_rela_equal(&rela[i], &rela[idx])) in duplicate_rela()
|