summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Move the blacklist functions into dwflppJosh Stone2009-06-011-320/+4
| | | | | | | For a call like "stap -l 'syscall.*'", I found that ~10% of the time was spent compiling the blacklist regexps over again for each probe point. By moving this functionality into the kernel dwflpp instance, we can reuse the regexps and get an easy speed boost.
* Fix another kernel/kprobe.function conflictJosh Stone2009-05-221-7/+7
| | | | | | | | | | Both kernel.function and kprobe.function were defining a global array stap_unreg_kprobes to use in bulk kprobes unregistration. The compiler allowed the duplicate definition as long as they were the same size, as it was when exercised in buildok/thirtyone. kprobe.function now uses a separate stap_unreg_kprobes2, and the testcase is modified to produce an imbalanced number of probes.
* PR10190: Suppress warnings for optional kprobesJosh Stone2009-05-221-4/+13
| | | | | | When a kernel.function or kprobe.function fails in registration, we usually print a WARNING and move on. With this patch, kprobes that have the optional '?' flag will not print any WARNING.
* Make all tapsets' TOK_FOO constantJosh Stone2009-05-151-14/+14
|
* Merge branch 'tapsets-cleanup'Josh Stone2009-05-151-2300/+73
|\
| * Break the dwflpp dependence on query_cuJosh Stone2009-05-151-2/+6
| |
| * Break the dwflpp dependence on query_moduleJosh Stone2009-05-151-5/+5
| |
| * Merge the dwflpp::query_cu_..._address methodsJosh Stone2009-05-151-1/+1
| | | | | | | | | | | | | | | | The method query_cu_containing_global_address was only called by query_cu_containing_module_address, and the latter was just doing a simple argument transform. They are now merged into a single method, query_cu_containing_address. The function module_address_to_global is also merged here at its only call site.
| * Move dfwlpp into its own fileJosh Stone2009-05-121-2236/+31
| | | | | | | | | | It's not a terribly clean split, but moving it helps reveals some of the knots that need to be untangled.
| * Consolidate dwflpp setupJosh Stone2009-05-111-67/+41
| |
* | [tracepoints] ternary is nicer for arg formatJosh Stone2009-05-141-5/+1
| |
* | [tracepoints] Print pointer arguments with %pJosh Stone2009-05-141-1/+5
| | | | | | | | | | | | We know the full type of every tracepoint argument, so for those that are pointers, print $$vars/$$parms using "%p". The integer-type arguments continue to use the generic "%#x".
* | PR10139 Mark .probes section SHF_ALLOC.Mark Wielaard2009-05-141-1/+17
|/ | | | | | * includes/sys/sdt.h (STAP_PROBE_DATA_): Mark .probes section SHF_ALLOC. * tapsets.cxx (dwarf_builder::build): Search in either dwarf or main elf file for .probes section.
* Get .probes section through dwarf debuginfo file if necessary.Mark Wielaard2009-05-101-1/+39
| | | | | | * tapsets.cxx (dwarf_builder::build): Add some comments, verbose log messages and get Elf through dwarf_getelf if it exists before searching for .probes section.
* Allow @cast failures to get optimized awayJosh Stone2009-05-081-17/+13
| | | | | | We have the saved_conversion_error field, but I wasn't using it. Now @cast errors are saved in that field, so they're only seen if the optimizer doesn't remove the @cast.
* PR10054: Unify the translate_components errorsJosh Stone2009-05-081-39/+12
| | | | | | | Since translate_components is the one that knows the details of its failures, it makes more sense to let it throw its own errors, instead of relying on each caller to do it. The function now always either returns successfully or throws an error.
* Refactor anonymous lookups in translate_componentsJosh Stone2009-05-081-113/+94
| | | | | | | | | | | | | | | | | | | The previous code recursed the entirety of translate_components, and it seemed to be restarting the components list every time, so it would only work if the anonymous portion was the first component. Even then, examining the code output by semok/thirtythree revealed that it wasn't fully translating the locations when multiple anonymous pieces were involved. Instead, it now recurses in a separate function, find_struct_member, which does just enough to find the member die and return. It also builds a vector of the locations passed through, so translate_components can output code for the full chain of anonymity. The generated code for semok/thirtythree's $page->mapping now appears to match the offsets from my manual inspection of struct page. I also added a test for $page->first_page->mapping, which works now but would segfault the old code.
* Separate the utrace tapsetJosh Stone2009-05-071-1048/+1
|
* Separate task_finder and the itrace tapsetJosh Stone2009-05-071-385/+4
|
* Separate the kernel.mark tapsetJosh Stone2009-05-071-708/+1
|
* Separate the permon tapsetJosh Stone2009-05-071-436/+1
|
* Group all kprobe_derived_FOO togetherJosh Stone2009-05-071-57/+35
|
* Separate the procfs tapsetJosh Stone2009-05-061-499/+1
|
* Separate the begin/end/error/never tapsetsJosh Stone2009-05-061-202/+3
|
* Separate built-in timer tapsetsJosh Stone2009-05-061-615/+8
| | | | | | All of the timer.* tapsets are now built and handled in their own tapset-timers.cxx, as the first step of many to pare down the current monolithic tapsets.cxx.
* Don't recurse into DW_AT_declaration subprograms in iterate_over_labels.Mark Wielaard2009-05-031-1/+4
| | | | | | | | | Newer gcc (4.4) places more DW_TAG_subprograms with DW_AT_declaration at call sites. iterate_over_labels should only be concerned about complete declarations. * tapsets.cxx (dwflpp::iterate_over_labels): Skip DW_TAG_subprogram that has attribute DW_AT_declaration.
* Handle more types of types in declaration_resolveJosh Stone2009-04-271-12/+14
| | | | | | | Instead of just structs and unions, we now also process typedefs, enums, and base types in iterate_over_globals, so declaration_resolve can find more variations. This especially useful to let @casts reference typedef names.
* Warn if trying to dereference an enumJosh Stone2009-04-271-0/+7
| | | | | In translate_components, give a cleaner warning about trying to dereference an enum type, rather than "unexpected type tag".
* Handle kprobe struct field symbol_name as either char * or const char *.Mark Wielaard2009-04-261-2/+2
| | | | | | | | Older (2.6.18) based kernels defined struct kprobes symbol_name as char *, but newer (2.6.27) based kernels defined the same field as const char *. * tapsets.cxx (kprobe_derived_probe_group::emit_module_init): Always cast to char * when assigning to kprobes.symbol_name field.
* fix kprobe.* probes so they don't break -p4 if script also has kernel.* probesFrank Ch. Eigler2009-04-261-6/+6
| | | | | * tapsets.cxx (kprobe_derived_probe): Use enter_k[ret]probe>>2<<_probe. * testsuite/buildok/thirtyone.stp: Test this.
* Enable kprobe.function.return.maxactiveJosh Stone2009-04-241-35/+57
| | | | | The code to emit maxactive was almost there; it just needed to enable the maxactive probe component and pass the value down.
* Simplify dwarfless kprobe stmt vs. name logicJosh Stone2009-04-241-29/+15
|
* Fill out the pp() for dwarfless kprobesJosh Stone2009-04-241-3/+25
|
* Don't terminate when a dwarfless kprobe failsJosh Stone2009-04-241-8/+1
| | | | | | | | | | All of our other kprobe types will let the script continue after a registration failure, as per PR6749. The dwarfless kprobes should be no exception. Also, the way they were exiting was causing an unclean shutdown, so I added tests to badkprobe.exp to make sure that cleanup is always allowed to run.
* Tweak error message in kprobe.function registrationJosh Stone2009-04-241-1/+1
|
* PR 9941: Add predicate function callback to check for an early abortRajan Arora2009-04-221-1/+10
| | | | | | | * tapsets.cxx: Add dwfl_report_offline_predicate to check pending interrupts for an early abort. * tapsets.h: Declare it. * translate.cxx: Add callback to function call.
* Make sdt.h big endian aware.Stan Cox2009-04-221-2/+2
| | | | | | * sdt.h: Use .quad instead of .long for .probe section addresses. ia64 and s390 require 'nop 0' and x86 tolerates it. * tapsets.cxx (build): Fetch probe_name in a big endian friendly fashion.
* Use tokenize() for splitting @cast's module listJosh Stone2009-04-211-7/+6
|
* Refine the @cast-with-header syntaxJosh Stone2009-04-211-16/+7
| | | | | | | The special syntax to generate a module for type information is now: - "kernel<path/to/header.h>" to use the kernel's build environment - "<path/to/header.h>" to use no special build environment, and so use gcc's default parameters only (for user mode).
* Correctly handle $syscall in process(PID_OR_PATH).syscall.return probes.David Smith2009-04-211-5/+257
| | | | | | | | | | | | | | | | 2009-04-21 David Smith <dsmith@redhat.com> * tapsets.cxx (utrace_derived_probe::utrace_derived_probe): If during target-variable-expanding the probe, we added a new block or probe, add them. (utrace_var_expanding_visitor::visit_target_symbol_cached): New function to cache target variables in a generated syscall probe to use in syscall.return probes. (utrace_var_expanding_visitor::visit_target_symbol_context): In a syscall.return probe, you can't access $syscall. So use visit_target_symbol_cached() to cache the value for use here. * testsuite/systemtap.base/utrace_syscall_args.stp: Test use of $syscall in syscall.return probes.
* From Prerna Saxena: Add the kprobe.function probe familyAnanth N Mavinakayanahalli2009-04-211-2/+460
|
* Suppress more module-loading errors in @castsJosh Stone2009-04-201-3/+14
| | | | | Commit 462c90c3 did this for user modules, but it's needed for kernel modules too.
* PR10055: generate dummy modules w/ types for @castJosh Stone2009-04-201-0/+56
| | | | | | | The module field in @cast can now also be "kmod<path/to/header.h>" or "umod<path/to/header.h>" to generate a kernel or user module which includes the specified header. The appropriate compiler flags are used to save all possible type debuginfo from the header.
* Suppress module-loading errors in @castsJosh Stone2009-04-201-1/+10
| | | | | | If a @cast encounters a module that it can't load, it should just go on to the next module instead of throwing an exception. If there is no next module, we'll get a better "type not found" exception anyway.
* Indentation repair.Stan Cox2009-04-161-89/+88
| | | | * tapsets.cxx (dwflpp::iterate_over_labels): Fix indentation.
* Use iterate_over_srcfile_lines for function("func@file:N").labelStan Cox2009-04-161-103/+127
| | | | | | | | * tapsets.cxx (dwflpp::iterate_over_labels): Renamed from iterate_over_cu_labels, method signature simplified. (query_srcfile_label): New. (query_cu): Use above. * labels.exp: New tests for above.
* PR9940: add/use unmap_u[ret]probeJim Keniston2009-04-151-9/+32
| | | | | For uprobes 1 and 2, add unmap_u[ret]probe() and define UPROBES_API_VERSION=2. Adapt tapsets.cxx accordingly.
* PR10067: fix bitfield accessJosh Stone2009-04-131-2/+5
| | | | | | | | | * tapsets.cxx (dwflpp::translate_components): Eliminate the extra die-dereference at the end of the loop (a regression from @casts). * runtime/loc2c-runtime.h (store_bitfield): Use the target as the representative type, since the base is always int64_t. Also be a bit more aggressive with masking and parentheses. * testsuite/systemtap.base/bitfield.*: New test for R/W bitfields.
* PR10049: Restore better errors for $returnJosh Stone2009-04-131-10/+11
| | | | | | | | | | | | | In commit c4ce66a1 I shifted some of the variable accesses around, and that caused the error messages for $return variables to lose context. The root problem in this case was that dwarf_attr didn't find the type attribute, and that failure wasn't immediately caught. Now that result is checked so we can provide a proper error message. While I'm at it, changing that lookup to dwarf_attr_integrate is enough to make the $return value usable again, at least for the reported test case.
* Improve -l output for .labelStan Cox2009-04-131-6/+15
| | | | | | * tapsets.cxx (iterate_over_cu_labels): Treat -l specially so the output of a .label can be improved. * labels.stp: Test -l