| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
Differential Revision: D2748
Reviewed by: brooks imp
Notes:
svn path=/head/; revision=284268
|
|
|
|
|
|
|
|
|
| |
there too, similar to r234058.
MFC after: 1 week
Notes:
svn path=/head/; revision=234060
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
64-bit powerpc by adding 32-bit compatibility features.
Notes:
svn path=/head/; revision=211935
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Also add some missing $FreeBSD$ to keep svn happy.
Notes:
svn path=/head/; revision=201386
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
the problem. The correct fix will follow.
Notes:
svn path=/head/; revision=175980
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
yet another need of an available /proc/ mount.
Tested with: make universe
Submitted by: howardsu
Reviewed by: alfred
Notes:
svn path=/head/; revision=168569
|
|
|
|
|
|
|
| |
any fake value.
Notes:
svn path=/head/; revision=136910
|
|
|
|
| |
Notes:
svn path=/head/; revision=127328
|
|
|
|
|
|
|
| |
when the file permissions of source files don't allow writing.
Notes:
svn path=/head/; revision=115886
|
|
|
|
| |
Notes:
svn path=/head/; revision=111178
|
|
|
|
| |
Notes:
svn path=/head/; revision=101320
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Notes:
svn path=/head/; revision=90416
|
|
|
|
|
|
|
| |
Use __FBSDID().
Notes:
svn path=/head/; revision=87703
|
|
|
|
|
|
|
|
|
| |
-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
|
|
|
|
|
|
|
| |
Approved by: sef
Notes:
svn path=/head/; revision=65829
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Notes:
svn path=/head/; revision=54089
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Pointed out by: Akio Morita <amorita@meadow.scphys.kyoto-u.ac.jp>
Notes:
svn path=/head/; revision=40035
|
|
|
|
|
|
|
|
| |
Jordan, for pointing me at beast!). There should be no change for the
i386 version.
Notes:
svn path=/head/; revision=39908
|
|
|
|
| |
Notes:
svn path=/head/; revision=32367
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
also, fix misspelling of -1 (as EOF for getopt)
Notes:
svn path=/head/; revision=32306
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
Notes:
svn path=/head/; revision=31567
|