• Home
  • Raw
  • Download

Lines Matching refs:elfFile

270 static int readElfHeader(ifstream& elfFile, Elf64_Ehdr* eh) {  in readElfHeader()  argument
271 elfFile.seekg(0); in readElfHeader()
272 if (elfFile.fail()) return -1; in readElfHeader()
274 if (!elfFile.read((char*)eh, sizeof(*eh))) return -1; in readElfHeader()
280 static int readSectionHeadersAll(ifstream& elfFile, vector<Elf64_Shdr>& shTable) { in readSectionHeadersAll() argument
284 ret = readElfHeader(elfFile, &eh); in readSectionHeadersAll()
287 elfFile.seekg(eh.e_shoff); in readSectionHeadersAll()
288 if (elfFile.fail()) return -1; in readSectionHeadersAll()
293 if (!elfFile.read((char*)shTable.data(), (eh.e_shnum * eh.e_shentsize))) return -ENOMEM; in readSectionHeadersAll()
299 static int readSectionByIdx(ifstream& elfFile, int id, vector<char>& sec) { in readSectionByIdx() argument
301 int ret = readSectionHeadersAll(elfFile, shTable); in readSectionByIdx()
304 elfFile.seekg(shTable[id].sh_offset); in readSectionByIdx()
305 if (elfFile.fail()) return -1; in readSectionByIdx()
308 if (!elfFile.read(sec.data(), shTable[id].sh_size)) return -1; in readSectionByIdx()
314 static int readSectionHeaderStrtab(ifstream& elfFile, vector<char>& strtab) { in readSectionHeaderStrtab() argument
316 int ret = readElfHeader(elfFile, &eh); in readSectionHeaderStrtab()
319 ret = readSectionByIdx(elfFile, eh.e_shstrndx, strtab); in readSectionHeaderStrtab()
326 static int getSymName(ifstream& elfFile, int nameOff, string& name) { in getSymName() argument
330 ret = readSectionHeaderStrtab(elfFile, secStrTab); in getSymName()
340 static int readSectionByName(const char* name, ifstream& elfFile, vector<char>& data) { in readSectionByName() argument
345 ret = readSectionHeadersAll(elfFile, shTable); in readSectionByName()
348 ret = readSectionHeaderStrtab(elfFile, secStrTab); in readSectionByName()
359 elfFile.seekg(shTable[i].sh_offset); in readSectionByName()
360 if (elfFile.fail()) return -1; in readSectionByName()
362 if (!elfFile.read((char*)dataTmp.data(), shTable[i].sh_size)) return -1; in readSectionByName()
371 unsigned int readSectionUint(const char* name, ifstream& elfFile) { in readSectionUint() argument
373 int ret = readSectionByName(name, elfFile, theBytes); in readSectionUint()
394 static int readSectionByType(ifstream& elfFile, int type, vector<char>& data) { in readSectionByType() argument
398 ret = readSectionHeadersAll(elfFile, shTable); in readSectionByType()
407 elfFile.seekg(shTable[i].sh_offset); in readSectionByType()
408 if (elfFile.fail()) return -1; in readSectionByType()
410 if (!elfFile.read((char*)dataTmp.data(), shTable[i].sh_size)) return -1; in readSectionByType()
422 static int readSymTab(ifstream& elfFile, int sort, vector<Elf64_Sym>& data) { in readSymTab() argument
427 ret = readSectionByType(elfFile, SHT_SYMTAB, secData); in readSymTab()
445 static int readProgDefs(ifstream& elfFile, vector<struct bpf_prog_def>& pd) { in readProgDefs() argument
447 int ret = readSectionByName("progs", elfFile, pdData); in readProgDefs()
467 static int getSectionSymNames(ifstream& elfFile, const string& sectionName, vector<string>& names, in getSectionSymNames() argument
474 ret = readSymTab(elfFile, 1 /* sort */, symtab); in getSectionSymNames()
478 ret = readSectionHeadersAll(elfFile, shTable); in getSectionSymNames()
483 ret = getSymName(elfFile, shTable[i].sh_name, name); in getSectionSymNames()
503 ret = getSymName(elfFile, symtab[i].st_name, s); in getSectionSymNames()
513 static int readCodeSections(ifstream& elfFile, vector<codeSection>& cs) { in readCodeSections() argument
517 ret = readSectionHeadersAll(elfFile, shTable); in readCodeSections()
522 ret = readProgDefs(elfFile, pd); in readCodeSections()
525 ret = getSectionSymNames(elfFile, "progs", progDefNames); in readCodeSections()
533 ret = getSymName(elfFile, shTable[i].sh_name, name); in readCodeSections()
552 ret = readSectionByIdx(elfFile, i, cs_temp.data); in readCodeSections()
557 ret = getSectionSymNames(elfFile, oldName, csSymNames, STT_FUNC); in readCodeSections()
568 ret = getSymName(elfFile, shTable[i + 1].sh_name, name); in readCodeSections()
572 ret = readSectionByIdx(elfFile, i + 1, cs_temp.rel_data); in readCodeSections()
586 static int getSymNameByIdx(ifstream& elfFile, int index, string& name) { in getSymNameByIdx() argument
590 ret = readSymTab(elfFile, 0 /* !sort */, symtab); in getSymNameByIdx()
595 return getSymName(elfFile, symtab[index].st_name, name); in getSymNameByIdx()
654 static int setBtfDatasecSize(ifstream &elfFile, struct btf *btf, in setBtfDatasecSize() argument
663 int ret = readSectionByName(name, elfFile, data); in setBtfDatasecSize()
672 static int getSymOffsetByName(ifstream &elfFile, const char *name, int *off) { in getSymOffsetByName() argument
674 int ret = readSymTab(elfFile, 1 /* sort */, symtab); in getSymOffsetByName()
678 ret = getSymName(elfFile, symtab[i].st_name, s); in getSymOffsetByName()
688 static int setBtfVarOffset(ifstream &elfFile, struct btf *btf, in setBtfVarOffset() argument
716 int ret = getSymOffsetByName(elfFile, varName, &off); in setBtfVarOffset()
727 static int loadBtf(ifstream &elfFile, struct btf *btf) { in loadBtf() argument
732 ret = setBtfDatasecSize(elfFile, btf, bt); in loadBtf()
734 ret = setBtfVarOffset(elfFile, btf, bt); in loadBtf()
829 static int createMaps(const char* elfPath, ifstream& elfFile, vector<unique_fd>& mapFds, in createMaps() argument
837 ret = readSectionByName("maps", elfFile, mdData); in createMaps()
856 ret = getSectionSymNames(elfFile, "maps", mapNames); in createMaps()
865 ret = readSectionByName(".BTF", elfFile, btfData); in createMaps()
876 ret = loadBtf(elfFile, btf); in createMaps()
1118 static void applyMapRelo(ifstream& elfFile, vector<unique_fd> &mapFds, vector<codeSection>& cs) { in applyMapRelo() argument
1121 int ret = getSectionSymNames(elfFile, "maps", mapNames); in applyMapRelo()
1132 ret = getSymNameByIdx(elfFile, symIndex, symName); in applyMapRelo()
1360 ifstream elfFile(elfPath, ios::in | ios::binary); in loadProg() local
1361 if (!elfFile.is_open()) return -1; in loadProg()
1363 ret = readSectionByName("license", elfFile, license); in loadProg()
1372 unsigned int bpfLoaderMinVer = readSectionUint("bpfloader_min_ver", elfFile); in loadProg()
1373 unsigned int bpfLoaderMaxVer = readSectionUint("bpfloader_max_ver", elfFile); in loadProg()
1392 ret = createMaps(elfPath, elfFile, mapFds, prefix, bpfloader_ver); in loadProg()
1401 ret = readCodeSections(elfFile, cs); in loadProg()
1411 applyMapRelo(elfFile, mapFds, cs); in loadProg()