+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>
* sysprof-icon-32.png
else
{
bf->elf = elf_parser_new (filename, NULL);
-
#if 0
if (!bf->elf)
g_print ("Could not parse file %s\n", filename);
void
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);
}
gboolean
-bin_file_check_inode (BinFile *bin_file,
- ino_t inode)
+bin_file_check_inode (BinFile *bin_file,
+ ino_t inode)
{
if (bin_file->inode == inode)
return TRUE;
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,
(guint64)bin_file->inode, (guint64)inode);
{
gulong offset;
gulong address;
- gulong size;
};
struct Section
{
parser->symbols[n_functions].address = addr;
parser->symbols[n_functions].offset = offset;
- parser->symbols[n_functions].size =
- bin_record_get_uint (symbol, "st_size");
n_functions++;
}
}
#endif
- if (result && result->address + result->size <= address)
- result = NULL;
+ if (result)
+ {
+ 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;
}
}
}
-void
+static void
signal_handler (int signo,
gpointer data)
{