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
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License, Version 1.0 only
6 6 * (the "License"). You may not use this file except in compliance
7 7 * with the License.
8 8 *
9 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 10 * or http://www.opensolaris.org/os/licensing.
11 11 * See the License for the specific language governing permissions
12 12 * and limitations under the License.
13 13 *
14 14 * When distributing Covered Code, include this CDDL HEADER in each
15 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 16 * If applicable, add the following below this CDDL HEADER, with the
↓ 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
57 58 typedef enum ctf_diff_flag {
58 59 CTF_DIFF_F_IGNORE_INTNAMES = 0x01
59 60 } ctf_diff_flag_t;
60 61
61 62 typedef struct ctf_diff ctf_diff_t;
62 63 typedef void (*ctf_diff_type_f)(ctf_file_t *, ctf_id_t, boolean_t, ctf_file_t *,
63 64 ctf_id_t, void *);
64 65 typedef void (*ctf_diff_func_f)(ctf_file_t *, ulong_t, boolean_t, ctf_file_t *,
65 66 ulong_t, void *);
66 67 typedef void (*ctf_diff_obj_f)(ctf_file_t *, ulong_t, ctf_id_t, boolean_t,
↓ 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