Jonathan Lebon [Mon, 23 Feb 2015 16:10:03 +0000 (11:10 -0500)]
stmt_rel.exp and vars.exp: adapt to latest kernel
The bio.c file was moved from the fs directory to the block directory.
The two test cases stmt_rel.exp and vars.exp used functions from that
file to make some sanity checks. Update the testcases to be more
flexible.
Jonathan Lebon [Fri, 20 Feb 2015 18:24:18 +0000 (13:24 -0500)]
nearest probes: allow ENUMERATED and WILDCARD linenos
This commit reverses commit 2ff2868 which added the restriction of only
allowing .nearest probes on ABSOLUTE and RELATIVE linenos. We now allow
this for all lineno types.
WILDCARD lineno types do not need any special handling for .nearest
probes since the resulting linenos are already known to be correct. For
ENUMERATED linenos however, we now must add .nearest handling: for each
lineno enumerated, if we fail to find an address, we check if there is a
nearby lineno we can instead probe.
This commit also fixes failures in the unprivileged_myproc.exp testcase.
Related PRs: PR17906, PR17986.
Abegail Jakop [Wed, 25 Feb 2015 21:48:30 +0000 (16:48 -0500)]
PR16974: wrap if, try and for tmpvar decls in unions
translate.cxx: in c_tmpcounter::visit_block, the tmpvar declarations
in the generated c code are wrapped in a union, with each
block->statements[i] wrapped in a struct, to reduce context memory
allocation. following ::visit_block, the tmpvar declarations in
::visit_if_statement, ::visit_try_block and ::visit_for_loop are
wrapped in a union. since this causes quite a lot of nesting, comments
are added to the generated c code to indicate the source file and
line the struct/union tmpvars correspond to.
Abegail Jakop [Wed, 25 Feb 2015 21:32:17 +0000 (16:32 -0500)]
PR16974: move struct+visit outputting to new fn(s)
translate.cxx: from c_tmpcounter::visit_block(), move the portion
to wrap the statement->visit() part in a struct declaration to a
function, ::wrap_visit_in_struct()
Frank Ch. Eigler [Mon, 23 Feb 2015 18:12:00 +0000 (13:12 -0500)]
dtrace.in python3 support, testsuite parts
Prepare for fuller /usr/bin/dtrace python3-compatibility by extending
the dtrace.exp test case to run with -each- python interpreter.
Various embedded input files were also factored out into separate
files for easier diagnostics.
David Smith [Mon, 23 Feb 2015 19:04:48 +0000 (13:04 -0600)]
Add minor syscall testsuite test case tweaks.
* testsuite/systemtap.syscall/chmod.c: Avoid nesting by looking for return
values. Test old 16-bit syscall variants on all 32-bit platforms.
* testsuite/systemtap.syscall/uid16.c: Ditto.
* testsuite/systemtap.syscall/getgroups.c: Test old 16-bit syscall
variants on all 32-bit platforms.
* testsuite/systemtap.syscall/poll.c: Add 'epoll_create1' to the covered
list.
Josh Stone [Fri, 20 Feb 2015 19:40:56 +0000 (11:40 -0800)]
PR18000: Always use new tracequery objects directly
When new tracequery objects are built, always use them directly from the
build directory, regardless of whether the systemtap cache is enabled.
This allow traceponts to be found even under --disable-cache.
Martin Cermak [Tue, 17 Feb 2015 18:19:00 +0000 (19:19 +0100)]
PR16716 partial fix: Fix types and nesting for 'syscall.{mbind,move_pages,migrate_pages}'.
* runtime/linux/compat_unistd.h: Define __NR_move_pages for rhel5 powerpc platform
* tapset/linux/nd_syscalls.stp: Fix types and nesting for 'syscall.{mbind,move_pages,migrate_pages}'.
* tapset/linux/syscalls.stp: Fix types and nesting for 'syscall.{mbind,move_pages,migrate_pages}'.
* testsuite/buildok/nd_syscalls-detailed.stp: Test all convenience variables.
* testsuite/buildok/syscalls-detailed.stp: Test all convenience variables.
* testsuite/systemtap.syscall/numa.c: New testcase.
Frank Ch. Eigler [Mon, 16 Feb 2015 20:50:55 +0000 (15:50 -0500)]
testsuite listing_mode: Adapt to changed line numbers
commit 2538abbc94 inserted some blank lines to separate function
declarations and bodies, but the .exp file needs correponding updates
for the pushed-down line numbers.
Frank Ch. Eigler [Fri, 13 Feb 2015 15:31:32 +0000 (10:31 -0500)]
BZ1128209: add a configure --{enable,disable}-virt option
It was desirable that a systemtap rpm be buildable in a predictable
manner (in this case, without virthost support), even if prerequisites
(libvirt etc.) were accidentally installed.
Josh Stone [Fri, 13 Feb 2015 02:06:54 +0000 (18:06 -0800)]
PR17966: never generate .call for an unresolved .return $var
The saved-return code already skipped .call for any $var that generated
an error, but variables attempted in a symtab context don't generate
errors until later. This means a @defined-guarded $var might create an
unguarded access in .call that causes unrecoverable errors further on.
Now the .call will be skipped if the target_symbol persists for any
reason, regardless of its error state. Any resolved target_symbol
should become something quite different, usually a loc2c function call.
The minidebuginfo.exp test is extended to exercise @defined and .return
scenarios as well.
Josh Stone [Thu, 12 Feb 2015 21:45:15 +0000 (13:45 -0800)]
runtime/linux: block utrace-via-tracepoints without tracepoints
The code in autoconf-utrace-via-tracepoints.c will compile just fine on
kernels which do have those tracepoints, but not CONFIG_TRACEPOINTS=y.
That would only result in ENOSYS at runtime.
To get this autoconf working at compile time, check the config directly.
Reported-by: Crestez Dan Leonard <cdleonard@gmail.com>
Frank Ch. Eigler [Tue, 10 Feb 2015 22:42:35 +0000 (17:42 -0500)]
gcc5 -Wformat=2 tweaks
-Wformat=2 now includes -Wformat=signedness, which sadly some of our
violates. Correct this throughout with some casts. In the case of
stapdyn, we downgrade to -Wformat=1 due to problems with
dyninst-devel.
Regenerate auto* configury on fedora rawhide, since automake was
complaining about needing "subdir-objects" in AUTOMAKE_OPTIONS.
William Cohen [Tue, 10 Feb 2015 12:36:51 +0000 (07:36 -0500)]
Make all socketcall.connect probes optional.
Both 32-bit and 64-bit arm do not implement syscall socketcall. A
number of tests were failing on those architectures because two of the
syscall socketcall return probes were not optional. Made those two
syscall socketcall variants optional like all the others.
William Cohen [Sat, 7 Feb 2015 05:42:07 +0000 (00:42 -0500)]
The 32-bit arm does not remap epoll_wait or poll syscalls
The poll test was failing because the test was expecting the 32-bit
arm processor to remap the epoll_wait syscall to epoll_pwait and to
remap the poll syscall to ppoll. Only the arm64 is remapping those
syscalls.
William Cohen [Sat, 7 Feb 2015 04:15:17 +0000 (23:15 -0500)]
Do not expect that alarm(-1) to work for the syscall alarm.c test
Setting a alarm for a time in the past (alarm(-1)) doesn't make much
sense. Some kernels allow this and do not flag an error. Others such
as the Fedora 20 32-bit ARM kernel return -EINVAL. Allow the
syscall alarm test to pass with kernels that do return an error.
Abegail Jakop [Thu, 5 Feb 2015 21:30:27 +0000 (16:30 -0500)]
PR12276: example usages of symfileline() to profile
EXAMPLE/profiling/periodic.stp: for the case of printing out symdata for a
kernel address, if file:line information is available, then print out the
symbol@file:line information.
EXAMPLE/profiling/fileline-profile.*: use symfileline() and symname(),
or symdata if file:line info is not available, to print out information
on the top 20 addresses sampled from when the stap script was running.
Abegail Jakop [Mon, 2 Feb 2015 23:05:47 +0000 (18:05 -0500)]
PR12276: check all sequences in _stp_linenumber_lookup
runtime/sym.c: addresses can only increase within a sqeunce, but at the
start of the new sequence, the starting address can be lower than the
previous'. _stp_linenumber_lookup() was changed to iterate through all
sequences until a suitable address is found, instead of giving up when
the line data address passes the desired address.
Abegail Jakop [Tue, 27 Jan 2015 18:51:23 +0000 (13:51 -0500)]
PR12276: symfile[line]() return path and filename
sym.c: changed the filename gathering portion from _stp_linenumber_lookup()
to collect the directory information and include that with the returned
filename. moved the filename gathering portion to its own function,
_stp_filename_lookup()
Abegail Jakop [Wed, 14 Jan 2015 17:22:24 +0000 (12:22 -0500)]
PR12276: fix inital line data check to check all units
translate.cxx: encase the majority of dump_line_tables_check() in a while
loop to check all of the units/line number programs instead of only
the first unit/line number program
Abegail Jakop [Wed, 31 Dec 2014 15:22:11 +0000 (10:22 -0500)]
PR12276: tests for symfileline and related
[u]context-symbols-embedded.stp: check that [u]symfileline() and
the related tapset functions build without issues
usymfileline.*: tests usymfileline(), usymfile(), and usymline() with
and without debug_line info
symfileline.*: tests symfileline(), symfile() and symline() with
an valid address from the kernel module set up in context.exp
context.exp: add symfileline to list of tests to be run
Abegail Jakop [Mon, 22 Dec 2014 21:58:44 +0000 (16:58 -0500)]
PR12276: add functions [u]symfile and [u]symline
runtime/sym.c: in _stp_snprint_addr(), add in the ability to return
the linenumber or the filename.
tapset/linux/[u]context-symbols.stp: added functions [u]symline and
[u]symfile. fixed spelling mistake with pragma:myproc-unprivileged
Abegail Jakop [Mon, 22 Dec 2014 20:04:34 +0000 (15:04 -0500)]
PR12276: fix addr adjustment for symfileline()
runtime/sym*: adjust the given address to account for the load offset
runtime/transport/symbols.c: include the body of _stp_module_update_self()
if STP_NEED_LINE_DATA so that the sec_load_offset can be updated
tapset/linux/context-symbols.stp: remove the pragma myproc-unpriveleged
since it's spelled wrong, and it's not needed anyways
translate.cxx: add funtion find_debug_frame_offset() to set the
sec_load_offset for the ".text" section
Abegail Jakop [Thu, 11 Dec 2014 20:20:44 +0000 (15:20 -0500)]
PR12276: debug_line data decoder
runtime/sym.c: have _stp_linenumber_lookup() go through the
debug_line info and determine if the given address corresponds
to a line number (and a file name).
Abegail Jakop [Tue, 9 Dec 2014 20:58:17 +0000 (15:58 -0500)]
PR12276: constant definitions and moved functions
unwind.*: moved function and constant definitions related to read_pointer()
from unwind.c to unwind/unwind.h for use by the debug_line decoder
sym.*: include the unwind header file and add in constants for decoding
opcodes within the debug_line decoder
Abegail Jakop [Fri, 5 Dec 2014 15:15:37 +0000 (10:15 -0500)]
PR12276: dump debug_line data to generated header
elaborate.cxx: set a flag to indicate debug_line data is needed if
pragma:lines was found in embedded code
translate.cxx: gather debug_line data if it is needed and can be accessed.
if the data was gathered, output it to the generated header file
Abegail Jakop [Thu, 5 Feb 2015 21:30:27 +0000 (16:30 -0500)]
PR12276: example usages of symfileline() to profile
EXAMPLE/profiling/periodic.stp: for the case of printing out symdata for a
kernel address, if file:line information is available, then print out the
symbol@file:line information.
EXAMPLE/profiling/fileline-profile.*: use symfileline() and symname(),
or symdata if file:line info is not available, to print out information
on the top 20 addresses sampled from when the stap script was running.