Print this page
10816 ctf_dwarf_convert_type() relies on un-initialized id
10817 ctfconvert -i option is mis-handled
10818 Improve ctfconvert error messages
10819 ctfconvert should handle empty dies
10820 ctfconvert -i never converts
10821 bad free in ctf_dwarf_init_die
10815 shouldn't build gcore.c as part of kmdb
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libctf/common/libctf.h
          +++ new/usr/src/lib/libctf/common/libctf.h
↓ open down ↓ 16 lines elided ↑ open up ↑
  17   17   * fields enclosed by brackets "[]" replaced with your own identifying
  18   18   * information: Portions Copyright [yyyy] [name of copyright owner]
  19   19   *
  20   20   * CDDL HEADER END
  21   21   */
  22   22  /*
  23   23   * Copyright 2001-2003 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   */
  26   26  /*
  27      - * Copyright (c) 2015, Joyent, Inc.
       27 + * Copyright (c) 2019, Joyent, Inc.
  28   28   */
  29   29  
  30   30  /*
  31   31   * This header file defines the interfaces available from the CTF debugger
  32   32   * library, libctf.  This library provides functions that a debugger can
  33   33   * use to operate on data in the Compact ANSI-C Type Format (CTF).  This
  34   34   * is NOT a public interface, although it may eventually become one in
  35   35   * the fullness of time after we gain more experience with the interfaces.
  36   36   *
  37   37   * In the meantime, be aware that any program linked with libctf in this
  38   38   * release of illumos is almost guaranteed to break in the next release.
  39   39   *
  40   40   * In short, do not user this header file or libctf for any purpose.
  41   41   */
  42   42  
  43   43  #ifndef _LIBCTF_H
  44   44  #define _LIBCTF_H
  45   45  
  46   46  #include <sys/ctf_api.h>
       47 +#include <libelf.h>
  47   48  
  48   49  #ifdef  __cplusplus
  49   50  extern "C" {
  50   51  #endif
  51   52  
  52   53  /*
  53   54   * This flag can be used to enable debug messages.
  54   55   */
  55   56  extern int _libctf_debug;
  56   57  
↓ open down ↓ 10 lines elided ↑ open up ↑
  67   68      ctf_file_t *, ulong_t, ctf_id_t, void *);
  68   69  
  69   70  extern int ctf_diff_init(ctf_file_t *, ctf_file_t *, ctf_diff_t **);
  70   71  extern uint_t ctf_diff_getflags(ctf_diff_t *);
  71   72  extern int ctf_diff_setflags(ctf_diff_t *, uint_t);
  72   73  extern int ctf_diff_types(ctf_diff_t *, ctf_diff_type_f, void *);
  73   74  extern int ctf_diff_functions(ctf_diff_t *, ctf_diff_func_f, void *);
  74   75  extern int ctf_diff_objects(ctf_diff_t *, ctf_diff_obj_f, void *);
  75   76  extern void ctf_diff_fini(ctf_diff_t *);
  76   77  
  77      -#define CTF_CONVERT_F_IGNNONC   0x01
       78 +/*
       79 + * Normally, we return a failure if we find a C-derived compilation unit that
       80 + * lacks DWARF or CTF (as required).  This flag over-rides this check.
       81 + */
       82 +#define CTF_ALLOW_MISSING_DEBUG 0x01
       83 +
  78   84  extern ctf_file_t *ctf_fdconvert(int, const char *, uint_t, uint_t, int *,
  79   85      char *, size_t);
  80   86  
       87 +typedef enum ctf_hsc_ret {
       88 +        CHR_ERROR = -1,
       89 +        CHR_NO_C_SOURCE = 0,
       90 +        CHR_HAS_C_SOURCE = 1
       91 +} ctf_hsc_ret_t;
       92 +
       93 +extern ctf_hsc_ret_t ctf_has_c_source(Elf *, char *, size_t);
       94 +
  81   95  typedef struct ctf_merge_handle ctf_merge_t;
  82   96  extern ctf_merge_t *ctf_merge_init(int, int *);
  83   97  extern int ctf_merge_add(ctf_merge_t *, ctf_file_t *);
  84   98  extern int ctf_merge_set_nthreads(ctf_merge_t *, const uint_t);
  85   99  extern int ctf_merge_label(ctf_merge_t *, const char *);
  86  100  extern int ctf_merge_uniquify(ctf_merge_t *, ctf_file_t *, const char *);
  87  101  extern int ctf_merge_merge(ctf_merge_t *, ctf_file_t **);
  88  102  extern int ctf_merge_dedup(ctf_merge_t *, ctf_file_t **);
  89  103  extern void ctf_merge_fini(ctf_merge_t *);
  90  104  
  91  105  #define CTF_ELFWRITE_F_COMPRESS         0x1
  92  106  extern int ctf_elffdwrite(ctf_file_t *, int, int, int);
  93  107  extern int ctf_elfwrite(ctf_file_t *, const char *, const char *, int);
  94  108  
  95  109  #ifdef  __cplusplus
  96  110  }
  97  111  #endif
  98  112  
  99  113  #endif  /* _LIBCTF_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX