6885 CTF Everywhere Part 1

Review Request #1379 — Created Jan. 18, 2019 and submitted

rm
illumos-gate
master
6885
5931ecc...
general

6885 CTF Everywhere Part 1
6886 Want ctfdiff
6887 ctfdump should be written in terms of libctf
6888 ctfmerge should be implemented in terms of libctf
6889 ctfconvert should be implemented in terms of libctf
6890 Want general workq 6891 Want general mergeq
6892 ctf_add_encoded assigns() incorrect byte size to types
6893 ctf_add_{struct,union,enum} can reuse forwards
6894 ctf_add_{struct,union,enum} occasionally forget to dirty the ctf_file_t
6895 ctf_add_member could better handle bitfields
6896 ctf_type_size() reports wrong size for forwards
6897 Want libctf ctf_kind_name() function
6898 Want libctf function to set struct/union size
Portions contributed by: John Levon <john.levon@joyent.com>
Portions contributed by: Richard Lowe <richlowe@richlowe.net>

Using ctfdump/ctfdiff to compare and contrast older CTF tools, extensive use at Joyent over past several years.

  • 0
  • 0
  • 35
  • 0
  • 35
Description From Last Updated
citrus
  1. I've read through and all I got you was this s/doing/done/

    Since it's been in use at Joyent for so long and also in some of the other distributions, I say ship it and thanks!

  2. usr/src/lib/mergeq/mergeq.c (Diff revision 1)
     
     

    "doing doing"

  3. 
      
rm
domag02
  1. Format string mismatches, etc.
  2. usr/src/cmd/ctfdiff/ctfdiff.c (Diff revision 1)
     
     

    Type of iidx is ulong_t, so please use %lu conversion specifier.

  3. usr/src/cmd/ctfdiff/ctfdiff.c (Diff revision 1)
     
     
  4. usr/src/cmd/ctfdiff/ctfdiff.c (Diff revision 1)
     
     
  5. usr/src/cmd/ctfdiff/ctfdiff.c (Diff revision 1)
     
     
  6. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

    These lines should be:

        len = snprintf(NULL, 0, "  [%lu] %ld", g_stats.cs_ndata, id);
        ctfdump_printf(CTFDUMP_OBJECTS, "  [%lu] %ld %*s%s (%lu)\n",
    
  7. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            "  [%lu] %s (%lu) returns: %ld args: (", g_stats.cs_nfuncs, name,
    
  8. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_FUNCTIONS, "%ld%s", g_fargc[i],
    
  9. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

        ctfdump_printf(CTFDUMP_LABELS, "  %5ld %s\n", li->ctb_typeidx, name);
    
  10. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

        ctfdump_printf(CTFDUMP_TYPES, "\t%s type=%ld off=%lu\n", member, type,
    
  11. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

                ctfdump_fatal("type %ld missing name: %s\n", id,
    
  12. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_TYPES, "  <%ld> ", id);
    
  13. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_TYPES, "  [%ld] ", id);
    
  14. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_TYPES, "%s refers to %ld", name,
    
  15. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_TYPES, "%s contents: %ld, index: %ld",
    
  16. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

                "%s returns: %ld args: (", name, ctc.ctc_return);
    
  17. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

                ctfdump_printf(CTFDUMP_TYPES, "%ld%s", g_fargc[i],
    
  18. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_TYPES, "%s (%zu bytes)\n", name, size);
    
    1. No, should be %zd, it's an ssize_t.

  19. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_TYPES, "typedef %s refers to %ld", name,
    
  20. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_TYPES, "%s refers to %ld", name,
    
  21. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_TYPES, "%s refers to %ld", name,
    
  22. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

            ctfdump_printf(CTFDUMP_TYPES, "%s refers to %ld", name,
    
  23. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

                ctfdump_fatal("type %ld missing name: %s\n", type,
    
  24. usr/src/cmd/ctfdump/ctfdump.c (Diff revision 1)
     
     

                (void) printf("typedef %s{ /* 0x%zx bytes */\n",
    
  25. usr/src/cmd/ctfmerge/Makefile (Diff revision 1)
     
     
    Trailing space.
  26. usr/src/cmd/ctfmerge/ctfmerge.c (Diff revision 1)
     
     

                ctfmerge_fatal("failed to read symbol table entry %lu "
    
  27. usr/src/cmd/ctfmerge/ctfmerge.c (Diff revision 1)
     
     

            ctfmerge_fatal("failed to set parallelism to %u: %s\n",
    
  28. usr/src/common/ctf/ctf_create.c (Diff revision 1)
     
     

        ctf_dprintf("lbloff: %u\nobjtoff: %u\nfuncoff: %u\n"
            "typeoff: %u\nstroff: %u\nstrlen: %u\n",
    
  29. usr/src/common/ctf/ctf_create.c (Diff revision 1)
     
     

    If cast to int is unnecessary, then these lines could be:

            ctf_dprintf("bad contents for array: %ld\n",
                arp->ctr_contents);
    
    1. I think that was from an old lint thing, not sure why I did that at some point. Ironically it wasn't that way in the original change.

  30. usr/src/common/ctf/ctf_create.c (Diff revision 1)
     
     

            ctf_dprintf("bad index for array: %ld\n", arp->ctr_index);
    
  31. usr/src/lib/Makefile.targ (Diff revision 1)
     
     
    Trailing space.
  32. usr/src/lib/libctf/common/ctf_diff.c (Diff revision 1)
     
     
    Space followed by tab.
  33. usr/src/lib/libctf/common/ctf_dwarf.c (Diff revision 1)
     
     

    See in /usr/src/lib/libdwarf/common/libdwarf.h:

    /* To enable printing with printf regardless of the
    actual underlying data type, we define the DW_PR_xxx macros. */

        ctf_dprintf("dwmap: %p %" DW_PR_DUx "->%ld\n", dwmap, off, id);
    
  34. usr/src/lib/libctf/common/ctf_dwarf.c (Diff revision 1)
     
     

                "failed to get die from offset %" DW_PR_DUu ": %s\n",
    
  35. usr/src/lib/libctf/common/ctf_dwarf.c (Diff revision 1)
     
     

                "unknown ELF data encoding: %u", ehdr.e_ident[EI_DATA]);
    
    1. Changed to %hhu.

  36. 
      
rm
rm
domag02
  1. Ship It!
  2. 
      
rm
rm
citrus
  1. Ship It!
  2. 
      
domag02
  1. Ship It!
  2. 
      
rm
Review request changed

Status: Closed (submitted)

Loading...