Commit Graph

179 Commits

Author SHA1 Message Date
0cf636d8fe Add a cache of the text section.
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 20:14:25 +00:00
86810e63a5 Remove now unused load-address heuristic
2006-10-08  Soren Sandmann <sandmann@redhat.com>

	* elfparser.c: Remove now unused load-address heuristic

	* comment out debug spew
2006-10-08 18:50:10 +00:00
a91a19887a Use "SHT_DYNSYM" for ".dynsym".
2006-10-08  Soren Sandmann <sandmann@redhat.com>

	* elfparser.c (read_symbols): Use "SHT_DYNSYM" for ".dynsym".
2006-10-08 18:09:17 +00:00
c27e5debc5 Support _debuglink recursions.
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-08 17:45:09 +00:00
29a4acaa94 Delete debug spew 2006-10-08 04:07:18 +00:00
52274fadd6 Deal with address offsets. Address lookup is now:
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-10-08 04:03:02 +00:00
6a7178f612 Remove old commented out code Add commented out code accessing entire
2006-08-27  Soren Sandmann <sandmann@redhat.com>

        * binparser.c: Remove old commented out code
        * module/sysprof-module.c: Add commented out code accessing entire
        stack.

2006-08-27  Soren Sandmann  <sandmann@redhat.com>

        * module/Makefile ($(MODULE).o): Add dependency on sysprof-module.h

        * elfparser.c (elf_parser_get_eh_frame): Add this function.
        Remove some commented out code.
2006-09-23 03:09:24 +00:00
b7cf5d34b8 Remove old commented out code
2006-08-27  Soren Sandmann <sandmann@redhat.com>

	* binparser.c: Remove old commented out code

2006-08-27  Soren Sandmann  <sandmann@redhat.com>

	* module/Makefile ($(MODULE).o): Add dependency on sysprof-module.h

	* elfparser.c (elf_parser_get_eh_frame): Add this function.
	Remove some commented out code.
2006-09-23 00:54:01 +00:00
2c04f6e200 Formatting fixes in header files 2006-08-26 23:10:10 +00:00
e44c9a0167 Update to new API
2006-08-26  Soren Sandmann <sandmann@daimi.au.dk>

	* elfparser.c: Update to new API

	* binparser.h: Delete commented out declarations. Add new
	functions.

	* binparser.c: Delete ParserFrame, replace with one current
	offset.
	(convert_uint): Make static
	(bin_parser_get_uint): Delete this function
	(bin_parser_get_string): Change this function to use current
	offset instead of frame offset.
	(bin_parser_goto): New function
	(bin_parser_align): New function
	(bin_parser_get_uint32): New function
	(bin_parser_begin): Delete this function
	(bin_parser_end): Delete this function
	(bin_parser_index): Delete this function
	(bin_record_get_string_indirect): Make this function use _goto()
	instead of _begin()/_end()
	(bin_parser_get_offset): Make this function return current offset
2006-08-26 23:01:07 +00:00
54862afc74 Add new struct BinRecord. Comment out functions related to formats. Add
2006-08-26  Soren Sandmann <sandmann@daimi.au.dk>

	* binparser.[ch]: Add new struct BinRecord. Comment out functions
	related to formats. Add new functions to get fields out of
	BinRecords.

	* elfparser.c: Update to new API.
2006-08-26 22:44:12 +00:00
b569c3a34c Add new bin_record() functions Implement them.
2006-08-26  Soren Sandmann <sandmann@daimi.au.dk>

	* binparser.h: Add new bin_record() functions
	* binparser.c: Implement them.
2006-08-26 16:44:17 +00:00
62c86a1951 Demangle instead of strdup.
2006-08-22  Soren Sandmann <sandmann@daimi.au.dk>

	* collector.c (unique_dup): Demangle instead of strdup.
2006-08-26 16:27:00 +00:00
4a145a21bc Rename elf_sym_get_* to elf_parser_get_sym_* and make these functions take
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-22 04:19:08 +00:00
bb616fd754 Add ref_count and filename (bin_files): Add map from filenames to BinFiles
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-22 03:26:57 +00:00
a1bddd8d9f Pass map->bin_file to bin_symbol_get_name.
2006-08-21  Soren Sandmann <sandmann@redhat.com>

	* process.c (process_lookup_symbol): Pass map->bin_file to
	bin_symbol_get_name.

	* binfile.h (bin_symbol_get_name): Add BinFile parameter

	* elfparser.c (elf_demangle): Use options DMGL_PARAMS | DMGL_ANSI

	* TODO: Updates

	* binfile.c: Rewrite this file to use ElfParser instead of libbfd.

	* configure.ac: Drop dependencies on libbfd and libiberty.
2006-08-21 06:00:57 +00:00
ad09fd10cb Update
2006-08-21  Soren Sandmann <sandmann@redhat.com>

	* TODO: Update

	* elfparser.c (elf_parser_lookup_symbol): Change sense of size
	check.
