summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* support for a brief backtrace formatTim Moore2009-12-179-14/+149
| | | | | | | | | | | | | | This only prints symbol+offset, or an address if the symbol isn't known. * runtime/runtime.h (SYM_VERBOSE_NO, SYM_VERBOSE_FULL, SYM_VERBOSE_BRIEF): new constants * runtime/stack.c (_stp_stack_print): support brief format * runtime/sym.c (_stp_func_print): ditto * tapset/ucontext-unwind.stp (print_ubacktrace_brief): new function * testsuite/systemtap.context/fib.c: new test program * testsuite/systemtap.context/fib.stp: new test * testsuite/systemtap.context/fib.exp: new test
* backtrace through uprobes trampoline.Tim Moore2009-12-177-6/+57
| | | | | | | | | | | | | | Only works in uretprobes for the moment. * runtime/stack-x86_64.c (__stp_stack_print): Rewrite trampoline PC addresses if necessary. * runtime/stack-i386.c (__stp_stack_print): ditto * runtime/stack-arm.c (__stp_stack_print): Add extra argument * runtime/stack-ppc.c (__stp_stack_print): ditto * runtime/stack-s390.c (__stp_stack_print): ditto * runtime/stack.c (_stap_stack_print): call __stp_stack_print with uretprobe_instance. * testsuite/systemtap.context/uprobe_backtrace.stp: new test
* function to translate from the uretprobe trampoline back to the originalTim Moore2009-12-162-0/+46
| | | | | | return address * runtime/uprobes2/uprobes.c (uprobe_get_pc): new function
* set the IP in return probes to the returned-to instructionTim Moore2009-12-168-19/+117
| | | | | | | | | | | | | | | | | | | | | | | | It's easily available in kretprobes and uretprobes and is consistent with the rest of the program state. * translate.cxx (emit_common_header) : add uretprobe_instance to context. * tapsets.cxx (common_probe_entryfn_prologue): Initialize ri in context to 0. (dwarf_derived_probe_group::emit_module_decls): Change IP to return address in kretprobes. (uprobe_derived_probe_group::emit_module_decls): enter_uretprobe_probe: set ri (uretprobe_instance) in context. Change IP to return address in uretprobes. Don't emit uprobe include and #define * runtime/runtime.h : Add includes and #define for uprobes. * runtime/stack.c (_stp_stack_print, _stp_stack_snprint): Add extra argument for uretprobe_instance. * tapset/context-unwind.stp (print_backtrace, backtrace): Pass NULL for uretprobe_instance to _stp_stack_print. * tapset/ucontext-unwind.stp (print_ubacktrace, ubacktrace): pass uretprobe_instance to _stp_stack_print * testsuite/systemtap.context/uprobe_uaddr.exp : new test for uaddr in function probes * testsuite/systemtap.context/uprobe_uaddr.stp : new file
* Fix handling of multiple sdt uprobes with the same name.Stan Cox2009-12-151-8/+18
| | | | | tapsets.cxx (sdt_query::handle_query_module): Improve trace handling. (sdt_query::convert_location): Create new component instead of reusing old.
* Merge branch 'master' of ssh://sources.redhat.com/git/systemtapDave Brolley2009-12-151-18/+35
|\
| * Fixed DEBUG_MEM debug memory tracking.David Smith2009-12-151-18/+35
| | | | | | | | | | | | | | | | | | * runtime/alloc.c (_stp_kmalloc): Fixed compilation when DEBUG_MEM is defined. Improved allocated memory tracking. (_stp_kzalloc): Ditto. (_stp_vmalloc): Ditto. (_stp_alloc_percpu): Ditto. (_stp_kmalloc_node): Ditto.
* | Merge branch 'master' of ssh://sources.redhat.com/git/systemtapDave Brolley2009-12-151-1/+8
|\|
| * Don't save build-id if it is located before _stextEugeniy Meshcheryakov2009-12-151-1/+8
| | | | | | | | | | | | | | This probably means that build-id will not be loaded at all and happens for example with ARM kernel. See also: http://sources.redhat.com/ml/systemtap/2009-q4/msg00574.html
* | Don't automatically authorize new root certificates as trusted signers.Dave Brolley2009-12-151-9/+1
| |
* | Merge branch 'master' of ssh://sources.redhat.com/git/systemtapDave Brolley2009-12-1441-713/+2025
|\|
| * Do not use condition_codes() on armEugeniy Meshcheryakov2009-12-131-1/+1
| | | | | | | | | | | | | | | | | | It does not exist in recent kernels. Use regs->ARM_cpsr instead, this should work with all versions of linux found in git repo (versions >=2.6.12-rc2). Difference between condition_codes() and regs->ARM_cpsr should not matter for systemtap.
| * Use env(SYSTEMTAP_TESTAPPS) for all systemtap.appsStan Cox2009-12-114-8/+19
| | | | | | | | | | | | | | | | mysql.exp: Use env(SYSTEMTAP_TESTAPPS). (mysqlrelease): Update and check for download failure. postgres.exp: Use env(SYSTEMTAP_TESTAPPS). stap-tcl.stp: Use .library("library").mark("mark"). tcl.exp: Likewise.
| * runtime build: fix alloc.c buildability on old gcc 3.4Frank Ch. Eigler2009-12-111-2/+2
| | | | | | | | * runtime/alloc.c (_stp_kmalloc): Move var decl back to top.
| * grapher: implement restarting a stap processTim Moore2009-12-113-48/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * grapher/StapParser.cxx (StapParser::disconnect): new function * grapher/StapParser.hxx (StapProcess::StapProcess): initialize argv to 0 * grapher/grapher.cxx (StapLauncher::setArgs): Set argv to 0 (StapLauncher launch, launchUsingParser): Refactor launch(), extracting function a that (re)launches a stap process using an existing parser. (StapLauncher::onChildDied): call disconnect() on dead parser. (GrapherWindow::_graphicalLauncher, setGraphicalLauncher): delete member, replacing with... (graphicalLauncher): new variable (ProcModelColumns): Store parser object in the list model instead of just a StapProcess object. (ProcWindow::onRestart): new function (ProcWindow::refresh): Preserve the list selection when the process list is refreshed. (ProcWindow::onSelectionChanged): Manage the restart button's state.
| * runtime: undefine DEBUG_MEM, retain alloc countingFrank Ch. Eigler2009-12-101-9/+10
| | | | | | | | | | | | | | DEBUG_MEM can & does evoke locking timeouts. * runtime/alloc.c (*): Track __stp_allocated_memory regardless of DEBUG_MEM.
| * runtime: print stp_alloc statistics in startup printkFrank Ch. Eigler2009-12-102-20/+13
| | | | | | | | | | * runtime/alloc.c: Define DEBUG_MEM. * runtime/print.c (_stp_print_kernel_info): Reformat/rescale mem values.
| * Merge commit 'origin/master'Tim Moore2009-12-106-27/+58
| |\
| | * Begin to parameterize loc2c for proper DWARF target address size.Roland McGrath2009-12-091-4/+15
| | | | | | | | | | | | | | | | | | * loc2c.c (stack_slot_type): New function. (translate): Use it in place of STACK_TYPE and UTYPE macros. (emit_loc_address, emit_loc_value, c_emit_location): Likewise.
| | * Fix regression in statistic operationsAnton Vorontsov2009-12-091-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit 98c783852039061db8c1611742660aaded0eab77 ("Use proper types for do_div") I imprudently changed some variables to an unsigned type while in some places the code actually relies on a sign. So, let's be a bit smarter now and use temporary variables. Reported-by: Wenji Huang <wenji.huang@oracle.com> Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
| | * PR 10848 partial fix by using systemtap memory functions everywhere.David Smith2009-12-092-8/+12
| | | | | | | | | | | | | | | | | | | | | * runtime/addr-map.c (add_bad_addr_entry): Uses systemtap memory allocation/deallocation wrappers. * runtime/itrace.c (create_itrace_info): Ditto. (remove_usr_itrace_info): Ditto.
| | * Handle .probes section big endian 32 bit case.Stan Cox2009-12-092-9/+19
| | | | | | | | | | | | | | | | | | sdt.h (STAP_PROBE_ADDR): Add 32 bit big endian case. (STAP_PROBE_DATA_): Use .balign tapsets.cxx (sdt_query::get_next_probe): Stop if there is no probe name.
| * | grapher: integrate graph events from stdin with the stap process framework.Tim Moore2009-12-103-21/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was the original way to do graphing and had bitrotted some. * grapher/StapParser.cxx (initIO): new catchHUP argument (ioCallback): Only disconnect signals, etc. on IN_HUP if catchHUP is true. (errIoCallback): Write error messages to stderr, not stdout. * grapher/grapher.cxx (StapLauncher::launch): Don't catchHUP on our stap process children. (ProcWindow::refresh): Display something reasonable for the stap "process" that is feeding stdin. (main): Use StapParser::initIO to initialize parser reading from stdin.
| * | grapher: more implementation stap process windowTim Moore2009-12-102-155/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The process arguments are displayed, and the "kill" button is insensitive when a process is dead or nothing is selected. * grapher/grapher.cxx (ProcWindow _killButton, _restartButton, _stapArgsLabel, _scriptArgsLabel): new members (ProcWindow::ProcWindow): hook 'em up (ProcWindow::onSelectionChanged): Enable / disable kill button and display process arguments. * grapher/processwindow.glade: Replace bizzare handle window with a horizontal pane. Tweak various widget sizes.
| * | grapher: change SIGCHLD handling and exit cleanupTim Moore2009-12-101-115/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The signal handler now calls waitpid() and writes the pid and status to its pipe. * grapher.cxx (ChildInfo): new class (handleChild): wait for zombies and write their status down the pipe. (ChildDeathReader::ioCallback): Read dead child's pid from signal handler pipe and emit signal. (ChildDeathReader::reap): delete (ChildDeathReader::Callback): delete (StapLauncher::StapLauncher): Connect to childDied signal. (StapLauncher setWinParams, reap, cleanUp): delete (onChildDied): new function that updates the parsers list when a child dies. (GrapherWindow): Remove ChildDeathReader::Callback base class (GrapherWindow::onParserListChanged): New function; exits if program is quitting and no parsers are left. (on_menu_file_quit): Kill all children; don't hide (and exit) unless there are no parsers. (main): Don't do any cleanup after Gtk loop exits.
| * | show the status of stap processes in the process windowTim Moore2009-12-094-227/+418
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also, the "kill" button now works. * grapher/StapParser.hxx (_ioConnection, _errIoConnection): new members for sigc connections. (initIo): New function (parsers, parserListChangedSignal): new variables * grapher/StapParser.cxx (ioCallback): disconnect signals when child dies (initIo): new function * grapher/grapher.cxx (StapLauncher): eliminate death callback in favor of childDied signal. Use global parsers list (ProcWindow::_listSelection): new member (ProcWindow::show, hide, onParserListChanged, onSelectionChanged, onKill): new functions (ProcWindow::ProcWindow): Set up cell renderer for status icon * grapher/processwindow.glade: labels for display script and stap arguments
| * Merge commit 'origin/master'Tim Moore2009-12-089-142/+344
| |\
| | * Add .library("lib").mark("mark") and use it for .mark semaphores.Stan Cox2009-12-087-124/+271
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | tapset-utrace.cxx (TOK_LIBRARY): New. (utrace_derived_probe::utrace_derived_probe): Add library and has_library. (utrace_builder::build): Handle library. (utrace_derived_probe_group::emit_probe_decl): Add sdt_sem_offset to emitted stap_utrace_probes. Add stap_task_finder_target mmap_callback for handling shared library. Handle sdt_sem_offset in emitted_stp_utrace_probe_cb. Add stap_utrace_mmap_found. (register_tapset_utrace): Handle .library tapset-utrace.cxx (TOK_LIBRARY): New. (base_query::base_query): Add path and has_library. (dwarf_derived_probe::dwarf_derived_probe) Likewise. (dwarf_derived_probe::register_patterns): Handle .library (sdt_query::convert_location): Likewise. (dwarf_builder::build): Likewise. (uprobe_derived_probe_group::emit_module_decls): Emit sdt_sem_address. Add sdt_sem_offset to emitted stap_uprobe_spec. Add offset and vm_flags to signature of stap_uprobe_change_plus, and handle sdt_sem_offset. Allow writeable segments in emitted stap_uprobe_mmap_found. sdt_misc.exp: Test .library util.cxx (find_executable): Add env_path to sig and use it in getenv. util.h (find_executable): Likewise. Make "PATH" the default. dtrace.in (provider): Turn on semaphores. sdt.h: Likewise.
| | * Revert "PR 10641 fixed by checking module name in unprivileged mode."David Smith2009-12-083-17/+0
| | | | | | | | | | | | | | | | | | | | | This reverts commit b2ea60606801aa9bf243f22318ac4bd8a25094fe. * main.cxx (checkOptions): Remove unprivileged mode module name check. * testsuite/parseko/cmdline05.stp: Delete unneeded testcase. * testsuite/parseok/cmdline03.stp: Ditto.
| | * Add dtrace -I support.Mark Wielaard2009-12-082-17/+70
| | | | | | | | | | | | | | | | | | | | | | | | dtrace -I is used to pass through include paths to cpp when run. Thanks to David Malcolm <dmalcolm@redhat.com> for python coding and testing. * dtrace.in: Add -I support. * testsuite/systemtap.base/dtrace.exp: Add testcases for -C -I and -G -I.
| | * PR 10641 fixed by checking module name in unprivileged mode.David Smith2009-12-073-0/+17
| | | | | | | | | | | | | | | | | | | | | * main.cxx (checkOptions): If in unprivileged mode, make sure module name starts with 'stap_'. * testsuite/parseko/cmdline05.stp: New testcase. * testsuite/parseok/cmdline03.stp: New testcase.
| | * Small compile server shutdown fix.David Smith2009-12-071-1/+3
| | | | | | | | | | | | | | | * testsuite/lib/systemtap.exp (shutdown_server): Only remove the temporary stap script if it exists.
| * | grapher: start of a dialog for displaying active stap processesTim Moore2009-12-087-59/+573
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The names of active scripts are displayed in a list; mock buttons suggest being able to stop and restart them. * grapher/processwindow.glade: new file * grapher/Makefile.am: add processwindow.glade to installed files * grapher/StapParser.hxx (StapProcess): new class (StapParser): factor out members that are now in StapProcess (ioCallback): Use the new childDied signal instead of aborting the whole grapher when a child dies. * grapher/grapher.cxx (ProcModelColumns, ProcWindow): classes for displaying stap process window. (GrapherWindow::on_menu_proc_window): new function
| * | refactor list of data sets out of GraphWidget into a global data structure.Tim Moore2009-12-088-32/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also, add a sigc signal for broadcasting data set changes. * grapher/GraphData.hxx (GraphDataList) new typedef (getGraphData, graphDataSignal): new functions * grapher/Graph.hxx (DatasetList): remove typedef in favor of systemtap::GraphDataList * grapher/GraphWidget.cxx (GraphWidget, onGraphDataChanged): Use graphDataSignal to notice new data sets that need to be added. Use the global data set list instead of one embedded in GraphWidget. * grapher/StapParser.hxx: delete the _widget member; use signals to broadcast that there are new data sets instead of calling into the widget.
| * | tiny refactoring of signal and pipe codeTim Moore2009-12-081-11/+6
| |/
| * add copyright and license to grapher filesTim Moore2009-12-0712-0/+96
| |
| * make the list items in the data set list unselectableTim Moore2009-12-072-1/+13
| | | | | | | | | | | | | | | | | | | | The checkbox selects the list, so it is just sloppy to allow the item to be selected. * grapher/GraphWidget.hxx (no_select_fun): New function; just returns false. * grapher/GraphWidget.cxx (GraphWidget): Connect list store selection to function that prevents selection.
| * Change data set list display to use a check box for inclusion in a graphTim Moore2009-12-073-100/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Incidently, this supports removing a data set from a graph. Also, remove the Add, Remove, and Cancel buttons from the data set dialog. * grapher/GraphWidget.hxx (DataModelColumns::_dataEnabled): new member _listConnection: new member * grapher/GraphWidget.cxx (GraphWidget): Delete connections for removed buttons. Connect to dialog show and hide signals instead of map. Add "Enabled" column to dialog list. (onDataAdd, onDataRemove): delete (onDataDialogOpen): Initialize list store with all data sets and hook up row_changed signal (onDataDialogClose, onRowChanged): new functions * grapher/graph-dialog.glade: Remove obsolete buttons (Add, Remove, Cancel).
| * Merge branch 'master' of ssh://sourceware.org/git/systemtapTim Moore2009-12-072-10/+8
| |\
| | * Fix regression introduced by commit 379c585Wenji Huang2009-12-072-10/+8
| | |
| * | option to display graph times relative to the start timeTim Moore2009-12-075-6/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This avoids having humongous numbers displayed on the graphs' x axis. Also, the dialog for adding a data set to a graph was cleaned up. * grapher/graph-dialog.glade: Add check box for display of relative time and a label for the data set list. Force the list of data sets to be larger. * grapher/Graph.hxx (_timeBase): new member * grapher/Graph.cxx (draw): Subtract _timeBase from displayed time value. * grapher/GraphWidget.hxx (DataModelColumns): Add a column for a data set's title, which is optional at the moment. * grapher/GraphWidget.hxx (_globalTimeBase, _timeBaseInitialized, _relativeTimesButton, _displayRelativeTimes): new members * grapher/GraphWidget.hxx (GraphWidget): Hook up check button for displaying relative time. (on_expose_event): Determine base time if needed; set base time in graphs. (onDataDialogOpen): Insert graph data set's name (key) and title into the list of data sets.
| * | Add a missing cairo context restore()Tim Moore2009-12-071-0/+1
| |/ | | | | | | | | | | | | It's not clear if this was causing any ill effects, but it is certainly bad form. * grapher/GraphWidget.cxx (on_expose_event): add missing cr->restore().
| * Add new graph output to the last graphTim Moore2009-12-041-1/+1
| |
| * restore event square colorTim Moore2009-12-041-0/+2
| | | | | | | | | | * grapher/GraphStyle.cxx (GraphStyleEvent::draw): set event color in inner loop.
| * hover text on the additional graphsTim Moore2009-12-042-2/+10
| | | | | | | | | | | | | | | | | | * grapher/Graph.cxx (window2GraphCoords): Take the entire graph's position into account too. * grapher/GraphWidget.cxx (GraphWidget): Hook up the data dialog's OK button. (onDataDialogOpen): If a data set doesn't have a title, use it's name (key) instead.
| * tweak multiline hover text to have proper interline spacingTim Moore2009-12-042-8/+16
| | | | | | | | | | | | | | | | * grapher/CairoWidget.cxx (CairoTextBox::draw): Use font information to caculate legible spacing. Also change the font to something more readable. * testsuite/systemtap.examples/general/grapher.stp: Put carriage returns in the right spots.
| * support multiline data output from scripts run under the grapherTim Moore2009-12-045-20/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is accompanied by support for multiline output in hover text. * grapher/StapParser.cxx (ioCallback): Read data 'til the end of line character, not just '\n'. Be careful to use I/O functions that don't treat '\n' specially. * grapher/StapParser.hxx: ditto * grapher/CairoWidget.cxx (CairoTextBox::draw): Perform line breaks for hover text. * testsuite/systemtap.examples/general/grapher.stp: Do multiline output of keyboard events. Also, fix longstanding breaking in the pty probe.
| * Merge commit 'origin/master'Tim Moore2009-12-033-11/+33
| |\
| | * PR11020: Check switch_file global flag inside inner loop for busy scriptsMasami Hiramatsu2009-12-031-2/+4
| | | | | | | | | | | | | | | * runtime/staprun/relay.c (reader_thread): Check switch_file thread flags inside inner read-write loop. And clear the flags after switching file.
| * | Error check in hover text code for empty graphsTim Moore2009-12-031-2/+4
| | | | | | | | | | | | | | | * grapher/GraphStyle.cxx(GraphStyleEvent::dataIndexAtPoint, GraphStyleBar::dataIndexAtPoint): check for empty graph data