Home
last modified time | relevance | path

Searched refs:reloc (Results 1 – 25 of 59) sorted by relevance

123

/linux/tools/objtool/include/objtool/
H A Delf.h55 struct reloc *relocs;
93 struct reloc *relocs;
99 struct reloc {
158 struct reloc *elf_create_reloc(struct elf *elf, struct section *sec, in has_multiple_files()
162 struct reloc *elf_init_reloc(struct elf *elf, struct section *rsec, in elf_addr_size()
166 struct reloc *elf_init_reloc_text_sym(struct elf *elf, struct section *sec, in elf_rela_size()
172 struct reloc *elf_init_reloc_data_sym(struct elf *elf, struct section *sec, in elf_data_rela_type()
194 struct reloc *find_reloc_by_dest(const struct elf *elf, struct section *sec, unsigned long offset); in mark_sec_changed()
195 struct reloc *find_reloc_by_dest_range(const struct elf *elf, struct section *sec, in mark_sec_changed()
316 static inline unsigned int reloc_idx(struct reloc *relo argument
79 struct reloc { global() struct
83 _sym_next_relocreloc global() argument
203 reloc_idx(struct reloc * reloc) reloc_idx() argument
208 reloc_rel(struct reloc * reloc) reloc_rel() argument
215 is_32bit_reloc(struct reloc * reloc) is_32bit_reloc() argument
226 __get_reloc_field(reloc,field) global() argument
233 __set_reloc_field(reloc,field,val) global() argument
241 reloc_offset(struct reloc * reloc) reloc_offset() argument
246 set_reloc_offset(struct elf * elf,struct reloc * reloc,u64 offset) set_reloc_offset() argument
252 reloc_addend(struct reloc * reloc) reloc_addend() argument
257 set_reloc_addend(struct elf * elf,struct reloc * reloc,s64 addend) set_reloc_addend() argument
264 reloc_sym(struct reloc * reloc) reloc_sym() argument
273 reloc_type(struct reloc * reloc) reloc_type() argument
282 set_reloc_sym(struct elf * elf,struct reloc * reloc,unsigned int sym) set_reloc_sym() argument
292 set_reloc_type(struct elf * elf,struct reloc * reloc,unsigned int type) set_reloc_type() argument
306 is_jump_table(struct reloc * reloc) is_jump_table() argument
311 set_jump_table(struct reloc * reloc) set_jump_table() argument
321 set_sym_next_reloc(struct reloc * reloc,struct reloc * next) set_sym_next_reloc() argument
340 for_each_reloc(rsec,reloc) global() argument
346 for_each_reloc_from(rsec,reloc) global() argument
375 reloc_hash(struct reloc * reloc) reloc_hash() argument
[all...]
H A Darch.h86 s64 arch_insn_adjusted_addend(struct instruction *insn, struct reloc *reloc);
87 u64 arch_adjusted_addend(struct reloc *reloc);
100 bool arch_pc_relative_reloc(struct reloc *reloc);
101 bool arch_absolute_reloc(struct elf *elf, struct reloc *reloc);
103 unsigned int arch_reloc_size(struct reloc *reloc);
[all...]
H A Dspecial.h37 struct reloc *reloc);
38 struct reloc *arch_find_switch_table(struct objtool_file *file,
/linux/tools/objtool/arch/loongarch/
H A Dspecial.c8 struct reloc *reloc) in arch_support_alt_relocation() argument
24 struct reloc *reloc; in get_rodata_table_size_by_table_annotate() local
38 for_each_reloc(rsec, reloc) { in get_rodata_table_size_by_table_annotate()
39 if (reloc->sym->sec->rodata) in get_rodata_table_size_by_table_annotate()
42 if (strcmp(insn->sec->name, reloc->sym->sec->name)) in get_rodata_table_size_by_table_annotate()
51 orig_table->insn_offset = reloc->sym->offset + reloc_addend(reloc); in get_rodata_table_size_by_table_annotate()
52 reloc in get_rodata_table_size_by_table_annotate()
117 struct reloc *reloc; find_reloc_by_table_annotate() local
147 struct reloc *reloc; find_reloc_of_rodata_c_jump_table() local
[all...]
/linux/tools/objtool/
H A Dklp-diff.c191 struct reloc *reloc; in read_sym_checksums() local
196 reloc = find_reloc_by_dest(elf, sec, i * sizeof(*sym_checksum)); in read_sym_checksums()
197 if (!reloc) { in read_sym_checksums()
202 sym = reloc->sym; in read_sym_checksums()
842 static bool is_reloc_allowed(struct reloc *reloc) in is_reloc_allowed() argument
844 return section_reference_needed(reloc->sym->sec) == is_sec_sym(reloc->sym); in is_reloc_allowed()
914 static bool klp_reloc_needed(struct reloc *patched_reloc) in klp_reloc_needed()
955 static int convert_reloc_sym_to_secsym(struct elf *elf, struct reloc *reloc) in convert_reloc_sym_to_secsym() argument
957 struct symbol *sym = reloc->sym; in convert_reloc_sym_to_secsym()
963 reloc->sym = sec->sym; in convert_reloc_sym_to_secsym()
[all …]
H A Delf.c338 struct reloc *find_reloc_by_dest_range(const struct elf *elf, struct section *sec, in find_reloc_by_dest_range()
341 struct reloc *reloc, *r = NULL; in find_reloc_by_dest_range() local
350 elf_hash_for_each_possible(reloc, reloc, hash, in find_reloc_by_dest_range()
352 if (reloc->sec != rsec) in find_reloc_by_dest_range()
355 if (reloc_offset(reloc) >= offset && in find_reloc_by_dest_range()
356 reloc_offset(reloc) < offset + len) { in find_reloc_by_dest_range()
357 if (!r || reloc_offset(reloc) < reloc_offset(r)) in find_reloc_by_dest_range()
358 r = reloc; in find_reloc_by_dest_range()
368 struct reloc *find_reloc_by_dest(const struct elf *elf, struct section *sec, unsigned long offset) in find_reloc_by_dest()
768 struct reloc *reloc; in elf_update_sym_relocs() local
[all …]
H A Dcheck.c138 static inline struct reloc *insn_jump_table(struct instruction *insn) in insn_jump_table()
558 struct reloc *reloc; in add_pv_ops() local
578 reloc = find_reloc_by_dest_range(file->elf, sym->sec, off, end - off); in add_pv_ops()
579 if (!reloc) in add_pv_ops()
582 idx = (reloc_offset(reloc) - sym->offset) / sizeof(unsigned long); in add_pv_ops()
584 func = reloc->sym; in add_pv_ops()
586 func = find_symbol_by_offset(reloc->sym->sec, in add_pv_ops()
587 reloc_addend(reloc)); in add_pv_ops()
589 ERROR_FUNC(reloc->sym->sec, reloc_addend(reloc), in add_pv_ops()
597 off = reloc_offset(reloc) + 1; in add_pv_ops()
[all …]
/linux/drivers/gpu/drm/radeon/
H A Dr600_cs.c974 struct radeon_bo_list *reloc; in r600_cs_check_reg() local
1019 r = radeon_cs_packet_next_reloc(p, &reloc, 0); in r600_cs_check_reg()
1025 ib[idx] += (u32)((reloc->gpu_offset >> 8) & 0xffffffff); in r600_cs_check_reg()
1037 r = radeon_cs_packet_next_reloc(p, &reloc, r600_nomm); in r600_cs_check_reg()
1046 if (reloc->tiling_flags & RADEON_TILING_MACRO) { in r600_cs_check_reg()
1079 r = radeon_cs_packet_next_reloc(p, &reloc, r600_nomm); in r600_cs_check_reg()
1087 ib[idx] += (u32)((reloc->gpu_offset >> 8) & 0xffffffff); in r600_cs_check_reg()
1088 track->vgt_strmout_bo[tmp] = reloc->robj; in r600_cs_check_reg()
1089 track->vgt_strmout_bo_mc[tmp] = reloc->gpu_offset; in r600_cs_check_reg()
1102 r = radeon_cs_packet_next_reloc(p, &reloc, r600_nomm); in r600_cs_check_reg()
[all …]
H A Dr300.c631 struct radeon_bo_list *reloc; in r300_packet0_check() local
665 r = radeon_cs_packet_next_reloc(p, &reloc, 0); in r300_packet0_check()
672 track->cb[i].robj = reloc->robj; in r300_packet0_check()
675 ib[idx] = idx_value + ((u32)reloc->gpu_offset); in r300_packet0_check()
678 r = radeon_cs_packet_next_reloc(p, &reloc, 0); in r300_packet0_check()
685 track->zb.robj = reloc->robj; in r300_packet0_check()
688 ib[idx] = idx_value + ((u32)reloc->gpu_offset); in r300_packet0_check()
707 r = radeon_cs_packet_next_reloc(p, &reloc, 0); in r300_packet0_check()
717 ((idx_value & ~31) + (u32)reloc->gpu_offset); in r300_packet0_check()
719 if (reloc->tiling_flags & RADEON_TILING_MACRO) in r300_packet0_check()
[all …]
H A Dr100.c1296 struct radeon_bo_list *reloc; in r100_reloc_pitch_offset() local
1299 r = radeon_cs_packet_next_reloc(p, &reloc, 0); in r100_reloc_pitch_offset()
1309 tmp += (((u32)reloc->gpu_offset) >> 10); in r100_reloc_pitch_offset()
1312 if (reloc->tiling_flags & RADEON_TILING_MACRO) in r100_reloc_pitch_offset()
1314 if (reloc->tiling_flags & RADEON_TILING_MICRO) { in r100_reloc_pitch_offset()
1335 struct radeon_bo_list *reloc; in r100_packet3_load_vbpntr() local
1352 r = radeon_cs_packet_next_reloc(p, &reloc, 0); in r100_packet3_load_vbpntr()
1360 ib[idx+1] = radeon_get_ib_value(p, idx + 1) + ((u32)reloc->gpu_offset); in r100_packet3_load_vbpntr()
1363 track->arrays[i + 0].robj = reloc->robj; in r100_packet3_load_vbpntr()
1365 r = radeon_cs_packet_next_reloc(p, &reloc, 0); in r100_packet3_load_vbpntr()
[all …]
/linux/tools/objtool/arch/x86/
H A Ddecode.c90 s64 arch_insn_adjusted_addend(struct instruction *insn, struct reloc *reloc) in arch_insn_adjusted_addend() argument
92 s64 addend = reloc_addend(reloc); in arch_insn_adjusted_addend()
94 if (arch_pc_relative_reloc(reloc)) in arch_insn_adjusted_addend()
95 addend += insn->offset + insn->len - reloc_offset(reloc); in arch_insn_adjusted_addend()
121 u64 arch_adjusted_addend(struct reloc *reloc) in arch_adjusted_addend() argument
123 unsigned int type = reloc_type(reloc); in arch_adjusted_addend()
124 s64 addend = reloc_addend(reloc); in arch_adjusted_addend()
131 if (type != R_X86_64_PC32 || !is_text_sec(reloc->sec->base)) in arch_adjusted_addend()
134 scan_for_insn(reloc->sec->base, reloc_offset(reloc), in arch_adjusted_addend()
137 return addend + insn_off + insn_len - reloc_offset(reloc); in arch_adjusted_addend()
[all …]
H A Dspecial.c40 struct reloc *reloc)
85 struct reloc *arch_find_switch_table(struct objtool_file *file, in arch_find_switch_table()
89 struct reloc *text_reloc, *rodata_reloc; in arch_find_switch_table()
36 arch_support_alt_relocation(struct special_alt * special_alt,struct instruction * insn,struct reloc * reloc) arch_support_alt_relocation() argument
/linux/drivers/gpu/host1x/
H A Djob.c153 struct host1x_reloc *reloc = &job->relocs[i]; in pin_job() local
158 reloc->target.bo = host1x_bo_get(reloc->target.bo); in pin_job()
159 if (!reloc->target.bo) { in pin_job()
164 bo = reloc->target.bo; in pin_job()
166 switch (reloc->flags & mask) { in pin_job()
287 struct host1x_reloc *reloc = &job->relocs[i]; in do_relocs() local
289 reloc->target.offset) >> reloc->shift; in do_relocs()
293 if (cmdbuf != reloc->cmdbuf.bo) in do_relocs()
298 reloc->cmdbuf.offset / sizeof(u32) + in do_relocs()
312 target = cmdbuf_addr + reloc->cmdbuf.offset; in do_relocs()
[all …]
/linux/arch/riscv/kernel/tests/module_test/
H A Dtest_uleb128.S23 .reloc second, R_RISCV_SET_ULEB128, second
24 .reloc second, R_RISCV_SUB_ULEB128, first
29 .reloc fourth, R_RISCV_SET_ULEB128, fourth
30 .reloc fourth, R_RISCV_SUB_ULEB128, third
H A Dtest_sub32.S18 .reloc sub32, R_RISCV_ADD32, second
19 .reloc sub32, R_RISCV_SUB32, first
H A Dtest_sub16.S18 .reloc sub16, R_RISCV_ADD16, second
19 .reloc sub16, R_RISCV_SUB16, first
H A Dtest_sub8.S18 .reloc sub8, R_RISCV_ADD8, second
19 .reloc sub8, R_RISCV_SUB8, first
H A Dtest_sub6.S18 .reloc sub6, R_RISCV_SET6, second
19 .reloc sub6, R_RISCV_SUB6, first
H A Dtest_sub64.S22 .reloc sub64, R_RISCV_ADD64, second
23 .reloc sub64, R_RISCV_SUB64, first
/linux/arch/x86/boot/compressed/
H A Dmisc.c201 int *reloc; in handle_relocations() local
252 for (reloc = output + output_len - sizeof(*reloc); *reloc; reloc--) { in handle_relocations()
253 long extended = *reloc; in handle_relocations()
263 for (reloc--; *reloc; reloc--) { in handle_relocations()
264 long extended = *reloc; in handle_relocations()
/linux/tools/objtool/arch/powerpc/
H A Dspecial.c10 struct reloc *reloc) in arch_support_alt_relocation() argument
15 struct reloc *arch_find_switch_table(struct objtool_file *file, in arch_find_switch_table()
/linux/fs/isofs/
H A Drock.c324 struct inode *reloc; in parse_rock_ridge_inode_internal() local
535 reloc = isofs_iget_reloc(inode->i_sb, reloc_block, 0); in parse_rock_ridge_inode_internal()
536 if (IS_ERR(reloc)) { in parse_rock_ridge_inode_internal()
537 ret = PTR_ERR(reloc); in parse_rock_ridge_inode_internal()
540 inode->i_mode = reloc->i_mode; in parse_rock_ridge_inode_internal()
541 set_nlink(inode, reloc->i_nlink); in parse_rock_ridge_inode_internal()
542 inode->i_uid = reloc->i_uid; in parse_rock_ridge_inode_internal()
543 inode->i_gid = reloc->i_gid; in parse_rock_ridge_inode_internal()
544 inode->i_rdev = reloc->i_rdev; in parse_rock_ridge_inode_internal()
545 inode->i_size = reloc->i_size; in parse_rock_ridge_inode_internal()
[all …]
/linux/arch/parisc/kernel/
H A Dkexec.c76 void (*reloc)(unsigned long head, in machine_kexec() local
89 reloc = (void *)&desc; in machine_kexec()
92 reloc = (void *)virt; in machine_kexec()
107 reloc(image->head & PAGE_MASK, image->start, phys); in machine_kexec()
/linux/scripts/
H A Dcheck_extable.sh42 eval $(echo $reloc | sed 's/\([^+]\+\)+\?\(0x[0-9a-f]\+\)\?/symbol="\1"; symbol_offset="\2"/')
109 for reloc in ${suspicious_relocs}; do
112 find_symbol_and_offset_from_reloc ${reloc}
/linux/fs/
H A Dbinfmt_flat.c350 ptr = (unsigned long __user *)(current->mm->start_code + r.reloc.offset); in old_reloc()
352 ptr = (unsigned long __user *)(current->mm->start_data + r.reloc.offset); in old_reloc()
358 r.reloc.offset, ptr, val, segment[r.reloc.type]); in old_reloc()
360 switch (r.reloc.type) { in old_reloc()
371 pr_err("Unknown relocation type=%x\n", r.reloc.type); in old_reloc()
413 __be32 __user *reloc; in load_flat_file() local
586 reloc = (__be32 __user *) in load_flat_file()
612 reloc = (__be32 __user *) in load_flat_file()
783 if (get_user(tmp, reloc + i)) in load_flat_file()
826 if (get_user(relval, reloc + i)) in load_flat_file()

123