2006-08-21 05:00:53 +00:00
858d1fab58 Initialize crc to 0xffffffff and invert it before returning.
2006-08-20  Soren Sandmann <sandmann@redhat.com>

	* elfparser.c (elf_parser_get_crc32): Initialize crc to 0xffffffff
	and invert it before returning.

	* elfparser.h: Declare elf_parser_get_debug_link()
2006-08-21 04:12:12 +00:00
66a28bd501 Comment out debug spew. (elf_parser_lookup_symbol): Add check that address
2006-08-20  Soren Sandmann  <sandmann@daimi.au.dk>

	* elfparser.c (elf_parser_get_load_address): Comment out debug spew.
	(elf_parser_lookup_symbol): Add check that address is actually
	within the bounds of the found function.
2006-08-21 03:34:44 +00:00
a880ee7f60 Make process_lookup_symbol() return a string. Delete
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-21 02:33:38 +00:00
7d8f3c232d New function
2006-08-20  Soren Sandmann <sandmann@daimi.au.dk>

	* elfparser.c (elf_parser_new_from_file): New function
2006-08-21 01:30:54 +00:00
1b72901c4d New function
2006-08-20   Soren Sandmann <sandmann@daimi.au.dk>

	* elfparser.c (elf_parser_get_debug_link): New function

	* elfparser.c: Delete SymbolTable typedef

	* binparser.[ch] (bin_parser_get_data): New function
	(bin_parser_get_length): New function

	* elfparser.[ch] (elf_parser_get_crc32): New function

	* TODO: Updates

	* elfparser.c (elf_parser_lookup_symbol): Offset passed in
	addresses by the load address.

	* elfparser.c (elf_parser_get_load_address): New function to
	compute the load address of the beginning of the file.
2006-08-21 00:18:10 +00:00
49e1fabe46 Read the name out of the file instead of out of the struct.
2006-08-20  Soren Sandmann  <sandmann@redhat.com>

	* elfparser.c (elf_sym_get_name): Read the name out of the file
	instead of out of the struct.

	* elfparser.c (struct ElfSym): Store an offset instead of the
	name.

	* elfparser.c (all_elf_parsers): Keep track of all elf parsers
	created.
2006-08-20 06:26:54 +00:00
6c7afad3ff New file, made out of files from libiberty in binutils.
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
2006-08-20 04:32:12 +00:00
8967b3148c Many cleanups.
2006-08-19  Soren Sandmann  <sandmann@redhat.com>

	* elfparser.c: Many cleanups.
2006-08-19 23:56:18 +00:00
d3c6a66101 Pass the correct pointer.
2006-08-16  Søren Sandmann  <ssp@localhost.localdomain>

	* elfparser.c (check_symbol): Pass the correct pointer.
2006-08-16 17:25:03 +00:00
1f4dd13cd3 Really add this file.
2006-08-16  Soren Sandmann  <sandmann@redhat.com>

	* testelf.c: Really add this file.
2006-08-16 17:21:54 +00:00
2bc2e3658d Add beginning of an ELF parser.
2006-08-15  Soren Sandmann  <sandmann@redhat.com>

	Add beginning of an ELF parser.

	* binparser.[ch]: New files
	* elfparser.[ch]: New files
	* testelf.c: New file
	* Makefile.am (testelf_SOURCES): Add new testelf program.
2006-08-16 03:31:10 +00:00
c2f754dfb6 Make n_samples per-cpu. Add an atomic variable in_timer_notify and use it
Sat Aug 12 16:13:05 2006  Søren Sandmann  <sandmann@redhat.com>

	* module/sysprof-module.c: Make n_samples per-cpu. Add an atomic
	variable in_timer_notify and use it to lock out simultaneous timer
	interrupts.

	* stackstash.c (decorate_node): Make decorate_node() static

	* TODO
2006-08-12 20:15:52 +00:00
060fd343a8 Updates
Fri Aug 11 11:41:15 2006  Søren Sandmann  <sandmann@redhat.com>

	* TODO: Updates
2006-08-11 15:41:46 +00:00
2bc1d6f280 Incomplete ChangeLog entry 2006-08-09 03:06:04 +00:00
f06e272ea7 Make the load_file() idle low priority to avoid weird toolbar flash.
2006-08-08  Soren Sandmann  <ssp@localhost.localdomain>

	* sysprof.c (main): Make the load_file() idle low priority to
	avoid weird toolbar flash.

	* TODO: updates.
2006-08-09 03:05:34 +00:00
23d3a36a4a small cleanup 2006-07-31 18:52:12 +00:00
d43cdf3c14 Add a destroy notifier to StackStash
2006-07-31  Soren Sandmann <sandmann@redhat.com>

	* stackstash.[ch]: Add a destroy notifier to StackStash

	* collector.c (collector_create_profile): Pass g_free as destroy
	notifier.

	* collector.c (collector_reset): Pass NULL as destroy notifier

	* profile.c (profile_load): Pass g_free here.

	* profile.c (struct Profile): Remove unused "Node" typedef

	* collector.c (resolve_symbols): Free the array here.

	* TODO: various updates.
