svn commit: r350069 - head/usr.bin/truss
John Baldwin
jhb at FreeBSD.org
Tue Jul 16 23:02:57 UTC 2019
On 7/16/19 3:59 PM, John Baldwin wrote:
> Author: jhb
> Date: Tue Jul 16 22:59:15 2019
> New Revision: 350069
> URL: https://svnweb.freebsd.org/changeset/base/350069
>
> Log:
> Use PT_GET_SC_ARGS and PT_GET_SC_RET in truss.
>
> This removes all of the architecture-specific functions from truss.
>
> A per-ABI structure is still needed to map syscall numbers to names
> and FreeBSD errno values to ABI error values as well as hold syscall
> counters. However, the linker set of ABI structures is now replaced
> with a simple table mapping ABI names to structures. This approach
> permits sharing the same ABI structure among separate names such as
> i386 a.out and ELF binaries as well as ELF v1 vs ELF v2 for powerpc64.
>
> A few differences are visible due to using PT_GET_SC_RET to fetch the
> error value of a system call. Note that ktrace/kdump have had the
> "new" behaviors for a long time already:
> - System calls that return with EJUSTRETURN or ERESTART will now be
> noticed and logged as such. Previously sigreturn (which uses
> EJUSTRETURN) would report whatever random value was in the register
> holding errno from the previous system call for example. Now it
> reports EJUSTRETURN.
> - System calls that return errno as their error value such as
> posix_fallocate() and posix_fadvise() now report non-zero return
> values as errors instead of success with a non-zero return value.
>
> Reviewed by: kib
> MFC after: 1 month
> Sponsored by: DARPA
> Differential Revision: https://reviews.freebsd.org/D20963
One side effect of this change that I haven't tested is that I think this
enables truss for 64-bit Linux and 32-bit FreeBSD binaries on aarch64.
--
John Baldwin
More information about the svn-src-all
mailing list