aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/truss/Makefile
Commit message (Collapse)AuthorAgeFilesLines
* Add handling for non-native error values to libsysdecode.John Baldwin2016-02-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add two new functions, sysdecode_abi_to_freebsd_errno() and sysdecode_freebsd_to_abi_errno(), which convert errno values between the native FreeBSD ABI and other supported ABIs. Note that the mappings are not necessarily perfect meaning in some cases multiple errors in one ABI might map to a single error in another ABI. In that case, the reverse mapping will return one of the errors that maps, but which error is non-deterministic. Change truss to always report the raw error value to the user but use libsysdecode to map it to a native errno value that can be used with strerror() to generate a description. Previously truss reported the "converted" error value. Now the user will always see the exact error value that the application sees. Change kdump to report the truly raw error value to the user. Previously kdump would report the absolute value of the raw error value (so for Linux binaries it didn't output the FreeBSD error value, but the positive value of the Linux error). Now it reports the real (i.e. negative) error value for Linux binaries. Also, use libsysdecode to convert the native FreeBSD error reported in the ktrace record to the raw error used by the ABI. This means that the Linux ABI can now be handled directly in ktrsysret() and removes the need for linux_ktrsysret(). Reviewed by: bdrewery, kib Helpful notes: wblock (manpage) Differential Revision: https://reviews.freebsd.org/D5314 Notes: svn path=/head/; revision=295931
* Add support to libsysdecode for decoding system call names.John Baldwin2016-01-261-22/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | A new sysdecode_syscallname() function accepts a system call code and returns a string of the corresponding name (or NULL if the code is unknown). To support different process ABIs, the new function accepts a value from a new sysdecode_abi enum as its first argument to select the ABI in use. Current ABIs supported include FREEBSD (native binaries), FREEBSD32, LINUX, LINUX32, and CLOUDABI64. Note that not all ABIs are supported by all platforms. In general, a given ABI is only supported if a platform can execute binaries for that ABI. To simplify the implementation, libsysdecode's build reuses the existing pre-generated files from the kernel source tree rather than duplicating new copies of said files during the build. kdump(1) and truss(1) now use these functions to map system call identifiers to names. For kdump(1), a new 'syscallname()' function consolidates duplicated code from ktrsyscall() and ktrsyscallret(). The Linux ABI no longer requires custom handling for ktrsyscall() and linux_ktrsyscall() has been removed as a result. Reviewed by: bdrewery Differential Revision: https://reviews.freebsd.org/D4823 Notes: svn path=/head/; revision=294849
* Move the mkioctls script to libsysdecode and use it to generate aJohn Baldwin2015-12-221-6/+1
| | | | | | | | | | | | | | sysdecode_ioctlname() function. This function matches the behavior of the truss variant in that it returns a pointer to a string description for known ioctls. The caller is responsible for displaying unknown ioctl requests. For kdump this meant moving the logic to handle unknown ioctl requests out of the generated function and into an ioctlname() function in kdump.c instead. Differential Revision: https://reviews.freebsd.org/D4610 Notes: svn path=/head/; revision=292622
* Start on a new library (libsysdecode) that provides routines for decodingJohn Baldwin2015-12-151-2/+1
| | | | | | | | | | | | | | | | | | | | system call information such as system call arguments. Initially this will consist of pulling duplicated code out of truss and kdump though it may prove useful for other utilities in the future. This commit moves the shared utrace(2) record parser out of kdump into the library and updates kdump and truss to use it. One difference from the previous version is that the library version treats unknown events that start with the "RTLD" signature as unknown events. This simplifies the interface and allows the consumer to decide how to handle all non-recognized events. Instead, this function only generates a string description for known malloc() and RTLD records. Reviewed by: bdrewery Differential Revision: https://reviews.freebsd.org/D4537 Notes: svn path=/head/; revision=292236
* Make truss work for CloudABI processes on aarch64.Ed Schouten2015-10-301-1/+4
| | | | | | | | | | | | | This change copies over amd64-cloudabi64.c to aarch64-cloudabi.c and adjusts it to fetch the proper registers on aarch64. To reduce the amount of shared code, the errno conversion function is moved into a separate source file. Reviewed by: jhb, andrew Differential Revision: https://reviews.freebsd.org/D4023 Notes: svn path=/head/; revision=290186
* Simplify syscall generation and ABI source file handling for the build.Bryan Drewery2015-10-131-65/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is to make the Makefile more easily extendable for new ABIs. This also makes several other subtle changes: - The build now is given a list of ABIs to use based on the MACHINE_ARCH or MACHINE_CPUARCH. These ABIs have a related path in sys/ that is used to generate their syscalls. For each ABI to build check for a ABI.c, MACHINE_ARCH-ABI.c, or a MACHINE_CPUARCH-ABI.c. This matches the old behavior needed for archs such as powerpc* and mips*. - The ABI source file selection allows for simpler assignment of common ABIs such as "fbsd32" from sys/compat/freebsd32, or cloudabi64. - Expand 'fbsd' to 'freebsd' everywhere for consistency. - Split out the powerpc-fbsd.c file into a powerpc64-freebsd32.c to be more like the amd64-freebsd32.c file and to more easily allow the auto-generation of ABI handling to work. - Rename 'syscalls.h' to 'fbsd_syscalls.h' to lessen the ambiguity and avoid confusion with syscall.h (such as in r288997). - For non-native syscall header files, they are now renamed to be ABI_syscalls.h, where ABI is what ABI the Makefile is building. - Remove all of the makesyscalls config files. The "native" one being name i386.conf was a long outstanding bug. They were all the same except for the data they generated, so now it is just auto-generated as a build artifact. - The syscalls array is now fixed to be static in the syscalls header to remove the compiler warning about non-extern. This was worked around in the aarch64-fbsd.c file but not the others. - All syscall table names are now just 'syscallnames' since they don't need to be different as they are all static in their own ABI files. The alternative is to name them ABI_syscallnames which does not seem necessary. Reviewed by: ed, jhb MFC after: 3 weeks Differential Revision: https://reviews.freebsd.org/D3851 Notes: svn path=/head/; revision=289239
* Properly format pointer size independent CloudABI system calls.Ed Schouten2015-10-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | CloudABI has approximately 50 system calls that do not depend on the pointer size of the system. As the ABI is pretty compact, it takes little effort to each truss(8) the formatting rules for these system calls. Start off by formatting pointer size independent system calls. Changes: - Make it possible to include the CloudABI system call definitions in FreeBSD userspace builds. Add ${root}/sys to the truss(8) Makefile so we can pull in <compat/cloudabi/cloudabi_syscalldefs.h>. - Refactoring: patch up amd64-cloudabi64.c to use the CLOUDABI_* constants instead of rolling our own table. - Add table entries for all of the system calls. - Add new generic formatting types (UInt, IntArray) that we'll be using to format unsigned integers and arrays of integers. - Add CloudABI specific formatting types. Approved by: jhb Differential Revision: https://reviews.freebsd.org/D3836 Notes: svn path=/head/; revision=289004
* truss: Add support for utrace(2).Bryan Drewery2015-10-061-0/+3
| | | | | | | | | | | | | | | | | This uses the kdump(1) utrace support code directly until a common library is created. This allows malloc(3) tracing with MALLOC_CONF=utrace:true and rtld tracing with LD_UTRACE=1. Unknown utrace(2) data is just printed as hex. PR: 43819 [inspired by] Reviewed by: jhb MFC after: 2 weeks Relnotes: yes Differential Revision: https://reviews.freebsd.org/D3819 Notes: svn path=/head/; revision=288957
* Make truss print CloudABI system call names.Ed Schouten2015-10-021-0/+10
| | | | | | | | | | | | | This change adds the bits that are necessary to fetch system call arguments and return values from trapframes for CloudABI. This allows us to properly print system calls with the right name. We need to make sure that we properly convert error numbers when system calls fail. We still need to improve truss to pretty-print some of the system calls that have flags. Notes: svn path=/head/; revision=288487
* Use INCLUDEDIR rather than hard coded /usr/includeSimon J. Gerraty2015-06-111-1/+1
| | | | | | | | Differential Revision: D2748 Reviewed by: brooks imp Notes: svn path=/head/; revision=284268
* Since truss also uses kdump's mkioctls script, pass the value of ${CPP}Dimitry Andric2012-04-091-1/+1
| | | | | | | | | there too, similar to r234058. MFC after: 1 week Notes: svn path=/head/; revision=234060
* It turns out that truss also used kdump's mkioctls script, and expectedDag-Erling Smørgrav2011-10-211-1/+2
| | | | | | | | | | | | | | | ioctlname() to return a pointer to the name rather than print it. This did not show up in testing because truss had its own prototype for ioctlname(), so it would build fine and run fine as long as the program being traced did not issue an ioctl. Teach mkioctls to generate different versions of ioctlname() based on its first command-line argument. Pointed out by: Garrett Cooper <yanegomi@gmail.com> Notes: svn path=/head/; revision=226608
* Fix breakage introduced in r211725 and improve functionality of truss onNathan Whitehorn2010-08-281-1/+19
| | | | | | | 64-bit powerpc by adding 32-bit compatibility features. Notes: svn path=/head/; revision=211935
* MFtbemd:Warner Losh2010-08-231-3/+3
| | | | | | | | Prefer MACHNE_CPUARCH to MACHINE_ARCH in most contexts where you want to test of all the CPUs of a given family conform. Notes: svn path=/head/; revision=211725
* Build usr.bin/ with WARNS=6 by default.Ed Schouten2010-01-021-1/+0
| | | | | | | Also add some missing $FreeBSD$ to keep svn happy. Notes: svn path=/head/; revision=201386
* Teach truss about 32-bit FreeBSD and Linux binaries on amd64. SomeJohn Baldwin2008-05-161-12/+35
| | | | | | | | | | additional work is needed to handle ABI-specific syscall argument parsing, but this gets the basic tracing working. MFC after: 1 week Notes: svn path=/head/; revision=179051
* Revert CLEANDEPFILES commit per ru@'s request; it does not really solveDag-Erling Smørgrav2008-02-051-2/+1
| | | | | | | the problem. The correct fix will follow. Notes: svn path=/head/; revision=175980
* Normally, when a header file is removed from the build (as i4b headersDag-Erling Smørgrav2008-02-031-2/+3
| | | | | | | | | | | | | | | | | | | | | | | were recently), a simple 'make cleandepend; make depend' is sufficient to keep the tree buildable after a cvs update when doing incremental builds. However, kdump and truss use a script which searches for header files that define ioctls, and generates C code that includes them. This script will usually not need updating when a header file is removed, so the normal dependency mechanism will not realize that it needs to be re-run. One is therefore left with code that references dead files but will only be removed by a full 'make clean', which defeats the purpose of incremental builds. To work around this, modify the cleandepend target in bsd.dep.mk to also remove any files listed in a new variable named CLEANDEPFILES, and modify kdump's and truss's Makefiles accordingly. MFC after: 2 weeks Notes: svn path=/head/; revision=175937
* Make use of ptrace(2) instead of procfs in truss(1), eliminatingXin LI2007-04-101-1/+1
| | | | | | | | | | | yet another need of an available /proc/ mount. Tested with: make universe Submitted by: howardsu Reviewed by: alfred Notes: svn path=/head/; revision=168569
* For variables that are only checked with defined(), don't provideRuslan Ermilov2004-10-241-1/+1
| | | | | | | any fake value. Notes: svn path=/head/; revision=136910
* decode fcntl and mmap arguments.Alfred Perlstein2004-03-231-0/+2
| | | | Notes: svn path=/head/; revision=127328
* Use cat(1) instead of cp(1) so as not to break -DNOCLEAN buildsMarcel Moolenaar2003-06-061-2/+2
| | | | | | | when the file permissions of source files don't allow writing. Notes: svn path=/head/; revision=115886
* Removed extra parentheses.Ruslan Ermilov2003-02-201-1/+1
| | | | Notes: svn path=/head/; revision=111178
* Ported to sparc64.Jake Burkholder2002-08-041-5/+3
| | | | Notes: svn path=/head/; revision=101320
* I now don't seem to be able to reproduce the -DNOCLEAN buildworldRuslan Ermilov2002-04-111-5/+1
| | | | | | | | | | | | | breakage with ioctl.c. The .depend file should track dependencies just fine, and the worst we can have is to miss new ioctls. But I still think it's a good idea to have -DNOCLEAN build produce the same ioctl.c as it would without -DNOCLEAN. Prodded for a long time by: bde Notes: svn path=/head/; revision=94432
* Remove NO_WERRORs and WARNS=n's. To be revisited after GCC3.Mark Murray2002-02-081-3/+0
| | | | Notes: svn path=/head/; revision=90416
* Partial WARNS=1 fizes with NO_WERROR set to prevent world breakage.Mark Murray2001-12-111-0/+3
| | | | | | | Use __FBSDID(). Notes: svn path=/head/; revision=87703
* cc -O -pipe -I/usr/src/usr.bin/kdump/../ktrace ↵Jordan K. Hubbard2000-09-141-2/+6
| | | | | | | | | -I/usr/src/usr.bin/kdump/../.. Fix ioctl.c creation to deal with the depend case more properly. Submitted by: Ruslan Ermilov <ru@sunbay.com> Notes: svn path=/head/; revision=65849
* remove .PHONY to avoid gratuitous rebuild of ioctl.c each time.Jordan K. Hubbard2000-09-141-1/+1
| | | | | | | Approved by: sef Notes: svn path=/head/; revision=65829
* Make auto-generated ioctl.c to be always considered out of dateRuslan Ermilov2000-08-011-1/+1
| | | | | | | | | since it could potentially depend on any ${DESTDIR}/usr/include preprocessor file. This fixes the broken -DNOCLEAN world build I experienced yesterday. Notes: svn path=/head/; revision=64102
* Fix for the new usage of mkioctlsMarcel Moolenaar1999-12-031-1/+1
| | | | Notes: svn path=/head/; revision=54089
* ${MACHINE} -> ${MACHINE_ARCH}Marcel Moolenaar1999-11-141-1/+3
| | | | | | | | | | | | | | | | | | | All Makefiles now use MACHINE_ARCH for the target architecture. Unification is required for cross-building. Tags added to: sys/boot/Makefile sys/boot/arc/loader/Makefile sys/kern/Makefile usr.bin/cpp/Makefile usr.bin/gcore/Makefile usr.bin/truss/Makefile usr.bin/gcore/Makefile: fixed typo: MACHINDE -> MACHINE_ARCH Notes: svn path=/head/; revision=53152
* Use MACHINE_ARCH instead of MACHINE to detect x86 arch.KATO Takenori1998-10-071-1/+1
| | | | | | | Pointed out by: Akio Morita <amorita@meadow.scphys.kyoto-u.ac.jp> Notes: svn path=/head/; revision=40035
* Alpha support for truss. I tested this on both bento and beast (thanks,Sean Eric Fagan1998-10-031-2/+7
| | | | | | | | Jordan, for pointing me at beast!). There should be no change for the i386 version. Notes: svn path=/head/; revision=39908
* Revert the changes yet again, after some email from Bruce. Sorry.Sean Eric Fagan1998-01-091-1/+1
| | | | Notes: svn path=/head/; revision=32367
* Proper way to do the previous mis-commit. Still not quite right, becauseSean Eric Fagan1998-01-091-1/+1
| | | | | | | | | | some header files (e.g., <err.h>) include <machine/something.h>, and this will not pick up the right header files, so it may be removed eventually anyway. But some people who are not willing to build the right way apparantly want this, so this is for them. Notes: svn path=/head/; revision=32355
* Get rid of the bogus include -- it is incomplete (as it doesn't handleSean Eric Fagan1998-01-091-1/+1
| | | | | | | | | | | anything other than <sys/*.h>), and unnecessary in most cases. (The situations where it is necesary can be dealt with by manually-made symlinks, which is acceptable since they should only occur during testing. Remember: the tree does not compile well if you do not have matching header files installed. Half-baked -I directives don't cover enough of the cases.) Notes: svn path=/head/; revision=32354
* include sys so it builds on 2.2.xJohn-Mark Gurney1998-01-071-1/+1
| | | | | | | also, fix misspelling of -1 (as EOF for getopt) Notes: svn path=/head/; revision=32306
* First cut at printing out ioctl names intelligently. Note that this doesn'tSean Eric Fagan1997-12-061-2/+6
| | | | | | | | | | handle linux ioctls (yet?). This uses the mkioctl script from kdump, bless its little heart. Reviewed by: Mike Smith Notes: svn path=/head/; revision=31571
* Truss program. Requires procfs.Sean Eric Fagan1997-12-061-0/+23
Notes: svn path=/head/; revision=31567