#
361088 |
|
15-May-2020 |
dim |
Merge changes that enable DTrace-using ports to link correctly with lld 10, avoiding "unknown relocation 8" and other errors.
MFC r312658 (by markj):
Remove the DTRACEHIOC_ADD ioctl.
This ioctl has been considered legacy by upstream since the DTrace code was first imported, and is unused. The removal also allows some simplification of dtrace_helper_slurp().
Also remove a bogus copyout in the DTRACEHIOC_ADDDOF handler. Due to a bug, it would overwrite an in-memory copy of the DOF header rather than the passed-in DOF helper. Moreover, DTRACEHIOC_ADDDOF already copies the helper back out automatically since its argument has the IOC_OUT attribute.
MFC r313262 (by markj):
Use PC-relative relocations for USDT probe sites on i386 and amd64.
When recording probe site addresses in the output DOF file, dtrace -G needs to emit relocations for the .SUNW_dof section in order to obtain the addresses of functions containing probe sites. DTrace expects the addresses to be relative to the base address of the final ELF file, and the amd64 USDT implementation was relying on some unspecified and incorrect behaviour in the base system GNU ld to achieve this.
This change reimplements the probe site relocation handling to allow USDT to be used with lld and newer GNU binutils. Specifically, it makes use of R_X86_64_PC64/R_386_PC32 relocations to obtain the probe site address relative to the DOF file address, and adds and uses a new DOF relocation type which computes the final probe site address using these relative offsets.
Reported by and discussed with: Rafael Esp?ndola Differential Revision: https://reviews.freebsd.org/D9374
|
#
329249 |
|
13-Feb-2018 |
markj |
MFC r327888, r327972, r327973: Add "jid" and "jailname" variables to DTrace.
|
#
311149 |
|
03-Jan-2017 |
markj |
MFC r310647: Remove an obsolete pragma from dtrace.h.
|
#
310795 |
|
30-Dec-2016 |
gnn |
MFC: 310175
Remove extra DOF_SEC_XLIMPORT from the DOF_SEC_ISLOADABLE macro
Sponsored by: DARPA, AFRL
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
300618 |
|
24-May-2016 |
br |
Add initial DTrace support for RISC-V.
Sponsored by: DARPA, AFRL Sponsored by: HEIF5
|
#
299118 |
|
05-May-2016 |
br |
Implement FBT provider (MD part) for DTrace on MIPS. Tested on MIPS64.
Sponsored by: DARPA, AFRL Sponsored by: HEIF5
|
#
298590 |
|
25-Apr-2016 |
markj |
Increase DTRACE_FUNCNAMELEN from 128 to 192.
This allows for the long function components encountered in www/firefox. This constant is part of DTrace's userland ABI, so this change may not be MFC'ed.
PR: 207735
|
#
298171 |
|
17-Apr-2016 |
markj |
Make the second argument of dtrace_invop() a trapframe pointer.
Currently this argument is a pointer into the stack which is used by FBT to fetch the first five probe arguments. On all non-x86 architectures it's simply the trapframe address, so this change has no functional impact. On amd64 it's a pointer into the trapframe such that stack[1 .. 5] gives the first five argument registers, which are deliberately grouped together in the amd64 trapframe definition.
A trapframe argument simplifies the invop handlers on !x86 and makes the x86 FBT invop handler easier to understand. Moreover, it allows for invop handlers that may want to modify the register set of the interrupted thread.
|
#
291963 |
|
07-Dec-2015 |
markj |
MFV r289003: 6271 dtrace caused excessive fork time
Author: Bryan Cantrill <bryan@joyent.com> Reviewed by: Adam Leventhal <ahl@delphix.com> Reviewed by: Dan McDonald <danmcd@omniti.com> Reviewed by: Richard Lowe <richlowe@richlowe.net> Approved by: Gordon Ross <gwr@nexenta.com>
illumos/illumos-gate@7bd3c1d12d0c764e1517c3aca62c634409356764
|
#
285009 |
|
01-Jul-2015 |
br |
First cut of DTrace for AArch64.
Reviewed by: andrew, emaste Sponsored by: ARM Limited Differential Revision: https://reviews.freebsd.org/D2738
|
#
281257 |
|
08-Apr-2015 |
markj |
libdtrace: add support for lazyload mode.
Passing "-x lazyload" to dtrace -G during compilation causes dtrace(1) to not link drti.o into the output object file, so the USDT probes are not created during process startup. Instead, dtrace(1) will automatically discover and create probes on the process' behalf when attaching.
Differential Revision: https://reviews.freebsd.org/D2203 Reviewed by: rpaulo MFC after: 1 month
|
#
279667 |
|
05-Mar-2015 |
andrew |
Add the MD parts of dtrace needed to use fbt on ARM. For this we need to emulate the instructions used in function entry and exit.
For function entry ARM will use a push instruction to push up to 16 registers to the stack. While we don't expect all 16 to be used we need to handle any combination the compiler may generate, even if it doesn't make sense (e.g. pushing the program counter).
On function return we will either have a pop or branch instruction. The former is similar to the push instruction, but with care to make sure we update the stack pointer and program counter correctly in the cases they are either in the list of registers or not. For branch we need to take the 24-bit offset, sign-extend it, and add that number of 4-byte words to the program counter. Care needs to be taken as, due to historical reasons, the address the branch is relative to is not the current instruction, but 8 bytes later.
This allows us to use the following probes on ARM boards: dtrace -n 'fbt::malloc:entry { stack() }' and dtrace -n 'fbt::free:return { stack() }'
Differential Revision: https://reviews.freebsd.org/D2007 Reviewed by: gnn, rpaulo Sponsored by: ABT Systems Ltd
|
#
278529 |
|
10-Feb-2015 |
gnn |
Initial version of DTrace on ARM32.
Submitted by: Howard Su based on work by Oleksandr Tymoshenko Reviewed by: ian, andrew, rpaulo, markj
|
#
277300 |
|
17-Jan-2015 |
smh |
Mechanically convert cddl sun #ifdef's to illumos
Since the upstream for cddl code is now illumos not sun, mechanically convert all sun #ifdef's to illumos #ifdef's which have been used in all newer code for some time.
Also do a manual pass to correct the use if #ifdef comments as per style(9) as well as few uses of #if defined(__FreeBSD__) vs #ifndef illumos.
MFC after: 1 month Sponsored by: Multiplay
|
#
275576 |
|
07-Dec-2014 |
avg |
remove opensolaris cyclic code, replace with high-precision callouts
In the old days callout(9) had 1 tick precision and that was inadequate for some uses, e.g. DTrace profile module, so we had to emulate cyclic API and behavior. Now we can directly use callout(9) in the very few places where cyclic was used.
Differential Revision: https://reviews.freebsd.org/D1161 Reviewed by: gnn, jhb, markj MFC after: 2 weeks
|
#
268224 |
|
03-Jul-2014 |
pfg |
Merge from OpenSolaris (20-Apr-2008):
6822482 DOF validation needs to handle loadable sections flagged as unloadable
MFC after: 1 week
|
#
267942 |
|
26-Jun-2014 |
rpaulo |
MFV illumos
4471 DTrace count() with histogram 4472 DTrace full width distribution histograms 4473 DTrace frequency trails
MFC after: 2 weeks
|
#
267941 |
|
26-Jun-2014 |
rpaulo |
MFV illumos
4474 DTrace Userland CTF Support 4475 DTrace userland Keyword 4476 DTrace tests should be better citizens 4479 pid provider types 4480 dof emulation is missing checks
MFC after: 2 weeks
|
#
267937 |
|
26-Jun-2014 |
rpaulo |
MFV illumos
4477 DTrace should speak JSON
MFC after: 2 weeks
|
#
267929 |
|
26-Jun-2014 |
rpaulo |
MFV illumos r266986:
2915 DTrace in a zone should see "cpu", "curpsinfo", et al 2916 DTrace in a zone should be able to access fds[] 2917 DTrace in a zone should have limited provider access
MFC after: 2 weeks
|
#
267925 |
|
26-Jun-2014 |
rpaulo |
Revert r267898.
|
#
267898 |
|
26-Jun-2014 |
rpaulo |
Bring the following change from the illumos-joyent repository:
commit 78e24ab6803bbe11ba37642624e1498ede5b239d Author: Bryan Cantrill <bryan@joyent.com> Date: Thu Oct 31 01:20:54 2013
OS-1688 DTrace count() with histogram OS-2360 DTrace full width distribution histograms OS-2361 DTrace frequency trails
MFC after: 2 weeks
|
#
256571 |
|
15-Oct-2013 |
markj |
Add a function, memstr, which can be used to convert a buffer of null-separated strings to a single string. This can be used to print the full arguments of a process using execsnoop (from the DTrace toolkit) or with the following one-liner:
dtrace -n 'syscall::execve:return {trace(curpsinfo->pr_psargs);}'
Note that this relies on the process arguments being cached via the struct proc, which means that it will not work for argvs longer than kern.ps_arg_cache_limit. However, the following rather non-portable script can be used to extract any argv at exec time:
fbt::kern_execve:entry { printf("%s", memstr(args[1]->begin_argv, ' ', args[1]->begin_envv - args[1]->begin_argv)); }
The debug.dtrace.memstr_max sysctl limits the maximum argument size to memstr(). Thanks to Brendan Gregg for helpful comments on freebsd-dtrace.
Tested by: Fabian Keil (earlier version) MFC after: 2 weeks
|
#
254268 |
|
13-Aug-2013 |
markj |
FreeBSD's DTrace implementation has a few problems with respect to handling probes declared in a kernel module when that module is unloaded. In particular,
* Unloading a module with active SDT probes will cause a panic. [1] * A module's (FBT/SDT) probes aren't destroyed when the module is unloaded; trying to use them after the fact will generally cause a panic.
This change fixes both problems by porting the DTrace module load/unload handlers from illumos and registering them with the corresponding EVENTHANDLER(9) handlers. This allows the DTrace framework to destroy all probes defined in a module when that module is unloaded, and to prevent a module unload from proceeding if some of its probes are active. The latter problem has already been fixed for FBT probes by checking lf->nenabled in kern_kldunload(), but moving the check into the DTrace framework generalizes it to all kernel providers and also fixes a race in the current implementation (since a probe may be activated between the check and the call to linker_file_unload()).
Additionally, the SDT implementation has been reworked to define SDT providers/probes/argtypes in linker sets rather than using SYSINIT/SYSUNINIT to create and destroy SDT probes when a module is loaded or unloaded. This simplifies things quite a bit since it means that pretty much all of the SDT code can live in sdt.ko, and since it becomes easier to integrate SDT with the DTrace framework. Furthermore, this allows FreeBSD to be quite flexible in that SDT providers spanning multiple modules can be created on the fly when a module is loaded; at the moment it looks like illumos' SDT implementation requires all SDT probes to be statically defined in a single kernel table.
PR: 166927, 166926, 166928 Reported by: davide [1] Reviewed by: avg, trociny (earlier version) MFC after: 1 month
|
#
250574 |
|
12-May-2013 |
markj |
Bring back part of r249367 by adding DTrace's temporal option, which allows users to guarantee that the output of DTrace scripts will be time-ordered. This option is enabled by adding the line
#pragma D option temporal
to the beginning of a script, or by adding '-x temporal' to the arguments of dtrace(1).
This change fixes a bug in the original port of the temporal option. This bug was causing some assertions to fail, so they had been disabled; in this revision the assertions are working properly and are enabled.
The DTrace version number has been bumped from 1.9.0 to 1.9.1 to reflect the language change that's being introduced.
This change corresponds to part of illumos-gate commit e5803b76927480: 3021 option for time-ordered output from dtrace(1M)
Reviewed by: pfg Obtained from: illumos MFC after: 1 month
|
#
249573 |
|
17-Apr-2013 |
pfg |
DTrace: Revert r249367
The following change from illumos brought caused DTrace to pause in an interactive environment:
3026 libdtrace should set LD_NOLAZYLOAD=1 to help the pid provider
This was not detected during testing because it doesn't affect scripts.
We shouldn't be changing the environment, especially since the LD_NOLAZYLOAD option doesn't apply to our (GNU) ld. Unfortunately the change from upstream was made in such a way that it is very difficult to separate this change from the others so, at least for now, it's better to just revert everything.
Reference: https://www.illumos.org/issues/3026
Reported by: Navdeep Parhar and Mark Johnston
|
#
249367 |
|
11-Apr-2013 |
pfg |
DTrace: option for time-ordered output
Merge changes from illumos:
3021 option for time-ordered output from dtrace(1M) 3022 DTrace: keys should not affect the sort order when sorting by value 3023 it should be possible to dereference dynamic variables 3024 D integer narrowing needs some work 3025 register leak in D code generation 3026 libdtrace should set LD_NOLAZYLOAD=1 to help the pid provider
This brings yet another feature implemented in upstream DTrace. A complete description is available here: http://dtrace.org/blogs/ahl/2012/07/28/my-new-dtrace-favorite/
This change bumps the DT_VERS_* number to 1.9.1 in accordance to what is done in illumos.
This change was somewhat complicated because upstream is mixed many changes in an individual commit and some of the tests don't really apply to us.
There are also appear to be differences in timestamping with Solaris so we had to workaround some assertions making sure no regression happened.
Special thanks to Fabian Keil for changes and testing.
Illumos Revisions: 13758:23432da34147
Reference: https://www.illumos.org/issues/3021 https://www.illumos.org/issues/3022 https://www.illumos.org/issues/3023 https://www.illumos.org/issues/3024 https://www.illumos.org/issues/3025 https://www.illumos.org/issues/1694
Tested by: Fabian Keil Obtained from: Illumos MFC after: 1 months
|
#
248706 |
|
25-Mar-2013 |
pfg |
Dtrace: add toupper()/tolower() and enhancements to lltostr().
Merge changes from illumos:
1451 DTrace needs toupper()/tolower() subroutines 1457 lltostr() D subroutine should take an optional base
This change bumps the DT_VERS_* number to 1.8.1 in accordance to what is done in illumos.
The test suite we currently include is outdated and doesnt support some updates in tst.subr.d which had to be left out for now.
Illumos Revisions: r13458 5e394d8db762 r13459 c3454574dd1a
Reference: https://www.illumos.org/issues/1451 https://www.illumos.org/issues/1457
Tested by: Fabian Keil Obtained from: Illumos MFC after: 1 month
|
#
248690 |
|
24-Mar-2013 |
pfg |
Dtrace: add optional size argument to tracemem().
Merge change from illumos:
1455 DTrace tracemem() should take an optional size argument
Our local enhancements to dt_print_bytes were equivalent to those in illumos but we made it match the illumos version to ease further code merges.
For now leave out tst.smallsize.d and tst.smallsize.d.out since those don't seem to work cleanly on FreeBSD.
This change bumps the DT_VERS_* number to 1.7.1 in accordance to what is done in illumos.
Illumos Revision: 13457:571b0355c2e3
Reference: https://www.illumos.org/issues/1455
Tested by: Fabian Keil Obtained from: Illumos MFC after: 1 month
|
#
248457 |
|
18-Mar-2013 |
jhibbits |
Add FBT for PowerPC DTrace. Also, clean up the DTrace assembly code, much of which is not necessary for PowerPC.
The FBT module can likely be factored into 3 separate files: common, intel, and powerpc, rather than duplicating most of the code between the x86 and PowerPC flavors.
All DTrace modules for PowerPC will be MFC'd together once Fasttrap is completed.
|
#
237624 |
|
27-Jun-2012 |
pfg |
Bring llquantize support into Dtrace.
Bryan Cantrill implemented the equivalent of semi-log graph paper for Dtrace so llquantize will use one logarithmic and one linear scale.
Special thanks to Mark Peek for providing fix to an assertion and to Fabian Keill for testing the port.
Illumos Revision: 13355:15b74a2a9a9d
Reference: https://www.illumos/issues/905
Obtained from: Illumos Tested by: Fabian Keill, mp MFC after: 4 days
|
#
234691 |
|
25-Apr-2012 |
rstone |
Implement the D "cpu" variable, which returns curcpu. I have chosen not to follow the example of OpenSolaris and its descendants, which implemented cpu as an inline that took a value out of curthread. At certain points in the FreeBSD scheduler curthread->td_oncpu will no longer be valid (in particukar, just before the thread gets descheduled) so instead I have implemented this as its own built-in variable.
Sponsored by: Sandvine Inc. MFC after: 1 week
|
#
212357 |
|
09-Sep-2010 |
rpaulo |
Fix two bugs in DTrace: * when the process exits, remove the associated USDT probes * when the process forks, duplicate the USDT probes.
Sponsored by: The FreeBSD Foundation
|
#
211555 |
|
21-Aug-2010 |
rpaulo |
Port the DTrace helper ioctls to FreeBSD and add a helper member to dof_helper_t (needed by drti.o).
Sponsored by: The FreeBSD Foundation
|
#
179198 |
|
22-May-2008 |
jb |
FreeBSD changes to vendor source.
|
#
179194 |
|
22-May-2008 |
jb |
This commit was generated by cvs2svn to compensate for changes in r179193, which included commits to RCS files with non-trunk default branches.
|
#
179193 |
|
22-May-2008 |
jb |
Vendor import of the src/sys OpenSolaris bits for DTrace.
|