mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 08:00:53 +00:00
Don't store the size of the symbol. (elf_parser_lookup_symbol): Look it up
Fri Feb 9 16:16:34 2007 Søren Sandmann <sandmann@redhat.com> * elfparser.c (struct ElfSym): Don't store the size of the symbol. (elf_parser_lookup_symbol): Look it up here instaed. * binfile.c (bin_file_free): Use pre-decrement instead of post-decrement. (bin_file_check_inode): Clarify the warning a little svn path=/trunk/; revision=349
This commit is contained in:
committed by
Søren Sandmann Pedersen
parent
e8c2a59906
commit
c1025c6b44
@ -1,3 +1,12 @@
|
|||||||
|
Fri Feb 9 16:16:34 2007 Søren Sandmann <sandmann@redhat.com>
|
||||||
|
|
||||||
|
* elfparser.c (struct ElfSym): Don't store the size of the symbol.
|
||||||
|
(elf_parser_lookup_symbol): Look it up here instaed.
|
||||||
|
|
||||||
|
* binfile.c (bin_file_free): Use pre-decrement instead of
|
||||||
|
post-decrement.
|
||||||
|
(bin_file_check_inode): Clarify the warning a little
|
||||||
|
|
||||||
Mon Jan 22 17:42:29 2007 Søren Sandmann <sandmann@redhat.com>
|
Mon Jan 22 17:42:29 2007 Søren Sandmann <sandmann@redhat.com>
|
||||||
|
|
||||||
* sysprof-icon-32.png
|
* sysprof-icon-32.png
|
||||||
|
|||||||
@ -269,7 +269,6 @@ bin_file_new (const char *filename)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
bf->elf = elf_parser_new (filename, NULL);
|
bf->elf = elf_parser_new (filename, NULL);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (!bf->elf)
|
if (!bf->elf)
|
||||||
g_print ("Could not parse file %s\n", filename);
|
g_print ("Could not parse file %s\n", filename);
|
||||||
@ -313,7 +312,7 @@ bin_file_new (const char *filename)
|
|||||||
void
|
void
|
||||||
bin_file_free (BinFile *bin_file)
|
bin_file_free (BinFile *bin_file)
|
||||||
{
|
{
|
||||||
if (bin_file->ref_count-- == 0)
|
if (--bin_file->ref_count == 0)
|
||||||
{
|
{
|
||||||
g_hash_table_remove (bin_files, bin_file->filename);
|
g_hash_table_remove (bin_files, bin_file->filename);
|
||||||
|
|
||||||
@ -364,8 +363,8 @@ bin_file_lookup_symbol (BinFile *bin_file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
bin_file_check_inode (BinFile *bin_file,
|
bin_file_check_inode (BinFile *bin_file,
|
||||||
ino_t inode)
|
ino_t inode)
|
||||||
{
|
{
|
||||||
if (bin_file->inode == inode)
|
if (bin_file->inode == inode)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -375,7 +374,7 @@ bin_file_check_inode (BinFile *bin_file,
|
|||||||
|
|
||||||
if (!bin_file->inode_check)
|
if (!bin_file->inode_check)
|
||||||
{
|
{
|
||||||
g_print ("warning: %s has inode %lld. It should be %lld\n",
|
g_print ("warning: Inode mismatch for %s (disk: %lld, memory: %lld)\n",
|
||||||
bin_file->filename,
|
bin_file->filename,
|
||||||
(guint64)bin_file->inode, (guint64)inode);
|
(guint64)bin_file->inode, (guint64)inode);
|
||||||
|
|
||||||
|
|||||||
17
elfparser.c
17
elfparser.c
@ -11,7 +11,6 @@ struct ElfSym
|
|||||||
{
|
{
|
||||||
gulong offset;
|
gulong offset;
|
||||||
gulong address;
|
gulong address;
|
||||||
gulong size;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Section
|
struct Section
|
||||||
@ -381,8 +380,6 @@ read_table (ElfParser *parser,
|
|||||||
{
|
{
|
||||||
parser->symbols[n_functions].address = addr;
|
parser->symbols[n_functions].address = addr;
|
||||||
parser->symbols[n_functions].offset = offset;
|
parser->symbols[n_functions].offset = offset;
|
||||||
parser->symbols[n_functions].size =
|
|
||||||
bin_record_get_uint (symbol, "st_size");
|
|
||||||
|
|
||||||
n_functions++;
|
n_functions++;
|
||||||
}
|
}
|
||||||
@ -485,9 +482,19 @@ elf_parser_lookup_symbol (ElfParser *parser,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (result && result->address + result->size <= address)
|
if (result)
|
||||||
result = NULL;
|
{
|
||||||
|
gulong size;
|
||||||
|
BinRecord *record;
|
||||||
|
|
||||||
|
record = bin_parser_get_record (parser->parser, parser->sym_format, result->offset);
|
||||||
|
size = bin_record_get_uint (record, "st_size");
|
||||||
|
bin_record_free (record);
|
||||||
|
|
||||||
|
if (result->address + size <= address)
|
||||||
|
result = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -61,7 +61,7 @@ dump_data (Application *app)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
signal_handler (int signo,
|
signal_handler (int signo,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user