2006-07-31 04:50:34 +00:00
5efd06051c Simplify this file a bit, and make it not rely on atomic pointer writes.
2006-07-30  Soren Sandmann <sandmann@redhat.com>

	* signal-handler.c: Simplify this file a bit, and make it not rely
	on atomic pointer writes.
2006-07-31 02:12:23 +00:00
144e440ff2 we need at least glib 2.6.0 for the gstdio.h functions
2006-07-18  Bastien Nocera  <hadess@hadess.net>

	* configure.ac: we need at least glib 2.6.0 for the gstdio.h functions
2006-07-18 16:32:05 +00:00
24ed3d06ca Updates
2006-06-05  Soren Sandmann <sandmann@redhat.com>

	* TODO: Updates
2006-06-05 22:38:30 +00:00
e97dcc792a updates Various formatting fixes.
Sat Apr 22 15:08:01 2006  Soeren Sandmann  <sandmann@redhat.com>

	* TODO: updates
	* profile.c, sfile.c, sformat.c: Various formatting fixes.
2006-04-22 19:08:23 +00:00
6c36cd060c updates
Wed Apr  5 11:26:30 2006  Søren Sandmann  <sandmann@redhat.com>

        * TODO: updates
2006-04-05 15:26:47 +00:00
9e612d798a Updates.
Mon Mar 27 23:04:30 2006  Soeren Sandmann  <sandmann@redhat.com>

        * TODO: Updates.

        * sfile.c (handle_{begin,end}_element): Don't generate begin/end
        instructions for value elements.

        * sfile.c (build_instructions): Remove debugging spew.
2006-03-28 04:08:14 +00:00
6534ca13c0 New files containing a simplified and sanitized version of the state
Mon Mar 27 21:44:04 2006  Soeren Sandmann  <sandmann@redhat.com>

        * sformat.[ch]: New files containing a simplified and sanitized
        version of the state machine and type system from sfile.c.

        * sfile.c: Move the state machine and type management to separate
        files. Make the amount of memory used during loading and saving
        less obscene.

        * stackstash.c (stack_stash_new_from_root): Make this function
        store the root again.
2006-03-28 03:02:21 +00:00
3c5240c7ef updates
Mon Mar 27 09:55:01 2006  Søren Sandmann  <sandmann@redhat.com>

        * TODO: updates
2006-03-27 14:57:14 +00:00
9859854cc1 updates
2006-03-11 Soren Sandmann <sandmann@redhat.com>

	* TODO: updates

	* stackstash.[ch]: Make stackstash refcounted

	* collector.c, profile.c: Update for refcounted stackstash, plug
	leak.

	* collector.c (open_fd): Remove FIXME comment
2006-03-12 04:00:23 +00:00
849efc820d Do proper error-handling.
2006-03-05 Soeren Sandmann <sandmann@redhat.com>

        * sysprof-text.c, collector.c, sysprof.c: Do proper
        error-handling.
2006-03-05 21:11:07 +00:00
ebb7728768 Check that the inodes match.
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.
2006-03-04 03:28:26 +00:00
0d6d997f4a Handle NULL models.
Thu Mar  2 22:54:37 2006  Soeren Sandmann  <sandmann@redhat.com>

        * treeviewutils.c (tree_view_foreach_visible): Handle NULL models.

        * sysprof.glade, sysprof.c: Revert back to three pane layout.
2006-03-03 03:55:04 +00:00
0a592c152a more ifdef's to make it work with Red Hat Enterprise Linux 4's 2.6.9-based
2006-02-17  Bastien Nocera  <hadess@hadess.net>

	* configure.ac:
	* module/sysprof-module.c: (timer_notify), (sysprof_open),
	(sysprof_release): more ifdef's to make it work with Red Hat
	Enterprise Linux 4's 2.6.9-based kernel
2006-02-17 15:44:55 +00:00
58a1cf37ef Remove ancestors pane in favor of radiobuttons in the right pane.
Sat Feb  4 23:53:05 2006  Søren Sandmann  <sandmann@redhat.com>

	* sysprof.glade: Remove ancestors pane in favor of radiobuttons in
	the right pane.

	* sysprof.c: Corresponding changes.

	* TODO: Updates
2006-02-05 04:54:04 +00:00
849975ec83 Updates
Wed Jan 25 11:24:04 2006  Søren Sandmann  <sandmann@redhat.com>

	* TODO: Updates
2006-01-25 16:24:24 +00:00
bcf9dacd01 Updates
Mon Jan 16 11:12:13 2006  Søren Sandmann  <sandmann@redhat.com>

        * TODO: Updates
2006-01-16 16:12:44 +00:00