2006-10-08 Soren Sandmann <sandmann@redhat.com>
* elfparser.c (struct ElfParser): Add a cache of the text section.
* binparser.c (struct BinParser): Add a cache of a bin record to
get rid of malloc()/free() overhead.
* elfparser.c (struct ElfSym): Cache the size of the symbol
2006-10-08 Soren Sandmann <sandmann@daimi.au.dk>
* binfile.c (find_separate_debug_file): Support _debuglink
recursions.
* elfparser.c: Check that the sections have valid types before
using them.
2006-10-07 Soren Sandmann <sandmann@daimi.au.dk>
Deal with address offsets. Address lookup is now:
- First convert the address to an offset into the file
- Then convert to an offset into the text segment
- Then add the load address of the text segment (found in the
debug binary)
- Then finally lookup the result in the symbol table.
* elfparser.c (elf_parser_get_text_offset): New function
* elfparser.c (elf_parser_lookup_symbol): Treat addresses as
offsets into the text segment.
* binfile.c (bin_file_new): Store the offset of the text section
of the actual binary (not the debug one)
(bin_file_lookup_symbol): Subtract text_offset before passing
address to elf parser.
* module/sysprof-module.c: Remove include of linux/config.h
2006-08-21 Soren Sandmann <sandmann@redhat.com>
* elfparser.[ch]
(elf_parser_get_sym_name): Rename elf_sym_get_* to
elf_parser_get_sym_* and make these functions take a parser.
(parser_from_sym): Delete this function.
(elf_parser_new): Don't add to all_elf_parsers
(elf_parser_free): Don't remove from all_elf_parsers
(elf_parser_new): Rename to parser_new_from_file()
(elf_parser_new_from_file): Rename to elf_parser_new
* binfile.c: Update for new elfparser API
* TODO: updates
2006-08-21 Soren Sandmann <sandmann@redhat.com>
* binfile.c (struct BinFile): Add ref_count and filename
(bin_files): Add map from filenames to BinFiles
(bin_file_new): First look for BinFile in the cache.
(bin_file_free): If refcount reaches 0, remove BinFile from cache.
* TODO: Updates
2006-08-20 Soren Sandmann <sandmann@daimi.au.dk>
* process.h: Make process_lookup_symbol() return a string. Delete
process_lookup_symbol_with_filename().
* process.c (struct Process): Make "undefined" a string
(lookup_kernel_symbol): Return a string
(process_lookup_symbol): Return a string, not a symbol
* collector.c (unique_dup): Take a string instead of a
Symbol.
(lookup_symbol): Make sym a string instead of a Symbol.
* binfile.c (bin_symbol_get_name): New function.
* binfile.[ch] (struct BinSymbol): Rename Symbol to BinSymbol and
make it an opaque structure.
* binfile.[ch]: Remove unused symbol operations
2006-08-20 Soren Sandmann <sandmann@redhat.com>
* Makefile.am, demangle.c: New file, made out of files from
libiberty in binutils.
* binfile.c: Use the new sysprof_cplus_demangle() function
* elfparser.[ch]: Add code to lookup symbols. Add demangling
function
* testelf.c: Various tests
Fri Mar 3 22:28:03 2006 Soeren Sandmann <sandmann@redhat.com>
* process.c (process_lookup_symbol): Check that the inodes match.
* binfile.c (read_symbols): Read the inode of the file
* binfile.c (read_symbols): Close the bfd if the symbol table
could not be read.
Sat May 7 13:57:17 2005 Søren Sandmann <sandmann@redhat.com>
* sfile.c (sfile_output_free): Implement this function
* sfile.c (sfile_input_free): Implement this function
Tue Apr 5 23:01:02 2005 Søren Sandmann <sandmann@redhat.com>
* binfile.c (read_symbols): Put back the weird loop, and stop
pretending I understand this. This time use SEC_ALLOC instead of
SEC_LOAD.
Tue Apr 5 20:13:44 2005 Søren Sandmann <sandmann@redhat.com>
* process.c (process_ensure_map): Add commented out debug spew.
* process.c (process_lookup_symbol): Remove all should_offset()
function and all references to it.
* binfile.c (bin_file_lookup_symbol): Document that address must
be in file coordinates.
* binfile.c (read_symbols): Remove misguided code that tried to
guess the load address of the file. Instead, do all computations
in "file coordinates". Also fix a memory leak. Add commented out
debug spew.
* binfile.c (separate_debug_file_exists): Fix signedness