+// Get function name from his address
+// Return NULL if function name is not found
+char *ELFManager_GetFunctionName(size_t Adr)
+{
+ char *SymbolName = NULL;
+ GElf_Sym *PtrST, ST;
+
+ if (ELFtab != NULL)
+ {
+ for (size_t i = 0; i < NbELFtabStruct; i++)
+ {
+ if ((ELFtab[i]->Type == ELF_symtab_TYPE) && ((ELFtab[i]->PtrDataTab) != NULL))
+ {
+ int j = 0;
+
+ while ((PtrST = gelf_getsym(ELFtab[i]->PtrDataTab, j++, &ST)) != NULL)
+ {
+ if (PtrST->st_value == Adr)
+ {
+ if (ELF32_ST_TYPE(PtrST->st_info) == STT_FUNC)
+ {
+ SymbolName = ELFManager_GetSymbolnameFromSymbolindex(PtrST->st_name);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return SymbolName;
+}
+
+