1. 22 Jun, 2022 3 commits
  2. 15 Apr, 2022 1 commit
  3. 03 Mar, 2022 1 commit
  4. 21 Sep, 2021 1 commit
  5. 09 Dec, 2020 1 commit
    • Kyle Evans's avatar
      libsysdecode: decode _UMTX_OP flags · 3b27074b
      Kyle Evans authored
      Assume that UMTX_OP with a double underbar following is a flag, while any
      underbar+alphanumeric combination immeiately following is an op.
      
      This was a part of D27325.
      
      Reviewed by:	kib
      3b27074b
  6. 19 Feb, 2020 1 commit
  7. 06 Mar, 2019 1 commit
  8. 15 Jan, 2018 2 commits
  9. 14 Jan, 2018 2 commits
  10. 16 Dec, 2017 1 commit
    • Ed Schouten's avatar
      libsysdecode: Add a new ABI type, SYSDECODE_ABI_CLOUDABI32. · 87f69bee
      Ed Schouten authored
      In order to let truss(8) support tracing of 32-bit CloudABI
      applications, we need to add a new ABI type to libsysdecode. We can
      reuse the existing errno mapping table. Also link in the cloudabi32
      system call table to translate system call names.
      
      While there, remove all of the architecture ifdefs. There are not
      needed, as the CloudABI data types and system call tables build fine on
      any architecture. Building this unconditionally will make it easier to
      do tracing for different compat modes, emulation, etc.
      
      Reviewed by:	jhb
      Differential Revision:	https://reviews.freebsd.org/D13516
      87f69bee
  11. 25 Nov, 2017 1 commit
    • John Baldwin's avatar
      Decode kevent structures logged via ktrace(2) in kdump. · ffb66079
      John Baldwin authored
      - Add a new KTR_STRUCT_ARRAY ktrace record type which dumps an array of
        structures.
      
        The structure name in the record payload is preceded by a size_t
        containing the size of the individual structures.  Use this to
        replace the previous code that dumped the kevent arrays dumped for
        kevent().  kdump is now able to decode the kevent structures rather
        than dumping their contents via a hexdump.
      
        One change from before is that the 'changes' and 'events' arrays are
        not marked with separate 'read' and 'write' annotations in kdump
        output.  Instead, the first array is the 'changes' array, and the
        second array (only present if kevent doesn't fail with an error) is
        the 'events' array.  For kevent(), empty arrays are denoted by an
        entry with an array containing zero entries rather than no record.
      
      - Move kevent decoding tables from truss to libsysdecode.
      
        This adds three new functions to decode members of struct kevent:
        sysdecode_kevent_filter, sysdecode_kevent_flags, and
        sysdecode_kevent_fflags.
      
        kdump uses these helper functions to pretty-print kevent fields.
      
      - Move structure definitions for freebsd11 and freebsd32 kevent
        structures to <sys/event.h> so that they can be shared with userland.
        The 32-bit structures are only exposed if _WANT_KEVENT32 is defined.
        The freebsd11 structures are only exposed if _WANT_FREEBSD11_KEVENT is
        defined.  The 32-bit freebsd11 structure requires both.
      
      - Decode freebsd11 kevent structures in truss for the compat11.kevent()
        system call.
      
      - Log 32-bit kevent structures via ktrace for 32-bit compat kevent()
        system calls.
      
      - While here, constify the 'void *data' argument to ktrstruct().
      
      Reviewed by:	kib (earlier version)
      MFC after:	1 month
      Differential Revision:	https://reviews.freebsd.org/D12470
      ffb66079
  12. 04 Sep, 2017 1 commit
  13. 03 Jun, 2017 1 commit
    • John Baldwin's avatar
      Decode the 'who' argument passed to getrusage(). · ee8aa41d
      John Baldwin authored
      Add a new sysdecode_getrusage_who() which decodes the RUSAGE_* constant
      passed as the first argument to getrusage().  Use this function in both
      kdump and truss to decode the first argument to getrusage().
      
      PR:		215448
      Submitted by:	Anton Yuzhaninov <citrin+pr@citrin.ru>
      MFC after:	1 month
      ee8aa41d
  14. 25 May, 2017 1 commit
  15. 03 Jan, 2017 1 commit
  16. 17 Oct, 2016 1 commit
    • John Baldwin's avatar
      Move mksubr from kdump into libsysdecode. · 9289f547
      John Baldwin authored
      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.
      
      Reviewed by:	kib (several older versions), wblock (manpages)
      MFC after:	2 months
      Differential Revision:	https://reviews.freebsd.org/D7847
      9289f547
  17. 23 Feb, 2016 1 commit
    • John Baldwin's avatar
      Add handling for non-native error values to libsysdecode. · 287b96dd
      John Baldwin authored
      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
      287b96dd
  18. 30 Jan, 2016 1 commit
  19. 26 Jan, 2016 1 commit
    • John Baldwin's avatar
      Add support to libsysdecode for decoding system call names. · a5f14abf
      John Baldwin authored
      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
      a5f14abf
  20. 22 Dec, 2015 1 commit
    • John Baldwin's avatar
      Move the mkioctls script to libsysdecode and use it to generate a · 265e5898
      John Baldwin authored
      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
      265e5898
  21. 15 Dec, 2015 1 commit
    • John Baldwin's avatar
      Start on a new library (libsysdecode) that provides routines for decoding · d6fb4894
      John Baldwin authored
      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
      d6fb4894
  22. 14 Nov, 2015 1 commit
  23. 15 Feb, 2014 2 commits
  24. 30 Aug, 2012 1 commit
  25. 03 Nov, 2010 1 commit
  26. 26 Oct, 2010 1 commit
  27. 19 Oct, 2010 1 commit
  28. 10 Mar, 2010 1 commit
  29. 19 Oct, 2008 1 commit
  30. 26 Apr, 2003 1 commit
  31. 18 Nov, 2002 1 commit
  32. 22 Sep, 2002 2 commits
  33. 31 Mar, 2002 1 commit
  34. 21 Dec, 2001 1 commit