summaryrefslogtreecommitdiffstats
path: root/usr.bin/truss/Makefile
Commit message (Collapse)AuthorAgeFilesLines
* MFC r315170:ngie2017-05-301-2/+2
| | | | | | | | | | | r315170 (by imp): Adopt SRCTOP in usr.bin Prefer ${SRCTOP}/foo over ${.CURDIR}/../../foo and ${SRCTOP}/usr.bin/foo over ${.CURDIR}/../foo for paths in Makefiles. Silence on: arch@ (twice)
* MFC 307538,307948,308602,308603,311151: Move kdump's mksubr into libsysdecode.jhb2017-01-121-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 307538: Move mksubr from kdump into libsysdecode. Restructure this script so that it generates a header of tables instead of a source file. The tables are included in a flags.c source file which provides functions to decode various system call arguments. For functions that decode an enumeration, the function returns a pointer to a string for known values and NULL for unknown values. For functions that do more complex decoding (typically of a bitmask), the function accepts a pointer to a FILE object (open_memstream() can be used as a string builder) to which decoded values are written. If the function operates on a bitmask, the function returns true if any bits were decoded or false if the entire value was valid. Additionally, the third argument accepts a pointer to a value to which any undecoded bits are stored. This pointer can be NULL if the caller doesn't care about remaining bits. Convert kdump over to using decoder functions from libsysdecode instead of mksubr. truss also uses decoders from libsysdecode instead of private lookup tables, though lookup tables for objects not decoded by kdump remain in truss for now. Eventually most of these tables should move into libsysdecode as the automated table generation approach from mksubr is less stale than the static tables in truss. Some changes have been made to truss and kdump output: - The flags passed to open() are now properly decoded in that one of O_RDONLY, O_RDWR, O_WRONLY, or O_EXEC is always included in a decoded mask. - Optional arguments to open(), openat(), and fcntl() are only printed in kdump if they exist (e.g. the mode is only printed for open() if O_CREAT is set in the flags). - Print argument to F_GETLK/SETLK/SETLKW in kdump as a pointer, not int. - Include all procctl() commands. - Correctly decode pipe2() flags in truss by not assuming full open()-like flags with O_RDONLY, etc. - Decode file flags passed to *chflags() as file flags (UF_* and SF_*) rather than as a file mode. - Fix decoding of quotactl() commands by splitting out the two command components instead of assuming the raw command value matches the primary command component. In addition, truss and kdump now build without triggering any warnings. All of the sysdecode manpages now include the required headers in the synopsis. 307948: Use binary and (&) instead of logical to extract the mask of a capability. 308602: Generate and use a proper .depend file for tables.h. 308603: Move libsysdecode-specific hack out of buildworld. This should fix the lib32 build since it was not removing the generated ioctl.c. This file is generated by a find(1) call, so cannot use normal dependency tracking methods. 311151: Update libsysdecode for getfsstat() 'flags' argument changing to 'mode'. As a followup to r310638, update libsysdecode (and kdump) to decode the 'mode' argument to getfsstat(). sysdecode_getfsstat_flags() has been renamed to sysdecode_getfsstat_mode() and now treats the argument as an enumerated value rather than a mask of flags.
* Add support for truss'ing Linux/x86_64 binaries under amd64.jhb2016-06-091-0/+1
| | | | Prodding by: xmj
* Add handling for non-native error values to libsysdecode.jhb2016-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
* Add support to libsysdecode for decoding system call names.jhb2016-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
* Move the mkioctls script to libsysdecode and use it to generate ajhb2015-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
* Start on a new library (libsysdecode) that provides routines for decodingjhb2015-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
* Make truss work for CloudABI processes on aarch64.ed2015-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
* Simplify syscall generation and ABI source file handling for the build.bdrewery2015-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
* Properly format pointer size independent CloudABI system calls.ed2015-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
* truss: Add support for utrace(2).bdrewery2015-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
* Make truss print CloudABI system call names.ed2015-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.
* Use INCLUDEDIR rather than hard coded /usr/includesjg2015-06-111-1/+1
| | | | | Differential Revision: D2748 Reviewed by: brooks imp
* Since truss also uses kdump's mkioctls script, pass the value of ${CPP}dim2012-04-091-1/+1
| | | | | | there too, similar to r234058. MFC after: 1 week
* It turns out that truss also used kdump's mkioctls script, and expecteddes2011-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>
* Fix breakage introduced in r211725 and improve functionality of truss onnwhitehorn2010-08-281-1/+19
| | | | 64-bit powerpc by adding 32-bit compatibility features.
* MFtbemd:imp2010-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.
* Build usr.bin/ with WARNS=6 by default.ed2010-01-021-1/+0
| | | | Also add some missing $FreeBSD$ to keep svn happy.
* Teach truss about 32-bit FreeBSD and Linux binaries on amd64. Somejhb2008-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
* Revert CLEANDEPFILES commit per ru@'s request; it does not really solvedes2008-02-051-2/+1
| | | | the problem. The correct fix will follow.
* Normally, when a header file is removed from the build (as i4b headersdes2008-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
* Make use of ptrace(2) instead of procfs in truss(1), eliminatingdelphij2007-04-101-1/+1
| | | | | | | | yet another need of an available /proc/ mount. Tested with: make universe Submitted by: howardsu Reviewed by: alfred
* For variables that are only checked with defined(), don't provideru2004-10-241-1/+1
| | | | any fake value.
* decode fcntl and mmap arguments.alfred2004-03-231-0/+2
|
* Use cat(1) instead of cp(1) so as not to break -DNOCLEAN buildsmarcel2003-06-061-2/+2
| | | | when the file permissions of source files don't allow writing.
* Removed extra parentheses.ru2003-02-201-1/+1
|
* Ported to sparc64.jake2002-08-041-5/+3
|
* I now don't seem to be able to reproduce the -DNOCLEAN buildworldru2002-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
* Remove NO_WERRORs and WARNS=n's. To be revisited after GCC3.markm2002-02-081-3/+0
|
* Partial WARNS=1 fizes with NO_WERROR set to prevent world breakage.markm2001-12-111-0/+3
| | | | Use __FBSDID().
* cc -O -pipe -I/usr/src/usr.bin/kdump/../ktrace ↵jkh2000-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>
* remove .PHONY to avoid gratuitous rebuild of ioctl.c each time.jkh2000-09-141-1/+1
| | | | Approved by: sef
* Make auto-generated ioctl.c to be always considered out of dateru2000-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.
* Fix for the new usage of mkioctlsmarcel1999-12-031-1/+1
|
* ${MACHINE} -> ${MACHINE_ARCH}marcel1999-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
* Use MACHINE_ARCH instead of MACHINE to detect x86 arch.kato1998-10-071-1/+1
| | | | Pointed out by: Akio Morita <amorita@meadow.scphys.kyoto-u.ac.jp>
* Alpha support for truss. I tested this on both bento and beast (thanks,sef1998-10-031-2/+7
| | | | | Jordan, for pointing me at beast!). There should be no change for the i386 version.
* Revert the changes yet again, after some email from Bruce. Sorry.sef1998-01-091-1/+1
|
* Proper way to do the previous mis-commit. Still not quite right, becausesef1998-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.
* Get rid of the bogus include -- it is incomplete (as it doesn't handlesef1998-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.)
* include sys so it builds on 2.2.xjmg1998-01-071-1/+1
| | | | also, fix misspelling of -1 (as EOF for getopt)
* First cut at printing out ioctl names intelligently. Note that this doesn'tsef1997-12-061-2/+6
| | | | | | | handle linux ioctls (yet?). This uses the mkioctl script from kdump, bless its little heart. Reviewed by: Mike Smith
* Truss program. Requires procfs.sef1997-12-061-0/+23
OpenPOWER on IntegriCloud