Elf64_Sym
Elf64_Sym *symtab, *sym;
symtab = (Elf64_Sym *)sechdrs[symindex].sh_addr;
nsyms = symtab->sh_size / sizeof(Elf64_Sym);
Elf64_Sym *sym);
static unsigned int count_plts(Elf64_Sym *syms, Elf64_Rela *rela, int num,
Elf64_Sym *s;
static bool branch_rela_needs_plt(Elf64_Sym *syms, Elf64_Rela *rela,
Elf64_Sym *s = syms + ELF64_R_SYM(rela->r_info);
static int partition_branch_plt_relas(Elf64_Sym *syms, Elf64_Rela *rela,
Elf64_Sym *syms = NULL;
syms = (Elf64_Sym *)sechdrs[i].sh_addr;
Elf64_Sym *sym)
Elf64_Sym *sym;
sym = (Elf64_Sym *)sechdrs[symindex].sh_addr
#define Elf_Sym Elf64_Sym
Elf64_Sym *sym;
sym = (Elf64_Sym *)sechdrs[symindex].sh_addr
Elf64_Sym *sym;
sym = (Elf64_Sym *)sechdrs[symindex].sh_addr
static void dedotify(Elf64_Sym *syms, unsigned int numsyms, char *strtab)
static Elf64_Sym *find_dot_toc(Elf64_Shdr *sechdrs,
Elf64_Sym *syms;
syms = (Elf64_Sym *)sechdrs[symindex].sh_addr;
numsyms = sechdrs[symindex].sh_size / sizeof(Elf64_Sym);
sechdrs[i].sh_size / sizeof(Elf64_Sym),
static unsigned int local_entry_offset(const Elf64_Sym *sym)
static unsigned int local_entry_offset(const Elf64_Sym *sym)
Elf64_Sym *sym;
sym = (Elf64_Sym *)sechdrs[symindex].sh_addr
static Elf64_Sym *find_sym64(const struct vdso_elfinfo64 *e, const char *name)
for (i = 0; i < (e->dynsymsize / sizeof(Elf64_Sym)); i++) {
Elf64_Sym *s = &e->dynsym[i];
Elf64_Sym *osym = find_sym64(e, orig);
Elf64_Sym *nsym = find_sym64(e, new);
Elf64_Sym *dynsym;
Elf64_Sym *sym;
sym = (Elf64_Sym *)sechdrs[symindex].sh_addr
Elf64_Sym *sym;
#define Elf_Sym Elf64_Sym
Elf64_Sym e64;
#define Elf_Sym Elf64_Sym
#define Elf_Sym Elf64_Sym
# define Elf_Sym Elf64_Sym
Elf64_Sym *sym;
static Elf64_Sym *find_elf_var_sym(const struct bpf_object *obj, const char *name)
for (si = 0; si < symbols->d_size / sizeof(Elf64_Sym); si++) {
Elf64_Sym *sym = elf_sym_by_idx(obj, si);
Elf64_Sym *sym;
static Elf64_Sym *elf_sym_by_idx(const struct bpf_object *obj, size_t idx)
if (idx >= obj->efile.symbols->d_size / sizeof(Elf64_Sym))
return (Elf64_Sym *)obj->efile.symbols->d_buf + idx;
static bool sym_is_extern(const Elf64_Sym *sym)
static bool sym_is_subprog(const Elf64_Sym *sym, int text_shndx)
if (!sh || sh->sh_entsize != sizeof(Elf64_Sym))
Elf64_Sym *sym = elf_sym_by_idx(obj, i);
const Elf64_Sym *sym, const Elf64_Rel *rel)
Elf64_Sym *sym;
Elf64_Sym *sym;
static Elf64_Sym *elf_sym_by_idx(const struct bpf_object *obj, size_t idx);
Elf64_Sym *sym;
nr_syms = symbols->d_size / sizeof(Elf64_Sym);
if (!sym_idx || sym_idx * sizeof(Elf64_Sym) >= sym_sec->shdr->sh_size) {
Elf64_Sym *sym = symtab->data->d_buf;
static Elf64_Sym *get_sym_by_idx(struct bpf_linker *linker, size_t sym_idx)
Elf64_Sym *syms = symtab->raw_data;
struct src_obj *obj, Elf64_Sym *sym, int btf_id)
struct src_obj *obj, Elf64_Sym *sym, size_t sym_idx, int btf_id)
Elf64_Sym *sym, const char *sym_name, int src_sym_idx);
static int find_glob_sym_btf(struct src_obj *obj, Elf64_Sym *sym, const char *sym_name,
static void sym_update_bind(Elf64_Sym *sym, int sym_bind)
static void sym_update_type(Elf64_Sym *sym, int sym_type)
static void sym_update_visibility(Elf64_Sym *sym, int sym_vis)
Elf64_Sym *sym, const char *sym_name, int src_sym_idx)
Elf64_Sym *dst_sym;
Elf64_Sym *src_sym;
static Elf64_Sym *find_sym_by_name(struct src_obj *obj, size_t sec_idx,
Elf64_Sym *sym = symtab->data->d_buf;
Elf64_Sym *sym;
static Elf64_Sym *add_new_sym(struct bpf_linker *linker, size_t *sym_idx)
Elf64_Sym *syms, *sym;
Elf64_Sym *init_sym;
sec->shdr->sh_entsize = sizeof(Elf64_Sym);
Elf64_Sym *sym;
if (sec->shdr->sh_entsize != sizeof(Elf64_Sym))
#define Elf_Sym Elf64_Sym
Elf64_Sym *symtab = NULL;
symtab = (Elf64_Sym *)((char *)encl->bin + sections[i].sh_offset);
Elf64_Sym *sym = &symtab[i];
static Elf64_Sym *vdso_symtab_get(struct vdso_symtab *symtab, const char *name)
Elf64_Sym *sym;
Elf64_Sym *sgx_enter_enclave_sym = NULL;
Elf64_Sym *elf_symtab;