| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows the '&' operator to get the address of @cast and $target
variable expressions.
* staptree.h (target_symbol): add addressof field
* staptree.cxx (target_symbol::print): print '&' for addressof
(cast_op::print): ditto
* parse.cxx (parser::parse_value): allow '&' prefix on $target/@cast
* dwflpp.cxx (dwflpp::translate_final_fetch_or_store): allow taking the
computed address without actually doing a final fetch.
* tapset* (*::visit_target_symbol): throw errors for $vars w/o addresses
* testsuite/systemtap.base/cast.stp: add &@cast test
* testsuite/semok/target_addr.stp: test '&' on different member types
* testsuite/semko/target_addr?.stp: test failure on bitfields/registers
|
| |
|
|\ |
|
| |
| |
| |
| |
| | |
* testsuite/systemtap.base/utrace_syscall_args.stp: Makes sure the open
syscall is from the target pid.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* runtime/transport/ring_buffer.c (_stp_ring_buffer_empty_cpu): New function.
(_stp_ring_buffer_empty): Ditto.
(_stp_ring_buffer_iterator_increment): Ditto.
(_stp_tracing_wait_pipe): Calls _stp_ring_buffer_empty() instead of
ring_buffer_empty().
(_stp_peek_next_event): Looks at iterators first.
(_stp_find_next_event): Calls _stp_ring_buffer_empty_cpu() and
increments iterator.
(_stp_data_read_trace): Opens and closes ring_buffer iterators.
(_stp_data_poll_trace): Calls _stp_ring_buffer_empty().
(__stp_relay_wakeup_timer): Ditto.
* runtime/transport/control.c (_stp_ctl_write_cmd): Increased level
required to get a debug print.
|
| |
| |
| |
| | |
* systemtap.spec (testsuite): Require systemtap-sdt-devel.
|
| | |
|
|/ |
|
|
|
|
|
|
|
| |
* dtrace: Renamed to...
* dtrace.in: Add -I@prefix/include to gcc invocation.
* configure.ac (AC_CONFIG_FILES): List dtrace.
* configure: Regenerated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Depends on elfutils 0.142 cfi support.
* loc2c.h (c_translate_location): Take (optional) Dwarf_Op *cfa_ops.
* loc2c.c (translate): Recognize DW_OP_call_frame_cfa.
(location_from_address): Take cfa_ops, examine fb_ops, if it is
DW_OP_call_frame_cfa, pass cfa_ops to translate instead.
(location_relative): Take cfa_ops, pass to location_from_address.
(c_translate_location): Take cfa_ops, pass to location_from_address.
* loc2c-test.c (handle_variable): Take cfa_ops, pass to c_translate_location
when needed.
(main): Fetch cfa_ops, pass to handle_variable.
* dwflpp.h (struct dwflpp): Add new method get_cfa_ops.
* dwflpp.cxx: Include elfutils/version.h.
(translate_location): Fetch cfa_ops when necessary.
(get_cfa_ops): New method.
|
|
|
|
|
|
|
| |
* dwflpp.cxx (dwflpp::translate_components): let pointers get treated
the same as arrays, and add a final DIE dereference for array access.
* loc2c.c (c_translate_array): tolerate pointer types
* testsuite/systemtap.base/pointer_array.*: new test
|
|
|
|
| |
* tapsets.cxx: Remove loc2c.h include.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We cannot guarantee that (un)optimized code compiles and/or generates
fully functional code, so don't tempt the user to try it out.
* session.h (struct systemtap_session): Remove gcc_flags string field.
* hash.cxx (find_script_hash): Don't add gcc_flags.
* main.cxx (usage): Remove -O[0123s] documentation.
(main): Don't use gcc_flags.
* buildrun.cxx (compile_pass): Don't add gcc_flags to EXTRA_CFLAGS.
* stap1.in: Remove -O[0123s] documentation.
* testsuite/systemtap.base/cache.exp: Remove tests for -O[0123s].
|
|
|
|
|
|
|
| |
* main.cxx (main): Default gcc_flags to kernel opt-level (empty).
* buildrun.cxx (compile_pass): Add -freorder-blocks back, document choices.
* stap.1.in: Document new default opt-level.
* testsuite/systemtap.base/cache.exp: Adjust for new caching results.
|
|
|
|
|
| |
* tapsets.cxx(dwarf_derived_probe_group::emit_module_init,
kprobe_derived_probe_group::emit_module_init): print address.
|
|
|
|
|
|
|
|
|
|
| |
* session.h (struct systemtap_session): Add gcc_flags string field.
* main.cxx (usage): Document -O[0123s].
(main): Default gcc_flags to -O0. Add O:: to getopt_long. Handle case
'O' to set gcc_flags.
* buildrun.cxx (compile_pass): Add gcc_flags to EXTRA_CFLAGS.
* stap1.in: Add -O[0123s] documentation.
* testsuite/systemtap.base/cache.exp: Add tests for -O[0123s].
|
|
|
|
| |
* testsuite/systemtap.base/cache.exp: Enable -t tests.
|
|
|
|
|
|
|
|
|
| |
The definition of ntohs comes from user space include headers
netinet/in.h which could define it as function instead of macro.
So use builtin kernel be16_to_cpu instead.
* tapset/aux_syscalls.stp (_struct_sockaddr_u): Define and use _stp_ntohs
as be16_to_cpu.
|
|
|
|
| |
* parse.cxx (operator << (ostream&,const source_loc&)): Add loc.file->name.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Allocated section needs to be writable when creating pic shared objects
because we store relocatable addresses in them.
* includes/sys/sdt.h (ALLOCSEC): New macro, depends on __PIC__.
(STAP_PROBE_DATA_): Use new ALLOCSEC macro.
|
| |
| |
| |
| |
| | |
The location already has a pointer to a stapfile with the filename, so
there's no need to keep an extra copy.
|
| |
| |
| |
| |
| | |
This speeds up the parsing stage >2x, mostly by minimizing string
construction and comparison where char comparison will do.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* buildrun.cxx (compile_pass): Checks for ring_buffer api change.
* runtime/autoconf-ring_buffer-flags.c: New file.
* runtime/transport/ring_buffer.c (tracing_wait_pipe): No longer
schedules, just returns. The timer function will handle it later.
(_stp_data_write_reserve): Handles ring_buffer api change. Added
overwrite processing. If we're full, delete an event to make room.
(_stp_data_write_commit): Handles ring_buffer api change.
(__stp_relay_wakeup_timer): New function.
(__stp_relay_timer_start): Ditto.
(__stp_relay_timer_stop): Ditto.
(_stp_transport_data_fs_start): Calls __stp_relay_timer_start().
(_stp_transport_data_fs_stop): Calls __stp_relay_timer_stop().
(_stp_transport_data_fs_overwrite): Sets overwrite flag.
|
|/
|
|
| |
Allow shutdown_server to test $server_pid in order to determine whether we started a server.
|
|
|
|
| |
* dwflpp.cxx (dwfl_report_offline_predicate): Reject NULL filenames.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* dwflpp.cxx (name_has_wildcard): Make static.
(dwfl_report_offline_predicate): Check & adjust behavior.
* dwflpp.h: Corresponding changes.
* tapsets.cxx: Note that kern_dw[] keys may be wildcard strings.
* testsuite/buildok/fortysix.stp: New test.
|
|
|
|
|
|
|
| |
* loc2c.h (c_translate_add_offset): New function prototype.
* loc2c.c (c_translate_add_offset): New function implementation.
* loc2c-test.c (handle_variable): Use c_translate_add_offset if appropriate.
* dwflpp.cxx (translate_location): Likewise.
|
|
|
|
|
|
|
|
|
| |
* tapset/ioblock.stp (__bio_start_sect): Declare, then initialize variables
that could (through kread) take an early jump.
* tapset/nfs_proc.stp (get_prot_from_client): Likewise.
* tapset/scsi.stp (scsi_timer_pending): Likewise.
* tapset/task.stp (task_cpu): Likewise.
(task_open_file_handles): Likewise.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* dwflpp.cxx (dwflpp ctor): Parametrize for user/kernel modes.
Update callers.
(dwfl_report_offline_predicate): New function. Filter and
abort searches early if possible.
(setup_kernel): Use new predicate.
* dwflpp.h: Corresponding changes.
* tapsets.cxx (dwfl_report_offline_predicate): Remove this shared
implementation.
(dwarf_builder): Turn kern_dw into module_name->dwflpp* map, just
like user_dw.
(get_kern_dw): Adapt.
(dwarf_build_no_more): Adapt.
* tapsets.h: Remove old shared predicate.
* translate.cxx (dwfl_report_offline_predicate2): New function.
Filter and abort searches early if possible.
(emit_symbol_data): Use it.
|
|
|
|
|
|
|
| |
* loc2c-test.c (print_vars): Define attr_mem, typedie_mem and typedie before
switch.
* loc2c.c (translate): Wrap case DW_OP_drop in block brackets.
(location_relative): Initialize stack.
|
|
|
|
|
|
| |
* runtime/procfs.c (_stp_rmdir_proc_module): Now before removing either
'/proc/systemtap/${MODULE}' or '/proc/systemtap', lock the transport
directory. Also make sure '/proc/systemtap' is empty before removal.
|
|
|
|
|
|
|
|
|
|
|
| |
* tapset-procfs.cxx (procfs_derived_probe::join_group): Outputs structure
definition.
(procfs_derived_probe_group::emit_module_decls): The generated
'_stp_procfs_read' and '_stp_procfs_write' functions no longer put a
string_t on the stack.
(procfs_var_expanding_visitor::visit_target_symbol): The generated
'_procfs_value_set' and '_procfs_value_get' functions copy directly
into or out of the os buffer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will first read in the symbol table for modules, and update the
dwarf cu_function_cache with aliased names too. Then when iterating
in dwarf, all of the possible names are matched, instead of only the
canonical dwarf name.
* dwflpp.cxx (dwflpp::iterate_over_functions): call update_symtab,
and track wildcard addresses in a set to avoid alias dupes
* dwflpp.h (symbol_table::Compare): removed
* tapsets.cxx (symbol_table::map_by_addr): replaces list_by_addr
(symbol_table::sort): removed -- multimap doesn't need sorting
(symbol_table::mark_dwarf_redundancies): removed, see update_symtab
(symbol_table::purge_syscall_stubs): remove map elements inline
(dwarf_query::handle_query_module): preload the symtable.
(query_dwarf_func): don't compare the function a second time,
especially since it may have been an alias that matched at first.
(module_info::get_symtab): allow being called multiple times
(module_info::update_symtab): copy dies from the cache to the symtab,
and also add aliased names to the cache
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Here is a patch to the Language Reference Guide that adds information
about DWARF-less probing.
Signed-off-by: Robb Romans <robb@linux.vnet.ibm.com>
Signed-off-by: Josh Stone <jistone@redhat.com>
|
|
|
|
|
|
| |
* translate.cxx (emit_symbol_data_done): Special case
_stp_kretprobe_trampoline emission for -1, which is invalid
in hex if host width > target width.
|
| |
|
| |
|
|
|
|
|
| |
* tapset/ioscheduler.stp (elv_next_request): Change to blk_peek_request.
* tapset/memory.stp (vm.pagefault): Replace $write_access.
|
|
|
|
| |
* tapsets.cxx (probe_table::convert_probe): Add regparm for kprobe.
|
|
|
|
|
|
|
|
|
| |
problems.
* tapsets.cxx (probe_table): Add is_uprobe and is_utrace.
(probe_table::convert_probe): Use _utrace_syscall_arg.
(sdt_var_expanding_visitor): Add utrace_probe.
(sdt_var_expanding_visitor::visit_target_symbol): Use _utrace_syscall_arg.
|
|
|
|
|
|
|
|
| |
This only happened if there was a lot of cruft in the testsuite dir since
expect wasn't "draining" the output of the spawned ls command for some
reason. Work around it by just using tcl file globs to match.
* testsuite/systemtap.base/strftime.exp: Test with glob and file exists.
|
|
|
|
|
|
|
|
|
|
|
|
| |
For shared libraries (.dynamic sections) we need the eh frame section
address offset. This is the sh_addr if the shared library isn't prelinked
(since the base load address is zero in that case), otherwise it is
the module start address minus the bias (which also works for the
non-prelinked case).
* translate.cxx (get_unwind_data): Adjust eh_addr for module start and
bias if module isn't absolute (has no relocations).
* testsuite/systemtap.exelib/ustack.tcl: Accept all prelink tests.
|