/Linux-v4.19/arch/um/kernel/ |
D | dyn.lds.S | 30 .rela.init : { *(.rela.init) } 32 .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } 34 .rela.fini : { *(.rela.fini) } 36 .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } 38 .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } 40 .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } 42 .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } 44 .rela.ctors : { *(.rela.ctors) } 46 .rela.dtors : { *(.rela.dtors) } 48 .rela.got : { *(.rela.got) } [all …]
|
D | uml.lds.S | 57 .rela.plt : { 58 *(.rela.plt) 60 *(.rela.iplt)
|
/Linux-v4.19/tools/objtool/ |
D | elf.c | 107 struct rela *find_rela_by_dest_range(struct section *sec, unsigned long offset, in find_rela_by_dest_range() 110 struct rela *rela; in find_rela_by_dest_range() local 113 if (!sec->rela) in find_rela_by_dest_range() 117 hash_for_each_possible(sec->rela->rela_hash, rela, hash, o) in find_rela_by_dest_range() 118 if (rela->offset == o) in find_rela_by_dest_range() 119 return rela; in find_rela_by_dest_range() 124 struct rela *find_rela_by_dest(struct section *sec, unsigned long offset) in find_rela_by_dest() 347 struct rela *rela; in read_relas() local 362 sec->base->rela = sec; in read_relas() 365 rela = malloc(sizeof(*rela)); in read_relas() [all …]
|
D | check.c | 114 struct rela *rela; in ignore_func() local 117 if (file->whitelist && file->whitelist->rela) in ignore_func() 118 list_for_each_entry(rela, &file->whitelist->rela->rela_list, list) { in ignore_func() 119 if (rela->sym->type == STT_SECTION && in ignore_func() 120 rela->sym->sec == func->sec && in ignore_func() 121 rela->addend == func->offset) in ignore_func() 123 if (rela->sym->type == STT_FUNC && rela->sym == func) in ignore_func() 336 struct rela *rela; in add_dead_ends() local 355 list_for_each_entry(rela, &sec->rela_list, list) { in add_dead_ends() 356 if (rela->sym->type != STT_SECTION) { in add_dead_ends() [all …]
|
D | orc_gen.c | 101 struct rela *rela; in create_orc_entry() local 113 rela = malloc(sizeof(*rela)); in create_orc_entry() 114 if (!rela) { in create_orc_entry() 118 memset(rela, 0, sizeof(*rela)); in create_orc_entry() 120 rela->sym = insn_sec->sym; in create_orc_entry() 121 rela->addend = insn_off; in create_orc_entry() 122 rela->type = R_X86_64_PC32; in create_orc_entry() 123 rela->offset = idx * sizeof(int); in create_orc_entry() 125 list_add_tail(&rela->list, &ip_relasec->rela_list); in create_orc_entry() 126 hash_add(ip_relasec->rela_hash, &rela->hash, rela->offset); in create_orc_entry()
|
D | elf.h | 45 struct section *base, *rela; member 67 struct rela { struct 70 GElf_Rela rela; member 92 struct rela *find_rela_by_dest(struct section *sec, unsigned long offset); argument 93 struct rela *find_rela_by_dest_range(struct section *sec, unsigned long offset,
|
D | orc_dump.c | 85 GElf_Rela rela; in orc_dump() local 164 if (!gelf_getrela(rela_orc_ip, i, &rela)) { in orc_dump() 169 if (!gelf_getsym(symtab, GELF_R_SYM(rela.r_info), &sym)) { in orc_dump() 191 printf("%s+%llx:", name, (unsigned long long)rela.r_addend); in orc_dump()
|
/Linux-v4.19/arch/mips/kernel/ |
D | module.c | 57 u32 base, Elf_Addr v, bool rela) in apply_r_mips_none() argument 63 u32 base, Elf_Addr v, bool rela) in apply_r_mips_32() argument 71 u32 base, Elf_Addr v, bool rela) in apply_r_mips_26() argument 92 u32 base, Elf_Addr v, bool rela) in apply_r_mips_hi16() argument 96 if (rela) { in apply_r_mips_hi16() 131 u32 base, Elf_Addr v, bool rela) in apply_r_mips_lo16() argument 137 if (rela) { in apply_r_mips_lo16() 234 u32 base, Elf_Addr v, bool rela) in apply_r_mips_pc16() argument 240 u32 base, Elf_Addr v, bool rela) in apply_r_mips_pc21() argument 246 u32 base, Elf_Addr v, bool rela) in apply_r_mips_pc26() argument [all …]
|
/Linux-v4.19/arch/h8300/kernel/ |
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-v4.19/arch/nios2/kernel/ |
D | module.c | 49 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 54 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { in apply_relocate_add() 59 + rela[i].r_offset); in apply_relocate_add() 64 + ELF32_R_SYM(rela[i].r_info)); in apply_relocate_add() 65 uint32_t v = sym->st_value + rela[i].r_addend; in apply_relocate_add() 68 ELF32_R_TYPE(rela[i].r_info), in apply_relocate_add() 69 rela[i].r_offset, strtab + sym->st_name); in apply_relocate_add() 71 switch (ELF32_R_TYPE(rela[i].r_info)) { in apply_relocate_add() 125 mod->name, ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add()
|
/Linux-v4.19/arch/alpha/kernel/ |
D | module.c | 41 process_reloc_for_got(Elf64_Rela *rela, in process_reloc_for_got() argument 44 unsigned long r_sym = ELF64_R_SYM (rela->r_info); in process_reloc_for_got() 45 unsigned long r_type = ELF64_R_TYPE (rela->r_info); in process_reloc_for_got() 46 Elf64_Sxword r_addend = rela->r_addend; in process_reloc_for_got() 72 rela->r_info |= g->got_offset << 8; in process_reloc_for_got() 80 Elf64_Rela *rela; in module_frob_arch_sections() local 125 rela = (void *)hdr + s->sh_offset; in module_frob_arch_sections() 127 process_reloc_for_got(rela+i, chains, in module_frob_arch_sections() 149 Elf64_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 150 unsigned long i, n = sechdrs[relsec].sh_size / sizeof(*rela); in apply_relocate_add() [all …]
|
/Linux-v4.19/arch/xtensa/kernel/ |
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-v4.19/arch/microblaze/kernel/ |
D | module.c | 26 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 37 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { in apply_relocate_add() 40 rela[i].r_offset; in apply_relocate_add() 42 ELF32_R_SYM(rela[i].r_info); in apply_relocate_add() 43 value = sym->st_value + rela[i].r_addend; in apply_relocate_add() 45 switch (ELF32_R_TYPE(rela[i].r_info)) { in apply_relocate_add() 113 ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add()
|
/Linux-v4.19/arch/powerpc/kernel/ |
D | module_32.c | 36 static unsigned int count_relocs(const Elf32_Rela *rela, unsigned int num) in count_relocs() argument 45 if (ELF32_R_TYPE(rela[i].r_info) == R_PPC_REL24 && in count_relocs() 46 (r_info != ELF32_R_SYM(rela[i].r_info) || in count_relocs() 47 r_addend != rela[i].r_addend)) { in count_relocs() 49 r_info = ELF32_R_SYM(rela[i].r_info); in count_relocs() 50 r_addend = rela[i].r_addend; in count_relocs() 219 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 226 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { in apply_relocate_add() 229 + rela[i].r_offset; in apply_relocate_add() 233 + ELF32_R_SYM(rela[i].r_info); in apply_relocate_add() [all …]
|
D | module_64.c | 190 static unsigned int count_relocs(const Elf64_Rela *rela, unsigned int num) in count_relocs() argument 200 if (ELF64_R_TYPE(rela[i].r_info) == R_PPC_REL24 && in count_relocs() 201 (r_info != ELF64_R_SYM(rela[i].r_info) || in count_relocs() 202 r_addend != rela[i].r_addend)) { in count_relocs() 204 r_info = ELF64_R_SYM(rela[i].r_info); in count_relocs() 205 r_addend = rela[i].r_addend; in count_relocs() 546 Elf64_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 564 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { in apply_relocate_add() 567 + rela[i].r_offset; in apply_relocate_add() 570 + ELF64_R_SYM(rela[i].r_info); in apply_relocate_add() [all …]
|
D | vmlinux.lds.S | 272 .rela.dyn : AT(ADDR(.rela.dyn) - LOAD_OFFSET) 275 *(.rela*) 375 *(.glink .iplt .plt .rela* .comment)
|
/Linux-v4.19/arch/s390/kernel/ |
D | module.c | 53 static void check_rela(Elf_Rela *rela, struct module *me) in check_rela() argument 57 info = me->arch.syminfo + ELF_R_SYM (rela->r_info); in check_rela() 58 switch (ELF_R_TYPE (rela->r_info)) { in check_rela() 107 Elf_Rela *rela; in module_frob_arch_sections() local 150 rela = (void *) hdr + sechdrs[i].sh_offset; in module_frob_arch_sections() 152 check_rela(rela + j, me); in module_frob_arch_sections() 208 static int apply_rela(Elf_Rela *rela, Elf_Addr base, Elf_Sym *symtab, in apply_rela() argument 217 loc = base + rela->r_offset; in apply_rela() 220 r_sym = ELF_R_SYM(rela->r_info); in apply_rela() 221 r_type = ELF_R_TYPE(rela->r_info); in apply_rela() [all …]
|
/Linux-v4.19/arch/hexagon/kernel/ |
D | module.c | 89 Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; in apply_relocate_add() local 100 sym = sym_base + ELF32_R_SYM(rela[i].r_info); in apply_relocate_add() 103 location = loc_base + rela[i].r_offset; in apply_relocate_add() 106 value = sym->st_value + rela[i].r_addend; in apply_relocate_add() 109 i, value, location, ELF32_R_TYPE(rela[i].r_info), in apply_relocate_add() 113 switch (ELF32_R_TYPE(rela[i].r_info)) { in apply_relocate_add() 157 ELF32_R_TYPE(rela[i].r_info)); in apply_relocate_add()
|
/Linux-v4.19/arch/arm64/kernel/ |
D | module-plts.c | 19 u64 module_emit_plt_entry(struct module *mod, void *loc, const Elf64_Rela *rela, in module_emit_plt_entry() argument 26 u64 val = sym->st_value + rela->r_addend; in module_emit_plt_entry() 102 static bool duplicate_rel(const Elf64_Rela *rela, int num) in duplicate_rel() argument 109 return num > 0 && cmp_rela(rela + num, rela + num - 1) == 0; in duplicate_rel() 112 static unsigned int count_plts(Elf64_Sym *syms, Elf64_Rela *rela, int num, in count_plts() argument 122 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_plts() 139 s = syms + ELF64_R_SYM(rela[i].r_info); in count_plts() 156 if (rela[i].r_addend != 0 || !duplicate_rel(rela, i)) in count_plts() 179 min_align = 2ULL << ffz(rela[i].r_offset | 0x7); in count_plts()
|
D | vmlinux.lds.S | 179 .rela : ALIGN(8) { 180 *(.rela .rela*) 183 __rela_offset = ABSOLUTE(ADDR(.rela) - KIMAGE_VADDR); 184 __rela_size = SIZEOF(.rela);
|
/Linux-v4.19/arch/ia64/kernel/ |
D | module.c | 321 duplicate_reloc (const Elf64_Rela *rela, unsigned int num) in duplicate_reloc() argument 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() 361 count_plts (const Elf64_Rela *rela, unsigned int num) in count_plts() argument 368 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_plts() 376 if (!duplicate_reloc(rela, i)) in count_plts() 387 count_fdescs (const Elf64_Rela *rela, unsigned int num) in count_fdescs() argument 393 switch (ELF64_R_TYPE(rela[i].r_info)) { in count_fdescs() [all …]
|
/Linux-v4.19/arch/parisc/kernel/ |
D | module.c | 228 static inline unsigned long count_gots(const Elf_Rela *rela, unsigned long n) in count_gots() argument 233 static inline unsigned long count_fdescs(const Elf_Rela *rela, unsigned long n) in count_fdescs() argument 238 static inline unsigned long count_stubs(const Elf_Rela *rela, unsigned long n) in count_stubs() argument 242 for (; n > 0; n--, rela++) in count_stubs() 244 switch (ELF32_R_TYPE(rela->r_info)) { in count_stubs() 254 static inline unsigned long count_gots(const Elf_Rela *rela, unsigned long n) in count_gots() argument 258 for (; n > 0; n--, rela++) in count_gots() 260 switch (ELF64_R_TYPE(rela->r_info)) { in count_gots() 271 static inline unsigned long count_fdescs(const Elf_Rela *rela, unsigned long n) in count_fdescs() argument 275 for (; n > 0; n--, rela++) in count_fdescs() [all …]
|
/Linux-v4.19/Documentation/livepatch/ |
D | module-elf-format.txt | 64 embedding special "dynrela" (dynamic rela) sections in the resulting patch 126 Every symbol referenced by a rela in a livepatch relocation section is a 147 .klp.rela.objname.section_name 152 [A] The relocation section name is prefixed with the string ".klp.rela." 159 .klp.rela.ext4.text.ext4_attr_store 160 .klp.rela.vmlinux.text.cmdline_proc_show 168 …[29] .klp.rela.9p.text.caches.show RELA 0000000000000000 002d58 0000c0 18 AIo 6… 169 …[30] .klp.rela.btrfs.text.btrfs.feature.attr.show RELA 0000000000000000 002e18 000060 18 AIo 6… 171 …[34] .klp.rela.ext4.text.ext4.attr.store RELA 0000000000000000 002fd8 0000d8 18 AIo 6… 172 …[35] .klp.rela.ext4.text.ext4.attr.show RELA 0000000000000000 0030b0 000150 18 AIo 6… [all …]
|
/Linux-v4.19/arch/powerpc/boot/ |
D | zImage.lds.S | 39 .rela.dyn : 44 *(.rela*)
|
/Linux-v4.19/arch/riscv/kernel/ |
D | module-sections.c | 60 static bool duplicate_rela(const Elf64_Rela *rela, int idx) in duplicate_rela() argument 64 if (is_rela_equal(&rela[i], &rela[idx])) in duplicate_rela()
|