Lines Matching refs:elfFile
120 static int readElfHeader(ifstream &elfFile, Elf64_Ehdr *eh) { in readElfHeader() argument
121 elfFile.seekg(0); in readElfHeader()
122 if (elfFile.fail()) in readElfHeader()
125 if (!elfFile.read((char *)eh, sizeof(*eh))) in readElfHeader()
132 static int readSectionHeadersAll(ifstream &elfFile, in readSectionHeadersAll() argument
137 ret = readElfHeader(elfFile, &eh); in readSectionHeadersAll()
141 elfFile.seekg(eh.e_shoff); in readSectionHeadersAll()
142 if (elfFile.fail()) in readSectionHeadersAll()
148 if (!elfFile.read((char *)shTable.data(), (eh.e_shnum * eh.e_shentsize))) in readSectionHeadersAll()
155 static int readSectionByIdx(ifstream &elfFile, int id, vector<char> &sec) { in readSectionByIdx() argument
157 int ret = readSectionHeadersAll(elfFile, shTable); in readSectionByIdx()
161 elfFile.seekg(shTable[id].sh_offset); in readSectionByIdx()
162 if (elfFile.fail()) in readSectionByIdx()
166 if (!elfFile.read(sec.data(), shTable[id].sh_size)) in readSectionByIdx()
173 static int readSectionHeaderStrtab(ifstream &elfFile, vector<char> &strtab) { in readSectionHeaderStrtab() argument
175 int ret = readElfHeader(elfFile, &eh); in readSectionHeaderStrtab()
179 ret = readSectionByIdx(elfFile, eh.e_shstrndx, strtab); in readSectionHeaderStrtab()
187 static int getSymName(ifstream &elfFile, int nameOff, string &name) { in getSymName() argument
191 ret = readSectionHeaderStrtab(elfFile, secStrTab); in getSymName()
203 static int readSectionByName(const char *name, ifstream &elfFile, in readSectionByName() argument
209 ret = readSectionHeadersAll(elfFile, shTable); in readSectionByName()
213 ret = readSectionHeaderStrtab(elfFile, secStrTab); in readSectionByName()
226 elfFile.seekg(shTable[i].sh_offset); in readSectionByName()
227 if (elfFile.fail()) in readSectionByName()
230 if (!elfFile.read((char *)dataTmp.data(), shTable[i].sh_size)) in readSectionByName()
240 unsigned int readSectionUint(const char *name, ifstream &elfFile, in readSectionUint() argument
243 int ret = readSectionByName(name, elfFile, theBytes); in readSectionUint()
267 static int readSectionByType(ifstream &elfFile, int type, vector<char> &data) { in readSectionByType() argument
271 ret = readSectionHeadersAll(elfFile, shTable); in readSectionByType()
282 elfFile.seekg(shTable[i].sh_offset); in readSectionByType()
283 if (elfFile.fail()) in readSectionByType()
286 if (!elfFile.read((char *)dataTmp.data(), shTable[i].sh_size)) in readSectionByType()
299 static int readSymTab(ifstream &elfFile, int sort, vector<Elf64_Sym> &data) { in readSymTab() argument
304 ret = readSectionByType(elfFile, SHT_SYMTAB, secData); in readSymTab()
344 static int readProgDefs(ifstream &elfFile, vector<struct bpf_prog_def> &pd) { in readProgDefs() argument
346 int ret = readSectionByName("progs", elfFile, pdData); in readProgDefs()
362 static int getSectionSymNames(ifstream &elfFile, const string §ionName, in getSectionSymNames() argument
370 ret = readSymTab(elfFile, 1 /* sort */, symtab); in getSectionSymNames()
375 ret = readSectionHeadersAll(elfFile, shTable); in getSectionSymNames()
381 ret = getSymName(elfFile, shTable[i].sh_name, name); in getSectionSymNames()
403 ret = getSymName(elfFile, symtab[i].st_name, s); in getSectionSymNames()
430 static int readCodeSections(ifstream &elfFile, vector<codeSection> &cs, in readCodeSections() argument
435 ret = readSectionHeadersAll(elfFile, shTable); in readCodeSections()
441 ret = readProgDefs(elfFile, pd); in readCodeSections()
445 ret = getSectionSymNames(elfFile, "progs", progDefNames); in readCodeSections()
454 ret = getSymName(elfFile, shTable[i].sh_name, name); in readCodeSections()
477 ret = readSectionByIdx(elfFile, i, cs_temp.data); in readCodeSections()
483 ret = getSectionSymNames(elfFile, oldName, csSymNames, STT_FUNC); in readCodeSections()
495 ret = getSymName(elfFile, shTable[i + 1].sh_name, name); in readCodeSections()
500 ret = readSectionByIdx(elfFile, i + 1, cs_temp.rel_data); in readCodeSections()
515 static int getSymNameByIdx(ifstream &elfFile, int index, string &name) { in getSymNameByIdx() argument
519 ret = readSymTab(elfFile, 0 /* !sort */, symtab); in getSymNameByIdx()
526 return getSymName(elfFile, symtab[index].st_name, name); in getSymNameByIdx()
579 static int createMaps(const char *elfPath, ifstream &elfFile, in createMaps() argument
587 ret = readSectionByName("maps", elfFile, mdData); in createMaps()
602 ret = getSectionSymNames(elfFile, "maps", mapNames); in createMaps()
749 static void applyMapRelo(ifstream &elfFile, vector<unique_fd> &mapFds, in applyMapRelo() argument
753 int ret = getSectionSymNames(elfFile, "maps", mapNames); in applyMapRelo()
765 ret = getSymNameByIdx(elfFile, symIndex, symName); in applyMapRelo()
918 ifstream elfFile(elfPath, ios::in | ios::binary); in loadProg() local
919 if (!elfFile.is_open()) in loadProg()
922 ret = readSectionByName("critical", elfFile, critical); in loadProg()
925 ret = readSectionByName("license", elfFile, license); in loadProg()
936 ret = readCodeSections(elfFile, cs, location.allowedProgTypes, in loadProg()
943 ret = createMaps(elfPath, elfFile, mapFds, location.prefix); in loadProg()
952 applyMapRelo(elfFile, mapFds, cs); in loadProg()