mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-03-16 02:01:28 +00:00
utils: add symbol range support for binfile and elfparser
This commit is contained in:
@ -536,3 +536,24 @@ bin_symbol_get_address (bin_file_t *file,
|
||||
return elf_parser_get_sym_address (elf, sym);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
bin_symbol_get_address_range (bin_file_t *file,
|
||||
const bin_symbol_t *symbol,
|
||||
gulong *begin,
|
||||
gulong *end)
|
||||
{
|
||||
if (file->undefined_name == (char *)symbol)
|
||||
{
|
||||
*begin = 0;
|
||||
*end = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ElfParser *elf;
|
||||
const ElfSym *sym;
|
||||
|
||||
sym = get_elf_sym (file, symbol, &elf);
|
||||
elf_parser_get_sym_address_range (elf, sym, begin, end);
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,5 +42,9 @@ const char *bin_symbol_get_name (bin_file_t *bin_file,
|
||||
const bin_symbol_t *symbol);
|
||||
gulong bin_symbol_get_address (bin_file_t *bin_file,
|
||||
const bin_symbol_t *symbol);
|
||||
void bin_symbol_get_address_range (bin_file_t *bin_file,
|
||||
const bin_symbol_t *symbol,
|
||||
gulong *begin,
|
||||
gulong *end);
|
||||
|
||||
#endif
|
||||
|
||||
@ -811,6 +811,16 @@ elf_parser_get_sym_address (ElfParser *parser,
|
||||
return sym->address - parser->text_section->load_address;
|
||||
}
|
||||
|
||||
void
|
||||
elf_parser_get_sym_address_range (ElfParser *parser,
|
||||
const ElfSym *sym,
|
||||
gulong *begin,
|
||||
gulong *end)
|
||||
{
|
||||
*begin = sym->address - parser->text_section->load_address;
|
||||
*end = *begin + st_size (parser, sym->table, sym->offset);
|
||||
}
|
||||
|
||||
/*
|
||||
* Utility functions
|
||||
*/
|
||||
|
||||
@ -55,4 +55,8 @@ gulong elf_parser_get_sym_address (ElfParser *parser,
|
||||
gboolean elf_parser_owns_symbol (ElfParser *parser,
|
||||
const ElfSym *sym);
|
||||
char *elf_demangle (const char *name);
|
||||
void elf_parser_get_sym_address_range (ElfParser *parser,
|
||||
const ElfSym *sym,
|
||||
gulong *begin,
|
||||
gulong *end);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user