typedef struct ctf_file ctf_file_t;
typedef struct ctf_archive_internal ctf_archive_t;
-typedef long ctf_id_t;
+typedef unsigned long ctf_id_t;
/* This opaque definition allows libctf to accept BFD data structures without
importing all the BFD noise into users' namespaces. */
typedef struct ctf_sect
{
const char *cts_name; /* Section name (if any). */
- unsigned long cts_type; /* Section type (ELF SHT_... value). */
- unsigned long cts_flags; /* Section flags (ELF SHF_... value). */
const void *cts_data; /* Pointer to section data. */
size_t cts_size; /* Size of data in bytes. */
size_t cts_entsize; /* Size of each section entry (symtab only). */
- off64_t cts_offset; /* File offset of this section (if any). */
} ctf_sect_t;
/* Symbolic names for CTF sections. */
#define CTF_FUNC_VARARG 0x1 /* Function arguments end with varargs. */
-/* Functions that return integer status or a ctf_id_t use the following value
- to indicate failure. ctf_errno() can be used to obtain an error code. */
-#define CTF_ERR (-1L)
+/* Functions that return a ctf_id_t use the following value to indicate failure.
+ ctf_errno() can be used to obtain an error code. Functions that return
+ a straight integral -1 also use ctf_errno(). */
+#define CTF_ERR ((ctf_id_t) -1L)
#define ECTF_BASE 1000 /* Base value for libctf errnos. */
typedef int ctf_archive_member_f (ctf_file_t *fp, const char *name, void *arg);
typedef int ctf_archive_raw_member_f (const char *name, const void *content,
size_t len, void *arg);
+typedef char *ctf_dump_decorate_f (ctf_sect_names_t sect,
+ char *line, void *arg);
+
+typedef struct ctf_dump_state ctf_dump_state_t;
/* Opening. These mostly return an abstraction over both CTF files and CTF
archives: so they can be used to open both. CTF files will appear to be an
to deal with non-archives at all. */
extern int ctf_archive_raw_iter (const ctf_archive_t *,
ctf_archive_raw_member_f *, void *);
+extern char *ctf_dump (ctf_file_t *, ctf_dump_state_t **state,
+ ctf_sect_names_t sect, ctf_dump_decorate_f *,
+ void *arg);
extern ctf_id_t ctf_add_array (ctf_file_t *, uint32_t,
const ctf_arinfo_t *);