diff --git a/core/linux/nixprof/nixprof.cpp b/core/linux/nixprof/nixprof.cpp index 517013e00..c5eb4e9c6 100644 --- a/core/linux/nixprof/nixprof.cpp +++ b/core/linux/nixprof/nixprof.cpp @@ -131,23 +131,33 @@ static void elf_syms(FILE* out,const char* libfile) int dynsym=-1; int dynstr=-1; + int strtab=-1; + int symtab=-1; - /* - Section: 2 -> .dynsym - Section: 3 -> .dynstr - */ if (elf_checkFile(data)>=0) { int scnt=elf_getNumSections(data); for (int si=0;si= 0 && strtab >= 0) + { + dynsym = symtab; + dynstr = strtab; + } + if (dynsym >= 0) { prof_head(out,"libsym",libfile); - // printf("Found dymsym %d, and dynstr %d!\n",dynsym,dynstr); + // printf("Found dymsym %d, and dynstr %d!\n",dynsym,dynstr); elf_symbol* sym=(elf_symbol*)elf_getSection(data,dynsym); int symcnt=elf_getSectionSize(data,dynsym)/sizeof(elf_symbol); @@ -168,7 +186,7 @@ static void elf_syms(FILE* out,const char* libfile) { char* name=(char*)elf_getSection(data,dynstr);// sym[i].st_shndx - // printf("Symbol %d: %s, %08X, %d bytes\n",i,name+sym[i].st_name,sym[i].st_value,sym[i].st_size); + // printf("Symbol %d: %s, %08X, %d bytes\n",i,name+sym[i].st_name,sym[i].st_value,sym[i].st_size); fprintf(out,"%08X %d %s\n",sym[i].st_value,sym[i].st_size,name+sym[i].st_name); } } @@ -182,8 +200,6 @@ static void elf_syms(FILE* out,const char* libfile) } } - - static volatile bool prof_run; // This is not used: