Lines Matching refs:sechdrs

208 				    const Elf64_Shdr *sechdrs)
216 if (sechdrs[i].sh_type == SHT_RELA) {
219 (void *)sechdrs[i].sh_addr,
220 sechdrs[i].sh_size / sizeof(Elf64_Rela));
227 sort((void *)sechdrs[i].sh_addr,
228 sechdrs[i].sh_size / sizeof(Elf64_Rela),
231 relocs += count_relocs((void *)sechdrs[i].sh_addr,
232 sechdrs[i].sh_size
236 relocs += count_relocs((void *)sechdrs[i].sh_addr,
237 sechdrs[i].sh_size
258 static int count_pcpu_relocs(const Elf64_Shdr *sechdrs,
272 sym = (Elf64_Sym *)sechdrs[symindex].sh_addr
289 const Elf64_Shdr *sechdrs,
297 if (sechdrs[i].sh_type == SHT_SYMTAB) {
306 if (sechdrs[i].sh_type == SHT_RELA) {
308 pr_debug("Ptr: %p. Number: %llu\n", (void *)sechdrs[i].sh_addr,
309 sechdrs[i].sh_size / sizeof(Elf64_Rela));
317 sort((void *)sechdrs[i].sh_addr,
318 sechdrs[i].sh_size / sizeof(Elf64_Rela),
321 relocs += count_relocs((void *)sechdrs[i].sh_addr,
322 sechdrs[i].sh_size
333 relocs += count_pcpu_relocs(sechdrs,
334 (void *)sechdrs[i].sh_addr,
335 sechdrs[i].sh_size
378 static Elf64_Sym *find_dot_toc(Elf64_Shdr *sechdrs,
385 syms = (Elf64_Sym *)sechdrs[symindex].sh_addr;
386 numsyms = sechdrs[symindex].sh_size / sizeof(Elf64_Sym);
404 Elf64_Shdr *sechdrs,
412 if (strcmp(secstrings + sechdrs[i].sh_name, ".stubs") == 0)
415 else if (strcmp(secstrings + sechdrs[i].sh_name, ".data..percpu") == 0)
417 else if (strcmp(secstrings + sechdrs[i].sh_name, ".mygot") == 0) {
419 if (sechdrs[i].sh_addralign < 8)
420 sechdrs[i].sh_addralign = 8;
423 else if (strcmp(secstrings + sechdrs[i].sh_name, ".toc") == 0) {
425 if (sechdrs[i].sh_addralign < 8)
426 sechdrs[i].sh_addralign = 8;
428 else if (strcmp(secstrings+sechdrs[i].sh_name,"__versions")==0)
429 dedotify_versions((void *)hdr + sechdrs[i].sh_offset,
430 sechdrs[i].sh_size);
432 if (sechdrs[i].sh_type == SHT_SYMTAB)
433 dedotify((void *)hdr + sechdrs[i].sh_offset,
434 sechdrs[i].sh_size / sizeof(Elf64_Sym),
436 + sechdrs[sechdrs[i].sh_link].sh_offset);
452 sechdrs[me->arch.got_section].sh_size = get_got_size(hdr, sechdrs, me);
463 sechdrs[me->arch.stubs_section].sh_size = get_stubs_size(hdr, sechdrs);
580 static inline unsigned long my_r2(const Elf64_Shdr *sechdrs, struct module *me)
583 return (sechdrs[me->arch.toc_section].sh_addr & ~0xfful) + 0x8000;
590 static inline int create_stub(const Elf64_Shdr *sechdrs,
634 reladdr = (unsigned long)entry - my_r2(sechdrs, me);
667 static unsigned long stub_for_addr(const Elf64_Shdr *sechdrs,
675 num_stubs = sechdrs[me->arch.stubs_section].sh_size / sizeof(*stubs);
678 stubs = (void *)sechdrs[me->arch.stubs_section].sh_addr;
687 if (!create_stub(sechdrs, &stubs[i], addr, me, name))
695 static unsigned long got_for_addr(const Elf64_Shdr *sechdrs,
706 num_got = sechdrs[me->arch.got_section].sh_size / sizeof(*got);
709 got = (void *)sechdrs[me->arch.got_section].sh_addr;
764 int apply_relocate_add(Elf64_Shdr *sechdrs,
771 Elf64_Rela *rela = (void *)sechdrs[relsec].sh_addr;
777 sechdrs[relsec].sh_info);
782 sym = find_dot_toc(sechdrs, strtab, symindex);
786 sym->st_value = my_r2(sechdrs, me);
790 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) {
792 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
795 sym = (Elf64_Sym *)sechdrs[symindex].sh_addr
819 *(unsigned long *)location = my_r2(sechdrs, me);
824 value -= my_r2(sechdrs, me);
837 value -= my_r2(sechdrs, me);
845 value -= my_r2(sechdrs, me);
858 value -= my_r2(sechdrs, me);
871 value -= my_r2(sechdrs, me);
888 value = stub_for_addr(sechdrs, value, me,
950 value = got_for_addr(sechdrs, absvalue, me,
989 value = my_r2(sechdrs, me) - (unsigned long)location;
1029 value = got_for_addr(sechdrs, value, me,
1089 int module_finalize_ftrace(struct module *mod, const Elf_Shdr *sechdrs)
1091 mod->arch.tramp = stub_for_addr(sechdrs,
1096 mod->arch.tramp_regs = stub_for_addr(sechdrs,