Lines Matching defs:sym

172 				 Elf64_Sym *sym, const char *sym_name, int src_sym_idx);
274 Elf64_Sym *syms, *sym;
275 size_t sym_cnt = symtab->sec_sz / sizeof(*sym);
277 syms = libbpf_reallocarray(symtab->raw_data, sym_cnt + 1, sizeof(*sym));
281 sym = &syms[sym_cnt];
282 memset(sym, 0, sizeof(*sym));
285 symtab->sec_sz += sizeof(*sym);
286 symtab->shdr->sh_size += sizeof(*sym);
287 symtab->data->d_size += sizeof(*sym);
292 return sym;
766 Elf64_Sym *sym;
787 sym = sec->data->d_buf;
788 for (i = 0; i < n; i++, sym++) {
789 int sym_type = ELF64_ST_TYPE(sym->st_info);
790 int sym_bind = ELF64_ST_BIND(sym->st_info);
791 int sym_vis = ELF64_ST_VISIBILITY(sym->st_other);
794 if (sym->st_name != 0 || sym->st_info != 0
795 || sym->st_other != 0 || sym->st_shndx != 0
796 || sym->st_value != 0 || sym->st_size != 0) {
797 pr_warn("ELF sym #0 is invalid in %s\n", obj->filename);
803 pr_warn("ELF sym #%d in section #%zu has unsupported symbol binding %d\n",
808 pr_warn("ELF sym #%d in section #%zu has unsupported symbol visibility %d\n",
812 if (sym->st_shndx == 0) {
814 || sym->st_value != 0 || sym->st_size != 0) {
815 pr_warn("ELF sym #%d is invalid extern symbol in %s\n",
822 if (sym->st_shndx < SHN_LORESERVE && sym->st_shndx >= obj->sec_cnt) {
823 pr_warn("ELF sym #%d in section #%zu points to missing section #%zu in %s\n",
824 i, sec->sec_idx, (size_t)sym->st_shndx, obj->filename);
828 if (sym->st_value != 0)
1224 Elf64_Sym *sym = symtab->data->d_buf;
1233 for (i = 0; i < n; i++, sym++) {
1240 sym_name = elf_strptr(obj->elf, str_sec_idx, sym->st_name);
1246 err = linker_append_elf_sym(linker, obj, sym, sym_name, i);
1281 struct glob_sym *syms, *sym;
1288 sym = &syms[linker->glob_sym_cnt];
1289 memset(sym, 0, sizeof(*sym));
1290 sym->var_idx = -1;
1295 return sym;
1582 struct src_obj *obj, Elf64_Sym *sym, int btf_id)
1622 struct src_obj *obj, Elf64_Sym *sym, size_t sym_idx, int btf_id)
1643 return glob_map_defs_match(sym_name, linker, glob_sym, obj, sym, btf_id);
1658 static int find_glob_sym_btf(struct src_obj *obj, Elf64_Sym *sym, const char *sym_name,
1792 static void sym_update_bind(Elf64_Sym *sym, int sym_bind)
1794 sym->st_info = ELF64_ST_INFO(sym_bind, ELF64_ST_TYPE(sym->st_info));
1797 static void sym_update_type(Elf64_Sym *sym, int sym_type)
1799 sym->st_info = ELF64_ST_INFO(ELF64_ST_BIND(sym->st_info), sym_type);
1802 static void sym_update_visibility(Elf64_Sym *sym, int sym_vis)
1807 sym->st_other &= ~0x03;
1808 sym->st_other |= sym_vis;
1812 Elf64_Sym *sym, const char *sym_name, int src_sym_idx)
1823 sym_type = ELF64_ST_TYPE(sym->st_info);
1824 sym_bind = ELF64_ST_BIND(sym->st_info);
1825 sym_vis = ELF64_ST_VISIBILITY(sym->st_other);
1826 sym_is_extern = sym->st_shndx == SHN_UNDEF;
1833 } else if (sym->st_shndx < SHN_LORESERVE) {
1834 src_sec = &obj->secs[sym->st_shndx];
1850 err = find_glob_sym_btf(obj, sym, sym_name, &btf_sec_id, &btf_id);
1896 if (!glob_syms_match(sym_name, linker, glob_sym, obj, sym, src_sym_idx, btf_id))
1945 dst_sym->st_value = src_sec->dst_off + sym->st_value;
1946 dst_sym->st_size = sym->st_size;
1973 dst_sym->st_info = sym->st_info;
1974 dst_sym->st_other = sym->st_other;
1975 dst_sym->st_shndx = dst_sec ? dst_sec->sec_idx : sym->st_shndx;
1976 dst_sym->st_value = (src_sec ? src_sec->dst_off : 0) + sym->st_value;
1977 dst_sym->st_size = sym->st_size;
2106 Elf64_Sym *sym = symtab->data->d_buf;
2111 for (i = 0; i < n; i++, sym++) {
2112 if (sym->st_shndx != sec_idx)
2114 if (ELF64_ST_TYPE(sym->st_info) != sym_type)
2117 name = elf_strptr(obj->elf, str_sec_idx, sym->st_name);
2124 return sym;
2199 Elf64_Sym *sym;
2205 sym = find_sym_by_name(obj, sec->sec_idx, STT_OBJECT, var_name);
2206 if (!sym) {
2211 vi->offset = sym->st_value;